Merge branch 'mealie-next' into bugfix/5532-fix-dash-slug-names

This commit is contained in:
Fernando Muñoz Paredes 2025-07-19 17:48:23 +02:00 committed by GitHub
commit c0f74383ad
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
43 changed files with 5410 additions and 5488 deletions

View file

@ -17,7 +17,7 @@ jobs:
name: Build Package
uses: ./.github/workflows/build-package.yml
with:
tag: release
tag: ${{ github.event.release.tag_name }}
publish:
permissions:

View file

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

View file

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

View file

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

View file

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

View file

@ -269,13 +269,17 @@ export default defineNuxtComponent({
recipeName: props.name,
loading: false,
menuItems: [] as ContextMenuItem[],
newMealdate: new Date(Date.now() - new Date().getTimezoneOffset() * 60000),
newMealdate: new Date(),
newMealType: "dinner" as PlanEntryType,
pickerMenu: false,
});
const newMealdateString = computed(() => {
return state.newMealdate.toISOString().substring(0, 10);
// Format the date to YYYY-MM-DD in the same timezone as newMealdate
const year = state.newMealdate.getFullYear();
const month = String(state.newMealdate.getMonth() + 1).padStart(2, "0");
const day = String(state.newMealdate.getDate()).padStart(2, "0");
return `${year}-${month}-${day}`;
});
const i18n = useI18n();

View file

