Compare commits

...

90 Commits

Author SHA1 Message Date
boc-the-git
42a33cd993 fix: Give update-image-tags job write permissions to the repo, for auto doco updater (#3138) 2024-02-10 03:49:26 +00:00
boc-the-git
d73817adad Merge pull request #3137 from mealie-recipes/renovate/python-multipart-0.x
Update dependency python-multipart to ^0.0.8
2024-02-10 14:20:06 +11:00
renovate[bot]
ce58da8e18 Update dependency python-multipart to ^0.0.8 2024-02-10 01:08:10 +00:00
boc-the-git
fe89981e78 Merge pull request #3135 from Kuchenpirat/feat-add-docker-to-dev-container
dev: add docker-in-docker to dev container
2024-02-10 07:18:21 +11:00
Kuchenpirat
520bc7154a Remove old comments 2024-02-09 21:12:06 +01:00
Kuchenpirat
a38dfc094e update to use newer version of the feature 2024-02-09 17:52:41 +00:00
Kuchenpirat
0a81579da1 Merge branch 'mealie-next' into feat-add-docker-to-dev-container 2024-02-09 17:41:14 +01:00
Kuchenpirat
f4e77f6837 add docker in docker 2024-02-09 16:32:18 +00:00
renovate[bot]
1e04e9424f Update dependency python-slugify to v8.0.4 (#3131)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-09 05:54:04 -09:00
boc-the-git
d1bbfece9d Merge pull request #3132 from mealie-recipes/l10n_mealie-next
New Crowdin updates
2024-02-09 20:00:38 +11:00
Hayden
94a85f9977 New translations en-us.json (French, Canada) 2024-02-09 02:54:34 -06:00
Hayden
3d0adda405 New translations en-us.json (English, United Kingdom) 2024-02-09 02:54:33 -06:00
Hayden
47086da6b6 New translations en-us.json (Latvian) 2024-02-09 02:54:32 -06:00
Hayden
9ce71c911f New translations en-us.json (Croatian) 2024-02-09 02:54:31 -06:00
Hayden
2244c3a8b5 New translations en-us.json (Portuguese, Brazilian) 2024-02-09 02:54:30 -06:00
Hayden
f0d0d0d463 New translations en-us.json (Icelandic) 2024-02-09 02:54:29 -06:00
Hayden
dbec3e58f9 New translations en-us.json (Galician) 2024-02-09 02:54:28 -06:00
Hayden
a5e56dc97f New translations en-us.json (Vietnamese) 2024-02-09 02:54:27 -06:00
Hayden
6d64418727 New translations en-us.json (Chinese Traditional) 2024-02-09 02:54:27 -06:00
Hayden
2b71174765 New translations en-us.json (Chinese Simplified) 2024-02-09 02:54:26 -06:00
Hayden
7f6de730a3 New translations en-us.json (Ukrainian) 2024-02-09 02:54:25 -06:00
Hayden
22cc19a085 New translations en-us.json (Turkish) 2024-02-09 02:54:24 -06:00
Hayden
b16fa49f16 New translations en-us.json (Swedish) 2024-02-09 02:54:23 -06:00
Hayden
90e373582b New translations en-us.json (Serbian (Cyrillic)) 2024-02-09 02:54:22 -06:00
Hayden
1b3cbb38ae New translations en-us.json (Slovenian) 2024-02-09 02:54:22 -06:00
Hayden
ac5a63e32d New translations en-us.json (Slovak) 2024-02-09 02:54:21 -06:00
Hayden
d5d86488a0 New translations en-us.json (Russian) 2024-02-09 02:54:20 -06:00
Hayden
3f9c46a763 New translations en-us.json (Portuguese) 2024-02-09 02:54:19 -06:00
Hayden
04176f6927 New translations en-us.json (Polish) 2024-02-09 02:54:18 -06:00
Hayden
2aa8c5810a New translations en-us.json (Norwegian) 2024-02-09 02:54:17 -06:00
Hayden
a071a7d16b New translations en-us.json (Dutch) 2024-02-09 02:54:16 -06:00
Hayden
a14c1b48c6 New translations en-us.json (Lithuanian) 2024-02-09 02:54:15 -06:00
Hayden
43174dcebe New translations en-us.json (Korean) 2024-02-09 02:54:13 -06:00
Hayden
3ee53977ec New translations en-us.json (Japanese) 2024-02-09 02:54:12 -06:00
Hayden
de1486c57f New translations en-us.json (Italian) 2024-02-09 02:54:12 -06:00
Hayden
a12aba6b9d New translations en-us.json (Hungarian) 2024-02-09 02:54:11 -06:00
Hayden
fb70bc76b3 New translations en-us.json (Hebrew) 2024-02-09 02:54:10 -06:00
Hayden
e6351273e2 New translations en-us.json (Finnish) 2024-02-09 02:54:09 -06:00
Hayden
82dcfb5635 New translations en-us.json (Greek) 2024-02-09 02:54:08 -06:00
Hayden
dddeed6359 New translations en-us.json (German) 2024-02-09 02:54:07 -06:00
Hayden
5f4a36bbd8 New translations en-us.json (Danish) 2024-02-09 02:54:06 -06:00
Hayden
f74610a0f7 New translations en-us.json (Czech) 2024-02-09 02:54:05 -06:00
Hayden
166f2486a2 New translations en-us.json (Catalan) 2024-02-09 02:54:04 -06:00
Hayden
88a5209237 New translations en-us.json (Bulgarian) 2024-02-09 02:54:03 -06:00
Hayden
d954869dd7 New translations en-us.json (Bulgarian) 2024-02-09 02:54:02 -06:00
Hayden
9cf181b415 New translations en-us.json (Arabic) 2024-02-09 02:54:01 -06:00
Hayden
5a7dc14a48 New translations en-us.json (Afrikaans) 2024-02-09 02:54:00 -06:00
Hayden
d916c0a472 New translations en-us.json (Spanish) 2024-02-09 02:54:00 -06:00
Hayden
a3693d83a3 New translations en-us.json (French) 2024-02-09 02:53:59 -06:00
Hayden
bb9620b67e New translations en-us.json (Romanian) 2024-02-09 02:53:58 -06:00
boc-the-git
3174216931 Merge pull request #2810 from michael-genson/fix/translation-issues-when-scraping
fix: Translate ISO 8601 Datetime Durations During Scraping/Parsing/Migrating
2024-02-09 06:37:28 +11:00
Michael Genson
94342081f9 I don't know why I changed this 2024-02-08 14:43:13 +00:00
boc-the-git
36088f0db9 Merge branch 'mealie-next' into fix/translation-issues-when-scraping 2024-02-08 20:58:43 +11:00
boc-the-git
4c60febb9c Merge pull request #3130 from mealie-recipes/l10n_mealie-next
New Crowdin updates
2024-02-08 19:58:51 +11:00
Hayden
0283185913 New translations en-us.json (Hebrew) 2024-02-08 02:52:45 -06:00
Michael Genson
f42114e966 feat: Redirect Logged Out Users to Default Group, If It's Public (#2772)
* add default group slug to app info if public

* redirect public user to default group

* added tests

---------

Co-authored-by: Kuchenpirat <24235032+Kuchenpirat@users.noreply.github.com>
2024-02-07 07:53:55 -09:00
Michael Genson
d4de15ba1e Merge branch 'mealie-next' into fix/translation-issues-when-scraping 2024-02-07 09:58:45 -06:00
RealFoxie
e686fa671c Better bruteforce parsing for units (#3066)
* try to match units when brute parsing and no amount is matched

* brute parser: better handle multiple word food items

Also checks the case when a food might have been split in a unit + ingredient

* fix formatting

* add test cases for ingredient parsing that don't start with an amount

* parametrized tests and added ingredient data fixture

* fixed group_id ref in tests

* fixed test inputs

* add extra tests for units as third token

---------

Co-authored-by: Michael Genson <71845777+michael-genson@users.noreply.github.com>
2024-02-07 09:16:20 -06:00
renovate[bot]
597e6c8e0f chore(deps): update dependency mkdocs-material to v9.5.8 (#3124)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-07 04:38:04 +00:00
boc-the-git
d5ba69d828 Merge pull request #3123 from mealie-recipes/l10n_mealie-next
New Crowdin updates
2024-02-07 12:12:02 +11:00
boc-the-git
564f43085b Merge branch 'mealie-next' into l10n_mealie-next 2024-02-07 12:05:57 +11:00
Hayden
a0b6cc3e62 New translations en-us.json (Turkish) 2024-02-06 17:52:01 -06:00
Hayden
c960c00cbe New translations en-us.json (Swedish) 2024-02-06 17:52:00 -06:00
Hayden
47b60e9ad5 New translations en-us.json (Hungarian) 2024-02-06 17:51:59 -06:00
renovate[bot]
026ca0364e chore(deps): update dependency ruff to v0.2.1 (#3122)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-06 09:12:30 -06:00
Kuchenpirat
13e7dfe920 getAll if array is empty or non existant (#3120) 2024-02-05 07:37:15 -06:00
boc-the-git
8a3173094e Merge pull request #3111 from mealie-recipes/renovate/orjson-3.x-lockfile
fix(deps): update dependency orjson to v3.9.13
2024-02-05 20:53:34 +11:00
renovate[bot]
0d16a2a943 fix(deps): update dependency orjson to v3.9.13 2024-02-05 04:25:39 +00:00
Hayden
2918a824e4 New Crowdin updates (#3116)
* New translations en-us.json (Chinese Traditional)

* New translations en-us.json (Italian)

* New translations en-us.json (Romanian)

* New translations en-us.json (French)

* New translations en-us.json (Spanish)

* New translations en-us.json (Afrikaans)

* New translations en-us.json (Arabic)

* New translations en-us.json (Bulgarian)

* New translations en-us.json (Catalan)

* New translations en-us.json (Czech)

* New translations en-us.json (Danish)

* New translations en-us.json (German)

* New translations en-us.json (Greek)

* New translations en-us.json (Finnish)

* New translations en-us.json (Hebrew)

* New translations en-us.json (Hungarian)

* New translations en-us.json (Japanese)

* New translations en-us.json (Korean)

* New translations en-us.json (Lithuanian)

* New translations en-us.json (Dutch)

* New translations en-us.json (Norwegian)

* New translations en-us.json (Polish)

* New translations en-us.json (Portuguese)

* New translations en-us.json (Russian)

* New translations en-us.json (Slovak)

* New translations en-us.json (Slovenian)

* New translations en-us.json (Serbian (Cyrillic))

* New translations en-us.json (Swedish)

* New translations en-us.json (Turkish)

* New translations en-us.json (Ukrainian)

* New translations en-us.json (Chinese Simplified)

* New translations en-us.json (Vietnamese)

* New translations en-us.json (Galician)

* New translations en-us.json (Portuguese, Brazilian)

* New translations en-us.json (Croatian)

* New translations en-us.json (Latvian)

* New translations en-us.json (English, United Kingdom)

* New translations en-us.json (French, Canada)

* New translations en-us.json (Icelandic)

* New translations en-us.json (Dutch)
2024-02-04 22:24:02 -06:00
renovate[bot]
00e5e4384d fix(deps): update dependency fastapi to v0.109.2 (#3115)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-04 16:22:12 -06:00
Michael Genson
634b0590ed Merge branch 'mealie-next' into fix/translation-issues-when-scraping 2024-02-04 13:20:44 -06:00
Kuchenpirat
52c58e1dc0 feat: bulk deletion on "Manage Data" page (#3056)
* labels bulk delete

* add foods

* bulk delete units

* add categories

* add tags

* add tools

* update translations

* fix types for text

* fix reactivity for stores

---------

Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
2024-02-04 12:55:14 -06:00
Kuchenpirat
67b7fb007b feat: Cookbook Create & Delete Improvements (#2902)
* add delete dialog

* put editor into component

* return data on createCookbook store action

* verry basic dialog with create & cancel functions

* 🧹

* cleanup

* add translation

* add dialog-closed to BaseDialog

* update delete dialog messaging

* use cancel instead of dialog-closed
2024-02-04 07:15:25 -09:00
Hayden
292672601c New Crowdin updates (#3110)
* New translations en-us.json (Romanian)

* New translations en-us.json (Romanian)
2024-02-03 22:44:30 +00:00
boc-the-git
fa3bbdcde1 Merge pull request #3106 from mealie-recipes/renovate/python-multipart-0.x
fix(deps): update dependency python-multipart to ^0.0.7
2024-02-04 05:42:19 +11:00
renovate[bot]
7e519c6b5a fix(deps): update dependency python-multipart to ^0.0.7 2024-02-03 18:35:27 +00:00
boc-the-git
57c11b23c4 Merge pull request #3107 from mealie-recipes/renovate/fastapi-0.x-lockfile
fix(deps): update dependency fastapi to v0.109.1
2024-02-04 05:34:02 +11:00
renovate[bot]
ba60428b03 fix(deps): update dependency fastapi to v0.109.1 2024-02-03 13:07:43 +00:00
renovate[bot]
e48619bae6 chore(deps): update dependency mkdocs-material to v9.5.7 (#3105)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-02-03 14:05:27 +01:00
Hayden
6d38960a5a New translations en-us.json (Turkish) (#3103) 2024-02-03 00:31:30 +01:00
Michael Genson
14497b9b5e Merge branch 'mealie-next' into fix/translation-issues-when-scraping 2024-01-10 11:35:28 -06:00
Michael Genson
e90f05d2dc Merge branch 'mealie-next' into fix/translation-issues-when-scraping 2024-01-02 19:17:26 -06:00
Michael Genson
677dc8f36a Merge branch 'mealie-next' into fix/translation-issues-when-scraping 2023-12-14 17:43:11 -06:00
Michael Genson
449eeb0d53 Merge branch 'mealie-next' into fix/translation-issues-when-scraping 2023-12-11 13:01:26 -06:00
Michael Genson
41204ca7f9 Merge branch 'mealie-next' into fix/translation-issues-when-scraping 2023-12-09 16:38:21 -06:00
Michael Genson
437f5c454f fixed missing translator 2023-12-09 22:04:21 +00:00
Michael Genson
3a30b3216e fixed tests 2023-12-09 17:19:27 +00:00
Michael Genson
408df286fd added translator to scraper 2023-12-09 17:19:19 +00:00
Michael Genson
2cfc63b302 added timedelta translations 2023-12-09 17:19:06 +00:00
Michael Genson
a8583c8e69 added backend translation support for plurals 2023-12-09 17:12:07 +00:00
121 changed files with 1569 additions and 486 deletions

View File

@@ -49,7 +49,9 @@
"onCreateCommand": "sudo chown -R vscode:vscode /workspaces/mealie/frontend/node_modules && task setup", "onCreateCommand": "sudo chown -R vscode:vscode /workspaces/mealie/frontend/node_modules && task setup",
// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode", "remoteUser": "vscode",
// "features": { "features": {
// "git": "latest" "ghcr.io/devcontainers/features/docker-in-docker:2": {
// } "dockerDashComposeVersion": "v2"
}
}
} }

View File

@@ -49,6 +49,8 @@ jobs:
needs: needs:
- build-release - build-release
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: write
steps: steps:
- name: Checkout 🛎 - name: Checkout 🛎
uses: actions/checkout@v4 uses: actions/checkout@v4

View File

@@ -0,0 +1,55 @@
<template>
<div>
<v-card-text v-if="cookbook">
<v-text-field v-model="cookbook.name" :label="$t('cookbook.cookbook-name')"></v-text-field>
<v-textarea v-model="cookbook.description" auto-grow :rows="2" :label="$t('recipe.description')"></v-textarea>
<RecipeOrganizerSelector v-model="cookbook.categories" selector-type="categories" />
<RecipeOrganizerSelector v-model="cookbook.tags" selector-type="tags" />
<RecipeOrganizerSelector v-model="cookbook.tools" selector-type="tools" />
<v-switch v-model="cookbook.public" hide-details single-line>
<template #label>
{{ $t('cookbook.public-cookbook') }}
<HelpIcon small right class="ml-2">
{{ $t('cookbook.public-cookbook-description') }}
</HelpIcon>
</template>
</v-switch>
<div class="mt-4">
<h3 class="text-subtitle-1 d-flex align-center mb-0 pb-0">
{{ $t('cookbook.filter-options') }}
<HelpIcon right small class="ml-2">
{{ $t('cookbook.filter-options-description') }}
</HelpIcon>
</h3>
<v-switch v-model="cookbook.requireAllCategories" class="mt-0" hide-details single-line>
<template #label> {{ $t('cookbook.require-all-categories') }} </template>
</v-switch>
<v-switch v-model="cookbook.requireAllTags" hide-details single-line>
<template #label> {{ $t('cookbook.require-all-tags') }} </template>
</v-switch>
<v-switch v-model="cookbook.requireAllTools" hide-details single-line>
<template #label> {{ $t('cookbook.require-all-tools') }} </template>
</v-switch>
</div>
</v-card-text>
</div>
</template>
<script lang="ts">
import { defineComponent } from "@nuxtjs/composition-api";
import { ReadCookBook } from "~/lib/api/types/cookbook";
import RecipeOrganizerSelector from "~/components/Domain/Recipe/RecipeOrganizerSelector.vue";
export default defineComponent({
components: { RecipeOrganizerSelector },
props: {
cookbook: {
type: Object as () => ReadCookBook,
required: true,
},
actions: {
type: Object as () => any,
required: true,
},
},
});
</script>

View File

@@ -12,6 +12,8 @@
$emit('submit'); $emit('submit');
dialog = false; dialog = false;
" "
@click:outside="$emit('cancel')"
@keydown.esc="$emit('cancel')"
> >
<v-card height="100%"> <v-card height="100%">
<v-app-bar dark dense :color="color" class=""> <v-app-bar dark dense :color="color" class="">

View File

@@ -57,12 +57,12 @@
:buttons="[ :buttons="[
{ {
icon: $globals.icons.edit, icon: $globals.icons.edit,
text: $t('general.edit'), text: $tc('general.edit'),
event: 'edit', event: 'edit',
}, },
{ {
icon: $globals.icons.delete, icon: $globals.icons.delete,
text: $t('general.delete'), text: $tc('general.delete'),
event: 'delete', event: 'delete',
}, },
]" ]"
@@ -160,6 +160,8 @@ export default defineComponent({
props.bulkActions.forEach((action) => { props.bulkActions.forEach((action) => {
handlers[action.event] = () => { handlers[action.event] = () => {
context.emit(action.event, selected.value); context.emit(action.event, selected.value);
// clear selection
selected.value = [];
}; };
}); });

View File

@@ -4,7 +4,7 @@ import { usePublicExploreApi } from "../api/api-client";
import { useUserApi } from "~/composables/api"; import { useUserApi } from "~/composables/api";
import { IngredientFood } from "~/lib/api/types/recipe"; import { IngredientFood } from "~/lib/api/types/recipe";
let foodStore: Ref<IngredientFood[] | null> | null = null; let foodStore: Ref<IngredientFood[] | null> = ref([]);
/** /**
* useFoodData returns a template reactive object * useFoodData returns a template reactive object
@@ -39,11 +39,11 @@ export const usePublicFoodStore = function (groupSlug: string) {
const actions = { const actions = {
...usePublicStoreActions(api.foods, foodStore, loading), ...usePublicStoreActions(api.foods, foodStore, loading),
flushStore() { flushStore() {
foodStore = null; foodStore = ref([]);
}, },
}; };
if (!foodStore) { if (!foodStore.value || foodStore.value.length === 0) {
foodStore = actions.getAll(); foodStore = actions.getAll();
} }
@@ -57,11 +57,11 @@ export const useFoodStore = function () {
const actions = { const actions = {
...useStoreActions(api.foods, foodStore, loading), ...useStoreActions(api.foods, foodStore, loading),
flushStore() { flushStore() {
foodStore = null; foodStore.value = [];
}, },
}; };
if (!foodStore) { if (!foodStore.value || foodStore.value.length === 0) {
foodStore = actions.getAll(); foodStore = actions.getAll();
} }

View File

@@ -3,7 +3,7 @@ import { useStoreActions } from "../partials/use-actions-factory";
import { MultiPurposeLabelOut } from "~/lib/api/types/labels"; import { MultiPurposeLabelOut } from "~/lib/api/types/labels";
import { useUserApi } from "~/composables/api"; import { useUserApi } from "~/composables/api";
let labelStore: Ref<MultiPurposeLabelOut[] | null> | null = null; let labelStore: Ref<MultiPurposeLabelOut[] | null> = ref([]);
export function useLabelData() { export function useLabelData() {
const data = reactive({ const data = reactive({
@@ -33,11 +33,11 @@ export function useLabelStore() {
const actions = { const actions = {
...useStoreActions<MultiPurposeLabelOut>(api.multiPurposeLabels, labelStore, loading), ...useStoreActions<MultiPurposeLabelOut>(api.multiPurposeLabels, labelStore, loading),
flushStore() { flushStore() {
labelStore = null; labelStore.value = [];
}, },
}; };
if (!labelStore) { if (!labelStore.value || labelStore.value?.length === 0) {
labelStore = actions.getAll(); labelStore = actions.getAll();
} }

View File

@@ -3,7 +3,7 @@ import { useStoreActions } from "../partials/use-actions-factory";
import { useUserApi } from "~/composables/api"; import { useUserApi } from "~/composables/api";
import { IngredientUnit } from "~/lib/api/types/recipe"; import { IngredientUnit } from "~/lib/api/types/recipe";
let unitStore: Ref<IngredientUnit[] | null> | null = null; let unitStore: Ref<IngredientUnit[] | null> = ref([]);
/** /**
* useUnitData returns a template reactive object * useUnitData returns a template reactive object
@@ -40,11 +40,11 @@ export const useUnitStore = function () {
const actions = { const actions = {
...useStoreActions<IngredientUnit>(api.units, unitStore, loading), ...useStoreActions<IngredientUnit>(api.units, unitStore, loading),
flushStore() { flushStore() {
unitStore = null; unitStore.value = [];
}, },
}; };
if (!unitStore) { if (!unitStore.value || unitStore.value.length === 0) {
unitStore = actions.getAll(); unitStore = actions.getAll();
} }

View File

@@ -109,6 +109,7 @@ export const useCookbooks = function () {
} }
loading.value = false; loading.value = false;
return data;
}, },
async updateOne(updateData: UpdateCookBook) { async updateOne(updateData: UpdateCookBook) {
if (!updateData.id) { if (!updateData.id) {

View File

@@ -199,7 +199,8 @@
"upload-file": "Laai dokument op", "upload-file": "Laai dokument op",
"created-on-date": "Geskep op: {0}", "created-on-date": "Geskep op: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Is jy seker jy wil <b>{groupName}<b/> uitvee?", "are-you-sure-you-want-to-delete-the-group": "Is jy seker jy wil <b>{groupName}<b/> uitvee?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Vereis alle merkers", "require-all-tags": "Vereis alle merkers",
"require-all-tools": "Vereis alle kookgerei", "require-all-tools": "Vereis alle kookgerei",
"cookbook-name": "Naam van die kookboek", "cookbook-name": "Naam van die kookboek",
"cookbook-with-name": "Kookboek {0}" "cookbook-with-name": "Kookboek {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"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": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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/>؟",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Require All Tags", "require-all-tags": "Require All Tags",
"require-all-tools": "Require All Tools", "require-all-tools": "Require All Tools",
"cookbook-name": "Cookbook Name", "cookbook-name": "Cookbook Name",
"cookbook-with-name": "Cookbook {0}" "cookbook-with-name": "Cookbook {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Качване на файл", "upload-file": "Качване на файл",
"created-on-date": "Създадено на {0}", "created-on-date": "Създадено на {0}",
"unsaved-changes": "Имате незапазени промени. Желаете ли да ги запазите преди да излезете? Натиснете Ок за запазване и Отказ за отхвърляне на промените.", "unsaved-changes": "Имате незапазени промени. Желаете ли да ги запазите преди да излезете? Натиснете Ок за запазване и Отказ за отхвърляне на промените.",
"clipboard-copy-failure": "Линкът към рецептата е копиран в клипборда." "clipboard-copy-failure": "Линкът към рецептата е копиран в клипборда.",
"confirm-delete-generic-items": "Сигурни ли сте, че желаете да изтриете следните елементи?"
}, },
"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/>?",
@@ -258,7 +259,7 @@
}, },
"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": "Вечеря ТАЗИ ВЕЧЕР",
@@ -473,11 +474,11 @@
"add-to-timeline": "Добави към времевата линия", "add-to-timeline": "Добави към времевата линия",
"recipe-added-to-list": "Рецептата е добавена към списъка", "recipe-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": "Рецептата е добавена към хранителния план",
"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", "failed-to-add-to-list": "Неуспешно добавяне към списъка",
"yield": "Добив", "yield": "Добив",
"quantity": "Количество", "quantity": "Количество",
"choose-unit": "Избери единица", "choose-unit": "Избери единица",
@@ -536,8 +537,8 @@
"new-recipe-names-must-be-unique": "Името на рецептата трябва да бъде уникално", "new-recipe-names-must-be-unique": "Името на рецептата трябва да бъде уникално",
"scrape-recipe": "Обхождане на рецепта", "scrape-recipe": "Обхождане на рецепта",
"scrape-recipe-description": "Обходи рецепта по линк. Предоставете линк за сайт, който искате да бъде обходен. Mealie ще опита да обходи рецептата от този сайт и да я добави във Вашата колекция.", "scrape-recipe-description": "Обходи рецепта по линк. Предоставете линк за сайт, който искате да бъде обходен. Mealie ще опита да обходи рецептата от този сайт и да я добави във Вашата колекция.",
"scrape-recipe-have-a-lot-of-recipes": "Have a lot of recipes you want to scrape at once?", "scrape-recipe-have-a-lot-of-recipes": "Имате много рецепти, които искате да обходите наведнъж?",
"scrape-recipe-suggest-bulk-importer": "Try out the bulk importer", "scrape-recipe-suggest-bulk-importer": "Пробвайте масовото импорторане",
"import-original-keywords-as-tags": "Импортирай оригиналните ключови думи като тагове", "import-original-keywords-as-tags": "Импортирай оригиналните ключови думи като тагове",
"stay-in-edit-mode": "Остани в режим на редакция", "stay-in-edit-mode": "Остани в режим на редакция",
"import-from-zip": "Импортирай от Zip", "import-from-zip": "Импортирай от Zip",
@@ -561,7 +562,7 @@
"upload-image": "Качване на изображение", "upload-image": "Качване на изображение",
"screen-awake": "Запази екрана активен", "screen-awake": "Запази екрана активен",
"remove-image": "Премахване на изображение", "remove-image": "Премахване на изображение",
"nextStep": "Next step" "nextStep": "Следваща стъпка"
}, },
"search": { "search": {
"advanced-search": "Разширено търсене", "advanced-search": "Разширено търсене",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Изискване на всички тагове", "require-all-tags": "Изискване на всички тагове",
"require-all-tools": "Изискване на всички инструменти", "require-all-tools": "Изискване на всички инструменти",
"cookbook-name": "Име на книгата с рецепти", "cookbook-name": "Име на книгата с рецепти",
"cookbook-with-name": "Книга с рецепти {0}" "cookbook-with-name": "Книга с рецепти {0}",
"create-a-cookbook": "Създай Готварска книга",
"cookbook": "Готварска книга"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Puja un fitxer", "upload-file": "Puja un fitxer",
"created-on-date": "Creat el: {0}", "created-on-date": "Creat el: {0}",
"unsaved-changes": "Tens canvis que no estan guardats. Vols guardar-los abans de sortir? Clica d'acord per guardar-los o cancel·lar per descartar els canvis.", "unsaved-changes": "Tens canvis que no estan guardats. Vols guardar-los abans de sortir? Clica d'acord per guardar-los o cancel·lar per descartar els canvis.",
"clipboard-copy-failure": "No s'ha pogut copiar al porta-retalls." "clipboard-copy-failure": "No s'ha pogut copiar al porta-retalls.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Requereix totes les etiquetes", "require-all-tags": "Requereix totes les etiquetes",
"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}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Nahrát soubor", "upload-file": "Nahrát soubor",
"created-on-date": "Vytvořeno dne: {0}", "created-on-date": "Vytvořeno dne: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Jste si jisti, že chcete smazat <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Jste si jisti, že chcete smazat <b>{groupName}<b/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Vyžadovat všechny štítky", "require-all-tags": "Vyžadovat všechny štítky",
"require-all-tools": "Vyžadovat všechny nástroje", "require-all-tools": "Vyžadovat všechny nástroje",
"cookbook-name": "Název kuchařky", "cookbook-name": "Název kuchařky",
"cookbook-with-name": "Kuchařka {0}" "cookbook-with-name": "Kuchařka {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Upload Fil", "upload-file": "Upload Fil",
"created-on-date": "Oprettet den: {0}", "created-on-date": "Oprettet den: {0}",
"unsaved-changes": "Du har ændringer som ikke er gemt. Vil du gemme før du forlader? Vælg \"Okay\" for at gemme, eller \"Annullér\" for at kassere ændringer.", "unsaved-changes": "Du har ændringer som ikke er gemt. Vil du gemme før du forlader? Vælg \"Okay\" for at gemme, eller \"Annullér\" for at kassere ændringer.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Kræv Alle Mærker", "require-all-tags": "Kræv Alle Mærker",
"require-all-tools": "Kræv Alle Værktøjer", "require-all-tools": "Kræv Alle Værktøjer",
"cookbook-name": "Navn på kogebog", "cookbook-name": "Navn på kogebog",
"cookbook-with-name": "Kogebog {0}" "cookbook-with-name": "Kogebog {0}",
"create-a-cookbook": "Opret en ny kogebog",
"cookbook": "Kogebog"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Datei hochladen", "upload-file": "Datei hochladen",
"created-on-date": "Erstellt am: {0}", "created-on-date": "Erstellt am: {0}",
"unsaved-changes": "Du hast ungespeicherte Änderungen. Möchtest du vor dem Verlassen speichern? OK um zu speichern, Cancel um Änderungen zu verwerfen.", "unsaved-changes": "Du hast ungespeicherte Änderungen. Möchtest du vor dem Verlassen speichern? OK um zu speichern, Cancel um Änderungen zu verwerfen.",
"clipboard-copy-failure": "Fehler beim Kopieren in die Zwischenablage." "clipboard-copy-failure": "Fehler beim Kopieren in die Zwischenablage.",
"confirm-delete-generic-items": "Bist du dir sicher, dass du die folgenden Einträge löschen möchtest?"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Bist du dir sicher, dass du die Gruppe <b>{groupName}<b/> löschen möchtest?", "are-you-sure-you-want-to-delete-the-group": "Bist du dir sicher, dass du die Gruppe <b>{groupName}<b/> löschen möchtest?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Alle Schlagwörter erforderlich", "require-all-tags": "Alle Schlagwörter erforderlich",
"require-all-tools": "Alle Utensilien erforderlich", "require-all-tools": "Alle Utensilien erforderlich",
"cookbook-name": "Kochbuch Name", "cookbook-name": "Kochbuch Name",
"cookbook-with-name": "Kochbuch {0}" "cookbook-with-name": "Kochbuch {0}",
"create-a-cookbook": "Ein Kochbuch erstellen",
"cookbook": "Kochbuch"
} }
} }

View File

@@ -199,7 +199,8 @@
"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": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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/>;",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Require All Tags", "require-all-tags": "Require All Tags",
"require-all-tools": "Require All Tools", "require-all-tools": "Require All Tools",
"cookbook-name": "Cookbook Name", "cookbook-name": "Cookbook Name",
"cookbook-with-name": "Cookbook {0}" "cookbook-with-name": "Cookbook {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Upload File", "upload-file": "Upload File",
"created-on-date": "Created on: {0}", "created-on-date": "Created on: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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": "Are you sure you want to delete <b>{groupName}<b/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Require All Tags", "require-all-tags": "Require All Tags",
"require-all-tools": "Require All Tools", "require-all-tools": "Require All Tools",
"cookbook-name": "Cookbook Name", "cookbook-name": "Cookbook Name",
"cookbook-with-name": "Cookbook {0}" "cookbook-with-name": "Cookbook {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Upload File", "upload-file": "Upload File",
"created-on-date": "Created on: {0}", "created-on-date": "Created on: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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": "Are you sure you want to delete <b>{groupName}<b/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Require All Tags", "require-all-tags": "Require All Tags",
"require-all-tools": "Require All Tools", "require-all-tools": "Require All Tools",
"cookbook-name": "Cookbook Name", "cookbook-name": "Cookbook Name",
"cookbook-with-name": "Cookbook {0}" "cookbook-with-name": "Cookbook {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Subir Archivo", "upload-file": "Subir Archivo",
"created-on-date": "Creado el {0}", "created-on-date": "Creado el {0}",
"unsaved-changes": "Tienes cambios sin guardar. ¿Quieres guardar antes de salir? Aceptar para guardar, Cancelar para descartar cambios.", "unsaved-changes": "Tienes cambios sin guardar. ¿Quieres guardar antes de salir? Aceptar para guardar, Cancelar para descartar cambios.",
"clipboard-copy-failure": "No se pudo copiar al portapapeles." "clipboard-copy-failure": "No se pudo copiar al portapapeles.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Por favor, confirma que deseas eliminar <b>{groupName}<b/>", "are-you-sure-you-want-to-delete-the-group": "Por favor, confirma que deseas eliminar <b>{groupName}<b/>",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Requerir todas las etiquetas", "require-all-tags": "Requerir todas las etiquetas",
"require-all-tools": "Requiere todos los utensilios", "require-all-tools": "Requiere todos los utensilios",
"cookbook-name": "Nombre del recetario", "cookbook-name": "Nombre del recetario",
"cookbook-with-name": "Recetario {0}" "cookbook-with-name": "Recetario {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Tuo tiedosto", "upload-file": "Tuo tiedosto",
"created-on-date": "Luotu {0}", "created-on-date": "Luotu {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Vaadi Kaikki Tunnisteet", "require-all-tags": "Vaadi Kaikki Tunnisteet",
"require-all-tools": "Vaadi Kaikki Työkalut", "require-all-tools": "Vaadi Kaikki Työkalut",
"cookbook-name": "Keittokirjan Nimi", "cookbook-name": "Keittokirjan Nimi",
"cookbook-with-name": "Keittokirja {0}" "cookbook-with-name": "Keittokirja {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Transférer un fichier", "upload-file": "Transférer un fichier",
"created-on-date": "Créé le {0}", "created-on-date": "Créé le {0}",
"unsaved-changes": "Vous avez des modifications non enregistrées. Voulez-vous les enregistrer? Ok pour enregistrer, annuler pour ignorer les modifications.", "unsaved-changes": "Vous avez des modifications non enregistrées. Voulez-vous les enregistrer? Ok pour enregistrer, annuler pour ignorer les modifications.",
"clipboard-copy-failure": "Échec de la copie vers le presse-papiers." "clipboard-copy-failure": "Échec de la copie vers le presse-papiers.",
"confirm-delete-generic-items": "Êtes-vous sûr de vouloir supprimer les éléments suivants ?"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Êtes-vous certain de vouloir supprimer <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Êtes-vous certain de vouloir supprimer <b>{groupName}<b/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Nécessite tous les mots-clés", "require-all-tags": "Nécessite tous les mots-clés",
"require-all-tools": "Nécessite tous les ustensiles", "require-all-tools": "Nécessite tous les ustensiles",
"cookbook-name": "Nom du livre de recettes", "cookbook-name": "Nom du livre de recettes",
"cookbook-with-name": "Livre de recettes {0}" "cookbook-with-name": "Livre de recettes {0}",
"create-a-cookbook": "Créer un nouveau livre de recettes",
"cookbook": "Livre de recettes"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Transférer un fichier", "upload-file": "Transférer un fichier",
"created-on-date": "Créé le {0}", "created-on-date": "Créé le {0}",
"unsaved-changes": "Vous avez des modifications non enregistrées. Voulez-vous enregistrer avant de partir? OK pour enregistrer, Annuler pour ignorer les modifications.", "unsaved-changes": "Vous avez des modifications non enregistrées. Voulez-vous enregistrer avant de partir? OK pour enregistrer, Annuler pour ignorer les modifications.",
"clipboard-copy-failure": "Échec de la copie dans le presse-papiers." "clipboard-copy-failure": "Échec de la copie dans le presse-papiers.",
"confirm-delete-generic-items": "Êtes-vous sûr de vouloir supprimer les éléments suivants ?"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Voulez-vous vraiment supprimer <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Voulez-vous vraiment supprimer <b>{groupName}<b/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Nécessite tous les mots-clés", "require-all-tags": "Nécessite tous les mots-clés",
"require-all-tools": "Nécessite tous les ustensiles", "require-all-tools": "Nécessite tous les ustensiles",
"cookbook-name": "Nom du livre de recettes", "cookbook-name": "Nom du livre de recettes",
"cookbook-with-name": "Livre de recettes {0}" "cookbook-with-name": "Livre de recettes {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Upload File", "upload-file": "Upload File",
"created-on-date": "Created on: {0}", "created-on-date": "Created on: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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": "Are you sure you want to delete <b>{groupName}<b/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Require All Tags", "require-all-tags": "Require All Tags",
"require-all-tools": "Require All Tools", "require-all-tools": "Require All Tools",
"cookbook-name": "Cookbook Name", "cookbook-name": "Cookbook Name",
"cookbook-with-name": "Cookbook {0}" "cookbook-with-name": "Cookbook {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "העלאת קבצים", "upload-file": "העלאת קבצים",
"created-on-date": "נוצר ב-{0}", "created-on-date": "נוצר ב-{0}",
"unsaved-changes": "יש שינויים שלא נשמרו. לצאת לפני שמירה? אשר לשמירה, בטל למחיקת שינויים.", "unsaved-changes": "יש שינויים שלא נשמרו. לצאת לפני שמירה? אשר לשמירה, בטל למחיקת שינויים.",
"clipboard-copy-failure": "כשלון בהעתקה ללוח ההדבקה." "clipboard-copy-failure": "כשלון בהעתקה ללוח ההדבקה.",
"confirm-delete-generic-items": "האם אתה בטוח שברצונך למחוק את הפריטים הנבחרים?"
}, },
"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/>?",
@@ -258,7 +259,7 @@
}, },
"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": "ארוחת ערב היום",
@@ -473,11 +474,11 @@
"add-to-timeline": "הוסף לציר הזמן", "add-to-timeline": "הוסף לציר הזמן",
"recipe-added-to-list": "מתכון נוסף לרשימה", "recipe-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": "מתכון נוסף לתכנון ארוחות",
"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", "failed-to-add-to-list": "כשלון בהוספה לרשימה",
"yield": "תשואה", "yield": "תשואה",
"quantity": "כמות", "quantity": "כמות",
"choose-unit": "בחירת יחידת מידה", "choose-unit": "בחירת יחידת מידה",
@@ -514,7 +515,7 @@
"how-did-it-turn-out": "איך יצא?", "how-did-it-turn-out": "איך יצא?",
"user-made-this": "{user} הכין את זה", "user-made-this": "{user} הכין את זה",
"last-made-date": "נעשה לאחרונה ב{date}", "last-made-date": "נעשה לאחרונה ב{date}",
"api-extras-description": "Recipes extras are a key feature of the Mealie API. They allow you to create custom JSON key/value pairs within a recipe, to reference from 3rd party applications. You can use these keys to provide information, for example to trigger automations or custom messages to relay to your desired device.", "api-extras-description": "מתכונים נוספים הם יכולת מפתח של Mealie API. הם מאפשרים ליצור צמדי key/value בצורת JSON על מנת לקרוא אותם בתוכנת צד שלישית. תוכלו להשתמש בצמדים האלה כדי לספק מידע, לדוגמא להפעיל אוטומציות או הודעות מותאמות אישית למכשירים מסויימים.",
"message-key": "מפתח הודעה", "message-key": "מפתח הודעה",
"parse": "ניתוח", "parse": "ניתוח",
"attach-images-hint": "הוסף תמונות ע\"י גרירה ושחרור אל תוך העורך", "attach-images-hint": "הוסף תמונות ע\"י גרירה ושחרור אל תוך העורך",
@@ -536,8 +537,8 @@
"new-recipe-names-must-be-unique": "שם מתכון חדש חייב להיות ייחודי", "new-recipe-names-must-be-unique": "שם מתכון חדש חייב להיות ייחודי",
"scrape-recipe": "קריאת מתכון", "scrape-recipe": "קריאת מתכון",
"scrape-recipe-description": "קריאת מתכון בעזרת לינק. ספק את הלינק של האתר שברצונך לקרוא, ומילי תנסה לקרוא את המתכון מהאתר ולהוסיף אותו לאוסף.", "scrape-recipe-description": "קריאת מתכון בעזרת לינק. ספק את הלינק של האתר שברצונך לקרוא, ומילי תנסה לקרוא את המתכון מהאתר ולהוסיף אותו לאוסף.",
"scrape-recipe-have-a-lot-of-recipes": "Have a lot of recipes you want to scrape at once?", "scrape-recipe-have-a-lot-of-recipes": "יש לך הרבה מתכונים שאתה רוצה לקרוא בבת אחת?",
"scrape-recipe-suggest-bulk-importer": "Try out the bulk importer", "scrape-recipe-suggest-bulk-importer": "נסה את יכולת קריאת רשימה",
"import-original-keywords-as-tags": "ייבא שמות מפתח מקוריות כתגיות", "import-original-keywords-as-tags": "ייבא שמות מפתח מקוריות כתגיות",
"stay-in-edit-mode": "השאר במצב עריכה", "stay-in-edit-mode": "השאר במצב עריכה",
"import-from-zip": "ייבא מקובץ", "import-from-zip": "ייבא מקובץ",
@@ -561,7 +562,7 @@
"upload-image": "העלה תמונה", "upload-image": "העלה תמונה",
"screen-awake": "השאר את המסך פעיל", "screen-awake": "השאר את המסך פעיל",
"remove-image": "האם למחוק את התמונה?", "remove-image": "האם למחוק את התמונה?",
"nextStep": "Next step" "nextStep": "השלב הבא"
}, },
"search": { "search": {
"advanced-search": "חיפוש מתקדם", "advanced-search": "חיפוש מתקדם",
@@ -796,7 +797,7 @@
"untagged-count": "לא מתוייג {count}", "untagged-count": "לא מתוייג {count}",
"create-a-tag": "צור תגית", "create-a-tag": "צור תגית",
"tag-name": "שם תגית", "tag-name": "שם תגית",
"tag": "Tag" "tag": "תגית"
}, },
"tool": { "tool": {
"tools": "כלים", "tools": "כלים",
@@ -806,7 +807,7 @@
"create-new-tool": "יצירת כלי חדש", "create-new-tool": "יצירת כלי חדש",
"on-hand-checkbox-label": "הראה מה יש לי במטבח", "on-hand-checkbox-label": "הראה מה יש לי במטבח",
"required-tools": "צריך כלים", "required-tools": "צריך כלים",
"tool": "Tool" "tool": "כלי"
}, },
"user": { "user": {
"admin": "אדמין", "admin": "אדמין",
@@ -897,10 +898,10 @@
"user-can-organize-group-data": "משתמש יכול לשנות מידע של קבוצה", "user-can-organize-group-data": "משתמש יכול לשנות מידע של קבוצה",
"enable-advanced-features": "אפשר אפשרויות מתקדמות", "enable-advanced-features": "אפשר אפשרויות מתקדמות",
"it-looks-like-this-is-your-first-time-logging-in": "נראה שזו ההתחברות הראשונה שלך.", "it-looks-like-this-is-your-first-time-logging-in": "נראה שזו ההתחברות הראשונה שלך.",
"dont-want-to-see-this-anymore-be-sure-to-change-your-email": "Don't want to see this anymore? Be sure to change your email in your user settings!", "dont-want-to-see-this-anymore-be-sure-to-change-your-email": "לא רוצה לראות את זה יותר? דאג לשנות את המייל של בהגדרות המשתמש!",
"forgot-password": "שכחתי סיסמא", "forgot-password": "שכחתי סיסמא",
"forgot-password-text": "Please enter your email address and we will send you a link to reset your password.", "forgot-password-text": "נא לספק כתובת דוא\"ל. אנו נשלח לך הודעת דוא\"ל לצורך איפוס הסיסמה שלך.",
"changes-reflected-immediately": "Changes to this user will be reflected immediately." "changes-reflected-immediately": "השינויים למשתמש זה יבוצעו מיידית."
}, },
"language-dialog": { "language-dialog": {
"translated": "תורגם", "translated": "תורגם",
@@ -922,8 +923,8 @@
"food-label": "תוית אוכל", "food-label": "תוית אוכל",
"edit-food": "עריכת מזון", "edit-food": "עריכת מזון",
"food-data": "נתוני אוכל", "food-data": "נתוני אוכל",
"example-food-singular": "ex: Onion", "example-food-singular": "דוגמא: בצל",
"example-food-plural": "ex: Onions" "example-food-plural": "דוגמא: בצלים"
}, },
"units": { "units": {
"seed-dialog-text": "אכלס את מסד הנתונים עם יחידות מדידה בהתאם לשפה המקומית שלך.", "seed-dialog-text": "אכלס את מסד הנתונים עם יחידות מדידה בהתאם לשפה המקומית שלך.",
@@ -934,7 +935,7 @@
"merging-unit-into-unit": "ממזג את {0} לתוך {1}", "merging-unit-into-unit": "ממזג את {0} לתוך {1}",
"create-unit": "יצירת יחידה", "create-unit": "יצירת יחידה",
"abbreviation": "קיצור", "abbreviation": "קיצור",
"plural-abbreviation": "Plural Abbreviation", "plural-abbreviation": "צורת הרבית",
"description": "תיאור", "description": "תיאור",
"display-as-fraction": "הצגה כשבר", "display-as-fraction": "הצגה כשבר",
"use-abbreviation": "השתמש בקיצור", "use-abbreviation": "השתמש בקיצור",
@@ -942,10 +943,10 @@
"unit-data": "נתוני יחידה", "unit-data": "נתוני יחידה",
"use-abbv": "השתמש בקיצור", "use-abbv": "השתמש בקיצור",
"fraction": "שבר", "fraction": "שבר",
"example-unit-singular": "ex: Tablespoon", "example-unit-singular": "דוגמא: כפית",
"example-unit-plural": "ex: Tablespoons", "example-unit-plural": "דוגמא: כפיות",
"example-unit-abbreviation-singular": "ex: Tbsp", "example-unit-abbreviation-singular": "דוגמא: כף",
"example-unit-abbreviation-plural": "ex: Tbsps" "example-unit-abbreviation-plural": "דוגמא: כפות"
}, },
"labels": { "labels": {
"seed-dialog-text": "אכלס את מסד הנתונים בתגיות נפוצות בהתאם לשפה המקומית שלך.", "seed-dialog-text": "אכלס את מסד הנתונים בתגיות נפוצות בהתאם לשפה המקומית שלך.",
@@ -1185,6 +1186,8 @@
"require-all-tags": "זקוק לכל התגיות", "require-all-tags": "זקוק לכל התגיות",
"require-all-tools": "זקוק לכל הכלים", "require-all-tools": "זקוק לכל הכלים",
"cookbook-name": "שם ספר בישול", "cookbook-name": "שם ספר בישול",
"cookbook-with-name": "ספר בישול {0}" "cookbook-with-name": "ספר בישול {0}",
"create-a-cookbook": "צור ספר בישול חדש",
"cookbook": "ספר בישול"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Prenesi Datoteku", "upload-file": "Prenesi Datoteku",
"created-on-date": "Kreirano dana: {0}", "created-on-date": "Kreirano dana: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Jeste li sigurni da želite izbrisati <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Jeste li sigurni da želite izbrisati <b>{groupName}<b/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Zahtijevaj sve oznake", "require-all-tags": "Zahtijevaj sve oznake",
"require-all-tools": "Zahtijevaj sve Alate", "require-all-tools": "Zahtijevaj sve Alate",
"cookbook-name": "Naziv Zbirke recepata", "cookbook-name": "Naziv Zbirke recepata",
"cookbook-with-name": "ZbirkaRecepata {0}" "cookbook-with-name": "ZbirkaRecepata {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Fájl feltöltése", "upload-file": "Fájl feltöltése",
"created-on-date": "Létrehozva: {0}", "created-on-date": "Létrehozva: {0}",
"unsaved-changes": "El nem mentett módosításai vannak. Szeretné elmenteni, mielőtt kilép? A mentéshez kattintson az Ok, a módosítások elvetéséhez a Mégsem gombra.", "unsaved-changes": "El nem mentett módosításai vannak. Szeretné elmenteni, mielőtt kilép? A mentéshez kattintson az Ok, a módosítások elvetéséhez a Mégsem gombra.",
"clipboard-copy-failure": "Nem sikerült a vágólapra másolás." "clipboard-copy-failure": "Nem sikerült a vágólapra másolás.",
"confirm-delete-generic-items": "Biztos benne, hogy törölni szeretné az alábbi tételeket?"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Biztosan törölni szeretnéd ezt: <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Biztosan törölni szeretnéd ezt: <b>{groupName}<b/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Minden címke szükséges", "require-all-tags": "Minden címke szükséges",
"require-all-tools": "Minden szükséges eszköz", "require-all-tools": "Minden szükséges eszköz",
"cookbook-name": "Szakácskönyv neve", "cookbook-name": "Szakácskönyv neve",
"cookbook-with-name": "Szakácskönyv {0}" "cookbook-with-name": "Szakácskönyv {0}",
"create-a-cookbook": "Szakácskönyv létrehozása",
"cookbook": "Szakácskönyv"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Upload File", "upload-file": "Upload File",
"created-on-date": "Created on: {0}", "created-on-date": "Created on: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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": "Are you sure you want to delete <b>{groupName}<b/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Require All Tags", "require-all-tags": "Require All Tags",
"require-all-tools": "Require All Tools", "require-all-tools": "Require All Tools",
"cookbook-name": "Cookbook Name", "cookbook-name": "Cookbook Name",
"cookbook-with-name": "Cookbook {0}" "cookbook-with-name": "Cookbook {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Carica file", "upload-file": "Carica file",
"created-on-date": "Creato il: {0}", "created-on-date": "Creato il: {0}",
"unsaved-changes": "Sono state apportate modifiche non salvate. Salvare prima di uscire? Premi Ok per salvare, Annulla per scartare le modifiche.", "unsaved-changes": "Sono state apportate modifiche non salvate. Salvare prima di uscire? Premi Ok per salvare, Annulla per scartare le modifiche.",
"clipboard-copy-failure": "Impossibile copiare negli appunti." "clipboard-copy-failure": "Impossibile copiare negli appunti.",
"confirm-delete-generic-items": "Sei sicuro di voler eliminare i seguenti elementi?"
}, },
"group": { "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/>'?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Richiedi Tutti I Tag", "require-all-tags": "Richiedi Tutti I Tag",
"require-all-tools": "Richiedi Tutti Gli Strumenti", "require-all-tools": "Richiedi Tutti Gli Strumenti",
"cookbook-name": "Nome Ricettario", "cookbook-name": "Nome Ricettario",
"cookbook-with-name": "Ricettario {0}" "cookbook-with-name": "Ricettario {0}",
"create-a-cookbook": "Crea un libro di cucina",
"cookbook": "Libro di cucina"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "ファイルのアップロード", "upload-file": "ファイルのアップロード",
"created-on-date": "Created on: {0}", "created-on-date": "Created on: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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/> を削除しますか?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Require All Tags", "require-all-tags": "Require All Tags",
"require-all-tools": "Require All Tools", "require-all-tools": "Require All Tools",
"cookbook-name": "Cookbook Name", "cookbook-name": "Cookbook Name",
"cookbook-with-name": "Cookbook {0}" "cookbook-with-name": "Cookbook {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Upload File", "upload-file": "Upload File",
"created-on-date": "Created on: {0}", "created-on-date": "Created on: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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": "Are you sure you want to delete <b>{groupName}<b/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Require All Tags", "require-all-tags": "Require All Tags",
"require-all-tools": "Require All Tools", "require-all-tools": "Require All Tools",
"cookbook-name": "Cookbook Name", "cookbook-name": "Cookbook Name",
"cookbook-with-name": "Cookbook {0}" "cookbook-with-name": "Cookbook {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"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": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"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/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Būtinos visos žymos", "require-all-tags": "Būtinos visos žymos",
"require-all-tools": "Būtini visi įrankiai", "require-all-tools": "Būtini visi įrankiai",
"cookbook-name": "Receptų knygos pavadinimas", "cookbook-name": "Receptų knygos pavadinimas",
"cookbook-with-name": "Receptų knyga {0}" "cookbook-with-name": "Receptų knyga {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Upload File", "upload-file": "Upload File",
"created-on-date": "Created on: {0}", "created-on-date": "Created on: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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": "Are you sure you want to delete <b>{groupName}<b/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Require All Tags", "require-all-tags": "Require All Tags",
"require-all-tools": "Require All Tools", "require-all-tools": "Require All Tools",
"cookbook-name": "Cookbook Name", "cookbook-name": "Cookbook Name",
"cookbook-with-name": "Cookbook {0}" "cookbook-with-name": "Cookbook {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -53,7 +53,7 @@
"apprise-url": "Apprise URL", "apprise-url": "Apprise URL",
"database": "Database", "database": "Database",
"delete-event": "Gebeurtenis verwijderen", "delete-event": "Gebeurtenis verwijderen",
"event-delete-confirmation": "Weet je zeker dat je deze gebeurtenis wil verwijderen?", "event-delete-confirmation": "Weet je zeker dat je deze gebeurtenis wilt verwijderen?",
"event-deleted": "Gebeurtenis verwijderd", "event-deleted": "Gebeurtenis verwijderd",
"event-updated": "Gebeurtenis bijgewerkt", "event-updated": "Gebeurtenis bijgewerkt",
"new-notification-form-description": "Mealie gebruikt de notificatieservices van Apprise om notificaties te genereren. Apprise biedt diverse services aan om notificaties te versturen. Raadpleeg hun wiki voor een uitgebreide handleiding over het creëren van een link voor je service. Afhankelijk van de gekozen service zijn er mogelijk extra functionaliteiten beschikbaar.", "new-notification-form-description": "Mealie gebruikt de notificatieservices van Apprise om notificaties te genereren. Apprise biedt diverse services aan om notificaties te versturen. Raadpleeg hun wiki voor een uitgebreide handleiding over het creëren van een link voor je service. Afhankelijk van de gekozen service zijn er mogelijk extra functionaliteiten beschikbaar.",
@@ -84,7 +84,7 @@
"clear": "Wissen", "clear": "Wissen",
"close": "Sluiten", "close": "Sluiten",
"confirm": "Bevestigen", "confirm": "Bevestigen",
"confirm-delete-generic": "Weet je zeker dat je dit wil verwijderen?", "confirm-delete-generic": "Weet je zeker dat je dit wilt verwijderen?",
"copied_message": "Gekopieerd!", "copied_message": "Gekopieerd!",
"create": "Aanmaken", "create": "Aanmaken",
"created": "Aangemaakt op", "created": "Aangemaakt op",
@@ -199,7 +199,8 @@
"upload-file": "Bestand uploaden", "upload-file": "Bestand uploaden",
"created-on-date": "Gemaakt op {0}", "created-on-date": "Gemaakt op {0}",
"unsaved-changes": "Er zijn niet-opgeslagen wijzigingen. Wil je eerst opslaan voordat je vertrekt? Okay om op te slaan, Annuleren om wijzigingen ongedaan te maken.", "unsaved-changes": "Er zijn niet-opgeslagen wijzigingen. Wil je eerst opslaan voordat je vertrekt? Okay om op te slaan, Annuleren om wijzigingen ongedaan te maken.",
"clipboard-copy-failure": "Kopiëren naar klembord mislukt." "clipboard-copy-failure": "Kopiëren naar klembord mislukt.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Weet je zeker dat je <b>{groupName}<b/> wil verwijderen?", "are-you-sure-you-want-to-delete-the-group": "Weet je zeker dat je <b>{groupName}<b/> wil verwijderen?",
@@ -559,7 +560,7 @@
"recipe-yield": "Recept Opbrengst", "recipe-yield": "Recept Opbrengst",
"unit": "Eenheid", "unit": "Eenheid",
"upload-image": "Afbeelding uploaden", "upload-image": "Afbeelding uploaden",
"screen-awake": "Scherm laten aan staan", "screen-awake": "Scherm aan laten staan",
"remove-image": "Afbeelding verwijderen", "remove-image": "Afbeelding verwijderen",
"nextStep": "Volgende stap" "nextStep": "Volgende stap"
}, },
@@ -736,7 +737,7 @@
"shopping-lists": "Boodschappenlijsten", "shopping-lists": "Boodschappenlijsten",
"food": "Voedsel", "food": "Voedsel",
"note": "Notitie", "note": "Notitie",
"label": "Etiket", "label": "Label",
"linked-item-warning": "Dit element is gekoppeld aan een of meer recepten. Het aanpassen van de eenheden of ingrediënten zal onverwachte resultaten opleveren bij het toevoegen of verwijderen van het recept uit deze lijst.", "linked-item-warning": "Dit element is gekoppeld aan een of meer recepten. Het aanpassen van de eenheden of ingrediënten zal onverwachte resultaten opleveren bij het toevoegen of verwijderen van het recept uit deze lijst.",
"toggle-food": "Voedsel schakelen", "toggle-food": "Voedsel schakelen",
"manage-labels": "Labels beheren", "manage-labels": "Labels beheren",
@@ -746,10 +747,10 @@
"delete-checked": "Selectie verwijderen", "delete-checked": "Selectie verwijderen",
"toggle-label-sort": "Label sortering in-/uitschakelen", "toggle-label-sort": "Label sortering in-/uitschakelen",
"reorder-labels": "Labels opnieuw indelen", "reorder-labels": "Labels opnieuw indelen",
"uncheck-all-items": "Deselecteer alle Items", "uncheck-all-items": "Deselecteer alle items",
"check-all-items": "Alle producten controleren", "check-all-items": "Selecteer alle items",
"linked-recipes-count": "Geen Gelinkte Recepten Eén Gekoppeld Recept{count} Gekoppelde Recepten", "linked-recipes-count": "Geen Gelinkte Recepten Eén Gekoppeld Recept{count} Gekoppelde Recepten",
"items-checked-count": "Geen items aangevinkt, Eén item gecontroleerd{count} items gecontroleerd", "items-checked-count": "Geen items geselecteerd|Eén item geselecteerd|{count} items geselecteerd",
"no-label": "Geen label", "no-label": "Geen label",
"completed-on": "Afgemaakt op {date}" "completed-on": "Afgemaakt op {date}"
}, },
@@ -1185,6 +1186,8 @@
"require-all-tags": "Vereis alle tags", "require-all-tags": "Vereis alle tags",
"require-all-tools": "Vereis al het kookgerei", "require-all-tools": "Vereis al het kookgerei",
"cookbook-name": "Naam van het kookboek", "cookbook-name": "Naam van het kookboek",
"cookbook-with-name": "Kookboek {0}" "cookbook-with-name": "Kookboek {0}",
"create-a-cookbook": "Maak een kookboek",
"cookbook": "Kookboek"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Last opp fil", "upload-file": "Last opp fil",
"created-on-date": "Opprettet: {0}", "created-on-date": "Opprettet: {0}",
"unsaved-changes": "Du har ulagrede endringer. Ønsker du å lagre før du forlater? Trykk 'OK' for å lagre, 'Avbryt' for å forkaste endringene.", "unsaved-changes": "Du har ulagrede endringer. Ønsker du å lagre før du forlater? Trykk 'OK' for å lagre, 'Avbryt' for å forkaste endringene.",
"clipboard-copy-failure": "Kunne ikke kopiere til utklippstavlen." "clipboard-copy-failure": "Kunne ikke kopiere til utklippstavlen.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Krev alle emneord", "require-all-tags": "Krev alle emneord",
"require-all-tools": "Krev alle kjøkkenredskaper", "require-all-tools": "Krev alle kjøkkenredskaper",
"cookbook-name": "Navn på kokebok", "cookbook-name": "Navn på kokebok",
"cookbook-with-name": "Kokebok {0}" "cookbook-with-name": "Kokebok {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -117,7 +117,7 @@
"loading": "Ładowanie", "loading": "Ładowanie",
"loading-events": "Ładowanie wydarzeń", "loading-events": "Ładowanie wydarzeń",
"loading-recipe": "Ładowanie przepisów...", "loading-recipe": "Ładowanie przepisów...",
"loading-ocr-data": "Loading OCR data...", "loading-ocr-data": "Wczytywanie danych OCR...",
"loading-recipes": "Ładowanie przepisów", "loading-recipes": "Ładowanie przepisów",
"message": "Wiadomość", "message": "Wiadomość",
"monday": "Poniedziałek", "monday": "Poniedziałek",
@@ -198,8 +198,9 @@
"refresh": "Odśwież", "refresh": "Odśwież",
"upload-file": "Prześlij plik", "upload-file": "Prześlij plik",
"created-on-date": "Utworzono dnia: {0}", "created-on-date": "Utworzono dnia: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "Masz niezapisane zmiany. Czy chcesz zapisać przed wyjściem? Ok, aby zapisać, Anuluj, żeby odrzucić zmiany.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"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/>?",
@@ -258,7 +259,7 @@
}, },
"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",
"update-this-meal-plan": "Update this Meal Plan", "update-this-meal-plan": "Zaktualizuj plan posiłku",
"dinner-this-week": "Obiad w tym tygodniu", "dinner-this-week": "Obiad w tym tygodniu",
"dinner-today": "Obiad dziś", "dinner-today": "Obiad dziś",
"dinner-tonight": "OBIAD DZIŚ", "dinner-tonight": "OBIAD DZIŚ",
@@ -473,7 +474,7 @@
"add-to-timeline": "Dodaj do osi czasu", "add-to-timeline": "Dodaj do osi czasu",
"recipe-added-to-list": "Przepis dodany do listy", "recipe-added-to-list": "Przepis dodany do listy",
"recipes-added-to-list": "Przepisy dodane do listy", "recipes-added-to-list": "Przepisy dodane do listy",
"successfully-added-to-list": "Successfully added to list", "successfully-added-to-list": "Pomyślnie dodano do listy",
"recipe-added-to-mealplan": "Przepis dodany do planu posiłków", "recipe-added-to-mealplan": "Przepis dodany do planu posiłków",
"failed-to-add-recipes-to-list": "Nie udało się dodać przepisu do listy", "failed-to-add-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",
@@ -806,7 +807,7 @@
"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 Narzędzia",
"tool": "Tool" "tool": "Narzędzie"
}, },
"user": { "user": {
"admin": "Administrator", "admin": "Administrator",
@@ -944,7 +945,7 @@
"fraction": "Ułamki", "fraction": "Ułamki",
"example-unit-singular": "np. Łyżka stołowa", "example-unit-singular": "np. Łyżka stołowa",
"example-unit-plural": "np. Łyżki stołowe", "example-unit-plural": "np. Łyżki stołowe",
"example-unit-abbreviation-singular": "ex: Tbsp", "example-unit-abbreviation-singular": "na przykład: Łyżka stołowa",
"example-unit-abbreviation-plural": "ex: Tbsps" "example-unit-abbreviation-plural": "ex: Tbsps"
}, },
"labels": { "labels": {
@@ -1185,6 +1186,8 @@
"require-all-tags": "Wymagaj wszystkich tagów", "require-all-tags": "Wymagaj wszystkich tagów",
"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}",
"create-a-cookbook": "Utwórz nową książkę kucharską",
"cookbook": "Książka kucharska"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Enviar arquivo", "upload-file": "Enviar arquivo",
"created-on-date": "Criado em {0}", "created-on-date": "Criado em {0}",
"unsaved-changes": "Você possui alterações não salvas. Deseja salvar antes de sair? Ok para salvar, Cancelar para descartar alterações.", "unsaved-changes": "Você possui alterações não salvas. Deseja salvar antes de sair? Ok para salvar, Cancelar para descartar alterações.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Exigir todos os marcadores", "require-all-tags": "Exigir todos os marcadores",
"require-all-tools": "Exigir todas as ferramentas", "require-all-tools": "Exigir todas as ferramentas",
"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}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Carregar ficheiro", "upload-file": "Carregar ficheiro",
"created-on-date": "Criado em: {0}", "created-on-date": "Criado em: {0}",
"unsaved-changes": "Tem alterações por gravar. Quer gravar antes de sair? OK para gravar, Cancelar para descartar alterações.", "unsaved-changes": "Tem alterações por gravar. Quer gravar antes de sair? OK para gravar, Cancelar para descartar alterações.",
"clipboard-copy-failure": "Erro ao copiar para a área de transferência." "clipboard-copy-failure": "Erro ao copiar para a área de transferência.",
"confirm-delete-generic-items": "Tem a certeza de que deseja eliminar os seguintes itens?"
}, },
"group": { "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>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Requer todas as etiquetas", "require-all-tags": "Requer todas as etiquetas",
"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}",
"create-a-cookbook": "Criar um Livro de Receitas",
"cookbook": "Livro de Receitas"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Încărcă fișier", "upload-file": "Încărcă fișier",
"created-on-date": "Creat pe {0}", "created-on-date": "Creat pe {0}",
"unsaved-changes": "Aveți modificări nesalvate. Doriți să salvați înainte de a închide aplicația? Apăsați \"OK\" pentru a salva sau \"Anulare\" pentru a renunța la modificări.", "unsaved-changes": "Aveți modificări nesalvate. Doriți să salvați înainte de a închide aplicația? Apăsați \"OK\" pentru a salva sau \"Anulare\" pentru a renunța la modificări.",
"clipboard-copy-failure": "Copierea în clipboard a eșuat." "clipboard-copy-failure": "Copierea în clipboard a eșuat.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Sunteți sigur că doriți să ștergeți <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Sunteți sigur că doriți să ștergeți <b>{groupName}<b/>?",
@@ -370,49 +371,49 @@
"google-ld-json-info": "Google ld+json Info", "google-ld-json-info": "Google ld+json Info",
"must-be-a-valid-url": "Trebuie să fie o adresă URL validă", "must-be-a-valid-url": "Trebuie să fie o adresă URL validă",
"paste-in-your-recipe-data-each-line-will-be-treated-as-an-item-in-a-list": "Paste in your recipe data. Each line will be treated as an item in a list", "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": "Specificație Markup rețetă",
"recipe-url": "Recipe URL", "recipe-url": "URL rețetă",
"upload-a-recipe": "Upload a Recipe", "upload-a-recipe": "Încarcă o rețetă",
"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": "Copiază și lipește un link de pe site-ul tău web preferat de rețete",
"view-scraped-data": "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 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": "Importă rețetă prin URL",
"create-manually": "Create a recipe manually", "create-manually": "Creează o rețetă manual",
"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 Pagina nu a fost găsită",
"all-recipes": "All Recipes", "all-recipes": "Toate rețetele",
"new-page-created": "New page created", "new-page-created": "Pagină nouă creată",
"page": "Page", "page": "Pagină",
"page-creation-failed": "Page creation failed", "page-creation-failed": "Crearea paginii a eșuat",
"page-deleted": "Page deleted", "page-deleted": "Pagină ștearsă",
"page-deletion-failed": "Page deletion failed", "page-deletion-failed": "Ștergerea paginii a eșuat",
"page-update-failed": "Page update failed", "page-update-failed": "Actualizarea paginii a eșuat",
"page-updated": "Page updated", "page-updated": "Pagina a fost actualizată",
"pages-update-failed": "Pages update failed", "pages-update-failed": "Actualizarea paginilor a eșuat",
"pages-updated": "Pages updated", "pages-updated": "Pagini actualizate",
"404-not-found": "404 Not Found", "404-not-found": "404 Pagina nu a fost gasita",
"an-error-occurred": "An error occurred" "an-error-occurred": "A intervenit o eroare"
}, },
"recipe": { "recipe": {
"add-key": "Add Key", "add-key": "Adăugați cheia",
"add-to-favorites": "Add to Favorites", "add-to-favorites": "Adaugă la Favorite",
"api-extras": "API Extras", "api-extras": "API Extras",
"calories": "Calories", "calories": "Calorii",
"calories-suffix": "calories", "calories-suffix": "calorii",
"carbohydrate-content": "Carbohydrate", "carbohydrate-content": "Carbohidrat",
"categories": "Categories", "categories": "Categorii",
"comment-action": "Comment", "comment-action": "Comentariu",
"comment": "Comment", "comment": "Comentariu",
"comments": "Comentarii", "comments": "Comentarii",
"delete-confirmation": "Sunteți sigur că doriți să ștergeți această rețetă?", "delete-confirmation": "Sunteți sigur că doriți să ștergeți această rețetă?",
"delete-recipe": "Șterge rețeta", "delete-recipe": "Șterge rețeta",
"description": "Descriere", "description": "Descriere",
"disable-amount": "Disable Ingredient Amounts", "disable-amount": "Dezactivați cantitățile Ingredientelor",
"disable-comments": "Dezactivează comentariile", "disable-comments": "Dezactivează comentariile",
"duplicate": "Reţeta duplicată", "duplicate": "Reţeta duplicată",
"duplicate-name": "Denumirea noii rețete", "duplicate-name": "Denumirea noii rețete",
@@ -422,7 +423,7 @@
"grams": "grame", "grams": "grame",
"ingredient": "Ingredient", "ingredient": "Ingredient",
"ingredients": "Ingrediente", "ingredients": "Ingrediente",
"insert-ingredient": "Insert Ingredient", "insert-ingredient": "Inserați Ingredientul",
"insert-section": "Adăugare secțiune", "insert-section": "Adăugare secțiune",
"instructions": "Instrucțiuni", "instructions": "Instrucțiuni",
"key-name-required": "Numele cheii este necesar", "key-name-required": "Numele cheii este necesar",
@@ -473,16 +474,16 @@
"add-to-timeline": "Adaugă la Cronologie", "add-to-timeline": "Adaugă la Cronologie",
"recipe-added-to-list": "Rețeta a fost adăugată la listă", "recipe-added-to-list": "Rețeta a fost adăugată la listă",
"recipes-added-to-list": "Rețeta a fost adăugată în listă", "recipes-added-to-list": "Rețeta a fost adăugată în listă",
"successfully-added-to-list": "Successfully added to list", "successfully-added-to-list": "Adăugat cu succes la listă",
"recipe-added-to-mealplan": "Rețeta a fist adăugată la planul de mese", "recipe-added-to-mealplan": "Rețeta a fist adăugată la planul de mese",
"failed-to-add-recipes-to-list": "Adăugarea rețetei în listă a eșuat", "failed-to-add-recipes-to-list": "Adăugarea rețetei în listă a eșuat",
"failed-to-add-recipe-to-mealplan": "Adăugarea rețetei la planul de mese a eșuat", "failed-to-add-recipe-to-mealplan": "Adăugarea rețetei la planul de mese a eșuat",
"failed-to-add-to-list": "Failed to add to list", "failed-to-add-to-list": "Adăugarea la listă a eșuat",
"yield": "Producție", "yield": "Producție",
"quantity": "Cantitate", "quantity": "Cantitate",
"choose-unit": "Alegeţi unitatea", "choose-unit": "Alegeţi unitatea",
"press-enter-to-create": "Press Enter to Create", "press-enter-to-create": "Apăsați Enter pentru a crea",
"choose-food": "Choose Food", "choose-food": "Alege Mâncarea",
"notes": "Notițe", "notes": "Notițe",
"toggle-section": "Activează/dezactivează secțiunea", "toggle-section": "Activează/dezactivează secțiunea",
"see-original-text": "Vezi Textul Original", "see-original-text": "Vezi Textul Original",
@@ -521,13 +522,13 @@
"drop-image": "Trage imaginea", "drop-image": "Trage imaginea",
"enable-ingredient-amounts-to-use-this-feature": "Enable ingredient amounts to use this feature", "enable-ingredient-amounts-to-use-this-feature": "Enable ingredient amounts to use this feature",
"recipes-with-units-or-foods-defined-cannot-be-parsed": "Recipes with units or foods defined cannot be parsed.", "recipes-with-units-or-foods-defined-cannot-be-parsed": "Recipes with units or foods defined cannot be parsed.",
"parse-ingredients": "Parse ingredients", "parse-ingredients": "Analizează ingredientele",
"edit-markdown": "Edit Markdown", "edit-markdown": "Editează Markdown",
"recipe-creation": "Recipe Creation", "recipe-creation": "Crearea rețetei",
"select-one-of-the-various-ways-to-create-a-recipe": "Select one of the various ways to create a recipe", "select-one-of-the-various-ways-to-create-a-recipe": "Selectează una dintre diferitele modalități de a crea o rețetă",
"looking-for-migrations": "Looking For Migrations?", "looking-for-migrations": "Looking For Migrations?",
"import-with-url": "Import with URL", "import-with-url": "Import cu URL",
"create-recipe": "Create Recipe", "create-recipe": "Crează rețetă",
"import-with-zip": "Import with .zip", "import-with-zip": "Import with .zip",
"create-recipe-from-an-image": "Create recipe from an image", "create-recipe-from-an-image": "Create recipe from an image",
"bulk-url-import": "Bulk URL Import", "bulk-url-import": "Bulk URL Import",
@@ -608,13 +609,13 @@
"restore-backup": "Restore Backup" "restore-backup": "Restore Backup"
}, },
"backup-and-exports": "Backups", "backup-and-exports": "Backups",
"change-password": "Change Password", "change-password": "Schimbă parola",
"current": "Version:", "current": "Versiune:",
"custom-pages": "Custom Pages", "custom-pages": "Pagini personalizate",
"edit-page": "Edit Page", "edit-page": "Editare pagină",
"events": "Events", "events": "Evenimente",
"first-day-of-week": "First day of the week", "first-day-of-week": "Prima zi a săptămânii",
"group-settings-updated": "Group Settings Updated", "group-settings-updated": "Setări de grup actualizate",
"homepage": { "homepage": {
"all-categories": "All Categories", "all-categories": "All Categories",
"card-per-section": "Card Per Section", "card-per-section": "Card Per Section",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Require All Tags", "require-all-tags": "Require All Tags",
"require-all-tools": "Require All Tools", "require-all-tools": "Require All Tools",
"cookbook-name": "Cookbook Name", "cookbook-name": "Cookbook Name",
"cookbook-with-name": "Cookbook {0}" "cookbook-with-name": "Cookbook {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Загрузить файл", "upload-file": "Загрузить файл",
"created-on-date": "Создано: {0}", "created-on-date": "Создано: {0}",
"unsaved-changes": "У вас есть несохраненные изменения. Вы хотите сохранить их перед выходом?", "unsaved-changes": "У вас есть несохраненные изменения. Вы хотите сохранить их перед выходом?",
"clipboard-copy-failure": "Не удалось скопировать текст." "clipboard-copy-failure": "Не удалось скопировать текст.",
"confirm-delete-generic-items": "Вы уверены, что хотите удалить следующие элементы?"
}, },
"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/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Требовать все теги", "require-all-tags": "Требовать все теги",
"require-all-tools": "Требовать все инструменты", "require-all-tools": "Требовать все инструменты",
"cookbook-name": "Название книги рецептов", "cookbook-name": "Название книги рецептов",
"cookbook-with-name": "Книга рецептов {0}" "cookbook-with-name": "Книга рецептов {0}",
"create-a-cookbook": "Создать книгу рецептов",
"cookbook": "Книга рецептов"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Nahrať súbor", "upload-file": "Nahrať súbor",
"created-on-date": "Vytvorené: {0}", "created-on-date": "Vytvorené: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Naozaj chcete odstrániť <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Naozaj chcete odstrániť <b>{groupName}<b/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Vyžadovať všetky štítky", "require-all-tags": "Vyžadovať všetky štítky",
"require-all-tools": "Vyžadovať všetky nástroje", "require-all-tools": "Vyžadovať všetky nástroje",
"cookbook-name": "Názov kuchárky", "cookbook-name": "Názov kuchárky",
"cookbook-with-name": "Kuchárka {0}" "cookbook-with-name": "Kuchárka {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Naloži datoteko", "upload-file": "Naloži datoteko",
"created-on-date": "Created on: {0}", "created-on-date": "Created on: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Ste prepričani, da želite izbrisati <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Ste prepričani, da želite izbrisati <b>{groupName}<b/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Require All Tags", "require-all-tags": "Require All Tags",
"require-all-tools": "Require All Tools", "require-all-tools": "Require All Tools",
"cookbook-name": "Cookbook Name", "cookbook-name": "Cookbook Name",
"cookbook-with-name": "Cookbook {0}" "cookbook-with-name": "Cookbook {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"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": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Захтевај све ознаке", "require-all-tags": "Захтевај све ознаке",
"require-all-tools": "Захтева сав прибор", "require-all-tools": "Захтева сав прибор",
"cookbook-name": "Cookbook Name", "cookbook-name": "Cookbook Name",
"cookbook-with-name": "Кувар {0}" "cookbook-with-name": "Кувар {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Ladda upp fil", "upload-file": "Ladda upp fil",
"created-on-date": "Skapad {0}", "created-on-date": "Skapad {0}",
"unsaved-changes": "Du har osparade ändringar. Vill du spara innan du lämnar? Tryck Okej att spara, Avbryt för att ignorera ändringar.", "unsaved-changes": "Du har osparade ändringar. Vill du spara innan du lämnar? Tryck Okej att spara, Avbryt för att ignorera ändringar.",
"clipboard-copy-failure": "Det gick inte att kopiera till urklipp." "clipboard-copy-failure": "Det gick inte att kopiera till urklipp.",
"confirm-delete-generic-items": "Är du säker på att du vill radera följande objekt?"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "Är du säker på att du vill radera <b>{groupName}<b/>?", "are-you-sure-you-want-to-delete-the-group": "Är du säker på att du vill radera <b>{groupName}<b/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Kräv alla taggar", "require-all-tags": "Kräv alla taggar",
"require-all-tools": "Kräv alla verktyg", "require-all-tools": "Kräv alla verktyg",
"cookbook-name": "Namn på kokbok", "cookbook-name": "Namn på kokbok",
"cookbook-with-name": "Kokbok {0}" "cookbook-with-name": "Kokbok {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Dosya Yükle", "upload-file": "Dosya Yükle",
"created-on-date": "{0} tarihinde oluşturuldu", "created-on-date": "{0} tarihinde oluşturuldu",
"unsaved-changes": "Kaydedilmemiş değişiklikleriniz mevcut. Ayrılmadan önce kaydetmek ister misiniz? Kaydetmek için Tamam'ı, değişiklikleri iptal etmek için İptal'i seçin.", "unsaved-changes": "Kaydedilmemiş değişiklikleriniz mevcut. Ayrılmadan önce kaydetmek ister misiniz? Kaydetmek için Tamam'ı, değişiklikleri iptal etmek için İptal'i seçin.",
"clipboard-copy-failure": "Panoya kopyalanamadı." "clipboard-copy-failure": "Panoya kopyalanamadı.",
"confirm-delete-generic-items": "Aşağıdaki öğeleri silmek istediğinizden emin misiniz?"
}, },
"group": { "group": {
"are-you-sure-you-want-to-delete-the-group": "<b>{groupName}<b/>'i silmek istediğine emin misin?", "are-you-sure-you-want-to-delete-the-group": "<b>{groupName}<b/>'i silmek istediğine emin misin?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Require All Tags", "require-all-tags": "Require All Tags",
"require-all-tools": "Require All Tools", "require-all-tools": "Require All Tools",
"cookbook-name": "Cookbook Name", "cookbook-name": "Cookbook Name",
"cookbook-with-name": "Cookbook {0}" "cookbook-with-name": "Cookbook {0}",
"create-a-cookbook": "Yemek Kitabı Oluştur",
"cookbook": "Yemek kitabı"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Вивантажити файл", "upload-file": "Вивантажити файл",
"created-on-date": "Створено: {0}", "created-on-date": "Створено: {0}",
"unsaved-changes": "У вас є незбережені зміни. Ви хочете зберегти їх перед виходом? Гаразд, щоб зберегти, Скасувати, щоб скасувати.", "unsaved-changes": "У вас є незбережені зміни. Ви хочете зберегти їх перед виходом? Гаразд, щоб зберегти, Скасувати, щоб скасувати.",
"clipboard-copy-failure": "Не вдалося скопіювати до буфера обміну." "clipboard-copy-failure": "Не вдалося скопіювати до буфера обміну.",
"confirm-delete-generic-items": "Ви впевнені, що хочете видалити вибрані елементи?"
}, },
"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/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Вимагати всі мітки", "require-all-tags": "Вимагати всі мітки",
"require-all-tools": "Вимагати всі інструменти", "require-all-tools": "Вимагати всі інструменти",
"cookbook-name": "Назва кулінарної книги", "cookbook-name": "Назва кулінарної книги",
"cookbook-with-name": "Кулінарна книга {0}" "cookbook-with-name": "Кулінарна книга {0}",
"create-a-cookbook": "Створити кулінарну книгу",
"cookbook": "Кулінарна книга"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "Upload File", "upload-file": "Upload File",
"created-on-date": "Created on: {0}", "created-on-date": "Created on: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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": "Are you sure you want to delete <b>{groupName}<b/>?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Require All Tags", "require-all-tags": "Require All Tags",
"require-all-tools": "Require All Tools", "require-all-tools": "Require All Tools",
"cookbook-name": "Cookbook Name", "cookbook-name": "Cookbook Name",
"cookbook-with-name": "Cookbook {0}" "cookbook-with-name": "Cookbook {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "上传文件", "upload-file": "上传文件",
"created-on-date": "创建于: {0}", "created-on-date": "创建于: {0}",
"unsaved-changes": "你有未保存的更改。你希望现在离开前保存吗?保存选择“是”,不保存选择“取消”。", "unsaved-changes": "你有未保存的更改。你希望现在离开前保存吗?保存选择“是”,不保存选择“取消”。",
"clipboard-copy-failure": "未能复制到剪切板。" "clipboard-copy-failure": "未能复制到剪切板。",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"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/>吗?",
@@ -1185,6 +1186,8 @@
"require-all-tags": "包含全部标签", "require-all-tags": "包含全部标签",
"require-all-tools": "包含全部工具", "require-all-tools": "包含全部工具",
"cookbook-name": "食谱名称", "cookbook-name": "食谱名称",
"cookbook-with-name": "{0}合集" "cookbook-with-name": "{0}合集",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -199,7 +199,8 @@
"upload-file": "上傳文件", "upload-file": "上傳文件",
"created-on-date": "Created on: {0}", "created-on-date": "Created on: {0}",
"unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.", "unsaved-changes": "You have unsaved changes. Do you want to save before leaving? Okay to save, Cancel to discard changes.",
"clipboard-copy-failure": "Failed to copy to the clipboard." "clipboard-copy-failure": "Failed to copy to the clipboard.",
"confirm-delete-generic-items": "Are you sure you want to delete the following items?"
}, },
"group": { "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/>",
@@ -1185,6 +1186,8 @@
"require-all-tags": "Require All Tags", "require-all-tags": "Require All Tags",
"require-all-tools": "Require All Tools", "require-all-tools": "Require All Tools",
"cookbook-name": "食譜名", "cookbook-name": "食譜名",
"cookbook-with-name": "食譜 {0}" "cookbook-with-name": "食譜 {0}",
"create-a-cookbook": "Create a Cookbook",
"cookbook": "Cookbook"
} }
} }

View File

@@ -33,6 +33,7 @@ export interface AppInfo {
version: string; version: string;
demoStatus: boolean; demoStatus: boolean;
allowSignup: boolean; allowSignup: boolean;
defaultGroupSlug?: string;
} }
export interface AppStartupInfo { export interface AppStartupInfo {
isFirstLogin: boolean; isFirstLogin: boolean;

View File

@@ -1,73 +1,81 @@
<template> <template>
<v-container class="narrow-container"> <div>
<BasePageTitle divider> <!-- Create Dialog -->
<template #header> <BaseDialog
<v-img max-height="100" max-width="100" :src="require('~/static/svgs/manage-cookbooks.svg')"></v-img> v-if="createTarget"
</template> v-model="dialogStates.create"
<template #title> {{ $t('cookbook.cookbooks') }} </template> :width="650"
{{ $t('cookbook.description') }} :icon="$globals.icons.pages"
</BasePageTitle> :title="$t('cookbook.create-a-cookbook')"
:submit-icon="$globals.icons.save"
:submit-text="$tc('general.save')"
@submit="actions.updateOne(createTarget)"
@cancel="actions.deleteOne(createTarget.id)"
>
<v-card-text>
<CookbookEditor
:cookbook=createTarget
:actions="actions"
/>
</v-card-text>
</BaseDialog>
<BaseButton create @click="actions.createOne()" /> <!-- Delete Dialog -->
<v-expansion-panels class="mt-2"> <BaseDialog
<draggable v-model="cookbooks" handle=".handle" style="width: 100%" @change="actions.updateOrder()"> v-model="dialogStates.delete"
<v-expansion-panel v-for="(cookbook, index) in cookbooks" :key="index" class="my-2 left-border rounded"> :title="$t('general.delete-with-name', { name: $t('cookbook.cookbook') })"
<v-expansion-panel-header disable-icon-rotate class="headline"> :icon="$globals.icons.alertCircle"
<div class="d-flex align-center"> color="error"
<v-icon large left> @confirm="deleteCookbook()"
{{ $globals.icons.pages }} >
</v-icon> <v-card-text>
{{ cookbook.name }} <p>{{ $t("general.confirm-delete-generic-with-name", { name: $t('cookbook.cookbook') }) }}</p>
</div> <p v-if="deleteTarget" class="mt-4 ml-4">{{ deleteTarget.name }}</p>
<template #actions> </v-card-text>
<v-icon class="handle"> </BaseDialog>
{{ $globals.icons.arrowUpDown }}
</v-icon> <!-- Cookbook Page -->
<v-btn icon small class="ml-2"> <!-- Page Title -->
<v-icon> <v-container class="narrow-container">
{{ $globals.icons.edit }} <BasePageTitle divider>
<template #header>
<v-img max-height="100" max-width="100" :src="require('~/static/svgs/manage-cookbooks.svg')"></v-img>
</template>
<template #title> {{ $t('cookbook.cookbooks') }} </template>
{{ $t('cookbook.description') }}
</BasePageTitle>
<!-- Create New -->
<BaseButton create @click="createCookbook" />
<!-- Cookbook List -->
<v-expansion-panels class="mt-2">
<draggable v-model="cookbooks" handle=".handle" style="width: 100%" @change="actions.updateOrder()">
<v-expansion-panel v-for="(cookbook, index) in cookbooks" :key="index" class="my-2 left-border rounded">
<v-expansion-panel-header disable-icon-rotate class="headline">
<div class="d-flex align-center">
<v-icon large left>
{{ $globals.icons.pages }}
</v-icon> </v-icon>
</v-btn> {{ cookbook.name }}
</template>
</v-expansion-panel-header>
<v-expansion-panel-content>
<v-card-text v-if="cookbooks">
<v-text-field v-model="cookbooks[index].name" :label="$t('cookbook.cookbook-name')"></v-text-field>
<v-textarea v-model="cookbooks[index].description" auto-grow :rows="2" :label="$t('recipe.description')"></v-textarea>
<RecipeOrganizerSelector v-model="cookbooks[index].categories" selector-type="categories" />
<RecipeOrganizerSelector v-model="cookbooks[index].tags" selector-type="tags" />
<RecipeOrganizerSelector v-model="cookbooks[index].tools" selector-type="tools" />
<v-switch v-model="cookbooks[index].public" hide-details single-line>
<template #label>
{{ $t('cookbook.public-cookbook') }}
<HelpIcon small right class="ml-2">
{{ $t('cookbook.public-cookbook-description') }}
</HelpIcon>
</template>
</v-switch>
<div class="mt-4">
<h3 class="text-subtitle-1 d-flex align-center mb-0 pb-0">
{{ $t('cookbook.filter-options') }}
<HelpIcon right small class="ml-2">
{{ $t('cookbook.filter-options-description') }}
</HelpIcon>
</h3>
<v-switch v-model="cookbooks[index].requireAllCategories" class="mt-0" hide-details single-line>
<template #label> {{ $t('cookbook.require-all-categories') }} </template>
</v-switch>
<v-switch v-model="cookbooks[index].requireAllTags" hide-details single-line>
<template #label> {{ $t('cookbook.require-all-tags') }} </template>
</v-switch>
<v-switch v-model="cookbooks[index].requireAllTools" hide-details single-line>
<template #label> {{ $t('cookbook.require-all-tools') }} </template>
</v-switch>
</div> </div>
</v-card-text> <template #actions>
<v-card-actions> <v-icon class="handle">
<v-spacer></v-spacer> {{ $globals.icons.arrowUpDown }}
<BaseButtonGroup </v-icon>
:buttons="[ <v-btn icon small class="ml-2">
{ <v-icon>
{{ $globals.icons.edit }}
</v-icon>
</v-btn>
</template>
</v-expansion-panel-header>
<v-expansion-panel-content>
<CookbookEditor :cookbook="cookbook" :actions="actions" :collapsable="false" @delete="deleteEventHandler" />
<v-card-actions>
<v-spacer></v-spacer>
<BaseButtonGroup
:buttons="[{
icon: $globals.icons.delete, icon: $globals.icons.delete,
text: $tc('general.delete'), text: $tc('general.delete'),
event: 'delete', event: 'delete',
@@ -78,26 +86,27 @@
event: 'save', event: 'save',
}, },
]" ]"
@delete="actions.deleteOne(cookbook.id)" @delete="deleteEventHandler(cookbook)"
@save="actions.updateOne(cookbook)" @save="actions.updateOne(cookbook)" />
/> </v-card-actions>
</v-card-actions> </v-expansion-panel-content>
</v-expansion-panel-content> </v-expansion-panel>
</v-expansion-panel> </draggable>
</draggable> </v-expansion-panels>
</v-expansion-panels> </v-container>
</v-container> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent, useRouter } from "@nuxtjs/composition-api"; import { defineComponent, reactive, ref, useRouter } from "@nuxtjs/composition-api";
import draggable from "vuedraggable"; import draggable from "vuedraggable";
import { useCookbooks } from "@/composables/use-group-cookbooks"; import { useCookbooks } from "@/composables/use-group-cookbooks";
import { useLoggedInState } from "~/composables/use-logged-in-state"; import { useLoggedInState } from "~/composables/use-logged-in-state";
import RecipeOrganizerSelector from "~/components/Domain/Recipe/RecipeOrganizerSelector.vue"; import CookbookEditor from "~/components/Domain/Cookbook/CookbookEditor.vue";
import { ReadCookBook } from "~/lib/api/types/cookbook";
export default defineComponent({ export default defineComponent({
components: { draggable, RecipeOrganizerSelector }, components: { CookbookEditor, draggable },
setup() { setup() {
const { isOwnGroup, loggedIn } = useLoggedInState(); const { isOwnGroup, loggedIn } = useLoggedInState();
const router = useRouter(); const router = useRouter();
@@ -106,11 +115,50 @@ export default defineComponent({
router.back(); router.back();
} }
const dialogStates = reactive({
create: false,
delete: false,
});
const { cookbooks, actions } = useCookbooks(); const { cookbooks, actions } = useCookbooks();
// create
const createTarget = ref<ReadCookBook | null>(null);
async function createCookbook() {
await actions.createOne().then((cookbook) => {
createTarget.value = cookbook as ReadCookBook;
});
dialogStates.create = true;
}
// delete
const deleteTarget = ref<ReadCookBook | null>(null);
function deleteEventHandler(item: ReadCookBook){
deleteTarget.value = item;
dialogStates.delete = true;
}
function deleteCookbook() {
if (!deleteTarget.value) {
return;
}
actions.deleteOne(deleteTarget.value.id);
dialogStates.delete = false;
deleteTarget.value = null;
}
return { return {
cookbooks, cookbooks,
actions, actions,
dialogStates,
// create
createTarget,
createCookbook,
// delete
deleteTarget,
deleteEventHandler,
deleteCookbook,
}; };
}, },
head() { head() {

View File

@@ -49,15 +49,41 @@
</v-card-text> </v-card-text>
</BaseDialog> </BaseDialog>
<!-- Bulk Delete Dialog -->
<BaseDialog
v-model="state.bulkDeleteDialog"
width="650px"
:title="$tc('general.confirm')"
:icon="$globals.icons.alertCircle"
color="error"
@confirm="deleteSelected"
>
<v-card-text>
<p class="h4">{{ $t('general.confirm-delete-generic-items') }}</p>
<v-card outlined>
<v-virtual-scroll height="400" item-height="25" :items="bulkDeleteTarget">
<template #default="{ item }">
<v-list-item class="pb-2">
<v-list-item-content>
<v-list-item-title>{{ item.name }}</v-list-item-title>
</v-list-item-content>
</v-list-item>
</template>
</v-virtual-scroll>
</v-card>
</v-card-text>
</BaseDialog>
<!-- Data Table --> <!-- Data Table -->
<BaseCardSectionTitle :icon="$globals.icons.categories" section :title="$tc('data-pages.categories.category-data')"> </BaseCardSectionTitle> <BaseCardSectionTitle :icon="$globals.icons.categories" section :title="$tc('data-pages.categories.category-data')"> </BaseCardSectionTitle>
<CrudTable <CrudTable
:table-config="tableConfig" :table-config="tableConfig"
:headers.sync="tableHeaders" :headers.sync="tableHeaders"
:data="categories || []" :data="categories || []"
:bulk-actions="[]" :bulk-actions="[{icon: $globals.icons.delete, text: $tc('general.delete'), event: 'delete-selected'}]"
@delete-one="deleteEventHandler" @delete-one="deleteEventHandler"
@edit-one="editEventHandler" @edit-one="editEventHandler"
@delete-selected="bulkDeleteEventHandler"
> >
<template #button-row> <template #button-row>
<BaseButton create @click="state.createDialog = true">{{ $t("general.create") }}</BaseButton> <BaseButton create @click="state.createDialog = true">{{ $t("general.create") }}</BaseButton>
@@ -96,6 +122,7 @@ export default defineComponent({
createDialog: false, createDialog: false,
editDialog: false, editDialog: false,
deleteDialog: false, deleteDialog: false,
bulkDeleteDialog: false,
}); });
const categoryData = useCategoryData(); const categoryData = useCategoryData();
const categoryStore = useCategoryStore(); const categoryStore = useCategoryStore();
@@ -149,6 +176,24 @@ export default defineComponent({
state.deleteDialog = false; state.deleteDialog = false;
} }
// ============================================================
// Bulk Delete Category
const bulkDeleteTarget = ref<RecipeCategory[]>([]);
function bulkDeleteEventHandler(selection: RecipeCategory[]) {
bulkDeleteTarget.value = selection;
state.bulkDeleteDialog = true;
}
async function deleteSelected() {
for (const item of bulkDeleteTarget.value) {
if (!item.id) {
continue;
}
await categoryStore.actions.deleteOne(item.id);
}
bulkDeleteTarget.value = [];
}
return { return {
state, state,
tableConfig, tableConfig,
@@ -168,7 +213,12 @@ export default defineComponent({
// delete // delete
deleteTarget, deleteTarget,
deleteEventHandler, deleteEventHandler,
deleteCategory deleteCategory,
// bulk delete
bulkDeleteTarget,
bulkDeleteEventHandler,
deleteSelected,
}; };
}, },
}); });

View File

@@ -155,16 +155,42 @@
</v-card-text> </v-card-text>
</BaseDialog> </BaseDialog>
<!-- Bulk Delete Dialog -->
<BaseDialog
v-model="bulkDeleteDialog"
width="650px"
:title="$tc('general.confirm')"
:icon="$globals.icons.alertCircle"
color="error"
@confirm="deleteSelected"
>
<v-card-text>
<p class="h4">{{ $t('general.confirm-delete-generic-items') }}</p>
<v-card outlined>
<v-virtual-scroll height="400" item-height="25" :items="bulkDeleteTarget">
<template #default="{ item }">
<v-list-item class="pb-2">
<v-list-item-content>
<v-list-item-title>{{ item.name }}</v-list-item-title>
</v-list-item-content>
</v-list-item>
</template>
</v-virtual-scroll>
</v-card>
</v-card-text>
</BaseDialog>
<!-- Data Table --> <!-- Data Table -->
<BaseCardSectionTitle :icon="$globals.icons.foods" section :title="$tc('data-pages.foods.food-data')"> </BaseCardSectionTitle> <BaseCardSectionTitle :icon="$globals.icons.foods" section :title="$tc('data-pages.foods.food-data')"> </BaseCardSectionTitle>
<CrudTable <CrudTable
:table-config="tableConfig" :table-config="tableConfig"
:headers.sync="tableHeaders" :headers.sync="tableHeaders"
:data="foods || []" :data="foods || []"
:bulk-actions="[]" :bulk-actions="[{icon: $globals.icons.delete, text: $tc('general.delete'), event: 'delete-selected'}]"
@delete-one="deleteEventHandler" @delete-one="deleteEventHandler"
@edit-one="editEventHandler" @edit-one="editEventHandler"
@create-one="createEventHandler" @create-one="createEventHandler"
@delete-selected="bulkDeleteEventHandler"
> >
<template #button-row> <template #button-row>
<BaseButton create @click="createDialog = true" /> <BaseButton create @click="createDialog = true" />
@@ -306,6 +332,21 @@ export default defineComponent({
deleteDialog.value = false; deleteDialog.value = false;
} }
const bulkDeleteDialog = ref(false);
const bulkDeleteTarget = ref<IngredientFood[]>([]);
function bulkDeleteEventHandler(selection: IngredientFood[]) {
bulkDeleteTarget.value = selection;
bulkDeleteDialog.value = true;
}
async function deleteSelected() {
for (const item of bulkDeleteTarget.value) {
await foodStore.actions.deleteOne(item.id);
}
bulkDeleteTarget.value = [];
}
// ============================================================ // ============================================================
// Alias Manager // Alias Manager
@@ -396,6 +437,10 @@ export default defineComponent({
deleteDialog, deleteDialog,
deleteFood, deleteFood,
deleteTarget, deleteTarget,
bulkDeleteDialog,
bulkDeleteTarget,
bulkDeleteEventHandler,
deleteSelected,
// Alias Manager // Alias Manager
aliasManagerDialog, aliasManagerDialog,
aliasManagerEventHandler, aliasManagerEventHandler,

View File

@@ -45,6 +45,31 @@
</v-card-text> </v-card-text>
</BaseDialog> </BaseDialog>
<!-- Bulk Delete Dialog -->
<BaseDialog
v-model="state.bulkDeleteDialog"
width="650px"
:title="$tc('general.confirm')"
:icon="$globals.icons.alertCircle"
color="error"
@confirm="deleteSelected"
>
<v-card-text>
<p class="h4">{{ $t('general.confirm-delete-generic-items') }}</p>
<v-card outlined>
<v-virtual-scroll height="400" item-height="25" :items="bulkDeleteTarget">
<template #default="{ item }">
<v-list-item class="pb-2">
<v-list-item-content>
<v-list-item-title>{{ item.name }}</v-list-item-title>
</v-list-item-content>
</v-list-item>
</template>
</v-virtual-scroll>
</v-card>
</v-card-text>
</BaseDialog>
<!-- Seed Dialog--> <!-- Seed Dialog-->
<BaseDialog <BaseDialog
v-model="seedDialog" v-model="seedDialog"
@@ -88,9 +113,10 @@
:table-config="tableConfig" :table-config="tableConfig"
:headers.sync="tableHeaders" :headers.sync="tableHeaders"
:data="labels || []" :data="labels || []"
:bulk-actions="[]" :bulk-actions="[{icon: $globals.icons.delete, text: $tc('general.delete'), event: 'delete-selected'}]"
@delete-one="deleteEventHandler" @delete-one="deleteEventHandler"
@edit-one="editEventHandler" @edit-one="editEventHandler"
@delete-selected="bulkDeleteEventHandler"
> >
<template #button-row> <template #button-row>
<BaseButton create @click="state.createDialog = true">{{ $t("general.create") }}</BaseButton> <BaseButton create @click="state.createDialog = true">{{ $t("general.create") }}</BaseButton>
@@ -146,6 +172,7 @@ export default defineComponent({
createDialog: false, createDialog: false,
editDialog: false, editDialog: false,
deleteDialog: false, deleteDialog: false,
bulkDeleteDialog: false,
}); });
// ============================================================ // ============================================================
@@ -179,6 +206,21 @@ export default defineComponent({
state.deleteDialog = false; state.deleteDialog = false;
} }
// Bulk Delete
const bulkDeleteTarget = ref<MultiPurposeLabelSummary[]>([]);
function bulkDeleteEventHandler(selection: MultiPurposeLabelSummary[]) {
bulkDeleteTarget.value = selection;
state.bulkDeleteDialog = true;
}
async function deleteSelected() {
for (const item of bulkDeleteTarget.value) {
await labelStore.actions.deleteOne(item.id);
}
bulkDeleteTarget.value = [];
}
// Edit // Edit
const editLabel = ref<MultiPurposeLabelSummary | null>(null); const editLabel = ref<MultiPurposeLabelSummary | null>(null);
@@ -244,6 +286,9 @@ export default defineComponent({
deleteEventHandler, deleteEventHandler,
deleteLabel, deleteLabel,
deleteTarget, deleteTarget,
bulkDeleteEventHandler,
deleteSelected,
bulkDeleteTarget,
// Seed // Seed
seedDatabase, seedDatabase,

View File

@@ -49,15 +49,41 @@
</v-card-text> </v-card-text>
</BaseDialog> </BaseDialog>
<!-- Bulk Delete Dialog -->
<BaseDialog
v-model="state.bulkDeleteDialog"
width="650px"
:title="$tc('general.confirm')"
:icon="$globals.icons.alertCircle"
color="error"
@confirm="deleteSelected"
>
<v-card-text>
<p class="h4">{{ $t('general.confirm-delete-generic-items') }}</p>
<v-card outlined>
<v-virtual-scroll height="400" item-height="25" :items="bulkDeleteTarget">
<template #default="{ item }">
<v-list-item class="pb-2">
<v-list-item-content>
<v-list-item-title>{{ item.name }}</v-list-item-title>
</v-list-item-content>
</v-list-item>
</template>
</v-virtual-scroll>
</v-card>
</v-card-text>
</BaseDialog>
<!-- Data Table --> <!-- Data Table -->
<BaseCardSectionTitle :icon="$globals.icons.tags" section :title="$tc('data-pages.tags.tag-data')"> </BaseCardSectionTitle> <BaseCardSectionTitle :icon="$globals.icons.tags" section :title="$tc('data-pages.tags.tag-data')"> </BaseCardSectionTitle>
<CrudTable <CrudTable
:table-config="tableConfig" :table-config="tableConfig"
:headers.sync="tableHeaders" :headers.sync="tableHeaders"
:data="tags || []" :data="tags || []"
:bulk-actions="[]" :bulk-actions="[{icon: $globals.icons.delete, text: $tc('general.delete'), event: 'delete-selected'}]"
@delete-one="deleteEventHandler" @delete-one="deleteEventHandler"
@edit-one="editEventHandler" @edit-one="editEventHandler"
@delete-selected="bulkDeleteEventHandler"
> >
<template #button-row> <template #button-row>
<BaseButton create @click="state.createDialog = true">{{ $t("general.create") }}</BaseButton> <BaseButton create @click="state.createDialog = true">{{ $t("general.create") }}</BaseButton>
@@ -96,6 +122,7 @@ export default defineComponent({
createDialog: false, createDialog: false,
editDialog: false, editDialog: false,
deleteDialog: false, deleteDialog: false,
bulkDeleteDialog: false,
}); });
const tagData = useTagData(); const tagData = useTagData();
@@ -150,6 +177,24 @@ export default defineComponent({
state.deleteDialog = false; state.deleteDialog = false;
} }
// ============================================================
// Bulk Delete Tag
const bulkDeleteTarget = ref<RecipeTag[]>([]);
function bulkDeleteEventHandler(selection: RecipeTag[]) {
bulkDeleteTarget.value = selection;
state.bulkDeleteDialog = true;
}
async function deleteSelected() {
for (const item of bulkDeleteTarget.value) {
if (!item.id) {
continue;
}
await tagStore.actions.deleteOne(item.id);
}
bulkDeleteTarget.value = [];
}
return { return {
state, state,
tableConfig, tableConfig,
@@ -169,7 +214,12 @@ export default defineComponent({
// delete // delete
deleteTarget, deleteTarget,
deleteEventHandler, deleteEventHandler,
deleteTag deleteTag,
// bulk delete
bulkDeleteTarget,
bulkDeleteEventHandler,
deleteSelected,
}; };
}, },
}); });

View File

@@ -51,15 +51,41 @@
</v-card-text> </v-card-text>
</BaseDialog> </BaseDialog>
<!-- Bulk Delete Dialog -->
<BaseDialog
v-model="state.bulkDeleteDialog"
width="650px"
:title="$tc('general.confirm')"
:icon="$globals.icons.alertCircle"
color="error"
@confirm="deleteSelected"
>
<v-card-text>
<p class="h4">{{ $t('general.confirm-delete-generic-items') }}</p>
<v-card outlined>
<v-virtual-scroll height="400" item-height="25" :items="bulkDeleteTarget">
<template #default="{ item }">
<v-list-item class="pb-2">
<v-list-item-content>
<v-list-item-title>{{ item.name }}</v-list-item-title>
</v-list-item-content>
</v-list-item>
</template>
</v-virtual-scroll>
</v-card>
</v-card-text>
</BaseDialog>
<!-- Data Table --> <!-- Data Table -->
<BaseCardSectionTitle :icon="$globals.icons.potSteam" section :title="$tc('data-pages.tools.tool-data')"> </BaseCardSectionTitle> <BaseCardSectionTitle :icon="$globals.icons.potSteam" section :title="$tc('data-pages.tools.tool-data')"> </BaseCardSectionTitle>
<CrudTable <CrudTable
:table-config="tableConfig" :table-config="tableConfig"
:headers.sync="tableHeaders" :headers.sync="tableHeaders"
:data="tools || []" :data="tools || []"
:bulk-actions="[]" :bulk-actions="[{icon: $globals.icons.delete, text: $tc('general.delete'), event: 'delete-selected'}]"
@delete-one="deleteEventHandler" @delete-one="deleteEventHandler"
@edit-one="editEventHandler" @edit-one="editEventHandler"
@delete-selected="bulkDeleteEventHandler"
> >
<template #button-row> <template #button-row>
<BaseButton create @click="state.createDialog = true">{{ $t("general.create") }}</BaseButton> <BaseButton create @click="state.createDialog = true">{{ $t("general.create") }}</BaseButton>
@@ -108,6 +134,7 @@ export default defineComponent({
createDialog: false, createDialog: false,
editDialog: false, editDialog: false,
deleteDialog: false, deleteDialog: false,
bulkDeleteDialog: false,
}); });
const toolData = useToolData(); const toolData = useToolData();
@@ -162,6 +189,22 @@ export default defineComponent({
state.deleteDialog = false; state.deleteDialog = false;
} }
// ============================================================
// Bulk Delete Tag
const bulkDeleteTarget = ref<RecipeTool[]>([]);
function bulkDeleteEventHandler(selection: RecipeTool[]) {
bulkDeleteTarget.value = selection;
state.bulkDeleteDialog = true;
}
async function deleteSelected() {
for (const item of bulkDeleteTarget.value) {
await toolStore.actions.deleteOne(item.id);
}
bulkDeleteTarget.value = [];
}
return { return {
state, state,
tableConfig, tableConfig,
@@ -181,7 +224,12 @@ export default defineComponent({
// delete // delete
deleteTarget, deleteTarget,
deleteEventHandler, deleteEventHandler,
deleteTool deleteTool,
// bulk delete
bulkDeleteTarget,
bulkDeleteEventHandler,
deleteSelected,
}; };
}, },
}); });

View File

@@ -129,6 +129,31 @@
</v-card-text> </v-card-text>
</BaseDialog> </BaseDialog>
<!-- Bulk Delete Dialog -->
<BaseDialog
v-model="bulkDeleteDialog"
width="650px"
:title="$tc('general.confirm')"
:icon="$globals.icons.alertCircle"
color="error"
@confirm="deleteSelected"
>
<v-card-text>
<p class="h4">{{ $t('general.confirm-delete-generic-items') }}</p>
<v-card outlined>
<v-virtual-scroll height="400" item-height="25" :items="bulkDeleteTarget">
<template #default="{ item }">
<v-list-item class="pb-2">
<v-list-item-content>
<v-list-item-title>{{ item.name }}</v-list-item-title>
</v-list-item-content>
</v-list-item>
</template>
</v-virtual-scroll>
</v-card>
</v-card-text>
</BaseDialog>
<!-- Seed Dialog--> <!-- Seed Dialog-->
<BaseDialog <BaseDialog
v-model="seedDialog" v-model="seedDialog"
@@ -172,10 +197,11 @@
:table-config="tableConfig" :table-config="tableConfig"
:headers.sync="tableHeaders" :headers.sync="tableHeaders"
:data="units || []" :data="units || []"
:bulk-actions="[]" :bulk-actions="[{icon: $globals.icons.delete, text: $tc('general.delete'), event: 'delete-selected'}]"
@delete-one="deleteEventHandler" @delete-one="deleteEventHandler"
@edit-one="editEventHandler" @edit-one="editEventHandler"
@create-one="createEventHandler" @create-one="createEventHandler"
@delete-selected="bulkDeleteEventHandler"
> >
<template #button-row> <template #button-row>
<BaseButton create @click="createDialog = true" /> <BaseButton create @click="createDialog = true" />
@@ -339,6 +365,22 @@ export default defineComponent({
deleteDialog.value = false; deleteDialog.value = false;
} }
// ============================================================
// Bulk Delete Units
const bulkDeleteDialog = ref(false);
const bulkDeleteTarget = ref<IngredientUnit[]>([]);
function bulkDeleteEventHandler(selection: IngredientUnit[]) {
bulkDeleteTarget.value = selection;
bulkDeleteDialog.value = true;
}
async function deleteSelected() {
for (const item of bulkDeleteTarget.value) {
await unitActions.deleteOne(item.id);
}
bulkDeleteTarget.value = [];
}
// ============================================================ // ============================================================
// Alias Manager // Alias Manager
@@ -423,6 +465,11 @@ export default defineComponent({
deleteDialog, deleteDialog,
deleteUnit, deleteUnit,
deleteTarget, deleteTarget,
// Bulk Delete
bulkDeleteDialog,
bulkDeleteEventHandler,
bulkDeleteTarget,
deleteSelected,
// Alias Manager // Alias Manager
aliasManagerDialog, aliasManagerDialog,
aliasManagerEventHandler, aliasManagerEventHandler,

View File

@@ -4,17 +4,28 @@
<script lang="ts"> <script lang="ts">
import { computed, defineComponent, useContext, useRouter } from "@nuxtjs/composition-api"; import { computed, defineComponent, useContext, useRouter } from "@nuxtjs/composition-api";
import { AppInfo } from "~/lib/api/types/admin";
export default defineComponent({ export default defineComponent({
layout: "blank", layout: "blank",
setup() { setup() {
const { $auth } = useContext(); const { $auth, $axios } = useContext();
const router = useRouter(); const router = useRouter();
const groupSlug = computed(() => $auth.user?.groupSlug); const groupSlug = computed(() => $auth.user?.groupSlug);
async function redirectPublicUserToDefaultGroup() {
const { data } = await $axios.get<AppInfo>("/api/app/about");
if (data?.defaultGroupSlug) {
router.push(`/g/${data.defaultGroupSlug}`);
} else {
router.push("/login");
}
}
if (groupSlug.value) { if (groupSlug.value) {
router.push(`/g/${groupSlug.value}`); router.push(`/g/${groupSlug.value}`);
} else { } else {
router.push("/login"); redirectPublicUserToDefaultGroup();
} }
} }
}); });

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} is opgedateer, {url}", "generic-updated-with-url": "{name} is opgedateer, {url}",
"generic-duplicated": "{name} is gekopieer", "generic-duplicated": "{name} is gekopieer",
"generic-deleted": "{name} is verwyder" "generic-deleted": "{name} is verwyder"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} تم تحديثه، {url}", "generic-updated-with-url": "{name} تم تحديثه، {url}",
"generic-duplicated": "تم تكرار {name}", "generic-duplicated": "تم تكرار {name}",
"generic-deleted": "تم حذف {name}" "generic-deleted": "تم حذف {name}"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} беше актуализирано, {url}", "generic-updated-with-url": "{name} беше актуализирано, {url}",
"generic-duplicated": "{name} е дублицирано", "generic-duplicated": "{name} е дублицирано",
"generic-deleted": "{name} беше изтрито" "generic-deleted": "{name} беше изтрито"
},
"datetime": {
"year": "година|години",
"day": "ден|дни",
"hour": "час|часове",
"minute": "минута|минути",
"second": "секунда|секунди",
"millisecond": "милисекунда|милисекунди",
"microsecond": "микросекунда|микросекунди"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} ha estat actualitzat, {url}", "generic-updated-with-url": "{name} ha estat actualitzat, {url}",
"generic-duplicated": "S'ha duplicat {name}", "generic-duplicated": "S'ha duplicat {name}",
"generic-deleted": "{name} ha estat eliminat" "generic-deleted": "{name} ha estat eliminat"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} byl aktualizován, {url}", "generic-updated-with-url": "{name} byl aktualizován, {url}",
"generic-duplicated": "{name} byl duplikován", "generic-duplicated": "{name} byl duplikován",
"generic-deleted": "{name} byl odstraněn" "generic-deleted": "{name} byl odstraněn"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} er blevet opdateret, {url}", "generic-updated-with-url": "{name} er blevet opdateret, {url}",
"generic-duplicated": "{name} er blevet dublikeret", "generic-duplicated": "{name} er blevet dublikeret",
"generic-deleted": "{name} er blevet slettet" "generic-deleted": "{name} er blevet slettet"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} wurde aktualisiert, {url}", "generic-updated-with-url": "{name} wurde aktualisiert, {url}",
"generic-duplicated": "{name} wurde dupliziert", "generic-duplicated": "{name} wurde dupliziert",
"generic-deleted": "{name} wurde gelöscht" "generic-deleted": "{name} wurde gelöscht"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} has been updated, {url}", "generic-updated-with-url": "{name} has been updated, {url}",
"generic-duplicated": "{name} has been duplicated", "generic-duplicated": "{name} has been duplicated",
"generic-deleted": "{name} has been deleted" "generic-deleted": "{name} has been deleted"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} has been updated, {url}", "generic-updated-with-url": "{name} has been updated, {url}",
"generic-duplicated": "{name} has been duplicated", "generic-duplicated": "{name} has been duplicated",
"generic-deleted": "{name} has been deleted" "generic-deleted": "{name} has been deleted"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} has been updated, {url}", "generic-updated-with-url": "{name} has been updated, {url}",
"generic-duplicated": "{name} has been duplicated", "generic-duplicated": "{name} has been duplicated",
"generic-deleted": "{name} has been deleted" "generic-deleted": "{name} has been deleted"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "Se ha actualizado {name}, {url}", "generic-updated-with-url": "Se ha actualizado {name}, {url}",
"generic-duplicated": "Se ha duplicado {name}", "generic-duplicated": "Se ha duplicado {name}",
"generic-deleted": "Se ha eliminado {name}" "generic-deleted": "Se ha eliminado {name}"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} on päivitetty, {url}", "generic-updated-with-url": "{name} on päivitetty, {url}",
"generic-duplicated": "{name} on kahdennettu", "generic-duplicated": "{name} on kahdennettu",
"generic-deleted": "{name} on poistettu" "generic-deleted": "{name} on poistettu"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} a été mis à jour, {url}", "generic-updated-with-url": "{name} a été mis à jour, {url}",
"generic-duplicated": "{name} a été dupliqué", "generic-duplicated": "{name} a été dupliqué",
"generic-deleted": "{name} a été supprimé" "generic-deleted": "{name} a été supprimé"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} a été mis à jour, {url}", "generic-updated-with-url": "{name} a été mis à jour, {url}",
"generic-duplicated": "{name} a été dupliqué", "generic-duplicated": "{name} a été dupliqué",
"generic-deleted": "{name} a été supprimé" "generic-deleted": "{name} a été supprimé"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} has been updated, {url}", "generic-updated-with-url": "{name} has been updated, {url}",
"generic-duplicated": "{name} has been duplicated", "generic-duplicated": "{name} has been duplicated",
"generic-deleted": "{name} has been deleted" "generic-deleted": "{name} has been deleted"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} עודכן, {url}", "generic-updated-with-url": "{name} עודכן, {url}",
"generic-duplicated": "{name} שוכפל", "generic-duplicated": "{name} שוכפל",
"generic-deleted": "{name} נמחק" "generic-deleted": "{name} נמחק"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} je ažuriran, {url}", "generic-updated-with-url": "{name} je ažuriran, {url}",
"generic-duplicated": "{name} je dupliciran", "generic-duplicated": "{name} je dupliciran",
"generic-deleted": "{name} je obrisan" "generic-deleted": "{name} je obrisan"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} frissítve, {url}", "generic-updated-with-url": "{name} frissítve, {url}",
"generic-duplicated": "{name} duplikálva", "generic-duplicated": "{name} duplikálva",
"generic-deleted": "{name} törölve lett" "generic-deleted": "{name} törölve lett"
},
"datetime": {
"year": "év|év",
"day": "nap/nap",
"hour": "óra|óra",
"minute": "perc/perc",
"second": "másodperc|másodperc",
"millisecond": "ezredmásodperc|ezredmásodperc",
"microsecond": "mikroszekundum|mikroszekundum"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} has been updated, {url}", "generic-updated-with-url": "{name} has been updated, {url}",
"generic-duplicated": "{name} has been duplicated", "generic-duplicated": "{name} has been duplicated",
"generic-deleted": "{name} has been deleted" "generic-deleted": "{name} has been deleted"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} è stato aggiornato, {url}", "generic-updated-with-url": "{name} è stato aggiornato, {url}",
"generic-duplicated": "{name} è stato duplicato", "generic-duplicated": "{name} è stato duplicato",
"generic-deleted": "{name} è stato eliminato" "generic-deleted": "{name} è stato eliminato"
},
"datetime": {
"year": "anno|anni",
"day": "giorno|giorni",
"hour": "ora|ore",
"minute": "minuto|minuti",
"second": "secondo|secondi",
"millisecond": "millisecondo|millisecondi",
"microsecond": "microsecondo|microsecondi"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} has been updated, {url}", "generic-updated-with-url": "{name} has been updated, {url}",
"generic-duplicated": "{name} has been duplicated", "generic-duplicated": "{name} has been duplicated",
"generic-deleted": "{name} has been deleted" "generic-deleted": "{name} has been deleted"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} has been updated, {url}", "generic-updated-with-url": "{name} has been updated, {url}",
"generic-duplicated": "{name} has been duplicated", "generic-duplicated": "{name} has been duplicated",
"generic-deleted": "{name} has been deleted" "generic-deleted": "{name} has been deleted"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} atnaujintas, {url}", "generic-updated-with-url": "{name} atnaujintas, {url}",
"generic-duplicated": "{name} buvo nukopijuotas", "generic-duplicated": "{name} buvo nukopijuotas",
"generic-deleted": "{name} ištrintas" "generic-deleted": "{name} ištrintas"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} has been updated, {url}", "generic-updated-with-url": "{name} has been updated, {url}",
"generic-duplicated": "{name} has been duplicated", "generic-duplicated": "{name} has been duplicated",
"generic-deleted": "{name} has been deleted" "generic-deleted": "{name} has been deleted"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -12,7 +12,7 @@
"user-updated": "Gebruiker bijgewerkt", "user-updated": "Gebruiker bijgewerkt",
"password-updated": "Wachtwoord bijgewerkt", "password-updated": "Wachtwoord bijgewerkt",
"invalid-current-password": "Ongeldig huidig wachtwoord", "invalid-current-password": "Ongeldig huidig wachtwoord",
"ldap-update-password-unavailable": "Kan het wachtwoord niet bijwerken. De gebruiker wordt beheerd door LDAP." "ldap-update-password-unavailable": "Kan het wachtwoord niet bijwerken, de gebruiker wordt beheerd door LDAP"
}, },
"group": { "group": {
"report-deleted": "Rapport verwijderd." "report-deleted": "Rapport verwijderd."
@@ -20,7 +20,7 @@
"exceptions": { "exceptions": {
"permission_denied": "Je hebt geen toestemming om deze actie uit te voeren", "permission_denied": "Je hebt geen toestemming om deze actie uit te voeren",
"no-entry-found": "Het opgevraagde is niet gevonden", "no-entry-found": "Het opgevraagde is niet gevonden",
"integrity-error": "Integriteitsprobleem voor database", "integrity-error": "Database integriteitsfout",
"username-conflict-error": "Deze gebruikersnaam is al in gebruik", "username-conflict-error": "Deze gebruikersnaam is al in gebruik",
"email-conflict-error": "Dit e-mailadres is al in gebruik" "email-conflict-error": "Dit e-mailadres is al in gebruik"
}, },
@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} is bijgewerkt, {url}", "generic-updated-with-url": "{name} is bijgewerkt, {url}",
"generic-duplicated": "(naam) is gekopieerd", "generic-duplicated": "(naam) is gekopieerd",
"generic-deleted": "{name} is verwijderd" "generic-deleted": "{name} is verwijderd"
},
"datetime": {
"year": "jaar|jaren",
"day": "dag|dagen",
"hour": "uur|uren",
"minute": "minuut|minuten",
"second": "seconde|seconden",
"millisecond": "milliseconde milliseconden",
"microsecond": "microseconde microseconden"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} har blitt oppdatert, {url}", "generic-updated-with-url": "{name} har blitt oppdatert, {url}",
"generic-duplicated": "{name} har blitt duplisert", "generic-duplicated": "{name} har blitt duplisert",
"generic-deleted": "{name} har blitt slettet" "generic-deleted": "{name} har blitt slettet"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} został zaktualizowany. {url}", "generic-updated-with-url": "{name} został zaktualizowany. {url}",
"generic-duplicated": "{name} został zduplikowany", "generic-duplicated": "{name} został zduplikowany",
"generic-deleted": "{name} został usunięty" "generic-deleted": "{name} został usunięty"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} foi atualizado, {url}", "generic-updated-with-url": "{name} foi atualizado, {url}",
"generic-duplicated": "{name} foi duplicada", "generic-duplicated": "{name} foi duplicada",
"generic-deleted": "{name} foi excluído" "generic-deleted": "{name} foi excluído"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} foi atualizado, {url}", "generic-updated-with-url": "{name} foi atualizado, {url}",
"generic-duplicated": "{name} foi duplicado", "generic-duplicated": "{name} foi duplicado",
"generic-deleted": "{name} foi removido" "generic-deleted": "{name} foi removido"
},
"datetime": {
"year": "ano|anos",
"day": "dia|dias",
"hour": "hora|horas",
"minute": "minuto|minutos",
"second": "segundo|segundos",
"millisecond": "milissegundo|milissegundos",
"microsecond": "microssegundo|microssegundos"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} a fost actualizat, {url}", "generic-updated-with-url": "{name} a fost actualizat, {url}",
"generic-duplicated": "{name} a fost duplicat", "generic-duplicated": "{name} a fost duplicat",
"generic-deleted": "{name} a fost șters" "generic-deleted": "{name} a fost șters"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} был обновлен, {url}", "generic-updated-with-url": "{name} был обновлен, {url}",
"generic-duplicated": "Копия {name} была создана", "generic-duplicated": "Копия {name} была создана",
"generic-deleted": "{name} был удален" "generic-deleted": "{name} был удален"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} bol aktualizovaný, {url}", "generic-updated-with-url": "{name} bol aktualizovaný, {url}",
"generic-duplicated": "{name} bol duplikovaný", "generic-duplicated": "{name} bol duplikovaný",
"generic-deleted": "{name} bol vymazaný" "generic-deleted": "{name} bol vymazaný"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} je bil posodobljen, {url}", "generic-updated-with-url": "{name} je bil posodobljen, {url}",
"generic-duplicated": "{name} je bilo podvojeno", "generic-duplicated": "{name} je bilo podvojeno",
"generic-deleted": "{name} je bil izbrisan" "generic-deleted": "{name} je bil izbrisan"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} је ажурирано, {url}", "generic-updated-with-url": "{name} је ажурирано, {url}",
"generic-duplicated": "{name} је дуплиран", "generic-duplicated": "{name} је дуплиран",
"generic-deleted": "{name} је обрисан" "generic-deleted": "{name} је обрисан"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} har uppdaterats, {url}", "generic-updated-with-url": "{name} har uppdaterats, {url}",
"generic-duplicated": "{name} har duplicerats", "generic-duplicated": "{name} har duplicerats",
"generic-deleted": "{name} har tagits bort" "generic-deleted": "{name} har tagits bort"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} güncellendi, {url}", "generic-updated-with-url": "{name} güncellendi, {url}",
"generic-duplicated": "{name} yinelendi", "generic-duplicated": "{name} yinelendi",
"generic-deleted": "{name} silindi" "generic-deleted": "{name} silindi"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} оновлено, {url}", "generic-updated-with-url": "{name} оновлено, {url}",
"generic-duplicated": "{name} дубльовано", "generic-duplicated": "{name} дубльовано",
"generic-deleted": "{name} видалено" "generic-deleted": "{name} видалено"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} has been updated, {url}", "generic-updated-with-url": "{name} has been updated, {url}",
"generic-duplicated": "{name} has been duplicated", "generic-duplicated": "{name} has been duplicated",
"generic-deleted": "{name} has been deleted" "generic-deleted": "{name} has been deleted"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} 已创建, {url}", "generic-updated-with-url": "{name} 已创建, {url}",
"generic-duplicated": "{name} 已复制", "generic-duplicated": "{name} 已复制",
"generic-deleted": "{name} 已删除" "generic-deleted": "{name} 已删除"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -31,5 +31,14 @@
"generic-updated-with-url": "{name} has been updated, {url}", "generic-updated-with-url": "{name} has been updated, {url}",
"generic-duplicated": "{name} has been duplicated", "generic-duplicated": "{name} has been duplicated",
"generic-deleted": "{name} has been deleted" "generic-deleted": "{name} has been deleted"
},
"datetime": {
"year": "year|years",
"day": "day|days",
"hour": "hour|hours",
"minute": "minute|minutes",
"second": "second|seconds",
"millisecond": "millisecond|milliseconds",
"microsecond": "microsecond|microseconds"
} }
} }

View File

@@ -1,6 +1,7 @@
import json import json
from dataclasses import dataclass from dataclasses import dataclass
from pathlib import Path from pathlib import Path
from typing import cast
@dataclass(slots=True) @dataclass(slots=True)
@@ -13,6 +14,22 @@ class JsonProvider:
else: else:
self.translations = path self.translations = path
def _parse_plurals(self, value: str, count: float):
# based off of: https://kazupon.github.io/vue-i18n/guide/pluralization.html
values = [v.strip() for v in value.split("|")]
if len(values) == 1:
return value
elif len(values) == 2:
return values[0] if count == 1 else values[1]
elif len(values) == 3:
if count == 0:
return values[0]
else:
return values[1] if count == 1 else values[2]
else:
return values[0]
def t(self, key: str, default=None, **kwargs) -> str: def t(self, key: str, default=None, **kwargs) -> str:
keys = key.split(".") keys = key.split(".")
@@ -30,9 +47,12 @@ class JsonProvider:
if i == last: if i == last:
for key, value in kwargs.items(): for key, value in kwargs.items():
if not value: translation_value = cast(str, translation_value)
if value is None:
value = "" value = ""
translation_value = translation_value.replace("{" + key + "}", value) if key == "count":
return translation_value translation_value = self._parse_plurals(translation_value, float(value))
translation_value = translation_value.replace("{" + key + "}", str(value)) # type: ignore
return translation_value # type: ignore
return default or key return default or key

View File

@@ -45,7 +45,7 @@
"cayenne-pepper": "kırmızı biber", "cayenne-pepper": "kırmızı biber",
"celeriac": "kereviz", "celeriac": "kereviz",
"celery": "kereviz", "celery": "kereviz",
"cereal-grains": "cereal grains", "cereal-grains": "tam taneli tahıl",
"rice": "pirinç", "rice": "pirinç",
"chard": "pazı", "chard": "pazı",
"cheese": "peynir", "cheese": "peynir",
@@ -63,33 +63,33 @@
"coriander": "kişniş", "coriander": "kişniş",
"corn": "mısır", "corn": "mısır",
"corn-syrup": "mısır şurubu", "corn-syrup": "mısır şurubu",
"cottonseed-oil": "cottonseed oil", "cottonseed-oil": "pamuk yağı",
"courgette": "dolmalık kabak", "courgette": "dolmalık kabak",
"cream-of-tartar": "cream of tartar", "cream-of-tartar": "krem tartar",
"cucumber": "salatalık", "cucumber": "salatalık",
"cumin": "kimyon", "cumin": "kimyon",
"daikon": "beyaz turp", "daikon": "beyaz turp",
"dairy-products-and-dairy-substitutes": "süt ürünleri ve süt yerine geçen ürünler", "dairy-products-and-dairy-substitutes": "süt ürünleri ve süt yerine geçen ürünler",
"eggs": "yumurta", "eggs": "yumurta",
"ghee": "ghee", "ghee": "saf yağ",
"milk": "süt", "milk": "süt",
"dandelion": "dandelion", "dandelion": "karahindiba",
"demerara-sugar": "demerara sugar", "demerara-sugar": "esmer şeker",
"dough": "hamur", "dough": "hamur",
"edible-cactus": "edible cactus", "edible-cactus": "yenilebilir kaktüs",
"eggplant": "patlıcan", "eggplant": "patlıcan",
"endive": "hindiba", "endive": "hindiba",
"fats": "yağlar", "fats": "yağlar",
"speck": "speck", "speck": "speck",
"fava-beans": "fava beans", "fava-beans": "fava fasulyesi",
"fiddlehead": "fiddlehead", "fiddlehead": "eğrelti otu filizi",
"fish": "balık", "fish": "balık",
"catfish": "kedibalığı ", "catfish": "kedibalığı ",
"cod": "cod", "cod": "morina",
"salt-cod": "salt cod", "salt-cod": "tuzlu morina",
"salmon": "somon", "salmon": "somon",
"skate": "skate", "skate": "çemçe balığı",
"stockfish": "stockfish", "stockfish": "kurutulmuş balık",
"trout": "alabalık", "trout": "alabalık",
"tuna": "ton balığı", "tuna": "ton balığı",
"five-spice-powder": "beşli baharat", "five-spice-powder": "beşli baharat",
@@ -101,7 +101,7 @@
"oranges": "portakal", "oranges": "portakal",
"pear": "armut", "pear": "armut",
"tomato": "domates ", "tomato": "domates ",
"fruit-sugar": "fruit sugar", "fruit-sugar": "meyve şekeri",
"garam-masala": "garam masala", "garam-masala": "garam masala",
"garlic": "sarımsak", "garlic": "sarımsak",
"gem-squash": "gem squash", "gem-squash": "gem squash",
@@ -125,10 +125,10 @@
"jaggery": "jaggery", "jaggery": "jaggery",
"jams": "reçel", "jams": "reçel",
"jellies": "jellies", "jellies": "jellies",
"jerusalem-artichoke": "jerusalem artichoke", "jerusalem-artichoke": "yerelması",
"jicama": "jicama", "jicama": "meksika turpu",
"kale": "kale", "kale": "kale",
"kumara": "kumara", "kumara": "tatlı patates",
"leavening-agents": "leavening agents", "leavening-agents": "leavening agents",
"leek": "leek", "leek": "leek",
"legumes": "baklagiller ", "legumes": "baklagiller ",
@@ -142,14 +142,14 @@
"meat": "et", "meat": "et",
"mortadella": "mortadella", "mortadella": "mortadella",
"mushroom": "mantar", "mushroom": "mantar",
"white-mushroom": "white mushroom", "white-mushroom": "beyaz mantar",
"mussels": "mussels", "mussels": "midye",
"nori": "nori", "nori": "nori",
"nutmeg": "nutmeg", "nutmeg": "muskat",
"nutritional-yeast-flakes": "nutritional yeast flakes", "nutritional-yeast-flakes": "nutritional yeast flakes",
"nuts": "nuts", "nuts": "nuts",
"nanaimo-bar-mix": "nanaimo bar mix", "nanaimo-bar-mix": "nanaimo bar mix",
"octopuses": "octopuses", "octopuses": "ahtapotlar",
"oils": "yağ", "oils": "yağ",
"olive-oil": "zeytin yağı", "olive-oil": "zeytin yağı",
"okra": "bamya", "okra": "bamya",

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