Merge branch 'mealie-next' into mealie_messages_image

This commit is contained in:
Kuchenpirat 2025-02-25 12:52:23 +01:00 committed by GitHub
commit f54ff4f27d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
309 changed files with 14623 additions and 7457 deletions

View file

@ -6,7 +6,7 @@
.idea .idea
.vscode .vscode
__pycache__/ **/__pycache__/
*.py[cod] *.py[cod]
*$py.class *$py.class
*.so *.so
@ -25,9 +25,11 @@ venv
*/node_modules */node_modules
*/dist */dist
/dist/
*/data/db */data/db
*/mealie/test */mealie/test
*/mealie/.temp */mealie/.temp
/mealie/frontend/
model.crfmodel model.crfmodel

View file

@ -20,20 +20,6 @@
--> -->
## What type of PR is this?
_(REQUIRED)_
<!--
Delete any of the following that do not apply:
-->
- feature
- bug
- documentation
- cleanup
- dev (Internal development)
## What this PR does / why we need it: ## What this PR does / why we need it:
_(REQUIRED)_ _(REQUIRED)_

View file

@ -3,8 +3,15 @@ on:
workflow_call: workflow_call:
jobs: jobs:
build-package:
name: "Build Python package"
uses: ./.github/workflows/partial-package.yml
with:
tag: e2e
test: test:
timeout-minutes: 60 timeout-minutes: 60
needs: build-package
runs-on: ubuntu-latest runs-on: ubuntu-latest
defaults: defaults:
run: run:
@ -18,11 +25,18 @@ jobs:
cache-dependency-path: ./tests/e2e/yarn.lock cache-dependency-path: ./tests/e2e/yarn.lock
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v3
- name: Retrieve Python package
uses: actions/download-artifact@v4
with:
name: backend-dist
path: dist
- name: Build Image - name: Build Image
uses: docker/build-push-action@v5 uses: docker/build-push-action@v5
with: with:
file: ./docker/Dockerfile file: ./docker/Dockerfile
context: . context: .
build-contexts: |
packages=dist
push: false push: false
load: true load: true
tags: mealie:e2e tags: mealie:e2e

View file

@ -21,7 +21,7 @@ jobs:
uses: ./.github/workflows/partial-backend.yml uses: ./.github/workflows/partial-backend.yml
frontend-tests: frontend-tests:
name: "Frontend and End-to-End Tests" name: "Frontend Tests"
uses: ./.github/workflows/partial-frontend.yml uses: ./.github/workflows/partial-frontend.yml
build-release: build-release:

View file

@ -1,4 +1,4 @@
name: Backend Test/Lint name: Backend Lint and Test
on: on:
workflow_call: workflow_call:

View file

@ -16,7 +16,14 @@ on:
required: true required: true
jobs: jobs:
build-package:
name: "Build Python package"
uses: ./.github/workflows/partial-package.yml
with:
tag: ${{ inputs.tag }}
publish: publish:
needs: build-package
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout repository - name: Checkout repository
@ -35,18 +42,22 @@ jobs:
username: ${{ secrets.DOCKERHUB_USERNAME }} username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }} password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Override __init__.py
run: |
echo "__version__ = \"${{ inputs.tag }}\"" > ./mealie/__init__.py
- uses: depot/setup-action@v1 - uses: depot/setup-action@v1
- name: Retrieve Python package
uses: actions/download-artifact@v4
with:
name: backend-dist
path: dist
- name: Build and push Docker image, via Depot.dev - name: Build and push Docker image, via Depot.dev
uses: depot/build-push-action@v1 uses: depot/build-push-action@v1
with: with:
project: srzjb6mhzm project: srzjb6mhzm
file: ./docker/Dockerfile file: ./docker/Dockerfile
context: . context: .
build-contexts: |
packages=dist
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
push: true push: true
tags: | tags: |

View file

@ -1,4 +1,4 @@
name: Frontend Build/Lin name: Frontend Lint and Test
on: on:
workflow_call: workflow_call:
@ -41,37 +41,3 @@ jobs:
- name: Run tests 🧪 - name: Run tests 🧪
run: yarn test:ci run: yarn test:ci
working-directory: "frontend" working-directory: "frontend"
build:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎
uses: actions/checkout@v4
- name: Setup node env 🏗
uses: actions/setup-node@v4.0.0
with:
node-version: 16
check-latest: true
- name: Get yarn cache directory path 🛠
id: yarn-cache-dir-path
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
- name: Cache node_modules 📦
uses: actions/cache@v4
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install dependencies 👨🏻‍💻
run: yarn
working-directory: "frontend"
- name: Run Build 🚚
run: yarn build
working-directory: "frontend"

102
.github/workflows/partial-package.yml vendored Normal file
View file

@ -0,0 +1,102 @@
name: Package build
on:
workflow_call:
inputs:
tag:
required: true
type: string
jobs:
build-frontend:
name: Build frontend
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎
uses: actions/checkout@v4
- name: Setup node env 🏗
uses: actions/setup-node@v4.0.0
with:
node-version: 16
check-latest: true
- name: Get yarn cache directory path 🛠
id: yarn-cache-dir-path
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
- name: Cache node_modules 📦
uses: actions/cache@v4
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install dependencies 👨🏻‍💻
run: yarn
working-directory: "frontend"
- name: Run Build 🚚
run: yarn generate
working-directory: "frontend"
- name: Archive built frontend
uses: actions/upload-artifact@v4
with:
name: frontend-dist
path: frontend/dist
retention-days: 5
build-package:
name: Build Python package
needs: build-frontend
runs-on: ubuntu-latest
steps:
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Check out repository
uses: actions/checkout@v4
- name: Set up python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-create: true
virtualenvs-in-project: true
plugins: |
poetry-plugin-export
- name: Retrieve built frontend
uses: actions/download-artifact@v4
with:
name: frontend-dist
path: mealie/frontend
- name: Override __init__.py
run: |
echo "__version__ = \"${{ inputs.tag }}\"" > ./mealie/__init__.py
- name: Build package and requirements.txt
env:
SKIP_PACKAGE_DEPS: true
run: |
task py:package
- name: Archive built package
uses: actions/upload-artifact@v4
with:
name: backend-dist
path: dist
retention-days: 5

View file

@ -19,7 +19,7 @@ jobs:
uses: ./.github/workflows/partial-backend.yml uses: ./.github/workflows/partial-backend.yml
frontend-tests: frontend-tests:
name: "Frontend and End-to-End Tests" name: "Frontend Tests"
uses: ./.github/workflows/partial-frontend.yml uses: ./.github/workflows/partial-frontend.yml
container-scanning: container-scanning:

View file

@ -10,7 +10,7 @@ jobs:
uses: ./.github/workflows/partial-backend.yml uses: ./.github/workflows/partial-backend.yml
frontend-tests: frontend-tests:
name: "Frontend and End-to-End Tests" name: "Frontend Tests"
uses: ./.github/workflows/partial-frontend.yml uses: ./.github/workflows/partial-frontend.yml
build-release: build-release:

5
.gitignore vendored
View file

@ -52,7 +52,7 @@ pnpm-debug.log*
env/ env/
build/ build/
develop-eggs/ develop-eggs/
/dist/
downloads/ downloads/
eggs/ eggs/
.eggs/ .eggs/
@ -66,6 +66,9 @@ wheels/
.installed.cfg .installed.cfg
*.egg *.egg
# frontend copied into Python module for packaging purposes
/mealie/frontend/
# PyInstaller # PyInstaller
# Usually these files are written by a python script from a template # Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it. # before PyInstaller builds the exe, so as to inject date/other infos into it.

View file

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

View file

@ -60,5 +60,9 @@
}, },
"[vue]": { "[vue]": {
"editor.formatOnSave": false "editor.formatOnSave": false
},
"[python]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "charliermarsh.ruff"
} }
} }

View file

@ -41,14 +41,25 @@ tasks:
setup:ui: setup:ui:
desc: setup frontend dependencies desc: setup frontend dependencies
dir: frontend dir: frontend
run: once
cmds: cmds:
- yarn install - yarn install
sources:
- package.json
- yarn.lock
generates:
- node_modules/**
setup:py: setup:py:
desc: setup python dependencies desc: setup python dependencies
run: once
cmds: cmds:
- poetry install --with main,dev,postgres - poetry install --with main,dev,postgres
- poetry run pre-commit install - poetry run pre-commit install
sources:
- poetry.lock
- pyproject.toml
- .pre-commit-config.yaml
setup:model: setup:model:
desc: setup nlp model desc: setup nlp model
@ -131,6 +142,63 @@ tasks:
- poetry run coverage html - poetry run coverage html
- open htmlcov/index.html - open htmlcov/index.html
py:package:copy-frontend:
desc: copy the frontend files into the Python package
internal: true
deps:
- ui:generate
cmds:
- rm -rf mealie/frontend
- cp -a frontend/dist mealie/frontend
sources:
- frontend/dist/**
generates:
- mealie/frontend/**
py:package:generate-requirements:
desc: Generate requirements file to pin all packages, effectively a "pip freeze" before installation begins
internal: true
cmds:
- poetry export -n --only=main --extras=pgsql --output=dist/requirements.txt
# Include mealie in the requirements, hashing the package that was just built to ensure it's the one installed
- echo "mealie[pgsql]=={{.MEALIE_VERSION}} \\" >> dist/requirements.txt
- poetry run pip hash dist/mealie-{{.MEALIE_VERSION}}-py3-none-any.whl | tail -n1 | tr -d '\n' >> dist/requirements.txt
- echo " \\" >> dist/requirements.txt
- poetry run pip hash dist/mealie-{{.MEALIE_VERSION}}.tar.gz | tail -n1 >> dist/requirements.txt
vars:
MEALIE_VERSION:
sh: poetry version --short
sources:
- poetry.lock
- pyproject.toml
- dist/mealie-*.whl
- dist/mealie-*.tar.gz
generates:
- dist/requirements.txt
py:package:deps-parallel:
desc: Run py:package dependencies in parallel
internal: true
deps:
- setup:py
- py:package:copy-frontend
py:package:deps:
desc: Dependencies of py:package, skippable by setting SKIP_PACKAGE_DEPS=true
internal: true
cmds:
- task: py:package:deps-parallel
status:
- '{{ .SKIP_PACKAGE_DEPS | default "false"}}'
py:package:
desc: builds Python packages (sdist and wheel) in top-level dist directory
deps:
- py:package:deps
cmds:
- poetry build -n --output=dist
- task: py:package:generate-requirements
py: py:
desc: runs the backend server desc: runs the backend server
cmds: cmds:
@ -160,6 +228,14 @@ tasks:
cmds: cmds:
- yarn build - yarn build
ui:generate:
desc: generates a static version of the frontend in frontend/dist
dir: frontend
deps:
- setup:ui
cmds:
- yarn generate
ui:lint: ui:lint:
desc: runs the frontend linter desc: runs the frontend linter
dir: frontend dir: frontend
@ -184,6 +260,16 @@ tasks:
cmds: cmds:
- yarn run dev - yarn run dev
docker:build-from-package:
desc: Builds the Docker image from the existing Python package in dist/
deps:
- py:package
cmds:
- docker build --tag mealie:dev --file docker/Dockerfile --build-arg COMMIT={{.GIT_COMMIT}} --build-context packages=dist .
vars:
GIT_COMMIT:
sh: git rev-parse HEAD
docker:prod: docker:prod:
desc: builds and runs the production docker image locally desc: builds and runs the production docker image locally
dir: docker dir: docker

View file

@ -1,8 +1,11 @@
FROM node:16 as builder ###############################################
# Frontend Build
###############################################
FROM node:16 AS frontend-builder
WORKDIR /app WORKDIR /frontend
COPY ./frontend . COPY frontend .
RUN yarn install \ RUN yarn install \
--prefer-offline \ --prefer-offline \
@ -26,14 +29,10 @@ ENV PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=off \ PIP_NO_CACHE_DIR=off \
PIP_DISABLE_PIP_VERSION_CHECK=on \ PIP_DISABLE_PIP_VERSION_CHECK=on \
PIP_DEFAULT_TIMEOUT=100 \ PIP_DEFAULT_TIMEOUT=100 \
POETRY_HOME="/opt/poetry" \ VENV_PATH="/opt/mealie"
POETRY_VIRTUALENVS_IN_PROJECT=true \
POETRY_NO_INTERACTION=1 \
PYSETUP_PATH="/opt/pysetup" \
VENV_PATH="/opt/pysetup/.venv"
# prepend poetry and venv to path # prepend venv to path
ENV PATH="$POETRY_HOME/bin:$VENV_PATH/bin:$PATH" ENV PATH="$VENV_PATH/bin:$PATH"
# create user account # create user account
RUN useradd -u 911 -U -d $MEALIE_HOME -s /bin/bash abc \ RUN useradd -u 911 -U -d $MEALIE_HOME -s /bin/bash abc \
@ -41,31 +40,81 @@ RUN useradd -u 911 -U -d $MEALIE_HOME -s /bin/bash abc \
&& mkdir $MEALIE_HOME && mkdir $MEALIE_HOME
############################################### ###############################################
# Builder Image # Backend Package Build
############################################### ###############################################
FROM python-base as builder-base FROM python-base AS backend-builder
RUN apt-get update \ RUN apt-get update \
&& apt-get install --no-install-recommends -y \ && apt-get install --no-install-recommends -y \
curl \ curl \
&& rm -rf /var/lib/apt/lists/*
ENV POETRY_HOME="/opt/poetry" \
POETRY_NO_INTERACTION=1
# prepend poetry to path
ENV PATH="$POETRY_HOME/bin:$PATH"
# install poetry - respects $POETRY_VERSION & $POETRY_HOME
ENV POETRY_VERSION=2.0.1
RUN curl -sSL https://install.python-poetry.org | python3 -
# install poetry plugins needed to build the package
RUN poetry self add "poetry-plugin-export>=1.9"
WORKDIR /mealie
# copy project files here to ensure they will be cached.
COPY poetry.lock pyproject.toml ./
COPY mealie ./mealie
# Copy frontend to package it into the wheel
COPY --from=frontend-builder /frontend/dist ./mealie/frontend
# Build the source and binary package
RUN poetry build --output=dist
# Create the requirements file, which is used to install the built package and
# its pinned dependencies later. mealie is included to ensure the built one is
# what's installed.
RUN export MEALIE_VERSION=$(poetry version --short) \
&& poetry export --only=main --extras=pgsql --output=dist/requirements.txt \
&& echo "mealie[pgsql]==$MEALIE_VERSION \\" >> dist/requirements.txt \
&& poetry run pip hash dist/mealie-$MEALIE_VERSION-py3-none-any.whl | tail -n1 | tr -d '\n' >> dist/requirements.txt \
&& echo " \\" >> dist/requirements.txt \
&& poetry run pip hash dist/mealie-$MEALIE_VERSION.tar.gz | tail -n1 >> dist/requirements.txt
###############################################
# Package Container
# Only role is to hold the packages, or be overriden by a --build-context flag.
###############################################
FROM scratch AS packages
COPY --from=backend-builder /mealie/dist /
###############################################
# Python Virtual Environment Build
###############################################
# Install packages required to build the venv, in parallel to building the wheel
FROM python-base AS venv-builder-base
RUN apt-get update \
&& apt-get install --no-install-recommends -y \
build-essential \ build-essential \
libpq-dev \ libpq-dev \
libwebp-dev \ libwebp-dev \
# LDAP Dependencies # LDAP Dependencies
libsasl2-dev libldap2-dev libssl-dev \ libsasl2-dev libldap2-dev libssl-dev \
gnupg gnupg2 gnupg1 \ gnupg gnupg2 gnupg1 \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/*
&& pip install -U --no-cache-dir pip RUN python3 -m venv --upgrade-deps $VENV_PATH
# install poetry - respects $POETRY_VERSION & $POETRY_HOME # Install the wheel and all dependencies into the venv
ENV POETRY_VERSION=1.3.1 FROM venv-builder-base AS venv-builder
RUN curl -sSL https://install.python-poetry.org | python3 -
# copy project requirement files here to ensure they will be cached. # Copy built package (wheel) and its dependency requirements
WORKDIR $PYSETUP_PATH COPY --from=packages * /dist/
COPY ./poetry.lock ./pyproject.toml ./
# install runtime deps - uses $POETRY_VIRTUALENVS_IN_PROJECT internally # Install the wheel with exact versions of dependencies into the venv
RUN poetry install -E pgsql --only main RUN . $VENV_PATH/bin/activate \
&& pip install --require-hashes -r /dist/requirements.txt --find-links /dist
############################################### ###############################################
# CRFPP Image # CRFPP Image
@ -96,39 +145,25 @@ RUN apt-get update \
# create directory used for Docker Secrets # create directory used for Docker Secrets
RUN mkdir -p /run/secrets RUN mkdir -p /run/secrets
# copying poetry and venv into image # copy CRF++ and add it to the library path
COPY --from=builder-base $POETRY_HOME $POETRY_HOME
COPY --from=builder-base $PYSETUP_PATH $PYSETUP_PATH
ENV LD_LIBRARY_PATH=/usr/local/lib ENV LD_LIBRARY_PATH=/usr/local/lib
COPY --from=crfpp /usr/local/lib/ /usr/local/lib COPY --from=crfpp /usr/local/lib/ /usr/local/lib
COPY --from=crfpp /usr/local/bin/crf_learn /usr/local/bin/crf_learn COPY --from=crfpp /usr/local/bin/crf_learn /usr/local/bin/crf_learn
COPY --from=crfpp /usr/local/bin/crf_test /usr/local/bin/crf_test COPY --from=crfpp /usr/local/bin/crf_test /usr/local/bin/crf_test
# copy backend # Copy venv into image. It contains a fully-installed mealie backend and frontend.
COPY ./mealie $MEALIE_HOME/mealie COPY --from=venv-builder $VENV_PATH $VENV_PATH
COPY ./poetry.lock ./pyproject.toml $MEALIE_HOME/
# venv already has runtime deps installed we get a quicker install
WORKDIR $MEALIE_HOME
RUN . $VENV_PATH/bin/activate && poetry install -E pgsql --only main
WORKDIR /
# Grab CRF++ Model Release # Grab CRF++ Model Release
RUN python $MEALIE_HOME/mealie/scripts/install_model.py RUN python -m mealie.scripts.install_model
VOLUME [ "$MEALIE_HOME/data/" ] VOLUME [ "$MEALIE_HOME/data/" ]
ENV APP_PORT=9000 ENV APP_PORT=9000
EXPOSE ${APP_PORT} EXPOSE ${APP_PORT}
HEALTHCHECK CMD python $MEALIE_HOME/mealie/scripts/healthcheck.py || exit 1 HEALTHCHECK CMD python -m mealie.scripts.healthcheck || exit 1
# ----------------------------------
# Copy Frontend
ENV STATIC_FILES=/spa/static
COPY --from=builder /app/dist ${STATIC_FILES}
ENV HOST 0.0.0.0 ENV HOST 0.0.0.0

View file

@ -32,13 +32,51 @@ init() {
cd /app cd /app
# Activate our virtual environment here # Activate our virtual environment here
. /opt/pysetup/.venv/bin/activate . /opt/mealie/bin/activate
}
load_secrets() {
# Each of these environment variables will support a `_FILE` suffix that allows
# for setting the environment variable through the Docker Compose secret
# pattern.
local -a secret_supported_vars=(
"POSTGRES_USER"
"POSTGRES_PASSWORD"
"POSTGRES_SERVER"
"POSTGRES_PORT"
"POSTGRES_DB"
"POSTGRES_URL_OVERRIDE"
"SMTP_HOST"
"SMTP_PORT"
"SMTP_USER"
"SMTP_PASSWORD"
"LDAP_SERVER_URL"
"LDAP_QUERY_PASSWORD"
"OIDC_CONFIGURATION_URL"
"OIDC_CLIENT_ID"
"OIDC_CLIENT_SECRET"
"OPENAI_BASE_URL"
"OPENAI_API_KEY"
)
# If any secrets are set, prefer them over base environment variables.
for var in "${secret_supported_vars[@]}"; do
file_var="${var}_FILE"
if [ -n "${!file_var}" ]; then
export "$var=$(<"${!file_var}")"
fi
done
} }
change_user change_user
init init
load_secrets
# Start API # Start API
HOST_IP=`/sbin/ip route|awk '/default/ { print $3 }'` HOST_IP=`/sbin/ip route|awk '/default/ { print $3 }'`
exec python /app/mealie/main.py exec mealie

View file

@ -0,0 +1,40 @@
# Building Packages
Released packages are [built and published via GitHub actions](maintainers.md#drafting-releases).
## Python packages
To build Python packages locally for testing, use [`task`](starting-dev-server.md#without-dev-containers). After installing `task`, run `task py:package` to perform all the steps needed to build the package and a requirements file. To do it manually, run:
```sh
pushd frontend
yarnpkg install
yarnpkg generate
popd
rm -r mealie/frontend
cp -a frontend/dist mealie/frontend
poetry build
poetry export -n --only=main --extras=pgsql --output=dist/requirements.txt
MEALIE_VERSION=$(poetry version --short)
echo "mealie[pgsql]==${MEALIE_VERSION} \\" >> dist/requirements.txt
poetry run pip hash dist/mealie-${MEALIE_VERSION}-py3-none-any.whl | tail -n1 | tr -d '\n' >> dist/requirements.txt
echo " \\" >> dist/requirements.txt
poetry run pip hash dist/mealie-${MEALIE_VERSION}.tar.gz | tail -n1 >> dist/requirements.txt
```
The Python package can be installed with all of its dependencies pinned to the versions tested by the developers with:
```sh
pip3 install -r dist/requirements.txt --find-links dist
```
To install with the latest but still compatible dependency versions, instead run `pip3 install dist/mealie-$VERSION-py3-none-any.whl` (where `$VERSION` is the version of mealie to install).
## Docker image
One way to build the Docker image is to run the following command in the project root directory:
```sh
docker build --tag mealie:dev --file docker/Dockerfile --build-arg COMMIT=$(git rev-parse HEAD) .
```
The Docker image can be built from the pre-built Python packages with the task command `task docker:build-from-package`. This is equivalent to:
```sh
docker build --tag mealie:dev --file docker/Dockerfile --build-arg COMMIT=$(git rev-parse HEAD) --build-context packages=dist .
```

View file

@ -0,0 +1,8 @@
!!! info
This guide was submitted by a community member. Find something wrong? Submit a PR to get it fixed!
Mealie supports adding the ingredients of a recipe to your [Bring](https://www.getbring.com/) shopping list, as you can
see [here](https://docs.mealie.io/documentation/getting-started/features/#recipe-actions).
However, for this to work, your Mealie instance needs to be exposed to the open Internet so that the Bring servers can access its information. If you don't want your server to be publicly accessible for security reasons, you can use the [Mealie-Bring-API](https://github.com/felixschndr/mealie-bring-api) written by a community member. This integration is entirely local and does not require any service to be exposed to the Internet.
This is a small web server that runs locally next to your Mealie instance, and instead of Bring pulling the data from you, it pushes the data to Bring. [Check out the project](https://github.com/felixschndr/mealie-bring-api) for more information and installation instructions.

View file

@ -10,7 +10,7 @@
Mealie supports 3rd party authentication via [OpenID Connect (OIDC)](https://openid.net/connect/), an identity layer built on top of OAuth2. OIDC is supported by many Identity Providers (IdP), including: Mealie supports 3rd party authentication via [OpenID Connect (OIDC)](https://openid.net/connect/), an identity layer built on top of OAuth2. OIDC is supported by many Identity Providers (IdP), including:
- [Authentik](https://goauthentik.io/integrations/sources/oauth/#openid-connect) - [Authentik](https://goauthentik.io/integrations/sources/oauth/#openid-connect)
- [Authelia](https://www.authelia.com/configuration/identity-providers/open-id-connect/) - [Authelia](https://www.authelia.com/integration/openid-connect/mealie/)
- [Keycloak](https://www.keycloak.org/docs/latest/securing_apps/#_oidc) - [Keycloak](https://www.keycloak.org/docs/latest/securing_apps/#_oidc)
- [Okta](https://www.okta.com/openid-connect/) - [Okta](https://www.okta.com/openid-connect/)

View file

@ -1,9 +1,15 @@
# Frequently Asked Questions # Frequently Asked Questions
## How do I enable "smart" ingredient handling? ## Features and Functionality
??? question "How do I enable 'smart' ingredient handling?"
### How do I enable "smart" ingredient handling?
You might have noticed that scaling up a recipe or making a shopping list doesn't by default handle the ingredients in a way you might expect. Depending on your settings, scaling up might yield things like `2 1 cup broth` instead of `2 cup broth`. And, making shopping lists from recipes that have shared ingredients can yield multiple lines of the same ingredient. **But**, Mealie has a mechanism to intelligently handle ingredients and make your day better. How? You might have noticed that scaling up a recipe or making a shopping list doesn't by default handle the ingredients in a way you might expect. Depending on your settings, scaling up might yield things like `2 1 cup broth` instead of `2 cup broth`. And, making shopping lists from recipes that have shared ingredients can yield multiple lines of the same ingredient. **But**, Mealie has a mechanism to intelligently handle ingredients and make your day better. How?
### Set up your Foods and Units
<p style="font-size: 0.75rem; font-weight: 500;">Set up your Foods and Units</p>
Do the following just **once**. Doing this applies to your whole group, so be careful. Do the following just **once**. Doing this applies to your whole group, so be careful.
1. Click on your name in the upper left corner to get to your settings 1. Click on your name in the upper left corner to get to your settings
@ -15,7 +21,8 @@ Do the following just **once**. Doing this applies to your whole group, so be ca
Initial seeding of Units is pretty complete, but there are many Foods in the world. You'll probably find that you need to add Foods to the database during parsing for the first several recipes. Once you have a well-populated Food database, there are API routes to parse ingredients automatically in bulk. But this is not a good idea without a very complete set of Foods. Initial seeding of Units is pretty complete, but there are many Foods in the world. You'll probably find that you need to add Foods to the database during parsing for the first several recipes. Once you have a well-populated Food database, there are API routes to parse ingredients automatically in bulk. But this is not a good idea without a very complete set of Foods.
### Set up Recipes to use Foods and Units <p style="font-size: 0.75rem; font-weight: 500;">Set up Recipes to use Foods and Units</p>
Do the following for each recipe you want to intelligently handle ingredients. Do the following for each recipe you want to intelligently handle ingredients.
1. Go to a recipe 1. Go to a recipe
@ -33,40 +40,62 @@ Do the following for each recipe you want to intelligently handle ingredients.
Scaling up this recipe or adding it to a Shopping List will now smartly take care of ingredient amounts and duplicate combinations. Scaling up this recipe or adding it to a Shopping List will now smartly take care of ingredient amounts and duplicate combinations.
## Is it safe to upgrade Mealie?
Yes. If you are using the v1 branches (including beta), you can upgrade to the latest version of Mealie without performing a site Export/Restore. This process was required in previous versions of Mealie, however we've automated the database migration process to make it easier to upgrade. Note that if you were using the v0.5.x version, you CANNOT upgrade to the latest version automatically. You must follow the migration instructions in the documentation. ??? question "How do I enable Nutritional Values?"
- [Migration From v0.5.x](./migrating-to-mealie-v1.md) ### How do I enable Nutritional Values?
## How can I change the theme? Mealie can store Nutritional Information for Recipes. Please note that the values you enter are static for the recipe and no scaling is being done when changing Servings / Yield.
You can change the theme by settings the environment variables. Do the following to enable Nutritional Values on individual Recipes, or to modify your Household Recipe Preferences
- [Backend Config - Themeing](./installation/backend-config.md#themeing) **Show Nutritional Values on a Single Recipe**
## How can I change the login session timeout? 1. Go to a recipe
2. Click the Edit button/icon
3. Click the Recipe Settings gear and select `Show Nutritional Values`
4. Scroll down to manually fill out the Nutritional Values
5. Save
Login session can be configured by setting the `TOKEN_TIME` variable on the backend container. **Show Nutritional Values by default**
- [Backend Config](./installation/backend-config.md) 1. Click your username in the top left
2. Click the 'Household Settings' button
3. Under 'Household Recipe Preferences', click to select 'Show nutrition information'
4. Click 'Update'
## Can I serve Mealie on a subpath?
No. Due to limitations from the JavaScript Framework, Mealie doesn't support serving Mealie on a subpath. ??? question "Why Link Ingredients to a Recipe Step?"
## Can I install Mealie without docker? ### Why Link Ingredients to a Recipe Step?
Yes, you can install Mealie on your local machine. HOWEVER, it is recommended that you don't. Managing non-system versions of python, node, and npm is a pain. Moreover, updating and upgrading your system with this configuration is unsupported and will likely require manual interventions. Mealie allows you to link ingredients to specific steps in a recipe, ensuring you know exactly when to add each ingredient during the cooking process.
**Link Ingredients to Steps in a Recipe**
1. Go to a recipe
2. Click the Edit button/icon
3. Scroll down to the step you want to link ingredients to
4. Click the ellipsis button next to the step and click 'Link Ingredients'
5. Check off the Ingredient(s) that you want to link to that step
6. Optionally, click 'Next step' to continue linking remaining ingredients to steps, or click 'Save' to Finish
7. Click 'Save' on the Recipe
You can optionally link the same ingredient to multiple steps, which is useful for prepping an ingredient in one step and using it in another.
??? question "What is fuzzy search and how do I use it?"
### What is fuzzy search and how do I use it?
## What is fuzzy search and how do I use it?
Mealie can use fuzzy search, which is robust to minor typos. For example, searching for "brocolli" will still find your recipe for "broccoli soup". But fuzzy search is only functional on a Postgres database backend. To enable fuzzy search you will need to migrate to Postgres: Mealie can use fuzzy search, which is robust to minor typos. For example, searching for "brocolli" will still find your recipe for "broccoli soup". But fuzzy search is only functional on a Postgres database backend. To enable fuzzy search you will need to migrate to Postgres:
1. Backup your database and download the .zip file (same as when [migrating](./migrating-to-mealie-v1.md)) 1. Backup your database and download the .zip file (same as when [migrating](./migrating-to-mealie-v1.md))
2. Set up a [Postgres](./installation/postgres.md) instance of Mealie 2. Set up a [Postgres](./installation/postgres.md) instance of Mealie
3. Upload the backup .zip and click to apply it (as as migration) 3. Upload the backup .zip and click to apply it (as as migration)
## How can I attach an image or video to a Recipe? ??? question "How can I attach an image or video to a Recipe?"
### How can I attach an image or video to a Recipe?
Mealie's Recipe Steps and other fields support markdown syntax and therefore support images and videos. To attach an image to the recipe, you can upload it as an asset and use the provided copy button to generate the html image tag required to render the image. For videos, Mealie provides no way to host videos. You'll need to host your videos with another provider and embed them in your recipe. Generally, the video provider will provide a link to the video and the html tag required to render the video. For example, YouTube provides the following link that works inside a step. You can adjust the width and height attributes as necessary to ensure a fit. Mealie's Recipe Steps and other fields support markdown syntax and therefore support images and videos. To attach an image to the recipe, you can upload it as an asset and use the provided copy button to generate the html image tag required to render the image. For videos, Mealie provides no way to host videos. You'll need to host your videos with another provider and embed them in your recipe. Generally, the video provider will provide a link to the video and the html tag required to render the video. For example, YouTube provides the following link that works inside a step. You can adjust the width and height attributes as necessary to ensure a fit.
@ -74,7 +103,45 @@ Mealie's Recipe Steps and other fields support markdown syntax and therefore sup
<iframe width="560" height="315" src="https://www.youtube.com/embed/nAUwKeO93bY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> <iframe width="560" height="315" src="https://www.youtube.com/embed/nAUwKeO93bY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
``` ```
## How can I unlock my account? ## Customization and Configuration
??? question "How can I change the theme?"
### How can I change the theme?
You can change the theme by settings the environment variables.
- [Backend Config - Themeing](./installation/backend-config.md#themeing)
??? question "How can I change the login session timeout?"
### How can I change the login session timeout?
Login session can be configured by setting the `TOKEN_TIME` variable on the backend container.
- [Backend Config](./installation/backend-config.md)
??? question "Can I serve Mealie on a subpath?"
### Can I serve Mealie on a subpath?
No. Due to limitations from the JavaScript Framework, Mealie doesn't support serving Mealie on a subpath.
??? question "Can I install Mealie without docker?"
### Can I install Mealie without docker?
Yes, you can install Mealie on your local machine. HOWEVER, it is recommended that you don't. Managing non-system versions of python, node, and npm is a pain. Moreover, updating and upgrading your system with this configuration is unsupported and will likely require manual interventions.
## Account Management
??? question "How can I unlock my account?"
### How can I unlock my account?
If your account has been locked by bad password attempts, you can use an administrator account to unlock another account. Alternatively, you can unlock all accounts via a script within the container. If your account has been locked by bad password attempts, you can use an administrator account to unlock another account. Alternatively, you can unlock all accounts via a script within the container.
@ -84,7 +151,23 @@ docker exec -it mealie bash
python /app/mealie/scripts/reset_locked_users.py python /app/mealie/scripts/reset_locked_users.py
``` ```
## How can I change my password?
??? question "How can I reset admin privileges for my account?"
### How can I reset admin privileges for my account?
If you've lost admin privileges and no other admin can restore them, you can use the Command Line Interface (CLI) to grant admin access.
```shell
docker exec -it mealie bash
python /app/mealie/scripts/make_admin.py
```
??? question "How can I change my password?"
### How can I change my password?
You can change your password by going to the user profile page and clicking the "Change Password" button. Alternatively you can use the following script to change your password via the CLI if you are locked out of your account. You can change your password by going to the user profile page and clicking the "Change Password" button. Alternatively you can use the following script to change your password via the CLI if you are locked out of your account.
@ -94,11 +177,19 @@ docker exec -it mealie bash
python /app/mealie/scripts/change_password.py python /app/mealie/scripts/change_password.py
``` ```
## I can't log in with external auth. How can I change my authentication method?
??? question "I can't log in with external auth. How can I change my authentication method?"
### I can't log in with external auth. How can I change my authentication method?
Follow the [steps above](#how-can-i-change-my-password) for changing your password. You will be prompted if you would like to switch your authentication method back to local auth so you can log in again. Follow the [steps above](#how-can-i-change-my-password) for changing your password. You will be prompted if you would like to switch your authentication method back to local auth so you can log in again.
## How do private groups, households, and recipes work?
## Collaboration and Privacy
??? question "How do private groups, households, and recipes work?"
### How do private groups, households, and recipes work?
Managing private groups and recipes can be confusing. The following diagram and notes should help explain how they work to determine if a recipe can be shared publicly. Managing private groups and recipes can be confusing. The following diagram and notes should help explain how they work to determine if a recipe can be shared publicly.
@ -135,7 +226,22 @@ stateDiagram-v2
For more information on public access, check out the [Permissions and Public Access guide](./usage/permissions-and-public-access.md). For more information on groups vs. households, check out the [Groups and Households](./features.md#groups-and-households) section in the Features guide. For more information on public access, check out the [Permissions and Public Access guide](./usage/permissions-and-public-access.md). For more information on groups vs. households, check out the [Groups and Households](./features.md#groups-and-households) section in the Features guide.
## Can I use fail2ban with Mealie?
## Security and Maintenance
??? question "How can I use Mealie externally?"
### How can I use Mealie externally
Exposing Mealie or any service to the internet can pose significant security risks. Before proceeding, carefully evaluate the potential impacts on your system. Due to the unique nature of each network, we cannot provide specific steps for your setup.
There is a community guide available for one way to potentially set this up, and you could reach out on Discord for further discussion on what may be best for your network.
??? question "Can I use fail2ban with Mealie?"
### Can I use fail2ban with Mealie?
Yes, Mealie is configured to properly forward external IP addresses into the `mealie.log` logfile. Note that due to restrictions in docker, IP address forwarding only works on Linux. Yes, Mealie is configured to properly forward external IP addresses into the `mealie.log` logfile. Note that due to restrictions in docker, IP address forwarding only works on Linux.
Your fail2ban usage should look like the following: Your fail2ban usage should look like the following:
@ -144,10 +250,42 @@ Use datepattern : %d-%b-%y %H:%M:%S : Day-MON-Year2 24hour:Minute:Second
Use failregex line : ^ERROR:\s+Incorrect username or password from <HOST> Use failregex line : ^ERROR:\s+Incorrect username or password from <HOST>
``` ```
## Why an API?
??? question "Is it safe to upgrade Mealie?"
### Is it safe to upgrade Mealie?
Yes. If you are using the v1 branches (including beta), you can upgrade to the latest version of Mealie without performing a site Export/Restore. This process was required in previous versions of Mealie, however we've automated the database migration process to make it easier to upgrade. Note that if you were using the v0.5.x version, you CANNOT upgrade to the latest version automatically. You must follow the migration instructions in the documentation.
- [Migration From v0.5.x](./migrating-to-mealie-v1.md)
## Technical Considerations
??? question "Why setup Email?"
### Why setup Email?
Mealie uses email to send account invites and password resets. If you don't use these features, you don't need to set up email. There are also other methods to perform these actions that do not require the setup of Email.
Email settings can be adjusted via environment variables on the backend container:
- [Backend Config](./installation/backend-config.md)
Note that many email providers (e.g., Gmail, Outlook) are disabling SMTP Auth and requiring Modern Auth, which Mealie currently does not support. You may need to use an SMTP relay or third-party SMTP provider, such as SMTP2GO.
??? question "Why an API?"
### Why an API?
An API allows integration into applications like [Home Assistant](https://www.home-assistant.io/) that can act as notification engines to provide custom notifications based on Meal Plan data to remind you to defrost the chicken, marinate the steak, or start the CrockPot. Additionally, you can access nearly any backend service via the API giving you total control to extend the application. To explore the API spin up your server and navigate to http://yourserver.com/docs for interactive API documentation. An API allows integration into applications like [Home Assistant](https://www.home-assistant.io/) that can act as notification engines to provide custom notifications based on Meal Plan data to remind you to defrost the chicken, marinate the steak, or start the CrockPot. Additionally, you can access nearly any backend service via the API giving you total control to extend the application. To explore the API spin up your server and navigate to http://yourserver.com/docs for interactive API documentation.
## Why a database?
??? question "Why a database?"
### Why a database?
Some users of static-site generator applications like ChowDown have expressed concerns about their data being stuck in a database. Considering this is a new project, it is a valid concern to be worried about your data. Mealie specifically addresses this concern by providing automatic daily backups that export your data in json, plain-text markdown files, and/or custom Jinja2 templates. **This puts you in control of how your data is represented** when exported from Mealie, which means you can easily migrate to any other service provided Mealie doesn't work for you. Some users of static-site generator applications like ChowDown have expressed concerns about their data being stuck in a database. Considering this is a new project, it is a valid concern to be worried about your data. Mealie specifically addresses this concern by providing automatic daily backups that export your data in json, plain-text markdown files, and/or custom Jinja2 templates. **This puts you in control of how your data is represented** when exported from Mealie, which means you can easily migrate to any other service provided Mealie doesn't work for you.
As to why we need a database? As to why we need a database?
@ -155,7 +293,13 @@ As to why we need a database?
- **Developer Experience:** Without a database, a lot of the work to maintain your data is taken on by the developer instead of a battle-tested platform for storing data. - **Developer Experience:** Without a database, a lot of the work to maintain your data is taken on by the developer instead of a battle-tested platform for storing data.
- **Multi User Support:** With a solid database as backend storage for your data, Mealie can better support multi-user sites and avoid read/write access errors when multiple actions are taken at the same time. - **Multi User Support:** With a solid database as backend storage for your data, Mealie can better support multi-user sites and avoid read/write access errors when multiple actions are taken at the same time.
## Why is there no "Keep Screen Alive" button when I access a recipe?
## Usability
??? question "Why is there no 'Keep Screen Alive' button when I access a recipe?"
### Why is there no "Keep Screen Alive" button when I access a recipe?
You've perhaps visited the Mealie Demo and noticed that it had a "Keep Screen Alive" button, but it doesn't show up in your own Mealie instance. You've perhaps visited the Mealie Demo and noticed that it had a "Keep Screen Alive" button, but it doesn't show up in your own Mealie instance.
There are typically two possible reasons for this: There are typically two possible reasons for this:
1. You're accessing your Mealie instance without using HTTPS. The Wake Lock API is only available if HTTPS is used. Read more here: https://developer.mozilla.org/en-US/docs/Web/API/Screen_Wake_Lock_API 1. You're accessing your Mealie instance without using HTTPS. The Wake Lock API is only available if HTTPS is used. Read more here: https://developer.mozilla.org/en-US/docs/Web/API/Screen_Wake_Lock_API

View file

@ -139,6 +139,9 @@ Below is a list of all valid merge fields:
- ${id} - ${id}
- ${slug} - ${slug}
- ${url} - ${url}
- ${servings}
- ${yieldQuantity}
- ${yieldText}
To add, modify, or delete Recipe Actions, visit the Data Management page (more on that below). To add, modify, or delete Recipe Actions, visit the Data Management page (more on that below).

View file

@ -32,26 +32,26 @@
### Database ### Database
| Variables | Default | Description | | Variables | Default | Description |
| --------------------- | :------: | ----------------------------------------------------------------------- | | ------------------------------------------------------- | :------: | ----------------------------------------------------------------------- |
| DB_ENGINE | sqlite | Optional: 'sqlite', 'postgres' | | DB_ENGINE | sqlite | Optional: 'sqlite', 'postgres' |
| POSTGRES_USER | mealie | Postgres database user | | POSTGRES_USER<super>[&dagger;][secrets]</super> | mealie | Postgres database user |
| POSTGRES_PASSWORD | mealie | Postgres database password | | POSTGRES_PASSWORD<super>[&dagger;][secrets]</super> | mealie | Postgres database password |
| POSTGRES_SERVER | postgres | Postgres database server address | | POSTGRES_SERVER<super>[&dagger;][secrets]</super> | postgres | Postgres database server address |
| POSTGRES_PORT | 5432 | Postgres database port | | POSTGRES_PORT<super>[&dagger;][secrets]</super> | 5432 | Postgres database port |
| POSTGRES_DB | mealie | Postgres database name | | POSTGRES_DB<super>[&dagger;][secrets]</super> | mealie | Postgres database name |
| POSTGRES_URL_OVERRIDE | None | Optional Postgres URL override to use instead of POSTGRES\_\* variables | | POSTGRES_URL_OVERRIDE<super>[&dagger;][secrets]</super> | None | Optional Postgres URL override to use instead of POSTGRES\_\* variables |
### Email ### Email
| Variables | Default | Description | | Variables | Default | Description |
| ------------------ | :-----: | ------------------------------------------------- | | ----------------------------------------------- | :-----: | ------------------------------------------------- |
| SMTP_HOST | None | Required For email | | SMTP_HOST<super>[&dagger;][secrets]</super> | None | Required For email |
| SMTP_PORT | 587 | Required For email | | SMTP_PORT<super>[&dagger;][secrets]</super> | 587 | Required For email |
| SMTP_FROM_NAME | Mealie | Required For email | | SMTP_FROM_NAME | Mealie | Required For email |
| SMTP_AUTH_STRATEGY | TLS | Required For email, Options: 'TLS', 'SSL', 'NONE' | | SMTP_AUTH_STRATEGY | TLS | Required For email, Options: 'TLS', 'SSL', 'NONE' |
| SMTP_FROM_EMAIL | None | Required For email | | SMTP_FROM_EMAIL | None | Required For email |
| SMTP_USER | None | Required if SMTP_AUTH_STRATEGY is 'TLS' or 'SSL' | | SMTP_USER<super>[&dagger;][secrets]</super> | None | Required if SMTP_AUTH_STRATEGY is 'TLS' or 'SSL' |
| SMTP_PASSWORD | None | Required if SMTP_AUTH_STRATEGY is 'TLS' or 'SSL' | | SMTP_PASSWORD<super>[&dagger;][secrets]</super> | None | Required if SMTP_AUTH_STRATEGY is 'TLS' or 'SSL' |
### Webworker ### Webworker
@ -73,15 +73,15 @@ Use this only when mealie is run without a webserver or reverse proxy.
### LDAP ### LDAP
| Variables | Default | Description | | Variables | Default | Description |
| -------------------- | :-----: | ----------------------------------------------------------------------------------------------------------------------------------- | | ----------------------------------------------------- | :-----: | ----------------------------------------------------------------------------------------------------------------------------------- |
| LDAP_AUTH_ENABLED | False | Authenticate via an external LDAP server in addidion to built-in Mealie auth | | LDAP_AUTH_ENABLED | False | Authenticate via an external LDAP server in addidion to built-in Mealie auth |
| LDAP_SERVER_URL | None | LDAP server URL (e.g. ldap://ldap.example.com) | | LDAP_SERVER_URL<super>[&dagger;][secrets]</super> | None | LDAP server URL (e.g. ldap://ldap.example.com) |
| LDAP_TLS_INSECURE | False | Do not verify server certificate when using secure LDAP | | LDAP_TLS_INSECURE | False | Do not verify server certificate when using secure LDAP |
| LDAP_TLS_CACERTFILE | None | File path to Certificate Authority used to verify server certificate (e.g. `/path/to/ca.crt`) | | LDAP_TLS_CACERTFILE | None | File path to Certificate Authority used to verify server certificate (e.g. `/path/to/ca.crt`) |
| LDAP_ENABLE_STARTTLS | False | Optional. Use STARTTLS to connect to the server | | LDAP_ENABLE_STARTTLS | False | Optional. Use STARTTLS to connect to the server |
| LDAP_BASE_DN | None | Starting point when searching for users authentication (e.g. `CN=Users,DC=xx,DC=yy,DC=de`) | | LDAP_BASE_DN | None | Starting point when searching for users authentication (e.g. `CN=Users,DC=xx,DC=yy,DC=de`) |
| LDAP_QUERY_BIND | None | Optional bind user for LDAP search queries (e.g. `cn=admin,cn=users,dc=example,dc=com`). If `None` then anonymous bind will be used | | LDAP_QUERY_BIND | None | Optional bind user for LDAP search queries (e.g. `cn=admin,cn=users,dc=example,dc=com`). If `None` then anonymous bind will be used |
| LDAP_QUERY_PASSWORD | None | Optional password for the bind user used in LDAP_QUERY_BIND | | LDAP_QUERY_PASSWORD<super>[&dagger;][secrets]</super> | None | Optional password for the bind user used in LDAP_QUERY_BIND |
| LDAP_USER_FILTER | None | Optional LDAP filter to narrow down eligible users (e.g. `(memberOf=cn=mealie_user,dc=example,dc=com)`) | | LDAP_USER_FILTER | None | Optional LDAP filter to narrow down eligible users (e.g. `(memberOf=cn=mealie_user,dc=example,dc=com)`) |
| LDAP_ADMIN_FILTER | None | Optional LDAP filter, which tells Mealie the LDAP user is an admin (e.g. `(memberOf=cn=admins,dc=example,dc=com)`) | | LDAP_ADMIN_FILTER | None | Optional LDAP filter, which tells Mealie the LDAP user is an admin (e.g. `(memberOf=cn=admins,dc=example,dc=com)`) |
| LDAP_ID_ATTRIBUTE | uid | The LDAP attribute that maps to the user's id | | LDAP_ID_ATTRIBUTE | uid | The LDAP attribute that maps to the user's id |
@ -95,21 +95,20 @@ Use this only when mealie is run without a webserver or reverse proxy.
For usage, see [Usage - OpenID Connect](../authentication/oidc-v2.md) For usage, see [Usage - OpenID Connect](../authentication/oidc-v2.md)
| Variables | Default | Description | | Variables | Default | Description |
|---------------------------------------------------|:-------:|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ----------------------------------------------------------------------------------- | :-----: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| OIDC_AUTH_ENABLED | False | Enables authentication via OpenID Connect | | OIDC_AUTH_ENABLED | False | Enables authentication via OpenID Connect |
| OIDC_SIGNUP_ENABLED | True | Enables new users to be created when signing in for the first time with OIDC | | OIDC_SIGNUP_ENABLED | True | Enables new users to be created when signing in for the first time with OIDC |
| OIDC_CONFIGURATION_URL | None | The URL to the OIDC configuration of your provider. This is usually something like https://auth.example.com/.well-known/openid-configuration | | OIDC_CONFIGURATION_URL<super>[&dagger;][secrets]</super> | None | The URL to the OIDC configuration of your provider. This is usually something like https://auth.example.com/.well-known/openid-configuration |
| OIDC_CLIENT_ID | None | The client id of your configured client in your provider | | OIDC_CLIENT_ID<super>[&dagger;][secrets]</super> | None | The client id of your configured client in your provider |
| OIDC_CLIENT_SECRET <br/> :octicons-tag-24: v2.0.0 | None | The client secret of your configured client in your provider | | OIDC_CLIENT_SECRET<super>[&dagger;][secrets]</super> <br/> :octicons-tag-24: v2.0.0 | None | The client secret of your configured client in your provider |
| OIDC_USER_GROUP | None | If specified, only users belonging to this group will be able to successfully authenticate. For more information see [this page](../authentication/oidc-v2.md#groups) | | OIDC_USER_GROUP | None | If specified, only users belonging to this group will be able to successfully authenticate, regardless of the `OIDC_ADMIN_GROUP`. For more information see [this page](../authentication/oidc.md#groups) |
| OIDC_ADMIN_GROUP | None | If specified, users belonging to this group will be able to successfully authenticate *and* be made an admin. For more information see [this page](../authentication/oidc-v2.md#groups) | | OIDC_ADMIN_GROUP | None | If specified, users belonging to this group will be made an admin. For more information see [this page](../authentication/oidc.md#groups) |
| OIDC_AUTO_REDIRECT | False | If `True`, then the login page will be bypassed and you will be sent directly to your Identity Provider. You can still get to the login page by adding `?direct=1` to the login URL | | OIDC_AUTO_REDIRECT | False | If `True`, then the login page will be bypassed an you will be sent directly to your Identity Provider. You can still get to the login page by adding `?direct=1` to the login URL |
| OIDC_PROVIDER_NAME | OAuth | The provider name is shown in SSO login button. "Login with <OIDC_PROVIDER_NAME\>" | | OIDC_PROVIDER_NAME | OAuth | The provider name is shown in SSO login button. "Login with <OIDC_PROVIDER_NAME\>" |
| OIDC_REMEMBER_ME | False | Because redirects bypass the login screen, you cant extend your session by clicking the "Remember Me" checkbox. By setting this value to true, a session will be extended as if "Remember Me" was checked | | OIDC_REMEMBER_ME | False | Because redirects bypass the login screen, you cant extend your session by clicking the "Remember Me" checkbox. By setting this value to true, a session will be extended as if "Remember Me" was checked |
| OIDC_SIGNING_ALGORITHM | RS256 | The algorithm used to sign the id token (examples: RS256, HS256) |
| OIDC_USER_CLAIM | email | This is the claim which Mealie will use to look up an existing user by (e.g. "email", "preferred_username") | | OIDC_USER_CLAIM | email | This is the claim which Mealie will use to look up an existing user by (e.g. "email", "preferred_username") |
| OIDC_NAME_CLAIM | name | This is the claim which Mealie will use for the users Full Name |
| OIDC_GROUPS_CLAIM | groups | Optional if not using `OIDC_USER_GROUP` or `OIDC_ADMIN_GROUP`. This is the claim Mealie will request from your IdP and will use to compare to `OIDC_USER_GROUP` or `OIDC_ADMIN_GROUP` to allow the user to log in to Mealie or is set as an admin. **Your IdP must be configured to grant this claim** | | OIDC_GROUPS_CLAIM | groups | Optional if not using `OIDC_USER_GROUP` or `OIDC_ADMIN_GROUP`. This is the claim Mealie will request from your IdP and will use to compare to `OIDC_USER_GROUP` or `OIDC_ADMIN_GROUP` to allow the user to log in to Mealie or is set as an admin. **Your IdP must be configured to grant this claim** |
| OIDC_SCOPES_OVERRIDE | None | Advanced configuration used to override the scopes requested from the IdP. **Most users won't need to change this**. At a minimum, 'openid profile email' are required. |
| OIDC_TLS_CACERTFILE | None | File path to Certificate Authority used to verify server certificate (e.g. `/path/to/ca.crt`) | | OIDC_TLS_CACERTFILE | None | File path to Certificate Authority used to verify server certificate (e.g. `/path/to/ca.crt`) |
### OpenAI ### OpenAI
@ -120,16 +119,12 @@ Mealie supports various integrations using OpenAI. For more information, check o
For custom mapping variables (e.g. OPENAI_CUSTOM_HEADERS) you should pass values as JSON encoded strings (e.g. `OPENAI_CUSTOM_PARAMS='{"k1": "v1", "k2": "v2"}'`) For custom mapping variables (e.g. OPENAI_CUSTOM_HEADERS) you should pass values as JSON encoded strings (e.g. `OPENAI_CUSTOM_PARAMS='{"k1": "v1", "k2": "v2"}'`)
| Variables | Default | Description | | Variables | Default | Description |
| ---------------------------- | :-----: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ------------------------------------------------- | :-----: | ---------------------------------------------------------------------------------------------------------------------- |
| OPENAI_BASE_URL | None | The base URL for the OpenAI API. If you're not sure, leave this empty to use the standard OpenAI platform | | OPENAI_BASE_URL<super>[&dagger;][secrets]</super> | None | The base URL for the OpenAI API. If you're not sure, leave this empty to use the standard OpenAI platform |
| OPENAI_API_KEY | None | Your OpenAI API Key. Enables OpenAI-related features | | OPENAI_API_KEY<super>[&dagger;][secrets]</super> | None | Your OpenAI API Key. Enables OpenAI-related features |
| OPENAI_MODEL | gpt-4o | Which OpenAI model to use. If you're not sure, leave this empty | | OPENAI_MODEL | gpt-4o | Which OpenAI model to use. If you're not sure, leave this empty |
| OPENAI_CUSTOM_HEADERS | None | Custom HTTP headers to add to all OpenAI requests. This should generally be left empty unless your custom service requires them |
| OPENAI_CUSTOM_PARAMS | None | Custom HTTP query params to add to all OpenAI requests. This should generally be left empty unless your custom service requires them |
| OPENAI_ENABLE_IMAGE_SERVICES | True | Whether to enable OpenAI image services, such as creating recipes via image. Leave this enabled unless your custom model doesn't support it, or you want to reduce costs |
| OPENAI_WORKERS | 2 | Number of OpenAI workers per request. Higher values may increase processing speed, but will incur additional API costs | | OPENAI_WORKERS | 2 | Number of OpenAI workers per request. Higher values may increase processing speed, but will incur additional API costs |
| OPENAI_SEND_DATABASE_DATA | True | Whether to send Mealie data to OpenAI to improve request accuracy. This will incur additional API costs | | OPENAI_SEND_DATABASE_DATA | True | Whether to send Mealie data to OpenAI to improve request accuracy. This will incur additional API costs |
| OPENAI_REQUEST_TIMEOUT | 60 | The number of seconds to wait for an OpenAI request to complete before cancelling the request. Leave this empty unless you're running into timeout issues on slower hardware |
### Theming ### Theming
@ -154,24 +149,80 @@ Setting the following environmental variables will change the theme of the front
### Docker Secrets ### Docker Secrets
Setting a credential can be done using secrets when running in a Docker container. ### Docker Secrets
This can be used to avoid leaking passwords through compose files, environment variables, or command-line history.
For example, to configure the Postgres database password in Docker compose, create a file on the host that contains only the password, and expose that file to the Mealie service as a secret with the correct name. > <super>&dagger;</super> Starting in version `2.4.2`, any environment variable in the preceding lists with a dagger
Note that environment variables take priority over secrets, so any previously defined environment variables should be removed when migrating to secrets. > symbol next to them support the Docker Compose secrets pattern, below.
[Docker Compose secrets][docker-secrets] can be used to secure sensitive information regarding the Mealie implementation
by managing control of each secret independently from the single `.env` file. This is helpful for users that may need
different levels of access for various, sensitive environment variables, such as differentiating between hardening
operations (e.g., server endpoints and ports) and user access control (e.g., usernames, passwords, and API keys).
To convert any of these environment variables to a Docker Compose secret, append `_FILE` to the environment variable and
connect it with a Docker Compose secret, per the [Docker documentation][docker-secrets].
If both the base environment variable and the secret pattern of the environment variable are set, the secret will always
take precedence.
For example, a user that wishes to harden their operations by only giving some access to their database URL, but who
wish to place additional security around their user access control, may have a Docker Compose configuration similar to:
```yaml ```yaml
services: services:
mealie: mealie:
...
environment:
...
POSTGRES_USER: postgres
secrets: secrets:
- POSTGRES_PASSWORD # These secrets will be loaded by Docker into the `/run/secrets` folder within the container.
- postgres-host
- postgres-port
- postgres-db-name
- postgres-user
- postgres-password
environment:
DB_ENGINE: postgres
POSTGRES_SERVER: duplicate.entry.tld # This will be ignored, due to the secret defined, below.
POSTGRES_SERVER_FILE: /run/secrets/postgres-host
POSTGRES_PORT_FILE: /run/secrets/postgres-port
POSTGRES_DB_FILE: /run/secrets/postgres-db-name
POSTGRES_USER_FILE: /run/secrets/postgres-user
POSTGRES_PASSWORD_FILE: /run/secrets/postgres-password
# Each of these secrets are loaded via these local files. Different patterns are available. See the Docker Compose
# documentation for more information.
secrets: secrets:
POSTGRES_PASSWORD: postgres-host:
file: postgrespassword.txt file: ./secrets/postgres-host.txt
postgres-port:
file: ./secrets/postgres-port.txt
postgres-db-name:
file: ./secrets/sensitive/postgres-db-name.txt
postgres-user:
file: ./secrets/sensitive/postgres-user.txt
postgres-password:
file: ./secrets/sensitive/postgres-password.txt
```
In the example above, a directory organization and access pattern may look like the following:
```text
.
├── docker-compose.yml
└── secrets # Access restricted to anyone that can manage secrets
├── postgres-host.txt
├── postgres-port.txt
└── sensitive # Access further-restricted to anyone managing service accounts
├── postgres-db-name.txt
├── postgres-password.txt
└── postgres-user.txt
``` ```
How you organize your secrets is ultimately up to you. At minimum, it's highly recommended to use secret patterns for
at least these sensitive environment variables when working within shared environments:
- `POSTGRES_PASSWORD`
- `SMTP_PASSWORD`
- `LDAP_QUERY_PASSWORD`
- `OPENAI_API_KEY`
[docker-secrets]: https://docs.docker.com/compose/use-secrets/
[secrets]: #docker-secrets
[unicorn_workers]: https://www.uvicorn.org/deployment/#built-in [unicorn_workers]: https://www.uvicorn.org/deployment/#built-in

View file

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

View file

@ -7,7 +7,7 @@ PostgreSQL might be considered if you need to support many concurrent users. In
```yaml ```yaml
services: services:
mealie: mealie:
image: ghcr.io/mealie-recipes/mealie:v2.3.0 # (3) image: ghcr.io/mealie-recipes/mealie:v2.6.0 # (3)
container_name: mealie container_name: mealie
restart: always restart: always
ports: ports:
@ -45,6 +45,7 @@ services:
environment: environment:
POSTGRES_PASSWORD: mealie POSTGRES_PASSWORD: mealie
POSTGRES_USER: mealie POSTGRES_USER: mealie
PGUSER: mealie
healthcheck: healthcheck:
test: ["CMD", "pg_isready"] test: ["CMD", "pg_isready"]
interval: 30s interval: 30s

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

View file

@ -0,0 +1,126 @@
# October 2024 Survey
It's been a while since a Mealie survey was done, and the community was much smaller back then. So much has changed in 2024, and we wanted to gauge the community's thoughts.
Our v2.0 release gave us a platform to ask people to take a few minutes to share their thoughts.
A massive thanks to everyone who took the time to fill out this survey. We had 525 respondents! We're overwhelmed with the support.
Also, thanks to ChristianB-F from our Discord community for putting the following images together, and to everyone who has taken the time to raise either an issue or pull request on our GitHub repository!
For each question, we've created a GitHub discussion and we invite you to share any interesting insights or thoughts you have from the survey results!
If you see a specific idea that resonates with you, please check if there's already a feature request, and if not, please raise one and add your perspective.
The questions (bar question 1) that are free text are on separate pages you'll need to click into, as there's just too much content to include on this page.
For the written response sections, we have removed some of the more indifferent responses (e.g., "N/A") to save you reading time. If you'd like to see all the raw responses, they're in [this GitHub commit](https://github.com/mealie-recipes/mealie/pull/4666/commits/1287bc1635d9c2560b10db3a92a0d6644bc81571).
## Structured Questions
### Mealie Version (pre-v2)
This question was free text input and it was mandatory.
The responses to this were so varied and not overly informative/indicative of anything, so we've decided not to publish them - both to save space and your time.
### Database Type
This question was a single select and it was optional.
Key insight: SQLite is the predominant database, but Postgres maintains an admirable share and must remain front of mind for any changes we make.
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4640)
![Question 2](Question2.png)
### Time Using Mealie
How long have you been using Mealie? This question was a single select and it was mandatory.
Key insight: Most users have been using Mealie less than a year, with another 25% in the 1-2 year range. These users will have seen a lot of change in the product over that time.
Thanks to the long term users!
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4641)
![Question 3](Question3.png)
### Engagement with Mealie, the Project, and the Community
This question was multiple choice and it was optional.
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4642)
![Question 4](Question4.png)
### Number of Active Users
This question was a single select and it was mandatory.
Key insight: ~85% of instances have 2 users or fewer. This is assumed to be a couple of adults living together.
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4643)
![Question 5](Question5.png)
### Number of Active Groups
This question was a single select and it was mandatory.
Key insight: Similar to the above question, one group being the most common backs the theory of one "family" using the Mealie instance.
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4644)
![Question 6](Question6.png)
### Using Mealie on Mobile
Do you access Mealie on a mobile? Using your browser or with it installed as an app (a Progressive Web App/PWA)? This question was a multiple select and it was mandatory.
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4645)
![Question 7](Question7.png)
### Feature Usage
Please select all the features you actively/regularly use, or consider important. This question was a multiple select and it was optional.
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4646)
![Question 8](Question8.png)
## Suggestions/Feedback
Some of you will spot feature suggestions that you know to already exist in Mealie. We'd love it if you could help us improve the documentation so more people can know about them! All pull requests are much appreciated. The [features](https://docs.mealie.io/documentation/getting-started/features/) page, or the [FAQ](https://docs.mealie.io/documentation/getting-started/faq/) could be appropriate places to add documentation.
### Shopping List Suggestions
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4647)
[Question 9](q9.md)
### Meal Planner Suggestions
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4648)
[Question 10](q10.md)
### Recipe Timeline Suggestions
Key insight: Looks like a lot of people would be fine with this not existing, or at least being hidden.
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4649)
[Question 11](q11.md)
### Recipe Suggestions
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4650)
[Question 12](q12.md)
### Other Suggestions
There are so many kind words in this section in particular. Thanks so much, it means a lot to the whole team and all our contributors to see the impact Mealie has on people's lives!
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4651)
[Question 13](q13.md)

View file

@ -0,0 +1,227 @@
[Back to the overview](overview.md)
# Question 10: Any suggestions for how to improve the Meal Planner?
> again mostly visual, I think it works well as is for my needs but the interface could use some improvements
> The ability to open a recipe in a new tab from Edit mode. You can do this in the View only mode, but when editing the meal plan, it would be nice to easily get to a recipe to see what ingredients there are. I am often checking recipes to see if I already have the ingredients in my cupboard, as part of making a plan for my weekly meal plan. Not being able to quickly see the recipe is a little annoying.
> If Not fixed jet, integrate Portions e.g. 200g sugger and 2egg for two people and 400g sugger and 4eggs for 4 people
> I live alone, so I almost always have leftovers from a meal. Would love for the meal planner to be able to see how many portions a recipe makes, and if its more than the number of people eating it automatically makes leftover meals for the next days. I know you can create notes manually currently, but that's a lot of work.
> Option for "friendly mode" when selecting a date, I.e. "next Tuesday" or "two Wednesday's from today"
> Add a label with the name of the user who added a meal to the planner in case of two or more users in the same household don't share the same dish.
> editing is a separate button/step. It would be nice if that would be more intuitive/user friendly
> - two week view, month view - drag & drop - mass add to shopping list
> It would be very helpful if the meal planner had an option that helps the user to find recipes with some of the similar ingredients, so that it's easier to use all of the groceries bought.
> Allow to set the same food every day of the week if needed
> Synchronize Meal Plan via ics calendar
> Add a button to automatically fill the whole week (or a predetermined number of days). (Wasn't that an option before?) Add the choice of having the full week (Monday to Sunday) stay in place until the new week. Now the meal planner changes to the current day and adds the chosen number of days to display, which always creates a new empty day.
> Improve import
> A better sliding window of plans. I've found looking back to previous weeks clunky. Most of the time, we only care about this upcoming week but once in a while we'll plan a couple weeks out. I know you can expand the view to be more than 7 days; however, beyond planning, I typically only care about a few days in advance once the plan has been set.
> We create meal plans for the next 7 days but are not fixed to what meals have to be made on which dates. It's more flexible in practice. The Meal Planner as-is is a bit in-flexible in this aspect. Being able to check-off meals as they have been made. As above, are meal plans have to be flexible so being able to mark meals as 'made' or done, makes it easier to see what is left for the rest of the week.
> So the meal planner I find it to be the weakest yet the most important point of Mealie. My main issue is that there are only 4 fixed meals. There are some diet plans that have some intermediate snacks and stuff like that, so the best thing would be to have free control on how many meals each day can have, and perhaps have some rules like "mondays have the standard 4 meals" and "tuesdays have these 4 snacks in middle of the meals" or "wednesdays have these customs meals", so I can set as many meals each day with its custom names on them. The logic would be that I have a "meals" database so I create the object like "morning snack" and then I can apply rules like having a fruit on my morning snack and a power bar on my "afternoon snack". - Also would be cool to have a randomizer for the whole week or month after proper rules were established that autofills the meals set for each day, so I can plan my groceries in advance and save a good amount of repetitive clicking. - In the case of each day's random meal, its strange that there is a button for 2 different meals, but dinner and side have their own buttons. They should have eiother their own button each, or be all toghether in one menu - The possibilty of marking special days like birthdays so these days wont autofill with the suggested randomizer, ignore the rules, and instead would require user input for planning these special meals
> So far it works. It could use some UX changes to improve the flow, certain sizing on mobile would be nice. I am using it with a couple of rules, and made a feature request about this already.
> Create an option to create singular list, that does not tie recipe to specific date. When I create a meal plan, my idea is to use it as a todo list, not deciding upfront what will be done on each day. Currently I am not using meal planner at all, because it really cumbersome for me.
> 1. have a check box so a week could be automatically selected. maybe use the week of the year, ie check box next to Week 47 that would select Sunday - Saturday 2. to be able to click and drag the recipes between the days of the week. so if i didn't want make it on Monday but Tuesday instead i can just drag the recipe cards to the new days. 3. having a Today button in the drop down calendar in case you plan a few weeks ahead
> Being able to go back to previous dates and batch edit the meal plan without having to set the dates after each single edit
> A wizard for creating a meal plan for a given period
> Easy integration of daily meal image into Home assistant. eg a HACS addon?
> More options to auto create e.g. based on ingredients such as pick recipes that total 500g minced beef or 2 meals that include pulled pork. Include macro tracking e.g. total planned calories and average calories
> I was very excited about a "Meal Planner" feature when I first saw it, but it was not what I was expecting. I wanted to be able to collect several recipes into a single "meal", e.g., a soup, a starter, a main, and a desert; or combine my home made steak sauce recipe with my grilled steak recipe for a more complete meal without having to duplicate recipes in multiple records. This would be particularly helpful for large holiday gatherings or dinner parties. Once collected, it could provide a master ingredients list and help with organizing the sequencing of the cooking.
> Ability to reorder meals without switching to edit mode. (Very minor)
> It could be here that you pick the number of people a recipe is for when you add it to a plan. Currently, to double a recipe we have to add it twice to the meal planner and list. Also, drag n drop doesn't work great when editing plans on a tablet (android).
> No I like the meal planner. Integration with the shopping list would be awesome. As in, add the ingredients from recipes on the planner to the shopping list.
> Allow a default view instead of "today forward. (For example, "x previous days" or "this week") Remove the modes and integrate editing with viewing Default to "today" (or "first blank dinner/etc slot") when adding entries.
> As per previous shopping list comments. Really appreciate and like the planner. It makes managing the week's meals and shopping so much easier!
> Add https://github.com/mealie-recipes/mealie/discussions/1761, it would make it easier for me to make many recipes of like tacos or pizzas with base seasoning mixes/dough mixes and individual recipe customizations on top.
> Please add more entry type/food type on planner. In Poland the main dish is at 1-4 P.M. It's called obiad but it's related to lunch. But because it's main meal, we usually have 2 dishes: soup (zupa) and the second dish (drugie danie). It would be great to have separate entry type for soups and the second dished. So in generally, please allow to define own entry types in planner (like in Tandoor Recipes).
> On the meal planner screen, I feel like there should be a button for immediately adding or randomizing a meal for any given day that is blank. Theres something about having to go into edit mode first when youre creating a meal plan on a blank day that seems unintuitive. To my brain “Edit” means to change something that exists, not to create from scratch. Not a big issue obviously but I notice it every time.
> It could be that Im missing something, but excluding meals from categories when using random selection. For example, let me disable adding foods labeled “Dessert” when randomizing.
> Same here. Make it removable via env.
> Mealie has done a great job. If you have to ask questions, I hope to support the<video>tag in the recipe steps instead of iframes, which will cause the video to play automatically.
> Would love a "feature flag"/env var to enable/disable the nightly "Meal Planner -> Recipe Timeline" job. I really like clicking the "I made this!" button when finishing cooking a recipe, and would rather do it that way. My timeline is full of duplicates/incorrect recipe history.
> Nicer UI, option to assign meal to user (e.g. different dinner for kid).
> track times recipe is accessed and suggest meal plans based on patterns
> Make it possible to plan a re-scaled version of a recipe. This would be very helpful when scaling a dish up for hosting. At the moment, you have to remember to scale up the servings each time you go to a recipe from the meal planner.
> I like the meal planner alot. I use it all the time. It was a great bug fix to allow external recipe links as hyperlinks that were clickable (nice to try things before adding to mealie)
> Random within a tag.
> When showing the days, it would be very helpful to have an option to have something like be able to set "default: show week" For me that would make it easier as I sometimes skip cooking one night and have to manually set it so I can see days earlier in the week.
> We repeat our meal plan to a default 3-week plan so it would be nice to be able to apply a 'template' to a timeframe and then make manual adjustments from there. This would be the killer feature for us!
> Using the randomizer is clunky. I don't know how it determines the difference between sides and dinners. It isn't clear how best to organize sides and dinners.
> It may already be an existing feature and I haven't found it it some kind of calendar integration would be nice. I'm going to be trying the home assistant integration soon, then I can stop asking my wife everyday what's for dinner
> sometimes there's too much repetition Or some meals are not proper for a dinner sometimes even adds desserts etc. may be me miss using it to be fair
> Again on v0.5.6 so I'm not sure where this is at with the latest updates.
> Setting the default days would be nice but not a major inconvenience at the moment.
> Ability to export a nice PDF to print out and put it on the kitchen door. Maybe make i iportable as a calendar in Android
> Have settings that allow it to be formatted as a week view on screens that are wide enough or at least adjust the number of columns that can be displayed.
> Allow the ability add any text so that I can add a one time meal that I don't have added to my recipes
> buttons to move displayed days forward/back by 7 days
> It is annoying having to switch between "Meal Planner" and "Edit" views, I would prefer a (+) button on the view to add items to that day for users that can edit the meal plan
> When I add several meals, I can lose track of which days I've added meals to, so if the calendar can highlight days with existing entries, that could be handy.
> It would be nice if you could add meals to a different span of time instead of days. We don't plan to the day but to the week so if we could plan for meals in a week that would be nice. Basically we know we want to eat burgers next week but we don't choose the day, and some day during the week we just look at what is available and decide on the day which of the plan meals we will have.
> Again coming from Meal Lime - I personally prefer a much simpler meal planner (this is my preference so I appreciate everyone is different). I would prefer a toggle "Simple meal planner" vs "Advanced meal planner" The advanced planner would be its current form. The simple meal planner would essentially remove a lot of features. - Plus icon on a day simply pulls up a view of your recipes (with pictures) to tap and select (this is how meal lime works) the popup box with date is not needed, I already click plus on a certain day, why would I then want to select the date again? its a lot easier and quicker to see your pictures than a big list of titles - Meal planner would ONLY account for dinner (again personal preference) the plus icon simply adds a dinner meal - thats it. - No Random button - No side button - No rules or automations etc. You can, in essence, very quickly tap + on a few days, select what you fancy from your recipe photos and hit go. Shopping list is auto populated and you are ready to go. To give you an idea of how I used to use Meal Lime - I was able to complete a meal plan in a couple of minutes as I walked in to the shop, it was that easy and painless. I know I keep going on about it - but I would LOVE for this to be a self hosted version of that app!
> allow a way to disable it via config - we don't use it.
> I often add meals to the planner but don't end up making them, it's just an idea of what we might have, but it adds them to the timeline when I haven't made them. I don't want that.
> Ability to rename the entry type. We use "Side" for our kids meals. I have renamed it in the Magic Mirror module but having it renamed in the app would be a nice QoL improvement. Other than that minor thing it works very well.
> We typically plan meals as a "queue", rather than specific days. It'd be nice to have a non-day-specific queue to add recipes to, in addition to specific days.
> The ability to manually move recipes to the bottom or top of the list for a given day. The option to separate meal planners for each meal. Have consistent style between the “Meal Planner” mode and “Edit” mode. Integrate the Meal Planner so it shows up on external calendars.
> Maybe adding in time divisions e.g. breakfast, lunch, dinner so if I have multiple items I can see them, any maybe make the view sortable (like view only dinner). Can we add side dishes or condiments? Maybe suggestions of meals that we might like based on what we eat, but with variety (you eat a lot of chicken, have you tried this chicken pasta recipe). Maybe notifications for meals just in case I forget.
> allow for multiple meals per day (i.e. breakfast, lunch, dinner)
> Perhaps allow notes on the recipe entries?
> is could be more compact on mobile view. also in current version the title got cut off. this is a problem with notes only entries. when using till understood the difference i was wondering that I could not tap (mobile view) on the notes only entry to view the full title. That was possible before, cause i was in editing mode. would make the meal planner better if a detail view for notes only entries would be available. also in mobile view: when i am in editing mode with an open note only entriy and hit the OS back-button I not only leave the editing mode of the entry but also the editing mode of the meal planner. this is anoying when planning the next week ahead with our spouse on the kitchen table. dates have to reajusted to see the next week again
> When using the random functions, have the ability to exclude recipes that have already been added to the plan.
> ask for how many people when planning
> Meal image in edit mode in Android browser only shows a small cropped part of the thumbnail. It is not really useful.
> None, really like the way it is now
> Default to include past meals from the week
> High Value: Default view to "This week" instead of "Today+7 days" - sometimes we have more leftovers than anticipated so we skip cooking a new meal, and the next night when I go in to 'find' what I was supposed to cook last night, I have to update the date range to see yesterday/earlier in the same week. Let me set the week start date in settings (drives me nuts that the week starts on Monday 😅) Assume that if someone is on the meal planner, it was made that day (so I don't have to click "I made this" each time). If desired, could be a toggle setting. Low Value: Ability to add "Leftovers" or a restaurant as the 'Meal' for a particular night. I know I could just create a recipe called (for example) "Leftovers" or "McDonalds" but it sure would be cool if they didn't clutter my recipe view and I could specify "Leftovers of "Recipe X" I'm sure this is possible via API, and maybe already do-able, but I would love to integrate Meal Planner into a Home Assistant dashboard to display what is the meal plan for the week to the rest of the family. If there's other dashboard platforms people use, or maybe a static dashboard within Mealie, providing better/more support would be cool.
> Meal plan based on goals, I.e. macros
> its fine as it is
> Keep/restore scroll position when going back from a recipe to a list. Multiple people i talked to don't use Meale due to this as it's such an annoyance.
> It would be nice if you could enter that leftovers from the previous days are planned for a certain day.
> A button which fills the shopping list using all recipes currently displayed in the planner. Buttons which quickly change the current week. A button which fills in the whole week with random recipes.
> Ah YES! The meal planner needs some love. So our intention when we began trying to use Mealie was to have some help organicing our meals automatically, so I would have our recipes, and have them properly tagged. Then I would set some rules for each meal, but then I have to go clicking each meal of each day to have it planned. It would be great to have some randomizer to automatically fill all the meals following the rules I've established, so I can have the whole month planned and I can set my shopping list and do the shopping for it. Also there are diets that include other meals over the day, like snacks (in spanish they are called "colacion") or a "merienda" which is like a lighter breakfast that you have around 4-5PM, some coffee and a toast or something like that. So it would be cool to have the ability to add or customize the available meals of the day, perhaps even set the time it should be eaten so the app can send a notification X time before it to start cooking. Im a really undisciplined person and need to have everything as structured as possible, so being able to have it all set in advance, and more granular and user friendly control for the wife approval factor (WAF) and even with reminder to get ready for each meal so I can finish what Im doing and make my time for cooking properly would be awesome and really help me to get my diet in order.
> Accidentally mentioned that in the shopping list one, whoops
> This would also be nice if it could integrate with iOS to automatically show in Reminders/Calendar.
> The new query filter builder probably solves one of my biggest issues. Filter by "last eaten" should be included. Another issue is that the rules are predefined but often, the user wants to build the filters just for the specific "event" and wants to see a selection of dishes to choose from. There is also no back button on the settings page. (Recipes could also be opened as a popup although this idea needs testing especially because of mobile.)
> Allow more powerful search queries to be built from the Meal Planner screen, such as those that are available from the Recipes screen. Let these queries be included in the recipe rules section, such as "OR" statements for tags instead of just "AND" statements.
> Hard to add recipe by name if you have many, we have ~100+ in each household
> A way to persist date preferences, eg I often want to look two days back and 14 days forward. Switching between edit mode and normal is confusing at first
> Meal planner rules. I want a mixture of protein during the week so i would like to be able to do the following: Only allow X* recipes with these () ingredient(s)/tag(s) per week/month/Y* days
> I believe it is not the best UX to have the fine list and than to swap to the edit view to start editing it. Especially if you plan on long term you have to select the date range and bla bla bla... Instead: one continuing list would be great where I can directly edit a day in time. Also a calendar view would be great. And last: I want in the future that the meal plan is defining itself using rules without any manual interaction. I plan to do this automation with N8N again but would be great to have this integrated.
> My wife said that her PWA logs her out too frequently. It would be great to somehow configure a long lived token method for authentication to securely eliminate the login. The meal planner works great otherwise!
> It is great already
> Good as is. Love it!
> The option of having the meal plan generated for a specific period. Preferably with the possibility to define which meals should be generated and how often a recipe should be repeated on the following days (because we often cook a dish for n days in advance (usually 2 days in a row)).
> The differentiation between the "Edit" mode and the "View" mode doesn't make much sense to me personally. Whenever I the "view" mode, I somehow expect that I would be able to drag&drop the meals from one day to another, without going into the "edit" mode.
> From an recipe, assign it to a day
> I would like breakfast/lunch/dinner breakdowns.
> I haven't used it much but can you can meals with other users?
> Able to subscribe via .ics for easy reference
> Some sort of learning algorithm (probably using the openAI integration) to look at recipes and automatically tag them. This would help when adding sides and mains!
> I would like a way to be able to check off meals. For example, I often plan out meals but have something come up and don't make them on a given day. It's then rather difficult to go back and see what recipes I had bought ingredients for. Perhaps, if unchecked, the meal automatically shifts to the next available day (dinner remains dinner, lunch as lunch, etc). Or, praise, there is a section to see skipped meals and quickly reassign to a new day.
> Have them (or anything, really) be accessible across households, if desired. I.e., my SO and I live in different cities, thus use different households for the majority of the time. However, when we stay at the others place (which then usually is for minimum a week at a time), it would be useful to be able to share things like meal planner, shopping lists etc for that time, without some workaroung (like an additional user or moving my or their user to the other household for the time).
> The meal planner works fine for entries that link to a recipe. For items that do not link to a recipe, there's no easy way to see the whole text as it's cut off after a couple chars in the mobile UI. The only way of reading the full text of the entry is by editing it. It would be much better if those items would be accessible right from the meal planner rather than having to dig into editing mode.
> I mostly plan for a whole month or more so I would like to have an custom range of days I can choose in the settings. Right now I set it to a month manually each time I open the planner. For editing it would be nice to have a button to move all upcoming meals for a day. Sometimes we skip lunch and then I have to move all upcoming meals by a day
> Meal Planner is not important to me. I use Mealie purely as recipe storage.
> Better integration with Home Assistant
> More intelligent recipe suggestions (e.g. based on recipes not made in a while, ingredients you are likely to have) to assist creating plans
> Add rules that recipes can only be repeated in x amount of time. But I mostly just add the meals myself and don't use the automatic selection, because my recipes are not properly tagged and categorized (I have it on my todo list).
> My wife is not using it, because we have lots of meals we don't have recipes for. It would be very helpful if we could plan a meal which does not exist as a recipe.
> Remember the default number of days. Option to set number of 'meals' in a day - mostly we just use dunner. Quick access to 'todays meals' from the homs screen
> Make it toggable. If the user does not use it, let him disable it.
> The only real suggestion is to maybe add time-ranges for the meals, like breakfast from 6-10 am, lunch 10 am - 2 pm, and dinner 4 pm- 8 pm. The only reason I say this is I use Home Assistant and the home assistant integration pulls the meals over as all-day events in the calendar and doesn't give a nice order for the day.
> This is a minor thing -- and I don't even know if I would use such a feature, if it existed: but if the meal-planner would allow for an easy (read only) export is an .ical calendar, I could add it to my usual calendar tools and have it available in the typical interfaces.
> Better random, ability to switch days easily. Or pause to push back a day
> Ability to plan a fish for two days at once.
> Add a "Feeling lucky" button. Random recipes for the whole week!
[Back to the overview](overview.md) or [On to Question 11](q11.md)

View file

@ -0,0 +1,141 @@
[Back to the overview](overview.md)
# Question 11: Any suggestions for how to improve the Recipe Timeline?
> Generally not used. Maybe could prompt to add to timeline after a recipe has been open for x amount of time but probably not useful. I was surprised that timeline comments are different from recipe comments so maybe making that clearer would be helpful?
> For me the timeline itself isn't that interesting, but I would love to be able to use the data in other ways. For example, I want to know how many times I've made a recipe, which recipes do I make the most or the least, etc.
> Scaling ingrediants is my biggest ask overall ofr sure
> It's not accuraten
> Maybe a way to import instagram recipe's (usually in the description of the video)
> maybe adding a comment together with the picture
> I like the timeline as it is right now but the only change I would make is to be able to add a picture after I have marked a recipe as done. Currently, I can only add a picture at the moment I mark the recipe and not after in an edit. I would also like to be able to press the photos to enlarge them.
> Instead of just the profile picture. Also add the name of the user. If there's multiple people who didn't set a profile picture, it's hard to tell who created that timeline event. Example: Recipe creation
> I didn't know it existed
> Not really, but I use it often
> default to reverse chronological order
> Make it easier to rate dishes and add comments directly from timeline
> Add the person's name without having to hover over their non-existent or too small to tell who it is photo.
> Again, really cool feature. I wonder if comments from the time line should appear as recipe comments. As most of the time I suggest things to myself as a part of recording that I've cooked the meal. Also being able to search the time line would be really cool.
> Its fine how it is.
> Make the pictures in the timeline bigger so that I can show off to my friends what dishes I have made
> disable it option
> I honestly don't use it. Haven't found a work flow for it.
> I am not sure what the purpose of this is...
> It seems good so far :)
> I don't see much sense in it, feel free to drop it.
> An option to automatically mark recipes in the meal planner as completed - forgetting to do this on most recipes in the meal planner makes the timeline mostly useless.
> Reverse the order so newer things are first (or at least make an option).
> Allow editing the date made. If a meal is made the day before or after it appears in the meal planner then the timeline will be wrong but can't be easily fixed.
> I don't need or use it
> I generally don't care when I added a recipe, just when I last cooked a recipe.
> We don't use the feature.
> I do not use this feature.
> we don't really use it
> Nope I think its fine the way it is.
> Never used it
> Be able to filter for “meals made” or “recipes created”.
> I only use this passively, but interesting to have, no notes.
> no, i don't use it
> Whilst I do use it, I do not use it consistently enough to be able to validly comment
> I'm still getting used to the timeline. Currently it seems like recipes appear on the timeline when I haven't cooked them yet, but I think I'm still getting used to how it interacts with the meal planner. Not sure if there's an issue there or not.
> this a cool side feature for me. love it but functionality is completely sufficent
> Do not use
> Not exactly timeline, sorry, but how about including in a recipe page how many times a recipe has been cooked
> Assume recipes on the Meal Planner were made, so they automatically also appear on the timeline after the meal planner date passes. Better search and filtering options. For example, what did we have last Valentines day? What was that potato dish we made last month? Being able to easily search for that type of stuff would be amazing.
> I haven't found the option to remove the creation of a recipe from the timeline. This would be useful if I could filter them out
> i dont see a need for the timeline
> Maybe being able to update the date? I entered a wrong date and couldn't update it (or didn't find a way to do it!).
> Not really, its a simple function.
> My only irritation with the timeline is that it doesn't show the name of who added a recipe, it only shows a picture. I have 1 user that refuses to update it with his picture.
> Just upgraded to 2.0 and I love this! I wish there was a way to edit the metadata on the recipes to show when they were actually added, in stead of just all imported on the one day that I upgraded
> Improve presentation, scale things down, make things interactive, provide more information (when hovering or clicking), improve loading time. I do not have found a use case for this feature but it feels like something that has potential
> For me, the recipe timeline is more important than the comments. And yet, it is not visible unless I click on a button. It would be nice to have an option for the recipe timeline to be shown directly in the recipe page.
> Could it be auto populated based on meal plan? I always forget to click "I made this"
> Smaller list view option for mobile
> One entry uses up a lot of screen space. I would decrease the size of an entry drastically. Also the image within an entry card looks a bit like an afterthought. I would move the user icon somewhere to the right an let the image got from top to bottom and have no border to the left.
> its nice, but in the time you collect new recipes, xou have only the dates from the creating
> Multiple images per recipe.
> Never used it.
> Build a mini timeline into the recipe page to see "committ history" (but for meals made haha)
> Option to hide, it isn't a feature we use.
> never use
> Keeps adding recipe as if "made", when in fact I have not yet made them. Maybe because I have it in my meal plan, but sometimes my meal plan changes...
> I would like that recipe timeline events would also show directly (without having to click on it and navigate away) on the recipe page itself. I.e., it could be shown as a comment? That would be really nice
> We never used the timeline at all.
> A way I would use it more often maybe is when at the end of a recipe there would be another button to say "I made it". Sometimes I just forget, especially when it's on the phone :)
> Recipe Timeline is not important to me. I use Mealie purely as recipe storage.
> Better integration with Home Assistant
> Faster loading times - never use it because it tends to be really slow
> It is difficult to use if I don't stick to my meal plan, which happens regularly. It would be great if I could go backwards in the meal planner with a button like "-1 week". That way, I would get a better overview of what I had as meals. Before I started to use the mealie mealplanner for the HassIO Integration, I used miro with virtual post-its for 2 years. So I was able to just scroll up and see what was for dinner 5 weeks ago and get some inspiration.
> Different view options would be nice. The alternating left/right orientation of posts is not as nice as a simple linear feed style timeline IMO
> More compact flow options
> Add an on behalf of function when adding recipes to the timeline
[Back to the overview](overview.md) or [On to Question 12](q12.md)

View file

@ -0,0 +1,283 @@
[Back to the overview](overview.md)
# Question 12: Any suggestions for how to improve the Recipes functionality?
> Some things are not intuitive to use when creating recipes. also the import of recipes is sometimes interesting. Generally it works well but its been a while I havent added a new recipe so idont remember any pain points I had other than the ingredients and organizing the sections of steps
> Add the option to make recipes private from other households.
> Generally quite happy with recipe search and display :)
> Editing the ingredients list when creating a recipe feels a little cumbersome and could use some UX love, but mostly I think it works well.
> Highlight the ingredient used in a step that when tapped or clicked on shows the amount to use for that specific step. For example, a recipe uses carrots twice, once in step one and again in step 2. Tapping"carrots" in step one shows a pop up that shows "1 cup" and tapping carrot in step two shows "1/3 cup"
> While cooking offer support, included timers, using AI to discuss/ask questions about current step, next step, etc.
> Scaling ingrediants
> I would love to have a shortcut / one step process to analyze recipes with OpenAI directly on import
> possibility to add more pictures. maybe also a picture per step
> I wish I could have multiple columns of ingredient units, for example, 30 grams or 0,5 dl powdered sugar, because if I share my recipes they may not use weight as a unit like me. If I then increase/decrease the amount of the recipe I would like both units to change.
> One of my user's is bad at including tags. Perhaps an option to remind users to categorize, tag, etc
> Ability to double, triple, etc the ingredient amounts
> I think it works pretty well. Our most used feature of Mealie.
> Lots of improvements were introduced in the last updates here, so I may only add: - The possibility of grouping steps. For example for some pasta recipe, have the steps for the dough in one group, and separately for the sauce, or perhaps have a "sauce" whole category and have the possibility to add a dropdown menu so I can chose which sauce I want to add to the recipe. I wouldnt go as far as making sauce recipes as an indepentand meal recipe because the meal planner would treat them as a meal and mess up with that, but have the option to "+add" a sauce recipe to a meal recipe, and therefore adding it own subset of steps and ingredients to the whole recipe. - Tools: this seems to be only another tagging function but it would be useful is there were a place where I can input the tools that I ALREADY have, and then if some recipe specifies a tool that I DONT have, it would be highlighted so I dont find myself with the issue when im already in the middle of cooking it. Perhaps even the option to add it to the shopping list
> I would love to be able to decrease a serving count. If a recipe does 8 serves, but I only want to do 4, unless I want to manually adjust the scale to 0.5, I can't use the +/- buttons to reduce serving count. Additionally, if I want to do 10 serves instead of 8, I can't use the +/- buttons, it goes up by multiples of the serving count. I understand this wouldn't be for everyone, so maybe allowing the option to change the behaviour?
> add button which can change recipe portions count (if i have recipe for 4 people i should be able to recalculate for 2 or 1)
> The auto import imports weirdly sometimes. Also, absolutely allow fractions (1/4) instead of only .25 as an example
> Maybe add video support, template for receipes type
> Anything that could be done to simply or automate parsing ingredient sizes so that multiples (2x, 3x the recipe size) could be done without so much effort.
> when creating a recipe via text input, don't add example ingredients and steps, always a pain to delete 1 cup of flower, etc.
> I'd like to have the possibility to add macros at the food level - and make recipes calculate the recipe macros from the food macros. Thanks.
> Import from pdf
> Importing, particularly parsing ingredients and setting amounts is a pain. I wish there was a way to at least set the relevant settings by default (as I usually want the ability to scale my recipes)
> I would love ingredients to be identifiable as logical entities in the body-text of the instructions so I can hover over them, and it will pop-up how much. E.g., in Chicken Marsala I remove the fried chicken from the pan and add butter before sautéing the mushrooms. I don't want to scroll back up to the top to see how much butter, that instruction step could be context-aware and able to show me how much butter to add. This could be achieved rudimentarily with a markdown like tag, or an 'insert intergradient' button that would give you a picker of the ingredients already entered in the edit interface. If users didn't want to use them, they could still type ingredients in plain-text as before. A more advanced implementation could looks for matching text and recommend 'smart ingredient' links for the user.
> Would like to be able to enter a recipe for 2 people, but then see ingredients for just 1 person, or 3 etc. Currently you are stuck at a minimum for 2 and multiples thereof.
> No, I love the app. Think it works great.
> On ipad, please dont make swiping all the way to the top refresh the page. Ive lost manual recipes while creating them.
> When clicking 'parse ingredients', it usually asks to save changes. That save doesn't include any actual changes from the recipe form. It would be nice to flow straight into 'parse ingredients' from the import instead of having to do at least 2 separate editing passes Include recipe as ingredient, with autocomplete and bidirectional referencing. ("Recipes that include this recipe:")
> Not sure how feasible it is, but it would be nice to have the option to turn off authentication for local deployments.
> Calculation of nutritive aspect of the recipes (like cholesterol, lipides, glucides) , based on the ingredient list. For example based on openfoodfacts.org or ciqual.anses.fr
> Ability to increase the servings and automatically multiplying quantities.
> I can't think of anything. It works really well and is a great way to manage our food.
> Improve visibility of ingredients linked to specific steps
> Ingredient categories. They would prob tie into https://github.com/mealie-recipes/mealie/discussions/1761 which would include ingredient sub-sections for sub-recipes, but they would be useful for recipes that have something like a cake and a sauce as well - especially when the cake and sauce both take sugar and it's easier to read when the amounts are split between sub-goals.
> Changing the serving size for fractions of the original is only possible by giving it a number and not the plus and minutes buttons. Typically over wants to decrement or increment by single servings.
> In ingredients list please add better support for non-english languages with more complicated grammar like Polish. We say: * 1 szklanka cukru / 1 cup of sugar * 2 szklanki cukru / 2 cups of sugar * 3 szklanki cukru / 3 cups of sugar * 4 szklanki cukru / 4 cups of sugar * 5 szklanek cukru / 5 cups of sugar * 6 szklanek cukru / 6 cups of sugar etc. * 1/2 szklanki cukru / 1/2 cup of sugar Antoher example: * 1 marchewka / 1 carrot * 2 marchewki / 2 carrots * 3 marchewki / 3 carrots * 4 marchewki / 4 carrots * 5 marchewek / 5 carrots * 6 marchewek / 6 carrots etc * 1/2 marchewki / 1/2 carrot So we have: * form for 1 * form for 2,3, 4 and fractions like 1/2 * form for 5 and more
> I often find that the brute parser is 10x better than the NLP ingredient parser, so Id love to be able to select it as my default and use it automatically on recipe import.
> Ingredient Calculation should work. X = Ingredient / Default Servings so you can calculate every number.
> more features to support baking. Like portion: small cake(16cm) regular cake (22cm)
> Option to create recipe from url with AI rather than scraper (in many cases, the structure for recipe is not followed by website).
> Being able to import from PDF, spreadsheet, etc from other recipe programs and/or wikis that are private
> It would be good to be able to parse by default, and also add common ingredient aliases. There are ingredients that are commonly described with multiple forms, e.g.: "ground pepper", "black pepper", "pepper" etc. and it gets tedious to have to keep on making the same sorts of replacements instead of just adding a few rules. Similarly, unit conversion would be brilliant. At a basic level, you could make it possible to define units that are automatically converted to other units (e.g. cups to ml). A big step up, but a tricky one, is converting between volume and weight measurements. This is appropriate when say using metric and measurements like "1 cup" of flour, which should become ~150g, not 250ml of flour. Conversion of units and weight/volume seems like an area where having some default values (or an importable source, like with ingredients) that can be added to would make sense. I did some work along these lines myself a while ago and found http://www.fao.org/docrep/017/ap815e/ap815e.pdf a useful resource.
> This is probably mealie's most refined section. I use it all the time. Haven't had any complaints about it in a while.
> I would love to have a text to speech option, so that it can read out tasks while I am busy cooking, it would be great to have a button that reads out one step at a time...and you can just click next or even better just say the word next....i have text set to large on my phone/tablet as my eyes are poor so I keep having to scroll down between steps....I am also a little OCD about touching my phone/tablet with dirty hands so I have to wash my hands between each step before i scroll down on the phone/tablet...sounds like a "me" problem I know.
> I feel everything works great. Sometimes the import is buggy but that's probably due to the site and not mealie
> Not sure if this is updated since I'm on v0.5.6 but being able to section ingredients is important - especially where you have duplicated ingredients (e.g. one for a sauce, one for the main course).
> I'd love to be able to universally enable ingredient amounts.
> - Allow private recipes to be shared with certain individuals or households (vs sharing a link)
> Actually really like this section and the main reason why I use Mealie.
> It would be great if there was some way to convert between metric and imperial units.
> Combining Recipes similar to Tandoor Recipes. Sometimes I have a base dough when baking which can be used with several different baking recipes. Combining and connecting them in recipes would be a nice feature so I do not have to switch back and forth between different recipe parts.
> Support for meals which include multiple recipes e.g. a roast dinner would include links to roast chicken, roast potatoes, braised cabbage and so on. Filtering of recipes should allow tags or categories to be excluded.
> Split ingredient and "amount of ingredient" to allow for eg. convert imported recipes in Imperial units to normal metric and to allow multiplying the recipe for smaller/larger portions.
> Adding and rearranging steps can be quite cumbersome when there are many steps, if there's some way to streamline inserting and rearranging steps, that could be handle.
> none, it's already great!
> I dont have any complaints about this - works fine for my needs. I dont use the OpenAI feature so might look in to this.
> Maybe a way to paste a block of text copy and pasted from a private facebook post, and it would (at least attempt) to parse ingredients and steps. Aside from that, it works pretty well as is.
> I was really excited when I saw that there was a new version, but there's really nothing of interest in it for me which is really disappointing. Out of all the improvements that could have been made, there's household sharing been done which seems pretty niche, surely most people like me just use it for their house. I would have loved to have seen conversion of imperial to metric automatically. I would like to be able to have my main screen show only the main meal recipes, not all the dessert recipes together, just some sort of better separation that you could use on your home screen for the food vs drinks and desserts etc. Coloured tags would be a bonus. An android app where you can press a button to keep the screen on while cooking would be welcome too. I forgot to add for the Meal Planner functionality in the previous screen... There's nothing that can be used for advanced meal prep, when you make 2 or 3 meals on a sunday for the week, you can't plan for that. Your options are only limited to breakfast, lunch and dinner.
> For recipe scaling, scale by multiples instead of by serving count when using the plus and minus buttons, including multiples less than one (1/2, 1/4, etc). Please include a reset button with the plus and minus (which would be the x1 multiplier I suppose). I am often making half a recipe and it would be nice to use the minus button to scale to 1/2, instead of opening the custom number input and calculating the serving size for half the recipe. Please do keep the custom scaling input though, that is very nice in some cases.
> Add images from the recipes that are inlined so they are part of the steps Replace functionality, allow a recipe that was imported to be updated from the URL. Ive sometimes deleted a recipe so I could add it back with better images and nutritional information and then the parser fails so I have to add it all back by hand.
> An android app would be so good. Using the browser is really annoying
> Nope. I love it the way it is :-)
> Link other recipes for base recipes or combine different stuff
> If it was possible to specify the quantities for, say, 1 person, and then in the planner specify how many people are eating and get the required ingredients in the shopping list - that could be very handy.
> Sub-recipe nesting would probably be my biggest point. Also, built-in timers would be convenient.
> Nope! Its great :)
> I end up with loads of stuff all mixed up, perhaps folders to help me sort it a bit? I think cookbooks might work in this way (just started using). Perhaps sort by number of people? I find the sort by ingredient filter doesnt really work would be amazing if this did.
> allow for half portions to be selected as well - many recipes are for 4-6 portions, so we have to manually scale them down to 1 or 2 portions before adding to mealie - having that done automatically would be great
> Unless I am misunderstanding usage ideas, I would like to see the cookbooks or silos to be possible to hide one group of recipes from another so the "recipe" for the soap I make does not go into the same silo and show up alongside my cok-au-vin
> automatic unit detection to adjust the size of protions
> more possible entries for nutritional values. adding note for amount food per entred nutritional values. OpenAI calculation for those. editing mode for uploaded or scaped pictures. we found that if pictures are in landscape mealie would rotate the picture in wrong (upright) position. no possibility to change beside adjusting the picture outside of mealie.
> Big ask but calorie & macro computation(s) related to the recipes.
> ADD UNRAID TO YOUR INSTALLATION GUIDES. Make official app on unraid community applications.
> When importing a recipe, it would be great if I could switch on ingredient counts and parse the ingredients right away before saving.
> some websites guard against recipe imports by detecting bots. would be nice to allow the importer to have some kinds of bot evasion options - changing the user-agent, pairing with something like flaresolverr, importing saved raw web pages, explicitly allowing specified local IP address (i see that's a security concern) to allow proxying, etc.
> Make it possible to remove recipes that you don't want anymore.
> A better method for PDF export. Currently the webp images result in large PDFs when exported (multiple MB when webp picture is less than 1MB).
> Give me a compact view!
> Have an option for a secondary measurment option which also scales when you increase the amount of servings. Like if the main option is "1 packet", then have the option to add "2 teaspoons" or "20 ml", etc.
> Works as intended for me
> Add support for Ingredients that change the plural based on the number so like 1 egg 2 eggs
> A cool feature would be to add reminders for some ingredients. Some recipes require X ingredient to soak in water 24 hours or another thing to be prepared well in advance. If the recipe is added in the meal planner, then it should send a notification based on what was configured in Settings that you should prepare that ingredient.
> Better initial parsing of ingredients, specifically automatic creation of unknown item and automatic breakdown of quantities. My partner doesn't like to take the time to clean up recipes so they're unable to take advantage of a lot of other functionality within Mealie as a result. If the recipe was imported via URL, option to save the original webpage as .html/PDF/similar to guard against link rot.
> Quick UI option to 2x,3x,1/2x, etc recipe ingredients
> Honestly love it as is. I go external to figure out the nutritional information for my recipes it would be nice to bring it into mealie https://www.verywellfit.com/recipe-nutrition-analyzer-4157076
> I love overall how recipes function and are laid out. The only thing that would be nice is if you were able to take a picture of a physical recipe and have the parser create the recipe, similar to the URL importer. I know that is a huge ask though and it is not a deal breaking by any means.
> A general tips or something like that would be useful to link, things related with food and cooking but that they are not recipes, for example: cooking temperatures of the meat, type of fat: pro and cons, cuts of meat and which ones are best for each case
> not really. it works great as it is
> Well, its not clear nor easy how to connect to OpenAI and take advantage of ChatGPT properly. I've managed to connect it but when trying to import recipes using it I fail to get it right. I've already tried to get ChatGPT on its free site to get me a recipe from a site which is not compatible with the scraper, and it was very successful to give me a script with Mealie format, although I had to create every ingredient first manually so it wasnt viable, but it would be great if it were possible to use GPT to scrape recipes websites and import them so we can then tweak them a bit if needed. An example is this page my wife loves but is not compatible so she always ends up complaining: https://www.paulinacocina.net/
> Add the option to enable ingredient amounts by default for all recipes
> I think I would just want to be able to share recipes across groups or copy a recipe to another group more easily.
> Print / Export functionality improvements: ### Print - Allow for padding changes or something like "force on one page" or "condense." The amount of whitespace is great for web but not needed and wasteful for print. - Allow change of header/Section formatting (center, left, size) - Allow for margin size changes "Leave space for notes on right" ### Export - I love the new Ingredients Copy function, would love something similar on the instructions side. That way I can easily paste it in a different document or email if needed. - Allow export as text only - basically the download as JSON version, but just the basics to be opened in notepad or word
> Support multiple languages for ingredients, let the user choose preferred names from aliases of foods/units, support abbreviations and aliases in manual ingredients input suggestions, parsing after importing without saving/refreshing the side has weird behavior, better local parsing (brute force add ingredient button does not correctly apply the same ingredient to other fields; local model? pdf/image parsing?), when exiting the editor indicate unsaved changes
> Improve bulk tagging functionality, e.g., let me search for recipes then tag everything that matches the search. Right now I have to scroll through all the recipes and bulk tag everything by hand.
> Hardness (discussed in discord and issue) that can be filtered by. Preamble "before you begin" step.
> Ability to get nutrition information on ingredients would be quite useful
> - Bulk import of recipes based on images. - A way to review all of the imported data before committing it to the database - Allow for multiple images when importing a single recipe.
> Remind me to use the feature that adds ingredients to steps because it's awesome but I always forget to set it up
> When I import a recipe, I want the option to automatically parse my ingredients and take me to the parse page.
> Editing - could we have a 'Save' button at the bottom as well, or better still, that sticks to the same position on-screen? I seem to be forever scrolling back to the top to save it, every time I make an edit. Printing - I sometimes print out a recipe to avoid using my device near the cooker(!) It would be good to have some control over the layout. For instance, the headings Step 1, Step 2, etc, needlessly take up space.
> What about a simplified WYSIWYG Editor for the step text? (My wife will never learn to use Mark down syntax..)
> NA, mealie is great. I appreciate the work done to help quickly build recipes snd ingredients from copying and pasting non structured recipes that cant be imported.
> In steps, make links to quantities or ingredients so I don't have to scroll up to the top again
> Serving scaling would be amazing
> Loving it, just keeps getting better
> That you can add x many ingredient fields.
> It would be great to have alternative ingredients. I like to use the 'ingredient amounts' and would like to be able to specify 'use *this oil* or *that fat* to fry'.
> Add photos to each step
> Overall, it seems to work well, Maybe a global setting for ingredient amounts?
> When editing a recipe I've not been able to find a way to remove the image, for example I imported a recipe from a URL and it added an image. I didn't want to use an image so I tried to remove it. I couldn't and needed to create a new recipe manually.
> Nutritional function improvements?
> not really. Easy to use!
> I could not find a way to add or remove units (like tsp, cups, etc.) so I've been stuck with a unit called "ts" when I made a typo when entering "tsp". Also have to have plural forms of units (cup/cups); maybe a place to manage units could have a checkbox to indicate "when quantity is equal or greater than 1, use plural form or add an s".
> When ingredients are not linked to steps having the ingredient list stick to the side when scrolling down the steps would help a lot.
> I use Mealie live while cooking, I hate the way it is scaling right now. I would love to have it just as multiplier and not with the "smart way" as it is right now
> I sure miss the native recipe OCR functionality. My main reason for using a recipe keeper was to digitize my cookbooks to make it easier to find recipes. The built-in OCR was a differentiator between Mealie and its competitors (and for whatever it's faults, it worked surprisingly well for me.) The AI implementation was both complicated to setup and didn't work (and I'm not interested in relying on a third-party service either.)
> Have the ingredient quantities enabled by default and supported by the importer
> I would love the required tools to work the same as ingredients. That is, have a counter (i.e., the recipe needs 1 oven, two pans, one small bowl and 3 large bowls) and especially, linking those to the steps. I love the "link ingredients to step" feature, because it allows me to really quickly see what I need for the current step without having to scroll (or touch the screen at all for that matter), but as of now, for the tools I still need to do that.
> Difficulty level (how difficult is it to cook)
> - Allow sorting (manually) of the linked ingredients of a recipe step. - Allow ticking (marking as done) of the linked ingredients of a recipe step. - Automatically save while creating a new recipe (to avoid losing progress). - Make it easier to rename/change existing ingredients in the DB. - Make it possible to clone an existing recipe. - Maybe it would make sense to have a linked recipe within a recipe. For example, a "cake base" that is used by several cakes. - Allow for multiple timers. This would be useful if several steps require a certain amount of time.
> Can't think of an improvement right now.
> Maybe making categories and tags more automatic? I am not sure if it's maybe too hard. But some recpies are called "Noodles with..." and I have a category "Noodles". Would be cool if something like that could be automatically parsed
> * Allow scaling ingredients to different servings ("4 serving(s)" appears clickable but does actually nothing). * Allow creating small variations of a base recipe without fully duplicating (e.g. "the recipe says this, but I usually do this instead"). Comments are too out-of-the-way to suffice. * Allow adding notes/conversions to specific ingredients (e.g. setting conversion rates of substitute ingredients: "1 clove of garlic is 0.25 teaspoons of powder", "the one onion the recipe calls for is about one cup of pre-chopped opnions" or just adding per-ingredient notes that are easier to access)
> I find the detailed ingredients somewhat awkward to use. (but thk you for all the work on mealy ❤️)
> Better integration with Home Assistant
> Link ingredients to steps. I think this is possible in tandoor and would be really great. But please keep also the main ingredient list, just links to the steps. It would probably be good to be able to link one ingredient to multiple steps, like e.g. salt or pepper.
> Could the recipe ingredient parser be built into the recipie editor - no need to navigate away to parse? Drah-and-drop recipe images? Perhaps allow a space to upload a photo of a meal 'as made'
> - ingredient scraper usually needs to be passed and manual adjusted. Not a big deal tho.
> Perfect
> Add an option to hide the 1-5 star ratings on recipes.
> Better UI/UX for parsing Ingredients, sharing Links with PWA imports instantly without the time to change the checkboxes, for parsed recipes allow to decrease the meal portions from 4 to 3 or 2 with plus and minus instead of doubling it or requiring to input something like 0.75 manually.
> Being able to reduce servings would be great. If a recipe is made for 4 servings, being able to see only 2 servings would be nice. I had another thought before, but cannot remember off the top of my head
> Two points that (to my knowledge) are also already discussed online would be 1. Timers linked to steps. 2. Recipes as ingredients or alternatives, with the option to add them to the Meal Planner / Shopping List with a single click.
> Fiddly part for me is to parse the ingredients and convert various units to grams. Not sure how it would work exactly but I think make use of llms. Eg a cup of flour = ?? grams
> Better UI flow
> I would like to see images treated as their own objects, instead of in-line. I always end up having to manually add styles to the img tag, otherwise the image takes too much space. Also would be nice to be able to disable images when printing the recipe.
> More support for sites with different formats. Or picture OCR
> No super happy with it
> Not really, it's great
[Back to the overview](overview.md) or [On to Question 13](q13.md)

View file

@ -0,0 +1,391 @@
[Back to the overview](overview.md)
# Question 13: Any other suggestions or feedback you have for us?
> Great Project, We love it !
> It's an amazing software. thanks for making it. has helped me organize my family recipes and be able to more easily find and make family favourites.
> I love the concept of mealie, great work so far, excited to see how it develops in the future!
> Honestly, keep up the great work! I've been slowly getting my family to use it and has worked for a meal or two so far! Thank you for the dedication to this project!
> Thanks for the great app!
> Import recipe from "betty bossi": e.g. https://www.bettybossi.ch/de/Rezept/ShowRezept/BB_BBZA110115_0004A-40-de
> For inspiration have a look here, I think it has a lot of nice features and the integration with AI is everywhere https://cooked.wiki/
> I would love to see caching / storage in mobile browsers / PWA, so that recipes are available offline. The performance of mealie could be better. I currently only have 88 recipes, but the initial load of Mealie takes 10 seconds. This should load instantly.
> First and most important:Mealie is really great. Keep up the incredible work! For my storage I use Grocy. Mealie is of course much better redarding recepies, but in Grocy I like the possibilty to show recepies based on what I have in stock or where only few items are missing or what needs to be used. It would be great, if there would be an easy way to link recepies and shopping lists between Grocy and Mealie, but I know this is probably more an API thing...
> I think this is a great app, thank you!
> It would be useful if I could use categories/tags/tools/food to do advanced searches for example, I want the dessert category and egg as food but to exclude strawberry in the food search. In other words, I would like to be able to select and deselect things to make advanced searches.
> Maybe I've missed this option, but I would like to be able to "share" recipe (or even dump the database of recipe, without login/config/...) with other Mealie users on a different system
> We're still learning how to integrate Mealie into our kitchen. Thank you for including OIDC. Some desired features: - Tag deduplication, & merging - Tag parsing. Some recipes have 'Chicken' others have 'Chicken soup'. Two different tags when looking for things with Chicken - Recipe deduplication. A good task for AI perhaps
> I love Mealie!!!
> No specific feedback other than a big thanks for your hard work! Kudos to all of you
> I love the program and like its functionality. I'm glad there is now an option to make your mealie recipes accesable without special links or login requirements.
> It'd be great if the login requirement could be ignored for LAN connections so that users at home do not have to keep logging back in - but only if it's possible to maintain overall security.
> Not really, mostly Meal Planner and Shopping List recommendations. I would love to have some sort of syncing functions so I can integrate it with notes, shopping lists and calendars. Regarding sync, having the meal planner somehow synced with my calendar could be great for planning my day, specially as the recipes usually have some expected time for the preparation, so for example: If I expect to have Lunch everyday at 1PM, and the recipe for my monday takes 45m to make, I would have an event in my calendar called "MEALIE Lunch: Spaghetti w/ Filetto" starting 12.15PM with a 30m before notification so I get notified and have time to round up my ongoing workm, be ready to start cooking and check I dont have to buy fresh ingredient. I dont know the technicals behind it but if syncing to calendars is too complex, at least as an intermediate step, having the option to export an .ics with the whole month and then each user can have it imported in the calendar fo their chosing.
> Love mealie!! I probably don't use it enough though. One thing worth taking a look at (not sure how technically viable it is, but) the recipe import often fails, especially for recipes in hebrew (which is my native language). I still use it to save recipes but it kinda misses the point. Anyway, thank you so much, and keep up the good work :)
> Keep up the good work, mealie is a great tool
> I use this with Authentik so pretty glad to see OIDC made it in (though I haven't had a chance to update my instance in a while). Just to be clear, I'll *never* use any of the OpenAI integrations. GenAI is a negative value add and I don't want it anywhere near my instance.
> Mealie is fantastic so far, I've only just started using it in the past week. It would be great if it had the option to group ingredients into sections, e.g. for a recipe with multiple components. Also when it scraped a recipe from a website it was able to tell the difference between a heading and an instruction step. It might already be able to do this but I haven't quite explored all its capabilities and if so, I apologise! Thank you for making such a fab service self-hostable!
> I am may missed the section for the Shopping List and this may be an impossible ask. But would it be possible to combine ingredients to reduce waste. For example: if i had 2 recipes for that use a 1/4 cup of milk and another that used 1 cup of milk, the shopping list would say 1-1/4 milk as a total purchase. the Mealime app performs this function as a reference.
> Thank you for making Mealie.
> THANK YOU. Thank you for your work. Thank you for putting us back on a healthier meal plan. It honestly makes a pretty significant difference.
> It would be nice to be able to personalize the instance a little bit more. I host this instance for family and friends and to be fair they don't really care what's under the hood. So, changing the title, the banner that appears when a link is shared, etc would bring a lot of value
> At the moment you can only have the text next to the logo in the top-left corner say "Mealie". For me, it would be nice if you could change that text to be something else (e.g. frank's bistro).
> Keep up the great work!
> Mealie is the only tool I've found that allows me to meal plan efficiently. I eat healthier and save money
> Absolutely fantastic application. My family depends on it!
> Keep up the good work. Me and wife love it alot.
> I was using it daily to import recipes from url, plan weekly meals. The dinner image would show on a home assistant dashboard what was for dinner that night. This broke with a mealie update. Mealie is still working but not grabbing the dinner (unknown).
> continue the way you do ;)
> I love mealie :D Thank you for providing it and making it better and better!
> Keep up the great work thank you! Mealie is fantastic!
> Thanks for making and maintaining this! It's revolutionised how we eat.
> Have you considered making recipes publishable via activitypub? That could be very cool.
> The Households filter is a lifesaver. Maybe add a filter to find recipes owned by a user to make it more granular.
> I love this project and it has absolutely made my love significantly easier, thank you. The ability to import a cert/key file to enable SSL would be great, either via the UI or yaml would be fine. This is a very odd and specific request but when importing from something like HelloFresh many of their ingredients are in units, how they ship them. If there were some built in way for me to define one unit of ingredient X = 1.5 tsp or similar for it to auto switch that when parsing, that would be amazing.
> Love the product! Such great work. We use it non stop for meal planning and shopping. Thank you so much for all your hard work in making such an amazing bit of software.
> No. It's been very useful to me. I'd love to contribute. Not a programmer but I am an IT professional
> When importing recipes (especially in bulk), it would be nice if the system notified you if the URL you are trying to import is already in the DB instead of just importing it and marking it with a (1). Or have an option to just not import duplicate URLs.
> AI is not for food.
> 1 - Ability for the Admin user to rename or delete wrong "foods" or "units" items. (today the only way I found is to use swagger). 2 - Management of "of" in ingredient list. (like in "1 kg of oranges " vs "4 oranges")
> Thank you for all the great work. Really enjoy using, and we rely on Mealie for our food planning 😁🍲
> Recipe as an ingredient https://github.com/mealie-recipes/mealie/discussions/1761 my kings and queens and all royalty in between.
> Please add a fully guide how to install mealie. I got lost with the env variables and was only able to set Mealie up thanks to guy I found on youtube that provided a standard docker compose file that worked perfectly for me. Why don't you provide a standard docker compose that people can modify? Or at least a full guide? Apart from that I completely love Mealie! Imprting recipes is amazing. It won't work in a few cases (plain text) which is something that you could optimize.
> Formatting recipes to parse ingredients AND automatically connect ingredients to the steps could be done with LLM/OpenAI integration, that would save a lot of time.
> Hover effect for all recipes is useless. Most of the sites i import from have just bullshit in the first section. Would be nice to have some themes or disable stuff like this.
> i personally dont use any of the planning etc. also i use another app for my shopping list. mealie for me is just a plattform to share reciepies with familie and friends, all thoose recipies we have for years in our famaliy. so we all have a place with recipies we all know are working great. something like chefkoch and co are flooded with bad recipies and nobody wants them. so using mealie as a managaer for shopping list and week planning etc is nothing we use at all becouse this would mean that everything lives in mealie, something like bring or similiar is way better for just that use case and mealie is "just" a plattform for private recipies what would be a nice feature is some kind of centrialized database a private mealie CAN push to and this way making recipies others would like to share explorable.
> Love Mealie! Thanks for making, sharing, and maintaining a really cool open source project :)
> Integration with Bring would be very nice
> an app for android would be perfect
> Have the meal planner select meals for a time-span, e.g. a whole week/month (excluding weekends).
> abandoning the project for another one which is similar and unreleased was a huge fuck up. Reliability is more important than flashy flashy by miles.
> thanks for the great work
> Thanks !
> A way to import a nice recipie i have seen on social media (e.g. Instagram). And also save the iamge/ video of it. I know its a large task, but it would be great.
> You do great work!
> Keep going. Mealie is really looking good right now.
> FANTASTIC APP!
> A small issue I have is being logged out when using mealie as a pwa on android through the brave browser. Just a little annoying when it happens but it doesn't happen that often.
> My wife loves this and enjoys importing recipes from the web when she has time to find them, but most of our meals are an established part of a set we have been using for years. Importing from other systems or through some sort of OCR tech in an app to grab grandma's cookie recipe would be more useful than scouring all the cooking websites and importing something that may never make it to the table again. Maybe that is just us, but the kids and jobs make recipe searching a luxury. Without a good recipe base, the other features are less useful.
> Thanks a lot for your great work you're doing with Mealie. I use it to store my recipes and manage my family's shopping list and it's so much better that managing everything in paper folders.
> Some bits of the UI are a bit slow, for instance adding a new ingredient has a huge typing delay when showing hundreds of other ingredients (I tried to profile this in-browser, but the tab crashed). It would be good to prioritise snappiness over fanciness. It would also be quite good to split complex recipes into multiple stages.
> Integration with Grocy would be nice.
> I've had some ideas to contribute but haven't had the time unfortunately. 1. When cooking, the timer "floats" and follows as you scroll down. 2. Multiple timers. 3. Visual warning when timer goes off. (had my pc connected to bluetooth so didn't hear it go off..) 4. Add pre-set timer to recepie
> I am very happy with the features for mealie. It helps me budget and make nice food for my family
> Keep up the good work
> Love it. So far, all of the updates have been positive. While there are a ton of new features that we'll probably explore in the coming year, the core functionality is still spot on . 🤞 for the future :)
> None at this time. Thanks for your work!
> Thank you for everything. I would like to find ways to contribute more to the project and the community. Mealie is now also in use by my parents' household and two co-workers' households since I should it off. My only other recommendation would be to have a better set of default food labels/units/categories/measurements. Or perhaps localised sets of defaults.
> I understand it's probably not doable but some form of Grocy integration would be so amazing.
> I´m astonished by the work you´v done already. Since certain circumstances I´m not able to fund the project, but hope it will change soon. Coud it be possible to habe each recepie analysed by AI, if it is keto, low-carb, vegan, etc.? Or maybe automaic mealpans for a certain type of diet? So one wil not miss their macros.
> Most of my recipes were imported from AllRecipes.com. I used to have an account there where I saved recipes, but the website has lost features and gotten progressively slower over the years. Once I found Mealie I imported all my recipes and ditched my AllRecipes.com account. Mealie works better than AllRecipes.com ever did, even in its hey day. Just having the ability to search my own recipes again is wonderful! I don't use the advanced features much, mainly importing from URLs, tagging and categorizing, and occasionally commenting if I need to remember alterations or tips. Thank you so much for this great software!
> love you keep it up
> You guys are amazing! Thanks again for all of your hard work.
> I'm a new user but I love it already.
> Would be nice to have a "I'm cooking setting that stops eg. tablets from sleeping for "Total time" for this recipe or default of eg. 30 minutes
> I need to look to see if this can be done already, but an accountless option would be nice, don't need an account for home use only.
> Just an idea, it would be cool if I could set requirements for recipes. For example making it required that a category and tag is set. I have set up my instance to add things to cookbooks from these but some of my users forget to add them, therefore they don't appear in the cookbook. If it were required then they wouldn't be able to save the recipe until they did.
> please allow the ability to disable/hide extra functionality throughout, we don't use a lot of it so it's just clutter. We don't use shopping list, meal planner, nor the timeline. All we wanted was a simple recipe creation + storage app and mealie does do this very well. We do use 'cookbooks' to separate group recipes made by me, made by my wife, internet recipes, family, etc.
> Great project. Thank you!
> I think the recipes page is really good, and I love using it for my cooking, and it makes me cook a lot more now. The other things like shopping list and meal planner aren't useful for me in their current form unfortunately, but I hope to be able to use them in the future. I'd never use a shopping web app because of the page refresh in a browser, so that would have to be in an app before I'd consider using it while I was at the supermarket. I also have to spend too much time converting imperial to metric quantities in recipes that I've imported and that would be a massive time saving feature to have them auto convert if I set up the ingredient amounts.
> So far I love Mealie and I hope you guys keep up the great work. You have made a fantastic product.
> Much better and clearer handling of administrative task. Things like bulk adding or removing tags and labels to selected items.
> I love Mealie. It's one of my most essential self hosted services right next to DNS and a password manager.
> Converting to metric would be so good! Also, being able to set the primary language as British English would be good. Ie. Fiber --> Fibre etc.
> Keep up the awesome work on this project. I am trying to get more family members into using it. But I started them with an earlier (less functional and feature rich) version. So I am trying to draw them back in as it seems to work so much better these days.
> We are generally very happy with the app and it's functionality. We are using it self-hosted internally on a Raspberry Pi and it serves our needs very well.
> Please make URL importer and recipe/ingredient editing/adding more user friendly. Often when importing I find errors or need to manually edit a lot myself, which makes it very clunky and dissuades my family from using Mealie. Thank you for a wonderful system!
> Keep up the amazing work!
> Nope, just thanks, your app rocks and has completely changed how we prepare food. You have helped us to be healthier and more organised, thanks.
> I love love love mealie. Temporarily had to stop sponsoring through Github - but will definitely responsor in the future. I appreciated incorporating OIDC. Happy that we can still see recipes without being logged in (was afraid this would disappear going into v1 territory). I love cooking but choosing what to make gives me analysis paralysis. Having a shortlist of thing I love right there in Mealie is great. My girlfriend uses mealie as well. We don't live together so it is a surpsie to find new recipes in there from time to time.
> Nice application, I enjoy it a a lot. Thanks for your work :)
> Mealie is great and has helped massively improve my diet. Inspiring stuff. Keep up the good work.
> I'm having some trouble with the OpenAI image parsing feature. The error messages indicate OpenAI isn't returning JSON as expected? This isn't a critical feature to me, so I haven't followed up yet, but it'd certainly be handy if this worked better.
> Thank you very much for your effort. you make our family life much easier cause we know have a central place for receipt storage which we mutual agree on. thats makes it a lot easier to find receipts we already did. also all the loose paper collections are gone
> No. I wouldn't mind telemetry as long as it was opt in by default.
> Keep up the great work!
> - Allow specifying ingredients measurement in recipe builder via acronym (typing in tsp instead of teaspoon) -Cache/Save recipes in client so that reactions can still be accessed if server/Internet is down (I assume this probably needs a proper mobile app to implement)
> Thanks for your great work. Mealie was a live saver when my main recipe website suddenly went offline. It started as an archive and is now my family's recipe book.
> very nice!
> Mealie is great! Thanks for developing it and making it available for free. It has improved our organization.
> Thank you very much for developing Mealie! Me and my wife use it for everyday meal planning and find it very useful.
> You are doing great work! I am super happy with mealie!
> Good job!
> It would be great there was a better way to display the dashboard in HA than to use an iframe and also to not have to type the password every couple weeks
> On bulk imports, it would be great if you could parse out the pasted step numbers.
> Love the project, use it daily as a family!
> Nutrition information for Ingredients to automatically build up to recipes
> Please add a "no login" Option. In a private household with 1-2 people it's annoying to login every now and then... I would prefer to use Mealie without a login, at least I wish I could have the option to do so.
> It's an amazing application. It improved my marriage as there was always arguments as to what to eat, who cooks, what we need to buy. Everything is organized, it removed a LOT of stress from my life.
> Every time I log in I get the welcome to mealie lets get started. I always have to click I'm already setup, just bring me to the homepage. I find this kind of annoying. I am not sure why I would want to setup after I have already done so. Maybe I am missing something.
> Great work love the platform
> I just want to say I absolutely love Mealie and you've done an amazing job! I'm happy to support such a fantastic piece of FOSS software!
> Might be nice to have a settings option to disable features you dont care about to reduce UI clutter. Helpful for less technical household users who just want a simple digital/self-hosted recipe book.
> I get lots of recipes from websites that require signing in. The recent addition of importing through HTML will hopefully improve my workflow a bit. A browser extension to send the full HTML would be even nicer.
> It is perfect for my use case. We use it to plan for the upcoming week and we use the pool of recipes that I have imported as inspiration. We use planner comments for restaurant names in order to have a complete timeline.
> It's a great app and I use it a lot more than I thought I would. Thanks a lot for it!
> Mealie starts to bog down heavily when there are 1000+ recipes.
> Thanks for the great work!
> My wife and I love this software, we use it every day for our cooking and we are always adding new recipes into it. Keep up the fantastic work!
> This software solves a problem I never even realised I had - where to collect all those recipes from books, magazines, websites and scraps of paper all over the place - and it runs an absolute charm. Thank you!
> Thank you for the amazing work you are doing
> Please make the WPA work as the web page on iOS, because the icons get lost and replace by generic rectangle, it's not usable for checking in real time the shopping list.
> Include support for other databases like Oracle.
> thanks for the hard work
> Great software, thank you kindly!
> It's such a useful app, thanks for all the hard work!
> update mealie from application
> The app has been improving steadily and I'm aware that we are in no position to ask for anything, I do believe that there is a lot of margin to improve and make it much user friendly and not so "power user only". The most important things here for me are the meal planner which should be smart enough to plan my meals and just tell me what to eat based on what rules I established, the shopping list because if I dont have the items to cook, I end up derailing and eating some delivery or breaking my rules, and of course the smartest scrapper possible so its easy to import recipes we like. From a person who is in almost constant need of a controlled diet, I can tell that discipline can be hard to keep, and Mealie can be a really powerful tool to keep it, and Im thankful for that.
> Love the project, it's the only way I enjoy doing groceries and planning meals in advance opposed to ordering out
> I would like to be able to switch between groups more easily, if there was a button to select a group. Right now, as far as I'm aware, I have to change the URL to access the different groups. Though, I haven't used it recently because of this issue.
> i enjoy mealie as well as my family since the beginning of the project. Thx a lot for your time :)
> The search improvements are huge!! Love the additions there. - Would love to be able to search by source domain - with recipes added via url. (e.g. "Mary's Test Kitchen" would return every recipe from the domain https://www.marystestkitchen.com/) there could be a matching section in settings to make it easier to read like that, or the filter would just show marystestkitchen.com, either is fine - Why do the foods in the list appear to be random? Couldn't they pull from the ingredients in all the recipes?
> I moved to Mealie from Tandoor, and I like the look and feel of Mealie much better. I host Mealie in docker, and every time I update the docker it wipes my database. I have to back up before updating, and restore after updating every time, which is probably a good habbit to have, but it would be nice to not have to every time. I don't know if it is my docker compose, or the way Mealie works. It is not a huge deal, but it is kind of annoying. Other than that I really enjoy Mealie, and have come to depend on it. Thank you for creating Mealie and keep up the great work.
> oh my gawd PLEASE let me change the color of the header on the mobile safari app. it drives me crazy that it's always orange ::tears:: But- love the app overall :)
> Provide (more) ideas/concepts for tags and categories to the user, restructure profile page: the amount of different things that would be more accurately described as settings are confusing, allow combination of NOT IN and IN in search, save language setting per user. Forgot to mention for recipes: provide a toggle to merge ingredients to see the total amount of an ingredient needed for a recipe. Similar to how it is handled when adding to a shopping list but should also merge regardless of note. This is useful when using sections. Also with regard to internationalization: internationalize/standardize servings and time. Also when internationalizing categories, foods, units, tags etc., don't make it dependent on the UI language setting
> Can you make PWA shortcuts available on iOS? If not, please provide documentation explaining this limitation. I tried and tried to get it to work, but it appears to be an Android-only feature.
> Take care of yourselves!
> PLEASE keep working on Mealie, my family has come to pretty much rely on it daily! I would even be willing to pay for a license as long as the project stays strong!
> I love Mealie. Please keep up the great work!
> I only use it for the basics, but Mealie does its job really well.
> Please continue! Mealie is a great system, we love it!
> I added my wifes feedback under the meal planner question, she doesnt like that she needs to login to often. Also, theres a longstanding bug that I believe is a a WebKit bug on iOS that prevents the screen from sleep function working when mealie is running as a PWA. Not your fault, however if it was possible to find a workaround to that maybe, that would be great. Thanks! Mealie has changed our lives, I cannot thank you enough!
> Thank you for this amazing project.
> I've tried to import recipes from Podio with the API, but I got many error messages. The API accepted data that caused issues reading the data, so I had to dig into the database to correct the information. Validation on the API should be added.
> Love the service! Thank you for putting it together!!!
> Some custom editing options for uploaded images might be nice. I'm honestly just super happy that this app continues to get love and development.
> While I love Mealie in general (thanks for the awesome project, btw!), I fell that the responsiveness of the interface could still be improved a lot (haven't upgraded to v2 yet, but didn't see anything in this regard). Especially on mobile devices and slower/low-end computers, the interface doesn't feel snappy and I find myself often waiting for it to do things. It might be because I'm using Firefox, which might not be a major development target/platform though.
> Really great app, my wife and I love it. I self host a few services but after Home Assistant this is probably our second most frequently used service. We also use the Home Assistant integration for Mealie and have announcements of what is planned for dinner. We also use a mixture of Home Assistant native shopping lists for non supermarket stuff (like the hardware store) and Mealie shopping list for food and drugstore stuff.
> Thanks for this wonderful product. I created an article about this projects and I added some extra functionality to my Home Assistant dashboard for it. https://vdbrink.github.io/homeassistant/homeassistant_dashboard_mealie After I shared my article in multiple social medias I see a lot more people who use it now also. Afterwards there is now also the hacs home assistant module.
> Thank you for all that you do!
> GG for v2.0
> its nice, but we are currently in testing-modus
> For the user-specific rating, it would be really nice, if I could look up the rating for each person (maybe only as admin?)
> In the Group admin pages, there is a checkbox for "Private Group". There is also one for "Allow users outside of your group to see your recipes". Both of those are presented without any explanation of what they are, or how they are different. Adding some text explaining what the different options do would be useful.
> Y'all are awesome keep up the amazing work. I use Mealie as my modern recipe book and love it
> Overall a GREAT app and am very happy with it.
> Would love to import raw PDF (no AI) even if it was just viewable and not parsed or searchable just to keep my recipe hoard all in the same place
> Keep up the great work! I have been using Mealie 5-6 days a week consistently for over a year, it's been a great help, a wonderful tool. I never "disable ingredient amounts", so if you can find a way for import recipe to automatically match up the units and quantities by default, it would save me time and be amazing, because I love cook mode, being able to increase/decrease recipe servings, and ingredient linking.
> It would be awesome if the API docs got some TLC. There are several endpoints that have no description or are rather confusing on how they work.
> Thank you for the great work!
> After importing a new recipe via URL and making a few changes (like assigning categories/tags), it requires me to first save, then re-enter edit mode before I can safely use the ingredient parser. Please consider having the 'parse' button prompt to save changes rather than saying "you're gonna lose everything!"
> Just a great tool.
> mealie is fantastic
> Manual recipe building is needlessly complicated due to two limitations: Mealie doesn't have an option to start with a baseline "blank" recipe state and it doesn't properly pass bulk-added ingredients to the parser, In the first case, this means every time I create a new recipe I first have to delete the first ingredient and first sample step so I can bulk add my own. Guess how many times I forget to do that. In the second case, if ingredients are bulk added then you must first save the unfinished recipe and then go back to editing it to use the parser. This should definitely not be necessary.
> I have it running on a docker container on a Synology and I'm not sure how to upgrade. I'd love some dumbed down documentation for installing, migrating, and upgrading.
> I wish the recipe parser would automatically go to edit mode after importing a recipe
> Great work!
> I just love the tool. The UI and UX is great (well, some settings are obscurley hidden, but one can learn that) overall, I am really happy. Thank you all a bunch!
> Currently I am using 2 different instances of Mealie. This is because for my deployment I NEED a way to completely segregate 2 different groups. Users from group A must not be able to see anything in group B. Some users from group B should be able to see recipes in group A. The groups should be auto-assigned through OIDC auth. Currently there is no way to have this functionality, because groups can not be assigned automatically from OIDC and there is no functional way to have a single user as part of both groups. At least this is so AFAICT, I was not able to get this to work. (If you wish to chat about this to me, I am in the discord. user: Gecko)
> Usability should be the main focus. The system is often used by non-technical people and they get lost quickly. Keep things simple and clear.
> It would be great to support the installation in a subpath. It looks like Nuxt has support for this in v3 using app.baseURL / NUXT_APP_BASE_URL.
> We're rather happy with Mealie despite it being not perfect. A quick detour to Tandoor brought us back to Mealie after a single day as it's just not fur us apparently. While Todoist worked for us a long time as a Meal Planner and Shopping List, Meal Planning has moved completely to Mealie. Shopping Lists are not quite there but I'm confident they'll get there eventually. Thank you for listening to user feedback and your continued investment into Mealie, it makes a real difference :)
> Thank you! You have greatly improved my planning and dealing with meals. I have like 10 recipe books and used to never find anything, but now it is so easy and central. Otherwise my autistic ass loves statistics. If you want to include something like a Spotify wrapped like "You cooked 20kg of noodles this year" that be hilarious
> Thank you ❤️
> Better integration with Home Assistant
> It's never really been clear to me the purpose of a 'group'. Perhaps this can be better explained in the UI when you would use it. Especially now there's another grouping of users in households. One other thing is that the PWA on Android seems to be much slower and less responsive than on IOS. Otherwise, love mealie and it's up there with my most used self hosted apps
> I really enjoy using mealie as a recipe database and mealplanner. I integrated it in HassIO so that I get a message every morning with whats for lunch and dinner and a notification when I need to start preparing lunch so that it's ready at noon.
> Please make a Android app like Mealient but with full mealie options
> Thanks for a great product - it brought harmony to our household 💖
> I really appreciate the work. This has made cooking for holidays (especially) so much easier. I look forward to seeing what is happening in groups in v2.0.0. I wanted to share with my family outside of my house, but didn't want them to see meal planning or shopping lists.
> Generally, this tool is great -- and I very much belief that it actually does reduce the amount of food-waste with us planning better what to eat. Very definitely, it saves us time doing shopping: )
> keep up the great work! :-) i love mealie and it is an integral part of our household :-)
> Thank you for providing this software!
> Thanks for the awesome app! Some thoughts: - A nice feature to have would be a native app widget so I could show a recipe on my kitchen tablet's home screen. - Another one would be an option to increase the font size of recipes, again for use on tablet. Thanks again!
> I do not like how Cookbooks are managed. I shouldn't have to set a tag for a recipe to be in a cookbook, there should be a different way to assign a recipe to one or more cookbooks. Cookbooks should be organized and displayed as though you picked up a physical cookbook and were about to go through all the categories - as displayed on your screen. Cookbooks should also display the total number of recipes as well as the total recipes per category. Please consider extending the functionality of cookbooks, how the user interacts with them, and how recipes are assigned to cookbooks. Thank you for the consideration.
> Keep on the good work
> Love it. Only thing I wish it did or did better if it is available, is when I import a recipe it creates a separate list of just the ingredients outside of the standard one that includes how much. It's hard to quickly view what I need when grocery shopping.
> I enjoy using Mealie and appreciate all the contributors
> Keep on trucking Brothers
[Back to the overview](overview.md)

View file

@ -0,0 +1,319 @@
[Back to the overview](overview.md)
# Question 9: Any suggestions for how to improve Shopping Lists?
> Take a look at OurGroceries, it is awesome. but i guess it works a bit differently, but its very quick to add
> Functionally it feels good in 1.x just some visual improvements would be nice. havent tried it out in 2.x yet
> I am on 1.12.0, running in a browser (no PWA since I don't have HTTPS set up for my homelab). On mobile, shopping lists feel like thet take up a lot of space for each item, with the item name and amount, description, buttons for editing, showing the recipe the ingredient belongs to, and drag symbol. When on mobile in the store doing the shopping I really only need a checkbox, amount, and ingredient name. Maybe simplify the list and add a button for an "advanced" or "edit" mode?
> Toggle showing or hiding notes imported from recipes.
> Sort the ingredients and add up the quantity
> Using AI to just describe the ingredients using natural language or upload a picture of the ingredients and then add them automatically to the shopping list
> Per-store ordering of aisles (so the list is in order of where I plan to route throughout the store)
> For me there's not much room for improvement, as I'm exporting the Shopping List into Home Assistants Shopping List. It does make sense for me, as Home Assistant offers me a local and privacy first voice assistant, that can add things to the Home Assistant Shopping List. Implementing such a feature would in my opinion not fit to Mealie. So I'd say, if you can improve the sync functionality for the shopping list in Mealie, it would be better than to try to "improve" to another voice assistant, this time for shopping lists andd recepies. Concentrate on what Mealie does really, really good: serving as a support app for all your food needs. But not for all the shopping needs.
> - add a pole to write down a shop name with option to group products by that name - automatically categorize product by their kind ex. cheese, brewery, etc., with option to group them together
> Make it look or feel more like Microsoft todo
> Ability to add shopping list items in a conveniant way via Alexa, Siri or other speech. Although it is somehow possible with tags, I like shopping list, where I can order categories in the same order they are in a shop (e.g. vegetables, meat, drinks, spices, etc) so I have my list in the order of the shop and i can easiely work from top to bottom of my list while shopping
> Maybe have some kind of household inventory in addition?
> I don't use the Mealie shopping list as the stores I buy at have their own digital shopping lists in their apps.
> Ingredient sterilization to make cleaner shopping lists
> To me fetching recepies via url and importing them is the reason to use mealie.
> I would like to see an option to set a custom label ordering per shopping list. Usecase: You have different supermarkets and for each a seperate shopping list. For the ordering of food could differ from store to store. Having the ability to re-order tags for a specific shopping list (market) would make handling this situation very convenient. A default order could be applied when creating new shopping lists
> Unfortunately I've yet to use it. But I really like the idea of having it available to me once I use mealie fully.
> I don't really use this feature (despite wanting to) as it is more convenient to share/sync a list with my partner on Google Keep
> I cant access my Mealie outside my lcoal network as its not exposed, so It would be cool to have some sharing function so I can send the list to my phone, to someone who is at the store or to some other app, perhaps some notes or Google Keeps app (It would be even better if could be synced with some of these apps). This is something that was on my mind but I recently saw that the copy function was added which is great!! I would recommend putting all the action buttons on top of the list so I dont have to scroll to the bottom in order to perform the actions as an UX thing. I would also look forward to have it integrated with HAOS as most mealie users are self-hosted users who try to run everything locally and integrate it as much as possible, perhaps have a card for it with a sync button and the possibilty to add items through some assistant or at least to read it out loud when requested.
> Unify measurements so there is no double ups of ingredients
> add nutritional data, very important
> I guess this would be more of a "units as a whole" thing, but I'd love to see a "Unit Conversion" thing as a whole. For example, in the shopping list, if Recipe A uses 500g Beef Mince, and another recipe uses 1kg of Beef Mince, the two would usually separate in to two Shopping List entries. It would be cool to see units combine where possible, like in the example above, the list would show either 1500g or 1.5kg Beef Mince
> connections to 3rd party app / grocy
> I'm still in the process of learning how best to use it, so not in a position to advise.
> Little icons for each item Favorites List of regularly shopped items clearer iconography while entering a new item
> 1. mass delete for Tags, i have over 300 tags and don't want to delete them all manually 2. look at this webpage (https://www.traeger.com/recipes/bbq-chicken-wings-3-wings) on the left hand side they have ingredient headings (with a different font size so it stands out) like Chicken Wing, Franks RedHot Sauce, etc. that way the ingredient list can be separated into groups. i currently add blank ingredient spaces to try and do this. 3. be able to click and drag recipe cards to cookbooks 4. be able to mass assign tags to recipe cards. for example if i had a BBQ tag and wanted to assign it to 10 recipe cards, it would be nice to do that instead of opening up each card and making the change
> Some lists are hidden by default, which is confusing I sync my lists with home assistant which is fantastic!
> I do my grocery shopping online, and my shop (Sainsbury's) has the option to paste my shopping list and do a search for each line. I would like an option to customise what the generated text from mealie looks like
> Ai to learn your preferred labels and then auto suggest a label for new ingredients.
> At the moment, I am not using it that much.
> Allow ingredients to be added to the shopping list directly from the recipe. This would save time for ad-hoc menus when you don't want to use the meal planner.
> Option to auto convert free text items to categorised via natural language parser Timeline/stats for previously bought items Prices especially if integrated with a supermarket price tracker Export for online shopping
> Create Pantry Section but this idea got no go-forward
> Continue to sort by labels but be able to hide them. Easier reordering on mobile.
> We'd like to be able to select the number of people a recipe is for when you add it to the list. Currently, most of our recipes are for 2 people so if we have guests we have to add the meal to the plan twice in order to get the correct amount of ingredients. Also, when you tick an item as done and it's attached to a recipe, that recipe information is lost if you untick it. This isn't great if you tick anything by accident, or need to check a ticked ingredient against a recipe.
> Combine like ingredients from two different recipes. Meaning if two recipes call for garlic there is just one shopping list item for garlic.
> I think the ingredients need to be added “correctly” from URL import instead of just a large string.
> I did really like the auto shopping list based on meal plan, but I understand the logic about selecting specific meals and ingredients from those recipes. Perhaps if you could press one button and refine a list from all the recipes in the current meal plan, that would be best of both. Also, the ability to re-order or sort shopping lists. Thank you.
> When adding recipes to the Shopping List, it will take about a minute to actually load the ingredients into the Shopping List section. However, the linked recipe will be visible at the bottom of the Shopping List page right away
> Export/Integraion to Home Assistant ToDoS (I use the as shopping list and don't have access to mealie from extern)
> The biggest think that I need is to be able to sync the shopping list between my account and my wife's account one thing that I love that is included in samsung food app is that it allows me to use the share button on a website to send the recipe to the app. I wish mealie had this same functionality
> It seems (I'm still a newbie) Shopping Lists aren't immediately shared, contrary to recipes, in a group. If that's correct, it's counterintuitive.
> 1. Please add more entry type/food type on planner. In Poland the main dish is at 1-4 P.M. It's called obiad but it's related to lunch. But because it's main meal, we usually have 2 dishes: soup (zupa) and the second dish (drugie danie). It would be great to have separate entry type for soups and the second dished. So in generally, please allow to define own entry types in planner (like in Tandoor Recipes). 2. In ingredients list please add better support for non-english languages with more complicated grammar like Polish. We say: * 1 szklanka cukru / 1 cup of sugar * 2 szklanki cukru / 2 cups of sugar * 3 szklanki cukru / 3 cups of sugar * 4 szklanki cukru / 4 cups of sugar * 5 szklanek cukru / 5 cups of sugar * 6 szklanek cukru / 6 cups of sugar etc. * 1/2 szklanki cukru / 1/2 cup of sugar Antoher example: * 1 marchewka / 1 carrot * 2 marchewki / 2 carrots * 3 marchewki / 3 carrots * 4 marchewki / 4 carrots * 5 marchewek / 5 carrots * 6 marchewek / 6 carrots etc * 1/2 marchewki / 1/2 carrot So we have: * form for 1 * form for 2,3, 4 and fractions like 1/2 * form for 5 and more
> I just submitted a survey, but forgot to mention this: dragging and dropping items to organize them within shopping lists is *extremely* clunky, especially if you use a trackpad or touchscreen. I often have to click on the box for moving the item at least 3 times before it actually lets me move it to where I want to. Then, its hard to get it to the right place if the list is long, because the screen doesnt scroll in the way youd want (it scrolls at a static rate but doesnt stop scrolling once its started unless the item is dropped, causing the entire process to repeat).
> I would love the ability to set a default order for how items with labels are ordered automatically when added. I organize my shopping lists by type (e.g., “Dinner List”) to make it easier when exporting items to the lists. But this means shopping for items can be tough, since I have to switch between lists. Being able to set it so that the “Vegetables” label automatically comes right before the “Grains” label would be amazing. I would also love a way to create or see a “parent” list that simply contains all of the unchecked items from all lists (as a stretch goal, it would be nice to be able to exclude lists) using the above ordering. Then I would no longer have to switch between lists.
> I would like to disable all this not realy usefull stuff via env.
> Mealie has done a great job. If you have to ask questions, I hope to support the<video>tag in the recipe steps instead of iframes, which will cause the video to play automatically.
> I think live sync'ing the checkboxes on a shopping list would be cool, we often grocery shop together, and with Mealie, it's challenging for us to "share" a shopping list/both use it at the same time (having to constantly refresh the page, checkboxes not syncing, etc.). I haven't updated to v2+ yet, so maybe this is different/improved with Households!
> Big Stretch... it would be awesome if there was a plugin architecture to support purchasing groceries from stores that have API's available i.e. Kroger in the US has a fully documented API to support the writing of a Kroger Shopping plugin to let you take everything that you need to shop for and one click "add it to my cart at Kroger" or even "buy these things and schedule them for delivery or pickup"
> Integration of "Bring" would be great. Bring is a german shopping list app: https://www.getbring.com/
> Introduce a "Pantry List" to keep track of spices, rice, flour and other non-perishables. Then add the option to subtract used amounts from Pantry List instead of having to cross them out from Shopping Lists generated from Meal Plans. Pantry List could also serve as foundation for a "Suggest a recipe" feature in meal planning, to suggest recipes based on items already contained on the Pantry List - e.g. Pantry: 3x cans of chopped tomatoes 500 g pasta Suggested recipes: Spaghetti Bolognese ...
> Maybe space it out a little more on Mobile. I sometimes tap the wrong ingredients as they are close together.
> Have the shopping be more instantly syncing. If I check off an item in the list. The app should reflect that a little quicker on my SOs phone. A second thing related to shopping is some way to keep track of expiring items like milk. Maybe have a place to enter the date of expiration in so when shopping you can easily see if you need to buy a new one. Also a small note about the new update 2.0. I don't really like the units in the shopping list now. I ignore them/remove them when adding to the shopping list from a recipe.
> android app
> It would be ideal if shopping lists would be accessible offline, i.e. without a connection to the Mealie server. Closing the PWA somtimes causes it to "un-load" the page and you aren't able to open it again offline. I understand that this is probably difficult to realize with just the PWA, so just keep up the great work you're doing with Mealie!
> Sorry, I haven't tested it in a few months. I tried early implementations, and ended up switching to AnyList. I will revisit and provide feedback in discord. Off the top of my head, the reason why I switched to anylist was: - A way to add to the list with voice assistant - Grouping of ingredients into shopping aisle sections.
> I have not been able to sort the items on the list. Firefox, android. When I move them, they move back after a couple of seconds.
> The ability to mark certain items that are not linked to a recipe in such a way that they can easily be added again later with a single click. For pantry staples that you buy every couple of weeks e.g flour, milk, cereals it would be nice to not have to type them again every time.
> Save ingredient labels when they are edited
> As I'm still on v0.5.6 I haven't tried out new features so I'm not sure where this is at. The best case scenario would be to use a meal plan to select recipes, then build and aggregate the shopping list based on all ingredients. Structured ingredients is required for this so the shopping list includes units of each ingredient.
> They are great! We have two lists: "This Week" and "Next Week". It works really well in PWA when in the grocery store.
> Automatically split ingredients into sections; produce, canned, frozen etc. (if this already exists it not well documented)
> An ability to add the shopping list items to another app (Apple Reminders, etc) would be nice
> Make an integration with Grocy so Mealie can see what you have/do not have and plan accordingly.
> Allow labels to have a custom order (so that I can order them in the order I shop in the supermarket)
> Unifying ingredients automatically and then apply nutrition calculation derrived from a standartised database.
> render list as text for copying from browsers which prevent clipboard interaction when serving over http option to copy as text without quantities
> I have no need for online shopping lists. I prefer it on paper as I use my phone to scan and pay goods in the supermarket.
> My version is a bit old, so maybe it has improved already, but an easy way to clear the list without having to delete and recreate a new list. Also, when adding items to the list, if there's only one list, just use it rather than having to select it.
> I've honestly not used it at all because I don't need to. Because of that I cannot make a suggestion. Sorry.
> Yes, it should be as close to Meal Lime as possible (the app). When you create a meal plan all recipes automatically by defualt add their ingredients to the shopping list. If you delete a recipe, it removes its ingredients from the list automatically. I suppose ideally this would be a toggle "Automatically sync shopping list with Meal Plan" or something...
> allow a way to disable it hiding the option - we don't use it.
> It's not as full features as grocy, which I use as my shopping app.
> Source recipes are currently tracked on shopping lists before items are checked (marked complete). I often would like to know which recipe my completed shopping list items belonged to. Keeping the source recipe list in a separate list of completed recipes on the shopping list would be handy.
> Quicker to add food instead of just notes
> I currently use grocy for shopping lists because I can categorise all products so when I'm shopping it's easy to go aisle by aisle. There's also an app as well and using mobile browser is annoying. It would be handy to have shopping list in the same app as my recipes, but unless you could match the functionality of grocy then I won't be using it in Mealie.
> Sync to Bring
> The ability to manually re-order the shopping lists.
> An integration with CalDAV so that the shopping list can sync with Apple Reminders.
> It's UI/UX, cannot provide details in text field
> Export as string so that you can paste into into a chat
> By merging similar items, I think this happens in some cases (perhaps if something is close and the app is not sure it could check?), maybe suggestions for items you use regularly. Group items by type (e.g. veggies, baking, tinned goods). Group items by when you need them (e.g. do I need this today or next week).
> Better grouping of ingredients added from recipes
> Have the option to combine/not combine items. if I have lets say two receipes each needing 1KG of chicken wings, having the option to show it as 2KG, or 1KG shown twice but grouped perhaps with recipe next to it so when shopping the chicken wings which are all in one spot, can be purchased at once rather than jumping around
> Grouping items by type of ingredient. I.E. Vegetables. Makes them easier to gather when in the shop.
> I'd like to be able to export/ merge the lists to other apps, such as Google Keep, so I can use the Mealie feature alongside Google Assistant.
> Integration of third party apps like bring. i think the shopping list is a really good feature, but there is almost always more to buy than groceries. so to us there happened two things (1) we wrote a written shopping list (default) (2) switched to bring app reason for bring: we use mealie hosted locally not accessable from the internet. beside avaiable vpn the mealie shopping list is to unconvient to reach
> The ability to parse and merge ingredients from recipes. So say if I add two recipes to a list that both need garlic. One says two cloves and the other says 4 cloves. I don't want two separate entries in the list. Personally I don't really want the amounts in there.
> None come to mind. Very handy as-implemented.
> integration with flipp for best prices.
> It would be cool to sync them with external services, like bring. I only Idee mealie for food related shopping but not for stuff like cleaning supplies. Using two apps while shopping is a bit cumbersome.
> Make it so you can organize the list by store section (in addition to category).
> Add price of ingredient, brand, store bought at
> My main use is there is no good cross platform way to shop with my girlfriend while being able to split up. Mealie fixes this, we make a list and split up knowing checked items will update instantly, no reloading the page. I wish common foods were already included in the system Maybe keep an ingredient history so when I add lemons I can see "5 lemons were added in the last week".
> When adding multiple recipes for the week, if they use the same ingredient, it would be nice if they combined.
> sectioned by ingredient type (dairy, fruit, veg, etc) - maybe this happened in v2?
> Sorting by ingredient name. There's recipes that require 1 carrot, another that requires 1 cup of carrots, it would be a lot easier to see what needs to be bought if all ingredients are grouped. Sure, for recipes we should have the same measuring unit, but it's not always easy when managing hundreds of recipes.
> Integration with Google Home for adding to list
> Better initial parsing of ingredients into discrete amounts/items (my partner never cleans up their recipes after importing, so they cannot take advantage of shopping list, scaling, etc.) Permission support to mark a list as shared between users or private. That way different users can add to the same shopping list if/when desired, but if cooking something as a surprise (birthday, etc.) they can add ingredients into a private list. To be clear, the biggest thing that can be done to improve shopping list is actually not to do with the lists themselves but with the ingredient parsing. If that can happen automatically and more reliably, both scaling and shopping lists benefit. Anything else is just an enhancement.
> I don't really use it and would not find it usefull unless it would link to the android shopping list app I use (called Shopping List)
> If there was an integration with Walmart+ Id use it forever
> Reordering of the items is not possible
> At one point we accidentally removed all entries from our shopping list just by clicking on the trash icon. A confirmation dialog here would be very helpful, to avoid this.
> Not really sure why but after some days the sessions logout in the phone using PWA although the checkbox remember me is marked when logging in
> Make it work similar to the app AnyList (https://apps.apple.com/us/app/anylist-grocery-shopping-list/id522167641) or better for spouse/family approval factor. :) Thanks for the good work
> Add a way to right click on a recipe ingredient and add to a shopping list.
> it would be nice if it could be deactivated if you don't use it (in the settings)
> The offline mode is not really working pre v2. I have not checked v2 yet though. To be honest, I never saw a good offline pwa yet. They always break apart after some time. I can imagine that an iOS / Android app will yield better results. In addition, we also use the apple watch app from our current shopping list app, that would also require an iOS app for mealie I think.
> First thing would be the possibility to export it to google keep or some notes app, because my instance is not exposed to the internet, so when Im actually going to the store, I cant access the list. Therefore it would be nice to have some sync function to have it synced to some external notes app or to at least have a share button so I can send the list to my wife when she is at the store. Its not even possible to select the text and copypaste it. No other change I can think of right now
> Adding recipes from the meal planner does always reliably add all the recipes as linked. Otherwise it'd be cool to have an option for the meal planner to automatically add 2 portions of all recipes
> If there was an app or easy way to integrate into iOS notes/reminders, that would work really well for me.
> Offer prompts to combine ingredients that are the same or are similar - like how contacts lists say "want to merge Sam Rockwell and Samuel Rockwell?" Prompt with "Want to add 1 onion with 1/2 cup onion, diced?" Then the result would be "1 onion and 1/2 cup onion, diced" in one line.
> Make it easier to quickly type multiple entries (using enter to save, have a more natural order of entry fields). In that context also, include abbreviations of units as search hint.
> Make shopping lists easier to navigate to on mobile PWA, such as allow the shopping list to be opened when the PWA is first launched, so that it opens automatically when I open mealie at the supermarket. Allow the user to move items from one shopping list to another. It looks like there is a "Transfer" function, but it does not work for me. Simplify the UI for adding items, or explain the concept of notes vs. foods better.
> Make a print dialog, which removes everything from the page except the pure shopping list.
> A fast way to open your default list
> When I add an ingredient that is a duplicate of an ingredient that has already been checked off, I want to remove it from the checked off list. Right now, duplicates are only removed if both entries are in the unchecked shopping list.
> merge same ingredient, different unit items into one line
> Try to connect similar ingredients
> I'm currently on it to obtain the shopping list via N8N in order to transfer it into Microsoft To Do App. Because the ToDo App is our central app to maintain all! shopping activities. Using Shopping List in Mealie would require to start swapping between two Apps/Lists. So, what to improve? Integration/Ingestion (automated) of Shopping Lists into other Services, e.g. Microsoft ToDo. 😉
> Recently I have been getting a "browser does not support copying to the clipboard" error. It seems to happen from all my browsers thought the main one I use is Falkon.
> It would be nice if it removed linked recipes once they passed from the meal plan. I love the copy button as text button which I use constantly.
> This is my favorite feature. I imagine it would be very difficult to pull off in the code. But would be amazing if it could detect small changes in how ingredients are listed and pulled from recipe imports and consolidate them into the same phrase. (ie.. "1 small egg and 1 egg") so that it could combine the same ingredients for multiple recipes into one line (2 eggs) into the shopping list. It would be less manual editing to create the list. But possibly an easier suggestion to implement would be to automatically uncheck general use spices. I imagine we usually already have those so there is no need to manually uncheck from shopping list on adding a recipe.
> When I make lists by hand I will often put the items in the order I go through the store, eg produce first. It would be nice if I could define a category sort order that would apply to all shopping lists by default.
> If no list exists then create one automatically when I add ingredients from a meal plan I just put together. It is really not a big deal at all, but will save me a click or two.
> Bull add feature similar to recipe ingredients
> I'm always irritated when I click on a list item (with the intention of editing it) and it is directly marked as done. Then I rediscover the edit button on the right again. For me personally the checkbox is the call to action button for the user journey of checking off an item. I would also like to click and hold to drag an item instead of needing to grab the handle on the right.
> dont use it till know, but maybe for the x-mas seasion for the backing
> I want to easily export into my ios reminders app
> I would like to be able to click on ingredients in a recipe, and say "Add to Shopping List" Right now, I believe it adds all of the ingredients, regardless of what's selected.
> Some persistence that tracks checked off boxes across sessions if that is not a thing
> Auto complete for checked off items to re-add without searching for it. Manual sorting of lists
> Native Apps Offline usage for Apps Automatic Sorting into Categories
> I don't use them enough right now. When adding items to a list, removing things in brackets , e.g., tbs garlic (cut) would be nice. WOuld be just tbs garlic. Or something nicer like that. And merging items in the list would be great too!
> all good
> Implement bring implementation (without mealie being exposed to the internet, see https://github.com/felixschndr/mealie-bring-api)
> A recently checked option that displays any items checked in the last 30 minutes or so. Would be very useful in store to help reduce fat fingering. The current checked item list can be used that way but it isn't as timely so not always the best.
> We use a google keep list for our shopping list because we can add items with our voice via google home. So either integrate it into keep or add it as a feature that google home can add directly to.
> Make it easier to organize list order. We try to order it by aisles and in the phone it can be difficult to reorder them
> Have them (or anything, really) be accessible across households, if desired. I.e., my SO and I live in different cities, thus use different households for the majority of the time. However, when we stay at the others place (which then usually is for minimum a week at a time), it would be useful to be able to share things like meal planner, shopping lists etc for that time, without some workaroung (like an additional user or moving my or their user to the other household for the time).
> Not sure how to do them right, but the experience is very off for some reason (or rather the sum of many). We're still doing our weekly shopping planning in Todoist that holds 3 broad categories (2 different shops and one for meat). - Adding recipes to a list is not something we'd do. We usually have half the ingredients (or more) at hand already and just need a couple. - Jumping between lists is clumsy. When we add items to the list, we jump between out "categories" (which are held in different lists. It's hard to think of anything that is bought at shop A while remembering the items that come from Shop B. Having a back button in the UI doesn't work well for this workflow, a list of tabs in the top to jump between lists easily would be much better for this. - The shopping list is very unforgiving to mistakes. Deleted an item? To bad, it's gone. Any change to a list or an item needs to be reversible.
> Maybe an integration with Bring or similar shopping list apps. I also buy things outside of recipes, that way I could combine them
> Shopping Lists are not important to me. I use Mealie purely as recipe storage.
> Better integration with Home Assistant
> Ability to have a default ordering of categories for new lists
> All of my recipes don't have ingredients parsed, so the shopping list is quite complicated to use. I write my shopping list manually in the nextcloud tasks app and use it with tasks.org on android. Also I recently started to use grocy to track my inventory, so I'm planning to write some script to combine the shopping lists and save it to the caldav server. Something with a simple drag'n'drop webinterface. I still like mealie for recipes way better than grocy :-)
> No, its great i think
> Make it quicket / faster to input ingredients overall - possible 'quick add', or add from home. Remember the default layouts and sorting of the list - label sort. Easy way to update labels on food from the shopping list - or link to unlabelled food
> - adding nutritional tracker
> Add Nice icons to catégories/foods Make it raster or an apk
> Feature: Copy paste ingredients for to do app
> Make them toggable. Not everyone uses them, and it's a UI element which could be removed if the user does not use it.
> Sync it with Bring/Alexa would be very cool (I dont use shopping lists because I prefer Bring)
> Yes, it would be great if it could combine the totals for all food items for all of the recipes added it to the shopping list. For example, if I add 2 recipes and the first needs 1 cup flour and the other needs 1/2 cup flour, it would be nice to have a single line of 1.5 cups flour. This would be especially helpful for planning Holiday meals. The second suggestion is less helpful, but being able to categorize the shopping list and then group the food items would also be nice (produce, dairy, meat, soups, etc.) to make it more efficient while shopping.
> Make it more like buymeapie it is easier to use, esp. when modifying the list on my phone while shopping.
> I only use it once a year at Thanksgiving when I'm making a lot of food. It seems fine.
> Integration with other shopping list providers like Bring! (https://www.getbring.com/en/home) or others.
[Back to the overview](overview.md) or [On to Question 10](q10.md)

File diff suppressed because one or more lines are too long

View file

@ -48,6 +48,7 @@ markdown_extensions:
- name: mermaid - name: mermaid
class: mermaid class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format format: !!python/name:pymdownx.superfences.fence_code_format
- pymdownx.details
extra_css: extra_css:
- assets/stylesheets/custom.css - assets/stylesheets/custom.css
extra_javascript: extra_javascript:
@ -84,12 +85,13 @@ nav:
- OpenID Connect: "documentation/getting-started/authentication/oidc-v2.md" - OpenID Connect: "documentation/getting-started/authentication/oidc-v2.md"
- Community Guides: - Community Guides:
- Bring API without internet exposure: "documentation/community-guide/bring-api.md"
- Automate Backups with n8n: "documentation/community-guide/n8n-backup-automation.md"
- Bulk Url Import: "documentation/community-guide/bulk-url-import.md"
- Home Assistant: "documentation/community-guide/home-assistant.md"
- Import Bookmarklet: "documentation/community-guide/import-recipe-bookmarklet.md"
- iOS Shortcuts: "documentation/community-guide/ios.md" - iOS Shortcuts: "documentation/community-guide/ios.md"
- Reverse Proxy (SWAG): "documentation/community-guide/swag.md" - Reverse Proxy (SWAG): "documentation/community-guide/swag.md"
- Home Assistant: "documentation/community-guide/home-assistant.md"
- Bulk Url Import: "documentation/community-guide/bulk-url-import.md"
- Import Bookmarklet: "documentation/community-guide/import-recipe-bookmarklet.md"
- Automate Backups with n8n: "documentation/community-guide/n8n-backup-automation.md"
- API Reference: "api/redoc.md" - API Reference: "api/redoc.md"
@ -97,6 +99,7 @@ nav:
- Non-Code: "contributors/non-coders.md" - Non-Code: "contributors/non-coders.md"
- Translating: "contributors/translating.md" - Translating: "contributors/translating.md"
- Developers Guide: - Developers Guide:
- Building Packages: "contributors/developers-guide/building-packages.md"
- Code Contributions: "contributors/developers-guide/code-contributions.md" - Code Contributions: "contributors/developers-guide/code-contributions.md"
- Dev Getting Started: "contributors/developers-guide/starting-dev-server.md" - Dev Getting Started: "contributors/developers-guide/starting-dev-server.md"
- Database Changes: "contributors/developers-guide/database-changes.md" - Database Changes: "contributors/developers-guide/database-changes.md"
@ -104,3 +107,7 @@ nav:
- Migration Guide: "contributors/developers-guide/migration-guide.md" - Migration Guide: "contributors/developers-guide/migration-guide.md"
- Guides: - Guides:
- Improving Ingredient Parser: "contributors/guides/ingredient-parser.md" - Improving Ingredient Parser: "contributors/guides/ingredient-parser.md"
- News:
- Surveys:
- October 2024: "news/surveys/2024-october/overview.md"

View file

@ -104,9 +104,12 @@
} }
const response = await actions.updateOne(editTarget.value); const response = await actions.updateOne(editTarget.value);
// if name changed, redirect to new slug
if (response?.slug && book.value?.slug !== response?.slug) { if (response?.slug && book.value?.slug !== response?.slug) {
// if name changed, redirect to new slug
router.push(`/g/${route.value.params.groupSlug}/cookbooks/${response?.slug}`); router.push(`/g/${route.value.params.groupSlug}/cookbooks/${response?.slug}`);
} else {
// otherwise reload the page, since the recipe criteria changed
router.go(0);
} }
dialogStates.edit = false; dialogStates.edit = false;
editTarget.value = null; editTarget.value = null;

View file

@ -34,12 +34,6 @@
</v-tooltip> </v-tooltip>
</div> </div>
<RecipeTimerMenu
fab
color="info"
class="ml-1"
/>
<RecipeContextMenu <RecipeContextMenu
show-print show-print
:menu-top="false" :menu-top="false"
@ -53,7 +47,6 @@
:recipe-id="recipe.id" :recipe-id="recipe.id"
:recipe-scale="recipeScale" :recipe-scale="recipeScale"
:use-items="{ :use-items="{
delete: false,
edit: false, edit: false,
download: loggedIn, download: loggedIn,
duplicate: loggedIn, duplicate: loggedIn,
@ -63,6 +56,7 @@
printPreferences: true, printPreferences: true,
share: loggedIn, share: loggedIn,
recipeActions: true, recipeActions: true,
delete: loggedIn,
}" }"
class="ml-1" class="ml-1"
@print="$emit('print')" @print="$emit('print')"
@ -88,7 +82,6 @@
import { defineComponent, ref, useContext } from "@nuxtjs/composition-api"; import { defineComponent, ref, useContext } from "@nuxtjs/composition-api";
import RecipeContextMenu from "./RecipeContextMenu.vue"; import RecipeContextMenu from "./RecipeContextMenu.vue";
import RecipeFavoriteBadge from "./RecipeFavoriteBadge.vue"; import RecipeFavoriteBadge from "./RecipeFavoriteBadge.vue";
import RecipeTimerMenu from "./RecipeTimerMenu.vue";
import RecipeTimelineBadge from "./RecipeTimelineBadge.vue"; import RecipeTimelineBadge from "./RecipeTimelineBadge.vue";
import { Recipe } from "~/lib/api/types/recipe"; import { Recipe } from "~/lib/api/types/recipe";
@ -98,7 +91,7 @@ const CLOSE_EVENT = "close";
const JSON_EVENT = "json"; const JSON_EVENT = "json";
export default defineComponent({ export default defineComponent({
components: { RecipeContextMenu, RecipeFavoriteBadge, RecipeTimerMenu, RecipeTimelineBadge }, components: { RecipeContextMenu, RecipeFavoriteBadge, RecipeTimelineBadge },
props: { props: {
recipe: { recipe: {
required: true, required: true,

View file

@ -7,7 +7,7 @@
:elevation="hover ? 12 : 2" :elevation="hover ? 12 : 2"
:to="recipeRoute" :to="recipeRoute"
:min-height="imageHeight + 75" :min-height="imageHeight + 75"
@click="$emit('click')" @click.self="$emit('click')"
> >
<RecipeCardImage <RecipeCardImage
:icon-size="imageHeight" :icon-size="imageHeight"
@ -39,7 +39,7 @@
<RecipeRating class="pb-1" :value="rating" :recipe-id="recipeId" :slug="slug" :small="true" /> <RecipeRating class="pb-1" :value="rating" :recipe-id="recipeId" :slug="slug" :small="true" />
<v-spacer></v-spacer> <v-spacer></v-spacer>
<RecipeChips :truncate="true" :items="tags" :title="false" :limit="2" :small="true" url-prefix="tags" /> <RecipeChips :truncate="true" :items="tags" :title="false" :limit="2" :small="true" url-prefix="tags" v-on="$listeners" />
<!-- If we're not logged-in, no items display, so we hide this menu --> <!-- If we're not logged-in, no items display, so we hide this menu -->
<RecipeContextMenu <RecipeContextMenu

View file

@ -38,7 +38,7 @@
<SafeMarkdown :source="description" /> <SafeMarkdown :source="description" />
</v-list-item-subtitle> </v-list-item-subtitle>
<div class="d-flex flex-wrap justify-start ma-0"> <div class="d-flex flex-wrap justify-start ma-0">
<RecipeChips :truncate="true" :items="tags" :title="false" :limit="2" :small="true" url-prefix="tags" /> <RecipeChips :truncate="true" :items="tags" :title="false" :limit="2" :small="true" url-prefix="tags" v-on="$listeners" />
</div> </div>
<div class="d-flex flex-wrap justify-end align-center"> <div class="d-flex flex-wrap justify-end align-center">
<slot name="actions"> <slot name="actions">

View file

@ -82,6 +82,8 @@
:image="recipe.image" :image="recipe.image"
:tags="recipe.tags" :tags="recipe.tags"
:recipe-id="recipe.id" :recipe-id="recipe.id"
v-on="$listeners"
/> />
</v-lazy> </v-lazy>
</v-col> </v-col>
@ -105,6 +107,8 @@
:image="recipe.image" :image="recipe.image"
:tags="recipe.tags" :tags="recipe.tags"
:recipe-id="recipe.id" :recipe-id="recipe.id"
v-on="$listeners"
/> />
</v-lazy> </v-lazy>
</v-col> </v-col>
@ -215,27 +219,34 @@ export default defineComponent({
const router = useRouter(); const router = useRouter();
const queryFilter = computed(() => { const queryFilter = computed(() => {
const orderBy = props.query?.orderBy || preferences.value.orderBy; return props.query.queryFilter || null;
const orderByFilter = preferences.value.filterNull && orderBy ? `${orderBy} IS NOT NULL` : null;
if (props.query.queryFilter && orderByFilter) { // TODO: allow user to filter out null values when ordering by a value that may be null (such as lastMade)
return `(${props.query.queryFilter}) AND ${orderByFilter}`;
} else if (props.query.queryFilter) { // const orderBy = props.query?.orderBy || preferences.value.orderBy;
return props.query.queryFilter; // const orderByFilter = preferences.value.filterNull && orderBy ? `${orderBy} IS NOT NULL` : null;
} else {
return orderByFilter; // if (props.query.queryFilter && orderByFilter) {
} // return `(${props.query.queryFilter}) AND ${orderByFilter}`;
// } else if (props.query.queryFilter) {
// return props.query.queryFilter;
// } else {
// return orderByFilter;
// }
}); });
async function fetchRecipes(pageCount = 1) { async function fetchRecipes(pageCount = 1) {
const orderDir = props.query?.orderDirection || preferences.value.orderDirection;
const orderByNullPosition = props.query?.orderByNullPosition || orderDir === "asc" ? "first" : "last";
return await fetchMore( return await fetchMore(
page.value, page.value,
perPage * pageCount, perPage * pageCount,
props.query?.orderBy || preferences.value.orderBy, props.query?.orderBy || preferences.value.orderBy,
props.query?.orderDirection || preferences.value.orderDirection, orderDir,
orderByNullPosition,
props.query, props.query,
// we use a computed queryFilter to filter out recipes that have a null value for the property we're sorting by // we use a computed queryFilter to filter out recipes that have a null value for the property we're sorting by
queryFilter.value queryFilter.value,
); );
} }
@ -296,6 +307,7 @@ export default defineComponent({
}, useAsyncKey()); }, useAsyncKey());
}, 500); }, 500);
function sortRecipes(sortType: string) { function sortRecipes(sortType: string) {
if (state.sortLoading || loading.value) { if (state.sortLoading || loading.value) {
return; return;

View file

@ -9,7 +9,8 @@
color="accent" color="accent"
:small="small" :small="small"
dark dark
:to="`${baseRecipeRoute}?${urlPrefix}=${category.id}`"
@click.prevent="() => $emit('item-selected', category, urlPrefix)"
> >
{{ truncateText(category.name) }} {{ truncateText(category.name) }}
</v-chip> </v-chip>

View file

@ -276,7 +276,7 @@ export default defineComponent({
delete: { delete: {
title: i18n.tc("general.delete"), title: i18n.tc("general.delete"),
icon: $globals.icons.delete, icon: $globals.icons.delete,
color: "error", color: undefined,
event: "delete", event: "delete",
isPublic: false, isPublic: false,
}, },
@ -371,7 +371,7 @@ export default defineComponent({
const groupRecipeActionsStore = useGroupRecipeActions(); const groupRecipeActionsStore = useGroupRecipeActions();
async function executeRecipeAction(action: GroupRecipeActionOut) { async function executeRecipeAction(action: GroupRecipeActionOut) {
const response = await groupRecipeActionsStore.execute(action, props.recipe); const response = await groupRecipeActionsStore.execute(action, props.recipe, props.recipeScale);
if (action.actionType === "post") { if (action.actionType === "post") {
if (!response?.error) { if (!response?.error) {
@ -383,7 +383,10 @@ export default defineComponent({
} }
async function deleteRecipe() { async function deleteRecipe() {
await api.recipes.deleteOne(props.slug); const { data } = await api.recipes.deleteOne(props.slug);
if (data?.slug) {
router.push(`/g/${groupSlug.value}`);
}
context.emit("delete", props.slug); context.emit("delete", props.slug);
} }

View file

@ -23,13 +23,13 @@
<a :href="`/g/${groupSlug}/r/${item.slug}`" style="color: inherit; text-decoration: inherit; " @click="$emit('click')">{{ item.name }}</a> <a :href="`/g/${groupSlug}/r/${item.slug}`" style="color: inherit; text-decoration: inherit; " @click="$emit('click')">{{ item.name }}</a>
</template> </template>
<template #item.tags="{ item }"> <template #item.tags="{ item }">
<RecipeChip small :items="item.tags" :is-category="false" url-prefix="tags" /> <RecipeChip small :items="item.tags" :is-category="false" url-prefix="tags" @item-selected="filterItems" />
</template> </template>
<template #item.recipeCategory="{ item }"> <template #item.recipeCategory="{ item }">
<RecipeChip small :items="item.recipeCategory" /> <RecipeChip small :items="item.recipeCategory" @item-selected="filterItems" />
</template> </template>
<template #item.tools="{ item }"> <template #item.tools="{ item }">
<RecipeChip small :items="item.tools" url-prefix="tools" /> <RecipeChip small :items="item.tools" url-prefix="tools" @item-selected="filterItems" />
</template> </template>
<template #item.userId="{ item }"> <template #item.userId="{ item }">
<v-list-item class="justify-start"> <v-list-item class="justify-start">
@ -48,12 +48,13 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, onMounted, ref, useContext } from "@nuxtjs/composition-api"; import { computed, defineComponent, onMounted, ref, useContext, useRouter } from "@nuxtjs/composition-api";
import UserAvatar from "../User/UserAvatar.vue"; import UserAvatar from "../User/UserAvatar.vue";
import RecipeChip from "./RecipeChips.vue"; import RecipeChip from "./RecipeChips.vue";
import { Recipe } from "~/lib/api/types/recipe"; import { Recipe, RecipeCategory, RecipeTool } from "~/lib/api/types/recipe";
import { useUserApi } from "~/composables/api"; import { useUserApi } from "~/composables/api";
import { UserSummary } from "~/lib/api/types/user"; import { UserSummary } from "~/lib/api/types/user";
import { RecipeTag } from "~/lib/api/types/household";
const INPUT_EVENT = "input"; const INPUT_EVENT = "input";
@ -106,7 +107,7 @@ export default defineComponent({
setup(props, context) { setup(props, context) {
const { $auth, i18n } = useContext(); const { $auth, i18n } = useContext();
const groupSlug = $auth.user?.groupSlug; const groupSlug = $auth.user?.groupSlug;
const router = useRouter();
function setValue(value: Recipe[]) { function setValue(value: Recipe[]) {
context.emit(INPUT_EVENT, value); context.emit(INPUT_EVENT, value);
} }
@ -167,6 +168,13 @@ export default defineComponent({
} }
} }
function filterItems(item: RecipeTag | RecipeCategory | RecipeTool, itemType: string) {
if (!groupSlug || !item.id) {
return;
}
router.push(`/g/${groupSlug}?${itemType}=${item.id}`);
}
onMounted(() => { onMounted(() => {
refreshMembers(); refreshMembers();
}); });
@ -186,6 +194,7 @@ export default defineComponent({
formatDate, formatDate,
members, members,
getMember, getMember,
filterItems,
}; };
}, },

View file

@ -204,6 +204,10 @@ export default defineComponent({
shoppingListShowAllToggled: false, shoppingListShowAllToggled: false,
}); });
const userHousehold = computed(() => {
return $auth.user?.householdSlug || "";
});
const shoppingListChoices = computed(() => { const shoppingListChoices = computed(() => {
return props.shoppingLists.filter((list) => preferences.value.viewAllLists || list.userId === $auth.user?.id); return props.shoppingLists.filter((list) => preferences.value.viewAllLists || list.userId === $auth.user?.id);
}); });
@ -248,8 +252,9 @@ export default defineComponent({
} }
const shoppingListIngredients: ShoppingListIngredient[] = recipe.recipeIngredient.map((ing) => { const shoppingListIngredients: ShoppingListIngredient[] = recipe.recipeIngredient.map((ing) => {
const householdsWithFood = (ing.food?.householdsWithIngredientFood || []);
return { return {
checked: !ing.food?.onHand, checked: !householdsWithFood.includes(userHousehold.value),
ingredient: ing, ingredient: ing,
disableAmount: recipe.settings?.disableAmount || false, disableAmount: recipe.settings?.disableAmount || false,
} }
@ -276,7 +281,8 @@ export default defineComponent({
} }
// Store the on-hand ingredients for later // Store the on-hand ingredients for later
if (ing.ingredient.food?.onHand) { const householdsWithFood = (ing.ingredient.food?.householdsWithIngredientFood || []);
if (householdsWithFood.includes(userHousehold.value)) {
onHandIngs.push(ing); onHandIngs.push(ing);
return sections; return sections;
} }

View file

@ -138,6 +138,7 @@
:title="$tc('general.recipes')" :title="$tc('general.recipes')"
:recipes="recipes" :recipes="recipes"
:query="passedQueryWithSeed" :query="passedQueryWithSeed"
@item-selected="filterItems"
@replaceRecipes="replaceRecipes" @replaceRecipes="replaceRecipes"
@appendRecipes="appendRecipes" @appendRecipes="appendRecipes"
/> />
@ -387,6 +388,19 @@ export default defineComponent({
} }
) )
function filterItems(item: RecipeCategory | RecipeTag | RecipeTool, urlPrefix: string) {
if (urlPrefix === "categories") {
const result = categories.store.value.filter((category) => (category.id as string).includes(item.id as string));
selectedCategories.value = result as NoUndefinedField<RecipeTag>[];
} else if (urlPrefix === "tags") {
const result = tags.store.value.filter((tag) => (tag.id as string).includes(item.id as string));
selectedTags.value = result as NoUndefinedField<RecipeTag>[];
} else if (urlPrefix === "tools") {
const result = tools.store.value.filter((tool) => (tool.id ).includes(item.id || "" ));
selectedTags.value = result as NoUndefinedField<RecipeTag>[];
}
}
async function hydrateSearch() { async function hydrateSearch() {
const query = router.currentRoute.query; const query = router.currentRoute.query;
if (query.auto?.length) { if (query.auto?.length) {
@ -592,6 +606,8 @@ export default defineComponent({
removeRecipe, removeRecipe,
replaceRecipes, replaceRecipes,
passedQueryWithSeed, passedQueryWithSeed,
filterItems,
}; };
}, },
head: {}, head: {},

View file

@ -96,7 +96,12 @@
<v-icon left> <v-icon left>
{{ $globals.icons.calendar }} {{ $globals.icons.calendar }}
</v-icon> </v-icon>
{{ $t('recipe.last-made-date', { date: value ? new Date(value).toLocaleDateString($i18n.locale) : $t("general.never") } ) }} <div v-if="lastMadeReady">
{{ $t('recipe.last-made-date', { date: lastMade ? new Date(lastMade).toLocaleDateString($i18n.locale) : $t("general.never") } ) }}
</div>
<div v-else>
<AppLoader tiny />
</div>
</v-chip> </v-chip>
</div> </div>
<div class="d-flex justify-center flex-wrap mt-1"> <div class="d-flex justify-center flex-wrap mt-1">
@ -110,7 +115,7 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, reactive, ref, toRefs, useContext } from "@nuxtjs/composition-api"; import { computed, defineComponent, onMounted, reactive, ref, toRefs, useContext } from "@nuxtjs/composition-api";
import { whenever } from "@vueuse/core"; import { whenever } from "@vueuse/core";
import { VForm } from "~/types/vuetify"; import { VForm } from "~/types/vuetify";
import { useUserApi } from "~/composables/api"; import { useUserApi } from "~/composables/api";
@ -119,10 +124,6 @@ import { Recipe, RecipeTimelineEventIn } from "~/lib/api/types/recipe";
export default defineComponent({ export default defineComponent({
props: { props: {
value: {
type: String,
default: null,
},
recipe: { recipe: {
type: Object as () => Recipe, type: Object as () => Recipe,
required: true, required: true,
@ -146,6 +147,20 @@ export default defineComponent({
const newTimelineEventImagePreviewUrl = ref<string>(); const newTimelineEventImagePreviewUrl = ref<string>();
const newTimelineEventTimestamp = ref<string>(); const newTimelineEventTimestamp = ref<string>();
const lastMade = ref(props.recipe.lastMade);
const lastMadeReady = ref(false);
onMounted(async () => {
if (!$auth.user?.householdSlug) {
lastMade.value = props.recipe.lastMade;
} else {
const { data } = await userApi.households.getCurrentUserHouseholdRecipe(props.recipe.slug || "");
lastMade.value = data?.lastMade;
}
lastMadeReady.value = true;
});
whenever( whenever(
() => madeThisDialog.value, () => madeThisDialog.value,
() => { () => {
@ -195,11 +210,9 @@ export default defineComponent({
const newEvent = eventResponse.data; const newEvent = eventResponse.data;
// we also update the recipe's last made value // we also update the recipe's last made value
if (!props.value || newTimelineEvent.value.timestamp > props.value) { if (!lastMade.value || newTimelineEvent.value.timestamp > lastMade.value) {
lastMade.value = newTimelineEvent.value.timestamp;
await userApi.recipes.updateLastMade(props.recipe.slug, newTimelineEvent.value.timestamp); await userApi.recipes.updateLastMade(props.recipe.slug, newTimelineEvent.value.timestamp);
// update recipe in parent so the user can see it
context.emit("input", newTimelineEvent.value.timestamp);
} }
// update the image, if provided // update the image, if provided
@ -234,6 +247,8 @@ export default defineComponent({
newTimelineEventImage, newTimelineEventImage,
newTimelineEventImagePreviewUrl, newTimelineEventImagePreviewUrl,
newTimelineEventTimestamp, newTimelineEventTimestamp,
lastMade,
lastMadeReady,
createTimelineEvent, createTimelineEvent,
clearImage, clearImage,
uploadImage, uploadImage,

View file

@ -35,7 +35,7 @@
--> -->
<v-col v-if="!isCookMode || isEditForm" cols="12" sm="12" md="4" lg="4"> <v-col v-if="!isCookMode || isEditForm" cols="12" sm="12" md="4" lg="4">
<RecipePageIngredientToolsView v-if="!isEditForm" :recipe="recipe" :scale="scale" /> <RecipePageIngredientToolsView v-if="!isEditForm" :recipe="recipe" :scale="scale" />
<RecipePageOrganizers v-if="$vuetify.breakpoint.mdAndUp" :recipe="recipe" /> <RecipePageOrganizers v-if="$vuetify.breakpoint.mdAndUp" :recipe="recipe" @item-selected="chipClicked" />
</v-col> </v-col>
<v-divider v-if="$vuetify.breakpoint.mdAndUp && !isCookMode" class="my-divider" :vertical="true" /> <v-divider v-if="$vuetify.breakpoint.mdAndUp && !isCookMode" class="my-divider" :vertical="true" />
@ -166,7 +166,7 @@ import {
usePageUser, usePageUser,
} from "~/composables/recipe-page/shared-state"; } from "~/composables/recipe-page/shared-state";
import { NoUndefinedField } from "~/lib/api/types/non-generated"; import { NoUndefinedField } from "~/lib/api/types/non-generated";
import { Recipe } from "~/lib/api/types/recipe"; import { Recipe, RecipeCategory, RecipeTag, RecipeTool } from "~/lib/api/types/recipe";
import { useRouteQuery } from "~/composables/use-router"; import { useRouteQuery } from "~/composables/use-router";
import { useUserApi } from "~/composables/api"; import { useUserApi } from "~/composables/api";
import { uuid4, deepCopy } from "~/composables/use-utils"; import { uuid4, deepCopy } from "~/composables/use-utils";
@ -329,6 +329,17 @@ export default defineComponent({
*/ */
const { user } = usePageUser(); const { user } = usePageUser();
/** =============================================================
* RecipeChip Clicked
*/
function chipClicked(item: RecipeTag | RecipeCategory | RecipeTool, itemType: string) {
if (!item.id) {
return;
}
router.push(`/g/${groupSlug.value}?${itemType}=${item.id}`);
}
return { return {
user, user,
isOwnGroup, isOwnGroup,
@ -350,7 +361,8 @@ export default defineComponent({
deleteRecipe, deleteRecipe,
addStep, addStep,
hasLinkedIngredients, hasLinkedIngredients,
notLinkedIngredients notLinkedIngredients,
chipClicked,
}; };
}, },
head: {}, head: {},

View file

@ -34,7 +34,7 @@
<UserAvatar :tooltip="false" size="40" :user-id="comment.userId" /> <UserAvatar :tooltip="false" size="40" :user-id="comment.userId" />
<v-card outlined class="flex-grow-1"> <v-card outlined class="flex-grow-1">
<v-card-text class="pa-3 pb-0"> <v-card-text class="pa-3 pb-0">
<p class="">{{ comment.user.username }} {{ $d(Date.parse(comment.createdAt), "medium") }}</p> <p class="">{{ comment.user.fullName }} {{ $d(Date.parse(comment.createdAt), "medium") }}</p>
<SafeMarkdown :source="comment.text" /> <SafeMarkdown :source="comment.text" />
</v-card-text> </v-card-text>
<v-card-actions class="justify-end mt-0 pt-0"> <v-card-actions class="justify-end mt-0 pt-0">

View file

@ -11,7 +11,7 @@
:logged-in="isOwnGroup" :logged-in="isOwnGroup"
:open="isEditMode" :open="isEditMode"
:recipe-id="recipe.id" :recipe-id="recipe.id"
class="ml-auto mt-n8 pb-4" class="ml-auto mt-n2 pb-4"
@close="setMode(PageMode.VIEW)" @close="setMode(PageMode.VIEW)"
@json="toggleEditMode()" @json="toggleEditMode()"
@edit="setMode(PageMode.EDIT)" @edit="setMode(PageMode.EDIT)"

View file

@ -30,7 +30,6 @@
<v-col cols="12" class="d-flex flex-wrap justify-center"> <v-col cols="12" class="d-flex flex-wrap justify-center">
<RecipeLastMade <RecipeLastMade
v-if="isOwnGroup" v-if="isOwnGroup"
:value="recipe.lastMade"
:recipe="recipe" :recipe="recipe"
:class="true ? undefined : 'force-bottom'" :class="true ? undefined : 'force-bottom'"
/> />

View file

@ -10,7 +10,7 @@
<h2 class="mb-2 mt-4">{{ $t('tool.required-tools') }}</h2> <h2 class="mb-2 mt-4">{{ $t('tool.required-tools') }}</h2>
<v-list-item v-for="(tool, index) in recipe.tools" :key="index" dense> <v-list-item v-for="(tool, index) in recipe.tools" :key="index" dense>
<v-checkbox <v-checkbox
v-model="recipe.tools[index].onHand" v-model="recipeTools[index].onHand"
hide-details hide-details
class="pt-0 my-auto py-auto" class="pt-0 my-auto py-auto"
color="secondary" color="secondary"
@ -26,14 +26,18 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api"; import { computed, defineComponent } from "@nuxtjs/composition-api";
import { useLoggedInState } from "~/composables/use-logged-in-state"; import { useLoggedInState } from "~/composables/use-logged-in-state";
import { usePageState, usePageUser } from "~/composables/recipe-page/shared-state"; import { usePageState, usePageUser } from "~/composables/recipe-page/shared-state";
import { useToolStore } from "~/composables/store"; import { useToolStore } from "~/composables/store";
import { NoUndefinedField } from "~/lib/api/types/non-generated"; import { NoUndefinedField } from "~/lib/api/types/non-generated";
import { Recipe } from "~/lib/api/types/recipe"; import { Recipe, RecipeTool } from "~/lib/api/types/recipe";
import RecipeIngredients from "~/components/Domain/Recipe/RecipeIngredients.vue"; import RecipeIngredients from "~/components/Domain/Recipe/RecipeIngredients.vue";
interface RecipeToolWithOnHand extends RecipeTool {
onHand: boolean;
}
export default defineComponent({ export default defineComponent({
components: { components: {
RecipeIngredients, RecipeIngredients,
@ -59,9 +63,31 @@ export default defineComponent({
const { user } = usePageUser(); const { user } = usePageUser();
const { isEditMode } = usePageState(props.recipe.slug); const { isEditMode } = usePageState(props.recipe.slug);
const recipeTools = computed(() => {
if (!(user.householdSlug && toolStore)) {
return props.recipe.tools.map((tool) => ({ ...tool, onHand: false }) as RecipeToolWithOnHand);
} else {
return props.recipe.tools.map((tool) => {
const onHand = tool.householdsWithTool?.includes(user.householdSlug) || false;
return { ...tool, onHand } as RecipeToolWithOnHand;
});
}
})
function updateTool(index: number) { function updateTool(index: number) {
if (user.id && toolStore) { if (user.id && user.householdSlug && toolStore) {
toolStore.actions.updateOne(props.recipe.tools[index]); const tool = recipeTools.value[index];
if (tool.onHand && !tool.householdsWithTool?.includes(user.householdSlug)) {
if (!tool.householdsWithTool) {
tool.householdsWithTool = [user.householdSlug];
} else {
tool.householdsWithTool.push(user.householdSlug);
}
} else if (!tool.onHand && tool.householdsWithTool?.includes(user.householdSlug)) {
tool.householdsWithTool = tool.householdsWithTool.filter((household) => household !== user.householdSlug);
}
toolStore.actions.updateOne(tool);
} else { } else {
console.log("no user, skipping server update"); console.log("no user, skipping server update");
} }
@ -69,6 +95,7 @@ export default defineComponent({
return { return {
toolStore, toolStore,
recipeTools,
isEditMode, isEditMode,
updateTool, updateTool,
}; };

View file

@ -14,7 +14,7 @@
:show-add="true" :show-add="true"
selector-type="categories" selector-type="categories"
/> />
<RecipeChips v-else :items="recipe.recipeCategory" /> <RecipeChips v-else :items="recipe.recipeCategory" v-on="$listeners" />
</v-card-text> </v-card-text>
</v-card> </v-card>
@ -32,7 +32,7 @@
:show-add="true" :show-add="true"
selector-type="tags" selector-type="tags"
/> />
<RecipeChips v-else :items="recipe.tags" url-prefix="tags" /> <RecipeChips v-else :items="recipe.tags" url-prefix="tags" v-on="$listeners" />
</v-card-text> </v-card-text>
</v-card> </v-card>
@ -41,7 +41,7 @@
<v-card-title class="py-2"> {{ $t('tool.required-tools') }} </v-card-title> <v-card-title class="py-2"> {{ $t('tool.required-tools') }} </v-card-title>
<v-divider class="mx-2" /> <v-divider class="mx-2" />
<v-card-text class="pt-0"> <v-card-text class="pt-0">
<RecipeOrganizerSelector v-model="recipe.tools" selector-type="tools" /> <RecipeOrganizerSelector v-model="recipe.tools" selector-type="tools" v-on="$listeners" />
</v-card-text> </v-card-text>
</v-card> </v-card>
@ -82,6 +82,8 @@ export default defineComponent({
const { user } = usePageUser(); const { user } = usePageUser();
const { isEditForm } = usePageState(props.recipe.slug); const { isEditForm } = usePageState(props.recipe.slug);
return { return {
isEditForm, isEditForm,
user, user,

View file

@ -4,11 +4,18 @@
<div> <div>
<v-menu v-model="menu" :disabled="!canEditScale" offset-y top nudge-top="6" :close-on-content-click="false"> <v-menu v-model="menu" :disabled="!canEditScale" offset-y top nudge-top="6" :close-on-content-click="false">
<template #activator="{ on, attrs }"> <template #activator="{ on, attrs }">
<v-card class="pa-1 px-2" dark color="secondary darken-1" small v-bind="attrs" v-on="on"> <v-card
<v-icon small class="mr-2">{{ $globals.icons.edit }}</v-icon> class="pa-1 px-2"
dark
color="secondary darken-1"
small
v-bind="attrs"
:style="{ cursor: canEditScale ? '' : 'default' }"
v-on="on"
>
<v-icon v-if="canEditScale" small class="mr-2">{{ $globals.icons.edit }}</v-icon>
<!-- eslint-disable-next-line vue/no-v-html --> <!-- eslint-disable-next-line vue/no-v-html -->
<span v-html="yieldDisplay"></span> <span v-html="yieldDisplay"></span>
</v-card> </v-card>
</template> </template>
<v-card min-width="300px"> <v-card min-width="300px">

View file

@ -1,317 +0,0 @@
<template>
<div class="text-center">
<v-menu
v-model="showMenu"
offset-x
offset-overflow
left
allow-overflow
close-delay="125"
:close-on-content-click="false"
content-class="d-print-none"
:z-index="2"
>
<template #activator="{ on, attrs }">
<v-badge :value="timerEnded" overlap color="red" content="!">
<v-btn :fab="fab" :small="fab" :color="timerEnded ? 'secondary' : color" :icon="!fab" dark v-bind="attrs" v-on="on" @click.prevent>
<v-progress-circular
v-if="timerInitialized && !timerEnded"
:value="timerProgress"
:rotate="270"
:color="timerRunning ? undefined : 'primary'"
>
<v-icon small>{{ timerRunning ? $globals.icons.timer : $globals.icons.timerPause }}</v-icon>
</v-progress-circular>
<v-icon v-else>{{ $globals.icons.timer }}</v-icon>
</v-btn>
</v-badge>
</template>
<v-card>
<v-card-title>
<v-icon class="pr-2">{{ $globals.icons.timer }}</v-icon>
{{ $i18n.tc("recipe.timer.kitchen-timer") }}
</v-card-title>
<div class="mx-auto" style="width: fit-content;">
<v-progress-circular
:value="timerProgress"
:rotate="270"
color="primary"
class="mb-2"
:size="128"
:width="24"
>
<v-icon
v-if="timerInitialized && !timerRunning"
x-large
:color="timerEnded ? 'red' : 'primary'"
@click="() => timerEnded ? resetTimer() : resumeTimer()"
>
{{ timerEnded ? $globals.icons.stop : $globals.icons.pause }}
</v-icon>
</v-progress-circular>
</div>
<v-container width="100%" fluid class="ma-0 px-auto py-2">
<v-row no-gutters justify="center">
<v-col cols="3" align-self="center">
<v-text-field
:value="timerHours"
:min="0"
outlined
single-line
solo
hide-details
type="number"
:disabled="timerInitialized"
class="centered-input my-0 py-0"
style="font-size: large; width: 100px;"
@input="(v) => timerHours = v.toString().padStart(2, '0')"
/>
</v-col>
<v-col cols="1" align-self="center" style="text-align: center;">
<h1>:</h1>
</v-col>
<v-col cols="3" align-self="center">
<v-text-field
:value="timerMinutes"
:min="0"
outlined
single-line
solo
hide-details
type="number"
:disabled="timerInitialized"
class="centered-input my-0 py-0"
style="font-size: large; width: 100px;"
@input="(v) => timerMinutes = v.toString().padStart(2, '0')"
/>
</v-col>
<v-col cols="1" align-self="center" style="text-align: center;" >
<h1>:</h1>
</v-col>
<v-col cols="3" align-self="center">
<v-text-field
:value="timerSeconds"
:min="0"
outlined
single-line
solo
hide-details
type="number"
:disabled="timerInitialized"
class="centered-input my-0 py-0"
style="font-size: large; width: 100px;"
@input="(v) => timerSeconds = v.toString().padStart(2, '0')"
/>
</v-col>
</v-row>
</v-container>
<div class="mx-auto" style="width: 100%;">
<BaseButtonGroup
stretch
:buttons="timerButtons"
@initialize-timer="initializeTimer"
@pause-timer="pauseTimer"
@resume-timer="resumeTimer"
@stop-timer="resetTimer"
/>
</div>
</v-card>
</v-menu>
</div>
</template>
<script lang="ts">
import { computed, defineComponent, reactive, ref, toRefs, useContext, watch } from "@nuxtjs/composition-api";
import { ButtonOption } from "~/components/global/BaseButtonGroup.vue";
// @ts-ignore typescript can't find our audio file, but it's there!
import timerAlarmAudio from "~/assets/audio/kitchen_alarm.mp3";
export default defineComponent({
props: {
fab: {
type: Boolean,
default: false,
},
color: {
type: String,
default: "primary",
},
},
setup() {
const { $globals, i18n } = useContext();
const state = reactive({
showMenu: false,
timerInitialized: false,
timerRunning: false,
timerEnded: false,
timerInitialValue: 0,
timerValue: 0,
});
watch(
() => state.showMenu,
() => {
if (state.showMenu && state.timerEnded) {
resetTimer();
}
}
);
// ts doesn't recognize timerAlarmAudio because it's a weird import
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
const timerAlarm = new Audio(timerAlarmAudio);
timerAlarm.loop = true;
const timerHours = ref<string | number>("00");
const timerMinutes = ref<string | number>("00");
const timerSeconds = ref<string | number>("00");
const initializeButton: ButtonOption = {
icon: $globals.icons.timerPlus,
text: i18n.tc("recipe.timer.start-timer"),
event: "initialize-timer",
}
const pauseButton: ButtonOption = {
icon: $globals.icons.pause,
text: i18n.tc("recipe.timer.pause-timer"),
event: "pause-timer",
};
const resumeButton: ButtonOption = {
icon: $globals.icons.play,
text: i18n.tc("recipe.timer.resume-timer"),
event: "resume-timer",
};
const stopButton: ButtonOption = {
icon: $globals.icons.stop,
text: i18n.tc("recipe.timer.stop-timer"),
event: "stop-timer",
color: "red",
};
const timerButtons = computed<ButtonOption[]>(() => {
const buttons: ButtonOption[] = [];
if (state.timerInitialized) {
if (state.timerEnded) {
buttons.push(stopButton);
} else if (state.timerRunning) {
buttons.push(pauseButton, stopButton);
} else {
buttons.push(resumeButton, stopButton);
}
} else {
buttons.push(initializeButton);
}
// I don't know why this is failing the frontend lint test ¯\_()_/¯
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
return buttons;
});
const timerProgress = computed(() => {
if(state.timerInitialValue) {
return (state.timerValue / state.timerInitialValue) * 100;
} else {
return 0;
}
});
let timerInterval: number | null = null;
function decrementTimer() {
if (state.timerValue > 0) {
state.timerValue -= 1;
timerHours.value = Math.floor(state.timerValue / 3600).toString().padStart(2, "0");
timerMinutes.value = Math.floor(state.timerValue % 3600 / 60).toString().padStart(2, "0");
timerSeconds.value = Math.floor(state.timerValue % 3600 % 60).toString().padStart(2, "0");
}
else {
state.timerRunning = false;
state.timerEnded = true;
timerAlarm.currentTime = 0;
timerAlarm.play();
if (timerInterval) {
clearInterval(timerInterval);
timerInterval = null;
}
}
}
function initializeTimer() {
state.timerInitialized = true;
state.timerRunning = true;
state.timerEnded = false;
console.log(timerSeconds.value);
const hours = parseFloat(timerHours.value.toString()) > 0 ? parseFloat(timerHours.value.toString()) : 0;
const minutes = parseFloat(timerMinutes.value.toString()) > 0 ? parseFloat(timerMinutes.value.toString()) : 0;
const seconds = parseFloat(timerSeconds.value.toString()) > 0 ? parseFloat(timerSeconds.value.toString()) : 0;
state.timerInitialValue = (hours * 3600) + (minutes * 60) + seconds;
state.timerValue = state.timerInitialValue;
timerInterval = setInterval(decrementTimer, 1000) as unknown as number;
timerHours.value = Math.floor(state.timerValue / 3600).toString().padStart(2, "0");
timerMinutes.value = Math.floor(state.timerValue % 3600 / 60).toString().padStart(2, "0");
timerSeconds.value = Math.floor(state.timerValue % 3600 % 60).toString().padStart(2, "0");
};
function pauseTimer() {
state.timerRunning = false;
if (timerInterval) {
clearInterval(timerInterval);
timerInterval = null;
}
};
function resumeTimer() {
state.timerRunning = true;
timerInterval = setInterval(decrementTimer, 1000) as unknown as number;
};
function resetTimer() {
state.timerInitialized = false;
state.timerRunning = false;
state.timerEnded = false;
timerAlarm.pause();
timerAlarm.currentTime = 0;
timerHours.value = "00";
timerMinutes.value = "00";
timerSeconds.value = "00";
state.timerValue = 0;
if (timerInterval) {
clearInterval(timerInterval);
timerInterval = null;
}
};
return {
...toRefs(state),
timerHours,
timerMinutes,
timerSeconds,
timerButtons,
timerProgress,
initializeTimer,
pauseTimer,
resumeTimer,
resetTimer,
};
},
});
</script>
<style scoped>
.centered-input >>> input {
text-align: center;
}
</style>

View file

@ -34,6 +34,7 @@
:label="$t('shopping-list.note')" :label="$t('shopping-list.note')"
rows="1" rows="1"
auto-grow auto-grow
autofocus
@keypress="handleNoteKeyPress" @keypress="handleNoteKeyPress"
></v-textarea> ></v-textarea>
</div> </div>
@ -80,15 +81,14 @@
<v-spacer /> <v-spacer />
</div> </div>
</v-card-text> </v-card-text>
</v-card>
<v-card-actions class="ma-0 pt-0 pb-1 justify-end"> <v-card-actions class="ma-0 pt-0 pb-1 justify-end">
<BaseButtonGroup <BaseButtonGroup
:buttons="[ :buttons="[
{ ...(allowDelete ? [{
icon: $globals.icons.delete, icon: $globals.icons.delete,
text: $t('general.delete'), text: $t('general.delete'),
event: 'delete', event: 'delete',
}, }] : []),
{ {
icon: $globals.icons.close, icon: $globals.icons.close,
text: $t('general.cancel'), text: $t('general.cancel'),
@ -111,6 +111,7 @@
@toggle-foods="listItem.isFood = !listItem.isFood" @toggle-foods="listItem.isFood = !listItem.isFood"
/> />
</v-card-actions> </v-card-actions>
</v-card>
</div> </div>
</template> </template>
@ -139,6 +140,11 @@ export default defineComponent({
type: Array as () => IngredientFood[], type: Array as () => IngredientFood[],
required: true, required: true,
}, },
allowDelete: {
type: Boolean,
required: false,
default: true,
},
}, },
setup(props, context) { setup(props, context) {
const foodStore = useFoodStore(); const foodStore = useFoodStore();

View file

@ -8,14 +8,14 @@
</v-icon> </v-icon>
<div v-if="large" class="text-small"> <div v-if="large" class="text-small">
<slot> <slot>
{{ small ? "" : waitingText }} {{ (small || tiny) ? "" : waitingText }}
</slot> </slot>
</div> </div>
</div> </div>
</v-progress-circular> </v-progress-circular>
<div v-if="!large" class="text-small"> <div v-if="!large" class="text-small">
<slot> <slot>
{{ small ? "" : waitingTextCalculated }} {{ (small || tiny) ? "" : waitingTextCalculated }}
</slot> </slot>
</div> </div>
</div> </div>
@ -31,6 +31,10 @@ export default defineComponent({
type: Boolean, type: Boolean,
default: true, default: true,
}, },
tiny: {
type: Boolean,
default: false,
},
small: { small: {
type: Boolean, type: Boolean,
default: false, default: false,
@ -50,6 +54,13 @@ export default defineComponent({
}, },
setup(props) { setup(props) {
const size = computed(() => { const size = computed(() => {
if (props.tiny) {
return {
width: 2,
icon: 0,
size: 25,
};
}
if (props.small) { if (props.small) {
return { return {
width: 2, width: 2,

View file

@ -9,7 +9,6 @@ export const useTools = function (eager = true) {
id: "", id: "",
name: "", name: "",
slug: "", slug: "",
onHand: false,
}); });
const api = useUserApi(); const api = useUserApi();

View file

@ -2,7 +2,7 @@ import { useAsync, useRouter, ref } from "@nuxtjs/composition-api";
import { useAsyncKey } from "../use-utils"; import { useAsyncKey } from "../use-utils";
import { usePublicExploreApi } from "~/composables/api/api-client"; import { usePublicExploreApi } from "~/composables/api/api-client";
import { useUserApi } from "~/composables/api"; import { useUserApi } from "~/composables/api";
import { Recipe } from "~/lib/api/types/recipe"; import { OrderByNullPosition, Recipe } from "~/lib/api/types/recipe";
import { RecipeSearchQuery } from "~/lib/api/user/recipes/recipe"; import { RecipeSearchQuery } from "~/lib/api/user/recipes/recipe";
export const allRecipes = ref<Recipe[]>([]); export const allRecipes = ref<Recipe[]>([]);
@ -11,12 +11,14 @@ export const recentRecipes = ref<Recipe[]>([]);
function getParams( function getParams(
orderBy: string | null = null, orderBy: string | null = null,
orderDirection = "desc", orderDirection = "desc",
orderByNullPosition: OrderByNullPosition | null = null,
query: RecipeSearchQuery | null = null, query: RecipeSearchQuery | null = null,
queryFilter: string | null = null queryFilter: string | null = null
) { ) {
return { return {
orderBy, orderBy,
orderDirection, orderDirection,
orderByNullPosition,
paginationSeed: query?._searchSeed, // propagate searchSeed to stabilize random order pagination paginationSeed: query?._searchSeed, // propagate searchSeed to stabilize random order pagination
searchSeed: query?._searchSeed, // unused, but pass it along for completeness of data searchSeed: query?._searchSeed, // unused, but pass it along for completeness of data
search: query?.search, search: query?.search,
@ -47,6 +49,7 @@ export const useLazyRecipes = function (publicGroupSlug: string | null = null) {
perPage: number, perPage: number,
orderBy: string | null = null, orderBy: string | null = null,
orderDirection = "desc", orderDirection = "desc",
orderByNullPosition: OrderByNullPosition | null = null,
query: RecipeSearchQuery | null = null, query: RecipeSearchQuery | null = null,
queryFilter: string | null = null, queryFilter: string | null = null,
) { ) {
@ -54,7 +57,7 @@ export const useLazyRecipes = function (publicGroupSlug: string | null = null) {
const { data, error } = await api.recipes.getAll( const { data, error } = await api.recipes.getAll(
page, page,
perPage, perPage,
getParams(orderBy, orderDirection, query, queryFilter), getParams(orderBy, orderDirection, orderByNullPosition, query, queryFilter),
); );
if (error?.response?.status === 404) { if (error?.response?.status === 404) {
@ -88,7 +91,7 @@ export const useLazyRecipes = function (publicGroupSlug: string | null = null) {
} }
async function getRandom(query: RecipeSearchQuery | null = null, queryFilter: string | null = null) { async function getRandom(query: RecipeSearchQuery | null = null, queryFilter: string | null = null) {
const { data } = await api.recipes.getAll(1, 1, getParams("random", "desc", query, queryFilter)); const { data } = await api.recipes.getAll(1, 1, getParams("random", "desc", null, query, queryFilter));
if (data?.items.length) { if (data?.items.length) {
return data.items[0]; return data.items[0];
} }

View file

@ -13,7 +13,6 @@ export const useFoodData = function () {
name: "", name: "",
description: "", description: "",
labelId: undefined, labelId: undefined,
onHand: false,
}); });
} }

View file

@ -3,16 +3,21 @@ import { useData, useReadOnlyStore, useStore } from "../partials/use-store-facto
import { RecipeTool } from "~/lib/api/types/recipe"; import { RecipeTool } from "~/lib/api/types/recipe";
import { usePublicExploreApi, useUserApi } from "~/composables/api"; import { usePublicExploreApi, useUserApi } from "~/composables/api";
interface RecipeToolWithOnHand extends RecipeTool {
onHand: boolean;
}
const store: Ref<RecipeTool[]> = ref([]); const store: Ref<RecipeTool[]> = ref([]);
const loading = ref(false); const loading = ref(false);
const publicLoading = ref(false); const publicLoading = ref(false);
export const useToolData = function () { export const useToolData = function () {
return useData<RecipeTool>({ return useData<RecipeToolWithOnHand>({
id: "", id: "",
name: "", name: "",
slug: "", slug: "",
onHand: false, onHand: false,
householdsWithTool: [],
}); });
} }

View file

@ -46,17 +46,23 @@ export const useGroupRecipeActions = function (
return groupRecipeActions.value; return groupRecipeActions.value;
}); });
function parseRecipeActionUrl(url: string, recipe: Recipe): string { function parseRecipeActionUrl(url: string, recipe: Recipe, recipeScale: number): string {
const recipeServings = (recipe.recipeServings || 1) * recipeScale;
const recipeYieldQuantity = (recipe.recipeYieldQuantity || 1) * recipeScale;
/* eslint-disable no-template-curly-in-string */ /* eslint-disable no-template-curly-in-string */
return url return url
.replace("${url}", window.location.href) .replace("${url}", window.location.href)
.replace("${id}", recipe.id || "") .replace("${id}", recipe.id || "")
.replace("${slug}", recipe.slug || "") .replace("${slug}", recipe.slug || "")
.replace("${servings}", recipeServings.toString())
.replace("${yieldQuantity}", recipeYieldQuantity.toString())
.replace("${yieldText}", recipe.recipeYield || "")
/* eslint-enable no-template-curly-in-string */ /* eslint-enable no-template-curly-in-string */
}; };
async function execute(action: GroupRecipeActionOut, recipe: Recipe): Promise<void | RequestResponse<unknown>> { async function execute(action: GroupRecipeActionOut, recipe: Recipe, recipeScale: number): Promise<void | RequestResponse<unknown>> {
const url = parseRecipeActionUrl(action.url, recipe); const url = parseRecipeActionUrl(action.url, recipe, recipeScale);
switch (action.actionType) { switch (action.actionType) {
case "link": case "link":

View file

@ -276,7 +276,8 @@
"admin-group-management": "Admin groepbestuur", "admin-group-management": "Admin groepbestuur",
"admin-group-management-text": "Veranderinge aan hierdie groep sal onmiddellik weerspieël word.", "admin-group-management-text": "Veranderinge aan hierdie groep sal onmiddellik weerspieël word.",
"group-id-value": "Groep-Id: {0}", "group-id-value": "Groep-Id: {0}",
"total-households": "Total Households" "total-households": "Total Households",
"you-must-select-a-group-before-selecting-a-household": "You must select a group before selecting a household"
}, },
"household": { "household": {
"household": "Household", "household": "Household",
@ -517,6 +518,7 @@
"save-recipe-before-use": "Stoor resep voor gebruik", "save-recipe-before-use": "Stoor resep voor gebruik",
"section-title": "Afdeling titel", "section-title": "Afdeling titel",
"servings": "Porsies", "servings": "Porsies",
"serves-amount": "Serves {amount}",
"share-recipe-message": "Ek wou my {0}-resep met jou deel.", "share-recipe-message": "Ek wou my {0}-resep met jou deel.",
"show-nutrition-values": "Wys voedingswaardes", "show-nutrition-values": "Wys voedingswaardes",
"sodium-content": "Natrium", "sodium-content": "Natrium",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Kon nie resep by maaltydplan voeg nie", "failed-to-add-recipe-to-mealplan": "Kon nie resep by maaltydplan voeg nie",
"failed-to-add-to-list": "Failed to add to list", "failed-to-add-to-list": "Failed to add to list",
"yield": "Resultaat", "yield": "Resultaat",
"yields-amount-with-text": "Yields {amount} {text}",
"yield-text": "Yield Text",
"quantity": "Hoeveelheid", "quantity": "Hoeveelheid",
"choose-unit": "Kies 'n eenheid", "choose-unit": "Kies 'n eenheid",
"press-enter-to-create": "Druk Enter om te skep", "press-enter-to-create": "Druk Enter om te skep",
@ -566,13 +570,6 @@
"increase-scale-label": "Verhoog skaal met 1", "increase-scale-label": "Verhoog skaal met 1",
"locked": "Gesluit", "locked": "Gesluit",
"public-link": "Openbare skakel", "public-link": "Openbare skakel",
"timer": {
"kitchen-timer": "Kombuis timer",
"start-timer": "Begin die kombuis timer",
"pause-timer": "Onderbreek die kombuis timer",
"resume-timer": "Hervat kombuis timer",
"stop-timer": "Stop die kombuis timer"
},
"edit-timeline-event": "Wysig tydlyn gebeurtenis", "edit-timeline-event": "Wysig tydlyn gebeurtenis",
"timeline": "Tydlyn", "timeline": "Tydlyn",
"timeline-is-empty": "Nog niks op die tydlyn nie. Probeer hierdie resep maak!", "timeline-is-empty": "Nog niks op die tydlyn nie. Probeer hierdie resep maak!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.", "recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.",
"debug": "Debug", "debug": "Debug",
"tree-view": "Boomstruktuur", "tree-view": "Boomstruktuur",
"recipe-servings": "Recipe Servings",
"recipe-yield": "Resep opbrengs", "recipe-yield": "Resep opbrengs",
"recipe-yield-text": "Recipe Yield Text",
"unit": "Eenheid", "unit": "Eenheid",
"upload-image": "Laai prent", "upload-image": "Laai prent",
"screen-awake": "Hou die skerm aan", "screen-awake": "Hou die skerm aan",
@ -662,7 +661,25 @@
"missing-food": "Create missing food: {food}", "missing-food": "Create missing food: {food}",
"no-food": "No Food" "no-food": "No Food"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Reset Servings Count",
"not-linked-ingredients": "Additional Ingredients"
},
"recipe-finder": {
"recipe-finder": "Recipe Finder",
"recipe-finder-description": "Search for recipes based on ingredients you have on hand. You can also filter by tools you have available, and set a maximum number of missing ingredients or tools.",
"selected-ingredients": "Selected Ingredients",
"no-ingredients-selected": "No ingredients selected",
"missing": "Missing",
"no-recipes-found": "No recipes found",
"no-recipes-found-description": "Try adding more ingredients to your search or adjusting your filters",
"include-ingredients-on-hand": "Include Ingredients On Hand",
"include-tools-on-hand": "Include Tools On Hand",
"max-missing-ingredients": "Max Missing Ingredients",
"max-missing-tools": "Max Missing Tools",
"selected-tools": "Selected Tools",
"other-filters": "Other Filters",
"ready-to-make": "Ready to Make",
"almost-ready-to-make": "Almost Ready to Make"
}, },
"search": { "search": {
"advanced-search": "Gevorderde soek", "advanced-search": "Gevorderde soek",
@ -866,7 +883,8 @@
"you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.", "you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.",
"are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?", "are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?",
"are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?", "are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?",
"are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?" "are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?",
"no-shopping-lists-found": "No Shopping Lists Found"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Alle resepte", "all-recipes": "Alle resepte",
@ -1278,6 +1296,7 @@
"profile": { "profile": {
"welcome-user": "👋 Welcome, {0}!", "welcome-user": "👋 Welcome, {0}!",
"description": "Bestuur jou profiel, resepte en groepverstellings.", "description": "Bestuur jou profiel, resepte en groepverstellings.",
"invite-link": "Invite Link",
"get-invite-link": "Kry uitnodigingskakel", "get-invite-link": "Kry uitnodigingskakel",
"get-public-link": "Kry openbare skakel", "get-public-link": "Kry openbare skakel",
"account-summary": "Rekeningopsomming", "account-summary": "Rekeningopsomming",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Kookboeke", "cookbooks": "Kookboeke",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.",
"hide-cookbooks-from-other-households": "Hide Cookbooks from Other Households",
"hide-cookbooks-from-other-households-description": "When enabled, only cookbooks from your household will appear on the sidebar",
"public-cookbook": "Openbare kookboek", "public-cookbook": "Openbare kookboek",
"public-cookbook-description": "Publieke kookboeke kan met nie-mealie-gebruikers gedeel word en sal op jou groepbladsy verskyn.", "public-cookbook-description": "Publieke kookboeke kan met nie-mealie-gebruikers gedeel word en sal op jou groepbladsy verskyn.",
"filter-options": "Filter opsies", "filter-options": "Filter opsies",

View file

@ -8,7 +8,7 @@
"database-type": "نوع قاعدة البيانات", "database-type": "نوع قاعدة البيانات",
"database-url": "رابط قاعدة البيانات", "database-url": "رابط قاعدة البيانات",
"default-group": "المجموعة الافتراضية", "default-group": "المجموعة الافتراضية",
"default-household": "Default Household", "default-household": "العائلة الافتراضية",
"demo": "عرض تجريبي", "demo": "عرض تجريبي",
"demo-status": "حالة العرض تجريبي", "demo-status": "حالة العرض تجريبي",
"development": "تطوير", "development": "تطوير",
@ -65,7 +65,7 @@
"something-went-wrong": "حدث خطأ ما!", "something-went-wrong": "حدث خطأ ما!",
"subscribed-events": "الأحداث التي تم الاشتراك فيها", "subscribed-events": "الأحداث التي تم الاشتراك فيها",
"test-message-sent": "تم إرسال رسالة تجريبية", "test-message-sent": "تم إرسال رسالة تجريبية",
"message-sent": "Message Sent", "message-sent": "تم إرسال الرسالة",
"new-notification": "إشعار جديد", "new-notification": "إشعار جديد",
"event-notifiers": "إشعار الحدث", "event-notifiers": "إشعار الحدث",
"apprise-url-skipped-if-blank": "الرابط Apprise (يتم تجاهله إذا ما كان فارغً)", "apprise-url-skipped-if-blank": "الرابط Apprise (يتم تجاهله إذا ما كان فارغً)",
@ -79,15 +79,15 @@
"tag-events": "أحداث الوسم", "tag-events": "أحداث الوسم",
"category-events": "أحداث الفئة", "category-events": "أحداث الفئة",
"when-a-new-user-joins-your-group": "عندما ينضم مستخدم جديد إلى مجموعتك", "when-a-new-user-joins-your-group": "عندما ينضم مستخدم جديد إلى مجموعتك",
"recipe-events": "Recipe Events" "recipe-events": "وصفات المناسبات"
}, },
"general": { "general": {
"add": "Add", "add": "أضف",
"cancel": "إلغاء", "cancel": "إلغاء",
"clear": "مسح", "clear": "مسح",
"close": "إغلاق", "close": "إغلاق",
"confirm": "تأكيد", "confirm": "تأكيد",
"confirm-how-does-everything-look": "How does everything look?", "confirm-how-does-everything-look": "كيف تبدو كل شيء؟",
"confirm-delete-generic": "هل انت متأكد من حذف هذا؟", "confirm-delete-generic": "هل انت متأكد من حذف هذا؟",
"copied_message": "تم النسخ!", "copied_message": "تم النسخ!",
"create": "إنشاء", "create": "إنشاء",
@ -146,23 +146,23 @@
"save": "حفظ", "save": "حفظ",
"settings": "الإعدادات", "settings": "الإعدادات",
"share": "مشاركة", "share": "مشاركة",
"show-all": "Show All", "show-all": "عرض الكل",
"shuffle": "ترتيب عشوائي", "shuffle": "ترتيب عشوائي",
"sort": "ترتيب", "sort": "ترتيب",
"sort-ascending": "Sort Ascending", "sort-ascending": "ترتيب تصاعدي",
"sort-descending": "Sort Descending", "sort-descending": "ترتيب تنازلي",
"sort-alphabetically": "ترتيب حَسَبَ الحروف الأبجدية", "sort-alphabetically": "ترتيب حَسَبَ الحروف الأبجدية",
"status": "الحالة", "status": "الحالة",
"subject": "الموضوع", "subject": "الموضوع",
"submit": "إرسال", "submit": "إرسال",
"success-count": "نجحت: {count}", "success-count": "نجحت: {count}",
"sunday": "الأحد", "sunday": "الأحد",
"system": "System", "system": "النظام",
"templates": "القوالب:", "templates": "القوالب:",
"test": "تجربة", "test": "تجربة",
"themes": "السمات", "themes": "السمات",
"thursday": "الخميس", "thursday": "الخميس",
"title": "Title", "title": "العنوان",
"token": "الرمز التعريفي", "token": "الرمز التعريفي",
"tuesday": "الثلاثاء", "tuesday": "الثلاثاء",
"type": "النوع", "type": "النوع",
@ -177,12 +177,12 @@
"units": "الوحدات", "units": "الوحدات",
"back": "عودة", "back": "عودة",
"next": "التالي", "next": "التالي",
"start": "Start", "start": "إبدأ",
"toggle-view": "تبديل طريقة العرض", "toggle-view": "تبديل طريقة العرض",
"date": "التاريخ", "date": "التاريخ",
"id": "المعرف", "id": "المعرف",
"owner": "المالك", "owner": "المالك",
"change-owner": "Change Owner", "change-owner": "تغير المالك",
"date-added": "تاريخ الإضافة", "date-added": "تاريخ الإضافة",
"none": "لا شيء", "none": "لا شيء",
"run": "شغّل", "run": "شغّل",
@ -209,15 +209,15 @@
"refresh": "تحديث", "refresh": "تحديث",
"upload-file": "تحميل الملف", "upload-file": "تحميل الملف",
"created-on-date": "تم الإنشاء في {0}", "created-on-date": "تم الإنشاء في {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "لديك تغييرات غير محفوظة. هل تريد الحفظ قبل المغادرة؟ حسنًا للحفظ، قم بإلغاء تجاهل التغييرات.",
"clipboard-copy-failure": "Failed to copy to the clipboard.", "clipboard-copy-failure": "فشل في النسخ إلى الحافظة.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?", "confirm-delete-generic-items": "هل أنت متأكد أنك تريد حذف المجموعات التالية؟",
"organizers": "Organizers", "organizers": "المنظمون",
"caution": "Caution", "caution": "تحذير",
"show-advanced": "Show Advanced", "show-advanced": "إظهار متقدمة",
"add-field": "Add Field", "add-field": "إضافة حقل",
"date-created": "Date Created", "date-created": "تاريخ الإنشاء",
"date-updated": "Date Updated" "date-updated": "تاريخ التحديث"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "هل انت متأكد من رغبتك في حذف <b>{groupName}<b/>؟", "are-you-sure-you-want-to-delete-the-group": "هل انت متأكد من رغبتك في حذف <b>{groupName}<b/>؟",
@ -244,65 +244,66 @@
"keep-my-recipes-private-description": "تعيين مجموعتك وجميع الوصفات الافتراضية إلى النمط الخاص. يمكنك دائماً تغييرها لاحقاً." "keep-my-recipes-private-description": "تعيين مجموعتك وجميع الوصفات الافتراضية إلى النمط الخاص. يمكنك دائماً تغييرها لاحقاً."
}, },
"manage-members": "إدارة الأعضاء", "manage-members": "إدارة الأعضاء",
"manage-members-description": "Manage the permissions of the members in your household. {manage} allows the user to access the data-management page, and {invite} allows the user to generate invitation links for other users. Group owners cannot change their own permissions.", "manage-members-description": ".",
"manage": "إدارة الحساب", "manage": "إدارة الحساب",
"manage-household": "Manage Household", "manage-household": "إدارة العائلة",
"invite": "دعوة", "invite": "دعوة",
"looking-to-update-your-profile": "هل ترغب في تحديث ملفك الشخصي؟", "looking-to-update-your-profile": "هل ترغب في تحديث ملفك الشخصي؟",
"default-recipe-preferences-description": "هذه هي الإعدادات الافتراضية عند إنشاء وصفة جديدة في مجموعتك. يمكن تغيير هذه الوصفات الفردية في قائمة إعدادات الوصفات.", "default-recipe-preferences-description": "هذه هي الإعدادات الافتراضية عند إنشاء وصفة جديدة في مجموعتك. يمكن تغيير هذه الوصفات الفردية في قائمة إعدادات الوصفات.",
"default-recipe-preferences": "Default Recipe Preferences", "default-recipe-preferences": "تفضيلات الوصفة الافتراضية",
"group-preferences": "إعدادات المجموعة", "group-preferences": "إعدادات المجموعة",
"private-group": "مجموعة خاصة", "private-group": "مجموعة خاصة",
"private-group-description": "Setting your group to private will disable all public view options. This overrides any individual public view settings", "private-group-description": "سيؤدي تعيين مجموعتك إلى الخاص إلى تعطيل جميع خيارات العرض العام. وهذا يلغي أي إعدادات عرض عام فردية",
"enable-public-access": "Enable Public Access", "enable-public-access": "تمكين الوصول للعموم",
"enable-public-access-description": "Make group recipes public by default, and allow visitors to view recipes without logging-in", "enable-public-access-description": "جعل وصفات المجموعة عامة بشكل افتراضي، والسماح للزوار بعرض الوصفات دون تسجيل الدخول",
"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", "allow-users-outside-of-your-group-to-see-your-recipes-description": "عند التمكين يمكنك استخدام رابط المشاركة العامة لمشاركة وصفات محددة دون تفويض المستخدم. عند التعطيل، يمكنك مشاركة الوصفات فقط مع المستخدمين الموجودين في مجموعتك أو مع رابط خاص تم إنشاؤه مسبقاً",
"show-nutrition-information": "عرض معلومات التغذية", "show-nutrition-information": "عرض معلومات التغذية",
"show-nutrition-information-description": "When enabled the nutrition information will be shown on the recipe if available. If there is no nutrition information available, the nutrition information will not be shown", "show-nutrition-information-description": "عندما يتم تمكين المعلومات الغذائية ستظهر على الوصفة إذا كانت متاحة. وفي حالة عدم توافر معلومات عن التغذية، لن تظهر المعلومات المتعلقة بالتغذية",
"show-recipe-assets": "Show recipe assets", "show-recipe-assets": "إظهار أصول الوصفة",
"show-recipe-assets-description": "When enabled the recipe assets will be shown on the recipe if available", "show-recipe-assets-description": "عند تمكين الوصفة، سيتم عرض أصول الوصفة على الوصفة إذا كانت متوفرة",
"default-to-landscape-view": "Default to landscape view", "default-to-landscape-view": "الافتراضي للعرض الأفقي",
"default-to-landscape-view-description": "When enabled the recipe header section will be shown in landscape view", "default-to-landscape-view-description": "عند تمكين قسم رأس الوصفة سوف يظهر في العرض الأفقي",
"disable-users-from-commenting-on-recipes": "إيقاف المستخدمين من التعليق على الوصفات", "disable-users-from-commenting-on-recipes": "إيقاف المستخدمين من التعليق على الوصفات",
"disable-users-from-commenting-on-recipes-description": "Hides the comment section on the recipe page and disables commenting", "disable-users-from-commenting-on-recipes-description": "يخفي قسم التعليق على صفحة الوصفة ويعطل التعليق",
"disable-organizing-recipe-ingredients-by-units-and-food": "Disable organizing recipe ingredients by units and food", "disable-organizing-recipe-ingredients-by-units-and-food": "تعطيل تنظيم عناصر الوصفة حسب الوحدات والطعام",
"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", "disable-organizing-recipe-ingredients-by-units-and-food-description": "يخفي حقول الطعام والوحدة والكمية للمكونات ويعامل المكونات كحقول نصية عادية",
"general-preferences": "General Preferences", "general-preferences": "الإعدادات العامة",
"group-recipe-preferences": "Group Recipe Preferences", "group-recipe-preferences": "تفضيلات الوصفة للمجموعة",
"report": "تقرير", "report": "تقرير",
"report-with-id": "Report ID: {id}", "report-with-id": "معرف التقرير: {id}",
"group-management": "Group Management", "group-management": "إدارة المجموعة",
"admin-group-management": "Admin Group Management", "admin-group-management": "إدارة مجموعة المشرف",
"admin-group-management-text": "Changes to this group will be reflected immediately.", "admin-group-management-text": "التغييرات التي ستطرأ على هذه المجموعة ستنعكس على الفور.",
"group-id-value": "Group Id: {0}", "group-id-value": "معرف المجموعة: {0}",
"total-households": "Total Households" "total-households": "مجموع المنزل",
"you-must-select-a-group-before-selecting-a-household": "يجب عليك تحديد مجموعة قبل تحديد المنزل"
}, },
"household": { "household": {
"household": "Household", "household": "المنزل",
"households": "Households", "households": "المنازل",
"user-household": "User Household", "user-household": "منزل المستخدم",
"create-household": "Create Household", "create-household": "إنشاء منزل",
"household-name": "Household Name", "household-name": "اسم المنزل",
"household-group": "Household Group", "household-group": "مجموعة المنزل",
"household-management": "Household Management", "household-management": "إدارة المنزل",
"manage-households": "Manage Households", "manage-households": "إدارة المنازل",
"admin-household-management": "Admin Household Management", "admin-household-management": "إدارة مشرف المنزل",
"admin-household-management-text": "Changes to this household will be reflected immediately.", "admin-household-management-text": "التغييرات التي ستطرأ على هذا المنزل ستنعكس على الفور.",
"household-id-value": "Household Id: {0}", "household-id-value": "معرف المنزل: {0}",
"private-household": "Private Household", "private-household": "منزل خاص",
"private-household-description": "Setting your household to private will disable all public view options. This overrides any individual public view settings", "private-household-description": "سيؤدي تعيين المنزل إلى خاص إلى تعطيل جميع خيارات العرض العام. وهذا يلغي أي إعدادات عرض عام فردية",
"lock-recipe-edits-from-other-households": "Lock recipe edits from other households", "lock-recipe-edits-from-other-households": "إقفال تحرير الوصفة من المنازل الأخرى",
"lock-recipe-edits-from-other-households-description": "When enabled only users in your household can edit recipes created by your household", "lock-recipe-edits-from-other-households-description": "عند التمكين, المستخدمين فقط في أسرتك المعيشية يمكنهم تعديل الوصفات التي أنشأتها أسرتك",
"household-recipe-preferences": "Household Recipe Preferences", "household-recipe-preferences": "تفضيلات الوصفة المنزلية",
"default-recipe-preferences-description": "These are the default settings when a new recipe is created in your household. These can be changed for individual recipes in the recipe settings menu.", "default-recipe-preferences-description": "هذه هي الإعدادات الافتراضية عند إنشاء وصفة جديدة في منزلك. يمكن تغيير الوصفات الفردية في قائمة إعدادات الوصفة.",
"allow-users-outside-of-your-household-to-see-your-recipes": "Allow users outside of your household to see your recipes", "allow-users-outside-of-your-household-to-see-your-recipes": "السماح للمستخدمين خارج منزلك بمشاهدة وصفاتك",
"allow-users-outside-of-your-household-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 household or with a pre-generated private link", "allow-users-outside-of-your-household-to-see-your-recipes-description": "عند التمكين يمكنك استخدام رابط المشاركة العامة لمشاركة وصفات محددة دون تفويض المستخدم. عند التعطيل، يمكنك مشاركة الوصفات فقط مع المستخدمين الموجودين في منزلك أو مع رابط خاص تم إنشاؤه مسبقاً",
"household-preferences": "Household Preferences" "household-preferences": "تفضيلات المنزل"
}, },
"meal-plan": { "meal-plan": {
"create-a-new-meal-plan": "إنشاء خطة وجبة جديدة", "create-a-new-meal-plan": "إنشاء خطة وجبة جديدة",
"update-this-meal-plan": "Update this Meal Plan", "update-this-meal-plan": "تحديث خِطَّة الوجبة الغذائية هذه",
"dinner-this-week": "العشاء لهذا الأسبوع", "dinner-this-week": "العشاء لهذا الأسبوع",
"dinner-today": "العشاء اليوم", "dinner-today": "العشاء اليوم",
"dinner-tonight": "العشاء الليلة", "dinner-tonight": "العشاء الليلة",
@ -320,95 +321,95 @@
"mealplan-settings": "اعدادات خطة الوجبات", "mealplan-settings": "اعدادات خطة الوجبات",
"mealplan-update-failed": "فشل تحديث خطة الوجبات", "mealplan-update-failed": "فشل تحديث خطة الوجبات",
"mealplan-updated": "تم تحديث خطة الوجبات", "mealplan-updated": "تم تحديث خطة الوجبات",
"mealplan-households-description": "If no household is selected, recipes can be added from any household", "mealplan-households-description": "إذا لم يتم اختيار منزل، يمكن إضافة وصفات من أي منزل",
"any-category": "Any Category", "any-category": "أي فئة",
"any-tag": "Any Tag", "any-tag": "أي وسم",
"any-household": "Any Household", "any-household": "أي منزل",
"no-meal-plan-defined-yet": "لم يتم تحديد خطة بعد", "no-meal-plan-defined-yet": "لم يتم تحديد خطة بعد",
"no-meal-planned-for-today": "لم يتم تخطيط وجبة لهذا اليوم", "no-meal-planned-for-today": "لم يتم تخطيط وجبة لهذا اليوم",
"numberOfDays-hint": "Number of days on page load", "numberOfDays-hint": "عدد الأيام عند تحميل الصفحة",
"numberOfDays-label": "Default Days", "numberOfDays-label": "الأيام الافتراضية",
"only-recipes-with-these-categories-will-be-used-in-meal-plans": "فقط الوجبات التي تحتوي على التصنيفات التالية سوف تستخدم لإنشاء خطتك", "only-recipes-with-these-categories-will-be-used-in-meal-plans": "فقط الوجبات التي تحتوي على التصنيفات التالية سوف تستخدم لإنشاء خطتك",
"planner": "المخطط", "planner": "المخطط",
"quick-week": "Quick Week", "quick-week": "أسبوع سريع",
"side": "وجبة جانبية", "side": "وجبة جانبية",
"sides": "الوجبات الجانبية", "sides": "الوجبات الجانبية",
"start-date": "تاريخ البدء", "start-date": "تاريخ البدء",
"rule-day": "Rule Day", "rule-day": "يوم القاعدة",
"meal-type": "نوع الوجبة", "meal-type": "نوع الوجبة",
"breakfast": "الإفطار", "breakfast": "الإفطار",
"lunch": "الغداء", "lunch": "الغداء",
"dinner": "العشاء", "dinner": "العشاء",
"type-any": "أي", "type-any": "أي",
"day-any": "أي", "day-any": "أي",
"editor": "Editor", "editor": "المحرر",
"meal-recipe": "وصفة الوجبة", "meal-recipe": "وصفة الوجبة",
"meal-title": "عنوان الوجبة", "meal-title": "عنوان الوجبة",
"meal-note": "ملاحظة الوجبة", "meal-note": "ملاحظة الوجبة",
"note-only": "ملاحظة فقط", "note-only": "ملاحظة فقط",
"random-meal": "وجبة عشوائية", "random-meal": "وجبة عشوائية",
"random-dinner": "عشاء عشوائي", "random-dinner": "عشاء عشوائي",
"random-side": "Random Side", "random-side": "جانب عشوائي",
"this-rule-will-apply": "This rule will apply {dayCriteria} {mealTypeCriteria}.", "this-rule-will-apply": "هذه القاعدة سوف تطبق على {dayCriteria} {mealTypeCriteria}.",
"to-all-days": "إلى جميع الأيام", "to-all-days": "إلى جميع الأيام",
"on-days": "on {0}s", "on-days": "على أيام {0}",
"for-all-meal-types": "لجميع أنواع الوجبات", "for-all-meal-types": "لجميع أنواع الوجبات",
"for-type-meal-types": "for {0} meal types", "for-type-meal-types": "لأنواع الوجبات {0}",
"meal-plan-rules": "Meal Plan Rules", "meal-plan-rules": "قواعد خِطَّة وجبة الطعام",
"new-rule": "قاعدة جديدة", "new-rule": "قاعدة جديدة",
"meal-plan-rules-description": "You can create rules for auto selecting recipes for your meal plans. These rules are used by the server to determine the random pool of recipes to select from when creating meal plans. Note that if rules have the same day/type constraints then the rule filters will be merged. In practice, it's unnecessary to create duplicate rules, but it's possible to do so.", "meal-plan-rules-description": "يمكنك إنشاء قواعد لاختيار الوصفات التلقائية لخطط وجبتك الغذائية. وتستخدم هذه القواعد من قبل الخادم لتحديد مجموعة عشوائية من الوصفات التي يتم اختيارها من خلال إنشاء خطط الوجبات. لاحظ أنه إذا كانت القواعد تحتوي على نفس قيود اليوم/النوع فسيتم دمج عوامل تصفية القاعدة. من الناحية العملية، ليس من الضروري إنشاء قواعد مكررة، ولكن من الممكن فعل ذلك.",
"new-rule-description": "When creating a new rule for a meal plan you can restrict the rule to be applicable for a specific day of the week and/or a specific type of meal. To apply a rule to all days or all meal types you can set the rule to \"Any\" which will apply it to all the possible values for the day and/or meal type.", "new-rule-description": "عند إنشاء قاعدة جديدة لخطة وجبة غذائية، يمكنك تقييد القاعدة لتكون قابلة للتطبيق ليوم محدد من الأسبوع و/أو نوع محدد من الوجبات. لتطبيق قاعدة على جميع الأيام أو جميع أنواع الوجبات الغذائية يمكنك تعيين القاعدة إلى \"أي كان\" التي ستطبقها على جميع القيم الممكنة لليوم و/أو نوع الوجبة.",
"recipe-rules": "قواعد الوصفات", "recipe-rules": "قواعد الوصفات",
"applies-to-all-days": "ينطبق على جميع الأيام", "applies-to-all-days": "ينطبق على جميع الأيام",
"applies-on-days": "Applies on {0}s", "applies-on-days": "يطبق على أيام {0}",
"meal-plan-settings": "Meal Plan Settings" "meal-plan-settings": "إعدادات خِطَّة الوجبات الغذائية"
}, },
"migration": { "migration": {
"migration-data-removed": "Migration data removed", "migration-data-removed": "حذف بيانات الهجرة",
"new-migration": "New Migration", "new-migration": "هجرة جديدة",
"no-file-selected": "لم يتمّ اختيار أيّ ملفّ", "no-file-selected": "لم يتمّ اختيار أيّ ملفّ",
"no-migration-data-available": "No Migration Data Available", "no-migration-data-available": "لا توجد بيانات هجرة متوفرة",
"previous-migrations": "Previous Migrations", "previous-migrations": "الهجرة السابقة",
"recipe-migration": "نقل الوصفة", "recipe-migration": "نقل الوصفة",
"chowdown": { "chowdown": {
"description": "Migrate data from Chowdown", "description": "نقل البيانات من \"Chowdown\"",
"description-long": "Mealie natively supports the chowdown repository format. Download the code repository as a .zip file and upload it below.", "description-long": "ميلي يدعم بشكل محلي تنسيق مستودع طعام. يجب تنزيل مستودع التعليمات البرمجية CODE REPOSITORY كملف مضغوط ZIP وتحميله أدناه.",
"title": "Chowdown" "title": "\"Chowdown\""
}, },
"nextcloud": { "nextcloud": {
"description": "Migrate data from a Nextcloud Cookbook instance", "description": "نقل البيانات من نموذج كتاب طبخ NEXTCLOUD",
"description-long": "Nextcloud recipes can be imported from a zip file that contains the data stored in Nextcloud. See the example folder structure below to ensure your recipes are able to be imported.", "description-long": "يمكن استيراد الوصفات السحابية من مِلَفّ مضغوط ZIP يحتوي على البيانات المخزنة في Nextcloud. راجع بنية مجلد المثال أدناه للتأكد من أن وصفاتك قابلة للاستيراد.",
"title": "Nextcloud Cookbook" "title": "كتاب طبخ <Nextcloud>"
}, },
"copymethat": { "copymethat": {
"description-long": "Mealie can import recipes from Copy Me That. Export your recipes in HTML format, then upload the .zip below.", "description-long": "يمكن لميلي استيراد الوصفات من نسخ لي. يجب تصدير وصفاتك بتنسيق HTML، ثم تحميل ZIP أدناه.",
"title": "Copy Me That Recipe Manager" "title": "انسخ لي مدير الوصفة"
}, },
"paprika": { "paprika": {
"description-long": "Mealie can import recipes from the Paprika application. Export your recipes from paprika, rename the export extension to .zip and upload it below.", "description-long": "يمكن لميلي استيراد الوصفات من تطبيق PAPRIKA. يجب تصدير وصفاتك من PAPRIKA، وإعادة تسمية امتداد التصدير إلى .ZIP وتحميله أدناه.",
"title": "Paprika Recipe Manager" "title": "مدير وصفة بابريكا"
}, },
"mealie-pre-v1": { "mealie-pre-v1": {
"description-long": "Mealie can import recipes from the Mealie application from a pre v1.0 release. Export your recipes from your old instance, and upload the zip file below. Note that only recipes can be imported from the export.", "description-long": "يمكن لميلي استيراد الوصفات من تطبيق ميلي من إصدار قبل 1.0. يجب تصدير وصفاتك من نموذجك القديم، وتحميل المِلَفّ المضغوط أدناه. لاحظ أنه يمكن استيراد الوصفات فقط من التصدير.",
"title": "Mealie Pre v1.0" "title": "ميلي إصدار قبل 1.0"
}, },
"tandoor": { "tandoor": {
"description-long": "Mealie can import recipes from Tandoor. Export your data in the \"Default\" format, then upload the .zip below.", "description-long": "يمكن لميلي استيراد الوصفات من تندور. يجب تصدير بياناتك بالتنسيق \"الافتراضي\"، ثم يجب تحميل المِلَفّ المضغوط أدناه.",
"title": "Tandoor Recipes" "title": "وصفات تاندور"
}, },
"recipe-data-migrations": "Recipe Data Migrations", "recipe-data-migrations": "وصفة 2",
"recipe-data-migrations-explanation": "Recipes can be migrated from another supported application to Mealie. This is a great way to get started with Mealie.", "recipe-data-migrations-explanation": "يمكن نقل الوصفات من تطبيق آخر مدعوم إلى ميلي. هذه طريقة رائعة للبدء مع ميلي.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.", "coming-from-another-application-or-an-even-older-version-of-mealie": "هل تأتي من تطبيق آخر أو حتى إصدار قديم من ميلي؟ يجب التحقق من عمليات الترحيل لمعرفة ما إذا كان يمكن استيراد بياناتك.",
"choose-migration-type": "Choose Migration Type", "choose-migration-type": "اختر نوع الترحيل",
"tag-all-recipes": "Tag all recipes with {tag-name} tag", "tag-all-recipes": "وسم جميع الوصفات باستخدام علامة {tag-name}",
"nextcloud-text": "Nextcloud recipes can be imported from a zip file that contains the data stored in Nextcloud. See the example folder structure below to ensure your recipes are able to be imported.", "nextcloud-text": "يمكن استيراد الوصفات السحابية من مِلَفّ مضغوط Zip يحتوي على البيانات المخزنة في Nextcloud. راجع بنية مجلد المثال أدناه للتأكد من أن وصفاتك قابلة للاستيراد.",
"chowdown-text": "Mealie natively supports the chowdown repository format. Download the code repository as a .zip file and upload it below.", "chowdown-text": "Mealie natively supports the chowdown repository format. Download the code repository as a .zip file and upload it below.",
"recipe-1": "Recipe 1", "recipe-1": "وصفة 1",
"recipe-2": "Recipe 2", "recipe-2": "وصفة 2",
"paprika-text": "Mealie can import recipes from the Paprika application. Export your recipes from paprika, rename the export extension to .zip and upload it below.", "paprika-text": "Mealie can import recipes from the Paprika application. Export your recipes from paprika, rename the export extension to .zip and upload it below.",
"mealie-text": "Mealie can import recipes from the Mealie application from a pre v1.0 release. Export your recipes from your old instance, and upload the zip file below. Note that only recipes can be imported from the export.", "mealie-text": "Mealie can import recipes from the Mealie application from a pre v1.0 release. Export your recipes from your old instance, and upload the zip file below. Note that only recipes can be imported from the export.",
"plantoeat": { "plantoeat": {
"title": "Plan to Eat", "title": "خِطَّة تناول الطعام",
"description-long": "Mealie can import recipies from Plan to Eat." "description-long": "Mealie can import recipies from Plan to Eat."
}, },
"myrecipebox": { "myrecipebox": {
@ -416,44 +417,44 @@
"description-long": "Mealie can import recipes from My Recipe Box. Export your recipes in CSV format, then upload the .csv file below." "description-long": "Mealie can import recipes from My Recipe Box. Export your recipes in CSV format, then upload the .csv file below."
}, },
"recipekeeper": { "recipekeeper": {
"title": "Recipe Keeper", "title": "مدير الوصفة",
"description-long": "Mealie can import recipes from Recipe Keeper. Export your recipes in zip format, then upload the .zip file below." "description-long": "Mealie can import recipes from Recipe Keeper. Export your recipes in zip format, then upload the .zip file below."
} }
}, },
"new-recipe": { "new-recipe": {
"bulk-add": "Bulk Add", "bulk-add": "إضافة مجموعة",
"error-details": "Only websites containing ld+json or microdata can be imported by Mealie. Most major recipe websites support this data structure. If your site cannot be imported but there is json data in the log, please submit a github issue with the URL and data.", "error-details": "Only websites containing ld+json or microdata can be imported by Mealie. Most major recipe websites support this data structure. If your site cannot be imported but there is json data in the log, please submit a github issue with the URL and data.",
"error-title": "Looks Like We Couldn't Find Anything", "error-title": "Looks Like We Couldn't Find Anything",
"from-url": "Import a Recipe", "from-url": "استيراد وصفة",
"github-issues": "مشاكل GitHub", "github-issues": "مشاكل GitHub",
"google-ld-json-info": "معرف Google + معلومات json", "google-ld-json-info": "معرف Google + معلومات json",
"must-be-a-valid-url": "يجب أن يكون عنوان URL صالحًا", "must-be-a-valid-url": "يجب أن يكون عنوان URL صالحًا",
"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", "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-markup-specification": "Recipe Markup Specification",
"recipe-url": "Recipe URL", "recipe-url": "رابط الوصفة",
"recipe-html-or-json": "Recipe HTML or JSON", "recipe-html-or-json": "وصفة HTML أو JSON",
"upload-a-recipe": "Upload a Recipe", "upload-a-recipe": "تحميل وصفة",
"upload-individual-zip-file": "Upload an individual .zip file exported from another Mealie instance.", "upload-individual-zip-file": "تحميل مِلَفّ zip فردي تم تصديره من مثيل Malie آخر.",
"url-form-hint": "Copy and paste a link from your favorite recipe website", "url-form-hint": "نسخ ولصق رابط من موقعك المفضل للوصفة",
"view-scraped-data": "View Scraped Data", "view-scraped-data": "عرض البيانات المكشوفة",
"trim-whitespace-description": "Trim leading and trailing whitespace as well as blank lines", "trim-whitespace-description": "قص المسافات البيضاء البادئة واللاحقة وكذلك الأسطر الفارغة",
"trim-prefix-description": "Trim first character from each line", "trim-prefix-description": "قص الحرف الأول من كل سطر",
"split-by-numbered-line-description": "Attempts to split a paragraph by matching '1)' or '1.' patterns", "split-by-numbered-line-description": "Attempts to split a paragraph by matching '1)' or '1.' patterns",
"import-by-url": "Import a recipe by URL", "import-by-url": "استيراد وصفة عن طريق عنوان URL",
"create-manually": "Create a recipe manually", "create-manually": "إنشاء وصفة يدوياً",
"make-recipe-image": "Make this the recipe image" "make-recipe-image": "اجعل هذه صورة الوصفة"
}, },
"page": { "page": {
"404-page-not-found": "404 Page not found", "404-page-not-found": "404: لم يتم العثور على الصفحة",
"all-recipes": "All Recipes", "all-recipes": "جميع الوصفات",
"new-page-created": "New page created", "new-page-created": "تم إنشاء الصفحة الجديدة",
"page": "الصفحة", "page": "الصفحة",
"page-creation-failed": "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-update-failed": "فشل تحديث الصفحات",
"pages-updated": "Pages updated", "pages-updated": "Pages updated",
"404-not-found": "لم يتم العثور على الصفحة. خطأ 404", "404-not-found": "لم يتم العثور على الصفحة. خطأ 404",
"an-error-occurred": "حصل خطأ ما" "an-error-occurred": "حصل خطأ ما"
@ -499,41 +500,42 @@
"object-value": "Object Value", "object-value": "Object Value",
"original-url": "Original URL", "original-url": "Original URL",
"perform-time": "Cook Time", "perform-time": "Cook Time",
"prep-time": "Prep Time", "prep-time": "وقت التحضير",
"protein-content": "Protein", "protein-content": "البروتين",
"public-recipe": "Public Recipe", "public-recipe": "وصفة عامة",
"recipe-created": "Recipe created", "recipe-created": "تم إنشاء الوصفة",
"recipe-creation-failed": "Recipe creation failed", "recipe-creation-failed": "فشل إنشاء الوصفة",
"recipe-deleted": "Recipe deleted", "recipe-deleted": "تم حذف الوصفة",
"recipe-image": "Recipe Image", "recipe-image": "صورة الوصفة",
"recipe-image-updated": "Recipe image updated", "recipe-image-updated": "تم تحديث صورة الوصفة",
"recipe-name": "Recipe Name", "recipe-name": "اسم الوصفة",
"recipe-settings": "Recipe Settings", "recipe-settings": "إعدادات الوصفة",
"recipe-update-failed": "Recipe update failed", "recipe-update-failed": "فشل تحديث الوصفة",
"recipe-updated": "Recipe updated", "recipe-updated": "تم تحديث الوصفة",
"remove-from-favorites": "Remove from Favorites", "remove-from-favorites": "إزالة من المفضلات",
"remove-section": "Remove Section", "remove-section": "إزالة القسم",
"saturated-fat-content": "Saturated fat", "saturated-fat-content": "الدهون المشبعة",
"save-recipe-before-use": "Save recipe before use", "save-recipe-before-use": "حفظ الوصفة قبل الاستخدام",
"section-title": "Section Title", "section-title": "عنوان القسم",
"servings": "Servings", "servings": "حصص الطعام",
"share-recipe-message": "I wanted to share my {0} recipe with you.", "serves-amount": "{amount} حصص",
"share-recipe-message": "أردت أن أشارككم وصفة {0} الخاصة بي.",
"show-nutrition-values": "Show Nutrition Values", "show-nutrition-values": "Show Nutrition Values",
"sodium-content": "Sodium", "sodium-content": "صوديوم",
"step-index": "Step: {step}", "step-index": "الخطوة: {step}",
"sugar-content": "Sugar", "sugar-content": "سكر",
"title": "Title", "title": "العنوان",
"total-time": "Total Time", "total-time": "الوقت الإجمالي",
"trans-fat-content": "Trans-fat", "trans-fat-content": "الدهون المتحولة",
"unable-to-delete-recipe": "Unable to Delete Recipe", "unable-to-delete-recipe": "تعذر حذف الوصفة",
"unsaturated-fat-content": "Unsaturated fat", "unsaturated-fat-content": "دهون غير مشبعة",
"no-recipe": "No Recipe", "no-recipe": "لا يوجد وصفة",
"locked-by-owner": "Locked by Owner", "locked-by-owner": "مقفلة من قبل المالك",
"join-the-conversation": "Join the Conversation", "join-the-conversation": "انضم للمحادثة",
"add-recipe-to-mealplan": "Add Recipe to Mealplan", "add-recipe-to-mealplan": "إضافة الوصفة إلى خِطَّة الوجبة",
"entry-type": "Entry Type", "entry-type": "نوع الإدخال",
"date-format-hint": "MM/DD/YYYY format", "date-format-hint": "صيغة MM/DD/YYYYY",
"date-format-hint-yyyy-mm-dd": "YYYY-MM-DD format", "date-format-hint-yyyy-mm-dd": "صيغة YYY-MM-DD",
"add-to-list": "Add to List", "add-to-list": "Add to List",
"add-to-plan": "Add to Plan", "add-to-plan": "Add to Plan",
"add-to-timeline": "Add to Timeline", "add-to-timeline": "Add to Timeline",
@ -545,8 +547,10 @@
"failed-to-add-recipe-to-mealplan": "Failed to add recipe to mealplan", "failed-to-add-recipe-to-mealplan": "Failed to add recipe to mealplan",
"failed-to-add-to-list": "Failed to add to list", "failed-to-add-to-list": "Failed to add to list",
"yield": "Yield", "yield": "Yield",
"yields-amount-with-text": "Yields {amount} {text}",
"yield-text": "Yield Text",
"quantity": "Quantity", "quantity": "Quantity",
"choose-unit": "Choose Unit", "choose-unit": "اختر الوحدة",
"press-enter-to-create": "Press Enter to Create", "press-enter-to-create": "Press Enter to Create",
"choose-food": "Choose Food", "choose-food": "Choose Food",
"notes": "Notes", "notes": "Notes",
@ -566,13 +570,6 @@
"increase-scale-label": "Increase Scale by 1", "increase-scale-label": "Increase Scale by 1",
"locked": "Locked", "locked": "Locked",
"public-link": "Public Link", "public-link": "Public Link",
"timer": {
"kitchen-timer": "Kitchen Timer",
"start-timer": "Start Timer",
"pause-timer": "Pause Timer",
"resume-timer": "Resume Timer",
"stop-timer": "Stop Timer"
},
"edit-timeline-event": "Edit Timeline Event", "edit-timeline-event": "Edit Timeline Event",
"timeline": "Timeline", "timeline": "Timeline",
"timeline-is-empty": "Nothing on the timeline yet. Try making this recipe!", "timeline-is-empty": "Nothing on the timeline yet. Try making this recipe!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.", "recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.",
"debug": "Debug", "debug": "Debug",
"tree-view": "Tree View", "tree-view": "Tree View",
"recipe-servings": "Recipe Servings",
"recipe-yield": "Recipe Yield", "recipe-yield": "Recipe Yield",
"recipe-yield-text": "Recipe Yield Text",
"unit": "Unit", "unit": "Unit",
"upload-image": "Upload image", "upload-image": "Upload image",
"screen-awake": "Keep Screen Awake", "screen-awake": "Keep Screen Awake",
@ -662,7 +661,25 @@
"missing-food": "Create missing food: {food}", "missing-food": "Create missing food: {food}",
"no-food": "No Food" "no-food": "No Food"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Reset Servings Count",
"not-linked-ingredients": "Additional Ingredients"
},
"recipe-finder": {
"recipe-finder": "Recipe Finder",
"recipe-finder-description": "Search for recipes based on ingredients you have on hand. You can also filter by tools you have available, and set a maximum number of missing ingredients or tools.",
"selected-ingredients": "Selected Ingredients",
"no-ingredients-selected": "No ingredients selected",
"missing": "Missing",
"no-recipes-found": "No recipes found",
"no-recipes-found-description": "Try adding more ingredients to your search or adjusting your filters",
"include-ingredients-on-hand": "Include Ingredients On Hand",
"include-tools-on-hand": "Include Tools On Hand",
"max-missing-ingredients": "Max Missing Ingredients",
"max-missing-tools": "Max Missing Tools",
"selected-tools": "Selected Tools",
"other-filters": "Other Filters",
"ready-to-make": "Ready to Make",
"almost-ready-to-make": "Almost Ready to Make"
}, },
"search": { "search": {
"advanced-search": "Advanced Search", "advanced-search": "Advanced Search",
@ -866,7 +883,8 @@
"you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.", "you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.",
"are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?", "are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?",
"are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?", "are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?",
"are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?" "are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?",
"no-shopping-lists-found": "No Shopping Lists Found"
}, },
"sidebar": { "sidebar": {
"all-recipes": "All Recipes", "all-recipes": "All Recipes",
@ -1278,6 +1296,7 @@
"profile": { "profile": {
"welcome-user": "👋 Welcome, {0}!", "welcome-user": "👋 Welcome, {0}!",
"description": "Manage your profile, recipes, and group settings.", "description": "Manage your profile, recipes, and group settings.",
"invite-link": "Invite Link",
"get-invite-link": "Get Invite Link", "get-invite-link": "Get Invite Link",
"get-public-link": "Get Public Link", "get-public-link": "Get Public Link",
"account-summary": "Account Summary", "account-summary": "Account Summary",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Cookbooks", "cookbooks": "Cookbooks",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.",
"hide-cookbooks-from-other-households": "Hide Cookbooks from Other Households",
"hide-cookbooks-from-other-households-description": "When enabled, only cookbooks from your household will appear on the sidebar",
"public-cookbook": "Public Cookbook", "public-cookbook": "Public Cookbook",
"public-cookbook-description": "Public Cookbooks can be shared with non-mealie users and will be displayed on your groups page.", "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": "Filter Options",

View file

@ -276,7 +276,8 @@
"admin-group-management": "Административно управление на групите", "admin-group-management": "Административно управление на групите",
"admin-group-management-text": "Промените по тази група ще бъдат отразени моментално.", "admin-group-management-text": "Промените по тази група ще бъдат отразени моментално.",
"group-id-value": "ID на Групата: {0}", "group-id-value": "ID на Групата: {0}",
"total-households": "Общ брой домакинства" "total-households": "Общ брой домакинства",
"you-must-select-a-group-before-selecting-a-household": "You must select a group before selecting a household"
}, },
"household": { "household": {
"household": "Домакинство", "household": "Домакинство",
@ -517,6 +518,7 @@
"save-recipe-before-use": "Запази рецептата преди да я използваш", "save-recipe-before-use": "Запази рецептата преди да я използваш",
"section-title": "Заглавие на раздела", "section-title": "Заглавие на раздела",
"servings": "Порция|порции", "servings": "Порция|порции",
"serves-amount": "Serves {amount}",
"share-recipe-message": "Искам да споделя моята рецепта {0} с теб.", "share-recipe-message": "Искам да споделя моята рецепта {0} с теб.",
"show-nutrition-values": "Покажи хранителните стойности", "show-nutrition-values": "Покажи хранителните стойности",
"sodium-content": "Натрий", "sodium-content": "Натрий",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Рецептата не беше добавена към хранителния план", "failed-to-add-recipe-to-mealplan": "Рецептата не беше добавена към хранителния план",
"failed-to-add-to-list": "Неуспешно добавяне към списъка", "failed-to-add-to-list": "Неуспешно добавяне към списъка",
"yield": "Добив", "yield": "Добив",
"yields-amount-with-text": "Yields {amount} {text}",
"yield-text": "Yield Text",
"quantity": "Количество", "quantity": "Количество",
"choose-unit": "Избери единица", "choose-unit": "Избери единица",
"press-enter-to-create": "Натисните Enter за да създадете", "press-enter-to-create": "Натисните Enter за да създадете",
@ -566,13 +570,6 @@
"increase-scale-label": "Увеличи мащаба с 1", "increase-scale-label": "Увеличи мащаба с 1",
"locked": "Заключено", "locked": "Заключено",
"public-link": "Публична връзка", "public-link": "Публична връзка",
"timer": {
"kitchen-timer": "Кухненски таймер",
"start-timer": "Стартирай таймера",
"pause-timer": "Поставяне таймера на пауза",
"resume-timer": "Възобновяване на таймера",
"stop-timer": "Спри таймера"
},
"edit-timeline-event": "Редактирай събитие", "edit-timeline-event": "Редактирай събитие",
"timeline": "Хронология на събитията", "timeline": "Хронология на събитията",
"timeline-is-empty": "Няма история на събитията. Опитайте да приготвите рецептата!", "timeline-is-empty": "Няма история на събитията. Опитайте да приготвите рецептата!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.", "recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.",
"debug": "Отстраняване на грешки", "debug": "Отстраняване на грешки",
"tree-view": "Дървовиден изглед", "tree-view": "Дървовиден изглед",
"recipe-servings": "Recipe Servings",
"recipe-yield": "Добиване от рецепта", "recipe-yield": "Добиване от рецепта",
"recipe-yield-text": "Recipe Yield Text",
"unit": "Единица", "unit": "Единица",
"upload-image": "Качване на изображение", "upload-image": "Качване на изображение",
"screen-awake": "Запази екрана активен", "screen-awake": "Запази екрана активен",
@ -662,7 +661,25 @@
"missing-food": "Create missing food: {food}", "missing-food": "Create missing food: {food}",
"no-food": "No Food" "no-food": "No Food"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Reset Servings Count",
"not-linked-ingredients": "Additional Ingredients"
},
"recipe-finder": {
"recipe-finder": "Recipe Finder",
"recipe-finder-description": "Search for recipes based on ingredients you have on hand. You can also filter by tools you have available, and set a maximum number of missing ingredients or tools.",
"selected-ingredients": "Selected Ingredients",
"no-ingredients-selected": "No ingredients selected",
"missing": "Missing",
"no-recipes-found": "No recipes found",
"no-recipes-found-description": "Try adding more ingredients to your search or adjusting your filters",
"include-ingredients-on-hand": "Include Ingredients On Hand",
"include-tools-on-hand": "Include Tools On Hand",
"max-missing-ingredients": "Max Missing Ingredients",
"max-missing-tools": "Max Missing Tools",
"selected-tools": "Selected Tools",
"other-filters": "Other Filters",
"ready-to-make": "Ready to Make",
"almost-ready-to-make": "Almost Ready to Make"
}, },
"search": { "search": {
"advanced-search": "Разширено търсене", "advanced-search": "Разширено търсене",
@ -866,7 +883,8 @@
"you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.", "you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.",
"are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?", "are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?",
"are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?", "are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?",
"are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?" "are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?",
"no-shopping-lists-found": "No Shopping Lists Found"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Всички рецепти", "all-recipes": "Всички рецепти",
@ -1278,6 +1296,7 @@
"profile": { "profile": {
"welcome-user": "👋 Добре дошъл(а), {0}!", "welcome-user": "👋 Добре дошъл(а), {0}!",
"description": "Настройки на профил, рецепти и настройки на групата.", "description": "Настройки на профил, рецепти и настройки на групата.",
"invite-link": "Invite Link",
"get-invite-link": "Вземи линк за покана", "get-invite-link": "Вземи линк за покана",
"get-public-link": "Вземи публичен линк", "get-public-link": "Вземи публичен линк",
"account-summary": "Обобщение на акаунта", "account-summary": "Обобщение на акаунта",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Готварски книги", "cookbooks": "Готварски книги",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.",
"hide-cookbooks-from-other-households": "Hide Cookbooks from Other Households",
"hide-cookbooks-from-other-households-description": "When enabled, only cookbooks from your household will appear on the sidebar",
"public-cookbook": "Публична книга с рецепти", "public-cookbook": "Публична книга с рецепти",
"public-cookbook-description": "Публичните готварски книги могат да се споделят с потребители, които не са в Mealie, и ще се показват на страницата на вашите групи.", "public-cookbook-description": "Публичните готварски книги могат да се споделят с потребители, които не са в Mealie, и ще се показват на страницата на вашите групи.",
"filter-options": "Опции на филтъра", "filter-options": "Опции на филтъра",

View file

@ -43,7 +43,7 @@
"category-deleted": "S'ha suprimit la categoria", "category-deleted": "S'ha suprimit la categoria",
"category-deletion-failed": "S'ha produït un error al eliminar la categoria", "category-deletion-failed": "S'ha produït un error al eliminar la categoria",
"category-filter": "Filtre per categoria", "category-filter": "Filtre per categoria",
"category-update-failed": "S'ha produït un error a l'actualitzar la categoria", "category-update-failed": "S'ha produït un error en actualitzar la categoria",
"category-updated": "S'ha actualitzat la categoria", "category-updated": "S'ha actualitzat la categoria",
"uncategorized-count": "{count} sense categoritzar", "uncategorized-count": "{count} sense categoritzar",
"create-a-category": "Crea una categoria", "create-a-category": "Crea una categoria",
@ -51,7 +51,7 @@
"category": "Categoria" "category": "Categoria"
}, },
"events": { "events": {
"apprise-url": "URL de Apprise", "apprise-url": "URL d'Apprise",
"database": "Base de Dades", "database": "Base de Dades",
"delete-event": "Suprimiu l'esdeveniment", "delete-event": "Suprimiu l'esdeveniment",
"event-delete-confirmation": "Està segur que vol suprimir aquest esdeveniment?", "event-delete-confirmation": "Està segur que vol suprimir aquest esdeveniment?",
@ -96,7 +96,7 @@
"dashboard": "Tauler de control", "dashboard": "Tauler de control",
"delete": "Suprimeix", "delete": "Suprimeix",
"disabled": "Desactivat", "disabled": "Desactivat",
"download": "Baixal", "download": "Descarregar",
"duplicate": "Duplica", "duplicate": "Duplica",
"edit": "Edita", "edit": "Edita",
"enabled": "Activat", "enabled": "Activat",
@ -182,7 +182,7 @@
"date": "Data", "date": "Data",
"id": "Id", "id": "Id",
"owner": "Propietari", "owner": "Propietari",
"change-owner": "Change Owner", "change-owner": "Canviar propietari",
"date-added": "Data d'alta", "date-added": "Data d'alta",
"none": "Cap", "none": "Cap",
"run": "Executa", "run": "Executa",
@ -214,10 +214,10 @@
"confirm-delete-generic-items": "Are you sure you want to delete the following items?", "confirm-delete-generic-items": "Are you sure you want to delete the following items?",
"organizers": "Organitzadors", "organizers": "Organitzadors",
"caution": "Precaució", "caution": "Precaució",
"show-advanced": "Show Advanced", "show-advanced": "Mostrar els paràmetres avançats",
"add-field": "Add Field", "add-field": "Afegir camp",
"date-created": "Date Created", "date-created": "Data de creació",
"date-updated": "Date Updated" "date-updated": "Data dactualització"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Esteu segur de voler suprimir el grup <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Esteu segur de voler suprimir el grup <b>{groupName}<b/>?",
@ -225,10 +225,10 @@
"cannot-delete-group-with-users": "No es pot suprimir un grup amb usuaris", "cannot-delete-group-with-users": "No es pot suprimir un grup amb usuaris",
"confirm-group-deletion": "Confirma l'eliminació del grup", "confirm-group-deletion": "Confirma l'eliminació del grup",
"create-group": "Crea un grup", "create-group": "Crea un grup",
"error-updating-group": "Sha produït un error a l'actualitzar el grup", "error-updating-group": "Sha produït un error actualitzant el grup",
"group": "Grup", "group": "Grup",
"group-deleted": "S'ha suprimir el grup", "group-deleted": "S'ha suprimit el grup",
"group-deletion-failed": "S'ha produït un error al suprimir el grup", "group-deletion-failed": "S'ha produït un error en suprimir el grup",
"group-id-with-value": "Identificador del grup: {groupID}", "group-id-with-value": "Identificador del grup: {groupID}",
"group-name": "Nom del grup", "group-name": "Nom del grup",
"group-not-found": "No s'ha trobat el grup", "group-not-found": "No s'ha trobat el grup",
@ -238,15 +238,15 @@
"manage-groups": "Gestiona els grups", "manage-groups": "Gestiona els grups",
"user-group": "Grup", "user-group": "Grup",
"user-group-created": "S'ha creat el grup de l'usuari", "user-group-created": "S'ha creat el grup de l'usuari",
"user-group-creation-failed": "Ha fallat la creación del grup de l'usuari", "user-group-creation-failed": "Ha fallat la creació del grup de l'usuari",
"settings": { "settings": {
"keep-my-recipes-private": "Manté les meues receptes privades", "keep-my-recipes-private": "Mantenir les meves receptes privades",
"keep-my-recipes-private-description": "Posa el teu grup i totes les receptes com privades. Podeu canviar-lo després." "keep-my-recipes-private-description": "Posa el teu grup i totes les receptes com a privades. Podeu canviar-ho després."
}, },
"manage-members": "Gestiona els membres", "manage-members": "Gestiona els membres",
"manage-members-description": "Gestiona els permisos dels membres de la teva llar. {manage} permet a l'usuari accedir la pàgina de gestió de dades, i {invite} permet a l'usuari generar enllaços d'invitació per altres usuaris. Els propitetaris de grups no es poden canviar els seus propis permisos.", "manage-members-description": "Gestiona els permisos dels membres de la teva llar. {manage} permet a l'usuari accedir la pàgina de gestió de dades, i {invite} permet a l'usuari generar enllaços d'invitació per altres usuaris. Els propietaris de grups no es poden canviar els seus propis permisos.",
"manage": "Gestiona", "manage": "Gestiona",
"manage-household": "Gestiona llar", "manage-household": "Gestiona la llar",
"invite": "Convida", "invite": "Convida",
"looking-to-update-your-profile": "Voleu actualitzar el vostre perfil?", "looking-to-update-your-profile": "Voleu actualitzar el vostre perfil?",
"default-recipe-preferences-description": "Aquestes són les configuracions per defecte quan una recepta es crea en el teu grup. Podeu canviar-les de forma individual en el menú d'opcions de cada recepta.", "default-recipe-preferences-description": "Aquestes són les configuracions per defecte quan una recepta es crea en el teu grup. Podeu canviar-les de forma individual en el menú d'opcions de cada recepta.",
@ -256,14 +256,14 @@
"private-group-description": "Configurar el teu grup com a privat en desactivarà totes les opcions de vista pública. Això sobreescriu qualsevol configuració de vista pública individual", "private-group-description": "Configurar el teu grup com a privat en desactivarà totes les opcions de vista pública. Això sobreescriu qualsevol configuració de vista pública individual",
"enable-public-access": "Permetre l'accés públic", "enable-public-access": "Permetre l'accés públic",
"enable-public-access-description": "Fes les receptes en grup públiques per defecte, i permet a visitants veure receptes sense registrar-se", "enable-public-access-description": "Fes les receptes en grup públiques per defecte, i permet a visitants veure receptes sense registrar-se",
"allow-users-outside-of-your-group-to-see-your-recipes": "Permeteu als usuaris d'altres grups, visualitzar les vostres receptes", "allow-users-outside-of-your-group-to-see-your-recipes": "Permeteu que usuaris d'altres grups visualitzin les vostres receptes",
"allow-users-outside-of-your-group-to-see-your-recipes-description": "Si ho habiliteu, podreu compartir enllaços públics de receptes específiques sense autoritzar l'usuari. Si està deshabilitat, només podreu compartir amb usuaris del vostre grup o generant enllaços privats", "allow-users-outside-of-your-group-to-see-your-recipes-description": "Si ho habiliteu, podreu compartir enllaços públics de receptes específiques sense autoritzar l'usuari. Si està deshabilitat, només podreu compartir amb usuaris del vostre grup o generant enllaços privats",
"show-nutrition-information": "Mostra la informació nutricional", "show-nutrition-information": "Mostra la informació nutricional",
"show-nutrition-information-description": "Si ho habiliteu, mostrareu la informació nutricional disponible. Si no hi ha informació nutricional disponible, no es mostrarà res", "show-nutrition-information-description": "Si ho habiliteu, mostrareu la informació nutricional disponible. Si no hi ha informació nutricional disponible, no es mostrarà res",
"show-recipe-assets": "Mostreu els recursos de les receptes", "show-recipe-assets": "Mostreu els recursos de les receptes",
"show-recipe-assets-description": "Si està habilitat, es mostraran els recursos de les receptes si hi són disponibles", "show-recipe-assets-description": "Si està habilitat, es mostraran els recursos de les receptes si estan disponibles",
"default-to-landscape-view": "Vista horitzontal per defecte", "default-to-landscape-view": "Vista horitzontal per defecte",
"default-to-landscape-view-description": "Quan està activat la capçalera de la secció de receptes es mostraran en vista panoràmica", "default-to-landscape-view-description": "Quan està activat la capçalera de la secció de receptes es mostrarà en vista panoràmica",
"disable-users-from-commenting-on-recipes": "Desactiva els comentaris a les receptes", "disable-users-from-commenting-on-recipes": "Desactiva els comentaris a les receptes",
"disable-users-from-commenting-on-recipes-description": "Amaga la secció de comentaris a les pàgines de recepta i deshabilita els comentaris", "disable-users-from-commenting-on-recipes-description": "Amaga la secció de comentaris a les pàgines de recepta i deshabilita els comentaris",
"disable-organizing-recipe-ingredients-by-units-and-food": "Desactiva l'organització dels ingredients de la recepta per unitats i aliments", "disable-organizing-recipe-ingredients-by-units-and-food": "Desactiva l'organització dels ingredients de la recepta per unitats i aliments",
@ -276,7 +276,8 @@
"admin-group-management": "Gestió del grup d'administradors", "admin-group-management": "Gestió del grup d'administradors",
"admin-group-management-text": "Els canvis en aquest grup s'actualitzaran immediatament.", "admin-group-management-text": "Els canvis en aquest grup s'actualitzaran immediatament.",
"group-id-value": "ID del grup: {0}", "group-id-value": "ID del grup: {0}",
"total-households": "Llars totals" "total-households": "Llars totals",
"you-must-select-a-group-before-selecting-a-household": "Heu de seleccionar un grup abans de seleccionar una llar"
}, },
"household": { "household": {
"household": "Llar", "household": "Llar",
@ -285,25 +286,25 @@
"create-household": "Crea llar", "create-household": "Crea llar",
"household-name": "Nom de la llar", "household-name": "Nom de la llar",
"household-group": "Grup de llar", "household-group": "Grup de llar",
"household-management": "Gestió de llar", "household-management": "Gestió de la llar",
"manage-households": "Gestiona llars", "manage-households": "Gestiona llars",
"admin-household-management": "Gestió de llar d'administrador", "admin-household-management": "Gestió de la llar de l'administrador",
"admin-household-management-text": "Canvis en aquesta llar s'actualitzaran immediatament.", "admin-household-management-text": "Els canvis a aquesta llar s'actualitzaran immediatament.",
"household-id-value": "Id de llar: {0}", "household-id-value": "Id de llar: {0}",
"private-household": "Llar privada", "private-household": "Llar privada",
"private-household-description": "Configurar la teva llar com a privada en desactivarà totes les opcions de vista pública. Això sobreescriu qualsevol configuració de vista pública individual", "private-household-description": "Configurar la teva llar com a privada en desactivarà totes les opcions de vista pública. Això sobreescriu qualsevol configuració de vista pública individual",
"lock-recipe-edits-from-other-households": "Bloqueja les edicions de receptes des d'altres llars", "lock-recipe-edits-from-other-households": "Bloqueja les edicions de receptes des d'altres llars",
"lock-recipe-edits-from-other-households-description": "Quan activat, només els usuaris de la teva llar poden editar les receptes creades per la teva llar", "lock-recipe-edits-from-other-households-description": "Quan activat, només els usuaris de la teva llar poden editar les receptes creades per la teva llar",
"household-recipe-preferences": "Preferències de receptes de llar", "household-recipe-preferences": "Preferències de receptes de llar",
"default-recipe-preferences-description": "These are the default settings when a new recipe is created in your household. These can be changed for individual recipes in the recipe settings menu.", "default-recipe-preferences-description": "Aquestes són les configuracions per defecte en crear una recepta en la teva llar. Podeu canviar-les de forma individual en el menú d'opcions de cada recepta.",
"allow-users-outside-of-your-household-to-see-your-recipes": "Allow users outside of your household to see your recipes", "allow-users-outside-of-your-household-to-see-your-recipes": "Permeteu als usuaris d'altres grups, visualitzar les vostres receptes",
"allow-users-outside-of-your-household-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 household or with a pre-generated private link", "allow-users-outside-of-your-household-to-see-your-recipes-description": "Si ho habiliteu, podreu compartir enllaços públics de receptes específiques sense autoritzar l'usuari. Si està deshabilitat, només podreu compartir amb usuaris de la vostra llar o generant enllaços privats",
"household-preferences": "Household Preferences" "household-preferences": "Preferències de la llar"
}, },
"meal-plan": { "meal-plan": {
"create-a-new-meal-plan": "Crea un nou menú", "create-a-new-meal-plan": "Crea un nou menú",
"update-this-meal-plan": "Actualitza aquest pla de menjar", "update-this-meal-plan": "Actualitza aquest pla de menjar",
"dinner-this-week": "Sopar d'esta setmana", "dinner-this-week": "Sopar d'aquesta setmana",
"dinner-today": "Sopar per avui", "dinner-today": "Sopar per avui",
"dinner-tonight": "Sopar d'aquesta nit", "dinner-tonight": "Sopar d'aquesta nit",
"edit-meal-plan": "Edita el menú", "edit-meal-plan": "Edita el menú",
@ -320,10 +321,10 @@
"mealplan-settings": "Configuració del menú", "mealplan-settings": "Configuració del menú",
"mealplan-update-failed": "S'ha produït un error a l'actualitzar el menú", "mealplan-update-failed": "S'ha produït un error a l'actualitzar el menú",
"mealplan-updated": "S'ha actualitzat el menú", "mealplan-updated": "S'ha actualitzat el menú",
"mealplan-households-description": "If no household is selected, recipes can be added from any household", "mealplan-households-description": "Si no hi ha cap llar seleccionada, les receptes es poden afegir de qualsevol llar",
"any-category": "Any Category", "any-category": "Qualsevol categoria",
"any-tag": "Any Tag", "any-tag": "Qualsevol etiqueta",
"any-household": "Any Household", "any-household": "Qualsevol llar",
"no-meal-plan-defined-yet": "No hi ha cap menú planificat", "no-meal-plan-defined-yet": "No hi ha cap menú planificat",
"no-meal-planned-for-today": "No hi han cap menú per a hui", "no-meal-planned-for-today": "No hi han cap menú per a hui",
"numberOfDays-hint": "Nombre de dies en carregar la pàgina", "numberOfDays-hint": "Nombre de dies en carregar la pàgina",
@ -336,8 +337,8 @@
"start-date": "Data d'inici", "start-date": "Data d'inici",
"rule-day": "Regla per a Dia", "rule-day": "Regla per a Dia",
"meal-type": "Tipus de menjar", "meal-type": "Tipus de menjar",
"breakfast": "Desdejuni", "breakfast": "Esmorzar",
"lunch": "Menjar principal", "lunch": "Dinar",
"dinner": "Sopar", "dinner": "Sopar",
"type-any": "Qualsevol", "type-any": "Qualsevol",
"day-any": "Qualsevol", "day-any": "Qualsevol",
@ -347,7 +348,7 @@
"meal-note": "Notes del menú", "meal-note": "Notes del menú",
"note-only": "Només notes", "note-only": "Només notes",
"random-meal": "Menú aleatori", "random-meal": "Menú aleatori",
"random-dinner": "Principal aleatori", "random-dinner": "Sopar aleatori",
"random-side": "Guarnició aleatòria", "random-side": "Guarnició aleatòria",
"this-rule-will-apply": "Aquesta regla s'aplicarà {dayCriteria} {mealTypeCriteria}.", "this-rule-will-apply": "Aquesta regla s'aplicarà {dayCriteria} {mealTypeCriteria}.",
"to-all-days": "a tots els dies", "to-all-days": "a tots els dies",
@ -356,7 +357,7 @@
"for-type-meal-types": "per {0} tipus de menús", "for-type-meal-types": "per {0} tipus de menús",
"meal-plan-rules": "Normes del planificador de menús", "meal-plan-rules": "Normes del planificador de menús",
"new-rule": "Nova norma", "new-rule": "Nova norma",
"meal-plan-rules-description": "You can create rules for auto selecting recipes for your meal plans. These rules are used by the server to determine the random pool of recipes to select from when creating meal plans. Note that if rules have the same day/type constraints then the rule filters will be merged. In practice, it's unnecessary to create duplicate rules, but it's possible to do so.", "meal-plan-rules-description": "Podeu crear regles per a la selecció automàtica de receptes per a les vostres dietes. El servidor utilitza aquestes regles per determinar el conjunt aleatori de receptes per seleccionar quan es creen dietes. Tingueu en compte que si les regles tenen les mateixes restriccions de dia/tipus, les categories de les regles es fusionaran. A la pràctica, no és necessari crear regles duplicades, però és possible fer-ho.",
"new-rule-description": "Quan creis una nova norma per una planificació d'àpats, pots restringir la norma per a què s'apliqui un dia específic de la setmana i/o un tipus d'àpat específic. Per aplicar la norma a tots els dies o a tots els tipus d'àpats, pots configurar la norma a \"Qualsevol\" que l'aplicarà a tots els valors possibles pel dia i/o tipus d'àpat.", "new-rule-description": "Quan creis una nova norma per una planificació d'àpats, pots restringir la norma per a què s'apliqui un dia específic de la setmana i/o un tipus d'àpat específic. Per aplicar la norma a tots els dies o a tots els tipus d'àpats, pots configurar la norma a \"Qualsevol\" que l'aplicarà a tots els valors possibles pel dia i/o tipus d'àpat.",
"recipe-rules": "Normes per la recepta", "recipe-rules": "Normes per la recepta",
"applies-to-all-days": "Aplica a tots els dies", "applies-to-all-days": "Aplica a tots els dies",
@ -431,7 +432,7 @@
"paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Copieu en la recepta. Cada línia serà tractada com un element de la llista", "paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Copieu en la recepta. Cada línia serà tractada com un element de la llista",
"recipe-markup-specification": "Especificació Markup de la recepta", "recipe-markup-specification": "Especificació Markup de la recepta",
"recipe-url": "URL de la recepta", "recipe-url": "URL de la recepta",
"recipe-html-or-json": "Recipe HTML or JSON", "recipe-html-or-json": "Recepta HTML o JSON",
"upload-a-recipe": "Puja una recepta", "upload-a-recipe": "Puja una recepta",
"upload-individual-zip-file": "Puja només un arxiu zip, exportat d'altre Mealie.", "upload-individual-zip-file": "Puja només un arxiu zip, exportat d'altre Mealie.",
"url-form-hint": "Copia i enganxa l'enllaç del teu lloc web de receptes preferit", "url-form-hint": "Copia i enganxa l'enllaç del teu lloc web de receptes preferit",
@ -466,7 +467,7 @@
"calories-suffix": "calories", "calories-suffix": "calories",
"carbohydrate-content": "Carbohidrats", "carbohydrate-content": "Carbohidrats",
"categories": "Categories", "categories": "Categories",
"cholesterol-content": "Cholesterol", "cholesterol-content": "Colesterol",
"comment-action": "Comentari", "comment-action": "Comentari",
"comment": "Comentari", "comment": "Comentari",
"comments": "Comentaris", "comments": "Comentaris",
@ -513,10 +514,11 @@
"recipe-updated": "S'ha actualitzat la recepta", "recipe-updated": "S'ha actualitzat la recepta",
"remove-from-favorites": "S'ha eliminat de les receptes preferides", "remove-from-favorites": "S'ha eliminat de les receptes preferides",
"remove-section": "Suprimeix la sel·lecció", "remove-section": "Suprimeix la sel·lecció",
"saturated-fat-content": "Saturated fat", "saturated-fat-content": "Greixos saturats",
"save-recipe-before-use": "Desa la recepta abans d'utilitzar-la", "save-recipe-before-use": "Desa la recepta abans d'utilitzar-la",
"section-title": "Secció", "section-title": "Secció",
"servings": "Porcions", "servings": "Porcions",
"serves-amount": "Serveis {amount}",
"share-recipe-message": "Vull compartir la meua recepta {0} amb tú.", "share-recipe-message": "Vull compartir la meua recepta {0} amb tú.",
"show-nutrition-values": "Mostra els valors nutricionals", "show-nutrition-values": "Mostra els valors nutricionals",
"sodium-content": "Sodi", "sodium-content": "Sodi",
@ -524,9 +526,9 @@
"sugar-content": "Sucres", "sugar-content": "Sucres",
"title": "Títol", "title": "Títol",
"total-time": "Temps total", "total-time": "Temps total",
"trans-fat-content": "Trans-fat", "trans-fat-content": "Greix trans",
"unable-to-delete-recipe": "No s'ha pogut suprimir la recepta", "unable-to-delete-recipe": "No s'ha pogut suprimir la recepta",
"unsaturated-fat-content": "Unsaturated fat", "unsaturated-fat-content": "Greix insaturat",
"no-recipe": "Cap recepta", "no-recipe": "Cap recepta",
"locked-by-owner": "Bloquejat pel propietari", "locked-by-owner": "Bloquejat pel propietari",
"join-the-conversation": "Uneix-te a la conversa", "join-the-conversation": "Uneix-te a la conversa",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "S'ha produït un error afegint la recepta al menú", "failed-to-add-recipe-to-mealplan": "S'ha produït un error afegint la recepta al menú",
"failed-to-add-to-list": "No s'ha pogut afegir a la llista", "failed-to-add-to-list": "No s'ha pogut afegir a la llista",
"yield": "Racions", "yield": "Racions",
"yields-amount-with-text": "Racions {amount} {text}",
"yield-text": "Mida de racions",
"quantity": "Quantitat", "quantity": "Quantitat",
"choose-unit": "Tria el tipus d'unitat", "choose-unit": "Tria el tipus d'unitat",
"press-enter-to-create": "Premeu enter per a crear-lo", "press-enter-to-create": "Premeu enter per a crear-lo",
@ -566,13 +570,6 @@
"increase-scale-label": "Multiplica", "increase-scale-label": "Multiplica",
"locked": "Bloquejat", "locked": "Bloquejat",
"public-link": "Enllaç públic", "public-link": "Enllaç públic",
"timer": {
"kitchen-timer": "Temporitzador de cuina",
"start-timer": "Iniciar temporitzador",
"pause-timer": "Pausa el temporitzador",
"resume-timer": "Reprèn el temporitzador",
"stop-timer": "Atura el temporitzador"
},
"edit-timeline-event": "Edita l'esdeveniment de la cronologia", "edit-timeline-event": "Edita l'esdeveniment de la cronologia",
"timeline": "Cronologia", "timeline": "Cronologia",
"timeline-is-empty": "Encara no hi ha res a la cronologia. Prova de fer aquesta recepta!", "timeline-is-empty": "Encara no hi ha res a la cronologia. Prova de fer aquesta recepta!",
@ -600,12 +597,12 @@
"create-recipe-description": "Crea una nova recepta des de zero.", "create-recipe-description": "Crea una nova recepta des de zero.",
"create-recipes": "Crea Receptes", "create-recipes": "Crea Receptes",
"import-with-zip": "Importar amb un .zip", "import-with-zip": "Importar amb un .zip",
"create-recipe-from-an-image": "Create Recipe from an Image", "create-recipe-from-an-image": "Crear una recepta a partir d'una imatge",
"create-recipe-from-an-image-description": "Create a recipe by uploading an image of it. Mealie will attempt to extract the text from the image using AI and create a recipe from it.", "create-recipe-from-an-image-description": "Crear una recepta pujant una imatge d'ella. Mealie intentarà extreure el text de la imatge mitjançant IA i crear-ne la recepta.",
"crop-and-rotate-the-image": "Crop and rotate the image so that only the text is visible, and it's in the correct orientation.", "crop-and-rotate-the-image": "Retalla i rota la imatge, per tal que només el text sigui visible, i estigui orientat correctament.",
"create-from-image": "Create from Image", "create-from-image": "Crear des d'una imatge",
"should-translate-description": "Translate the recipe into my language", "should-translate-description": "Tradueix la recepta a la meva llengua",
"please-wait-image-procesing": "Please wait, the image is processing. This may take some time.", "please-wait-image-procesing": "Si us plau, esperi, la imatge s'està processant. Això pot tardar un temps.",
"bulk-url-import": "Importació d'URL en massa", "bulk-url-import": "Importació d'URL en massa",
"debug-scraper": "Rastrejador de depuració", "debug-scraper": "Rastrejador de depuració",
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Crea la recepta proporcionant-ne un nom. Totes les receptes han de tenir un nom únic.", "create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Crea la recepta proporcionant-ne un nom. Totes les receptes han de tenir un nom únic.",
@ -614,16 +611,16 @@
"scrape-recipe-description": "Rastrejar recepta des de l'Url. Proporciona un Url del lloc que vols rastrejar i Mealie intentarà analitzar la recepta del lloc web i afegir-la a la teva col·lecció.", "scrape-recipe-description": "Rastrejar recepta des de l'Url. Proporciona un Url del lloc que vols rastrejar i Mealie intentarà analitzar la recepta del lloc web i afegir-la a la teva col·lecció.",
"scrape-recipe-have-a-lot-of-recipes": "Tens moltes receptes a processar alhora?", "scrape-recipe-have-a-lot-of-recipes": "Tens moltes receptes a processar alhora?",
"scrape-recipe-suggest-bulk-importer": "Prova l'importador a granel", "scrape-recipe-suggest-bulk-importer": "Prova l'importador a granel",
"scrape-recipe-have-raw-html-or-json-data": "Have raw HTML or JSON data?", "scrape-recipe-have-raw-html-or-json-data": "Teniu dades HTML o JSON pla?",
"scrape-recipe-you-can-import-from-raw-data-directly": "You can import from raw data directly", "scrape-recipe-you-can-import-from-raw-data-directly": "Podeu importar directament des de les dades planes",
"import-original-keywords-as-tags": "Importa les paraules clau originals com a tags", "import-original-keywords-as-tags": "Importa les paraules clau originals com a tags",
"stay-in-edit-mode": "Segueix en el mode d'edició", "stay-in-edit-mode": "Segueix en el mode d'edició",
"import-from-zip": "Importa des d'un ZIP", "import-from-zip": "Importa des d'un ZIP",
"import-from-zip-description": "Importa una sola recepta que ha estat importada d'una altra instància de Mealie.", "import-from-zip-description": "Importa una sola recepta que ha estat importada d'una altra instància de Mealie.",
"import-from-html-or-json": "Import from HTML or JSON", "import-from-html-or-json": "Importar des d'un HTML o JSON",
"import-from-html-or-json-description": "Import a single recipe from raw HTML or JSON. This is useful if you have a recipe from a site that Mealie can't scrape normally, or from some other external source.", "import-from-html-or-json-description": "Importar una recepta des d'un HTML o JSON pla. Això és important si teniu una recepta des d'una web on Mealie no pot extreure dates, o des d'una altra font externa.",
"json-import-format-description-colon": "To import via JSON, it must be in valid format:", "json-import-format-description-colon": "Per importar via JSON, aquest ha de tenir un format vàlid:",
"json-editor": "JSON Editor", "json-editor": "Editor JSON",
"zip-files-must-have-been-exported-from-mealie": "Els fitxers .zip han d'haver sigut exportats des de Mealie", "zip-files-must-have-been-exported-from-mealie": "Els fitxers .zip han d'haver sigut exportats des de Mealie",
"create-a-recipe-by-uploading-a-scan": "Crea la recepta pujant-ne un escaneig.", "create-a-recipe-by-uploading-a-scan": "Crea la recepta pujant-ne un escaneig.",
"upload-a-png-image-from-a-recipe-book": "Puja una imatge PNG d'un llibre de receptes", "upload-a-png-image-from-a-recipe-book": "Puja una imatge PNG d'un llibre de receptes",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Fes servir OpenAI per processar els resultats en comptes d'emprar la llibreria de processat. Quan creis una recepta via URL, es fa automàticament si la llibreria falla, però ho pots provar manualment aquí.", "recipe-debugger-use-openai-description": "Fes servir OpenAI per processar els resultats en comptes d'emprar la llibreria de processat. Quan creis una recepta via URL, es fa automàticament si la llibreria falla, però ho pots provar manualment aquí.",
"debug": "Depuració", "debug": "Depuració",
"tree-view": "Vista en arbre", "tree-view": "Vista en arbre",
"recipe-servings": "Serveis per la recepta",
"recipe-yield": "Rendiment de la recepta", "recipe-yield": "Rendiment de la recepta",
"recipe-yield-text": "Mida/Unitats",
"unit": "Unitat", "unit": "Unitat",
"upload-image": "Puja una imatge", "upload-image": "Puja una imatge",
"screen-awake": "Mantenir la pantalla encesa", "screen-awake": "Mantenir la pantalla encesa",
@ -662,7 +661,25 @@
"missing-food": "Crear menjar que manca: {food}", "missing-food": "Crear menjar que manca: {food}",
"no-food": "Sense menjar" "no-food": "Sense menjar"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Reiniciar racions servides",
"not-linked-ingredients": "Ingredients addicionals"
},
"recipe-finder": {
"recipe-finder": "Cercador de receptes",
"recipe-finder-description": "Cerqueu receptes basades en els ingredients que teniu disponibles. També podeu filtrar pels estris que tingueu disponibles i seleccionar el nombre màxim d'ingredients o estris que us faltin.",
"selected-ingredients": "Ingredients seleccionats",
"no-ingredients-selected": "No hi ha ingredients seleccionats",
"missing": "Absent",
"no-recipes-found": "No s'han trobat receptes",
"no-recipes-found-description": "Intenteu afegir més ingredients a la cerca o ajusteu els filtres",
"include-ingredients-on-hand": "Inclou els ingredients disponibles",
"include-tools-on-hand": "Inclou els estris disponibles",
"max-missing-ingredients": "Màxim d'ingredients absents",
"max-missing-tools": "Màxim d'estris absents",
"selected-tools": "Estris seleccionats",
"other-filters": "Altres filtres",
"ready-to-make": "Llest per a preparar-ho",
"almost-ready-to-make": "Gairebé llest per a preparar-ho"
}, },
"search": { "search": {
"advanced-search": "Cerca avançada", "advanced-search": "Cerca avançada",
@ -673,7 +690,7 @@
"or": "O", "or": "O",
"has-any": "Conté qualsevol", "has-any": "Conté qualsevol",
"has-all": "Ho conté tot", "has-all": "Ho conté tot",
"clear-selection": "Clear Selection", "clear-selection": "Netejar la selecció",
"results": "Resultats", "results": "Resultats",
"search": "Cerca", "search": "Cerca",
"search-mealie": "Cerca a Melie (prem /)", "search-mealie": "Cerca a Melie (prem /)",
@ -866,7 +883,8 @@
"you-are-offline-description": "No totes les funcionalitats són disponibles desconnectat. Encara pots afegir, modificar i eliminar elements, però no podràs sincronitzar els teus canvis amb el servidor fins que et tornis a connectar.", "you-are-offline-description": "No totes les funcionalitats són disponibles desconnectat. Encara pots afegir, modificar i eliminar elements, però no podràs sincronitzar els teus canvis amb el servidor fins que et tornis a connectar.",
"are-you-sure-you-want-to-check-all-items": "Estàs segur que vols marcar tots els elements?", "are-you-sure-you-want-to-check-all-items": "Estàs segur que vols marcar tots els elements?",
"are-you-sure-you-want-to-uncheck-all-items": "Estàs segur que vols desmarcar tots els elements?", "are-you-sure-you-want-to-uncheck-all-items": "Estàs segur que vols desmarcar tots els elements?",
"are-you-sure-you-want-to-delete-checked-items": "Estàs segur que vols eliminar tots els elements marcats?" "are-you-sure-you-want-to-delete-checked-items": "Estàs segur que vols eliminar tots els elements marcats?",
"no-shopping-lists-found": "No s'han trobat llistes de la compra"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Receptes", "all-recipes": "Receptes",
@ -1012,7 +1030,7 @@
"administrator": "Administrador", "administrator": "Administrador",
"user-can-invite-other-to-group": "L'usuari pot convidar a altres al grup", "user-can-invite-other-to-group": "L'usuari pot convidar a altres al grup",
"user-can-manage-group": "L'usuari pot gestionar el grup", "user-can-manage-group": "L'usuari pot gestionar el grup",
"user-can-manage-household": "User can manage household", "user-can-manage-household": "Usuari que pot gestionar la llar",
"user-can-organize-group-data": "L'usuari pot organitzar dades del grup", "user-can-organize-group-data": "L'usuari pot organitzar dades del grup",
"enable-advanced-features": "Activa funcionalitats avançades", "enable-advanced-features": "Activa funcionalitats avançades",
"it-looks-like-this-is-your-first-time-logging-in": "Sembla que és el primer cop que et registres.", "it-looks-like-this-is-your-first-time-logging-in": "Sembla que és el primer cop que et registres.",
@ -1268,24 +1286,25 @@
"restore-from-v1-backup": "Tens una còpia de seguretat d'una instància prèvia de Mealie v1? Pots restaurar-la aquí.", "restore-from-v1-backup": "Tens una còpia de seguretat d'una instància prèvia de Mealie v1? Pots restaurar-la aquí.",
"manage-profile-or-get-invite-link": "Gestiona el teu propi perfil, o agafa un enllaç d'invitació per compartir amb altres." "manage-profile-or-get-invite-link": "Gestiona el teu propi perfil, o agafa un enllaç d'invitació per compartir amb altres."
}, },
"debug-openai-services": "Debug OpenAI Services", "debug-openai-services": "Depurar els serveis d'OpenAI",
"debug-openai-services-description": "Use this page to debug OpenAI services. You can test your OpenAI connection and see the results here. If you have image services enabled, you can also provide an image.", "debug-openai-services-description": "Utilitza aquesta pàgina per depurar els serveis d'OpenAI. Pots provar la teva connexió amb OpenAI i veure els resultats aquí. Si tens els serveis d'imatge activats, també pots proporcionar una imatge.",
"run-test": "Run Test", "run-test": "Executar prova",
"test-results": "Test Results", "test-results": "Resultats de la prova",
"group-delete-note": "Groups with users or households cannot be deleted", "group-delete-note": "Grups amb usuaris o llars no poden ser esborrats",
"household-delete-note": "Households with users cannot be deleted" "household-delete-note": "Llars amb usuaris no poden ser esborrades"
}, },
"profile": { "profile": {
"welcome-user": "👋 Benvingut/Benvinguda, {0}!", "welcome-user": "👋 Benvingut/Benvinguda, {0}!",
"description": "Gestiona el teu perfil, receptes i configuracions de grup.", "description": "Gestiona el teu perfil, receptes i configuracions de grup.",
"invite-link": "Enllaç d'invitació",
"get-invite-link": "Obtén enllaç d'invitacio", "get-invite-link": "Obtén enllaç d'invitacio",
"get-public-link": "Enllaç públic", "get-public-link": "Enllaç públic",
"account-summary": "Resum del compte", "account-summary": "Resum del compte",
"account-summary-description": "Aquí tens un resum de la informació del teu grup.", "account-summary-description": "Aquí tens un resum de la informació del teu grup.",
"group-statistics": "Estadístiques del grup", "group-statistics": "Estadístiques del grup",
"group-statistics-description": "Les estadístiques del grup ofereixen certa visió de com feu servir Mealie.", "group-statistics-description": "Les estadístiques del grup ofereixen certa visió de com feu servir Mealie.",
"household-statistics": "Household Statistics", "household-statistics": "Estadístiques de la llar",
"household-statistics-description": "Your Household Statistics provide some insight how you're using Mealie.", "household-statistics-description": "Les estadístiques de la llar ofereixen una visió de com feu servir Mealie.",
"storage-capacity": "Capacitat d'emmagatzematge", "storage-capacity": "Capacitat d'emmagatzematge",
"storage-capacity-description": "La teva capacitat d'emmagatzematge és un càlcul de les imatges i béns que has pujat.", "storage-capacity-description": "La teva capacitat d'emmagatzematge és un càlcul de les imatges i béns que has pujat.",
"personal": "Personal", "personal": "Personal",
@ -1295,13 +1314,13 @@
"api-tokens-description": "Gestiona les claus d'API per accés des d'aplicacions externes.", "api-tokens-description": "Gestiona les claus d'API per accés des d'aplicacions externes.",
"group-description": "Aquests elements són compartits dins del teu grup. Editar-ne un ho canviarà per tot el grup!", "group-description": "Aquests elements són compartits dins del teu grup. Editar-ne un ho canviarà per tot el grup!",
"group-settings": "Configuracions de grup", "group-settings": "Configuracions de grup",
"group-settings-description": "Manage your common group settings, like privacy settings.", "group-settings-description": "Gestiona configuracions comunes de grup com configuracions de privadesa.",
"household-description": "These items are shared within your household. Editing one of them will change it for the whole household!", "household-description": "Aquests elements són compartits dins la teva llar. Editar-ne un, ho canviarà per tota la llar!",
"household-settings": "Household Settings", "household-settings": "Configuracions de la llar",
"household-settings-description": "Manage your household settings, like mealplan and privacy settings.", "household-settings-description": "Gestionar les configuracions de la llar, com planificació d'àpats i configuracions de privadesa.",
"cookbooks-description": "Gestiona una col·lecció de categories de receptes i genera'n pàgines.", "cookbooks-description": "Gestiona una col·lecció de categories de receptes i genera'n pàgines.",
"members": "Membres", "members": "Membres",
"members-description": "See who's in your household and manage their permissions.", "members-description": "Mira qui hi ha a la teva llar i gestiona els seus permisos.",
"webhooks-description": "Setup webhooks that trigger on days that you have have mealplan scheduled.", "webhooks-description": "Setup webhooks that trigger on days that you have have mealplan scheduled.",
"notifiers": "Notificadors", "notifiers": "Notificadors",
"notifiers-description": "Setup email and push notifications that trigger on specific events.", "notifiers-description": "Setup email and push notifications that trigger on specific events.",
@ -1326,7 +1345,9 @@
}, },
"cookbook": { "cookbook": {
"cookbooks": "Receptaris", "cookbooks": "Receptaris",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Els llibres de cuina són una altra manera d'organitzar les receptes creant seccions transversals de receptes, organitzadors i altres filtres. La creació d'un llibre de cuina afegirà una entrada a la barra lateral i totes les receptes amb les etiquetes i categories escollides es mostraran al llibre de cuina.",
"hide-cookbooks-from-other-households": "Amaga els receptaris d'altres llars",
"hide-cookbooks-from-other-households-description": "Quan s'habilita només es veuran receptaris de la teva llar",
"public-cookbook": "Receptari públic", "public-cookbook": "Receptari públic",
"public-cookbook-description": "Els receptaris públics es poden compartir amb usuaris que no estiguin dins l'aplicació i es mostraran a la pàgina del vostre grup.", "public-cookbook-description": "Els receptaris públics es poden compartir amb usuaris que no estiguin dins l'aplicació i es mostraran a la pàgina del vostre grup.",
"filter-options": "Opcions de filtres", "filter-options": "Opcions de filtres",
@ -1336,31 +1357,31 @@
"require-all-tools": "Requereix tots els utensilis", "require-all-tools": "Requereix tots els utensilis",
"cookbook-name": "Nom del receptari", "cookbook-name": "Nom del receptari",
"cookbook-with-name": "Receptari {0}", "cookbook-with-name": "Receptari {0}",
"household-cookbook-name": "{0} Cookbook {1}", "household-cookbook-name": "{0} Llibre de cuina {1}",
"create-a-cookbook": "Crea un receptari", "create-a-cookbook": "Crea un receptari",
"cookbook": "Receptari" "cookbook": "Receptari"
}, },
"query-filter": { "query-filter": {
"logical-operators": { "logical-operators": {
"and": "AND", "and": "I",
"or": "OR" "or": "O"
}, },
"relational-operators": { "relational-operators": {
"equals": "equals", "equals": "és igual a",
"does-not-equal": "does not equal", "does-not-equal": "no és igual a",
"is-greater-than": "is greater than", "is-greater-than": "és més gran que",
"is-greater-than-or-equal-to": "is greater than or equal to", "is-greater-than-or-equal-to": "és més gran o igual a",
"is-less-than": "is less than", "is-less-than": "és menys que",
"is-less-than-or-equal-to": "is less than or equal to" "is-less-than-or-equal-to": "és menor o igual a"
}, },
"relational-keywords": { "relational-keywords": {
"is": "is", "is": "és",
"is-not": "is not", "is-not": "no és",
"is-one-of": "is one of", "is-one-of": "és un de",
"is-not-one-of": "is not one of", "is-not-one-of": "no és un de",
"contains-all-of": "contains all of", "contains-all-of": "conté tots de",
"is-like": "is like", "is-like": "és com",
"is-not-like": "is not like" "is-not-like": "no és com"
} }
} }
} }

File diff suppressed because it is too large Load diff

View file

@ -182,7 +182,7 @@
"date": "Dato", "date": "Dato",
"id": "Id", "id": "Id",
"owner": "Ejer", "owner": "Ejer",
"change-owner": "Change Owner", "change-owner": "Skift ejer",
"date-added": "Oprettelsesdato", "date-added": "Oprettelsesdato",
"none": "Ingen", "none": "Ingen",
"run": "Start", "run": "Start",
@ -196,7 +196,7 @@
"copy": "Kopier", "copy": "Kopier",
"color": "Farve", "color": "Farve",
"timestamp": "Tidsstempel", "timestamp": "Tidsstempel",
"last-made": "Senest Lavet", "last-made": "Senest lavet",
"learn-more": "Lær mere", "learn-more": "Lær mere",
"this-feature-is-currently-inactive": "Denne funktion er i øjeblikket inaktiv", "this-feature-is-currently-inactive": "Denne funktion er i øjeblikket inaktiv",
"clipboard-not-supported": "Udklipsholder er ikke understøttet", "clipboard-not-supported": "Udklipsholder er ikke understøttet",
@ -214,10 +214,10 @@
"confirm-delete-generic-items": "Er du sikker på at du ønsker at slette de valgte emner?", "confirm-delete-generic-items": "Er du sikker på at du ønsker at slette de valgte emner?",
"organizers": "Organisatorer", "organizers": "Organisatorer",
"caution": "Bemærk", "caution": "Bemærk",
"show-advanced": "Show Advanced", "show-advanced": "Vis avanceret",
"add-field": "Add Field", "add-field": "Tilføj felt",
"date-created": "Date Created", "date-created": "Oprettet",
"date-updated": "Date Updated" "date-updated": "Dato opdateret"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Er du sikker på, du vil slette <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Er du sikker på, du vil slette <b>{groupName}<b/>?",
@ -244,16 +244,16 @@
"keep-my-recipes-private-description": "Ændrer din gruppe og alle opskrifter til private. Du kan altid ændre dette senere." "keep-my-recipes-private-description": "Ændrer din gruppe og alle opskrifter til private. Du kan altid ændre dette senere."
}, },
"manage-members": "Administrer medlemmer", "manage-members": "Administrer medlemmer",
"manage-members-description": "Manage the permissions of the members in your household. {manage} allows the user to access the data-management page, and {invite} allows the user to generate invitation links for other users. Group owners cannot change their own permissions.", "manage-members-description": "Administrer tilladelser for medlemmerne i din husstand. {manage} giver brugeren adgang til datastyringssiden, og {invite} giver brugeren mulighed for at generere invitationslinks til andre brugere. Gruppeejere kan ikke ændre deres egne tilladelser.",
"manage": "Administrer", "manage": "Administrer",
"manage-household": "Manage Household", "manage-household": "Administrer husholdning",
"invite": "Invitér", "invite": "Invitér",
"looking-to-update-your-profile": "Ønsker du at opdatere din profil?", "looking-to-update-your-profile": "Ønsker du at opdatere din profil?",
"default-recipe-preferences-description": "Dette er standardindstillingerne, når en ny opskrift oprettes i din gruppe. Indstillingerne kan ændres for en opskrift i menuen Opskriftindstillinger.", "default-recipe-preferences-description": "Dette er standardindstillingerne, når en ny opskrift oprettes i din gruppe. Indstillingerne kan ændres for en opskrift i menuen Opskriftindstillinger.",
"default-recipe-preferences": "Standard Opskrift Indstillinger", "default-recipe-preferences": "Standard Opskrift Indstillinger",
"group-preferences": "Gruppe Indstillinger", "group-preferences": "Gruppe Indstillinger",
"private-group": "Privat Gruppe", "private-group": "Privat Gruppe",
"private-group-description": "Setting your group to private will disable all public view options. This overrides any individual public view settings", "private-group-description": "Sættes din husholdning til privat vil det deaktivere alle indstillinger for offentlig visning. Dette tilsidesætter individuelle indstillinger for offentlig visning",
"enable-public-access": "Aktiver Offentlig Adgang", "enable-public-access": "Aktiver Offentlig Adgang",
"enable-public-access-description": "Gør gruppeopskrifter offentlige som standard, og tillade besøgende at se opskrifter uden at logge ind", "enable-public-access-description": "Gør gruppeopskrifter offentlige som standard, og tillade besøgende at se opskrifter uden at logge ind",
"allow-users-outside-of-your-group-to-see-your-recipes": "Tillad brugere udenfor din gruppe at se dine opskrifter", "allow-users-outside-of-your-group-to-see-your-recipes": "Tillad brugere udenfor din gruppe at se dine opskrifter",
@ -267,7 +267,7 @@
"disable-users-from-commenting-on-recipes": "Brugere kan ikke kommentere på opskrifter", "disable-users-from-commenting-on-recipes": "Brugere kan ikke kommentere på opskrifter",
"disable-users-from-commenting-on-recipes-description": "Skjuler kommentarsektionen på opskriftssiden og deaktiverer kommentarer", "disable-users-from-commenting-on-recipes-description": "Skjuler kommentarsektionen på opskriftssiden og deaktiverer kommentarer",
"disable-organizing-recipe-ingredients-by-units-and-food": "Deaktiver organisering af opskrift ingredienser efter enheder og fødevarer", "disable-organizing-recipe-ingredients-by-units-and-food": "Deaktiver organisering af opskrift ingredienser efter enheder og fødevarer",
"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", "disable-organizing-recipe-ingredients-by-units-and-food-description": "Skjuler mad, enhed og mængde felterne og behandler ingredienser som almindelige tekstfelter",
"general-preferences": "Generelle Indstillinger", "general-preferences": "Generelle Indstillinger",
"group-recipe-preferences": "Gruppe Indstillinger for opskrifter", "group-recipe-preferences": "Gruppe Indstillinger for opskrifter",
"report": "Rapport", "report": "Rapport",
@ -276,7 +276,8 @@
"admin-group-management": "Administrationsgruppe Håndtering", "admin-group-management": "Administrationsgruppe Håndtering",
"admin-group-management-text": "Ændringer i denne gruppe vil træde i kraft øjeblikkeligt.", "admin-group-management-text": "Ændringer i denne gruppe vil træde i kraft øjeblikkeligt.",
"group-id-value": "Gruppe-ID: {0}", "group-id-value": "Gruppe-ID: {0}",
"total-households": "Husholdninger i Alt" "total-households": "Husholdninger i Alt",
"you-must-select-a-group-before-selecting-a-household": "Du skal vælge en gruppe, før du vælger en husstand"
}, },
"household": { "household": {
"household": "Husholdning", "household": "Husholdning",
@ -291,13 +292,13 @@
"admin-household-management-text": "Ændringer ved denne husholdning vil træde i kraft øjeblikkeligt.", "admin-household-management-text": "Ændringer ved denne husholdning vil træde i kraft øjeblikkeligt.",
"household-id-value": "Husholdning Id: {0}", "household-id-value": "Husholdning Id: {0}",
"private-household": "Privat Husholdning", "private-household": "Privat Husholdning",
"private-household-description": "Setting your household to private will disable all public view options. This overrides any individual public view settings", "private-household-description": "Sættes din husholdning til private vil det deaktivere alle indstillinger for offentlig visning. Dette tilsidesætter individuelle indstillinger for offentlig visning",
"lock-recipe-edits-from-other-households": "Lock recipe edits from other households", "lock-recipe-edits-from-other-households": "Lås opskrift redigeringer fra andre husholdninger",
"lock-recipe-edits-from-other-households-description": "When enabled only users in your household can edit recipes created by your household", "lock-recipe-edits-from-other-households-description": "Når aktiveret kan kun husholdningens brugere ændre den opskrifter",
"household-recipe-preferences": "Husholdnings Opskrift Præferencer", "household-recipe-preferences": "Husholdningens opskriftspræferencer",
"default-recipe-preferences-description": "These are the default settings when a new recipe is created in your household. These can be changed for individual recipes in the recipe settings menu.", "default-recipe-preferences-description": "Disse er standardindstillingerne, når en ny opskrift er oprettet i din husstand. Disse kan ændres for individuelle opskrifter i menuen Opsætninger.",
"allow-users-outside-of-your-household-to-see-your-recipes": "Allow users outside of your household to see your recipes", "allow-users-outside-of-your-household-to-see-your-recipes": "Tillad brugere uden for din husstand at se dine opskrifter",
"allow-users-outside-of-your-household-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 household or with a pre-generated private link", "allow-users-outside-of-your-household-to-see-your-recipes-description": "Når det er aktiveret kan du bruge et link til offentlig deling af specifikke opskrifter uden at godkende brugeren. Når deaktiveret, kan du kun dele opskrifter med brugere, der er i din husstand eller med et forudgenereret privat link",
"household-preferences": "Husholdnings Præferencer" "household-preferences": "Husholdnings Præferencer"
}, },
"meal-plan": { "meal-plan": {
@ -320,10 +321,10 @@
"mealplan-settings": "Madplansindstillinger", "mealplan-settings": "Madplansindstillinger",
"mealplan-update-failed": "Ændring af madplanen fejlede", "mealplan-update-failed": "Ændring af madplanen fejlede",
"mealplan-updated": "Madplanen blev ændret", "mealplan-updated": "Madplanen blev ændret",
"mealplan-households-description": "If no household is selected, recipes can be added from any household", "mealplan-households-description": "Hvis ingen husstand er valgt, kan opskrifter tilføjes fra enhver husstand",
"any-category": "Any Category", "any-category": "Enhver kategori",
"any-tag": "Any Tag", "any-tag": "Ethvert tag",
"any-household": "Any Household", "any-household": "Enhver husholdning",
"no-meal-plan-defined-yet": "Ingen madplan er defineret", "no-meal-plan-defined-yet": "Ingen madplan er defineret",
"no-meal-planned-for-today": "Ingen ret er planlagt til i dag", "no-meal-planned-for-today": "Ingen ret er planlagt til i dag",
"numberOfDays-hint": "Antal dage ved sideindlæsning", "numberOfDays-hint": "Antal dage ved sideindlæsning",
@ -355,8 +356,8 @@
"for-all-meal-types": "for alle typer af måltider", "for-all-meal-types": "for alle typer af måltider",
"for-type-meal-types": "for {0} måltidstyper", "for-type-meal-types": "for {0} måltidstyper",
"meal-plan-rules": "Regler for madplanlægning", "meal-plan-rules": "Regler for madplanlægning",
"new-rule": "Ny Regel", "new-rule": "Ny regel",
"meal-plan-rules-description": "You can create rules for auto selecting recipes for your meal plans. These rules are used by the server to determine the random pool of recipes to select from when creating meal plans. Note that if rules have the same day/type constraints then the rule filters will be merged. In practice, it's unnecessary to create duplicate rules, but it's possible to do so.", "meal-plan-rules-description": "Du kan oprette regler for automatisk valg af opskrifter for dine madplaner. Regler bruges til at bestemme hvike opskrifter, der kan vælges imellem, når du opretter madplaner. Bemærk, at hvis reglerne har samme begrænsninger på dag eller type, så vil disse blive slået sammen. I praksis er det unødvendigt at oprette flere regler, men det er muligt at gøre det.",
"new-rule-description": "Når du opretter en ny regel for en madplan, kan du begrænse reglen til at være gældende for en bestemt dag i ugen og/eller en bestemt måltidstype. For at anvende en regel for alle dage eller alle måltider typer kan du indstille reglen til \"Any\", som vil anvende den til alle mulige værdier for dag og/eller måltid.", "new-rule-description": "Når du opretter en ny regel for en madplan, kan du begrænse reglen til at være gældende for en bestemt dag i ugen og/eller en bestemt måltidstype. For at anvende en regel for alle dage eller alle måltider typer kan du indstille reglen til \"Any\", som vil anvende den til alle mulige værdier for dag og/eller måltid.",
"recipe-rules": "Opskriftsregler", "recipe-rules": "Opskriftsregler",
"applies-to-all-days": "Gælder for alle dage", "applies-to-all-days": "Gælder for alle dage",
@ -431,7 +432,7 @@
"paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Indsæt dine opskriftsdata. \nHver linje behandles som et element på en liste", "paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Indsæt dine opskriftsdata. \nHver linje behandles som et element på en liste",
"recipe-markup-specification": "Opskriftsmarkupspecifikation", "recipe-markup-specification": "Opskriftsmarkupspecifikation",
"recipe-url": "URL på opskrift", "recipe-url": "URL på opskrift",
"recipe-html-or-json": "Recipe HTML or JSON", "recipe-html-or-json": "Opskrift HTML eller JSON",
"upload-a-recipe": "Upload en opskrift", "upload-a-recipe": "Upload en opskrift",
"upload-individual-zip-file": "Opload en individuel .zip-fil, eksporteret fra en anden Mealie-instans.", "upload-individual-zip-file": "Opload en individuel .zip-fil, eksporteret fra en anden Mealie-instans.",
"url-form-hint": "Kopiér og indsæt et link fra din foretrukne opskrifts hjemmeside", "url-form-hint": "Kopiér og indsæt et link fra din foretrukne opskrifts hjemmeside",
@ -466,7 +467,7 @@
"calories-suffix": "kalorier", "calories-suffix": "kalorier",
"carbohydrate-content": "Kulhydrat", "carbohydrate-content": "Kulhydrat",
"categories": "Kategorier", "categories": "Kategorier",
"cholesterol-content": "Cholesterol", "cholesterol-content": "Kolesterol",
"comment-action": "Kommentar", "comment-action": "Kommentar",
"comment": "Kommentar", "comment": "Kommentar",
"comments": "Kommentarer", "comments": "Kommentarer",
@ -513,10 +514,11 @@
"recipe-updated": "Opskrift opdateret", "recipe-updated": "Opskrift opdateret",
"remove-from-favorites": "Fjern fra favoritter", "remove-from-favorites": "Fjern fra favoritter",
"remove-section": "Fjern sektion", "remove-section": "Fjern sektion",
"saturated-fat-content": "Saturated fat", "saturated-fat-content": "Mættet fedt",
"save-recipe-before-use": "Gem opskrift før brug", "save-recipe-before-use": "Gem opskrift før brug",
"section-title": "Sektionstitel", "section-title": "Sektionstitel",
"servings": "Portioner", "servings": "Portioner",
"serves-amount": "Serves {amount}",
"share-recipe-message": "Jeg vil gerne dele min opskrift \"{0}\" med dig.", "share-recipe-message": "Jeg vil gerne dele min opskrift \"{0}\" med dig.",
"show-nutrition-values": "Vis ernæringstabel", "show-nutrition-values": "Vis ernæringstabel",
"sodium-content": "Natrium", "sodium-content": "Natrium",
@ -524,9 +526,9 @@
"sugar-content": "Sukker", "sugar-content": "Sukker",
"title": "Titel", "title": "Titel",
"total-time": "Total tid", "total-time": "Total tid",
"trans-fat-content": "Trans-fat", "trans-fat-content": "Transfedtsyrer",
"unable-to-delete-recipe": "Kunne ikke slette opskrift", "unable-to-delete-recipe": "Kunne ikke slette opskrift",
"unsaturated-fat-content": "Unsaturated fat", "unsaturated-fat-content": "Umættet fedt",
"no-recipe": "Ingen opskrift", "no-recipe": "Ingen opskrift",
"locked-by-owner": "Låst af ejer", "locked-by-owner": "Låst af ejer",
"join-the-conversation": "Deltag i samtalen", "join-the-conversation": "Deltag i samtalen",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Kunne ikke tilføje opskrift til madplanen", "failed-to-add-recipe-to-mealplan": "Kunne ikke tilføje opskrift til madplanen",
"failed-to-add-to-list": "Kunne ikke tilføje opskrift til listen", "failed-to-add-to-list": "Kunne ikke tilføje opskrift til listen",
"yield": "Portioner", "yield": "Portioner",
"yields-amount-with-text": "Yields {amount} {text}",
"yield-text": "Yield Text",
"quantity": "Antal", "quantity": "Antal",
"choose-unit": "Vælg enhed", "choose-unit": "Vælg enhed",
"press-enter-to-create": "Tryk enter for at oprette", "press-enter-to-create": "Tryk enter for at oprette",
@ -566,13 +570,6 @@
"increase-scale-label": "Forøg skala med 1", "increase-scale-label": "Forøg skala med 1",
"locked": "Låst", "locked": "Låst",
"public-link": "Offentligt link", "public-link": "Offentligt link",
"timer": {
"kitchen-timer": "Køkken Ur",
"start-timer": "Start timer",
"pause-timer": "Sæt timer på pause",
"resume-timer": "Genoptag Timer",
"stop-timer": "Stop timer"
},
"edit-timeline-event": "Rediger tidslinjebegivenhed", "edit-timeline-event": "Rediger tidslinjebegivenhed",
"timeline": "Tidslinje", "timeline": "Tidslinje",
"timeline-is-empty": "Intet på tidslinjen endnu. Prøv at lave denne opskrift!", "timeline-is-empty": "Intet på tidslinjen endnu. Prøv at lave denne opskrift!",
@ -614,16 +611,16 @@
"scrape-recipe-description": "Hent en opskrift fra en hjemmeside. Angiv URL'en til den hjemmeside, du vil hente data fra, og Mealie vil forsøge at hente opskriften og tilføje den til din samling.", "scrape-recipe-description": "Hent en opskrift fra en hjemmeside. Angiv URL'en til den hjemmeside, du vil hente data fra, og Mealie vil forsøge at hente opskriften og tilføje den til din samling.",
"scrape-recipe-have-a-lot-of-recipes": "Har du en masse opskrifter, du ønsker at scrappe på en gang?", "scrape-recipe-have-a-lot-of-recipes": "Har du en masse opskrifter, du ønsker at scrappe på en gang?",
"scrape-recipe-suggest-bulk-importer": "Prøv masse import", "scrape-recipe-suggest-bulk-importer": "Prøv masse import",
"scrape-recipe-have-raw-html-or-json-data": "Have raw HTML or JSON data?", "scrape-recipe-have-raw-html-or-json-data": "Har rå HTML- eller JSON-data?",
"scrape-recipe-you-can-import-from-raw-data-directly": "You can import from raw data directly", "scrape-recipe-you-can-import-from-raw-data-directly": "Du kan importere direkte fra rå data",
"import-original-keywords-as-tags": "Importér originale nøgleord som mærker", "import-original-keywords-as-tags": "Importér originale nøgleord som mærker",
"stay-in-edit-mode": "Bliv i redigeringstilstand", "stay-in-edit-mode": "Bliv i redigeringstilstand",
"import-from-zip": "Importer fra zip-fil", "import-from-zip": "Importer fra zip-fil",
"import-from-zip-description": "Importer en enkelt opskrift, der blev eksporteret fra en anden Mealie instans.", "import-from-zip-description": "Importer en enkelt opskrift, der blev eksporteret fra en anden Mealie instans.",
"import-from-html-or-json": "Import from HTML or JSON", "import-from-html-or-json": "Importer fra HTML eller JSON",
"import-from-html-or-json-description": "Import a single recipe from raw HTML or JSON. This is useful if you have a recipe from a site that Mealie can't scrape normally, or from some other external source.", "import-from-html-or-json-description": "Importer en enkelt opskrift fra rå HTML eller JSON. Dette er nyttigt, hvis du har en opskrift fra et websted, som Mealie ikke kan skrabe normalt, eller fra en anden ekstern kilde.",
"json-import-format-description-colon": "To import via JSON, it must be in valid format:", "json-import-format-description-colon": "For at importere via JSON, skal det være i gyldigt format:",
"json-editor": "JSON Editor", "json-editor": "JSON-redigeringsprogram",
"zip-files-must-have-been-exported-from-mealie": "Zip-filer skal være blevet eksporteret fra Mealie", "zip-files-must-have-been-exported-from-mealie": "Zip-filer skal være blevet eksporteret fra Mealie",
"create-a-recipe-by-uploading-a-scan": "Opret en opskrift ved at uploade en scanning.", "create-a-recipe-by-uploading-a-scan": "Opret en opskrift ved at uploade en scanning.",
"upload-a-png-image-from-a-recipe-book": "Upload et billede med en opskrift, f.eks. fra en bog eller en udskrift", "upload-a-png-image-from-a-recipe-book": "Upload et billede med en opskrift, f.eks. fra en bog eller en udskrift",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Brug OpenAI til at fortolke resultaterne i stedet for at stole på scraper biblioteket. Når du opretter en opskrift via URL, gøres dette automatisk, hvis skraberbiblioteket fejler, men du kan teste det manuelt her.", "recipe-debugger-use-openai-description": "Brug OpenAI til at fortolke resultaterne i stedet for at stole på scraper biblioteket. Når du opretter en opskrift via URL, gøres dette automatisk, hvis skraberbiblioteket fejler, men du kan teste det manuelt her.",
"debug": "Fejlsøgning", "debug": "Fejlsøgning",
"tree-view": "Træ visning", "tree-view": "Træ visning",
"recipe-servings": "Recipe Servings",
"recipe-yield": "Udbytte af opskrift", "recipe-yield": "Udbytte af opskrift",
"recipe-yield-text": "Recipe Yield Text",
"unit": "Enhed", "unit": "Enhed",
"upload-image": "Upload billede", "upload-image": "Upload billede",
"screen-awake": "Hold skærmen tændt", "screen-awake": "Hold skærmen tændt",
@ -662,7 +661,25 @@
"missing-food": "Opret manglende fødevare: {food}", "missing-food": "Opret manglende fødevare: {food}",
"no-food": "Ingen fødevarer" "no-food": "Ingen fødevarer"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Nulstil antal serveringer",
"not-linked-ingredients": "Additional Ingredients"
},
"recipe-finder": {
"recipe-finder": "Opskrift Finder",
"recipe-finder-description": "Search for recipes based on ingredients you have on hand. You can also filter by tools you have available, and set a maximum number of missing ingredients or tools.",
"selected-ingredients": "Valgte Ingredienser",
"no-ingredients-selected": "Ingen ingredienser valgt",
"missing": "Mangler",
"no-recipes-found": "Ingen opskrifter fundet",
"no-recipes-found-description": "Prøv at tilføje flere ingredienser til din søgning eller justere dine filtre",
"include-ingredients-on-hand": "Inkluder ingredienser du allerede har",
"include-tools-on-hand": "Inkluder værktøjer du allerede har",
"max-missing-ingredients": "Maksimum Manglende Ingredienser",
"max-missing-tools": "Max Missing Tools",
"selected-tools": "Selected Tools",
"other-filters": "Andre filtre",
"ready-to-make": "Klar til at lave",
"almost-ready-to-make": "Næsten klar til at lave"
}, },
"search": { "search": {
"advanced-search": "Avanceret søgning", "advanced-search": "Avanceret søgning",
@ -671,9 +688,9 @@
"include": "Inkluder", "include": "Inkluder",
"max-results": "Maksimalt antal resultater", "max-results": "Maksimalt antal resultater",
"or": "Eller", "or": "Eller",
"has-any": "Har Nogen", "has-any": "Har nogen",
"has-all": "Har Alle", "has-all": "Har alle",
"clear-selection": "Clear Selection", "clear-selection": "Ryd valg",
"results": "Resultater", "results": "Resultater",
"search": "Søg", "search": "Søg",
"search-mealie": "Søg Mealie (tryk /)", "search-mealie": "Søg Mealie (tryk /)",
@ -681,7 +698,7 @@
"tag-filter": "Tagfiler", "tag-filter": "Tagfiler",
"search-hint": "Tryk '/'", "search-hint": "Tryk '/'",
"advanced": "Avanceret", "advanced": "Avanceret",
"auto-search": "Automatisk Søgning", "auto-search": "Automatisk søgning",
"no-results": "Ingen resultater fundet" "no-results": "Ingen resultater fundet"
}, },
"settings": { "settings": {
@ -866,7 +883,8 @@
"you-are-offline-description": "Ikke alle funktioner er tilgængelige mens offline. Du kan stadig tilføje, modificere, og fjerne elementer, men du vil ikke kunne synkronisere dine ændringer til serveren, før du er online igen.", "you-are-offline-description": "Ikke alle funktioner er tilgængelige mens offline. Du kan stadig tilføje, modificere, og fjerne elementer, men du vil ikke kunne synkronisere dine ændringer til serveren, før du er online igen.",
"are-you-sure-you-want-to-check-all-items": "Er du sikker på, at du vil markere alle elementer?", "are-you-sure-you-want-to-check-all-items": "Er du sikker på, at du vil markere alle elementer?",
"are-you-sure-you-want-to-uncheck-all-items": "Er du sikker på, at du vil fjerne markeringen af alle elementer?", "are-you-sure-you-want-to-uncheck-all-items": "Er du sikker på, at du vil fjerne markeringen af alle elementer?",
"are-you-sure-you-want-to-delete-checked-items": "Er du sikker på, at du vil sletter de valgte elementer?" "are-you-sure-you-want-to-delete-checked-items": "Er du sikker på, at du vil sletter de valgte elementer?",
"no-shopping-lists-found": "Ingen Indkøbslister fundet"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Alle opskr.", "all-recipes": "Alle opskr.",
@ -879,7 +897,7 @@
"migrations": "Migrationer", "migrations": "Migrationer",
"profile": "Profil", "profile": "Profil",
"search": "Søg", "search": "Søg",
"site-settings": "Sideindstil.", "site-settings": "Sideindstillinger",
"tags": "Tags", "tags": "Tags",
"toolbox": "Værktøjskasse", "toolbox": "Værktøjskasse",
"language": "Sprog", "language": "Sprog",
@ -1012,7 +1030,7 @@
"administrator": "Administrator", "administrator": "Administrator",
"user-can-invite-other-to-group": "Bruger kan invitere andre til gruppen", "user-can-invite-other-to-group": "Bruger kan invitere andre til gruppen",
"user-can-manage-group": "Bruger kan administrere gruppen", "user-can-manage-group": "Bruger kan administrere gruppen",
"user-can-manage-household": "User can manage household", "user-can-manage-household": "Bruger kan administrere husholdningen",
"user-can-organize-group-data": "Bruger kan organisere gruppedata", "user-can-organize-group-data": "Bruger kan organisere gruppedata",
"enable-advanced-features": "Aktiver avancerede funktioner", "enable-advanced-features": "Aktiver avancerede funktioner",
"it-looks-like-this-is-your-first-time-logging-in": "Det ser ud til, at det er første gang, at du logger ind.", "it-looks-like-this-is-your-first-time-logging-in": "Det ser ud til, at det er første gang, at du logger ind.",
@ -1268,16 +1286,17 @@
"restore-from-v1-backup": "Har du en sikkerhedskopi fra en tidligere udgave af Mealie v1? Du kan gendanne den her.", "restore-from-v1-backup": "Har du en sikkerhedskopi fra en tidligere udgave af Mealie v1? Du kan gendanne den her.",
"manage-profile-or-get-invite-link": "Administrer din egen profil, eller tag et invitationslink til at dele med andre." "manage-profile-or-get-invite-link": "Administrer din egen profil, eller tag et invitationslink til at dele med andre."
}, },
"debug-openai-services": "Debug OpenAI Services", "debug-openai-services": "Fejlsøg OpenAI-tjenester",
"debug-openai-services-description": "Use this page to debug OpenAI services. You can test your OpenAI connection and see the results here. If you have image services enabled, you can also provide an image.", "debug-openai-services-description": "Brug denne side til at fejlsøge OpenAI-tjenester. Du kan teste din OpenAI-forbindelse og se resultaterne her. Hvis du har billedetjenester aktiveret, kan du også prøve med et billede.",
"run-test": "Run Test", "run-test": "Kør test",
"test-results": "Test Results", "test-results": "Testresultater",
"group-delete-note": "Groups with users or households cannot be deleted", "group-delete-note": "Grupper med brugere eller husholdninger kan ikke slettes",
"household-delete-note": "Households with users cannot be deleted" "household-delete-note": "Husholdninger med brugere kan ikke slettes"
}, },
"profile": { "profile": {
"welcome-user": "👋 Velkommen, {0}!", "welcome-user": "👋 Velkommen, {0}!",
"description": "Administrer din profil, opskrifter og gruppeindstillinger.", "description": "Administrer din profil, opskrifter og gruppeindstillinger.",
"invite-link": "Invitationslink",
"get-invite-link": "Få Invitationslink", "get-invite-link": "Få Invitationslink",
"get-public-link": "Offentligt link", "get-public-link": "Offentligt link",
"account-summary": "Kontooversigt", "account-summary": "Kontooversigt",
@ -1285,7 +1304,7 @@
"group-statistics": "Gruppestatistik", "group-statistics": "Gruppestatistik",
"group-statistics-description": "Din gruppestatistik giver indsigt i, hvordan du bruger Mealie.", "group-statistics-description": "Din gruppestatistik giver indsigt i, hvordan du bruger Mealie.",
"household-statistics": "Husholdnings Statistikker", "household-statistics": "Husholdnings Statistikker",
"household-statistics-description": "Your Household Statistics provide some insight how you're using Mealie.", "household-statistics-description": "Dine husstandsstatistikker giver lidt indsigt i, hvordan du bruger Mealie.",
"storage-capacity": "Lagerkapacitet", "storage-capacity": "Lagerkapacitet",
"storage-capacity-description": "Din lagerkapacitet er en beregning af de billeder og elementer, du har uploadet.", "storage-capacity-description": "Din lagerkapacitet er en beregning af de billeder og elementer, du har uploadet.",
"personal": "Personlig", "personal": "Personlig",
@ -1295,13 +1314,13 @@
"api-tokens-description": "Administrer dine API Tokens for adgang fra eksterne applikationer.", "api-tokens-description": "Administrer dine API Tokens for adgang fra eksterne applikationer.",
"group-description": "Disse elementer deles i din gruppe. Redigering af et af dem vil ændre det for hele gruppen!", "group-description": "Disse elementer deles i din gruppe. Redigering af et af dem vil ændre det for hele gruppen!",
"group-settings": "Gruppeindstillinger", "group-settings": "Gruppeindstillinger",
"group-settings-description": "Manage your common group settings, like privacy settings.", "group-settings-description": "Administrer dine fælles gruppeindstillinger, såsom privatlivsindstillinger.",
"household-description": "These items are shared within your household. Editing one of them will change it for the whole household!", "household-description": "Disse elementer deles i din husstand. Redigering af en af dem vil ændre det for hele husstanden!",
"household-settings": "Husholdnings Indstillinger", "household-settings": "Husholdnings Indstillinger",
"household-settings-description": "Manage your household settings, like mealplan and privacy settings.", "household-settings-description": "Administrer dine husstandsindstillinger, såsom madplan og privatlivsindstillinger.",
"cookbooks-description": "Administrer en samling af kategorier og generer sider for dem.", "cookbooks-description": "Administrer en samling af kategorier og generer sider for dem.",
"members": "Medlemmer", "members": "Medlemmer",
"members-description": "See who's in your household and manage their permissions.", "members-description": "Se, hvem der er i din husstand og administrere deres tilladelser.",
"webhooks-description": "Opsæt af webhooks, der afvikles på dage, som du har planlagt måltider for.", "webhooks-description": "Opsæt af webhooks, der afvikles på dage, som du har planlagt måltider for.",
"notifiers": "Notifikationer", "notifiers": "Notifikationer",
"notifiers-description": "Opsæt e-mail og push-notifikationer, der udløser på specifikke begivenheder.", "notifiers-description": "Opsæt e-mail og push-notifikationer, der udløser på specifikke begivenheder.",
@ -1326,7 +1345,9 @@
}, },
"cookbook": { "cookbook": {
"cookbooks": "Kogebøger", "cookbooks": "Kogebøger",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Kogebøger er en anden måde at organisere opskrifter ved at skabe tværsnit af opskrifter, arrangører, og andre filtre. Oprettelse af en kogebog vil tilføje et link i sidemenuen, og alle opskrifter med de valgte filtre vil blive vist i kogebogen.",
"hide-cookbooks-from-other-households": "Skjul kogebøger fra andre husholdninger",
"hide-cookbooks-from-other-households-description": "Når aktiveret, kun kogebøger fra din husstand vises på sidepanelet",
"public-cookbook": "Offentlig kogebog", "public-cookbook": "Offentlig kogebog",
"public-cookbook-description": "Offentlige kogebøger kan deles med personer, der ikke er oprettet som brugere i Mealie og vil blive vist på din gruppe side.", "public-cookbook-description": "Offentlige kogebøger kan deles med personer, der ikke er oprettet som brugere i Mealie og vil blive vist på din gruppe side.",
"filter-options": "Filtreringsindstillinger", "filter-options": "Filtreringsindstillinger",
@ -1342,25 +1363,25 @@
}, },
"query-filter": { "query-filter": {
"logical-operators": { "logical-operators": {
"and": "AND", "and": "OG",
"or": "OR" "or": "ELLER"
}, },
"relational-operators": { "relational-operators": {
"equals": "equals", "equals": "lig med",
"does-not-equal": "does not equal", "does-not-equal": "ikke lig med",
"is-greater-than": "is greater than", "is-greater-than": "er større end",
"is-greater-than-or-equal-to": "is greater than or equal to", "is-greater-than-or-equal-to": "er større end eller lig med (Automatic Translation)",
"is-less-than": "is less than", "is-less-than": "er mindre end (Automatic Translation)",
"is-less-than-or-equal-to": "is less than or equal to" "is-less-than-or-equal-to": "er mindre end eller lig med (Automatic Translation)"
}, },
"relational-keywords": { "relational-keywords": {
"is": "is", "is": "er",
"is-not": "is not", "is-not": "er ikke",
"is-one-of": "is one of", "is-one-of": "er en af",
"is-not-one-of": "is not one of", "is-not-one-of": "er ikke en af",
"contains-all-of": "contains all of", "contains-all-of": "indeholder alle af",
"is-like": "is like", "is-like": "er ligesom",
"is-not-like": "is not like" "is-not-like": "er ikke som"
} }
} }
} }

View file

@ -23,7 +23,7 @@
"support": "Unterstützen", "support": "Unterstützen",
"version": "Version", "version": "Version",
"unknown-version": "unbekannt", "unknown-version": "unbekannt",
"sponsor": "Unterstützen" "sponsor": "Unterstützer"
}, },
"asset": { "asset": {
"assets": "Anhänge", "assets": "Anhänge",
@ -276,7 +276,8 @@
"admin-group-management": "Administrator Gruppenverwaltung", "admin-group-management": "Administrator Gruppenverwaltung",
"admin-group-management-text": "Änderungen an dieser Gruppe sind sofort wirksam.", "admin-group-management-text": "Änderungen an dieser Gruppe sind sofort wirksam.",
"group-id-value": "Gruppen ID: {0}", "group-id-value": "Gruppen ID: {0}",
"total-households": "Haushalte insgesamt" "total-households": "Haushalte insgesamt",
"you-must-select-a-group-before-selecting-a-household": "Sie müssen eine Gruppe auswählen, bevor Sie einen Haushalt auswählen"
}, },
"household": { "household": {
"household": "Haushalt", "household": "Haushalt",
@ -356,7 +357,7 @@
"for-type-meal-types": "für {0}", "for-type-meal-types": "für {0}",
"meal-plan-rules": "Essensplan Regeln", "meal-plan-rules": "Essensplan Regeln",
"new-rule": "Neue Regel", "new-rule": "Neue Regel",
"meal-plan-rules-description": "You can create rules for auto selecting recipes for your meal plans. These rules are used by the server to determine the random pool of recipes to select from when creating meal plans. Note that if rules have the same day/type constraints then the rule filters will be merged. In practice, it's unnecessary to create duplicate rules, but it's possible to do so.", "meal-plan-rules-description": "Du kannst Regeln für die automatische Auswahl von Rezepten für deine Speisepläne erstellen. Diese Regeln werden vom Server benutzt, um den Pool an zufälligen Rezepten zu erstellen, aus denen beim Erstellen des Speiseplans gewählt werden kann. In der Praxis ist es nicht nötig, doppelte Regeln zu erstellen, aber es ist möglich.",
"new-rule-description": "Wenn du eine neue Regel für einen Essensplan erstellst, kannst du die Regel für einen bestimmten Wochentag und/oder eine bestimmte Mahlzeit einschränken. Um eine Regel auf alle Tage oder alle Mahlzeiten anzuwenden, kannst du die Regel auf \"Alle\" setzen, damit sämtliche Tage und/oder Mahlzeiten berücksichtigt werden.", "new-rule-description": "Wenn du eine neue Regel für einen Essensplan erstellst, kannst du die Regel für einen bestimmten Wochentag und/oder eine bestimmte Mahlzeit einschränken. Um eine Regel auf alle Tage oder alle Mahlzeiten anzuwenden, kannst du die Regel auf \"Alle\" setzen, damit sämtliche Tage und/oder Mahlzeiten berücksichtigt werden.",
"recipe-rules": "Rezeptregeln", "recipe-rules": "Rezeptregeln",
"applies-to-all-days": "Gilt an allen Tagen", "applies-to-all-days": "Gilt an allen Tagen",
@ -517,6 +518,7 @@
"save-recipe-before-use": "Rezept vor Verwendung speichern", "save-recipe-before-use": "Rezept vor Verwendung speichern",
"section-title": "Titel des Abschnitts", "section-title": "Titel des Abschnitts",
"servings": "Portionen", "servings": "Portionen",
"serves-amount": "{amount} Portionen",
"share-recipe-message": "Ich möchte mein Rezept {0} mit dir teilen.", "share-recipe-message": "Ich möchte mein Rezept {0} mit dir teilen.",
"show-nutrition-values": "Nährwerte anzeigen", "show-nutrition-values": "Nährwerte anzeigen",
"sodium-content": "Natrium", "sodium-content": "Natrium",
@ -524,7 +526,7 @@
"sugar-content": "Zucker", "sugar-content": "Zucker",
"title": "Titel", "title": "Titel",
"total-time": "Gesamtzeit", "total-time": "Gesamtzeit",
"trans-fat-content": "Trans-fat", "trans-fat-content": "Trans-Fettsäuren",
"unable-to-delete-recipe": "Rezept kann nicht gelöscht werden", "unable-to-delete-recipe": "Rezept kann nicht gelöscht werden",
"unsaturated-fat-content": "Ungesättigte Fettsäuren", "unsaturated-fat-content": "Ungesättigte Fettsäuren",
"no-recipe": "Kein Rezept", "no-recipe": "Kein Rezept",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Fehler beim Hinzufügen des Rezepts zum Essensplan", "failed-to-add-recipe-to-mealplan": "Fehler beim Hinzufügen des Rezepts zum Essensplan",
"failed-to-add-to-list": "Fehler beim Hinzufügen zur Liste", "failed-to-add-to-list": "Fehler beim Hinzufügen zur Liste",
"yield": "Portionsangabe", "yield": "Portionsangabe",
"yields-amount-with-text": "Ergibt {amount} {text}",
"yield-text": "Ergibt Text",
"quantity": "Menge", "quantity": "Menge",
"choose-unit": "Einheit wählen", "choose-unit": "Einheit wählen",
"press-enter-to-create": "Zum Erstellen Eingabetaste drücken", "press-enter-to-create": "Zum Erstellen Eingabetaste drücken",
@ -566,13 +570,6 @@
"increase-scale-label": "Maßstab um 1 erhöhen", "increase-scale-label": "Maßstab um 1 erhöhen",
"locked": "Gesperrt", "locked": "Gesperrt",
"public-link": "Öffentlicher Link", "public-link": "Öffentlicher Link",
"timer": {
"kitchen-timer": "Küchenwecker",
"start-timer": "Wecker starten",
"pause-timer": "Wecker pausieren",
"resume-timer": "Wecker fortsetzen",
"stop-timer": "Wecker stoppen"
},
"edit-timeline-event": "Zeitstrahl-Ereignis bearbeiten", "edit-timeline-event": "Zeitstrahl-Ereignis bearbeiten",
"timeline": "Zeitstrahl", "timeline": "Zeitstrahl",
"timeline-is-empty": "Noch nichts auf dem Zeitstrahl. Probier dieses Rezept aus!", "timeline-is-empty": "Noch nichts auf dem Zeitstrahl. Probier dieses Rezept aus!",
@ -614,15 +611,15 @@
"scrape-recipe-description": "Importiere ein Rezept mit der URL. Gib die URL für die Seite an, die du importieren möchtest und Mealie wird versuchen, das Rezept von dieser Seite einzulesen und deiner Sammlung hinzuzufügen.", "scrape-recipe-description": "Importiere ein Rezept mit der URL. Gib die URL für die Seite an, die du importieren möchtest und Mealie wird versuchen, das Rezept von dieser Seite einzulesen und deiner Sammlung hinzuzufügen.",
"scrape-recipe-have-a-lot-of-recipes": "Hast Du viele Rezepte, die Du auf einmal einlesen willst?", "scrape-recipe-have-a-lot-of-recipes": "Hast Du viele Rezepte, die Du auf einmal einlesen willst?",
"scrape-recipe-suggest-bulk-importer": "Probiere den Massenimporter aus", "scrape-recipe-suggest-bulk-importer": "Probiere den Massenimporter aus",
"scrape-recipe-have-raw-html-or-json-data": "Have raw HTML or JSON data?", "scrape-recipe-have-raw-html-or-json-data": "Hast du Roh-HTML oder JSON Daten?",
"scrape-recipe-you-can-import-from-raw-data-directly": "You can import from raw data directly", "scrape-recipe-you-can-import-from-raw-data-directly": "Du kannst direkt von Rohdaten importieren",
"import-original-keywords-as-tags": "Importiere ursprüngliche Stichwörter als Schlagwörter", "import-original-keywords-as-tags": "Importiere ursprüngliche Stichwörter als Schlagwörter",
"stay-in-edit-mode": "Im Bearbeitungsmodus bleiben", "stay-in-edit-mode": "Im Bearbeitungsmodus bleiben",
"import-from-zip": "Von Zip importieren", "import-from-zip": "Von Zip importieren",
"import-from-zip-description": "Importiere ein einzelnes Rezept, das von einer anderen Mealie-Instanz exportiert wurde.", "import-from-zip-description": "Importiere ein einzelnes Rezept, das von einer anderen Mealie-Instanz exportiert wurde.",
"import-from-html-or-json": "Import from HTML or JSON", "import-from-html-or-json": "Aus HTML oder JSON importieren",
"import-from-html-or-json-description": "Import a single recipe from raw HTML or JSON. This is useful if you have a recipe from a site that Mealie can't scrape normally, or from some other external source.", "import-from-html-or-json-description": "Importiere eine einzelne Datei aus Roh-HTML oder JSON. Das ist nützlich, wenn du ein Rezept von einer Seite, die Mealie nicht scrapen kann, oder von einer externen Quelle hast.",
"json-import-format-description-colon": "To import via JSON, it must be in valid format:", "json-import-format-description-colon": "Um mit JSON zu importieren, muss die Datei in einem gültigen Format vorliegen:",
"json-editor": "JSON Editor", "json-editor": "JSON Editor",
"zip-files-must-have-been-exported-from-mealie": ".zip Dateien müssen aus Mealie exportiert worden sein", "zip-files-must-have-been-exported-from-mealie": ".zip Dateien müssen aus Mealie exportiert worden sein",
"create-a-recipe-by-uploading-a-scan": "Erstelle ein Rezept durch Hochladen eines Scans.", "create-a-recipe-by-uploading-a-scan": "Erstelle ein Rezept durch Hochladen eines Scans.",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Verwende OpenAI anstelle der Scraper-Bibliothek, um die Einträge zu parsen. Wenn du ein Rezept über dessen URL erstellst und der Versuch über die Scraper-Bibliothek fehlschlägt, passiert das automatisch. Aber du kannst es hier auch manuell testen.", "recipe-debugger-use-openai-description": "Verwende OpenAI anstelle der Scraper-Bibliothek, um die Einträge zu parsen. Wenn du ein Rezept über dessen URL erstellst und der Versuch über die Scraper-Bibliothek fehlschlägt, passiert das automatisch. Aber du kannst es hier auch manuell testen.",
"debug": "Debug", "debug": "Debug",
"tree-view": "Strukturierte Ansicht", "tree-view": "Strukturierte Ansicht",
"recipe-servings": "Rezept Portionen",
"recipe-yield": "Portionsangabe", "recipe-yield": "Portionsangabe",
"recipe-yield-text": "Rezept ergibt Text",
"unit": "Maßeinheit", "unit": "Maßeinheit",
"upload-image": "Bild hochladen", "upload-image": "Bild hochladen",
"screen-awake": "Bildschirm nicht abschalten", "screen-awake": "Bildschirm nicht abschalten",
@ -662,7 +661,25 @@
"missing-food": "Fehlendes Lebensmittel erstellen: {food}", "missing-food": "Fehlendes Lebensmittel erstellen: {food}",
"no-food": "Kein Lebensmittel" "no-food": "Kein Lebensmittel"
}, },
"reset-servings-count": "Portionen zurücksetzen" "reset-servings-count": "Portionen zurücksetzen",
"not-linked-ingredients": "Zusätzliche Zutaten"
},
"recipe-finder": {
"recipe-finder": "Rezept-Suche",
"recipe-finder-description": "Suche nach Rezepten basierend auf den Zutaten, die du zur Hand hast. Sie können auch nach verfügbaren Werkzeugen filtern und eine maximale Anzahl an fehlenden Zutaten oder Werkzeugen festlegen.",
"selected-ingredients": "Ausgewählte Zutaten",
"no-ingredients-selected": "Keine Zutaten ausgewählt",
"missing": "Fehlend",
"no-recipes-found": "Keine Rezepte gefunden",
"no-recipes-found-description": "Versuche mehr Zutaten zu deiner Suche hinzuzufügen oder deine Filter anzupassen",
"include-ingredients-on-hand": "Zutaten zu Hand einbeziehen",
"include-tools-on-hand": "Utensilien zur Hand einbeziehen",
"max-missing-ingredients": "Maximal fehlende Zutaten",
"max-missing-tools": "Maximal fehlende Utensilien",
"selected-tools": "Ausgewählte Utensilien",
"other-filters": "Andere Filter",
"ready-to-make": "Bereit zu Machen",
"almost-ready-to-make": "Fast bereit zu Machen"
}, },
"search": { "search": {
"advanced-search": "Erweiterte Suche", "advanced-search": "Erweiterte Suche",
@ -673,7 +690,7 @@
"or": "Oder", "or": "Oder",
"has-any": "Irgendeines enthalten", "has-any": "Irgendeines enthalten",
"has-all": "Alle enthalten", "has-all": "Alle enthalten",
"clear-selection": "Clear Selection", "clear-selection": "Auswahl aufheben",
"results": "Ergebnisse", "results": "Ergebnisse",
"search": "Suchen", "search": "Suchen",
"search-mealie": "Mealie durchsuchen (/ drücken)", "search-mealie": "Mealie durchsuchen (/ drücken)",
@ -866,7 +883,8 @@
"you-are-offline-description": "Nicht alle Funktionen sind offline verfügbar. Du kannst weiterhin Einträge hinzufügen, ändern und entfernen, aber Änderungen werden erst dann mit dem Server synchronisiert, wenn du wieder online bist.", "you-are-offline-description": "Nicht alle Funktionen sind offline verfügbar. Du kannst weiterhin Einträge hinzufügen, ändern und entfernen, aber Änderungen werden erst dann mit dem Server synchronisiert, wenn du wieder online bist.",
"are-you-sure-you-want-to-check-all-items": "Bist du sicher, dass du alle Elemente markieren möchtest?", "are-you-sure-you-want-to-check-all-items": "Bist du sicher, dass du alle Elemente markieren möchtest?",
"are-you-sure-you-want-to-uncheck-all-items": "Bist du sicher, dass du die Auswahl aller Elemente aufheben möchtest?", "are-you-sure-you-want-to-uncheck-all-items": "Bist du sicher, dass du die Auswahl aller Elemente aufheben möchtest?",
"are-you-sure-you-want-to-delete-checked-items": "Bist du sicher, dass du alle ausgewählten Elemente löschen möchtest?" "are-you-sure-you-want-to-delete-checked-items": "Bist du sicher, dass du alle ausgewählten Elemente löschen möchtest?",
"no-shopping-lists-found": "Keine Einkaufslisten gefunden"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Alle Rezepte", "all-recipes": "Alle Rezepte",
@ -1268,16 +1286,17 @@
"restore-from-v1-backup": "Hast du ein Backup von einer früheren v1 Instanz von Mealie? Hier kannst du es wiederherstellen.", "restore-from-v1-backup": "Hast du ein Backup von einer früheren v1 Instanz von Mealie? Hier kannst du es wiederherstellen.",
"manage-profile-or-get-invite-link": "Verwalte dein eigenes Profil oder erstelle einen Einladungslink, den du an andere weitergeben kannst." "manage-profile-or-get-invite-link": "Verwalte dein eigenes Profil oder erstelle einen Einladungslink, den du an andere weitergeben kannst."
}, },
"debug-openai-services": "Debug OpenAI Services", "debug-openai-services": "OpenAI Services debuggen",
"debug-openai-services-description": "Use this page to debug OpenAI services. You can test your OpenAI connection and see the results here. If you have image services enabled, you can also provide an image.", "debug-openai-services-description": "",
"run-test": "Run Test", "run-test": "Test durchführen",
"test-results": "Test Results", "test-results": "Testergebnisse",
"group-delete-note": "Groups with users or households cannot be deleted", "group-delete-note": "Gruppen mit Benutzern oder Haushalten können nicht gelöscht werden",
"household-delete-note": "Households with users cannot be deleted" "household-delete-note": "Haushalte mit Benutzern können nicht gelöscht werden"
}, },
"profile": { "profile": {
"welcome-user": "👋 Willkommen, {0}!", "welcome-user": "👋 Willkommen, {0}!",
"description": "Verwalte dein Profil, Rezepte und Gruppeneinstellungen.", "description": "Verwalte dein Profil, Rezepte und Gruppeneinstellungen.",
"invite-link": "Einladungslink",
"get-invite-link": "Einladungslink erzeugen", "get-invite-link": "Einladungslink erzeugen",
"get-public-link": "Öffentlichen Link abrufen", "get-public-link": "Öffentlichen Link abrufen",
"account-summary": "Kontoübersicht", "account-summary": "Kontoübersicht",
@ -1326,7 +1345,9 @@
}, },
"cookbook": { "cookbook": {
"cookbooks": "Kochbücher", "cookbooks": "Kochbücher",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Kochbücher sind ein weiterer Weg, Rezepte zu organisieren, indem man verschiedene Filter erstellt. Das Erstellen eines Kochbuchs fügt einen Eintrag zur Seitenleiste hinzu und alle Rezepte, die den gewählten Filtern zustimmen, werden in dem Kochbuch angezeigt.",
"hide-cookbooks-from-other-households": "Kochbücher von anderen Haushalten ausblenden",
"hide-cookbooks-from-other-households-description": "Wenn aktiviert, werden nur Kochbücher deines Haushalts in der Seitenleiste angezeigt",
"public-cookbook": "Öffentliches Kochbuch", "public-cookbook": "Öffentliches Kochbuch",
"public-cookbook-description": "Öffentliche Kochbücher können mit Nicht-Mealie-Benutzern geteilt werden und werden auf deiner Gruppenseite angezeigt.", "public-cookbook-description": "Öffentliche Kochbücher können mit Nicht-Mealie-Benutzern geteilt werden und werden auf deiner Gruppenseite angezeigt.",
"filter-options": "Filteroptionen", "filter-options": "Filteroptionen",
@ -1342,16 +1363,16 @@
}, },
"query-filter": { "query-filter": {
"logical-operators": { "logical-operators": {
"and": "AND", "and": "UND",
"or": "OR" "or": "ODER"
}, },
"relational-operators": { "relational-operators": {
"equals": "equals", "equals": "ist gleich",
"does-not-equal": "does not equal", "does-not-equal": "ist ungleich",
"is-greater-than": "is greater than", "is-greater-than": "ist größer als",
"is-greater-than-or-equal-to": "is greater than or equal to", "is-greater-than-or-equal-to": "ist größer gleich",
"is-less-than": "ist weniger als", "is-less-than": "ist weniger als",
"is-less-than-or-equal-to": "is less than or equal to" "is-less-than-or-equal-to": "ist kleiner gleich"
}, },
"relational-keywords": { "relational-keywords": {
"is": "ist", "is": "ist",

View file

@ -174,7 +174,7 @@
"wednesday": "Τετάρτη", "wednesday": "Τετάρτη",
"yes": "Ναι", "yes": "Ναι",
"foods": "Τρόφιμα", "foods": "Τρόφιμα",
"units": "Μονάδες", "units": "Μονάδες μέτρησης",
"back": "Πίσω", "back": "Πίσω",
"next": "Επόμενο", "next": "Επόμενο",
"start": "Εναρξη", "start": "Εναρξη",
@ -247,7 +247,7 @@
"manage-members-description": "Διαχειριστείτε τα δικαιώματα των μελών στις ομάδες σας. Το {manage} επιτρέπει στο χρήστη να έχει πρόσβαση στη σελίδα διαχείρισης δεδομένων. Το {invite} επιτρέπει στο χρήστη να δημιουργήσει συνδέσμους πρόσκληση για άλλους χρήστες. Οι ιδιοκτήτες ομάδων δεν μπορούν να αλλάξουν τα δικά τους δικαιώματα.", "manage-members-description": "Διαχειριστείτε τα δικαιώματα των μελών στις ομάδες σας. Το {manage} επιτρέπει στο χρήστη να έχει πρόσβαση στη σελίδα διαχείρισης δεδομένων. Το {invite} επιτρέπει στο χρήστη να δημιουργήσει συνδέσμους πρόσκληση για άλλους χρήστες. Οι ιδιοκτήτες ομάδων δεν μπορούν να αλλάξουν τα δικά τους δικαιώματα.",
"manage": "Διαχείριση", "manage": "Διαχείριση",
"manage-household": "Διαχείριση νοικοκυριού", "manage-household": "Διαχείριση νοικοκυριού",
"invite": "Προσκαλέστε", "invite": "Πρόσκληση",
"looking-to-update-your-profile": "Ψάχνετε να ενημερώσετε το προφίλ σας;", "looking-to-update-your-profile": "Ψάχνετε να ενημερώσετε το προφίλ σας;",
"default-recipe-preferences-description": "Αυτές είναι οι προεπιλεγμένες ρυθμίσεις όταν δημιουργείται μια νέα συνταγή στην ομάδα σας. Μπορούν να αλλάξουν για μεμονωμένες συνταγές στο μενού ρυθμίσεων συνταγών.", "default-recipe-preferences-description": "Αυτές είναι οι προεπιλεγμένες ρυθμίσεις όταν δημιουργείται μια νέα συνταγή στην ομάδα σας. Μπορούν να αλλάξουν για μεμονωμένες συνταγές στο μενού ρυθμίσεων συνταγών.",
"default-recipe-preferences": "Προεπιλεγμένες Προτιμήσεις Συνταγών", "default-recipe-preferences": "Προεπιλεγμένες Προτιμήσεις Συνταγών",
@ -266,7 +266,7 @@
"default-to-landscape-view-description": "Οταν ενεργοποιηθεί το τμήμα κεφαλίδας συνταγής θα εμφανίζεται σε οριζόντια προβολή", "default-to-landscape-view-description": "Οταν ενεργοποιηθεί το τμήμα κεφαλίδας συνταγής θα εμφανίζεται σε οριζόντια προβολή",
"disable-users-from-commenting-on-recipes": "Απενεργοποίηση σχολιασμού χρηστών σε συνταγές", "disable-users-from-commenting-on-recipes": "Απενεργοποίηση σχολιασμού χρηστών σε συνταγές",
"disable-users-from-commenting-on-recipes-description": "Κρύβει το τμήμα σχολίων στη σελίδα συνταγών και απενεργοποιεί τον σχολιασμό", "disable-users-from-commenting-on-recipes-description": "Κρύβει το τμήμα σχολίων στη σελίδα συνταγών και απενεργοποιεί τον σχολιασμό",
"disable-organizing-recipe-ingredients-by-units-and-food": "Απενεργοποίηση οργάνωση των συστατικών συνταγής ανά μονάδα και τρόφιμο", "disable-organizing-recipe-ingredients-by-units-and-food": "Απενεργοποίηση οργάνωσης των συστατικών συνταγής ανά μονάδα και τρόφιμο",
"disable-organizing-recipe-ingredients-by-units-and-food-description": "Κρύβει τα πεδία Τρόφιμο, Μονάδα, και Ποσότητα για συστατικά και αντιμετωπίζει τα συστατικά ως απλά πεδία κειμένου", "disable-organizing-recipe-ingredients-by-units-and-food-description": "Κρύβει τα πεδία Τρόφιμο, Μονάδα, και Ποσότητα για συστατικά και αντιμετωπίζει τα συστατικά ως απλά πεδία κειμένου",
"general-preferences": "Γενικές προτιμήσεις", "general-preferences": "Γενικές προτιμήσεις",
"group-recipe-preferences": "Προτιμήσεις Συνταγών Ομάδας", "group-recipe-preferences": "Προτιμήσεις Συνταγών Ομάδας",
@ -276,7 +276,8 @@
"admin-group-management": "Διαχείριση Ομάδας Διαχειριστών", "admin-group-management": "Διαχείριση Ομάδας Διαχειριστών",
"admin-group-management-text": "Οι αλλαγές σε αυτή την ομάδα θα αντικατοπτρίζονται αμέσως.", "admin-group-management-text": "Οι αλλαγές σε αυτή την ομάδα θα αντικατοπτρίζονται αμέσως.",
"group-id-value": "ID ομάδας: {0}", "group-id-value": "ID ομάδας: {0}",
"total-households": "Σύνολο νοικοκυριών" "total-households": "Σύνολο νοικοκυριών",
"you-must-select-a-group-before-selecting-a-household": "Πρέπει να επιλέξετε μια ομάδα πριν επιλέξετε ένα νοικοκυριό"
}, },
"household": { "household": {
"household": "Νοικοκυριό", "household": "Νοικοκυριό",
@ -517,6 +518,7 @@
"save-recipe-before-use": "Αποθήκευση συνταγής πριν τη χρήση", "save-recipe-before-use": "Αποθήκευση συνταγής πριν τη χρήση",
"section-title": "Τίτλος τμήματος", "section-title": "Τίτλος τμήματος",
"servings": "Μερίδες", "servings": "Μερίδες",
"serves-amount": "Μερίδες {amount}",
"share-recipe-message": "Ήθελα να μοιραστώ την {0} συνταγή μου μαζί σας.", "share-recipe-message": "Ήθελα να μοιραστώ την {0} συνταγή μου μαζί σας.",
"show-nutrition-values": "Εμφάνιση Τιμών Διατροφής", "show-nutrition-values": "Εμφάνιση Τιμών Διατροφής",
"sodium-content": "Νάτριο", "sodium-content": "Νάτριο",
@ -544,7 +546,9 @@
"failed-to-add-recipes-to-list": "Αποτυχία προσθήκης συνταγής στη λίστα", "failed-to-add-recipes-to-list": "Αποτυχία προσθήκης συνταγής στη λίστα",
"failed-to-add-recipe-to-mealplan": "Αποτυχία προσθήκης συνταγής στο πρόγραμμα γευμάτων", "failed-to-add-recipe-to-mealplan": "Αποτυχία προσθήκης συνταγής στο πρόγραμμα γευμάτων",
"failed-to-add-to-list": "Αποτυχία προσθήκης στη λίστα", "failed-to-add-to-list": "Αποτυχία προσθήκης στη λίστα",
"yield": "Μερίδες", "yield": "Ποσότητα",
"yields-amount-with-text": "Ποσότητα {amount} {text}",
"yield-text": "Κείμενο ποσότητας",
"quantity": "Ποσότητα", "quantity": "Ποσότητα",
"choose-unit": "Επιλέξτε μονάδα", "choose-unit": "Επιλέξτε μονάδα",
"press-enter-to-create": "Πατήστε Enter για δημιουργία", "press-enter-to-create": "Πατήστε Enter για δημιουργία",
@ -566,13 +570,6 @@
"increase-scale-label": "Αύξηση κλίμακας κατά 1", "increase-scale-label": "Αύξηση κλίμακας κατά 1",
"locked": "Κλειδωμένο", "locked": "Κλειδωμένο",
"public-link": "Δημόσιος σύνδεσμος", "public-link": "Δημόσιος σύνδεσμος",
"timer": {
"kitchen-timer": "Χρονόμετρο Κουζίνας",
"start-timer": "Εναρξη χρονομέτρου",
"pause-timer": "Παύση χρονόμετρου",
"resume-timer": "Συνέχιση χρονομέτρου",
"stop-timer": "Διακοπή χρονόμετρου"
},
"edit-timeline-event": "Επεξεργασία συμβάντος χρονοδιαγράμματος", "edit-timeline-event": "Επεξεργασία συμβάντος χρονοδιαγράμματος",
"timeline": "Χρονοδιάγραμμα", "timeline": "Χρονοδιάγραμμα",
"timeline-is-empty": "Δεν υπάρχει τίποτα ακόμα στο χρονοδιάγραμμα. Δοκιμάστε να κάνετε αυτή τη συνταγή!", "timeline-is-empty": "Δεν υπάρχει τίποτα ακόμα στο χρονοδιάγραμμα. Δοκιμάστε να κάνετε αυτή τη συνταγή!",
@ -638,9 +635,11 @@
"recipe-debugger-description": "Λάβετε τη διεύθυνση URL της συνταγής στην οποία θέλετε να εντοπίσετε σφάλματα και επικολλήστε την εδώ. Ο scraper συνταγών θα κάνει scrape την διεύθυνση URL και θα εμφανιστούν τα αποτελέσματα. Αν δεν δείτε να επιστρέφονται δεδομένα, η ιστοσελίδα που προσπαθείτε να κάνετε scrape δεν υποστηρίζεται από το Mealie ή τη βιβλιοθήκη του scraper του.", "recipe-debugger-description": "Λάβετε τη διεύθυνση URL της συνταγής στην οποία θέλετε να εντοπίσετε σφάλματα και επικολλήστε την εδώ. Ο scraper συνταγών θα κάνει scrape την διεύθυνση URL και θα εμφανιστούν τα αποτελέσματα. Αν δεν δείτε να επιστρέφονται δεδομένα, η ιστοσελίδα που προσπαθείτε να κάνετε scrape δεν υποστηρίζεται από το Mealie ή τη βιβλιοθήκη του scraper του.",
"use-openai": "Χρήση OpenAI", "use-openai": "Χρήση OpenAI",
"recipe-debugger-use-openai-description": "Χρησιμοποιήστε το OpenAI για να αναλύσετε τα αποτελέσματα αντί να βασιστείτε στη βιβλιοθήκη του scraper. Κατά τη δημιουργία μιας συνταγής μέσω URL, αυτό γίνεται αυτόματα αν η βιβλιοθήκη του scraper αποτύχει, αλλά μπορείτε να την δοκιμάσετε χειροκίνητα εδώ.", "recipe-debugger-use-openai-description": "Χρησιμοποιήστε το OpenAI για να αναλύσετε τα αποτελέσματα αντί να βασιστείτε στη βιβλιοθήκη του scraper. Κατά τη δημιουργία μιας συνταγής μέσω URL, αυτό γίνεται αυτόματα αν η βιβλιοθήκη του scraper αποτύχει, αλλά μπορείτε να την δοκιμάσετε χειροκίνητα εδώ.",
"debug": "Εντοπισμός σφαλμάτων", "debug": "Εντ. σφαλμάτων",
"tree-view": "Προβολή δέντρου", "tree-view": "Προβολή δέντρου",
"recipe-yield": "Μερίδες συνταγής", "recipe-servings": "Μερίδες συνταγής",
"recipe-yield": "Ποσότητα Συνταγής",
"recipe-yield-text": "Κείμενο ποσότητας συνταγής",
"unit": "Μονάδα", "unit": "Μονάδα",
"upload-image": "Ανέβασμα εικόνας", "upload-image": "Ανέβασμα εικόνας",
"screen-awake": "Διατήρηση ενεργής οθόνης", "screen-awake": "Διατήρηση ενεργής οθόνης",
@ -662,7 +661,25 @@
"missing-food": "Δημιουργία τροφίμου που λείπει: {food}", "missing-food": "Δημιουργία τροφίμου που λείπει: {food}",
"no-food": "Χωρίς Τρόφιμο" "no-food": "Χωρίς Τρόφιμο"
}, },
"reset-servings-count": "Επαναφορά μέτρησης μερίδων" "reset-servings-count": "Επαναφορά μέτρησης μερίδων",
"not-linked-ingredients": "Πρόσθετα συστατικά"
},
"recipe-finder": {
"recipe-finder": "Εύρεση συνταγών",
"recipe-finder-description": "Αναζητήστε συνταγές με βάση τα συστατικά που έχετε στο χέρι. Μπορείτε επίσης να θέσετε φίλτρα με βάση τα εργαλεία που διαθέτετε και να ορίσετε έναν μέγιστο αριθμό συστατικών ή εργαλείων που λείπουν.",
"selected-ingredients": "Επιλεγμένα συστατικά",
"no-ingredients-selected": "Δεν επιλέχτηκαν συστατικά",
"missing": "Λείπει",
"no-recipes-found": "Δεν βρέθηκαν συνταγές",
"no-recipes-found-description": "Δοκιμάστε να προσθέσετε περισσότερα συστατικά στην αναζήτησή σας ή να προσαρμόσετε τα φίλτρα σας",
"include-ingredients-on-hand": "Συμπερίληψη συστατικών στο χέρι",
"include-tools-on-hand": "Συμπερίληψη εργαλείων στο χέρι",
"max-missing-ingredients": "Μέγιστος αριθμός συστατικών που λείπουν",
"max-missing-tools": "Μέγιστος αριθμός εργαλείων που λείπουν",
"selected-tools": "Επιλεγμένα εργαλεία",
"other-filters": "Αλλα φίλτρα",
"ready-to-make": "Ετοιμο για παρασκευή",
"almost-ready-to-make": "Σχεδόν έτοιμο για παρασκευή"
}, },
"search": { "search": {
"advanced-search": "Σύνθετη Αναζήτηση", "advanced-search": "Σύνθετη Αναζήτηση",
@ -866,7 +883,8 @@
"you-are-offline-description": "Δεν είναι όλες οι λειτουργίες διαθέσιμες όταν είναι εκτός σύνδεσης. Μπορείτε ακόμα να προσθέσετε, να τροποποιήσετε και να αφαιρέσετε αντικείμενα, αλλά δεν θα μπορείτε να συγχρονίσετε τις αλλαγές σας στο διακομιστή μέχρι να επανέλθει η σύνδεση στο διαδίκτυο.", "you-are-offline-description": "Δεν είναι όλες οι λειτουργίες διαθέσιμες όταν είναι εκτός σύνδεσης. Μπορείτε ακόμα να προσθέσετε, να τροποποιήσετε και να αφαιρέσετε αντικείμενα, αλλά δεν θα μπορείτε να συγχρονίσετε τις αλλαγές σας στο διακομιστή μέχρι να επανέλθει η σύνδεση στο διαδίκτυο.",
"are-you-sure-you-want-to-check-all-items": "Θέλετε σίγουρα να επιλέξετε όλα τα αντικείμενα;", "are-you-sure-you-want-to-check-all-items": "Θέλετε σίγουρα να επιλέξετε όλα τα αντικείμενα;",
"are-you-sure-you-want-to-uncheck-all-items": "Θέλετε σίγουρα να αποεπιλέξετε όλα τα αντικείμενα;", "are-you-sure-you-want-to-uncheck-all-items": "Θέλετε σίγουρα να αποεπιλέξετε όλα τα αντικείμενα;",
"are-you-sure-you-want-to-delete-checked-items": "Θέλετε σίγουρα να διαγράψετε όλα τα επιλεγμένα αντικείμενα;" "are-you-sure-you-want-to-delete-checked-items": "Θέλετε σίγουρα να διαγράψετε όλα τα επιλεγμένα αντικείμενα;",
"no-shopping-lists-found": "Δεν βρέθηκαν λίστες αγορών"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Συνταγές όλες", "all-recipes": "Συνταγές όλες",
@ -1278,6 +1296,7 @@
"profile": { "profile": {
"welcome-user": "👋 Καλώς ορίσατε, {0}!", "welcome-user": "👋 Καλώς ορίσατε, {0}!",
"description": "Διαχειριστείτε το προφίλ σας, τις συνταγές και τις ρυθμίσεις ομάδας.", "description": "Διαχειριστείτε το προφίλ σας, τις συνταγές και τις ρυθμίσεις ομάδας.",
"invite-link": "Σύνδεσμος πρόσκλησης",
"get-invite-link": "Λήψη συνδέσμου πρόσκλησης", "get-invite-link": "Λήψη συνδέσμου πρόσκλησης",
"get-public-link": "Λήψη δημόσιου συνδέσμου", "get-public-link": "Λήψη δημόσιου συνδέσμου",
"account-summary": "Σύνοψη λογαριασμού", "account-summary": "Σύνοψη λογαριασμού",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Βιβλία Μαγειρικής", "cookbooks": "Βιβλία Μαγειρικής",
"description": "Τα βιβλία μαγειρικής είναι ένας άλλος τρόπος για να οργανώσετε τις συνταγές δημιουργώντας τμήματα συνταγών, οργανωτών και άλλων φίλτρων. Η δημιουργία ενός βιβλίου μαγειρικής θα προσθέσει μια καταχώρηση στην πλευρική μπάρα και όλες οι συνταγές με τα φίλτρα που έχουν επιλεγεί θα εμφανιστούν στο βιβλίο μαγειρικών.", "description": "Τα βιβλία μαγειρικής είναι ένας άλλος τρόπος για να οργανώσετε τις συνταγές δημιουργώντας τμήματα συνταγών, οργανωτών και άλλων φίλτρων. Η δημιουργία ενός βιβλίου μαγειρικής θα προσθέσει μια καταχώρηση στην πλευρική μπάρα και όλες οι συνταγές με τα φίλτρα που έχουν επιλεγεί θα εμφανιστούν στο βιβλίο μαγειρικών.",
"hide-cookbooks-from-other-households": "Απόκρυψη Βιβλίων Μαγειρικής από άλλα νοικοκυριά",
"hide-cookbooks-from-other-households-description": "Οταν είναι ενεργοποιημένο, μόνο βιβλία μαγειρικής από το νοικοκυριό σας θα εμφανίζονται στην πλαϊνή μπάρα",
"public-cookbook": "Δημόσιο Βιβλίο Μαγειρικής", "public-cookbook": "Δημόσιο Βιβλίο Μαγειρικής",
"public-cookbook-description": "Τα δημόσια βιβλία μαγειρικής μπορούν να μοιραστούν με χρήστες εκτός του mealie και θα εμφανιστούν στη σελίδα των ομάδων σας.", "public-cookbook-description": "Τα δημόσια βιβλία μαγειρικής μπορούν να μοιραστούν με χρήστες εκτός του mealie και θα εμφανιστούν στη σελίδα των ομάδων σας.",
"filter-options": "Επιλογές φίλτρου", "filter-options": "Επιλογές φίλτρου",

View file

@ -276,7 +276,8 @@
"admin-group-management": "Admin Group Management", "admin-group-management": "Admin Group Management",
"admin-group-management-text": "Changes to this group will be reflected immediately.", "admin-group-management-text": "Changes to this group will be reflected immediately.",
"group-id-value": "Group ID: {0}", "group-id-value": "Group ID: {0}",
"total-households": "Total Households" "total-households": "Total Households",
"you-must-select-a-group-before-selecting-a-household": "You must select a group before selecting a household"
}, },
"household": { "household": {
"household": "Household", "household": "Household",
@ -517,6 +518,7 @@
"save-recipe-before-use": "Save recipe before use", "save-recipe-before-use": "Save recipe before use",
"section-title": "Section Title", "section-title": "Section Title",
"servings": "Servings", "servings": "Servings",
"serves-amount": "Serves {amount}",
"share-recipe-message": "I wanted to share my {0} recipe with you.", "share-recipe-message": "I wanted to share my {0} recipe with you.",
"show-nutrition-values": "Show Nutrition Values", "show-nutrition-values": "Show Nutrition Values",
"sodium-content": "Sodium", "sodium-content": "Sodium",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Failed to add recipe to mealplan", "failed-to-add-recipe-to-mealplan": "Failed to add recipe to mealplan",
"failed-to-add-to-list": "Failed to add to list", "failed-to-add-to-list": "Failed to add to list",
"yield": "Yield", "yield": "Yield",
"yields-amount-with-text": "Yields {amount} {text}",
"yield-text": "Yield Text",
"quantity": "Quantity", "quantity": "Quantity",
"choose-unit": "Choose Unit", "choose-unit": "Choose Unit",
"press-enter-to-create": "Press Enter to Create", "press-enter-to-create": "Press Enter to Create",
@ -566,13 +570,6 @@
"increase-scale-label": "Increase Scale by 1", "increase-scale-label": "Increase Scale by 1",
"locked": "Locked", "locked": "Locked",
"public-link": "Public Link", "public-link": "Public Link",
"timer": {
"kitchen-timer": "Kitchen Timer",
"start-timer": "Start Timer",
"pause-timer": "Pause Timer",
"resume-timer": "Resume Timer",
"stop-timer": "Stop Timer"
},
"edit-timeline-event": "Edit Timeline Event", "edit-timeline-event": "Edit Timeline Event",
"timeline": "Timeline", "timeline": "Timeline",
"timeline-is-empty": "Nothing on the timeline yet. Try making this recipe!", "timeline-is-empty": "Nothing on the timeline yet. Try making this recipe!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.", "recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.",
"debug": "Debug", "debug": "Debug",
"tree-view": "Tree View", "tree-view": "Tree View",
"recipe-servings": "Recipe Servings",
"recipe-yield": "Recipe Yield", "recipe-yield": "Recipe Yield",
"recipe-yield-text": "Recipe Yield Text",
"unit": "Unit", "unit": "Unit",
"upload-image": "Upload image", "upload-image": "Upload image",
"screen-awake": "Keep Screen Awake", "screen-awake": "Keep Screen Awake",
@ -662,7 +661,25 @@
"missing-food": "Create missing food: {food}", "missing-food": "Create missing food: {food}",
"no-food": "No Food" "no-food": "No Food"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Reset Servings Count",
"not-linked-ingredients": "Additional Ingredients"
},
"recipe-finder": {
"recipe-finder": "Recipe Finder",
"recipe-finder-description": "Search for recipes based on ingredients you have on hand. You can also filter by tools you have available, and set a maximum number of missing ingredients or tools.",
"selected-ingredients": "Selected Ingredients",
"no-ingredients-selected": "No ingredients selected",
"missing": "Missing",
"no-recipes-found": "No recipes found",
"no-recipes-found-description": "Try adding more ingredients to your search or adjusting your filters",
"include-ingredients-on-hand": "Include Ingredients On Hand",
"include-tools-on-hand": "Include Tools On Hand",
"max-missing-ingredients": "Max Missing Ingredients",
"max-missing-tools": "Max Missing Tools",
"selected-tools": "Selected Tools",
"other-filters": "Other Filters",
"ready-to-make": "Ready to Make",
"almost-ready-to-make": "Almost Ready to Make"
}, },
"search": { "search": {
"advanced-search": "Advanced Search", "advanced-search": "Advanced Search",
@ -866,7 +883,8 @@
"you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.", "you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.",
"are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?", "are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?",
"are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?", "are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?",
"are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?" "are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?",
"no-shopping-lists-found": "No Shopping Lists Found"
}, },
"sidebar": { "sidebar": {
"all-recipes": "All Recipes", "all-recipes": "All Recipes",
@ -1278,6 +1296,7 @@
"profile": { "profile": {
"welcome-user": "👋 Welcome, {0}!", "welcome-user": "👋 Welcome, {0}!",
"description": "Manage your profile, recipes, and group settings.", "description": "Manage your profile, recipes, and group settings.",
"invite-link": "Invite Link",
"get-invite-link": "Get Invite Link", "get-invite-link": "Get Invite Link",
"get-public-link": "Get Public Link", "get-public-link": "Get Public Link",
"account-summary": "Account Summary", "account-summary": "Account Summary",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Cookbooks", "cookbooks": "Cookbooks",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.",
"hide-cookbooks-from-other-households": "Hide Cookbooks from Other Households",
"hide-cookbooks-from-other-households-description": "When enabled, only cookbooks from your household will appear on the sidebar",
"public-cookbook": "Public Cookbook", "public-cookbook": "Public Cookbook",
"public-cookbook-description": "Public Cookbooks can be shared with non-mealie users and will be displayed on your groups page.", "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": "Filter Options",

View file

@ -573,13 +573,6 @@
"increase-scale-label": "Increase Scale by 1", "increase-scale-label": "Increase Scale by 1",
"locked": "Locked", "locked": "Locked",
"public-link": "Public Link", "public-link": "Public Link",
"timer": {
"kitchen-timer": "Kitchen Timer",
"start-timer": "Start Timer",
"pause-timer": "Pause Timer",
"resume-timer": "Resume Timer",
"stop-timer": "Stop Timer"
},
"edit-timeline-event": "Edit Timeline Event", "edit-timeline-event": "Edit Timeline Event",
"timeline": "Timeline", "timeline": "Timeline",
"timeline-is-empty": "Nothing on the timeline yet. Try making this recipe!", "timeline-is-empty": "Nothing on the timeline yet. Try making this recipe!",

View file

@ -276,7 +276,8 @@
"admin-group-management": "Gestión del grupo administrador", "admin-group-management": "Gestión del grupo administrador",
"admin-group-management-text": "Los cambios en este grupo se reflejarán inmediatamente.", "admin-group-management-text": "Los cambios en este grupo se reflejarán inmediatamente.",
"group-id-value": "Id del Grupo: {0}", "group-id-value": "Id del Grupo: {0}",
"total-households": "Total de Casas" "total-households": "Total de Casas",
"you-must-select-a-group-before-selecting-a-household": "Debe seleccionar un grupo antes de seleccionar un hogar"
}, },
"household": { "household": {
"household": "Casa", "household": "Casa",
@ -331,8 +332,8 @@
"only-recipes-with-these-categories-will-be-used-in-meal-plans": "Sólo las recetas con estas categorías se utilizarán en los menús", "only-recipes-with-these-categories-will-be-used-in-meal-plans": "Sólo las recetas con estas categorías se utilizarán en los menús",
"planner": "Planificador", "planner": "Planificador",
"quick-week": "Plan rápido", "quick-week": "Plan rápido",
"side": "Guarnición", "side": "Segundo plato",
"sides": "Guarniciones", "sides": "Segundos platos",
"start-date": "Fecha de Inicio", "start-date": "Fecha de Inicio",
"rule-day": "Regla para día", "rule-day": "Regla para día",
"meal-type": "Tipo de comida", "meal-type": "Tipo de comida",
@ -348,7 +349,7 @@
"note-only": "Solo notas", "note-only": "Solo notas",
"random-meal": "Comida aleatoria", "random-meal": "Comida aleatoria",
"random-dinner": "Cena al azar", "random-dinner": "Cena al azar",
"random-side": "Lado Aleatorio", "random-side": "Segundo plato aleatorio",
"this-rule-will-apply": "Esta regla se aplicará {dayCriteria} {mealTypeCriteria}.", "this-rule-will-apply": "Esta regla se aplicará {dayCriteria} {mealTypeCriteria}.",
"to-all-days": "a todos los días", "to-all-days": "a todos los días",
"on-days": "en {0}s", "on-days": "en {0}s",
@ -468,7 +469,7 @@
"categories": "Categorías", "categories": "Categorías",
"cholesterol-content": "Colesterol", "cholesterol-content": "Colesterol",
"comment-action": "Comentar", "comment-action": "Comentar",
"comment": "Comentar", "comment": "Comentario",
"comments": "Comentarios", "comments": "Comentarios",
"delete-confirmation": "¿Estás seguro de eliminar esta receta?", "delete-confirmation": "¿Estás seguro de eliminar esta receta?",
"delete-recipe": "Borrar receta", "delete-recipe": "Borrar receta",
@ -517,6 +518,7 @@
"save-recipe-before-use": "Guardar la receta antes de usar", "save-recipe-before-use": "Guardar la receta antes de usar",
"section-title": "Título de la sección", "section-title": "Título de la sección",
"servings": "Porciones", "servings": "Porciones",
"serves-amount": "Personas {amount}",
"share-recipe-message": "Quería compartir mi receta {0} contigo.", "share-recipe-message": "Quería compartir mi receta {0} contigo.",
"show-nutrition-values": "Mostrar valores nutricionales", "show-nutrition-values": "Mostrar valores nutricionales",
"sodium-content": "Sodio", "sodium-content": "Sodio",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Error al añadir receta al menú", "failed-to-add-recipe-to-mealplan": "Error al añadir receta al menú",
"failed-to-add-to-list": "No se pudo agregar a la lista", "failed-to-add-to-list": "No se pudo agregar a la lista",
"yield": "Raciones", "yield": "Raciones",
"yields-amount-with-text": "Raciones {amount} {text}",
"yield-text": "Texto de raciones",
"quantity": "Cantidad", "quantity": "Cantidad",
"choose-unit": "Elija unidad", "choose-unit": "Elija unidad",
"press-enter-to-create": "Presione Intro para crear", "press-enter-to-create": "Presione Intro para crear",
@ -566,13 +570,6 @@
"increase-scale-label": "Aumentar escala en 1", "increase-scale-label": "Aumentar escala en 1",
"locked": "Bloqueada", "locked": "Bloqueada",
"public-link": "Enlace público", "public-link": "Enlace público",
"timer": {
"kitchen-timer": "Temporizador de cocina",
"start-timer": "Iniciar Temporizador",
"pause-timer": "Pausar Temporizador",
"resume-timer": "Reanudar Temporizador",
"stop-timer": "Detener temporizador"
},
"edit-timeline-event": "Editar evento en la cronología", "edit-timeline-event": "Editar evento en la cronología",
"timeline": "Cronología", "timeline": "Cronología",
"timeline-is-empty": "Aún no hay nada en la línea de tiempo. ¡Intenta hacer esta receta!", "timeline-is-empty": "Aún no hay nada en la línea de tiempo. ¡Intenta hacer esta receta!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Utilice OpenAI para analizar los resultados en lugar de depender de la biblioteca de analizadores. Cuando se crea una receta a través de la URL, esto se hace automáticamente si la biblioteca del analizador falla, pero puede probarla manualmente aquí.", "recipe-debugger-use-openai-description": "Utilice OpenAI para analizar los resultados en lugar de depender de la biblioteca de analizadores. Cuando se crea una receta a través de la URL, esto se hace automáticamente si la biblioteca del analizador falla, pero puede probarla manualmente aquí.",
"debug": "Depuración", "debug": "Depuración",
"tree-view": "Vista en árbol", "tree-view": "Vista en árbol",
"recipe-servings": "Cantidad de personas",
"recipe-yield": "Porciones", "recipe-yield": "Porciones",
"recipe-yield-text": "Texto de raciones totales",
"unit": "Unidades", "unit": "Unidades",
"upload-image": "Subir imagen", "upload-image": "Subir imagen",
"screen-awake": "Mantener la pantalla encendida", "screen-awake": "Mantener la pantalla encendida",
@ -662,7 +661,25 @@
"missing-food": "Crear comida faltante: {food}", "missing-food": "Crear comida faltante: {food}",
"no-food": "Sin Comida" "no-food": "Sin Comida"
}, },
"reset-servings-count": "Restablecer contador de porciones" "reset-servings-count": "Restablecer contador de porciones",
"not-linked-ingredients": "Ingredientes adicionales"
},
"recipe-finder": {
"recipe-finder": "Buscador de recetas",
"recipe-finder-description": "Busca recetas basadas en los ingredientes que tengas disponibles. También puede filtrar por utensilios disponibles, y establecer un número máximo de ingredientes o herramientas que faltan.",
"selected-ingredients": "Ingredientes seleccionados",
"no-ingredients-selected": "Ningún ingrediente seleccionado",
"missing": "Faltan",
"no-recipes-found": "No se encontraron recetas",
"no-recipes-found-description": "Intenta añadir más ingredientes a tu búsqueda o ajustar tus filtros",
"include-ingredients-on-hand": "Incluye ingredientes a mano",
"include-tools-on-hand": "Incluye utensilios disponibles",
"max-missing-ingredients": "Máximo de ingredientes que faltan",
"max-missing-tools": "Máximo de utensilios que faltan",
"selected-tools": "Utensilios seleccionados",
"other-filters": "Otros filtros",
"ready-to-make": "Listo para hacer",
"almost-ready-to-make": "Casi listo para hacer"
}, },
"search": { "search": {
"advanced-search": "Búsqueda avanzada", "advanced-search": "Búsqueda avanzada",
@ -866,14 +883,15 @@
"you-are-offline-description": "No todas las características están disponibles mientras esté fuera de línea. Todavía puedes añadir, modificar y eliminar elementos, pero no podrá sincronizar sus cambios en el servidor hasta que vuelva a estar en línea.", "you-are-offline-description": "No todas las características están disponibles mientras esté fuera de línea. Todavía puedes añadir, modificar y eliminar elementos, pero no podrá sincronizar sus cambios en el servidor hasta que vuelva a estar en línea.",
"are-you-sure-you-want-to-check-all-items": "¿Seguro que quieres seleccionar todos los elementos?", "are-you-sure-you-want-to-check-all-items": "¿Seguro que quieres seleccionar todos los elementos?",
"are-you-sure-you-want-to-uncheck-all-items": "¿Seguro que quieres de-seleccionar todos los elementos?", "are-you-sure-you-want-to-uncheck-all-items": "¿Seguro que quieres de-seleccionar todos los elementos?",
"are-you-sure-you-want-to-delete-checked-items": "¿Está seguro que deseas eliminar los elementos seleccionados?" "are-you-sure-you-want-to-delete-checked-items": "¿Está seguro que deseas eliminar los elementos seleccionados?",
"no-shopping-lists-found": "No hay listas de la compra"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Recetas", "all-recipes": "Recetas",
"backups": "Copias de Seguridad", "backups": "Copias de Seguridad",
"categories": "Categorías", "categories": "Categorías",
"cookbooks": "Recetarios", "cookbooks": "Recetarios",
"dashboard": "Consola", "dashboard": "Panel de control",
"home-page": "Inicio", "home-page": "Inicio",
"manage-users": "Usuarios", "manage-users": "Usuarios",
"migrations": "Migraciones", "migrations": "Migraciones",
@ -1278,6 +1296,7 @@
"profile": { "profile": {
"welcome-user": "👋 ¡Bienvenido, {0}!", "welcome-user": "👋 ¡Bienvenido, {0}!",
"description": "Administra tu perfil, recetas y ajustes de grupo.", "description": "Administra tu perfil, recetas y ajustes de grupo.",
"invite-link": "Link de invitación",
"get-invite-link": "Obtener enlace de invitación", "get-invite-link": "Obtener enlace de invitación",
"get-public-link": "Obtener enlace público", "get-public-link": "Obtener enlace público",
"account-summary": "Información de la cuenta", "account-summary": "Información de la cuenta",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Recetarios", "cookbooks": "Recetarios",
"description": "Los recetarios son otra forma de organizar recetas creando secciones cruzadas de recetas y etiquetas. Crear un recetario añadirá una entrada a la barra lateral y todas las recetas con las etiquetas y categorías elegidas se mostrarán en el recetario.", "description": "Los recetarios son otra forma de organizar recetas creando secciones cruzadas de recetas y etiquetas. Crear un recetario añadirá una entrada a la barra lateral y todas las recetas con las etiquetas y categorías elegidas se mostrarán en el recetario.",
"hide-cookbooks-from-other-households": "Ocultar libros de cocina de otros grupos/hogares",
"hide-cookbooks-from-other-households-description": "Cuando esté habilitado, sólo los libros de cocina de su hogar aparecerán en la barra lateral",
"public-cookbook": "Recetario público", "public-cookbook": "Recetario público",
"public-cookbook-description": "Los recetarios públicos se pueden compartir con usuarios externos y se mostrarán en su página de grupos.", "public-cookbook-description": "Los recetarios públicos se pueden compartir con usuarios externos y se mostrarán en su página de grupos.",
"filter-options": "Opciones de filtro", "filter-options": "Opciones de filtro",

File diff suppressed because it is too large Load diff

View file

@ -23,7 +23,7 @@
"support": "Tuki", "support": "Tuki",
"version": "Versio", "version": "Versio",
"unknown-version": "tuntematon", "unknown-version": "tuntematon",
"sponsor": "Yhteistyökumppani" "sponsor": "Sponsori"
}, },
"asset": { "asset": {
"assets": "Liitteet", "assets": "Liitteet",
@ -72,7 +72,7 @@
"enable-notifier": "Ota ilmoittaja käyttöön", "enable-notifier": "Ota ilmoittaja käyttöön",
"what-events": "Mistä tapahtumista tulisi ilmoittaa?", "what-events": "Mistä tapahtumista tulisi ilmoittaa?",
"user-events": "Käyttäjän tapahtumat", "user-events": "Käyttäjän tapahtumat",
"mealplan-events": "Ateriasuunnittelun tapahtumat", "mealplan-events": "Ateriasuunnitelman Tapahtumat",
"when-a-user-in-your-group-creates-a-new-mealplan": "Kun ryhmäsi käyttäjä tekee ateriasuunnitelman", "when-a-user-in-your-group-creates-a-new-mealplan": "Kun ryhmäsi käyttäjä tekee ateriasuunnitelman",
"shopping-list-events": "Ostoslistatapahtumat", "shopping-list-events": "Ostoslistatapahtumat",
"cookbook-events": "Keittokirjatapahtumat", "cookbook-events": "Keittokirjatapahtumat",
@ -182,7 +182,7 @@
"date": "Päivämäärä", "date": "Päivämäärä",
"id": "Id", "id": "Id",
"owner": "Omistaja", "owner": "Omistaja",
"change-owner": "Change Owner", "change-owner": "Vaihda Omistajaa",
"date-added": "Lisätty", "date-added": "Lisätty",
"none": "Tyhjä", "none": "Tyhjä",
"run": "Suorita", "run": "Suorita",
@ -214,10 +214,10 @@
"confirm-delete-generic-items": "Haluatko varmasti poistaa seuraavat kohteet?", "confirm-delete-generic-items": "Haluatko varmasti poistaa seuraavat kohteet?",
"organizers": "Järjestäjät", "organizers": "Järjestäjät",
"caution": "Huomio", "caution": "Huomio",
"show-advanced": "Show Advanced", "show-advanced": "Näytä Lisäasetukset",
"add-field": "Add Field", "add-field": "Lisää Kenttä",
"date-created": "Date Created", "date-created": "Luontipäivä",
"date-updated": "Date Updated" "date-updated": "Päivitetty"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Haluatko varmasti poistaa ryhmän <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Haluatko varmasti poistaa ryhmän <b>{groupName}<b/>?",
@ -246,14 +246,14 @@
"manage-members": "Hallitse jäseniä", "manage-members": "Hallitse jäseniä",
"manage-members-description": "Hallitse kotitaloutesi jäsenten oikeuksia. {manage} antaa jäsenelle pääsyn tietojenkäsittelysivulle, ja {invite} antaa käyttäjän luoda kutsulinkkejä muille käyttäjille. Ryhmien omistajat eivät voi muuttaa omia oikeuksiaan.", "manage-members-description": "Hallitse kotitaloutesi jäsenten oikeuksia. {manage} antaa jäsenelle pääsyn tietojenkäsittelysivulle, ja {invite} antaa käyttäjän luoda kutsulinkkejä muille käyttäjille. Ryhmien omistajat eivät voi muuttaa omia oikeuksiaan.",
"manage": "Hallitse", "manage": "Hallitse",
"manage-household": "Manage Household", "manage-household": "Hallitse Kotitalouksia",
"invite": "Kutsu", "invite": "Kutsu",
"looking-to-update-your-profile": "Haluatko päivittää käyttäjäsivusi?", "looking-to-update-your-profile": "Haluatko päivittää käyttäjäsivusi?",
"default-recipe-preferences-description": "Nämä ovat reseptin oletusasetukset. Näitä voi muuttaa yksittäisille resepteille reseptin asetuksissa.", "default-recipe-preferences-description": "Nämä ovat reseptin oletusasetukset. Näitä voi muuttaa yksittäisille resepteille reseptin asetuksissa.",
"default-recipe-preferences": "Oletusreseptiasetukset", "default-recipe-preferences": "Oletusreseptiasetukset",
"group-preferences": "Ryhmän oletusasetukset", "group-preferences": "Ryhmän oletusasetukset",
"private-group": "Yksityinen ryhmä", "private-group": "Yksityinen ryhmä",
"private-group-description": "Setting your group to private will disable all public view options. This overrides any individual public view settings", "private-group-description": "Ryhmän asettaminen yksityiseksi poistaa kaikki julkiset näkymävaihtoehdot käytöstä. Tämä kumoaa kaikki yksittäiset julkisen näkymän asetukset",
"enable-public-access": "Salli julkinen käyttö", "enable-public-access": "Salli julkinen käyttö",
"enable-public-access-description": "Julkista ryhmän reseptit automaattisesti ja anna vierailijoiden nähdä reseptit kirjautumatta sisään", "enable-public-access-description": "Julkista ryhmän reseptit automaattisesti ja anna vierailijoiden nähdä reseptit kirjautumatta sisään",
"allow-users-outside-of-your-group-to-see-your-recipes": "Anna muiden kuin ryhmäsi jäsenten nähdä reseptisi", "allow-users-outside-of-your-group-to-see-your-recipes": "Anna muiden kuin ryhmäsi jäsenten nähdä reseptisi",
@ -276,7 +276,8 @@
"admin-group-management": "Ylläpitoryhmien hallinta", "admin-group-management": "Ylläpitoryhmien hallinta",
"admin-group-management-text": "Muutokset tähän ryhmään tulevat näkymään välittömästi.", "admin-group-management-text": "Muutokset tähän ryhmään tulevat näkymään välittömästi.",
"group-id-value": "Ryhmän tunniste: {0}", "group-id-value": "Ryhmän tunniste: {0}",
"total-households": "Kotitaloudet Yhteensä" "total-households": "Kotitaloudet Yhteensä",
"you-must-select-a-group-before-selecting-a-household": "Sinun tulee valita ryhmä ennen kuin valitset kotitalouden"
}, },
"household": { "household": {
"household": "Kotitalous", "household": "Kotitalous",
@ -291,9 +292,9 @@
"admin-household-management-text": "Muutokset tähän kotitalouteen astuvat välittömästi voimaan.", "admin-household-management-text": "Muutokset tähän kotitalouteen astuvat välittömästi voimaan.",
"household-id-value": "Kotitalouden tunniste: {0}", "household-id-value": "Kotitalouden tunniste: {0}",
"private-household": "Yksityinen Kotitalous", "private-household": "Yksityinen Kotitalous",
"private-household-description": "Setting your household to private will disable all public view options. This overrides any individual public view settings", "private-household-description": "Kotitalouden asettaminen yksityiseksi poistaa kaikki julkiset näkymävaihtoehdot käytöstä. Tämä kumoaa kaikki yksittäiset julkisen näkymän asetukset",
"lock-recipe-edits-from-other-households": "Lock recipe edits from other households", "lock-recipe-edits-from-other-households": "Lukitse reseptimuokkaukset muilta kotitalouksilta",
"lock-recipe-edits-from-other-households-description": "When enabled only users in your household can edit recipes created by your household", "lock-recipe-edits-from-other-households-description": "Kun tämä on käytössä, vain kotitaloutesi käyttäjät voivat muokata kotitaloutesi luomia reseptejä.",
"household-recipe-preferences": "Kotitalouksien reseptiasetukset", "household-recipe-preferences": "Kotitalouksien reseptiasetukset",
"default-recipe-preferences-description": "Tässä on kotitaloutesi uuden reseptin oletusasetukset. Näitä voi muuttaa yksittäisten reseptien osalta reseptin asetuksissa.", "default-recipe-preferences-description": "Tässä on kotitaloutesi uuden reseptin oletusasetukset. Näitä voi muuttaa yksittäisten reseptien osalta reseptin asetuksissa.",
"allow-users-outside-of-your-household-to-see-your-recipes": "Salli kotitalouden ulkopuolisten käyttäjien nähdä reseptit", "allow-users-outside-of-your-household-to-see-your-recipes": "Salli kotitalouden ulkopuolisten käyttäjien nähdä reseptit",
@ -320,13 +321,13 @@
"mealplan-settings": "Ateriasuunnitelman asetukset", "mealplan-settings": "Ateriasuunnitelman asetukset",
"mealplan-update-failed": "Ateriasuunnitelman päivittäminen epäonnistui", "mealplan-update-failed": "Ateriasuunnitelman päivittäminen epäonnistui",
"mealplan-updated": "Ateriasuunnitelma päivitetty", "mealplan-updated": "Ateriasuunnitelma päivitetty",
"mealplan-households-description": "If no household is selected, recipes can be added from any household", "mealplan-households-description": "Jos mitään kotitaloutta ei ole valittu, reseptejä voidaan lisätä mistä tahansa kotitaloudesta.",
"any-category": "Any Category", "any-category": "Mikä tahansa kategoria",
"any-tag": "Any Tag", "any-tag": "Mikä tahansa tagi",
"any-household": "Any Household", "any-household": "Mikä tahansa kotitalous",
"no-meal-plan-defined-yet": "Ateriasuunnitelmaa ei ole vielä määritelty", "no-meal-plan-defined-yet": "Ateriasuunnitelmaa ei ole vielä määritelty",
"no-meal-planned-for-today": "Ei ateriasuunnitelmaa tälle päivälle", "no-meal-planned-for-today": "Ei ateriasuunnitelmaa tälle päivälle",
"numberOfDays-hint": "Number of days on page load", "numberOfDays-hint": "Sivun latauspäivien lukumäärä",
"numberOfDays-label": "Oletuspäivät", "numberOfDays-label": "Oletuspäivät",
"only-recipes-with-these-categories-will-be-used-in-meal-plans": "Vain näiden luokkien reseptejä käytetään ateriasuunnitelmissa", "only-recipes-with-these-categories-will-be-used-in-meal-plans": "Vain näiden luokkien reseptejä käytetään ateriasuunnitelmissa",
"planner": "Suunnittelija", "planner": "Suunnittelija",
@ -356,7 +357,7 @@
"for-type-meal-types": "kaikille {0} ateriatyypeille", "for-type-meal-types": "kaikille {0} ateriatyypeille",
"meal-plan-rules": "Ateriasuunnitelman määritykset", "meal-plan-rules": "Ateriasuunnitelman määritykset",
"new-rule": "Uusi sääntö", "new-rule": "Uusi sääntö",
"meal-plan-rules-description": "You can create rules for auto selecting recipes for your meal plans. These rules are used by the server to determine the random pool of recipes to select from when creating meal plans. Note that if rules have the same day/type constraints then the rule filters will be merged. In practice, it's unnecessary to create duplicate rules, but it's possible to do so.", "meal-plan-rules-description": "Voit luoda sääntöjä reseptien automaattista valitsemista varten ateriasuunnitelmiin. Palvelin käyttää näitä sääntöjä määrittääkseen satunnaisen reseptijoukon, josta reseptit valitaan ateriasuunnitelmia luotaessa. Huomaa, että jos säännöillä on samat päivä/tyyppirajoitukset, sääntösuodattimet yhdistetään. Käytännössä päällekkäisten sääntöjen luominen on tarpeetonta, mutta se on mahdollista.",
"new-rule-description": "Kun luot uuden säännön ateriasuunnitelmalle, voit rajoittaa säännön koskemaan tiettyä viikonpäivää ja/tai tietyntyyppistä ateriaa. Jos haluat soveltaa sääntöä kaikkiin päiviin tai kaikkiin ateriatyyppeihin, voit asettaa säännön asetukseksi \"Mikä tahansa\", jolloin sitä sovelletaan kaikkiin mahdollisiin päivän ja/tai ateriatyypin arvoihin.", "new-rule-description": "Kun luot uuden säännön ateriasuunnitelmalle, voit rajoittaa säännön koskemaan tiettyä viikonpäivää ja/tai tietyntyyppistä ateriaa. Jos haluat soveltaa sääntöä kaikkiin päiviin tai kaikkiin ateriatyyppeihin, voit asettaa säännön asetukseksi \"Mikä tahansa\", jolloin sitä sovelletaan kaikkiin mahdollisiin päivän ja/tai ateriatyypin arvoihin.",
"recipe-rules": "Reseptimääritykset", "recipe-rules": "Reseptimääritykset",
"applies-to-all-days": "Sovelletaan kaikkiin päiviin", "applies-to-all-days": "Sovelletaan kaikkiin päiviin",
@ -431,7 +432,7 @@
"paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Liitä reseptitiedot. Joka riviä kohdellaan luettelon kohteena", "paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Liitä reseptitiedot. Joka riviä kohdellaan luettelon kohteena",
"recipe-markup-specification": "Reseptin merkkimääritys", "recipe-markup-specification": "Reseptin merkkimääritys",
"recipe-url": "Reseptin URL", "recipe-url": "Reseptin URL",
"recipe-html-or-json": "Recipe HTML or JSON", "recipe-html-or-json": "Resepti HTML tai JSON",
"upload-a-recipe": "Lataa resepti", "upload-a-recipe": "Lataa resepti",
"upload-individual-zip-file": "Tuo yksittäinen pakattu kansio toisesta Mealie-ilmeentymästä.", "upload-individual-zip-file": "Tuo yksittäinen pakattu kansio toisesta Mealie-ilmeentymästä.",
"url-form-hint": "Liitä linkki lempireseptiverkkosivultasi", "url-form-hint": "Liitä linkki lempireseptiverkkosivultasi",
@ -466,7 +467,7 @@
"calories-suffix": "kaloria", "calories-suffix": "kaloria",
"carbohydrate-content": "Hiilihydraatti", "carbohydrate-content": "Hiilihydraatti",
"categories": "Kategoriat", "categories": "Kategoriat",
"cholesterol-content": "Cholesterol", "cholesterol-content": "Kolesteroli",
"comment-action": "Kommentit", "comment-action": "Kommentit",
"comment": "Kommentti", "comment": "Kommentti",
"comments": "Kommentit", "comments": "Kommentit",
@ -513,10 +514,11 @@
"recipe-updated": "Resepti päivitetty", "recipe-updated": "Resepti päivitetty",
"remove-from-favorites": "Poista suosikeista", "remove-from-favorites": "Poista suosikeista",
"remove-section": "Poista osio", "remove-section": "Poista osio",
"saturated-fat-content": "Saturated fat", "saturated-fat-content": "Tyydyttynyt rasva",
"save-recipe-before-use": "Tallenna resepti ennen käyttöä", "save-recipe-before-use": "Tallenna resepti ennen käyttöä",
"section-title": "Osion otsikko", "section-title": "Osion otsikko",
"servings": "Annokset", "servings": "Annokset",
"serves-amount": "{amount} annosta",
"share-recipe-message": "Halusin jakaa reseptin {0} kanssasi.", "share-recipe-message": "Halusin jakaa reseptin {0} kanssasi.",
"show-nutrition-values": "Näytä ravintoarvot", "show-nutrition-values": "Näytä ravintoarvot",
"sodium-content": "Natrium", "sodium-content": "Natrium",
@ -524,13 +526,13 @@
"sugar-content": "Sokeri", "sugar-content": "Sokeri",
"title": "Otsikko", "title": "Otsikko",
"total-time": "Kokonaisaika", "total-time": "Kokonaisaika",
"trans-fat-content": "Trans-fat", "trans-fat-content": "Transrasva",
"unable-to-delete-recipe": "Reseptiä ei voida poistaa", "unable-to-delete-recipe": "Reseptiä ei voida poistaa",
"unsaturated-fat-content": "Unsaturated fat", "unsaturated-fat-content": "Tyydyttymätön rasva",
"no-recipe": "Ei reseptiä", "no-recipe": "Ei reseptiä",
"locked-by-owner": "Omistajan lukitsema", "locked-by-owner": "Omistajan lukitsema",
"join-the-conversation": "Liity keskusteluun", "join-the-conversation": "Liity keskusteluun",
"add-recipe-to-mealplan": "Lisää resepti ateriasuunnitelmaan", "add-recipe-to-mealplan": "Lisää resepti Ateriasuunnitelmaan",
"entry-type": "Merkinnän tyyppi", "entry-type": "Merkinnän tyyppi",
"date-format-hint": "KK/PP/VVVV-muoto", "date-format-hint": "KK/PP/VVVV-muoto",
"date-format-hint-yyyy-mm-dd": "VVVV-KK-PP-muoto", "date-format-hint-yyyy-mm-dd": "VVVV-KK-PP-muoto",
@ -544,7 +546,9 @@
"failed-to-add-recipes-to-list": "Luetteloon lisääminen epäonnistui", "failed-to-add-recipes-to-list": "Luetteloon lisääminen epäonnistui",
"failed-to-add-recipe-to-mealplan": "Reseptiä ei voitu lisätä ateriasuunnitelmaan", "failed-to-add-recipe-to-mealplan": "Reseptiä ei voitu lisätä ateriasuunnitelmaan",
"failed-to-add-to-list": "Luetteloon lisääminen epäonnistui", "failed-to-add-to-list": "Luetteloon lisääminen epäonnistui",
"yield": "Sato", "yield": "Tuotto",
"yields-amount-with-text": "Tuottaa {amount} {text}",
"yield-text": "Tuotosteksti",
"quantity": "Määrä", "quantity": "Määrä",
"choose-unit": "Valitse Yksikkö", "choose-unit": "Valitse Yksikkö",
"press-enter-to-create": "Luo painamalla Enter", "press-enter-to-create": "Luo painamalla Enter",
@ -566,13 +570,6 @@
"increase-scale-label": "Suurenna mittakaavaa yhdellä", "increase-scale-label": "Suurenna mittakaavaa yhdellä",
"locked": "Lukittu", "locked": "Lukittu",
"public-link": "Julkinen Linkki", "public-link": "Julkinen Linkki",
"timer": {
"kitchen-timer": "Munakello",
"start-timer": "Käynnistä ajastin",
"pause-timer": "Keskeytä ajastin",
"resume-timer": "Jatka ajastusta",
"stop-timer": "Pysäytä ajastin"
},
"edit-timeline-event": "Muokkaa Aikajanan Tapahtumaa", "edit-timeline-event": "Muokkaa Aikajanan Tapahtumaa",
"timeline": "Aikajana", "timeline": "Aikajana",
"timeline-is-empty": "Aikajana on tyhjä. Tee resepti.", "timeline-is-empty": "Aikajana on tyhjä. Tee resepti.",
@ -614,16 +611,16 @@
"scrape-recipe-description": "Kaappaa resepti urlin avulla. Anna sen reseptin url-osoite, jonka haluat kaapata, ja Mealie yrittää kaapata reseptin kyseiseltä sivustolta ja lisätä sen kokoelmaasi.", "scrape-recipe-description": "Kaappaa resepti urlin avulla. Anna sen reseptin url-osoite, jonka haluat kaapata, ja Mealie yrittää kaapata reseptin kyseiseltä sivustolta ja lisätä sen kokoelmaasi.",
"scrape-recipe-have-a-lot-of-recipes": "Haluatko kerätä useamman reseptin kerralla?", "scrape-recipe-have-a-lot-of-recipes": "Haluatko kerätä useamman reseptin kerralla?",
"scrape-recipe-suggest-bulk-importer": "Kokeile massasiirtotyökalua", "scrape-recipe-suggest-bulk-importer": "Kokeile massasiirtotyökalua",
"scrape-recipe-have-raw-html-or-json-data": "Have raw HTML or JSON data?", "scrape-recipe-have-raw-html-or-json-data": "Onko sinulla raakaa HTML- tai JSON-dataa?",
"scrape-recipe-you-can-import-from-raw-data-directly": "You can import from raw data directly", "scrape-recipe-you-can-import-from-raw-data-directly": "Voit tuoda raakadatan suoraan",
"import-original-keywords-as-tags": "Tuo alkuperäiset avainsanat tunnisteiksi", "import-original-keywords-as-tags": "Tuo alkuperäiset avainsanat tunnisteiksi",
"stay-in-edit-mode": "Pysy muokkaustilassa", "stay-in-edit-mode": "Pysy muokkaustilassa",
"import-from-zip": "Tuo zip-arkistosta", "import-from-zip": "Tuo zip-arkistosta",
"import-from-zip-description": "Tuo yksi resepti, joka on viety toisesta Mealie-asennuksesta.", "import-from-zip-description": "Tuo yksi resepti, joka on viety toisesta Mealie-asennuksesta.",
"import-from-html-or-json": "Import from HTML or JSON", "import-from-html-or-json": "Tuo HTML- tai JSON-tiedostosta",
"import-from-html-or-json-description": "Import a single recipe from raw HTML or JSON. This is useful if you have a recipe from a site that Mealie can't scrape normally, or from some other external source.", "import-from-html-or-json-description": "Tuo yksittäinen resepti raa'asta HTML- tai JSON-tiedostosta. Tämä on hyödyllistä, jos sinulla on resepti sivustolta, jota Mealie ei voi kaapata normaalisti, tai jostain muusta ulkoisesta lähteestä.",
"json-import-format-description-colon": "To import via JSON, it must be in valid format:", "json-import-format-description-colon": "Jos haluat tuoda JSON-muodossa, sen on oltava kelvollisessa muodossa:",
"json-editor": "JSON Editor", "json-editor": "JSON-muokkain",
"zip-files-must-have-been-exported-from-mealie": ".zip-tiedostot on täytynyt viedä Mealiesta", "zip-files-must-have-been-exported-from-mealie": ".zip-tiedostot on täytynyt viedä Mealiesta",
"create-a-recipe-by-uploading-a-scan": "Luo resepti lataamalla skannaus.", "create-a-recipe-by-uploading-a-scan": "Luo resepti lataamalla skannaus.",
"upload-a-png-image-from-a-recipe-book": "Lataa png- kuva reseptikirjasta", "upload-a-png-image-from-a-recipe-book": "Lataa png- kuva reseptikirjasta",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Käytä OpenAI:ta kaavinkirjaston sijaan tulosten jäsentämiseen. Luodessa reseptiä URL:n kautta tämä tehdään ilman eri kysymystä, kun kaavinkirjasto ei toimi, mutta voit kokeilla sitä tässä manuaalisesti.", "recipe-debugger-use-openai-description": "Käytä OpenAI:ta kaavinkirjaston sijaan tulosten jäsentämiseen. Luodessa reseptiä URL:n kautta tämä tehdään ilman eri kysymystä, kun kaavinkirjasto ei toimi, mutta voit kokeilla sitä tässä manuaalisesti.",
"debug": "Vianhaku", "debug": "Vianhaku",
"tree-view": "Puunäkymä", "tree-view": "Puunäkymä",
"recipe-yield": "Reseptin tekijä", "recipe-servings": "Reseptin annokset",
"recipe-yield": "Reseptin tuotto",
"recipe-yield-text": "Reseptin tuotosteksti",
"unit": "Yksikkö", "unit": "Yksikkö",
"upload-image": "Lataa kuva", "upload-image": "Lataa kuva",
"screen-awake": "Pidä näyttö aina päällä", "screen-awake": "Pidä näyttö aina päällä",
@ -662,7 +661,25 @@
"missing-food": "Luo puuttuva ruoka: {food}", "missing-food": "Luo puuttuva ruoka: {food}",
"no-food": "Ei ruokaa" "no-food": "Ei ruokaa"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Palauta Annoksien Määrä",
"not-linked-ingredients": "Muut ainesosat"
},
"recipe-finder": {
"recipe-finder": "Reseptin etsijä",
"recipe-finder-description": "Etsi sopivia reseptejä saatavilla olevien ainesosien perusteella. Voit myös suodattaa tulokset saatavilla olevien ruoanvalmistusvälineiden perusteella, ja asettaa enimmäismäärän puuttuvia ainesosia tai välineitä.",
"selected-ingredients": "Valitut ainesosat",
"no-ingredients-selected": "Ei valittuja ainesosia",
"missing": "Puuttuu",
"no-recipes-found": "Reseptejä ei löytynyt",
"no-recipes-found-description": "Kokeile lisätä enemmän ainesosia hakuun tai säätää suodattimia",
"include-ingredients-on-hand": "Sisällytä saatavilla olevat ainesosat",
"include-tools-on-hand": "Sisällytä saatavilla olevat välineet",
"max-missing-ingredients": "Puuttuvien ainesten enimmäismäärä",
"max-missing-tools": "Puuttuvien välineiden enimmäismäärä",
"selected-tools": "Valitut välineet",
"other-filters": "Muut suodattimet",
"ready-to-make": "Valmis tekemään",
"almost-ready-to-make": "Melkein valmis tekemään"
}, },
"search": { "search": {
"advanced-search": "Tarkennettu haku", "advanced-search": "Tarkennettu haku",
@ -673,7 +690,7 @@
"or": "Tai", "or": "Tai",
"has-any": "On Mikä Tahansa", "has-any": "On Mikä Tahansa",
"has-all": "On Kaikki", "has-all": "On Kaikki",
"clear-selection": "Clear Selection", "clear-selection": "Tyhjennä valinnat",
"results": "Tulokset", "results": "Tulokset",
"search": "Hae", "search": "Hae",
"search-mealie": "Hae Mealiestä (paina /)", "search-mealie": "Hae Mealiestä (paina /)",
@ -866,7 +883,8 @@
"you-are-offline-description": "Kaikki ominaisuudet eivät ole ilman yhteyttä saatavina. Voit silti lisätä, muokata ja poistaa kohteita, muttet voi synkronoida muutoksia palvelimelle ilman yhteyttä.", "you-are-offline-description": "Kaikki ominaisuudet eivät ole ilman yhteyttä saatavina. Voit silti lisätä, muokata ja poistaa kohteita, muttet voi synkronoida muutoksia palvelimelle ilman yhteyttä.",
"are-you-sure-you-want-to-check-all-items": "Haluatko varmasti valita kaikki kohteet?", "are-you-sure-you-want-to-check-all-items": "Haluatko varmasti valita kaikki kohteet?",
"are-you-sure-you-want-to-uncheck-all-items": "Haluatko varmasti poistaa kaikki valinnat?", "are-you-sure-you-want-to-uncheck-all-items": "Haluatko varmasti poistaa kaikki valinnat?",
"are-you-sure-you-want-to-delete-checked-items": "Haluatko varmasti poistaa kaikki valitut kohteet?" "are-you-sure-you-want-to-delete-checked-items": "Haluatko varmasti poistaa kaikki valitut kohteet?",
"no-shopping-lists-found": "Ostoslistoja ei löytynyt"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Reseptit", "all-recipes": "Reseptit",
@ -963,7 +981,7 @@
"register": "Rekisteröidy", "register": "Rekisteröidy",
"reset-password": "Palauta salasana", "reset-password": "Palauta salasana",
"sign-in": "Kirjaudu", "sign-in": "Kirjaudu",
"total-mealplans": "Ateriasuunnitelmia", "total-mealplans": "Ateriasuunnitelma Yhteensä",
"total-users": "Käyttäjien määrä", "total-users": "Käyttäjien määrä",
"upload-photo": "Tuo kuva", "upload-photo": "Tuo kuva",
"use-8-characters-or-more-for-your-password": "Salasanan pituuden on oltava vähintään kahdeksan merkkiä", "use-8-characters-or-more-for-your-password": "Salasanan pituuden on oltava vähintään kahdeksan merkkiä",
@ -1012,7 +1030,7 @@
"administrator": "Ylläpitäjä", "administrator": "Ylläpitäjä",
"user-can-invite-other-to-group": "Käyttäjä voi kutsua muita ryhmään", "user-can-invite-other-to-group": "Käyttäjä voi kutsua muita ryhmään",
"user-can-manage-group": "Käyttäjä voi hallita ryhmää", "user-can-manage-group": "Käyttäjä voi hallita ryhmää",
"user-can-manage-household": "User can manage household", "user-can-manage-household": "Käyttäjä voi hallita kotitaloutta",
"user-can-organize-group-data": "Käyttäjä voi järjestellä ryhmän tietoja", "user-can-organize-group-data": "Käyttäjä voi järjestellä ryhmän tietoja",
"enable-advanced-features": "Salli edistyneemmät ominaisuudet", "enable-advanced-features": "Salli edistyneemmät ominaisuudet",
"it-looks-like-this-is-your-first-time-logging-in": "Tämä vaikuttaa olevan ensimmäinen kirjautumisesi.", "it-looks-like-this-is-your-first-time-logging-in": "Tämä vaikuttaa olevan ensimmäinen kirjautumisesi.",
@ -1195,7 +1213,7 @@
"result": "Valittu teksti tulee näkymään aiemmin valitun kentän sisällä." "result": "Valittu teksti tulee näkymään aiemmin valitun kentän sisällä."
}, },
"pan-and-zoom-mode": "Kääntö- ja zoomaustila", "pan-and-zoom-mode": "Kääntö- ja zoomaustila",
"pan-and-zoom-desc": "Select pan and zoom by clicking the icon. This mode allows to zoom inside the image and move around to make using big images easier.", "pan-and-zoom-desc": "Valitse panorointi ja zoomaus klikkaamalla kuvaketta. Tämä tila mahdollistaa zoomauksen kuvan sisällä ja liikkumisen niin, että isojen kuvien käyttö on helpompaa.",
"split-text-mode": "Jaa tekstitila", "split-text-mode": "Jaa tekstitila",
"split-modes": { "split-modes": {
"line-mode": "Rivitila (oletus)", "line-mode": "Rivitila (oletus)",
@ -1214,37 +1232,37 @@
"summary-title": "Yhteenveto", "summary-title": "Yhteenveto",
"button-label-get-summary": "Hae Yhteenveto", "button-label-get-summary": "Hae Yhteenveto",
"button-label-open-details": "Tiedot", "button-label-open-details": "Tiedot",
"info-description-data-dir-size": "Datahakemiston Koko", "info-description-data-dir-size": "Datahakemiston koko",
"info-description-log-file-size": "Lokitiedoston Koko", "info-description-log-file-size": "Lokitiedoston Koko",
"info-description-cleanable-directories": "Siivottavat Hakemistot", "info-description-cleanable-directories": "Siivottavat hakemistot",
"info-description-cleanable-images": "Siivottavat Kuvat", "info-description-cleanable-images": "Siivottavat kuvat",
"storage": { "storage": {
"title-temporary-directory": "Väliaikainen Hakemisto (.temp)", "title-temporary-directory": "Väliaikainen hakemisto (.temp)",
"title-backups-directory": "Varmuuskopiointihakemisto (varmuuskopiot)", "title-backups-directory": "Varmuuskopiointihakemisto (varmuuskopiot)",
"title-groups-directory": "Ryhmien Hakemisto (ryhmät)", "title-groups-directory": "Ryhmien hakemisto (ryhmät)",
"title-recipes-directory": "Reseptihakemisto (reseptit)", "title-recipes-directory": "Reseptihakemisto (reseptit)",
"title-user-directory": "Käyttäjähakemisto (käyttäjä)" "title-user-directory": "Käyttäjähakemisto (käyttäjä)"
}, },
"action-delete-log-files-name": "Poista Lokitiedostot", "action-delete-log-files-name": "Poista Lokitiedostot",
"action-delete-log-files-description": "Poistaa kaikki lokitiedostot", "action-delete-log-files-description": "Poistaa kaikki lokitiedostot",
"action-clean-directories-name": "Puhdista Hakemistot", "action-clean-directories-name": "Puhdista hakemistot",
"action-clean-directories-description": "Poistaa kaikki reseptikansiot, jotka eivät ole kelvollisia UUID-koodeja", "action-clean-directories-description": "Poistaa kaikki reseptikansiot, jotka eivät ole kelvollisia UUID-koodeja",
"action-clean-temporary-files-name": "Poista väliaikaiset tiedostot", "action-clean-temporary-files-name": "Poista väliaikaiset tiedostot",
"action-clean-temporary-files-description": "Poistaa kaikki tiedostot ja kansiot .temp kansiosta", "action-clean-temporary-files-description": "Poistaa kaikki tiedostot ja kansiot .temp kansiosta",
"action-clean-images-name": "Puhdista Kuvat", "action-clean-images-name": "Puhdista kuvat",
"action-clean-images-description": "Poistaa kaikki kuvat, jotka eivät pääty .webp", "action-clean-images-description": "Poistaa kaikki kuvat, jotka eivät pääty .webp",
"actions-description": "Maintenance actions are {destructive_in_bold} and should be used with caution. Performing any of these actions is {irreversible_in_bold}.", "actions-description": "Huoltotoimenpiteet ovat {destructive_in_bold} ja niitä tulisi käyttää varoen. Kaikkien näiden toimenpiteiden suorittaminen on {irreversible_in_bold}.",
"actions-description-destructive": "lopullinen", "actions-description-destructive": "tuhoisia",
"actions-description-irreversible": "peruuttamaton", "actions-description-irreversible": "peruuttamatonta",
"logs-action-refresh": "Päivitä lokit", "logs-action-refresh": "Päivitä lokit",
"logs-page-title": "Mealie- Lokit", "logs-page-title": "Mealie- Lokit",
"logs-tail-lines-label": "Tail Lines" "logs-tail-lines-label": "Loppurivit"
}, },
"mainentance": { "mainentance": {
"actions-title": "Toiminnot" "actions-title": "Toiminnot"
}, },
"ingredients-natural-language-processor": "Ingredients Natural Language Processor", "ingredients-natural-language-processor": "Ingredients Natural Language Processor",
"ingredients-natural-language-processor-explanation": "Mealie uses Conditional Random Fields (CRFs) for parsing and processing ingredients. The model used for ingredients is based off a data set of over 100,000 ingredients from a dataset compiled by the New York Times. Note that as the model is trained in English only, you may have varied results when using the model in other languages. This page is a playground for testing the model.", "ingredients-natural-language-processor-explanation": "Mealie käyttää Conditional Random Fields (CRF) ainesosien jäsentämiseen ja prosessointiin. Ainesosien osalta käytetty malli perustuu yli 100000 ainesosan aineistoon New York Timesin kokoamasta aineistosta. Huomaa, että koska malli on koulutettu vain englanniksi, mallilla voi olla vaihtelevia tuloksia, kun käytät mallia muilla kielillä. Tämä sivu on mallin testaamiseen tarkoitettu leikkipaikka.",
"ingredients-natural-language-processor-explanation-2": "Se ei ole täydellinen, mutta se tuottaa hyviä tuloksia yleensä ja on hyvä lähtökohta manuaalisesti jäsentää ainesosia yksittäisiin kenttiin. Vaihtoehtoisesti voit myös käyttää Brute-prosessori, joka käyttää kuvion täsmäystekniikkaa tunnistamaan ainesosia.", "ingredients-natural-language-processor-explanation-2": "Se ei ole täydellinen, mutta se tuottaa hyviä tuloksia yleensä ja on hyvä lähtökohta manuaalisesti jäsentää ainesosia yksittäisiin kenttiin. Vaihtoehtoisesti voit myös käyttää Brute-prosessori, joka käyttää kuvion täsmäystekniikkaa tunnistamaan ainesosia.",
"nlp": "NLP", "nlp": "NLP",
"brute": "Brute", "brute": "Brute",
@ -1261,23 +1279,24 @@
"setup": { "setup": {
"first-time-setup": "Ensiasetukset", "first-time-setup": "Ensiasetukset",
"welcome-to-mealie-get-started": "Tervetuloa Mealieen! Aloitetaan", "welcome-to-mealie-get-started": "Tervetuloa Mealieen! Aloitetaan",
"already-set-up-bring-to-homepage": "I'm already set up, just bring me to the homepage", "already-set-up-bring-to-homepage": "Olen jo valmis, vie minut kotisivulle",
"common-settings-for-new-sites": "Here are some common settings for new sites", "common-settings-for-new-sites": "Tässä muutamia yleisiä asetuksia uusille sivustoille",
"setup-complete": "Setup Complete!", "setup-complete": "Asennus valmis.",
"here-are-a-few-things-to-help-you-get-started": "Näillä muutamilla asioilla pääset alkuun", "here-are-a-few-things-to-help-you-get-started": "Näillä muutamilla asioilla pääset alkuun",
"restore-from-v1-backup": "Onko sinulla varmuuskopio aiemmasta Mealie v1 -instanssista? Palauta se tästä.", "restore-from-v1-backup": "Onko sinulla varmuuskopio aiemmasta Mealie v1 -instanssista? Palauta se tästä.",
"manage-profile-or-get-invite-link": "Hallitse profiiliasi tai hanki kutsulinkki muille." "manage-profile-or-get-invite-link": "Hallitse profiiliasi tai hanki kutsulinkki muille."
}, },
"debug-openai-services": "Debug OpenAI Services", "debug-openai-services": "Debuggaa OpenAI-palveluita",
"debug-openai-services-description": "Use this page to debug OpenAI services. You can test your OpenAI connection and see the results here. If you have image services enabled, you can also provide an image.", "debug-openai-services-description": "Käytä tätä sivua OpenAI-palveluiden debuggaamiseen. Voit testata OpenAI-yhteytesi ja nähdä tulokset täällä. Jos kuvapalvelut ovat käytössä, voit myös antaa kuvan.",
"run-test": "Run Test", "run-test": "Suorita testi",
"test-results": "Test Results", "test-results": "Testitulokset",
"group-delete-note": "Groups with users or households cannot be deleted", "group-delete-note": "Ryhmiä, joilla on käyttäjiä tai kotitalouksia, ei voi poistaa",
"household-delete-note": "Households with users cannot be deleted" "household-delete-note": "Kotitalouksia, joissa on käyttäjiä, ei voi poistaa"
}, },
"profile": { "profile": {
"welcome-user": "👋 Tervetuloa, {0}!", "welcome-user": "👋 Tervetuloa, {0}!",
"description": "Hallitse profiiliasi, reseptejäsi ja ryhmäasetuksiasi.", "description": "Hallitse profiiliasi, reseptejäsi ja ryhmäasetuksiasi.",
"invite-link": "",
"get-invite-link": "Hanki Kutsulinkki", "get-invite-link": "Hanki Kutsulinkki",
"get-public-link": "Julkinen linkki", "get-public-link": "Julkinen linkki",
"account-summary": "Tilin Yhteenveto", "account-summary": "Tilin Yhteenveto",
@ -1326,7 +1345,9 @@
}, },
"cookbook": { "cookbook": {
"cookbooks": "Keittokirjat", "cookbooks": "Keittokirjat",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Keittokirjat ovat toinen tapa järjestää reseptejä luomalla poikkileikkauksia resepteistä, järjestäjistä, sekä muista suodattimista. Keittokirjan luominen lisää merkinnän sivupalkkiin, ja kaikki reseptit näkyvät keittokirjassa valittujen suodatinten mukaisesti.",
"hide-cookbooks-from-other-households": "Piilota keittokirjat muista kotitalouksista",
"hide-cookbooks-from-other-households-description": "Kun käytössä, sivupalkissa näkyy vain oman kotitaloutesi keittokirjoja",
"public-cookbook": "Julkinen Keittokirja", "public-cookbook": "Julkinen Keittokirja",
"public-cookbook-description": "Julkisia keittokirjoja voidaan jakaa ei-Mealien käyttäjille, ja ne näkyvät ryhmäsi sivulla.", "public-cookbook-description": "Julkisia keittokirjoja voidaan jakaa ei-Mealien käyttäjille, ja ne näkyvät ryhmäsi sivulla.",
"filter-options": "Suodatuksen asetukset", "filter-options": "Suodatuksen asetukset",
@ -1342,25 +1363,25 @@
}, },
"query-filter": { "query-filter": {
"logical-operators": { "logical-operators": {
"and": "AND", "and": "JA",
"or": "OR" "or": "TAI"
}, },
"relational-operators": { "relational-operators": {
"equals": "equals", "equals": "on yhtä kuin",
"does-not-equal": "does not equal", "does-not-equal": "ei ole yhtä kuin",
"is-greater-than": "is greater than", "is-greater-than": "on suurempi kuin",
"is-greater-than-or-equal-to": "is greater than or equal to", "is-greater-than-or-equal-to": "on suurempi tai yhtäsuuri kuin",
"is-less-than": "is less than", "is-less-than": "on vähemmän kuin",
"is-less-than-or-equal-to": "is less than or equal to" "is-less-than-or-equal-to": "on vähemmän tai yhtäsuuri kuin"
}, },
"relational-keywords": { "relational-keywords": {
"is": "is", "is": "on",
"is-not": "is not", "is-not": "ei ole",
"is-one-of": "is one of", "is-one-of": "on yksi näistä",
"is-not-one-of": "is not one of", "is-not-one-of": "ei ole yksi näistä",
"contains-all-of": "contains all of", "contains-all-of": "sisältää kaikki nämä",
"is-like": "is like", "is-like": "on kuin",
"is-not-like": "is not like" "is-not-like": "ei ole kuin"
} }
} }
} }

View file

@ -276,7 +276,8 @@
"admin-group-management": "Administration des groupes", "admin-group-management": "Administration des groupes",
"admin-group-management-text": "Les modifications apportées à ce groupe seront immédiatement prises en compte.", "admin-group-management-text": "Les modifications apportées à ce groupe seront immédiatement prises en compte.",
"group-id-value": "ID groupe: {0}", "group-id-value": "ID groupe: {0}",
"total-households": "Nombre de foyers" "total-households": "Nombre de foyers",
"you-must-select-a-group-before-selecting-a-household": "Vous devez sélectionner un groupe avant de sélectionner un foyer"
}, },
"household": { "household": {
"household": "Foyer", "household": "Foyer",
@ -517,6 +518,7 @@
"save-recipe-before-use": "Enregistrez la recette avant utilisation", "save-recipe-before-use": "Enregistrez la recette avant utilisation",
"section-title": "Titre de la section", "section-title": "Titre de la section",
"servings": "Portions", "servings": "Portions",
"serves-amount": "{amount} portions",
"share-recipe-message": "Je voulais partager ma recette de {0} avec vous.", "share-recipe-message": "Je voulais partager ma recette de {0} avec vous.",
"show-nutrition-values": "Afficher les valeurs nutritionnelles", "show-nutrition-values": "Afficher les valeurs nutritionnelles",
"sodium-content": "Sodium", "sodium-content": "Sodium",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Échec de lajout de la recette au menu", "failed-to-add-recipe-to-mealplan": "Échec de lajout de la recette au menu",
"failed-to-add-to-list": "Ajout dans la liste en échec", "failed-to-add-to-list": "Ajout dans la liste en échec",
"yield": "Nombre de portions", "yield": "Nombre de portions",
"yields-amount-with-text": "Produit {amount} {text}",
"yield-text": "Unité",
"quantity": "Quantité", "quantity": "Quantité",
"choose-unit": "Choisissez une unité", "choose-unit": "Choisissez une unité",
"press-enter-to-create": "Clique sur Entrer pour créer", "press-enter-to-create": "Clique sur Entrer pour créer",
@ -566,13 +570,6 @@
"increase-scale-label": "Augmenter léchelle de 1", "increase-scale-label": "Augmenter léchelle de 1",
"locked": "Verrouillé", "locked": "Verrouillé",
"public-link": "Lien public", "public-link": "Lien public",
"timer": {
"kitchen-timer": "Minuteur",
"start-timer": "Démarrer le minuteur",
"pause-timer": "Mettre en pause le minuteur",
"resume-timer": "Reprendre le minuteur",
"stop-timer": "Arrêter le minuteur"
},
"edit-timeline-event": "Modifier lévénement dans lhistorique", "edit-timeline-event": "Modifier lévénement dans lhistorique",
"timeline": "Historique", "timeline": "Historique",
"timeline-is-empty": "Pas encore dhistorique. Essayez de cuisiner cette recette!", "timeline-is-empty": "Pas encore dhistorique. Essayez de cuisiner cette recette!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Utilisez OpenAI pour analyser les résultats au lieu de la bibliothèque dextraction. Lors de la création d'une recette via une URL, cela se fait automatiquement si la bibliothèque dextraction échoue, mais vous pouvez le tester manuellement ici.", "recipe-debugger-use-openai-description": "Utilisez OpenAI pour analyser les résultats au lieu de la bibliothèque dextraction. Lors de la création d'une recette via une URL, cela se fait automatiquement si la bibliothèque dextraction échoue, mais vous pouvez le tester manuellement ici.",
"debug": "Déboguer", "debug": "Déboguer",
"tree-view": "Vue en arborescence", "tree-view": "Vue en arborescence",
"recipe-servings": "Portions de la recette",
"recipe-yield": "Nombre de parts", "recipe-yield": "Nombre de parts",
"recipe-yield-text": "Unité",
"unit": "Unité", "unit": "Unité",
"upload-image": "Envoyer une image", "upload-image": "Envoyer une image",
"screen-awake": "Garder lécran allumé", "screen-awake": "Garder lécran allumé",
@ -662,7 +661,25 @@
"missing-food": "Créer un aliment manquant : {food}", "missing-food": "Créer un aliment manquant : {food}",
"no-food": "Aucun aliment" "no-food": "Aucun aliment"
}, },
"reset-servings-count": "Réinitialiser le nombre de portions" "reset-servings-count": "Réinitialiser le nombre de portions",
"not-linked-ingredients": "Ingrédients supplémentaires"
},
"recipe-finder": {
"recipe-finder": "Recherche de recette",
"recipe-finder-description": "Recherchez des recettes en fonction des ingrédients que vous avez à disposition. Vous pouvez également filtrer par ustensile disponible et définir un nombre maximum d'ingrédients ou d'ustensiles manquants.",
"selected-ingredients": "Ingrédients sélectionnés",
"no-ingredients-selected": "Aucun ingrédient sélectionné",
"missing": "Manquant",
"no-recipes-found": "Aucune recette trouvée",
"no-recipes-found-description": "Essayez d'ajouter plus d'ingrédients à votre recherche ou d'ajuster vos filtres",
"include-ingredients-on-hand": "Inclure les ingrédients à disposition",
"include-tools-on-hand": "Inclure les ustensiles à disposition",
"max-missing-ingredients": "Ingrédients manquants max",
"max-missing-tools": "Ustensiles manquants max",
"selected-tools": "Ustensiles sélectionnés",
"other-filters": "Autres filtres",
"ready-to-make": "Prêt à cuisiner",
"almost-ready-to-make": "Presque prêt à cuisiner"
}, },
"search": { "search": {
"advanced-search": "Recherche avancée", "advanced-search": "Recherche avancée",
@ -866,7 +883,8 @@
"you-are-offline-description": "Certaines fonctionnalités ne sont pas disponibles lorsque vous êtes hors-ligne. Vous pouvez toujours ajouter, modifier et supprimer des éléments, mais il ne sera pas possible de synchroniser les changements avec le serveur tant que vous ne serez pas en ligne.", "you-are-offline-description": "Certaines fonctionnalités ne sont pas disponibles lorsque vous êtes hors-ligne. Vous pouvez toujours ajouter, modifier et supprimer des éléments, mais il ne sera pas possible de synchroniser les changements avec le serveur tant que vous ne serez pas en ligne.",
"are-you-sure-you-want-to-check-all-items": "Voulez-vous vraiment sélectionner tous les éléments ?", "are-you-sure-you-want-to-check-all-items": "Voulez-vous vraiment sélectionner tous les éléments ?",
"are-you-sure-you-want-to-uncheck-all-items": "Voulez-vous vraiment désélectionner tous les éléments ?", "are-you-sure-you-want-to-uncheck-all-items": "Voulez-vous vraiment désélectionner tous les éléments ?",
"are-you-sure-you-want-to-delete-checked-items": "Voulez-vous vraiment supprimer tous les éléments sélectionnés ?" "are-you-sure-you-want-to-delete-checked-items": "Voulez-vous vraiment supprimer tous les éléments sélectionnés ?",
"no-shopping-lists-found": "Aucune liste de courses trouvée"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Recettes", "all-recipes": "Recettes",
@ -1272,12 +1290,13 @@
"debug-openai-services-description": "Utilisez cette page pour déboguer les services OpenAI. Vous pouvez tester votre connexion OpenAI et voir les résultats ici. Si vous avez activé les services d'image, vous pouvez également fournir une image.", "debug-openai-services-description": "Utilisez cette page pour déboguer les services OpenAI. Vous pouvez tester votre connexion OpenAI et voir les résultats ici. Si vous avez activé les services d'image, vous pouvez également fournir une image.",
"run-test": "Lancer le test", "run-test": "Lancer le test",
"test-results": "Résultats du test", "test-results": "Résultats du test",
"group-delete-note": "Groups with users or households cannot be deleted", "group-delete-note": "Les groupes avec des utilisateurs ou des foyers ne peuvent être supprimés",
"household-delete-note": "Households with users cannot be deleted" "household-delete-note": "Les foyers avec des utilisateurs ne peuvent être supprimés"
}, },
"profile": { "profile": {
"welcome-user": "👋 Bienvenue, {0} !", "welcome-user": "👋 Bienvenue, {0} !",
"description": "Gérez votre profil, les recettes et les paramètres de groupe.", "description": "Gérez votre profil, les recettes et les paramètres de groupe.",
"invite-link": "Lien d'invitation",
"get-invite-link": "Obtenir un lien d'invitation", "get-invite-link": "Obtenir un lien d'invitation",
"get-public-link": "Voir le lien public", "get-public-link": "Voir le lien public",
"account-summary": "Aperçu du compte", "account-summary": "Aperçu du compte",
@ -1326,7 +1345,9 @@
}, },
"cookbook": { "cookbook": {
"cookbooks": "Livres de recettes", "cookbooks": "Livres de recettes",
"description": "Les livres de recettes sont un autre moyen dorganiser des recettes en sélectionnant un ensemble précis de recettes, de classification et de filtres. La création d'un livre de recettes ajoute une entrée à la barre latérale et toutes les recettes avec les filtres choisies seront affichées dans le livre de recettes.", "description": "Les livres de recettes sont un autre moyen d'organiser des recettes en sélectionnant un ensemble précis de recettes, de classification et de filtres. La création d'un livre de recettes ajoute une entrée à la barre latérale et toutes les recettes avec les filtres choisies seront affichées dans le livre de recettes.",
"hide-cookbooks-from-other-households": "Masquer les livres de cuisine des autres foyers",
"hide-cookbooks-from-other-households-description": "Lorsque cette option est activée, seuls les livres de cuisine de votre foyer apparaîtront dans la barre latérale",
"public-cookbook": "Livre de recettes public", "public-cookbook": "Livre de recettes public",
"public-cookbook-description": "Les livres de recettes publics peuvent être partagés avec des personnes qui n'ont pas Mealie et seront affichés sur la page de vos groupes.", "public-cookbook-description": "Les livres de recettes publics peuvent être partagés avec des personnes qui n'ont pas Mealie et seront affichés sur la page de vos groupes.",
"filter-options": "Options de filtres", "filter-options": "Options de filtres",
@ -1346,21 +1367,21 @@
"or": "OU" "or": "OU"
}, },
"relational-operators": { "relational-operators": {
"equals": "equals", "equals": "égal",
"does-not-equal": "does not equal", "does-not-equal": "n'est pas égal",
"is-greater-than": "is greater than", "is-greater-than": "est supérieur à",
"is-greater-than-or-equal-to": "is greater than or equal to", "is-greater-than-or-equal-to": "est plus grand que ou égal à",
"is-less-than": "is less than", "is-less-than": "est inférieur à",
"is-less-than-or-equal-to": "is less than or equal to" "is-less-than-or-equal-to": "est inférieur ou égal à"
}, },
"relational-keywords": { "relational-keywords": {
"is": "is", "is": "est",
"is-not": "is not", "is-not": "nest pas",
"is-one-of": "is one of", "is-one-of": "fait partie de",
"is-not-one-of": "is not one of", "is-not-one-of": "ne fait pas partie de",
"contains-all-of": "contains all of", "contains-all-of": "contient tout",
"is-like": "is like", "is-like": "est comme",
"is-not-like": "is not like" "is-not-like": "n'est pas similaire à"
} }
} }
} }

View file

@ -276,7 +276,8 @@
"admin-group-management": "Administration des groupes", "admin-group-management": "Administration des groupes",
"admin-group-management-text": "Les modifications apportées à ce groupe seront immédiatement prises en compte.", "admin-group-management-text": "Les modifications apportées à ce groupe seront immédiatement prises en compte.",
"group-id-value": "ID groupe: {0}", "group-id-value": "ID groupe: {0}",
"total-households": "Nombre de foyers" "total-households": "Nombre de foyers",
"you-must-select-a-group-before-selecting-a-household": "Vous devez sélectionner un groupe avant de sélectionner un foyer"
}, },
"household": { "household": {
"household": "Foyer", "household": "Foyer",
@ -347,7 +348,7 @@
"meal-note": "Note du repas", "meal-note": "Note du repas",
"note-only": "Note uniquement", "note-only": "Note uniquement",
"random-meal": "Repas aléatoire", "random-meal": "Repas aléatoire",
"random-dinner": "Dîner aléatoire", "random-dinner": "Souper aléatoire",
"random-side": "Accompagnement aléatoire", "random-side": "Accompagnement aléatoire",
"this-rule-will-apply": "Cette règle s'appliquera {dayCriteria} {mealTypeCriteria}.", "this-rule-will-apply": "Cette règle s'appliquera {dayCriteria} {mealTypeCriteria}.",
"to-all-days": "à tous les jours", "to-all-days": "à tous les jours",
@ -513,10 +514,11 @@
"recipe-updated": "Recette mise à jour", "recipe-updated": "Recette mise à jour",
"remove-from-favorites": "Supprimer des favoris", "remove-from-favorites": "Supprimer des favoris",
"remove-section": "Supprimer une section", "remove-section": "Supprimer une section",
"saturated-fat-content": "Acides gras saturés", "saturated-fat-content": "Gras saturés",
"save-recipe-before-use": "Enregistrez la recette avant utilisation", "save-recipe-before-use": "Enregistrez la recette avant utilisation",
"section-title": "Titre de la section", "section-title": "Titre de la section",
"servings": "Portions", "servings": "Portions",
"serves-amount": "{amount} portions",
"share-recipe-message": "Je voulais partager ma recette de {0} avec vous.", "share-recipe-message": "Je voulais partager ma recette de {0} avec vous.",
"show-nutrition-values": "Afficher les valeurs nutritionnelles", "show-nutrition-values": "Afficher les valeurs nutritionnelles",
"sodium-content": "Sodium", "sodium-content": "Sodium",
@ -524,9 +526,9 @@
"sugar-content": "Sucres", "sugar-content": "Sucres",
"title": "Titre", "title": "Titre",
"total-time": "Temps total", "total-time": "Temps total",
"trans-fat-content": "Acides gras trans", "trans-fat-content": "Gras trans",
"unable-to-delete-recipe": "Impossible de supprimer la recette", "unable-to-delete-recipe": "Impossible de supprimer la recette",
"unsaturated-fat-content": "Acides gras insaturés", "unsaturated-fat-content": "Gras insaturés",
"no-recipe": "Pas de recette", "no-recipe": "Pas de recette",
"locked-by-owner": "Verrouillé par le propriétaire", "locked-by-owner": "Verrouillé par le propriétaire",
"join-the-conversation": "Rejoindre la conversation", "join-the-conversation": "Rejoindre la conversation",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Échec de l'ajout de la recette à la planification des repas", "failed-to-add-recipe-to-mealplan": "Échec de l'ajout de la recette à la planification des repas",
"failed-to-add-to-list": "Ajout dans la liste en échec", "failed-to-add-to-list": "Ajout dans la liste en échec",
"yield": "Rendement", "yield": "Rendement",
"yields-amount-with-text": "Produit {amount} {text}",
"yield-text": "Unité",
"quantity": "Quantité", "quantity": "Quantité",
"choose-unit": "Choisir une unité", "choose-unit": "Choisir une unité",
"press-enter-to-create": "Clique sur Entrer pour créer", "press-enter-to-create": "Clique sur Entrer pour créer",
@ -566,13 +570,6 @@
"increase-scale-label": "Augmenter l'échelle de 1", "increase-scale-label": "Augmenter l'échelle de 1",
"locked": "Verrouillé", "locked": "Verrouillé",
"public-link": "Lien public", "public-link": "Lien public",
"timer": {
"kitchen-timer": "Minuteur",
"start-timer": "Démarrer le minuteur",
"pause-timer": "Mettre en pause le minuteur",
"resume-timer": "Reprendre le minuteur",
"stop-timer": "Arrêter le minuteur"
},
"edit-timeline-event": "Modifier lévénement dans lhistorique", "edit-timeline-event": "Modifier lévénement dans lhistorique",
"timeline": "Historique", "timeline": "Historique",
"timeline-is-empty": "Pas encore dhistorique. Essayez de cuisiner cette recette!", "timeline-is-empty": "Pas encore dhistorique. Essayez de cuisiner cette recette!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Utilisez OpenAI pour analyser les résultats au lieu de la librairie dextraction. Lors de la création d'une recette via une URL, cela se fait automatiquement si la librairie dextraction échoue, mais vous pouvez le tester manuellement ici.", "recipe-debugger-use-openai-description": "Utilisez OpenAI pour analyser les résultats au lieu de la librairie dextraction. Lors de la création d'une recette via une URL, cela se fait automatiquement si la librairie dextraction échoue, mais vous pouvez le tester manuellement ici.",
"debug": "Déboguer", "debug": "Déboguer",
"tree-view": "Vue en arborescence", "tree-view": "Vue en arborescence",
"recipe-servings": "Portions de la recette",
"recipe-yield": "Nombre de parts", "recipe-yield": "Nombre de parts",
"recipe-yield-text": "Unité",
"unit": "Unité", "unit": "Unité",
"upload-image": "Ajouter une image", "upload-image": "Ajouter une image",
"screen-awake": "Garder lécran allumé", "screen-awake": "Garder lécran allumé",
@ -662,7 +661,25 @@
"missing-food": "Créer un aliment manquant : {food}", "missing-food": "Créer un aliment manquant : {food}",
"no-food": "Aucun aliment" "no-food": "Aucun aliment"
}, },
"reset-servings-count": "Réinitialiser le nombre de portions" "reset-servings-count": "Réinitialiser le nombre de portions",
"not-linked-ingredients": "Ingrédients supplémentaires"
},
"recipe-finder": {
"recipe-finder": "Recherche de recette",
"recipe-finder-description": "Recherchez des recettes en fonction des ingrédients que vous avez à disposition. Vous pouvez également filtrer par ustensile disponible et définir un nombre maximum d'ingrédients ou d'ustensiles manquants.",
"selected-ingredients": "Ingrédients sélectionnés",
"no-ingredients-selected": "Aucun ingrédient sélectionné",
"missing": "Manquant",
"no-recipes-found": "Aucune recette trouvée",
"no-recipes-found-description": "Essayez d'ajouter plus d'ingrédients à votre recherche ou d'ajuster vos filtres",
"include-ingredients-on-hand": "Inclure les ingrédients à disposition",
"include-tools-on-hand": "Inclure les ustensiles à disposition",
"max-missing-ingredients": "Ingrédients manquants max",
"max-missing-tools": "Ustensiles manquants max",
"selected-tools": "Ustensiles sélectionnés",
"other-filters": "Autres filtres",
"ready-to-make": "Prêt à cuisiner",
"almost-ready-to-make": "Presque prêt à cuisiner"
}, },
"search": { "search": {
"advanced-search": "Recherche avancée", "advanced-search": "Recherche avancée",
@ -866,7 +883,8 @@
"you-are-offline-description": "Certaines fonctionnalités ne sont pas disponibles lorsque vous êtes hors-ligne. Vous pouvez toujours ajouter, modifier et supprimer des éléments, mais il ne sera pas possible de synchroniser les changements avec le serveur tant que vous ne serez pas en ligne.", "you-are-offline-description": "Certaines fonctionnalités ne sont pas disponibles lorsque vous êtes hors-ligne. Vous pouvez toujours ajouter, modifier et supprimer des éléments, mais il ne sera pas possible de synchroniser les changements avec le serveur tant que vous ne serez pas en ligne.",
"are-you-sure-you-want-to-check-all-items": "Voulez-vous vraiment sélectionner tous les éléments ?", "are-you-sure-you-want-to-check-all-items": "Voulez-vous vraiment sélectionner tous les éléments ?",
"are-you-sure-you-want-to-uncheck-all-items": "Voulez-vous vraiment désélectionner tous les éléments ?", "are-you-sure-you-want-to-uncheck-all-items": "Voulez-vous vraiment désélectionner tous les éléments ?",
"are-you-sure-you-want-to-delete-checked-items": "Voulez-vous vraiment supprimer tous les éléments sélectionnés ?" "are-you-sure-you-want-to-delete-checked-items": "Voulez-vous vraiment supprimer tous les éléments sélectionnés ?",
"no-shopping-lists-found": "Aucune liste de courses trouvée"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Les recettes", "all-recipes": "Les recettes",
@ -1272,12 +1290,13 @@
"debug-openai-services-description": "Utilisez cette page pour déboguer les services OpenAI. Vous pouvez tester votre connexion OpenAI et voir les résultats ici. Si vous avez activé les services d'image, vous pouvez également fournir une image.", "debug-openai-services-description": "Utilisez cette page pour déboguer les services OpenAI. Vous pouvez tester votre connexion OpenAI et voir les résultats ici. Si vous avez activé les services d'image, vous pouvez également fournir une image.",
"run-test": "Lancer le test", "run-test": "Lancer le test",
"test-results": "Résultats du test", "test-results": "Résultats du test",
"group-delete-note": "Groups with users or households cannot be deleted", "group-delete-note": "Les groupes avec des utilisateurs ou des foyers ne peuvent être supprimés",
"household-delete-note": "Households with users cannot be deleted" "household-delete-note": "Les foyers avec des utilisateurs ne peuvent être supprimés"
}, },
"profile": { "profile": {
"welcome-user": "👋 Bienvenue, {0}!", "welcome-user": "👋 Bienvenue, {0}!",
"description": "Gérez votre profil, les recettes et les paramètres de groupe.", "description": "Gérez votre profil, les recettes et les paramètres de groupe.",
"invite-link": "Lien d'invitation",
"get-invite-link": "Obtenir un lien d'invitation", "get-invite-link": "Obtenir un lien d'invitation",
"get-public-link": "Voir le lien public", "get-public-link": "Voir le lien public",
"account-summary": "Aperçu du compte", "account-summary": "Aperçu du compte",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Livres de recettes", "cookbooks": "Livres de recettes",
"description": "Les livres de recettes sont un autre moyen dorganiser des recettes en sélectionnant un ensemble précis de recettes, de classification et de filtres. La création d'un livre de recettes ajoute une entrée à la barre latérale et toutes les recettes avec les filtres choisies seront affichées dans le livre de recettes.", "description": "Les livres de recettes sont un autre moyen dorganiser des recettes en sélectionnant un ensemble précis de recettes, de classification et de filtres. La création d'un livre de recettes ajoute une entrée à la barre latérale et toutes les recettes avec les filtres choisies seront affichées dans le livre de recettes.",
"hide-cookbooks-from-other-households": "Masquer les livres de cuisine des autres foyers",
"hide-cookbooks-from-other-households-description": "Lorsque cette option est activée, seuls les livres de cuisine de votre foyer apparaîtront dans la barre latérale",
"public-cookbook": "Livre de recettes public", "public-cookbook": "Livre de recettes public",
"public-cookbook-description": "Les livres de recettes publics peuvent être partagés avec des personnes qui n'ont pas Mealie et seront affichés sur la page de vos groupes.", "public-cookbook-description": "Les livres de recettes publics peuvent être partagés avec des personnes qui n'ont pas Mealie et seront affichés sur la page de vos groupes.",
"filter-options": "Options de filtres", "filter-options": "Options de filtres",
@ -1346,21 +1367,21 @@
"or": "OU" "or": "OU"
}, },
"relational-operators": { "relational-operators": {
"equals": "equals", "equals": "égal",
"does-not-equal": "does not equal", "does-not-equal": "n'est pas égal",
"is-greater-than": "is greater than", "is-greater-than": "est supérieur à",
"is-greater-than-or-equal-to": "is greater than or equal to", "is-greater-than-or-equal-to": "est supérieur ou égal à",
"is-less-than": "is less than", "is-less-than": "est inférieure à",
"is-less-than-or-equal-to": "is less than or equal to" "is-less-than-or-equal-to": "est inférieur ou égal à"
}, },
"relational-keywords": { "relational-keywords": {
"is": "is", "is": "est",
"is-not": "is not", "is-not": "n'est pas",
"is-one-of": "is one of", "is-one-of": "fait partie de",
"is-not-one-of": "is not one of", "is-not-one-of": "ne fait pas partie de",
"contains-all-of": "contains all of", "contains-all-of": "contient tous les",
"is-like": "is like", "is-like": "est similaire à",
"is-not-like": "is not like" "is-not-like": "n'est pas similaire à"
} }
} }
} }

View file

@ -45,7 +45,7 @@
"category-filter": "Filtre par catégories", "category-filter": "Filtre par catégories",
"category-update-failed": "La mise à jour de la catégorie a échoué", "category-update-failed": "La mise à jour de la catégorie a échoué",
"category-updated": "Catégorie mise à jour", "category-updated": "Catégorie mise à jour",
"uncategorized-count": "{count} non catégorisée|{count} non catégorisées", "uncategorized-count": "{count} sans catégorie",
"create-a-category": "Créer une catégorie", "create-a-category": "Créer une catégorie",
"category-name": "Nom de la catégorie", "category-name": "Nom de la catégorie",
"category": "Catégorie" "category": "Catégorie"
@ -53,17 +53,17 @@
"events": { "events": {
"apprise-url": "URL Apprise", "apprise-url": "URL Apprise",
"database": "Base de données", "database": "Base de données",
"delete-event": "Supprimer lévènement", "delete-event": "Supprimer lévénement",
"event-delete-confirmation": "Voulez-vous vraiment supprimer cet évènement?", "event-delete-confirmation": "Voulez-vous vraiment supprimer cet événement?",
"event-deleted": "Événement supprimé", "event-deleted": "Événement supprimé",
"event-updated": "Événement mis à jour", "event-updated": "Événement mis à jour",
"new-notification-form-description": "Mealie utilise la bibliothèque Apprise pour générer des notifications. Elle propose de nombreux services à utiliser pour les notifications. Consultez leur wiki pour un guide complet sur la façon de créer lURL de votre service. Si disponible, sélectionner le type de votre notification peut inclure des fonctionnalités supplémentaires.", "new-notification-form-description": "Mealie utilise la bibliothèque Apprise pour générer des notifications. Elle propose de nombreux services à utiliser pour les notifications. Consultez leur wiki pour un guide complet sur la façon de créer lURL de votre service. Si disponible, sélectionner le type de votre notification peut inclure des fonctionnalités supplémentaires.",
"new-version": "Nouvelle version disponible!", "new-version": "Nouvelle version disponible!",
"notification": "Notification", "notification": "Notification",
"refresh": "Rafraîchir", "refresh": "Actualiser",
"scheduled": "Planifié", "scheduled": "Planifié",
"something-went-wrong": "Une erreur sest produite!", "something-went-wrong": "Une erreur sest produite!",
"subscribed-events": "Évènements suivis", "subscribed-events": "Événements suivis",
"test-message-sent": "Message de test envoyé", "test-message-sent": "Message de test envoyé",
"message-sent": "Message envoyé", "message-sent": "Message envoyé",
"new-notification": "Nouvelle notification", "new-notification": "Nouvelle notification",
@ -71,8 +71,8 @@
"apprise-url-skipped-if-blank": "URL Apprise (ignoré si vide)", "apprise-url-skipped-if-blank": "URL Apprise (ignoré si vide)",
"enable-notifier": "Activer la notification", "enable-notifier": "Activer la notification",
"what-events": "À quels événements cette notification doit-elle s'abonner ?", "what-events": "À quels événements cette notification doit-elle s'abonner ?",
"user-events": "Evénements utilisateur", "user-events": "Événements utilisateur",
"mealplan-events": "Évènements du menu", "mealplan-events": "Événements du menu",
"when-a-user-in-your-group-creates-a-new-mealplan": "Lorsqu'un utilisateur de votre groupe crée un nouveau menu", "when-a-user-in-your-group-creates-a-new-mealplan": "Lorsqu'un utilisateur de votre groupe crée un nouveau menu",
"shopping-list-events": "Événements de la liste de courses", "shopping-list-events": "Événements de la liste de courses",
"cookbook-events": "Événements du livre de recettes", "cookbook-events": "Événements du livre de recettes",
@ -276,7 +276,8 @@
"admin-group-management": "Administration des groupes", "admin-group-management": "Administration des groupes",
"admin-group-management-text": "Les modifications apportées à ce groupe seront immédiatement prises en compte.", "admin-group-management-text": "Les modifications apportées à ce groupe seront immédiatement prises en compte.",
"group-id-value": "ID groupe: {0}", "group-id-value": "ID groupe: {0}",
"total-households": "Nombre de foyers" "total-households": "Nombre de foyers",
"you-must-select-a-group-before-selecting-a-household": "Vous devez sélectionner un groupe avant de sélectionner un foyer"
}, },
"household": { "household": {
"household": "Foyer", "household": "Foyer",
@ -293,7 +294,7 @@
"private-household": "Foyer privé", "private-household": "Foyer privé",
"private-household-description": "Rendre votre foyer privé va désactiver toutes les options de vue publique. Cela écrase les paramètres de vue publique", "private-household-description": "Rendre votre foyer privé va désactiver toutes les options de vue publique. Cela écrase les paramètres de vue publique",
"lock-recipe-edits-from-other-households": "Verrouiller les éditions de recettes de la part des autres foyers", "lock-recipe-edits-from-other-households": "Verrouiller les éditions de recettes de la part des autres foyers",
"lock-recipe-edits-from-other-households-description": "Si activé, seuls les utilisateurs de votre foyer peuvent modifier les recettes créé par votre foyer", "lock-recipe-edits-from-other-households-description": "Si activé, seuls les utilisateurs de votre foyer peuvent modifier les recettes créées par votre foyer",
"household-recipe-preferences": "Préférences de recette du foyer", "household-recipe-preferences": "Préférences de recette du foyer",
"default-recipe-preferences-description": "Ce sont les paramètres par défaut utilisés pour la création dune nouvelle recette dans votre foyer. Ils peuvent être modifiés individuellement dans le menu de configuration des recettes.", "default-recipe-preferences-description": "Ce sont les paramètres par défaut utilisés pour la création dune nouvelle recette dans votre foyer. Ils peuvent être modifiés individuellement dans le menu de configuration des recettes.",
"allow-users-outside-of-your-household-to-see-your-recipes": "Autoriser les utilisateurs en dehors de votre foyer à voir vos recettes", "allow-users-outside-of-your-household-to-see-your-recipes": "Autoriser les utilisateurs en dehors de votre foyer à voir vos recettes",
@ -517,6 +518,7 @@
"save-recipe-before-use": "Enregistrez la recette avant utilisation", "save-recipe-before-use": "Enregistrez la recette avant utilisation",
"section-title": "Titre de la section", "section-title": "Titre de la section",
"servings": "Portions", "servings": "Portions",
"serves-amount": "{amount} portions",
"share-recipe-message": "Je voulais partager ma recette de {0} avec vous.", "share-recipe-message": "Je voulais partager ma recette de {0} avec vous.",
"show-nutrition-values": "Afficher les valeurs nutritionnelles", "show-nutrition-values": "Afficher les valeurs nutritionnelles",
"sodium-content": "Sodium", "sodium-content": "Sodium",
@ -544,7 +546,9 @@
"failed-to-add-recipes-to-list": "Impossible dajouter la recette à la liste", "failed-to-add-recipes-to-list": "Impossible dajouter la recette à la liste",
"failed-to-add-recipe-to-mealplan": "Échec de lajout de la recette au menu", "failed-to-add-recipe-to-mealplan": "Échec de lajout de la recette au menu",
"failed-to-add-to-list": "Ajout dans la liste en échec", "failed-to-add-to-list": "Ajout dans la liste en échec",
"yield": "Nombre de portions", "yield": "Quantité",
"yields-amount-with-text": "Produit {amount} {text}",
"yield-text": "Unité",
"quantity": "Quantité", "quantity": "Quantité",
"choose-unit": "Choisissez une unité", "choose-unit": "Choisissez une unité",
"press-enter-to-create": "Clique sur Entrer pour créer", "press-enter-to-create": "Clique sur Entrer pour créer",
@ -566,13 +570,6 @@
"increase-scale-label": "Augmenter léchelle de 1", "increase-scale-label": "Augmenter léchelle de 1",
"locked": "Verrouillé", "locked": "Verrouillé",
"public-link": "Lien public", "public-link": "Lien public",
"timer": {
"kitchen-timer": "Minuteur",
"start-timer": "Démarrer le minuteur",
"pause-timer": "Mettre en pause le minuteur",
"resume-timer": "Reprendre le minuteur",
"stop-timer": "Arrêter le minuteur"
},
"edit-timeline-event": "Modifier lévénement dans lhistorique", "edit-timeline-event": "Modifier lévénement dans lhistorique",
"timeline": "Historique", "timeline": "Historique",
"timeline-is-empty": "Pas encore dhistorique. Essayez de cuisiner cette recette!", "timeline-is-empty": "Pas encore dhistorique. Essayez de cuisiner cette recette!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Utilisez OpenAI pour analyser les résultats au lieu de la bibliothèque dextraction. Lors de la création d'une recette via une URL, cela se fait automatiquement si la bibliothèque dextraction échoue, mais vous pouvez le tester manuellement ici.", "recipe-debugger-use-openai-description": "Utilisez OpenAI pour analyser les résultats au lieu de la bibliothèque dextraction. Lors de la création d'une recette via une URL, cela se fait automatiquement si la bibliothèque dextraction échoue, mais vous pouvez le tester manuellement ici.",
"debug": "Déboguer", "debug": "Déboguer",
"tree-view": "Vue en arborescence", "tree-view": "Vue en arborescence",
"recipe-servings": "Portions de la recette",
"recipe-yield": "Nombre de parts", "recipe-yield": "Nombre de parts",
"recipe-yield-text": "Unité",
"unit": "Unité", "unit": "Unité",
"upload-image": "Envoyer une image", "upload-image": "Envoyer une image",
"screen-awake": "Garder lécran allumé", "screen-awake": "Garder lécran allumé",
@ -662,7 +661,25 @@
"missing-food": "Créer un aliment manquant : {food}", "missing-food": "Créer un aliment manquant : {food}",
"no-food": "Aucun aliment" "no-food": "Aucun aliment"
}, },
"reset-servings-count": "Réinitialiser le nombre de portions" "reset-servings-count": "Réinitialiser le nombre de portions",
"not-linked-ingredients": "Ingrédients supplémentaires"
},
"recipe-finder": {
"recipe-finder": "Recherche de recette",
"recipe-finder-description": "Recherchez des recettes en fonction des ingrédients que vous avez à disposition. Vous pouvez également filtrer par ustensile disponible et définir un nombre maximum d'ingrédients ou d'ustensiles manquants.",
"selected-ingredients": "Ingrédients sélectionnés",
"no-ingredients-selected": "Aucun ingrédient sélectionné",
"missing": "Manquant",
"no-recipes-found": "Aucune recette trouvée",
"no-recipes-found-description": "Essayez d'ajouter plus d'ingrédients à votre recherche ou d'ajuster vos filtres",
"include-ingredients-on-hand": "Inclure les ingrédients à disposition",
"include-tools-on-hand": "Inclure les ustensiles à disposition",
"max-missing-ingredients": "Ingrédients manquants max",
"max-missing-tools": "Ustensiles manquants max",
"selected-tools": "Ustensiles sélectionnés",
"other-filters": "Autres filtres",
"ready-to-make": "Prêt à cuisiner",
"almost-ready-to-make": "Presque prêt à cuisiner"
}, },
"search": { "search": {
"advanced-search": "Recherche avancée", "advanced-search": "Recherche avancée",
@ -715,7 +732,7 @@
"current": "Version:", "current": "Version:",
"custom-pages": "Pages personnalisées", "custom-pages": "Pages personnalisées",
"edit-page": "Modifier la page", "edit-page": "Modifier la page",
"events": "Évènements", "events": "Événements",
"first-day-of-week": "Premier jour de la semaine", "first-day-of-week": "Premier jour de la semaine",
"group-settings-updated": "Paramètres du groupe mis à jour", "group-settings-updated": "Paramètres du groupe mis à jour",
"homepage": { "homepage": {
@ -866,7 +883,8 @@
"you-are-offline-description": "Certaines fonctionnalités ne sont pas disponibles lorsque vous êtes hors-ligne. Vous pouvez toujours ajouter, modifier et supprimer des éléments, mais il ne sera pas possible de synchroniser les changements avec le serveur tant que vous ne serez pas en ligne.", "you-are-offline-description": "Certaines fonctionnalités ne sont pas disponibles lorsque vous êtes hors-ligne. Vous pouvez toujours ajouter, modifier et supprimer des éléments, mais il ne sera pas possible de synchroniser les changements avec le serveur tant que vous ne serez pas en ligne.",
"are-you-sure-you-want-to-check-all-items": "Voulez-vous vraiment sélectionner tous les éléments ?", "are-you-sure-you-want-to-check-all-items": "Voulez-vous vraiment sélectionner tous les éléments ?",
"are-you-sure-you-want-to-uncheck-all-items": "Voulez-vous vraiment désélectionner tous les éléments ?", "are-you-sure-you-want-to-uncheck-all-items": "Voulez-vous vraiment désélectionner tous les éléments ?",
"are-you-sure-you-want-to-delete-checked-items": "Voulez-vous vraiment supprimer tous les éléments sélectionnés ?" "are-you-sure-you-want-to-delete-checked-items": "Voulez-vous vraiment supprimer tous les éléments sélectionnés ?",
"no-shopping-lists-found": "Aucune liste de courses trouvée"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Recettes", "all-recipes": "Recettes",
@ -1007,7 +1025,7 @@
"user-details": "Détails de l'utilisateur", "user-details": "Détails de l'utilisateur",
"user-name": "Nom d'utilisateur", "user-name": "Nom d'utilisateur",
"authentication-method": "Méthode d'authentification", "authentication-method": "Méthode d'authentification",
"authentication-method-hint": "Ceci infique comment un utilisateur va s'authentifier sur Mealie. Si vous n'êtes pas sûr, choisissez 'Mealie'", "authentication-method-hint": "Ceci indique comment un utilisateur va s'authentifier sur Mealie. Si vous n'êtes pas sûr, choisissez 'Mealie'",
"permissions": "Autorisations", "permissions": "Autorisations",
"administrator": "Administrateur", "administrator": "Administrateur",
"user-can-invite-other-to-group": "Lutilisateur peut inviter dautres personnes dans le groupe", "user-can-invite-other-to-group": "Lutilisateur peut inviter dautres personnes dans le groupe",
@ -1025,7 +1043,7 @@
"translated": "traduit", "translated": "traduit",
"choose-language": "Choisir la langue", "choose-language": "Choisir la langue",
"select-description": "Choisissez la langue de linterface utilisateur de Mealie. Ce paramètre sapplique uniquement à vous, pas aux autres utilisateurs.", "select-description": "Choisissez la langue de linterface utilisateur de Mealie. Ce paramètre sapplique uniquement à vous, pas aux autres utilisateurs.",
"how-to-contribute-description": "Quelque chose nest pas encore traduit, mal traduit, ou votre langue est manquante dans la liste? {read-the-docs-link} sur la façon de contribuer!", "how-to-contribute-description": "Quelque chose n'est pas encore traduit, mal traduit, ou votre langue est manquante dans la liste? {read-the-docs-link} sur la façon de contribuer!",
"read-the-docs": "Lire la documentation" "read-the-docs": "Lire la documentation"
}, },
"data-pages": { "data-pages": {
@ -1254,14 +1272,14 @@
"average-confident": "Confiant à {0}", "average-confident": "Confiant à {0}",
"try-an-example": "Essayez avec un exemple", "try-an-example": "Essayez avec un exemple",
"parser": "Parser", "parser": "Parser",
"background-tasks": "Tâches en arrière plan", "background-tasks": "Tâches en arrière-plan",
"background-tasks-description": "Ici vous pouvez voir toutes les tâches en arrière-plan en cours et leur statut", "background-tasks-description": "Ici vous pouvez voir toutes les tâches en arrière-plan en cours et leur statut",
"no-logs-found": "Pas de journaux trouvés", "no-logs-found": "Pas de journaux trouvés",
"tasks": "Tâches", "tasks": "Tâches",
"setup": { "setup": {
"first-time-setup": "Premier démarrage", "first-time-setup": "Premier démarrage",
"welcome-to-mealie-get-started": "Bienvenue dans Mealie ! Nous pouvons commencer", "welcome-to-mealie-get-started": "Bienvenue dans Mealie ! Nous pouvons commencer",
"already-set-up-bring-to-homepage": "Jai déjà tout configuré, amenez moi à lécran daccueil", "already-set-up-bring-to-homepage": "Jai déjà tout configuré, amenez-moi à lécran daccueil",
"common-settings-for-new-sites": "Voici quelques paramètres courants pour les nouveaux sites", "common-settings-for-new-sites": "Voici quelques paramètres courants pour les nouveaux sites",
"setup-complete": "Configuration terminée !", "setup-complete": "Configuration terminée !",
"here-are-a-few-things-to-help-you-get-started": "Voici quelques trucs pour vous aider à commencer avec Mealie", "here-are-a-few-things-to-help-you-get-started": "Voici quelques trucs pour vous aider à commencer avec Mealie",
@ -1278,6 +1296,7 @@
"profile": { "profile": {
"welcome-user": "👋 Bienvenue, {0} !", "welcome-user": "👋 Bienvenue, {0} !",
"description": "Gérez votre profil, les recettes et les paramètres de groupe.", "description": "Gérez votre profil, les recettes et les paramètres de groupe.",
"invite-link": "Lien d'invitation",
"get-invite-link": "Obtenir un lien d'invitation", "get-invite-link": "Obtenir un lien d'invitation",
"get-public-link": "Voir le lien public", "get-public-link": "Voir le lien public",
"account-summary": "Aperçu du compte", "account-summary": "Aperçu du compte",
@ -1302,9 +1321,9 @@
"cookbooks-description": "Gérez une collection de catégories de recettes et générez des pages.", "cookbooks-description": "Gérez une collection de catégories de recettes et générez des pages.",
"members": "Membres", "members": "Membres",
"members-description": "Voyez qui est dans votre foyer et gérez leurs permissions.", "members-description": "Voyez qui est dans votre foyer et gérez leurs permissions.",
"webhooks-description": "Configurez les webhooks qui se déclenchent les jours où il y a un plan au menu.", "webhooks-description": "Configurez des webhooks qui se déclenchent les jours où il y a un plan au menu.",
"notifiers": "Notifications", "notifiers": "Notifications",
"notifiers-description": "Configurer les e-mails et les notifications push qui se déclenchent sur des événements spécifiques.", "notifiers-description": "Configurer des e-mails et des notifications push qui se déclenchent sur des événements spécifiques.",
"manage-data": "Gérer les données", "manage-data": "Gérer les données",
"manage-data-description": "Gérez vos données Mealie, Aliments, Unités, Catégories, Tags et plus.", "manage-data-description": "Gérez vos données Mealie, Aliments, Unités, Catégories, Tags et plus.",
"data-migrations": "Migration des données", "data-migrations": "Migration des données",
@ -1326,11 +1345,13 @@
}, },
"cookbook": { "cookbook": {
"cookbooks": "Livres de recettes", "cookbooks": "Livres de recettes",
"description": "Les livres de recettes sont un autre moyen dorganiser des recettes en sélectionnant un ensemble précis de recettes, de classification et de filtres. La création d'un livre de recettes ajoute une entrée à la barre latérale et toutes les recettes avec les filtres choisies seront affichées dans le livre de recettes.", "description": "Les livres de recettes sont un autre moyen d'organiser des recettes en sélectionnant un ensemble précis de recettes, de classification et de filtres. La création d'un livre de recettes ajoute une entrée à la barre latérale et toutes les recettes avec les filtres choisies seront affichées dans le livre de recettes.",
"hide-cookbooks-from-other-households": "Masquer les livres de cuisine des autres foyers",
"hide-cookbooks-from-other-households-description": "Lorsque cette option est activée, seuls les livres de cuisine de votre foyer apparaîtront dans la barre latérale",
"public-cookbook": "Livre de recettes public", "public-cookbook": "Livre de recettes public",
"public-cookbook-description": "Les livres de recettes publics peuvent être partagés avec des personnes qui n'ont pas Mealie et seront affichés sur la page de vos groupes.", "public-cookbook-description": "Les livres de recettes publics peuvent être partagés avec des personnes qui n'ont pas Mealie et seront affichés sur la page de vos groupes.",
"filter-options": "Options de filtres", "filter-options": "Options de filtres",
"filter-options-description": "Si coché, le livre de recettes n'incluera que les recettes qui remplissent tous les critères sélectionnés. Cela s'applique à chaque rubrique individuellement.", "filter-options-description": "Si coché, le livre de recettes n'inclura que les recettes qui remplissent tous les critères sélectionnés. Cela s'applique à chaque rubrique individuellement.",
"require-all-categories": "Nécessite toutes les catégories", "require-all-categories": "Nécessite toutes les catégories",
"require-all-tags": "Nécessite tous les mots-clés", "require-all-tags": "Nécessite tous les mots-clés",
"require-all-tools": "Nécessite tous les ustensiles", "require-all-tools": "Nécessite tous les ustensiles",
@ -1346,21 +1367,21 @@
"or": "OU" "or": "OU"
}, },
"relational-operators": { "relational-operators": {
"equals": "equals", "equals": "égal",
"does-not-equal": "does not equal", "does-not-equal": "n'est pas égal",
"is-greater-than": "is greater than", "is-greater-than": "est supérieur à",
"is-greater-than-or-equal-to": "is greater than or equal to", "is-greater-than-or-equal-to": "est plus grand que ou égal à",
"is-less-than": "is less than", "is-less-than": "est inférieur à",
"is-less-than-or-equal-to": "is less than or equal to" "is-less-than-or-equal-to": "est inférieur ou égal à"
}, },
"relational-keywords": { "relational-keywords": {
"is": "is", "is": "est",
"is-not": "is not", "is-not": "nest pas",
"is-one-of": "is one of", "is-one-of": "fait partie de",
"is-not-one-of": "is not one of", "is-not-one-of": "ne fait pas partie de",
"contains-all-of": "contains all of", "contains-all-of": "contient tout",
"is-like": "is like", "is-like": "est comme",
"is-not-like": "is not like" "is-not-like": "n'est pas similaire à"
} }
} }
} }

View file

@ -182,7 +182,7 @@
"date": "Data", "date": "Data",
"id": "Id", "id": "Id",
"owner": "Dono", "owner": "Dono",
"change-owner": "Change Owner", "change-owner": "Mudar Proprietario",
"date-added": "Engadida o", "date-added": "Engadida o",
"none": "Nada", "none": "Nada",
"run": "Executar", "run": "Executar",
@ -214,10 +214,10 @@
"confirm-delete-generic-items": "Estás seguro de que queres eliminar os seguintes elementos?", "confirm-delete-generic-items": "Estás seguro de que queres eliminar os seguintes elementos?",
"organizers": "Organizadores", "organizers": "Organizadores",
"caution": "Coidado", "caution": "Coidado",
"show-advanced": "Show Advanced", "show-advanced": "Mostrar Avanzadas",
"add-field": "Add Field", "add-field": "Adicionar Campo",
"date-created": "Date Created", "date-created": "Date Created",
"date-updated": "Date Updated" "date-updated": "Data de Atualización"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Estás seguro de que queres eliminar <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Estás seguro de que queres eliminar <b>{groupName}<b/>?",
@ -276,7 +276,8 @@
"admin-group-management": "Xestión do Grupo de Administración", "admin-group-management": "Xestión do Grupo de Administración",
"admin-group-management-text": "Os cambios neste grupo reflectiranse inmediatamente.", "admin-group-management-text": "Os cambios neste grupo reflectiranse inmediatamente.",
"group-id-value": "Id do grupo: {0}", "group-id-value": "Id do grupo: {0}",
"total-households": "Casas totais" "total-households": "Casas totais",
"you-must-select-a-group-before-selecting-a-household": "You must select a group before selecting a household"
}, },
"household": { "household": {
"household": "Casa", "household": "Casa",
@ -294,11 +295,11 @@
"private-household-description": "Setting your household to private will disable all public view options. This overrides any individual public view settings", "private-household-description": "Setting your household to private will disable all public view options. This overrides any individual public view settings",
"lock-recipe-edits-from-other-households": "Lock recipe edits from other households", "lock-recipe-edits-from-other-households": "Lock recipe edits from other households",
"lock-recipe-edits-from-other-households-description": "When enabled only users in your household can edit recipes created by your household", "lock-recipe-edits-from-other-households-description": "When enabled only users in your household can edit recipes created by your household",
"household-recipe-preferences": "Household Recipe Preferences", "household-recipe-preferences": "Preferencias de receitas da casa",
"default-recipe-preferences-description": "These are the default settings when a new recipe is created in your household. These can be changed for individual recipes in the recipe settings menu.", "default-recipe-preferences-description": "These are the default settings when a new recipe is created in your household. These can be changed for individual recipes in the recipe settings menu.",
"allow-users-outside-of-your-household-to-see-your-recipes": "Allow users outside of your household to see your recipes", "allow-users-outside-of-your-household-to-see-your-recipes": "Allow users outside of your household to see your recipes",
"allow-users-outside-of-your-household-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 household or with a pre-generated private link", "allow-users-outside-of-your-household-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 household or with a pre-generated private link",
"household-preferences": "Household Preferences" "household-preferences": "Preferencias da Casa"
}, },
"meal-plan": { "meal-plan": {
"create-a-new-meal-plan": "Crea un Novo Menú", "create-a-new-meal-plan": "Crea un Novo Menú",
@ -321,9 +322,9 @@
"mealplan-update-failed": "Produciuse un erro na actualización do menú", "mealplan-update-failed": "Produciuse un erro na actualización do menú",
"mealplan-updated": "Menú Actualizado", "mealplan-updated": "Menú Actualizado",
"mealplan-households-description": "If no household is selected, recipes can be added from any household", "mealplan-households-description": "If no household is selected, recipes can be added from any household",
"any-category": "Any Category", "any-category": "Calquer Categoria",
"any-tag": "Any Tag", "any-tag": "Calquer Etiqueta",
"any-household": "Any Household", "any-household": "Calquer Casa",
"no-meal-plan-defined-yet": "Aínda non se definiu ningún menú", "no-meal-plan-defined-yet": "Aínda non se definiu ningún menú",
"no-meal-planned-for-today": "Non hai ningunha comida prevista para hoxe", "no-meal-planned-for-today": "Non hai ningunha comida prevista para hoxe",
"numberOfDays-hint": "Número de días ao cargar a páxina", "numberOfDays-hint": "Número de días ao cargar a páxina",
@ -394,7 +395,7 @@
}, },
"tandoor": { "tandoor": {
"description-long": "Mealie can import recipes from Tandoor. Export your data in the \"Default\" format, then upload the .zip below.", "description-long": "Mealie can import recipes from Tandoor. Export your data in the \"Default\" format, then upload the .zip below.",
"title": "Tandoor Recipes" "title": "Receitas do Tandoor"
}, },
"recipe-data-migrations": "Recipe Data Migrations", "recipe-data-migrations": "Recipe Data Migrations",
"recipe-data-migrations-explanation": "Recipes can be migrated from another supported application to Mealie. This is a great way to get started with Mealie.", "recipe-data-migrations-explanation": "Recipes can be migrated from another supported application to Mealie. This is a great way to get started with Mealie.",
@ -403,8 +404,8 @@
"tag-all-recipes": "Tag all recipes with {tag-name} tag", "tag-all-recipes": "Tag all recipes with {tag-name} tag",
"nextcloud-text": "Nextcloud recipes can be imported from a zip file that contains the data stored in Nextcloud. See the example folder structure below to ensure your recipes are able to be imported.", "nextcloud-text": "Nextcloud recipes can be imported from a zip file that contains the data stored in Nextcloud. See the example folder structure below to ensure your recipes are able to be imported.",
"chowdown-text": "Mealie admite de forma nativa o formato do repositorio de chowdown. Descarga o repositorio de códigos como ficheiro .zip e cárgao a continuación.", "chowdown-text": "Mealie admite de forma nativa o formato do repositorio de chowdown. Descarga o repositorio de códigos como ficheiro .zip e cárgao a continuación.",
"recipe-1": "Recipe 1", "recipe-1": "Receita 1",
"recipe-2": "Recipe 2", "recipe-2": "Receita 2",
"paprika-text": "Mealie can import recipes from the Paprika application. Export your recipes from paprika, rename the export extension to .zip and upload it below.", "paprika-text": "Mealie can import recipes from the Paprika application. Export your recipes from paprika, rename the export extension to .zip and upload it below.",
"mealie-text": "Mealie can import recipes from the Mealie application from a pre v1.0 release. Export your recipes from your old instance, and upload the zip file below. Note that only recipes can be imported from the export.", "mealie-text": "Mealie can import recipes from the Mealie application from a pre v1.0 release. Export your recipes from your old instance, and upload the zip file below. Note that only recipes can be imported from the export.",
"plantoeat": { "plantoeat": {
@ -423,15 +424,15 @@
"new-recipe": { "new-recipe": {
"bulk-add": "Bulk Add", "bulk-add": "Bulk Add",
"error-details": "Only websites containing ld+json or microdata can be imported by Mealie. Most major recipe websites support this data structure. If your site cannot be imported but there is json data in the log, please submit a github issue with the URL and data.", "error-details": "Only websites containing ld+json or microdata can be imported by Mealie. Most major recipe websites support this data structure. If your site cannot be imported but there is json data in the log, please submit a github issue with the URL and data.",
"error-title": "Looks Like We Couldn't Find Anything", "error-title": "Parece que non conseguimos encontrar nada",
"from-url": "Import a Recipe", "from-url": "Importar unha Receita",
"github-issues": "GitHub Issues", "github-issues": "Problemas no GitHub",
"google-ld-json-info": "Google ld+json Info", "google-ld-json-info": "Google ld+json Info",
"must-be-a-valid-url": "Must be a Valid URL", "must-be-a-valid-url": "Precisa ser un URL válido",
"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", "paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Pegue os datos da sua receita. Cada liña será tratada como un item nunha lista",
"recipe-markup-specification": "Recipe Markup Specification", "recipe-markup-specification": "Especificación Markup da Receita",
"recipe-url": "Recipe URL", "recipe-url": "URL da Receita",
"recipe-html-or-json": "Recipe HTML or JSON", "recipe-html-or-json": "Receita en HTML ou JSON",
"upload-a-recipe": "Upload a Recipe", "upload-a-recipe": "Upload a Recipe",
"upload-individual-zip-file": "Upload an individual .zip file exported from another Mealie instance.", "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": "Copy and paste a link from your favorite recipe website",
@ -439,13 +440,13 @@
"trim-whitespace-description": "Trim leading and trailing whitespace as well as blank lines", "trim-whitespace-description": "Trim leading and trailing whitespace as well as blank lines",
"trim-prefix-description": "Trim first character from each line", "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", "split-by-numbered-line-description": "Attempts to split a paragraph by matching '1)' or '1.' patterns",
"import-by-url": "Import a recipe by URL", "import-by-url": "Importar unha receita por URL",
"create-manually": "Create a recipe manually", "create-manually": "Create a recipe manually",
"make-recipe-image": "Make this the recipe image" "make-recipe-image": "Make this the recipe image"
}, },
"page": { "page": {
"404-page-not-found": "404 Page not found", "404-page-not-found": "404 Páxina non encontrada",
"all-recipes": "All Recipes", "all-recipes": "Todas as receitas",
"new-page-created": "New page created", "new-page-created": "New page created",
"page": "Páxina", "page": "Páxina",
"page-creation-failed": "Produciuse un erro ao creala páxina", "page-creation-failed": "Produciuse un erro ao creala páxina",
@ -466,7 +467,7 @@
"calories-suffix": "calorías", "calories-suffix": "calorías",
"carbohydrate-content": "Carbohidratos", "carbohydrate-content": "Carbohidratos",
"categories": "Categorías", "categories": "Categorías",
"cholesterol-content": "Cholesterol", "cholesterol-content": "Colesterol",
"comment-action": "Comentar", "comment-action": "Comentar",
"comment": "Comentario", "comment": "Comentario",
"comments": "Comentarios", "comments": "Comentarios",
@ -517,6 +518,7 @@
"save-recipe-before-use": "Garda a receita antes de usala", "save-recipe-before-use": "Garda a receita antes de usala",
"section-title": "Título da Sección", "section-title": "Título da Sección",
"servings": "Porcións", "servings": "Porcións",
"serves-amount": "Serves {amount}",
"share-recipe-message": "Quería compartir a miña receita de {0} contigo.", "share-recipe-message": "Quería compartir a miña receita de {0} contigo.",
"show-nutrition-values": "Mostrar Valores Nutricionais", "show-nutrition-values": "Mostrar Valores Nutricionais",
"sodium-content": "Sodio", "sodium-content": "Sodio",
@ -533,7 +535,7 @@
"add-recipe-to-mealplan": "Add Recipe to Mealplan", "add-recipe-to-mealplan": "Add Recipe to Mealplan",
"entry-type": "Entry Type", "entry-type": "Entry Type",
"date-format-hint": "Formato MM/DD/YYYY", "date-format-hint": "Formato MM/DD/YYYY",
"date-format-hint-yyyy-mm-dd": "YYYY-MM-DD format", "date-format-hint-yyyy-mm-dd": "Formato AAAA-MM-DD",
"add-to-list": "Add to List", "add-to-list": "Add to List",
"add-to-plan": "Add to Plan", "add-to-plan": "Add to Plan",
"add-to-timeline": "Add to Timeline", "add-to-timeline": "Add to Timeline",
@ -545,11 +547,13 @@
"failed-to-add-recipe-to-mealplan": "Failed to add recipe to mealplan", "failed-to-add-recipe-to-mealplan": "Failed to add recipe to mealplan",
"failed-to-add-to-list": "Failed to add to list", "failed-to-add-to-list": "Failed to add to list",
"yield": "Yield", "yield": "Yield",
"yields-amount-with-text": "Yields {amount} {text}",
"yield-text": "Yield Text",
"quantity": "Quantity", "quantity": "Quantity",
"choose-unit": "Choose Unit", "choose-unit": "Choose Unit",
"press-enter-to-create": "Press Enter to Create", "press-enter-to-create": "Press Enter to Create",
"choose-food": "Choose Food", "choose-food": "Choose Food",
"notes": "Notes", "notes": "Notas",
"toggle-section": "Toggle Section", "toggle-section": "Toggle Section",
"see-original-text": "See Original Text", "see-original-text": "See Original Text",
"original-text-with-value": "Original Text: {originalText}", "original-text-with-value": "Original Text: {originalText}",
@ -566,13 +570,6 @@
"increase-scale-label": "Increase Scale by 1", "increase-scale-label": "Increase Scale by 1",
"locked": "Locked", "locked": "Locked",
"public-link": "Public Link", "public-link": "Public Link",
"timer": {
"kitchen-timer": "Kitchen Timer",
"start-timer": "Start Timer",
"pause-timer": "Pause Timer",
"resume-timer": "Resume Timer",
"stop-timer": "Stop Timer"
},
"edit-timeline-event": "Edit Timeline Event", "edit-timeline-event": "Edit Timeline Event",
"timeline": "Timeline", "timeline": "Timeline",
"timeline-is-empty": "Nothing on the timeline yet. Try making this recipe!", "timeline-is-empty": "Nothing on the timeline yet. Try making this recipe!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.", "recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.",
"debug": "Debug", "debug": "Debug",
"tree-view": "Tree View", "tree-view": "Tree View",
"recipe-servings": "Recipe Servings",
"recipe-yield": "Recipe Yield", "recipe-yield": "Recipe Yield",
"recipe-yield-text": "Recipe Yield Text",
"unit": "Unit", "unit": "Unit",
"upload-image": "Upload image", "upload-image": "Upload image",
"screen-awake": "Keep Screen Awake", "screen-awake": "Keep Screen Awake",
@ -662,7 +661,25 @@
"missing-food": "Create missing food: {food}", "missing-food": "Create missing food: {food}",
"no-food": "No Food" "no-food": "No Food"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Reset Servings Count",
"not-linked-ingredients": "Additional Ingredients"
},
"recipe-finder": {
"recipe-finder": "Recipe Finder",
"recipe-finder-description": "Search for recipes based on ingredients you have on hand. You can also filter by tools you have available, and set a maximum number of missing ingredients or tools.",
"selected-ingredients": "Selected Ingredients",
"no-ingredients-selected": "No ingredients selected",
"missing": "Missing",
"no-recipes-found": "No recipes found",
"no-recipes-found-description": "Try adding more ingredients to your search or adjusting your filters",
"include-ingredients-on-hand": "Include Ingredients On Hand",
"include-tools-on-hand": "Include Tools On Hand",
"max-missing-ingredients": "Max Missing Ingredients",
"max-missing-tools": "Max Missing Tools",
"selected-tools": "Selected Tools",
"other-filters": "Other Filters",
"ready-to-make": "Ready to Make",
"almost-ready-to-make": "Almost Ready to Make"
}, },
"search": { "search": {
"advanced-search": "Advanced Search", "advanced-search": "Advanced Search",
@ -866,7 +883,8 @@
"you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.", "you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.",
"are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?", "are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?",
"are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?", "are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?",
"are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?" "are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?",
"no-shopping-lists-found": "No Shopping Lists Found"
}, },
"sidebar": { "sidebar": {
"all-recipes": "All Recipes", "all-recipes": "All Recipes",
@ -1176,8 +1194,8 @@
"demo_password": "Password: {password}" "demo_password": "Password: {password}"
}, },
"ocr-editor": { "ocr-editor": {
"ocr-editor": "Ocr editor", "ocr-editor": "Editor OCR",
"toolbar": "Toolbar", "toolbar": "Barra de ferramentas",
"selection-mode": "Selection mode", "selection-mode": "Selection mode",
"pan-and-zoom-picture": "Pan and zoom picture", "pan-and-zoom-picture": "Pan and zoom picture",
"split-text": "Split text", "split-text": "Split text",
@ -1185,7 +1203,7 @@
"split-by-block": "Split by text block", "split-by-block": "Split by text block",
"flatten": "Flatten regardless of original formating", "flatten": "Flatten regardless of original formating",
"help": { "help": {
"help": "Help", "help": "Axuda",
"mouse-modes": "Mouse modes", "mouse-modes": "Mouse modes",
"selection-mode": "Selection Mode (default)", "selection-mode": "Selection Mode (default)",
"selection-mode-desc": "The selection mode is the main mode that can be used to enter data:", "selection-mode-desc": "The selection mode is the main mode that can be used to enter data:",
@ -1278,6 +1296,7 @@
"profile": { "profile": {
"welcome-user": "👋 Welcome, {0}!", "welcome-user": "👋 Welcome, {0}!",
"description": "Manage your profile, recipes, and group settings.", "description": "Manage your profile, recipes, and group settings.",
"invite-link": "Invite Link",
"get-invite-link": "Get Invite Link", "get-invite-link": "Get Invite Link",
"get-public-link": "Get Public Link", "get-public-link": "Get Public Link",
"account-summary": "Account Summary", "account-summary": "Account Summary",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Cookbooks", "cookbooks": "Cookbooks",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.",
"hide-cookbooks-from-other-households": "Hide Cookbooks from Other Households",
"hide-cookbooks-from-other-households-description": "When enabled, only cookbooks from your household will appear on the sidebar",
"public-cookbook": "Public Cookbook", "public-cookbook": "Public Cookbook",
"public-cookbook-description": "Public Cookbooks can be shared with non-mealie users and will be displayed on your groups page.", "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": "Filter Options",

View file

@ -276,7 +276,8 @@
"admin-group-management": "ניהול קבוצת מנהל", "admin-group-management": "ניהול קבוצת מנהל",
"admin-group-management-text": "שינויים לקבוצה זו ישתקפו מיידית.", "admin-group-management-text": "שינויים לקבוצה זו ישתקפו מיידית.",
"group-id-value": "מזהה קבוצה: {0}", "group-id-value": "מזהה קבוצה: {0}",
"total-households": "סך כל משקי בית" "total-households": "סך כל משקי בית",
"you-must-select-a-group-before-selecting-a-household": "You must select a group before selecting a household"
}, },
"household": { "household": {
"household": "משק בית", "household": "משק בית",
@ -517,6 +518,7 @@
"save-recipe-before-use": "שמירת מתכון לפני שימוש", "save-recipe-before-use": "שמירת מתכון לפני שימוש",
"section-title": "כותרת המקטע", "section-title": "כותרת המקטע",
"servings": "מנות", "servings": "מנות",
"serves-amount": "Serves {amount}",
"share-recipe-message": "רציתי לשתף את המתכון {0} איתך.", "share-recipe-message": "רציתי לשתף את המתכון {0} איתך.",
"show-nutrition-values": "הצגת ערכים תזונתיים", "show-nutrition-values": "הצגת ערכים תזונתיים",
"sodium-content": "נתרן", "sodium-content": "נתרן",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "הוספת מתכון לתכנון ארוחות נכשלה", "failed-to-add-recipe-to-mealplan": "הוספת מתכון לתכנון ארוחות נכשלה",
"failed-to-add-to-list": "כשלון בהוספה לרשימה", "failed-to-add-to-list": "כשלון בהוספה לרשימה",
"yield": "תשואה", "yield": "תשואה",
"yields-amount-with-text": "Yields {amount} {text}",
"yield-text": "Yield Text",
"quantity": "כמות", "quantity": "כמות",
"choose-unit": "בחירת יחידת מידה", "choose-unit": "בחירת יחידת מידה",
"press-enter-to-create": "הקש Enter כדי להוסיף", "press-enter-to-create": "הקש Enter כדי להוסיף",
@ -566,13 +570,6 @@
"increase-scale-label": "העלה קנה מידה ב-1", "increase-scale-label": "העלה קנה מידה ב-1",
"locked": "נעול", "locked": "נעול",
"public-link": "כתובת פומבית", "public-link": "כתובת פומבית",
"timer": {
"kitchen-timer": "טיימר למטבח",
"start-timer": "התחל את הטיימר",
"pause-timer": "השהה את הטיימר",
"resume-timer": "המשך את הטיימר",
"stop-timer": "עצור את הטיימר"
},
"edit-timeline-event": "עריכת אירוע ציר זמן", "edit-timeline-event": "עריכת אירוע ציר זמן",
"timeline": "ציר זמן", "timeline": "ציר זמן",
"timeline-is-empty": "אין כלום בציר הזמן. נסה לעשות את המתכון הזה!", "timeline-is-empty": "אין כלום בציר הזמן. נסה לעשות את המתכון הזה!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "ניתן להשתמש ב-OpenAI כדי לפענח את התוצאות במקום להסתמך על ספריית הסריקה. כאשר מייצרים מתכון באמצעות כתובת, זה נעשה אוטומטית אם ספריית הסריקה נכשלת, אך ניתן לבדוק זאת ידנית כאן.", "recipe-debugger-use-openai-description": "ניתן להשתמש ב-OpenAI כדי לפענח את התוצאות במקום להסתמך על ספריית הסריקה. כאשר מייצרים מתכון באמצעות כתובת, זה נעשה אוטומטית אם ספריית הסריקה נכשלת, אך ניתן לבדוק זאת ידנית כאן.",
"debug": "ניפוי שגיאות", "debug": "ניפוי שגיאות",
"tree-view": "תצוגת עץ", "tree-view": "תצוגת עץ",
"recipe-servings": "Recipe Servings",
"recipe-yield": "תשואת מתכון", "recipe-yield": "תשואת מתכון",
"recipe-yield-text": "Recipe Yield Text",
"unit": "יחידה", "unit": "יחידה",
"upload-image": "העלה תמונה", "upload-image": "העלה תמונה",
"screen-awake": "השאר את המסך פעיל", "screen-awake": "השאר את המסך פעיל",
@ -662,7 +661,25 @@
"missing-food": "יצירת אוכל חסר: {food}", "missing-food": "יצירת אוכל חסר: {food}",
"no-food": "אין אוכל" "no-food": "אין אוכל"
}, },
"reset-servings-count": "איפוס מספר המנות" "reset-servings-count": "איפוס מספר המנות",
"not-linked-ingredients": "Additional Ingredients"
},
"recipe-finder": {
"recipe-finder": "Recipe Finder",
"recipe-finder-description": "Search for recipes based on ingredients you have on hand. You can also filter by tools you have available, and set a maximum number of missing ingredients or tools.",
"selected-ingredients": "Selected Ingredients",
"no-ingredients-selected": "No ingredients selected",
"missing": "Missing",
"no-recipes-found": "No recipes found",
"no-recipes-found-description": "Try adding more ingredients to your search or adjusting your filters",
"include-ingredients-on-hand": "Include Ingredients On Hand",
"include-tools-on-hand": "Include Tools On Hand",
"max-missing-ingredients": "Max Missing Ingredients",
"max-missing-tools": "Max Missing Tools",
"selected-tools": "Selected Tools",
"other-filters": "Other Filters",
"ready-to-make": "Ready to Make",
"almost-ready-to-make": "Almost Ready to Make"
}, },
"search": { "search": {
"advanced-search": "חיפוש מתקדם", "advanced-search": "חיפוש מתקדם",
@ -866,7 +883,8 @@
"you-are-offline-description": "חלק מהיכולות אינן זמינות במצב לא מקוון. עדיין ניתן להוסיף, לשנות, ולהוריד פריטים, אך לא ניתן לסנכרן את השינויים שלך לשרת עד לחידוש החיבור.", "you-are-offline-description": "חלק מהיכולות אינן זמינות במצב לא מקוון. עדיין ניתן להוסיף, לשנות, ולהוריד פריטים, אך לא ניתן לסנכרן את השינויים שלך לשרת עד לחידוש החיבור.",
"are-you-sure-you-want-to-check-all-items": "לסמן את כל הפריטים?", "are-you-sure-you-want-to-check-all-items": "לסמן את כל הפריטים?",
"are-you-sure-you-want-to-uncheck-all-items": "לבטל את סימון כל הפריטים?", "are-you-sure-you-want-to-uncheck-all-items": "לבטל את סימון כל הפריטים?",
"are-you-sure-you-want-to-delete-checked-items": "למחוק את כל הפריטים המסומנים?" "are-you-sure-you-want-to-delete-checked-items": "למחוק את כל הפריטים המסומנים?",
"no-shopping-lists-found": "No Shopping Lists Found"
}, },
"sidebar": { "sidebar": {
"all-recipes": "כל המתכונים", "all-recipes": "כל המתכונים",
@ -1278,6 +1296,7 @@
"profile": { "profile": {
"welcome-user": "👋 שלום, {0}!", "welcome-user": "👋 שלום, {0}!",
"description": "ניהול פרופיל, מתכונים והגדרות קבוצה.", "description": "ניהול פרופיל, מתכונים והגדרות קבוצה.",
"invite-link": "Invite Link",
"get-invite-link": "קבלת קישור להזמנה", "get-invite-link": "קבלת קישור להזמנה",
"get-public-link": "כתובת פומבית", "get-public-link": "כתובת פומבית",
"account-summary": "פירוט משתמש", "account-summary": "פירוט משתמש",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "ספרי בישול", "cookbooks": "ספרי בישול",
"description": "ספרי בישול הם דרך נוספת לסידור מתכונים על ידי חיתוך של מתכונים, מארגנים, ומסננים נוספים. יצירת ספר בישול תוסיף רשומה לתפריט הצדדי וכל המתכונים שעונים לסינון יוצגו באופן אוטומטי.", "description": "ספרי בישול הם דרך נוספת לסידור מתכונים על ידי חיתוך של מתכונים, מארגנים, ומסננים נוספים. יצירת ספר בישול תוסיף רשומה לתפריט הצדדי וכל המתכונים שעונים לסינון יוצגו באופן אוטומטי.",
"hide-cookbooks-from-other-households": "Hide Cookbooks from Other Households",
"hide-cookbooks-from-other-households-description": "When enabled, only cookbooks from your household will appear on the sidebar",
"public-cookbook": "ספר בישול פומבי", "public-cookbook": "ספר בישול פומבי",
"public-cookbook-description": "ספרי בישול ניתנים לשיתוף עם משתמשים מחוץ ל-Mealie ויופיעו בתוך עמוד הקבוצות.", "public-cookbook-description": "ספרי בישול ניתנים לשיתוף עם משתמשים מחוץ ל-Mealie ויופיעו בתוך עמוד הקבוצות.",
"filter-options": "אפשרויות סינון", "filter-options": "אפשרויות סינון",

View file

@ -276,7 +276,8 @@
"admin-group-management": "Upravljanje Grupom od strane Administratora", "admin-group-management": "Upravljanje Grupom od strane Administratora",
"admin-group-management-text": "Promjene u ovoj grupi će se odmah odraziti.", "admin-group-management-text": "Promjene u ovoj grupi će se odmah odraziti.",
"group-id-value": "Id grupe: {0}", "group-id-value": "Id grupe: {0}",
"total-households": "Total Households" "total-households": "Total Households",
"you-must-select-a-group-before-selecting-a-household": "You must select a group before selecting a household"
}, },
"household": { "household": {
"household": "Household", "household": "Household",
@ -517,6 +518,7 @@
"save-recipe-before-use": "Spasi recept prije upotrebe", "save-recipe-before-use": "Spasi recept prije upotrebe",
"section-title": "Naslov Odjeljka", "section-title": "Naslov Odjeljka",
"servings": "Porcije", "servings": "Porcije",
"serves-amount": "Serves {amount}",
"share-recipe-message": "Želio/željela bih podijeliti svoj recept {0} s tobom.", "share-recipe-message": "Želio/željela bih podijeliti svoj recept {0} s tobom.",
"show-nutrition-values": "Prikaži Nutritivne Vrijednosti", "show-nutrition-values": "Prikaži Nutritivne Vrijednosti",
"sodium-content": "Sol", "sodium-content": "Sol",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Nije uspjelo dodavanje recepta u plan obroka", "failed-to-add-recipe-to-mealplan": "Nije uspjelo dodavanje recepta u plan obroka",
"failed-to-add-to-list": "Failed to add to list", "failed-to-add-to-list": "Failed to add to list",
"yield": "Konačna Količina", "yield": "Konačna Količina",
"yields-amount-with-text": "Yields {amount} {text}",
"yield-text": "Yield Text",
"quantity": "Količina", "quantity": "Količina",
"choose-unit": "Odaberi Jedinicu", "choose-unit": "Odaberi Jedinicu",
"press-enter-to-create": "Pritisni Enter za Kreiranje", "press-enter-to-create": "Pritisni Enter za Kreiranje",
@ -566,13 +570,6 @@
"increase-scale-label": "Povećaj skaliranje za 1", "increase-scale-label": "Povećaj skaliranje za 1",
"locked": "Zaključano", "locked": "Zaključano",
"public-link": "Javni Link", "public-link": "Javni Link",
"timer": {
"kitchen-timer": "Kitchen Timer",
"start-timer": "Start Timer",
"pause-timer": "Pause Timer",
"resume-timer": "Resume Timer",
"stop-timer": "Stop Timer"
},
"edit-timeline-event": "Uredi Događaj Vremenske Crte", "edit-timeline-event": "Uredi Događaj Vremenske Crte",
"timeline": "Vremenska Crta", "timeline": "Vremenska Crta",
"timeline-is-empty": "Još nema ništa na vremenskoj crti. Pokušajte napraviti ovaj recept!", "timeline-is-empty": "Još nema ništa na vremenskoj crti. Pokušajte napraviti ovaj recept!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.", "recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.",
"debug": "Ispravljanje grešaka", "debug": "Ispravljanje grešaka",
"tree-view": "Prikaz Stabla", "tree-view": "Prikaz Stabla",
"recipe-servings": "Recipe Servings",
"recipe-yield": "Konačna Količina Recepta", "recipe-yield": "Konačna Količina Recepta",
"recipe-yield-text": "Recipe Yield Text",
"unit": "Jedinica", "unit": "Jedinica",
"upload-image": "Učitavanje Slike", "upload-image": "Učitavanje Slike",
"screen-awake": "Keep Screen Awake", "screen-awake": "Keep Screen Awake",
@ -662,7 +661,25 @@
"missing-food": "Create missing food: {food}", "missing-food": "Create missing food: {food}",
"no-food": "No Food" "no-food": "No Food"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Reset Servings Count",
"not-linked-ingredients": "Additional Ingredients"
},
"recipe-finder": {
"recipe-finder": "Recipe Finder",
"recipe-finder-description": "Search for recipes based on ingredients you have on hand. You can also filter by tools you have available, and set a maximum number of missing ingredients or tools.",
"selected-ingredients": "Selected Ingredients",
"no-ingredients-selected": "No ingredients selected",
"missing": "Missing",
"no-recipes-found": "No recipes found",
"no-recipes-found-description": "Try adding more ingredients to your search or adjusting your filters",
"include-ingredients-on-hand": "Include Ingredients On Hand",
"include-tools-on-hand": "Include Tools On Hand",
"max-missing-ingredients": "Max Missing Ingredients",
"max-missing-tools": "Max Missing Tools",
"selected-tools": "Selected Tools",
"other-filters": "Other Filters",
"ready-to-make": "Ready to Make",
"almost-ready-to-make": "Almost Ready to Make"
}, },
"search": { "search": {
"advanced-search": "Napredno Pretraživanje", "advanced-search": "Napredno Pretraživanje",
@ -866,7 +883,8 @@
"you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.", "you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.",
"are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?", "are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?",
"are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?", "are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?",
"are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?" "are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?",
"no-shopping-lists-found": "No Shopping Lists Found"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Svi Recepti", "all-recipes": "Svi Recepti",
@ -1278,6 +1296,7 @@
"profile": { "profile": {
"welcome-user": "👋 Welcome, {0}!", "welcome-user": "👋 Welcome, {0}!",
"description": "Upravljajte svojim profilom, receptima i postavkama grupa.", "description": "Upravljajte svojim profilom, receptima i postavkama grupa.",
"invite-link": "Invite Link",
"get-invite-link": "Zatražite Poveznicu Pozivnice", "get-invite-link": "Zatražite Poveznicu Pozivnice",
"get-public-link": "Get Public Link", "get-public-link": "Get Public Link",
"account-summary": "Zbirni Prikaz Računa", "account-summary": "Zbirni Prikaz Računa",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Zbirka recepata", "cookbooks": "Zbirka recepata",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.",
"hide-cookbooks-from-other-households": "Hide Cookbooks from Other Households",
"hide-cookbooks-from-other-households-description": "When enabled, only cookbooks from your household will appear on the sidebar",
"public-cookbook": "Javna zbirka recepata", "public-cookbook": "Javna zbirka recepata",
"public-cookbook-description": "Javne zbirke recepata mogu se dijeliti s korisnicima koji nisu Mealie korisnici i bit će prikazane na stranici vaše grupe.", "public-cookbook-description": "Javne zbirke recepata mogu se dijeliti s korisnicima koji nisu Mealie korisnici i bit će prikazane na stranici vaše grupe.",
"filter-options": "Opcije filtra", "filter-options": "Opcije filtra",

View file

@ -246,14 +246,14 @@
"manage-members": "Tagok Kezelése", "manage-members": "Tagok Kezelése",
"manage-members-description": "Kezelje a háztartás tagjainak jogosultságait. A {manage} lehetővé teszi a felhasználó számára az adatkezelési oldal elérését, a {invite} pedig lehetővé teszi a felhasználó számára, hogy meghívó linkeket hozzon létre más felhasználók számára. A csoporttulajdonosok nem módosíthatják saját jogosultságaikat.", "manage-members-description": "Kezelje a háztartás tagjainak jogosultságait. A {manage} lehetővé teszi a felhasználó számára az adatkezelési oldal elérését, a {invite} pedig lehetővé teszi a felhasználó számára, hogy meghívó linkeket hozzon létre más felhasználók számára. A csoporttulajdonosok nem módosíthatják saját jogosultságaikat.",
"manage": "Kezelés", "manage": "Kezelés",
"manage-household": "Manage Household", "manage-household": "Háztartás kezelése",
"invite": "Meghívás", "invite": "Meghívás",
"looking-to-update-your-profile": "Frissíteni szeretnéd a profilod?", "looking-to-update-your-profile": "Frissíteni szeretnéd a profilod?",
"default-recipe-preferences-description": "Ezek az alapértelmezett beállítások, amikor új receptet hoz létre a csoportban. Ezeket az egyes recepteknél módosíthatja a receptbeállítások menüben.", "default-recipe-preferences-description": "Ezek az alapértelmezett beállítások, amikor új receptet hoz létre a csoportban. Ezeket az egyes recepteknél módosíthatja a receptbeállítások menüben.",
"default-recipe-preferences": "Alapértelmezett recept beállítások", "default-recipe-preferences": "Alapértelmezett recept beállítások",
"group-preferences": "Csoport beállítások", "group-preferences": "Csoport beállítások",
"private-group": "Privát csoport", "private-group": "Privát csoport",
"private-group-description": "Setting your group to private will disable all public view options. This overrides any individual public view settings", "private-group-description": "Ha a csoportot privátra állítja, akkor minden nyilvános megtekintési lehetőség letiltásra kerül. Ez felülírja az egyéni nyilvános nézetbeállításokat",
"enable-public-access": "Nyilvános hozzáférés engedélyezése", "enable-public-access": "Nyilvános hozzáférés engedélyezése",
"enable-public-access-description": "Legyenek a csoport receptek alapértelmezetten publikusak és engedélyezze a látogatóknak a megtekintést belépés nélkül", "enable-public-access-description": "Legyenek a csoport receptek alapértelmezetten publikusak és engedélyezze a látogatóknak a megtekintést belépés nélkül",
"allow-users-outside-of-your-group-to-see-your-recipes": "Engedélyezze a csoporton kívüli felhasználók számára a receptek megtekintését", "allow-users-outside-of-your-group-to-see-your-recipes": "Engedélyezze a csoporton kívüli felhasználók számára a receptek megtekintését",
@ -267,7 +267,7 @@
"disable-users-from-commenting-on-recipes": "Letiltja a felhasználóknak, hogy megjegyzéseket fűzzenek a receptekhez", "disable-users-from-commenting-on-recipes": "Letiltja a felhasználóknak, hogy megjegyzéseket fűzzenek a receptekhez",
"disable-users-from-commenting-on-recipes-description": "Elrejti a megjegyzéseket a receptoldalon és letiltja a megjegyzéseket", "disable-users-from-commenting-on-recipes-description": "Elrejti a megjegyzéseket a receptoldalon és letiltja a megjegyzéseket",
"disable-organizing-recipe-ingredients-by-units-and-food": "A recept hozzávalók mennyiségi egységenkénti és alapanyagonkénti rendszerezésének letiltása", "disable-organizing-recipe-ingredients-by-units-and-food": "A recept hozzávalók mennyiségi egységenkénti és alapanyagonkénti rendszerezésének letiltása",
"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", "disable-organizing-recipe-ingredients-by-units-and-food-description": "Elrejti a hozzávalók Alapanyag, Mennyiségi Egység és Mennyiség mezőit és egyszerű szöveges mezőként kezeli a hozzávalókat",
"general-preferences": "Általános beállítások", "general-preferences": "Általános beállítások",
"group-recipe-preferences": "Csoportos recept beállítások", "group-recipe-preferences": "Csoportos recept beállítások",
"report": "Jelentés", "report": "Jelentés",
@ -276,29 +276,30 @@
"admin-group-management": "Admin csoport kezelése", "admin-group-management": "Admin csoport kezelése",
"admin-group-management-text": "A csoporthoz tartozó változtatások azonnal megjelennek.", "admin-group-management-text": "A csoporthoz tartozó változtatások azonnal megjelennek.",
"group-id-value": "Csoport azonosító: {0}", "group-id-value": "Csoport azonosító: {0}",
"total-households": "Total Households" "total-households": "Háztartások száma",
"you-must-select-a-group-before-selecting-a-household": "A háztartás kiválasztása előtt ki kell választania egy csoportot"
}, },
"household": { "household": {
"household": "Household", "household": "Háztartás",
"households": "Households", "households": "Háztartás",
"user-household": "User Household", "user-household": "Felhasználó háztartása",
"create-household": "Create Household", "create-household": "Háztartás létrehozása",
"household-name": "Household Name", "household-name": "Háztartás megnevezése",
"household-group": "Household Group", "household-group": "Háztartás csoport",
"household-management": "Household Management", "household-management": "Háztartás menedzsment",
"manage-households": "Manage Households", "manage-households": "Háztartások kezelése",
"admin-household-management": "Admin Household Management", "admin-household-management": "Háztartás menedzsment adminja",
"admin-household-management-text": "Changes to this household will be reflected immediately.", "admin-household-management-text": "A háztartás változásai azonnal megjelennek.",
"household-id-value": "Household Id: {0}", "household-id-value": "Háztartás Id: {0}",
"private-household": "Private Household", "private-household": "Privát háztartás",
"private-household-description": "Setting your household to private will disable all public view options. This overrides any individual public view settings", "private-household-description": "A háztartás privátra állítása letiltja az összes nyilvános megtekintési lehetőséget. Ez felülírja az egyéni nyilvános megtekintési beállításokat",
"lock-recipe-edits-from-other-households": "Lock recipe edits from other households", "lock-recipe-edits-from-other-households": "Receptmódosítások zárolása más háztartások elől",
"lock-recipe-edits-from-other-households-description": "When enabled only users in your household can edit recipes created by your household", "lock-recipe-edits-from-other-households-description": "Ha engedélyezett, csak a háztartás felhasználói szerkeszthetik a háztartás által létrehozott recepteket",
"household-recipe-preferences": "Household Recipe Preferences", "household-recipe-preferences": "Háztartás recept preferenciái",
"default-recipe-preferences-description": "These are the default settings when a new recipe is created in your household. These can be changed for individual recipes in the recipe settings menu.", "default-recipe-preferences-description": "Ezek az alapértelmezett beállítások, amikor egy új receptet hoz létre a háztartásában. Az egyes recepteknél ezek megváltoztathatók a receptbeállítások menüpontban.",
"allow-users-outside-of-your-household-to-see-your-recipes": "Allow users outside of your household to see your recipes", "allow-users-outside-of-your-household-to-see-your-recipes": "Engedélyezi, hogy a háztartáson kívüli felhasználók is láthassák a recepteket",
"allow-users-outside-of-your-household-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 household or with a pre-generated private link", "allow-users-outside-of-your-household-to-see-your-recipes-description": "Ha engedélyezte, akkor egy nyilvános megosztási linket használhat bizonyos receptek megosztására a felhasználó engedélyezése nélkül. Ha letiltott, csak a háztartásában lévő felhasználókkal vagy egy előre generált privát linkkel oszthatja meg a recepteket",
"household-preferences": "Household Preferences" "household-preferences": "Háztartás preferenciái"
}, },
"meal-plan": { "meal-plan": {
"create-a-new-meal-plan": "Menüterv létrehozása", "create-a-new-meal-plan": "Menüterv létrehozása",
@ -431,7 +432,7 @@
"paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Másold be a receptedet. Minden sor egy új elemként lesz kezelve a listában", "paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Másold be a receptedet. Minden sor egy új elemként lesz kezelve a listában",
"recipe-markup-specification": "Receptjelölési előírás", "recipe-markup-specification": "Receptjelölési előírás",
"recipe-url": "Recept URL", "recipe-url": "Recept URL",
"recipe-html-or-json": "Recipe HTML or JSON", "recipe-html-or-json": "HTML vagy JSON recept",
"upload-a-recipe": "Recept feltöltése", "upload-a-recipe": "Recept feltöltése",
"upload-individual-zip-file": "Tölts fel egy .zíp archívumot, ami egy másik Mealie példányból lett exportálva.", "upload-individual-zip-file": "Tölts fel egy .zíp archívumot, ami egy másik Mealie példányból lett exportálva.",
"url-form-hint": "Másold be a linket a kedvenc recept weboldaladról", "url-form-hint": "Másold be a linket a kedvenc recept weboldaladról",
@ -517,6 +518,7 @@
"save-recipe-before-use": "Recept mentése használat előtt", "save-recipe-before-use": "Recept mentése használat előtt",
"section-title": "Szakasz címe", "section-title": "Szakasz címe",
"servings": "Adag", "servings": "Adag",
"serves-amount": "Adag {amount}",
"share-recipe-message": "Szeretném megossztani veled a {0} receptemet.", "share-recipe-message": "Szeretném megossztani veled a {0} receptemet.",
"show-nutrition-values": "Tápértékek megjelenítése", "show-nutrition-values": "Tápértékek megjelenítése",
"sodium-content": "Nátrium", "sodium-content": "Nátrium",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Nem sikerült hozzáadni a receptet a menütervhez", "failed-to-add-recipe-to-mealplan": "Nem sikerült hozzáadni a receptet a menütervhez",
"failed-to-add-to-list": "Nem sikerült hozzáadni a listához", "failed-to-add-to-list": "Nem sikerült hozzáadni a listához",
"yield": "Adag", "yield": "Adag",
"yields-amount-with-text": "Yields {amount} {text}",
"yield-text": "Yield Text",
"quantity": "Mennyiség", "quantity": "Mennyiség",
"choose-unit": "Válasszon mennyiségi egységet", "choose-unit": "Válasszon mennyiségi egységet",
"press-enter-to-create": "Üssön Enter-t a létrehozáshoz", "press-enter-to-create": "Üssön Enter-t a létrehozáshoz",
@ -566,13 +570,6 @@
"increase-scale-label": "Skála növelése 1-gyel", "increase-scale-label": "Skála növelése 1-gyel",
"locked": "Zárolt", "locked": "Zárolt",
"public-link": "Nyilvános link", "public-link": "Nyilvános link",
"timer": {
"kitchen-timer": "Konyhai időzítő",
"start-timer": "Időzítő elindítása",
"pause-timer": "Időzítő megállítása",
"resume-timer": "Időzítő folytatása",
"stop-timer": "Időzítő leállítása"
},
"edit-timeline-event": "Idővonal-esemény szerkesztése", "edit-timeline-event": "Idővonal-esemény szerkesztése",
"timeline": "Idővonal", "timeline": "Idővonal",
"timeline-is-empty": "Az idővonalon még semmi sincs. Próbálja meg elkészíteni ezt a receptet!", "timeline-is-empty": "Az idővonalon még semmi sincs. Próbálja meg elkészíteni ezt a receptet!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Használja az OpenAI-t az eredmények elemzésére, ahelyett, hogy a scraper könyvtárra hagyatkozna. Ha URL-címen keresztül hoz létre receptet, ez automatikusan megtörténik, ha a scraper könyvtár nem működik, ám itt manuálisan is tesztelheti.", "recipe-debugger-use-openai-description": "Használja az OpenAI-t az eredmények elemzésére, ahelyett, hogy a scraper könyvtárra hagyatkozna. Ha URL-címen keresztül hoz létre receptet, ez automatikusan megtörténik, ha a scraper könyvtár nem működik, ám itt manuálisan is tesztelheti.",
"debug": "Hibakeresés", "debug": "Hibakeresés",
"tree-view": "Fa nézet", "tree-view": "Fa nézet",
"recipe-servings": "Recept tálalások",
"recipe-yield": "Adagonkénti információk", "recipe-yield": "Adagonkénti információk",
"recipe-yield-text": "Recipe Yield Text",
"unit": "Mennyiségi egység", "unit": "Mennyiségi egység",
"upload-image": "Kép feltöltése", "upload-image": "Kép feltöltése",
"screen-awake": "Képernyő ébren tartása", "screen-awake": "Képernyő ébren tartása",
@ -662,7 +661,25 @@
"missing-food": "Hiányzó élelmiszer létrehozása: {food}", "missing-food": "Hiányzó élelmiszer létrehozása: {food}",
"no-food": "Élelmiszer nélküli" "no-food": "Élelmiszer nélküli"
}, },
"reset-servings-count": "Adagok számának visszaállítása" "reset-servings-count": "Adagok számának visszaállítása",
"not-linked-ingredients": "Kiegészítő hozzávalók"
},
"recipe-finder": {
"recipe-finder": "Receptkereső",
"recipe-finder-description": "Keressen recepteket a kéznél lévő összetevők alapján. A rendelkezésre álló eszközök alapján is szűrhet, és beállíthatja a hiányzó összetevők vagy eszközök maximális számát.",
"selected-ingredients": "Kiválasztott összetevők",
"no-ingredients-selected": "Nincsenek kiválasztott összetevők",
"missing": "Hiányzó",
"no-recipes-found": "Nem található recept",
"no-recipes-found-description": "Próbáljon meg több összetevőt hozzáadni a kereséshez, vagy állítsa be a szűrőket",
"include-ingredients-on-hand": "Beleértve a kéznél lévő összetevőket",
"include-tools-on-hand": "Beleértve a kéznél lévő eszközöket",
"max-missing-ingredients": "Maximálisan hiányzó összetevők száma",
"max-missing-tools": "Maximálisan hiányzó eszközök száma",
"selected-tools": "Kiválasztott eszközök",
"other-filters": "További szűrők",
"ready-to-make": "Előkészítve",
"almost-ready-to-make": "Majdnem készen áll"
}, },
"search": { "search": {
"advanced-search": "Részletes keresés", "advanced-search": "Részletes keresés",
@ -866,7 +883,8 @@
"you-are-offline-description": "Offline állapotban nem minden funkció érhető el. Továbbra is hozzáadhat, módosíthat és eltávolíthat elemeket, de a módosításokat nem tudja szinkronizálni a szerverrel, amíg vissza nem tér az online állapotba.", "you-are-offline-description": "Offline állapotban nem minden funkció érhető el. Továbbra is hozzáadhat, módosíthat és eltávolíthat elemeket, de a módosításokat nem tudja szinkronizálni a szerverrel, amíg vissza nem tér az online állapotba.",
"are-you-sure-you-want-to-check-all-items": "Biztos, hogy minden elemet be akar jelölni?", "are-you-sure-you-want-to-check-all-items": "Biztos, hogy minden elemet be akar jelölni?",
"are-you-sure-you-want-to-uncheck-all-items": "Biztos, hogy minden elem kijelölését visszavonja?", "are-you-sure-you-want-to-uncheck-all-items": "Biztos, hogy minden elem kijelölését visszavonja?",
"are-you-sure-you-want-to-delete-checked-items": "Biztosan törölni akarja az összes bejelölt elemet?" "are-you-sure-you-want-to-delete-checked-items": "Biztosan törölni akarja az összes bejelölt elemet?",
"no-shopping-lists-found": "Nem találhatók bevásárlólisták"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Minden recept", "all-recipes": "Minden recept",
@ -1012,7 +1030,7 @@
"administrator": "Adminisztrátor", "administrator": "Adminisztrátor",
"user-can-invite-other-to-group": "A felhasználó meghívhat másokat a csoportba", "user-can-invite-other-to-group": "A felhasználó meghívhat másokat a csoportba",
"user-can-manage-group": "A felhasználó csoportot kezelhet", "user-can-manage-group": "A felhasználó csoportot kezelhet",
"user-can-manage-household": "User can manage household", "user-can-manage-household": "A felhasználó a háztartást kezelheti",
"user-can-organize-group-data": "Felhasználó szerkesztheti a csoport adatait", "user-can-organize-group-data": "Felhasználó szerkesztheti a csoport adatait",
"enable-advanced-features": "Haladó funkciók engedélyezése", "enable-advanced-features": "Haladó funkciók engedélyezése",
"it-looks-like-this-is-your-first-time-logging-in": "Úgy tűnik, most jelentkezik be először.", "it-looks-like-this-is-your-first-time-logging-in": "Úgy tűnik, most jelentkezik be először.",
@ -1272,12 +1290,13 @@
"debug-openai-services-description": "Ezt az oldalt az OpenAI szolgáltatások hibakeresésére használhatja. Itt tesztelheti az OpenAI-kapcsolatot, és láthatja az eredményeket. Ha engedélyezte a képszolgáltatásokat, akkor képet is megadhat.", "debug-openai-services-description": "Ezt az oldalt az OpenAI szolgáltatások hibakeresésére használhatja. Itt tesztelheti az OpenAI-kapcsolatot, és láthatja az eredményeket. Ha engedélyezte a képszolgáltatásokat, akkor képet is megadhat.",
"run-test": "Teszt futtatása", "run-test": "Teszt futtatása",
"test-results": "Teszt eredmények", "test-results": "Teszt eredmények",
"group-delete-note": "Groups with users or households cannot be deleted", "group-delete-note": "A felhasználókkal vagy háztartásokkal rendelkező csoportok nem törölhetők",
"household-delete-note": "Households with users cannot be deleted" "household-delete-note": "A felhasználókkal rendelkező háztartásokat nem törölhetők"
}, },
"profile": { "profile": {
"welcome-user": "👋 Üdvözöljük, {0}!", "welcome-user": "👋 Üdvözöljük, {0}!",
"description": "Profiljának, receptjeinek és csoportbeállításainak kezelése.", "description": "Profiljának, receptjeinek és csoportbeállításainak kezelése.",
"invite-link": "Meghívó link",
"get-invite-link": "Meghívó link beszerzése", "get-invite-link": "Meghívó link beszerzése",
"get-public-link": "Nyilvánon link beszerzése", "get-public-link": "Nyilvánon link beszerzése",
"account-summary": "Fiók áttekintése", "account-summary": "Fiók áttekintése",
@ -1285,7 +1304,7 @@
"group-statistics": "Csoportstatisztikák", "group-statistics": "Csoportstatisztikák",
"group-statistics-description": "Az Ön csoportstatisztikái betekintést nyújtanak abba, hogyan használja a Mealie-t.", "group-statistics-description": "Az Ön csoportstatisztikái betekintést nyújtanak abba, hogyan használja a Mealie-t.",
"household-statistics": "Háztartási statisztikák", "household-statistics": "Háztartási statisztikák",
"household-statistics-description": "Your Household Statistics provide some insight how you're using Mealie.", "household-statistics-description": "Az Ön háztartási statisztikái betekintést nyújtanak abba, hogyan használja a Mealie-t.",
"storage-capacity": "Tárhely mérete", "storage-capacity": "Tárhely mérete",
"storage-capacity-description": "A tárhely kapacitása az Ön által feltöltött képek és eszközök számításából adódik.", "storage-capacity-description": "A tárhely kapacitása az Ön által feltöltött képek és eszközök számításából adódik.",
"personal": "Személyes", "personal": "Személyes",
@ -1295,13 +1314,13 @@
"api-tokens-description": "API kulcsok kezelése külső alkalmazásokból.", "api-tokens-description": "API kulcsok kezelése külső alkalmazásokból.",
"group-description": "Ezek az elemek a csoporton belül megosztottak. Az egyik szerkesztése az egész csoport számára megváltoztatja azt!", "group-description": "Ezek az elemek a csoporton belül megosztottak. Az egyik szerkesztése az egész csoport számára megváltoztatja azt!",
"group-settings": "Csoport beállításai", "group-settings": "Csoport beállításai",
"group-settings-description": "Manage your common group settings, like privacy settings.", "group-settings-description": "Közös csoportbeállítások, például adatvédelmi beállítások kezelése.",
"household-description": "These items are shared within your household. Editing one of them will change it for the whole household!", "household-description": "Ezek a tárgyak a háztartáson belül közösek. Egyik szerkesztése az egész háztartás számára módosítja!",
"household-settings": "Household Settings", "household-settings": "Háztartás beállításai",
"household-settings-description": "Manage your household settings, like mealplan and privacy settings.", "household-settings-description": "Közös csoportbeállítások, például menüterv és adatvédelmi beállítások kezelése.",
"cookbooks-description": "Kezelje a receptkategóriák gyűjteményét, és hozzon létre oldalakat számukra.", "cookbooks-description": "Kezelje a receptkategóriák gyűjteményét, és hozzon létre oldalakat számukra.",
"members": "Tagok", "members": "Tagok",
"members-description": "See who's in your household and manage their permissions.", "members-description": "Láthatja, hogy ki tartozik a háztartásához, és kezelheti jogosultságaikat.",
"webhooks-description": "Állítson be webhookokat, amelyek azokon a napokon lépnek működésbe, amikorra a menüterveket ütemezte.", "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": "Értesítések",
"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.", "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.",
@ -1322,11 +1341,13 @@
"manage-members": "Tagok Kezelése", "manage-members": "Tagok Kezelése",
"manage-webhooks": "Webhookok kezelése", "manage-webhooks": "Webhookok kezelése",
"manage-notifiers": "Értesítések kezelése", "manage-notifiers": "Értesítések kezelése",
"manage-data-migrations": "Adatok migrációjának kezelése" "manage-data-migrations": "Adatmigráció kezelése"
}, },
"cookbook": { "cookbook": {
"cookbooks": "Szakácskönyvek", "cookbooks": "Szakácskönyvek",
"description": "A szakácskönyvek egy másik módja a receptek rendszerezésének a receptek, szervezők és egyéb szűrők keresztmetszeteinek létrehozásával. Egy szakácskönyv létrehozása egy bejegyzést ad az oldalsávhoz, és a kiválasztott szűrőkkel rendelkező összes recept megjelenik a szakácskönyvben.", "description": "A szakácskönyvek egy másik módja a receptek rendszerezésének a receptek, szervezők és egyéb szűrők keresztmetszeteinek létrehozásával. Egy szakácskönyv létrehozása egy bejegyzést ad az oldalsávhoz, és a kiválasztott szűrőkkel rendelkező összes recept megjelenik a szakácskönyvben.",
"hide-cookbooks-from-other-households": "Szakácskönyvek elrejtése más háztartásoktól",
"hide-cookbooks-from-other-households-description": "Ha engedélyezve van, csak az Ön háztartásának szakácskönyvei jelennek meg az oldalsávban",
"public-cookbook": "Nyilvános szakácskönyv", "public-cookbook": "Nyilvános szakácskönyv",
"public-cookbook-description": "A nyilvános szakácskönyvek megoszthatók a nem mealie felhasználókkal, és megjelennek a csoportod oldalán.", "public-cookbook-description": "A nyilvános szakácskönyvek megoszthatók a nem mealie felhasználókkal, és megjelennek a csoportod oldalán.",
"filter-options": "Szűrési beállítások", "filter-options": "Szűrési beállítások",

View file

@ -1,14 +1,14 @@
{ {
"about": { "about": {
"about": "About", "about": "Um",
"about-mealie": "About Mealie", "about-mealie": "Um Mealie",
"api-docs": "API Docs", "api-docs": "API skjöl",
"api-port": "API Port", "api-port": "API port",
"application-mode": "Application Mode", "application-mode": "Application Mode",
"database-type": "Database Type", "database-type": "Tegund gagnagrunnar",
"database-url": "Database URL", "database-url": "Slóð gagnagrunnar",
"default-group": "Default Group", "default-group": "Sjálfgefinn hópur",
"default-household": "Default Household", "default-household": "Sjálfgefið heimili",
"demo": "Demo", "demo": "Demo",
"demo-status": "Demo Status", "demo-status": "Demo Status",
"development": "Development", "development": "Development",
@ -20,16 +20,16 @@
"not-demo": "Not Demo", "not-demo": "Not Demo",
"portfolio": "Portfolio", "portfolio": "Portfolio",
"production": "Production", "production": "Production",
"support": "Support", "support": "Aðstoð",
"version": "Version", "version": "Útgáfa",
"unknown-version": "unknown", "unknown-version": "unknown",
"sponsor": "Sponsor" "sponsor": "Sponsor"
}, },
"asset": { "asset": {
"assets": "Assets", "assets": "Assets",
"code": "Code", "code": "Kóði",
"file": "File", "file": "Skrá",
"image": "Image", "image": "Mynd",
"new-asset": "New Asset", "new-asset": "New Asset",
"pdf": "PDF", "pdf": "PDF",
"recipe": "Recipe", "recipe": "Recipe",
@ -73,7 +73,7 @@
"what-events": "What events should this notifier subscribe to?", "what-events": "What events should this notifier subscribe to?",
"user-events": "User Events", "user-events": "User Events",
"mealplan-events": "Mealplan Events", "mealplan-events": "Mealplan Events",
"when-a-user-in-your-group-creates-a-new-mealplan": "When a user in your group creates a new mealplan", "when-a-user-in-your-group-creates-a-new-mealplan": "Þegar notandi í þínum hópi býr til nýtt matarplan",
"shopping-list-events": "Shopping List Events", "shopping-list-events": "Shopping List Events",
"cookbook-events": "Cookbook Events", "cookbook-events": "Cookbook Events",
"tag-events": "Tag Events", "tag-events": "Tag Events",
@ -82,25 +82,25 @@
"recipe-events": "Recipe Events" "recipe-events": "Recipe Events"
}, },
"general": { "general": {
"add": "Add", "add": "Bæta við",
"cancel": "Cancel", "cancel": "Hætta við",
"clear": "Clear", "clear": "Hreinsa",
"close": "Close", "close": "Loka",
"confirm": "Confirm", "confirm": "Staðfesta",
"confirm-how-does-everything-look": "How does everything look?", "confirm-how-does-everything-look": "Hvernig lítur allt út?",
"confirm-delete-generic": "Are you sure you want to delete this?", "confirm-delete-generic": "Ertu viss um að þú viljir eyða þessu?",
"copied_message": "Copied!", "copied_message": "Afritað!",
"create": "Create", "create": "Stofna",
"created": "Created", "created": "Stofnað",
"custom": "Custom", "custom": "Custom",
"dashboard": "Dashboard", "dashboard": "Dashboard",
"delete": "Delete", "delete": "Eyða",
"disabled": "Disabled", "disabled": "Afvirkjað",
"download": "Download", "download": "Sækja",
"duplicate": "Duplicate", "duplicate": "Tvöfalda",
"edit": "Edit", "edit": "Breyta",
"enabled": "Enabled", "enabled": "Leyft",
"exception": "Exception", "exception": "Undantekningar",
"failed-count": "Failed: {count}", "failed-count": "Failed: {count}",
"failure-uploading-file": "Failure uploading file", "failure-uploading-file": "Failure uploading file",
"favorites": "Favorites", "favorites": "Favorites",
@ -276,7 +276,8 @@
"admin-group-management": "Admin Group Management", "admin-group-management": "Admin Group Management",
"admin-group-management-text": "Changes to this group will be reflected immediately.", "admin-group-management-text": "Changes to this group will be reflected immediately.",
"group-id-value": "Group Id: {0}", "group-id-value": "Group Id: {0}",
"total-households": "Total Households" "total-households": "Total Households",
"you-must-select-a-group-before-selecting-a-household": "You must select a group before selecting a household"
}, },
"household": { "household": {
"household": "Household", "household": "Household",
@ -517,6 +518,7 @@
"save-recipe-before-use": "Save recipe before use", "save-recipe-before-use": "Save recipe before use",
"section-title": "Section Title", "section-title": "Section Title",
"servings": "Servings", "servings": "Servings",
"serves-amount": "Serves {amount}",
"share-recipe-message": "I wanted to share my {0} recipe with you.", "share-recipe-message": "I wanted to share my {0} recipe with you.",
"show-nutrition-values": "Show Nutrition Values", "show-nutrition-values": "Show Nutrition Values",
"sodium-content": "Sodium", "sodium-content": "Sodium",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Failed to add recipe to mealplan", "failed-to-add-recipe-to-mealplan": "Failed to add recipe to mealplan",
"failed-to-add-to-list": "Failed to add to list", "failed-to-add-to-list": "Failed to add to list",
"yield": "Yield", "yield": "Yield",
"yields-amount-with-text": "Yields {amount} {text}",
"yield-text": "Yield Text",
"quantity": "Quantity", "quantity": "Quantity",
"choose-unit": "Choose Unit", "choose-unit": "Choose Unit",
"press-enter-to-create": "Press Enter to Create", "press-enter-to-create": "Press Enter to Create",
@ -566,13 +570,6 @@
"increase-scale-label": "Increase Scale by 1", "increase-scale-label": "Increase Scale by 1",
"locked": "Locked", "locked": "Locked",
"public-link": "Public Link", "public-link": "Public Link",
"timer": {
"kitchen-timer": "Kitchen Timer",
"start-timer": "Start Timer",
"pause-timer": "Pause Timer",
"resume-timer": "Resume Timer",
"stop-timer": "Stop Timer"
},
"edit-timeline-event": "Edit Timeline Event", "edit-timeline-event": "Edit Timeline Event",
"timeline": "Timeline", "timeline": "Timeline",
"timeline-is-empty": "Nothing on the timeline yet. Try making this recipe!", "timeline-is-empty": "Nothing on the timeline yet. Try making this recipe!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.", "recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.",
"debug": "Debug", "debug": "Debug",
"tree-view": "Tree View", "tree-view": "Tree View",
"recipe-servings": "Recipe Servings",
"recipe-yield": "Recipe Yield", "recipe-yield": "Recipe Yield",
"recipe-yield-text": "Recipe Yield Text",
"unit": "Unit", "unit": "Unit",
"upload-image": "Upload image", "upload-image": "Upload image",
"screen-awake": "Keep Screen Awake", "screen-awake": "Keep Screen Awake",
@ -662,7 +661,25 @@
"missing-food": "Create missing food: {food}", "missing-food": "Create missing food: {food}",
"no-food": "No Food" "no-food": "No Food"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Reset Servings Count",
"not-linked-ingredients": "Additional Ingredients"
},
"recipe-finder": {
"recipe-finder": "Recipe Finder",
"recipe-finder-description": "Search for recipes based on ingredients you have on hand. You can also filter by tools you have available, and set a maximum number of missing ingredients or tools.",
"selected-ingredients": "Selected Ingredients",
"no-ingredients-selected": "No ingredients selected",
"missing": "Missing",
"no-recipes-found": "No recipes found",
"no-recipes-found-description": "Try adding more ingredients to your search or adjusting your filters",
"include-ingredients-on-hand": "Include Ingredients On Hand",
"include-tools-on-hand": "Include Tools On Hand",
"max-missing-ingredients": "Max Missing Ingredients",
"max-missing-tools": "Max Missing Tools",
"selected-tools": "Selected Tools",
"other-filters": "Other Filters",
"ready-to-make": "Ready to Make",
"almost-ready-to-make": "Almost Ready to Make"
}, },
"search": { "search": {
"advanced-search": "Advanced Search", "advanced-search": "Advanced Search",
@ -866,7 +883,8 @@
"you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.", "you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.",
"are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?", "are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?",
"are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?", "are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?",
"are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?" "are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?",
"no-shopping-lists-found": "No Shopping Lists Found"
}, },
"sidebar": { "sidebar": {
"all-recipes": "All Recipes", "all-recipes": "All Recipes",
@ -1278,6 +1296,7 @@
"profile": { "profile": {
"welcome-user": "👋 Welcome, {0}!", "welcome-user": "👋 Welcome, {0}!",
"description": "Manage your profile, recipes, and group settings.", "description": "Manage your profile, recipes, and group settings.",
"invite-link": "Invite Link",
"get-invite-link": "Get Invite Link", "get-invite-link": "Get Invite Link",
"get-public-link": "Get Public Link", "get-public-link": "Get Public Link",
"account-summary": "Account Summary", "account-summary": "Account Summary",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Cookbooks", "cookbooks": "Cookbooks",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.",
"hide-cookbooks-from-other-households": "Hide Cookbooks from Other Households",
"hide-cookbooks-from-other-households-description": "When enabled, only cookbooks from your household will appear on the sidebar",
"public-cookbook": "Public Cookbook", "public-cookbook": "Public Cookbook",
"public-cookbook-description": "Public Cookbooks can be shared with non-mealie users and will be displayed on your groups page.", "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": "Filter Options",

View file

@ -182,7 +182,7 @@
"date": "Data", "date": "Data",
"id": "Id", "id": "Id",
"owner": "Proprietario", "owner": "Proprietario",
"change-owner": "Change Owner", "change-owner": "Cambia Proprietario",
"date-added": "Data Aggiunta", "date-added": "Data Aggiunta",
"none": "Nessuno", "none": "Nessuno",
"run": "Avvia", "run": "Avvia",
@ -214,10 +214,10 @@
"confirm-delete-generic-items": "Sei sicuro di voler eliminare i seguenti elementi?", "confirm-delete-generic-items": "Sei sicuro di voler eliminare i seguenti elementi?",
"organizers": "Organizzatori", "organizers": "Organizzatori",
"caution": "Attenzione", "caution": "Attenzione",
"show-advanced": "Show Advanced", "show-advanced": "Mostra Avanzate",
"add-field": "Add Field", "add-field": "Aggiungi campo",
"date-created": "Date Created", "date-created": "Data di Creazione",
"date-updated": "Date Updated" "date-updated": "Data di aggiornamento"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Sei sicuro di volerlo eliminare <b>{groupName}<b/>'?", "are-you-sure-you-want-to-delete-the-group": "Sei sicuro di volerlo eliminare <b>{groupName}<b/>'?",
@ -276,7 +276,8 @@
"admin-group-management": "Gestione Gruppo Amministratore", "admin-group-management": "Gestione Gruppo Amministratore",
"admin-group-management-text": "Le modifiche a questo gruppo si rifletteranno immediatamente.", "admin-group-management-text": "Le modifiche a questo gruppo si rifletteranno immediatamente.",
"group-id-value": "Id Gruppo: {0}", "group-id-value": "Id Gruppo: {0}",
"total-households": "Famiglie Totali" "total-households": "Famiglie Totali",
"you-must-select-a-group-before-selecting-a-household": "Devi selezionare un gruppo prima di selezionare una famiglia"
}, },
"household": { "household": {
"household": "Famiglia", "household": "Famiglia",
@ -356,7 +357,7 @@
"for-type-meal-types": "per {0} tipi di pasto", "for-type-meal-types": "per {0} tipi di pasto",
"meal-plan-rules": "Regole del piano alimentare", "meal-plan-rules": "Regole del piano alimentare",
"new-rule": "Nuova regola", "new-rule": "Nuova regola",
"meal-plan-rules-description": "You can create rules for auto selecting recipes for your meal plans. These rules are used by the server to determine the random pool of recipes to select from when creating meal plans. Note that if rules have the same day/type constraints then the rule filters will be merged. In practice, it's unnecessary to create duplicate rules, but it's possible to do so.", "meal-plan-rules-description": "Si possono creare regole per la selezione automatica delle ricette per i piani alimentari. Queste regole vengono utilizzate dal server per determinare l'insieme casuale di ricette da cui prelevare quando si creano i piani. Si noti che se le regole hanno gli stessi vincoli giorno/tipo, i filtri delle regole verranno uniti. In pratica, non è necessario creare regole duplicate, ma è comunque possibile farlo.",
"new-rule-description": "Quando si crea una nuova regola per un piano alimentare è possibile limitare la sua applicazione ad un giorno specifico della settimana e/o un tipo specifico di pasto. Per applicare una regola a tutti i giorni o a tutti i tipi di pasto, è possibile impostare la regola a \"Qualsiasi\", applicandola a tutti i possibili valori per il tipo di giorno e/o di pasto.", "new-rule-description": "Quando si crea una nuova regola per un piano alimentare è possibile limitare la sua applicazione ad un giorno specifico della settimana e/o un tipo specifico di pasto. Per applicare una regola a tutti i giorni o a tutti i tipi di pasto, è possibile impostare la regola a \"Qualsiasi\", applicandola a tutti i possibili valori per il tipo di giorno e/o di pasto.",
"recipe-rules": "Regole per le ricette", "recipe-rules": "Regole per le ricette",
"applies-to-all-days": "Si applica a ogni giorno", "applies-to-all-days": "Si applica a ogni giorno",
@ -466,7 +467,7 @@
"calories-suffix": "calorie", "calories-suffix": "calorie",
"carbohydrate-content": "Carboidrati", "carbohydrate-content": "Carboidrati",
"categories": "Categorie", "categories": "Categorie",
"cholesterol-content": "Cholesterol", "cholesterol-content": "Colesterolo",
"comment-action": "Commento", "comment-action": "Commento",
"comment": "Commento", "comment": "Commento",
"comments": "Commenti", "comments": "Commenti",
@ -513,10 +514,11 @@
"recipe-updated": "Ricetta aggiornata", "recipe-updated": "Ricetta aggiornata",
"remove-from-favorites": "Rimuovi dai Preferiti", "remove-from-favorites": "Rimuovi dai Preferiti",
"remove-section": "Rimuovi Sezione", "remove-section": "Rimuovi Sezione",
"saturated-fat-content": "Saturated fat", "saturated-fat-content": "Grassi saturi",
"save-recipe-before-use": "Salva la ricetta prima dell'uso", "save-recipe-before-use": "Salva la ricetta prima dell'uso",
"section-title": "Titolo Sezione", "section-title": "Titolo Sezione",
"servings": "Portate", "servings": "Porzioni",
"serves-amount": "Porzioni {amount}",
"share-recipe-message": "Volevo condividere la mia {0} ricetta con te.", "share-recipe-message": "Volevo condividere la mia {0} ricetta con te.",
"show-nutrition-values": "Mostra Valori Nutrizionali", "show-nutrition-values": "Mostra Valori Nutrizionali",
"sodium-content": "Sodio", "sodium-content": "Sodio",
@ -524,9 +526,9 @@
"sugar-content": "Zuccheri", "sugar-content": "Zuccheri",
"title": "Titolo", "title": "Titolo",
"total-time": "Tempo Totale", "total-time": "Tempo Totale",
"trans-fat-content": "Trans-fat", "trans-fat-content": "Grassi trans",
"unable-to-delete-recipe": "Impossibile eliminare ricetta", "unable-to-delete-recipe": "Impossibile eliminare ricetta",
"unsaturated-fat-content": "Unsaturated fat", "unsaturated-fat-content": "Grassi insaturi",
"no-recipe": "Nessuna Ricetta", "no-recipe": "Nessuna Ricetta",
"locked-by-owner": "Bloccato dal Proprietario", "locked-by-owner": "Bloccato dal Proprietario",
"join-the-conversation": "Unisciti alla conversazione", "join-the-conversation": "Unisciti alla conversazione",
@ -544,7 +546,9 @@
"failed-to-add-recipes-to-list": "Impossibile aggiungere la ricetta alla lista", "failed-to-add-recipes-to-list": "Impossibile aggiungere la ricetta alla lista",
"failed-to-add-recipe-to-mealplan": "Impossibile aggiungere la ricetta al piano alimentare", "failed-to-add-recipe-to-mealplan": "Impossibile aggiungere la ricetta al piano alimentare",
"failed-to-add-to-list": "Errore durante l'aggiunta alla lista", "failed-to-add-to-list": "Errore durante l'aggiunta alla lista",
"yield": "Porzioni", "yield": "Quantità prodotta",
"yields-amount-with-text": "Quantità prodotta: {amount} {text}",
"yield-text": "Unità della quantità prodotta",
"quantity": "Quantità", "quantity": "Quantità",
"choose-unit": "Scegli Unità", "choose-unit": "Scegli Unità",
"press-enter-to-create": "Premi invio per creare", "press-enter-to-create": "Premi invio per creare",
@ -566,13 +570,6 @@
"increase-scale-label": "Aumenta la scala di 1", "increase-scale-label": "Aumenta la scala di 1",
"locked": "Bloccato", "locked": "Bloccato",
"public-link": "Link Pubblico", "public-link": "Link Pubblico",
"timer": {
"kitchen-timer": "Contaminuti da cucina",
"start-timer": "Avvia timer",
"pause-timer": "Metti in pausa il contaminuti",
"resume-timer": "Riprendi il contaminuti",
"stop-timer": "Arresta il Timer"
},
"edit-timeline-event": "Modifica evento sulla linea temporale", "edit-timeline-event": "Modifica evento sulla linea temporale",
"timeline": "Linea temporale", "timeline": "Linea temporale",
"timeline-is-empty": "Niente sulla linea temporale. Prova a fare questa ricetta!", "timeline-is-empty": "Niente sulla linea temporale. Prova a fare questa ricetta!",
@ -615,15 +612,15 @@
"scrape-recipe-have-a-lot-of-recipes": "Hai un sacco di ricette che vuoi importare contemporaneamente?", "scrape-recipe-have-a-lot-of-recipes": "Hai un sacco di ricette che vuoi importare contemporaneamente?",
"scrape-recipe-suggest-bulk-importer": "Prova l'importatore massivo", "scrape-recipe-suggest-bulk-importer": "Prova l'importatore massivo",
"scrape-recipe-have-raw-html-or-json-data": "Hai dei dati grezzi HTML o JSON?", "scrape-recipe-have-raw-html-or-json-data": "Hai dei dati grezzi HTML o JSON?",
"scrape-recipe-you-can-import-from-raw-data-directly": "You can import from raw data directly", "scrape-recipe-you-can-import-from-raw-data-directly": "È possibile importare direttamente dai dati grezzi",
"import-original-keywords-as-tags": "Importa parole chiave originali come tag", "import-original-keywords-as-tags": "Importa parole chiave originali come tag",
"stay-in-edit-mode": "Rimani in modalità Modifica", "stay-in-edit-mode": "Rimani in modalità Modifica",
"import-from-zip": "Importa da Zip", "import-from-zip": "Importa da Zip",
"import-from-zip-description": "Importa una singola ricetta esportata da un'altra istanza di Mealie.", "import-from-zip-description": "Importa una singola ricetta esportata da un'altra istanza di Mealie.",
"import-from-html-or-json": "Import from HTML or JSON", "import-from-html-or-json": "Importa da HTML o JSON",
"import-from-html-or-json-description": "Import a single recipe from raw HTML or JSON. This is useful if you have a recipe from a site that Mealie can't scrape normally, or from some other external source.", "import-from-html-or-json-description": "Importa una singola ricetta da HTML o JSON grezzi. Utile se si ha una ricetta proveniente da siti da cui solitamente Mealie non riesce a importare, o da qualche altra fonte esterna.",
"json-import-format-description-colon": "To import via JSON, it must be in valid format:", "json-import-format-description-colon": "Per importare tramite JSON, deve essere in un formato valido:",
"json-editor": "JSON Editor", "json-editor": "Editor JSON",
"zip-files-must-have-been-exported-from-mealie": "I file .zip devono essere stati esportati da Mealie", "zip-files-must-have-been-exported-from-mealie": "I file .zip devono essere stati esportati da Mealie",
"create-a-recipe-by-uploading-a-scan": "Crea una ricetta caricando una scansione.", "create-a-recipe-by-uploading-a-scan": "Crea una ricetta caricando una scansione.",
"upload-a-png-image-from-a-recipe-book": "Carica un'immagine png da un libro di ricette", "upload-a-png-image-from-a-recipe-book": "Carica un'immagine png da un libro di ricette",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Usa OpenAI per analizzare i risultati invece di affidarsi alla libreria scraper. Quando si crea una ricetta tramite URL, questo viene fatto automaticamente se la libreria scraper fallisce, ma è possibile testarlo manualmente qui.", "recipe-debugger-use-openai-description": "Usa OpenAI per analizzare i risultati invece di affidarsi alla libreria scraper. Quando si crea una ricetta tramite URL, questo viene fatto automaticamente se la libreria scraper fallisce, ma è possibile testarlo manualmente qui.",
"debug": "Debug", "debug": "Debug",
"tree-view": "Visualizzazione ad Albero", "tree-view": "Visualizzazione ad Albero",
"recipe-servings": "Porzioni ricetta",
"recipe-yield": "Resa Ricetta", "recipe-yield": "Resa Ricetta",
"recipe-yield-text": "Testo del rendimento ricetta",
"unit": "Unità", "unit": "Unità",
"upload-image": "Carica immagine", "upload-image": "Carica immagine",
"screen-awake": "Mantieni lo schermo acceso", "screen-awake": "Mantieni lo schermo acceso",
@ -662,7 +661,25 @@
"missing-food": "Crea cibo mancante: {food}", "missing-food": "Crea cibo mancante: {food}",
"no-food": "Nessun Alimento" "no-food": "Nessun Alimento"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Reimposta conteggio porzioni",
"not-linked-ingredients": "Ingredienti Aggiuntivi"
},
"recipe-finder": {
"recipe-finder": "Trova ricette",
"recipe-finder-description": "Cerca ricette in base agli ingredienti a portata di mano. Si può anche filtrare in base agli utensili che si ha a disposizione e impostare un numero massimo d'ingredienti o utensili mancanti.",
"selected-ingredients": "Seleziona ingredienti",
"no-ingredients-selected": "Nessun ingrediente selezionato",
"missing": "Mancante",
"no-recipes-found": "Nessuna ricetta trovata",
"no-recipes-found-description": "Prova ad aggiungere altri ingredienti alla tua ricerca o a regolare i tuoi filtri",
"include-ingredients-on-hand": "Includi ingredienti a mano",
"include-tools-on-hand": "Includi strumenti a mano",
"max-missing-ingredients": "Max Ingredienti Mancanti",
"max-missing-tools": "Massimo Strumenti Mancanti",
"selected-tools": "Strumenti Selezionati",
"other-filters": "Altri filtri",
"ready-to-make": "Pronto da fare",
"almost-ready-to-make": "Quasi pronto da fare"
}, },
"search": { "search": {
"advanced-search": "Ricerca Avanzata", "advanced-search": "Ricerca Avanzata",
@ -866,7 +883,8 @@
"you-are-offline-description": "Non tutte le funzioni sono disponibili quando non sei in linea. Puoi ancora aggiungere, modificare e rimuovere elementi, ma non sarai in grado di sincronizzare le modifiche con il server fino a quando non sarai di nuovo in linea.", "you-are-offline-description": "Non tutte le funzioni sono disponibili quando non sei in linea. Puoi ancora aggiungere, modificare e rimuovere elementi, ma non sarai in grado di sincronizzare le modifiche con il server fino a quando non sarai di nuovo in linea.",
"are-you-sure-you-want-to-check-all-items": "Sei sicuro di voler tutti gli elementi?", "are-you-sure-you-want-to-check-all-items": "Sei sicuro di voler tutti gli elementi?",
"are-you-sure-you-want-to-uncheck-all-items": "Sei sicuro di voler deselezionare tutti gli elementi?", "are-you-sure-you-want-to-uncheck-all-items": "Sei sicuro di voler deselezionare tutti gli elementi?",
"are-you-sure-you-want-to-delete-checked-items": "Sei sicuro di voler rimuovere tutti gli articoli selezionati?" "are-you-sure-you-want-to-delete-checked-items": "Sei sicuro di voler rimuovere tutti gli articoli selezionati?",
"no-shopping-lists-found": "Nessuna lista della spesa trovata"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Ricette", "all-recipes": "Ricette",
@ -1272,12 +1290,13 @@
"debug-openai-services-description": "Usa questa pagina per fare debug dei servizi OpenAI. Puoi testare la tua connessione OpenAI e vedere i risultati qui. Se si dispone di servizi di immagine abilitati, è anche possibile fornire un'immagine.", "debug-openai-services-description": "Usa questa pagina per fare debug dei servizi OpenAI. Puoi testare la tua connessione OpenAI e vedere i risultati qui. Se si dispone di servizi di immagine abilitati, è anche possibile fornire un'immagine.",
"run-test": "Esegui test", "run-test": "Esegui test",
"test-results": "Risultati dei test", "test-results": "Risultati dei test",
"group-delete-note": "Groups with users or households cannot be deleted", "group-delete-note": "I gruppi con utenti o famiglie non possono essere eliminati",
"household-delete-note": "Households with users cannot be deleted" "household-delete-note": "Le famiglie con utenti non possono essere eliminate"
}, },
"profile": { "profile": {
"welcome-user": "👋 Benvenutǝ, {0}!", "welcome-user": "👋 Benvenutǝ, {0}!",
"description": "Gestisci il tuo profilo, le ricette e le impostazioni di gruppo.", "description": "Gestisci il tuo profilo, le ricette e le impostazioni di gruppo.",
"invite-link": "Collegamento d'invito",
"get-invite-link": "Ottieni Link Di Invito", "get-invite-link": "Ottieni Link Di Invito",
"get-public-link": "Ottieni link pubblico", "get-public-link": "Ottieni link pubblico",
"account-summary": "Riepilogo Account", "account-summary": "Riepilogo Account",
@ -1326,7 +1345,9 @@
}, },
"cookbook": { "cookbook": {
"cookbooks": "Ricettari", "cookbooks": "Ricettari",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "I libri di cucina sono un altro modo per organizzare le ricette creando insiemi di ricette, ordinamenti e altri filtri. La creazione di un libro di cucina aggiungerà una voce alla barra laterale e tutte le ricette con i filtri scelti verranno visualizzate nel libro di cucina.",
"hide-cookbooks-from-other-households": "Nascondi i libri di cucina delle altre famiglie",
"hide-cookbooks-from-other-households-description": "Se abilitata, nella barra laterale appariranno solo libri di cucina della propria famiglia",
"public-cookbook": "Ricettario Pubblico", "public-cookbook": "Ricettario Pubblico",
"public-cookbook-description": "I ricettari pubblici possono essere condivisi con gli utenti non-mealie e saranno visualizzati nella pagina dei gruppi.", "public-cookbook-description": "I ricettari pubblici possono essere condivisi con gli utenti non-mealie e saranno visualizzati nella pagina dei gruppi.",
"filter-options": "Opzioni Filtro", "filter-options": "Opzioni Filtro",
@ -1342,25 +1363,25 @@
}, },
"query-filter": { "query-filter": {
"logical-operators": { "logical-operators": {
"and": "AND", "and": "E",
"or": "OR" "or": "O"
}, },
"relational-operators": { "relational-operators": {
"equals": "equals", "equals": "è uguale",
"does-not-equal": "does not equal", "does-not-equal": "è diverso",
"is-greater-than": "is greater than", "is-greater-than": "è maggiore di",
"is-greater-than-or-equal-to": "is greater than or equal to", "is-greater-than-or-equal-to": "è maggiore o uguale di",
"is-less-than": "is less than", "is-less-than": "è minore di",
"is-less-than-or-equal-to": "is less than or equal to" "is-less-than-or-equal-to": "è minore o uguale di"
}, },
"relational-keywords": { "relational-keywords": {
"is": "is", "is": "è",
"is-not": "is not", "is-not": "non è",
"is-one-of": "is one of", "is-one-of": "è uno di",
"is-not-one-of": "is not one of", "is-not-one-of": "non è uno di",
"contains-all-of": "contains all of", "contains-all-of": "contiene tutti i",
"is-like": "is like", "is-like": "è simile",
"is-not-like": "is not like" "is-not-like": "non è come"
} }
} }
} }

View file

@ -276,7 +276,8 @@
"admin-group-management": "管理グループ管理", "admin-group-management": "管理グループ管理",
"admin-group-management-text": "このグループへの変更はすぐに反映されます。", "admin-group-management-text": "このグループへの変更はすぐに反映されます。",
"group-id-value": "グループID: {0}", "group-id-value": "グループID: {0}",
"total-households": "世帯数" "total-households": "世帯数",
"you-must-select-a-group-before-selecting-a-household": "世帯を選択する前にグループを選択する必要があります"
}, },
"household": { "household": {
"household": "世帯", "household": "世帯",
@ -517,6 +518,7 @@
"save-recipe-before-use": "使用する前にレシピを保存する", "save-recipe-before-use": "使用する前にレシピを保存する",
"section-title": "手順のタイトル", "section-title": "手順のタイトル",
"servings": "人前", "servings": "人前",
"serves-amount": "役立つ {amount}",
"share-recipe-message": "{0} レシピをあなたと共有したいと思っています。", "share-recipe-message": "{0} レシピをあなたと共有したいと思っています。",
"show-nutrition-values": "栄養価を表示", "show-nutrition-values": "栄養価を表示",
"sodium-content": "ナトリウム", "sodium-content": "ナトリウム",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "レシピを献立に追加する事に失敗しました。", "failed-to-add-recipe-to-mealplan": "レシピを献立に追加する事に失敗しました。",
"failed-to-add-to-list": "リストに追加できませんでした", "failed-to-add-to-list": "リストに追加できませんでした",
"yield": "人分", "yield": "人分",
"yields-amount-with-text": "収益は{amount} {text}",
"yield-text": "収入テキスト",
"quantity": "分量", "quantity": "分量",
"choose-unit": "単位を選択", "choose-unit": "単位を選択",
"press-enter-to-create": "Enterキーを押して作成", "press-enter-to-create": "Enterキーを押して作成",
@ -566,13 +570,6 @@
"increase-scale-label": "スケールを 1 ずつ増やす", "increase-scale-label": "スケールを 1 ずつ増やす",
"locked": "ロック済み", "locked": "ロック済み",
"public-link": "公開リンク", "public-link": "公開リンク",
"timer": {
"kitchen-timer": "キッチンタイマー",
"start-timer": "タイマー開始",
"pause-timer": "タイマーを一時停止",
"resume-timer": "タイマーを再開",
"stop-timer": "タイマーを停止"
},
"edit-timeline-event": "タイムラインイベントの編集", "edit-timeline-event": "タイムラインイベントの編集",
"timeline": "タイムライン", "timeline": "タイムライン",
"timeline-is-empty": "タイムラインにはまだ何もありません。レシピを作ってみてください!", "timeline-is-empty": "タイムラインにはまだ何もありません。レシピを作ってみてください!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "スクレーパーライブラリに依存するのではなく、結果を解析するためにOpenAIを使用してください。 URL経由でレシピを作成する場合は、スクレーパーライブラリが失敗した場合に自動的に行われますが、ここで手動でテストすることができます。", "recipe-debugger-use-openai-description": "スクレーパーライブラリに依存するのではなく、結果を解析するためにOpenAIを使用してください。 URL経由でレシピを作成する場合は、スクレーパーライブラリが失敗した場合に自動的に行われますが、ここで手動でテストすることができます。",
"debug": "デバッグ", "debug": "デバッグ",
"tree-view": "ツリービュー", "tree-view": "ツリービュー",
"recipe-servings": "レシピの分量",
"recipe-yield": "レシピ収率", "recipe-yield": "レシピ収率",
"recipe-yield-text": "レシピ収量テキスト",
"unit": "単位", "unit": "単位",
"upload-image": "画像をアップロード", "upload-image": "画像をアップロード",
"screen-awake": "画面をスリープ状態にしない", "screen-awake": "画面をスリープ状態にしない",
@ -662,7 +661,25 @@
"missing-food": "欠けている食材を作成: {food}", "missing-food": "欠けている食材を作成: {food}",
"no-food": "食材はありません" "no-food": "食材はありません"
}, },
"reset-servings-count": "サービング数をリセット" "reset-servings-count": "サービング数をリセット",
"not-linked-ingredients": "追加の材料"
},
"recipe-finder": {
"recipe-finder": "レシピ検索",
"recipe-finder-description": "手元にある材料に基づいてレシピを検索します。また、利用可能なツールでフィルタリングしたり、不足している材料やツールの最大数を設定したりすることもできます。",
"selected-ingredients": "選択された材料",
"no-ingredients-selected": "材料が選択されていません",
"missing": "見つかりません",
"no-recipes-found": "レシピが見つかりません",
"no-recipes-found-description": "検索に材料を追加するか、フィルターを調整してみてください",
"include-ingredients-on-hand": "手元にある材料を含める",
"include-tools-on-hand": "手元にあるツールを含める",
"max-missing-ingredients": "不足している材料の最大数",
"max-missing-tools": "不足しているツールの最大数",
"selected-tools": "選択されたツール",
"other-filters": "その他のフィルター",
"ready-to-make": "準備完了",
"almost-ready-to-make": "ほぼ準備完了"
}, },
"search": { "search": {
"advanced-search": "詳細検索", "advanced-search": "詳細検索",
@ -866,7 +883,8 @@
"you-are-offline-description": "オフライン中は機能が一部制限されます。 アイテムの追加、変更、削除は可能ですがオンラインに戻るまでサーバーに変更を同期することはできません", "you-are-offline-description": "オフライン中は機能が一部制限されます。 アイテムの追加、変更、削除は可能ですがオンラインに戻るまでサーバーに変更を同期することはできません",
"are-you-sure-you-want-to-check-all-items": "すべての項目をチェックしてもよろしいですか?", "are-you-sure-you-want-to-check-all-items": "すべての項目をチェックしてもよろしいですか?",
"are-you-sure-you-want-to-uncheck-all-items": "すべてのアイテムのチェックを外してもよろしいですか?", "are-you-sure-you-want-to-uncheck-all-items": "すべてのアイテムのチェックを外してもよろしいですか?",
"are-you-sure-you-want-to-delete-checked-items": "チェックされた項目をすべて削除してもよろしいですか?" "are-you-sure-you-want-to-delete-checked-items": "チェックされた項目をすべて削除してもよろしいですか?",
"no-shopping-lists-found": "ショッピングリストが見つかりません"
}, },
"sidebar": { "sidebar": {
"all-recipes": "すべてのレシピ", "all-recipes": "すべてのレシピ",
@ -1278,6 +1296,7 @@
"profile": { "profile": {
"welcome-user": "👋 ようこそ, {0}!", "welcome-user": "👋 ようこそ, {0}!",
"description": "プロフィール、レシピ、グループ設定を管理します。", "description": "プロフィール、レシピ、グループ設定を管理します。",
"invite-link": "招待リンク",
"get-invite-link": "招待リンクを取得", "get-invite-link": "招待リンクを取得",
"get-public-link": "公開リンクを取得", "get-public-link": "公開リンクを取得",
"account-summary": "アカウントの概要", "account-summary": "アカウントの概要",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "料理本", "cookbooks": "料理本",
"description": "料理本は、レシピのクロスセクション、オーガナイザー、その他のフィルターを作成してレシピを整理するもう 1 つの方法です。料理本を作成するとサイドバーにエントリが追加され、選択したフィルターが適用されたすべてのレシピが料理本に表示されます。", "description": "料理本は、レシピのクロスセクション、オーガナイザー、その他のフィルターを作成してレシピを整理するもう 1 つの方法です。料理本を作成するとサイドバーにエントリが追加され、選択したフィルターが適用されたすべてのレシピが料理本に表示されます。",
"hide-cookbooks-from-other-households": "他の世帯の料理本を隠す",
"hide-cookbooks-from-other-households-description": "有効にするとあなたの世帯の料理本だけがサイドバーに表示されます",
"public-cookbook": "公開料理本", "public-cookbook": "公開料理本",
"public-cookbook-description": "公開料理本は非Mealieユーザーと共有でき、グループページに表示されます。", "public-cookbook-description": "公開料理本は非Mealieユーザーと共有でき、グループページに表示されます。",
"filter-options": "フィルタオプション", "filter-options": "フィルタオプション",

View file

@ -8,7 +8,7 @@
"database-type": "데이터베이스 유형", "database-type": "데이터베이스 유형",
"database-url": "데이터베이스 URL", "database-url": "데이터베이스 URL",
"default-group": "기본 그룹", "default-group": "기본 그룹",
"default-household": "Default Household", "default-household": "기본 가구",
"demo": "데모", "demo": "데모",
"demo-status": "데모 상태", "demo-status": "데모 상태",
"development": "개발", "development": "개발",
@ -67,19 +67,19 @@
"test-message-sent": "테스트 메시지가 전송됐습니다.", "test-message-sent": "테스트 메시지가 전송됐습니다.",
"message-sent": "메세지가 전송됨", "message-sent": "메세지가 전송됨",
"new-notification": "새 알림", "new-notification": "새 알림",
"event-notifiers": "Event Notifiers", "event-notifiers": "이벤트 알림이",
"apprise-url-skipped-if-blank": "Apprise URL (비워두면 생략합니다)", "apprise-url-skipped-if-blank": "Apprise URL (비워두면 생략합니다)",
"enable-notifier": "Enable Notifier", "enable-notifier": "알림 활성화",
"what-events": "What events should this notifier subscribe to?", "what-events": "이 알리미는 어떤 이벤트를 구독해야 합니까?",
"user-events": "사용자 이벤트", "user-events": "사용자 이벤트",
"mealplan-events": "Mealplan 이벤트", "mealplan-events": "Mealplan 이벤트",
"when-a-user-in-your-group-creates-a-new-mealplan": "When a user in your group creates a new mealplan", "when-a-user-in-your-group-creates-a-new-mealplan": "그룹의 사용자가 새로운 식사 계획을 만들 때",
"shopping-list-events": "Shopping List Events", "shopping-list-events": "쇼핑리스트 이벤트",
"cookbook-events": "Cookbook Events", "cookbook-events": "요리책 이벤트",
"tag-events": "Tag 이벤트", "tag-events": "Tag 이벤트",
"category-events": "Category Events", "category-events": "카테고리 이벤트",
"when-a-new-user-joins-your-group": "When a new user joins your group", "when-a-new-user-joins-your-group": "새로운 사용자가 그룹에 가입하면",
"recipe-events": "Recipe Events" "recipe-events": "레시피 이벤트"
}, },
"general": { "general": {
"add": "추가", "add": "추가",
@ -87,12 +87,12 @@
"clear": "지우기", "clear": "지우기",
"close": "닫기", "close": "닫기",
"confirm": "확인", "confirm": "확인",
"confirm-how-does-everything-look": "How does everything look?", "confirm-how-does-everything-look": "모든 게 어떻게 보이나요?",
"confirm-delete-generic": "Are you sure you want to delete this?", "confirm-delete-generic": "이 항목을 삭제하시겠습니까?",
"copied_message": "복사됨!", "copied_message": "복사됨!",
"create": "만들기", "create": "만들기",
"created": "생성됨", "created": "생성됨",
"custom": "Custom", "custom": "사용자 정의",
"dashboard": "대시보드", "dashboard": "대시보드",
"delete": "삭제", "delete": "삭제",
"disabled": "비활성화됨", "disabled": "비활성화됨",
@ -121,7 +121,7 @@
"loading": "불러오는 중", "loading": "불러오는 중",
"loading-events": "이벤트를 불러오는 중", "loading-events": "이벤트를 불러오는 중",
"loading-recipe": "레시피 로딩 중...", "loading-recipe": "레시피 로딩 중...",
"loading-ocr-data": "Loading OCR data...", "loading-ocr-data": "OCR 데이터를 로딩 중...",
"loading-recipes": "레시피 로딩 중", "loading-recipes": "레시피 로딩 중",
"message": "메시지", "message": "메시지",
"monday": "월요일", "monday": "월요일",
@ -132,7 +132,7 @@
"no-recipe-found": "레시피를 찾을 수 없습니다.", "no-recipe-found": "레시피를 찾을 수 없습니다.",
"ok": "확인", "ok": "확인",
"options": "옵션:", "options": "옵션:",
"plural-name": "Plural Name", "plural-name": "복수형 이름",
"print": "인쇄", "print": "인쇄",
"print-preferences": "인쇄 설정", "print-preferences": "인쇄 설정",
"random": "무작위", "random": "무작위",
@ -165,22 +165,22 @@
"title": "제목", "title": "제목",
"token": "토큰", "token": "토큰",
"tuesday": "화요일", "tuesday": "화요일",
"type": "Type", "type": "유형",
"update": "업데이트", "update": "업데이트",
"updated": "업데이트됨", "updated": "업데이트됨",
"upload": "업로드", "upload": "업로드",
"url": "URL", "url": "URL",
"view": "View", "view": "보기",
"wednesday": "수요일", "wednesday": "수요일",
"yes": "예", "yes": "예",
"foods": "음식", "foods": "음식",
"units": "Units", "units": "단위",
"back": "뒤로", "back": "뒤로",
"next": "다음", "next": "다음",
"start": "시작", "start": "시작",
"toggle-view": "Toggle View", "toggle-view": "뷰 전환",
"date": "날짜", "date": "날짜",
"id": "Id", "id": "",
"owner": "작성자", "owner": "작성자",
"change-owner": "Change Owner", "change-owner": "Change Owner",
"date-added": "추가된 날짜", "date-added": "추가된 날짜",
@ -190,38 +190,38 @@
"a-name-is-required": "이름은 필수 항목 입니다.", "a-name-is-required": "이름은 필수 항목 입니다.",
"delete-with-name": "{name} 삭제", "delete-with-name": "{name} 삭제",
"confirm-delete-generic-with-name": "Are you sure you want to delete this {name}?", "confirm-delete-generic-with-name": "Are you sure you want to delete this {name}?",
"confirm-delete-own-admin-account": "Please note that you are trying to delete your own admin account! This action cannot be undone and will permanently delete your account?", "confirm-delete-own-admin-account": "본인의 관리자 계정을 삭제하려고 한다는 점에 유의하세요! 이 작업은 취소할 수 없으며 계정이 영구적으로 삭제됩니다.",
"organizer": "Organizer", "organizer": "Organizer",
"transfer": "Transfer", "transfer": "전송",
"copy": "복사", "copy": "복사",
"color": "색상", "color": "색상",
"timestamp": "Timestamp", "timestamp": "타임스탬프",
"last-made": "Last Made", "last-made": "마지막 모드",
"learn-more": "더 알아보기", "learn-more": "더 알아보기",
"this-feature-is-currently-inactive": "이 기능을 현재 사용할 수 없습니다.", "this-feature-is-currently-inactive": "이 기능을 현재 사용할 수 없습니다.",
"clipboard-not-supported": "Clipboard not supported", "clipboard-not-supported": "클립보드가 지원되지 않음",
"copied-to-clipboard": "클립보드에 복사되었습니다", "copied-to-clipboard": "클립보드에 복사되었습니다",
"your-browser-does-not-support-clipboard": "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", "copied-items-to-clipboard": "No item copied to clipboard|One item copied to clipboard|Copied {count} items to clipboard",
"actions": "Actions", "actions": "동작",
"selected-count": "Selected: {count}", "selected-count": "선택됨: {count}",
"export-all": "Export All", "export-all": "전체 내보내기",
"refresh": "새로고침", "refresh": "새로고침",
"upload-file": "파일 업로드", "upload-file": "파일 업로드",
"created-on-date": "Created on: {0}", "created-on-date": "생성일: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "저장되지 않은 변경 사항이 있습니다. 떠나기 전에 저장하시겠습니까? 저장하려면 확인을 클릭하고, 변경 사항을 삭제하려면 취소를 클릭합니다.",
"clipboard-copy-failure": "Failed to copy to the clipboard.", "clipboard-copy-failure": "클립보드에 복사하는 데 실패했습니다.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?", "confirm-delete-generic-items": "이 항목을 삭제하시겠습니까?",
"organizers": "Organizers", "organizers": "Organizers",
"caution": "Caution", "caution": "주의",
"show-advanced": "Show Advanced", "show-advanced": "고급 표시",
"add-field": "Add Field", "add-field": "필드 추가",
"date-created": "Date Created", "date-created": "작성 날짜",
"date-updated": "Date Updated" "date-updated": "업데이트 일자"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Are you sure you want to delete <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "<b>{groupName}<b/>을(를) 삭제하시겠습니까?",
"cannot-delete-default-group": "Cannot delete default group", "cannot-delete-default-group": "기본 그룹은 삭제할 수 없습니다",
"cannot-delete-group-with-users": "사용자가 있는 그룹은 삭제할 수 없습니다.", "cannot-delete-group-with-users": "사용자가 있는 그룹은 삭제할 수 없습니다.",
"confirm-group-deletion": "그룹을 삭제할까요?", "confirm-group-deletion": "그룹을 삭제할까요?",
"create-group": "그룹 만들기", "create-group": "그룹 만들기",
@ -232,12 +232,12 @@
"group-id-with-value": "그룹 아이디: {groupID}", "group-id-with-value": "그룹 아이디: {groupID}",
"group-name": "그룹 이름", "group-name": "그룹 이름",
"group-not-found": "그룹을찾을 수 없음", "group-not-found": "그룹을찾을 수 없음",
"group-token": "Group Token", "group-token": "그룹 토큰",
"group-with-value": "Group: {groupID}", "group-with-value": "그룹: {groupID}",
"groups": "그룹", "groups": "그룹",
"manage-groups": "그룹 관리", "manage-groups": "그룹 관리",
"user-group": "사용자 그룹", "user-group": "사용자 그룹",
"user-group-created": "User Group Created", "user-group-created": "사용자 그룹 생성됨",
"user-group-creation-failed": "User Group Creation Failed", "user-group-creation-failed": "User Group Creation Failed",
"settings": { "settings": {
"keep-my-recipes-private": "Keep My Recipes Private", "keep-my-recipes-private": "Keep My Recipes Private",
@ -276,7 +276,8 @@
"admin-group-management": "Admin Group Management", "admin-group-management": "Admin Group Management",
"admin-group-management-text": "Changes to this group will be reflected immediately.", "admin-group-management-text": "Changes to this group will be reflected immediately.",
"group-id-value": "Group Id: {0}", "group-id-value": "Group Id: {0}",
"total-households": "Total Households" "total-households": "Total Households",
"you-must-select-a-group-before-selecting-a-household": "You must select a group before selecting a household"
}, },
"household": { "household": {
"household": "Household", "household": "Household",
@ -290,62 +291,62 @@
"admin-household-management": "Admin Household Management", "admin-household-management": "Admin Household Management",
"admin-household-management-text": "Changes to this household will be reflected immediately.", "admin-household-management-text": "Changes to this household will be reflected immediately.",
"household-id-value": "Household Id: {0}", "household-id-value": "Household Id: {0}",
"private-household": "Private Household", "private-household": "개인 가정",
"private-household-description": "Setting your household to private will disable all public view options. This overrides any individual public view settings", "private-household-description": "귀하의 가구를 비공개로 설정하면 모든 공개 보기 옵션이 비활성화됩니다. 이는 개별 공개 보기 설정을 재정의합니다.",
"lock-recipe-edits-from-other-households": "Lock recipe edits from other households", "lock-recipe-edits-from-other-households": "다른 가구의 레시피 편집 잠금",
"lock-recipe-edits-from-other-households-description": "When enabled only users in your household can edit recipes created by your household", "lock-recipe-edits-from-other-households-description": "이 기능을 활성화하면 귀하의 가족 구성원만 귀하의 가족이 만든 요리법을 편집할 수 있습니다.",
"household-recipe-preferences": "Household Recipe Preferences", "household-recipe-preferences": "가정용 레시피 선호도",
"default-recipe-preferences-description": "These are the default settings when a new recipe is created in your household. These can be changed for individual recipes in the recipe settings menu.", "default-recipe-preferences-description": "이는 가정에서 새로운 레시피를 만들 때의 기본 설정입니다. 레시피 설정 메뉴에서 개별 레시피에 대해 이를 변경할 수 있습니다.",
"allow-users-outside-of-your-household-to-see-your-recipes": "Allow users outside of your household to see your recipes", "allow-users-outside-of-your-household-to-see-your-recipes": "가족 외의 사용자에게도 요리법을 볼 수 있도록 허용",
"allow-users-outside-of-your-household-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 household or with a pre-generated private link", "allow-users-outside-of-your-household-to-see-your-recipes-description": "활성화하면 공개 공유 링크를 사용하여 사용자에게 권한을 부여하지 않고도 특정 레시피를 공유할 수 있습니다. 비활성화하면 가족 구성원 또는 사전 생성된 비공개 링크로만 레시피를 공유할 수 있습니다.",
"household-preferences": "Household Preferences" "household-preferences": "Household Preferences"
}, },
"meal-plan": { "meal-plan": {
"create-a-new-meal-plan": "Create a New Meal Plan", "create-a-new-meal-plan": "새로운 식사 계획 생성",
"update-this-meal-plan": "Update this Meal Plan", "update-this-meal-plan": "이 식사 계획 업데이트",
"dinner-this-week": "Dinner This Week", "dinner-this-week": "이번 주 저녁 식사",
"dinner-today": "Dinner Today", "dinner-today": "오늘 저녁 식사",
"dinner-tonight": "DINNER TONIGHT", "dinner-tonight": "오늘 밤 저녁 식사",
"edit-meal-plan": "Edit Meal Plan", "edit-meal-plan": "식사 계획 편집",
"end-date": "End Date", "end-date": "종료 날짜",
"group": "Group (Beta)", "group": "그룹(베타)",
"main": "메인", "main": "메인",
"meal-planner": "Meal Planner", "meal-planner": "식사 플래너",
"meal-plans": "Meal Plans", "meal-plans": "식사 플랜",
"mealplan-categories": "MEALPLAN CATEGORIES", "mealplan-categories": "식사 계획 카테고리",
"mealplan-created": "Mealplan created", "mealplan-created": "식사 계획이 생성됨",
"mealplan-creation-failed": "Mealplan creation failed", "mealplan-creation-failed": "식사 계획 생성 실패",
"mealplan-deleted": "Mealplan Deleted", "mealplan-deleted": "식사 계획 삭제됨",
"mealplan-deletion-failed": "Mealplan deletion failed", "mealplan-deletion-failed": "식사계획 삭제 실패",
"mealplan-settings": "Mealplan Settings", "mealplan-settings": "식사 계획 설정",
"mealplan-update-failed": "Mealplan update failed", "mealplan-update-failed": "식사 계획 업데이트 실패",
"mealplan-updated": "Mealplan Updated", "mealplan-updated": "식사 계획이 업데이트됨",
"mealplan-households-description": "If no household is selected, recipes can be added from any household", "mealplan-households-description": "가구를 선택하지 않은 경우 모든 가구의 레시피를 추가할 수 있습니다.",
"any-category": "Any Category", "any-category": "모든 카테고리",
"any-tag": "Any Tag", "any-tag": "모든 태그",
"any-household": "Any Household", "any-household": "모든 가구",
"no-meal-plan-defined-yet": "No meal plan defined yet", "no-meal-plan-defined-yet": "아직 식사 계획이 정의되지 않았습니다.",
"no-meal-planned-for-today": "No meal planned for today", "no-meal-planned-for-today": "오늘은 식사 계획이 없습니다",
"numberOfDays-hint": "Number of days on page load", "numberOfDays-hint": "페이지 로드 일수",
"numberOfDays-label": "Default Days", "numberOfDays-label": "기본 일수",
"only-recipes-with-these-categories-will-be-used-in-meal-plans": "Only recipes with these categories will be used in Meal Plans", "only-recipes-with-these-categories-will-be-used-in-meal-plans": "이 카테고리의 레시피만 식사 계획에 사용됩니다.",
"planner": "Planner", "planner": "플래너",
"quick-week": "Quick Week", "quick-week": "빠른 주",
"side": "Side", "side": "사이드",
"sides": "Sides", "sides": "사이드",
"start-date": "Start Date", "start-date": "시작 일자",
"rule-day": "Rule Day", "rule-day": "규칙의 날",
"meal-type": "Meal Type", "meal-type": "식사 유형",
"breakfast": "조식", "breakfast": "조식",
"lunch": "점심", "lunch": "점심",
"dinner": "저녁 식사", "dinner": "저녁 식사",
"type-any": "Any", "type-any": "모두",
"day-any": "Any", "day-any": "모두",
"editor": "편집기", "editor": "편집기",
"meal-recipe": "Meal Recipe", "meal-recipe": "식사 레시피",
"meal-title": "Meal Title", "meal-title": "식사 제목",
"meal-note": "Meal Note", "meal-note": "식사 노트",
"note-only": "Note Only", "note-only": "참고사항만",
"random-meal": "Random Meal", "random-meal": "Random Meal",
"random-dinner": "Random Dinner", "random-dinner": "Random Dinner",
"random-side": "Random Side", "random-side": "Random Side",
@ -412,75 +413,75 @@
"description-long": "Mealie can import recipies from Plan to Eat." "description-long": "Mealie can import recipies from Plan to Eat."
}, },
"myrecipebox": { "myrecipebox": {
"title": "My Recipe Box", "title": "내 레시피 박스",
"description-long": "Mealie can import recipes from My Recipe Box. Export your recipes in CSV format, then upload the .csv file below." "description-long": "Mealie는 My Recipe Box에서 레시피를 가져올 수 있습니다. CSV 형식으로 레시피를 내보낸 다음 아래의 .csv 파일을 업로드하세요."
}, },
"recipekeeper": { "recipekeeper": {
"title": "Recipe Keeper", "title": "레시피 보관함",
"description-long": "Mealie can import recipes from Recipe Keeper. Export your recipes in zip format, then upload the .zip file below." "description-long": "Mealie는 Recipe Keeper에서 레시피를 가져올 수 있습니다. 레시피를 zip 형식으로 내보낸 다음 아래의 .zip 파일을 업로드하세요."
} }
}, },
"new-recipe": { "new-recipe": {
"bulk-add": "Bulk Add", "bulk-add": "일괄추가",
"error-details": "Only websites containing ld+json or microdata can be imported by Mealie. Most major recipe websites support this data structure. If your site cannot be imported but there is json data in the log, please submit a github issue with the URL and data.", "error-details": "Mealie는 ld+json 또는 microdata를 포함하는 웹사이트만 가져올 수 있습니다. 대부분의 주요 레시피 웹사이트는 이 데이터 구조를 지원합니다. 사이트를 가져올 수 없지만 로그에 json 데이터가 있는 경우 URL과 데이터와 함께 github 이슈를 제출하세요.",
"error-title": "Looks Like We Couldn't Find Anything", "error-title": "아무것도 찾지 못한 것 같습니다",
"from-url": "Import a Recipe", "from-url": "레시피 가져오기",
"github-issues": "GitHub Issues", "github-issues": "GitHub Issues",
"google-ld-json-info": "Google ld+json Info", "google-ld-json-info": "Google ld+json Info",
"must-be-a-valid-url": "Must be a Valid URL", "must-be-a-valid-url": "유효한 URL이어야 합니다.",
"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", "paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "레시피 데이터를 붙여넣습니다. 각 줄은 목록의 항목으로 처리됩니다.",
"recipe-markup-specification": "Recipe Markup Specification", "recipe-markup-specification": "레시피 마크업 사양",
"recipe-url": "Recipe URL", "recipe-url": "레시피 URL",
"recipe-html-or-json": "Recipe HTML or JSON", "recipe-html-or-json": "레시피 HTML 또는 JSON",
"upload-a-recipe": "Upload a Recipe", "upload-a-recipe": "레시피 업로드",
"upload-individual-zip-file": "Upload an individual .zip file exported from another Mealie instance.", "upload-individual-zip-file": "다른 Mealie 인스턴스에서 내보낸 개별 .zip 파일을 업로드합니다.",
"url-form-hint": "Copy and paste a link from your favorite recipe website", "url-form-hint": "좋아하는 레시피 웹사이트에서 링크를 복사하여 붙여넣으세요",
"view-scraped-data": "View Scraped Data", "view-scraped-data": "스크랩된 데이터 보기",
"trim-whitespace-description": "Trim leading and trailing whitespace as well as blank lines", "trim-whitespace-description": "앞뒤 공백과 빈 줄을 잘라냅니다.",
"trim-prefix-description": "Trim first character from each line", "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", "split-by-numbered-line-description": "'1)' 또는 '1.' 패턴을 일치시켜 문단을 분할하려고 시도합니다.",
"import-by-url": "Import a recipe by URL", "import-by-url": "URL로 레시피 가져오기",
"create-manually": "Create a recipe manually", "create-manually": "수동으로 레시피 만들기",
"make-recipe-image": "Make this the recipe image" "make-recipe-image": "이것을 레시피 이미지로 만드세요."
}, },
"page": { "page": {
"404-page-not-found": "404. 페이지를 찾을 수 없음", "404-page-not-found": "404. 페이지를 찾을 수 없음",
"all-recipes": "모든 레시피", "all-recipes": "모든 레시피",
"new-page-created": "New page created", "new-page-created": "새 페이지가 생성됨",
"page": "Page", "page": "페이지",
"page-creation-failed": "Page creation failed", "page-creation-failed": "페이지 생성 실패",
"page-deleted": "Page deleted", "page-deleted": "페이지 삭제됨",
"page-deletion-failed": "Page deletion failed", "page-deletion-failed": "페이지 삭제 실패",
"page-update-failed": "Page update failed", "page-update-failed": "페이지 업데이트 실패",
"page-updated": "Page updated", "page-updated": "페이지 업데이트됨",
"pages-update-failed": "Pages update failed", "pages-update-failed": "페이지 업데이트 실패",
"pages-updated": "Pages updated", "pages-updated": "페이지 업데이트됨",
"404-not-found": "404 Not Found", "404-not-found": "404 Not Found",
"an-error-occurred": "오류가 발생했습니다!" "an-error-occurred": "오류가 발생했습니다!"
}, },
"recipe": { "recipe": {
"add-key": "Add Key", "add-key": "키 추가",
"add-to-favorites": "즐겨찾기에 추가", "add-to-favorites": "즐겨찾기에 추가",
"api-extras": "API Extras", "api-extras": "API Extras",
"calories": "칼로리", "calories": "칼로리",
"calories-suffix": "calories", "calories-suffix": "칼로리",
"carbohydrate-content": "탄수화물", "carbohydrate-content": "탄수화물",
"categories": "카테고리", "categories": "카테고리",
"cholesterol-content": "Cholesterol", "cholesterol-content": "콜레스테롤",
"comment-action": "Comment", "comment-action": "댓글",
"comment": "Comment", "comment": "댓글",
"comments": "Comments", "comments": "댓글",
"delete-confirmation": "이 레시피를 정말 삭제하시겠습니까?", "delete-confirmation": "이 레시피를 정말 삭제하시겠습니까?",
"delete-recipe": "Delete Recipe", "delete-recipe": "레시피 삭제",
"description": "설명", "description": "설명",
"disable-amount": "Disable Ingredient Amounts", "disable-amount": "재료량 비활성화",
"disable-comments": "댓글 사용 안 함", "disable-comments": "댓글 사용 안 함",
"duplicate": "Duplicate recipe", "duplicate": "중복된 레시피",
"duplicate-name": "Name of the new recipe", "duplicate-name": "새 레시피 이름",
"edit-scale": "Edit Scale", "edit-scale": "스케일 편집",
"fat-content": "Fat", "fat-content": "지방",
"fiber-content": "Fiber", "fiber-content": "섬유질",
"grams": "grams", "grams": "그램",
"ingredient": "Ingredient", "ingredient": "Ingredient",
"ingredients": "Ingredients", "ingredients": "Ingredients",
"insert-ingredient": "Insert Ingredient", "insert-ingredient": "Insert Ingredient",
@ -517,6 +518,7 @@
"save-recipe-before-use": "Save recipe before use", "save-recipe-before-use": "Save recipe before use",
"section-title": "Section Title", "section-title": "Section Title",
"servings": "Servings", "servings": "Servings",
"serves-amount": "Serves {amount}",
"share-recipe-message": "I wanted to share my {0} recipe with you.", "share-recipe-message": "I wanted to share my {0} recipe with you.",
"show-nutrition-values": "Show Nutrition Values", "show-nutrition-values": "Show Nutrition Values",
"sodium-content": "Sodium", "sodium-content": "Sodium",
@ -527,35 +529,37 @@
"trans-fat-content": "Trans-fat", "trans-fat-content": "Trans-fat",
"unable-to-delete-recipe": "Unable to Delete Recipe", "unable-to-delete-recipe": "Unable to Delete Recipe",
"unsaturated-fat-content": "Unsaturated fat", "unsaturated-fat-content": "Unsaturated fat",
"no-recipe": "No Recipe", "no-recipe": "레시피 없음",
"locked-by-owner": "Locked by Owner", "locked-by-owner": "소유자에 의해 잠김",
"join-the-conversation": "대화에 참여하기", "join-the-conversation": "대화에 참여하기",
"add-recipe-to-mealplan": "Add Recipe to Mealplan", "add-recipe-to-mealplan": "식사 계획에 레시피 추가",
"entry-type": "Entry Type", "entry-type": "항목 유형",
"date-format-hint": "MM/DD/YYYY format", "date-format-hint": "MM/DD/YYYY format",
"date-format-hint-yyyy-mm-dd": "YYYY-MM-DD format", "date-format-hint-yyyy-mm-dd": "YYYY-MM-DD format",
"add-to-list": "목록에 추가", "add-to-list": "목록에 추가",
"add-to-plan": "Add to Plan", "add-to-plan": "계획에 추가",
"add-to-timeline": "타임라인에 추가하기", "add-to-timeline": "타임라인에 추가하기",
"recipe-added-to-list": "Recipe added to list", "recipe-added-to-list": "레시피가 목록에 추가되었습니다",
"recipes-added-to-list": "Recipes added to list", "recipes-added-to-list": "목록에 추가된 레시피",
"successfully-added-to-list": "Successfully added to list", "successfully-added-to-list": "목록에 성공적으로 추가되었습니다",
"recipe-added-to-mealplan": "Recipe added to mealplan", "recipe-added-to-mealplan": "식단표에 레시피 추가",
"failed-to-add-recipes-to-list": "Failed to add recipe to list", "failed-to-add-recipes-to-list": "목록에 레시피를 추가하지 못했습니다.",
"failed-to-add-recipe-to-mealplan": "Failed to add recipe to mealplan", "failed-to-add-recipe-to-mealplan": "식사 계획에 레시피를 추가하지 못했습니다.",
"failed-to-add-to-list": "Failed to add to list", "failed-to-add-to-list": "목록에 추가하지 못했습니다.",
"yield": "Yield", "yield": "용량",
"quantity": "Quantity", "yields-amount-with-text": "Yields {amount} {text}",
"choose-unit": "Choose Unit", "yield-text": "Yield Text",
"press-enter-to-create": "Press Enter to Create", "quantity": "수량",
"choose-food": "Choose Food", "choose-unit": "단위 선택",
"notes": "Notes", "press-enter-to-create": "Enter 키를 눌러 생성하세요",
"choose-food": "음식 선택",
"notes": "노트",
"toggle-section": "Toggle Section", "toggle-section": "Toggle Section",
"see-original-text": "See Original Text", "see-original-text": "See Original Text",
"original-text-with-value": "Original Text: {originalText}", "original-text-with-value": "Original Text: {originalText}",
"ingredient-linker": "Ingredient Linker", "ingredient-linker": "Ingredient Linker",
"linked-to-other-step": "Linked to other step", "linked-to-other-step": "Linked to other step",
"auto": "Auto", "auto": "자동",
"cook-mode": "Cook Mode", "cook-mode": "Cook Mode",
"link-ingredients": "Link Ingredients", "link-ingredients": "Link Ingredients",
"merge-above": "Merge Above", "merge-above": "Merge Above",
@ -564,15 +568,8 @@
"reset-scale": "Reset Scale", "reset-scale": "Reset Scale",
"decrease-scale-label": "Decrease Scale by 1", "decrease-scale-label": "Decrease Scale by 1",
"increase-scale-label": "Increase Scale by 1", "increase-scale-label": "Increase Scale by 1",
"locked": "Locked", "locked": "잠김",
"public-link": "Public Link", "public-link": "Public Link",
"timer": {
"kitchen-timer": "Kitchen Timer",
"start-timer": "타이머 시작",
"pause-timer": "타이머 일시 정지",
"resume-timer": "타이머 재개",
"stop-timer": "타이머 정지"
},
"edit-timeline-event": "Edit Timeline Event", "edit-timeline-event": "Edit Timeline Event",
"timeline": "타임라인", "timeline": "타임라인",
"timeline-is-empty": "Nothing on the timeline yet. Try making this recipe!", "timeline-is-empty": "Nothing on the timeline yet. Try making this recipe!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.", "recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.",
"debug": "Debug", "debug": "Debug",
"tree-view": "Tree View", "tree-view": "Tree View",
"recipe-servings": "Recipe Servings",
"recipe-yield": "Recipe Yield", "recipe-yield": "Recipe Yield",
"recipe-yield-text": "Recipe Yield Text",
"unit": "Unit", "unit": "Unit",
"upload-image": "이미지 업로드", "upload-image": "이미지 업로드",
"screen-awake": "화면을 항상 켠 상태로 유지", "screen-awake": "화면을 항상 켠 상태로 유지",
@ -662,7 +661,25 @@
"missing-food": "Create missing food: {food}", "missing-food": "Create missing food: {food}",
"no-food": "No Food" "no-food": "No Food"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Reset Servings Count",
"not-linked-ingredients": "Additional Ingredients"
},
"recipe-finder": {
"recipe-finder": "Recipe Finder",
"recipe-finder-description": "Search for recipes based on ingredients you have on hand. You can also filter by tools you have available, and set a maximum number of missing ingredients or tools.",
"selected-ingredients": "Selected Ingredients",
"no-ingredients-selected": "No ingredients selected",
"missing": "Missing",
"no-recipes-found": "No recipes found",
"no-recipes-found-description": "Try adding more ingredients to your search or adjusting your filters",
"include-ingredients-on-hand": "Include Ingredients On Hand",
"include-tools-on-hand": "Include Tools On Hand",
"max-missing-ingredients": "Max Missing Ingredients",
"max-missing-tools": "Max Missing Tools",
"selected-tools": "Selected Tools",
"other-filters": "Other Filters",
"ready-to-make": "Ready to Make",
"almost-ready-to-make": "Almost Ready to Make"
}, },
"search": { "search": {
"advanced-search": "고급 검색", "advanced-search": "고급 검색",
@ -866,7 +883,8 @@
"you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.", "you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.",
"are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?", "are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?",
"are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?", "are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?",
"are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?" "are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?",
"no-shopping-lists-found": "No Shopping Lists Found"
}, },
"sidebar": { "sidebar": {
"all-recipes": "모든 레시피", "all-recipes": "모든 레시피",
@ -1278,6 +1296,7 @@
"profile": { "profile": {
"welcome-user": "👋 Welcome, {0}!", "welcome-user": "👋 Welcome, {0}!",
"description": "Manage your profile, recipes, and group settings.", "description": "Manage your profile, recipes, and group settings.",
"invite-link": "Invite Link",
"get-invite-link": "Get Invite Link", "get-invite-link": "Get Invite Link",
"get-public-link": "Get Public Link", "get-public-link": "Get Public Link",
"account-summary": "Account Summary", "account-summary": "Account Summary",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Cookbooks", "cookbooks": "Cookbooks",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.",
"hide-cookbooks-from-other-households": "Hide Cookbooks from Other Households",
"hide-cookbooks-from-other-households-description": "When enabled, only cookbooks from your household will appear on the sidebar",
"public-cookbook": "Public Cookbook", "public-cookbook": "Public Cookbook",
"public-cookbook-description": "Public Cookbooks can be shared with non-mealie users and will be displayed on your groups page.", "public-cookbook-description": "Public Cookbooks can be shared with non-mealie users and will be displayed on your groups page.",
"filter-options": "필터 옵션", "filter-options": "필터 옵션",

View file

@ -121,7 +121,7 @@
"loading": "Kraunasi", "loading": "Kraunasi",
"loading-events": "Užkrovimo įvykiai", "loading-events": "Užkrovimo įvykiai",
"loading-recipe": "Receptai kraunasi...", "loading-recipe": "Receptai kraunasi...",
"loading-ocr-data": "Loading OCR data...", "loading-ocr-data": "Įkeliami OCR duomenys...",
"loading-recipes": "Receptai kraunasi", "loading-recipes": "Receptai kraunasi",
"message": "Pranešimas", "message": "Pranešimas",
"monday": "Pirmadienis", "monday": "Pirmadienis",
@ -210,14 +210,14 @@
"upload-file": "Įkelti failą", "upload-file": "Įkelti failą",
"created-on-date": "Sukurta: {0}", "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.", "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": "Nepavyko nukopijuoti į iškarpinę.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?", "confirm-delete-generic-items": "Are you sure you want to delete the following items?",
"organizers": "Organizers", "organizers": "Organizers",
"caution": "Caution", "caution": "Caution",
"show-advanced": "Show Advanced", "show-advanced": "Rodyti plačiau",
"add-field": "Add Field", "add-field": "Pridėti lauką",
"date-created": "Date Created", "date-created": "Sukūrimo data",
"date-updated": "Date Updated" "date-updated": "Atnaujinimo data"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Ar tikrai norite ištrinti <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Ar tikrai norite ištrinti <b>{groupName}<b/>?",
@ -276,7 +276,8 @@
"admin-group-management": "Administravimo grupės valdymas", "admin-group-management": "Administravimo grupės valdymas",
"admin-group-management-text": "Pakeitimai šiai grupei pritaikomi iš karto.", "admin-group-management-text": "Pakeitimai šiai grupei pritaikomi iš karto.",
"group-id-value": "Grupės ID: {0}", "group-id-value": "Grupės ID: {0}",
"total-households": "Total Households" "total-households": "Total Households",
"you-must-select-a-group-before-selecting-a-household": "You must select a group before selecting a household"
}, },
"household": { "household": {
"household": "Household", "household": "Household",
@ -321,7 +322,7 @@
"mealplan-update-failed": "Mitybos plano atnaujinti nepavyko", "mealplan-update-failed": "Mitybos plano atnaujinti nepavyko",
"mealplan-updated": "Mitybos planas atnaujintas", "mealplan-updated": "Mitybos planas atnaujintas",
"mealplan-households-description": "If no household is selected, recipes can be added from any household", "mealplan-households-description": "If no household is selected, recipes can be added from any household",
"any-category": "Any Category", "any-category": "Bet kuri kategorija",
"any-tag": "Any Tag", "any-tag": "Any Tag",
"any-household": "Any Household", "any-household": "Any Household",
"no-meal-plan-defined-yet": "Nėra nustatytų mitybos planų", "no-meal-plan-defined-yet": "Nėra nustatytų mitybos planų",
@ -517,6 +518,7 @@
"save-recipe-before-use": "Prieš naudodami išsaugokite receptą", "save-recipe-before-use": "Prieš naudodami išsaugokite receptą",
"section-title": "Skilties pavadinimas", "section-title": "Skilties pavadinimas",
"servings": "Porcijos", "servings": "Porcijos",
"serves-amount": "Serves {amount}",
"share-recipe-message": "Noriu pasidalinti savo receptu {0} su jumis.", "share-recipe-message": "Noriu pasidalinti savo receptu {0} su jumis.",
"show-nutrition-values": "Rodyti maistinę vertę", "show-nutrition-values": "Rodyti maistinę vertę",
"sodium-content": "Natris", "sodium-content": "Natris",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Nepavyko pridėti recepto prie mitybos plano", "failed-to-add-recipe-to-mealplan": "Nepavyko pridėti recepto prie mitybos plano",
"failed-to-add-to-list": "Failed to add to list", "failed-to-add-to-list": "Failed to add to list",
"yield": "Išeiga", "yield": "Išeiga",
"yields-amount-with-text": "Yields {amount} {text}",
"yield-text": "Yield Text",
"quantity": "Kiekis", "quantity": "Kiekis",
"choose-unit": "Pasirinkite vienetą", "choose-unit": "Pasirinkite vienetą",
"press-enter-to-create": "Paspauskite 'Enter', norėdami sukurti", "press-enter-to-create": "Paspauskite 'Enter', norėdami sukurti",
@ -566,13 +570,6 @@
"increase-scale-label": "Padidinti mastelį 1 k.", "increase-scale-label": "Padidinti mastelį 1 k.",
"locked": "Užrakinta", "locked": "Užrakinta",
"public-link": "Vieša nuoroda", "public-link": "Vieša nuoroda",
"timer": {
"kitchen-timer": "Kitchen Timer",
"start-timer": "Start Timer",
"pause-timer": "Pause Timer",
"resume-timer": "Resume Timer",
"stop-timer": "Stop Timer"
},
"edit-timeline-event": "Redaguoti laiko juostos įvykį", "edit-timeline-event": "Redaguoti laiko juostos įvykį",
"timeline": "Laiko juosta", "timeline": "Laiko juosta",
"timeline-is-empty": "Laiko juosta tuščia. Pabandykit pagaminti šį receptą!", "timeline-is-empty": "Laiko juosta tuščia. Pabandykit pagaminti šį receptą!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Naudokite 'OpenAI', kad išanalizuoti rezultatus, o ne pasikliauti tinklalapių duomenų rinkiklio įrankiu. Kuriant receptą naudojant URL, tai padaroma automatiškai, jei duomenų rinkiklio įrankiui nepavyksta apdoroti rezultatų, tačiau čia jį galite išbandyti rankiniu būdu.", "recipe-debugger-use-openai-description": "Naudokite 'OpenAI', kad išanalizuoti rezultatus, o ne pasikliauti tinklalapių duomenų rinkiklio įrankiu. Kuriant receptą naudojant URL, tai padaroma automatiškai, jei duomenų rinkiklio įrankiui nepavyksta apdoroti rezultatų, tačiau čia jį galite išbandyti rankiniu būdu.",
"debug": "Šalinti klaidas", "debug": "Šalinti klaidas",
"tree-view": "Medžio struktūra", "tree-view": "Medžio struktūra",
"recipe-servings": "Recipe Servings",
"recipe-yield": "Recepto išeiga", "recipe-yield": "Recepto išeiga",
"recipe-yield-text": "Recipe Yield Text",
"unit": "Vienetas", "unit": "Vienetas",
"upload-image": "Įkelti nuotrauką", "upload-image": "Įkelti nuotrauką",
"screen-awake": "Keep Screen Awake", "screen-awake": "Keep Screen Awake",
@ -662,7 +661,25 @@
"missing-food": "Create missing food: {food}", "missing-food": "Create missing food: {food}",
"no-food": "No Food" "no-food": "No Food"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Reset Servings Count",
"not-linked-ingredients": "Additional Ingredients"
},
"recipe-finder": {
"recipe-finder": "Recipe Finder",
"recipe-finder-description": "Search for recipes based on ingredients you have on hand. You can also filter by tools you have available, and set a maximum number of missing ingredients or tools.",
"selected-ingredients": "Selected Ingredients",
"no-ingredients-selected": "No ingredients selected",
"missing": "Missing",
"no-recipes-found": "No recipes found",
"no-recipes-found-description": "Try adding more ingredients to your search or adjusting your filters",
"include-ingredients-on-hand": "Include Ingredients On Hand",
"include-tools-on-hand": "Include Tools On Hand",
"max-missing-ingredients": "Max Missing Ingredients",
"max-missing-tools": "Max Missing Tools",
"selected-tools": "Selected Tools",
"other-filters": "Other Filters",
"ready-to-make": "Ready to Make",
"almost-ready-to-make": "Almost Ready to Make"
}, },
"search": { "search": {
"advanced-search": "Išplėstinė paieška", "advanced-search": "Išplėstinė paieška",
@ -866,7 +883,8 @@
"you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.", "you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.",
"are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?", "are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?",
"are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?", "are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?",
"are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?" "are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?",
"no-shopping-lists-found": "No Shopping Lists Found"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Visi receptai", "all-recipes": "Visi receptai",
@ -1278,6 +1296,7 @@
"profile": { "profile": {
"welcome-user": "👋 Welcome, {0}!", "welcome-user": "👋 Welcome, {0}!",
"description": "Valdykite savo profilį, receptus ir grupių nustatymus.", "description": "Valdykite savo profilį, receptus ir grupių nustatymus.",
"invite-link": "Invite Link",
"get-invite-link": "Gauti pakvietimo nuorodą", "get-invite-link": "Gauti pakvietimo nuorodą",
"get-public-link": "Get Public Link", "get-public-link": "Get Public Link",
"account-summary": "Paskyros apžvalga", "account-summary": "Paskyros apžvalga",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Receptų knygos", "cookbooks": "Receptų knygos",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.",
"hide-cookbooks-from-other-households": "Hide Cookbooks from Other Households",
"hide-cookbooks-from-other-households-description": "When enabled, only cookbooks from your household will appear on the sidebar",
"public-cookbook": "Vieša receptų knyga", "public-cookbook": "Vieša receptų knyga",
"public-cookbook-description": "Viešos receptų knygos gali būti bendrinamos su Mealie paskyros neturinčiais naudotojais ir bus rodomos jūsų grupių puslapyje.", "public-cookbook-description": "Viešos receptų knygos gali būti bendrinamos su Mealie paskyros neturinčiais naudotojais ir bus rodomos jūsų grupių puslapyje.",
"filter-options": "Filtro parinktys", "filter-options": "Filtro parinktys",

File diff suppressed because it is too large Load diff

View file

@ -276,7 +276,8 @@
"admin-group-management": "Beheerdergroep-beheer", "admin-group-management": "Beheerdergroep-beheer",
"admin-group-management-text": "Wijzigingen in deze groep zijn meteen zichtbaar.", "admin-group-management-text": "Wijzigingen in deze groep zijn meteen zichtbaar.",
"group-id-value": "Groeps-id: {0}", "group-id-value": "Groeps-id: {0}",
"total-households": "Totaal aantal huishoudens" "total-households": "Totaal aantal huishoudens",
"you-must-select-a-group-before-selecting-a-household": "Kies een groep voordat je een huishouden kiest"
}, },
"household": { "household": {
"household": "Huishouden", "household": "Huishouden",
@ -297,8 +298,8 @@
"household-recipe-preferences": "Receptvoorkeuren voor groep", "household-recipe-preferences": "Receptvoorkeuren voor groep",
"default-recipe-preferences-description": "Dit zijn de standaardinstellingen als er een nieuw recept in je groep wordt gemaakt. Deze kunnen worden gewijzigd voor individuele recepten in het menu recepteninstellingen.", "default-recipe-preferences-description": "Dit zijn de standaardinstellingen als er een nieuw recept in je groep wordt gemaakt. Deze kunnen worden gewijzigd voor individuele recepten in het menu recepteninstellingen.",
"allow-users-outside-of-your-household-to-see-your-recipes": "Sta gebruikers buiten je groep toe om je recepten te zien", "allow-users-outside-of-your-household-to-see-your-recipes": "Sta gebruikers buiten je groep toe om je recepten te zien",
"allow-users-outside-of-your-household-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 household or with a pre-generated private link", "allow-users-outside-of-your-household-to-see-your-recipes-description": "Wanneer geactiveerd, kun je een recept delen met iedereen, zonder dat zij een account hebben. Als deze mogelijkheid is uitgeschakeld, kun je een recept alleen delen met mensen die in je huishouden zitten, of met een vooraf gemaakte privé-link",
"household-preferences": "Household Preferences" "household-preferences": "Voorkeuren huishouden"
}, },
"meal-plan": { "meal-plan": {
"create-a-new-meal-plan": "Maak een nieuw maaltijdplan", "create-a-new-meal-plan": "Maak een nieuw maaltijdplan",
@ -517,6 +518,7 @@
"save-recipe-before-use": "Recept opslaan vóór gebruik", "save-recipe-before-use": "Recept opslaan vóór gebruik",
"section-title": "Sectietitel", "section-title": "Sectietitel",
"servings": "Porties", "servings": "Porties",
"serves-amount": "Genoeg voor {amount}",
"share-recipe-message": "Ik wil mijn {0} recept met je delen.", "share-recipe-message": "Ik wil mijn {0} recept met je delen.",
"show-nutrition-values": "Toon voedingswaarden", "show-nutrition-values": "Toon voedingswaarden",
"sodium-content": "Zout", "sodium-content": "Zout",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Recept aan maaltijdplan toevoegen mislukt", "failed-to-add-recipe-to-mealplan": "Recept aan maaltijdplan toevoegen mislukt",
"failed-to-add-to-list": "Toevoegen aan lijst mislukt", "failed-to-add-to-list": "Toevoegen aan lijst mislukt",
"yield": "Opbrengst", "yield": "Opbrengst",
"yields-amount-with-text": "Levert {amount} {text}",
"yield-text": "Opmerking over opbrengst",
"quantity": "Hoeveelheid", "quantity": "Hoeveelheid",
"choose-unit": "Kies een eenheid", "choose-unit": "Kies een eenheid",
"press-enter-to-create": "Druk op Enter om aan te maken", "press-enter-to-create": "Druk op Enter om aan te maken",
@ -566,13 +570,6 @@
"increase-scale-label": "Verhoog de schaal met 1", "increase-scale-label": "Verhoog de schaal met 1",
"locked": "Vergrendeld", "locked": "Vergrendeld",
"public-link": "Openbare link", "public-link": "Openbare link",
"timer": {
"kitchen-timer": "Kookwekker",
"start-timer": "Kookwekker starten",
"pause-timer": "Kookwekker pauzeren",
"resume-timer": "Kookwekker hervatten",
"stop-timer": "Kookwekker stoppen"
},
"edit-timeline-event": "Bewerk tijdlijngebeurtenis", "edit-timeline-event": "Bewerk tijdlijngebeurtenis",
"timeline": "Tijdlijn", "timeline": "Tijdlijn",
"timeline-is-empty": "Nog niets op de tijdlijn. Probeer dit recept te maken!", "timeline-is-empty": "Nog niets op de tijdlijn. Probeer dit recept te maken!",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Gebruik OpenAI om de resultaten te verwerken in plaats van te vertrouwen op de scraper-bibliotheek. Bij het maken van een recept via een URL wordt dit automatisch gedaan als de scraper-bibliotheek mislukt, maar u kunt het hier handmatig testen.", "recipe-debugger-use-openai-description": "Gebruik OpenAI om de resultaten te verwerken in plaats van te vertrouwen op de scraper-bibliotheek. Bij het maken van een recept via een URL wordt dit automatisch gedaan als de scraper-bibliotheek mislukt, maar u kunt het hier handmatig testen.",
"debug": "Debug", "debug": "Debug",
"tree-view": "Boomstructuurweergave", "tree-view": "Boomstructuurweergave",
"recipe-servings": "Recept porties",
"recipe-yield": "Opbrengst van recept", "recipe-yield": "Opbrengst van recept",
"recipe-yield-text": "Opbrengst van recept",
"unit": "Eenheid", "unit": "Eenheid",
"upload-image": "Afbeelding uploaden", "upload-image": "Afbeelding uploaden",
"screen-awake": "Scherm aan laten staan", "screen-awake": "Scherm aan laten staan",
@ -662,7 +661,25 @@
"missing-food": "Ontbrekend levensmiddel maken: {food}", "missing-food": "Ontbrekend levensmiddel maken: {food}",
"no-food": "Geen levensmiddel" "no-food": "Geen levensmiddel"
}, },
"reset-servings-count": "Zet de teller van aantal keer gegeten op nul" "reset-servings-count": "Zet de teller van aantal keer gegeten op nul",
"not-linked-ingredients": "Extra ingrediënten"
},
"recipe-finder": {
"recipe-finder": "Recept zoeker",
"recipe-finder-description": "Zoek naar recepten op basis van ingrediënten die je bij de hand hebt. Je kunt ook filteren op gereedschap dat je beschikbaar hebt en een maximum aantal ontbrekende ingrediënten of gereedschappen instellen.",
"selected-ingredients": "Gekozen ingrediënten",
"no-ingredients-selected": "Geen ingrediënten geselecteerd",
"missing": "Ontbrekend",
"no-recipes-found": "Geen recepten gevonden",
"no-recipes-found-description": "Probeer meer ingrediënten toe te voegen aan uw zoekopdracht of pas uw filters aan",
"include-ingredients-on-hand": "Inclusief ingrediënten in huis",
"include-tools-on-hand": "Inclusief keukengerei in huis",
"max-missing-ingredients": "Maximum ontbrekende ingrediënten",
"max-missing-tools": "Maximum ontbrekend keukengerei",
"selected-tools": "Geselecteerd keukengerei",
"other-filters": "Overige filters",
"ready-to-make": "Klaar om te maken",
"almost-ready-to-make": "Bijna klaar om te maken"
}, },
"search": { "search": {
"advanced-search": "Geavanceerd zoeken", "advanced-search": "Geavanceerd zoeken",
@ -701,7 +718,7 @@
"import-summary": "Samenvatting importeren", "import-summary": "Samenvatting importeren",
"partial-backup": "Gedeeltelijke back-up", "partial-backup": "Gedeeltelijke back-up",
"unable-to-delete-backup": "Kan back-up niet verwijderen.", "unable-to-delete-backup": "Kan back-up niet verwijderen.",
"experimental-description": "Back-ups zijn een complete kopie van de database en de data map. Je kunt geen keuze maken wat wel of niet in de reservekopie zit. Het is een kopie van Mealie van dat moment. Je kunt de back-up gebruiken om data te importeren of exporteren. Of om de hele site op een andere plek te bewaren.", "experimental-description": "Back-ups zijn een complete kopie van de database en de data map. Je kunt niet kiezen wat wel of niet in de reservekopie zit. Het is een kopie van Mealie van dat moment. Je kunt de back-up gebruiken om data te importeren of exporteren. Of om de hele site op een andere plek te bewaren.",
"backup-restore": "Back-up maken/terugzetten", "backup-restore": "Back-up maken/terugzetten",
"back-restore-description": "Het terugzetten van deze back-up overschrijft alle huidige gegevens in je database en in de gegevensmap. {cannot-be-undone} Als het terugzetten is gelukt wordt je afgemeld.", "back-restore-description": "Het terugzetten van deze back-up overschrijft alle huidige gegevens in je database en in de gegevensmap. {cannot-be-undone} Als het terugzetten is gelukt wordt je afgemeld.",
"cannot-be-undone": "Deze actie kan niet ongedaan worden gemaakt gebruik met voorzichtigheid.", "cannot-be-undone": "Deze actie kan niet ongedaan worden gemaakt gebruik met voorzichtigheid.",
@ -866,7 +883,8 @@
"you-are-offline-description": "Je kunt niet alles doen als je offline bent. Je kunt wel dingen toevoegen, veranderen of weghalen. Maar we verwerken je aanpassingen pas als je weer online bent.", "you-are-offline-description": "Je kunt niet alles doen als je offline bent. Je kunt wel dingen toevoegen, veranderen of weghalen. Maar we verwerken je aanpassingen pas als je weer online bent.",
"are-you-sure-you-want-to-check-all-items": "Weet je zeker dat je alle items wilt selecteren?", "are-you-sure-you-want-to-check-all-items": "Weet je zeker dat je alle items wilt selecteren?",
"are-you-sure-you-want-to-uncheck-all-items": "Weet je zeker dat je alle items wilt deselecteren?", "are-you-sure-you-want-to-uncheck-all-items": "Weet je zeker dat je alle items wilt deselecteren?",
"are-you-sure-you-want-to-delete-checked-items": "Weet je zeker dat je de geselecteerde items wilt verwijderen?" "are-you-sure-you-want-to-delete-checked-items": "Weet je zeker dat je de geselecteerde items wilt verwijderen?",
"no-shopping-lists-found": "Geen boodschappenlijsten gevonden"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Alle Recepten", "all-recipes": "Alle Recepten",
@ -1278,14 +1296,15 @@
"profile": { "profile": {
"welcome-user": "👋 Welkom, {0}!", "welcome-user": "👋 Welkom, {0}!",
"description": "Beheer je profiel, recepten en groepsinstellingen.", "description": "Beheer je profiel, recepten en groepsinstellingen.",
"invite-link": "Uitnodigingslink",
"get-invite-link": "Krijg uitnodigingslink", "get-invite-link": "Krijg uitnodigingslink",
"get-public-link": "Openbare link krijgen", "get-public-link": "Openbare link krijgen",
"account-summary": "Accountoverzicht", "account-summary": "Accountoverzicht",
"account-summary-description": "Hier is een samenvatting van jouw groep.", "account-summary-description": "Hier is een samenvatting van jouw groep.",
"group-statistics": "Groepsstatistieken", "group-statistics": "Groepsstatistieken",
"group-statistics-description": "Jouw groepsstatistieken bieden inzicht in hoe je Mealie gebruikt.", "group-statistics-description": "Jouw groepsstatistieken bieden inzicht in hoe je Mealie gebruikt.",
"household-statistics": "Household Statistics", "household-statistics": "Statistieken huishouden",
"household-statistics-description": "Your Household Statistics provide some insight how you're using Mealie.", "household-statistics-description": "De statistieken van je huishouden bieden inzicht in hoe je Mealie gebruikt.",
"storage-capacity": "Opslagcapaciteit", "storage-capacity": "Opslagcapaciteit",
"storage-capacity-description": "Jouw opslagcapaciteit is een berekening van de afbeeldingen en bijlagen die je hebt geüpload.", "storage-capacity-description": "Jouw opslagcapaciteit is een berekening van de afbeeldingen en bijlagen die je hebt geüpload.",
"personal": "Persoonlijk", "personal": "Persoonlijk",
@ -1295,13 +1314,13 @@
"api-tokens-description": "Beheer je API-tokens voor toegang vanuit externe applicaties.", "api-tokens-description": "Beheer je API-tokens voor toegang vanuit externe applicaties.",
"group-description": "Deze items worden gedeeld binnen je groep. Het bewerken van een van deze items zal het voor de hele groep veranderen!", "group-description": "Deze items worden gedeeld binnen je groep. Het bewerken van een van deze items zal het voor de hele groep veranderen!",
"group-settings": "Groepsinstellingen", "group-settings": "Groepsinstellingen",
"group-settings-description": "Manage your common group settings, like privacy settings.", "group-settings-description": "Beheer je groepsinstellingen, zoals privacyinstellingen.",
"household-description": "These items are shared within your household. Editing one of them will change it for the whole household!", "household-description": "Deze items worden gedeeld binnen je huishouden. Het bewerken van één van deze items zal het voor het hele huishouden veranderen!",
"household-settings": "Household Settings", "household-settings": "Instellingen huishouden",
"household-settings-description": "Manage your household settings, like mealplan and privacy settings.", "household-settings-description": "Beheer de instellingen van je huishouden, zoals je maaltijdplan en privacyinstellingen.",
"cookbooks-description": "Beheer een verzameling receptcategorieën en genereer hier pagina's voor.", "cookbooks-description": "Beheer een verzameling receptcategorieën en genereer hier pagina's voor.",
"members": "Leden", "members": "Leden",
"members-description": "See who's in your household and manage their permissions.", "members-description": "Bekijk wie er in je huishouden zit en beheer hun rechten.",
"webhooks-description": "Stel webhooks in die worden geactiveerd op dagen dat je een maaltijdplan hebt gepland.", "webhooks-description": "Stel webhooks in die worden geactiveerd op dagen dat je een maaltijdplan hebt gepland.",
"notifiers": "Melders", "notifiers": "Melders",
"notifiers-description": "Stel e-mail en push-meldingen in die worden getriggerd bij specifieke gebeurtenissen.", "notifiers-description": "Stel e-mail en push-meldingen in die worden getriggerd bij specifieke gebeurtenissen.",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Kookboeken", "cookbooks": "Kookboeken",
"description": "Kookboeken zijn een andere manier om recepten te organiseren door verzamelingen van recepten, organisatoren en andere filters te maken. Het maken van een kookboek voegt een item toe aan de zijbalk. Alle recepten met de gekozen filters worden in het kookboek getoond.", "description": "Kookboeken zijn een andere manier om recepten te organiseren door verzamelingen van recepten, organisatoren en andere filters te maken. Het maken van een kookboek voegt een item toe aan de zijbalk. Alle recepten met de gekozen filters worden in het kookboek getoond.",
"hide-cookbooks-from-other-households": "Verberg kookboeken van andere huishoudens",
"hide-cookbooks-from-other-households-description": "Wanneer ingeschakeld, worden alleen kookboeken van uw huishouden op de zijbalk weergegeven",
"public-cookbook": "Openbaar kookboek", "public-cookbook": "Openbaar kookboek",
"public-cookbook-description": "Openbare kookboeken kunnen worden gedeeld met niet-Mealie-gebruikers en zullen worden weergegeven op jouw groepspagina.", "public-cookbook-description": "Openbare kookboeken kunnen worden gedeeld met niet-Mealie-gebruikers en zullen worden weergegeven op jouw groepspagina.",
"filter-options": "Filteropties", "filter-options": "Filteropties",
@ -1336,7 +1357,7 @@
"require-all-tools": "Vereis al het keukengerei", "require-all-tools": "Vereis al het keukengerei",
"cookbook-name": "Naam van het kookboek", "cookbook-name": "Naam van het kookboek",
"cookbook-with-name": "Kookboek {0}", "cookbook-with-name": "Kookboek {0}",
"household-cookbook-name": "{0} Cookbook {1}", "household-cookbook-name": "{0} Kookboek {1}",
"create-a-cookbook": "Maak een kookboek", "create-a-cookbook": "Maak een kookboek",
"cookbook": "Kookboek" "cookbook": "Kookboek"
}, },

View file

@ -8,7 +8,7 @@
"database-type": "Databasetype", "database-type": "Databasetype",
"database-url": "URL til database", "database-url": "URL til database",
"default-group": "Standardgruppe", "default-group": "Standardgruppe",
"default-household": "Standard hushold", "default-household": "Standard husholdning",
"demo": "Demo", "demo": "Demo",
"demo-status": "Demostatus", "demo-status": "Demostatus",
"development": "Utvikling", "development": "Utvikling",
@ -51,7 +51,7 @@
"category": "Kategori" "category": "Kategori"
}, },
"events": { "events": {
"apprise-url": "Apprise URL", "apprise-url": "Apprise-URL",
"database": "Database", "database": "Database",
"delete-event": "Slett hendelse", "delete-event": "Slett hendelse",
"event-delete-confirmation": "Er du sikker på at du ønsker å slette denne hendelsen?", "event-delete-confirmation": "Er du sikker på at du ønsker å slette denne hendelsen?",
@ -66,9 +66,9 @@
"subscribed-events": "Abonnerte hendelser", "subscribed-events": "Abonnerte hendelser",
"test-message-sent": "Testmelding sendt", "test-message-sent": "Testmelding sendt",
"message-sent": "Melding sendt", "message-sent": "Melding sendt",
"new-notification": "Ny varsel", "new-notification": "Nytt varsel",
"event-notifiers": "Hendelsesvarsler", "event-notifiers": "Hendelsesvarsler",
"apprise-url-skipped-if-blank": "Apprise URL (hoppes over hvis tom)", "apprise-url-skipped-if-blank": "Apprise-URL (hoppes over hvis tom)",
"enable-notifier": "Aktiver varslingsagenten", "enable-notifier": "Aktiver varslingsagenten",
"what-events": "Hvilke hendelser skal denne varslingsagenten abonnere på?", "what-events": "Hvilke hendelser skal denne varslingsagenten abonnere på?",
"user-events": "Brukerhendelser", "user-events": "Brukerhendelser",
@ -87,7 +87,7 @@
"clear": "Tøm", "clear": "Tøm",
"close": "Lukk", "close": "Lukk",
"confirm": "Bekreft", "confirm": "Bekreft",
"confirm-how-does-everything-look": "Hvordan ser alt ut?", "confirm-how-does-everything-look": "Hvordan ser ting ut?",
"confirm-delete-generic": "Er du sikker på at du vil slette denne?", "confirm-delete-generic": "Er du sikker på at du vil slette denne?",
"copied_message": "Kopiert!", "copied_message": "Kopiert!",
"create": "Opprett", "create": "Opprett",
@ -148,7 +148,7 @@
"share": "Del", "share": "Del",
"show-all": "Vis alle", "show-all": "Vis alle",
"shuffle": "Tilfeldig rekkefølge", "shuffle": "Tilfeldig rekkefølge",
"sort": "Sortér", "sort": "Sorter",
"sort-ascending": "Sorter stigende", "sort-ascending": "Sorter stigende",
"sort-descending": "Sortere synkende", "sort-descending": "Sortere synkende",
"sort-alphabetically": "Alfabetisk", "sort-alphabetically": "Alfabetisk",
@ -182,7 +182,7 @@
"date": "Dato", "date": "Dato",
"id": "Id", "id": "Id",
"owner": "Eier", "owner": "Eier",
"change-owner": "Change Owner", "change-owner": "Bytt eier",
"date-added": "Dato lagt til", "date-added": "Dato lagt til",
"none": "Ingen", "none": "Ingen",
"run": "Kjør", "run": "Kjør",
@ -193,7 +193,7 @@
"confirm-delete-own-admin-account": "Vær oppmerksom på at du holder på å slette din egen administrator-konto! Dette kan ikke angres og vil slette kontoen din permanent!", "confirm-delete-own-admin-account": "Vær oppmerksom på at du holder på å slette din egen administrator-konto! Dette kan ikke angres og vil slette kontoen din permanent!",
"organizer": "Organisator", "organizer": "Organisator",
"transfer": "Overfør", "transfer": "Overfør",
"copy": "Kopiér", "copy": "Kopier",
"color": "Farge", "color": "Farge",
"timestamp": "Tidsstempel", "timestamp": "Tidsstempel",
"last-made": "Sist laget", "last-made": "Sist laget",
@ -214,10 +214,10 @@
"confirm-delete-generic-items": "Er du sikker på at du vil slette følgende elementer?", "confirm-delete-generic-items": "Er du sikker på at du vil slette følgende elementer?",
"organizers": "Organisatorer", "organizers": "Organisatorer",
"caution": "Forsiktig", "caution": "Forsiktig",
"show-advanced": "Show Advanced", "show-advanced": "Vis avansert",
"add-field": "Add Field", "add-field": "Legg til felt",
"date-created": "Date Created", "date-created": "Opprettet dato",
"date-updated": "Date Updated" "date-updated": "Dato oppdatert"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Er du sikker på at du vil slette <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Er du sikker på at du vil slette <b>{groupName}<b/>?",
@ -246,7 +246,7 @@
"manage-members": "Administrer medlemmer", "manage-members": "Administrer medlemmer",
"manage-members-description": "Administrer rettighetene til medlemmene i ditt hushold. {manage} lar brukeren få tilgang til dataadministrasjonssiden. {invite} lar brukeren generere invitasjonslenker for andre brukere. Gruppeeiere kan ikke endre egne tillatelser.", "manage-members-description": "Administrer rettighetene til medlemmene i ditt hushold. {manage} lar brukeren få tilgang til dataadministrasjonssiden. {invite} lar brukeren generere invitasjonslenker for andre brukere. Gruppeeiere kan ikke endre egne tillatelser.",
"manage": "Administrer", "manage": "Administrer",
"manage-household": "Manage Household", "manage-household": "Administrer husholdning",
"invite": "Inviter", "invite": "Inviter",
"looking-to-update-your-profile": "Ønsker du å oppdatere profilen din?", "looking-to-update-your-profile": "Ønsker du å oppdatere profilen din?",
"default-recipe-preferences-description": "Dette er standardinnstillingene når en ny oppskrift blir opprettet i gruppen din. Disse kan endres for individuelle oppskrifter i oppskriftsmenyen.", "default-recipe-preferences-description": "Dette er standardinnstillingene når en ny oppskrift blir opprettet i gruppen din. Disse kan endres for individuelle oppskrifter i oppskriftsmenyen.",
@ -276,29 +276,30 @@
"admin-group-management": "Gruppeadministrasjon", "admin-group-management": "Gruppeadministrasjon",
"admin-group-management-text": "Endringer i denne gruppen vil gjenspeiles umiddelbart.", "admin-group-management-text": "Endringer i denne gruppen vil gjenspeiles umiddelbart.",
"group-id-value": "Gruppe-ID: {0}", "group-id-value": "Gruppe-ID: {0}",
"total-households": "Husholdninger totalt" "total-households": "Husholdninger totalt",
"you-must-select-a-group-before-selecting-a-household": "You must select a group before selecting a household"
}, },
"household": { "household": {
"household": "Husholdning", "household": "Husholdning",
"households": "Husholdning", "households": "Husholdninger",
"user-household": "Brukers husholdning", "user-household": "Brukers husholdning",
"create-household": "Opprett husholdning", "create-household": "Opprett husholdning",
"household-name": "Husholdningenes navn", "household-name": "Husholdningens navn",
"household-group": "Husholdningenes gruppe", "household-group": "Husholdningens gruppe",
"household-management": "Administrer husholdninger", "household-management": "Administrering av husholdninger",
"manage-households": "Administrer husholdninger", "manage-households": "Administrer husholdninger",
"admin-household-management": "Admin husholdningsadministrasjon", "admin-household-management": "Admin husholdningsadministrasjon",
"admin-household-management-text": "Endringer i denne husholdningen vil umiddelbart gjelde.", "admin-household-management-text": "Endringer i denne husholdningen vil umiddelbart gjelde.",
"household-id-value": "Husholdningenes id: {0}", "household-id-value": "Husholdningens id: {0}",
"private-household": "Privat husholdning", "private-household": "Privat husholdning",
"private-household-description": "Setting your household to private will disable all public view options. This overrides any individual public view settings", "private-household-description": "Setting your household to private will disable all public view options. This overrides any individual public view settings",
"lock-recipe-edits-from-other-households": "Lock recipe edits from other households", "lock-recipe-edits-from-other-households": "Lås redigering av oppskrifter fra andre husholdninger",
"lock-recipe-edits-from-other-households-description": "When enabled only users in your household can edit recipes created by your household", "lock-recipe-edits-from-other-households-description": "When enabled only users in your household can edit recipes created by your household",
"household-recipe-preferences": "Husholdningenes oppskriftsinnstillinger", "household-recipe-preferences": "Husholdningenes oppskriftsinnstillinger",
"default-recipe-preferences-description": "Dette er standardinnstillingene når en ny oppskrift blir opprettet i din husholdning. Disse kan endres for individuelle oppskrifter i oppskrifters innstillinger.", "default-recipe-preferences-description": "Dette er standardinnstillingene når en ny oppskrift blir opprettet i din husholdning. Disse kan endres for individuelle oppskrifter i oppskrifters innstillinger.",
"allow-users-outside-of-your-household-to-see-your-recipes": "Tillat brukere utenfor din husholdning å se oppskriftene dine", "allow-users-outside-of-your-household-to-see-your-recipes": "Tillat brukere utenfor din husholdning å se oppskriftene dine",
"allow-users-outside-of-your-household-to-see-your-recipes-description": "Når aktivert, kan du bruke en offentlig lenke for å dele spesifikke oppskrifter uten å autorisere brukeren. Når deaktivert, kan du kun dele oppskrifter med brukere som er i husholdningen din eller med en forhåndsgenerert privat lenke", "allow-users-outside-of-your-household-to-see-your-recipes-description": "Når aktivert, kan du bruke en offentlig lenke for å dele spesifikke oppskrifter uten å autorisere brukeren. Når deaktivert, kan du kun dele oppskrifter med brukere som er i husholdningen din eller med en forhåndsgenerert privat lenke",
"household-preferences": "Husholdnings innstillinger" "household-preferences": "Innstillinger for husholdning"
}, },
"meal-plan": { "meal-plan": {
"create-a-new-meal-plan": "Opprett en ny måltidsplan", "create-a-new-meal-plan": "Opprett en ny måltidsplan",
@ -312,16 +313,16 @@
"main": "Hovedrett", "main": "Hovedrett",
"meal-planner": "Måltidsplanlegger", "meal-planner": "Måltidsplanlegger",
"meal-plans": "Måltidsplaner", "meal-plans": "Måltidsplaner",
"mealplan-categories": "MÅLTIDSPLANKATEGORIER", "mealplan-categories": "MÅLTIDSPLAN-KATEGORIER",
"mealplan-created": "Måltidsplan opprettet", "mealplan-created": "Måltidsplan opprettet",
"mealplan-creation-failed": "Opprettelse av måltidsplan mislyktes", "mealplan-creation-failed": "Opprettelse av måltidsplan mislyktes",
"mealplan-deleted": "Måltidsplan slettet", "mealplan-deleted": "Måltidsplan slettet",
"mealplan-deletion-failed": "Sletting av måltidsplan mislyktes", "mealplan-deletion-failed": "Sletting av måltidsplan mislyktes",
"mealplan-settings": "Måltidsplaninnstillinger", "mealplan-settings": "Innstillinger for måltidsplan",
"mealplan-update-failed": "Oppdatering av måltidsplan mislyktes", "mealplan-update-failed": "Oppdatering av måltidsplan mislyktes",
"mealplan-updated": "Måltidsplan oppdatert", "mealplan-updated": "Måltidsplan oppdatert",
"mealplan-households-description": "If no household is selected, recipes can be added from any household", "mealplan-households-description": "If no household is selected, recipes can be added from any household",
"any-category": "Any Category", "any-category": "Enhver kategori",
"any-tag": "Any Tag", "any-tag": "Any Tag",
"any-household": "Any Household", "any-household": "Any Household",
"no-meal-plan-defined-yet": "Ingen måltidsplan er definert ennå", "no-meal-plan-defined-yet": "Ingen måltidsplan er definert ennå",
@ -425,7 +426,7 @@
"error-details": "Bare nettsteder som inneholder ld+json eller mikrodata kan importeres av Mealie. De største oppskriftsnettstedene støtter denne datastrukturen. Dersom nettstedet ditt ikke kan importeres, men det er json-data i loggen, må du rapportere et GitHub-problem med nettadressen og data.", "error-details": "Bare nettsteder som inneholder ld+json eller mikrodata kan importeres av Mealie. De største oppskriftsnettstedene støtter denne datastrukturen. Dersom nettstedet ditt ikke kan importeres, men det er json-data i loggen, må du rapportere et GitHub-problem med nettadressen og data.",
"error-title": "Ser ut til at ingenting ble funnet", "error-title": "Ser ut til at ingenting ble funnet",
"from-url": "Importer en oppskrift", "from-url": "Importer en oppskrift",
"github-issues": "GitHub-problemer", "github-issues": "GitHub Issues",
"google-ld-json-info": "Google ld+json-informasjon", "google-ld-json-info": "Google ld+json-informasjon",
"must-be-a-valid-url": "Må være en gyldig nettadresse", "must-be-a-valid-url": "Må være en gyldig nettadresse",
"paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Lim inn oppskriftsdataene. Hver linje blir behandlet som et element i en liste", "paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Lim inn oppskriftsdataene. Hver linje blir behandlet som et element i en liste",
@ -466,7 +467,7 @@
"calories-suffix": "kalorier", "calories-suffix": "kalorier",
"carbohydrate-content": "Karbohydrater", "carbohydrate-content": "Karbohydrater",
"categories": "Kategorier", "categories": "Kategorier",
"cholesterol-content": "Cholesterol", "cholesterol-content": "Kolesterol",
"comment-action": "Kommenter", "comment-action": "Kommenter",
"comment": "Kommentar", "comment": "Kommentar",
"comments": "Kommentarer", "comments": "Kommentarer",
@ -513,10 +514,11 @@
"recipe-updated": "Oppskrift oppdatert", "recipe-updated": "Oppskrift oppdatert",
"remove-from-favorites": "Fjern fra favoritter", "remove-from-favorites": "Fjern fra favoritter",
"remove-section": "Fjern seksjon", "remove-section": "Fjern seksjon",
"saturated-fat-content": "Saturated fat", "saturated-fat-content": "Mettet fett",
"save-recipe-before-use": "Lagre oppskrift før bruk", "save-recipe-before-use": "Lagre oppskrift før bruk",
"section-title": "Seksjonstittel", "section-title": "Seksjonstittel",
"servings": "Porsjoner", "servings": "Porsjoner",
"serves-amount": "Serves {amount}",
"share-recipe-message": "Jeg ville dele min {0} oppskrift med deg.", "share-recipe-message": "Jeg ville dele min {0} oppskrift med deg.",
"show-nutrition-values": "Vis ernæringsverdier", "show-nutrition-values": "Vis ernæringsverdier",
"sodium-content": "Natrium", "sodium-content": "Natrium",
@ -524,9 +526,9 @@
"sugar-content": "Sukker", "sugar-content": "Sukker",
"title": "Tittel", "title": "Tittel",
"total-time": "Total tid", "total-time": "Total tid",
"trans-fat-content": "Trans-fat", "trans-fat-content": "Transfett",
"unable-to-delete-recipe": "Kan ikke slette oppskrift", "unable-to-delete-recipe": "Kan ikke slette oppskrift",
"unsaturated-fat-content": "Unsaturated fat", "unsaturated-fat-content": "Umettet fett",
"no-recipe": "Ingen oppskrift", "no-recipe": "Ingen oppskrift",
"locked-by-owner": "Låst av eier", "locked-by-owner": "Låst av eier",
"join-the-conversation": "Delta i samtalen", "join-the-conversation": "Delta i samtalen",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Klarte ikke å legge til oppskrift i måltidsplan", "failed-to-add-recipe-to-mealplan": "Klarte ikke å legge til oppskrift i måltidsplan",
"failed-to-add-to-list": "Klarte ikke å legge til oppskrift i listen", "failed-to-add-to-list": "Klarte ikke å legge til oppskrift i listen",
"yield": "Gir", "yield": "Gir",
"yields-amount-with-text": "Gir {amount} {text}",
"yield-text": "Yield Text",
"quantity": "Antall", "quantity": "Antall",
"choose-unit": "Velg enhet", "choose-unit": "Velg enhet",
"press-enter-to-create": "Trykk Enter for å opprette", "press-enter-to-create": "Trykk Enter for å opprette",
@ -566,23 +570,16 @@
"increase-scale-label": "Øk skala med 1", "increase-scale-label": "Øk skala med 1",
"locked": "Låst", "locked": "Låst",
"public-link": "Offentlig lenke", "public-link": "Offentlig lenke",
"timer": {
"kitchen-timer": "Kjøkkentimer",
"start-timer": "Start nedtelling",
"pause-timer": "Pause nedtelling",
"resume-timer": "Fortsett nedtelling",
"stop-timer": "Stopp nedtelling"
},
"edit-timeline-event": "Endre tidslinjehendelser", "edit-timeline-event": "Endre tidslinjehendelser",
"timeline": "Tidslinje", "timeline": "Tidslinje",
"timeline-is-empty": "Ingenting på tidslinjen ennå. Prøv å lage denne oppskriften!", "timeline-is-empty": "Ingenting på tidslinjen ennå. Prøv å lage denne oppskriften!",
"timeline-no-events-found-try-adjusting-filters": "Ingen hendelser funnet. Prøv å endre søkefiltrene.", "timeline-no-events-found-try-adjusting-filters": "Ingen hendelser funnet. Prøv å endre søkefiltrene.",
"group-global-timeline": "{groupName} Global tidslinje", "group-global-timeline": "{groupName} Global tidslinje",
"open-timeline": "Åpne tidslinje", "open-timeline": "Åpne tidslinje",
"made-this": "Jeg har laget denne", "made-this": "Jeg har laget dette",
"how-did-it-turn-out": "Hvordan ble den?", "how-did-it-turn-out": "Hvordan ble det?",
"user-made-this": "{user} har laget denne", "user-made-this": "{user} har laget dette",
"last-made-date": "Sist laget: {date}", "last-made-date": "Sist laget {date}",
"api-extras-description": "Ekstramaterialer til oppskrifter er en viktig funksjon i Mealie API-en. De lar deg opprette egendefinerte JSON-nøkkel/verdi-par innenfor en oppskrift for å referere fra tredjepartsapplikasjoner. Du kan bruke disse nøklene til å gi informasjon for eksempel for å utløse automatiseringer eller egendefinerte meldinger som skal videreformidles til ønsket enhet.", "api-extras-description": "Ekstramaterialer til oppskrifter er en viktig funksjon i Mealie API-en. De lar deg opprette egendefinerte JSON-nøkkel/verdi-par innenfor en oppskrift for å referere fra tredjepartsapplikasjoner. Du kan bruke disse nøklene til å gi informasjon for eksempel for å utløse automatiseringer eller egendefinerte meldinger som skal videreformidles til ønsket enhet.",
"message-key": "Meldingsnøkkel", "message-key": "Meldingsnøkkel",
"parse": "Analyser", "parse": "Analyser",
@ -613,7 +610,7 @@
"scrape-recipe": "Skrap oppskrift", "scrape-recipe": "Skrap oppskrift",
"scrape-recipe-description": "Skrap en oppskrift ved bruk av nettadresse. Oppgi nettadressen til nettstedet du vil skrape, så vil Mealie forsøke å skrape oppskriften fra den siden og legge den til i samlingen din.", "scrape-recipe-description": "Skrap en oppskrift ved bruk av nettadresse. Oppgi nettadressen til nettstedet du vil skrape, så vil Mealie forsøke å skrape oppskriften fra den siden og legge den til i samlingen din.",
"scrape-recipe-have-a-lot-of-recipes": "Har du mange oppskrifter du ønsker å skrape samtidig?", "scrape-recipe-have-a-lot-of-recipes": "Har du mange oppskrifter du ønsker å skrape samtidig?",
"scrape-recipe-suggest-bulk-importer": "Prøv masseimporten", "scrape-recipe-suggest-bulk-importer": "Prøv masseimportering",
"scrape-recipe-have-raw-html-or-json-data": "Have raw HTML or JSON data?", "scrape-recipe-have-raw-html-or-json-data": "Have raw HTML or JSON data?",
"scrape-recipe-you-can-import-from-raw-data-directly": "You can import from raw data directly", "scrape-recipe-you-can-import-from-raw-data-directly": "You can import from raw data directly",
"import-original-keywords-as-tags": "Importer originale søkeord som emneord", "import-original-keywords-as-tags": "Importer originale søkeord som emneord",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Bruke OpenAI til å analysere resultatene i stedet for å basere seg på scraper-biblioteket. Når du oppretter en oppskrift via URL, blir dette gjort automatisk hvis scraper-biblioteket mislykkes, men du kan teste det manuelt her.", "recipe-debugger-use-openai-description": "Bruke OpenAI til å analysere resultatene i stedet for å basere seg på scraper-biblioteket. Når du oppretter en oppskrift via URL, blir dette gjort automatisk hvis scraper-biblioteket mislykkes, men du kan teste det manuelt her.",
"debug": "Feilsøk", "debug": "Feilsøk",
"tree-view": "Trevisning", "tree-view": "Trevisning",
"recipe-servings": "Oppskriftsporsjoner",
"recipe-yield": "Utbytte av oppskrift", "recipe-yield": "Utbytte av oppskrift",
"recipe-yield-text": "Recipe Yield Text",
"unit": "Enhet", "unit": "Enhet",
"upload-image": "Last opp bilde", "upload-image": "Last opp bilde",
"screen-awake": "Hold skjermen på", "screen-awake": "Hold skjermen på",
@ -649,7 +648,7 @@
"recipe-actions": "Oppskriftshandlinger", "recipe-actions": "Oppskriftshandlinger",
"parser": { "parser": {
"experimental-alert-text": "Mealie bruker naturlig språkbehandling til å analysere og lage enheter og matvarer til oppskriftsingrediensene dine. Denne funksjonen er eksperimentell og fungerer kanskje ikke som forventet. Hvis du foretrekker ikke å bruke de foreslåtte resultatene, kan du velge 'Avbryt', og endringene dine vil ikke bli lagret.", "experimental-alert-text": "Mealie bruker naturlig språkbehandling til å analysere og lage enheter og matvarer til oppskriftsingrediensene dine. Denne funksjonen er eksperimentell og fungerer kanskje ikke som forventet. Hvis du foretrekker ikke å bruke de foreslåtte resultatene, kan du velge 'Avbryt', og endringene dine vil ikke bli lagret.",
"ingredient-parser": "Ingrediens-parser", "ingredient-parser": "Ingrediens-analyserer",
"explanation": "For å bruke ingrediens-forslag, klikk på 'Analyser alle' for å starte prosessen. Når de prosesserte ingrediensene er tilgjengelige, kan du se gjennom elementene og kontrollere at de er sjekket korrekt. Modellens tillitsverdi vises på høyre side av elementet. Denne scoren er et gjennomsnitt av alle de individuelle poengene og alltid er ikke helt nøyaktige.", "explanation": "For å bruke ingrediens-forslag, klikk på 'Analyser alle' for å starte prosessen. Når de prosesserte ingrediensene er tilgjengelige, kan du se gjennom elementene og kontrollere at de er sjekket korrekt. Modellens tillitsverdi vises på høyre side av elementet. Denne scoren er et gjennomsnitt av alle de individuelle poengene og alltid er ikke helt nøyaktige.",
"alerts-explainer": "Varsler vil bli vist dersom en matchende matvare eller enhet blir funnet, men ikke finnes i databasen.", "alerts-explainer": "Varsler vil bli vist dersom en matchende matvare eller enhet blir funnet, men ikke finnes i databasen.",
"select-parser": "Velg analyserer", "select-parser": "Velg analyserer",
@ -662,7 +661,25 @@
"missing-food": "Opprett manglende mat: {food}", "missing-food": "Opprett manglende mat: {food}",
"no-food": "Ingen matvarer" "no-food": "Ingen matvarer"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Nullstill antall porsjoner",
"not-linked-ingredients": "Tilleggsingredienser"
},
"recipe-finder": {
"recipe-finder": "Oppskriftsfinner",
"recipe-finder-description": "Search for recipes based on ingredients you have on hand. You can also filter by tools you have available, and set a maximum number of missing ingredients or tools.",
"selected-ingredients": "Velg ingredienser",
"no-ingredients-selected": "Ingen ingredienser valgt",
"missing": "Mangler",
"no-recipes-found": "Ingen oppskrifter funnet",
"no-recipes-found-description": "Try adding more ingredients to your search or adjusting your filters",
"include-ingredients-on-hand": "Include Ingredients On Hand",
"include-tools-on-hand": "Include Tools On Hand",
"max-missing-ingredients": "Maks antall manglende ingredienser",
"max-missing-tools": "Maks antall manglende redskaper",
"selected-tools": "Velg redskaper",
"other-filters": "Andre filtre",
"ready-to-make": "Klar til å lages",
"almost-ready-to-make": "Nesten klar til å lages"
}, },
"search": { "search": {
"advanced-search": "Avansert søk", "advanced-search": "Avansert søk",
@ -866,7 +883,8 @@
"you-are-offline-description": "Ikke alle funksjoner er tilgjengelige i frakoblet modus. Du kan fremdeles legge til, endre og fjerne elementer. men du vil ikke kunne synkronisere endringene dine med serveren før du er logget på igjen.", "you-are-offline-description": "Ikke alle funksjoner er tilgjengelige i frakoblet modus. Du kan fremdeles legge til, endre og fjerne elementer. men du vil ikke kunne synkronisere endringene dine med serveren før du er logget på igjen.",
"are-you-sure-you-want-to-check-all-items": "Er du sikker på at du vil velge alle elementer?", "are-you-sure-you-want-to-check-all-items": "Er du sikker på at du vil velge alle elementer?",
"are-you-sure-you-want-to-uncheck-all-items": "Er du sikker på at du vil fjerne valg av alle elementer?", "are-you-sure-you-want-to-uncheck-all-items": "Er du sikker på at du vil fjerne valg av alle elementer?",
"are-you-sure-you-want-to-delete-checked-items": "Er du sikker på at du vil slette alle valgte elementer?" "are-you-sure-you-want-to-delete-checked-items": "Er du sikker på at du vil slette alle valgte elementer?",
"no-shopping-lists-found": "Ingen handlelister funnet"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Alle oppskrifter", "all-recipes": "Alle oppskrifter",
@ -1268,16 +1286,17 @@
"restore-from-v1-backup": "Har du en sikkerhetskopi fra en tidligere forekomst av Mealie v1? Du kan gjenopprette den her.", "restore-from-v1-backup": "Har du en sikkerhetskopi fra en tidligere forekomst av Mealie v1? Du kan gjenopprette den her.",
"manage-profile-or-get-invite-link": "Administrer din egen profil, eller hent en invitasjonslenke for å dele med andre." "manage-profile-or-get-invite-link": "Administrer din egen profil, eller hent en invitasjonslenke for å dele med andre."
}, },
"debug-openai-services": "Debug OpenAI Services", "debug-openai-services": "Feilsøk OpenAI-tjenester",
"debug-openai-services-description": "Use this page to debug OpenAI services. You can test your OpenAI connection and see the results here. If you have image services enabled, you can also provide an image.", "debug-openai-services-description": "Use this page to debug OpenAI services. You can test your OpenAI connection and see the results here. If you have image services enabled, you can also provide an image.",
"run-test": "Run Test", "run-test": "Kjør test",
"test-results": "Test Results", "test-results": "Testresultater",
"group-delete-note": "Groups with users or households cannot be deleted", "group-delete-note": "Groups with users or households cannot be deleted",
"household-delete-note": "Households with users cannot be deleted" "household-delete-note": "Households with users cannot be deleted"
}, },
"profile": { "profile": {
"welcome-user": "Velkommen, {0}!", "welcome-user": "Velkommen, {0}!",
"description": "Administrer din profil, oppskrifter og gruppeinnstillinger.", "description": "Administrer din profil, oppskrifter og gruppeinnstillinger.",
"invite-link": "Invitasjonslenke",
"get-invite-link": "Få invitasjonslenke", "get-invite-link": "Få invitasjonslenke",
"get-public-link": "Få offentlig lenke", "get-public-link": "Få offentlig lenke",
"account-summary": "Kontosammendrag", "account-summary": "Kontosammendrag",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Kokebøker", "cookbooks": "Kokebøker",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.",
"hide-cookbooks-from-other-households": "Hide Cookbooks from Other Households",
"hide-cookbooks-from-other-households-description": "When enabled, only cookbooks from your household will appear on the sidebar",
"public-cookbook": "Offentlig kokebok", "public-cookbook": "Offentlig kokebok",
"public-cookbook-description": "Offentlige kokebøker kan deles med ikke-Mealie-brukere og vil bli vist på din gruppeside.", "public-cookbook-description": "Offentlige kokebøker kan deles med ikke-Mealie-brukere og vil bli vist på din gruppeside.",
"filter-options": "Filteralternativer", "filter-options": "Filteralternativer",
@ -1342,25 +1363,25 @@
}, },
"query-filter": { "query-filter": {
"logical-operators": { "logical-operators": {
"and": "AND", "and": "OG",
"or": "OR" "or": "ELLER"
}, },
"relational-operators": { "relational-operators": {
"equals": "equals", "equals": "er lik",
"does-not-equal": "does not equal", "does-not-equal": "er ikke lik",
"is-greater-than": "is greater than", "is-greater-than": "er større enn",
"is-greater-than-or-equal-to": "is greater than or equal to", "is-greater-than-or-equal-to": "er større enn eller lik",
"is-less-than": "is less than", "is-less-than": "er mindre enn",
"is-less-than-or-equal-to": "is less than or equal to" "is-less-than-or-equal-to": "er mindre enn eller lik"
}, },
"relational-keywords": { "relational-keywords": {
"is": "is", "is": "er",
"is-not": "is not", "is-not": "er ikke",
"is-one-of": "is one of", "is-one-of": "er en av",
"is-not-one-of": "is not one of", "is-not-one-of": "er ikke en av",
"contains-all-of": "contains all of", "contains-all-of": "inneholder alle",
"is-like": "is like", "is-like": "er som",
"is-not-like": "is not like" "is-not-like": "er ikke som"
} }
} }
} }

View file

@ -8,7 +8,7 @@
"database-type": "Rodzaj bazy danych", "database-type": "Rodzaj bazy danych",
"database-url": "URL bazy danych", "database-url": "URL bazy danych",
"default-group": "Domyślna grupa", "default-group": "Domyślna grupa",
"default-household": "Default Household", "default-household": "Domyślne gospodarstwo domowe",
"demo": "Wersja demonstracyjna", "demo": "Wersja demonstracyjna",
"demo-status": "Status demo", "demo-status": "Status demo",
"development": "Wersja testowa", "development": "Wersja testowa",
@ -26,14 +26,14 @@
"sponsor": "Sponsor" "sponsor": "Sponsor"
}, },
"asset": { "asset": {
"assets": "Zasoby", "assets": "Załączniki",
"code": "Kod", "code": "Kod",
"file": "Plik", "file": "Plik",
"image": "Zdjęcie", "image": "Zdjęcie",
"new-asset": "Nowy zasób", "new-asset": "Nowy załącznik",
"pdf": "PDF", "pdf": "PDF",
"recipe": "Przepis", "recipe": "Przepis",
"show-assets": "Wyświetl zasoby", "show-assets": "Wyświetl załączniki",
"error-submitting-form": "Błąd przesyłania formularza" "error-submitting-form": "Błąd przesyłania formularza"
}, },
"category": { "category": {
@ -45,7 +45,7 @@
"category-filter": "Filtr kategorii", "category-filter": "Filtr kategorii",
"category-update-failed": "Aktualizacja kategorii nie powiodła się", "category-update-failed": "Aktualizacja kategorii nie powiodła się",
"category-updated": "Zaktualizowano kategorię", "category-updated": "Zaktualizowano kategorię",
"uncategorized-count": "Nieskategoryzowane {count}", "uncategorized-count": "{count} bez kategorii",
"create-a-category": "Stwórz kategorię", "create-a-category": "Stwórz kategorię",
"category-name": "Nazwa kategorii", "category-name": "Nazwa kategorii",
"category": "Kategoria" "category": "Kategoria"
@ -65,7 +65,7 @@
"something-went-wrong": "Coś poszło nie tak!", "something-went-wrong": "Coś poszło nie tak!",
"subscribed-events": "Zasubskrybowane wydarzenia", "subscribed-events": "Zasubskrybowane wydarzenia",
"test-message-sent": "Wiadomość została wysłana", "test-message-sent": "Wiadomość została wysłana",
"message-sent": "Message Sent", "message-sent": "Wiadomość wysłana",
"new-notification": "Nowe powiadomienie", "new-notification": "Nowe powiadomienie",
"event-notifiers": "Powiadomienia o zdarzeniach", "event-notifiers": "Powiadomienia o zdarzeniach",
"apprise-url-skipped-if-blank": "URL Apprise (pominięty, jeśli puste)", "apprise-url-skipped-if-blank": "URL Apprise (pominięty, jeśli puste)",
@ -87,7 +87,7 @@
"clear": "Wyczyść", "clear": "Wyczyść",
"close": "Zamknij", "close": "Zamknij",
"confirm": "Potwierdź", "confirm": "Potwierdź",
"confirm-how-does-everything-look": "How does everything look?", "confirm-how-does-everything-look": "Jak wygląda wszystko?",
"confirm-delete-generic": "Czy jesteś pewien, że chcesz usunąć ten element?", "confirm-delete-generic": "Czy jesteś pewien, że chcesz usunąć ten element?",
"copied_message": "Skopiowane!", "copied_message": "Skopiowane!",
"create": "Utwórz", "create": "Utwórz",
@ -135,7 +135,7 @@
"plural-name": "Nazwa w liczbie mnogiej", "plural-name": "Nazwa w liczbie mnogiej",
"print": "Drukuj", "print": "Drukuj",
"print-preferences": "Właściwości drukowania", "print-preferences": "Właściwości drukowania",
"random": "Losowa", "random": "Losuj",
"rating": "Ocena", "rating": "Ocena",
"recent": "Najnowsze", "recent": "Najnowsze",
"recipe": "Przepis", "recipe": "Przepis",
@ -149,8 +149,8 @@
"show-all": "Pokaż wszystko", "show-all": "Pokaż wszystko",
"shuffle": "Pomieszaj", "shuffle": "Pomieszaj",
"sort": "Sortuj", "sort": "Sortuj",
"sort-ascending": "Sort Ascending", "sort-ascending": "Sortuj rosnąco",
"sort-descending": "Sort Descending", "sort-descending": "Sortuj malejąco",
"sort-alphabetically": "Alfabetyczne", "sort-alphabetically": "Alfabetyczne",
"status": "Stan", "status": "Stan",
"subject": "Temat", "subject": "Temat",
@ -162,7 +162,7 @@
"test": "Testuj", "test": "Testuj",
"themes": "Motywy", "themes": "Motywy",
"thursday": "Czwartek", "thursday": "Czwartek",
"title": "Title", "title": "Tytuł",
"token": "Token", "token": "Token",
"tuesday": "Wtorek", "tuesday": "Wtorek",
"type": "Typ", "type": "Typ",
@ -176,13 +176,13 @@
"foods": "Żywność", "foods": "Żywność",
"units": "Jednostki", "units": "Jednostki",
"back": "Cofnij", "back": "Cofnij",
"next": "Następny", "next": "Dalej",
"start": "Start", "start": "Zaczynajmy",
"toggle-view": "Przełącz widok", "toggle-view": "Przełącz widok",
"date": "Data", "date": "Data",
"id": "Id", "id": "Id",
"owner": "Właściciel", "owner": "Właściciel",
"change-owner": "Change Owner", "change-owner": "Zmień właściciela",
"date-added": "Data Dodania", "date-added": "Data Dodania",
"none": "Brak", "none": "Brak",
"run": "Uruchom", "run": "Uruchom",
@ -212,12 +212,12 @@
"unsaved-changes": "Masz niezapisane zmiany. Czy chcesz zapisać przed wyjściem? Ok, aby zapisać, Anuluj, żeby odrzucić zmiany.", "unsaved-changes": "Masz niezapisane zmiany. Czy chcesz zapisać przed wyjściem? Ok, aby zapisać, Anuluj, żeby odrzucić zmiany.",
"clipboard-copy-failure": "Nie udało się skopiować do schowka.", "clipboard-copy-failure": "Nie udało się skopiować do schowka.",
"confirm-delete-generic-items": "Czy na pewno chcesz usunąć następujące elementy?", "confirm-delete-generic-items": "Czy na pewno chcesz usunąć następujące elementy?",
"organizers": "Organizers", "organizers": "Organizatory",
"caution": "Caution", "caution": "Ostrzeżenie",
"show-advanced": "Show Advanced", "show-advanced": "Pokaż zaawansowane",
"add-field": "Add Field", "add-field": "Dodaj pole",
"date-created": "Date Created", "date-created": "Data utworzenia",
"date-updated": "Date Updated" "date-updated": "Data aktualizacji"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Czy na pewno chcesz usunąć <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Czy na pewno chcesz usunąć <b>{groupName}<b/>?",
@ -244,30 +244,30 @@
"keep-my-recipes-private-description": "Ustawia grupę i wszystkie przepisy jako prywatne. Opcję tą zawsze można później zmienić." "keep-my-recipes-private-description": "Ustawia grupę i wszystkie przepisy jako prywatne. Opcję tą zawsze można później zmienić."
}, },
"manage-members": "Zarządzaj członkami", "manage-members": "Zarządzaj członkami",
"manage-members-description": "Manage the permissions of the members in your household. {manage} allows the user to access the data-management page, and {invite} allows the user to generate invitation links for other users. Group owners cannot change their own permissions.", "manage-members-description": "Zarządzaj uprawnieniami członków w swoim gospodarstwie domowym. {manage} pozwala użytkownikowi na dostęp do strony zarządzania danymi, a {invite} pozwala użytkownikowi na generowanie linków z zaproszeniami dla innych użytkowników. Właściciele grupy nie mogą zmienić swoich uprawnień.",
"manage": "Zarządzaj", "manage": "Zarządzaj",
"manage-household": "Manage Household", "manage-household": "Zarządzanie gospodarstwem domowym",
"invite": "Zaproś", "invite": "Zaproś",
"looking-to-update-your-profile": "Chcesz zaktualizować swój profil?", "looking-to-update-your-profile": "Chcesz zaktualizować swój profil?",
"default-recipe-preferences-description": "To są ustawienia domyślne podczas tworzenia nowego przepisu w twojej grupie. Można je zmienić dla poszczególnych przepisów w menu ustawień przepisu.", "default-recipe-preferences-description": "To są ustawienia domyślne podczas tworzenia nowego przepisu w twojej grupie. Można je zmienić dla poszczególnych przepisów w menu ustawień przepisu.",
"default-recipe-preferences": "Domyślne preferencje przepisów", "default-recipe-preferences": "Domyślne preferencje przepisów",
"group-preferences": "Preferencje grupy", "group-preferences": "Preferencje grupy",
"private-group": "Prywatna Grupa", "private-group": "Prywatna Grupa",
"private-group-description": "Setting your group to private will disable all public view options. This overrides any individual public view settings", "private-group-description": "Ustawienie twojej grupy na prywatne spowoduje wyłączenie wszystkich opcji widoku publicznego. To nadpisuje wszystkie ustawienia widoku publicznego",
"enable-public-access": "Enable Public Access", "enable-public-access": "Włącz dostęp publiczny",
"enable-public-access-description": "Make group recipes public by default, and allow visitors to view recipes without logging-in", "enable-public-access-description": "Ustaw grupę przepisów jako domyślnie publiczną, i pozwól odwiedzającym zobaczyć przepisy bez logowania.",
"allow-users-outside-of-your-group-to-see-your-recipes": "Zezwalaj użytkownikom spoza twojej grupy na oglądanie twoich przepisów", "allow-users-outside-of-your-group-to-see-your-recipes": "Zezwalaj użytkownikom spoza twojej grupy na oglądanie twoich przepisów",
"allow-users-outside-of-your-group-to-see-your-recipes-description": "Po włączeniu możesz użyć linku publicznego udostępniania, aby udostępniać określone przepisy bez autoryzacji użytkownika. Po wyłączeniu, możesz dzielić się przepisami tylko z użytkownikami z twojej grupy lub z wcześniej wygenerowanym linkiem prywatnym", "allow-users-outside-of-your-group-to-see-your-recipes-description": "Po włączeniu możesz użyć linku publicznego udostępniania, aby udostępniać określone przepisy bez autoryzacji użytkownika. Po wyłączeniu, możesz dzielić się przepisami tylko z użytkownikami z twojej grupy lub z wcześniej wygenerowanym linkiem prywatnym",
"show-nutrition-information": "Pokaż informacje o wartości odżywczej", "show-nutrition-information": "Pokaż informacje o wartości odżywczej",
"show-nutrition-information-description": "Po włączeniu informacja o wartości odżywczej będzie wyświetlana na recepturze, jeśli jest dostępna. Jeśli nie ma dostępnych informacji o wartości odżywczej, informacje o wartości odżywczej nie zostaną pokazane", "show-nutrition-information-description": "Po włączeniu informacja o wartości odżywczej będzie wyświetlana na recepturze, jeśli jest dostępna. Jeśli nie ma dostępnych informacji o wartości odżywczej, informacje o wartości odżywczej nie zostaną pokazane",
"show-recipe-assets": "Pokaż zasoby przepisu", "show-recipe-assets": "Pokaż załączniki przepisu",
"show-recipe-assets-description": "Po włączeniu zasoby receptury będą wyświetlane na recepturze, jeśli są dostępne", "show-recipe-assets-description": "Po włączeniu załączników będą one wyświetlane w przepisie, jeśli są dostępne",
"default-to-landscape-view": "Domyślnie w widoku poziomym", "default-to-landscape-view": "Domyślnie w widoku poziomym",
"default-to-landscape-view-description": "Po włączeniu nagłówek receptury będzie wyświetlany w widoku poziomym", "default-to-landscape-view-description": "Po włączeniu nagłówek receptury będzie wyświetlany w widoku poziomym",
"disable-users-from-commenting-on-recipes": "Zablokuj użytkownikom komentowanie przepisów", "disable-users-from-commenting-on-recipes": "Zablokuj użytkownikom komentowanie przepisów",
"disable-users-from-commenting-on-recipes-description": "Ukrywa sekcję komentarzy na stronie przepisu i wyłącza komentowanie", "disable-users-from-commenting-on-recipes-description": "Ukrywa sekcję komentarzy na stronie przepisu i wyłącza komentowanie",
"disable-organizing-recipe-ingredients-by-units-and-food": "Wyłącz organizowanie składników receptury według jednostek i jedzenia", "disable-organizing-recipe-ingredients-by-units-and-food": "Wyłącz organizowanie składników receptury według jednostek i jedzenia",
"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", "disable-organizing-recipe-ingredients-by-units-and-food-description": "Ukrywa pola Żywności, Jednostki i Ilości dla składników i traktuje składniki jako puste pola tekstowe",
"general-preferences": "Ustawienia ogólne", "general-preferences": "Ustawienia ogólne",
"group-recipe-preferences": "Ustawienia grupy przepisów", "group-recipe-preferences": "Ustawienia grupy przepisów",
"report": "Zgłoś", "report": "Zgłoś",
@ -276,29 +276,30 @@
"admin-group-management": "Administracja Zarządzanie Grupami", "admin-group-management": "Administracja Zarządzanie Grupami",
"admin-group-management-text": "Zmiany w tej grupie zostaną natychmiast odzwierciedlone.", "admin-group-management-text": "Zmiany w tej grupie zostaną natychmiast odzwierciedlone.",
"group-id-value": "Id grupy: {0}", "group-id-value": "Id grupy: {0}",
"total-households": "Total Households" "total-households": "Gospodarstwa domowe razem",
"you-must-select-a-group-before-selecting-a-household": "Musisz wybrać grupę przed wybraniem gospodarstwa domowego"
}, },
"household": { "household": {
"household": "Household", "household": "Gospodarstwo domowe",
"households": "Households", "households": "Gospodarstwa domowe",
"user-household": "User Household", "user-household": "Gospodarstwo domowe użytkownika",
"create-household": "Create Household", "create-household": "Utwórz gospodarstwo domowe",
"household-name": "Household Name", "household-name": "Nazwa gospodarstwa domowego",
"household-group": "Household Group", "household-group": "Grupa gospodarstw domowych",
"household-management": "Household Management", "household-management": "Zarządzanie gospodarstwem domowym",
"manage-households": "Manage Households", "manage-households": "Zarządzaj gospodarstwami domowymi",
"admin-household-management": "Admin Household Management", "admin-household-management": "Administracja gospodarstwem domowym",
"admin-household-management-text": "Changes to this household will be reflected immediately.", "admin-household-management-text": "Zmiany w tym gospodarstwie domowym zostaną uwzględnione natychmiast.",
"household-id-value": "Household Id: {0}", "household-id-value": "Id gospodarstwa domowego: {0}",
"private-household": "Private Household", "private-household": "Prywatne gospodarstwo domowe",
"private-household-description": "Setting your household to private will disable all public view options. This overrides any individual public view settings", "private-household-description": "Ustawienie domu na prywatne wyłączy wszystkie opcje widoku publicznego. To nadpisuje ustawienia widoku publicznego dla wszystkich przepisów.",
"lock-recipe-edits-from-other-households": "Lock recipe edits from other households", "lock-recipe-edits-from-other-households": "Zablokuj możliwość edycji przepisów z innych gospodarstw domowych",
"lock-recipe-edits-from-other-households-description": "When enabled only users in your household can edit recipes created by your household", "lock-recipe-edits-from-other-households-description": "Po włączeniu tylko użytkownicy w Twoim gospodarstwie domowym mogą edytować przepisy utworzone przez Twoje gospodarstwo domowe",
"household-recipe-preferences": "Household Recipe Preferences", "household-recipe-preferences": "Preferencje przepisów w gospodarstwie domowym",
"default-recipe-preferences-description": "These are the default settings when a new recipe is created in your household. These can be changed for individual recipes in the recipe settings menu.", "default-recipe-preferences-description": "To są domyślne ustawienia, gdy nowy przepis jest tworzony w Twoim gospodarstwie domowym. Można je zmienić dla poszczególnych przepisów w menu ustawień przepisu.",
"allow-users-outside-of-your-household-to-see-your-recipes": "Allow users outside of your household to see your recipes", "allow-users-outside-of-your-household-to-see-your-recipes": "Zezwalaj użytkownikom spoza twojego gospodarstwa domowego na oglądanie twoich przepisów",
"allow-users-outside-of-your-household-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 household or with a pre-generated private link", "allow-users-outside-of-your-household-to-see-your-recipes-description": "Po włączeniu możesz użyć linku publicznego udostępniania, aby udostępniać określone przepisy bez autoryzacji użytkownika. Po wyłączeniu możesz dzielić się recepturami tylko z użytkownikami, którzy są w Twoim gospodarstwie domowym lub z wygenerowanym wcześniej prywatnym linkiem",
"household-preferences": "Household Preferences" "household-preferences": "Preferencje gospodarstwa domowego"
}, },
"meal-plan": { "meal-plan": {
"create-a-new-meal-plan": "Utwórz nowy plan posiłku", "create-a-new-meal-plan": "Utwórz nowy plan posiłku",
@ -320,14 +321,14 @@
"mealplan-settings": "Ustawienia planu posiłków", "mealplan-settings": "Ustawienia planu posiłków",
"mealplan-update-failed": "Aktualizacja planu posiłków nie powiodła się", "mealplan-update-failed": "Aktualizacja planu posiłków nie powiodła się",
"mealplan-updated": "Plan posiłków został zaktualizowany", "mealplan-updated": "Plan posiłków został zaktualizowany",
"mealplan-households-description": "If no household is selected, recipes can be added from any household", "mealplan-households-description": "Jeśli nie jest wybrane żadne gospodarstwo domowe, to przepisy mogą być dodane z dowolnego gospodarstwa domowego",
"any-category": "Any Category", "any-category": "Dowolna kategoria",
"any-tag": "Any Tag", "any-tag": "Dowolny tag",
"any-household": "Any Household", "any-household": "Dowolne gospodarstwo domowe",
"no-meal-plan-defined-yet": "Brak zdefiniowanego planu posiłków", "no-meal-plan-defined-yet": "Brak zdefiniowanego planu posiłków",
"no-meal-planned-for-today": "Brak zaplanowane posiłku na dziś", "no-meal-planned-for-today": "Brak zaplanowane posiłku na dziś",
"numberOfDays-hint": "Number of days on page load", "numberOfDays-hint": "Ilość dni przy ładowaniu strony",
"numberOfDays-label": "Default Days", "numberOfDays-label": "Domyślne dni",
"only-recipes-with-these-categories-will-be-used-in-meal-plans": "Tylko przepisy z tych kategorii będą używane w planach posiłków", "only-recipes-with-these-categories-will-be-used-in-meal-plans": "Tylko przepisy z tych kategorii będą używane w planach posiłków",
"planner": "Planer", "planner": "Planer",
"quick-week": "Szybki plan na tydzień", "quick-week": "Szybki plan na tydzień",
@ -348,7 +349,7 @@
"note-only": "Tylko notatka", "note-only": "Tylko notatka",
"random-meal": "Losowy posiłek", "random-meal": "Losowy posiłek",
"random-dinner": "Losowa Kolacja", "random-dinner": "Losowa Kolacja",
"random-side": "Losowa strona", "random-side": "Losowa przystawka",
"this-rule-will-apply": "Ta reguła zacznie obowiązywać {dayCriteria} {mealTypeCriteria}.", "this-rule-will-apply": "Ta reguła zacznie obowiązywać {dayCriteria} {mealTypeCriteria}.",
"to-all-days": "do wszystkich dni", "to-all-days": "do wszystkich dni",
"on-days": "dnia {0}ego", "on-days": "dnia {0}ego",
@ -356,7 +357,7 @@
"for-type-meal-types": "dla {0} rodzajów posiłków", "for-type-meal-types": "dla {0} rodzajów posiłków",
"meal-plan-rules": "Zasady planu posiłków", "meal-plan-rules": "Zasady planu posiłków",
"new-rule": "Nowa reguła", "new-rule": "Nowa reguła",
"meal-plan-rules-description": "You can create rules for auto selecting recipes for your meal plans. These rules are used by the server to determine the random pool of recipes to select from when creating meal plans. Note that if rules have the same day/type constraints then the rule filters will be merged. In practice, it's unnecessary to create duplicate rules, but it's possible to do so.", "meal-plan-rules-description": "Możesz tworzyć reguły automatycznego wyboru przepisów dla planów posiłków. Te reguły są używane przez serwer do określenia losowej puli przepisów do wyboru podczas tworzenia planów posiłków. Zauważ, że jeśli reguły mają ograniczenia tego samego dnia lub typu, filtry reguł zostaną scalone. W praktyce tworzenie duplikatów reguł jest zbędne, ale dozwolone.",
"new-rule-description": "Przy tworzeniu nowej reguły dotyczącej planu posiłków można ograniczyć regułę, tak aby miała zastosowanie do określonego dnia tygodnia i/lub określonego rodzaju posiłku. Aby zastosować regułę do wszystkich dni lub wszystkich rodzajów posiłków można ustawić regułę na \"Dowolny\", co będzie miało zastosowanie do wszystkich możliwych wartości dla dnia i/lub typu posiłku.", "new-rule-description": "Przy tworzeniu nowej reguły dotyczącej planu posiłków można ograniczyć regułę, tak aby miała zastosowanie do określonego dnia tygodnia i/lub określonego rodzaju posiłku. Aby zastosować regułę do wszystkich dni lub wszystkich rodzajów posiłków można ustawić regułę na \"Dowolny\", co będzie miało zastosowanie do wszystkich możliwych wartości dla dnia i/lub typu posiłku.",
"recipe-rules": "Reguły przepisów", "recipe-rules": "Reguły przepisów",
"applies-to-all-days": "Dotyczy wszystkich dni", "applies-to-all-days": "Dotyczy wszystkich dni",
@ -398,11 +399,11 @@
}, },
"recipe-data-migrations": "Migracja danych przepisów", "recipe-data-migrations": "Migracja danych przepisów",
"recipe-data-migrations-explanation": "Receptury mogą być przeniesione z innej wspieranej aplikacji na Mealie. To świetny sposób na rozpoczęcie z Mealie.", "recipe-data-migrations-explanation": "Receptury mogą być przeniesione z innej wspieranej aplikacji na Mealie. To świetny sposób na rozpoczęcie z Mealie.",
"coming-from-another-application-or-an-even-older-version-of-mealie": "Coming from another application or an even older version of Mealie? Check out migrations and see if your data can be imported.", "coming-from-another-application-or-an-even-older-version-of-mealie": "Przechodzisz z innej aplikacji, bądź starszej wersji Mealie? Sprawdź dostępne migracje i zobacz czy dane mogą zostać zaimportowane.",
"choose-migration-type": "Wybierz typ migracji", "choose-migration-type": "Wybierz typ migracji",
"tag-all-recipes": "Oznacz wszystkie przepisy tagiem {tag-name}", "tag-all-recipes": "Oznacz wszystkie przepisy tagiem {tag-name}",
"nextcloud-text": "Przepisy Nextcloud mogą być zaimportowane z pliku zip, który zawiera dane przechowywane w Nextcloud. Zobacz przykładową strukturę folderu poniżej, aby upewnić się, że Twoje przepisy mogą być importowane.", "nextcloud-text": "Przepisy Nextcloud mogą być zaimportowane z pliku zip, który zawiera dane przechowywane w Nextcloud. Zobacz przykładową strukturę folderu poniżej, aby upewnić się, że Twoje przepisy mogą być importowane.",
"chowdown-text": "Mealie natively supports the chowdown repository format. Download the code repository as a .zip file and upload it below.", "chowdown-text": "Mealie natywnie obsługuje format repozytorium chowdown. Pobierz repozytorium kodu jako plik .zip i prześlij go poniżej.",
"recipe-1": "Przepis 1", "recipe-1": "Przepis 1",
"recipe-2": "Przepis 2", "recipe-2": "Przepis 2",
"paprika-text": "Mealie może importować przepisy z aplikacji Paprika. Eksportuj swoje przepisy z papriki, zmień nazwę rozszerzenia eksportu na .zip i prześlij je poniżej.", "paprika-text": "Mealie może importować przepisy z aplikacji Paprika. Eksportuj swoje przepisy z papriki, zmień nazwę rozszerzenia eksportu na .zip i prześlij je poniżej.",
@ -413,11 +414,11 @@
}, },
"myrecipebox": { "myrecipebox": {
"title": "My Recipe Box", "title": "My Recipe Box",
"description-long": "Mealie can import recipes from My Recipe Box. Export your recipes in CSV format, then upload the .csv file below." "description-long": "Mealie mogą importować przepisy z My Recipe Box. Eksportuj swoje przepisy w formacie CSV, a następnie prześlij plik .csv poniżej."
}, },
"recipekeeper": { "recipekeeper": {
"title": "Recipe Keeper", "title": "Recipe Keeper",
"description-long": "Mealie can import recipes from Recipe Keeper. Export your recipes in zip format, then upload the .zip file below." "description-long": "Mealie może importować przepisy z Recipe Keeper. Eksportuj przepisy w formacie zip, a następnie prześlij plik .zip poniżej."
} }
}, },
"new-recipe": { "new-recipe": {
@ -431,7 +432,7 @@
"paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Wklej zawartość przepisu. Każda indywidualna linia traktowana będzie jako pozycja na liście", "paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Wklej zawartość przepisu. Każda indywidualna linia traktowana będzie jako pozycja na liście",
"recipe-markup-specification": "Specyfikacja znaczników przepisów", "recipe-markup-specification": "Specyfikacja znaczników przepisów",
"recipe-url": "Adres URL przepisu", "recipe-url": "Adres URL przepisu",
"recipe-html-or-json": "Recipe HTML or JSON", "recipe-html-or-json": "Przepis HTML lub JSON",
"upload-a-recipe": "Wrzuć przepis", "upload-a-recipe": "Wrzuć przepis",
"upload-individual-zip-file": "Prześlij pojedynczy plik .zip wyeksportowany z innej instancji Mealie.", "upload-individual-zip-file": "Prześlij pojedynczy plik .zip wyeksportowany z innej instancji Mealie.",
"url-form-hint": "Skopiuj i wklej link ze swojej ulubionej strony z przepisami", "url-form-hint": "Skopiuj i wklej link ze swojej ulubionej strony z przepisami",
@ -480,17 +481,17 @@
"edit-scale": "Edytuj skalę", "edit-scale": "Edytuj skalę",
"fat-content": "Tłuszcz", "fat-content": "Tłuszcz",
"fiber-content": "Błonnik", "fiber-content": "Błonnik",
"grams": "gram", "grams": "g",
"ingredient": "Składnik", "ingredient": "Składnik",
"ingredients": "Składniki", "ingredients": "Składniki",
"insert-ingredient": "Wstaw Składnik", "insert-ingredient": "Wstaw Składnik",
"insert-section": "Wstaw sekcję", "insert-section": "Wstaw sekcję",
"insert-above": "Insert Above", "insert-above": "Wstaw powyżej",
"insert-below": "Insert Below", "insert-below": "Wstaw poniżej",
"instructions": "Instrukcje", "instructions": "Instrukcje",
"key-name-required": "Nazwa klucza jest wymagana", "key-name-required": "Nazwa klucza jest wymagana",
"landscape-view-coming-soon": "Widok poziomy (wkrótce)", "landscape-view-coming-soon": "Widok poziomy (wkrótce)",
"milligrams": "miligram", "milligrams": "mg",
"new-key-name": "Nazwa nowego klucza", "new-key-name": "Nazwa nowego klucza",
"no-white-space-allowed": "Znaki niedrukowalne są niedozwolone", "no-white-space-allowed": "Znaki niedrukowalne są niedozwolone",
"note": "Notatka", "note": "Notatka",
@ -513,10 +514,11 @@
"recipe-updated": "Przepis został zaktualizowany", "recipe-updated": "Przepis został zaktualizowany",
"remove-from-favorites": "Usuń z ulubionych", "remove-from-favorites": "Usuń z ulubionych",
"remove-section": "Usuń sekcję", "remove-section": "Usuń sekcję",
"saturated-fat-content": "Saturated fat", "saturated-fat-content": "Tłuszcze nasycone",
"save-recipe-before-use": "Zapisz przepis przed użyciem", "save-recipe-before-use": "Zapisz przepis przed użyciem",
"section-title": "Tytuł rozdziału", "section-title": "Tytuł rozdziału",
"servings": "Porcje", "servings": "Porcje",
"serves-amount": "Porcje {amount}",
"share-recipe-message": "Chcę podzielić się z Tobą moim przepisem na {0}.", "share-recipe-message": "Chcę podzielić się z Tobą moim przepisem na {0}.",
"show-nutrition-values": "Pokaż wartości odżywcze", "show-nutrition-values": "Pokaż wartości odżywcze",
"sodium-content": "Sód", "sodium-content": "Sód",
@ -524,9 +526,9 @@
"sugar-content": "Cukry", "sugar-content": "Cukry",
"title": "Tytuł", "title": "Tytuł",
"total-time": "Czas całkowity", "total-time": "Czas całkowity",
"trans-fat-content": "Trans-fat", "trans-fat-content": "Tłuszcze trans",
"unable-to-delete-recipe": "Nie można usunąć przepisu", "unable-to-delete-recipe": "Nie można usunąć przepisu",
"unsaturated-fat-content": "Unsaturated fat", "unsaturated-fat-content": "Tłuszcze nienasycone",
"no-recipe": "Brak przepisu", "no-recipe": "Brak przepisu",
"locked-by-owner": "Zablokowane przez właściciela", "locked-by-owner": "Zablokowane przez właściciela",
"join-the-conversation": "Dołącz do rozmowy", "join-the-conversation": "Dołącz do rozmowy",
@ -544,7 +546,9 @@
"failed-to-add-recipes-to-list": "Nie udało się dodać przepisu do listy", "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", "failed-to-add-recipe-to-mealplan": "Nie udało się dodać przepisu do planu posiłków",
"failed-to-add-to-list": "Nie udało się dodać do listy", "failed-to-add-to-list": "Nie udało się dodać do listy",
"yield": "Wydajność", "yield": "Ilość",
"yields-amount-with-text": "Ilość {amount} {text}",
"yield-text": "Jednostka \"Ilość\"",
"quantity": "Ilość", "quantity": "Ilość",
"choose-unit": "Wybierz jednostkę", "choose-unit": "Wybierz jednostkę",
"press-enter-to-create": "Naciśnij \"enter\", aby utworzyć", "press-enter-to-create": "Naciśnij \"enter\", aby utworzyć",
@ -566,17 +570,10 @@
"increase-scale-label": "Zwiększ Skalę o 1", "increase-scale-label": "Zwiększ Skalę o 1",
"locked": "Zablokowany", "locked": "Zablokowany",
"public-link": "Link publiczny", "public-link": "Link publiczny",
"timer": {
"kitchen-timer": "Minutnik",
"start-timer": "Włącz minutnik",
"pause-timer": "Zatrzymaj minutnik",
"resume-timer": "Wznów minutnik",
"stop-timer": "Zatrzymaj minutnik"
},
"edit-timeline-event": "Edytuj zdarzenie osi czasu", "edit-timeline-event": "Edytuj zdarzenie osi czasu",
"timeline": "Oś czasu", "timeline": "Oś czasu",
"timeline-is-empty": "Nie ma jeszcze nic na osi czasu. Spróbuj przygotować ten przepis!", "timeline-is-empty": "Nie ma jeszcze nic na osi czasu. Spróbuj przygotować ten przepis!",
"timeline-no-events-found-try-adjusting-filters": "No events found. Try adjusting your search filters.", "timeline-no-events-found-try-adjusting-filters": "Nie znaleziono zdarzeń. Spróbuj dostosować filtr wyszukiwania.",
"group-global-timeline": "{groupName} Globalna Oś czasu", "group-global-timeline": "{groupName} Globalna Oś czasu",
"open-timeline": "Otwórz Oś czasu", "open-timeline": "Otwórz Oś czasu",
"made-this": "Ugotowałem to", "made-this": "Ugotowałem to",
@ -597,15 +594,15 @@
"looking-for-migrations": "Szukasz migracji?", "looking-for-migrations": "Szukasz migracji?",
"import-with-url": "Importuj z URL", "import-with-url": "Importuj z URL",
"create-recipe": "Utwórz Przepis", "create-recipe": "Utwórz Przepis",
"create-recipe-description": "Create a new recipe from scratch.", "create-recipe-description": "Utwórz nowy przepis od zera.",
"create-recipes": "Create Recipes", "create-recipes": "Utwórz przepisy",
"import-with-zip": "Importuj z pliku .zip", "import-with-zip": "Importuj z pliku .zip",
"create-recipe-from-an-image": "Create Recipe from an Image", "create-recipe-from-an-image": "Utwórz przepis z obrazu",
"create-recipe-from-an-image-description": "Create a recipe by uploading an image of it. Mealie will attempt to extract the text from the image using AI and create a recipe from it.", "create-recipe-from-an-image-description": "Utwórz przepis poprzez przesłanie obrazka. Mealie spróbuje wyodrębnić tekst z obrazu za pomocą AI i utworzyć z niego przepis.",
"crop-and-rotate-the-image": "Crop and rotate the image so that only the text is visible, and it's in the correct orientation.", "crop-and-rotate-the-image": "Przytnij i obróć obraz, tak aby był w odpowiedniej orientacji i był widoczny tylko tekst.",
"create-from-image": "Create from Image", "create-from-image": "Utwórz z obrazu",
"should-translate-description": "Translate the recipe into my language", "should-translate-description": "Przetłumacz przepis na mój język",
"please-wait-image-procesing": "Please wait, the image is processing. This may take some time.", "please-wait-image-procesing": "Proszę czekać, obraz jest przetwarzany. To może chwilę potrwać.",
"bulk-url-import": "Import Zbiorczy z URL", "bulk-url-import": "Import Zbiorczy z URL",
"debug-scraper": "Debuguj Scraper", "debug-scraper": "Debuguj Scraper",
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Utwórz przepis, podając nazwę. Wszystkie przepisy muszą mieć unikalne nazwy.", "create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Utwórz przepis, podając nazwę. Wszystkie przepisy muszą mieć unikalne nazwy.",
@ -614,16 +611,16 @@
"scrape-recipe-description": "Wczytaj przepis przez URL. Podaj adres URL witryny z przepisem, który chcesz wczytać, a Mealie spróbuje wyodrębnić przepis z tej strony i dodać go do kolekcji.", "scrape-recipe-description": "Wczytaj przepis przez URL. Podaj adres URL witryny z przepisem, który chcesz wczytać, a Mealie spróbuje wyodrębnić przepis z tej strony i dodać go do kolekcji.",
"scrape-recipe-have-a-lot-of-recipes": "Masz mnóstwo przepisów, które chcesz zescrapować naraz?", "scrape-recipe-have-a-lot-of-recipes": "Masz mnóstwo przepisów, które chcesz zescrapować naraz?",
"scrape-recipe-suggest-bulk-importer": "Wypróbuj importer zbiorczy", "scrape-recipe-suggest-bulk-importer": "Wypróbuj importer zbiorczy",
"scrape-recipe-have-raw-html-or-json-data": "Have raw HTML or JSON data?", "scrape-recipe-have-raw-html-or-json-data": "Masz dane HTML bądź JSON?",
"scrape-recipe-you-can-import-from-raw-data-directly": "You can import from raw data directly", "scrape-recipe-you-can-import-from-raw-data-directly": "Możesz zaimportować bezpośrednio z surowych danych",
"import-original-keywords-as-tags": "Importuj oryginalne słowa kluczowe jako tagi", "import-original-keywords-as-tags": "Importuj oryginalne słowa kluczowe jako tagi",
"stay-in-edit-mode": "Pozostań w trybie edycji", "stay-in-edit-mode": "Pozostań w trybie edycji",
"import-from-zip": "Importuj z pliku Zip", "import-from-zip": "Importuj z pliku Zip",
"import-from-zip-description": "Importuj pojedynczy przepis, który został wyeksportowany z innej instancji Mealie.", "import-from-zip-description": "Importuj pojedynczy przepis, który został wyeksportowany z innej instancji Mealie.",
"import-from-html-or-json": "Import from HTML or JSON", "import-from-html-or-json": "Importuj z HTML lub JSON",
"import-from-html-or-json-description": "Import a single recipe from raw HTML or JSON. This is useful if you have a recipe from a site that Mealie can't scrape normally, or from some other external source.", "import-from-html-or-json-description": "Importuj pojedynczy przepis z surowego HTML lub JSON. Jest to przydatne, jeśli masz przepis z miejsca, którego Mealie nie może scrape'ować normalnie lub z innego źródła zewnętrznego.",
"json-import-format-description-colon": "To import via JSON, it must be in valid format:", "json-import-format-description-colon": "Aby zaimportować przez JSON, musi być w prawidłowym formacie:",
"json-editor": "JSON Editor", "json-editor": "Edytor JSON",
"zip-files-must-have-been-exported-from-mealie": "Pliki .zip muszą zostać wyeksportowane z Mealie", "zip-files-must-have-been-exported-from-mealie": "Pliki .zip muszą zostać wyeksportowane z Mealie",
"create-a-recipe-by-uploading-a-scan": "Utwórz przepis przesyłając skan.", "create-a-recipe-by-uploading-a-scan": "Utwórz przepis przesyłając skan.",
"upload-a-png-image-from-a-recipe-book": "Prześlij obrazek png z książki przepisów", "upload-a-png-image-from-a-recipe-book": "Prześlij obrazek png z książki przepisów",
@ -636,33 +633,53 @@
"report-deletion-failed": "Nie udało się usunąć raportu", "report-deletion-failed": "Nie udało się usunąć raportu",
"recipe-debugger": "Debugger przepisów", "recipe-debugger": "Debugger przepisów",
"recipe-debugger-description": "Skopiuj link do przepisu, który chcesz debugować i wklej go tutaj. Strona zostanie obskrobana przez skrobarkę przepisów i jej wynik zostanie wyświetlony. Jeśli nic nie zostało zwrócone, strona, którą próbujesz obskrobać, nie jest wspierana przez Mealie i jej bibliotekę skrobania.", "recipe-debugger-description": "Skopiuj link do przepisu, który chcesz debugować i wklej go tutaj. Strona zostanie obskrobana przez skrobarkę przepisów i jej wynik zostanie wyświetlony. Jeśli nic nie zostało zwrócone, strona, którą próbujesz obskrobać, nie jest wspierana przez Mealie i jej bibliotekę skrobania.",
"use-openai": "Use OpenAI", "use-openai": "Użyj OpenAI",
"recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.", "recipe-debugger-use-openai-description": "Użyj OpenAI, aby dynamicznie analizować przepisy zamiast polegać na bibliotece scraperów. Podczas tworzenia przepisu za pomocą adresu URL jest to wykonywane automatycznie, jeśli scraperowi nie uda się przetworzyć przepisu, ale możesz przetestować go ręcznie tutaj.",
"debug": "Debuguj", "debug": "Debuguj",
"tree-view": "Widok drzewa", "tree-view": "Widok drzewa",
"recipe-servings": "Recipe Servings",
"recipe-yield": "Wydajność przepisu", "recipe-yield": "Wydajność przepisu",
"recipe-yield-text": "Recipe Yield Text",
"unit": "Jednostka", "unit": "Jednostka",
"upload-image": "Prześlij obraz", "upload-image": "Prześlij obraz",
"screen-awake": "Pozostaw ekran włączony", "screen-awake": "Pozostaw ekran włączony",
"remove-image": "Usuń obraz", "remove-image": "Usuń obraz",
"nextStep": "Następny krok", "nextStep": "Następny krok",
"recipe-actions": "Recipe Actions", "recipe-actions": "Akcje przepisów",
"parser": { "parser": {
"experimental-alert-text": "Mealie uses natural language processing to parse and create units and food items for your recipe ingredients. This feature is experimental and may not always work as expected. If you prefer not to use the parsed results, you can select 'Cancel' and your changes will not be saved.", "experimental-alert-text": "Mączka używa naturalnego przetwarzania języka, aby analizować i tworzyć jednostki oraz artykuły żywnościowe dla twoich składników. Ta funkcja jest eksperymentalna i nie zawsze działa zgodnie z oczekiwaniami. Jeśli wolisz nie używać zanalizowanych wyników, możesz wybrać 'Anuluj', a zmiany nie zostaną zapisane.",
"ingredient-parser": "Ingredient Parser", "ingredient-parser": "Parser składników",
"explanation": "To use the ingredient parser, click the 'Parse All' button to start the process. Once the processed ingredients are available, you can review the items and verify that they were parsed correctly. The model's confidence score is displayed on the right of the item title. This score is an average of all the individual scores and may not always be completely accurate.", "explanation": "Aby użyć analizatora składników, kliknij przycisk \"Przeanalizuj wszystko\", aby rozpocząć proces. Gdy przetworzone składniki będą dostępne, możesz przejrzeć elementy i sprawdzić, czy zostały one poprawnie przetworzone. Wskaźnik zaufania modelu jest wyświetlany po prawej stronie tytułu elementu. Ten wynik jest średnią wszystkich wyników i nie zawsze będzie dokładny.",
"alerts-explainer": "Alerts will be displayed if a matching foods or unit is found but does not exists in the database.", "alerts-explainer": "Powiadomienia będą wyświetlane, jeśli zostanie znaleziona pasująca żywność lub jednostka, ale nie istnieje w bazie danych.",
"select-parser": "Select Parser", "select-parser": "Wybierz parser",
"natural-language-processor": "Natural Language Processor", "natural-language-processor": "Procesor języka naturalnego",
"brute-parser": "Brute Parser", "brute-parser": "Parser brutalny",
"openai-parser": "OpenAI Parser", "openai-parser": "Parser OpenAI",
"parse-all": "Parse All", "parse-all": "Przeanalizuj wszystko",
"no-unit": "No unit", "no-unit": "Brak jednostki",
"missing-unit": "Create missing unit: {unit}", "missing-unit": "Utwórz brakującą jednostkę: {unit}",
"missing-food": "Create missing food: {food}", "missing-food": "Utwórz brakującą potrawę: {food}",
"no-food": "No Food" "no-food": "Brak potrawy"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Zresetuj liczbę porcji",
"not-linked-ingredients": "Dodatkowe składniki"
},
"recipe-finder": {
"recipe-finder": "Wyszukiwarka przepisów",
"recipe-finder-description": "Wyszukuj przepisy na podstawie składników, które masz pod ręką. Możesz również filtrować według dostępnych narzędzi oraz ustawić maksymalną liczbę brakujących składników lub przyborów kuchennych.",
"selected-ingredients": "Wybrany składnik",
"no-ingredients-selected": "Nie wybrano żadnych składników",
"missing": "Missing",
"no-recipes-found": "Nie znaleziono przepisów",
"no-recipes-found-description": "Spróbuj dodać więcej składników do wyszukiwania lub dostosować filtry",
"include-ingredients-on-hand": "Uwzględnij składniki dostępne pod ręką",
"include-tools-on-hand": "Uwzględnij przybory kuchenne dostępne pod ręką",
"max-missing-ingredients": "Maks. ilość brakujących składników",
"max-missing-tools": "Maks. ilość brakujących przyborów kuchennych",
"selected-tools": "Wybrane przybory kuchenne",
"other-filters": "Inne filtry",
"ready-to-make": "Ready to Make",
"almost-ready-to-make": "Almost Ready to Make"
}, },
"search": { "search": {
"advanced-search": "Wyszukiwanie zaawansowane", "advanced-search": "Wyszukiwanie zaawansowane",
@ -673,7 +690,7 @@
"or": "Lub", "or": "Lub",
"has-any": "Ma dowolny", "has-any": "Ma dowolny",
"has-all": "Ma wszystkie", "has-all": "Ma wszystkie",
"clear-selection": "Clear Selection", "clear-selection": "Wyczyść zaznaczenie",
"results": "Wyniki", "results": "Wyniki",
"search": "Szukaj", "search": "Szukaj",
"search-mealie": "Przeszukaj Mealie (naciśnij /)", "search-mealie": "Przeszukaj Mealie (naciśnij /)",
@ -692,7 +709,7 @@
"backup-created-at-response-export_path": "Kopia zapasowa została utworzona w {path}", "backup-created-at-response-export_path": "Kopia zapasowa została utworzona w {path}",
"backup-deleted": "Kopia zapasowa została usunięta", "backup-deleted": "Kopia zapasowa została usunięta",
"restore-success": "Przywracanie zakończone sukcesem", "restore-success": "Przywracanie zakończone sukcesem",
"restore-fail": "Restore failed. Check your server logs for more details", "restore-fail": "Przywracanie nieudane. Sprawdź logi serwera, aby uzyskać więcej informacji",
"backup-tag": "Etykieta kopii zapasowej", "backup-tag": "Etykieta kopii zapasowej",
"create-heading": "Utwórz kopię zapasową", "create-heading": "Utwórz kopię zapasową",
"delete-backup": "Usuń kopię zapasową", "delete-backup": "Usuń kopię zapasową",
@ -827,12 +844,12 @@
"ldap-ready-success-text": "Wszystkie wymagane zmienne LDAP są ustawione.", "ldap-ready-success-text": "Wszystkie wymagane zmienne LDAP są ustawione.",
"build": "Build", "build": "Build",
"recipe-scraper-version": "Wersja Scrapera Przepisów", "recipe-scraper-version": "Wersja Scrapera Przepisów",
"oidc-ready": "OIDC Ready", "oidc-ready": "OIDC gotowe",
"oidc-ready-error-text": "Not all OIDC Values are configured. This can be ignored if you are not using OIDC Authentication.", "oidc-ready-error-text": "Nie wszystkie wartości OIDC są skonfigurowane. Można to zignorować, jeśli nie używasz uwierzytelniania OIDC.",
"oidc-ready-success-text": "Required OIDC variables are all set.", "oidc-ready-success-text": "Wszystkie wymagane zmienne OIDC są ustawione.",
"openai-ready": "OpenAI Ready", "openai-ready": "OpenAI gotowy",
"openai-ready-error-text": "Not all OpenAI Values are configured. This can be ignored if you are not using OpenAI features.", "openai-ready-error-text": "Nie wszystkie wartości OpenAI są skonfigurowane. Można to zignorować, jeśli nie używasz funkcji OpenAI.",
"openai-ready-success-text": "Required OpenAI variables are all set." "openai-ready-success-text": "Wszystkie wymagane zmienne OpenAI są ustawione."
}, },
"shopping-list": { "shopping-list": {
"all-lists": "Wszystkie listy", "all-lists": "Wszystkie listy",
@ -846,7 +863,7 @@
"food": "Jedzenie", "food": "Jedzenie",
"note": "Notatka", "note": "Notatka",
"label": "Etykieta", "label": "Etykieta",
"save-label": "Save Label", "save-label": "Zapisz etykietę",
"linked-item-warning": "Ten przedmiot jest powiązany z jednym lub kilkoma przepisami. Dostosowanie jednostek lub żywności przyniesie niespodziewane wyniki podczas dodawania lub usuwania przepisu z tej listy.", "linked-item-warning": "Ten przedmiot jest powiązany z jednym lub kilkoma przepisami. Dostosowanie jednostek lub żywności przyniesie niespodziewane wyniki podczas dodawania lub usuwania przepisu z tej listy.",
"toggle-food": "Przełącz Żywność", "toggle-food": "Przełącz Żywność",
"manage-labels": "Zarządzaj Etykietami", "manage-labels": "Zarządzaj Etykietami",
@ -862,11 +879,12 @@
"items-checked-count": "Nie zaznaczono żadnych elementów|Jeden zaznaczony element|{count} zaznaczonych elementów", "items-checked-count": "Nie zaznaczono żadnych elementów|Jeden zaznaczony element|{count} zaznaczonych elementów",
"no-label": "Brak Etykiety", "no-label": "Brak Etykiety",
"completed-on": "Ukończono {date}", "completed-on": "Ukończono {date}",
"you-are-offline": "You are offline", "you-are-offline": "Jesteś w trybie offline",
"you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.", "you-are-offline-description": "Nie wszystkie funkcje są dostępne w trybie offline. Nadal możesz dodawać, modyfikować i usuwać elementy, ale nie będziesz w stanie zsynchronizować zmian na serwerze, dopóki nie wrócisz do trybu online.",
"are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?", "are-you-sure-you-want-to-check-all-items": "Czy na pewno chcesz zaznaczyć wszystkie elementy?",
"are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?", "are-you-sure-you-want-to-uncheck-all-items": "Czy na pewno chcesz odznaczyć wszystkie elementy?",
"are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?" "are-you-sure-you-want-to-delete-checked-items": "Czy jesteś pewien, że chcesz usunąć wszystkie zaznaczone elementy?",
"no-shopping-lists-found": "Nie znaleziono list zakupów"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Wszystkie", "all-recipes": "Wszystkie",
@ -914,13 +932,13 @@
"tag": "Tag" "tag": "Tag"
}, },
"tool": { "tool": {
"tools": "Narzędzia", "tools": "Przybory kuchenne",
"on-hand": "Na stanie", "on-hand": "Na stanie",
"create-a-tool": "Utwórz narzędzie", "create-a-tool": "Utwórz narzędzie",
"tool-name": "Nazwa narzędzia", "tool-name": "Nazwa przyboru kuchennego",
"create-new-tool": "Utwórz nowe narzędzie", "create-new-tool": "Utwórz nowe narzędzie",
"on-hand-checkbox-label": "Pokaż jako Posiadane (Zaznaczono)", "on-hand-checkbox-label": "Pokaż jako Posiadane (Zaznaczono)",
"required-tools": "Wymagane Narzędzia", "required-tools": "Wymagane Przybory kuchenne",
"tool": "Narzędzie" "tool": "Narzędzie"
}, },
"user": { "user": {
@ -946,11 +964,11 @@
"link-id": "ID linku", "link-id": "ID linku",
"link-name": "Nazwa linku", "link-name": "Nazwa linku",
"login": "Logowanie", "login": "Logowanie",
"login-oidc": "Login with", "login-oidc": "Zaloguj się przy użyciu",
"or": "or", "or": "lub",
"logout": "Wyloguj się", "logout": "Wyloguj się",
"manage-users": "Zarządzaj użytkownikami", "manage-users": "Zarządzaj użytkownikami",
"manage-users-description": "Create and manage users.", "manage-users-description": "Twórz użytkowników i zarządzaj nimi.",
"new-password": "Nowe Hasło", "new-password": "Nowe Hasło",
"new-user": "Nowy użytkownik", "new-user": "Nowy użytkownik",
"password-has-been-reset-to-the-default-password": "Hasło zostało przywrócone do domyślnej wartości", "password-has-been-reset-to-the-default-password": "Hasło zostało przywrócone do domyślnej wartości",
@ -1010,9 +1028,9 @@
"authentication-method-hint": "Określa jak użytkownik będzie uwierzytelniać się z Mealie. Jeśli nie jesteś pewien, wybierz 'Mealie", "authentication-method-hint": "Określa jak użytkownik będzie uwierzytelniać się z Mealie. Jeśli nie jesteś pewien, wybierz 'Mealie",
"permissions": "Uprawnienia", "permissions": "Uprawnienia",
"administrator": "Administrator", "administrator": "Administrator",
"user-can-invite-other-to-group": "User can invite others to group", "user-can-invite-other-to-group": "Użytkownik może zaprosić innych do grupy",
"user-can-manage-group": "Użytkownik może zarządzać grupą", "user-can-manage-group": "Użytkownik może zarządzać grupą",
"user-can-manage-household": "User can manage household", "user-can-manage-household": "Użytkownik może zarządzać gospodarstwem domowego",
"user-can-organize-group-data": "Użytkownik może organizować dane grupy", "user-can-organize-group-data": "Użytkownik może organizować dane grupy",
"enable-advanced-features": "Włącz zaawansowane funkcje", "enable-advanced-features": "Włącz zaawansowane funkcje",
"it-looks-like-this-is-your-first-time-logging-in": "Wygląda na to, że to jest twoje pierwsze logowanie.", "it-looks-like-this-is-your-first-time-logging-in": "Wygląda na to, że to jest twoje pierwsze logowanie.",
@ -1043,8 +1061,8 @@
"food-data": "Dane Żywności", "food-data": "Dane Żywności",
"example-food-singular": "np. Cebula", "example-food-singular": "np. Cebula",
"example-food-plural": "np. Cebule", "example-food-plural": "np. Cebule",
"label-overwrite-warning": "This will assign the chosen label to all selected foods and potentially overwrite your existing labels.", "label-overwrite-warning": "Spowoduje to przypisanie wybranej etykiety do wszystkich wybranych artykułów i może nadpisać istniejące etykiety.",
"on-hand-checkbox-label": "Setting this flag will make this food unchecked by default when adding a recipe to a shopping list." "on-hand-checkbox-label": "Ustawienie tej flagi spowoduje domyślne odznaczenie tego jedzenia podczas dodawania przepisu do listy zakupów."
}, },
"units": { "units": {
"seed-dialog-text": "Wypełnij bazę zwyczajowymi jednostkami dla wybranego języka.", "seed-dialog-text": "Wypełnij bazę zwyczajowymi jednostkami dla wybranego języka.",
@ -1073,7 +1091,7 @@
"edit-label": "Edytuj Etykietę", "edit-label": "Edytuj Etykietę",
"new-label": "Nowa Etykieta", "new-label": "Nowa Etykieta",
"labels": "Etykiety", "labels": "Etykiety",
"assign-label": "Assign Label" "assign-label": "Przypisz etykietę"
}, },
"recipes": { "recipes": {
"purge-exports": "Wyczyść Eksport", "purge-exports": "Wyczyść Eksport",
@ -1098,9 +1116,9 @@
}, },
"recipe-actions": { "recipe-actions": {
"recipe-actions-data": "Recipe Actions Data", "recipe-actions-data": "Recipe Actions Data",
"new-recipe-action": "New Recipe Action", "new-recipe-action": "",
"edit-recipe-action": "Edit Recipe Action", "edit-recipe-action": "Edit Recipe Action",
"action-type": "Action Type" "action-type": "Typ akcji"
}, },
"create-alias": "Utwórz alias", "create-alias": "Utwórz alias",
"manage-aliases": "Zarządzaj aliasami", "manage-aliases": "Zarządzaj aliasami",
@ -1125,7 +1143,7 @@
"tools": { "tools": {
"new-tool": "Nowe Narzędzie", "new-tool": "Nowe Narzędzie",
"edit-tool": "Edytuj Narzędzie", "edit-tool": "Edytuj Narzędzie",
"tool-data": "Dane narzędzia" "tool-data": "Dane przyborów kuchennych"
} }
}, },
"user-registration": { "user-registration": {
@ -1259,56 +1277,57 @@
"no-logs-found": "Nie znaleziono logów", "no-logs-found": "Nie znaleziono logów",
"tasks": "Zadania", "tasks": "Zadania",
"setup": { "setup": {
"first-time-setup": "First Time Setup", "first-time-setup": "Pierwsza konfiguracja",
"welcome-to-mealie-get-started": "Welcome to Mealie! Let's get started", "welcome-to-mealie-get-started": "Witaj w Mealie! Zaczynamy",
"already-set-up-bring-to-homepage": "I'm already set up, just bring me to the homepage", "already-set-up-bring-to-homepage": "Już mam skonfigurowane, po prostu przenieś mnie na stronę główną",
"common-settings-for-new-sites": "Here are some common settings for new sites", "common-settings-for-new-sites": "Oto kilka typowych ustawień dla nowych witryn",
"setup-complete": "Setup Complete!", "setup-complete": "Konfiguracja zakończona!",
"here-are-a-few-things-to-help-you-get-started": "Here are a few things to help you get started with Mealie", "here-are-a-few-things-to-help-you-get-started": "Oto kilka rzeczy, które pomogą Ci zacząć z Mealie",
"restore-from-v1-backup": "Have a backup from a previous instance of Mealie v1? You can restore it here.", "restore-from-v1-backup": "Masz kopię zapasową z poprzedniej instancji Mealie v1? Możesz ją tutaj przywrócić.",
"manage-profile-or-get-invite-link": "Manage your own profile, or grab an invite link to share with others." "manage-profile-or-get-invite-link": "Zarządzaj własnym profilem lub pobierz link z zaproszeniem, aby udostępnić go innym."
}, },
"debug-openai-services": "Debug OpenAI Services", "debug-openai-services": "Debugowanie usług OpenAI",
"debug-openai-services-description": "Use this page to debug OpenAI services. You can test your OpenAI connection and see the results here. If you have image services enabled, you can also provide an image.", "debug-openai-services-description": "....",
"run-test": "Run Test", "run-test": "Uruchom test",
"test-results": "Test Results", "test-results": "Wyniki testu",
"group-delete-note": "Groups with users or households cannot be deleted", "group-delete-note": "Nie można usunąć grup z użytkownikami lub gospodarstwami domowymi",
"household-delete-note": "Households with users cannot be deleted" "household-delete-note": "Gospodarstwa domowe z użytkownikami nie mogą być usunięte"
}, },
"profile": { "profile": {
"welcome-user": "👋 Welcome, {0}!", "welcome-user": "👋 Witaj, {0}!",
"description": "Zarządzaj swoim profilem, przepisami i ustawieniami grupy.", "description": "Zarządzaj swoim profilem, przepisami i ustawieniami grupy.",
"invite-link": "Link do zaproszenia",
"get-invite-link": "Uzyskaj link z zaproszeniem", "get-invite-link": "Uzyskaj link z zaproszeniem",
"get-public-link": "Uzyskaj link publiczny", "get-public-link": "Uzyskaj link publiczny",
"account-summary": "Podsumowanie konta", "account-summary": "Podsumowanie konta",
"account-summary-description": "Here's a summary of your group's information.", "account-summary-description": "Oto podsumowanie Twoich informacji.",
"group-statistics": "Statystyki Grupy", "group-statistics": "Statystyki Grupy",
"group-statistics-description": "Twoje statystyki grupy dostarczają informacji o tym, jak używasz Mealie.", "group-statistics-description": "Twoje statystyki grupy dostarczają informacji o tym, jak używasz Mealie.",
"household-statistics": "Household Statistics", "household-statistics": "Statystyki gospodarstw domowych",
"household-statistics-description": "Your Household Statistics provide some insight how you're using Mealie.", "household-statistics-description": "Twoje statystyki gospodarstw domowych dostarczają informacji o tym, jak używasz Mealie.",
"storage-capacity": "Pojemność Magazynowa", "storage-capacity": "Pojemność Magazynowa",
"storage-capacity-description": "Twoja pojemność magazynowa jest wyliczeniem zdjęć i zasobów, które przesłałeś.", "storage-capacity-description": "Twoja pojemność magazynowa jest wyliczeniem zdjęć i zasobów, które przesłałeś.",
"personal": "Osobiste", "personal": "Osobiste",
"personal-description": "These are settings that are personal to you. Changes here won't affect other users.", "personal-description": "To są ustawienia, które są dla ciebie osobiste. Zmiany tutaj nie wpłyną na innych użytkowników.",
"user-settings": "Ustawienia użytkownika", "user-settings": "Ustawienia użytkownika",
"user-settings-description": "Manage your preferences, change your password, and update your email.", "user-settings-description": "Zarządzaj swoimi preferencjami, zmień hasło i zaktualizuj swój e-mail.",
"api-tokens-description": "Manage your API Tokens for access from external applications.", "api-tokens-description": "Zarządzaj tokenami do API, aby uzyskać dostęp z zewnętrznych aplikacji.",
"group-description": "Te elementy są współdzielone w Twojej grupie. Edycja jednego z nich zmieni je dla całej grupy!", "group-description": "Te elementy są współdzielone w Twojej grupie. Edycja jednego z nich zmieni je dla całej grupy!",
"group-settings": "Ustawienia Grupy", "group-settings": "Ustawienia Grupy",
"group-settings-description": "Manage your common group settings, like privacy settings.", "group-settings-description": "Zarządzaj swoimi wspólnymi ustawieniami grupy, takimi jak ustawienia prywatności.",
"household-description": "These items are shared within your household. Editing one of them will change it for the whole household!", "household-description": "Te elementy są współdzielone w Twojej grupie. Edycja jednego z nich zmieni je dla całej grupy!",
"household-settings": "Household Settings", "household-settings": "Ustawienia gospodarstwa domowego",
"household-settings-description": "Manage your household settings, like mealplan and privacy settings.", "household-settings-description": "Zarządzaj ustawieniami swojego gospodarstwa domowego, takimi jak plan posiłków i ustawienia prywatności.",
"cookbooks-description": "Zarządzaj kolekcją kategorii przepisów i generuj dla nich strony.", "cookbooks-description": "Zarządzaj kolekcją kategorii przepisów i generuj dla nich strony.",
"members": "Członkowie", "members": "Członkowie",
"members-description": "See who's in your household and manage their permissions.", "members-description": "Zobacz, kto jest w twoim gospodarstwie domowym i zarządzaj jego uprawnieniami.",
"webhooks-description": "Skonfiguruj webhooki, które uruchamiają się w dniach, w których planujesz posiłki.", "webhooks-description": "Skonfiguruj webhooki, które uruchamiają się w dniach, w których planujesz posiłki.",
"notifiers": "Powiadomienia", "notifiers": "Powiadomienia",
"notifiers-description": "Skonfiguruj e-mail i powiadomienia, które uruchamiają określone zdarzenia.", "notifiers-description": "Skonfiguruj e-mail i powiadomienia, które uruchamiają określone zdarzenia.",
"manage-data": "Zarządzanie Danymi", "manage-data": "Zarządzanie Danymi",
"manage-data-description": "Manage your Mealie data; Foods, Units, Categories, Tags and more.", "manage-data-description": "Zarządzaj swoimi danymi Mealie; potrawy, jednostki, kategorie, tagi i inne.",
"data-migrations": "Migracje Danych", "data-migrations": "Migracje Danych",
"data-migrations-description": "Migrate your existing data from other applications like Nextcloud Recipes and Chowdown.", "data-migrations-description": "Migruj swoje istniejące dane z innych aplikacji, takich jak Przepisy Nextcloud i Chowdown.",
"email-sent": "E-mail wysłany", "email-sent": "E-mail wysłany",
"error-sending-email": "Błąd podczas wysyłania e-mail", "error-sending-email": "Błąd podczas wysyłania e-mail",
"personal-information": "Informacje osobiste", "personal-information": "Informacje osobiste",
@ -1326,7 +1345,9 @@
}, },
"cookbook": { "cookbook": {
"cookbooks": "Książki kucharskie", "cookbooks": "Książki kucharskie",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Książki kucharskie to inny sposób na organizowanie przepisów, tworząc przekrojowe sekcje przepisów i tagów. Stworzenie książki kuchennej spowoduje dodanie wpisu do paska bocznego, a wszystkie pasujące przepisy z wybranymi tagami i kategoriami będą wyświetlane w książce kucharskiej.",
"hide-cookbooks-from-other-households": "Ukryj książki kucharskie w innych gospodarstwach domowych",
"hide-cookbooks-from-other-households-description": "Gdy ta opcja jest włączona, na pasku bocznym będą wyświetlane książki kucharskie tylko z Twojego gospodarstwa domowego",
"public-cookbook": "Publiczka książka kucharska", "public-cookbook": "Publiczka książka kucharska",
"public-cookbook-description": "Publiczne Książki kucharskie mogą być udostępniane użytkownikom spoza Mealie i będą wyświetlane na stronie Twoich grup.", "public-cookbook-description": "Publiczne Książki kucharskie mogą być udostępniane użytkownikom spoza Mealie i będą wyświetlane na stronie Twoich grup.",
"filter-options": "Filtruj opcje", "filter-options": "Filtruj opcje",
@ -1336,31 +1357,31 @@
"require-all-tools": "Wymagaj wszystkich narzędzi", "require-all-tools": "Wymagaj wszystkich narzędzi",
"cookbook-name": "Nazwa książki kucharskiej", "cookbook-name": "Nazwa książki kucharskiej",
"cookbook-with-name": "Książka kucharska {0}", "cookbook-with-name": "Książka kucharska {0}",
"household-cookbook-name": "{0} Cookbook {1}", "household-cookbook-name": "{0} Książka kucharska {1}",
"create-a-cookbook": "Utwórz nową książkę kucharską", "create-a-cookbook": "Utwórz nową książkę kucharską",
"cookbook": "Książka kucharska" "cookbook": "Książka kucharska"
}, },
"query-filter": { "query-filter": {
"logical-operators": { "logical-operators": {
"and": "AND", "and": "ORAZ",
"or": "OR" "or": "LUB"
}, },
"relational-operators": { "relational-operators": {
"equals": "equals", "equals": "jest równe",
"does-not-equal": "does not equal", "does-not-equal": "nie równa się",
"is-greater-than": "is greater than", "is-greater-than": "jest większe niż",
"is-greater-than-or-equal-to": "is greater than or equal to", "is-greater-than-or-equal-to": "jest większe lub równe",
"is-less-than": "is less than", "is-less-than": "jest mniejsze niż",
"is-less-than-or-equal-to": "is less than or equal to" "is-less-than-or-equal-to": "jest mniejsze lub równe"
}, },
"relational-keywords": { "relational-keywords": {
"is": "is", "is": "jest",
"is-not": "is not", "is-not": "nie jest",
"is-one-of": "is one of", "is-one-of": "jest jednym z",
"is-not-one-of": "is not one of", "is-not-one-of": "nie jest jednym z",
"contains-all-of": "contains all of", "contains-all-of": "zawiera wszystkie z",
"is-like": "is like", "is-like": "jest jak",
"is-not-like": "is not like" "is-not-like": "nie jest jak"
} }
} }
} }

View file

@ -8,7 +8,7 @@
"database-type": "Tipo do Banco de Dados", "database-type": "Tipo do Banco de Dados",
"database-url": "URL do banco de dados", "database-url": "URL do banco de dados",
"default-group": "Grupo Padrão", "default-group": "Grupo Padrão",
"default-household": "Default Household", "default-household": "Casa Padrão",
"demo": "Demonstração", "demo": "Demonstração",
"demo-status": "Status da Demonstração", "demo-status": "Status da Demonstração",
"development": "Desenvolvimento", "development": "Desenvolvimento",
@ -182,7 +182,7 @@
"date": "Data", "date": "Data",
"id": "Id", "id": "Id",
"owner": "Proprietário", "owner": "Proprietário",
"change-owner": "Change Owner", "change-owner": "Alterar Dono",
"date-added": "Data de inclusão", "date-added": "Data de inclusão",
"none": "Nenhum", "none": "Nenhum",
"run": "Executar", "run": "Executar",
@ -214,10 +214,10 @@
"confirm-delete-generic-items": "Tem certeza que quer excluir os itens seguintes?", "confirm-delete-generic-items": "Tem certeza que quer excluir os itens seguintes?",
"organizers": "Organizadores", "organizers": "Organizadores",
"caution": "Cuidado", "caution": "Cuidado",
"show-advanced": "Show Advanced", "show-advanced": "Mostrar Avançado",
"add-field": "Add Field", "add-field": "Adicionar Campo",
"date-created": "Date Created", "date-created": "Data de Criação",
"date-updated": "Date Updated" "date-updated": "Data de Atualização"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Tem certeza que deseja excluir o grupo <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Tem certeza que deseja excluir o grupo <b>{groupName}<b/>?",
@ -244,9 +244,9 @@
"keep-my-recipes-private-description": "Define o seu grupo e todas as receitas padrão como privadas. Você sempre pode mudar isso mais tarde." "keep-my-recipes-private-description": "Define o seu grupo e todas as receitas padrão como privadas. Você sempre pode mudar isso mais tarde."
}, },
"manage-members": "Gerenciar membros", "manage-members": "Gerenciar membros",
"manage-members-description": "Manage the permissions of the members in your household. {manage} allows the user to access the data-management page, and {invite} allows the user to generate invitation links for other users. Group owners cannot change their own permissions.", "manage-members-description": "Gerencie as permissões dos membros da sua casa. {manage} permite ao usuário acessar a página de gerenciamento de dados, e {invite} permite ao usuário gerar links de convites para outros usuários. Os proprietários de grupos não podem mudar suas próprias permissões.",
"manage": "Gerenciar", "manage": "Gerenciar",
"manage-household": "Manage Household", "manage-household": "Gerenciar Casa",
"invite": "Convidar", "invite": "Convidar",
"looking-to-update-your-profile": "Procurando atualizar seu perfil?", "looking-to-update-your-profile": "Procurando atualizar seu perfil?",
"default-recipe-preferences-description": "Estas são as configurações padrão quando uma nova receita é criada no seu grupo. Elas podem ser alteradas para receitas individuais no menu de configurações de receitas.", "default-recipe-preferences-description": "Estas são as configurações padrão quando uma nova receita é criada no seu grupo. Elas podem ser alteradas para receitas individuais no menu de configurações de receitas.",
@ -267,7 +267,7 @@
"disable-users-from-commenting-on-recipes": "Desabilitar usuários de comentar em receitas", "disable-users-from-commenting-on-recipes": "Desabilitar usuários de comentar em receitas",
"disable-users-from-commenting-on-recipes-description": "Oculta a seção de comentários na página de receita e desativa os comentários", "disable-users-from-commenting-on-recipes-description": "Oculta a seção de comentários na página de receita e desativa os comentários",
"disable-organizing-recipe-ingredients-by-units-and-food": "Desativar a organização de ingredientes de receita por unidades e alimentos", "disable-organizing-recipe-ingredients-by-units-and-food": "Desativar a organização de ingredientes de receita por unidades e alimentos",
"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", "disable-organizing-recipe-ingredients-by-units-and-food-description": "Oculta os campos Comida, Unidade e Quantidade de ingredientes e trata os ingredientes como campos de texto simples",
"general-preferences": "Preferências Gerais", "general-preferences": "Preferências Gerais",
"group-recipe-preferences": "Preferências de Grupo de Receitas", "group-recipe-preferences": "Preferências de Grupo de Receitas",
"report": "Denunciar", "report": "Denunciar",
@ -276,11 +276,12 @@
"admin-group-management": "Gerenciamento de Grupos Administrativos", "admin-group-management": "Gerenciamento de Grupos Administrativos",
"admin-group-management-text": "As alterações a este grupo serão refletidas imediatamente.", "admin-group-management-text": "As alterações a este grupo serão refletidas imediatamente.",
"group-id-value": "ID do grupo: {0}", "group-id-value": "ID do grupo: {0}",
"total-households": "Total Households" "total-households": "Total Households",
"you-must-select-a-group-before-selecting-a-household": "You must select a group before selecting a household"
}, },
"household": { "household": {
"household": "Household", "household": "Casa",
"households": "Households", "households": "Casas",
"user-household": "User Household", "user-household": "User Household",
"create-household": "Create Household", "create-household": "Create Household",
"household-name": "Household Name", "household-name": "Household Name",
@ -466,7 +467,7 @@
"calories-suffix": "calorias", "calories-suffix": "calorias",
"carbohydrate-content": "Carboidrato", "carbohydrate-content": "Carboidrato",
"categories": "Categorias", "categories": "Categorias",
"cholesterol-content": "Cholesterol", "cholesterol-content": "Colesterol",
"comment-action": "Comentário", "comment-action": "Comentário",
"comment": "Comentário", "comment": "Comentário",
"comments": "Comentários", "comments": "Comentários",
@ -513,10 +514,11 @@
"recipe-updated": "Receita atualizada", "recipe-updated": "Receita atualizada",
"remove-from-favorites": "Remover dos Favoritos", "remove-from-favorites": "Remover dos Favoritos",
"remove-section": "Remover Seção", "remove-section": "Remover Seção",
"saturated-fat-content": "Saturated fat", "saturated-fat-content": "Gorduras saturadas",
"save-recipe-before-use": "Salve a receita antes de utilizar", "save-recipe-before-use": "Salve a receita antes de utilizar",
"section-title": "Título da Seção", "section-title": "Título da Seção",
"servings": "Porções", "servings": "Porções",
"serves-amount": "Serve {amount}",
"share-recipe-message": "Eu quero compartilhar minha receita de {0} com você.", "share-recipe-message": "Eu quero compartilhar minha receita de {0} com você.",
"show-nutrition-values": "Mostrar informações nutricionais", "show-nutrition-values": "Mostrar informações nutricionais",
"sodium-content": "Sódio", "sodium-content": "Sódio",
@ -526,7 +528,7 @@
"total-time": "Tempo Total", "total-time": "Tempo Total",
"trans-fat-content": "Trans-fat", "trans-fat-content": "Trans-fat",
"unable-to-delete-recipe": "Não foi possível apagar a receita", "unable-to-delete-recipe": "Não foi possível apagar a receita",
"unsaturated-fat-content": "Unsaturated fat", "unsaturated-fat-content": "Gorduras não saturadas",
"no-recipe": "Nenhuma Receita", "no-recipe": "Nenhuma Receita",
"locked-by-owner": "Bloqueado pelo Proprietário", "locked-by-owner": "Bloqueado pelo Proprietário",
"join-the-conversation": "Participe da conversa", "join-the-conversation": "Participe da conversa",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Falha ao adicionar a receita ao plano de refeições", "failed-to-add-recipe-to-mealplan": "Falha ao adicionar a receita ao plano de refeições",
"failed-to-add-to-list": "Falha ao adicionar à lista", "failed-to-add-to-list": "Falha ao adicionar à lista",
"yield": "Rendimento", "yield": "Rendimento",
"yields-amount-with-text": "Yields {amount} {text}",
"yield-text": "Yield Text",
"quantity": "Quantidade", "quantity": "Quantidade",
"choose-unit": "Escolher unidades", "choose-unit": "Escolher unidades",
"press-enter-to-create": "Pressione Enter para criar", "press-enter-to-create": "Pressione Enter para criar",
@ -566,13 +570,6 @@
"increase-scale-label": "Aumentar Escala por 1", "increase-scale-label": "Aumentar Escala por 1",
"locked": "Bloqueado", "locked": "Bloqueado",
"public-link": "Link público", "public-link": "Link público",
"timer": {
"kitchen-timer": "Temporizador da Cozinha",
"start-timer": "Iniciar Temporizador",
"pause-timer": "Pausar Temporizador",
"resume-timer": "Continuar Temporizador",
"stop-timer": "Parar Temporizador"
},
"edit-timeline-event": "Editar Linha do Tempo do Evento", "edit-timeline-event": "Editar Linha do Tempo do Evento",
"timeline": "Linha do Tempo", "timeline": "Linha do Tempo",
"timeline-is-empty": "Nada na linha do tempo ainda. Tente fazer esta receita!", "timeline-is-empty": "Nada na linha do tempo ainda. Tente fazer esta receita!",
@ -603,9 +600,9 @@
"create-recipe-from-an-image": "Create Recipe from an Image", "create-recipe-from-an-image": "Create Recipe from an Image",
"create-recipe-from-an-image-description": "Create a recipe by uploading an image of it. Mealie will attempt to extract the text from the image using AI and create a recipe from it.", "create-recipe-from-an-image-description": "Create a recipe by uploading an image of it. Mealie will attempt to extract the text from the image using AI and create a recipe from it.",
"crop-and-rotate-the-image": "Crop and rotate the image so that only the text is visible, and it's in the correct orientation.", "crop-and-rotate-the-image": "Crop and rotate the image so that only the text is visible, and it's in the correct orientation.",
"create-from-image": "Create from Image", "create-from-image": "Criar a partir da imagem",
"should-translate-description": "Translate the recipe into my language", "should-translate-description": "Traduza a receita para o meu idioma",
"please-wait-image-procesing": "Please wait, the image is processing. This may take some time.", "please-wait-image-procesing": "Por favor aguarde, a imagem está sendo processada. Isto pode levar algum tempo.",
"bulk-url-import": "Importação de URL em massa", "bulk-url-import": "Importação de URL em massa",
"debug-scraper": "Debug Scraper", "debug-scraper": "Debug Scraper",
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Crie uma receita fornecendo o nome. Todas as receitas devem ter nomes exclusivos.", "create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Crie uma receita fornecendo o nome. Todas as receitas devem ter nomes exclusivos.",
@ -614,7 +611,7 @@
"scrape-recipe-description": "Scrape uma receita por url. Forneça o Url para o site que você deseja scrape, e Mealie tentará raspar a receita desse site e adicioná-la à sua coleção.", "scrape-recipe-description": "Scrape uma receita por url. Forneça o Url para o site que você deseja scrape, e Mealie tentará raspar a receita desse site e adicioná-la à sua coleção.",
"scrape-recipe-have-a-lot-of-recipes": "Tem muitas receitas a extrair de uma vez?", "scrape-recipe-have-a-lot-of-recipes": "Tem muitas receitas a extrair de uma vez?",
"scrape-recipe-suggest-bulk-importer": "Tente o importador em massa", "scrape-recipe-suggest-bulk-importer": "Tente o importador em massa",
"scrape-recipe-have-raw-html-or-json-data": "Have raw HTML or JSON data?", "scrape-recipe-have-raw-html-or-json-data": "Tem dados HTML ou JSON brutos?",
"scrape-recipe-you-can-import-from-raw-data-directly": "You can import from raw data directly", "scrape-recipe-you-can-import-from-raw-data-directly": "You can import from raw data directly",
"import-original-keywords-as-tags": "Importar palavras-chave originais como marcadores", "import-original-keywords-as-tags": "Importar palavras-chave originais como marcadores",
"stay-in-edit-mode": "Permanecer no modo de edição", "stay-in-edit-mode": "Permanecer no modo de edição",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Usar OpenAI para analisar os resultados ao invés de depender da biblioteca de extração. Criando uma receita via URL, isso é feito automaticamente se essa biblioteca, mas você pode testar manualmente aqui.", "recipe-debugger-use-openai-description": "Usar OpenAI para analisar os resultados ao invés de depender da biblioteca de extração. Criando uma receita via URL, isso é feito automaticamente se essa biblioteca, mas você pode testar manualmente aqui.",
"debug": "Depurar", "debug": "Depurar",
"tree-view": "Visualização em árvore", "tree-view": "Visualização em árvore",
"recipe-servings": "Recipe Servings",
"recipe-yield": "Rendimento da Receita", "recipe-yield": "Rendimento da Receita",
"recipe-yield-text": "Recipe Yield Text",
"unit": "Unidade", "unit": "Unidade",
"upload-image": "Enviar imagem", "upload-image": "Enviar imagem",
"screen-awake": "Manter a tela ligada", "screen-awake": "Manter a tela ligada",
@ -662,7 +661,25 @@
"missing-food": "Criar comida ausente: {food}", "missing-food": "Criar comida ausente: {food}",
"no-food": "Sem Comida" "no-food": "Sem Comida"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Reset Servings Count",
"not-linked-ingredients": "Ingredientes adicionais"
},
"recipe-finder": {
"recipe-finder": "Localizador de Receitas",
"recipe-finder-description": "Procure por receitas baseadas em ingredientes que você tem na mão. Você também pode filtrar por ferramentas disponíveis e definir um número máximo de ingredientes ou ferramentas que faltam.",
"selected-ingredients": "Ingredientes selecionados",
"no-ingredients-selected": "Nenhum ingrediente selecionado",
"missing": "Ausente",
"no-recipes-found": "Nenhuma receita encontrada",
"no-recipes-found-description": "Try adding more ingredients to your search or adjusting your filters",
"include-ingredients-on-hand": "Include Ingredients On Hand",
"include-tools-on-hand": "Include Tools On Hand",
"max-missing-ingredients": "Max Missing Ingredients",
"max-missing-tools": "Max Missing Tools",
"selected-tools": "Ferramentas Selecionadas",
"other-filters": "Outros Filtros",
"ready-to-make": "Ready to Make",
"almost-ready-to-make": "Almost Ready to Make"
}, },
"search": { "search": {
"advanced-search": "Pesquisa avançada", "advanced-search": "Pesquisa avançada",
@ -673,7 +690,7 @@
"or": "Ou", "or": "Ou",
"has-any": "Tem alguma", "has-any": "Tem alguma",
"has-all": "Tem todos", "has-all": "Tem todos",
"clear-selection": "Clear Selection", "clear-selection": "Limpar Seleção",
"results": "Resultados", "results": "Resultados",
"search": "Pesquisar", "search": "Pesquisar",
"search-mealie": "Pesquisar no Mealie (pressione /)", "search-mealie": "Pesquisar no Mealie (pressione /)",
@ -866,7 +883,8 @@
"you-are-offline-description": "Nem todos os recursos estão disponíveis enquanto desconectado. Você ainda pode adicionar, modificar, e remover itens, mas não poderá sincronizar suas mudanças com o servidor até que esteja conectado novamente.", "you-are-offline-description": "Nem todos os recursos estão disponíveis enquanto desconectado. Você ainda pode adicionar, modificar, e remover itens, mas não poderá sincronizar suas mudanças com o servidor até que esteja conectado novamente.",
"are-you-sure-you-want-to-check-all-items": "Tem certeza que deseja marcar todos os itens?", "are-you-sure-you-want-to-check-all-items": "Tem certeza que deseja marcar todos os itens?",
"are-you-sure-you-want-to-uncheck-all-items": "Tem certeza que deseja desmarcar todos os itens?", "are-you-sure-you-want-to-uncheck-all-items": "Tem certeza que deseja desmarcar todos os itens?",
"are-you-sure-you-want-to-delete-checked-items": "Tem certeza que deseja apagar todos os itens marcados?" "are-you-sure-you-want-to-delete-checked-items": "Tem certeza que deseja apagar todos os itens marcados?",
"no-shopping-lists-found": "Nenhuma lista de compras encontrada"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Todas as Receitas", "all-recipes": "Todas as Receitas",
@ -1268,16 +1286,17 @@
"restore-from-v1-backup": "Tem uma cópia de segurança de uma instância anterior do Mealie v1? Você pode restaurá-la aqui.", "restore-from-v1-backup": "Tem uma cópia de segurança de uma instância anterior do Mealie v1? Você pode restaurá-la aqui.",
"manage-profile-or-get-invite-link": "Gerencie seu próprio perfil, ou pegue um link de convite para compartilhar." "manage-profile-or-get-invite-link": "Gerencie seu próprio perfil, ou pegue um link de convite para compartilhar."
}, },
"debug-openai-services": "Debug OpenAI Services", "debug-openai-services": "Debug de Serviços OpenAI",
"debug-openai-services-description": "Use this page to debug OpenAI services. You can test your OpenAI connection and see the results here. If you have image services enabled, you can also provide an image.", "debug-openai-services-description": "Use esta página para depurar serviços OpenAI. Você pode testar a sua conexão OpenAI e ver os resultados aqui. Se você tiver os serviços de imagem ativados, você também pode fornecer uma imagem.",
"run-test": "Run Test", "run-test": "Executar teste",
"test-results": "Test Results", "test-results": "Resultados do teste",
"group-delete-note": "Groups with users or households cannot be deleted", "group-delete-note": "Groups with users or households cannot be deleted",
"household-delete-note": "Households with users cannot be deleted" "household-delete-note": "Households with users cannot be deleted"
}, },
"profile": { "profile": {
"welcome-user": "👋 Bem-vindo(a), {0}!", "welcome-user": "👋 Bem-vindo(a), {0}!",
"description": "Gerencie seu perfil, receitas e configurações de grupo.", "description": "Gerencie seu perfil, receitas e configurações de grupo.",
"invite-link": "Link de convite",
"get-invite-link": "Obter link de convite", "get-invite-link": "Obter link de convite",
"get-public-link": "Obter link público", "get-public-link": "Obter link público",
"account-summary": "Resumo da conta", "account-summary": "Resumo da conta",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Livros de Receita", "cookbooks": "Livros de Receita",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.",
"hide-cookbooks-from-other-households": "Hide Cookbooks from Other Households",
"hide-cookbooks-from-other-households-description": "When enabled, only cookbooks from your household will appear on the sidebar",
"public-cookbook": "Livro de Receitas público", "public-cookbook": "Livro de Receitas público",
"public-cookbook-description": "Cookbooks públicos podem ser compartilhados com usuários que não sejam não-mealiee serão exibidos na sua página de grupos.", "public-cookbook-description": "Cookbooks públicos podem ser compartilhados com usuários que não sejam não-mealiee serão exibidos na sua página de grupos.",
"filter-options": "Opções de filtro", "filter-options": "Opções de filtro",
@ -1346,21 +1367,21 @@
"or": "OR" "or": "OR"
}, },
"relational-operators": { "relational-operators": {
"equals": "equals", "equals": "igual a",
"does-not-equal": "does not equal", "does-not-equal": "não é igual a",
"is-greater-than": "is greater than", "is-greater-than": "é maior que",
"is-greater-than-or-equal-to": "is greater than or equal to", "is-greater-than-or-equal-to": "é maior ou igual a",
"is-less-than": "is less than", "is-less-than": "é menor que",
"is-less-than-or-equal-to": "is less than or equal to" "is-less-than-or-equal-to": "é menor ou igual a"
}, },
"relational-keywords": { "relational-keywords": {
"is": "is", "is": "é",
"is-not": "is not", "is-not": "não é",
"is-one-of": "is one of", "is-one-of": "é um(a) de",
"is-not-one-of": "is not one of", "is-not-one-of": "não é um de",
"contains-all-of": "contains all of", "contains-all-of": "contém todos de",
"is-like": "is like", "is-like": "é como",
"is-not-like": "is not like" "is-not-like": "não é como"
} }
} }
} }

View file

@ -182,7 +182,7 @@
"date": "Data", "date": "Data",
"id": "Id", "id": "Id",
"owner": "Proprietário", "owner": "Proprietário",
"change-owner": "Change Owner", "change-owner": "Mudar Proprietário",
"date-added": "Adicionado em", "date-added": "Adicionado em",
"none": "Nenhum", "none": "Nenhum",
"run": "Executar", "run": "Executar",
@ -214,10 +214,10 @@
"confirm-delete-generic-items": "Tem a certeza de que deseja eliminar os seguintes itens?", "confirm-delete-generic-items": "Tem a certeza de que deseja eliminar os seguintes itens?",
"organizers": "Organizadores", "organizers": "Organizadores",
"caution": "Cuidado", "caution": "Cuidado",
"show-advanced": "Show Advanced", "show-advanced": "Mostrar Avançadas",
"add-field": "Add Field", "add-field": "Adicionar Campo",
"date-created": "Date Created", "date-created": "Data de Criação",
"date-updated": "Date Updated" "date-updated": "Data de Atualização"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Tem a certeza que quer eliminar <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Tem a certeza que quer eliminar <b>{groupName}<b/>?",
@ -276,29 +276,30 @@
"admin-group-management": "Gestão do Grupo Admin", "admin-group-management": "Gestão do Grupo Admin",
"admin-group-management-text": "As alterações a este grupo serão aplicadas imediatamente.", "admin-group-management-text": "As alterações a este grupo serão aplicadas imediatamente.",
"group-id-value": "ID do Grupo: {0}", "group-id-value": "ID do Grupo: {0}",
"total-households": "Total de Lares" "total-households": "Total de Lares",
"you-must-select-a-group-before-selecting-a-household": "Tens de selecionar um grupo antes de selecionar uma casa"
}, },
"household": { "household": {
"household": "Casa", "household": "Casa",
"households": "Lares", "households": "Lares",
"user-household": "User Household", "user-household": "Casa do Utilizador",
"create-household": "Create Household", "create-household": "Criar Casa",
"household-name": "Household Name", "household-name": "Nome da Casa",
"household-group": "Household Group", "household-group": "Grupo da Casa",
"household-management": "Household Management", "household-management": "Gestão da Casa",
"manage-households": "Manage Households", "manage-households": "Gerir Casas",
"admin-household-management": "Admin Household Management", "admin-household-management": "Admin da Gestão da casa",
"admin-household-management-text": "Changes to this household will be reflected immediately.", "admin-household-management-text": "As alterações a esta casa terão efeitos imediatos.",
"household-id-value": "Household Id: {0}", "household-id-value": "Id da Casa: {0}",
"private-household": "Private Household", "private-household": "Casa Privada",
"private-household-description": "Setting your household to private will disable all public view options. This overrides any individual public view settings", "private-household-description": "Se definir a sua casa como privada, desativará todas as opções de visualização pública. Isto substitui quaisquer definições de visualização pública individuais",
"lock-recipe-edits-from-other-households": "Lock recipe edits from other households", "lock-recipe-edits-from-other-households": "Bloquear as edições de receitas de outros agregados familiares",
"lock-recipe-edits-from-other-households-description": "When enabled only users in your household can edit recipes created by your household", "lock-recipe-edits-from-other-households-description": "Quando ativado, apenas os utilizadores da sua casa podem editar receitas criadas por outros membros da casa",
"household-recipe-preferences": "Household Recipe Preferences", "household-recipe-preferences": "Preferências de receitas da casa",
"default-recipe-preferences-description": "These are the default settings when a new recipe is created in your household. These can be changed for individual recipes in the recipe settings menu.", "default-recipe-preferences-description": "Estas são as definições predefinidas quando é criada uma nova receita na sua casa. Estas podem ser alteradas para receitas individuais no menu de definições de receitas.",
"allow-users-outside-of-your-household-to-see-your-recipes": "Allow users outside of your household to see your recipes", "allow-users-outside-of-your-household-to-see-your-recipes": "Permitir que utilizadores fora da sua casa vejam as suas receitas",
"allow-users-outside-of-your-household-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 household or with a pre-generated private link", "allow-users-outside-of-your-household-to-see-your-recipes-description": "Quando ativado, pode utilizar uma ligação de partilha pública para partilhar receitas específicas sem autorizar o utilizador. Quando desativado, só pode partilhar receitas com utilizadores que estejam na sua casa ou com um link privado pré-gerado",
"household-preferences": "Household Preferences" "household-preferences": "Preferências da Casa"
}, },
"meal-plan": { "meal-plan": {
"create-a-new-meal-plan": "Criar novo Plano de Refeições", "create-a-new-meal-plan": "Criar novo Plano de Refeições",
@ -320,10 +321,10 @@
"mealplan-settings": "Definições do Plano de Refeições", "mealplan-settings": "Definições do Plano de Refeições",
"mealplan-update-failed": "Erro ao atualizar o Plano de Refeições", "mealplan-update-failed": "Erro ao atualizar o Plano de Refeições",
"mealplan-updated": "Plano de Refeições atualizado", "mealplan-updated": "Plano de Refeições atualizado",
"mealplan-households-description": "If no household is selected, recipes can be added from any household", "mealplan-households-description": "Se não for selecionada nenhuma casa, podem ser adicionadas receitas de qualquer casa",
"any-category": "Any Category", "any-category": "Qualquer Categoria",
"any-tag": "Any Tag", "any-tag": "Qualquer Etiqueta",
"any-household": "Any Household", "any-household": "Qualquer Casa",
"no-meal-plan-defined-yet": "Nenhum plano de refeições definido", "no-meal-plan-defined-yet": "Nenhum plano de refeições definido",
"no-meal-planned-for-today": "Nenhum plano de refeições definido para hoje", "no-meal-planned-for-today": "Nenhum plano de refeições definido para hoje",
"numberOfDays-hint": "Número de dias no carregamento da página", "numberOfDays-hint": "Número de dias no carregamento da página",
@ -356,7 +357,7 @@
"for-type-meal-types": "para {0} tipos de refeições", "for-type-meal-types": "para {0} tipos de refeições",
"meal-plan-rules": "Regras do Plano de Refeições", "meal-plan-rules": "Regras do Plano de Refeições",
"new-rule": "Nova regra", "new-rule": "Nova regra",
"meal-plan-rules-description": "You can create rules for auto selecting recipes for your meal plans. These rules are used by the server to determine the random pool of recipes to select from when creating meal plans. Note that if rules have the same day/type constraints then the rule filters will be merged. In practice, it's unnecessary to create duplicate rules, but it's possible to do so.", "meal-plan-rules-description": "Pode criar regras para a seleção automática de receitas para os seus planos de refeições. Estas regras são utilizadas pelo servidor para determinar o conjunto aleatório de receitas a selecionar aquando da criação de planos de refeições. Tenha em atenção que, se as regras tiverem as mesmas restrições de dia/tipo, os filtros de regras serão fundidos. Na prática, não é necessário criar regras duplicadas, mas é possível fazê-lo.",
"new-rule-description": "Ao criar uma regra para um plano de refeições, pode restringir a regra para ser aplicada a um dia da semana específico e/ou a um tipo de refeição específico. Para aplicar a regra a todos os dias oua todos os tipos de refeição, pode definir a regra para \"Qualquer um\" o que a aplicará a todos os valores possíveis para o dia e/ou tipo de refeição.", "new-rule-description": "Ao criar uma regra para um plano de refeições, pode restringir a regra para ser aplicada a um dia da semana específico e/ou a um tipo de refeição específico. Para aplicar a regra a todos os dias oua todos os tipos de refeição, pode definir a regra para \"Qualquer um\" o que a aplicará a todos os valores possíveis para o dia e/ou tipo de refeição.",
"recipe-rules": "Regras das receitas", "recipe-rules": "Regras das receitas",
"applies-to-all-days": "Aplica-se a todos os dias", "applies-to-all-days": "Aplica-se a todos os dias",
@ -431,7 +432,7 @@
"paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Cole os dados da sua receita. Cada linha será tratada como um item numa lista", "paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Cole os dados da sua receita. Cada linha será tratada como um item numa lista",
"recipe-markup-specification": "Especificação Markup da Receita", "recipe-markup-specification": "Especificação Markup da Receita",
"recipe-url": "URL da Receita", "recipe-url": "URL da Receita",
"recipe-html-or-json": "Recipe HTML or JSON", "recipe-html-or-json": "Receita em HTML ou JSON",
"upload-a-recipe": "Enviar uma Receita", "upload-a-recipe": "Enviar uma Receita",
"upload-individual-zip-file": "Carregar um ficheiro .zip individual, exportado de outra instância do Mealie.", "upload-individual-zip-file": "Carregar um ficheiro .zip individual, exportado de outra instância do Mealie.",
"url-form-hint": "Copie e cole um link do seu site de receitas favorito", "url-form-hint": "Copie e cole um link do seu site de receitas favorito",
@ -466,7 +467,7 @@
"calories-suffix": "calorias", "calories-suffix": "calorias",
"carbohydrate-content": "Hidratos de carbono", "carbohydrate-content": "Hidratos de carbono",
"categories": "Categorias", "categories": "Categorias",
"cholesterol-content": "Cholesterol", "cholesterol-content": "Colesterol",
"comment-action": "Comentário", "comment-action": "Comentário",
"comment": "Comentário", "comment": "Comentário",
"comments": "Comentários", "comments": "Comentários",
@ -513,10 +514,11 @@
"recipe-updated": "Receita atualizada", "recipe-updated": "Receita atualizada",
"remove-from-favorites": "Remover dos Favoritos", "remove-from-favorites": "Remover dos Favoritos",
"remove-section": "Remover secção", "remove-section": "Remover secção",
"saturated-fat-content": "Saturated fat", "saturated-fat-content": "Gordura saturada",
"save-recipe-before-use": "Guardar receita antes de usar", "save-recipe-before-use": "Guardar receita antes de usar",
"section-title": "Título da secção", "section-title": "Título da secção",
"servings": "Porções", "servings": "Porções",
"serves-amount": "Serve {amount}",
"share-recipe-message": "Eu queria partilhar a minha {0} receita consigo.", "share-recipe-message": "Eu queria partilhar a minha {0} receita consigo.",
"show-nutrition-values": "Mostrar valores nutricionais", "show-nutrition-values": "Mostrar valores nutricionais",
"sodium-content": "Sódio", "sodium-content": "Sódio",
@ -524,9 +526,9 @@
"sugar-content": "Açúcar", "sugar-content": "Açúcar",
"title": "Título", "title": "Título",
"total-time": "Tempo Total", "total-time": "Tempo Total",
"trans-fat-content": "Trans-fat", "trans-fat-content": "Gordura-trans",
"unable-to-delete-recipe": "Não foi possível eliminar a receita", "unable-to-delete-recipe": "Não foi possível eliminar a receita",
"unsaturated-fat-content": "Unsaturated fat", "unsaturated-fat-content": "Gordura insaturada",
"no-recipe": "Nenhuma receita", "no-recipe": "Nenhuma receita",
"locked-by-owner": "Bloqueado pelo proprietário", "locked-by-owner": "Bloqueado pelo proprietário",
"join-the-conversation": "Junte-se à conversa", "join-the-conversation": "Junte-se à conversa",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Erro ao adicionar receita ao plano de refeições", "failed-to-add-recipe-to-mealplan": "Erro ao adicionar receita ao plano de refeições",
"failed-to-add-to-list": "Erro ao adicionar à lista", "failed-to-add-to-list": "Erro ao adicionar à lista",
"yield": "Rendimento", "yield": "Rendimento",
"yields-amount-with-text": "Rendimentos {amount} {text}",
"yield-text": "Rendimento Texto",
"quantity": "Quantidade", "quantity": "Quantidade",
"choose-unit": "Escolha uma unidade", "choose-unit": "Escolha uma unidade",
"press-enter-to-create": "Prima 'Enter' para criar", "press-enter-to-create": "Prima 'Enter' para criar",
@ -566,13 +570,6 @@
"increase-scale-label": "Aumentar Escala em 1", "increase-scale-label": "Aumentar Escala em 1",
"locked": "Bloqueado", "locked": "Bloqueado",
"public-link": "Link público", "public-link": "Link público",
"timer": {
"kitchen-timer": "Temporizador de cozinha",
"start-timer": "Iniciar Temporizador",
"pause-timer": "Pausar Temporizador",
"resume-timer": "Retomar Temporizador",
"stop-timer": "Parar Temporizador"
},
"edit-timeline-event": "Editar evento da Cronologia", "edit-timeline-event": "Editar evento da Cronologia",
"timeline": "Cronologia", "timeline": "Cronologia",
"timeline-is-empty": "Nada na Cronologia, ainda. Tente fazer esta receita!", "timeline-is-empty": "Nada na Cronologia, ainda. Tente fazer esta receita!",
@ -600,12 +597,12 @@
"create-recipe-description": "Criar uma receita em branco.", "create-recipe-description": "Criar uma receita em branco.",
"create-recipes": "Criar Receitas", "create-recipes": "Criar Receitas",
"import-with-zip": "Importar com .zip", "import-with-zip": "Importar com .zip",
"create-recipe-from-an-image": "Create Recipe from an Image", "create-recipe-from-an-image": "Criar receita a partir de uma imagem",
"create-recipe-from-an-image-description": "Create a recipe by uploading an image of it. Mealie will attempt to extract the text from the image using AI and create a recipe from it.", "create-recipe-from-an-image-description": "Crie uma receita carregando uma imagem da mesma. O Mealie tentará extrair o texto da imagem utilizando IA e criará uma receita a partir da mesma.",
"crop-and-rotate-the-image": "Crop and rotate the image so that only the text is visible, and it's in the correct orientation.", "crop-and-rotate-the-image": "Recorte e rode a imagem de modo a que apenas o texto seja visível e esteja na orientação correta.",
"create-from-image": "Create from Image", "create-from-image": "Criar a partir de imagem",
"should-translate-description": "Translate the recipe into my language", "should-translate-description": "Traduzir a receita para a minha língua",
"please-wait-image-procesing": "Please wait, the image is processing. This may take some time.", "please-wait-image-procesing": "Aguarde, a imagem está a ser processada. Isto pode demorar algum tempo.",
"bulk-url-import": "Importação de URL em bloco", "bulk-url-import": "Importação de URL em bloco",
"debug-scraper": "Depurar Scraper", "debug-scraper": "Depurar Scraper",
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Crie uma receita fornecendo o nome. Todas as receitas devem ter nomes únicos.", "create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Crie uma receita fornecendo o nome. Todas as receitas devem ter nomes únicos.",
@ -614,16 +611,16 @@
"scrape-recipe-description": "Extrair a receita por URL. Indique o URL da página da qual quer extrair e o Mealie tentará obter a receita dessa página e adicioná-la à sua coleção.", "scrape-recipe-description": "Extrair a receita por URL. Indique o URL da página da qual quer extrair e o Mealie tentará obter a receita dessa página e adicioná-la à sua coleção.",
"scrape-recipe-have-a-lot-of-recipes": "Tem muitas receitas para processar em simultâneo?", "scrape-recipe-have-a-lot-of-recipes": "Tem muitas receitas para processar em simultâneo?",
"scrape-recipe-suggest-bulk-importer": "Experimente o importador em massa", "scrape-recipe-suggest-bulk-importer": "Experimente o importador em massa",
"scrape-recipe-have-raw-html-or-json-data": "Have raw HTML or JSON data?", "scrape-recipe-have-raw-html-or-json-data": "Tem dados HTML ou JSON em bruto?",
"scrape-recipe-you-can-import-from-raw-data-directly": "You can import from raw data directly", "scrape-recipe-you-can-import-from-raw-data-directly": "É possível importar diretamente a partir de dados em bruto",
"import-original-keywords-as-tags": "Importar palavras-chave originais como etiquetas", "import-original-keywords-as-tags": "Importar palavras-chave originais como etiquetas",
"stay-in-edit-mode": "Permanecer no modo de edição", "stay-in-edit-mode": "Permanecer no modo de edição",
"import-from-zip": "Importar de Zip", "import-from-zip": "Importar de Zip",
"import-from-zip-description": "Importar uma única receita que foi exportada de outra instância Mealie.", "import-from-zip-description": "Importar uma única receita que foi exportada de outra instância Mealie.",
"import-from-html-or-json": "Import from HTML or JSON", "import-from-html-or-json": "Importar a partir de HTML ou JSON",
"import-from-html-or-json-description": "Import a single recipe from raw HTML or JSON. This is useful if you have a recipe from a site that Mealie can't scrape normally, or from some other external source.", "import-from-html-or-json-description": "Importe uma única receita a partir de HTML ou JSON em bruto. Isto é útil se tiver uma receita de uma página da qual o Mealie não consegue extrair normalmente, ou de outra fonte externa.",
"json-import-format-description-colon": "To import via JSON, it must be in valid format:", "json-import-format-description-colon": "Para importar via JSON, este deve estar num formato válido:",
"json-editor": "JSON Editor", "json-editor": "Editor de JSON",
"zip-files-must-have-been-exported-from-mealie": "Os ficheiros .zip devem ter sido exportados do Mealie", "zip-files-must-have-been-exported-from-mealie": "Os ficheiros .zip devem ter sido exportados do Mealie",
"create-a-recipe-by-uploading-a-scan": "Crie uma receita carregando uma digitalização.", "create-a-recipe-by-uploading-a-scan": "Crie uma receita carregando uma digitalização.",
"upload-a-png-image-from-a-recipe-book": "Carregar uma imagem png de um livro de receitas", "upload-a-png-image-from-a-recipe-book": "Carregar uma imagem png de um livro de receitas",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Utilize o OpenAI para analisar os resultados em vez de depender da biblioteca de scrapers. Ao criar uma receita através de um URL, isto é feito automaticamente se a biblioteca de scrapers falhar, mas pode testá-la manualmente aqui.", "recipe-debugger-use-openai-description": "Utilize o OpenAI para analisar os resultados em vez de depender da biblioteca de scrapers. Ao criar uma receita através de um URL, isto é feito automaticamente se a biblioteca de scrapers falhar, mas pode testá-la manualmente aqui.",
"debug": "Depurar", "debug": "Depurar",
"tree-view": "Vista em árvore", "tree-view": "Vista em árvore",
"recipe-servings": "Porções por receita",
"recipe-yield": "Rendimento da receita", "recipe-yield": "Rendimento da receita",
"recipe-yield-text": "Rendimento da Receita Texto",
"unit": "Unidade", "unit": "Unidade",
"upload-image": "Carregar imagem", "upload-image": "Carregar imagem",
"screen-awake": "Manter ecrã ligado", "screen-awake": "Manter ecrã ligado",
@ -662,7 +661,25 @@
"missing-food": "Criar ingrediente em falta: {food}", "missing-food": "Criar ingrediente em falta: {food}",
"no-food": "Nenhum Ingrediente" "no-food": "Nenhum Ingrediente"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Reiniciar Contador de Doses",
"not-linked-ingredients": "Ingredientes Adicionais"
},
"recipe-finder": {
"recipe-finder": "Localizador de Receitas",
"recipe-finder-description": "Procure receitas com base nos ingredientes que tem em mãos. Pode também filtrar pelas ferramentas disponíveis e definir um número máximo de ingredientes ou ferramentas ausentes.",
"selected-ingredients": "Ingredientes Selecionados",
"no-ingredients-selected": "Nenhum ingrediente selecionado",
"missing": "Em falta",
"no-recipes-found": "Nenhuma receita encontrada",
"no-recipes-found-description": "Experimente adicionar mais ingredientes à sua pesquisa ou ajustar os seus filtros",
"include-ingredients-on-hand": "Incluir ingredientes disponíveis",
"include-tools-on-hand": "Incluir ferramentas disponíveis",
"max-missing-ingredients": "Máximo de ingredientes em falta",
"max-missing-tools": "Máximo de ferramentas em falta",
"selected-tools": "Ferramentas selecionadas",
"other-filters": "Outros filtros",
"ready-to-make": "Pronto para fazer",
"almost-ready-to-make": "Quase Pronto para fazer"
}, },
"search": { "search": {
"advanced-search": "Pesquisa Avançada", "advanced-search": "Pesquisa Avançada",
@ -673,7 +690,7 @@
"or": "Ou", "or": "Ou",
"has-any": "Tem algum", "has-any": "Tem algum",
"has-all": "Tem todos", "has-all": "Tem todos",
"clear-selection": "Clear Selection", "clear-selection": "Limpar Seleção",
"results": "Resultados", "results": "Resultados",
"search": "Pesquisar", "search": "Pesquisar",
"search-mealie": "Procurar no Mealie (prima /)", "search-mealie": "Procurar no Mealie (prima /)",
@ -866,7 +883,8 @@
"you-are-offline-description": "Nem todas as funcionalidades estão disponíveis enquanto estiver offline. Continua a poder adicionar, modificar e remover itens, mas não poderá sincronizar as suas alterações com o servidor até estar novamente online.", "you-are-offline-description": "Nem todas as funcionalidades estão disponíveis enquanto estiver offline. Continua a poder adicionar, modificar e remover itens, mas não poderá sincronizar as suas alterações com o servidor até estar novamente online.",
"are-you-sure-you-want-to-check-all-items": "Tem a certeza de que pretende selecionar todos os itens?", "are-you-sure-you-want-to-check-all-items": "Tem a certeza de que pretende selecionar todos os itens?",
"are-you-sure-you-want-to-uncheck-all-items": "Tem a certeza de que pretende desmarcar todos os itens?", "are-you-sure-you-want-to-uncheck-all-items": "Tem a certeza de que pretende desmarcar todos os itens?",
"are-you-sure-you-want-to-delete-checked-items": "Tem a certeza de que pretende eliminar todos os itens selecionados?" "are-you-sure-you-want-to-delete-checked-items": "Tem a certeza de que pretende eliminar todos os itens selecionados?",
"no-shopping-lists-found": "Nenhuma lista de compras encontrada"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Todas as Receitas", "all-recipes": "Todas as Receitas",
@ -1012,7 +1030,7 @@
"administrator": "Administrador", "administrator": "Administrador",
"user-can-invite-other-to-group": "O utilizador pode convidar outros para o grupo", "user-can-invite-other-to-group": "O utilizador pode convidar outros para o grupo",
"user-can-manage-group": "O utilizador pode gerir o grupo", "user-can-manage-group": "O utilizador pode gerir o grupo",
"user-can-manage-household": "User can manage household", "user-can-manage-household": "O utilizador pode gerir a casa",
"user-can-organize-group-data": "O utilizador pode organizar dados do grupo", "user-can-organize-group-data": "O utilizador pode organizar dados do grupo",
"enable-advanced-features": "Habilitar recursos avançados", "enable-advanced-features": "Habilitar recursos avançados",
"it-looks-like-this-is-your-first-time-logging-in": "Parece que este é o seu primeiro login.", "it-looks-like-this-is-your-first-time-logging-in": "Parece que este é o seu primeiro login.",
@ -1268,24 +1286,25 @@
"restore-from-v1-backup": "Tem uma cópia de segurança de uma instância do Mealie v1? Pode restaurá-la aqui.", "restore-from-v1-backup": "Tem uma cópia de segurança de uma instância do Mealie v1? Pode restaurá-la aqui.",
"manage-profile-or-get-invite-link": "Gira o seu próprio perfil ou pegue num convite para partilhar com outros." "manage-profile-or-get-invite-link": "Gira o seu próprio perfil ou pegue num convite para partilhar com outros."
}, },
"debug-openai-services": "Debug OpenAI Services", "debug-openai-services": "Depurar Serviços de OpenAI",
"debug-openai-services-description": "Use this page to debug OpenAI services. You can test your OpenAI connection and see the results here. If you have image services enabled, you can also provide an image.", "debug-openai-services-description": "Utilize esta página para depurar os serviços OpenAI. Pode testar a sua ligação OpenAI e ver os resultados aqui. Se tiver os serviços de imagem ativados, também pode fornecer uma imagem.",
"run-test": "Run Test", "run-test": "Executar Teste",
"test-results": "Test Results", "test-results": "Resultados do Teste",
"group-delete-note": "Groups with users or households cannot be deleted", "group-delete-note": "Os grupos com utilizadores ou casas não podem ser eliminados",
"household-delete-note": "Households with users cannot be deleted" "household-delete-note": "Casas com utilizadores não podem ser eliminadas"
}, },
"profile": { "profile": {
"welcome-user": "👋 Bem-vindo, {0}!", "welcome-user": "👋 Bem-vindo, {0}!",
"description": "Gira o seu perfil, receitas e definições de grupo.", "description": "Gira o seu perfil, receitas e definições de grupo.",
"invite-link": "Link de convite",
"get-invite-link": "Obter ligação de convite", "get-invite-link": "Obter ligação de convite",
"get-public-link": "Obter ligação pública", "get-public-link": "Obter ligação pública",
"account-summary": "Resumo da conta", "account-summary": "Resumo da conta",
"account-summary-description": "Aqui está um resumo das informações do seu grupo.", "account-summary-description": "Aqui está um resumo das informações do seu grupo.",
"group-statistics": "Estatísticas do Grupo", "group-statistics": "Estatísticas do Grupo",
"group-statistics-description": "A suas Estatísticas de Grupo fornecem algumas informações sobre como usa o Mealie.", "group-statistics-description": "A suas Estatísticas de Grupo fornecem algumas informações sobre como usa o Mealie.",
"household-statistics": "Household Statistics", "household-statistics": "Estatísticas da Casa",
"household-statistics-description": "Your Household Statistics provide some insight how you're using Mealie.", "household-statistics-description": "As Estatísticas da Casa fornecem algumas informações sobre como utiliza o Mealie.",
"storage-capacity": "Capacidade de armazenamento", "storage-capacity": "Capacidade de armazenamento",
"storage-capacity-description": "A sua capacidade de armazenamento é um cálculo das imagens e itens que carregou.", "storage-capacity-description": "A sua capacidade de armazenamento é um cálculo das imagens e itens que carregou.",
"personal": "Pessoal", "personal": "Pessoal",
@ -1295,13 +1314,13 @@
"api-tokens-description": "Gira os seus Tokens da API para acesso a partir de aplicações externas.", "api-tokens-description": "Gira os seus Tokens da API para acesso a partir de aplicações externas.",
"group-description": "Estes itens são partilhados no seu grupo. As alterações aqui afetam todos os elementos do grupo!", "group-description": "Estes itens são partilhados no seu grupo. As alterações aqui afetam todos os elementos do grupo!",
"group-settings": "Definições do grupo", "group-settings": "Definições do grupo",
"group-settings-description": "Manage your common group settings, like privacy settings.", "group-settings-description": "Gerir as definições comuns do grupo, tais como as definições de privacidade.",
"household-description": "These items are shared within your household. Editing one of them will change it for the whole household!", "household-description": "Estes itens são partilhados na sua casa. Editar um deles mudará a situação de toda a casa!",
"household-settings": "Household Settings", "household-settings": "Definições da Casa",
"household-settings-description": "Manage your household settings, like mealplan and privacy settings.", "household-settings-description": "Gerir as definições da sua casa, tais como o plano de refeições e a privacidade.",
"cookbooks-description": "Gira a coleção de categorias de receitas e cria páginas para elas.", "cookbooks-description": "Gira a coleção de categorias de receitas e cria páginas para elas.",
"members": "Membros", "members": "Membros",
"members-description": "See who's in your household and manage their permissions.", "members-description": "Ver quem está na sua casa e gerir as suas permissões.",
"webhooks-description": "Setup webhooks that trigger on days that you have have mealplan scheduled.", "webhooks-description": "Setup webhooks that trigger on days that you have have mealplan scheduled.",
"notifiers": "Notificadores", "notifiers": "Notificadores",
"notifiers-description": "Setup email and push notifications that trigger on specific events.", "notifiers-description": "Setup email and push notifications that trigger on specific events.",
@ -1326,7 +1345,9 @@
}, },
"cookbook": { "cookbook": {
"cookbooks": "Livros de Receitas", "cookbooks": "Livros de Receitas",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Os livros de receitas são outra forma de organizar as receitas, criando secções cruzadas de receitas, organizadores e outros filtros. A criação de um livro de receitas adicionará uma entrada à barra lateral e todas as receitas com os filtros selecionados serão apresentadas no livro de receitas.",
"hide-cookbooks-from-other-households": "Ocultar livros de receitas de outras famílias",
"hide-cookbooks-from-other-households-description": "Quando ativado, apenas os livros de receitas da sua família aparecerão na barra lateral",
"public-cookbook": "Livro de Receitas público", "public-cookbook": "Livro de Receitas público",
"public-cookbook-description": "Os Livros de Receitas públicos podem ser partilhados com utilizadores não registados e serão exibidos na sua página de grupos.", "public-cookbook-description": "Os Livros de Receitas públicos podem ser partilhados com utilizadores não registados e serão exibidos na sua página de grupos.",
"filter-options": "Opções de Filtro", "filter-options": "Opções de Filtro",
@ -1336,31 +1357,31 @@
"require-all-tools": "Requer todas os utensílios", "require-all-tools": "Requer todas os utensílios",
"cookbook-name": "Nome do Livro de Receitas", "cookbook-name": "Nome do Livro de Receitas",
"cookbook-with-name": "Livro de Receitas {0}", "cookbook-with-name": "Livro de Receitas {0}",
"household-cookbook-name": "{0} Cookbook {1}", "household-cookbook-name": "{0} Livro de Receitas {1}",
"create-a-cookbook": "Criar um Livro de Receitas", "create-a-cookbook": "Criar um Livro de Receitas",
"cookbook": "Livro de Receitas" "cookbook": "Livro de Receitas"
}, },
"query-filter": { "query-filter": {
"logical-operators": { "logical-operators": {
"and": "AND", "and": "E",
"or": "OR" "or": "OU"
}, },
"relational-operators": { "relational-operators": {
"equals": "equals", "equals": "igua",
"does-not-equal": "does not equal", "does-not-equal": "diferente",
"is-greater-than": "is greater than", "is-greater-than": "é maior que",
"is-greater-than-or-equal-to": "is greater than or equal to", "is-greater-than-or-equal-to": "é maior ou igual a",
"is-less-than": "is less than", "is-less-than": "é menor que",
"is-less-than-or-equal-to": "is less than or equal to" "is-less-than-or-equal-to": "é menor ou igual a"
}, },
"relational-keywords": { "relational-keywords": {
"is": "is", "is": "é",
"is-not": "is not", "is-not": "não é",
"is-one-of": "is one of", "is-one-of": "é um de",
"is-not-one-of": "is not one of", "is-not-one-of": "não é um de",
"contains-all-of": "contains all of", "contains-all-of": "contém todos os",
"is-like": "is like", "is-like": "é como",
"is-not-like": "is not like" "is-not-like": "não é como"
} }
} }
} }

File diff suppressed because it is too large Load diff

View file

@ -182,7 +182,7 @@
"date": "Дата", "date": "Дата",
"id": "Id", "id": "Id",
"owner": "Владелец", "owner": "Владелец",
"change-owner": "Change Owner", "change-owner": "Сменить владельца",
"date-added": "Дата добавления", "date-added": "Дата добавления",
"none": "Ничего", "none": "Ничего",
"run": "Запустить", "run": "Запустить",
@ -213,11 +213,11 @@
"clipboard-copy-failure": "Не удалось скопировать текст.", "clipboard-copy-failure": "Не удалось скопировать текст.",
"confirm-delete-generic-items": "Вы уверены, что хотите удалить следующие элементы?", "confirm-delete-generic-items": "Вы уверены, что хотите удалить следующие элементы?",
"organizers": "Организаторы", "organizers": "Организаторы",
"caution": "Caution", "caution": "Внимание",
"show-advanced": "Show Advanced", "show-advanced": "Показать расширенные",
"add-field": "Add Field", "add-field": "Добавить поле",
"date-created": "Date Created", "date-created": "Дата создания",
"date-updated": "Date Updated" "date-updated": "Дата обновления"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Вы действительно хотите удалить <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Вы действительно хотите удалить <b>{groupName}<b/>?",
@ -244,7 +244,7 @@
"keep-my-recipes-private-description": "Устанавливает группу и все рецепты по умолчанию приватными. Вы всегда можете изменить это позже." "keep-my-recipes-private-description": "Устанавливает группу и все рецепты по умолчанию приватными. Вы всегда можете изменить это позже."
}, },
"manage-members": "Настройки участников", "manage-members": "Настройки участников",
"manage-members-description": "Manage the permissions of the members in your household. {manage} allows the user to access the data-management page, and {invite} allows the user to generate invitation links for other users. Group owners cannot change their own permissions.", "manage-members-description": "Пользователь",
"manage": "Редактировать", "manage": "Редактировать",
"manage-household": "Manage Household", "manage-household": "Manage Household",
"invite": "Пригласить", "invite": "Пригласить",
@ -276,7 +276,8 @@
"admin-group-management": "Управление группой администраторов", "admin-group-management": "Управление группой администраторов",
"admin-group-management-text": "Изменения в этой группе будут отражены немедленно.", "admin-group-management-text": "Изменения в этой группе будут отражены немедленно.",
"group-id-value": "Id группы: {0}", "group-id-value": "Id группы: {0}",
"total-households": "Total Households" "total-households": "Total Households",
"you-must-select-a-group-before-selecting-a-household": "You must select a group before selecting a household"
}, },
"household": { "household": {
"household": "Household", "household": "Household",
@ -321,13 +322,13 @@
"mealplan-update-failed": "Не удалось обновить план питания", "mealplan-update-failed": "Не удалось обновить план питания",
"mealplan-updated": "План питания обновлен", "mealplan-updated": "План питания обновлен",
"mealplan-households-description": "If no household is selected, recipes can be added from any household", "mealplan-households-description": "If no household is selected, recipes can be added from any household",
"any-category": "Any Category", "any-category": "Любая категория",
"any-tag": "Any Tag", "any-tag": "Любая метка",
"any-household": "Any Household", "any-household": "Any Household",
"no-meal-plan-defined-yet": "План питания еще не определен", "no-meal-plan-defined-yet": "План питания еще не определен",
"no-meal-planned-for-today": "На сегодня нет запланированных блюд", "no-meal-planned-for-today": "На сегодня нет запланированных блюд",
"numberOfDays-hint": "Количество дней при загрузке страницы", "numberOfDays-hint": "Количество дней при загрузке страницы",
"numberOfDays-label": "Default Days", "numberOfDays-label": "Дни по умолчанию",
"only-recipes-with-these-categories-will-be-used-in-meal-plans": "Только рецепты с этими категориями будут использоваться в планах питания", "only-recipes-with-these-categories-will-be-used-in-meal-plans": "Только рецепты с этими категориями будут использоваться в планах питания",
"planner": "Планировщик", "planner": "Планировщик",
"quick-week": "Быстрый план", "quick-week": "Быстрый план",
@ -466,7 +467,7 @@
"calories-suffix": "ккал", "calories-suffix": "ккал",
"carbohydrate-content": "Углеводы", "carbohydrate-content": "Углеводы",
"categories": "Категории", "categories": "Категории",
"cholesterol-content": "Cholesterol", "cholesterol-content": "Холестерин",
"comment-action": "Оставить комментарий", "comment-action": "Оставить комментарий",
"comment": "Комментарий", "comment": "Комментарий",
"comments": "Комментарии", "comments": "Комментарии",
@ -513,10 +514,11 @@
"recipe-updated": "Рецепт обновлен", "recipe-updated": "Рецепт обновлен",
"remove-from-favorites": "Убрать из избранного", "remove-from-favorites": "Убрать из избранного",
"remove-section": "Удалить раздел", "remove-section": "Удалить раздел",
"saturated-fat-content": "Saturated fat", "saturated-fat-content": "Насыщенные жиры",
"save-recipe-before-use": "Сохранить рецепт перед использованием", "save-recipe-before-use": "Сохранить рецепт перед использованием",
"section-title": "Название раздела", "section-title": "Название раздела",
"servings": "Порций", "servings": "Порций",
"serves-amount": "Serves {amount}",
"share-recipe-message": "Я хотел(а) поделиться с тобой моим рецептом {0}.", "share-recipe-message": "Я хотел(а) поделиться с тобой моим рецептом {0}.",
"show-nutrition-values": "Показать пищевую ценность", "show-nutrition-values": "Показать пищевую ценность",
"sodium-content": "Соль", "sodium-content": "Соль",
@ -524,7 +526,7 @@
"sugar-content": "Сахар", "sugar-content": "Сахар",
"title": "Заголовок", "title": "Заголовок",
"total-time": "Общее время", "total-time": "Общее время",
"trans-fat-content": "Trans-fat", "trans-fat-content": "Трансжиры",
"unable-to-delete-recipe": "Не получилось удалить рецепт", "unable-to-delete-recipe": "Не получилось удалить рецепт",
"unsaturated-fat-content": "Unsaturated fat", "unsaturated-fat-content": "Unsaturated fat",
"no-recipe": "Нет рецепта", "no-recipe": "Нет рецепта",
@ -545,6 +547,8 @@
"failed-to-add-recipe-to-mealplan": "Не удалось добавить рецепт в план питания", "failed-to-add-recipe-to-mealplan": "Не удалось добавить рецепт в план питания",
"failed-to-add-to-list": "Не удалось добавить в список", "failed-to-add-to-list": "Не удалось добавить в список",
"yield": "Выход", "yield": "Выход",
"yields-amount-with-text": "Yields {amount} {text}",
"yield-text": "Yield Text",
"quantity": "Количество", "quantity": "Количество",
"choose-unit": "Выберите единицу измерения", "choose-unit": "Выберите единицу измерения",
"press-enter-to-create": "Нажмите Enter для создания", "press-enter-to-create": "Нажмите Enter для создания",
@ -566,13 +570,6 @@
"increase-scale-label": "Добавить порцию", "increase-scale-label": "Добавить порцию",
"locked": "Заблокировано", "locked": "Заблокировано",
"public-link": "Публичная ссылка", "public-link": "Публичная ссылка",
"timer": {
"kitchen-timer": "Кухонный таймер",
"start-timer": "Запустить таймер",
"pause-timer": "Приостановить таймер",
"resume-timer": "Возобновить таймер",
"stop-timer": "Остановить таймер"
},
"edit-timeline-event": "Редактировать событие в истории", "edit-timeline-event": "Редактировать событие в истории",
"timeline": "История", "timeline": "История",
"timeline-is-empty": "В истории пока ничего нет. Попробуйте сделать этот рецепт!", "timeline-is-empty": "В истории пока ничего нет. Попробуйте сделать этот рецепт!",
@ -604,7 +601,7 @@
"create-recipe-from-an-image-description": "Create a recipe by uploading an image of it. Mealie will attempt to extract the text from the image using AI and create a recipe from it.", "create-recipe-from-an-image-description": "Create a recipe by uploading an image of it. Mealie will attempt to extract the text from the image using AI and create a recipe from it.",
"crop-and-rotate-the-image": "Crop and rotate the image so that only the text is visible, and it's in the correct orientation.", "crop-and-rotate-the-image": "Crop and rotate the image so that only the text is visible, and it's in the correct orientation.",
"create-from-image": "Create from Image", "create-from-image": "Create from Image",
"should-translate-description": "Translate the recipe into my language", "should-translate-description": "Перевести рецепт на мой язык",
"please-wait-image-procesing": "Подождите, идет обработка изображения.", "please-wait-image-procesing": "Подождите, идет обработка изображения.",
"bulk-url-import": "Массовый импорт по URL", "bulk-url-import": "Массовый импорт по URL",
"debug-scraper": "Отладка сканирования", "debug-scraper": "Отладка сканирования",
@ -614,16 +611,16 @@
"scrape-recipe-description": "Отсканировать рецепт по ссылке. Предоставьте ссылку на страницу, которую вы хотите отсканировать, и Mealie попытается вырезать рецепт с этого сайта и добавить его в свою коллекцию.", "scrape-recipe-description": "Отсканировать рецепт по ссылке. Предоставьте ссылку на страницу, которую вы хотите отсканировать, и Mealie попытается вырезать рецепт с этого сайта и добавить его в свою коллекцию.",
"scrape-recipe-have-a-lot-of-recipes": "Хотите отсканировать несколько рецептов за раз?", "scrape-recipe-have-a-lot-of-recipes": "Хотите отсканировать несколько рецептов за раз?",
"scrape-recipe-suggest-bulk-importer": "Воспользуйтесь массовым импортом", "scrape-recipe-suggest-bulk-importer": "Воспользуйтесь массовым импортом",
"scrape-recipe-have-raw-html-or-json-data": "Have raw HTML or JSON data?", "scrape-recipe-have-raw-html-or-json-data": "У Вас есть данные HTML или JSON?",
"scrape-recipe-you-can-import-from-raw-data-directly": "You can import from raw data directly", "scrape-recipe-you-can-import-from-raw-data-directly": "You can import from raw data directly",
"import-original-keywords-as-tags": "Импортировать исходные ключевые слова как теги", "import-original-keywords-as-tags": "Импортировать исходные ключевые слова как теги",
"stay-in-edit-mode": "Остаться в режиме редактирования", "stay-in-edit-mode": "Остаться в режиме редактирования",
"import-from-zip": "Импорт из архива", "import-from-zip": "Импорт из архива",
"import-from-zip-description": "Импорт одного рецепта, который был экспортирован из другого экземпляра Mealie.", "import-from-zip-description": "Импорт одного рецепта, который был экспортирован из другого экземпляра Mealie.",
"import-from-html-or-json": "Import from HTML or JSON", "import-from-html-or-json": "Импортировать из HTML или JSON",
"import-from-html-or-json-description": "Import a single recipe from raw HTML or JSON. This is useful if you have a recipe from a site that Mealie can't scrape normally, or from some other external source.", "import-from-html-or-json-description": "Import a single recipe from raw HTML or JSON. This is useful if you have a recipe from a site that Mealie can't scrape normally, or from some other external source.",
"json-import-format-description-colon": "To import via JSON, it must be in valid format:", "json-import-format-description-colon": "To import via JSON, it must be in valid format:",
"json-editor": "JSON Editor", "json-editor": "Редактор JSON",
"zip-files-must-have-been-exported-from-mealie": ".zip файлы должны быть экспортированы из Mealie", "zip-files-must-have-been-exported-from-mealie": ".zip файлы должны быть экспортированы из Mealie",
"create-a-recipe-by-uploading-a-scan": "Создайте рецепт, загрузив скан.", "create-a-recipe-by-uploading-a-scan": "Создайте рецепт, загрузив скан.",
"upload-a-png-image-from-a-recipe-book": "Загрузить png изображение из книги рецептов", "upload-a-png-image-from-a-recipe-book": "Загрузить png изображение из книги рецептов",
@ -640,7 +637,9 @@
"recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.", "recipe-debugger-use-openai-description": "Use OpenAI to parse the results instead of relying on the scraper library. When creating a recipe via URL, this is done automatically if the scraper library fails, but you may test it manually here.",
"debug": "Отладка", "debug": "Отладка",
"tree-view": "В виде дерева", "tree-view": "В виде дерева",
"recipe-servings": "Recipe Servings",
"recipe-yield": "Количество порций", "recipe-yield": "Количество порций",
"recipe-yield-text": "Recipe Yield Text",
"unit": "Единица измерения", "unit": "Единица измерения",
"upload-image": "Загрузить изображение", "upload-image": "Загрузить изображение",
"screen-awake": "Держать экран включенным", "screen-awake": "Держать экран включенным",
@ -662,7 +661,25 @@
"missing-food": "Create missing food: {food}", "missing-food": "Create missing food: {food}",
"no-food": "Нет еды" "no-food": "Нет еды"
}, },
"reset-servings-count": "Reset Servings Count" "reset-servings-count": "Сбросить количество порций",
"not-linked-ingredients": "Дополнительные ингредиенты"
},
"recipe-finder": {
"recipe-finder": "Поиск рецептов",
"recipe-finder-description": "Search for recipes based on ingredients you have on hand. You can also filter by tools you have available, and set a maximum number of missing ingredients or tools.",
"selected-ingredients": "Выбранные ингредиенты",
"no-ingredients-selected": "No ingredients selected",
"missing": "Missing",
"no-recipes-found": "Рецепты не найдены",
"no-recipes-found-description": "Try adding more ingredients to your search or adjusting your filters",
"include-ingredients-on-hand": "Include Ingredients On Hand",
"include-tools-on-hand": "Include Tools On Hand",
"max-missing-ingredients": "Max Missing Ingredients",
"max-missing-tools": "Max Missing Tools",
"selected-tools": "Selected Tools",
"other-filters": "Other Filters",
"ready-to-make": "Ready to Make",
"almost-ready-to-make": "Almost Ready to Make"
}, },
"search": { "search": {
"advanced-search": "Расширенный поиск", "advanced-search": "Расширенный поиск",
@ -864,9 +881,10 @@
"completed-on": "Выполнено в {date}", "completed-on": "Выполнено в {date}",
"you-are-offline": "Вы не в сети", "you-are-offline": "Вы не в сети",
"you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.", "you-are-offline-description": "Not all features are available while offline. You can still add, modify, and remove items, but you will not be able to sync your changes to the server until you are back online.",
"are-you-sure-you-want-to-check-all-items": "Are you sure you want to check all items?", "are-you-sure-you-want-to-check-all-items": "Вы уверены, что хотите выбрать все элементы?",
"are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?", "are-you-sure-you-want-to-uncheck-all-items": "Are you sure you want to uncheck all items?",
"are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?" "are-you-sure-you-want-to-delete-checked-items": "Are you sure you want to delete all checked items?",
"no-shopping-lists-found": "Списки покупок не найдены"
}, },
"sidebar": { "sidebar": {
"all-recipes": "Все рецепты", "all-recipes": "Все рецепты",
@ -1268,16 +1286,17 @@
"restore-from-v1-backup": "Have a backup from a previous instance of Mealie v1? You can restore it here.", "restore-from-v1-backup": "Have a backup from a previous instance of Mealie v1? You can restore it here.",
"manage-profile-or-get-invite-link": "Manage your own profile, or grab an invite link to share with others." "manage-profile-or-get-invite-link": "Manage your own profile, or grab an invite link to share with others."
}, },
"debug-openai-services": "Debug OpenAI Services", "debug-openai-services": "Отладка OpenAI сервисов",
"debug-openai-services-description": "Use this page to debug OpenAI services. You can test your OpenAI connection and see the results here. If you have image services enabled, you can also provide an image.", "debug-openai-services-description": "Use this page to debug OpenAI services. You can test your OpenAI connection and see the results here. If you have image services enabled, you can also provide an image.",
"run-test": "Run Test", "run-test": "Запустить тест",
"test-results": "Test Results", "test-results": "Результаты тестов",
"group-delete-note": "Groups with users or households cannot be deleted", "group-delete-note": "Groups with users or households cannot be deleted",
"household-delete-note": "Households with users cannot be deleted" "household-delete-note": "Households with users cannot be deleted"
}, },
"profile": { "profile": {
"welcome-user": "👋 Добро пожаловать, {0}!", "welcome-user": "👋 Добро пожаловать, {0}!",
"description": "Управление настройками профиля, рецептов и группы.", "description": "Управление настройками профиля, рецептов и группы.",
"invite-link": "Ссылка-приглашение",
"get-invite-link": "Получить ссылку для приглашения", "get-invite-link": "Получить ссылку для приглашения",
"get-public-link": "Получить публичную ссылку", "get-public-link": "Получить публичную ссылку",
"account-summary": "Cведения об учетной записи", "account-summary": "Cведения об учетной записи",
@ -1327,6 +1346,8 @@
"cookbook": { "cookbook": {
"cookbooks": "Книги рецептов", "cookbooks": "Книги рецептов",
"description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.", "description": "Cookbooks are another way to organize recipes by creating cross sections of recipes, organizers, and other filters. Creating a cookbook will add an entry to the side-bar and all the recipes with the filters chosen will be displayed in the cookbook.",
"hide-cookbooks-from-other-households": "Hide Cookbooks from Other Households",
"hide-cookbooks-from-other-households-description": "When enabled, only cookbooks from your household will appear on the sidebar",
"public-cookbook": "Публичные книги рецептов", "public-cookbook": "Публичные книги рецептов",
"public-cookbook-description": "Публичными книгами рецептов можно делиться с людьми без аккаунта в Mealie, и они будут отображаться на странице вашей группы.", "public-cookbook-description": "Публичными книгами рецептов можно делиться с людьми без аккаунта в Mealie, и они будут отображаться на странице вашей группы.",
"filter-options": "Параметры фильтрации", "filter-options": "Параметры фильтрации",

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