@ -45,28 +45,11 @@ export const useGroupSelf = function () {
export const useGroups = function () {
const api = useUserApi();
const loading = ref(false);
const groups = ref<GroupSummary[] | null>(null);
function getAllGroups() {
async function getAllGroups() {
loading.value = true;
const asyncKey = String(Date.now());
const { data: groups } = useAsyncData(asyncKey, async () => {
const { data } = await api.groups.getAll(1, -1, { orderBy: "name", orderDirection: "asc" }); ;
if (data) {
return data.items;
}
else {
return null;
}
});
loading.value = false;
return groups;
}
async function refreshAllGroups() {
loading.value = true;
const { data } = await api.groups.getAll(1, -1, { orderBy: "name", orderDirection: "asc" }); ;
const { data } = await api.groups.getAll(1, -1, { orderBy: "name", orderDirection: "asc" });
if (data) {
groups.value = data.items;
@ -78,11 +61,15 @@ export const useGroups = function () {
loading.value = false;
}
async function refreshAllGroups() {
await getAllGroups();
}
async function deleteGroup(id: string | number) {
loading.value = true;
const { data } = await api.groups.deleteOne(id);
loading.value = false;
refreshAllGroups();
await refreshAllGroups();
return data;
}
@ -93,9 +80,13 @@ export const useGroups = function () {
if (data && groups.value) {
groups.value.push(data);
}
loading.value = false;
}
const groups = getAllGroups();
// Initialize data on first call
if (!groups.value) {
getAllGroups();
}
return { groups, getAllGroups, refreshAllGroups, deleteGroup, createGroup };
};

View file

@ -48,29 +48,12 @@ export const useHouseholdSelf = function () {
export const useAdminHouseholds = function () {
const api = useAdminApi();
const loading = ref(false);
const households = ref<HouseholdInDB[] | null>(null);
function getAllHouseholds() {
async function getAllHouseholds() {
loading.value = true;
const asyncKey = String(Date.now());
const { data: households } = useAsyncData(asyncKey, async () => {
const { data } = await api.households.getAll(1, -1, { orderBy: "name, group.name", orderDirection: "asc" });
if (data) {
return data.items;
}
else {
return null;
}
});
loading.value = false;
return households;
}
async function refreshAllHouseholds() {
loading.value = true;
const { data } = await api.households.getAll(1, -1, { orderBy: "name, group.name", orderDirection: "asc" }); ;
if (data) {
households.value = data.items;
}
@ -81,11 +64,15 @@ export const useAdminHouseholds = function () {
loading.value = false;
}
async function refreshAllHouseholds() {
await getAllHouseholds();
}
async function deleteHousehold(id: string | number) {
loading.value = true;
const { data } = await api.households.deleteOne(id);
loading.value = false;
refreshAllHouseholds();
await refreshAllHouseholds();
return data;
}
@ -96,9 +83,9 @@ export const useAdminHouseholds = function () {
if (data && households.value) {
households.value.push(data);
}
loading.value = false;
}
const households = getAllHouseholds();
function useHouseholdsInGroup(groupIdRef: Ref<string>) {
return computed(
() => {
@ -109,6 +96,10 @@ export const useAdminHouseholds = function () {
);
}
if (!households.value) {
getAllHouseholds();
}
return {
households,
useHouseholdsInGroup,

View file

@ -93,7 +93,7 @@ export const LOCALES = [
{
name: "Nederlands (Dutch)",
value: "nl-NL",
progress: 39,
progress: 42,
dir: "ltr",
},
{
@ -135,7 +135,7 @@ export const LOCALES = [
{
name: "Magyar (Hungarian)",
value: "hu-HU",
progress: 38,
progress: 39,
dir: "ltr",
},
{
@ -213,7 +213,7 @@ export const LOCALES = [
{
name: "Deutsch (German)",
value: "de-DE",
progress: 46,
progress: 55,
dir: "ltr",
},
{

View file

@ -1,47 +1,47 @@
/* eslint-disable @typescript-eslint/no-require-imports */
const datetimeFormats = {
// CODE_GEN_ID: DATE_LOCALES
"hu-HU": require("./lang/dateTimeFormats/hu-HU.json"),
"no-NO": require("./lang/dateTimeFormats/no-NO.json"),
"nl-NL": require("./lang/dateTimeFormats/nl-NL.json"),
"pl-PL": require("./lang/dateTimeFormats/pl-PL.json"),
"da-DK": require("./lang/dateTimeFormats/da-DK.json"),
"fr-CA": require("./lang/dateTimeFormats/fr-CA.json"),
"fr-BE": require("./lang/dateTimeFormats/fr-BE.json"),
"it-IT": require("./lang/dateTimeFormats/it-IT.json"),
"sl-SI": require("./lang/dateTimeFormats/sl-SI.json"),
"sr-SP": require("./lang/dateTimeFormats/sr-SP.json"),
"is-IS": require("./lang/dateTimeFormats/is-IS.json"),
"ja-JP": require("./lang/dateTimeFormats/ja-JP.json"),
"fr-FR": require("./lang/dateTimeFormats/fr-FR.json"),
"ca-ES": require("./lang/dateTimeFormats/ca-ES.json"),
"tr-TR": require("./lang/dateTimeFormats/tr-TR.json"),
"fi-FI": require("./lang/dateTimeFormats/fi-FI.json"),
"hr-HR": require("./lang/dateTimeFormats/hr-HR.json"),
"pt-BR": require("./lang/dateTimeFormats/pt-BR.json"),
"sk-SK": require("./lang/dateTimeFormats/sk-SK.json"),
"zh-CN": require("./lang/dateTimeFormats/zh-CN.json"),
"pt-PT": require("./lang/dateTimeFormats/pt-PT.json"),
"ja-JP": require("./lang/dateTimeFormats/ja-JP.json"),
"en-GB": require("./lang/dateTimeFormats/en-GB.json"),
"ca-ES": require("./lang/dateTimeFormats/ca-ES.json"),
"it-IT": require("./lang/dateTimeFormats/it-IT.json"),
"pl-PL": require("./lang/dateTimeFormats/pl-PL.json"),
"pt-PT": require("./lang/dateTimeFormats/pt-PT.json"),
"ro-RO": require("./lang/dateTimeFormats/ro-RO.json"),
"cs-CZ": require("./lang/dateTimeFormats/cs-CZ.json"),
"en-US": require("./lang/dateTimeFormats/en-US.json"),
"lv-LV": require("./lang/dateTimeFormats/lv-LV.json"),
"ko-KR": require("./lang/dateTimeFormats/ko-KR.json"),
"bg-BG": require("./lang/dateTimeFormats/bg-BG.json"),
"gl-ES": require("./lang/dateTimeFormats/gl-ES.json"),
"sr-SP": require("./lang/dateTimeFormats/sr-SP.json"),
"hr-HR": require("./lang/dateTimeFormats/hr-HR.json"),
"de-DE": require("./lang/dateTimeFormats/de-DE.json"),
"lt-LT": require("./lang/dateTimeFormats/lt-LT.json"),
"ru-RU": require("./lang/dateTimeFormats/ru-RU.json"),
"he-IL": require("./lang/dateTimeFormats/he-IL.json"),
"el-GR": require("./lang/dateTimeFormats/el-GR.json"),
"zh-TW": require("./lang/dateTimeFormats/zh-TW.json"),
"af-ZA": require("./lang/dateTimeFormats/af-ZA.json"),
"fr-CA": require("./lang/dateTimeFormats/fr-CA.json"),
"he-IL": require("./lang/dateTimeFormats/he-IL.json"),
"pt-BR": require("./lang/dateTimeFormats/pt-BR.json"),
"cs-CZ": require("./lang/dateTimeFormats/cs-CZ.json"),
"fr-FR": require("./lang/dateTimeFormats/fr-FR.json"),
"ru-RU": require("./lang/dateTimeFormats/ru-RU.json"),
"is-IS": require("./lang/dateTimeFormats/is-IS.json"),
"sk-SK": require("./lang/dateTimeFormats/sk-SK.json"),
"el-GR": require("./lang/dateTimeFormats/el-GR.json"),
"fr-BE": require("./lang/dateTimeFormats/fr-BE.json"),
"da-DK": require("./lang/dateTimeFormats/da-DK.json"),
"hu-HU": require("./lang/dateTimeFormats/hu-HU.json"),
"es-ES": require("./lang/dateTimeFormats/es-ES.json"),
"gl-ES": require("./lang/dateTimeFormats/gl-ES.json"),
"no-NO": require("./lang/dateTimeFormats/no-NO.json"),
"lt-LT": require("./lang/dateTimeFormats/lt-LT.json"),
"en-US": require("./lang/dateTimeFormats/en-US.json"),
"sv-SE": require("./lang/dateTimeFormats/sv-SE.json"),
"ar-SA": require("./lang/dateTimeFormats/ar-SA.json"),
"vi-VN": require("./lang/dateTimeFormats/vi-VN.json"),
"ko-KR": require("./lang/dateTimeFormats/ko-KR.json"),
"bg-BG": require("./lang/dateTimeFormats/bg-BG.json"),
"sl-SI": require("./lang/dateTimeFormats/sl-SI.json"),
"uk-UA": require("./lang/dateTimeFormats/uk-UA.json"),
"lv-LV": require("./lang/dateTimeFormats/lv-LV.json"),
"ar-SA": require("./lang/dateTimeFormats/ar-SA.json"),
"nl-NL": require("./lang/dateTimeFormats/nl-NL.json"),
"vi-VN": require("./lang/dateTimeFormats/vi-VN.json"),
"fi-FI": require("./lang/dateTimeFormats/fi-FI.json"),
// END: DATE_LOCALES
};

View file

@ -5,7 +5,7 @@
"api-docs": "Dokumentace API",
"api-port": "API port",
"application-mode": "Režim aplikace",
"database-type": "Typ databáze",
"database-type": "Database Type",
"database-url": "URL databáze",
"default-group": "Výchozí skupina",
"default-household": "Výchozí domácnost",
@ -662,9 +662,9 @@
},
"reset-servings-count": "Resetovat počet porcí",
"not-linked-ingredients": "Další ingredience",
"upload-another-image": "Upload another image",
"upload-images": "Upload images",
"upload-more-images": "Upload more images"
"upload-another-image": "Nahrát další obrázek",
"upload-images": "Nahrát obrázky",
"upload-more-images": "Nahrát více obrázků"
},
"recipe-finder": {
"recipe-finder": "Vyhledávač receptů",

View file

@ -1005,7 +1005,7 @@
"webhooks-enabled": "Webhooks aktiviert",
"you-are-not-allowed-to-create-a-user": "Du bist nicht berechtigt, einen Benutzer anzulegen",
"you-are-not-allowed-to-delete-this-user": "Du bist nicht berechtigt, diesen Benutzer zu entfernen",
"enable-advanced-content": "Erweiterten Inhalt aktivieren",
"enable-advanced-content": "Erweiterte Inhalte aktivieren",
"enable-advanced-content-description": "Aktiviert zusätzliche Funktionen wie Rezept-Skalierung, API-Schlüssel, Webhooks und Datenverwaltung. Keine Sorge, das kann später noch geändert werden.",
"favorite-recipes": "Favoriten",
"email-or-username": "E-Mail oder Benutzername",

View file

@ -111,7 +111,7 @@
"friday": "Vendredi",
"general": "Général",
"get": "Envoyer",
"home": "Page daccueil",
"home": "Accueil",
"image": "Image",
"image-upload-failed": "Le téléchargement de limage a échoué",
"import": "Importer",
@ -599,10 +599,10 @@
"create-recipe-from-an-image": "Créer une recette à partir dune image",
"create-recipe-from-an-image-description": "Créez une recette en téléchargeant une image de celle-ci. Mealie utilisera lIA pour tenter dextraire le texte et de créer une recette.",
"crop-and-rotate-the-image": "Rogner et pivoter limage pour que seul le texte soit visible, et quil soit dans la bonne orientation.",
"create-from-images": "Create from Images",
"create-from-images": "Créer à partir dimages",
"should-translate-description": "Traduire la recette dans ma langue",
"please-wait-image-procesing": "Veuillez patienter, limage est en cours de traitement. Cela peut prendre du temps.",
"please-wait-images-processing": "Please wait, the images are processing. This may take some time.",
"please-wait-images-processing": "Veuillez patienter, les images sont en cours de traitement. Cela peut prendre un certain temps.",
"bulk-url-import": "Importation en masse d'URL",
"debug-scraper": "Déboguer le récupérateur",
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Créer une recette en fournissant le nom. Toutes les recettes doivent avoir des noms uniques.",
@ -662,9 +662,9 @@
},
"reset-servings-count": "Réinitialiser le nombre de portions",
"not-linked-ingredients": "Ingrédients supplémentaires",
"upload-another-image": "Upload another image",
"upload-images": "Upload images",
"upload-more-images": "Upload more images"
"upload-another-image": "Télécharger une autre image",
"upload-images": "Télécharger des images",
"upload-more-images": "Télécharger d'autres images"
},
"recipe-finder": {
"recipe-finder": "Recherche de recette",

View file

@ -45,7 +45,7 @@
"category-filter": "סינון קטגוריות",
"category-update-failed": "עדכון קטגוריה נכשל",
"category-updated": "קטגוריה עודכנה",
"uncategorized-count": "{count} לא קיבלו קטגוריה",
"uncategorized-count": "{count} ללא קטגוריה",
"create-a-category": "יצירת קטגוריה",
"category-name": "שם קטגוריה",
"category": "קטגוריה"

View file

@ -599,10 +599,10 @@
"create-recipe-from-an-image": "Create Recipe from an Image",
"create-recipe-from-an-image-description": "Create a recipe by uploading an image of it. Mealie will attempt to extract the text from the image using AI and create a recipe from it.",
"crop-and-rotate-the-image": "Crop and rotate the image so that only the text is visible, and it's in the correct orientation.",
"create-from-images": "Create from Images",
"create-from-images": "Criar a partir de imagens",
"should-translate-description": "Traduza a receita para o meu idioma",
"please-wait-image-procesing": "Por favor aguarde, a imagem está sendo processada. Isto pode levar algum tempo.",
"please-wait-images-processing": "Please wait, the images are processing. This may take some time.",
"please-wait-images-processing": "Por favor aguarde, as imagens estão sendo processadas. Isso pode levar um tempo.",
"bulk-url-import": "Importação de URL em massa",
"debug-scraper": "Debug Scraper",
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Crie uma receita fornecendo o nome. Todas as receitas devem ter nomes exclusivos.",

View file

@ -2,8 +2,8 @@
"about": {
"about": "Om",
"about-mealie": "Om Mealie",
"api-docs": "API Dokumentation",
"api-port": "API Port",
"api-docs": "API-dokumentation",
"api-port": "API-port",
"application-mode": "Applikationsläge",
"database-type": "Databastyp",
"database-url": "Databas URL",
@ -17,7 +17,7 @@
"download-recipe-json": "Senast hämtad JSON",
"github": "GitHub",
"log-lines": "Loggrader",
"not-demo": "Inte Demo",
"not-demo": "Inte demo",
"portfolio": "Portfölj",
"production": "Produktion",
"support": "Support",
@ -599,10 +599,10 @@
"create-recipe-from-an-image": "Skapa recept från en bild",
"create-recipe-from-an-image-description": "Skapa ett recept genom att ladda upp en bild på det. Mealie kommer att försöka extrahera texten från bilden med hjälp av AI och skapa ett recept från det.",
"crop-and-rotate-the-image": "Beskär och rotera bilden så att endast texten är synlig och den är åt rätt håll.",
"create-from-images": "Create from Images",
"create-from-images": "Skapa från bild",
"should-translate-description": "Översätt receptet till mitt språk",
"please-wait-image-procesing": "Vänligen vänta, bilden bearbetas. Detta kan ta lite tid.",
"please-wait-images-processing": "Please wait, the images are processing. This may take some time.",
"please-wait-images-processing": "Bilderna behandlas. Detta kan ta lite tid.",
"bulk-url-import": "Massimport från URL",
"debug-scraper": "Felsökningsskrapa",
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Skapa ett recept genom att ange namnet. Alla recept måste ha unika namn.",
@ -662,9 +662,9 @@
},
"reset-servings-count": "Nollställ antal portioner",
"not-linked-ingredients": "Ytterligare ingredienser",
"upload-another-image": "Upload another image",
"upload-images": "Upload images",
"upload-more-images": "Upload more images"
"upload-another-image": "Ladda upp en annan bild",
"upload-images": "Ladda upp bilder",
"upload-more-images": "Ladda upp fler bilder"
},
"recipe-finder": {
"recipe-finder": "Sök recept",
@ -1084,7 +1084,7 @@
"use-abbv": "Använd förkortning",
"fraction": "Bråktal",
"example-unit-singular": "ex: Matsked",
"example-unit-plural": "ex: Matskedar",
"example-unit-plural": "ex: matskedar",
"example-unit-abbreviation-singular": "ex: msk",
"example-unit-abbreviation-plural": "ex: msk"
},

View file

@ -241,48 +241,48 @@ export default defineNuxtConfig({
i18n: {
locales: [
// CODE_GEN_ID: MESSAGE_LOCALES
{ code: "hu-HU", file: "hu-HU.ts" },
{ code: "no-NO", file: "no-NO.ts" },
{ code: "nl-NL", file: "nl-NL.ts" },
{ code: "pl-PL", file: "pl-PL.ts" },
{ code: "da-DK", file: "da-DK.ts" },
{ code: "fr-CA", file: "fr-CA.ts" },
{ code: "fr-BE", file: "fr-BE.ts" },
{ code: "it-IT", file: "it-IT.ts" },
{ code: "sl-SI", file: "sl-SI.ts" },
{ code: "sr-SP", file: "sr-SP.ts" },
{ code: "is-IS", file: "is-IS.ts" },
{ code: "ja-JP", file: "ja-JP.ts" },
{ code: "fr-FR", file: "fr-FR.ts" },
{ code: "ca-ES", file: "ca-ES.ts" },
{ code: "tr-TR", file: "tr-TR.ts" },
{ code: "fi-FI", file: "fi-FI.ts" },
{ code: "hr-HR", file: "hr-HR.ts" },
{ code: "pt-BR", file: "pt-BR.ts" },
{ code: "sk-SK", file: "sk-SK.ts" },
{ code: "zh-CN", file: "zh-CN.ts" },
{ code: "pt-PT", file: "pt-PT.ts" },
{ code: "ja-JP", file: "ja-JP.ts" },
{ code: "en-GB", file: "en-GB.ts" },
{ code: "ca-ES", file: "ca-ES.ts" },
{ code: "it-IT", file: "it-IT.ts" },
{ code: "pl-PL", file: "pl-PL.ts" },
{ code: "pt-PT", file: "pt-PT.ts" },
{ code: "ro-RO", file: "ro-RO.ts" },
{ code: "cs-CZ", file: "cs-CZ.ts" },
{ code: "et-EE", file: "et-EE.ts" },
{ code: "en-US", file: "en-US.ts" },
{ code: "lv-LV", file: "lv-LV.ts" },
{ code: "ko-KR", file: "ko-KR.ts" },
{ code: "bg-BG", file: "bg-BG.ts" },
{ code: "gl-ES", file: "gl-ES.ts" },
{ code: "sr-SP", file: "sr-SP.ts" },
{ code: "hr-HR", file: "hr-HR.ts" },
{ code: "de-DE", file: "de-DE.ts" },
{ code: "lt-LT", file: "lt-LT.ts" },
{ code: "ru-RU", file: "ru-RU.ts" },
{ code: "he-IL", file: "he-IL.ts" },
{ code: "el-GR", file: "el-GR.ts" },
{ code: "zh-TW", file: "zh-TW.ts" },
{ code: "af-ZA", file: "af-ZA.ts" },
{ code: "fr-CA", file: "fr-CA.ts" },
{ code: "he-IL", file: "he-IL.ts" },
{ code: "pt-BR", file: "pt-BR.ts" },
{ code: "cs-CZ", file: "cs-CZ.ts" },
{ code: "fr-FR", file: "fr-FR.ts" },
{ code: "ru-RU", file: "ru-RU.ts" },
{ code: "is-IS", file: "is-IS.ts" },
{ code: "sk-SK", file: "sk-SK.ts" },
{ code: "el-GR", file: "el-GR.ts" },
{ code: "fr-BE", file: "fr-BE.ts" },
{ code: "da-DK", file: "da-DK.ts" },
{ code: "hu-HU", file: "hu-HU.ts" },
{ code: "es-ES", file: "es-ES.ts" },
{ code: "gl-ES", file: "gl-ES.ts" },
{ code: "no-NO", file: "no-NO.ts" },
{ code: "lt-LT", file: "lt-LT.ts" },
{ code: "en-US", file: "en-US.ts" },
{ code: "sv-SE", file: "sv-SE.ts" },
{ code: "ar-SA", file: "ar-SA.ts" },
{ code: "vi-VN", file: "vi-VN.ts" },
{ code: "ko-KR", file: "ko-KR.ts" },
{ code: "bg-BG", file: "bg-BG.ts" },
{ code: "sl-SI", file: "sl-SI.ts" },
{ code: "uk-UA", file: "uk-UA.ts" },
{ code: "et-EE", file: "et-EE.ts" },
{ code: "lv-LV", file: "lv-LV.ts" },
{ code: "ar-SA", file: "ar-SA.ts" },
{ code: "nl-NL", file: "nl-NL.ts" },
{ code: "vi-VN", file: "vi-VN.ts" },
{ code: "fi-FI", file: "fi-FI.ts" },
// END: MESSAGE_LOCALES
],
strategy: "no_prefix",

View file

@ -1,6 +1,6 @@
{
"name": "mealie",
"version": "3.0.0",
"version": "3.0.1",
"private": true,
"scripts": {
"dev": "nuxt dev",

View file

@ -14,7 +14,6 @@
:items="groups"
item-title="name"
item-value="id"
:return-object="false"
variant="filled"
:label="$t('household.household-group')"
:rules="[validators.required]"
@ -94,10 +93,7 @@
icon
color="error"
variant="text"
@click.stop="
confirmDialog = true;
deleteTarget = +item.id;
"
@click.stop="confirmDialog = true; deleteTarget = item.id"
>
<v-icon>
{{ $globals.icons.delete }}
@ -114,7 +110,7 @@
</v-container>
</template>
<script lang="ts">
<script setup lang="ts">
import { fieldTypes } from "~/composables/forms";
import { useGroups } from "~/composables/use-groups";
import { useAdminHouseholds } from "~/composables/use-households";
@ -122,30 +118,28 @@ import { validators } from "~/composables/use-validators";
import type { HouseholdInDB } from "~/lib/api/types/household";
import type { VForm } from "~/types/auto-forms";
export default defineNuxtComponent({
setup() {
definePageMeta({
layout: "admin",
});
const i18n = useI18n();
// Set page title
useSeoMeta({
title: i18n.t("household.manage-households"),
});
const { groups } = useGroups();
const { households, refreshAllHouseholds, deleteHousehold, createHousehold } = useAdminHouseholds();
const { households, deleteHousehold, createHousehold } = useAdminHouseholds();
const refNewHouseholdForm = ref<VForm | null>(null);
const state = reactive({
createDialog: false,
confirmDialog: false,
loading: false,
deleteTarget: 0,
search: "",
headers: [
const createDialog = ref(false);
const confirmDialog = ref(false);
const deleteTarget = ref<string>("");
const search = ref("");
const updateMode = ref(false);
const headers = [
{
title: i18n.t("household.household"),
align: "start",
@ -157,9 +151,9 @@ export default defineNuxtComponent({
{ title: i18n.t("user.total-users"), value: "users" },
{ title: i18n.t("user.webhooks-enabled"), value: "webhookEnable" },
{ title: i18n.t("general.delete"), value: "actions" },
],
updateMode: false,
createHouseholdForm: {
];
const createHouseholdForm = reactive({
items: [
{
label: i18n.t("household.household-name"),
@ -172,13 +166,12 @@ export default defineNuxtComponent({
groupId: "",
name: "",
},
},
});
function openDialog() {
state.createDialog = true;
state.createHouseholdForm.data.name = "";
state.createHouseholdForm.data.groupId = "";
createDialog.value = true;
createHouseholdForm.data.name = "";
createHouseholdForm.data.groupId = "";
}
const router = useRouter();
@ -191,23 +184,7 @@ export default defineNuxtComponent({
if (!refNewHouseholdForm.value?.validate()) {
return;
}
state.createDialog = false;
await createHousehold(state.createHouseholdForm.data);
createDialog.value = false;
await createHousehold(createHouseholdForm.data);
}
return {
...toRefs(state),
refNewHouseholdForm,
groups,
households,
validators,
refreshAllHouseholds,
deleteHousehold,
handleCreateSubmit,
openDialog,
handleRowClick,
};
},
});
</script>

View file

@ -21,26 +21,23 @@
<v-card variant="outlined">
<v-card-text>
<v-select
v-if="groups"
v-model="selectedGroupId"
:items="groups"
v-model="selectedGroup"
:items="groups || []"
item-title="name"
item-value="id"
:return-object="false"
return-object
variant="filled"
:label="$t('group.user-group')"
:rules="[validators.required]"
/>
<v-select
v-model="newUserData.household"
:disabled="!selectedGroupId"
:disabled="!selectedGroup"
:items="households"
item-title="name"
item-value="name"
:return-object="false"
variant="filled"
:label="$t('household.user-household')"
:hint="selectedGroupId ? '' : $t('group.you-must-select-a-group-before-selecting-a-household')"
:hint="selectedGroup ? '' : $t('group.you-must-select-a-group-before-selecting-a-household')"
persistent-hint
:rules="[validators.required]"
/>
@ -60,46 +57,33 @@
</v-container>
</template>
<script lang="ts">
<script setup lang="ts">
import { useAdminApi } from "~/composables/api";
import { useGroups } from "~/composables/use-groups";
import { useAdminHouseholds } from "~/composables/use-households";
import { useUserForm } from "~/composables/use-users";
import { validators } from "~/composables/use-validators";
import type { UserIn } from "~/lib/api/types/user";
import type { GroupInDB, UserIn } from "~/lib/api/types/user";
import type { VForm } from "~/types/auto-forms";
export default defineNuxtComponent({
setup() {
definePageMeta({
layout: "admin",
});
const { userForm } = useUserForm();
const { groups } = useGroups();
const { useHouseholdsInGroup } = useAdminHouseholds();
const router = useRouter();
// ==============================================
// New User Form
const refNewUserForm = ref<VForm | null>(null);
const adminApi = useAdminApi();
const selectedGroupId = ref<string>("");
const households = useHouseholdsInGroup(selectedGroupId);
const selectedGroup = ref<GroupInDB | undefined>(undefined);
const households = computed(() => selectedGroup.value?.households || []);
const selectedGroup = computed(() => {
return groups.value?.find(group => group.id === selectedGroupId.value);
});
const state = reactive({
newUserData: {
const newUserData = ref({
username: "",
fullName: "",
email: "",
admin: false,
group: selectedGroup.value?.name || "",
group: computed(() => selectedGroup.value?.name || ""),
household: "",
advanced: false,
canInvite: false,
@ -107,35 +91,17 @@ export default defineNuxtComponent({
canOrganize: false,
password: "",
authMethod: "Mealie",
},
});
watch(selectedGroup, (newGroup) => {
state.newUserData.group = newGroup?.name || "";
state.newUserData.household = "";
});
async function handleSubmit() {
if (!refNewUserForm.value?.validate()) return;
const { response } = await adminApi.users.createOne(state.newUserData as UserIn);
const { response } = await adminApi.users.createOne(newUserData.value as UserIn);
if (response?.status === 201) {
router.push("/admin/manage/users");
}
}
return {
...toRefs(state),
userForm,
refNewUserForm,
handleSubmit,
groups,
selectedGroupId,
households,
validators,
};
},
});
</script>
<style lang="scss" scoped></style>

View file

@ -5,7 +5,6 @@
:close-on-content-click="false"
transition="scale-transition"
offset-y
max-width="290px"
min-width="auto"
>
<template #activator="{ props }">
@ -20,13 +19,17 @@
{{ $d(weekRange.start, "short") }} - {{ $d(weekRange.end, "short") }}
</v-btn>
</template>
<v-card>
<v-date-picker
v-model="state.range"
hide-header
:multiple="'range'"
:first-day-of-week="firstDayOfWeek"
:local="$i18n.locale"
>
/>
<v-card-text>
<v-text-field
v-model="numberOfDays"
type="number"
@ -34,15 +37,8 @@
:hint="$t('meal-plan.numberOfDays-hint')"
persistent-hint
/>
<v-spacer />
<v-btn
variant="text"
color="primary"
@click="state.picker = false"
>
{{ $t("general.ok") }}
</v-btn>
</v-date-picker>
</v-card-text>
</v-card>
</v-menu>
<div class="d-flex flex-wrap align-center justify-space-between mb-2">
@ -115,15 +111,11 @@ export default defineNuxtComponent({
const weekRange = computed(() => {
const sorted = [...state.value.range].sort((a, b) => a.getTime() - b.getTime());
if (sorted.length === 2) {
return {
start: sorted[0],
end: sorted[1],
};
// return {
// start: parseYYYYMMDD(sorted[0]),
// end: parseYYYYMMDD(sorted[1]),
// };
const start = sorted[0];
const end = sorted[sorted.length - 1];
if (start && end) {
return { start, end };
}
return {
start: new Date(),

View file

@ -6,8 +6,8 @@
"unique-name-error": "Les noms de recette doivent être uniques",
"recipe-created": "Recette créée",
"recipe-defaults": {
"ingredient-note": "100g de farine",
"step-text": "Les étapes de la recette ainsi que les autres champs de la page de recette supportent la syntaxe markdown.\n\n**Ajouter un lien**\n\n[Mon lien](https://demo.mealie.io)\n"
"ingredient-note": "1 Tasse de farine",
"step-text": "Les étapes de la recette ainsi que les autres champs de la page de recette supportent la syntaxe Markdown.\n\n**Ajouter un lien**\n\n[Mon lien](https://demo.mealie.io)\n"
},
"servings-text": {
"makes": "Fait",
@ -73,7 +73,7 @@
"subject": "E-mail de test Mealie",
"header_text": "E-mail de test",
"message_top": "Ceci est un mail de test.",
"message_bottom": "Veuillez cliquer sur le bouton ci-dessus pour accepter l'invitation.",
"message_bottom": "Veuillez cliquer sur le bouton ci-dessus pour tester l'E-mail.",
"button_text": "Ouvrir Mealie"
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -22,112 +22,112 @@
"carrot": {
"aliases": [],
"description": "",
"name": "carrot",
"plural_name": "carrots"
"name": "καρότο",
"plural_name": "καρότα"
},
"scallion": {
"aliases": [],
"description": "",
"name": "scallion",
"plural_name": "scallions"
"name": "φρέσκο κρεμμυδάκι",
"plural_name": "φρέσκα κρεμμυδάκια"
},
"zucchini": {
"aliases": [],
"description": "",
"name": "zucchini",
"plural_name": "zucchinis"
"name": "κολοκύθι",
"plural_name": "κολοκύθια"
},
"potato": {
"aliases": [],
"description": "",
"name": "potato",
"plural_name": "potatoes"
"name": "πατάτα",
"plural_name": "πατάτες"
},
"red onion": {
"aliases": [],
"description": "",
"name": "red onion",
"plural_name": "red onions"
"name": "κόκκινο κρεμμύδι",
"plural_name": "κόκκινα κρεμμύδια"
},
"yellow onion": {
"aliases": [],
"description": "",
"name": "yellow onion",
"plural_name": "yellow onions"
"name": "κίτρινο κρεμμύδι",
"plural_name": "κίτρινα κρεμμύδια"
},
"celery": {
"aliases": [],
"description": "",
"name": "celery",
"plural_name": "celeries"
"name": "σέλινο",
"plural_name": "σέλινα"
},
"jalapeno": {
"aliases": [],
"description": "",
"name": "jalapeno",
"plural_name": "jalapenoes"
"name": "πιπεριά χαλαπένιο",
"plural_name": "πιπεριές χαλαπένιο"
},
"avocado": {
"aliases": [],
"description": "",
"name": "avocado",
"plural_name": "avocados"
"name": "αβοκάντο",
"plural_name": "αβοκάντο"
},
"shallot": {
"aliases": [],
"description": "",
"name": "shallot",
"plural_name": "shallots"
"name": "ασκαλώνιο",
"plural_name": "ασκαλώνια"
},
"cherry tomato": {
"aliases": [],
"description": "",
"name": "cherry tomato",
"plural_name": "cherry tomatoes"
"name": "ντοματίνι",
"plural_name": "ντοματίνια"
},
"cucumber": {
"aliases": [],
"description": "",
"name": "cucumber",
"plural_name": "cucumbers"
"name": "αγγούρι",
"plural_name": "αγγούρια"
},
"spinach": {
"aliases": [],
"description": "",
"name": "spinach",
"plural_name": "spinaches"
"name": "σπανάκι",
"plural_name": "σπανάκι"
},
"sweet corn": {
"aliases": [],
"description": "",
"name": "sweet corn",
"plural_name": "sweet corns"
"name": "γλυκό καλαμπόκι",
"plural_name": "γλυκά καλαμπόκια"
},
"chile pepper": {
"aliases": [
"capsicum"
"καψικόν"
],
"description": "",
"name": "chile pepper",
"plural_name": "chile peppers"
"name": "πιπεριά τσίλι",
"plural_name": "πιπεριές τσίλι"
},
"sweet potato": {
"aliases": [],
"description": "",
"name": "sweet potato",
"plural_name": "sweet potatoes"
"name": "γλυκοπατάτα",
"plural_name": "γλυκοπατάτες"
},
"broccoli": {
"aliases": [],
"description": "",
"name": "broccoli",
"plural_name": "broccolis"
"name": "μπρόκολο",
"plural_name": "μπρόκολα"
},
"heart of palm": {
"aliases": [],
"description": "",
"name": "heart of palm",
"plural_name": "heart of palms"
"name": "καρδιά φοίνικα",
"plural_name": "καρδιές φοινίκων"
},
"baby green": {
"aliases": [],
@ -138,31 +138,31 @@
"pumpkin": {
"aliases": [],
"description": "",
"name": "pumpkin",
"plural_name": "pumpkins"
"name": "κολοκύθα",
"plural_name": "κολοκύθες"
},
"cauliflower": {
"aliases": [],
"description": "",
"name": "cauliflower",
"plural_name": "cauliflowers"
"name": "κουνουπίδι",
"plural_name": "κουνουπίδια"
},
"cabbage": {
"aliases": [],
"description": "",
"name": "cabbage",
"plural_name": "cabbages"
"name": "λάχανο",
"plural_name": "λάχανα"
},
"asparagu": {
"aliases": [],
"description": "",
"name": "asparagu",
"plural_name": "asparagus"
"name": "σπαράγγι",
"plural_name": "σπαράγγια"
},
"kale": {
"aliases": [],
"description": "",
"name": "kale",
"name": "λαχανίδα",
"plural_name": "kales"
},
"arugula": {
@ -186,14 +186,14 @@
"lettuce": {
"aliases": [],
"description": "",
"name": "lettuce",
"plural_name": "lettuces"
"name": "μαρούλι",
"plural_name": "μαρούλια"
},
"butternut squash": {
"aliases": [],
"description": "",
"name": "butternut squash",
"plural_name": "butternut squashes"
"name": "κολοκύθα βουτυράτη",
"plural_name": "κολοκύθες βουτυράτες"
},
"romaine": {
"aliases": [],
@ -298,55 +298,55 @@
"aliases": [],
"description": "",
"name": "serrano pepper",
"plural_name": "serrano peppers"
"plural_name": "πιπεριές σεράνο"
},
"cayenne pepper": {
"aliases": [],
"description": "",
"name": "cayenne pepper",
"plural_name": "cayenne peppers"
"name": "πιπεριά καγιέν",
"plural_name": "πιπεριές καγιέν"
},
"green tomato": {
"aliases": [],
"description": "",
"name": "green tomato",
"plural_name": "green tomatoes"
"name": "πράσινη ντομάτα",
"plural_name": "πράσινες ντομάτες"
},
"watercress": {
"aliases": [],
"description": "",
"name": "watercress",
"plural_name": "watercress"
"name": "νεροκάρδαμο",
"plural_name": "νεροκάρδαμα"
},
"iceberg": {
"aliases": [],
"description": "",
"name": "iceberg",
"plural_name": "icebergs"
"name": "άισμπεργκ",
"plural_name": "άισμπεργκς"
},
"mashed potato": {
"aliases": [],
"description": "",
"name": "mashed potato",
"plural_name": "mashed potatoes"
"name": "πατάτα πουρές",
"plural_name": "πατάτες πουρές"
},
"horseradish": {
"aliases": [],
"description": "",
"name": "horseradish",
"plural_name": "horseradishes"
"name": "χρένο",
"plural_name": "χρένα"
},
"chard": {
"aliases": [],
"description": "",
"name": "chard",
"plural_name": "chards"
"name": "σέσκουλο",
"plural_name": "σέσκουλα"
},
"pimiento": {
"aliases": [],
"description": "",
"name": "pimiento",
"plural_name": "pimientoes"
"name": "πιμιέντο",
"plural_name": "πιμιέντο"
},
"spaghetti squash": {
"aliases": [],
@ -368,7 +368,7 @@
},
"napa cabbage": {
"aliases": [
"chinese leaves"
"κινέζικα φύλλα"
],
"description": "",
"name": "napa cabbage",
@ -377,44 +377,44 @@
"celeriac": {
"aliases": [],
"description": "",
"name": "celeriac",
"plural_name": "celeriacs"
"name": "σέλινο",
"plural_name": "σέλινα"
},
"water chestnut": {
"aliases": [],
"description": "",
"name": "water chestnut",
"plural_name": "water chestnuts"
"name": "νεροκάστανο",
"plural_name": "νεροκάστανα"
},
"turnip": {
"aliases": [],
"description": "",
"name": "turnip",
"plural_name": "turnips"
"name": "γογγύλι",
"plural_name": "γογγύλια"
},
"thai chile pepper": {
"aliases": [],
"description": "",
"name": "thai chile pepper",
"plural_name": "thai chile peppers"
"name": "πιπεριά τσίλι ταϊλάνδης",
"plural_name": "πιπεριές τσίλι ταϊλάνδης"
},
"bok choy": {
"aliases": [],
"description": "",
"name": "bok choy",
"plural_name": "bok choy"
"name": "μποκ τσόι",
"plural_name": "μποκ τσόι"
},
"okra": {
"aliases": [],
"description": "",
"name": "okra",
"plural_name": "okra"
"name": "μπάμια",
"plural_name": "μπάμια"
},
"acorn squash": {
"aliases": [],
"description": "",
"name": "acorn squash",
"plural_name": "acorn squashes"
"name": "βελανοειδής κολοκύθα",
"plural_name": "βελανοειδείς κολοκύθες"
},
"corn cob": {
"aliases": [],
@ -443,8 +443,8 @@
"plantain": {
"aliases": [],
"description": "",
"name": "plantain",
"plural_name": "plantains"
"name": "μπανάνες Αντιλλών",
"plural_name": "μπανάνες Αντιλλών"
},
"leaf lettuce": {
"aliases": [],
@ -559,14 +559,14 @@
"kohlrabi": {
"aliases": [],
"description": "",
"name": "kohlrabi",
"plural_name": "kohlrabis"
"name": "λαχανόριζα",
"plural_name": "λαχανόριζες"
},
"fresno chile": {
"aliases": [],
"description": "",
"name": "fresno chile",
"plural_name": "fresno chiles"
"name": "πιπεριά φρέσνο",
"plural_name": "πιπεριές φρέσνο"
},
"delicata squash": {
"aliases": [],
@ -577,8 +577,8 @@
"frisee": {
"aliases": [],
"description": "",
"name": "frisee",
"plural_name": "frisees"
"name": "κατσαρό αντίδι",
"plural_name": "κατσαρά αντίδια"
},
"anaheim pepper": {
"aliases": [],
@ -648,7 +648,7 @@
"aliases": [],
"description": "",
"name": "apple",
"plural_name": "apples"
"plural_name": "μήλα"
},
"banana": {
"aliases": [],

View file

@ -5,7 +5,7 @@
"aliases": [],
"description": "",
"name": "garlic",
"plural_name": "garlics"
"plural_name": "garlic"
},
"onion": {
"aliases": [],
@ -28,8 +28,8 @@
"scallion": {
"aliases": [],
"description": "",
"name": "scallion",
"plural_name": "scallions"
"name": "spring onion",
"plural_name": "spring onions"
},
"zucchini": {
"aliases": [],
@ -59,7 +59,7 @@
"aliases": [],
"description": "",
"name": "celery",
"plural_name": "celeries"
"plural_name": "celery"
},
"jalapeno": {
"aliases": [],
@ -95,13 +95,13 @@
"aliases": [],
"description": "",
"name": "spinach",
"plural_name": "spinaches"
"plural_name": "spinach"
},
"sweet corn": {
"aliases": [],
"description": "",
"name": "sweetcorn",
"plural_name": "sweet corns"
"plural_name": "sweetcorn"
},
"chile pepper": {
"aliases": [
@ -121,7 +121,7 @@
"aliases": [],
"description": "",
"name": "broccoli",
"plural_name": "broccolis"
"plural_name": "broccoli"
},
"heart of palm": {
"aliases": [],
@ -156,20 +156,20 @@
"asparagu": {
"aliases": [],
"description": "",
"name": "asparagu",
"name": "asparagus",
"plural_name": "asparagus"
},
"kale": {
"aliases": [],
"description": "",
"name": "kale",
"plural_name": "kales"
"plural_name": "kale"
},
"arugula": {
"aliases": [],
"description": "",
"name": "arugula",
"plural_name": "arugulas"
"name": "rocket",
"plural_name": "rocket"
},
"leek": {
"aliases": [],
@ -180,8 +180,8 @@
"eggplant": {
"aliases": [],
"description": "",
"name": "eggplant",
"plural_name": "eggplants"
"name": "aubergine",
"plural_name": "aubergines"
},
"lettuce": {
"aliases": [],
@ -222,8 +222,8 @@
"sun dried tomato": {
"aliases": [],
"description": "",
"name": "sun dried tomato",
"plural_name": "sun dried tomatoes"
"name": "sun-dried tomato",
"plural_name": "sun-dried tomatoes"
},
"radish": {
"aliases": [],
@ -256,7 +256,7 @@
],
"description": "",
"name": "summer squash",
"plural_name": "summer squashes"
"plural_name": "courgettes"
},
"mixed green": {
"aliases": [],
@ -523,7 +523,7 @@
"rutabaga": {
"aliases": [],
"description": "",
"name": "rutabaga",
"name": "swede",
"plural_name": "rutabagas"
},
"belgian endive": {
@ -589,7 +589,7 @@
"cres": {
"aliases": [],
"description": "",
"name": "cres",
"name": "cress",
"plural_name": "cress"
},
"broccoli slaw": {
@ -701,8 +701,8 @@
"craisin": {
"aliases": [],
"description": "",
"name": "craisin",
"plural_name": "craisins"
"name": "dried cranberry",
"plural_name": "dried cranberries"
},
"pear": {
"aliases": [],
@ -732,7 +732,7 @@
"aliases": [],
"description": "",
"name": "rhubarb",
"plural_name": "rhubarbs"
"plural_name": "rhubarb"
},
"dried apricot": {
"aliases": [],
@ -1091,7 +1091,7 @@
"physali": {
"aliases": [],
"description": "",
"name": "physali",
"name": "physalis",
"plural_name": "physalis"
},
"tamarillo": {
@ -11491,7 +11491,7 @@
"aliases": [],
"description": "",
"name": "soy sauce",
"plural_name": "soy sauces"
"plural_name": "soy sauce"
},
"dijon mustard": {
"aliases": [],
@ -11611,7 +11611,7 @@
"aliases": [],
"description": "",
"name": "dark soy sauce",
"plural_name": "dark soy sauces"
"plural_name": "dark soy sauce"
},
"coconut amino": {
"aliases": [],
@ -11971,7 +11971,7 @@
"aliases": [],
"description": "",
"name": "mushroom soy sauce",
"plural_name": "mushroom soy sauces"
"plural_name": "mushroom soy sauce"
},
"yuzu kosho": {
"aliases": [],
@ -12705,7 +12705,7 @@
"aliases": [],
"description": "",
"name": "peanut butter",
"plural_name": "peanut butters"
"plural_name": "peanut butter"
},
"tomato paste": {
"aliases": [],

File diff suppressed because it is too large Load diff

View file

@ -4,50 +4,50 @@
"garlic": {
"aliases": [],
"description": "",
"name": "garlic",
"plural_name": "garlics"
"name": "allo",
"plural_name": "allos"
},
"onion": {
"aliases": [],
"description": "",
"name": "onion",
"plural_name": "onions"
"name": "cebola",
"plural_name": "cebolas"
},
"bell pepper": {
"aliases": [],
"description": "",
"name": "bell pepper",
"plural_name": "bell peppers"
"name": "pimento",
"plural_name": "pimentos"
},
"carrot": {
"aliases": [],
"description": "",
"name": "carrot",
"plural_name": "carrots"
"name": "cenoura",
"plural_name": "cenouras"
},
"scallion": {
"aliases": [],
"description": "",
"name": "scallion",
"plural_name": "scallions"
"name": "ceboliño",
"plural_name": "ceboliños"
},
"zucchini": {
"aliases": [],
"description": "",
"name": "zucchini",
"plural_name": "zucchinis"
"name": "cabaciña",
"plural_name": "cabaciñas"
},
"potato": {
"aliases": [],
"description": "",
"name": "potato",
"plural_name": "potatoes"
"name": "pataca",
"plural_name": "patacas"
},
"red onion": {
"aliases": [],
"description": "",
"name": "red onion",
"plural_name": "red onions"
"name": "cebola roxa",
"plural_name": "cebolas roxas"
},
"yellow onion": {
"aliases": [],
@ -82,20 +82,20 @@
"cherry tomato": {
"aliases": [],
"description": "",
"name": "cherry tomato",
"plural_name": "cherry tomatoes"
"name": "tomate-cereixa",
"plural_name": "tomates-cereixa"
},
"cucumber": {
"aliases": [],
"description": "",
"name": "cucumber",
"plural_name": "cucumbers"
"name": "cogombro",
"plural_name": "cogombros"
},
"spinach": {
"aliases": [],
"description": "",
"name": "spinach",
"plural_name": "spinaches"
"name": "espinaca",
"plural_name": "espinacas"
},
"sweet corn": {
"aliases": [],
@ -114,14 +114,14 @@
"sweet potato": {
"aliases": [],
"description": "",
"name": "sweet potato",
"plural_name": "sweet potatoes"
"name": "pataca-doce",
"plural_name": "patacas-doces"
},
"broccoli": {
"aliases": [],
"description": "",
"name": "broccoli",
"plural_name": "broccolis"
"name": "brócoli",
"plural_name": "brócolis"
},
"heart of palm": {
"aliases": [],
@ -138,8 +138,8 @@
"pumpkin": {
"aliases": [],
"description": "",
"name": "pumpkin",
"plural_name": "pumpkins"
"name": "cabaza",
"plural_name": "cabazas"
},
"cauliflower": {
"aliases": [],
@ -150,8 +150,8 @@
"cabbage": {
"aliases": [],
"description": "",
"name": "cabbage",
"plural_name": "cabbages"
"name": "repolo",
"plural_name": "repolos"
},
"asparagu": {
"aliases": [],
@ -174,8 +174,8 @@
"leek": {
"aliases": [],
"description": "",
"name": "leek",
"plural_name": "leeks"
"name": "porro",
"plural_name": "porros"
},
"eggplant": {
"aliases": [],
@ -186,8 +186,8 @@
"lettuce": {
"aliases": [],
"description": "",
"name": "lettuce",
"plural_name": "lettuces"
"name": "leituga",
"plural_name": "leitugas"
},
"butternut squash": {
"aliases": [],
@ -309,8 +309,8 @@
"green tomato": {
"aliases": [],
"description": "",
"name": "green tomato",
"plural_name": "green tomatoes"
"name": "tomate verde",
"plural_name": "tomates verdes"
},
"watercress": {
"aliases": [],
@ -339,8 +339,8 @@
"chard": {
"aliases": [],
"description": "",
"name": "chard",
"plural_name": "chards"
"name": "acelga",
"plural_name": "acelgas"
},
"pimiento": {
"aliases": [],
@ -629,8 +629,8 @@
"tomato": {
"aliases": [],
"description": "Yes they are a fruit",
"name": "tomato",
"plural_name": "tomatoes"
"name": "tomate",
"plural_name": "tomates"
},
"lemon": {
"aliases": [],
@ -641,14 +641,14 @@
"lime": {
"aliases": [],
"description": "",
"name": "lime",
"plural_name": "limes"
"name": "lima",
"plural_name": "limas"
},
"apple": {
"aliases": [],
"description": "",
"name": "apple",
"plural_name": "apples"
"name": "mazá",
"plural_name": "mazás"
},
"banana": {
"aliases": [],
@ -659,14 +659,14 @@
"orange": {
"aliases": [],
"description": "",
"name": "orange",
"plural_name": "oranges"
"name": "laranxa",
"plural_name": "laranxas"
},
"raisin": {
"aliases": [],
"description": "",
"name": "raisin",
"plural_name": "raisins"
"name": "uva-pasa",
"plural_name": "uvas-pasas"
},
"pineapple": {
"aliases": [],
@ -695,8 +695,8 @@
"coconut": {
"aliases": [],
"description": "",
"name": "coconut",
"plural_name": "coconuts"
"name": "coco",
"plural_name": "cocos"
},
"craisin": {
"aliases": [],
@ -707,14 +707,14 @@
"pear": {
"aliases": [],
"description": "",
"name": "pear",
"plural_name": "pears"
"name": "pera",
"plural_name": "peras"
},
"grape": {
"aliases": [],
"description": "",
"name": "grape",
"plural_name": "grapes"
"name": "uva",
"plural_name": "uvas"
},
"pomegranate": {
"aliases": [],
@ -923,8 +923,8 @@
"dragon fruit": {
"aliases": [],
"description": "",
"name": "dragon fruit",
"plural_name": "dragon fruits"
"name": "pitaia",
"plural_name": "pitaias"
},
"mixed fruit": {
"aliases": [],
@ -1477,8 +1477,8 @@
"cherry": {
"aliases": [],
"description": "",
"name": "cherry",
"plural_name": "cherries"
"name": "cereixa",
"plural_name": "cereixas"
},
"blackberry": {
"aliases": [],
@ -2027,8 +2027,8 @@
"cheese": {
"aliases": [],
"description": "",
"name": "cheese",
"plural_name": "cheeses"
"name": "queixo",
"plural_name": "queixos"
},
"mozzarella": {
"aliases": [],
@ -2613,20 +2613,20 @@
"butter": {
"aliases": [],
"description": "",
"name": "butter",
"plural_name": "butter"
"name": "manteiga",
"plural_name": "manteigas"
},
"egg": {
"aliases": [],
"description": "",
"name": "egg",
"plural_name": "eggs"
"name": "ovo",
"plural_name": "ovos"
},
"milk": {
"aliases": [],
"description": "",
"name": "milk",
"plural_name": "milks"
"name": "leite",
"plural_name": "leites"
},
"heavy cream": {
"aliases": [],
@ -2649,8 +2649,8 @@
"yogurt": {
"aliases": [],
"description": "",
"name": "yogurt",
"plural_name": "yogurts"
"name": "iogurte",
"plural_name": "iogurtes"
},
"greek yogurt": {
"aliases": [],
@ -3279,7 +3279,7 @@
"rice milk": {
"aliases": [],
"description": "",
"name": "rice milk",
"name": "leite de arroz",
"plural_name": "rice milks"
},
"vegan sour cream": {
@ -4081,8 +4081,8 @@
"rabbit": {
"aliases": [],
"description": "",
"name": "rabbit",
"plural_name": "rabbits"
"name": "coello",
"plural_name": "coellos"
},
"pork cutlet": {
"aliases": [],

File diff suppressed because it is too large Load diff

View file

@ -4,31 +4,31 @@
"garlic": {
"aliases": [],
"description": "",
"name": "garlic",
"plural_name": "garlics"
"name": "fokhagyma",
"plural_name": "fokhagyma"
},
"onion": {
"aliases": [],
"description": "",
"name": "onion",
"plural_name": "onions"
"name": "hagyma",
"plural_name": "hagyma"
},
"bell pepper": {
"aliases": [],
"description": "",
"name": "bell pepper",
"plural_name": "bell peppers"
"name": "kaliforniai paprika",
"plural_name": "kaliforniai paprika"
},
"carrot": {
"aliases": [],
"description": "",
"name": "carrot",
"plural_name": "carrots"
"name": "sárgarépa",
"plural_name": "sárgarépa"
},
"scallion": {
"aliases": [],
"description": "",
"name": "scallion",
"name": "újhagyma",
"plural_name": "zöldhagyma"
},
"zucchini": {
@ -52,8 +52,8 @@
"yellow onion": {
"aliases": [],
"description": "",
"name": "yellow onion",
"plural_name": "yellow onions"
"name": "vöröshagyma",
"plural_name": "vöröshagyma"
},
"celery": {
"aliases": [],
@ -82,8 +82,8 @@
"cherry tomato": {
"aliases": [],
"description": "",
"name": "cherry tomato",
"plural_name": "cherry tomatoes"
"name": "koktélparadicsom",
"plural_name": "koktélparadicsom"
},
"cucumber": {
"aliases": [],
@ -105,11 +105,11 @@
},
"chile pepper": {
"aliases": [
"capsicum"
"kaliforniai paprika"
],
"description": "",
"name": "chile pepper",
"plural_name": "chile peppers"
"name": "chili paprika",
"plural_name": "chili paprika"
},
"sweet potato": {
"aliases": [],
@ -126,20 +126,20 @@
"heart of palm": {
"aliases": [],
"description": "",
"name": "heart of palm",
"plural_name": "heart of palms"
"name": "pálmarügy",
"plural_name": "pálmarügy"
},
"baby green": {
"aliases": [],
"description": "",
"name": "baby green",
"plural_name": "baby greens"
"name": "salátakeverék",
"plural_name": "salátakeverék"
},
"pumpkin": {
"aliases": [],
"description": "",
"name": "pumpkin",
"plural_name": "pumpkins"
"name": "sütőtök",
"plural_name": "sütőtök"
},
"cauliflower": {
"aliases": [],
@ -151,258 +151,258 @@
"aliases": [],
"description": "",
"name": "káposzta",
"plural_name": "cabbages"
"plural_name": "fejes káposzta"
},
"asparagu": {
"aliases": [],
"description": "",
"name": "asparagu",
"plural_name": "asparagus"
"name": "spárga",
"plural_name": "spárga"
},
"kale": {
"aliases": [],
"description": "",
"name": "kale",
"plural_name": "kales"
"name": "kelkáposzta",
"plural_name": "kelkáposzta"
},
"arugula": {
"aliases": [],
"description": "",
"name": "arugula",
"plural_name": "arugulas"
"name": "rukkola",
"plural_name": "rukkola"
},
"leek": {
"aliases": [],
"description": "",
"name": "leek",
"plural_name": "leeks"
"name": "póréhagyma",
"plural_name": "póréhagyma"
},
"eggplant": {
"aliases": [],
"description": "",
"name": "eggplant",
"plural_name": "eggplants"
"name": "padlizsán",
"plural_name": "padlizsán"
},
"lettuce": {
"aliases": [],
"description": "",
"name": "lettuce",
"plural_name": "lettuces"
"name": "saláta",
"plural_name": "saláta"
},
"butternut squash": {
"aliases": [],
"description": "",
"name": "butternut squash",
"plural_name": "butternut squashes"
"name": "kanadai sütőtök",
"plural_name": "kanadai sütőtök"
},
"romaine": {
"aliases": [],
"description": "",
"name": "romaine",
"plural_name": "romaines"
"name": "római saláta",
"plural_name": "római saláta"
},
"beetroot": {
"aliases": [],
"description": "",
"name": "beetroot",
"plural_name": "beetroots"
"name": "cékla",
"plural_name": "cékla"
},
"brussels sprout": {
"aliases": [],
"description": "",
"name": "brussels sprout",
"plural_name": "brussels sprouts"
"name": "kelbimbó",
"plural_name": "kelbimbó"
},
"fennel": {
"aliases": [],
"description": "",
"name": "fennel",
"plural_name": "fennels"
"name": "édeskömény",
"plural_name": "édeskömény"
},
"sun dried tomato": {
"aliases": [],
"description": "",
"name": "sun dried tomato",
"plural_name": "sun dried tomatoes"
"name": "szárított paradicsom",
"plural_name": "szárított paradicsom"
},
"radish": {
"aliases": [],
"description": "",
"name": "radish",
"plural_name": "radishes"
"name": "retek",
"plural_name": "retkek"
},
"red cabbage": {
"aliases": [],
"description": "",
"name": "red cabbage",
"plural_name": "red cabbages"
"name": "vöröskáposzta",
"plural_name": "vöröskáposzta"
},
"artichoke": {
"aliases": [],
"description": "",
"name": "artichoke",
"plural_name": "artichokes"
"name": "articsóka",
"plural_name": "articsóka"
},
"new potato": {
"aliases": [],
"description": "",
"name": "new potato",
"plural_name": "new potatoes"
"name": "újburgonya",
"plural_name": "újburgonya"
},
"summer squash": {
"aliases": [
"courgette",
"gem squash"
"cukkini",
"kis tök"
],
"description": "",
"name": "summer squash",
"plural_name": "summer squashes"
"name": "főzőtök",
"plural_name": "főzőtök"
},
"mixed green": {
"aliases": [],
"description": "",
"name": "mixed green",
"plural_name": "mixed greens"
"name": "salátakeverék",
"plural_name": "salátakeverék"
},
"parsnip": {
"aliases": [],
"description": "",
"name": "parsnip",
"plural_name": "parsnips"
"name": "paszternák",
"plural_name": "paszternák"
},
"baby carrot": {
"aliases": [],
"description": "",
"name": "baby carrot",
"plural_name": "baby carrots"
"name": "bébirépa",
"plural_name": "bébirépa"
},
"mixed vegetable": {
"aliases": [],
"description": "",
"name": "mixed vegetable",
"plural_name": "mixed vegetables"
"name": "zöldségkeverék",
"plural_name": "zöldségkeverék"
},
"poblano pepper": {
"aliases": [],
"description": "",
"name": "poblano pepper",
"plural_name": "poblano peppers"
"name": "poblano paprika",
"plural_name": "poblano paprika"
},
"sweet pepper": {
"aliases": [],
"description": "",
"name": "sweet pepper",
"plural_name": "sweet peppers"
"name": "édes paprika",
"plural_name": "édes paprika"
},
"serrano pepper": {
"aliases": [],
"description": "",
"name": "serrano pepper",
"plural_name": "serrano peppers"
"name": "serrano paprika",
"plural_name": "serrano paprika"
},
"cayenne pepper": {
"aliases": [],
"description": "",
"name": "cayenne pepper",
"plural_name": "cayenne peppers"
"name": "cayenne bors",
"plural_name": "cayenne bors"
},
"green tomato": {
"aliases": [],
"description": "",
"name": "green tomato",
"plural_name": "green tomatoes"
"name": "zöld paradicsom",
"plural_name": "zöld paradicsom"
},
"watercress": {
"aliases": [],
"description": "",
"name": "watercress",
"plural_name": "watercress"
"name": "vízitorma",
"plural_name": "vízitorma"
},
"iceberg": {
"aliases": [],
"description": "",
"name": "iceberg",
"plural_name": "icebergs"
"name": "jégsaláta",
"plural_name": "jégsaláta"
},
"mashed potato": {
"aliases": [],
"description": "",
"name": "mashed potato",
"plural_name": "mashed potatoes"
"name": "burgonyapüré",
"plural_name": "burgonyapüré"
},
"horseradish": {
"aliases": [],
"description": "",
"name": "horseradish",
"plural_name": "horseradishes"
"name": "torma",
"plural_name": "torma"
},
"chard": {
"aliases": [],
"description": "",
"name": "chard",
"plural_name": "chards"
"name": "mángold",
"plural_name": "mángold"
},
"pimiento": {
"aliases": [],
"description": "",
"name": "pimiento",
"plural_name": "pimientoes"
"name": "kápia paprika",
"plural_name": "kápia paprika"
},
"spaghetti squash": {
"aliases": [],
"description": "",
"name": "spaghetti squash",
"plural_name": "spaghetti squashes"
"name": "spagettitök",
"plural_name": "spagettitök"
},
"butter lettuce": {
"aliases": [],
"description": "",
"name": "butter lettuce",
"plural_name": "butter lettuces"
"name": "fejes saláta",
"plural_name": "fejes saláta"
},
"hash brown": {
"aliases": [],
"description": "",
"name": "hash brown",
"plural_name": "hash browns"
"name": "tócsni",
"plural_name": "tócsni"
},
"napa cabbage": {
"aliases": [
"chinese leaves"
"kínai kel"
],
"description": "",
"name": "napa cabbage",
"plural_name": "napa cabbages"
"name": "kínai kel",
"plural_name": "kínai kel"
},
"celeriac": {
"aliases": [],
"description": "",
"name": "celeriac",
"plural_name": "celeriacs"
"name": "zeller",
"plural_name": "zeller"
},
"water chestnut": {
"aliases": [],
"description": "",
"name": "water chestnut",
"plural_name": "water chestnuts"
"name": "vízigesztenye",
"plural_name": "vízigesztenye"
},
"turnip": {
"aliases": [],
"description": "",
"name": "turnip",
"plural_name": "turnips"
"name": "tarlórépa",
"plural_name": "tarlórépa"
},
"thai chile pepper": {
"aliases": [],
"description": "",
"name": "thai chile pepper",
"plural_name": "thai chile peppers"
"name": "thai csili paprika",
"plural_name": "thai csili paprika"
},
"bok choy": {
"aliases": [],
"description": "",
"name": "bok choy",
"plural_name": "bok choy"
"name": "bordáskel",
"plural_name": "bordáskel"
},
"okra": {
"aliases": [],
@ -413,130 +413,130 @@
"acorn squash": {
"aliases": [],
"description": "",
"name": "acorn squash",
"plural_name": "acorn squashes"
"name": "makktök",
"plural_name": "makktök"
},
"corn cob": {
"aliases": [],
"description": "",
"name": "corn cob",
"plural_name": "corn cobs"
"name": "kukoricacső",
"plural_name": "kukoricacső"
},
"radicchio": {
"aliases": [],
"description": "",
"name": "radicchio",
"plural_name": "radicchio"
"name": "vörös cikória",
"plural_name": "vörös cikória"
},
"pearl onion": {
"aliases": [],
"description": "",
"name": "pearl onion",
"plural_name": "pearl onions"
"name": "gyöngyhagyma",
"plural_name": "gyöngyhagyma"
},
"tenderstem broccoli": {
"aliases": [],
"description": "",
"name": "tenderstem broccoli",
"plural_name": "tenderstem broccolis"
"name": "brokkolini",
"plural_name": "brokkolini"
},
"plantain": {
"aliases": [],
"description": "",
"name": "plantain",
"plural_name": "plantains"
"name": "főzőbanán",
"plural_name": "főzőbanán"
},
"leaf lettuce": {
"aliases": [],
"description": "",
"name": "leaf lettuce",
"plural_name": "leaf lettuces"
"name": "saláta",
"plural_name": "saláta"
},
"pepperoncini": {
"aliases": [],
"description": "",
"name": "pepperoncini",
"plural_name": "pepperoncinis"
"name": "pepperoncini paprika",
"plural_name": "pepperoncini paprika"
},
"baby bok choy": {
"aliases": [],
"description": "",
"name": "baby bok choy",
"plural_name": "baby bok choys"
"name": "bébi bordáskel",
"plural_name": "bébi bordáskel"
},
"jicama": {
"aliases": [],
"description": "",
"name": "jicama",
"plural_name": "jicamas"
"name": "jícama",
"plural_name": "jícama"
},
"endive": {
"aliases": [],
"description": "",
"name": "endive",
"plural_name": "endives"
"name": "endívia",
"plural_name": "endívia"
},
"habanero pepper": {
"aliases": [],
"description": "",
"name": "habanero pepper",
"plural_name": "habanero peppers"
"name": "habanero paprika",
"plural_name": "habanero paprika"
},
"corn husk": {
"aliases": [
"maize"
"csemegekukorica"
],
"description": "",
"name": "corn husk",
"plural_name": "corn husks"
"name": "kukoricacsuhé",
"plural_name": "kukoricacsuhé"
},
"collard green": {
"aliases": [],
"description": "",
"name": "collard green",
"plural_name": "collard greens"
"name": "leveles kel",
"plural_name": "leveles kel"
},
"french-fried onion": {
"aliases": [],
"description": "",
"name": "french-fried onion",
"plural_name": "french-fried onions"
"name": "ropogós sült hagyma",
"plural_name": "ropogós sült hagyma"
},
"daikon": {
"aliases": [],
"description": "",
"name": "daikon",
"plural_name": "daikons"
"name": "jégcsapretek",
"plural_name": "jégcsapretek"
},
"baby corn": {
"aliases": [],
"description": "",
"name": "baby corn",
"plural_name": "baby corns"
"name": "bébikukorica",
"plural_name": "bébikukorica"
},
"broccoli rabe": {
"aliases": [],
"description": "",
"name": "broccoli rabe",
"plural_name": "broccoli rabes"
"name": "rapini",
"plural_name": "rapini"
},
"rutabaga": {
"aliases": [],
"description": "",
"name": "rutabaga",
"plural_name": "rutabagas"
"name": "karórépa",
"plural_name": "karórépa"
},
"belgian endive": {
"aliases": [],
"description": "",
"name": "belgian endive",
"plural_name": "belgian endives"
"name": "cikória",
"plural_name": "cikória"
},
"yam": {
"aliases": [],
"description": "",
"name": "yam",
"plural_name": "yams"
"name": "jamgyökér",
"plural_name": "jamgyökér"
},
"ancho chile pepper": {
"aliases": [],
@ -602,25 +602,25 @@
"aliases": [],
"description": "",
"name": "arbol chile pepper",
"plural_name": "arbol chile peppers"
"plural_name": "arbol csili paprika"
},
"golden beet": {
"aliases": [],
"description": "",
"name": "golden beet",
"plural_name": "golden beets"
"name": "sárga cékla",
"plural_name": "sárga cékla"
},
"pea shoot": {
"aliases": [],
"description": "",
"name": "pea shoot",
"plural_name": "pea shoots"
"name": "borsócsíra",
"plural_name": "borsócsíra"
},
"alfalfa": {
"aliases": [],
"description": "",
"name": "alfalfa",
"plural_name": "alfalfas"
"name": "lucernacsíra",
"plural_name": "lucernacsíra"
}
}
},
@ -628,129 +628,129 @@
"foods": {
"tomato": {
"aliases": [],
"description": "Yes they are a fruit",
"name": "tomato",
"plural_name": "tomatoes"
"description": "Igen, gyümölcs",
"name": "paradicsom",
"plural_name": "paradicsom"
},
"lemon": {
"aliases": [],
"description": "",
"name": "lemon",
"plural_name": "lemons"
"name": "citrom",
"plural_name": "citrom"
},
"lime": {
"aliases": [],
"description": "",
"name": "lime",
"plural_name": "limes"
"name": "zöldcitrom",
"plural_name": "zöldcitrom"
},
"apple": {
"aliases": [],
"description": "",
"name": "apple",
"plural_name": "apples"
"name": "alma",
"plural_name": "alma"
},
"banana": {
"aliases": [],
"description": "",
"name": "banana",
"plural_name": "bananas"
"name": "banán",
"plural_name": "banán"
},
"orange": {
"aliases": [],
"description": "",
"name": "orange",
"plural_name": "oranges"
"name": "narancs",
"plural_name": "narancs"
},
"raisin": {
"aliases": [],
"description": "",
"name": "raisin",
"plural_name": "raisins"
"name": "mazsola",
"plural_name": "mazsola"
},
"pineapple": {
"aliases": [],
"description": "",
"name": "pineapple",
"plural_name": "pineapples"
"name": "ananász",
"plural_name": "ananász"
},
"mango": {
"aliases": [],
"description": "",
"name": "mango",
"plural_name": "mangoes"
"name": "mangó",
"plural_name": "mangó"
},
"peach": {
"aliases": [],
"description": "",
"name": "peach",
"plural_name": "peaches"
"name": "őszibarack",
"plural_name": "őszibarack"
},
"date": {
"aliases": [],
"description": "",
"name": "date",
"plural_name": "dates"
"name": "datolya",
"plural_name": "datolya"
},
"coconut": {
"aliases": [],
"description": "",
"name": "coconut",
"plural_name": "coconuts"
"name": "kókuszdió",
"plural_name": "kókuszdió"
},
"craisin": {
"aliases": [],
"description": "",
"name": "craisin",
"plural_name": "craisins"
"name": "aszalt vörösáfonya",
"plural_name": "aszalt vörösáfonya"
},
"pear": {
"aliases": [],
"description": "",
"name": "pear",
"plural_name": "pears"
"name": "körte",
"plural_name": "körte"
},
"grape": {
"aliases": [],
"description": "",
"name": "grape",
"plural_name": "grapes"
"name": "szőlő",
"plural_name": "szőlő"
},
"pomegranate": {
"aliases": [],
"description": "",
"name": "pomegranate",
"plural_name": "pomegranates"
"name": "gránátalma",
"plural_name": "gránátalma"
},
"watermelon": {
"aliases": [],
"description": "",
"name": "watermelon",
"plural_name": "watermelons"
"name": "görögdinnye",
"plural_name": "görögdinnye"
},
"rhubarb": {
"aliases": [],
"description": "",
"name": "rhubarb",
"plural_name": "rhubarbs"
"name": "rebarbara",
"plural_name": "rebarbara"
},
"dried apricot": {
"aliases": [],
"description": "",
"name": "dried apricot",
"plural_name": "dried apricots"
"name": "aszalt sárgabarack",
"plural_name": "aszalt sárgabarack"
},
"kiwi": {
"aliases": [],
"description": "",
"name": "kiwi",
"plural_name": "kiwis"
"name": "kivi",
"plural_name": "kivi"
},
"grapefruit": {
"aliases": [],
"description": "",
"name": "grapefruit",
"plural_name": "grapefruits"
"plural_name": "grapefruit"
},
"plum": {
"aliases": [],
@ -905,86 +905,86 @@
"banana chip": {
"aliases": [],
"description": "",
"name": "banana chip",
"plural_name": "banana chips"
"name": "banánchips",
"plural_name": "banánchips"
},
"kumquat": {
"aliases": [],
"description": "",
"name": "kumquat",
"plural_name": "kumquats"
"name": "törpemandarin",
"plural_name": "törpemandarin"
},
"jackfruit": {
"aliases": [],
"description": "",
"name": "jackfruit",
"plural_name": "jackfruits"
"plural_name": "jackfruit"
},
"dragon fruit": {
"aliases": [],
"description": "",
"name": "dragon fruit",
"plural_name": "dragon fruits"
"name": "sárkánygyümölcs",
"plural_name": "sárkánygyümölcs"
},
"mixed fruit": {
"aliases": [],
"description": "",
"name": "mixed fruit",
"plural_name": "mixed fruits"
"name": "vegyes gyümölcs",
"plural_name": "vegyes gyümölcs"
},
"asian pear": {
"aliases": [],
"description": "",
"name": "asian pear",
"plural_name": "asian pears"
"name": "japán körte",
"plural_name": "japán körte"
},
"lychee": {
"aliases": [],
"description": "",
"name": "lychee",
"plural_name": "lychees"
"name": "licsi",
"plural_name": "licsi"
},
"young coconut": {
"aliases": [],
"description": "",
"name": "young coconut",
"plural_name": "young coconuts"
"name": "zsenge kókuszdió",
"plural_name": "zsenge kókuszdió"
},
"kaffir lime": {
"aliases": [],
"description": "",
"name": "kaffir lime",
"plural_name": "kaffir limes"
"plural_name": "kaffir lime"
},
"star fruit": {
"aliases": [],
"description": "",
"name": "star fruit",
"plural_name": "star fruits"
"name": "csillaggyümölcs",
"plural_name": "csillaggyümölcs"
},
"green papaya": {
"aliases": [],
"description": "",
"name": "green papaya",
"plural_name": "green papayas"
"name": "zöld papaya",
"plural_name": "zöld papaya"
},
"pomelo": {
"aliases": [],
"description": "",
"name": "pomelo",
"plural_name": "pomeloes"
"plural_name": "pomelo"
},
"chestnut puree": {
"aliases": [],
"description": "",
"name": "chestnut puree",
"plural_name": "chestnut purees"
"name": "gesztenyepüré",
"plural_name": "gesztenyepüré"
},
"prickly pear": {
"aliases": [],
"description": "",
"name": "prickly pear",
"plural_name": "prickly pears"
"name": "kaktuszfüge",
"plural_name": "kaktuszfüge"
},
"calamansi": {
"aliases": [],

View file

@ -4,98 +4,98 @@
"garlic": {
"aliases": [],
"description": "",
"name": "garlic",
"plural_name": "garlics"
"name": "aglio",
"plural_name": "agli"
},
"onion": {
"aliases": [],
"description": "",
"name": "onion",
"plural_name": "onions"
"name": "cipolla",
"plural_name": "cipolle"
},
"bell pepper": {
"aliases": [],
"description": "",
"name": "bell pepper",
"plural_name": "bell peppers"
"name": "peperone",
"plural_name": "peperoni"
},
"carrot": {
"aliases": [],
"description": "",
"name": "carrot",
"plural_name": "carrots"
"name": "carota",
"plural_name": "carote"
},
"scallion": {
"aliases": [],
"description": "",
"name": "scallion",
"plural_name": "scallions"
"name": "cipollotto",
"plural_name": "cipollotti"
},
"zucchini": {
"aliases": [],
"description": "",
"name": "zucchini",
"plural_name": "zucchinis"
"name": "zucchino",
"plural_name": "zucchini"
},
"potato": {
"aliases": [],
"description": "",
"name": "potato",
"plural_name": "potatoes"
"name": "patata",
"plural_name": "patate"
},
"red onion": {
"aliases": [],
"description": "",
"name": "red onion",
"plural_name": "red onions"
"name": "cipolla rossa",
"plural_name": "cipolle rosse"
},
"yellow onion": {
"aliases": [],
"description": "",
"name": "yellow onion",
"plural_name": "yellow onions"
"name": "cipolla gialla",
"plural_name": "cipolle gialle"
},
"celery": {
"aliases": [],
"description": "",
"name": "celery",
"plural_name": "celeries"
"name": "sedano",
"plural_name": "sedani"
},
"jalapeno": {
"aliases": [],
"description": "",
"name": "jalapeno",
"plural_name": "jalapenoes"
"name": "jalapeño",
"plural_name": "jalapeño"
},
"avocado": {
"aliases": [],
"description": "",
"name": "avocado",
"plural_name": "avocados"
"plural_name": "avocado"
},
"shallot": {
"aliases": [],
"description": "",
"name": "shallot",
"plural_name": "shallots"
"name": "scalogno",
"plural_name": "scalogni"
},
"cherry tomato": {
"aliases": [],
"description": "",
"name": "cherry tomato",
"plural_name": "cherry tomatoes"
"name": "pomodorino",
"plural_name": "pomodorini"
},
"cucumber": {
"aliases": [],
"description": "",
"name": "cucumber",
"plural_name": "cucumbers"
"name": "cetriolo",
"plural_name": "cetrioli"
},
"spinach": {
"aliases": [],
"description": "",
"name": "spinach",
"plural_name": "spinaches"
"name": "spinaci",
"plural_name": "spinaci"
},
"sweet corn": {
"aliases": [],
@ -108,26 +108,26 @@
"capsicum"
],
"description": "",
"name": "chile pepper",
"plural_name": "chile peppers"
"name": "peperoncino",
"plural_name": "peperoncini"
},
"sweet potato": {
"aliases": [],
"description": "",
"name": "sweet potato",
"plural_name": "sweet potatoes"
"name": "patata dolce",
"plural_name": "patate dolci"
},
"broccoli": {
"aliases": [],
"description": "",
"name": "broccoli",
"plural_name": "broccolis"
"name": "broccolo",
"plural_name": "broccoli"
},
"heart of palm": {
"aliases": [],
"description": "",
"name": "heart of palm",
"plural_name": "heart of palms"
"name": "cuore di palma",
"plural_name": "cuori di palma"
},
"baby green": {
"aliases": [],
@ -138,19 +138,19 @@
"pumpkin": {
"aliases": [],
"description": "",
"name": "pumpkin",
"plural_name": "pumpkins"
"name": "zucca",
"plural_name": "zucche"
},
"cauliflower": {
"aliases": [],
"description": "",
"name": "cauliflower",
"plural_name": "cauliflowers"
"name": "cavolfiore",
"plural_name": "cavolfiori"
},
"cabbage": {
"aliases": [],
"description": "",
"name": "cabbage",
"name": "cavolo",
"plural_name": "cabbages"
},
"asparagu": {

File diff suppressed because it is too large Load diff

View file

@ -4,14 +4,14 @@
"garlic": {
"aliases": [],
"description": "",
"name": "garlic",
"name": "hvitløk",
"plural_name": "garlics"
},
"onion": {
"aliases": [],
"description": "",
"name": "onion",
"plural_name": "onions"
"name": "løk",
"plural_name": "løker"
},
"bell pepper": {
"aliases": [],
@ -22,8 +22,8 @@
"carrot": {
"aliases": [],
"description": "",
"name": "carrot",
"plural_name": "carrots"
"name": "gulrot",
"plural_name": "gulroter"
},
"scallion": {
"aliases": [],
@ -40,14 +40,14 @@
"potato": {
"aliases": [],
"description": "",
"name": "potato",
"plural_name": "potatoes"
"name": "potet",
"plural_name": "poteter"
},
"red onion": {
"aliases": [],
"description": "",
"name": "red onion",
"plural_name": "red onions"
"name": "rødløk",
"plural_name": "rødløker"
},
"yellow onion": {
"aliases": [],
@ -58,8 +58,8 @@
"celery": {
"aliases": [],
"description": "",
"name": "celery",
"plural_name": "celeries"
"name": "seleri",
"plural_name": "selerier"
},
"jalapeno": {
"aliases": [],
@ -70,14 +70,14 @@
"avocado": {
"aliases": [],
"description": "",
"name": "avocado",
"plural_name": "avocados"
"name": "avakado",
"plural_name": "avokadoer"
},
"shallot": {
"aliases": [],
"description": "",
"name": "shallot",
"plural_name": "shallots"
"name": "sjalottløk",
"plural_name": "sjalottløk"
},
"cherry tomato": {
"aliases": [],
@ -88,13 +88,13 @@
"cucumber": {
"aliases": [],
"description": "",
"name": "cucumber",
"plural_name": "cucumbers"
"name": "agurk",
"plural_name": "agurker"
},
"spinach": {
"aliases": [],
"description": "",
"name": "spinach",
"name": "spinat",
"plural_name": "spinaches"
},
"sweet corn": {
@ -105,7 +105,7 @@
},
"chile pepper": {
"aliases": [
"capsicum"
"chilipepper"
],
"description": "",
"name": "chile pepper",
@ -114,13 +114,13 @@
"sweet potato": {
"aliases": [],
"description": "",
"name": "sweet potato",
"name": "søtpotet",
"plural_name": "sweet potatoes"
},
"broccoli": {
"aliases": [],
"description": "",
"name": "broccoli",
"name": "brokkoli",
"plural_name": "broccolis"
},
"heart of palm": {
@ -138,19 +138,19 @@
"pumpkin": {
"aliases": [],
"description": "",
"name": "pumpkin",
"name": "gresskar",
"plural_name": "pumpkins"
},
"cauliflower": {
"aliases": [],
"description": "",
"name": "cauliflower",
"name": "blomkål",
"plural_name": "cauliflowers"
},
"cabbage": {
"aliases": [],
"description": "",
"name": "cabbage",
"name": "kål",
"plural_name": "cabbages"
},
"asparagu": {
@ -180,13 +180,13 @@
"eggplant": {
"aliases": [],
"description": "",
"name": "eggplant",
"name": "aubergine",
"plural_name": "eggplants"
},
"lettuce": {
"aliases": [],
"description": "",
"name": "lettuce",
"name": "salat",
"plural_name": "lettuces"
},
"butternut squash": {
@ -229,7 +229,7 @@
"aliases": [],
"description": "",
"name": "radish",
"plural_name": "radishes"
"plural_name": "reddiker"
},
"red cabbage": {
"aliases": [],
@ -327,8 +327,8 @@
"mashed potato": {
"aliases": [],
"description": "",
"name": "mashed potato",
"plural_name": "mashed potatoes"
"name": "potetmos",
"plural_name": "potetmos"
},
"horseradish": {
"aliases": [],
@ -363,8 +363,8 @@
"hash brown": {
"aliases": [],
"description": "",
"name": "hash brown",
"plural_name": "hash browns"
"name": "røstipotet",
"plural_name": "røstipoteter"
},
"napa cabbage": {
"aliases": [
@ -629,14 +629,14 @@
"tomato": {
"aliases": [],
"description": "Yes they are a fruit",
"name": "tomato",
"plural_name": "tomatoes"
"name": "tomat",
"plural_name": "tomater"
},
"lemon": {
"aliases": [],
"description": "",
"name": "lemon",
"plural_name": "lemons"
"name": "sitron",
"plural_name": "sitroner"
},
"lime": {
"aliases": [],
@ -647,32 +647,32 @@
"apple": {
"aliases": [],
"description": "",
"name": "apple",
"name": "eple",
"plural_name": "apples"
},
"banana": {
"aliases": [],
"description": "",
"name": "banana",
"name": "banan",
"plural_name": "bananas"
},
"orange": {
"aliases": [],
"description": "",
"name": "orange",
"name": "appelsin",
"plural_name": "oranges"
},
"raisin": {
"aliases": [],
"description": "",
"name": "raisin",
"plural_name": "raisins"
"name": "rosin",
"plural_name": "rosiner"
},
"pineapple": {
"aliases": [],
"description": "",
"name": "pineapple",
"plural_name": "pineapples"
"name": "ananas",
"plural_name": "ananaser"
},
"mango": {
"aliases": [],
@ -683,20 +683,20 @@
"peach": {
"aliases": [],
"description": "",
"name": "peach",
"name": "fersken",
"plural_name": "peaches"
},
"date": {
"aliases": [],
"description": "",
"name": "date",
"plural_name": "dates"
"name": "daddel",
"plural_name": "dadler"
},
"coconut": {
"aliases": [],
"description": "",
"name": "coconut",
"plural_name": "coconuts"
"name": "kokosnøtt",
"plural_name": "kokosnøtter"
},
"craisin": {
"aliases": [],
@ -707,14 +707,14 @@
"pear": {
"aliases": [],
"description": "",
"name": "pear",
"plural_name": "pears"
"name": "pære",
"plural_name": "pærer"
},
"grape": {
"aliases": [],
"description": "",
"name": "grape",
"plural_name": "grapes"
"name": "drue",
"plural_name": "druer"
},
"pomegranate": {
"aliases": [],
@ -725,13 +725,13 @@
"watermelon": {
"aliases": [],
"description": "",
"name": "watermelon",
"plural_name": "watermelons"
"name": "vannmelon",
"plural_name": "vannmeloner"
},
"rhubarb": {
"aliases": [],
"description": "",
"name": "rhubarb",
"name": "rabarbra",
"plural_name": "rhubarbs"
},
"dried apricot": {
@ -767,7 +767,7 @@
"apricot": {
"aliases": [],
"description": "",
"name": "apricot",
"name": "aprikos",
"plural_name": "apricots"
},
"currant": {
@ -785,8 +785,8 @@
"prune": {
"aliases": [],
"description": "",
"name": "prune",
"plural_name": "prunes"
"name": "sviske",
"plural_name": "svisker"
},
"cantaloupe": {
"aliases": [],
@ -1715,8 +1715,8 @@
"walnut": {
"aliases": [],
"description": "",
"name": "walnut",
"plural_name": "walnuts"
"name": "valnøtt",
"plural_name": "valnøtter"
},
"pecan": {
"aliases": [],
@ -1727,14 +1727,14 @@
"almond": {
"aliases": [],
"description": "",
"name": "almond",
"name": "mandel",
"plural_name": "almonds"
},
"sesame seed": {
"aliases": [],
"description": "",
"name": "sesame seed",
"plural_name": "sesame seeds"
"name": "sesamfrø",
"plural_name": "sesamfrø"
},
"cashew": {
"aliases": [],
@ -1781,26 +1781,26 @@
"pumpkin seed": {
"aliases": [],
"description": "",
"name": "pumpkin seed",
"name": "gresskarfrø",
"plural_name": "pumpkin seeds"
},
"hazelnut": {
"aliases": [],
"description": "",
"name": "hazelnut",
"name": "hasselnøtt",
"plural_name": "hazelnuts"
},
"poppy seed": {
"aliases": [],
"description": "",
"name": "poppy seed",
"plural_name": "poppy seeds"
"name": "valmuefrø",
"plural_name": "valmuefrø"
},
"sunflower seed": {
"aliases": [],
"description": "",
"name": "sunflower seed",
"plural_name": "sunflower seeds"
"name": "solsikkefrø",
"plural_name": "solsikkefrø"
},
"macadamia": {
"aliases": [],
@ -2009,7 +2009,7 @@
"cheddars"
],
"description": "",
"name": "cheddar cheese",
"name": "cheddarost",
"plural_name": "cheddar cheeses"
},
"cream cheese": {
@ -2613,8 +2613,8 @@
"butter": {
"aliases": [],
"description": "",
"name": "butter",
"plural_name": "butter"
"name": "smør",
"plural_name": "smør"
},
"egg": {
"aliases": [],
@ -6423,7 +6423,7 @@
"sugar": {
"aliases": [],
"description": "",
"name": "sugar",
"name": "sukker",
"plural_name": "sugars"
},
"brown sugar": {
@ -6431,7 +6431,7 @@
"turbinado sugar"
],
"description": "",
"name": "brown sugar",
"name": "brunt sukker",
"plural_name": "brown sugars"
},
"confectioners sugar": {

View file

@ -4,26 +4,26 @@
"garlic": {
"aliases": [],
"description": "",
"name": "garlic",
"name": "czosnek",
"plural_name": "garlics"
},
"onion": {
"aliases": [],
"description": "",
"name": "onion",
"plural_name": "onions"
"name": "cebula",
"plural_name": "cebule"
},
"bell pepper": {
"aliases": [],
"description": "",
"name": "bell pepper",
"name": "papryka słodka",
"plural_name": "bell peppers"
},
"carrot": {
"aliases": [],
"description": "",
"name": "carrot",
"plural_name": "carrots"
"name": "marchew",
"plural_name": "marchewki"
},
"scallion": {
"aliases": [],
@ -34,20 +34,20 @@
"zucchini": {
"aliases": [],
"description": "",
"name": "zucchini",
"name": "cukinia",
"plural_name": "zucchinis"
},
"potato": {
"aliases": [],
"description": "",
"name": "potato",
"plural_name": "potatoes"
"name": "ziemniak",
"plural_name": "ziemniaki"
},
"red onion": {
"aliases": [],
"description": "",
"name": "red onion",
"plural_name": "red onions"
"name": "czerwona cebula",
"plural_name": "czerwone cebule"
},
"yellow onion": {
"aliases": [],
@ -70,13 +70,13 @@
"avocado": {
"aliases": [],
"description": "",
"name": "avocado",
"name": "awokado",
"plural_name": "avocados"
},
"shallot": {
"aliases": [],
"description": "",
"name": "shallot",
"name": "szalotka",
"plural_name": "shallots"
},
"cherry tomato": {
@ -88,14 +88,14 @@
"cucumber": {
"aliases": [],
"description": "",
"name": "cucumber",
"plural_name": "cucumbers"
"name": "ogórek",
"plural_name": "ogórki"
},
"spinach": {
"aliases": [],
"description": "",
"name": "spinach",
"plural_name": "spinaches"
"name": "szpinak",
"plural_name": "szpinak"
},
"sweet corn": {
"aliases": [],

File diff suppressed because it is too large Load diff

View file

@ -4,26 +4,26 @@
"garlic": {
"aliases": [],
"description": "",
"name": "garlic",
"name": "alho",
"plural_name": "garlics"
},
"onion": {
"aliases": [],
"description": "",
"name": "onion",
"plural_name": "onions"
"name": "cebola",
"plural_name": "cebolas"
},
"bell pepper": {
"aliases": [],
"description": "",
"name": "bell pepper",
"plural_name": "bell peppers"
"name": "pimentão",
"plural_name": "pimentões"
},
"carrot": {
"aliases": [],
"description": "",
"name": "carrot",
"plural_name": "carrots"
"name": "cenoura",
"plural_name": "cenouras"
},
"scallion": {
"aliases": [],
@ -41,7 +41,7 @@
"aliases": [],
"description": "",
"name": "potato",
"plural_name": "potatoes"
"plural_name": "batatas"
},
"red onion": {
"aliases": [],
@ -713,8 +713,8 @@
"grape": {
"aliases": [],
"description": "",
"name": "grape",
"plural_name": "grapes"
"name": "uva",
"plural_name": "uvas"
},
"pomegranate": {
"aliases": [],
@ -725,8 +725,8 @@
"watermelon": {
"aliases": [],
"description": "",
"name": "watermelon",
"plural_name": "watermelons"
"name": "melancia",
"plural_name": "melancias"
},
"rhubarb": {
"aliases": [],
@ -761,8 +761,8 @@
"fig": {
"aliases": [],
"description": "",
"name": "fig",
"plural_name": "figs"
"name": "figo",
"plural_name": "figos"
},
"apricot": {
"aliases": [],
@ -803,13 +803,13 @@
"passion fruit": {
"aliases": [],
"description": "",
"name": "passion fruit",
"plural_name": "passion fruits"
"name": "maracujá",
"plural_name": "maracujás"
},
"papaya": {
"aliases": [],
"description": "",
"name": "papaya",
"name": "mamão",
"plural_name": "papayas"
},
"tamarind": {
@ -821,7 +821,7 @@
"nectarine": {
"aliases": [],
"description": "",
"name": "nectarine",
"name": "nectarina",
"plural_name": "nectarines"
},
"dried fig": {
@ -869,8 +869,8 @@
"melon": {
"aliases": [],
"description": "",
"name": "melon",
"plural_name": "melons"
"name": "melão",
"plural_name": "melões"
},
"tangerine": {
"aliases": [],
@ -899,8 +899,8 @@
"guava": {
"aliases": [],
"description": "",
"name": "guava",
"plural_name": "guavas"
"name": "goiaba",
"plural_name": "goiabas"
},
"banana chip": {
"aliases": [],
@ -1453,8 +1453,8 @@
"strawberry": {
"aliases": [],
"description": "",
"name": "strawberry",
"plural_name": "strawberries"
"name": "morango",
"plural_name": "morangos"
},
"blueberry": {
"aliases": [],
@ -1477,7 +1477,7 @@
"cherry": {
"aliases": [],
"description": "",
"name": "cherry",
"name": "cereja",
"plural_name": "cherries"
},
"blackberry": {

View file

@ -151,43 +151,43 @@
"aliases": [],
"description": "",
"name": "zelje",
"plural_name": "cabbages"
"plural_name": "zelje"
},
"asparagu": {
"aliases": [],
"description": "",
"name": "asparagu",
"plural_name": "asparagus"
"name": "beluši",
"plural_name": "beluši"
},
"kale": {
"aliases": [],
"description": "",
"name": "kale",
"plural_name": "kales"
"name": "ohrovt",
"plural_name": "ohrovt"
},
"arugula": {
"aliases": [],
"description": "",
"name": "arugula",
"plural_name": "arugulas"
"name": "rukola",
"plural_name": "rukola"
},
"leek": {
"aliases": [],
"description": "",
"name": "leek",
"plural_name": "leeks"
"name": "por",
"plural_name": "por"
},
"eggplant": {
"aliases": [],
"description": "",
"name": "eggplant",
"plural_name": "eggplants"
"name": "jajčevec",
"plural_name": "jajčevci"
},
"lettuce": {
"aliases": [],
"description": "",
"name": "lettuce",
"plural_name": "lettuces"
"name": "solata",
"plural_name": "solata"
},
"butternut squash": {
"aliases": [],

File diff suppressed because it is too large Load diff

View file

@ -39,7 +39,7 @@
"name": "אוכל קפוא"
},
{
"name": "אוכל בריאותי"
"name": "אוכל בריאות"
},
{
"name": "משק בית"

View file

@ -18,8 +18,8 @@
"abbreviation": "c"
},
"fluid-ounce": {
"name": "fluid ounce",
"plural_name": "flytande ounces",
"name": "vätskeuns",
"plural_name": "vätskeuns",
"description": "",
"abbreviation": "fl oz"
},
@ -122,7 +122,7 @@
},
"bunch": {
"name": "bunt",
"plural_name": "buntar",
"plural_name": "knippen",
"description": "",
"abbreviation": ""
},

View file

@ -94,6 +94,7 @@ class AdminBackupController(BaseAdminController):
if not dest.is_file():
raise HTTPException(status.HTTP_400_BAD_REQUEST)
return SuccessResponse.respond("Upload successful")
@router.post("/{file_name}/restore", response_model=SuccessResponse)
def import_one(self, file_name: str):

52
poetry.lock generated
View file

@ -758,14 +758,14 @@ test = ["pytest", "pytest-cov", "pytest-mpl", "pytest-subtests"]
[[package]]
name = "freezegun"
version = "1.5.2"
version = "1.5.3"
description = "Let your Python tests travel through time"
optional = false
python-versions = ">=3.8"
groups = ["dev"]
files = [
{file = "freezegun-1.5.2-py3-none-any.whl", hash = "sha256:5aaf3ba229cda57afab5bd311f0108d86b6fb119ae89d2cd9c43ec8c1733c85b"},
{file = "freezegun-1.5.2.tar.gz", hash = "sha256:a54ae1d2f9c02dbf42e02c18a3ab95ab4295818b549a34dac55592d72a905181"},
{file = "freezegun-1.5.3-py3-none-any.whl", hash = "sha256:1ce20ee4be61349ba52c3af64f5eaba8d08ff51acfcf1b3ea671f03e54c818f1"},
{file = "freezegun-1.5.3.tar.gz", hash = "sha256:d7c6204e33a50affd7c7aa284f4f92e04e96f72d63313b89ceaaf60d9c64bc5e"},
]
[package.dependencies]
@ -1816,14 +1816,14 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"]
[[package]]
name = "openai"
version = "1.95.0"
version = "1.95.1"
description = "The official Python library for the openai API"
optional = false
python-versions = ">=3.8"
groups = ["main"]
files = [
{file = "openai-1.95.0-py3-none-any.whl", hash = "sha256:a7afc9dca7e7d616371842af8ea6dbfbcb739a85d183f5f664ab1cc311b9ef18"},
{file = "openai-1.95.0.tar.gz", hash = "sha256:54bc42df9f7142312647dd485d34cca5df20af825fa64a30ca55164be2cf4cc9"},
{file = "openai-1.95.1-py3-none-any.whl", hash = "sha256:8bbdfeceef231b1ddfabbc232b179d79f8b849aab5a7da131178f8d10e0f162f"},
{file = "openai-1.95.1.tar.gz", hash = "sha256:f089b605282e2a2b6776090b4b46563ac1da77f56402a222597d591e2dcc1086"},
]
[package.dependencies]
@ -1837,7 +1837,7 @@ tqdm = ">4"
typing-extensions = ">=4.11,<5"
[package.extras]
aiohttp = ["aiohttp", "httpx-aiohttp (>=0.1.6)"]
aiohttp = ["aiohttp", "httpx-aiohttp (>=0.1.8)"]
datalib = ["numpy (>=1)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"]
realtime = ["websockets (>=13,<16)"]
voice-helpers = ["numpy (>=2.0.2)", "sounddevice (>=0.5.1)"]
@ -3236,30 +3236,30 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"]
[[package]]
name = "ruff"
version = "0.12.3"
version = "0.12.4"
description = "An extremely fast Python linter and code formatter, written in Rust."
optional = false
python-versions = ">=3.7"
groups = ["dev"]
files = [
{file = "ruff-0.12.3-py3-none-linux_armv6l.whl", hash = "sha256:47552138f7206454eaf0c4fe827e546e9ddac62c2a3d2585ca54d29a890137a2"},
{file = "ruff-0.12.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:0a9153b000c6fe169bb307f5bd1b691221c4286c133407b8827c406a55282041"},
{file = "ruff-0.12.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:fa6b24600cf3b750e48ddb6057e901dd5b9aa426e316addb2a1af185a7509882"},
{file = "ruff-0.12.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2506961bf6ead54887ba3562604d69cb430f59b42133d36976421bc8bd45901"},
{file = "ruff-0.12.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c4faaff1f90cea9d3033cbbcdf1acf5d7fb11d8180758feb31337391691f3df0"},
{file = "ruff-0.12.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40dced4a79d7c264389de1c59467d5d5cefd79e7e06d1dfa2c75497b5269a5a6"},
{file = "ruff-0.12.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:0262d50ba2767ed0fe212aa7e62112a1dcbfd46b858c5bf7bbd11f326998bafc"},
{file = "ruff-0.12.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:12371aec33e1a3758597c5c631bae9a5286f3c963bdfb4d17acdd2d395406687"},
{file = "ruff-0.12.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:560f13b6baa49785665276c963edc363f8ad4b4fc910a883e2625bdb14a83a9e"},
{file = "ruff-0.12.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:023040a3499f6f974ae9091bcdd0385dd9e9eb4942f231c23c57708147b06311"},
{file = "ruff-0.12.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:883d844967bffff5ab28bba1a4d246c1a1b2933f48cb9840f3fdc5111c603b07"},
{file = "ruff-0.12.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:2120d3aa855ff385e0e562fdee14d564c9675edbe41625c87eeab744a7830d12"},
{file = "ruff-0.12.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6b16647cbb470eaf4750d27dddc6ebf7758b918887b56d39e9c22cce2049082b"},
{file = "ruff-0.12.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:e1417051edb436230023575b149e8ff843a324557fe0a265863b7602df86722f"},
{file = "ruff-0.12.3-py3-none-win32.whl", hash = "sha256:dfd45e6e926deb6409d0616078a666ebce93e55e07f0fb0228d4b2608b2c248d"},
{file = "ruff-0.12.3-py3-none-win_amd64.whl", hash = "sha256:a946cf1e7ba3209bdef039eb97647f1c77f6f540e5845ec9c114d3af8df873e7"},
{file = "ruff-0.12.3-py3-none-win_arm64.whl", hash = "sha256:5f9c7c9c8f84c2d7f27e93674d27136fbf489720251544c4da7fb3d742e011b1"},
{file = "ruff-0.12.3.tar.gz", hash = "sha256:f1b5a4b6668fd7b7ea3697d8d98857390b40c1320a63a178eee6be0899ea2d77"},
{file = "ruff-0.12.4-py3-none-linux_armv6l.whl", hash = "sha256:cb0d261dac457ab939aeb247e804125a5d521b21adf27e721895b0d3f83a0d0a"},
{file = "ruff-0.12.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:55c0f4ca9769408d9b9bac530c30d3e66490bd2beb2d3dae3e4128a1f05c7442"},
{file = "ruff-0.12.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:a8224cc3722c9ad9044da7f89c4c1ec452aef2cfe3904365025dd2f51daeae0e"},
{file = "ruff-0.12.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9949d01d64fa3672449a51ddb5d7548b33e130240ad418884ee6efa7a229586"},
{file = "ruff-0.12.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:be0593c69df9ad1465e8a2d10e3defd111fdb62dcd5be23ae2c06da77e8fcffb"},
{file = "ruff-0.12.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7dea966bcb55d4ecc4cc3270bccb6f87a337326c9dcd3c07d5b97000dbff41c"},
{file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:afcfa3ab5ab5dd0e1c39bf286d829e042a15e966b3726eea79528e2e24d8371a"},
{file = "ruff-0.12.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c057ce464b1413c926cdb203a0f858cd52f3e73dcb3270a3318d1630f6395bb3"},
{file = "ruff-0.12.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e64b90d1122dc2713330350626b10d60818930819623abbb56535c6466cce045"},
{file = "ruff-0.12.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2abc48f3d9667fdc74022380b5c745873499ff827393a636f7a59da1515e7c57"},
{file = "ruff-0.12.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2b2449dc0c138d877d629bea151bee8c0ae3b8e9c43f5fcaafcd0c0d0726b184"},
{file = "ruff-0.12.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:56e45bb11f625db55f9b70477062e6a1a04d53628eda7784dce6e0f55fd549eb"},
{file = "ruff-0.12.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:478fccdb82ca148a98a9ff43658944f7ab5ec41c3c49d77cd99d44da019371a1"},
{file = "ruff-0.12.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0fc426bec2e4e5f4c4f182b9d2ce6a75c85ba9bcdbe5c6f2a74fcb8df437df4b"},
{file = "ruff-0.12.4-py3-none-win32.whl", hash = "sha256:4de27977827893cdfb1211d42d84bc180fceb7b72471104671c59be37041cf93"},
{file = "ruff-0.12.4-py3-none-win_amd64.whl", hash = "sha256:fe0b9e9eb23736b453143d72d2ceca5db323963330d5b7859d60d101147d461a"},
{file = "ruff-0.12.4-py3-none-win_arm64.whl", hash = "sha256:0618ec4442a83ab545e5b71202a5c0ed7791e8471435b94e655b570a5031a98e"},
{file = "ruff-0.12.4.tar.gz", hash = "sha256:13efa16df6c6eeb7d0f091abae50f58e9522f3843edb40d56ad52a5a4a4b6873"},
]
[[package]]

View file

@ -3,7 +3,7 @@ authors = ["Hayden <hay-kot@pm.me>"]
description = "A Recipe Manager"
license = "AGPL"
name = "mealie"
version = "3.0.0"
version = "3.0.1"
include = [
# Explicit include to override .gitignore when packaging the frontend
{ path = "mealie/frontend/**/*", format = ["sdist", "wheel"] }