diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index b890608ff..524cefb8f 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -61,3 +61,11 @@ _(fill-in or delete this section)_ + +## AI / LLM Assistance + +_(REQUIRED)_ + + diff --git a/docker/Dockerfile b/docker/Dockerfile index 65aa4382d..449eb8724 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,7 +1,7 @@ ############################################### # Frontend Build ############################################### -FROM node:24@sha256:00e9195ebd49985a6da8921f419978d85dfe354589755192dc090425ce4da2f7 \ +FROM node:24@sha256:3a09aa6354567619221ef6c45a5051b671f953f0a1924d1f819ffb236e520e6b \ AS frontend-builder WORKDIR /frontend diff --git a/frontend/lang/messages/af-ZA.json b/frontend/lang/messages/af-ZA.json index 53db6768e..b7807dc8e 100644 --- a/frontend/lang/messages/af-ZA.json +++ b/frontend/lang/messages/af-ZA.json @@ -1445,6 +1445,6 @@ "invalid-url": "Must Be A Valid URL", "no-whitespace": "No Whitespace Allowed", "min-length": "Must Be At Least {min} Characters", - "max-length": "Must Be At Most {max} Characters" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/ar-SA.json b/frontend/lang/messages/ar-SA.json index 15dae5237..40e4aabf7 100644 --- a/frontend/lang/messages/ar-SA.json +++ b/frontend/lang/messages/ar-SA.json @@ -1445,6 +1445,6 @@ "invalid-url": "يجب أن يكون عنوان URL صالحًا", "no-whitespace": "لا يسمح باستخدام المسافات", "min-length": "يجب أن يكون على الأقل {min} أحرف", - "max-length": "يجب أن يكون على الأكثر {max} أحرف" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/bg-BG.json b/frontend/lang/messages/bg-BG.json index 3755ea28b..3e7736acc 100644 --- a/frontend/lang/messages/bg-BG.json +++ b/frontend/lang/messages/bg-BG.json @@ -1445,6 +1445,6 @@ "invalid-url": "Линкът трябва да е валиден", "no-whitespace": "Не са позволени интервали", "min-length": "Трябва да съдържа поне {min} знака", - "max-length": "Трябва да съдържа най-много {max} знака" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/ca-ES.json b/frontend/lang/messages/ca-ES.json index 66a09d663..604c130b6 100644 --- a/frontend/lang/messages/ca-ES.json +++ b/frontend/lang/messages/ca-ES.json @@ -1445,6 +1445,6 @@ "invalid-url": "La URL ha de ser vàlida", "no-whitespace": "No es permeten espais en blanc", "min-length": "Ha de tenir almenys {min} caràcters", - "max-length": "Ha de tenir com a màxim {max} caràcters" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/cs-CZ.json b/frontend/lang/messages/cs-CZ.json index 23e99baef..37b80efe6 100644 --- a/frontend/lang/messages/cs-CZ.json +++ b/frontend/lang/messages/cs-CZ.json @@ -1445,6 +1445,6 @@ "invalid-url": "Musí být platná URL adresa", "no-whitespace": "Mezery nejsou povoleny", "min-length": "Musí být alespoň {min} znaků", - "max-length": "Musí být nejvíce {max} znaků" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/da-DK.json b/frontend/lang/messages/da-DK.json index 50173465e..d7aef9e43 100644 --- a/frontend/lang/messages/da-DK.json +++ b/frontend/lang/messages/da-DK.json @@ -1445,6 +1445,6 @@ "invalid-url": "URL'en skal være gyldig", "no-whitespace": "Mellemrum er ikke tilladt", "min-length": "Der skal mindst være {min} tegn", - "max-length": "Der må højst være {max} tegn" + "max-length": "Må højst være {max} tegn|Må højst være {max} tegn" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/de-DE.json b/frontend/lang/messages/de-DE.json index 197b93755..942e76c59 100644 --- a/frontend/lang/messages/de-DE.json +++ b/frontend/lang/messages/de-DE.json @@ -1445,6 +1445,6 @@ "invalid-url": "Muss eine gültige URL sein", "no-whitespace": "Kein Leerzeichen erlaubt", "min-length": "Muss mindestens {min} Zeichen haben", - "max-length": "Darf mindestens {max} Zeichen haben" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/el-GR.json b/frontend/lang/messages/el-GR.json index a4f085a06..321fb09ad 100644 --- a/frontend/lang/messages/el-GR.json +++ b/frontend/lang/messages/el-GR.json @@ -1445,6 +1445,6 @@ "invalid-url": "Πρέπει να είναι μια έγκυρη διεύθυνση URL", "no-whitespace": "Δεν επιτρέπονται κενοί χαρακτήρες", "min-length": "Πρέπει να αποτελείται από τουλάχιστον {min} χαρακτήρες", - "max-length": "Πρέπει να αποτελείται το πολύ από {max} χαρακτήρες" + "max-length": "Πρέπει να αποτελείται το πολύ από {max} χαρακτήρα|Πρέπει να αποτελείται το πολύ από {max} χαρακτήρες" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/en-GB.json b/frontend/lang/messages/en-GB.json index 9c987ca17..e32ee8655 100644 --- a/frontend/lang/messages/en-GB.json +++ b/frontend/lang/messages/en-GB.json @@ -1445,6 +1445,6 @@ "invalid-url": "Must Be A Valid URL", "no-whitespace": "No Whitespace Allowed", "min-length": "Must Be At Least {min} Characters", - "max-length": "Must Be At Most {max} Characters" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/es-ES.json b/frontend/lang/messages/es-ES.json index 77f37c6ae..8db5a08c7 100644 --- a/frontend/lang/messages/es-ES.json +++ b/frontend/lang/messages/es-ES.json @@ -1445,6 +1445,6 @@ "invalid-url": "Debe ser una URL válida", "no-whitespace": "No se permiten espacios en blanco", "min-length": "Debe ser como mínimo {min} caracteres", - "max-length": "Debe ser como máximo {max} caracteres" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/et-EE.json b/frontend/lang/messages/et-EE.json index 458367606..00035e5fc 100644 --- a/frontend/lang/messages/et-EE.json +++ b/frontend/lang/messages/et-EE.json @@ -1445,6 +1445,6 @@ "invalid-url": "Must Be A Valid URL", "no-whitespace": "No Whitespace Allowed", "min-length": "Must Be At Least {min} Characters", - "max-length": "Must Be At Most {max} Characters" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/fi-FI.json b/frontend/lang/messages/fi-FI.json index fae946de8..830953be6 100644 --- a/frontend/lang/messages/fi-FI.json +++ b/frontend/lang/messages/fi-FI.json @@ -1445,6 +1445,6 @@ "invalid-url": "URL ei ole kelvollinen", "no-whitespace": "Tekstissä ei saa olla välilyöntejä", "min-length": "Vähimmäispituus on {min} merkkiä", - "max-length": "Enimmäispituus on {max} merkkiä" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/fr-BE.json b/frontend/lang/messages/fr-BE.json index 900fdfcd5..dfcf15f4f 100644 --- a/frontend/lang/messages/fr-BE.json +++ b/frontend/lang/messages/fr-BE.json @@ -1445,6 +1445,6 @@ "invalid-url": "Doit être une URL valide", "no-whitespace": "Aucun espace n'est autorisé", "min-length": "Doit contenir au moins {min} caractères", - "max-length": "Doit contenir au maximum {max} caractères" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/fr-CA.json b/frontend/lang/messages/fr-CA.json index 301e83953..6f0ee035d 100644 --- a/frontend/lang/messages/fr-CA.json +++ b/frontend/lang/messages/fr-CA.json @@ -1423,8 +1423,8 @@ "is-greater-than-or-equal-to": "est supérieur ou égal à", "is-less-than": "est inférieure à", "is-less-than-or-equal-to": "est inférieur ou égal à", - "is-older-than": "is older than", - "is-newer-than": "is newer than" + "is-older-than": "est plus ancien que", + "is-newer-than": "est plus récent que" }, "relational-keywords": { "is": "est", @@ -1436,7 +1436,7 @@ "is-not-like": "n'est pas similaire à" }, "dates": { - "days-ago": "days ago|day ago|days ago" + "days-ago": "jours|jour|jours" } }, "validators": { @@ -1445,6 +1445,6 @@ "invalid-url": "Doit être une URL valide", "no-whitespace": "Aucun espace n'est autorisé", "min-length": "", - "max-length": "Doit contenir au maximum {max} caractères" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/fr-FR.json b/frontend/lang/messages/fr-FR.json index 3412e332c..47374c3b7 100644 --- a/frontend/lang/messages/fr-FR.json +++ b/frontend/lang/messages/fr-FR.json @@ -1445,6 +1445,6 @@ "invalid-url": "Doit être une URL valide", "no-whitespace": "Aucun espace n'est autorisé", "min-length": "Doit contenir au moins {min} caractères", - "max-length": "Doit contenir au maximum {max} caractères" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/gl-ES.json b/frontend/lang/messages/gl-ES.json index 044fdff56..0d2b6b125 100644 --- a/frontend/lang/messages/gl-ES.json +++ b/frontend/lang/messages/gl-ES.json @@ -1445,6 +1445,6 @@ "invalid-url": "Must Be A Valid URL", "no-whitespace": "No Whitespace Allowed", "min-length": "Must Be At Least {min} Characters", - "max-length": "Must Be At Most {max} Characters" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/he-IL.json b/frontend/lang/messages/he-IL.json index 89c1065f8..255d09a9e 100644 --- a/frontend/lang/messages/he-IL.json +++ b/frontend/lang/messages/he-IL.json @@ -1445,6 +1445,6 @@ "invalid-url": "Must Be A Valid URL", "no-whitespace": "No Whitespace Allowed", "min-length": "Must Be At Least {min} Characters", - "max-length": "Must Be At Most {max} Characters" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/hr-HR.json b/frontend/lang/messages/hr-HR.json index 7070cc0b6..1bbc0fbfc 100644 --- a/frontend/lang/messages/hr-HR.json +++ b/frontend/lang/messages/hr-HR.json @@ -1445,6 +1445,6 @@ "invalid-url": "Must Be A Valid URL", "no-whitespace": "No Whitespace Allowed", "min-length": "Must Be At Least {min} Characters", - "max-length": "Must Be At Most {max} Characters" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/hu-HU.json b/frontend/lang/messages/hu-HU.json index a7e836173..bfebc7f64 100644 --- a/frontend/lang/messages/hu-HU.json +++ b/frontend/lang/messages/hu-HU.json @@ -1445,6 +1445,6 @@ "invalid-url": "Érvényes URL-nek kell lennie", "no-whitespace": "Szóközt nem tartalmazhat", "min-length": "Legalább {min} karakter legyen", - "max-length": "Legfeljebb {max} karakter legyen" + "max-length": "Legfeljebb {max} karakter lehet|Legfeljebb {max} karakter lehet" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/is-IS.json b/frontend/lang/messages/is-IS.json index ca6184841..c35a7676b 100644 --- a/frontend/lang/messages/is-IS.json +++ b/frontend/lang/messages/is-IS.json @@ -1445,6 +1445,6 @@ "invalid-url": "Verður að vera gild vefslóð", "no-whitespace": "Engin bil leyfð", "min-length": "Verður að vera að lágmarki {min} stafir", - "max-length": "Má vera að hámarki {max} stafir" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/it-IT.json b/frontend/lang/messages/it-IT.json index 14627a7c0..366332361 100644 --- a/frontend/lang/messages/it-IT.json +++ b/frontend/lang/messages/it-IT.json @@ -1445,6 +1445,6 @@ "invalid-url": "Lo URL Deve Essere Valido", "no-whitespace": "Gli Spazi Non Sono Ammessi", "min-length": "Deve Essere Almeno {min} Caratteri", - "max-length": "Deve Essere Al Massimo {max} Caratteri" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/ja-JP.json b/frontend/lang/messages/ja-JP.json index 32a9bcfc3..0ae8b8047 100644 --- a/frontend/lang/messages/ja-JP.json +++ b/frontend/lang/messages/ja-JP.json @@ -1445,6 +1445,6 @@ "invalid-url": "Must Be A Valid URL", "no-whitespace": "No Whitespace Allowed", "min-length": "Must Be At Least {min} Characters", - "max-length": "Must Be At Most {max} Characters" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/ko-KR.json b/frontend/lang/messages/ko-KR.json index cf4198ddf..ce79e1322 100644 --- a/frontend/lang/messages/ko-KR.json +++ b/frontend/lang/messages/ko-KR.json @@ -1445,6 +1445,6 @@ "invalid-url": "유효한 URL이어야 합니다.", "no-whitespace": "공백 허용 안 됨", "min-length": "최소 {min}자 이상이어야 합니다", - "max-length": "최대 {min}자 이하여야 합니다" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/lt-LT.json b/frontend/lang/messages/lt-LT.json index 2869f7955..4c2c64588 100644 --- a/frontend/lang/messages/lt-LT.json +++ b/frontend/lang/messages/lt-LT.json @@ -1445,6 +1445,6 @@ "invalid-url": "Must Be A Valid URL", "no-whitespace": "No Whitespace Allowed", "min-length": "Must Be At Least {min} Characters", - "max-length": "Must Be At Most {max} Characters" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/lv-LV.json b/frontend/lang/messages/lv-LV.json index 7ac7b4bb5..b6d34b4bc 100644 --- a/frontend/lang/messages/lv-LV.json +++ b/frontend/lang/messages/lv-LV.json @@ -1445,6 +1445,6 @@ "invalid-url": "Must Be A Valid URL", "no-whitespace": "No Whitespace Allowed", "min-length": "Must Be At Least {min} Characters", - "max-length": "Must Be At Most {max} Characters" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/nl-NL.json b/frontend/lang/messages/nl-NL.json index 20b69675d..43911560f 100644 --- a/frontend/lang/messages/nl-NL.json +++ b/frontend/lang/messages/nl-NL.json @@ -1445,6 +1445,6 @@ "invalid-url": "Moet een geldige URL zijn", "no-whitespace": "Geen spaties toegestaan", "min-length": "Moet minimaal {min} tekens bevatten", - "max-length": "Zorg dat je {max} tekens gebruikt" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/no-NO.json b/frontend/lang/messages/no-NO.json index 3854ef519..7659e60e6 100644 --- a/frontend/lang/messages/no-NO.json +++ b/frontend/lang/messages/no-NO.json @@ -1445,6 +1445,6 @@ "invalid-url": "Må være en gyldig nettadresse", "no-whitespace": "Ingen mellomrom tillatt", "min-length": "Må minst ha {min} tegn", - "max-length": "Kan maksimalt ha {max} tegn" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/pl-PL.json b/frontend/lang/messages/pl-PL.json index 3b9bf72ac..8bd530da2 100644 --- a/frontend/lang/messages/pl-PL.json +++ b/frontend/lang/messages/pl-PL.json @@ -1445,6 +1445,6 @@ "invalid-url": "Musi być prawidłowym odnośnikiem", "no-whitespace": "Niedozwolone są puste spacje", "min-length": "Musi zawierać co najmniej {min} znaków", - "max-length": "Musi zawierać co najwyżej {max} znaków" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/pt-BR.json b/frontend/lang/messages/pt-BR.json index c04788034..2349455c6 100644 --- a/frontend/lang/messages/pt-BR.json +++ b/frontend/lang/messages/pt-BR.json @@ -1445,6 +1445,6 @@ "invalid-url": "Precisa ser uma URL válida", "no-whitespace": "Nenhum espaço em branco é permitido", "min-length": "Precisa ter pelo menos {min} caracteres", - "max-length": "Pode ter até {max} caracteres" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/pt-PT.json b/frontend/lang/messages/pt-PT.json index d7e39da65..d68b2a87a 100644 --- a/frontend/lang/messages/pt-PT.json +++ b/frontend/lang/messages/pt-PT.json @@ -1445,6 +1445,6 @@ "invalid-url": "O URL deve ser válido", "no-whitespace": "Não são permitidos espaços em branco", "min-length": "Deve ter pelo menos {min} caracteres", - "max-length": "Deve ter no máximo {max} caracteres" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/ro-RO.json b/frontend/lang/messages/ro-RO.json index 24ec27ae3..bb7dd0eb0 100644 --- a/frontend/lang/messages/ro-RO.json +++ b/frontend/lang/messages/ro-RO.json @@ -1445,6 +1445,6 @@ "invalid-url": "Trebuie Să Fie Un URL Valid", "no-whitespace": "Niciun Spațiu Alb Permis", "min-length": "Trebuie Să Aibă Cel Puțin {min} Caractere", - "max-length": "Trebuie Să Aibă Cel Mult {max} Caractere" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/ru-RU.json b/frontend/lang/messages/ru-RU.json index 122bd5b9f..8a58d2a10 100644 --- a/frontend/lang/messages/ru-RU.json +++ b/frontend/lang/messages/ru-RU.json @@ -1445,6 +1445,6 @@ "invalid-url": "Must Be A Valid URL", "no-whitespace": "Без пробелов", "min-length": "Must Be At Least {min} Characters", - "max-length": "Must Be At Most {max} Characters" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/sk-SK.json b/frontend/lang/messages/sk-SK.json index 46756486f..8078fa95b 100644 --- a/frontend/lang/messages/sk-SK.json +++ b/frontend/lang/messages/sk-SK.json @@ -1445,6 +1445,6 @@ "invalid-url": "Musí byť platná URL", "no-whitespace": "Prázdne znaky nepovolené", "min-length": "Musí mať aspoň {min} znakov", - "max-length": "Musí mať najviac {max} znakov" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/sl-SI.json b/frontend/lang/messages/sl-SI.json index 715b7fd8f..dcd684b4c 100644 --- a/frontend/lang/messages/sl-SI.json +++ b/frontend/lang/messages/sl-SI.json @@ -1445,6 +1445,6 @@ "invalid-url": "URL mora biti veljaven", "no-whitespace": "Presledki niso dovoljeni", "min-length": "Mora vsebovati vsaj {min} znakov", - "max-length": "Lahko je največ {max} znakov" + "max-length": "Največ {max} znakov|Vsebuje lahko največ {max} znakov" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/sr-SP.json b/frontend/lang/messages/sr-SP.json index 5bbfaa5d0..1245f0981 100644 --- a/frontend/lang/messages/sr-SP.json +++ b/frontend/lang/messages/sr-SP.json @@ -1445,6 +1445,6 @@ "invalid-url": "Мора бити валидан URL", "no-whitespace": "Размак није дозвољен", "min-length": "Мора бити најмање {min} карактера", - "max-length": "Мора бити највише {max} карактера" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/sv-SE.json b/frontend/lang/messages/sv-SE.json index f804aebbb..b910df17c 100644 --- a/frontend/lang/messages/sv-SE.json +++ b/frontend/lang/messages/sv-SE.json @@ -1445,6 +1445,6 @@ "invalid-url": "Måste var en giltig länk", "no-whitespace": "Ingen blanksteg tillåten", "min-length": "Måste vara minst {min} tecken", - "max-length": "Måste vara som mest {max} tecken" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/tr-TR.json b/frontend/lang/messages/tr-TR.json index d488a2bae..466b9d77f 100644 --- a/frontend/lang/messages/tr-TR.json +++ b/frontend/lang/messages/tr-TR.json @@ -1445,6 +1445,6 @@ "invalid-url": "Geçerli Bir URL Olmalıdır", "no-whitespace": "No Whitespace Allowed", "min-length": "En Az {min} Karakter Olmalıdır", - "max-length": "En Fazla {max} Karakter Olmalıdır" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/uk-UA.json b/frontend/lang/messages/uk-UA.json index a8a57223f..480e51bf6 100644 --- a/frontend/lang/messages/uk-UA.json +++ b/frontend/lang/messages/uk-UA.json @@ -1445,6 +1445,6 @@ "invalid-url": "Має бути дійсною URL-адресою", "no-whitespace": "Пробіли заборонені", "min-length": "Повинно бути не менше ніж {min} символів ", - "max-length": "Повинно бути не більше ніж {max} символів" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/vi-VN.json b/frontend/lang/messages/vi-VN.json index b6d7b1d8a..498c8dcf8 100644 --- a/frontend/lang/messages/vi-VN.json +++ b/frontend/lang/messages/vi-VN.json @@ -1445,6 +1445,6 @@ "invalid-url": "Must Be A Valid URL", "no-whitespace": "No Whitespace Allowed", "min-length": "Must Be At Least {min} Characters", - "max-length": "Must Be At Most {max} Characters" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/zh-CN.json b/frontend/lang/messages/zh-CN.json index 0bfa3952c..dedadfabf 100644 --- a/frontend/lang/messages/zh-CN.json +++ b/frontend/lang/messages/zh-CN.json @@ -1445,6 +1445,6 @@ "invalid-url": "Must Be A Valid URL", "no-whitespace": "No Whitespace Allowed", "min-length": "Must Be At Least {min} Characters", - "max-length": "Must Be At Most {max} Characters" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/frontend/lang/messages/zh-TW.json b/frontend/lang/messages/zh-TW.json index a013f5348..390f24500 100644 --- a/frontend/lang/messages/zh-TW.json +++ b/frontend/lang/messages/zh-TW.json @@ -1445,6 +1445,6 @@ "invalid-url": "Must Be A Valid URL", "no-whitespace": "No Whitespace Allowed", "min-length": "Must Be At Least {min} Characters", - "max-length": "Must Be At Most {max} Characters" + "max-length": "Must Be At Most {max} Character|Must Be At Most {max} Characters" } -} +} \ No newline at end of file diff --git a/mealie/repos/seed/resources/foods/locales/bg-BG.json b/mealie/repos/seed/resources/foods/locales/bg-BG.json index e5080ed9c..c308c0775 100644 --- a/mealie/repos/seed/resources/foods/locales/bg-BG.json +++ b/mealie/repos/seed/resources/foods/locales/bg-BG.json @@ -576,11 +576,11 @@ }, "Frisée": { "aliases": [ - "curly endive" + "къдрава ендивия" ], "description": "", - "name": "Frisée", - "plural_name": "Frisées" + "name": "Фризе", + "plural_name": "Фризе" }, "anaheim pepper": { "aliases": [], @@ -591,14 +591,14 @@ "cress": { "aliases": [], "description": "", - "name": "cress", - "plural_name": "cress" + "name": "кресон", + "plural_name": "кресон" }, "broccoli slaw": { "aliases": [], "description": "", "name": "салата от броколи", - "plural_name": "broccoli slaw" + "plural_name": "салата от броколи" }, "arbol chile pepper": { "aliases": [], @@ -1027,8 +1027,8 @@ "tangelo": { "aliases": [], "description": "", - "name": "tangelo", - "plural_name": "tangelos" + "name": "танжело", + "plural_name": "танжело" }, "dried lime": { "aliases": [], @@ -1069,8 +1069,8 @@ "durian": { "aliases": [], "description": "", - "name": "durian", - "plural_name": "durians" + "name": "дуриан", + "plural_name": "дуриан" }, "freeze-dried apple": { "aliases": [], @@ -1087,8 +1087,8 @@ "honey date": { "aliases": [], "description": "", - "name": "honey date", - "plural_name": "honey dates" + "name": "медена фурма", + "plural_name": "медени фурми" }, "physali": { "aliases": [], @@ -1135,8 +1135,8 @@ "dried persimmon": { "aliases": [], "description": "", - "name": "dried persimmon", - "plural_name": "dried persimmons" + "name": "сушена райска ябълка", + "plural_name": "сушени райски ябълки" }, "rambutan": { "aliases": [], @@ -1232,7 +1232,7 @@ "aliases": [], "description": "", "name": "кивано", - "plural_name": "kiwanos" + "plural_name": "кивано" } } }, @@ -1343,8 +1343,8 @@ "maitake": { "aliases": [], "description": "", - "name": "maitake", - "plural_name": "maitakes" + "name": "майтаке", + "plural_name": "майтаке" }, "trumpet mushroom": { "aliases": [], @@ -1367,7 +1367,7 @@ "pioppini": { "aliases": [], "description": "", - "name": "pioppini", + "name": "пиопини", "plural_name": "пиопини" }, "snow fungu": { @@ -1397,8 +1397,8 @@ "matsutake": { "aliases": [], "description": "", - "name": "matsutake", - "plural_name": "matsutakes" + "name": "мацутаке", + "plural_name": "мацутаке" }, "nameko": { "aliases": [], @@ -1415,8 +1415,8 @@ "mixed asian mushroom": { "aliases": [], "description": "", - "name": "mixed asian mushroom", - "plural_name": "mixed asian mushrooms" + "name": "микс от азиатски гъби", + "plural_name": "микс от азиатски гъби" }, "puffball": { "aliases": [], @@ -1641,8 +1641,8 @@ "hawthorn": { "aliases": [], "description": "", - "name": "hawthorn", - "plural_name": "hawthorns" + "name": "глог", + "plural_name": "глог" }, "boysenberry": { "aliases": [], @@ -1665,14 +1665,14 @@ "aronia berry": { "aliases": [], "description": "", - "name": "aronia berry", - "plural_name": "aronia berries" + "name": "плодове от арония", + "plural_name": "плодове от арония" }, "chokeberry": { "aliases": [], "description": "", - "name": "chokeberry", - "plural_name": "chokeberries" + "name": "арония", + "plural_name": "арония" }, "loganberry": { "aliases": [], @@ -1915,8 +1915,8 @@ "jackfruit seed": { "aliases": [], "description": "", - "name": "jackfruit seed", - "plural_name": "jackfruit seeds" + "name": "семена от джакфрут", + "plural_name": "семена от джакфрут" }, "honey-roasted almond": { "aliases": [], @@ -1933,7 +1933,7 @@ "chironji": { "aliases": [], "description": "", - "name": "chironji", + "name": "чиронджи", "plural_name": "chironjis" }, "honey-roasted pecan": { @@ -1987,8 +1987,8 @@ "barùka": { "aliases": [], "description": "", - "name": "barùka", - "plural_name": "barùkas" + "name": "барука", + "plural_name": "барука" }, "indian almond": { "aliases": [], @@ -2017,8 +2017,8 @@ "cream cheese": { "aliases": [], "description": "", - "name": "cream cheese", - "plural_name": "cream cheese" + "name": "крема сирене", + "plural_name": "крема сирене" }, "sharp cheddar cheese": { "aliases": [ @@ -2091,14 +2091,14 @@ "pecorino cheese": { "aliases": [], "description": "", - "name": "pecorino cheese", - "plural_name": "pecorino cheese" + "name": "сирене пекорино", + "plural_name": "сирене пекорино" }, "gruyere cheese": { "aliases": [], "description": "", - "name": "gruyere cheese", - "plural_name": "gruyere cheese" + "name": "сирене Грюер", + "plural_name": "сирене Грюер" }, "mascarpone cheese": { "aliases": [], @@ -2121,8 +2121,8 @@ "provolone cheese": { "aliases": [], "description": "", - "name": "provolone cheese", - "plural_name": "provolone cheese" + "name": "сирене проволоне", + "plural_name": "сирене проволоне" }, "mexican cheese blend": { "aliases": [], @@ -2133,8 +2133,8 @@ "pepper jack cheese": { "aliases": [], "description": "", - "name": "pepper jack cheese", - "plural_name": "pepper jack cheese" + "name": "сирене пепър джак", + "plural_name": "сирене пепър джак" }, "brie cheese": { "aliases": [], @@ -2145,14 +2145,14 @@ "paneer cheese": { "aliases": [], "description": "", - "name": "paneer cheese", - "plural_name": "paneer cheese" + "name": "сирене панеер", + "plural_name": "сирене панеер" }, "fontina cheese": { "aliases": [], "description": "", - "name": "fontina cheese", - "plural_name": "fontina cheese" + "name": "сирене фонтина", + "plural_name": "сирене фонтина" }, "queso fresco cheese": { "aliases": [], @@ -2163,8 +2163,8 @@ "quark cheese": { "aliases": [], "description": "", - "name": "quark cheese", - "plural_name": "quark cheese" + "name": "сирене кварк", + "plural_name": "сирене кварк" }, "gouda cheese": { "aliases": [], @@ -2175,14 +2175,14 @@ "cotija cheese": { "aliases": [], "description": "", - "name": "cotija cheese", - "plural_name": "cotija cheese" + "name": "сирене котия", + "plural_name": "сирене котия" }, "asiago cheese": { "aliases": [], "description": "", - "name": "asiago cheese", - "plural_name": "asiago cheese" + "name": "сирене азиаго", + "plural_name": "сирене азиаго" }, "smoked cheese": { "aliases": [], @@ -2205,8 +2205,8 @@ "manchego cheese": { "aliases": [], "description": "", - "name": "manchego cheese", - "plural_name": "manchego cheese" + "name": "сирене манчего", + "plural_name": "сирене манчего" }, "italian cheese blend": { "aliases": [], @@ -2217,14 +2217,14 @@ "neufchatel cheese": { "aliases": [], "description": "", - "name": "neufchatel cheese", - "plural_name": "neufchatel cheese" + "name": "сирене Ньофшател", + "plural_name": "сирене Ньофшател" }, "herb cream cheese": { "aliases": [], "description": "", - "name": "herb cream cheese", - "plural_name": "herb cream cheese" + "name": "крема сирене с билки", + "plural_name": "крема сирене с билки" }, "burrata cheese": { "aliases": [], @@ -2241,8 +2241,8 @@ "colby cheese": { "aliases": [], "description": "", - "name": "colby cheese", - "plural_name": "colby cheese" + "name": "сирене Колби", + "plural_name": "сирене Колби" }, "grana-padano cheese": { "aliases": [], @@ -2253,14 +2253,14 @@ "muenster cheese": { "aliases": [], "description": "", - "name": "muenster cheese", - "plural_name": "muenster cheese" + "name": "сирене Мюнстер", + "plural_name": "сирене Мюнстер" }, "string cheese": { "aliases": [], "description": "", - "name": "string cheese", - "plural_name": "string cheese" + "name": "сирене на нишки", + "plural_name": "сирене на нишки" }, "camembert cheese": { "aliases": [], @@ -2277,19 +2277,19 @@ "stilton cheese": { "aliases": [], "description": "", - "name": "stilton cheese", - "plural_name": "stilton cheese" + "name": "сирене Стилтън", + "plural_name": "сирене Стилтън" }, "raclette cheese": { "aliases": [], "description": "", - "name": "raclette cheese", - "plural_name": "raclette cheese" + "name": "сирене Раклет", + "plural_name": "сирене Раклет" }, "colby-jack cheese": { "aliases": [], "description": "", - "name": "colby-jack cheese", + "name": "сирене Колби Джак", "plural_name": "colby-jack cheese" }, "jarlsberg cheese": { @@ -2415,14 +2415,14 @@ "graviera cheese": { "aliases": [], "description": "", - "name": "graviera cheese", - "plural_name": "graviera cheese" + "name": "сирене Гравиера", + "plural_name": "сирене Гравиера" }, "wensleydale cheese": { "aliases": [], "description": "", - "name": "wensleydale cheese", - "plural_name": "wensleydale cheese" + "name": "сирене Уенслидейл", + "plural_name": "сирене Уенслидейл" }, "scamorza cheese": { "aliases": [], @@ -2433,26 +2433,26 @@ "cambozola cheese": { "aliases": [], "description": "", - "name": "cambozola cheese", - "plural_name": "cambozola cheese" + "name": "сирене Камбозола", + "plural_name": "сирене Камбозола" }, "cheshire cheese": { "aliases": [], "description": "", - "name": "cheshire cheese", - "plural_name": "cheshire cheese" + "name": "чеширско сирене", + "plural_name": "чеширско сирене" }, "anthotyro cheese": { "aliases": [], "description": "", - "name": "anthotyro cheese", - "plural_name": "anthotyro cheese" + "name": "сирене Антотиро", + "plural_name": "сирене Антотиро" }, "chenna cheese": { "aliases": [], "description": "", - "name": "chenna cheese", - "plural_name": "chenna cheese" + "name": "сирене Чена", + "plural_name": "сирене Чена" }, "hard goat cheese": { "aliases": [], @@ -2475,20 +2475,20 @@ "amul cheese": { "aliases": [], "description": "", - "name": "amul cheese", - "plural_name": "amul cheese" + "name": "сирене Амул", + "plural_name": "сирене Амул" }, "reblochon cheese": { "aliases": [], "description": "", - "name": "reblochon cheese", - "plural_name": "reblochon cheese" + "name": "сирене Реблошон", + "plural_name": "сирене Реблошон" }, "robiola cheese": { "aliases": [], "description": "", - "name": "robiola cheese", - "plural_name": "robiola cheese" + "name": "сирене Робиола", + "plural_name": "сирене Робиола" }, "brick cheese": { "aliases": [], @@ -2511,14 +2511,14 @@ "manouri cheese": { "aliases": [], "description": "", - "name": "manouri cheese", - "plural_name": "manouri cheese" + "name": "сирене Манури", + "plural_name": "сирене Манури" }, "mimolette cheese": { "aliases": [], "description": "", - "name": "mimolette cheese", - "plural_name": "mimolette cheese" + "name": "сирене Мимолет", + "plural_name": "сирене Мимолет" }, "queso quesadilla cheese": { "aliases": [], @@ -2529,50 +2529,50 @@ "caciocavallo cheese": { "aliases": [], "description": "", - "name": "caciocavallo cheese", - "plural_name": "caciocavalloe cheese" + "name": "сирене Качокавало", + "plural_name": "сирене Качокавало" }, "requeijão cheese": { "aliases": [], "description": "", - "name": "requeijão cheese", - "plural_name": "requeijãoe cheese" + "name": "сирене Рекежао", + "plural_name": "сирене Рекежао" }, "vacherin cheese": { "aliases": [], "description": "", - "name": "vacherin cheese", - "plural_name": "vacherin cheese" + "name": "сирене Вашерин", + "plural_name": "сирене Вашерин" }, "brown cheese": { "aliases": [], "description": "", - "name": "brown cheese", - "plural_name": "brown cheese" + "name": "кафяво сирене", + "plural_name": "кафяво сирене" }, "gloucester cheese": { "aliases": [], "description": "", - "name": "gloucester cheese", - "plural_name": "gloucester cheese" + "name": "сирене Глостър", + "plural_name": "сирене Глостър" }, "port salut cheese": { "aliases": [], "description": "", - "name": "port salut cheese", - "plural_name": "port salut cheese" + "name": "сирене Порт Салут", + "plural_name": "сирене Порт Салут" }, "derby cheese": { "aliases": [], "description": "", - "name": "derby cheese", - "plural_name": "derby cheese" + "name": "сирене Дерби", + "plural_name": "сирене Дерби" }, "fontal cheese": { "aliases": [], "description": "", - "name": "fontal cheese", - "plural_name": "fontal cheese" + "name": "сирене Фонтал", + "plural_name": "сирене Фонтал" }, "salad cheese": { "aliases": [], @@ -2589,8 +2589,8 @@ "epoisses cheese": { "aliases": [], "description": "", - "name": "epoisses cheese", - "plural_name": "epoisses cheese" + "name": "сирене Епоас", + "plural_name": "сирене Епоас" }, "maasdam cheese": { "aliases": [], @@ -2866,19 +2866,19 @@ "aliases": [], "description": "", "name": "sour milk", - "plural_name": "sour milk" + "plural_name": "пресечено мляко" }, "ganache": { "aliases": [], "description": "", - "name": "ganache", - "plural_name": "ganaches" + "name": "ганаш", + "plural_name": "ганаш" }, "cajeta": { "aliases": [], "description": "", - "name": "cajeta", - "plural_name": "cajetas" + "name": "кахета", + "plural_name": "кахета" }, "duck egg": { "aliases": [], @@ -2889,14 +2889,14 @@ "salted egg": { "aliases": [], "description": "", - "name": "salted egg", - "plural_name": "salted eggs" + "name": "осолено яйце", + "plural_name": "осолени яйца" }, "skyr": { "aliases": [], "description": "", - "name": "skyr", - "plural_name": "skyrs" + "name": "скайр", + "plural_name": "скайр" }, "pumpkin spice coffee creamer": { "aliases": [], @@ -2919,14 +2919,14 @@ "powdered coffee creamer": { "aliases": [], "description": "", - "name": "powdered coffee creamer", - "plural_name": "powdered coffee creamers" + "name": "сметана за кафе на прах", + "plural_name": "сметана за кафе на прах" }, "chantilly": { "aliases": [], "description": "", - "name": "chantilly", - "plural_name": "chantillies" + "name": "Шантили", + "plural_name": "Шантили" }, "milkfat": { "aliases": [], @@ -2991,8 +2991,8 @@ "orange curd": { "aliases": [], "description": "", - "name": "orange curd", - "plural_name": "orange curds" + "name": "портокалов крем", + "plural_name": "портокалов крем" }, "goat yogurt": { "aliases": [], @@ -3039,8 +3039,8 @@ "sheep’s milk yoghurt": { "aliases": [], "description": "", - "name": "sheep’s milk yoghurt", - "plural_name": "sheep’s milk yoghurts" + "name": "овче кисело мляко", + "plural_name": "овче кисело мляко" }, "strawberry milk": { "aliases": [], @@ -3057,7 +3057,7 @@ "cuajada": { "aliases": [], "description": "", - "name": "cuajada", + "name": "куахада", "plural_name": "cuajadas" }, "yogurt drink": { @@ -3499,8 +3499,8 @@ "banana blossom": { "aliases": [], "description": "", - "name": "banana blossom", - "plural_name": "banana blossoms" + "name": "бананов цвят", + "plural_name": "бананов цвят" }, "vegan fish sauce": { "aliases": [], @@ -3529,8 +3529,8 @@ "vegan meatball": { "aliases": [], "description": "", - "name": "vegan meatball", - "plural_name": "vegan meatballs" + "name": "веган кюфте", + "plural_name": "веган кюфтета" }, "almond-milk yogurt": { "aliases": [], @@ -3941,14 +3941,14 @@ "ground sausage": { "aliases": [], "description": "", - "name": "ground sausage", - "plural_name": "ground sausages" + "name": "смляна наденица", + "plural_name": "смляна наденица" }, "ground pork sausage": { "aliases": [], "description": "", - "name": "ground pork sausage", - "plural_name": "ground pork sausages" + "name": "смляна свинска наденица", + "plural_name": "смляна свинска наденица" }, "roast beef": { "aliases": [], @@ -3959,8 +3959,8 @@ "bacon bit": { "aliases": [], "description": "", - "name": "bacon bit", - "plural_name": "bacon bits" + "name": "парче бекон", + "plural_name": "парчета бекон" }, "pork roast": { "aliases": [], @@ -4049,8 +4049,8 @@ "venison": { "aliases": [], "description": "", - "name": "venison", - "plural_name": "venisons" + "name": "еленско месо", + "plural_name": "еленско месо" }, "bratwurst": { "aliases": [], @@ -4169,8 +4169,8 @@ "raw chorizo": { "aliases": [], "description": "", - "name": "raw chorizo", - "plural_name": "raw chorizoes" + "name": "сурово чоризо", + "plural_name": "сурово чоризо" }, "beef liver": { "aliases": [], @@ -4283,8 +4283,8 @@ "fresh sausage": { "aliases": [], "description": "", - "name": "fresh sausage", - "plural_name": "fresh sausages" + "name": "прясна наденица", + "plural_name": "прясна наденица" }, "bologna": { "aliases": [], @@ -4307,8 +4307,8 @@ "lamb neck": { "aliases": [], "description": "", - "name": "lamb neck", - "plural_name": "lamb necks" + "name": "агнешки врат", + "plural_name": "агнешки врат" }, "sausage patty": { "aliases": [], @@ -4921,8 +4921,8 @@ "tuna steak": { "aliases": [], "description": "", - "name": "tuna steak", - "plural_name": "tuna steaks" + "name": "стек от риба тон", + "plural_name": "стек от риба тон" }, "whitefish": { "aliases": [], @@ -4933,8 +4933,8 @@ "halibut": { "aliases": [], "description": "", - "name": "halibut", - "plural_name": "halibuts" + "name": "камбала", + "plural_name": "камбала" }, "red snapper": { "aliases": [], @@ -4945,7 +4945,7 @@ "sea bas": { "aliases": [], "description": "", - "name": "sea bas", + "name": "лефер", "plural_name": "лефер" }, "fish fillet": { @@ -4975,8 +4975,8 @@ "swordfish": { "aliases": [], "description": "", - "name": "swordfish", - "plural_name": "swordfish" + "name": "риба меч", + "plural_name": "риба меч" }, "sardine": { "aliases": [], @@ -5029,8 +5029,8 @@ "smoked haddock": { "aliases": [], "description": "", - "name": "smoked haddock", - "plural_name": "smoked haddocks" + "name": "пушена пикша", + "plural_name": "пушена пикша" }, "flounder": { "aliases": [], @@ -5377,8 +5377,8 @@ "shark meat": { "aliases": [], "description": "", - "name": "shark meat", - "plural_name": "shark meats" + "name": "месо от акула", + "plural_name": "месо от акула" }, "garoupa": { "aliases": [], @@ -5395,20 +5395,20 @@ "pangasius": { "aliases": [], "description": "", - "name": "pangasius", - "plural_name": "pangasius" + "name": "пангасиус", + "plural_name": "пангасиус" }, "salt herring": { "aliases": [], "description": "", - "name": "salt herring", - "plural_name": "salt herrings" + "name": "солена херинга", + "plural_name": "солена херинга" }, "soused herring": { "aliases": [], "description": "", - "name": "soused herring", - "plural_name": "soused herrings" + "name": "маринована херинга", + "plural_name": "маринована херинга" }, "tinapa": { "aliases": [], @@ -5615,8 +5615,8 @@ "scampi": { "aliases": [], "description": "", - "name": "scampi", - "plural_name": "scampis" + "name": "скариди", + "plural_name": "скариди" }, "king crab": { "aliases": [], @@ -5664,7 +5664,7 @@ "aliases": [], "description": "", "name": "пушена стрида", - "plural_name": "smoked oysters" + "plural_name": "пушени стриди" }, "kelp": { "aliases": [], @@ -5687,8 +5687,8 @@ "salted shrimp": { "aliases": [], "description": "", - "name": "salted shrimp", - "plural_name": "salted shrimps" + "name": "осолени скариди", + "plural_name": "осолени скариди" }, "yaki-nori": { "aliases": [], @@ -5723,8 +5723,8 @@ "sea urchin": { "aliases": [], "description": "", - "name": "sea urchin", - "plural_name": "sea urchins" + "name": "морски таралеж", + "plural_name": "морски таралеж" }, "abalone": { "aliases": [], @@ -5931,8 +5931,8 @@ "ginger powder": { "aliases": [], "description": "", - "name": "ginger powder", - "plural_name": "ginger powder" + "name": "джинджифил на прах", + "plural_name": "джинджифил на прах" }, "panch puran": { "aliases": [], @@ -5968,7 +5968,7 @@ "aliases": [], "description": "", "name": "пушен червен пипер", - "plural_name": "smoked paprika" + "plural_name": "пушен червен пипер" }, "fresh mint": { "aliases": [], @@ -5980,7 +5980,7 @@ "aliases": [], "description": "", "name": "кориандър на прах", - "plural_name": "coriander powder" + "plural_name": "кориандър на прах" }, "sage": { "aliases": [], @@ -6015,14 +6015,14 @@ "mustard seed": { "aliases": [], "description": "", - "name": "mustard seed", - "plural_name": "mustard seeds" + "name": "синапено семе", + "plural_name": "синапено семе" }, "white pepper": { "aliases": [], "description": "", - "name": "white pepper", - "plural_name": "white pepper" + "name": "бял пипер", + "plural_name": "бял пипер" }, "curry leaf": { "aliases": [], @@ -6033,7 +6033,7 @@ "fennel seed": { "aliases": [], "description": "", - "name": "fennel seed", + "name": "семена от копър", "plural_name": "семена от копър" }, "tarragon": { @@ -6141,8 +6141,8 @@ "fenugreek seed": { "aliases": [], "description": "", - "name": "fenugreek seed", - "plural_name": "fenugreek seeds" + "name": "семена от сминдух", + "plural_name": "семена от сминдух" }, "kashmiri red chilli": { "aliases": [], @@ -6213,8 +6213,8 @@ "black mustard seed": { "aliases": [], "description": "", - "name": "black mustard seed", - "plural_name": "black mustard seeds" + "name": "черно синапено семе", + "plural_name": "черно синапено семе" }, "dried chili": { "aliases": [], @@ -6225,8 +6225,8 @@ "black cardamom": { "aliases": [], "description": "", - "name": "black cardamom", - "plural_name": "black cardamoms" + "name": "черен кардамон", + "plural_name": "черен кардамон" }, "saffron strand": { "aliases": [], @@ -6286,7 +6286,7 @@ "aliases": [], "description": "", "name": "dill seed", - "plural_name": "dill seeds" + "plural_name": "семена от копър" }, "green peppercorn": { "aliases": [], @@ -6315,8 +6315,8 @@ "savory herb": { "aliases": [], "description": "", - "name": "savory herb", - "plural_name": "savory herbs" + "name": "чубрица", + "plural_name": "чубрица" }, "pandan leaf": { "aliases": [], @@ -6357,8 +6357,8 @@ "celery powder": { "aliases": [], "description": "", - "name": "celery powder", - "plural_name": "celery powder" + "name": "целина на прах", + "plural_name": "целина на прах" }, "black cumin": { "aliases": [], @@ -6441,15 +6441,15 @@ "confectioners sugar": { "aliases": [ "пудра захар", - "icing sugar" + "пудра захар" ], "description": "", - "name": "confectioners sugar", - "plural_name": "confectioners sugar" + "name": "пудра захар", + "plural_name": "пудра захар" }, "bar sugar": { "aliases": [ - "castor sugar" + "захар" ], "description": "", "name": "bar sugar", @@ -6638,8 +6638,8 @@ "xylitol": { "aliases": [], "description": "", - "name": "xylitol", - "plural_name": "xylitols" + "name": "ксилитол", + "plural_name": "ксилитол" }, "jam sugar": { "aliases": [], @@ -7140,8 +7140,8 @@ "red curry": { "aliases": [], "description": "", - "name": "red curry", - "plural_name": "red curries" + "name": "червено къри", + "plural_name": "червено къри" }, "old bay seasoning": { "aliases": [], @@ -7152,8 +7152,8 @@ "herbe de provence": { "aliases": [], "description": "", - "name": "herbe de provence", - "plural_name": "herbes de provence" + "name": "билки от Прованс", + "plural_name": "билки от Прованс" }, "chaat masala": { "aliases": [], @@ -10681,7 +10681,7 @@ "aliases": [], "description": "", "name": "олио за пържене", - "plural_name": "frying oil" + "plural_name": "олио за пържене" }, "sunflower oil": { "aliases": [], @@ -11088,8 +11088,8 @@ "balsamic vinegar": { "aliases": [], "description": "", - "name": "balsamic vinegar", - "plural_name": "balsamic vinegar" + "name": "балсамов оцет", + "plural_name": "балсамов оцет" }, "vinegar": { "aliases": [], @@ -11418,8 +11418,8 @@ "honey vinegar": { "aliases": [], "description": "", - "name": "honey vinegar", - "plural_name": "honey vinegar" + "name": "меден оцет", + "plural_name": "меден оцет" }, "tandoori mayonnaise": { "aliases": [], @@ -11914,8 +11914,8 @@ "black soy sauce": { "aliases": [], "description": "", - "name": "black soy sauce", - "plural_name": "black soy sauce" + "name": "черен соев сос", + "plural_name": "черен соев сос" }, "doubanjiang": { "aliases": [], @@ -12104,8 +12104,8 @@ "canned tomato": { "aliases": [], "description": "", - "name": "canned tomato", - "plural_name": "canned tomatoes" + "name": "домати от консерва", + "plural_name": "домати от консерва" }, "caper": { "aliases": [], @@ -12122,8 +12122,8 @@ "canned chickpea": { "aliases": [], "description": "", - "name": "canned chickpea", - "plural_name": "canned chickpeas" + "name": "нахут от консерва", + "plural_name": "нахут от консерва" }, "black olive": { "aliases": [], @@ -12134,14 +12134,14 @@ "canned black bean": { "aliases": [], "description": "", - "name": "canned black bean", - "plural_name": "canned black beans" + "name": "черен боб от консерва", + "plural_name": "черен боб от консерва" }, "canned pumpkin": { "aliases": [], "description": "", - "name": "canned pumpkin", - "plural_name": "canned pumpkins" + "name": "тиква от консерва", + "plural_name": "тиква от консерва" }, "kalamata olive": { "aliases": [], @@ -12152,8 +12152,8 @@ "canned tuna": { "aliases": [], "description": "", - "name": "canned tuna", - "plural_name": "canned tuna" + "name": "риба тон от консерва", + "plural_name": "риба тон от консерва" }, "pickle": { "aliases": [], @@ -12164,8 +12164,8 @@ "canned pineapple": { "aliases": [], "description": "", - "name": "canned pineapple", - "plural_name": "canned pineapples" + "name": "ананас от консерва", + "plural_name": "ананас от консерва" }, "chipotle in adobo": { "aliases": [], @@ -12176,14 +12176,14 @@ "canned anchovy": { "aliases": [], "description": "", - "name": "canned anchovy", - "plural_name": "canned anchovies" + "name": "аншоа от консерва", + "plural_name": "аншоа от консерва" }, "roasted red pepper": { "aliases": [], "description": "", - "name": "roasted red pepper", - "plural_name": "roasted red peppers" + "name": "печени червени пиперки", + "plural_name": "печени червени пиперки" }, "tomato with green chiles": { "aliases": [], @@ -12194,20 +12194,20 @@ "canned artichoke": { "aliases": [], "description": "", - "name": "canned artichoke", - "plural_name": "canned artichokes" + "name": "артишок от консерва", + "plural_name": "артишок от консерва" }, "canned corn": { "aliases": [], "description": "", - "name": "canned corn", - "plural_name": "canned corns" + "name": "царевица от консерва", + "plural_name": "царевица от консерва" }, "canned kidney bean": { "aliases": [], "description": "", - "name": "canned kidney bean", - "plural_name": "canned kidney beans" + "name": "червен боб от консерва", + "plural_name": "червен боб от консерва" }, "canned pie filling": { "aliases": [], @@ -12218,8 +12218,8 @@ "canned cannellini bean": { "aliases": [], "description": "", - "name": "canned cannellini bean", - "plural_name": "canned cannellini beans" + "name": "боб канелини от консерва", + "plural_name": "боб канелини от консерва" }, "refried bean": { "aliases": [], @@ -12230,8 +12230,8 @@ "canned whole tomato": { "aliases": [], "description": "", - "name": "canned whole tomato", - "plural_name": "canned whole tomatoes" + "name": "цял домат от консерва", + "plural_name": "цели домати от консерва" }, "sweet pickle relish": { "aliases": [], @@ -12260,8 +12260,8 @@ "canned bean": { "aliases": [], "description": "", - "name": "canned bean", - "plural_name": "canned beans" + "name": "боб от консерва", + "plural_name": "консерва боб" }, "pickled jalapeño": { "aliases": [], @@ -12284,8 +12284,8 @@ "kimchi": { "aliases": [], "description": "", - "name": "kimchi", - "plural_name": "kimchis" + "name": "кимчи", + "plural_name": "кимчи" }, "canned mandarin orange": { "aliases": [], @@ -12302,8 +12302,8 @@ "canned crab": { "aliases": [], "description": "", - "name": "canned crab", - "plural_name": "canned crabs" + "name": "раци от консерва", + "plural_name": "раци от консерва" }, "bamboo shoot": { "aliases": [], @@ -12326,8 +12326,8 @@ "canned salmon": { "aliases": [], "description": "", - "name": "canned salmon", - "plural_name": "canned salmon" + "name": "сьомга от консерва", + "plural_name": "сьомга от консерва" }, "pickling juice": { "aliases": [], @@ -12344,8 +12344,8 @@ "canned peach": { "aliases": [], "description": "", - "name": "canned peach", - "plural_name": "canned peaches" + "name": "праскова от консерва", + "plural_name": "консервирани праскови" }, "canned black-eyed pea": { "aliases": [], @@ -12362,14 +12362,14 @@ "canned apple": { "aliases": [], "description": "", - "name": "canned apple", - "plural_name": "canned apples" + "name": "ябълки от консерва", + "plural_name": "ябълки от консерва" }, "canned green bean": { "aliases": [], "description": "", - "name": "canned green bean", - "plural_name": "canned green beans" + "name": "зелен фасул от консерва", + "plural_name": "зелен фасул от консерва" }, "spam": { "aliases": [], @@ -12380,8 +12380,8 @@ "canned clam": { "aliases": [], "description": "", - "name": "canned clam", - "plural_name": "canned clams" + "name": "миди от консерва", + "plural_name": "миди от консерва" }, "chili with beans": { "aliases": [], @@ -12416,7 +12416,7 @@ "pickled red onion": { "aliases": [], "description": "", - "name": "pickled red onion", + "name": "маринован червен лук", "plural_name": "pickled red onions" }, "pimiento-stuffed green olive": { @@ -12428,8 +12428,8 @@ "canned pork": { "aliases": [], "description": "", - "name": "canned pork", - "plural_name": "canned porks" + "name": "свинско от консерва", + "plural_name": "свинско от консерва" }, "pickled beet": { "aliases": [], @@ -12440,8 +12440,8 @@ "canned cherry tomato": { "aliases": [], "description": "", - "name": "canned cherry tomato", - "plural_name": "canned cherry tomatoes" + "name": "чери домати от консерва", + "plural_name": "чери домати от консерва" }, "bread & butter pickle": { "aliases": [], @@ -12452,20 +12452,20 @@ "canned apricot": { "aliases": [], "description": "", - "name": "canned apricot", - "plural_name": "canned apricots" + "name": "кайсии от консерва", + "plural_name": "кайсии от консерва" }, "canned sweet potato": { "aliases": [], "description": "", - "name": "canned sweet potato", - "plural_name": "canned sweet potatoes" + "name": "сладки картофи от консерва", + "plural_name": "сладки картофи от консерва" }, "canned pear": { "aliases": [], "description": "", - "name": "canned pear", - "plural_name": "canned pears" + "name": "круша от консерва", + "plural_name": "круши от консерва" }, "peppadew pepper": { "aliases": [], @@ -12488,8 +12488,8 @@ "canned baby corn": { "aliases": [], "description": "", - "name": "canned baby corn", - "plural_name": "canned baby corns" + "name": "бейби царевички от консерва", + "plural_name": "бейби царевички от консерва" }, "mexican-style corn": { "aliases": [], @@ -12524,7 +12524,7 @@ "canned carrot": { "aliases": [], "description": "", - "name": "canned carrot", + "name": "консервирани моркови", "plural_name": "консервирани моркови" }, "banana pepper ring": { @@ -12536,8 +12536,8 @@ "canned lychee": { "aliases": [], "description": "", - "name": "canned lychee", - "plural_name": "canned lychees" + "name": "консервирано личи", + "plural_name": "консервирано личи" }, "pumpkin pie filling": { "aliases": [], @@ -12548,8 +12548,8 @@ "canned sardine": { "aliases": [], "description": "", - "name": "canned sardine", - "plural_name": "canned sardines" + "name": "сардини от консерва", + "plural_name": "сардини от консерва" }, "pickled pepper": { "aliases": [], @@ -12566,8 +12566,8 @@ "canned jackfruit": { "aliases": [], "description": "", - "name": "canned jackfruit", - "plural_name": "canned jackfruits" + "name": "джакфрут от консерва", + "plural_name": "джакфрут от консерва" }, "taggiasca olive": { "aliases": [], @@ -12590,8 +12590,8 @@ "canned asparagus": { "aliases": [], "description": "", - "name": "canned asparagus", - "plural_name": "canned asparagus" + "name": "аспержи от консерва", + "plural_name": "аспержи от консерва" }, "fire-roasted green chile": { "aliases": [], @@ -12602,8 +12602,8 @@ "pickled hot pepper": { "aliases": [], "description": "", - "name": "pickled hot pepper", - "plural_name": "pickled hot peppers" + "name": "маринована люта чушка", + "plural_name": "мариновани люти чушки" }, "canned peas and carrot": { "aliases": [], @@ -12626,8 +12626,8 @@ "canned mackerel": { "aliases": [], "description": "", - "name": "canned mackerel", - "plural_name": "canned mackerel" + "name": "скумрия от консерва", + "plural_name": "скумрия от консерва" }, "pickled cherry pepper": { "aliases": [], @@ -13350,8 +13350,8 @@ "bouillon cube": { "aliases": [], "description": "", - "name": "bouillon cube", - "plural_name": "bouillon cubes" + "name": "кубче бульон", + "plural_name": "кубчета бульон" }, "cream of chicken": { "aliases": [], @@ -13848,8 +13848,8 @@ "cream of cauliflower": { "aliases": [], "description": "", - "name": "cream of cauliflower", - "plural_name": "cream of cauliflower" + "name": "крем от карфиол", + "plural_name": "крем от карфиол" }, "dashida": { "aliases": [], @@ -14245,8 +14245,8 @@ "butterscotch": { "aliases": [], "description": "", - "name": "butterscotch", - "plural_name": "butterscotches" + "name": "карамел", + "plural_name": "карамел" }, "blueberry jam": { "aliases": [], @@ -16303,8 +16303,8 @@ "maltodextrin": { "aliases": [], "description": "", - "name": "maltodextrin", - "plural_name": "maltodextrins" + "name": "Малтодекстрин", + "plural_name": "Малтодекстрини" } } } diff --git a/mealie/repos/seed/resources/foods/locales/da-DK.json b/mealie/repos/seed/resources/foods/locales/da-DK.json index 503b35a58..6982c11b8 100644 --- a/mealie/repos/seed/resources/foods/locales/da-DK.json +++ b/mealie/repos/seed/resources/foods/locales/da-DK.json @@ -132,8 +132,8 @@ "baby greens": { "aliases": [], "description": "", - "name": "baby greens", - "plural_name": "baby greens" + "name": "babysalater", + "plural_name": "babysalater" }, "pumpkin": { "aliases": [], diff --git a/mealie/repos/seed/resources/foods/locales/fr-FR.json b/mealie/repos/seed/resources/foods/locales/fr-FR.json index b3843069e..a0d177406 100644 --- a/mealie/repos/seed/resources/foods/locales/fr-FR.json +++ b/mealie/repos/seed/resources/foods/locales/fr-FR.json @@ -5419,8 +5419,8 @@ "zander": { "aliases": [], "description": "", - "name": "zander", - "plural_name": "zanders" + "name": "sandre", + "plural_name": "sandres" }, "amberjack": { "aliases": [], @@ -5485,14 +5485,14 @@ "beluga caviar": { "aliases": [], "description": "", - "name": "beluga caviar", - "plural_name": "beluga caviars" + "name": "caviar de béluga", + "plural_name": "caviars de béluga" }, "bombay duck": { "aliases": [], "description": "", - "name": "bombay duck", - "plural_name": "bombay ducks" + "name": "scopelidé", + "plural_name": "scopelidés" } } }, @@ -5579,8 +5579,8 @@ "octopus": { "aliases": [], "description": "", - "name": "octopus", - "plural_name": "octopi" + "name": "poulpe", + "plural_name": "poulpes" }, "kombu": { "aliases": [], @@ -5609,8 +5609,8 @@ "soft-shell crab": { "aliases": [], "description": "", - "name": "soft-shell crab", - "plural_name": "soft-shell crabs" + "name": "crabe à carapace molle", + "plural_name": "crabes à carapace molle" }, "scampi": { "aliases": [], @@ -5633,8 +5633,8 @@ "baby squid": { "aliases": [], "description": "", - "name": "baby squid", - "plural_name": "baby squids" + "name": "jeune calamar", + "plural_name": "jeunes calamars" }, "squid ink": { "aliases": [], @@ -5651,14 +5651,14 @@ "dulse seaweed": { "aliases": [], "description": "", - "name": "dulse seaweed", - "plural_name": "dulse seaweeds" + "name": "dulse", + "plural_name": "dulses" }, "roasted seaweed": { "aliases": [], "description": "", - "name": "roasted seaweed", - "plural_name": "roasted seaweeds" + "name": "algue grillée", + "plural_name": "algues grillées" }, "smoked oyster": { "aliases": [], @@ -5700,25 +5700,25 @@ "aliases": [], "description": "", "name": "conque", - "plural_name": "conches" + "plural_name": "conques" }, "arame": { "aliases": [], "description": "", - "name": "arame", - "plural_name": "arames" + "name": "aramé", + "plural_name": "aramés" }, "calamari steak": { "aliases": [], "description": "", - "name": "calamari steak", - "plural_name": "calamari steaks" + "name": "steak de calamar", + "plural_name": "steaks de calamar" }, "mud crab": { "aliases": [], "description": "", - "name": "mud crab", - "plural_name": "mud crabs" + "name": "crabe de mangrove", + "plural_name": "crabes de mangrove" }, "sea urchin": { "aliases": [], @@ -5753,14 +5753,14 @@ "sea snail": { "aliases": [], "description": "", - "name": "sea snail", - "plural_name": "sea snails" + "name": "limace de mer", + "plural_name": "limaces de mer" }, "aonori": { "aliases": [], "description": "", - "name": "aonori", - "plural_name": "aonoris" + "name": "algue Aonori", + "plural_name": "algues Aonori" }, "prepared crab cake": { "aliases": [], @@ -5771,8 +5771,8 @@ "sea lettuce": { "aliases": [], "description": "", - "name": "sea lettuce", - "plural_name": "sea lettuce" + "name": "Ulve", + "plural_name": "Ulves" }, "korean seaweed": { "aliases": [], @@ -5783,8 +5783,8 @@ "ogo seaweed": { "aliases": [], "description": "", - "name": "ogo seaweed", - "plural_name": "ogo seaweeds" + "name": "ogonori", + "plural_name": "ogonoris" }, "seaweed caviar": { "aliases": [], @@ -5818,7 +5818,7 @@ "aliases": [], "description": "", "name": "cannelle", - "plural_name": "cinnamon" + "plural_name": "cannelle" }, "parsley": { "aliases": [], @@ -5926,13 +5926,13 @@ "aliases": [], "description": "", "name": "poudre d'oignon", - "plural_name": "onion powder" + "plural_name": "oignon en poudre" }, "ginger powder": { "aliases": [], "description": "", "name": "poudre de gingembre", - "plural_name": "ginger powder" + "plural_name": "gingembre en poudre" }, "panch puran": { "aliases": [], @@ -5968,7 +5968,7 @@ "aliases": [], "description": "", "name": "paprika fumé", - "plural_name": "smoked paprika" + "plural_name": "paprika fumé" }, "fresh mint": { "aliases": [], @@ -5997,20 +5997,20 @@ "allspice": { "aliases": [], "description": "", - "name": "allspice", - "plural_name": "allspices" + "name": "quatre-épices", + "plural_name": "quatre-épices" }, "cracked pepper": { "aliases": [], "description": "", - "name": "cracked pepper", - "plural_name": "cracked pepper" + "name": "poivre concassé", + "plural_name": "poivres concassés" }, "peppercorn": { "aliases": [], "description": "", - "name": "peppercorn", - "plural_name": "peppercorns" + "name": "poivre en grains", + "plural_name": "poivres en grains" }, "mustard seed": { "aliases": [], @@ -6051,8 +6051,8 @@ "asafoetida": { "aliases": [], "description": "", - "name": "asafoetida", - "plural_name": "asafoetidas" + "name": "ase fétide", + "plural_name": "ase fétide" }, "star anise": { "aliases": [], @@ -6081,8 +6081,8 @@ "garlic granule": { "aliases": [], "description": "", - "name": "garlic granule", - "plural_name": "garlic granules" + "name": "ail semoule", + "plural_name": "ail semoule" }, "celery seed": { "aliases": [], @@ -6358,7 +6358,7 @@ "aliases": [], "description": "", "name": "poudre de céleri", - "plural_name": "celery powder" + "plural_name": "céleri en poudre" }, "black cumin": { "aliases": [], @@ -6369,8 +6369,8 @@ "anardana": { "aliases": [], "description": "", - "name": "anardana", - "plural_name": "anardanas" + "name": "grenade en graine", + "plural_name": "grenade en graines" }, "vietnamese mint": { "aliases": [], @@ -6393,14 +6393,14 @@ "lemon verbena": { "aliases": [], "description": "", - "name": "lemon verbena", - "plural_name": "lemon verbenas" + "name": "verveine citronnelle", + "plural_name": "verveines citronnelles" }, "raw stevia": { "aliases": [], "description": "", "name": "feuille de stévia brute", - "plural_name": "raw stevia" + "plural_name": "stevia pur" }, "achiote paste": { "aliases": [], @@ -7344,8 +7344,8 @@ "hot curry": { "aliases": [], "description": "", - "name": "hot curry", - "plural_name": "hot curries" + "name": "curry épicé", + "plural_name": "curry épicé" }, "salt-free seasoning": { "aliases": [], @@ -10101,7 +10101,7 @@ "aliases": [], "description": "", "name": "sourdough bread", - "plural_name": "sourdough breads" + "plural_name": "pains au levain" }, "rustic italian bread": { "aliases": [], @@ -10251,7 +10251,7 @@ "aliases": [], "description": "", "name": "pita chip", - "plural_name": "pita chips" + "plural_name": "chips de pain pita" }, "gluten free bread": { "aliases": [], @@ -15787,8 +15787,8 @@ "orange blossom water": { "aliases": [], "description": "", - "name": "orange blossom water", - "plural_name": "orange blossom water" + "name": "eau de fleur d’oranger", + "plural_name": "eau de fleur d’oranger" }, "liquid egg white": { "aliases": [], diff --git a/mealie/repos/seed/resources/foods/locales/nl-NL.json b/mealie/repos/seed/resources/foods/locales/nl-NL.json index 66fc5c761..0b99c1e7b 100644 --- a/mealie/repos/seed/resources/foods/locales/nl-NL.json +++ b/mealie/repos/seed/resources/foods/locales/nl-NL.json @@ -2866,7 +2866,7 @@ "aliases": [], "description": "", "name": "zure melk", - "plural_name": "sour milk" + "plural_name": "karnemelk" }, "ganache": { "aliases": [], @@ -3003,8 +3003,8 @@ "dahi": { "aliases": [], "description": "", - "name": "dahi", - "plural_name": "dahis" + "name": "dahi/curd (indiase yoghurt)", + "plural_name": "dahi/curd (indiase yoghurt)" }, "cinnamon sugar butter spread": { "aliases": [], @@ -3070,7 +3070,7 @@ "aliases": [], "description": "", "name": "passievruchten curd", - "plural_name": "passion-fruit curds" + "plural_name": "passievrucht curd" }, "pickled egg": { "aliases": [], @@ -3893,7 +3893,7 @@ "brisket": { "aliases": [], "description": "", - "name": "", + "name": "klapstuk", "plural_name": "klapstukken" }, "deli ham": { @@ -4289,8 +4289,8 @@ "bologna": { "aliases": [], "description": "", - "name": "bologna", - "plural_name": "bolognas" + "name": "bolognese", + "plural_name": "bologneses" }, "burger patty": { "aliases": [], @@ -4695,13 +4695,13 @@ "wild game bird": { "aliases": [], "description": "", - "name": "wild game bird", + "name": "wild vogel", "plural_name": "wild game birds" }, "turkey liver": { "aliases": [], "description": "", - "name": "turkey liver", + "name": "kalkoenen levertjes", "plural_name": "kalkoen levertjes" }, "chicken neck": { @@ -4827,20 +4827,20 @@ "chicken ham": { "aliases": [], "description": "", - "name": "chicken ham", - "plural_name": "chicken hams" + "name": "kipham", + "plural_name": "kippenham" }, "duck neck": { "aliases": [], "description": "", - "name": "duck neck", - "plural_name": "duck necks" + "name": "eendennek", + "plural_name": "eendennekken" }, "chicken chorizo": { "aliases": [], "description": "", - "name": "chicken chorizo", - "plural_name": "chicken chorizoes" + "name": "chorizo van Kip", + "plural_name": "chorizo's van Kip" }, "chicken frame": { "aliases": [], @@ -9540,8 +9540,8 @@ "fettuccine": { "aliases": [], "description": "", - "name": "fettuccine", - "plural_name": "fettuccines" + "name": "fettucini", + "plural_name": "fettucini's" }, "orzo": { "aliases": [], @@ -9552,8 +9552,8 @@ "pasta shell": { "aliases": [], "description": "", - "name": "pasta shell", - "plural_name": "pasta shells" + "name": "pasta schelp", + "plural_name": "pastaschelpen" }, "bow-tie pasta": { "aliases": [], @@ -9571,7 +9571,7 @@ "aliases": [], "description": "", "name": "tortellini", - "plural_name": "tortellinis" + "plural_name": "tortellini's" }, "cheese tortellini": { "aliases": [], diff --git a/mealie/repos/seed/resources/units/locales/hu-HU.json b/mealie/repos/seed/resources/units/locales/hu-HU.json index e30b7dc9d..8ae137d63 100644 --- a/mealie/repos/seed/resources/units/locales/hu-HU.json +++ b/mealie/repos/seed/resources/units/locales/hu-HU.json @@ -139,8 +139,8 @@ "abbreviation": "" }, "sprig": { - "name": "sprig", - "plural_name": "sprigs", + "name": "ág", + "plural_name": "ág", "description": "", "abbreviation": "" } diff --git a/mealie/schema/recipe/recipe_ingredient.py b/mealie/schema/recipe/recipe_ingredient.py index 64d7da513..3ccb06a5f 100644 --- a/mealie/schema/recipe/recipe_ingredient.py +++ b/mealie/schema/recipe/recipe_ingredient.py @@ -337,6 +337,11 @@ class RecipeIngredient(RecipeIngredientBase): reference_id: UUID = Field(default_factory=uuid4) model_config = ConfigDict(from_attributes=True) + @field_validator("reference_id", mode="before") + @classmethod + def ensure_reference_id(cls, value) -> UUID: + return value or uuid4() + @field_validator("quantity", mode="before") @classmethod def validate_quantity(cls, value) -> NoneFloat: diff --git a/pyproject.toml b/pyproject.toml index a6ca1d20e..e79870bc2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ dependencies = [ "Jinja2==3.1.6", "Pillow==12.1.1", "PyYAML==6.0.3", - "SQLAlchemy==2.0.46", + "SQLAlchemy==2.0.47", "aiofiles==25.1.0", "alembic==1.18.4", "aniso8601==10.0.1", @@ -17,7 +17,7 @@ dependencies = [ "apprise==1.9.7", "bcrypt==5.0.0", "extruct==0.18.0", - "fastapi==0.131.0", + "fastapi==0.133.1", "httpx==0.28.1", "lxml==6.0.2", "orjson==3.11.7", @@ -42,7 +42,7 @@ dependencies = [ "pydantic-settings==2.13.1", "pillow-heif==1.2.1", "pyjwt==2.11.0", - "openai==2.23.0", + "openai==2.24.0", "typing-extensions==4.15.0", "itsdangerous==2.2.0", "ingredient-parser-nlp==2.5.0", diff --git a/tests/integration_tests/user_recipe_tests/test_recipe_crud.py b/tests/integration_tests/user_recipe_tests/test_recipe_crud.py index 0370dbbaf..7203527df 100644 --- a/tests/integration_tests/user_recipe_tests/test_recipe_crud.py +++ b/tests/integration_tests/user_recipe_tests/test_recipe_crud.py @@ -19,6 +19,7 @@ from recipe_scrapers._schemaorg import SchemaOrg from recipe_scrapers.plugins import SchemaOrgFillPlugin from slugify import slugify +from mealie.db.models.recipe import RecipeModel from mealie.pkgs.safehttp.transport import AsyncSafeTransport from mealie.schema.cookbook.cookbook import SaveCookBook from mealie.schema.recipe.recipe import Recipe, RecipeCategory, RecipeSummary, RecipeTag @@ -1252,6 +1253,25 @@ def test_get_recipe_by_slug_or_id(api_client: TestClient, unique_user: utils.Tes assert recipe_data["id"] == recipe_id +def test_get_recipe_ingredient_missing_reference_id(api_client: TestClient, unique_user: utils.TestUser): + slug = random_string() + response = api_client.post(api_routes.recipes, json={"name": slug}, headers=unique_user.token) + assert response.status_code == 201 + + # Manually edit the database to remove the reference id from the ingredient + session = unique_user.repos.session + recipe = session.query(RecipeModel).filter(RecipeModel.slug == slug).first() + recipe.recipe_ingredient[0].reference_id = None + session.commit() + + # Make sure we can fetch the recipe and generate a new reference id + response = api_client.get(api_routes.recipes_slug(slug), headers=unique_user.token) + assert response.status_code == 200 + recipe_data = response.json() + assert len(recipe_data["recipeIngredient"]) == 1 + assert recipe_data["recipeIngredient"][0].get("referenceId") + + @pytest.mark.parametrize("organizer_type", ["tags", "categories", "tools"]) def test_get_recipes_organizer_filter(api_client: TestClient, unique_user: utils.TestUser, organizer_type: str): database = unique_user.repos diff --git a/tests/unit_tests/services_tests/scheduler/tasks/test_create_timeline_events.py b/tests/unit_tests/services_tests/scheduler/tasks/test_create_timeline_events.py index afab2ed8f..45b78874f 100644 --- a/tests/unit_tests/services_tests/scheduler/tasks/test_create_timeline_events.py +++ b/tests/unit_tests/services_tests/scheduler/tasks/test_create_timeline_events.py @@ -217,7 +217,7 @@ def test_preserve_future_made_date(api_client: TestClient, unique_user: TestUser future_dt = datetime.now(UTC) + timedelta(days=random_int(1, 10)) response = api_client.patch( api_routes.recipes_slug_last_made(recipe.slug), - data=RecipeLastMade(timestamp=future_dt).model_dump_json(), + json=RecipeLastMade(timestamp=future_dt).model_dump(mode="json"), headers=unique_user.token, ) assert response.status_code == 200 diff --git a/uv.lock b/uv.lock index c65487017..2c0cc7b7a 100644 --- a/uv.lock +++ b/uv.lock @@ -399,7 +399,7 @@ wheels = [ [[package]] name = "fastapi" -version = "0.131.0" +version = "0.133.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-doc" }, @@ -408,9 +408,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/91/32/158cbf685b7d5a26f87131069da286bf10fc9fbf7fc968d169d48a45d689/fastapi-0.131.0.tar.gz", hash = "sha256:6531155e52bee2899a932c746c9a8250f210e3c3303a5f7b9f8a808bfe0548ff", size = 369612, upload-time = "2026-02-22T16:38:11.252Z" } +sdist = { url = "https://files.pythonhosted.org/packages/22/6f/0eafed8349eea1fa462238b54a624c8b408cd1ba2795c8e64aa6c34f8ab7/fastapi-0.133.1.tar.gz", hash = "sha256:ed152a45912f102592976fde6cbce7dae1a8a1053da94202e51dd35d184fadd6", size = 378741, upload-time = "2026-02-25T18:18:17.398Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/94/b58ec24c321acc2ad1327f69b033cadc005e0f26df9a73828c9e9c7db7ce/fastapi-0.131.0-py3-none-any.whl", hash = "sha256:ed0e53decccf4459de78837ce1b867cd04fa9ce4579497b842579755d20b405a", size = 103854, upload-time = "2026-02-22T16:38:09.814Z" }, + { url = "https://files.pythonhosted.org/packages/d2/c9/a175a7779f3599dfa4adfc97a6ce0e157237b3d7941538604aadaf97bfb6/fastapi-0.133.1-py3-none-any.whl", hash = "sha256:658f34ba334605b1617a65adf2ea6461901bdb9af3a3080d63ff791ecf7dc2e2", size = 109029, upload-time = "2026-02-25T18:18:18.578Z" }, ] [[package]] @@ -911,7 +911,7 @@ requires-dist = [ { name = "bcrypt", specifier = "==5.0.0" }, { name = "beautifulsoup4", specifier = "==4.14.3" }, { name = "extruct", specifier = "==0.18.0" }, - { name = "fastapi", specifier = "==0.131.0" }, + { name = "fastapi", specifier = "==0.133.1" }, { name = "html2text", specifier = "==2025.4.15" }, { name = "httpx", specifier = "==0.28.1" }, { name = "ingredient-parser-nlp", specifier = "==2.5.0" }, @@ -919,7 +919,7 @@ requires-dist = [ { name = "itsdangerous", specifier = "==2.2.0" }, { name = "jinja2", specifier = "==3.1.6" }, { name = "lxml", specifier = "==6.0.2" }, - { name = "openai", specifier = "==2.23.0" }, + { name = "openai", specifier = "==2.24.0" }, { name = "orjson", specifier = "==3.11.7" }, { name = "paho-mqtt", specifier = "==1.6.1" }, { name = "pillow", specifier = "==12.1.1" }, @@ -939,7 +939,7 @@ requires-dist = [ { name = "rapidfuzz", specifier = "==3.14.3" }, { name = "recipe-scrapers", specifier = "==15.11.0" }, { name = "requests", specifier = "==2.32.5" }, - { name = "sqlalchemy", specifier = "==2.0.46" }, + { name = "sqlalchemy", specifier = "==2.0.47" }, { name = "text-unidecode", specifier = "==1.3" }, { name = "typing-extensions", specifier = "==4.15.0" }, { name = "tzdata", specifier = "==2025.3" }, @@ -1145,7 +1145,7 @@ wheels = [ [[package]] name = "openai" -version = "2.23.0" +version = "2.24.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -1157,9 +1157,9 @@ dependencies = [ { name = "tqdm" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/61/4b/dc1d84b8237205ebe48a1b1c9c3a8e1ab9fd08b30811b6d787196df58fd6/openai-2.23.0.tar.gz", hash = "sha256:7d24cc8087d5e8eed58e98aaa823391d39d12f9a9a2755770f67c7bb2004d94c", size = 657323, upload-time = "2026-02-24T03:20:20.323Z" } +sdist = { url = "https://files.pythonhosted.org/packages/55/13/17e87641b89b74552ed408a92b231283786523edddc95f3545809fab673c/openai-2.24.0.tar.gz", hash = "sha256:1e5769f540dbd01cb33bc4716a23e67b9d695161a734aff9c5f925e2bf99a673", size = 658717, upload-time = "2026-02-24T20:02:07.958Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/5f/bcdf0fb510c24f021e485f920677da363cd59d6e0310171bf2cad6e052b5/openai-2.23.0-py3-none-any.whl", hash = "sha256:1041d40bebf845053fda1946104f8bf9c3e2df957a41c3878c55c72c352630e9", size = 1118971, upload-time = "2026-02-24T03:20:18.708Z" }, + { url = "https://files.pythonhosted.org/packages/c9/30/844dc675ee6902579b8eef01ed23917cc9319a1c9c0c14ec6e39340c96d0/openai-2.24.0-py3-none-any.whl", hash = "sha256:fed30480d7d6c884303287bde864980a4b137b60553ffbcf9ab4a233b7a73d94", size = 1120122, upload-time = "2026-02-24T20:02:05.669Z" }, ] [[package]] @@ -1794,22 +1794,22 @@ wheels = [ [[package]] name = "sqlalchemy" -version = "2.0.46" +version = "2.0.47" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/aa/9ce0f3e7a9829ead5c8ce549392f33a12c4555a6c0609bb27d882e9c7ddf/sqlalchemy-2.0.46.tar.gz", hash = "sha256:cf36851ee7219c170bb0793dbc3da3e80c582e04a5437bc601bfe8c85c9216d7", size = 9865393, upload-time = "2026-01-21T18:03:45.119Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/4b/1e00561093fe2cd8eef09d406da003c8a118ff02d6548498c1ae677d68d9/sqlalchemy-2.0.47.tar.gz", hash = "sha256:e3e7feb57b267fe897e492b9721ae46d5c7de6f9e8dee58aacf105dc4e154f3d", size = 9886323, upload-time = "2026-02-24T16:34:27.947Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/35/d16bfa235c8b7caba3730bba43e20b1e376d2224f407c178fbf59559f23e/sqlalchemy-2.0.46-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3a9a72b0da8387f15d5810f1facca8f879de9b85af8c645138cba61ea147968c", size = 2153405, upload-time = "2026-01-21T19:05:54.143Z" }, - { url = "https://files.pythonhosted.org/packages/06/6c/3192e24486749862f495ddc6584ed730c0c994a67550ec395d872a2ad650/sqlalchemy-2.0.46-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2347c3f0efc4de367ba00218e0ae5c4ba2306e47216ef80d6e31761ac97cb0b9", size = 3334702, upload-time = "2026-01-21T18:46:45.384Z" }, - { url = "https://files.pythonhosted.org/packages/ea/a2/b9f33c8d68a3747d972a0bb758c6b63691f8fb8a49014bc3379ba15d4274/sqlalchemy-2.0.46-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9094c8b3197db12aa6f05c51c05daaad0a92b8c9af5388569847b03b1007fb1b", size = 3347664, upload-time = "2026-01-21T18:40:09.979Z" }, - { url = "https://files.pythonhosted.org/packages/aa/d2/3e59e2a91eaec9db7e8dc6b37b91489b5caeb054f670f32c95bcba98940f/sqlalchemy-2.0.46-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37fee2164cf21417478b6a906adc1a91d69ae9aba8f9533e67ce882f4bb1de53", size = 3277372, upload-time = "2026-01-21T18:46:47.168Z" }, - { url = "https://files.pythonhosted.org/packages/dd/dd/67bc2e368b524e2192c3927b423798deda72c003e73a1e94c21e74b20a85/sqlalchemy-2.0.46-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b1e14b2f6965a685c7128bd315e27387205429c2e339eeec55cb75ca4ab0ea2e", size = 3312425, upload-time = "2026-01-21T18:40:11.548Z" }, - { url = "https://files.pythonhosted.org/packages/43/82/0ecd68e172bfe62247e96cb47867c2d68752566811a4e8c9d8f6e7c38a65/sqlalchemy-2.0.46-cp312-cp312-win32.whl", hash = "sha256:412f26bb4ba942d52016edc8d12fb15d91d3cd46b0047ba46e424213ad407bcb", size = 2113155, upload-time = "2026-01-21T18:42:49.748Z" }, - { url = "https://files.pythonhosted.org/packages/bc/2a/2821a45742073fc0331dc132552b30de68ba9563230853437cac54b2b53e/sqlalchemy-2.0.46-cp312-cp312-win_amd64.whl", hash = "sha256:ea3cd46b6713a10216323cda3333514944e510aa691c945334713fca6b5279ff", size = 2140078, upload-time = "2026-01-21T18:42:51.197Z" }, - { url = "https://files.pythonhosted.org/packages/fc/a1/9c4efa03300926601c19c18582531b45aededfb961ab3c3585f1e24f120b/sqlalchemy-2.0.46-py3-none-any.whl", hash = "sha256:f9c11766e7e7c0a2767dda5acb006a118640c9fc0a4104214b96269bfb78399e", size = 1937882, upload-time = "2026-01-21T18:22:10.456Z" }, + { url = "https://files.pythonhosted.org/packages/80/88/74eb470223ff88ea6572a132c0b8de8c1d8ed7b843d3b44a8a3c77f31d39/sqlalchemy-2.0.47-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4fa91b19d6b9821c04cc8f7aa2476429cc8887b9687c762815aa629f5c0edec1", size = 2155687, upload-time = "2026-02-24T17:05:46.451Z" }, + { url = "https://files.pythonhosted.org/packages/ef/ba/1447d3d558971b036cb93b557595cb5dcdfe728f1c7ac4dec16505ef5756/sqlalchemy-2.0.47-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7c5bbbd14eff577c8c79cbfe39a0771eecd20f430f3678533476f0087138f356", size = 3336978, upload-time = "2026-02-24T17:18:04.597Z" }, + { url = "https://files.pythonhosted.org/packages/8a/07/b47472d2ffd0776826f17ccf0b4d01b224c99fbd1904aeb103dffbb4b1cc/sqlalchemy-2.0.47-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a5a6c555da8d4280a3c4c78c5b7a3f990cee2b2884e5f934f87a226191682ff7", size = 3349939, upload-time = "2026-02-24T17:27:18.937Z" }, + { url = "https://files.pythonhosted.org/packages/bb/c6/95fa32b79b57769da3e16f054cf658d90940317b5ca0ec20eac84aa19c4f/sqlalchemy-2.0.47-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ed48a1701d24dff3bb49a5bce94d6bc84cbe33d98af2aa2d3cdcce3dea1709ec", size = 3279648, upload-time = "2026-02-24T17:18:07.038Z" }, + { url = "https://files.pythonhosted.org/packages/bb/c8/3d07e7c73928dc59a0bed40961ca4e313e797bce650b088e8d5fdd3ad939/sqlalchemy-2.0.47-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4f3178c920ad98158f0b6309382194df04b14808fa6052ae07099fdde29d5602", size = 3314695, upload-time = "2026-02-24T17:27:20.93Z" }, + { url = "https://files.pythonhosted.org/packages/6b/d2/ed32b1611c1e19fdb028eee1adc5a9aa138c2952d09ae11f1670170f80ae/sqlalchemy-2.0.47-cp312-cp312-win32.whl", hash = "sha256:b9c11ac9934dd59ece9619fe42780a08abe2faab7b0543bb00d5eabea4f421b9", size = 2115502, upload-time = "2026-02-24T17:22:52.546Z" }, + { url = "https://files.pythonhosted.org/packages/fd/52/9de590356a4dd8e9ef5a881dbba64b2bbc4cbc71bf02bc68e775fb9b1899/sqlalchemy-2.0.47-cp312-cp312-win_amd64.whl", hash = "sha256:db43b72cf8274a99e089755c9c1e0b947159b71adbc2c83c3de2e38d5d607acb", size = 2142435, upload-time = "2026-02-24T17:22:54.268Z" }, + { url = "https://files.pythonhosted.org/packages/15/9f/7c378406b592fcf1fc157248607b495a40e3202ba4a6f1372a2ba6447717/sqlalchemy-2.0.47-py3-none-any.whl", hash = "sha256:e2647043599297a1ef10e720cf310846b7f31b6c841fee093d2b09d81215eb93", size = 1940159, upload-time = "2026-02-24T17:15:07.158Z" }, ] [[package]]