mirror of
https://github.com/mealie-recipes/mealie.git
synced 2026-02-24 08:43:11 -05:00
Compare commits
122 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
42a33cd993 | ||
|
|
d73817adad | ||
|
|
ce58da8e18 | ||
|
|
fe89981e78 | ||
|
|
520bc7154a | ||
|
|
a38dfc094e | ||
|
|
0a81579da1 | ||
|
|
f4e77f6837 | ||
|
|
1e04e9424f | ||
|
|
d1bbfece9d | ||
|
|
94a85f9977 | ||
|
|
3d0adda405 | ||
|
|
47086da6b6 | ||
|
|
9ce71c911f | ||
|
|
2244c3a8b5 | ||
|
|
f0d0d0d463 | ||
|
|
dbec3e58f9 | ||
|
|
a5e56dc97f | ||
|
|
6d64418727 | ||
|
|
2b71174765 | ||
|
|
7f6de730a3 | ||
|
|
22cc19a085 | ||
|
|
b16fa49f16 | ||
|
|
90e373582b | ||
|
|
1b3cbb38ae | ||
|
|
ac5a63e32d | ||
|
|
d5d86488a0 | ||
|
|
3f9c46a763 | ||
|
|
04176f6927 | ||
|
|
2aa8c5810a | ||
|
|
a071a7d16b | ||
|
|
a14c1b48c6 | ||
|
|
43174dcebe | ||
|
|
3ee53977ec | ||
|
|
de1486c57f | ||
|
|
a12aba6b9d | ||
|
|
fb70bc76b3 | ||
|
|
e6351273e2 | ||
|
|
82dcfb5635 | ||
|
|
dddeed6359 | ||
|
|
5f4a36bbd8 | ||
|
|
f74610a0f7 | ||
|
|
166f2486a2 | ||
|
|
88a5209237 | ||
|
|
d954869dd7 | ||
|
|
9cf181b415 | ||
|
|
5a7dc14a48 | ||
|
|
d916c0a472 | ||
|
|
a3693d83a3 | ||
|
|
bb9620b67e | ||
|
|
3174216931 | ||
|
|
94342081f9 | ||
|
|
36088f0db9 | ||
|
|
4c60febb9c | ||
|
|
0283185913 | ||
|
|
f42114e966 | ||
|
|
d4de15ba1e | ||
|
|
e686fa671c | ||
|
|
597e6c8e0f | ||
|
|
d5ba69d828 | ||
|
|
564f43085b | ||
|
|
a0b6cc3e62 | ||
|
|
c960c00cbe | ||
|
|
47b60e9ad5 | ||
|
|
026ca0364e | ||
|
|
13e7dfe920 | ||
|
|
8a3173094e | ||
|
|
0d16a2a943 | ||
|
|
2918a824e4 | ||
|
|
00e5e4384d | ||
|
|
634b0590ed | ||
|
|
52c58e1dc0 | ||
|
|
67b7fb007b | ||
|
|
292672601c | ||
|
|
fa3bbdcde1 | ||
|
|
7e519c6b5a | ||
|
|
57c11b23c4 | ||
|
|
ba60428b03 | ||
|
|
e48619bae6 | ||
|
|
6d38960a5a | ||
|
|
9bf2e3fabd | ||
|
|
dcf50b9a00 | ||
|
|
073efd7a2f | ||
|
|
95b7990f26 | ||
|
|
7947aa99ae | ||
|
|
c3f7ad8954 | ||
|
|
8df7848c96 | ||
|
|
6097440781 | ||
|
|
208608b32e | ||
|
|
02997cd36e | ||
|
|
e1cd2717d3 | ||
|
|
694511cb60 | ||
|
|
f0c89525f6 | ||
|
|
a05ede5e05 | ||
|
|
7e51cf0352 | ||
|
|
ce110c23e4 | ||
|
|
8247f21101 | ||
|
|
60f9a3be5c | ||
|
|
dddcb644bf | ||
|
|
84e981fd03 | ||
|
|
937464115e | ||
|
|
24aee11607 | ||
|
|
023c57dd61 | ||
|
|
14d8ff8754 | ||
|
|
e6f531c111 | ||
|
|
c0a4f624d1 | ||
|
|
a32dc4baa0 | ||
|
|
7c4690a7a9 | ||
|
|
b44487596d | ||
|
|
2cb4c21db3 | ||
|
|
2dcc765e86 | ||
|
|
a5ef18669b | ||
|
|
14497b9b5e | ||
|
|
e90f05d2dc | ||
|
|
677dc8f36a | ||
|
|
449eeb0d53 | ||
|
|
41204ca7f9 | ||
|
|
437f5c454f | ||
|
|
3a30b3216e | ||
|
|
408df286fd | ||
|
|
2cfc63b302 | ||
|
|
a8583c8e69 |
@@ -49,7 +49,9 @@
|
||||
"onCreateCommand": "sudo chown -R vscode:vscode /workspaces/mealie/frontend/node_modules && task setup",
|
||||
// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
|
||||
"remoteUser": "vscode",
|
||||
// "features": {
|
||||
// "git": "latest"
|
||||
// }
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/docker-in-docker:2": {
|
||||
"dockerDashComposeVersion": "v2"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ body:
|
||||
options:
|
||||
- label: I used the GitHub search to find a similar requests and didn't find it.
|
||||
required: true
|
||||
- label: Checked the [tasks tagged](https://github.com/hay-kot/mealie/issues?q=is%3Aissue+is%3Aopen+label%3Atask+) issues and verified my feature is not covered
|
||||
- label: Checked the [tasks tagged](https://github.com/mealie-recipes/mealie/issues?q=is%3Aissue+is%3Aopen+label%3Atask+) issues and verified my feature is not covered
|
||||
required: true
|
||||
- type: textarea
|
||||
id: problem
|
||||
|
||||
2
.github/workflows/partial-backend.yml
vendored
2
.github/workflows/partial-backend.yml
vendored
@@ -75,7 +75,7 @@ jobs:
|
||||
sudo apt-get update
|
||||
sudo apt-get install libsasl2-dev libldap2-dev libssl-dev
|
||||
poetry install
|
||||
poetry add "psycopg2-binary==2.8.6"
|
||||
poetry add "psycopg2-binary==2.9.9"
|
||||
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' || steps.cache-validate.outputs.cache-hit-success != 'true'
|
||||
|
||||
- name: Formatting (Black)
|
||||
|
||||
27
.github/workflows/release.yml
vendored
27
.github/workflows/release.yml
vendored
@@ -42,4 +42,29 @@ jobs:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_RELEASE_WEBHOOK }}
|
||||
uses: Ilshidur/action-discord@0.3.2
|
||||
with:
|
||||
args: "🚀 Version {{ EVENT_PAYLOAD.release.tag_name }} of Mealie has been released. See the release notes https://github.com/hay-kot/mealie/releases/tag/{{ EVENT_PAYLOAD.release.tag_name }}"
|
||||
args: "🚀 Version {{ EVENT_PAYLOAD.release.tag_name }} of Mealie has been released. See the release notes https://github.com/mealie-recipes/mealie/releases/tag/{{ EVENT_PAYLOAD.release.tag_name }}"
|
||||
|
||||
update-image-tags:
|
||||
name: Update image tag in sample docker-compose files
|
||||
needs:
|
||||
- build-release
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- name: Checkout 🛎
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Modify version strings
|
||||
run: |
|
||||
sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:${{ github.event.release.tag_name }}/' docs/docs/documentation/getting-started/installation/sqlite.md
|
||||
sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:${{ github.event.release.tag_name }}/' docs/docs/documentation/getting-started/installation/postgres.md
|
||||
|
||||
- name: Commit updates
|
||||
uses: test-room-7/action-update-file@v1
|
||||
with:
|
||||
file-path: |
|
||||
docs/docs/documentation/getting-started/installation/sqlite.md
|
||||
docs/docs/documentation/getting-started/installation/postgres.md
|
||||
commit-msg: "Change image tag, for release ${{ github.event.release.tag_name }}"
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -11,6 +11,6 @@ repos:
|
||||
- id: trailing-whitespace
|
||||
exclude: ^tests/data/
|
||||
- repo: https://github.com/psf/black
|
||||
rev: 23.1.0
|
||||
rev: 24.1.0
|
||||
hooks:
|
||||
- id: black
|
||||
|
||||
@@ -91,7 +91,7 @@ Thanks to Linode for providing Hosting for the Demo, Beta, and Documentation sit
|
||||
[stars-url]: https://github.com/mealie-recipes/mealie/stargazers
|
||||
[issues-shield]: https://img.shields.io/github/issues/mealie-recipes/mealie.svg?style=flat-square
|
||||
[issues-url]: https://github.com/mealie-recipes/mealie/issues
|
||||
[latest-release-shield]: https://img.shields.io/github/v/release/mealie-recipes/mealie.svg?style=flat-square
|
||||
[latest-release-shield]: https://img.shields.io/github/v/release/mealie-recipes/mealie?style=flat-square&label=latest%20release
|
||||
[latest-release-url]: https://img.shields.io/github/v/release/mealie-recipes/mealie
|
||||
[license-shield]: https://img.shields.io/github/license/mealie-recipes/mealie.svg?style=flat-square
|
||||
[license-url]: https://github.com/mealie-recipes/mealie/blob/mealie-next/LICENSE
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
"""Initial tables
|
||||
|
||||
Revision ID: 6b0f5f32d602
|
||||
Revises:
|
||||
Revises:
|
||||
Create Date: 2022-02-21 19:56:24.351115
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy import engine_from_config
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 6b0f5f32d602
|
||||
Create Date: 2022-03-23 17:43:34.727829
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
from alembic import op
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 263dd6707191
|
||||
Create Date: 2022-03-27 19:30:28.545846
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
from alembic import op
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: f1a2dbee5fe9
|
||||
Create Date: 2022-03-31 19:19:55.428965
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
import mealie.db.migration_types
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 59eb59135381
|
||||
Create Date: 2022-04-03 10:48:51.379968
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
import mealie.db.migration_types # noqa: F401
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 09dfc897ad62
|
||||
Create Date: 2022-06-01 11:12:06.748383
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
from alembic import op
|
||||
|
||||
@@ -6,6 +6,7 @@ Revises: ab0bae02578f
|
||||
Create Date: 2022-06-15 21:05:34.851857
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
from alembic import op
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: f30cf048c228
|
||||
Create Date: 2022-08-12 19:05:59.776361
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
from alembic import op
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 188374910655
|
||||
Create Date: 2022-08-05 17:07:07.389271
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
from alembic import op
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 089bfa50d0ed
|
||||
Create Date: 2022-08-29 13:57:40.452245
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
import mealie.db.migration_types
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 44e8d670719d
|
||||
Create Date: 2022-09-27 14:53:14.111054
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
import mealie.db.migration_types
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 2ea7a807915c
|
||||
Create Date: 2022-11-03 13:10:24.811134
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
from alembic import op
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 1923519381ad
|
||||
Create Date: 2022-11-22 03:42:45.494567
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
from alembic import op
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 167eb69066ad
|
||||
Create Date: 2023-01-21 16:54:44.368768
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
import mealie.db.migration_types
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: ff5f73b01a7a
|
||||
Create Date: 2023-02-10 21:18:32.405130
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
import mealie.db.migration_types
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 16160bf731a0
|
||||
Create Date: 2023-02-14 20:45:41.102571
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy import orm, select
|
||||
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 5ab195a474eb
|
||||
Create Date: 2023-21-02 22:03:19.837244
|
||||
|
||||
"""
|
||||
|
||||
from uuid import uuid4
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: b04a08da2108
|
||||
Create Date: 2023-02-22 21:45:52.900964
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
import mealie.db.migration_types
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 38514b39a824
|
||||
Create Date: 2023-04-13 06:47:04.617131
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
import mealie.db.migration_types
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: b3dbb554ba53
|
||||
Create Date: 2023-08-06 21:00:34.582905
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
from slugify import slugify
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 04ac51cbe9a4
|
||||
Create Date: 2023-08-14 19:30:49.103185
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
from alembic import op
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 1825b5225403
|
||||
Create Date: 2023-08-15 16:25:07.058929
|
||||
|
||||
"""
|
||||
|
||||
from alembic import op
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: bcfdad6b7355
|
||||
Create Date: 2023-09-01 14:55:42.166766
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy import orm, select
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: 0341b154f79a
|
||||
Create Date: 2023-10-04 14:29:26.688065
|
||||
|
||||
"""
|
||||
|
||||
from collections import defaultdict
|
||||
from dataclasses import dataclass
|
||||
from typing import Any
|
||||
@@ -58,7 +59,12 @@ def _resolve_duplicate_food(
|
||||
keep_food_id: UUID4,
|
||||
dupe_food_id: UUID4,
|
||||
):
|
||||
for shopping_list_item in session.query(ShoppingListItem).filter_by(food_id=dupe_food_id).all():
|
||||
for shopping_list_item in (
|
||||
session.query(ShoppingListItem)
|
||||
.options(load_only(ShoppingListItem.id, ShoppingListItem.food_id))
|
||||
.filter_by(food_id=dupe_food_id)
|
||||
.all()
|
||||
):
|
||||
shopping_list_item.food_id = keep_food_id
|
||||
|
||||
for recipe_ingredient in (
|
||||
@@ -81,10 +87,20 @@ def _resolve_duplicate_unit(
|
||||
keep_unit_id: UUID4,
|
||||
dupe_unit_id: UUID4,
|
||||
):
|
||||
for shopping_list_item in session.query(ShoppingListItem).filter_by(unit_id=dupe_unit_id).all():
|
||||
for shopping_list_item in (
|
||||
session.query(ShoppingListItem)
|
||||
.options(load_only(ShoppingListItem.id, ShoppingListItem.unit_id))
|
||||
.filter_by(unit_id=dupe_unit_id)
|
||||
.all()
|
||||
):
|
||||
shopping_list_item.unit_id = keep_unit_id
|
||||
|
||||
for recipe_ingredient in session.query(RecipeIngredientModel).filter_by(unit_id=dupe_unit_id).all():
|
||||
for recipe_ingredient in (
|
||||
session.query(RecipeIngredientModel)
|
||||
.options(load_only(RecipeIngredientModel.id, RecipeIngredientModel.unit_id))
|
||||
.filter_by(unit_id=dupe_unit_id)
|
||||
.all()
|
||||
):
|
||||
recipe_ingredient.unit_id = keep_unit_id
|
||||
|
||||
session.commit()
|
||||
@@ -99,10 +115,20 @@ def _resolve_duplicate_label(
|
||||
keep_label_id: UUID4,
|
||||
dupe_label_id: UUID4,
|
||||
):
|
||||
for shopping_list_item in session.query(ShoppingListItem).filter_by(label_id=dupe_label_id).all():
|
||||
for shopping_list_item in (
|
||||
session.query(ShoppingListItem)
|
||||
.options(load_only(ShoppingListItem.id, ShoppingListItem.label_id))
|
||||
.filter_by(label_id=dupe_label_id)
|
||||
.all()
|
||||
):
|
||||
shopping_list_item.label_id = keep_label_id
|
||||
|
||||
for ingredient_food in session.query(IngredientFoodModel).filter_by(label_id=dupe_label_id).all():
|
||||
for ingredient_food in (
|
||||
session.query(IngredientFoodModel)
|
||||
.options(load_only(IngredientFoodModel.id, IngredientFoodModel.label_id))
|
||||
.filter_by(label_id=dupe_label_id)
|
||||
.all()
|
||||
):
|
||||
ingredient_food.label_id = keep_label_id
|
||||
|
||||
session.commit()
|
||||
|
||||
@@ -5,6 +5,7 @@ Revises: dded3119c1fe
|
||||
Create Date: 2023-10-19 19:22:55.369319
|
||||
|
||||
"""
|
||||
|
||||
import sqlalchemy as sa
|
||||
|
||||
import mealie.db.migration_types
|
||||
|
||||
@@ -9,7 +9,7 @@ PostgreSQL might be considered if you need to support many concurrent users. In
|
||||
version: "3.7"
|
||||
services:
|
||||
mealie:
|
||||
image: ghcr.io/mealie-recipes/mealie:v1.0.0 # (3)
|
||||
image: ghcr.io/mealie-recipes/mealie:v1.1.0 # (3)
|
||||
container_name: mealie
|
||||
ports:
|
||||
- "9925:9000" # (1)
|
||||
@@ -60,4 +60,4 @@ volumes:
|
||||
|
||||
1. To access the mealie interface you only need to expose port 9000 on the mealie container. Here we expose port 9925 on the host, but feel free to change this to any port you like.
|
||||
2. Setting an explicit memory limit is recommended. Python can pre-allocate larger amounts of memory than is necessary if you have a machine with a lot of RAM. This can cause the container to idle at a high memory usage. Setting a memory limit will improve idle performance.
|
||||
3. Whilst a 'latest' tag is available, the Mealie team advises specifying a specific version tag and consciously updating to newer versions when you have time to read the release notes and ensure you follow any manual actions required (which should be rare).
|
||||
3. You should double check this value isn't out of date when setting up for the first time; check the README and use the value from the "latest release" badge at the top - the format should be `vX.Y.Z`. Whilst a 'latest' tag is available, the Mealie team advises specifying a specific version tag and consciously updating to newer versions when you have time to read the release notes and ensure you follow any manual actions required (which should be rare).
|
||||
|
||||
@@ -13,7 +13,7 @@ SQLite is a popular, open source, self-contained, zero-configuration database th
|
||||
version: "3.7"
|
||||
services:
|
||||
mealie:
|
||||
image: ghcr.io/mealie-recipes/mealie:v1.0.0 # (3)
|
||||
image: ghcr.io/mealie-recipes/mealie:v1.1.0 # (3)
|
||||
container_name: mealie
|
||||
ports:
|
||||
- "9925:9000" # (1)
|
||||
@@ -43,4 +43,4 @@ volumes:
|
||||
|
||||
1. To access the mealie interface you only need to expose port 9000 on the container. Here we expose port 9925 on the host, but feel free to change this to any port you like.
|
||||
2. Setting an explicit memory limit is recommended. Python can pre-allocate larger amounts of memory than is necessary if you have a machine with a lot of RAM. This can cause the container to idle at a high memory usage. Setting a memory limit will improve idle performance.
|
||||
3. Whilst a 'latest' tag is available, the Mealie team advises specifying a specific version tag and consciously updating to newer versions when you have time to read the release notes and ensure you follow any manual actions required (which should be rare).
|
||||
3. You should double check this value isn't out of date when setting up for the first time; check the README and use the value from the "latest release" badge at the top - the format should be `vX.Y.Z`. Whilst a 'latest' tag is available, the Mealie team advises specifying a specific version tag and consciously updating to newer versions when you have time to read the release notes and ensure you follow any manual actions required (which should be rare).
|
||||
|
||||
@@ -51,8 +51,8 @@ extra_css:
|
||||
- assets/stylesheets/custom.css
|
||||
extra_javascript:
|
||||
- assets/js/extra.js
|
||||
repo_url: https://github.com/hay-kot/mealie/
|
||||
repo_name: hay-kot/mealie
|
||||
repo_url: https://github.com/mealie-recipes/mealie/
|
||||
repo_name: mealie-recipes/mealie
|
||||
edit_uri: edit/mealie-next/docs/docs/
|
||||
|
||||
nav:
|
||||
|
||||
55
frontend/components/Domain/Cookbook/CookbookEditor.vue
Normal file
55
frontend/components/Domain/Cookbook/CookbookEditor.vue
Normal file
@@ -0,0 +1,55 @@
|
||||
<template>
|
||||
<div>
|
||||
<v-card-text v-if="cookbook">
|
||||
<v-text-field v-model="cookbook.name" :label="$t('cookbook.cookbook-name')"></v-text-field>
|
||||
<v-textarea v-model="cookbook.description" auto-grow :rows="2" :label="$t('recipe.description')"></v-textarea>
|
||||
<RecipeOrganizerSelector v-model="cookbook.categories" selector-type="categories" />
|
||||
<RecipeOrganizerSelector v-model="cookbook.tags" selector-type="tags" />
|
||||
<RecipeOrganizerSelector v-model="cookbook.tools" selector-type="tools" />
|
||||
<v-switch v-model="cookbook.public" hide-details single-line>
|
||||
<template #label>
|
||||
{{ $t('cookbook.public-cookbook') }}
|
||||
<HelpIcon small right class="ml-2">
|
||||
{{ $t('cookbook.public-cookbook-description') }}
|
||||
</HelpIcon>
|
||||
</template>
|
||||
</v-switch>
|
||||
<div class="mt-4">
|
||||
<h3 class="text-subtitle-1 d-flex align-center mb-0 pb-0">
|
||||
{{ $t('cookbook.filter-options') }}
|
||||
<HelpIcon right small class="ml-2">
|
||||
{{ $t('cookbook.filter-options-description') }}
|
||||
</HelpIcon>
|
||||
</h3>
|
||||
<v-switch v-model="cookbook.requireAllCategories" class="mt-0" hide-details single-line>
|
||||
<template #label> {{ $t('cookbook.require-all-categories') }} </template>
|
||||
</v-switch>
|
||||
<v-switch v-model="cookbook.requireAllTags" hide-details single-line>
|
||||
<template #label> {{ $t('cookbook.require-all-tags') }} </template>
|
||||
</v-switch>
|
||||
<v-switch v-model="cookbook.requireAllTools" hide-details single-line>
|
||||
<template #label> {{ $t('cookbook.require-all-tools') }} </template>
|
||||
</v-switch>
|
||||
</div>
|
||||
</v-card-text>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent } from "@nuxtjs/composition-api";
|
||||
import { ReadCookBook } from "~/lib/api/types/cookbook";
|
||||
import RecipeOrganizerSelector from "~/components/Domain/Recipe/RecipeOrganizerSelector.vue";
|
||||
export default defineComponent({
|
||||
components: { RecipeOrganizerSelector },
|
||||
props: {
|
||||
cookbook: {
|
||||
type: Object as () => ReadCookBook,
|
||||
required: true,
|
||||
},
|
||||
actions: {
|
||||
type: Object as () => any,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
});
|
||||
</script>
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
<BaseDialog v-if="updateTarget" v-model="dialogs.update" :title="$t('general.update')" @confirm="updateOne()">
|
||||
<v-card-text>
|
||||
<v-text-field v-model="updateTarget.name" label="$t('general.name')"> </v-text-field>
|
||||
<v-text-field v-model="updateTarget.name" :label="$t('general.name')"> </v-text-field>
|
||||
<v-checkbox v-if="itemType === Organizer.Tool" v-model="updateTarget.onHand" :label="$t('tool.on-hand')"></v-checkbox>
|
||||
</v-card-text>
|
||||
</BaseDialog>
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
$emit('submit');
|
||||
dialog = false;
|
||||
"
|
||||
@click:outside="$emit('cancel')"
|
||||
@keydown.esc="$emit('cancel')"
|
||||
>
|
||||
<v-card height="100%">
|
||||
<v-app-bar dark dense :color="color" class="">
|
||||
|
||||
@@ -57,12 +57,12 @@
|
||||
:buttons="[
|
||||
{
|
||||
icon: $globals.icons.edit,
|
||||
text: $t('general.edit'),
|
||||
text: $tc('general.edit'),
|
||||
event: 'edit',
|
||||
},
|
||||
{
|
||||
icon: $globals.icons.delete,
|
||||
text: $t('general.delete'),
|
||||
text: $tc('general.delete'),
|
||||
event: 'delete',
|
||||
},
|
||||
]"
|
||||
@@ -160,6 +160,8 @@ export default defineComponent({
|
||||
props.bulkActions.forEach((action) => {
|
||||
handlers[action.event] = () => {
|
||||
context.emit(action.event, selected.value);
|
||||
// clear selection
|
||||
selected.value = [];
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import { usePublicExploreApi } from "../api/api-client";
|
||||
import { useUserApi } from "~/composables/api";
|
||||
import { IngredientFood } from "~/lib/api/types/recipe";
|
||||
|
||||
let foodStore: Ref<IngredientFood[] | null> | null = null;
|
||||
let foodStore: Ref<IngredientFood[] | null> = ref([]);
|
||||
|
||||
/**
|
||||
* useFoodData returns a template reactive object
|
||||
@@ -39,11 +39,11 @@ export const usePublicFoodStore = function (groupSlug: string) {
|
||||
const actions = {
|
||||
...usePublicStoreActions(api.foods, foodStore, loading),
|
||||
flushStore() {
|
||||
foodStore = null;
|
||||
foodStore = ref([]);
|
||||
},
|
||||
};
|
||||
|
||||
if (!foodStore) {
|
||||
if (!foodStore.value || foodStore.value.length === 0) {
|
||||
foodStore = actions.getAll();
|
||||
}
|
||||
|
||||
@@ -57,11 +57,11 @@ export const useFoodStore = function () {
|
||||
const actions = {
|
||||
...useStoreActions(api.foods, foodStore, loading),
|
||||
flushStore() {
|
||||
foodStore = null;
|
||||
foodStore.value = [];
|
||||
},
|
||||
};
|
||||
|
||||
if (!foodStore) {
|
||||
if (!foodStore.value || foodStore.value.length === 0) {
|
||||
foodStore = actions.getAll();
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import { useStoreActions } from "../partials/use-actions-factory";
|
||||
import { MultiPurposeLabelOut } from "~/lib/api/types/labels";
|
||||
import { useUserApi } from "~/composables/api";
|
||||
|
||||
let labelStore: Ref<MultiPurposeLabelOut[] | null> | null = null;
|
||||
let labelStore: Ref<MultiPurposeLabelOut[] | null> = ref([]);
|
||||
|
||||
export function useLabelData() {
|
||||
const data = reactive({
|
||||
@@ -33,11 +33,11 @@ export function useLabelStore() {
|
||||
const actions = {
|
||||
...useStoreActions<MultiPurposeLabelOut>(api.multiPurposeLabels, labelStore, loading),
|
||||
flushStore() {
|
||||
labelStore = null;
|
||||
labelStore.value = [];
|
||||
},
|
||||
};
|
||||
|
||||
if (!labelStore) {
|
||||
if (!labelStore.value || labelStore.value?.length === 0) {
|
||||
labelStore = actions.getAll();
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import { useStoreActions } from "../partials/use-actions-factory";
|
||||
import { useUserApi } from "~/composables/api";
|
||||
import { IngredientUnit } from "~/lib/api/types/recipe";
|
||||
|
||||
let unitStore: Ref<IngredientUnit[] | null> | null = null;
|
||||
let unitStore: Ref<IngredientUnit[] | null> = ref([]);
|
||||
|
||||
/**
|
||||
* useUnitData returns a template reactive object
|
||||
@@ -40,11 +40,11 @@ export const useUnitStore = function () {
|
||||
const actions = {
|
||||
...useStoreActions<IngredientUnit>(api.units, unitStore, loading),
|
||||
flushStore() {
|
||||
unitStore = null;
|
||||
unitStore.value = [];
|
||||
},
|
||||
};
|
||||
|
||||
if (!unitStore) {
|
||||
if (!unitStore.value || unitStore.value.length === 0) {
|
||||
unitStore = actions.getAll();
|
||||
}
|
||||
|
||||
|
||||
@@ -109,6 +109,7 @@ export const useCookbooks = function () {
|
||||
}
|
||||
|
||||
loading.value = false;
|
||||
return data;
|
||||
},
|
||||
async updateOne(updateData: UpdateCookBook) {
|
||||
if (!updateData.id) {
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Laai dokument op",
|
||||
"created-on-date": "Geskep op: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Is jy seker jy wil <b>{groupName}<b/> uitvee?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Vereis alle merkers",
|
||||
"require-all-tools": "Vereis alle kookgerei",
|
||||
"cookbook-name": "Naam van die kookboek",
|
||||
"cookbook-with-name": "Kookboek {0}"
|
||||
"cookbook-with-name": "Kookboek {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "تحميل الملف",
|
||||
"created-on-date": "تم الإنشاء في {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "هل انت متأكد من رغبتك في حذف <b>{groupName}<b/>؟",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Require All Tags",
|
||||
"require-all-tools": "Require All Tools",
|
||||
"cookbook-name": "Cookbook Name",
|
||||
"cookbook-with-name": "Cookbook {0}"
|
||||
"cookbook-with-name": "Cookbook {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Качване на файл",
|
||||
"created-on-date": "Създадено на {0}",
|
||||
"unsaved-changes": "Имате незапазени промени. Желаете ли да ги запазите преди да излезете? Натиснете Ок за запазване и Отказ за отхвърляне на промените.",
|
||||
"clipboard-copy-failure": "Линкът към рецептата е копиран в клипборда."
|
||||
"clipboard-copy-failure": "Линкът към рецептата е копиран в клипборда.",
|
||||
"confirm-delete-generic-items": "Сигурни ли сте, че желаете да изтриете следните елементи?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Сигурни ли сте, че искате да изтриете <b>{groupName}<b/>?",
|
||||
@@ -258,7 +259,7 @@
|
||||
},
|
||||
"meal-plan": {
|
||||
"create-a-new-meal-plan": "Създаване на нов хранителен план",
|
||||
"update-this-meal-plan": "Update this Meal Plan",
|
||||
"update-this-meal-plan": "Обнови този План за хранене",
|
||||
"dinner-this-week": "Вечеря тази седмица",
|
||||
"dinner-today": "Вечеря Днес",
|
||||
"dinner-tonight": "Вечеря ТАЗИ ВЕЧЕР",
|
||||
@@ -473,11 +474,11 @@
|
||||
"add-to-timeline": "Добави към времевата линия",
|
||||
"recipe-added-to-list": "Рецептата е добавена към списъка",
|
||||
"recipes-added-to-list": "Рецептите са добавени към списъка",
|
||||
"successfully-added-to-list": "Successfully added to list",
|
||||
"successfully-added-to-list": "Успешно добавено в списъка",
|
||||
"recipe-added-to-mealplan": "Рецептата е добавена към хранителния план",
|
||||
"failed-to-add-recipes-to-list": "Неуспешно добавяне на рецепта към списъка",
|
||||
"failed-to-add-recipe-to-mealplan": "Рецептата не беше добавена към хранителния план",
|
||||
"failed-to-add-to-list": "Failed to add to list",
|
||||
"failed-to-add-to-list": "Неуспешно добавяне към списъка",
|
||||
"yield": "Добив",
|
||||
"quantity": "Количество",
|
||||
"choose-unit": "Избери единица",
|
||||
@@ -536,8 +537,8 @@
|
||||
"new-recipe-names-must-be-unique": "Името на рецептата трябва да бъде уникално",
|
||||
"scrape-recipe": "Обхождане на рецепта",
|
||||
"scrape-recipe-description": "Обходи рецепта по линк. Предоставете линк за сайт, който искате да бъде обходен. Mealie ще опита да обходи рецептата от този сайт и да я добави във Вашата колекция.",
|
||||
"scrape-recipe-have-a-lot-of-recipes": "Have a lot of recipes you want to scrape at once?",
|
||||
"scrape-recipe-suggest-bulk-importer": "Try out the bulk importer",
|
||||
"scrape-recipe-have-a-lot-of-recipes": "Имате много рецепти, които искате да обходите наведнъж?",
|
||||
"scrape-recipe-suggest-bulk-importer": "Пробвайте масовото импорторане",
|
||||
"import-original-keywords-as-tags": "Импортирай оригиналните ключови думи като тагове",
|
||||
"stay-in-edit-mode": "Остани в режим на редакция",
|
||||
"import-from-zip": "Импортирай от Zip",
|
||||
@@ -561,7 +562,7 @@
|
||||
"upload-image": "Качване на изображение",
|
||||
"screen-awake": "Запази екрана активен",
|
||||
"remove-image": "Премахване на изображение",
|
||||
"nextStep": "Next step"
|
||||
"nextStep": "Следваща стъпка"
|
||||
},
|
||||
"search": {
|
||||
"advanced-search": "Разширено търсене",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Изискване на всички тагове",
|
||||
"require-all-tools": "Изискване на всички инструменти",
|
||||
"cookbook-name": "Име на книгата с рецепти",
|
||||
"cookbook-with-name": "Книга с рецепти {0}"
|
||||
"cookbook-with-name": "Книга с рецепти {0}",
|
||||
"create-a-cookbook": "Създай Готварска книга",
|
||||
"cookbook": "Готварска книга"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Puja un fitxer",
|
||||
"created-on-date": "Creat el: {0}",
|
||||
"unsaved-changes": "Tens canvis que no estan guardats. Vols guardar-los abans de sortir? Clica d'acord per guardar-los o cancel·lar per descartar els canvis.",
|
||||
"clipboard-copy-failure": "No s'ha pogut copiar al porta-retalls."
|
||||
"clipboard-copy-failure": "No s'ha pogut copiar al porta-retalls.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Esteu segur de voler suprimir el grup <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Requereix totes les etiquetes",
|
||||
"require-all-tools": "Requereix tots els utensilis",
|
||||
"cookbook-name": "Nom del receptari",
|
||||
"cookbook-with-name": "Receptari {0}"
|
||||
"cookbook-with-name": "Receptari {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Nahrát soubor",
|
||||
"created-on-date": "Vytvořeno dne: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Jste si jisti, že chcete smazat <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Vyžadovat všechny štítky",
|
||||
"require-all-tools": "Vyžadovat všechny nástroje",
|
||||
"cookbook-name": "Název kuchařky",
|
||||
"cookbook-with-name": "Kuchařka {0}"
|
||||
"cookbook-with-name": "Kuchařka {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Upload Fil",
|
||||
"created-on-date": "Oprettet den: {0}",
|
||||
"unsaved-changes": "Du har ændringer som ikke er gemt. Vil du gemme før du forlader? Vælg \"Okay\" for at gemme, eller \"Annullér\" for at kassere ændringer.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Er du sikker på, du vil slette <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Kræv Alle Mærker",
|
||||
"require-all-tools": "Kræv Alle Værktøjer",
|
||||
"cookbook-name": "Navn på kogebog",
|
||||
"cookbook-with-name": "Kogebog {0}"
|
||||
"cookbook-with-name": "Kogebog {0}",
|
||||
"create-a-cookbook": "Opret en ny kogebog",
|
||||
"cookbook": "Kogebog"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Datei hochladen",
|
||||
"created-on-date": "Erstellt am: {0}",
|
||||
"unsaved-changes": "Du hast ungespeicherte Änderungen. Möchtest du vor dem Verlassen speichern? OK um zu speichern, Cancel um Änderungen zu verwerfen.",
|
||||
"clipboard-copy-failure": "Fehler beim Kopieren in die Zwischenablage."
|
||||
"clipboard-copy-failure": "Fehler beim Kopieren in die Zwischenablage.",
|
||||
"confirm-delete-generic-items": "Bist du dir sicher, dass du die folgenden Einträge löschen möchtest?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Bist du dir sicher, dass du die Gruppe <b>{groupName}<b/> löschen möchtest?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Alle Schlagwörter erforderlich",
|
||||
"require-all-tools": "Alle Utensilien erforderlich",
|
||||
"cookbook-name": "Kochbuch Name",
|
||||
"cookbook-with-name": "Kochbuch {0}"
|
||||
"cookbook-with-name": "Kochbuch {0}",
|
||||
"create-a-cookbook": "Ein Kochbuch erstellen",
|
||||
"cookbook": "Kochbuch"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Μεταφόρτωση αρχείου",
|
||||
"created-on-date": "Δημιουργήθηκε στις: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό τον ασφαλή σύνδεσμο <b>{groupName}<b/>;",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Require All Tags",
|
||||
"require-all-tools": "Require All Tools",
|
||||
"cookbook-name": "Cookbook Name",
|
||||
"cookbook-with-name": "Cookbook {0}"
|
||||
"cookbook-with-name": "Cookbook {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Upload File",
|
||||
"created-on-date": "Created on: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Are you sure you want to delete <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Require All Tags",
|
||||
"require-all-tools": "Require All Tools",
|
||||
"cookbook-name": "Cookbook Name",
|
||||
"cookbook-with-name": "Cookbook {0}"
|
||||
"cookbook-with-name": "Cookbook {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Upload File",
|
||||
"created-on-date": "Created on: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Are you sure you want to delete <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Require All Tags",
|
||||
"require-all-tools": "Require All Tools",
|
||||
"cookbook-name": "Cookbook Name",
|
||||
"cookbook-with-name": "Cookbook {0}"
|
||||
"cookbook-with-name": "Cookbook {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
"tag-events": "Eventos de etiqueta",
|
||||
"category-events": "Eventos de Categoría",
|
||||
"when-a-new-user-joins-your-group": "Cuando un nuevo usuario se une a tu grupo",
|
||||
"recipe-events": "Recipe Events"
|
||||
"recipe-events": "Eventos de receta"
|
||||
},
|
||||
"general": {
|
||||
"cancel": "Cancelar",
|
||||
@@ -114,10 +114,10 @@
|
||||
"json": "JSON",
|
||||
"keyword": "Etiqueta",
|
||||
"link-copied": "Enlace copiado",
|
||||
"loading": "Loading",
|
||||
"loading": "Cargando",
|
||||
"loading-events": "Cargando Eventos",
|
||||
"loading-recipe": "Loading recipe...",
|
||||
"loading-ocr-data": "Loading OCR data...",
|
||||
"loading-recipe": "Cargando receta...",
|
||||
"loading-ocr-data": "Cargando datos OCR...",
|
||||
"loading-recipes": "Cargando recetas",
|
||||
"message": "Mensaje",
|
||||
"monday": "Lunes",
|
||||
@@ -198,8 +198,9 @@
|
||||
"refresh": "Actualizar",
|
||||
"upload-file": "Subir Archivo",
|
||||
"created-on-date": "Creado el {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"unsaved-changes": "Tienes cambios sin guardar. ¿Quieres guardar antes de salir? Aceptar para guardar, Cancelar para descartar cambios.",
|
||||
"clipboard-copy-failure": "No se pudo copiar al portapapeles.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Por favor, confirma que deseas eliminar <b>{groupName}<b/>",
|
||||
@@ -214,7 +215,7 @@
|
||||
"group-id-with-value": "ID del Grupo: {groupID}",
|
||||
"group-name": "Nombre del Grupo",
|
||||
"group-not-found": "Grupo no encontrado",
|
||||
"group-token": "Group Token",
|
||||
"group-token": "Token del grupo",
|
||||
"group-with-value": "Grupo: {groupID}",
|
||||
"groups": "Grupos",
|
||||
"manage-groups": "Administrar grupos",
|
||||
@@ -250,7 +251,7 @@
|
||||
"general-preferences": "Opciones generales",
|
||||
"group-recipe-preferences": "Preferencias de grupo de las recetas",
|
||||
"report": "Informe",
|
||||
"report-with-id": "Report ID: {id}",
|
||||
"report-with-id": "ID de informe: {id}",
|
||||
"group-management": "Administración de grupos",
|
||||
"admin-group-management": "Gestión del grupo administrador",
|
||||
"admin-group-management-text": "Los cambios en este grupo se reflejarán inmediatamente.",
|
||||
@@ -258,7 +259,7 @@
|
||||
},
|
||||
"meal-plan": {
|
||||
"create-a-new-meal-plan": "Crear un nuevo menú",
|
||||
"update-this-meal-plan": "Update this Meal Plan",
|
||||
"update-this-meal-plan": "Actualizar este plan de comidas",
|
||||
"dinner-this-week": "Cena para esta semana",
|
||||
"dinner-today": "Cena para hoy",
|
||||
"dinner-tonight": "Cena para esta noche",
|
||||
@@ -473,11 +474,11 @@
|
||||
"add-to-timeline": "Añadir al cronograma",
|
||||
"recipe-added-to-list": "Receta añadida a la lista",
|
||||
"recipes-added-to-list": "Recetas añadidas a la lista",
|
||||
"successfully-added-to-list": "Successfully added to list",
|
||||
"successfully-added-to-list": "Añadido correctamente a la lista",
|
||||
"recipe-added-to-mealplan": "Receta añadida al menú",
|
||||
"failed-to-add-recipes-to-list": "Error al añadir las recetas a la lista",
|
||||
"failed-to-add-recipe-to-mealplan": "Error al añadir receta al menú",
|
||||
"failed-to-add-to-list": "Failed to add to list",
|
||||
"failed-to-add-to-list": "No se pudo agregar a la lista",
|
||||
"yield": "Raciones",
|
||||
"quantity": "Cantidad",
|
||||
"choose-unit": "Elija unidad",
|
||||
@@ -514,11 +515,11 @@
|
||||
"how-did-it-turn-out": "¿Cómo resultó esto?",
|
||||
"user-made-this": "{user} hizo esto",
|
||||
"last-made-date": "Cocinado por última vez el {date}",
|
||||
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
||||
"api-extras-description": "Los extras de las recetas son una característica clave de la API de Mealie. Permiten crear pares json clave/valor personalizados dentro de una receta para acceder desde aplicaciones de terceros. Puede utilizar estas claves para almacenar información, para activar la automatización o mensajes personalizados para transmitir al dispositivo deseado.",
|
||||
"message-key": "Clave de mensaje",
|
||||
"parse": "Analizar",
|
||||
"attach-images-hint": "Adjuntar imágenes arrastrando y soltando en el editor",
|
||||
"drop-image": "Drop image",
|
||||
"drop-image": "Soltar imagen",
|
||||
"enable-ingredient-amounts-to-use-this-feature": "Habilitar la cantidad de ingredientes para usar esta característica",
|
||||
"recipes-with-units-or-foods-defined-cannot-be-parsed": "Las recetas con unidades o alimentos definidos no pueden ser analizadas.",
|
||||
"parse-ingredients": "Analizar ingredientes",
|
||||
@@ -536,8 +537,8 @@
|
||||
"new-recipe-names-must-be-unique": "El nombre de la receta debe ser único",
|
||||
"scrape-recipe": "Analiza receta",
|
||||
"scrape-recipe-description": "Importa una receta por URL. Proporcione la URL para el sitio que desea importar, y Mealie intentará importar la receta de ese sitio y añadirla a su colección.",
|
||||
"scrape-recipe-have-a-lot-of-recipes": "Have a lot of recipes you want to scrape at once?",
|
||||
"scrape-recipe-suggest-bulk-importer": "Try out the bulk importer",
|
||||
"scrape-recipe-have-a-lot-of-recipes": "¿Tienes muchas recetas que quieres raspar a la vez?",
|
||||
"scrape-recipe-suggest-bulk-importer": "Prueba el importador masivo",
|
||||
"import-original-keywords-as-tags": "Importar palabras clave originales como etiquetas",
|
||||
"stay-in-edit-mode": "Permanecer en modo edición",
|
||||
"import-from-zip": "Importar desde zip",
|
||||
@@ -546,7 +547,7 @@
|
||||
"create-a-recipe-by-uploading-a-scan": "Crea una receta subiendo una escaneada.",
|
||||
"upload-a-png-image-from-a-recipe-book": "Suba una imagen png de un libro de recetas",
|
||||
"recipe-bulk-importer": "Importador masivo de recetas",
|
||||
"recipe-bulk-importer-description": "The Bulk recipe importer allows you to import multiple recipes at once by queueing the sites on the backend and running the task in the background. This can be useful when initially migrating to Mealie, or when you want to import a large number of recipes.",
|
||||
"recipe-bulk-importer-description": "El importador masivo de recetas te permite importar múltiples recetas a la vez poniendo en cola los sitios en el backend y ejecutando la tarea en segundo plano. Esto puede ser útil al migrar inicialmente a Mealie, o cuando desea importar un gran número de recetas.",
|
||||
"set-categories-and-tags": "Establecer categorías y etiquetas",
|
||||
"bulk-imports": "Importación masiva",
|
||||
"bulk-import-process-has-started": "El proceso de importación masiva se ha iniciado",
|
||||
@@ -561,7 +562,7 @@
|
||||
"upload-image": "Subir imagen",
|
||||
"screen-awake": "Mantener la pantalla encendida",
|
||||
"remove-image": "Eliminar imagen",
|
||||
"nextStep": "Next step"
|
||||
"nextStep": "Siguiente paso"
|
||||
},
|
||||
"search": {
|
||||
"advanced-search": "Búsqueda avanzada",
|
||||
@@ -580,16 +581,16 @@
|
||||
"search-hint": "Presione '/'",
|
||||
"advanced": "Avanzado",
|
||||
"auto-search": "Búsqueda automática",
|
||||
"no-results": "No results found"
|
||||
"no-results": "No se encontraron resultados"
|
||||
},
|
||||
"settings": {
|
||||
"add-a-new-theme": "Añadir un nuevo tema",
|
||||
"admin-settings": "Opciones del adminstrador",
|
||||
"backup": {
|
||||
"backup-created": "Backup created successfully",
|
||||
"backup-created": "Copia de seguridad creada con éxito",
|
||||
"backup-created-at-response-export_path": "Copia de seguridad creada en {path}",
|
||||
"backup-deleted": "Copia de seguridad eliminada",
|
||||
"restore-success": "Restore successful",
|
||||
"restore-success": "Restauración exitosa",
|
||||
"backup-tag": "Etiqueta de la copia de seguridad",
|
||||
"create-heading": "Crear una copia de seguridad",
|
||||
"delete-backup": "Eliminar copia de seguridad",
|
||||
@@ -690,21 +691,21 @@
|
||||
"webhooks-caps": "WEBHOOKS",
|
||||
"webhooks": "Webhooks",
|
||||
"webhook-name": "Nombre del Webhook",
|
||||
"description": "The webhooks defined below will be executed when a meal is defined for the day. At the scheduled time the webhooks will be sent with the data from the recipe that is scheduled for the day. Note that webhook execution is not exact. The webhooks are executed on a 5 minutes interval so the webhooks will be executed within 5 +/- minutes of the scheduled."
|
||||
"description": "Los webhooks definidos a continuación se ejecutarán cuando una comida esté definida para el día. A la hora prevista se enviarán los webhooks con los datos de la receta programada para el día. Tenga en cuenta que la ejecución de webhook no es exacta. Los webhooks se ejecutan en un intervalo de 5 minutos, por lo que los webhooks se ejecutarán en 5 minutos +/- de los programados."
|
||||
},
|
||||
"bug-report": "Informe de error",
|
||||
"bug-report-information": "Utilice esta información para informar de un error. Proporcionar detalles de su instancia a los desarrolladores es la mejor manera de resolver sus problemas rápidamente.",
|
||||
"tracker": "Tracker",
|
||||
"tracker": "Rastreador",
|
||||
"configuration": "Configuración",
|
||||
"docker-volume": "Volumen de Docker",
|
||||
"docker-volume-help": "Mealie requiere que los contenedores de frontend y backend compartan el mismo volumen o almacenamiento en docker. Esto asegura que el contenedor del frontend pueda acceder adecuadamente a las imágenes y los activos almacenados en el disco.",
|
||||
"volumes-are-misconfigured": "Volumes are misconfigured.",
|
||||
"volumes-are-misconfigured": "Los volúmenes están mal configurados.",
|
||||
"volumes-are-configured-correctly": "Los volúmenes se configuran correctamente.",
|
||||
"status-unknown-try-running-a-validation": "Estado desconocido. Intente ejecutar una validación.",
|
||||
"validate": "Validar",
|
||||
"email-configuration-status": "Estado de la Configuración del Correo Electrónico",
|
||||
"email-configured": "Email Configured",
|
||||
"email-test-results": "Email Test Results",
|
||||
"email-configured": "Email configurado",
|
||||
"email-test-results": "Resultados de la prueba de email",
|
||||
"ready": "Listo",
|
||||
"not-ready": "No Listo - Comprobar variables de ambiente",
|
||||
"succeeded": "Logrado",
|
||||
@@ -715,10 +716,10 @@
|
||||
"mealie-is-up-to-date": "Mealie está actualizada",
|
||||
"secure-site": "Sitio Seguro",
|
||||
"secure-site-error-text": "Servir a través de local host o seguro con HTTPS. El portapapeles y API adicionales del navegador pueden no funcionar.",
|
||||
"secure-site-success-text": "Site is accessed by localhost or https",
|
||||
"server-side-base-url": "Server Side Base URL",
|
||||
"server-side-base-url-error-text": "`BASE_URL` is still the default value on API Server. This will cause issues with notifications links generated on the server for emails, etc.",
|
||||
"server-side-base-url-success-text": "Server Side URL does not match the default",
|
||||
"secure-site-success-text": "Se accede al sitio por localhost o https",
|
||||
"server-side-base-url": "URL base del servidor",
|
||||
"server-side-base-url-error-text": "`BASE_URL` sigue siendo el valor por defecto en el servidor API. Esto causará problemas con las notificaciones generadas en el servidor de correos electrónicos, etc.",
|
||||
"server-side-base-url-success-text": "La URL del servidor no coincide con la predeterminada",
|
||||
"ldap-ready": "LDAP Listo",
|
||||
"ldap-ready-error-text": "No todos los valores LDAP están configurados. Esto puede ignorarse si no está usando autenticación LDAP.",
|
||||
"ldap-ready-success-text": "Las variables LDAP requeridas están todas definidas.",
|
||||
@@ -748,7 +749,7 @@
|
||||
"reorder-labels": "Reordenar etiquetas",
|
||||
"uncheck-all-items": "Desmarcar todos los elementos",
|
||||
"check-all-items": "Marcar todos los elementos",
|
||||
"linked-recipes-count": "No Linked Recipes|One Linked Recipe|{count} Linked Recipes",
|
||||
"linked-recipes-count": "No hay recetas vinculadas|Una receta vinculada|{count} recetas vinculadas",
|
||||
"items-checked-count": "Ningún elemento comprobado|Un elemento comprobado|{count} elementos comprobados",
|
||||
"no-label": "Sin Etiqueta",
|
||||
"completed-on": "Completado el {date}"
|
||||
@@ -841,7 +842,7 @@
|
||||
"password-updated": "Contraseña actualizada",
|
||||
"password": "Contraseña",
|
||||
"password-strength": "Fortaleza de la contraseña: {strength}",
|
||||
"please-enter-password": "Please enter your new password.",
|
||||
"please-enter-password": "Por favor ingrese su nueva contraseña.",
|
||||
"register": "Registrarse",
|
||||
"reset-password": "Restablecer contraseña",
|
||||
"sign-in": "Iniciar sesión",
|
||||
@@ -862,7 +863,7 @@
|
||||
"username": "Usuario",
|
||||
"users-header": "USUARIOS",
|
||||
"users": "Usuarios",
|
||||
"user-not-found": "User not found",
|
||||
"user-not-found": "Usuario no encontrado",
|
||||
"webhook-time": "Tiempo de Webhook",
|
||||
"webhooks-enabled": "Webhooks habilitados",
|
||||
"you-are-not-allowed-to-create-a-user": "No tiene permisos para crear usuarios",
|
||||
@@ -885,7 +886,7 @@
|
||||
"user-management": "Gestión de Usuarios",
|
||||
"reset-locked-users": "Restablecer usuarios bloqueados",
|
||||
"admin-user-creation": "Creación de Usuario Administrador",
|
||||
"admin-user-management": "Admin User Management",
|
||||
"admin-user-management": "Administración de usuario de admin",
|
||||
"user-details": "Detalles de usuario",
|
||||
"user-name": "Nombre de usuario",
|
||||
"authentication-method": "Método de autenticación",
|
||||
@@ -896,11 +897,11 @@
|
||||
"user-can-manage-group": "El usuario puede administrar el grupo",
|
||||
"user-can-organize-group-data": "El usuario puede organizar los datos del grupo",
|
||||
"enable-advanced-features": "Habilitar Características Avanzadas",
|
||||
"it-looks-like-this-is-your-first-time-logging-in": "It looks like this is your first time logging in.",
|
||||
"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-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."
|
||||
"it-looks-like-this-is-your-first-time-logging-in": "Parece que esta es la primera vez que inicias sesión.",
|
||||
"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-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."
|
||||
},
|
||||
"language-dialog": {
|
||||
"translated": "traducido",
|
||||
@@ -927,19 +928,19 @@
|
||||
},
|
||||
"units": {
|
||||
"seed-dialog-text": "Añade a la base de datos unidades comunes basadas en su idioma local.",
|
||||
"combine-unit-description": "Combining the selected units will merge the Source Unit and Target Unit into a single unit. The {source-unit-will-be-deleted} and all of the references to the Source Unit will be updated to point to the Target Unit.",
|
||||
"combine-unit-description": "Combinar los alimentos seleccionados fusionará el alimento origen y destinatario en un solo alimento. El alimento {source-unit-will-be-deleted} será eliminado y todas las referencias a él serán actualizadas para apuntar al nuevo alimento.",
|
||||
"combine-unit": "Unidad de Combinación",
|
||||
"source-unit": "Source Unit",
|
||||
"target-unit": "Target Unit",
|
||||
"merging-unit-into-unit": "Merging {0} into {1}",
|
||||
"create-unit": "Create Unit",
|
||||
"source-unit": "Unidad de origen",
|
||||
"target-unit": "Unidad de objetivo",
|
||||
"merging-unit-into-unit": "Combinando {0} con {1}",
|
||||
"create-unit": "Crear unidad",
|
||||
"abbreviation": "Abreviatura",
|
||||
"plural-abbreviation": "Abreviatura en plural",
|
||||
"description": "Descripción",
|
||||
"display-as-fraction": "Display as Fraction",
|
||||
"display-as-fraction": "Mostrar como fracción",
|
||||
"use-abbreviation": "Usar Abreviaturas",
|
||||
"edit-unit": "Editar unidad",
|
||||
"unit-data": "Unit Data",
|
||||
"unit-data": "Datos de la unidad",
|
||||
"use-abbv": "Usar Abr.",
|
||||
"fraction": "Fracción",
|
||||
"example-unit-singular": "ej: Cucharada",
|
||||
@@ -956,10 +957,10 @@
|
||||
"recipes": {
|
||||
"purge-exports": "Limpiar exportaciones",
|
||||
"are-you-sure-you-want-to-delete-all-export-data": "¿Está seguro de que desea eliminar todos sus datos de exportación?",
|
||||
"confirm-delete-recipes": "Are you sure you want to delete the following recipes? This action cannot be undone.",
|
||||
"the-following-recipes-selected-length-will-be-exported": "The following recipes ({0}) will be exported.",
|
||||
"settings-chosen-explanation": "Settings chosen here, excluding the locked option, will be applied to all selected recipes.",
|
||||
"selected-length-recipe-s-settings-will-be-updated": "{count} recipe(s) settings will be updated.",
|
||||
"confirm-delete-recipes": "¿Estás seguro de que quieres eliminar las siguientes recetas? Esta acción no podrá deshacerse.",
|
||||
"the-following-recipes-selected-length-will-be-exported": "Las siguientes recetas ({0}) serán exportadas.",
|
||||
"settings-chosen-explanation": "Los ajustes seleccionados aquí, excluyendo la opción bloqueada, se aplicarán a todas las recetas seleccionadas.",
|
||||
"selected-length-recipe-s-settings-will-be-updated": "Se actualizarán los ajustes de {count} receta(s).",
|
||||
"recipe-data": "Datos de la receta",
|
||||
"recipe-data-description": "Use this section to manage the data associated with your recipes. You can perform several bulk actions on your recipes including exporting, deleting, tagging, and assigning categories.",
|
||||
"recipe-columns": "Recipe Columns",
|
||||
@@ -1120,14 +1121,14 @@
|
||||
"ingredients-natural-language-processor-explanation-2": "It's not perfect, but it yields great results in general and is a good starting point for manually parsing ingredients into individual fields. Alternatively, you can also use the \"Brute\" processor that uses a pattern matching technique to identify ingredients.",
|
||||
"nlp": "NLP",
|
||||
"brute": "Brute",
|
||||
"show-individual-confidence": "Show individual confidence",
|
||||
"ingredient-text": "Ingredient Text",
|
||||
"average-confident": "{0} Confident",
|
||||
"try-an-example": "Try an example",
|
||||
"show-individual-confidence": "Mostrar confianza individual",
|
||||
"ingredient-text": "Texto del ingrediente",
|
||||
"average-confident": "{0} Confianza",
|
||||
"try-an-example": "Prueba un ejemplo",
|
||||
"parser": "Procesador",
|
||||
"background-tasks": "Tareas en Segundo Plano",
|
||||
"background-tasks-description": "Here you can view all the running background tasks and their status",
|
||||
"no-logs-found": "No Logs Found",
|
||||
"background-tasks-description": "Aquí puedes ver todas las tareas de fondo en ejecución y su estado",
|
||||
"no-logs-found": "No se encontraron registros",
|
||||
"tasks": "Tareas"
|
||||
},
|
||||
"profile": {
|
||||
@@ -1137,7 +1138,7 @@
|
||||
"get-public-link": "Obtener enlace público",
|
||||
"account-summary": "Información de la cuenta",
|
||||
"account-summary-description": "Este es un resumen de la información de tu grupo",
|
||||
"group-statistics": "Group Statistics",
|
||||
"group-statistics": "Estadísticas del grupo",
|
||||
"group-statistics-description": "Your Group Statistics provide some insight how you're using Mealie.",
|
||||
"storage-capacity": "Capacidad de almacenamiento",
|
||||
"storage-capacity-description": "Your storage capacity is a calculation of the images and assets you have uploaded.",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Requerir todas las etiquetas",
|
||||
"require-all-tools": "Requiere todos los utensilios",
|
||||
"cookbook-name": "Nombre del recetario",
|
||||
"cookbook-with-name": "Recetario {0}"
|
||||
"cookbook-with-name": "Recetario {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Tuo tiedosto",
|
||||
"created-on-date": "Luotu {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Haluatko varmasti poistaa ryhmän <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Vaadi Kaikki Tunnisteet",
|
||||
"require-all-tools": "Vaadi Kaikki Työkalut",
|
||||
"cookbook-name": "Keittokirjan Nimi",
|
||||
"cookbook-with-name": "Keittokirja {0}"
|
||||
"cookbook-with-name": "Keittokirja {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Transférer un fichier",
|
||||
"created-on-date": "Créé le {0}",
|
||||
"unsaved-changes": "Vous avez des modifications non enregistrées. Voulez-vous les enregistrer ? Ok pour enregistrer, annuler pour ignorer les modifications.",
|
||||
"clipboard-copy-failure": "Échec de la copie vers le presse-papiers."
|
||||
"clipboard-copy-failure": "Échec de la copie vers le presse-papiers.",
|
||||
"confirm-delete-generic-items": "Êtes-vous sûr de vouloir supprimer les éléments suivants ?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Êtes-vous certain de vouloir supprimer <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Nécessite tous les mots-clés",
|
||||
"require-all-tools": "Nécessite tous les ustensiles",
|
||||
"cookbook-name": "Nom du livre de recettes",
|
||||
"cookbook-with-name": "Livre de recettes {0}"
|
||||
"cookbook-with-name": "Livre de recettes {0}",
|
||||
"create-a-cookbook": "Créer un nouveau livre de recettes",
|
||||
"cookbook": "Livre de recettes"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Transférer un fichier",
|
||||
"created-on-date": "Créé le {0}",
|
||||
"unsaved-changes": "Vous avez des modifications non enregistrées. Voulez-vous enregistrer avant de partir ? OK pour enregistrer, Annuler pour ignorer les modifications.",
|
||||
"clipboard-copy-failure": "Échec de la copie dans le presse-papiers."
|
||||
"clipboard-copy-failure": "Échec de la copie dans le presse-papiers.",
|
||||
"confirm-delete-generic-items": "Êtes-vous sûr de vouloir supprimer les éléments suivants ?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Voulez-vous vraiment supprimer <b>{groupName}<b/> ?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Nécessite tous les mots-clés",
|
||||
"require-all-tools": "Nécessite tous les ustensiles",
|
||||
"cookbook-name": "Nom du livre de recettes",
|
||||
"cookbook-with-name": "Livre de recettes {0}"
|
||||
"cookbook-with-name": "Livre de recettes {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Upload File",
|
||||
"created-on-date": "Created on: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Are you sure you want to delete <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Require All Tags",
|
||||
"require-all-tools": "Require All Tools",
|
||||
"cookbook-name": "Cookbook Name",
|
||||
"cookbook-with-name": "Cookbook {0}"
|
||||
"cookbook-with-name": "Cookbook {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "העלאת קבצים",
|
||||
"created-on-date": "נוצר ב-{0}",
|
||||
"unsaved-changes": "יש שינויים שלא נשמרו. לצאת לפני שמירה? אשר לשמירה, בטל למחיקת שינויים.",
|
||||
"clipboard-copy-failure": "כשלון בהעתקה ללוח ההדבקה."
|
||||
"clipboard-copy-failure": "כשלון בהעתקה ללוח ההדבקה.",
|
||||
"confirm-delete-generic-items": "האם אתה בטוח שברצונך למחוק את הפריטים הנבחרים?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "האם את/ה בטוח/ה שברצונך למחוק את <b>{groupName}<b/>?",
|
||||
@@ -258,7 +259,7 @@
|
||||
},
|
||||
"meal-plan": {
|
||||
"create-a-new-meal-plan": "יצירת תכנית ארוחות חדשה",
|
||||
"update-this-meal-plan": "Update this Meal Plan",
|
||||
"update-this-meal-plan": "עדכן את תכנון הארוחות",
|
||||
"dinner-this-week": "ארוחות ערב השבוע",
|
||||
"dinner-today": "ארוחת ערב היום",
|
||||
"dinner-tonight": "ארוחת ערב היום",
|
||||
@@ -473,11 +474,11 @@
|
||||
"add-to-timeline": "הוסף לציר הזמן",
|
||||
"recipe-added-to-list": "מתכון נוסף לרשימה",
|
||||
"recipes-added-to-list": "מתכונים הוספו לרשימה",
|
||||
"successfully-added-to-list": "Successfully added to list",
|
||||
"successfully-added-to-list": "נוסף לרשימה בהצלחה",
|
||||
"recipe-added-to-mealplan": "מתכון נוסף לתכנון ארוחות",
|
||||
"failed-to-add-recipes-to-list": "כשלון בהוספת מתכון לרשימה",
|
||||
"failed-to-add-recipe-to-mealplan": "הוספת מתכון לתכנון ארוחות נכשלה",
|
||||
"failed-to-add-to-list": "Failed to add to list",
|
||||
"failed-to-add-to-list": "כשלון בהוספה לרשימה",
|
||||
"yield": "תשואה",
|
||||
"quantity": "כמות",
|
||||
"choose-unit": "בחירת יחידת מידה",
|
||||
@@ -514,7 +515,7 @@
|
||||
"how-did-it-turn-out": "איך יצא?",
|
||||
"user-made-this": "{user} הכין את זה",
|
||||
"last-made-date": "נעשה לאחרונה ב{date}",
|
||||
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
||||
"api-extras-description": "מתכונים נוספים הם יכולת מפתח של Mealie API. הם מאפשרים ליצור צמדי key/value בצורת JSON על מנת לקרוא אותם בתוכנת צד שלישית. תוכלו להשתמש בצמדים האלה כדי לספק מידע, לדוגמא להפעיל אוטומציות או הודעות מותאמות אישית למכשירים מסויימים.",
|
||||
"message-key": "מפתח הודעה",
|
||||
"parse": "ניתוח",
|
||||
"attach-images-hint": "הוסף תמונות ע\"י גרירה ושחרור אל תוך העורך",
|
||||
@@ -536,8 +537,8 @@
|
||||
"new-recipe-names-must-be-unique": "שם מתכון חדש חייב להיות ייחודי",
|
||||
"scrape-recipe": "קריאת מתכון",
|
||||
"scrape-recipe-description": "קריאת מתכון בעזרת לינק. ספק את הלינק של האתר שברצונך לקרוא, ומילי תנסה לקרוא את המתכון מהאתר ולהוסיף אותו לאוסף.",
|
||||
"scrape-recipe-have-a-lot-of-recipes": "Have a lot of recipes you want to scrape at once?",
|
||||
"scrape-recipe-suggest-bulk-importer": "Try out the bulk importer",
|
||||
"scrape-recipe-have-a-lot-of-recipes": "יש לך הרבה מתכונים שאתה רוצה לקרוא בבת אחת?",
|
||||
"scrape-recipe-suggest-bulk-importer": "נסה את יכולת קריאת רשימה",
|
||||
"import-original-keywords-as-tags": "ייבא שמות מפתח מקוריות כתגיות",
|
||||
"stay-in-edit-mode": "השאר במצב עריכה",
|
||||
"import-from-zip": "ייבא מקובץ",
|
||||
@@ -561,7 +562,7 @@
|
||||
"upload-image": "העלה תמונה",
|
||||
"screen-awake": "השאר את המסך פעיל",
|
||||
"remove-image": "האם למחוק את התמונה?",
|
||||
"nextStep": "Next step"
|
||||
"nextStep": "השלב הבא"
|
||||
},
|
||||
"search": {
|
||||
"advanced-search": "חיפוש מתקדם",
|
||||
@@ -796,7 +797,7 @@
|
||||
"untagged-count": "לא מתוייג {count}",
|
||||
"create-a-tag": "צור תגית",
|
||||
"tag-name": "שם תגית",
|
||||
"tag": "Tag"
|
||||
"tag": "תגית"
|
||||
},
|
||||
"tool": {
|
||||
"tools": "כלים",
|
||||
@@ -806,7 +807,7 @@
|
||||
"create-new-tool": "יצירת כלי חדש",
|
||||
"on-hand-checkbox-label": "הראה מה יש לי במטבח",
|
||||
"required-tools": "צריך כלים",
|
||||
"tool": "Tool"
|
||||
"tool": "כלי"
|
||||
},
|
||||
"user": {
|
||||
"admin": "אדמין",
|
||||
@@ -897,10 +898,10 @@
|
||||
"user-can-organize-group-data": "משתמש יכול לשנות מידע של קבוצה",
|
||||
"enable-advanced-features": "אפשר אפשרויות מתקדמות",
|
||||
"it-looks-like-this-is-your-first-time-logging-in": "נראה שזו ההתחברות הראשונה שלך.",
|
||||
"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": "לא רוצה לראות את זה יותר? דאג לשנות את המייל של בהגדרות המשתמש!",
|
||||
"forgot-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."
|
||||
"forgot-password-text": "נא לספק כתובת דוא\"ל. אנו נשלח לך הודעת דוא\"ל לצורך איפוס הסיסמה שלך.",
|
||||
"changes-reflected-immediately": "השינויים למשתמש זה יבוצעו מיידית."
|
||||
},
|
||||
"language-dialog": {
|
||||
"translated": "תורגם",
|
||||
@@ -922,8 +923,8 @@
|
||||
"food-label": "תוית אוכל",
|
||||
"edit-food": "עריכת מזון",
|
||||
"food-data": "נתוני אוכל",
|
||||
"example-food-singular": "ex: Onion",
|
||||
"example-food-plural": "ex: Onions"
|
||||
"example-food-singular": "דוגמא: בצל",
|
||||
"example-food-plural": "דוגמא: בצלים"
|
||||
},
|
||||
"units": {
|
||||
"seed-dialog-text": "אכלס את מסד הנתונים עם יחידות מדידה בהתאם לשפה המקומית שלך.",
|
||||
@@ -934,7 +935,7 @@
|
||||
"merging-unit-into-unit": "ממזג את {0} לתוך {1}",
|
||||
"create-unit": "יצירת יחידה",
|
||||
"abbreviation": "קיצור",
|
||||
"plural-abbreviation": "Plural Abbreviation",
|
||||
"plural-abbreviation": "צורת הרבית",
|
||||
"description": "תיאור",
|
||||
"display-as-fraction": "הצגה כשבר",
|
||||
"use-abbreviation": "השתמש בקיצור",
|
||||
@@ -942,10 +943,10 @@
|
||||
"unit-data": "נתוני יחידה",
|
||||
"use-abbv": "השתמש בקיצור",
|
||||
"fraction": "שבר",
|
||||
"example-unit-singular": "ex: Tablespoon",
|
||||
"example-unit-plural": "ex: Tablespoons",
|
||||
"example-unit-abbreviation-singular": "ex: Tbsp",
|
||||
"example-unit-abbreviation-plural": "ex: Tbsps"
|
||||
"example-unit-singular": "דוגמא: כפית",
|
||||
"example-unit-plural": "דוגמא: כפיות",
|
||||
"example-unit-abbreviation-singular": "דוגמא: כף",
|
||||
"example-unit-abbreviation-plural": "דוגמא: כפות"
|
||||
},
|
||||
"labels": {
|
||||
"seed-dialog-text": "אכלס את מסד הנתונים בתגיות נפוצות בהתאם לשפה המקומית שלך.",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "זקוק לכל התגיות",
|
||||
"require-all-tools": "זקוק לכל הכלים",
|
||||
"cookbook-name": "שם ספר בישול",
|
||||
"cookbook-with-name": "ספר בישול {0}"
|
||||
"cookbook-with-name": "ספר בישול {0}",
|
||||
"create-a-cookbook": "צור ספר בישול חדש",
|
||||
"cookbook": "ספר בישול"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Prenesi Datoteku",
|
||||
"created-on-date": "Kreirano dana: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Jeste li sigurni da želite izbrisati <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Zahtijevaj sve oznake",
|
||||
"require-all-tools": "Zahtijevaj sve Alate",
|
||||
"cookbook-name": "Naziv Zbirke recepata",
|
||||
"cookbook-with-name": "ZbirkaRecepata {0}"
|
||||
"cookbook-with-name": "ZbirkaRecepata {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
"event-delete-confirmation": "Biztosan törölni szeretné ezt az eseményt?",
|
||||
"event-deleted": "Esemény törölve",
|
||||
"event-updated": "Esemény Frissítve",
|
||||
"new-notification-form-description": "A Mealie az Apprise könyvtárat használja az értesítésekhez. Számos lehetőséget kínál különbőző értesítési szolgáltatásokhoz. Nézd meg a wiki oldalukon, hogy kell URL-t létrehozni az általad használt szolgáltatáshoz. Az értesítés tipusának kiválasztásával egyéb beállítási lehetőségek jelenhetnek meg.",
|
||||
"new-notification-form-description": "A Mealie az Apprise könyvtárat használja az értesítésekhez. Számos lehetőséget kínál különböző értesítési szolgáltatásokhoz. Nézd meg a wiki oldalukon, hogy kell URL-t létrehozni az általad használt szolgáltatáshoz. Az értesítés típusának kiválasztásával egyéb beállítási lehetőségek jelenhetnek meg.",
|
||||
"new-version": "Új verzió elérhető!",
|
||||
"notification": "Értesítések",
|
||||
"refresh": "Frissítés",
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Fájl feltöltése",
|
||||
"created-on-date": "Létrehozva: {0}",
|
||||
"unsaved-changes": "El nem mentett módosításai vannak. Szeretné elmenteni, mielőtt kilép? A mentéshez kattintson az Ok, a módosítások elvetéséhez a Mégsem gombra.",
|
||||
"clipboard-copy-failure": "Nem sikerült a vágólapra másolás."
|
||||
"clipboard-copy-failure": "Nem sikerült a vágólapra másolás.",
|
||||
"confirm-delete-generic-items": "Biztos benne, hogy törölni szeretné az alábbi tételeket?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Biztosan törölni szeretnéd ezt: <b>{groupName}<b/>?",
|
||||
@@ -473,11 +474,11 @@
|
||||
"add-to-timeline": "Hozzáadás idővonalhoz",
|
||||
"recipe-added-to-list": "Recept hozzáadva listához",
|
||||
"recipes-added-to-list": "Recept hozzáadva listához",
|
||||
"successfully-added-to-list": "Successfully added to list",
|
||||
"successfully-added-to-list": "Sikeresen hozzáadva a listához",
|
||||
"recipe-added-to-mealplan": "Recept hozzáadva menütervhez",
|
||||
"failed-to-add-recipes-to-list": "Nem sikerült hozzáadni a receptet a listához",
|
||||
"failed-to-add-recipe-to-mealplan": "Nem sikerült hozzáadni a receptet a menütervhez",
|
||||
"failed-to-add-to-list": "Failed to add to list",
|
||||
"failed-to-add-to-list": "Nem sikerült hozzáadni a listához",
|
||||
"yield": "Adag",
|
||||
"quantity": "Mennyiség",
|
||||
"choose-unit": "Válasszon mennyiségi egységet",
|
||||
@@ -1154,7 +1155,7 @@
|
||||
"members-description": "Láthatja, hogy kik vannak a csoportjában, és kezelheti az ő jogosultságaikat.",
|
||||
"webhooks-description": "Állítson be webhookokat, amelyek azokon a napokon lépnek működésbe, amikorra a menüterveket ütemezte.",
|
||||
"notifiers": "Értesítések",
|
||||
"notifiers-description": "Setup email and push notifications that trigger on specific events.",
|
||||
"notifiers-description": "Állítson be olyan e-mail és push-értesítéseket, amelyek meghatározott események esetén lépnek működésbe.",
|
||||
"manage-data": "Adatok kezelése",
|
||||
"manage-data-description": "Alapanyagainak és mennyiségi egységeinek kezelése (további opciók hamarosan)",
|
||||
"data-migrations": "Adat migráció",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Minden címke szükséges",
|
||||
"require-all-tools": "Minden szükséges eszköz",
|
||||
"cookbook-name": "Szakácskönyv neve",
|
||||
"cookbook-with-name": "Szakácskönyv {0}"
|
||||
"cookbook-with-name": "Szakácskönyv {0}",
|
||||
"create-a-cookbook": "Szakácskönyv létrehozása",
|
||||
"cookbook": "Szakácskönyv"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Upload File",
|
||||
"created-on-date": "Created on: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Are you sure you want to delete <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Require All Tags",
|
||||
"require-all-tools": "Require All Tools",
|
||||
"cookbook-name": "Cookbook Name",
|
||||
"cookbook-with-name": "Cookbook {0}"
|
||||
"cookbook-with-name": "Cookbook {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Carica file",
|
||||
"created-on-date": "Creato il: {0}",
|
||||
"unsaved-changes": "Sono state apportate modifiche non salvate. Salvare prima di uscire? Premi Ok per salvare, Annulla per scartare le modifiche.",
|
||||
"clipboard-copy-failure": "Impossibile copiare negli appunti."
|
||||
"clipboard-copy-failure": "Impossibile copiare negli appunti.",
|
||||
"confirm-delete-generic-items": "Sei sicuro di voler eliminare i seguenti elementi?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Sei sicuro di volerlo eliminare <b>{groupName}<b/>'?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Richiedi Tutti I Tag",
|
||||
"require-all-tools": "Richiedi Tutti Gli Strumenti",
|
||||
"cookbook-name": "Nome Ricettario",
|
||||
"cookbook-with-name": "Ricettario {0}"
|
||||
"cookbook-with-name": "Ricettario {0}",
|
||||
"create-a-cookbook": "Crea un libro di cucina",
|
||||
"cookbook": "Libro di cucina"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "ファイルのアップロード",
|
||||
"created-on-date": "Created on: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "<b>{groupName}<b/> を削除しますか?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Require All Tags",
|
||||
"require-all-tools": "Require All Tools",
|
||||
"cookbook-name": "Cookbook Name",
|
||||
"cookbook-with-name": "Cookbook {0}"
|
||||
"cookbook-with-name": "Cookbook {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Upload File",
|
||||
"created-on-date": "Created on: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Are you sure you want to delete <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Require All Tags",
|
||||
"require-all-tools": "Require All Tools",
|
||||
"cookbook-name": "Cookbook Name",
|
||||
"cookbook-with-name": "Cookbook {0}"
|
||||
"cookbook-with-name": "Cookbook {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Įkelti failą",
|
||||
"created-on-date": "Sukurta: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Ar tikrai norite ištrinti <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Būtinos visos žymos",
|
||||
"require-all-tools": "Būtini visi įrankiai",
|
||||
"cookbook-name": "Receptų knygos pavadinimas",
|
||||
"cookbook-with-name": "Receptų knyga {0}"
|
||||
"cookbook-with-name": "Receptų knyga {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Upload File",
|
||||
"created-on-date": "Created on: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Are you sure you want to delete <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Require All Tags",
|
||||
"require-all-tools": "Require All Tools",
|
||||
"cookbook-name": "Cookbook Name",
|
||||
"cookbook-with-name": "Cookbook {0}"
|
||||
"cookbook-with-name": "Cookbook {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
"apprise-url": "Apprise URL",
|
||||
"database": "Database",
|
||||
"delete-event": "Gebeurtenis verwijderen",
|
||||
"event-delete-confirmation": "Weet je zeker dat je deze gebeurtenis wil verwijderen?",
|
||||
"event-delete-confirmation": "Weet je zeker dat je deze gebeurtenis wilt verwijderen?",
|
||||
"event-deleted": "Gebeurtenis verwijderd",
|
||||
"event-updated": "Gebeurtenis bijgewerkt",
|
||||
"new-notification-form-description": "Mealie gebruikt de notificatieservices van Apprise om notificaties te genereren. Apprise biedt diverse services aan om notificaties te versturen. Raadpleeg hun wiki voor een uitgebreide handleiding over het creëren van een link voor je service. Afhankelijk van de gekozen service zijn er mogelijk extra functionaliteiten beschikbaar.",
|
||||
@@ -84,7 +84,7 @@
|
||||
"clear": "Wissen",
|
||||
"close": "Sluiten",
|
||||
"confirm": "Bevestigen",
|
||||
"confirm-delete-generic": "Weet je zeker dat je dit wil verwijderen?",
|
||||
"confirm-delete-generic": "Weet je zeker dat je dit wilt verwijderen?",
|
||||
"copied_message": "Gekopieerd!",
|
||||
"create": "Aanmaken",
|
||||
"created": "Aangemaakt op",
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Bestand uploaden",
|
||||
"created-on-date": "Gemaakt op {0}",
|
||||
"unsaved-changes": "Er zijn niet-opgeslagen wijzigingen. Wil je eerst opslaan voordat je vertrekt? Okay om op te slaan, Annuleren om wijzigingen ongedaan te maken.",
|
||||
"clipboard-copy-failure": "Kopiëren naar klembord mislukt."
|
||||
"clipboard-copy-failure": "Kopiëren naar klembord mislukt.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Weet je zeker dat je <b>{groupName}<b/> wil verwijderen?",
|
||||
@@ -559,7 +560,7 @@
|
||||
"recipe-yield": "Recept Opbrengst",
|
||||
"unit": "Eenheid",
|
||||
"upload-image": "Afbeelding uploaden",
|
||||
"screen-awake": "Scherm laten aan staan",
|
||||
"screen-awake": "Scherm aan laten staan",
|
||||
"remove-image": "Afbeelding verwijderen",
|
||||
"nextStep": "Volgende stap"
|
||||
},
|
||||
@@ -736,7 +737,7 @@
|
||||
"shopping-lists": "Boodschappenlijsten",
|
||||
"food": "Voedsel",
|
||||
"note": "Notitie",
|
||||
"label": "Etiket",
|
||||
"label": "Label",
|
||||
"linked-item-warning": "Dit element is gekoppeld aan een of meer recepten. Het aanpassen van de eenheden of ingrediënten zal onverwachte resultaten opleveren bij het toevoegen of verwijderen van het recept uit deze lijst.",
|
||||
"toggle-food": "Voedsel schakelen",
|
||||
"manage-labels": "Labels beheren",
|
||||
@@ -746,10 +747,10 @@
|
||||
"delete-checked": "Selectie verwijderen",
|
||||
"toggle-label-sort": "Label sortering in-/uitschakelen",
|
||||
"reorder-labels": "Labels opnieuw indelen",
|
||||
"uncheck-all-items": "Deselecteer alle Items",
|
||||
"check-all-items": "Alle producten controleren",
|
||||
"uncheck-all-items": "Deselecteer alle items",
|
||||
"check-all-items": "Selecteer alle items",
|
||||
"linked-recipes-count": "Geen Gelinkte Recepten Eén Gekoppeld Recept{count} Gekoppelde Recepten",
|
||||
"items-checked-count": "Geen items aangevinkt, Eén item gecontroleerd{count} items gecontroleerd",
|
||||
"items-checked-count": "Geen items geselecteerd|Eén item geselecteerd|{count} items geselecteerd",
|
||||
"no-label": "Geen label",
|
||||
"completed-on": "Afgemaakt op {date}"
|
||||
},
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Vereis alle tags",
|
||||
"require-all-tools": "Vereis al het kookgerei",
|
||||
"cookbook-name": "Naam van het kookboek",
|
||||
"cookbook-with-name": "Kookboek {0}"
|
||||
"cookbook-with-name": "Kookboek {0}",
|
||||
"create-a-cookbook": "Maak een kookboek",
|
||||
"cookbook": "Kookboek"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Last opp fil",
|
||||
"created-on-date": "Opprettet: {0}",
|
||||
"unsaved-changes": "Du har ulagrede endringer. Ønsker du å lagre før du forlater? Trykk 'OK' for å lagre, 'Avbryt' for å forkaste endringene.",
|
||||
"clipboard-copy-failure": "Kunne ikke kopiere til utklippstavlen."
|
||||
"clipboard-copy-failure": "Kunne ikke kopiere til utklippstavlen.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Er du sikker på at du vil slette <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Krev alle emneord",
|
||||
"require-all-tools": "Krev alle kjøkkenredskaper",
|
||||
"cookbook-name": "Navn på kokebok",
|
||||
"cookbook-with-name": "Kokebok {0}"
|
||||
"cookbook-with-name": "Kokebok {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
"loading": "Ładowanie",
|
||||
"loading-events": "Ładowanie wydarzeń",
|
||||
"loading-recipe": "Ładowanie przepisów...",
|
||||
"loading-ocr-data": "Loading OCR data...",
|
||||
"loading-ocr-data": "Wczytywanie danych OCR...",
|
||||
"loading-recipes": "Ładowanie przepisów",
|
||||
"message": "Wiadomość",
|
||||
"monday": "Poniedziałek",
|
||||
@@ -198,8 +198,9 @@
|
||||
"refresh": "Odśwież",
|
||||
"upload-file": "Prześlij plik",
|
||||
"created-on-date": "Utworzono dnia: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"unsaved-changes": "Masz niezapisane zmiany. Czy chcesz zapisać przed wyjściem? Ok, aby zapisać, Anuluj, żeby odrzucić zmiany.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Czy na pewno chcesz usunąć <b>{groupName}<b/>?",
|
||||
@@ -258,7 +259,7 @@
|
||||
},
|
||||
"meal-plan": {
|
||||
"create-a-new-meal-plan": "Utwórz nowy plan posiłku",
|
||||
"update-this-meal-plan": "Update this Meal Plan",
|
||||
"update-this-meal-plan": "Zaktualizuj plan posiłku",
|
||||
"dinner-this-week": "Obiad w tym tygodniu",
|
||||
"dinner-today": "Obiad dziś",
|
||||
"dinner-tonight": "OBIAD DZIŚ",
|
||||
@@ -473,7 +474,7 @@
|
||||
"add-to-timeline": "Dodaj do osi czasu",
|
||||
"recipe-added-to-list": "Przepis dodany do listy",
|
||||
"recipes-added-to-list": "Przepisy dodane do listy",
|
||||
"successfully-added-to-list": "Successfully added to list",
|
||||
"successfully-added-to-list": "Pomyślnie dodano do listy",
|
||||
"recipe-added-to-mealplan": "Przepis dodany do planu posiłków",
|
||||
"failed-to-add-recipes-to-list": "Nie udało się dodać przepisu do listy",
|
||||
"failed-to-add-recipe-to-mealplan": "Nie udało się dodać przepisu do planu posiłków",
|
||||
@@ -806,7 +807,7 @@
|
||||
"create-new-tool": "Utwórz nowe narzędzie",
|
||||
"on-hand-checkbox-label": "Pokaż jako Posiadane (Zaznaczono)",
|
||||
"required-tools": "Wymagane Narzędzia",
|
||||
"tool": "Tool"
|
||||
"tool": "Narzędzie"
|
||||
},
|
||||
"user": {
|
||||
"admin": "Administrator",
|
||||
@@ -944,7 +945,7 @@
|
||||
"fraction": "Ułamki",
|
||||
"example-unit-singular": "np. Łyżka stołowa",
|
||||
"example-unit-plural": "np. Łyżki stołowe",
|
||||
"example-unit-abbreviation-singular": "ex: Tbsp",
|
||||
"example-unit-abbreviation-singular": "na przykład: Łyżka stołowa",
|
||||
"example-unit-abbreviation-plural": "ex: Tbsps"
|
||||
},
|
||||
"labels": {
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Wymagaj wszystkich tagów",
|
||||
"require-all-tools": "Wymagaj wszystkich narzędzi",
|
||||
"cookbook-name": "Nazwa książki kucharskiej",
|
||||
"cookbook-with-name": "Książka kucharska {0}"
|
||||
"cookbook-with-name": "Książka kucharska {0}",
|
||||
"create-a-cookbook": "Utwórz nową książkę kucharską",
|
||||
"cookbook": "Książka kucharska"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Enviar arquivo",
|
||||
"created-on-date": "Criado em {0}",
|
||||
"unsaved-changes": "Você possui alterações não salvas. Deseja salvar antes de sair? Ok para salvar, Cancelar para descartar alterações.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Tem certeza que deseja excluir o grupo <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Exigir todos os marcadores",
|
||||
"require-all-tools": "Exigir todas as ferramentas",
|
||||
"cookbook-name": "Nome do Livro de Receitas",
|
||||
"cookbook-with-name": "Livro de Receitas {0}"
|
||||
"cookbook-with-name": "Livro de Receitas {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Carregar ficheiro",
|
||||
"created-on-date": "Criado em: {0}",
|
||||
"unsaved-changes": "Tem alterações por gravar. Quer gravar antes de sair? OK para gravar, Cancelar para descartar alterações.",
|
||||
"clipboard-copy-failure": "Erro ao copiar para a área de transferência."
|
||||
"clipboard-copy-failure": "Erro ao copiar para a área de transferência.",
|
||||
"confirm-delete-generic-items": "Tem a certeza de que deseja eliminar os seguintes itens?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Tem a certeza que quer eliminar <b>{groupName}</b>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Requer todas as etiquetas",
|
||||
"require-all-tools": "Requer todas os utensílios",
|
||||
"cookbook-name": "Nome do Livro de Receitas",
|
||||
"cookbook-with-name": "Livro de Receitas {0}"
|
||||
"cookbook-with-name": "Livro de Receitas {0}",
|
||||
"create-a-cookbook": "Criar um Livro de Receitas",
|
||||
"cookbook": "Livro de Receitas"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Încărcă fișier",
|
||||
"created-on-date": "Creat pe {0}",
|
||||
"unsaved-changes": "Aveți modificări nesalvate. Doriți să salvați înainte de a închide aplicația? Apăsați \"OK\" pentru a salva sau \"Anulare\" pentru a renunța la modificări.",
|
||||
"clipboard-copy-failure": "Copierea în clipboard a eșuat."
|
||||
"clipboard-copy-failure": "Copierea în clipboard a eșuat.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Sunteți sigur că doriți să ștergeți <b>{groupName}<b/>?",
|
||||
@@ -370,49 +371,49 @@
|
||||
"google-ld-json-info": "Google ld+json Info",
|
||||
"must-be-a-valid-url": "Trebuie să fie o adresă URL validă",
|
||||
"paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Paste in your recipe data. Each line will be treated as an item in a list",
|
||||
"recipe-markup-specification": "Recipe Markup Specification",
|
||||
"recipe-url": "Recipe URL",
|
||||
"upload-a-recipe": "Upload a Recipe",
|
||||
"recipe-markup-specification": "Specificație Markup rețetă",
|
||||
"recipe-url": "URL rețetă",
|
||||
"upload-a-recipe": "Încarcă o rețetă",
|
||||
"upload-individual-zip-file": "Upload an individual .zip file exported from another Mealie instance.",
|
||||
"url-form-hint": "Copy and paste a link from your favorite recipe website",
|
||||
"url-form-hint": "Copiază și lipește un link de pe site-ul tău web preferat de rețete",
|
||||
"view-scraped-data": "View Scraped Data",
|
||||
"trim-whitespace-description": "Trim leading and trailing whitespace as well as blank lines",
|
||||
"trim-prefix-description": "Trim first character from each line",
|
||||
"split-by-numbered-line-description": "Attempts to split a paragraph by matching '1)' or '1.' patterns",
|
||||
"import-by-url": "Import a recipe by URL",
|
||||
"create-manually": "Create a recipe manually",
|
||||
"import-by-url": "Importă rețetă prin URL",
|
||||
"create-manually": "Creează o rețetă manual",
|
||||
"make-recipe-image": "Make this the recipe image"
|
||||
},
|
||||
"page": {
|
||||
"404-page-not-found": "404 Page not found",
|
||||
"all-recipes": "All Recipes",
|
||||
"new-page-created": "New page created",
|
||||
"page": "Page",
|
||||
"page-creation-failed": "Page creation failed",
|
||||
"page-deleted": "Page deleted",
|
||||
"page-deletion-failed": "Page deletion failed",
|
||||
"page-update-failed": "Page update failed",
|
||||
"page-updated": "Page updated",
|
||||
"pages-update-failed": "Pages update failed",
|
||||
"pages-updated": "Pages updated",
|
||||
"404-not-found": "404 Not Found",
|
||||
"an-error-occurred": "An error occurred"
|
||||
"404-page-not-found": "404 Pagina nu a fost găsită",
|
||||
"all-recipes": "Toate rețetele",
|
||||
"new-page-created": "Pagină nouă creată",
|
||||
"page": "Pagină",
|
||||
"page-creation-failed": "Crearea paginii a eșuat",
|
||||
"page-deleted": "Pagină ștearsă",
|
||||
"page-deletion-failed": "Ștergerea paginii a eșuat",
|
||||
"page-update-failed": "Actualizarea paginii a eșuat",
|
||||
"page-updated": "Pagina a fost actualizată",
|
||||
"pages-update-failed": "Actualizarea paginilor a eșuat",
|
||||
"pages-updated": "Pagini actualizate",
|
||||
"404-not-found": "404 Pagina nu a fost gasita",
|
||||
"an-error-occurred": "A intervenit o eroare"
|
||||
},
|
||||
"recipe": {
|
||||
"add-key": "Add Key",
|
||||
"add-to-favorites": "Add to Favorites",
|
||||
"add-key": "Adăugați cheia",
|
||||
"add-to-favorites": "Adaugă la Favorite",
|
||||
"api-extras": "API Extras",
|
||||
"calories": "Calories",
|
||||
"calories-suffix": "calories",
|
||||
"carbohydrate-content": "Carbohydrate",
|
||||
"categories": "Categories",
|
||||
"comment-action": "Comment",
|
||||
"comment": "Comment",
|
||||
"calories": "Calorii",
|
||||
"calories-suffix": "calorii",
|
||||
"carbohydrate-content": "Carbohidrat",
|
||||
"categories": "Categorii",
|
||||
"comment-action": "Comentariu",
|
||||
"comment": "Comentariu",
|
||||
"comments": "Comentarii",
|
||||
"delete-confirmation": "Sunteți sigur că doriți să ștergeți această rețetă?",
|
||||
"delete-recipe": "Șterge rețeta",
|
||||
"description": "Descriere",
|
||||
"disable-amount": "Disable Ingredient Amounts",
|
||||
"disable-amount": "Dezactivați cantitățile Ingredientelor",
|
||||
"disable-comments": "Dezactivează comentariile",
|
||||
"duplicate": "Reţeta duplicată",
|
||||
"duplicate-name": "Denumirea noii rețete",
|
||||
@@ -422,7 +423,7 @@
|
||||
"grams": "grame",
|
||||
"ingredient": "Ingredient",
|
||||
"ingredients": "Ingrediente",
|
||||
"insert-ingredient": "Insert Ingredient",
|
||||
"insert-ingredient": "Inserați Ingredientul",
|
||||
"insert-section": "Adăugare secțiune",
|
||||
"instructions": "Instrucțiuni",
|
||||
"key-name-required": "Numele cheii este necesar",
|
||||
@@ -473,16 +474,16 @@
|
||||
"add-to-timeline": "Adaugă la Cronologie",
|
||||
"recipe-added-to-list": "Rețeta a fost adăugată la listă",
|
||||
"recipes-added-to-list": "Rețeta a fost adăugată în listă",
|
||||
"successfully-added-to-list": "Successfully added to list",
|
||||
"successfully-added-to-list": "Adăugat cu succes la listă",
|
||||
"recipe-added-to-mealplan": "Rețeta a fist adăugată la planul de mese",
|
||||
"failed-to-add-recipes-to-list": "Adăugarea rețetei în listă a eșuat",
|
||||
"failed-to-add-recipe-to-mealplan": "Adăugarea rețetei la planul de mese a eșuat",
|
||||
"failed-to-add-to-list": "Failed to add to list",
|
||||
"failed-to-add-to-list": "Adăugarea la listă a eșuat",
|
||||
"yield": "Producție",
|
||||
"quantity": "Cantitate",
|
||||
"choose-unit": "Alegeţi unitatea",
|
||||
"press-enter-to-create": "Press Enter to Create",
|
||||
"choose-food": "Choose Food",
|
||||
"press-enter-to-create": "Apăsați Enter pentru a crea",
|
||||
"choose-food": "Alege Mâncarea",
|
||||
"notes": "Notițe",
|
||||
"toggle-section": "Activează/dezactivează secțiunea",
|
||||
"see-original-text": "Vezi Textul Original",
|
||||
@@ -521,13 +522,13 @@
|
||||
"drop-image": "Trage imaginea",
|
||||
"enable-ingredient-amounts-to-use-this-feature": "Enable ingredient amounts to use this feature",
|
||||
"recipes-with-units-or-foods-defined-cannot-be-parsed": "Recipes with units or foods defined cannot be parsed.",
|
||||
"parse-ingredients": "Parse ingredients",
|
||||
"edit-markdown": "Edit Markdown",
|
||||
"recipe-creation": "Recipe Creation",
|
||||
"select-one-of-the-various-ways-to-create-a-recipe": "Select one of the various ways to create a recipe",
|
||||
"parse-ingredients": "Analizează ingredientele",
|
||||
"edit-markdown": "Editează Markdown",
|
||||
"recipe-creation": "Crearea rețetei",
|
||||
"select-one-of-the-various-ways-to-create-a-recipe": "Selectează una dintre diferitele modalități de a crea o rețetă",
|
||||
"looking-for-migrations": "Looking For Migrations?",
|
||||
"import-with-url": "Import with URL",
|
||||
"create-recipe": "Create Recipe",
|
||||
"import-with-url": "Import cu URL",
|
||||
"create-recipe": "Crează rețetă",
|
||||
"import-with-zip": "Import with .zip",
|
||||
"create-recipe-from-an-image": "Create recipe from an image",
|
||||
"bulk-url-import": "Bulk URL Import",
|
||||
@@ -608,13 +609,13 @@
|
||||
"restore-backup": "Restore Backup"
|
||||
},
|
||||
"backup-and-exports": "Backups",
|
||||
"change-password": "Change Password",
|
||||
"current": "Version:",
|
||||
"custom-pages": "Custom Pages",
|
||||
"edit-page": "Edit Page",
|
||||
"events": "Events",
|
||||
"first-day-of-week": "First day of the week",
|
||||
"group-settings-updated": "Group Settings Updated",
|
||||
"change-password": "Schimbă parola",
|
||||
"current": "Versiune:",
|
||||
"custom-pages": "Pagini personalizate",
|
||||
"edit-page": "Editare pagină",
|
||||
"events": "Evenimente",
|
||||
"first-day-of-week": "Prima zi a săptămânii",
|
||||
"group-settings-updated": "Setări de grup actualizate",
|
||||
"homepage": {
|
||||
"all-categories": "All Categories",
|
||||
"card-per-section": "Card Per Section",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Require All Tags",
|
||||
"require-all-tools": "Require All Tools",
|
||||
"cookbook-name": "Cookbook Name",
|
||||
"cookbook-with-name": "Cookbook {0}"
|
||||
"cookbook-with-name": "Cookbook {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Загрузить файл",
|
||||
"created-on-date": "Создано: {0}",
|
||||
"unsaved-changes": "У вас есть несохраненные изменения. Вы хотите сохранить их перед выходом?",
|
||||
"clipboard-copy-failure": "Не удалось скопировать текст."
|
||||
"clipboard-copy-failure": "Не удалось скопировать текст.",
|
||||
"confirm-delete-generic-items": "Вы уверены, что хотите удалить следующие элементы?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Вы действительно хотите удалить <b>{groupName}<b/>?",
|
||||
@@ -473,11 +474,11 @@
|
||||
"add-to-timeline": "Добавить в историю",
|
||||
"recipe-added-to-list": "Рецепт добавлен в список",
|
||||
"recipes-added-to-list": "Рецепты добавлены в список",
|
||||
"successfully-added-to-list": "Successfully added to list",
|
||||
"successfully-added-to-list": "Успешно добавлено в список",
|
||||
"recipe-added-to-mealplan": "Рецепт добавлен в план питания",
|
||||
"failed-to-add-recipes-to-list": "Не удалось добавить рецепт в список",
|
||||
"failed-to-add-recipe-to-mealplan": "Не удалось добавить рецепт в план питания",
|
||||
"failed-to-add-to-list": "Failed to add to list",
|
||||
"failed-to-add-to-list": "Не удалось добавить в список",
|
||||
"yield": "Выход",
|
||||
"quantity": "Количество",
|
||||
"choose-unit": "Выберите единицу измерения",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Требовать все теги",
|
||||
"require-all-tools": "Требовать все инструменты",
|
||||
"cookbook-name": "Название книги рецептов",
|
||||
"cookbook-with-name": "Книга рецептов {0}"
|
||||
"cookbook-with-name": "Книга рецептов {0}",
|
||||
"create-a-cookbook": "Создать книгу рецептов",
|
||||
"cookbook": "Книга рецептов"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Nahrať súbor",
|
||||
"created-on-date": "Vytvorené: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Naozaj chcete odstrániť <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Vyžadovať všetky štítky",
|
||||
"require-all-tools": "Vyžadovať všetky nástroje",
|
||||
"cookbook-name": "Názov kuchárky",
|
||||
"cookbook-with-name": "Kuchárka {0}"
|
||||
"cookbook-with-name": "Kuchárka {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
"support": "Podpora",
|
||||
"version": "Verzija",
|
||||
"unknown-version": "neznano",
|
||||
"sponsor": "Sponsor"
|
||||
"sponsor": "Sponzor"
|
||||
},
|
||||
"asset": {
|
||||
"assets": "Viri",
|
||||
@@ -53,9 +53,9 @@
|
||||
"apprise-url": "Apprise URL",
|
||||
"database": "Baza podatkov",
|
||||
"delete-event": "Zbriši dogodek",
|
||||
"event-delete-confirmation": "Are you sure you want to delete this event?",
|
||||
"event-deleted": "Event Deleted",
|
||||
"event-updated": "Event Updated",
|
||||
"event-delete-confirmation": "Ali ste prepričani, da želite izbrisati ta dogodek?",
|
||||
"event-deleted": "Dogodek izbrisan",
|
||||
"event-updated": "Dogodek posodobljen",
|
||||
"new-notification-form-description": "Mealie uporablja Apprise knjižnico za kreiranje obvestil. Omogoča več različnih servisov za uporabo obvestil. Preglejte njihovo wiki stran, za bolj natančen vodič, kako izdelati URL za vaš servis. Če je na voljo, so za vaš izbran servis obvestil, na voljo tudi dodane možnosti.",
|
||||
"new-version": "Na voljo je nova verzija!",
|
||||
"notification": "Obvestila",
|
||||
@@ -64,7 +64,7 @@
|
||||
"something-went-wrong": "Nekaj je šlo narobe!",
|
||||
"subscribed-events": "Naročeni dogodki",
|
||||
"test-message-sent": "Testno sporočilo je bilo poslano",
|
||||
"new-notification": "New Notification",
|
||||
"new-notification": "Novo obvestilo",
|
||||
"event-notifiers": "Event Notifiers",
|
||||
"apprise-url-skipped-if-blank": "Apprise URL (skipped if blank)",
|
||||
"enable-notifier": "Enable Notifier",
|
||||
@@ -114,12 +114,12 @@
|
||||
"json": "JSON",
|
||||
"keyword": "Ključna beseda",
|
||||
"link-copied": "Povezava kopirana",
|
||||
"loading": "Loading",
|
||||
"loading": "Nalaganje",
|
||||
"loading-events": "Loading Events",
|
||||
"loading-recipe": "Loading recipe...",
|
||||
"loading-recipe": "Nalagam recepte...",
|
||||
"loading-ocr-data": "Loading OCR data...",
|
||||
"loading-recipes": "Nalagam recepte",
|
||||
"message": "Message",
|
||||
"message": "Sporočilo",
|
||||
"monday": "Ponedeljek",
|
||||
"name": "Ime",
|
||||
"new": "Novo",
|
||||
@@ -146,7 +146,7 @@
|
||||
"sort": "Razvrsti",
|
||||
"sort-alphabetically": "Po abecedi",
|
||||
"status": "Stanje",
|
||||
"subject": "Subject",
|
||||
"subject": "Zadeva",
|
||||
"submit": "Pošlji",
|
||||
"success-count": "Uspešno: {count}",
|
||||
"sunday": "Nedelja",
|
||||
@@ -186,20 +186,21 @@
|
||||
"color": "Barva",
|
||||
"timestamp": "Časovni žig",
|
||||
"last-made": "Last Made",
|
||||
"learn-more": "Learn More",
|
||||
"learn-more": "Več o tem",
|
||||
"this-feature-is-currently-inactive": "This feature is currently inactive",
|
||||
"clipboard-not-supported": "Clipboard not supported",
|
||||
"copied-to-clipboard": "Copied to clipboard",
|
||||
"copied-to-clipboard": "Kopiraj v odložišče",
|
||||
"your-browser-does-not-support-clipboard": "Your browser does not support clipboard",
|
||||
"copied-items-to-clipboard": "No item copied to clipboard|One item copied to clipboard|Copied {count} items to clipboard",
|
||||
"actions": "Actions",
|
||||
"selected-count": "Selected: {count}",
|
||||
"export-all": "Export All",
|
||||
"refresh": "Refresh",
|
||||
"upload-file": "Upload File",
|
||||
"export-all": "Izvozi vse",
|
||||
"refresh": "Osveži",
|
||||
"upload-file": "Naloži datoteko",
|
||||
"created-on-date": "Created on: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Ste prepričani, da želite izbrisati <b>{groupName}<b/>?",
|
||||
@@ -225,15 +226,15 @@
|
||||
"keep-my-recipes-private": "Moji recepti naj bodo privatni",
|
||||
"keep-my-recipes-private-description": "Nastavi vaše skupine in vse recepte privzeto kot privatni. Kasneje lahko to vedno spremenite."
|
||||
},
|
||||
"manage-members": "Manage Members",
|
||||
"manage-members": "Urejanje članov",
|
||||
"manage-members-description": "Manage the permissions of the members in your groups. {manage} allows the user to access the data-management page {invite} allows the user to generate invitation links for other users. Group owners cannot change their own permissions.",
|
||||
"manage": "Manage",
|
||||
"invite": "Invite",
|
||||
"invite": "Povabi",
|
||||
"looking-to-update-your-profile": "Looking to Update Your Profile?",
|
||||
"default-recipe-preferences-description": "These are the default settings when a new recipe is created in your group. These can be changed for individual recipes in the recipe settings menu.",
|
||||
"default-recipe-preferences": "Default Recipe Preferences",
|
||||
"group-preferences": "Group Preferences",
|
||||
"private-group": "Private Group",
|
||||
"private-group": "Zasebna skupina",
|
||||
"private-group-description": "Setting your group to private will default all public view options to default. This overrides an individual recipes public view settings.",
|
||||
"allow-users-outside-of-your-group-to-see-your-recipes": "Allow users outside of your group to see your recipes",
|
||||
"allow-users-outside-of-your-group-to-see-your-recipes-description": "When enabled you can use a public share link to share specific recipes without authorizing the user. When disabled, you can only share recipes with users who are in your group or with a pre-generated private link",
|
||||
@@ -249,7 +250,7 @@
|
||||
"disable-organizing-recipe-ingredients-by-units-and-food-description": "Hides the Food, Unit, and Amount fields for ingredients and treats ingredients as plain text fields.",
|
||||
"general-preferences": "General Preferences",
|
||||
"group-recipe-preferences": "Group Recipe Preferences",
|
||||
"report": "Report",
|
||||
"report": "Prijavi",
|
||||
"report-with-id": "Report ID: {id}",
|
||||
"group-management": "Group Management",
|
||||
"admin-group-management": "Admin Group Management",
|
||||
@@ -407,7 +408,7 @@
|
||||
"carbohydrate-content": "Ogljikovi hidrati",
|
||||
"categories": "Kategorije",
|
||||
"comment-action": "Pripomba",
|
||||
"comment": "Comment",
|
||||
"comment": "Komentar",
|
||||
"comments": "Pripombe",
|
||||
"delete-confirmation": "Ali želite izbrisati ta recept?",
|
||||
"delete-recipe": "Izbriši recept",
|
||||
@@ -472,8 +473,8 @@
|
||||
"add-to-plan": "Dodaj v načrt",
|
||||
"add-to-timeline": "Add to Timeline",
|
||||
"recipe-added-to-list": "Recept dodan na seznam",
|
||||
"recipes-added-to-list": "Recipes added to list",
|
||||
"successfully-added-to-list": "Successfully added to list",
|
||||
"recipes-added-to-list": "Recepti dodani na seznam",
|
||||
"successfully-added-to-list": "Uspešno dodano na seznam",
|
||||
"recipe-added-to-mealplan": "Recept dodan v načrtovanje obroka",
|
||||
"failed-to-add-recipes-to-list": "Failed to add recipe to list",
|
||||
"failed-to-add-recipe-to-mealplan": "Napaka pri dodajanji recepta v načrtovanje obroka",
|
||||
@@ -500,18 +501,18 @@
|
||||
"public-link": "Javna povezava",
|
||||
"timer": {
|
||||
"kitchen-timer": "Kitchen Timer",
|
||||
"start-timer": "Start Timer",
|
||||
"pause-timer": "Pause Timer",
|
||||
"resume-timer": "Resume Timer",
|
||||
"stop-timer": "Stop Timer"
|
||||
"start-timer": "Zaženi časovnik",
|
||||
"pause-timer": "Ustavi časovnik",
|
||||
"resume-timer": "Nadaljuj časovnik",
|
||||
"stop-timer": "Ustavi časovnik"
|
||||
},
|
||||
"edit-timeline-event": "Edit Timeline Event",
|
||||
"timeline": "Timeline",
|
||||
"timeline": "Časovnica",
|
||||
"timeline-is-empty": "Nothing on the timeline yet. Try making this recipe!",
|
||||
"group-global-timeline": "{groupName} Global Timeline",
|
||||
"open-timeline": "Open Timeline",
|
||||
"made-this": "I Made This",
|
||||
"how-did-it-turn-out": "How did it turn out?",
|
||||
"made-this": "Naredil sem to",
|
||||
"how-did-it-turn-out": "Kako se je izkazalo?",
|
||||
"user-made-this": "{user} made this",
|
||||
"last-made-date": "Last Made {date}",
|
||||
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.",
|
||||
@@ -557,11 +558,11 @@
|
||||
"debug": "Debug",
|
||||
"tree-view": "Tree View",
|
||||
"recipe-yield": "Recipe Yield",
|
||||
"unit": "Unit",
|
||||
"upload-image": "Upload image",
|
||||
"screen-awake": "Keep Screen Awake",
|
||||
"remove-image": "Remove image",
|
||||
"nextStep": "Next step"
|
||||
"unit": "Enota",
|
||||
"upload-image": "Naloži sliko",
|
||||
"screen-awake": "Ohranjanje budnega zaslona",
|
||||
"remove-image": "Odstrani sliko",
|
||||
"nextStep": "Naslednji korak"
|
||||
},
|
||||
"search": {
|
||||
"advanced-search": "Napredno iskanje",
|
||||
@@ -712,7 +713,7 @@
|
||||
"general-about": "General About",
|
||||
"application-version": "Application Version",
|
||||
"application-version-error-text": "Your current version ({0}) does not match the latest release. Considering updating to the latest version ({1}).",
|
||||
"mealie-is-up-to-date": "Mealie is up to date",
|
||||
"mealie-is-up-to-date": "Mealie je v najnovejši različici",
|
||||
"secure-site": "Secure Site",
|
||||
"secure-site-error-text": "Serve via localhost or secure with https. Clipboard and additional browser APIs may not work.",
|
||||
"secure-site-success-text": "Site is accessed by localhost or https",
|
||||
@@ -796,7 +797,7 @@
|
||||
"untagged-count": "Brez značke {count}",
|
||||
"create-a-tag": "Ustvari značko",
|
||||
"tag-name": "Ime značke",
|
||||
"tag": "Tag"
|
||||
"tag": "Oznaka"
|
||||
},
|
||||
"tool": {
|
||||
"tools": "Orodja",
|
||||
@@ -877,10 +878,10 @@
|
||||
"account-locked-please-try-again-later": "Account Locked. Please try again later",
|
||||
"user-favorites": "User Favorites",
|
||||
"password-strength-values": {
|
||||
"weak": "Weak",
|
||||
"good": "Good",
|
||||
"strong": "Strong",
|
||||
"very-strong": "Very Strong"
|
||||
"weak": "Šibko",
|
||||
"good": "Dobro",
|
||||
"strong": "Močno",
|
||||
"very-strong": "Zelo močno"
|
||||
},
|
||||
"user-management": "User Management",
|
||||
"reset-locked-users": "Reset Locked Users",
|
||||
@@ -898,7 +899,7 @@
|
||||
"enable-advanced-features": "Enable advanced features",
|
||||
"it-looks-like-this-is-your-first-time-logging-in": "It looks like this is your first time logging in.",
|
||||
"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": "Ste pozabili geslo",
|
||||
"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."
|
||||
},
|
||||
@@ -920,10 +921,10 @@
|
||||
"target-food": "Target Food",
|
||||
"create-food": "Create Food",
|
||||
"food-label": "Food Label",
|
||||
"edit-food": "Edit Food",
|
||||
"edit-food": "Spremeni živilo",
|
||||
"food-data": "Food Data",
|
||||
"example-food-singular": "ex: Onion",
|
||||
"example-food-plural": "ex: Onions"
|
||||
"example-food-singular": "npr: Čebula",
|
||||
"example-food-plural": "npr: Čebule"
|
||||
},
|
||||
"units": {
|
||||
"seed-dialog-text": "Napolni podatkovno bazo z običajnimi enotami, glede na vaš lokalni jezik.",
|
||||
@@ -981,12 +982,12 @@
|
||||
"data-management": "Data Management",
|
||||
"data-management-description": "Select which data set you want to make changes to.",
|
||||
"select-data": "Select Data",
|
||||
"select-language": "Select Language",
|
||||
"select-language": "Izberite jezik",
|
||||
"columns": "Columns",
|
||||
"combine": "Combine",
|
||||
"categories": {
|
||||
"edit-category": "Edit Category",
|
||||
"new-category": "New Category",
|
||||
"edit-category": "Uredi kategorijo",
|
||||
"new-category": "Nova kategorija",
|
||||
"category-data": "Category Data"
|
||||
},
|
||||
"tags": {
|
||||
@@ -1131,7 +1132,7 @@
|
||||
"tasks": "Tasks"
|
||||
},
|
||||
"profile": {
|
||||
"welcome-user": "👋 Welcome, {0}",
|
||||
"welcome-user": "👋 Dobrodošel, {0}",
|
||||
"description": "Manage your profile, recipes, and group settings.",
|
||||
"get-invite-link": "Get Invite Link",
|
||||
"get-public-link": "Get Public Link",
|
||||
@@ -1150,7 +1151,7 @@
|
||||
"group-settings": "Group Settings",
|
||||
"group-settings-description": "Manage your common group settings like mealplan and privacy settings.",
|
||||
"cookbooks-description": "Manage a collection of recipe categories and generate pages for them.",
|
||||
"members": "Members",
|
||||
"members": "Člani",
|
||||
"members-description": "See who's in your group and manage their permissions.",
|
||||
"webhooks-description": "Setup webhooks that trigger on days that you have have mealplan scheduled.",
|
||||
"notifiers": "Notifiers",
|
||||
@@ -1175,9 +1176,9 @@
|
||||
"manage-data-migrations": "Manage Data Migrations"
|
||||
},
|
||||
"cookbook": {
|
||||
"cookbooks": "Cookbooks",
|
||||
"cookbooks": "Kuharske knjige",
|
||||
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes and tags. Creating a cookbook will add an entry to the side-bar and all the recipes with the tags and categories chosen will be displayed in the cookbook.",
|
||||
"public-cookbook": "Public Cookbook",
|
||||
"public-cookbook": "Javna kuharska knjiga",
|
||||
"public-cookbook-description": "Public Cookbooks can be shared with non-mealie users and will be displayed on your groups page.",
|
||||
"filter-options": "Filter Options",
|
||||
"filter-options-description": "When require all is selected the cookbook will only include recipes that have all of the items selected. This applies to each subset of selectors and not a cross section of the selected items.",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Require All Tags",
|
||||
"require-all-tools": "Require All Tools",
|
||||
"cookbook-name": "Cookbook Name",
|
||||
"cookbook-with-name": "Cookbook {0}"
|
||||
"cookbook-with-name": "Cookbook {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Учитај датотеку",
|
||||
"created-on-date": "Крерирано: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Да ли сте сигурни да желите да обришете <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Захтевај све ознаке",
|
||||
"require-all-tools": "Захтева сав прибор",
|
||||
"cookbook-name": "Cookbook Name",
|
||||
"cookbook-with-name": "Кувар {0}"
|
||||
"cookbook-with-name": "Кувар {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Ladda upp fil",
|
||||
"created-on-date": "Skapad {0}",
|
||||
"unsaved-changes": "Du har osparade ändringar. Vill du spara innan du lämnar? Tryck Okej att spara, Avbryt för att ignorera ändringar.",
|
||||
"clipboard-copy-failure": "Det gick inte att kopiera till urklipp."
|
||||
"clipboard-copy-failure": "Det gick inte att kopiera till urklipp.",
|
||||
"confirm-delete-generic-items": "Är du säker på att du vill radera följande objekt?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Är du säker på att du vill radera <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Kräv alla taggar",
|
||||
"require-all-tools": "Kräv alla verktyg",
|
||||
"cookbook-name": "Namn på kokbok",
|
||||
"cookbook-with-name": "Kokbok {0}"
|
||||
"cookbook-with-name": "Kokbok {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Dosya Yükle",
|
||||
"created-on-date": "{0} tarihinde oluşturuldu",
|
||||
"unsaved-changes": "Kaydedilmemiş değişiklikleriniz mevcut. Ayrılmadan önce kaydetmek ister misiniz? Kaydetmek için Tamam'ı, değişiklikleri iptal etmek için İptal'i seçin.",
|
||||
"clipboard-copy-failure": "Panoya kopyalanamadı."
|
||||
"clipboard-copy-failure": "Panoya kopyalanamadı.",
|
||||
"confirm-delete-generic-items": "Aşağıdaki öğeleri silmek istediğinizden emin misiniz?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "<b>{groupName}<b/>'i silmek istediğine emin misin?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Require All Tags",
|
||||
"require-all-tools": "Require All Tools",
|
||||
"cookbook-name": "Cookbook Name",
|
||||
"cookbook-with-name": "Cookbook {0}"
|
||||
"cookbook-with-name": "Cookbook {0}",
|
||||
"create-a-cookbook": "Yemek Kitabı Oluştur",
|
||||
"cookbook": "Yemek kitabı"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Вивантажити файл",
|
||||
"created-on-date": "Створено: {0}",
|
||||
"unsaved-changes": "У вас є незбережені зміни. Ви хочете зберегти їх перед виходом? Гаразд, щоб зберегти, Скасувати, щоб скасувати.",
|
||||
"clipboard-copy-failure": "Не вдалося скопіювати до буфера обміну."
|
||||
"clipboard-copy-failure": "Не вдалося скопіювати до буфера обміну.",
|
||||
"confirm-delete-generic-items": "Ви впевнені, що хочете видалити вибрані елементи?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Ви дійсно бажаєте видалити <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Вимагати всі мітки",
|
||||
"require-all-tools": "Вимагати всі інструменти",
|
||||
"cookbook-name": "Назва кулінарної книги",
|
||||
"cookbook-with-name": "Кулінарна книга {0}"
|
||||
"cookbook-with-name": "Кулінарна книга {0}",
|
||||
"create-a-cookbook": "Створити кулінарну книгу",
|
||||
"cookbook": "Кулінарна книга"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "Upload File",
|
||||
"created-on-date": "Created on: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "Are you sure you want to delete <b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Require All Tags",
|
||||
"require-all-tools": "Require All Tools",
|
||||
"cookbook-name": "Cookbook Name",
|
||||
"cookbook-with-name": "Cookbook {0}"
|
||||
"cookbook-with-name": "Cookbook {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "上传文件",
|
||||
"created-on-date": "创建于: {0}",
|
||||
"unsaved-changes": "你有未保存的更改。你希望现在离开前保存吗?保存选择“是”,不保存选择“取消”。",
|
||||
"clipboard-copy-failure": "未能复制到剪切板。"
|
||||
"clipboard-copy-failure": "未能复制到剪切板。",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "您确定要删除<b>{groupName}<b/>吗?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "包含全部标签",
|
||||
"require-all-tools": "包含全部工具",
|
||||
"cookbook-name": "食谱名称",
|
||||
"cookbook-with-name": "{0}合集"
|
||||
"cookbook-with-name": "{0}合集",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +199,8 @@
|
||||
"upload-file": "上傳文件",
|
||||
"created-on-date": "Created on: {0}",
|
||||
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard."
|
||||
"clipboard-copy-failure": "Failed to copy to the clipboard.",
|
||||
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
|
||||
},
|
||||
"group": {
|
||||
"are-you-sure-you-want-to-delete-the-group": "確定要刪除<b>{groupName}<b/>?",
|
||||
@@ -1185,6 +1186,8 @@
|
||||
"require-all-tags": "Require All Tags",
|
||||
"require-all-tools": "Require All Tools",
|
||||
"cookbook-name": "食譜名",
|
||||
"cookbook-with-name": "食譜 {0}"
|
||||
"cookbook-with-name": "食譜 {0}",
|
||||
"create-a-cookbook": "Create a Cookbook",
|
||||
"cookbook": "Cookbook"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,7 @@ export interface AppInfo {
|
||||
version: string;
|
||||
demoStatus: boolean;
|
||||
allowSignup: boolean;
|
||||
defaultGroupSlug?: string;
|
||||
}
|
||||
export interface AppStartupInfo {
|
||||
isFirstLogin: boolean;
|
||||
|
||||
@@ -74,7 +74,13 @@ export default defineComponent({
|
||||
|
||||
const { response, data } = await adminApi.groups.updateOne(group.value.id, group.value);
|
||||
if (response?.status === 200 && data) {
|
||||
if (group.value.slug !== data.slug) {
|
||||
// the slug updated, which invalidates the nav URLs
|
||||
window.location.reload();
|
||||
}
|
||||
group.value = data;
|
||||
} else {
|
||||
alert.error(i18n.tc("settings.settings-update-failed"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
</template>
|
||||
<template v-else-if="property.slot === 'build'">
|
||||
<v-list-item-subtitle>
|
||||
<a target="_blank" :href="`https://github.com/hay-kot/mealie/commit/${property.value}`">
|
||||
<a target="_blank" :href="`https://github.com/mealie-recipes/mealie/commit/${property.value}`">
|
||||
{{ property.value }}
|
||||
</a>
|
||||
</v-list-item-subtitle>
|
||||
|
||||
@@ -1,73 +1,81 @@
|
||||
<template>
|
||||
<v-container class="narrow-container">
|
||||
<BasePageTitle divider>
|
||||
<template #header>
|
||||
<v-img max-height="100" max-width="100" :src="require('~/static/svgs/manage-cookbooks.svg')"></v-img>
|
||||
</template>
|
||||
<template #title> {{ $t('cookbook.cookbooks') }} </template>
|
||||
{{ $t('cookbook.description') }}
|
||||
</BasePageTitle>
|
||||
<div>
|
||||
<!-- Create Dialog -->
|
||||
<BaseDialog
|
||||
v-if="createTarget"
|
||||
v-model="dialogStates.create"
|
||||
:width="650"
|
||||
:icon="$globals.icons.pages"
|
||||
:title="$t('cookbook.create-a-cookbook')"
|
||||
:submit-icon="$globals.icons.save"
|
||||
:submit-text="$tc('general.save')"
|
||||
@submit="actions.updateOne(createTarget)"
|
||||
@cancel="actions.deleteOne(createTarget.id)"
|
||||
>
|
||||
<v-card-text>
|
||||
<CookbookEditor
|
||||
:cookbook=createTarget
|
||||
:actions="actions"
|
||||
/>
|
||||
</v-card-text>
|
||||
</BaseDialog>
|
||||
|
||||
<BaseButton create @click="actions.createOne()" />
|
||||
<v-expansion-panels class="mt-2">
|
||||
<draggable v-model="cookbooks" handle=".handle" style="width: 100%" @change="actions.updateOrder()">
|
||||
<v-expansion-panel v-for="(cookbook, index) in cookbooks" :key="index" class="my-2 left-border rounded">
|
||||
<v-expansion-panel-header disable-icon-rotate class="headline">
|
||||
<div class="d-flex align-center">
|
||||
<v-icon large left>
|
||||
{{ $globals.icons.pages }}
|
||||
</v-icon>
|
||||
{{ cookbook.name }}
|
||||
</div>
|
||||
<template #actions>
|
||||
<v-icon class="handle">
|
||||
{{ $globals.icons.arrowUpDown }}
|
||||
</v-icon>
|
||||
<v-btn icon small class="ml-2">
|
||||
<v-icon>
|
||||
{{ $globals.icons.edit }}
|
||||
<!-- Delete Dialog -->
|
||||
<BaseDialog
|
||||
v-model="dialogStates.delete"
|
||||
:title="$t('general.delete-with-name', { name: $t('cookbook.cookbook') })"
|
||||
:icon="$globals.icons.alertCircle"
|
||||
color="error"
|
||||
@confirm="deleteCookbook()"
|
||||
>
|
||||
<v-card-text>
|
||||
<p>{{ $t("general.confirm-delete-generic-with-name", { name: $t('cookbook.cookbook') }) }}</p>
|
||||
<p v-if="deleteTarget" class="mt-4 ml-4">{{ deleteTarget.name }}</p>
|
||||
</v-card-text>
|
||||
</BaseDialog>
|
||||
|
||||
<!-- Cookbook Page -->
|
||||
<!-- Page Title -->
|
||||
<v-container class="narrow-container">
|
||||
<BasePageTitle divider>
|
||||
<template #header>
|
||||
<v-img max-height="100" max-width="100" :src="require('~/static/svgs/manage-cookbooks.svg')"></v-img>
|
||||
</template>
|
||||
<template #title> {{ $t('cookbook.cookbooks') }} </template>
|
||||
{{ $t('cookbook.description') }}
|
||||
</BasePageTitle>
|
||||
|
||||
<!-- Create New -->
|
||||
<BaseButton create @click="createCookbook" />
|
||||
|
||||
<!-- Cookbook List -->
|
||||
<v-expansion-panels class="mt-2">
|
||||
<draggable v-model="cookbooks" handle=".handle" style="width: 100%" @change="actions.updateOrder()">
|
||||
<v-expansion-panel v-for="(cookbook, index) in cookbooks" :key="index" class="my-2 left-border rounded">
|
||||
<v-expansion-panel-header disable-icon-rotate class="headline">
|
||||
<div class="d-flex align-center">
|
||||
<v-icon large left>
|
||||
{{ $globals.icons.pages }}
|
||||
</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
</v-expansion-panel-header>
|
||||
<v-expansion-panel-content>
|
||||
<v-card-text v-if="cookbooks">
|
||||
<v-text-field v-model="cookbooks[index].name" :label="$t('cookbook.cookbook-name')"></v-text-field>
|
||||
<v-textarea v-model="cookbooks[index].description" auto-grow :rows="2" :label="$t('recipe.description')"></v-textarea>
|
||||
<RecipeOrganizerSelector v-model="cookbooks[index].categories" selector-type="categories" />
|
||||
<RecipeOrganizerSelector v-model="cookbooks[index].tags" selector-type="tags" />
|
||||
<RecipeOrganizerSelector v-model="cookbooks[index].tools" selector-type="tools" />
|
||||
<v-switch v-model="cookbooks[index].public" hide-details single-line>
|
||||
<template #label>
|
||||
{{ $t('cookbook.public-cookbook') }}
|
||||
<HelpIcon small right class="ml-2">
|
||||
{{ $t('cookbook.public-cookbook-description') }}
|
||||
</HelpIcon>
|
||||
</template>
|
||||
</v-switch>
|
||||
<div class="mt-4">
|
||||
<h3 class="text-subtitle-1 d-flex align-center mb-0 pb-0">
|
||||
{{ $t('cookbook.filter-options') }}
|
||||
<HelpIcon right small class="ml-2">
|
||||
{{ $t('cookbook.filter-options-description') }}
|
||||
</HelpIcon>
|
||||
</h3>
|
||||
<v-switch v-model="cookbooks[index].requireAllCategories" class="mt-0" hide-details single-line>
|
||||
<template #label> {{ $t('cookbook.require-all-categories') }} </template>
|
||||
</v-switch>
|
||||
<v-switch v-model="cookbooks[index].requireAllTags" hide-details single-line>
|
||||
<template #label> {{ $t('cookbook.require-all-tags') }} </template>
|
||||
</v-switch>
|
||||
<v-switch v-model="cookbooks[index].requireAllTools" hide-details single-line>
|
||||
<template #label> {{ $t('cookbook.require-all-tools') }} </template>
|
||||
</v-switch>
|
||||
{{ cookbook.name }}
|
||||
</div>
|
||||
</v-card-text>
|
||||
<v-card-actions>
|
||||
<v-spacer></v-spacer>
|
||||
<BaseButtonGroup
|
||||
:buttons="[
|
||||
{
|
||||
<template #actions>
|
||||
<v-icon class="handle">
|
||||
{{ $globals.icons.arrowUpDown }}
|
||||
</v-icon>
|
||||
<v-btn icon small class="ml-2">
|
||||
<v-icon>
|
||||
{{ $globals.icons.edit }}
|
||||
</v-icon>
|
||||
</v-btn>
|
||||
</template>
|
||||
</v-expansion-panel-header>
|
||||
<v-expansion-panel-content>
|
||||
<CookbookEditor :cookbook="cookbook" :actions="actions" :collapsable="false" @delete="deleteEventHandler" />
|
||||
<v-card-actions>
|
||||
<v-spacer></v-spacer>
|
||||
<BaseButtonGroup
|
||||
:buttons="[{
|
||||
icon: $globals.icons.delete,
|
||||
text: $tc('general.delete'),
|
||||
event: 'delete',
|
||||
@@ -78,26 +86,27 @@
|
||||
event: 'save',
|
||||
},
|
||||
]"
|
||||
@delete="actions.deleteOne(cookbook.id)"
|
||||
@save="actions.updateOne(cookbook)"
|
||||
/>
|
||||
</v-card-actions>
|
||||
</v-expansion-panel-content>
|
||||
</v-expansion-panel>
|
||||
</draggable>
|
||||
</v-expansion-panels>
|
||||
</v-container>
|
||||
@delete="deleteEventHandler(cookbook)"
|
||||
@save="actions.updateOne(cookbook)" />
|
||||
</v-card-actions>
|
||||
</v-expansion-panel-content>
|
||||
</v-expansion-panel>
|
||||
</draggable>
|
||||
</v-expansion-panels>
|
||||
</v-container>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, useRouter } from "@nuxtjs/composition-api";
|
||||
import { defineComponent, reactive, ref, useRouter } from "@nuxtjs/composition-api";
|
||||
import draggable from "vuedraggable";
|
||||
import { useCookbooks } from "@/composables/use-group-cookbooks";
|
||||
import { useLoggedInState } from "~/composables/use-logged-in-state";
|
||||
import RecipeOrganizerSelector from "~/components/Domain/Recipe/RecipeOrganizerSelector.vue";
|
||||
import CookbookEditor from "~/components/Domain/Cookbook/CookbookEditor.vue";
|
||||
import { ReadCookBook } from "~/lib/api/types/cookbook";
|
||||
|
||||
export default defineComponent({
|
||||
components: { draggable, RecipeOrganizerSelector },
|
||||
components: { CookbookEditor, draggable },
|
||||
setup() {
|
||||
const { isOwnGroup, loggedIn } = useLoggedInState();
|
||||
const router = useRouter();
|
||||
@@ -106,11 +115,50 @@ export default defineComponent({
|
||||
router.back();
|
||||
}
|
||||
|
||||
const dialogStates = reactive({
|
||||
create: false,
|
||||
delete: false,
|
||||
});
|
||||
|
||||
const { cookbooks, actions } = useCookbooks();
|
||||
|
||||
|
||||
// create
|
||||
const createTarget = ref<ReadCookBook | null>(null);
|
||||
async function createCookbook() {
|
||||
await actions.createOne().then((cookbook) => {
|
||||
createTarget.value = cookbook as ReadCookBook;
|
||||
});
|
||||
dialogStates.create = true;
|
||||
}
|
||||
|
||||
// delete
|
||||
const deleteTarget = ref<ReadCookBook | null>(null);
|
||||
function deleteEventHandler(item: ReadCookBook){
|
||||
deleteTarget.value = item;
|
||||
dialogStates.delete = true;
|
||||
}
|
||||
function deleteCookbook() {
|
||||
if (!deleteTarget.value) {
|
||||
return;
|
||||
}
|
||||
actions.deleteOne(deleteTarget.value.id);
|
||||
dialogStates.delete = false;
|
||||
deleteTarget.value = null;
|
||||
}
|
||||
|
||||
return {
|
||||
cookbooks,
|
||||
actions,
|
||||
dialogStates,
|
||||
// create
|
||||
createTarget,
|
||||
createCookbook,
|
||||
|
||||
// delete
|
||||
deleteTarget,
|
||||
deleteEventHandler,
|
||||
deleteCookbook,
|
||||
};
|
||||
},
|
||||
head() {
|
||||
|
||||
@@ -49,15 +49,41 @@
|
||||
</v-card-text>
|
||||
</BaseDialog>
|
||||
|
||||
<!-- Bulk Delete Dialog -->
|
||||
<BaseDialog
|
||||
v-model="state.bulkDeleteDialog"
|
||||
width="650px"
|
||||
:title="$tc('general.confirm')"
|
||||
:icon="$globals.icons.alertCircle"
|
||||
color="error"
|
||||
@confirm="deleteSelected"
|
||||
>
|
||||
<v-card-text>
|
||||
<p class="h4">{{ $t('general.confirm-delete-generic-items') }}</p>
|
||||
<v-card outlined>
|
||||
<v-virtual-scroll height="400" item-height="25" :items="bulkDeleteTarget">
|
||||
<template #default="{ item }">
|
||||
<v-list-item class="pb-2">
|
||||
<v-list-item-content>
|
||||
<v-list-item-title>{{ item.name }}</v-list-item-title>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
</template>
|
||||
</v-virtual-scroll>
|
||||
</v-card>
|
||||
</v-card-text>
|
||||
</BaseDialog>
|
||||
|
||||
<!-- Data Table -->
|
||||
<BaseCardSectionTitle :icon="$globals.icons.categories" section :title="$tc('data-pages.categories.category-data')"> </BaseCardSectionTitle>
|
||||
<CrudTable
|
||||
:table-config="tableConfig"
|
||||
:headers.sync="tableHeaders"
|
||||
:data="categories || []"
|
||||
:bulk-actions="[]"
|
||||
:bulk-actions="[{icon: $globals.icons.delete, text: $tc('general.delete'), event: 'delete-selected'}]"
|
||||
@delete-one="deleteEventHandler"
|
||||
@edit-one="editEventHandler"
|
||||
@delete-selected="bulkDeleteEventHandler"
|
||||
>
|
||||
<template #button-row>
|
||||
<BaseButton create @click="state.createDialog = true">{{ $t("general.create") }}</BaseButton>
|
||||
@@ -96,6 +122,7 @@ export default defineComponent({
|
||||
createDialog: false,
|
||||
editDialog: false,
|
||||
deleteDialog: false,
|
||||
bulkDeleteDialog: false,
|
||||
});
|
||||
const categoryData = useCategoryData();
|
||||
const categoryStore = useCategoryStore();
|
||||
@@ -149,6 +176,24 @@ export default defineComponent({
|
||||
state.deleteDialog = false;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// Bulk Delete Category
|
||||
const bulkDeleteTarget = ref<RecipeCategory[]>([]);
|
||||
function bulkDeleteEventHandler(selection: RecipeCategory[]) {
|
||||
bulkDeleteTarget.value = selection;
|
||||
state.bulkDeleteDialog = true;
|
||||
}
|
||||
|
||||
async function deleteSelected() {
|
||||
for (const item of bulkDeleteTarget.value) {
|
||||
if (!item.id) {
|
||||
continue;
|
||||
}
|
||||
await categoryStore.actions.deleteOne(item.id);
|
||||
}
|
||||
bulkDeleteTarget.value = [];
|
||||
}
|
||||
|
||||
return {
|
||||
state,
|
||||
tableConfig,
|
||||
@@ -168,7 +213,12 @@ export default defineComponent({
|
||||
// delete
|
||||
deleteTarget,
|
||||
deleteEventHandler,
|
||||
deleteCategory
|
||||
deleteCategory,
|
||||
|
||||
// bulk delete
|
||||
bulkDeleteTarget,
|
||||
bulkDeleteEventHandler,
|
||||
deleteSelected,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
@@ -155,16 +155,42 @@
|
||||
</v-card-text>
|
||||
</BaseDialog>
|
||||
|
||||
<!-- Bulk Delete Dialog -->
|
||||
<BaseDialog
|
||||
v-model="bulkDeleteDialog"
|
||||
width="650px"
|
||||
:title="$tc('general.confirm')"
|
||||
:icon="$globals.icons.alertCircle"
|
||||
color="error"
|
||||
@confirm="deleteSelected"
|
||||
>
|
||||
<v-card-text>
|
||||
<p class="h4">{{ $t('general.confirm-delete-generic-items') }}</p>
|
||||
<v-card outlined>
|
||||
<v-virtual-scroll height="400" item-height="25" :items="bulkDeleteTarget">
|
||||
<template #default="{ item }">
|
||||
<v-list-item class="pb-2">
|
||||
<v-list-item-content>
|
||||
<v-list-item-title>{{ item.name }}</v-list-item-title>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
</template>
|
||||
</v-virtual-scroll>
|
||||
</v-card>
|
||||
</v-card-text>
|
||||
</BaseDialog>
|
||||
|
||||
<!-- Data Table -->
|
||||
<BaseCardSectionTitle :icon="$globals.icons.foods" section :title="$tc('data-pages.foods.food-data')"> </BaseCardSectionTitle>
|
||||
<CrudTable
|
||||
:table-config="tableConfig"
|
||||
:headers.sync="tableHeaders"
|
||||
:data="foods || []"
|
||||
:bulk-actions="[]"
|
||||
:bulk-actions="[{icon: $globals.icons.delete, text: $tc('general.delete'), event: 'delete-selected'}]"
|
||||
@delete-one="deleteEventHandler"
|
||||
@edit-one="editEventHandler"
|
||||
@create-one="createEventHandler"
|
||||
@delete-selected="bulkDeleteEventHandler"
|
||||
>
|
||||
<template #button-row>
|
||||
<BaseButton create @click="createDialog = true" />
|
||||
@@ -306,6 +332,21 @@ export default defineComponent({
|
||||
deleteDialog.value = false;
|
||||
}
|
||||
|
||||
const bulkDeleteDialog = ref(false);
|
||||
const bulkDeleteTarget = ref<IngredientFood[]>([]);
|
||||
|
||||
function bulkDeleteEventHandler(selection: IngredientFood[]) {
|
||||
bulkDeleteTarget.value = selection;
|
||||
bulkDeleteDialog.value = true;
|
||||
}
|
||||
|
||||
async function deleteSelected() {
|
||||
for (const item of bulkDeleteTarget.value) {
|
||||
await foodStore.actions.deleteOne(item.id);
|
||||
}
|
||||
bulkDeleteTarget.value = [];
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// Alias Manager
|
||||
|
||||
@@ -396,6 +437,10 @@ export default defineComponent({
|
||||
deleteDialog,
|
||||
deleteFood,
|
||||
deleteTarget,
|
||||
bulkDeleteDialog,
|
||||
bulkDeleteTarget,
|
||||
bulkDeleteEventHandler,
|
||||
deleteSelected,
|
||||
// Alias Manager
|
||||
aliasManagerDialog,
|
||||
aliasManagerEventHandler,
|
||||
|
||||
@@ -45,6 +45,31 @@
|
||||
</v-card-text>
|
||||
</BaseDialog>
|
||||
|
||||
<!-- Bulk Delete Dialog -->
|
||||
<BaseDialog
|
||||
v-model="state.bulkDeleteDialog"
|
||||
width="650px"
|
||||
:title="$tc('general.confirm')"
|
||||
:icon="$globals.icons.alertCircle"
|
||||
color="error"
|
||||
@confirm="deleteSelected"
|
||||
>
|
||||
<v-card-text>
|
||||
<p class="h4">{{ $t('general.confirm-delete-generic-items') }}</p>
|
||||
<v-card outlined>
|
||||
<v-virtual-scroll height="400" item-height="25" :items="bulkDeleteTarget">
|
||||
<template #default="{ item }">
|
||||
<v-list-item class="pb-2">
|
||||
<v-list-item-content>
|
||||
<v-list-item-title>{{ item.name }}</v-list-item-title>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
</template>
|
||||
</v-virtual-scroll>
|
||||
</v-card>
|
||||
</v-card-text>
|
||||
</BaseDialog>
|
||||
|
||||
<!-- Seed Dialog-->
|
||||
<BaseDialog
|
||||
v-model="seedDialog"
|
||||
@@ -88,9 +113,10 @@
|
||||
:table-config="tableConfig"
|
||||
:headers.sync="tableHeaders"
|
||||
:data="labels || []"
|
||||
:bulk-actions="[]"
|
||||
:bulk-actions="[{icon: $globals.icons.delete, text: $tc('general.delete'), event: 'delete-selected'}]"
|
||||
@delete-one="deleteEventHandler"
|
||||
@edit-one="editEventHandler"
|
||||
@delete-selected="bulkDeleteEventHandler"
|
||||
>
|
||||
<template #button-row>
|
||||
<BaseButton create @click="state.createDialog = true">{{ $t("general.create") }}</BaseButton>
|
||||
@@ -146,6 +172,7 @@ export default defineComponent({
|
||||
createDialog: false,
|
||||
editDialog: false,
|
||||
deleteDialog: false,
|
||||
bulkDeleteDialog: false,
|
||||
});
|
||||
|
||||
// ============================================================
|
||||
@@ -179,6 +206,21 @@ export default defineComponent({
|
||||
state.deleteDialog = false;
|
||||
}
|
||||
|
||||
// Bulk Delete
|
||||
const bulkDeleteTarget = ref<MultiPurposeLabelSummary[]>([]);
|
||||
|
||||
function bulkDeleteEventHandler(selection: MultiPurposeLabelSummary[]) {
|
||||
bulkDeleteTarget.value = selection;
|
||||
state.bulkDeleteDialog = true;
|
||||
}
|
||||
|
||||
async function deleteSelected() {
|
||||
for (const item of bulkDeleteTarget.value) {
|
||||
await labelStore.actions.deleteOne(item.id);
|
||||
}
|
||||
bulkDeleteTarget.value = [];
|
||||
}
|
||||
|
||||
// Edit
|
||||
|
||||
const editLabel = ref<MultiPurposeLabelSummary | null>(null);
|
||||
@@ -244,6 +286,9 @@ export default defineComponent({
|
||||
deleteEventHandler,
|
||||
deleteLabel,
|
||||
deleteTarget,
|
||||
bulkDeleteEventHandler,
|
||||
deleteSelected,
|
||||
bulkDeleteTarget,
|
||||
|
||||
// Seed
|
||||
seedDatabase,
|
||||
|
||||
@@ -49,15 +49,41 @@
|
||||
</v-card-text>
|
||||
</BaseDialog>
|
||||
|
||||
<!-- Bulk Delete Dialog -->
|
||||
<BaseDialog
|
||||
v-model="state.bulkDeleteDialog"
|
||||
width="650px"
|
||||
:title="$tc('general.confirm')"
|
||||
:icon="$globals.icons.alertCircle"
|
||||
color="error"
|
||||
@confirm="deleteSelected"
|
||||
>
|
||||
<v-card-text>
|
||||
<p class="h4">{{ $t('general.confirm-delete-generic-items') }}</p>
|
||||
<v-card outlined>
|
||||
<v-virtual-scroll height="400" item-height="25" :items="bulkDeleteTarget">
|
||||
<template #default="{ item }">
|
||||
<v-list-item class="pb-2">
|
||||
<v-list-item-content>
|
||||
<v-list-item-title>{{ item.name }}</v-list-item-title>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
</template>
|
||||
</v-virtual-scroll>
|
||||
</v-card>
|
||||
</v-card-text>
|
||||
</BaseDialog>
|
||||
|
||||
<!-- Data Table -->
|
||||
<BaseCardSectionTitle :icon="$globals.icons.tags" section :title="$tc('data-pages.tags.tag-data')"> </BaseCardSectionTitle>
|
||||
<CrudTable
|
||||
:table-config="tableConfig"
|
||||
:headers.sync="tableHeaders"
|
||||
:data="tags || []"
|
||||
:bulk-actions="[]"
|
||||
:bulk-actions="[{icon: $globals.icons.delete, text: $tc('general.delete'), event: 'delete-selected'}]"
|
||||
@delete-one="deleteEventHandler"
|
||||
@edit-one="editEventHandler"
|
||||
@delete-selected="bulkDeleteEventHandler"
|
||||
>
|
||||
<template #button-row>
|
||||
<BaseButton create @click="state.createDialog = true">{{ $t("general.create") }}</BaseButton>
|
||||
@@ -96,6 +122,7 @@ export default defineComponent({
|
||||
createDialog: false,
|
||||
editDialog: false,
|
||||
deleteDialog: false,
|
||||
bulkDeleteDialog: false,
|
||||
});
|
||||
|
||||
const tagData = useTagData();
|
||||
@@ -150,6 +177,24 @@ export default defineComponent({
|
||||
state.deleteDialog = false;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// Bulk Delete Tag
|
||||
const bulkDeleteTarget = ref<RecipeTag[]>([]);
|
||||
function bulkDeleteEventHandler(selection: RecipeTag[]) {
|
||||
bulkDeleteTarget.value = selection;
|
||||
state.bulkDeleteDialog = true;
|
||||
}
|
||||
|
||||
async function deleteSelected() {
|
||||
for (const item of bulkDeleteTarget.value) {
|
||||
if (!item.id) {
|
||||
continue;
|
||||
}
|
||||
await tagStore.actions.deleteOne(item.id);
|
||||
}
|
||||
bulkDeleteTarget.value = [];
|
||||
}
|
||||
|
||||
return {
|
||||
state,
|
||||
tableConfig,
|
||||
@@ -169,7 +214,12 @@ export default defineComponent({
|
||||
// delete
|
||||
deleteTarget,
|
||||
deleteEventHandler,
|
||||
deleteTag
|
||||
deleteTag,
|
||||
|
||||
// bulk delete
|
||||
bulkDeleteTarget,
|
||||
bulkDeleteEventHandler,
|
||||
deleteSelected,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
@@ -51,15 +51,41 @@
|
||||
</v-card-text>
|
||||
</BaseDialog>
|
||||
|
||||
<!-- Bulk Delete Dialog -->
|
||||
<BaseDialog
|
||||
v-model="state.bulkDeleteDialog"
|
||||
width="650px"
|
||||
:title="$tc('general.confirm')"
|
||||
:icon="$globals.icons.alertCircle"
|
||||
color="error"
|
||||
@confirm="deleteSelected"
|
||||
>
|
||||
<v-card-text>
|
||||
<p class="h4">{{ $t('general.confirm-delete-generic-items') }}</p>
|
||||
<v-card outlined>
|
||||
<v-virtual-scroll height="400" item-height="25" :items="bulkDeleteTarget">
|
||||
<template #default="{ item }">
|
||||
<v-list-item class="pb-2">
|
||||
<v-list-item-content>
|
||||
<v-list-item-title>{{ item.name }}</v-list-item-title>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
</template>
|
||||
</v-virtual-scroll>
|
||||
</v-card>
|
||||
</v-card-text>
|
||||
</BaseDialog>
|
||||
|
||||
<!-- Data Table -->
|
||||
<BaseCardSectionTitle :icon="$globals.icons.potSteam" section :title="$tc('data-pages.tools.tool-data')"> </BaseCardSectionTitle>
|
||||
<CrudTable
|
||||
:table-config="tableConfig"
|
||||
:headers.sync="tableHeaders"
|
||||
:data="tools || []"
|
||||
:bulk-actions="[]"
|
||||
:bulk-actions="[{icon: $globals.icons.delete, text: $tc('general.delete'), event: 'delete-selected'}]"
|
||||
@delete-one="deleteEventHandler"
|
||||
@edit-one="editEventHandler"
|
||||
@delete-selected="bulkDeleteEventHandler"
|
||||
>
|
||||
<template #button-row>
|
||||
<BaseButton create @click="state.createDialog = true">{{ $t("general.create") }}</BaseButton>
|
||||
@@ -108,6 +134,7 @@ export default defineComponent({
|
||||
createDialog: false,
|
||||
editDialog: false,
|
||||
deleteDialog: false,
|
||||
bulkDeleteDialog: false,
|
||||
});
|
||||
|
||||
const toolData = useToolData();
|
||||
@@ -162,6 +189,22 @@ export default defineComponent({
|
||||
state.deleteDialog = false;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// Bulk Delete Tag
|
||||
|
||||
const bulkDeleteTarget = ref<RecipeTool[]>([]);
|
||||
function bulkDeleteEventHandler(selection: RecipeTool[]) {
|
||||
bulkDeleteTarget.value = selection;
|
||||
state.bulkDeleteDialog = true;
|
||||
}
|
||||
|
||||
async function deleteSelected() {
|
||||
for (const item of bulkDeleteTarget.value) {
|
||||
await toolStore.actions.deleteOne(item.id);
|
||||
}
|
||||
bulkDeleteTarget.value = [];
|
||||
}
|
||||
|
||||
return {
|
||||
state,
|
||||
tableConfig,
|
||||
@@ -181,7 +224,12 @@ export default defineComponent({
|
||||
// delete
|
||||
deleteTarget,
|
||||
deleteEventHandler,
|
||||
deleteTool
|
||||
deleteTool,
|
||||
|
||||
// bulk delete
|
||||
bulkDeleteTarget,
|
||||
bulkDeleteEventHandler,
|
||||
deleteSelected,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
@@ -129,6 +129,31 @@
|
||||
</v-card-text>
|
||||
</BaseDialog>
|
||||
|
||||
<!-- Bulk Delete Dialog -->
|
||||
<BaseDialog
|
||||
v-model="bulkDeleteDialog"
|
||||
width="650px"
|
||||
:title="$tc('general.confirm')"
|
||||
:icon="$globals.icons.alertCircle"
|
||||
color="error"
|
||||
@confirm="deleteSelected"
|
||||
>
|
||||
<v-card-text>
|
||||
<p class="h4">{{ $t('general.confirm-delete-generic-items') }}</p>
|
||||
<v-card outlined>
|
||||
<v-virtual-scroll height="400" item-height="25" :items="bulkDeleteTarget">
|
||||
<template #default="{ item }">
|
||||
<v-list-item class="pb-2">
|
||||
<v-list-item-content>
|
||||
<v-list-item-title>{{ item.name }}</v-list-item-title>
|
||||
</v-list-item-content>
|
||||
</v-list-item>
|
||||
</template>
|
||||
</v-virtual-scroll>
|
||||
</v-card>
|
||||
</v-card-text>
|
||||
</BaseDialog>
|
||||
|
||||
<!-- Seed Dialog-->
|
||||
<BaseDialog
|
||||
v-model="seedDialog"
|
||||
@@ -172,10 +197,11 @@
|
||||
:table-config="tableConfig"
|
||||
:headers.sync="tableHeaders"
|
||||
:data="units || []"
|
||||
:bulk-actions="[]"
|
||||
:bulk-actions="[{icon: $globals.icons.delete, text: $tc('general.delete'), event: 'delete-selected'}]"
|
||||
@delete-one="deleteEventHandler"
|
||||
@edit-one="editEventHandler"
|
||||
@create-one="createEventHandler"
|
||||
@delete-selected="bulkDeleteEventHandler"
|
||||
>
|
||||
<template #button-row>
|
||||
<BaseButton create @click="createDialog = true" />
|
||||
@@ -339,6 +365,22 @@ export default defineComponent({
|
||||
deleteDialog.value = false;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// Bulk Delete Units
|
||||
const bulkDeleteDialog = ref(false);
|
||||
const bulkDeleteTarget = ref<IngredientUnit[]>([]);
|
||||
function bulkDeleteEventHandler(selection: IngredientUnit[]) {
|
||||
bulkDeleteTarget.value = selection;
|
||||
bulkDeleteDialog.value = true;
|
||||
}
|
||||
|
||||
async function deleteSelected() {
|
||||
for (const item of bulkDeleteTarget.value) {
|
||||
await unitActions.deleteOne(item.id);
|
||||
}
|
||||
bulkDeleteTarget.value = [];
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// Alias Manager
|
||||
|
||||
@@ -423,6 +465,11 @@ export default defineComponent({
|
||||
deleteDialog,
|
||||
deleteUnit,
|
||||
deleteTarget,
|
||||
// Bulk Delete
|
||||
bulkDeleteDialog,
|
||||
bulkDeleteEventHandler,
|
||||
bulkDeleteTarget,
|
||||
deleteSelected,
|
||||
// Alias Manager
|
||||
aliasManagerDialog,
|
||||
aliasManagerEventHandler,
|
||||
|
||||
@@ -4,17 +4,28 @@
|
||||
|
||||
<script lang="ts">
|
||||
import { computed, defineComponent, useContext, useRouter } from "@nuxtjs/composition-api";
|
||||
import { AppInfo } from "~/lib/api/types/admin";
|
||||
|
||||
export default defineComponent({
|
||||
layout: "blank",
|
||||
setup() {
|
||||
const { $auth } = useContext();
|
||||
const { $auth, $axios } = useContext();
|
||||
const router = useRouter();
|
||||
const groupSlug = computed(() => $auth.user?.groupSlug);
|
||||
|
||||
async function redirectPublicUserToDefaultGroup() {
|
||||
const { data } = await $axios.get<AppInfo>("/api/app/about");
|
||||
if (data?.defaultGroupSlug) {
|
||||
router.push(`/g/${data.defaultGroupSlug}`);
|
||||
} else {
|
||||
router.push("/login");
|
||||
}
|
||||
}
|
||||
|
||||
if (groupSlug.value) {
|
||||
router.push(`/g/${groupSlug.value}`);
|
||||
} else {
|
||||
router.push("/login");
|
||||
redirectPublicUserToDefaultGroup();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
<template>
|
||||
<div></div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent } from "@nuxtjs/composition-api";
|
||||
|
||||
export default defineComponent({
|
||||
setup() {
|
||||
return {};
|
||||
},
|
||||
head() {
|
||||
return {
|
||||
title: this.$t("settings.profile") as string,
|
||||
};
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
@@ -7,11 +7,9 @@ from mealie.core.config import get_app_settings
|
||||
|
||||
|
||||
class Hasher(Protocol):
|
||||
def hash(self, password: str) -> str:
|
||||
...
|
||||
def hash(self, password: str) -> str: ...
|
||||
|
||||
def verify(self, password: str, hashed: str) -> bool:
|
||||
...
|
||||
def verify(self, password: str, hashed: str) -> bool: ...
|
||||
|
||||
|
||||
class FakeHasher:
|
||||
|
||||
@@ -18,8 +18,7 @@ ALGORITHM = "HS256"
|
||||
logger = root_logger.get_logger("security")
|
||||
|
||||
|
||||
class UserLockedOut(Exception):
|
||||
...
|
||||
class UserLockedOut(Exception): ...
|
||||
|
||||
|
||||
def create_access_token(data: dict, expires_delta: timedelta | None = None) -> str:
|
||||
|
||||
@@ -7,13 +7,11 @@ from pydantic import BaseModel, BaseSettings, PostgresDsn
|
||||
class AbstractDBProvider(ABC):
|
||||
@property
|
||||
@abstractmethod
|
||||
def db_url(self) -> str:
|
||||
...
|
||||
def db_url(self) -> str: ...
|
||||
|
||||
@property
|
||||
@abstractmethod
|
||||
def db_url_public(self) -> str:
|
||||
...
|
||||
def db_url_public(self) -> str: ...
|
||||
|
||||
|
||||
class SQLiteProvider(AbstractDBProvider, BaseModel):
|
||||
|
||||
@@ -31,5 +31,4 @@ class GroupWebhooksModel(SqlAlchemyBase, BaseMixins):
|
||||
time: Mapped[str | None] = mapped_column(String, default="00:00")
|
||||
|
||||
@auto_init()
|
||||
def __init__(self, **_) -> None:
|
||||
...
|
||||
def __init__(self, **_) -> None: ...
|
||||
|
||||
@@ -31,5 +31,14 @@
|
||||
"generic-updated-with-url": "{name} is opgedateer, {url}",
|
||||
"generic-duplicated": "{name} is gekopieer",
|
||||
"generic-deleted": "{name} is verwyder"
|
||||
},
|
||||
"datetime": {
|
||||
"year": "year|years",
|
||||
"day": "day|days",
|
||||
"hour": "hour|hours",
|
||||
"minute": "minute|minutes",
|
||||
"second": "second|seconds",
|
||||
"millisecond": "millisecond|milliseconds",
|
||||
"microsecond": "microsecond|microseconds"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,5 +31,14 @@
|
||||
"generic-updated-with-url": "{name} تم تحديثه، {url}",
|
||||
"generic-duplicated": "تم تكرار {name}",
|
||||
"generic-deleted": "تم حذف {name}"
|
||||
},
|
||||
"datetime": {
|
||||
"year": "year|years",
|
||||
"day": "day|days",
|
||||
"hour": "hour|hours",
|
||||
"minute": "minute|minutes",
|
||||
"second": "second|seconds",
|
||||
"millisecond": "millisecond|milliseconds",
|
||||
"microsecond": "microsecond|microseconds"
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user