mirror of
https://github.com/mealie-recipes/mealie.git
synced 2026-02-24 16:53:12 -05:00
Compare commits
2 Commits
v3.0.2
...
test-v-sho
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1f2168b6d6 | ||
|
|
064acd1289 |
@@ -179,15 +179,9 @@ def inject_nuxt_values():
|
||||
|
||||
all_langs = []
|
||||
for match in locales_dir.glob("*.json"):
|
||||
match_data = LOCALE_DATA.get(match.stem)
|
||||
match_dir = match_data.dir if match_data else "ltr"
|
||||
|
||||
lang_string = f'{{ code: "{match.stem}", file: "{match.name.replace(".json", ".ts")}", dir: "{match_dir}" }},'
|
||||
lang_string = f'{{ code: "{match.stem}", file: "{match.name.replace(".json", ".ts")}" }},'
|
||||
all_langs.append(lang_string)
|
||||
|
||||
all_langs.sort()
|
||||
all_date_locales.sort()
|
||||
|
||||
log.debug(f"injecting locales into nuxt config -> {nuxt_config}")
|
||||
inject_inline(nuxt_config, CodeKeys.nuxt_local_messages, all_langs)
|
||||
inject_inline(i18n_config, CodeKeys.nuxt_local_dates, all_date_locales)
|
||||
|
||||
@@ -125,20 +125,25 @@
|
||||
</v-list-item>
|
||||
<div v-if="useItems.recipeActions && recipeActions && recipeActions.length">
|
||||
<v-divider />
|
||||
<v-list-item
|
||||
v-for="(action, index) in recipeActions"
|
||||
:key="index"
|
||||
@click="executeRecipeAction(action)"
|
||||
>
|
||||
<template #prepend>
|
||||
<v-icon color="undefined">
|
||||
{{ $globals.icons.linkVariantPlus }}
|
||||
</v-icon>
|
||||
<v-list-group @click.stop>
|
||||
<template #activator="{ props }">
|
||||
<v-list-item-title v-bind="props">
|
||||
{{ $t("recipe.recipe-actions") }}
|
||||
</v-list-item-title>
|
||||
</template>
|
||||
<v-list-item-title>
|
||||
{{ action.title }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
<v-list density="compact" class="ma-0 pa-0">
|
||||
<v-list-item
|
||||
v-for="(action, index) in recipeActions"
|
||||
:key="index"
|
||||
class="pl-6"
|
||||
@click="executeRecipeAction(action)"
|
||||
>
|
||||
<v-list-item-title>
|
||||
{{ action.title }}
|
||||
</v-list-item-title>
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-list-group>
|
||||
</div>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
|
||||
@@ -3,13 +3,12 @@
|
||||
v-model="selected"
|
||||
item-key="id"
|
||||
show-select
|
||||
:sort-by="sortBy"
|
||||
:sort-by="[{ key: 'dateAdded', order: 'desc' }]"
|
||||
:headers="headers"
|
||||
:items="recipes"
|
||||
:items-per-page="15"
|
||||
class="elevation-0"
|
||||
:loading="loading"
|
||||
return-object
|
||||
>
|
||||
<template #[`item.name`]="{ item }">
|
||||
<a
|
||||
@@ -118,7 +117,7 @@ export default defineNuxtComponent({
|
||||
},
|
||||
},
|
||||
},
|
||||
emits: ["click", "update:modelValue"],
|
||||
emits: ["click"],
|
||||
setup(props, context) {
|
||||
const i18n = useI18n();
|
||||
const $auth = useMealieAuth();
|
||||
@@ -129,9 +128,6 @@ export default defineNuxtComponent({
|
||||
set: value => context.emit(INPUT_EVENT, value),
|
||||
});
|
||||
|
||||
// Initialize sort state with default sorting by dateAdded descending
|
||||
const sortBy = ref([{ key: "dateAdded", order: "desc" }]);
|
||||
|
||||
const headers = computed(() => {
|
||||
const hdrs: Array<{ title: string; value: string; align?: string; sortable?: boolean }> = [];
|
||||
|
||||
@@ -210,7 +206,6 @@ export default defineNuxtComponent({
|
||||
|
||||
return {
|
||||
selected,
|
||||
sortBy,
|
||||
groupSlug,
|
||||
headers,
|
||||
formatDate,
|
||||
|
||||
@@ -7,14 +7,13 @@
|
||||
<v-card-text>
|
||||
{{ $t("language-dialog.select-description") }}
|
||||
<v-autocomplete
|
||||
v-model="selectedLocale"
|
||||
v-model="locale"
|
||||
:items="locales"
|
||||
item-title="name"
|
||||
item-value="value"
|
||||
class="my-3"
|
||||
hide-details
|
||||
variant="outlined"
|
||||
@update:model-value="onLocaleSelect"
|
||||
offset
|
||||
>
|
||||
<template #item="{ item, props }">
|
||||
<div
|
||||
@@ -60,14 +59,6 @@ export default defineNuxtComponent({
|
||||
});
|
||||
|
||||
const { locales: LOCALES, locale, i18n } = useLocales();
|
||||
|
||||
const selectedLocale = ref(locale.value);
|
||||
const onLocaleSelect = (value: string) => {
|
||||
if (value && locales.some(l => l.value === value)) {
|
||||
locale.value = value as any;
|
||||
}
|
||||
};
|
||||
|
||||
watch(locale, () => {
|
||||
dialog.value = false; // Close dialog when locale changes
|
||||
});
|
||||
@@ -81,8 +72,6 @@ export default defineNuxtComponent({
|
||||
i18n,
|
||||
locales,
|
||||
locale,
|
||||
selectedLocale,
|
||||
onLocaleSelect,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
@@ -33,7 +33,7 @@ export const LOCALES = [
|
||||
{
|
||||
name: "Svenska (Swedish)",
|
||||
value: "sv-SE",
|
||||
progress: 47,
|
||||
progress: 39,
|
||||
dir: "ltr",
|
||||
},
|
||||
{
|
||||
@@ -57,7 +57,7 @@ export const LOCALES = [
|
||||
{
|
||||
name: "Pусский (Russian)",
|
||||
value: "ru-RU",
|
||||
progress: 37,
|
||||
progress: 35,
|
||||
dir: "ltr",
|
||||
},
|
||||
{
|
||||
@@ -75,7 +75,7 @@ export const LOCALES = [
|
||||
{
|
||||
name: "Português do Brasil (Brazilian Portuguese)",
|
||||
value: "pt-BR",
|
||||
progress: 36,
|
||||
progress: 34,
|
||||
dir: "ltr",
|
||||
},
|
||||
{
|
||||
@@ -87,13 +87,13 @@ export const LOCALES = [
|
||||
{
|
||||
name: "Norsk (Norwegian)",
|
||||
value: "no-NO",
|
||||
progress: 38,
|
||||
progress: 37,
|
||||
dir: "ltr",
|
||||
},
|
||||
{
|
||||
name: "Nederlands (Dutch)",
|
||||
value: "nl-NL",
|
||||
progress: 44,
|
||||
progress: 42,
|
||||
dir: "ltr",
|
||||
},
|
||||
{
|
||||
@@ -123,7 +123,7 @@ export const LOCALES = [
|
||||
{
|
||||
name: "Italiano (Italian)",
|
||||
value: "it-IT",
|
||||
progress: 38,
|
||||
progress: 37,
|
||||
dir: "ltr",
|
||||
},
|
||||
{
|
||||
@@ -135,7 +135,7 @@ export const LOCALES = [
|
||||
{
|
||||
name: "Magyar (Hungarian)",
|
||||
value: "hu-HU",
|
||||
progress: 40,
|
||||
progress: 39,
|
||||
dir: "ltr",
|
||||
},
|
||||
{
|
||||
@@ -147,19 +147,19 @@ export const LOCALES = [
|
||||
{
|
||||
name: "עברית (Hebrew)",
|
||||
value: "he-IL",
|
||||
progress: 45,
|
||||
progress: 37,
|
||||
dir: "rtl",
|
||||
},
|
||||
{
|
||||
name: "Galego (Galician)",
|
||||
value: "gl-ES",
|
||||
progress: 38,
|
||||
progress: 37,
|
||||
dir: "ltr",
|
||||
},
|
||||
{
|
||||
name: "Français (French)",
|
||||
value: "fr-FR",
|
||||
progress: 49,
|
||||
progress: 38,
|
||||
dir: "ltr",
|
||||
},
|
||||
{
|
||||
@@ -189,7 +189,7 @@ export const LOCALES = [
|
||||
{
|
||||
name: "Español (Spanish)",
|
||||
value: "es-ES",
|
||||
progress: 40,
|
||||
progress: 37,
|
||||
dir: "ltr",
|
||||
},
|
||||
{
|
||||
@@ -201,31 +201,31 @@ export const LOCALES = [
|
||||
{
|
||||
name: "British English",
|
||||
value: "en-GB",
|
||||
progress: 23,
|
||||
progress: 22,
|
||||
dir: "ltr",
|
||||
},
|
||||
{
|
||||
name: "Ελληνικά (Greek)",
|
||||
value: "el-GR",
|
||||
progress: 38,
|
||||
progress: 37,
|
||||
dir: "ltr",
|
||||
},
|
||||
{
|
||||
name: "Deutsch (German)",
|
||||
value: "de-DE",
|
||||
progress: 63,
|
||||
progress: 55,
|
||||
dir: "ltr",
|
||||
},
|
||||
{
|
||||
name: "Dansk (Danish)",
|
||||
value: "da-DK",
|
||||
progress: 38,
|
||||
progress: 37,
|
||||
dir: "ltr",
|
||||
},
|
||||
{
|
||||
name: "Čeština (Czech)",
|
||||
value: "cs-CZ",
|
||||
progress: 40,
|
||||
progress: 37,
|
||||
dir: "ltr",
|
||||
},
|
||||
{
|
||||
|
||||
@@ -3,6 +3,8 @@ import { LOCALES } from "./available-locales";
|
||||
|
||||
export const useLocales = () => {
|
||||
const i18n = useI18n();
|
||||
|
||||
const { isRtl } = useRtl();
|
||||
const { current: vuetifyLocale } = useLocale();
|
||||
|
||||
const locale = computed<LocaleObject["code"]>({
|
||||
@@ -11,20 +13,17 @@ export const useLocales = () => {
|
||||
i18n.setLocale(value);
|
||||
},
|
||||
});
|
||||
|
||||
function updateLocale(lc: LocaleObject["code"]) {
|
||||
vuetifyLocale.value = lc;
|
||||
}
|
||||
|
||||
// auto update vuetify locale
|
||||
watch(locale, (lc) => {
|
||||
updateLocale(lc);
|
||||
vuetifyLocale.value = lc;
|
||||
});
|
||||
// auto update rtl
|
||||
watch(vuetifyLocale, (vl) => {
|
||||
const currentLocale = LOCALES.find(lc => lc.value === vl);
|
||||
if (currentLocale) {
|
||||
isRtl.value = currentLocale.dir === "rtl";
|
||||
}
|
||||
});
|
||||
|
||||
// set initial locale
|
||||
if (i18n.locale.value) {
|
||||
updateLocale(i18n.locale.value);
|
||||
};
|
||||
|
||||
return {
|
||||
locale,
|
||||
|
||||
@@ -1,48 +1,47 @@
|
||||
/* eslint-disable @typescript-eslint/no-require-imports */
|
||||
const datetimeFormats = {
|
||||
// CODE_GEN_ID: DATE_LOCALES
|
||||
"af-ZA": require("./lang/dateTimeFormats/af-ZA.json"),
|
||||
"ar-SA": require("./lang/dateTimeFormats/ar-SA.json"),
|
||||
"bg-BG": require("./lang/dateTimeFormats/bg-BG.json"),
|
||||
"ca-ES": require("./lang/dateTimeFormats/ca-ES.json"),
|
||||
"cs-CZ": require("./lang/dateTimeFormats/cs-CZ.json"),
|
||||
"da-DK": require("./lang/dateTimeFormats/da-DK.json"),
|
||||
"de-DE": require("./lang/dateTimeFormats/de-DE.json"),
|
||||
"el-GR": require("./lang/dateTimeFormats/el-GR.json"),
|
||||
"en-GB": require("./lang/dateTimeFormats/en-GB.json"),
|
||||
"en-US": require("./lang/dateTimeFormats/en-US.json"),
|
||||
"es-ES": require("./lang/dateTimeFormats/es-ES.json"),
|
||||
"et-EE": require("./lang/dateTimeFormats/et-EE.json"),
|
||||
"fi-FI": require("./lang/dateTimeFormats/fi-FI.json"),
|
||||
"fr-BE": require("./lang/dateTimeFormats/fr-BE.json"),
|
||||
"fr-CA": require("./lang/dateTimeFormats/fr-CA.json"),
|
||||
"fr-FR": require("./lang/dateTimeFormats/fr-FR.json"),
|
||||
"gl-ES": require("./lang/dateTimeFormats/gl-ES.json"),
|
||||
"he-IL": require("./lang/dateTimeFormats/he-IL.json"),
|
||||
"hr-HR": require("./lang/dateTimeFormats/hr-HR.json"),
|
||||
"hu-HU": require("./lang/dateTimeFormats/hu-HU.json"),
|
||||
"is-IS": require("./lang/dateTimeFormats/is-IS.json"),
|
||||
"it-IT": require("./lang/dateTimeFormats/it-IT.json"),
|
||||
"tr-TR": require("./lang/dateTimeFormats/tr-TR.json"),
|
||||
"zh-CN": require("./lang/dateTimeFormats/zh-CN.json"),
|
||||
"ja-JP": require("./lang/dateTimeFormats/ja-JP.json"),
|
||||
"ko-KR": require("./lang/dateTimeFormats/ko-KR.json"),
|
||||
"lt-LT": require("./lang/dateTimeFormats/lt-LT.json"),
|
||||
"lv-LV": require("./lang/dateTimeFormats/lv-LV.json"),
|
||||
"nl-NL": require("./lang/dateTimeFormats/nl-NL.json"),
|
||||
"no-NO": require("./lang/dateTimeFormats/no-NO.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-BR": require("./lang/dateTimeFormats/pt-BR.json"),
|
||||
"pt-PT": require("./lang/dateTimeFormats/pt-PT.json"),
|
||||
"ro-RO": require("./lang/dateTimeFormats/ro-RO.json"),
|
||||
"ru-RU": require("./lang/dateTimeFormats/ru-RU.json"),
|
||||
"sk-SK": require("./lang/dateTimeFormats/sk-SK.json"),
|
||||
"sl-SI": require("./lang/dateTimeFormats/sl-SI.json"),
|
||||
"sr-SP": require("./lang/dateTimeFormats/sr-SP.json"),
|
||||
"sv-SE": require("./lang/dateTimeFormats/sv-SE.json"),
|
||||
"tr-TR": require("./lang/dateTimeFormats/tr-TR.json"),
|
||||
"uk-UA": require("./lang/dateTimeFormats/uk-UA.json"),
|
||||
"vi-VN": require("./lang/dateTimeFormats/vi-VN.json"),
|
||||
"zh-CN": require("./lang/dateTimeFormats/zh-CN.json"),
|
||||
"hr-HR": require("./lang/dateTimeFormats/hr-HR.json"),
|
||||
"de-DE": require("./lang/dateTimeFormats/de-DE.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"),
|
||||
"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
|
||||
};
|
||||
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
{
|
||||
"short": {
|
||||
"month": "short",
|
||||
"day": "numeric",
|
||||
"weekday": "long"
|
||||
},
|
||||
"medium": {
|
||||
"month": "long",
|
||||
"day": "numeric",
|
||||
"weekday": "long",
|
||||
"year": "numeric"
|
||||
},
|
||||
"long": {
|
||||
"year": "numeric",
|
||||
"month": "long",
|
||||
"day": "numeric",
|
||||
"weekday": "long",
|
||||
"hour": "numeric",
|
||||
"minute": "numeric"
|
||||
}
|
||||
}
|
||||
@@ -599,10 +599,10 @@
|
||||
"create-recipe-from-an-image": "Opret opskrift fra et billede",
|
||||
"create-recipe-from-an-image-description": "Opret en opskrift ved at overføre et billede af den. Mealie vil forsøge at udtrække teksten fra billedet med AI og oprette en opskrift fra det.",
|
||||
"crop-and-rotate-the-image": "Beskær og roter billedet, så kun teksten er synlig, og det vises i den rigtige retning.",
|
||||
"create-from-images": "Opret fra billede",
|
||||
"create-from-images": "Create from Images",
|
||||
"should-translate-description": "Oversæt opskriften til mit sprog",
|
||||
"please-wait-image-procesing": "Vent venligst, billedet behandles. Dette kan tage lidt tid.",
|
||||
"please-wait-images-processing": "Vent venligst, billedet behandles. Dette kan tage lidt tid.",
|
||||
"please-wait-images-processing": "Please wait, the images are processing. This may take some time.",
|
||||
"bulk-url-import": "Import fra flere URL-adresser",
|
||||
"debug-scraper": "Fejlsøg indlæser",
|
||||
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Opret en opskrift ved at angive navnet. Alle opskrifter skal have unikke navne.",
|
||||
@@ -662,9 +662,9 @@
|
||||
},
|
||||
"reset-servings-count": "Nulstil antal serveringer",
|
||||
"not-linked-ingredients": "Yderligere ingredienser",
|
||||
"upload-another-image": "Upload et andet billede",
|
||||
"upload-images": "Upload billeder",
|
||||
"upload-more-images": "Upload flere billeder"
|
||||
"upload-another-image": "Upload another image",
|
||||
"upload-images": "Upload images",
|
||||
"upload-more-images": "Upload more images"
|
||||
},
|
||||
"recipe-finder": {
|
||||
"recipe-finder": "Opskriftssøger",
|
||||
@@ -724,7 +724,7 @@
|
||||
"backup-restore": "Backup / gendannelse",
|
||||
"back-restore-description": "Gendannelse af denne sikkerhedskopi vil overskrive alle de aktuelle data i din database og i datamappen og erstatte dem med indholdet af denne sikkerhedskopi. {cannot-be-undone} Hvis gendannelsen lykkes, vil du blive logget ud.",
|
||||
"cannot-be-undone": "Denne handling kan ikke fortrydes - brug med forsigtighed.",
|
||||
"postgresql-note": "Hvis du bruger PostgreSQL, så gennemse venligst {backup-restore-process} før du gendanner.",
|
||||
"postgresql-note": "If you are using PostgreSQL, please review the {backup-restore-process} prior to restoring.",
|
||||
"backup-restore-process-in-the-documentation": "backup/restoreproces i dokumentationen",
|
||||
"irreversible-acknowledgment": "Jeg forstår, at denne handling er irreversibel, destruktiv og kan forårsage tab af data",
|
||||
"restore-backup": "Gendan sikkerhedskopi"
|
||||
|
||||
@@ -599,10 +599,10 @@
|
||||
"create-recipe-from-an-image": "Crear receta a partir de una imagen",
|
||||
"create-recipe-from-an-image-description": "Crea una receta cargando una imagen de ella. Mealie intentará extraer el texto de la imagen usando IA y crear una receta de ella.",
|
||||
"crop-and-rotate-the-image": "Recortar y rotar la imagen de manera que sólo el texto sea visible, y esté en la orientación correcta.",
|
||||
"create-from-images": "Crear a partir de imágenes",
|
||||
"create-from-images": "Create from Images",
|
||||
"should-translate-description": "Traducir la receta a mi idioma",
|
||||
"please-wait-image-procesing": "Por favor, espere, la imagen se está procesando. Esto puede tardar un tiempo.",
|
||||
"please-wait-images-processing": "Por favor, espere, las imágenes se están procesando. Esto puede tardar algún tiempo.",
|
||||
"please-wait-images-processing": "Please wait, the images are processing. This may take some time.",
|
||||
"bulk-url-import": "Importación masiva desde URL",
|
||||
"debug-scraper": "Depurar analizador",
|
||||
"create-a-recipe-by-providing-the-name-all-recipes-must-have-unique-names": "Crear una receta proporcionando el nombre. Todas las recetas deben tener nombres únicos.",
|
||||
@@ -662,9 +662,9 @@
|
||||
},
|
||||
"reset-servings-count": "Restablecer contador de porciones",
|
||||
"not-linked-ingredients": "Ingredientes adicionales",
|
||||
"upload-another-image": "Subir otra imagen",
|
||||
"upload-images": "Subir imágenes",
|
||||
"upload-more-images": "Subir más imágenes"
|
||||
"upload-another-image": "Upload another image",
|
||||
"upload-images": "Upload images",
|
||||
"upload-more-images": "Upload more images"
|
||||
},
|
||||
"recipe-finder": {
|
||||
"recipe-finder": "Buscador de recetas",
|
||||
|
||||
@@ -151,7 +151,6 @@ import {
|
||||
mdiKnife,
|
||||
mdiCookie,
|
||||
mdiBellPlus,
|
||||
mdiLinkVariantPlus,
|
||||
} from "@mdi/js";
|
||||
|
||||
export const icons = {
|
||||
@@ -237,7 +236,6 @@ export const icons = {
|
||||
informationOutline: mdiInformationOutline,
|
||||
informationVariant: mdiInformationVariant,
|
||||
link: mdiLink,
|
||||
linkVariantPlus: mdiLinkVariantPlus,
|
||||
lock: mdiLock,
|
||||
logout: mdiLogout,
|
||||
menu: mdiMenu,
|
||||
|
||||
@@ -175,52 +175,114 @@ export default defineNuxtConfig({
|
||||
subsets: ["cyrillic-ext", "cyrillic", "greek-ext", "greek", "vietnamese", "latin-ext", "latin"],
|
||||
},
|
||||
},
|
||||
/* auth: {
|
||||
redirect: {
|
||||
login: "/login",
|
||||
logout: "/login",
|
||||
callback: "/login",
|
||||
home: "/",
|
||||
},
|
||||
cookie: {
|
||||
prefix: "mealie.auth.",
|
||||
options: {
|
||||
expires: 7,
|
||||
path: "/",
|
||||
},
|
||||
},
|
||||
rewriteRedirects: false,
|
||||
// Options
|
||||
strategies: {
|
||||
local: {
|
||||
resetOnError: true,
|
||||
token: {
|
||||
property: "access_token",
|
||||
global: true,
|
||||
// required: true,
|
||||
// type: 'Bearer'
|
||||
},
|
||||
user: {
|
||||
property: "",
|
||||
autoFetch: true,
|
||||
},
|
||||
endpoints: {
|
||||
login: {
|
||||
url: "api/auth/token",
|
||||
method: "post",
|
||||
propertyName: "access_token",
|
||||
},
|
||||
refresh: { url: "api/auth/refresh", method: "post" },
|
||||
logout: { url: "api/auth/logout", method: "post" },
|
||||
user: { url: "api/users/self", method: "get" },
|
||||
},
|
||||
},
|
||||
oidc: {
|
||||
scheme: "local",
|
||||
resetOnError: true,
|
||||
token: {
|
||||
property: "access_token",
|
||||
global: true,
|
||||
},
|
||||
user: {
|
||||
property: "",
|
||||
autoFetch: true,
|
||||
},
|
||||
endpoints: {
|
||||
login: {
|
||||
url: "api/auth/oauth/callback",
|
||||
method: "get",
|
||||
},
|
||||
logout: { url: "api/auth/logout", method: "post" },
|
||||
user: { url: "api/users/self", method: "get" },
|
||||
},
|
||||
},
|
||||
},
|
||||
}, */
|
||||
|
||||
i18n: {
|
||||
locales: [
|
||||
// CODE_GEN_ID: MESSAGE_LOCALES
|
||||
{ code: "af-ZA", file: "af-ZA.ts", dir: "ltr" },
|
||||
{ code: "ar-SA", file: "ar-SA.ts", dir: "rtl" },
|
||||
{ code: "bg-BG", file: "bg-BG.ts", dir: "ltr" },
|
||||
{ code: "ca-ES", file: "ca-ES.ts", dir: "ltr" },
|
||||
{ code: "cs-CZ", file: "cs-CZ.ts", dir: "ltr" },
|
||||
{ code: "da-DK", file: "da-DK.ts", dir: "ltr" },
|
||||
{ code: "de-DE", file: "de-DE.ts", dir: "ltr" },
|
||||
{ code: "el-GR", file: "el-GR.ts", dir: "ltr" },
|
||||
{ code: "en-GB", file: "en-GB.ts", dir: "ltr" },
|
||||
{ code: "en-US", file: "en-US.ts", dir: "ltr" },
|
||||
{ code: "es-ES", file: "es-ES.ts", dir: "ltr" },
|
||||
{ code: "et-EE", file: "et-EE.ts", dir: "ltr" },
|
||||
{ code: "fi-FI", file: "fi-FI.ts", dir: "ltr" },
|
||||
{ code: "fr-BE", file: "fr-BE.ts", dir: "ltr" },
|
||||
{ code: "fr-CA", file: "fr-CA.ts", dir: "ltr" },
|
||||
{ code: "fr-FR", file: "fr-FR.ts", dir: "ltr" },
|
||||
{ code: "gl-ES", file: "gl-ES.ts", dir: "ltr" },
|
||||
{ code: "he-IL", file: "he-IL.ts", dir: "rtl" },
|
||||
{ code: "hr-HR", file: "hr-HR.ts", dir: "ltr" },
|
||||
{ code: "hu-HU", file: "hu-HU.ts", dir: "ltr" },
|
||||
{ code: "is-IS", file: "is-IS.ts", dir: "ltr" },
|
||||
{ code: "it-IT", file: "it-IT.ts", dir: "ltr" },
|
||||
{ code: "ja-JP", file: "ja-JP.ts", dir: "ltr" },
|
||||
{ code: "ko-KR", file: "ko-KR.ts", dir: "ltr" },
|
||||
{ code: "lt-LT", file: "lt-LT.ts", dir: "ltr" },
|
||||
{ code: "lv-LV", file: "lv-LV.ts", dir: "ltr" },
|
||||
{ code: "nl-NL", file: "nl-NL.ts", dir: "ltr" },
|
||||
{ code: "no-NO", file: "no-NO.ts", dir: "ltr" },
|
||||
{ code: "pl-PL", file: "pl-PL.ts", dir: "ltr" },
|
||||
{ code: "pt-BR", file: "pt-BR.ts", dir: "ltr" },
|
||||
{ code: "pt-PT", file: "pt-PT.ts", dir: "ltr" },
|
||||
{ code: "ro-RO", file: "ro-RO.ts", dir: "ltr" },
|
||||
{ code: "ru-RU", file: "ru-RU.ts", dir: "ltr" },
|
||||
{ code: "sk-SK", file: "sk-SK.ts", dir: "ltr" },
|
||||
{ code: "sl-SI", file: "sl-SI.ts", dir: "ltr" },
|
||||
{ code: "sr-SP", file: "sr-SP.ts", dir: "ltr" },
|
||||
{ code: "sv-SE", file: "sv-SE.ts", dir: "ltr" },
|
||||
{ code: "tr-TR", file: "tr-TR.ts", dir: "ltr" },
|
||||
{ code: "uk-UA", file: "uk-UA.ts", dir: "ltr" },
|
||||
{ code: "vi-VN", file: "vi-VN.ts", dir: "ltr" },
|
||||
{ code: "zh-CN", file: "zh-CN.ts", dir: "ltr" },
|
||||
{ code: "zh-TW", file: "zh-TW.ts", dir: "ltr" },
|
||||
{ code: "tr-TR", file: "tr-TR.ts" },
|
||||
{ code: "zh-CN", file: "zh-CN.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: "sr-SP", file: "sr-SP.ts" },
|
||||
{ code: "hr-HR", file: "hr-HR.ts" },
|
||||
{ code: "de-DE", file: "de-DE.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: "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",
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
<!-- Alias Sub-Dialog -->
|
||||
<RecipeDataAliasManagerDialog
|
||||
v-if="editTarget"
|
||||
v-model="aliasManagerDialog"
|
||||
:value="aliasManagerDialog"
|
||||
:data="editTarget"
|
||||
@submit="updateFoodAlias"
|
||||
@cancel="aliasManagerDialog = false"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<BaseDialog
|
||||
v-model="state.createDialog"
|
||||
:title="$t('data-pages.recipe-actions.new-recipe-action')"
|
||||
:icon="$globals.icons.linkVariantPlus"
|
||||
:icon="$globals.icons.primary"
|
||||
can-submit
|
||||
@submit="createAction"
|
||||
>
|
||||
@@ -34,7 +34,7 @@
|
||||
<!-- Edit Dialog -->
|
||||
<BaseDialog
|
||||
v-model="state.editDialog"
|
||||
:icon="$globals.icons.linkVariantPlus"
|
||||
:icon="$globals.icons.primary"
|
||||
:title="$t('data-pages.recipe-actions.edit-recipe-action')"
|
||||
:submit-text="$t('general.save')"
|
||||
can-submit
|
||||
@@ -115,7 +115,7 @@
|
||||
|
||||
<!-- Data Table -->
|
||||
<BaseCardSectionTitle
|
||||
:icon="$globals.icons.linkVariantPlus"
|
||||
:icon="$globals.icons.primary"
|
||||
section
|
||||
:title="$t('data-pages.recipe-actions.recipe-actions-data')"
|
||||
/>
|
||||
|
||||
@@ -44,7 +44,6 @@
|
||||
:title="$t('general.confirm')"
|
||||
:icon="$globals.icons.alertCircle"
|
||||
color="error"
|
||||
can-confirm
|
||||
@confirm="deleteTag"
|
||||
>
|
||||
<v-card-text>
|
||||
|
||||
@@ -52,7 +52,6 @@
|
||||
:title="$t('general.confirm')"
|
||||
:icon="$globals.icons.alertCircle"
|
||||
color="error"
|
||||
can-confirm
|
||||
@confirm="deleteTool"
|
||||
>
|
||||
<v-card-text>
|
||||
|
||||
@@ -19,16 +19,30 @@
|
||||
v-model="fromUnit"
|
||||
return-object
|
||||
:items="store"
|
||||
item-title="name"
|
||||
item-title="id"
|
||||
:label="$t('data-pages.units.source-unit')"
|
||||
/>
|
||||
>
|
||||
<template #chip="{ item }">
|
||||
{{ item.raw.name }}
|
||||
</template>
|
||||
<template #item="{ item }">
|
||||
{{ item.raw.name }}
|
||||
</template>
|
||||
</v-autocomplete>
|
||||
<v-autocomplete
|
||||
v-model="toUnit"
|
||||
return-object
|
||||
:items="store"
|
||||
item-title="name"
|
||||
item-title="id"
|
||||
:label="$t('data-pages.units.target-unit')"
|
||||
/>
|
||||
>
|
||||
<template #chip="{ item }">
|
||||
{{ item.raw.name }}
|
||||
</template>
|
||||
<template #item="{ item }">
|
||||
{{ item.raw.name }}
|
||||
</template>
|
||||
</v-autocomplete>
|
||||
|
||||
<template v-if="canMerge && fromUnit && toUnit">
|
||||
<div class="text-center">
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<v-card-text class="w-100">
|
||||
<v-form @submit.prevent="authenticate">
|
||||
<v-text-field
|
||||
v-if="allowPasswordLogin"
|
||||
v-show="allowPasswordLogin"
|
||||
v-model="form.email"
|
||||
:prepend-inner-icon="$globals.icons.email"
|
||||
variant="solo-filled"
|
||||
@@ -81,7 +81,7 @@
|
||||
type="text"
|
||||
/>
|
||||
<v-text-field
|
||||
v-if="allowPasswordLogin"
|
||||
v-show="allowPasswordLogin"
|
||||
id="password"
|
||||
v-model="form.password"
|
||||
:prepend-inner-icon="$globals.icons.lock"
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
},
|
||||
"servings-text": {
|
||||
"makes": "Realizadas",
|
||||
"serves": "Porciones",
|
||||
"serves": "Personas",
|
||||
"serving": "Porción",
|
||||
"servings": "Porciones",
|
||||
"yield": "Ración",
|
||||
|
||||
@@ -46,20 +46,20 @@
|
||||
"red onion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "červená cibule",
|
||||
"plural_name": "červené cibule"
|
||||
"name": "red onion",
|
||||
"plural_name": "Červená cibule"
|
||||
},
|
||||
"yellow onion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "žlutá cibule",
|
||||
"name": "yellow onion",
|
||||
"plural_name": "yellow onions"
|
||||
},
|
||||
"celery": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "celer",
|
||||
"plural_name": "celery"
|
||||
"plural_name": "Celery"
|
||||
},
|
||||
"jalapeno": {
|
||||
"aliases": [],
|
||||
@@ -76,8 +76,8 @@
|
||||
"shallot": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "šalotka",
|
||||
"plural_name": "šalotky"
|
||||
"name": "shallot",
|
||||
"plural_name": "shallots"
|
||||
},
|
||||
"cherry tomato": {
|
||||
"aliases": [],
|
||||
@@ -95,13 +95,13 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "špenát",
|
||||
"plural_name": "špenát"
|
||||
"plural_name": "spinaches"
|
||||
},
|
||||
"sweet corn": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "sladká kukuřice",
|
||||
"plural_name": "sladké kukuřice"
|
||||
"name": "sweet corn",
|
||||
"plural_name": "sweet corns"
|
||||
},
|
||||
"chile pepper": {
|
||||
"aliases": [
|
||||
@@ -228,14 +228,14 @@
|
||||
"radish": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "ředkvička",
|
||||
"plural_name": "ředkvičky"
|
||||
"name": "radish",
|
||||
"plural_name": "radishes"
|
||||
},
|
||||
"red cabbage": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "červené zelí",
|
||||
"plural_name": "červené zelí"
|
||||
"name": "red cabbage",
|
||||
"plural_name": "red cabbages"
|
||||
},
|
||||
"artichoke": {
|
||||
"aliases": [],
|
||||
|
||||
@@ -4,62 +4,62 @@
|
||||
"garlic": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "hvidløg",
|
||||
"plural_name": "hvidløg"
|
||||
"name": "garlic",
|
||||
"plural_name": "garlics"
|
||||
},
|
||||
"onion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "løg",
|
||||
"plural_name": "løg"
|
||||
"name": "onion",
|
||||
"plural_name": "onions"
|
||||
},
|
||||
"bell pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "peberfrugt",
|
||||
"plural_name": "peberfrugter"
|
||||
"name": "bell pepper",
|
||||
"plural_name": "bell peppers"
|
||||
},
|
||||
"carrot": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "gulerod",
|
||||
"plural_name": "gulerødder"
|
||||
"name": "carrot",
|
||||
"plural_name": "carrots"
|
||||
},
|
||||
"scallion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "forårsløg",
|
||||
"plural_name": "forårsløg"
|
||||
"name": "scallion",
|
||||
"plural_name": "scallions"
|
||||
},
|
||||
"zucchini": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "squash",
|
||||
"plural_name": "squash"
|
||||
"name": "zucchini",
|
||||
"plural_name": "zucchinis"
|
||||
},
|
||||
"potato": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "kartoffel",
|
||||
"plural_name": "kartofler"
|
||||
"name": "potato",
|
||||
"plural_name": "potatoes"
|
||||
},
|
||||
"red onion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "rødløg",
|
||||
"plural_name": "rødløg"
|
||||
"name": "red onion",
|
||||
"plural_name": "red onions"
|
||||
},
|
||||
"yellow onion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "løg",
|
||||
"plural_name": "løg"
|
||||
"name": "yellow onion",
|
||||
"plural_name": "yellow onions"
|
||||
},
|
||||
"celery": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "selleri",
|
||||
"plural_name": "selleri"
|
||||
"name": "celery",
|
||||
"plural_name": "celeries"
|
||||
},
|
||||
"jalapeno": {
|
||||
"aliases": [],
|
||||
@@ -70,64 +70,64 @@
|
||||
"avocado": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "avokado",
|
||||
"plural_name": "avokadoer"
|
||||
"name": "avocado",
|
||||
"plural_name": "avocados"
|
||||
},
|
||||
"shallot": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "skalotteløg",
|
||||
"plural_name": "skalotteløg"
|
||||
"name": "shallot",
|
||||
"plural_name": "shallots"
|
||||
},
|
||||
"cherry tomato": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "cherrytomat",
|
||||
"plural_name": "cherrytomater"
|
||||
"name": "cherry tomato",
|
||||
"plural_name": "cherry tomatoes"
|
||||
},
|
||||
"cucumber": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "agurk",
|
||||
"plural_name": "agurker"
|
||||
"name": "cucumber",
|
||||
"plural_name": "cucumbers"
|
||||
},
|
||||
"spinach": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "spinat",
|
||||
"plural_name": "spinat"
|
||||
"name": "spinach",
|
||||
"plural_name": "spinaches"
|
||||
},
|
||||
"sweet corn": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "sød majs",
|
||||
"plural_name": "sød majs"
|
||||
"name": "sweet corn",
|
||||
"plural_name": "sweet corns"
|
||||
},
|
||||
"chile pepper": {
|
||||
"aliases": [
|
||||
"capsicum"
|
||||
],
|
||||
"description": "",
|
||||
"name": "chilipeber",
|
||||
"plural_name": "chilipeber"
|
||||
"name": "chile pepper",
|
||||
"plural_name": "chile peppers"
|
||||
},
|
||||
"sweet potato": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "sød kartoffel",
|
||||
"plural_name": "søde kartofler"
|
||||
"name": "sweet potato",
|
||||
"plural_name": "sweet potatoes"
|
||||
},
|
||||
"broccoli": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "broccoli",
|
||||
"plural_name": "broccoli"
|
||||
"plural_name": "broccolis"
|
||||
},
|
||||
"heart of palm": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "palmehjerte",
|
||||
"plural_name": "palmehjerter"
|
||||
"name": "heart of palm",
|
||||
"plural_name": "heart of palms"
|
||||
},
|
||||
"baby green": {
|
||||
"aliases": [],
|
||||
@@ -274,13 +274,13 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "baby carrot",
|
||||
"plural_name": "babygulerødder"
|
||||
"plural_name": "baby carrots"
|
||||
},
|
||||
"mixed vegetable": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "blandede grøntsager",
|
||||
"plural_name": "blandede grøntsager"
|
||||
"name": "mixed vegetable",
|
||||
"plural_name": "mixed vegetables"
|
||||
},
|
||||
"poblano pepper": {
|
||||
"aliases": [],
|
||||
@@ -303,38 +303,38 @@
|
||||
"cayenne pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "cayennepeber",
|
||||
"plural_name": "cayennepeber"
|
||||
"name": "cayenne pepper",
|
||||
"plural_name": "cayenne peppers"
|
||||
},
|
||||
"green tomato": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "grøn tomat",
|
||||
"plural_name": "grønne tomater"
|
||||
"name": "green tomato",
|
||||
"plural_name": "green tomatoes"
|
||||
},
|
||||
"watercress": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "brøndkarse",
|
||||
"plural_name": "brøndkarse"
|
||||
"name": "watercress",
|
||||
"plural_name": "watercress"
|
||||
},
|
||||
"iceberg": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "iceberg",
|
||||
"plural_name": "iceberg"
|
||||
"plural_name": "icebergs"
|
||||
},
|
||||
"mashed potato": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "kartoffelmos",
|
||||
"plural_name": "kartoffelmos"
|
||||
"name": "mashed potato",
|
||||
"plural_name": "mashed potatoes"
|
||||
},
|
||||
"horseradish": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "peberrod",
|
||||
"plural_name": "peberrod"
|
||||
"name": "horseradish",
|
||||
"plural_name": "horseradishes"
|
||||
},
|
||||
"chard": {
|
||||
"aliases": [],
|
||||
@@ -383,14 +383,14 @@
|
||||
"water chestnut": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "vand kastanje",
|
||||
"plural_name": "vand kastanjer"
|
||||
"name": "water chestnut",
|
||||
"plural_name": "water chestnuts"
|
||||
},
|
||||
"turnip": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "majroe",
|
||||
"plural_name": "majroer"
|
||||
"name": "turnip",
|
||||
"plural_name": "turnips"
|
||||
},
|
||||
"thai chile pepper": {
|
||||
"aliases": [],
|
||||
@@ -401,8 +401,8 @@
|
||||
"bok choy": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "pak choi",
|
||||
"plural_name": "pak choi"
|
||||
"name": "bok choy",
|
||||
"plural_name": "bok choy"
|
||||
},
|
||||
"okra": {
|
||||
"aliases": [],
|
||||
@@ -419,8 +419,8 @@
|
||||
"corn cob": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "majskolbe",
|
||||
"plural_name": "majskolber"
|
||||
"name": "corn cob",
|
||||
"plural_name": "corn cobs"
|
||||
},
|
||||
"radicchio": {
|
||||
"aliases": [],
|
||||
@@ -505,14 +505,14 @@
|
||||
"daikon": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "kinaradise",
|
||||
"plural_name": "kinaradiser"
|
||||
"name": "daikon",
|
||||
"plural_name": "daikons"
|
||||
},
|
||||
"baby corn": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "babymajs",
|
||||
"plural_name": "babymajs"
|
||||
"name": "baby corn",
|
||||
"plural_name": "baby corns"
|
||||
},
|
||||
"broccoli rabe": {
|
||||
"aliases": [],
|
||||
@@ -577,8 +577,8 @@
|
||||
"frisee": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "friséesalat",
|
||||
"plural_name": "friséesalat"
|
||||
"name": "frisee",
|
||||
"plural_name": "frisees"
|
||||
},
|
||||
"anaheim pepper": {
|
||||
"aliases": [],
|
||||
@@ -613,8 +613,8 @@
|
||||
"pea shoot": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "ærteskud",
|
||||
"plural_name": "ærteskud"
|
||||
"name": "pea shoot",
|
||||
"plural_name": "pea shoots"
|
||||
},
|
||||
"alfalfa": {
|
||||
"aliases": [],
|
||||
@@ -628,26 +628,26 @@
|
||||
"foods": {
|
||||
"tomato": {
|
||||
"aliases": [],
|
||||
"description": "Ja de er en frugt",
|
||||
"name": "tomat",
|
||||
"plural_name": "tomater"
|
||||
"description": "Yes they are a fruit",
|
||||
"name": "tomato",
|
||||
"plural_name": "tomatoes"
|
||||
},
|
||||
"lemon": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "citron",
|
||||
"plural_name": "citroner"
|
||||
"name": "lemon",
|
||||
"plural_name": "lemons"
|
||||
},
|
||||
"lime": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "limefrugt",
|
||||
"plural_name": "limefrugter"
|
||||
"name": "lime",
|
||||
"plural_name": "limes"
|
||||
},
|
||||
"apple": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "æble",
|
||||
"name": "apple",
|
||||
"plural_name": "apples"
|
||||
},
|
||||
"banana": {
|
||||
@@ -696,7 +696,7 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "coconut",
|
||||
"plural_name": "kokosnødder"
|
||||
"plural_name": "coconuts"
|
||||
},
|
||||
"craisin": {
|
||||
"aliases": [],
|
||||
@@ -707,80 +707,80 @@
|
||||
"pear": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "pære",
|
||||
"plural_name": "pærer"
|
||||
"name": "pear",
|
||||
"plural_name": "pears"
|
||||
},
|
||||
"grape": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "drue",
|
||||
"plural_name": "vindruer"
|
||||
"name": "grape",
|
||||
"plural_name": "grapes"
|
||||
},
|
||||
"pomegranate": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "granatæble",
|
||||
"name": "pomegranate",
|
||||
"plural_name": "pomegranates"
|
||||
},
|
||||
"watermelon": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "vandmelon",
|
||||
"plural_name": "vandmeloner"
|
||||
"name": "watermelon",
|
||||
"plural_name": "watermelons"
|
||||
},
|
||||
"rhubarb": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "rabarber",
|
||||
"plural_name": "rabarber"
|
||||
"name": "rhubarb",
|
||||
"plural_name": "rhubarbs"
|
||||
},
|
||||
"dried apricot": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "tørret abrikos",
|
||||
"plural_name": "tørrede abrikoser"
|
||||
"name": "dried apricot",
|
||||
"plural_name": "dried apricots"
|
||||
},
|
||||
"kiwi": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "kiwifrugt",
|
||||
"plural_name": "kiwifrugter"
|
||||
"name": "kiwi",
|
||||
"plural_name": "kiwis"
|
||||
},
|
||||
"grapefruit": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "grapefrugt",
|
||||
"plural_name": "grapefrugter"
|
||||
"name": "grapefruit",
|
||||
"plural_name": "grapefruits"
|
||||
},
|
||||
"plum": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "blomme",
|
||||
"plural_name": "blommer"
|
||||
"name": "plum",
|
||||
"plural_name": "plums"
|
||||
},
|
||||
"fig": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "figne",
|
||||
"plural_name": "figner"
|
||||
"name": "fig",
|
||||
"plural_name": "figs"
|
||||
},
|
||||
"apricot": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "abrikos",
|
||||
"plural_name": "abrikoser"
|
||||
"name": "apricot",
|
||||
"plural_name": "apricots"
|
||||
},
|
||||
"currant": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "solbær",
|
||||
"plural_name": "solbær"
|
||||
"name": "currant",
|
||||
"plural_name": "currants"
|
||||
},
|
||||
"mandarin": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "mandarin",
|
||||
"plural_name": "mandariner"
|
||||
"plural_name": "mandarins"
|
||||
},
|
||||
"prune": {
|
||||
"aliases": [],
|
||||
|
||||
@@ -3724,7 +3724,7 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Latik",
|
||||
"plural_name": "Latik"
|
||||
"plural_name": "latiks"
|
||||
},
|
||||
"rice cream": {
|
||||
"aliases": [],
|
||||
@@ -4039,8 +4039,8 @@
|
||||
"ham steak": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Schinkensteak",
|
||||
"plural_name": "Schinkensteaks"
|
||||
"name": "ham steak",
|
||||
"plural_name": "ham steaks"
|
||||
},
|
||||
"venison": {
|
||||
"aliases": [],
|
||||
@@ -4196,13 +4196,13 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Bauchspeck",
|
||||
"plural_name": "Rückenspeck"
|
||||
"plural_name": "back bacons"
|
||||
},
|
||||
"salt pork": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Gepökeltes Schweinefleisch",
|
||||
"plural_name": "Gepökeltes Schweinefleisch"
|
||||
"plural_name": "salt porks"
|
||||
},
|
||||
"veal shank": {
|
||||
"aliases": [],
|
||||
@@ -4273,8 +4273,8 @@
|
||||
"ground bison": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Bison-Hackfleisch",
|
||||
"plural_name": "Bison-Hackfleisch"
|
||||
"name": "ground bison",
|
||||
"plural_name": "ground bisons"
|
||||
},
|
||||
"fresh sausage": {
|
||||
"aliases": [],
|
||||
@@ -4433,8 +4433,8 @@
|
||||
"turkey bacon": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Putenspeck",
|
||||
"plural_name": "Putenspeck"
|
||||
"name": "Truthahnspeck",
|
||||
"plural_name": "turkey bacons"
|
||||
},
|
||||
"duck": {
|
||||
"aliases": [],
|
||||
@@ -4469,8 +4469,8 @@
|
||||
"deli turkey": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Puten-Aufschnitt",
|
||||
"plural_name": "Puten-Aufschnitt"
|
||||
"name": "deli turkey",
|
||||
"plural_name": "deli turkeys"
|
||||
},
|
||||
"smoked turkey": {
|
||||
"aliases": [],
|
||||
@@ -4482,7 +4482,7 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Putenfleisch",
|
||||
"plural_name": "Putenfleisch"
|
||||
"plural_name": "turkey meats"
|
||||
},
|
||||
"chicken quarter": {
|
||||
"aliases": [],
|
||||
@@ -4535,8 +4535,8 @@
|
||||
"turkey pepperoni": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Puten-Peperonisalami",
|
||||
"plural_name": "Puten-Peperonisalami"
|
||||
"name": "turkey pepperoni",
|
||||
"plural_name": "turkey pepperonis"
|
||||
},
|
||||
"turkey ham": {
|
||||
"aliases": [],
|
||||
@@ -4601,8 +4601,8 @@
|
||||
"turkey burger": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Puten-Burger",
|
||||
"plural_name": "Puten-Burger"
|
||||
"name": "turkey burger",
|
||||
"plural_name": "turkey burgers"
|
||||
},
|
||||
"chicken andouille": {
|
||||
"aliases": [],
|
||||
@@ -4619,8 +4619,8 @@
|
||||
"smoked turkey leg": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "geräucherte Putenkeule",
|
||||
"plural_name": "geräucherte Putenkeulen"
|
||||
"name": "smoked turkey leg",
|
||||
"plural_name": "smoked turkey legs"
|
||||
},
|
||||
"chicken italian sausage": {
|
||||
"aliases": [],
|
||||
@@ -4661,14 +4661,14 @@
|
||||
"chicken foot": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Hühnerfuß",
|
||||
"plural_name": "Hühnerfüße"
|
||||
"name": "chicken foot",
|
||||
"plural_name": "chicken feet"
|
||||
},
|
||||
"pulled chicken": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Pulled Chicken",
|
||||
"plural_name": "Pulled Chicken"
|
||||
"name": "pulled chicken",
|
||||
"plural_name": "pulled chickens"
|
||||
},
|
||||
"deli chicken": {
|
||||
"aliases": [],
|
||||
@@ -4679,7 +4679,7 @@
|
||||
"smoked duck breast": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "geräucherte Entenbrust",
|
||||
"name": "smoked duck breast",
|
||||
"plural_name": "smoked duck breasts"
|
||||
},
|
||||
"pigeon": {
|
||||
@@ -4715,8 +4715,8 @@
|
||||
"roast duck": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Entenbraten",
|
||||
"plural_name": "Entenbraten"
|
||||
"name": "roast duck",
|
||||
"plural_name": "roast ducks"
|
||||
},
|
||||
"chicken meatball": {
|
||||
"aliases": [],
|
||||
@@ -4733,8 +4733,8 @@
|
||||
"guinea fowl": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Perlhuhn",
|
||||
"plural_name": "Perlhühner"
|
||||
"name": "guinea fowl",
|
||||
"plural_name": "guinea fowls"
|
||||
},
|
||||
"smoked turkey wing": {
|
||||
"aliases": [],
|
||||
@@ -4787,8 +4787,8 @@
|
||||
"turkey roast": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Putenbraten",
|
||||
"plural_name": "Putenbraten"
|
||||
"name": "turkey roast",
|
||||
"plural_name": "turkey roasts"
|
||||
},
|
||||
"capon": {
|
||||
"aliases": [],
|
||||
@@ -4799,8 +4799,8 @@
|
||||
"smoked turkey bacon": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "geräucherter Putenspeck",
|
||||
"plural_name": "geräucherter Putenspeck"
|
||||
"name": "smoked turkey bacon",
|
||||
"plural_name": "smoked turkey bacons"
|
||||
},
|
||||
"chicken bacon": {
|
||||
"aliases": [],
|
||||
@@ -4811,8 +4811,8 @@
|
||||
"turkey rissole": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Puten-Frikadelle",
|
||||
"plural_name": "Puten-Frikadellen"
|
||||
"name": "turkey rissole",
|
||||
"plural_name": "turkey rissoles"
|
||||
},
|
||||
"chicken kebab": {
|
||||
"aliases": [],
|
||||
@@ -4847,26 +4847,26 @@
|
||||
"duck bacon": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Entenspeck",
|
||||
"plural_name": "Entenspeck"
|
||||
"name": "duck bacon",
|
||||
"plural_name": "duck bacons"
|
||||
},
|
||||
"pulled turkey": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Pulled Turkey",
|
||||
"plural_name": "Pulled Turkey"
|
||||
"name": "pulled turkey",
|
||||
"plural_name": "pulled turkeys"
|
||||
},
|
||||
"chicken gyro": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Hähnchen-Gyros",
|
||||
"plural_name": "Hähnchen-Gyros"
|
||||
"name": "chicken gyro",
|
||||
"plural_name": "chicken gyros"
|
||||
},
|
||||
"chicken patty": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Hähnchen-Patty",
|
||||
"plural_name": "Hähnchen-Patties"
|
||||
"name": "chicken patty",
|
||||
"plural_name": "chicken patties"
|
||||
},
|
||||
"chicken rib": {
|
||||
"aliases": [],
|
||||
@@ -4877,8 +4877,8 @@
|
||||
"turkey tail": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Truthahnschwanz",
|
||||
"plural_name": "Truthahnschwänze"
|
||||
"name": "turkey tail",
|
||||
"plural_name": "turkey tails"
|
||||
},
|
||||
"chicken milanesa": {
|
||||
"aliases": [],
|
||||
@@ -5440,7 +5440,7 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Echter Bonito",
|
||||
"plural_name": "Echte Boniten"
|
||||
"plural_name": "Echte Bonito"
|
||||
},
|
||||
"bottarga": {
|
||||
"aliases": [],
|
||||
@@ -5469,8 +5469,8 @@
|
||||
"tiny fish": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Kleinfisch",
|
||||
"plural_name": "Kleinfische"
|
||||
"name": "tiny fish",
|
||||
"plural_name": "tiny fish"
|
||||
},
|
||||
"tuna belly": {
|
||||
"aliases": [],
|
||||
@@ -5497,20 +5497,20 @@
|
||||
"shrimp": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Garnele",
|
||||
"plural_name": "Garnelen"
|
||||
"name": "Shrimp",
|
||||
"plural_name": "Shrimps"
|
||||
},
|
||||
"octopuse": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Oktopus",
|
||||
"plural_name": "Oktopusse"
|
||||
"name": "Tintenfische",
|
||||
"plural_name": "Tintenfische"
|
||||
},
|
||||
"prawn": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Riesengarnele",
|
||||
"plural_name": "Riesengarnelen"
|
||||
"name": "Garnele",
|
||||
"plural_name": "Garnelen"
|
||||
},
|
||||
"crab": {
|
||||
"aliases": [],
|
||||
@@ -5575,8 +5575,8 @@
|
||||
"octopu": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Oktopus",
|
||||
"plural_name": "Oktopusse"
|
||||
"name": "octopu",
|
||||
"plural_name": "octopus"
|
||||
},
|
||||
"kombu": {
|
||||
"aliases": [],
|
||||
@@ -5587,116 +5587,116 @@
|
||||
"dried shrimp": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "getrocknete Garnele",
|
||||
"plural_name": "getrocknete Garnelen"
|
||||
"name": "dried shrimp",
|
||||
"plural_name": "dried shrimps"
|
||||
},
|
||||
"bay scallop": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Karibik-Kammmuschel",
|
||||
"plural_name": "Karibik-Kammmuscheln"
|
||||
"name": "bay scallop",
|
||||
"plural_name": "bay scallops"
|
||||
},
|
||||
"wakame": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Wakame",
|
||||
"plural_name": "Wakame"
|
||||
"name": "wakame",
|
||||
"plural_name": "wakames"
|
||||
},
|
||||
"soft-shell crab": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Butterkrebs",
|
||||
"plural_name": "Butterkrebse"
|
||||
"name": "soft-shell crab",
|
||||
"plural_name": "soft-shell crabs"
|
||||
},
|
||||
"scampi": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Scampi",
|
||||
"plural_name": "Scampi"
|
||||
"name": "scampi",
|
||||
"plural_name": "scampis"
|
||||
},
|
||||
"king crab": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Königskrabbe",
|
||||
"plural_name": "Königskrabben"
|
||||
"name": "king crab",
|
||||
"plural_name": "king crabs"
|
||||
},
|
||||
"mixed seafood": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "gemischte Meeresfrüchte",
|
||||
"plural_name": "gemischte Meeresfrüchte"
|
||||
"name": "mixed seafood",
|
||||
"plural_name": "mixed seafoods"
|
||||
},
|
||||
"baby squid": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Calamaretti",
|
||||
"plural_name": "Calamaretti"
|
||||
"name": "baby squid",
|
||||
"plural_name": "baby squids"
|
||||
},
|
||||
"squid ink": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Sepiatinte",
|
||||
"plural_name": "Sepiatinten"
|
||||
"name": "squid ink",
|
||||
"plural_name": "squid inks"
|
||||
},
|
||||
"dried prawn": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "getrocknete Garnele",
|
||||
"plural_name": "getrocknete Garnelen"
|
||||
"name": "dried prawn",
|
||||
"plural_name": "dried prawns"
|
||||
},
|
||||
"dulse seaweed": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Lappentang",
|
||||
"plural_name": "Lappentang"
|
||||
"name": "dulse seaweed",
|
||||
"plural_name": "dulse seaweeds"
|
||||
},
|
||||
"roasted seaweed": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "gerösteter Seetang",
|
||||
"plural_name": "gerösteter Seetang"
|
||||
"name": "roasted seaweed",
|
||||
"plural_name": "roasted seaweeds"
|
||||
},
|
||||
"smoked oyster": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "geräucherte Auster",
|
||||
"plural_name": "geräucherte Austern"
|
||||
"name": "smoked oyster",
|
||||
"plural_name": "smoked oysters"
|
||||
},
|
||||
"kelp": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Seetang",
|
||||
"plural_name": "Seetang"
|
||||
"name": "kelp",
|
||||
"plural_name": "kelps"
|
||||
},
|
||||
"kizami nori": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Kizami Nori",
|
||||
"plural_name": "Kizami Nori"
|
||||
"name": "kizami nori",
|
||||
"plural_name": "kizami noris"
|
||||
},
|
||||
"hijiki": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Hijiki",
|
||||
"plural_name": "Hijiki"
|
||||
"name": "hijiki",
|
||||
"plural_name": "hijikis"
|
||||
},
|
||||
"salted shrimp": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "gesalzene Garnele",
|
||||
"plural_name": "gesalzene Garnelen"
|
||||
"name": "salted shrimp",
|
||||
"plural_name": "salted shrimps"
|
||||
},
|
||||
"yaki-nori": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Yaki Nori",
|
||||
"plural_name": "Yaki Nori"
|
||||
"name": "yaki-nori",
|
||||
"plural_name": "yaki-noris"
|
||||
},
|
||||
"conch": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Meeresschnecke",
|
||||
"plural_name": "Meeresschnecken"
|
||||
"name": "conch",
|
||||
"plural_name": "conches"
|
||||
},
|
||||
"arame": {
|
||||
"aliases": [],
|
||||
@@ -5707,8 +5707,8 @@
|
||||
"calamari steak": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Tintenfischtube",
|
||||
"plural_name": "Tintenfischtuben"
|
||||
"name": "calamari steak",
|
||||
"plural_name": "calamari steaks"
|
||||
},
|
||||
"mud crab": {
|
||||
"aliases": [],
|
||||
@@ -5761,32 +5761,32 @@
|
||||
"prepared crab cake": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Fertig-Crab Cake",
|
||||
"plural_name": "Fertig-Crab Cakes"
|
||||
"name": "prepared crab cake",
|
||||
"plural_name": "prepared crab cakes"
|
||||
},
|
||||
"sea lettuce": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Ulva",
|
||||
"plural_name": "Ulva"
|
||||
"name": "sea lettuce",
|
||||
"plural_name": "sea lettuces"
|
||||
},
|
||||
"korean seaweed": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Gim",
|
||||
"plural_name": "Gim"
|
||||
"name": "korean seaweed",
|
||||
"plural_name": "korean seaweeds"
|
||||
},
|
||||
"ogo seaweed": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Hawai-Rotalge",
|
||||
"plural_name": "Hawai-Rotalgen"
|
||||
"name": "ogo seaweed",
|
||||
"plural_name": "ogo seaweeds"
|
||||
},
|
||||
"seaweed caviar": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Algen-Kaviar",
|
||||
"plural_name": "Algen-Kaviar"
|
||||
"name": "seaweed caviar",
|
||||
"plural_name": "seaweed caviars"
|
||||
},
|
||||
"haddock": {
|
||||
"aliases": [],
|
||||
@@ -5933,8 +5933,8 @@
|
||||
"panch puran": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Panch Phoron",
|
||||
"plural_name": "Panch Phoron"
|
||||
"name": "panch puran",
|
||||
"plural_name": "panch purans"
|
||||
},
|
||||
"dill": {
|
||||
"aliases": [],
|
||||
@@ -6023,8 +6023,8 @@
|
||||
"curry leaf": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Curryblatt",
|
||||
"plural_name": "Curryblätter"
|
||||
"name": "curry leaf",
|
||||
"plural_name": "curry leaves"
|
||||
},
|
||||
"fennel seed": {
|
||||
"aliases": [],
|
||||
@@ -6035,8 +6035,8 @@
|
||||
"tarragon": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Estragon",
|
||||
"plural_name": "Estragon"
|
||||
"name": "tarragon",
|
||||
"plural_name": "tarragons"
|
||||
},
|
||||
"saffron": {
|
||||
"aliases": [],
|
||||
@@ -6047,8 +6047,8 @@
|
||||
"asafoetida": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Asafoetida",
|
||||
"plural_name": "Asafoetida"
|
||||
"name": "asafoetida",
|
||||
"plural_name": "asafoetidas"
|
||||
},
|
||||
"star anise": {
|
||||
"aliases": [],
|
||||
@@ -6071,8 +6071,8 @@
|
||||
"caraway": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Kümmel",
|
||||
"plural_name": "Kümmel"
|
||||
"name": "caraway",
|
||||
"plural_name": "caraways"
|
||||
},
|
||||
"garlic granule": {
|
||||
"aliases": [],
|
||||
@@ -6107,8 +6107,8 @@
|
||||
"onion flake": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Zwiebelflocke",
|
||||
"plural_name": "Zwiebelflocken"
|
||||
"name": "onion flake",
|
||||
"plural_name": "onion flakes"
|
||||
},
|
||||
"matcha powder": {
|
||||
"aliases": [],
|
||||
@@ -6173,8 +6173,8 @@
|
||||
"chervil": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Kerbel",
|
||||
"plural_name": "Kerbel"
|
||||
"name": "chervil",
|
||||
"plural_name": "chervils"
|
||||
},
|
||||
"lavender": {
|
||||
"aliases": [],
|
||||
@@ -6185,8 +6185,8 @@
|
||||
"carom seed": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Ajowan",
|
||||
"plural_name": "Ajowan"
|
||||
"name": "carom seed",
|
||||
"plural_name": "carom seeds"
|
||||
},
|
||||
"mexican oregano": {
|
||||
"aliases": [],
|
||||
@@ -6737,7 +6737,7 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "rice syrup",
|
||||
"plural_name": "Zuckerrohr-Sirup"
|
||||
"plural_name": "rice syrups"
|
||||
},
|
||||
"manuka honey": {
|
||||
"aliases": [],
|
||||
@@ -8052,8 +8052,8 @@
|
||||
"cinnamon chip": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Zimt-Backchip",
|
||||
"plural_name": "Zimt-Backchips"
|
||||
"name": "cinnamon chip",
|
||||
"plural_name": "cinnamon chips"
|
||||
},
|
||||
"agar agar": {
|
||||
"aliases": [],
|
||||
@@ -8070,14 +8070,14 @@
|
||||
"matzo meal": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Matzemehl",
|
||||
"plural_name": "Matzemehle"
|
||||
"name": "matzo meal",
|
||||
"plural_name": "matzo meals"
|
||||
},
|
||||
"sago": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Sago",
|
||||
"plural_name": "Sago"
|
||||
"name": "sago",
|
||||
"plural_name": "sagos"
|
||||
},
|
||||
"white baking chocolate": {
|
||||
"aliases": [],
|
||||
@@ -8088,8 +8088,8 @@
|
||||
"cassava flour": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Maniokmehl",
|
||||
"plural_name": "Maniokmehle"
|
||||
"name": "cassava flour",
|
||||
"plural_name": "cassava flours"
|
||||
},
|
||||
"whipped cream stabilizer": {
|
||||
"aliases": [],
|
||||
@@ -8106,8 +8106,8 @@
|
||||
"vital wheat gluten": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Vital Weizengluten",
|
||||
"plural_name": "Vital Weizenglutene"
|
||||
"name": "vital wheat gluten",
|
||||
"plural_name": "vital wheat glutens"
|
||||
},
|
||||
"baking chip": {
|
||||
"aliases": [],
|
||||
@@ -8118,74 +8118,74 @@
|
||||
"meringue powder": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Baiser-Pulver",
|
||||
"plural_name": "Baiser-Pulver"
|
||||
"name": "meringue powder",
|
||||
"plural_name": "meringue powders"
|
||||
},
|
||||
"hazelnut flour": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Haselnussmehl",
|
||||
"plural_name": "Haselnussmehle"
|
||||
"name": "hazelnut flour",
|
||||
"plural_name": "hazelnut flours"
|
||||
},
|
||||
"citric acid": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Zitronensäure",
|
||||
"plural_name": "Zitronensäuren"
|
||||
"name": "citric acid",
|
||||
"plural_name": "citric acids"
|
||||
},
|
||||
"coconut chip": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Kokoschip",
|
||||
"plural_name": "Kokoschips"
|
||||
"name": "coconut chip",
|
||||
"plural_name": "coconut chips"
|
||||
},
|
||||
"quinoa flour": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Quinoamehl",
|
||||
"plural_name": "Quinoamehle"
|
||||
"name": "quinoa flour",
|
||||
"plural_name": "quinoa flours"
|
||||
},
|
||||
"finger millet flour": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Fingerhirsemehl",
|
||||
"plural_name": "Fingerhirsemehle"
|
||||
"name": "finger millet flour",
|
||||
"plural_name": "finger millet flours"
|
||||
},
|
||||
"fondant": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Fondant",
|
||||
"plural_name": "Fondants"
|
||||
"name": "fondant",
|
||||
"plural_name": "fondants"
|
||||
},
|
||||
"mint baking chip": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Minze-Backchip",
|
||||
"plural_name": "Minze-Backchips"
|
||||
"name": "mint baking chip",
|
||||
"plural_name": "mint baking chips"
|
||||
},
|
||||
"angel food cake mix": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Angel Food Cake-Mischung",
|
||||
"plural_name": "Angel Food Cake-Mischungen"
|
||||
"name": "angel food cake mix",
|
||||
"plural_name": "angel food cake mixes"
|
||||
},
|
||||
"white cornmeal": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "weißes Maismehl",
|
||||
"plural_name": "weiße Maismehle"
|
||||
"name": "white cornmeal",
|
||||
"plural_name": "white cornmeals"
|
||||
},
|
||||
"millet flour": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Hirsemehl",
|
||||
"plural_name": "Hirsemehle"
|
||||
"name": "millet flour",
|
||||
"plural_name": "millet flours"
|
||||
},
|
||||
"mincemeat": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Mincemeat",
|
||||
"plural_name": "Mincemeats"
|
||||
"name": "mincemeat",
|
||||
"plural_name": "mincemeats"
|
||||
},
|
||||
"gluten-free baking flour": {
|
||||
"aliases": [],
|
||||
@@ -10294,8 +10294,8 @@
|
||||
"crispy fried onion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Röstzwiebel",
|
||||
"plural_name": "Röstzwiebeln"
|
||||
"name": "crispy fried onion",
|
||||
"plural_name": "crispy fried onions"
|
||||
},
|
||||
"matzo": {
|
||||
"aliases": [],
|
||||
@@ -10444,8 +10444,8 @@
|
||||
"frozen onion ring": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "tiefgefrorener Zwiebelring",
|
||||
"plural_name": "tiefgefrorene Zwiebelringe"
|
||||
"name": "frozen onion ring",
|
||||
"plural_name": "frozen onion rings"
|
||||
},
|
||||
"corn muffin": {
|
||||
"aliases": [],
|
||||
@@ -10528,8 +10528,8 @@
|
||||
"prawn cracker": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Krabbenchip",
|
||||
"plural_name": "Krabbenchips"
|
||||
"name": "prawn cracker",
|
||||
"plural_name": "prawn crackers"
|
||||
},
|
||||
"bao bun": {
|
||||
"aliases": [],
|
||||
@@ -11898,8 +11898,8 @@
|
||||
"onion marmalade": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Zwiebelkonfitüre",
|
||||
"plural_name": "Zwiebelkonfitüren"
|
||||
"name": "onion marmalade",
|
||||
"plural_name": "onion marmalades"
|
||||
},
|
||||
"giardiniera": {
|
||||
"aliases": [],
|
||||
@@ -12148,8 +12148,8 @@
|
||||
"canned tuna": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Thunfisch in Dosen",
|
||||
"plural_name": "Thunfisch in Dosen"
|
||||
"name": "canned tuna",
|
||||
"plural_name": "canned tuna"
|
||||
},
|
||||
"pickle": {
|
||||
"aliases": [],
|
||||
@@ -12916,8 +12916,8 @@
|
||||
"turkey gravy": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Truthahn-Bratensauce",
|
||||
"plural_name": "Truthahn-Bratensaucen"
|
||||
"name": "turkey gravy",
|
||||
"plural_name": "turkey gravies"
|
||||
},
|
||||
"stir-fry sauce": {
|
||||
"aliases": [],
|
||||
@@ -13712,8 +13712,8 @@
|
||||
"turkey bone broth": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "Puten-Knochenbrühe",
|
||||
"plural_name": "Puten-Knochenbrühe"
|
||||
"name": "turkey bone broth",
|
||||
"plural_name": "turkey bone broths"
|
||||
},
|
||||
"anchovy stock": {
|
||||
"aliases": [],
|
||||
|
||||
@@ -4,136 +4,136 @@
|
||||
"garlic": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "ajo",
|
||||
"plural_name": "ajos"
|
||||
"name": "garlic",
|
||||
"plural_name": "garlics"
|
||||
},
|
||||
"onion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "cebolla",
|
||||
"plural_name": "cebollas"
|
||||
"name": "onion",
|
||||
"plural_name": "onions"
|
||||
},
|
||||
"bell pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "morrón",
|
||||
"plural_name": "morrones"
|
||||
"name": "bell pepper",
|
||||
"plural_name": "bell peppers"
|
||||
},
|
||||
"carrot": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "zanahoria",
|
||||
"plural_name": "zanahorias"
|
||||
"name": "carrot",
|
||||
"plural_name": "carrots"
|
||||
},
|
||||
"scallion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "cebolletas",
|
||||
"plural_name": "cebolletas"
|
||||
"name": "scallion",
|
||||
"plural_name": "scallions"
|
||||
},
|
||||
"zucchini": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "calabacín",
|
||||
"plural_name": "calabacines"
|
||||
"name": "zucchini",
|
||||
"plural_name": "zucchinis"
|
||||
},
|
||||
"potato": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "papa",
|
||||
"plural_name": "papas"
|
||||
"name": "potato",
|
||||
"plural_name": "potatoes"
|
||||
},
|
||||
"red onion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "cebolla colorada",
|
||||
"plural_name": "cebollas coloradas"
|
||||
"name": "red onion",
|
||||
"plural_name": "red onions"
|
||||
},
|
||||
"yellow onion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "cebolla amarilla",
|
||||
"plural_name": "cebollas amarillas"
|
||||
"name": "yellow onion",
|
||||
"plural_name": "yellow onions"
|
||||
},
|
||||
"celery": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "apio",
|
||||
"plural_name": "apios"
|
||||
"name": "celery",
|
||||
"plural_name": "celeries"
|
||||
},
|
||||
"jalapeno": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "jalapeño",
|
||||
"plural_name": "jalapeños"
|
||||
"name": "jalapeno",
|
||||
"plural_name": "jalapenoes"
|
||||
},
|
||||
"avocado": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "palta",
|
||||
"plural_name": "paltas"
|
||||
"name": "avocado",
|
||||
"plural_name": "avocados"
|
||||
},
|
||||
"shallot": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "cebolleta",
|
||||
"plural_name": "cebolletas"
|
||||
"name": "shallot",
|
||||
"plural_name": "shallots"
|
||||
},
|
||||
"cherry tomato": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "tomate cherry",
|
||||
"plural_name": "tomates cherry"
|
||||
"name": "cherry tomato",
|
||||
"plural_name": "cherry tomatoes"
|
||||
},
|
||||
"cucumber": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "pepino",
|
||||
"plural_name": "pepinos"
|
||||
"name": "cucumber",
|
||||
"plural_name": "cucumbers"
|
||||
},
|
||||
"spinach": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "espinaca",
|
||||
"plural_name": "espinacas"
|
||||
"name": "spinach",
|
||||
"plural_name": "spinaches"
|
||||
},
|
||||
"sweet corn": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "maíz dulce",
|
||||
"plural_name": "maíz dulce"
|
||||
"name": "sweet corn",
|
||||
"plural_name": "sweet corns"
|
||||
},
|
||||
"chile pepper": {
|
||||
"aliases": [
|
||||
"morrones"
|
||||
"capsicum"
|
||||
],
|
||||
"description": "",
|
||||
"name": "ají picante",
|
||||
"plural_name": "ajies picantes"
|
||||
"name": "chile pepper",
|
||||
"plural_name": "chile peppers"
|
||||
},
|
||||
"sweet potato": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "boniato",
|
||||
"plural_name": "boniatos"
|
||||
"name": "sweet potato",
|
||||
"plural_name": "sweet potatoes"
|
||||
},
|
||||
"broccoli": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "brócoli",
|
||||
"plural_name": "brócolis"
|
||||
"name": "broccoli",
|
||||
"plural_name": "broccolis"
|
||||
},
|
||||
"heart of palm": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "palmito",
|
||||
"plural_name": "palmitos"
|
||||
"name": "heart of palm",
|
||||
"plural_name": "heart of palms"
|
||||
},
|
||||
"baby green": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "hoja tierna",
|
||||
"plural_name": "hojas tiernas"
|
||||
"name": "baby green",
|
||||
"plural_name": "baby greens"
|
||||
},
|
||||
"pumpkin": {
|
||||
"aliases": [],
|
||||
@@ -285,38 +285,38 @@
|
||||
"poblano pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "morrón verde",
|
||||
"plural_name": "morrones verdes"
|
||||
"name": "poblano pepper",
|
||||
"plural_name": "poblano peppers"
|
||||
},
|
||||
"sweet pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "pimienta dulce",
|
||||
"plural_name": "pimientas dulces"
|
||||
"name": "sweet pepper",
|
||||
"plural_name": "sweet peppers"
|
||||
},
|
||||
"serrano pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "chile serrano",
|
||||
"plural_name": "chiles serranos"
|
||||
"name": "serrano pepper",
|
||||
"plural_name": "serrano peppers"
|
||||
},
|
||||
"cayenne pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "pimienta de cayena",
|
||||
"plural_name": "pimienta de cayena"
|
||||
"name": "cayenne pepper",
|
||||
"plural_name": "cayenne peppers"
|
||||
},
|
||||
"green tomato": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "tomate verde",
|
||||
"plural_name": "tomates verdes"
|
||||
"name": "green tomato",
|
||||
"plural_name": "green tomatoes"
|
||||
},
|
||||
"watercress": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "berro",
|
||||
"plural_name": "berros"
|
||||
"name": "watercress",
|
||||
"plural_name": "watercress"
|
||||
},
|
||||
"iceberg": {
|
||||
"aliases": [],
|
||||
@@ -327,38 +327,38 @@
|
||||
"mashed potato": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "puré de papa",
|
||||
"plural_name": "puré de papa"
|
||||
"name": "mashed potato",
|
||||
"plural_name": "mashed potatoes"
|
||||
},
|
||||
"horseradish": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "rabanito",
|
||||
"plural_name": "rabanitos"
|
||||
"name": "horseradish",
|
||||
"plural_name": "horseradishes"
|
||||
},
|
||||
"chard": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "acelga",
|
||||
"plural_name": "acelgas"
|
||||
"name": "chard",
|
||||
"plural_name": "chards"
|
||||
},
|
||||
"pimiento": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "ají",
|
||||
"plural_name": "ajíes"
|
||||
"name": "pimiento",
|
||||
"plural_name": "pimientoes"
|
||||
},
|
||||
"spaghetti squash": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "cabello de ángel",
|
||||
"plural_name": "cabellos de ángeles"
|
||||
"name": "spaghetti squash",
|
||||
"plural_name": "spaghetti squashes"
|
||||
},
|
||||
"butter lettuce": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "lechuga de manteca",
|
||||
"plural_name": "lechuga de manteca"
|
||||
"name": "butter lettuce",
|
||||
"plural_name": "butter lettuces"
|
||||
},
|
||||
"hash brown": {
|
||||
"aliases": [],
|
||||
@@ -371,32 +371,32 @@
|
||||
"chinese leaves"
|
||||
],
|
||||
"description": "",
|
||||
"name": "repollo",
|
||||
"plural_name": "repollos"
|
||||
"name": "napa cabbage",
|
||||
"plural_name": "napa cabbages"
|
||||
},
|
||||
"celeriac": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "apio",
|
||||
"plural_name": "apios"
|
||||
"name": "celeriac",
|
||||
"plural_name": "celeriacs"
|
||||
},
|
||||
"water chestnut": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "castaño de agua",
|
||||
"plural_name": "castaños de agua"
|
||||
"name": "water chestnut",
|
||||
"plural_name": "water chestnuts"
|
||||
},
|
||||
"turnip": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "nabo",
|
||||
"plural_name": "nabos"
|
||||
"name": "turnip",
|
||||
"plural_name": "turnips"
|
||||
},
|
||||
"thai chile pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "chile ojo de pájaro",
|
||||
"plural_name": "chiles ojo de pájaro"
|
||||
"name": "thai chile pepper",
|
||||
"plural_name": "thai chile peppers"
|
||||
},
|
||||
"bok choy": {
|
||||
"aliases": [],
|
||||
@@ -407,31 +407,31 @@
|
||||
"okra": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "abelmosco",
|
||||
"plural_name": "abelmosco"
|
||||
"name": "okra",
|
||||
"plural_name": "okra"
|
||||
},
|
||||
"acorn squash": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "calabaza bellota",
|
||||
"plural_name": "calabazas bellota"
|
||||
"name": "acorn squash",
|
||||
"plural_name": "acorn squashes"
|
||||
},
|
||||
"corn cob": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "maíz",
|
||||
"plural_name": "maíces"
|
||||
"name": "corn cob",
|
||||
"plural_name": "corn cobs"
|
||||
},
|
||||
"radicchio": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "repollo colorado",
|
||||
"plural_name": "repollo colorado"
|
||||
"name": "radicchio",
|
||||
"plural_name": "radicchio"
|
||||
},
|
||||
"pearl onion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "cebolla perla",
|
||||
"name": "pearl onion",
|
||||
"plural_name": "pearl onions"
|
||||
},
|
||||
"tenderstem broccoli": {
|
||||
@@ -566,55 +566,55 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "fresno chile",
|
||||
"plural_name": "chile fresno"
|
||||
"plural_name": "fresno chiles"
|
||||
},
|
||||
"delicata squash": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "calabaza delicata",
|
||||
"plural_name": "calabazas delicata"
|
||||
"name": "delicata squash",
|
||||
"plural_name": "delicata squashes"
|
||||
},
|
||||
"frisee": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "lechuga rizada",
|
||||
"plural_name": "lechuga rizada"
|
||||
"name": "frisee",
|
||||
"plural_name": "frisees"
|
||||
},
|
||||
"anaheim pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "chile anaheim",
|
||||
"plural_name": "chile anaheim"
|
||||
"name": "anaheim pepper",
|
||||
"plural_name": "anaheim peppers"
|
||||
},
|
||||
"cres": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "brote",
|
||||
"plural_name": "brotes"
|
||||
"name": "cres",
|
||||
"plural_name": "cress"
|
||||
},
|
||||
"broccoli slaw": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "brócoli",
|
||||
"plural_name": "brócolis"
|
||||
"name": "broccoli slaw",
|
||||
"plural_name": "broccoli slaws"
|
||||
},
|
||||
"arbol chile pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "pimienta de arbol",
|
||||
"plural_name": "pimienta de arbol"
|
||||
"name": "arbol chile pepper",
|
||||
"plural_name": "arbol chile peppers"
|
||||
},
|
||||
"golden beet": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "remolacha dorada",
|
||||
"plural_name": "remolacha dorada"
|
||||
"name": "golden beet",
|
||||
"plural_name": "golden beets"
|
||||
},
|
||||
"pea shoot": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "brote de guisante",
|
||||
"plural_name": "brotes de guisante"
|
||||
"name": "pea shoot",
|
||||
"plural_name": "pea shoots"
|
||||
},
|
||||
"alfalfa": {
|
||||
"aliases": [],
|
||||
@@ -628,27 +628,27 @@
|
||||
"foods": {
|
||||
"tomato": {
|
||||
"aliases": [],
|
||||
"description": "Sí, son una fruta",
|
||||
"name": "tomate",
|
||||
"plural_name": "tomates"
|
||||
"description": "Yes they are a fruit",
|
||||
"name": "tomato",
|
||||
"plural_name": "tomatoes"
|
||||
},
|
||||
"lemon": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "limón",
|
||||
"plural_name": "limones"
|
||||
"name": "lemon",
|
||||
"plural_name": "lemons"
|
||||
},
|
||||
"lime": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "lima",
|
||||
"plural_name": "limas"
|
||||
"name": "lime",
|
||||
"plural_name": "limes"
|
||||
},
|
||||
"apple": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "manzana",
|
||||
"plural_name": "manzanas"
|
||||
"name": "apple",
|
||||
"plural_name": "apples"
|
||||
},
|
||||
"banana": {
|
||||
"aliases": [],
|
||||
@@ -659,62 +659,62 @@
|
||||
"orange": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "naranja",
|
||||
"plural_name": "naranjas"
|
||||
"name": "orange",
|
||||
"plural_name": "oranges"
|
||||
},
|
||||
"raisin": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "pasa",
|
||||
"plural_name": "pasas"
|
||||
"name": "raisin",
|
||||
"plural_name": "raisins"
|
||||
},
|
||||
"pineapple": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "piña",
|
||||
"plural_name": "piñas"
|
||||
"name": "pineapple",
|
||||
"plural_name": "pineapples"
|
||||
},
|
||||
"mango": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "mango",
|
||||
"plural_name": "mangos"
|
||||
"plural_name": "mangoes"
|
||||
},
|
||||
"peach": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "durazno",
|
||||
"plural_name": "duraznos"
|
||||
"name": "peach",
|
||||
"plural_name": "peaches"
|
||||
},
|
||||
"date": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "fecha",
|
||||
"plural_name": "fechas"
|
||||
"name": "date",
|
||||
"plural_name": "dates"
|
||||
},
|
||||
"coconut": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "coco",
|
||||
"plural_name": "cocos"
|
||||
"name": "coconut",
|
||||
"plural_name": "coconuts"
|
||||
},
|
||||
"craisin": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "arándano rojo",
|
||||
"plural_name": "arándanos rojos"
|
||||
"name": "craisin",
|
||||
"plural_name": "craisins"
|
||||
},
|
||||
"pear": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "pera",
|
||||
"plural_name": "peras"
|
||||
"name": "pear",
|
||||
"plural_name": "pears"
|
||||
},
|
||||
"grape": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "uva",
|
||||
"plural_name": "uvas"
|
||||
"name": "grape",
|
||||
"plural_name": "grapes"
|
||||
},
|
||||
"pomegranate": {
|
||||
"aliases": [],
|
||||
@@ -869,128 +869,128 @@
|
||||
"melon": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "melón",
|
||||
"plural_name": "melones"
|
||||
"name": "melon",
|
||||
"plural_name": "melons"
|
||||
},
|
||||
"tangerine": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "mandarina",
|
||||
"plural_name": "mandarinas"
|
||||
"name": "tangerine",
|
||||
"plural_name": "tangerines"
|
||||
},
|
||||
"dried mango": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "mango seco",
|
||||
"plural_name": "mangos secos"
|
||||
"name": "dried mango",
|
||||
"plural_name": "dried mangoes"
|
||||
},
|
||||
"dried apple": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "manzana seca",
|
||||
"plural_name": "manzanas secas"
|
||||
"name": "dried apple",
|
||||
"plural_name": "dried apples"
|
||||
},
|
||||
"quince": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "membrillo",
|
||||
"plural_name": "membrillos"
|
||||
"name": "quince",
|
||||
"plural_name": "quinces"
|
||||
},
|
||||
"guava": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "guayaba",
|
||||
"plural_name": "guayabas"
|
||||
"name": "guava",
|
||||
"plural_name": "guavas"
|
||||
},
|
||||
"banana chip": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "chip de banana",
|
||||
"plural_name": "chips de banana"
|
||||
"name": "banana chip",
|
||||
"plural_name": "banana chips"
|
||||
},
|
||||
"kumquat": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "naranjo enano",
|
||||
"plural_name": "naranjos enanos"
|
||||
"name": "kumquat",
|
||||
"plural_name": "kumquats"
|
||||
},
|
||||
"jackfruit": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "yaca",
|
||||
"plural_name": "yaca"
|
||||
"name": "jackfruit",
|
||||
"plural_name": "jackfruits"
|
||||
},
|
||||
"dragon fruit": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "fruta del dragón",
|
||||
"plural_name": "frutas del dragón"
|
||||
"name": "dragon fruit",
|
||||
"plural_name": "dragon fruits"
|
||||
},
|
||||
"mixed fruit": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "fruta mixta",
|
||||
"plural_name": "frutas mixtas"
|
||||
"name": "mixed fruit",
|
||||
"plural_name": "mixed fruits"
|
||||
},
|
||||
"asian pear": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "pera asiática",
|
||||
"plural_name": "peras asiáticas"
|
||||
"name": "asian pear",
|
||||
"plural_name": "asian pears"
|
||||
},
|
||||
"lychee": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "lichi",
|
||||
"plural_name": "lichis"
|
||||
"name": "lychee",
|
||||
"plural_name": "lychees"
|
||||
},
|
||||
"young coconut": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "coco joven",
|
||||
"plural_name": "cocos jóvenes"
|
||||
"name": "young coconut",
|
||||
"plural_name": "young coconuts"
|
||||
},
|
||||
"kaffir lime": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "lima kaffir",
|
||||
"plural_name": "limas kaffir"
|
||||
"name": "kaffir lime",
|
||||
"plural_name": "kaffir limes"
|
||||
},
|
||||
"star fruit": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "carambola",
|
||||
"plural_name": "carambolas"
|
||||
"name": "star fruit",
|
||||
"plural_name": "star fruits"
|
||||
},
|
||||
"green papaya": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "papaya verde",
|
||||
"plural_name": "papayas verdes"
|
||||
"name": "green papaya",
|
||||
"plural_name": "green papayas"
|
||||
},
|
||||
"pomelo": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "pomelo",
|
||||
"plural_name": "pomelos"
|
||||
"plural_name": "pomeloes"
|
||||
},
|
||||
"chestnut puree": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "puré de castañas",
|
||||
"plural_name": "puré de castañas"
|
||||
"name": "chestnut puree",
|
||||
"plural_name": "chestnut purees"
|
||||
},
|
||||
"prickly pear": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "pera espinosa",
|
||||
"plural_name": "peras espinosas"
|
||||
"name": "prickly pear",
|
||||
"plural_name": "prickly pears"
|
||||
},
|
||||
"calamansi": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "calamondín",
|
||||
"plural_name": "calamondines"
|
||||
"name": "calamansi",
|
||||
"plural_name": "calamansis"
|
||||
},
|
||||
"yuzu": {
|
||||
"aliases": [],
|
||||
@@ -1007,14 +1007,14 @@
|
||||
"apple chip": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "chip de manzana",
|
||||
"plural_name": "chips de manzana"
|
||||
"name": "apple chip",
|
||||
"plural_name": "apple chips"
|
||||
},
|
||||
"mixed peel": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "cáscara mixta",
|
||||
"plural_name": "cáscara mixta"
|
||||
"name": "mixed peel",
|
||||
"plural_name": "mixed peels"
|
||||
},
|
||||
"kokum": {
|
||||
"aliases": [],
|
||||
@@ -1169,14 +1169,14 @@
|
||||
"fig leaf": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "hoja de higuera",
|
||||
"plural_name": "hojas de higuera"
|
||||
"name": "fig leaf",
|
||||
"plural_name": "fig leaves"
|
||||
},
|
||||
"freeze-dried pineapple": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "piña secada por congelación",
|
||||
"plural_name": "piñas secadas por congelación"
|
||||
"name": "freeze-dried pineapple",
|
||||
"plural_name": "freeze-dried pineapples"
|
||||
},
|
||||
"pluot": {
|
||||
"aliases": [],
|
||||
@@ -1193,26 +1193,26 @@
|
||||
"hog plum": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "ciruela de cerdo",
|
||||
"plural_name": "ciruelas de cerdo"
|
||||
"name": "hog plum",
|
||||
"plural_name": "hog plums"
|
||||
},
|
||||
"bergamot orange": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "bergamota",
|
||||
"plural_name": "bergamotas"
|
||||
"name": "bergamot orange",
|
||||
"plural_name": "bergamot oranges"
|
||||
},
|
||||
"luo han guo": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "fruto del monje",
|
||||
"plural_name": "frutos del monje"
|
||||
"name": "luo han guo",
|
||||
"plural_name": "luo han guos"
|
||||
},
|
||||
"mamey": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "mamao",
|
||||
"plural_name": "mamaos"
|
||||
"name": "mamey",
|
||||
"plural_name": "mameys"
|
||||
},
|
||||
"sapote": {
|
||||
"aliases": [],
|
||||
@@ -1223,14 +1223,14 @@
|
||||
"green ume plum": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "ciruela verde",
|
||||
"plural_name": "ciruelas verdes"
|
||||
"name": "green ume plum",
|
||||
"plural_name": "green ume plums"
|
||||
},
|
||||
"kiwano": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "kiwano",
|
||||
"plural_name": "kiwanos"
|
||||
"plural_name": "kiwanoes"
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -1239,26 +1239,26 @@
|
||||
"button mushroom": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "champiñón",
|
||||
"plural_name": "champiñones"
|
||||
"name": "button mushroom",
|
||||
"plural_name": "button mushrooms"
|
||||
},
|
||||
"shiitake mushroom": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "hongo shiitake",
|
||||
"plural_name": "hongos shiitake"
|
||||
"name": "shiitake mushroom",
|
||||
"plural_name": "shiitake mushrooms"
|
||||
},
|
||||
"portobello mushroom": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "hongo portobello",
|
||||
"plural_name": "hongos portobello"
|
||||
"name": "portobello mushroom",
|
||||
"plural_name": "portobello mushrooms"
|
||||
},
|
||||
"wild mushroom": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "hongos silvestre",
|
||||
"plural_name": "hongos silvestre"
|
||||
"name": "wild mushroom",
|
||||
"plural_name": "wild mushrooms"
|
||||
},
|
||||
"porcini": {
|
||||
"aliases": [],
|
||||
@@ -1269,56 +1269,56 @@
|
||||
"mixed mushroom": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "hongos mixtos",
|
||||
"plural_name": "hongos mixtos"
|
||||
"name": "mixed mushroom",
|
||||
"plural_name": "mixed mushrooms"
|
||||
},
|
||||
"oyster mushroom": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "champiñón blanco",
|
||||
"plural_name": "champiñón blanco"
|
||||
"name": "oyster mushroom",
|
||||
"plural_name": "oyster mushrooms"
|
||||
},
|
||||
"chestnut mushroom": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "champiñón de castaño",
|
||||
"plural_name": "champiñones de castaño"
|
||||
"name": "chestnut mushroom",
|
||||
"plural_name": "chestnut mushrooms"
|
||||
},
|
||||
"enoki mushroom": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "hongo enoki",
|
||||
"plural_name": "hongos enoki"
|
||||
"name": "enoki mushroom",
|
||||
"plural_name": "enoki mushrooms"
|
||||
},
|
||||
"black fungu": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "hongo negro",
|
||||
"plural_name": "hongos negros"
|
||||
"name": "black fungu",
|
||||
"plural_name": "black fungus"
|
||||
},
|
||||
"black truffle": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "trufa negra",
|
||||
"plural_name": "trufas negras"
|
||||
"name": "black truffle",
|
||||
"plural_name": "black truffles"
|
||||
},
|
||||
"morel mushroom": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "hongo morel",
|
||||
"plural_name": "hongos morel"
|
||||
"name": "morel mushroom",
|
||||
"plural_name": "morel mushrooms"
|
||||
},
|
||||
"field mushroom": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "hongo de campo",
|
||||
"plural_name": "hongos de campo"
|
||||
"name": "field mushroom",
|
||||
"plural_name": "field mushrooms"
|
||||
},
|
||||
"king oyster mushroom": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "hongo de ostra rey",
|
||||
"plural_name": "hongos de ostra rey"
|
||||
"name": "king oyster mushroom",
|
||||
"plural_name": "king oyster mushrooms"
|
||||
},
|
||||
"shimeji mushroom": {
|
||||
"aliases": [],
|
||||
@@ -1477,56 +1477,56 @@
|
||||
"cherry": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "cereza",
|
||||
"plural_name": "cerezas"
|
||||
"name": "cherry",
|
||||
"plural_name": "cherries"
|
||||
},
|
||||
"blackberry": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "mora",
|
||||
"plural_name": "moras"
|
||||
"name": "blackberry",
|
||||
"plural_name": "blackberries"
|
||||
},
|
||||
"berry mix": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "mix de baya",
|
||||
"plural_name": "mix de bayas"
|
||||
"name": "berry mix",
|
||||
"plural_name": "berry mixes"
|
||||
},
|
||||
"maraschino cherry": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "cereza maraschino",
|
||||
"plural_name": "cerezas maraschino"
|
||||
"name": "maraschino cherry",
|
||||
"plural_name": "maraschino cherries"
|
||||
},
|
||||
"dried cherry": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "cereza seca",
|
||||
"plural_name": "cerezas secas"
|
||||
"name": "dried cherry",
|
||||
"plural_name": "dried cherries"
|
||||
},
|
||||
"juniper berry": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "baya de enebro",
|
||||
"plural_name": "bayas de enebro"
|
||||
"name": "juniper berry",
|
||||
"plural_name": "juniper berries"
|
||||
},
|
||||
"sour cherry": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "cereza agria",
|
||||
"plural_name": "cerezas agrias"
|
||||
"name": "sour cherry",
|
||||
"plural_name": "sour cherries"
|
||||
},
|
||||
"goji berry": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "baya goji",
|
||||
"plural_name": "bayas goji"
|
||||
"name": "goji berry",
|
||||
"plural_name": "goji berries"
|
||||
},
|
||||
"dried blueberry": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "arándano seco",
|
||||
"plural_name": "arándanos secos"
|
||||
"name": "dried blueberry",
|
||||
"plural_name": "dried blueberries"
|
||||
},
|
||||
"freeze-dried strawberry": {
|
||||
"aliases": [],
|
||||
|
||||
@@ -1901,8 +1901,8 @@
|
||||
"candlenut": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "kemirinoot",
|
||||
"plural_name": "kemirinoten"
|
||||
"name": "candlenut",
|
||||
"plural_name": "candlenuts"
|
||||
},
|
||||
"peanut brittle": {
|
||||
"aliases": [],
|
||||
@@ -1919,14 +1919,14 @@
|
||||
"honey-roasted almond": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "geroosterde amandel met honing",
|
||||
"plural_name": "geroosterde amandels met honing"
|
||||
"name": "honey-roasted almond",
|
||||
"plural_name": "honey-roasted almonds"
|
||||
},
|
||||
"toasted nut": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "geroosterde noot",
|
||||
"plural_name": "geroosterde noten"
|
||||
"name": "toasted nut",
|
||||
"plural_name": "toasted nuts"
|
||||
},
|
||||
"chironji": {
|
||||
"aliases": [],
|
||||
@@ -1937,8 +1937,8 @@
|
||||
"honey-roasted pecan": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "geroosterde pecannoot met honing",
|
||||
"plural_name": "geroosterde pecannoten met honing"
|
||||
"name": "honey-roasted pecan",
|
||||
"plural_name": "honey-roasted pecans"
|
||||
},
|
||||
"tigernut": {
|
||||
"aliases": [],
|
||||
@@ -2088,13 +2088,13 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "pecorino",
|
||||
"plural_name": "pecorino's"
|
||||
"plural_name": "pecorinoes"
|
||||
},
|
||||
"gruyere": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "gruyère",
|
||||
"plural_name": "gruyères"
|
||||
"name": "gruyere",
|
||||
"plural_name": "gruyeres"
|
||||
},
|
||||
"mascarpone": {
|
||||
"aliases": [],
|
||||
@@ -2190,7 +2190,7 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "halloumi",
|
||||
"plural_name": "halloumi's"
|
||||
"plural_name": "halloumis"
|
||||
},
|
||||
"chevre": {
|
||||
"aliases": [],
|
||||
@@ -2226,7 +2226,7 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "burrata",
|
||||
"plural_name": "burrata's"
|
||||
"plural_name": "burratas"
|
||||
},
|
||||
"havarti": {
|
||||
"aliases": [],
|
||||
@@ -2243,8 +2243,8 @@
|
||||
"grana-padano": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "grana padano",
|
||||
"plural_name": "grana padano's"
|
||||
"name": "grana-padano",
|
||||
"plural_name": "grana-padanoes"
|
||||
},
|
||||
"muenster": {
|
||||
"aliases": [],
|
||||
@@ -2328,7 +2328,7 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "kaaspoeder",
|
||||
"plural_name": "kaaspoeders"
|
||||
"plural_name": "cheese powders"
|
||||
},
|
||||
"fromage blanc": {
|
||||
"aliases": [],
|
||||
@@ -2406,7 +2406,7 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "comté",
|
||||
"plural_name": "comté's"
|
||||
"plural_name": "comtés"
|
||||
},
|
||||
"graviera": {
|
||||
"aliases": [],
|
||||
@@ -2424,7 +2424,7 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "scamorza",
|
||||
"plural_name": "scamorza's"
|
||||
"plural_name": "scamorzas"
|
||||
},
|
||||
"cambozola": {
|
||||
"aliases": [],
|
||||
@@ -2613,20 +2613,20 @@
|
||||
"butter": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "boter",
|
||||
"plural_name": "boters"
|
||||
"name": "butter",
|
||||
"plural_name": "butter"
|
||||
},
|
||||
"egg": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "ei",
|
||||
"plural_name": "eieren"
|
||||
"name": "egg",
|
||||
"plural_name": "eggs"
|
||||
},
|
||||
"milk": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "melk",
|
||||
"plural_name": "melk"
|
||||
"name": "milk",
|
||||
"plural_name": "milks"
|
||||
},
|
||||
"heavy cream": {
|
||||
"aliases": [],
|
||||
@@ -2637,8 +2637,8 @@
|
||||
"sour cream": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "zure room",
|
||||
"plural_name": "zure room"
|
||||
"name": "sour cream",
|
||||
"plural_name": "sour creams"
|
||||
},
|
||||
"buttermilk": {
|
||||
"aliases": [],
|
||||
@@ -2649,26 +2649,26 @@
|
||||
"yogurt": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "yoghurt",
|
||||
"plural_name": "yoghurts"
|
||||
"name": "yogurt",
|
||||
"plural_name": "yogurts"
|
||||
},
|
||||
"greek yogurt": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "griekse yoghurt",
|
||||
"plural_name": "griekse yoghurts"
|
||||
"name": "greek yogurt",
|
||||
"plural_name": "greek yogurts"
|
||||
},
|
||||
"cream": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "room",
|
||||
"plural_name": "room"
|
||||
"name": "cream",
|
||||
"plural_name": "creams"
|
||||
},
|
||||
"whipped cream": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "slagroom",
|
||||
"plural_name": "slagroom"
|
||||
"name": "whipped cream",
|
||||
"plural_name": "whipped creams"
|
||||
},
|
||||
"ghee": {
|
||||
"aliases": [
|
||||
@@ -2687,8 +2687,8 @@
|
||||
"condensed milk": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "gecondenseerde melk",
|
||||
"plural_name": "gecondenseerde melk"
|
||||
"name": "condensed milk",
|
||||
"plural_name": "condensed milks"
|
||||
},
|
||||
"half and half": {
|
||||
"aliases": [],
|
||||
@@ -2705,8 +2705,8 @@
|
||||
"ice cream": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "roomijs",
|
||||
"plural_name": "roomijsjes"
|
||||
"name": "ice cream",
|
||||
"plural_name": "ice creams"
|
||||
},
|
||||
"margarine": {
|
||||
"aliases": [],
|
||||
@@ -2717,20 +2717,20 @@
|
||||
"creme fraiche": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "crème fraîche",
|
||||
"plural_name": "crème fraîches"
|
||||
"name": "creme fraiche",
|
||||
"plural_name": "creme fraiches"
|
||||
},
|
||||
"frosting": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "glazuur",
|
||||
"plural_name": "glazuren"
|
||||
"name": "frosting",
|
||||
"plural_name": "frostings"
|
||||
},
|
||||
"milk powder": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "melkpoeder",
|
||||
"plural_name": "melkpoeders"
|
||||
"name": "milk powder",
|
||||
"plural_name": "milk powders"
|
||||
},
|
||||
"curd": {
|
||||
"aliases": [],
|
||||
@@ -2765,8 +2765,8 @@
|
||||
"chocolate frosting": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "chocolade glazuur",
|
||||
"plural_name": "chocolade glazuren"
|
||||
"name": "chocolate frosting",
|
||||
"plural_name": "chocolate frostings"
|
||||
},
|
||||
"kefir": {
|
||||
"aliases": [],
|
||||
@@ -2783,8 +2783,8 @@
|
||||
"chocolate milk": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "chocolade melk",
|
||||
"plural_name": "chocolade melk"
|
||||
"name": "chocolate milk",
|
||||
"plural_name": "chocolate milks"
|
||||
},
|
||||
"liquid egg substitute": {
|
||||
"aliases": [],
|
||||
@@ -2849,8 +2849,8 @@
|
||||
"goat milk": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "geitenmelk",
|
||||
"plural_name": "geitenmelk"
|
||||
"name": "goat milk",
|
||||
"plural_name": "goat milks"
|
||||
},
|
||||
"cheese curd": {
|
||||
"aliases": [],
|
||||
@@ -2861,8 +2861,8 @@
|
||||
"sour milk": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "zure melk",
|
||||
"plural_name": "zure melk"
|
||||
"name": "sour milk",
|
||||
"plural_name": "sour milks"
|
||||
},
|
||||
"ganache": {
|
||||
"aliases": [],
|
||||
@@ -2879,14 +2879,14 @@
|
||||
"duck egg": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "eendenei",
|
||||
"plural_name": "eendeneieren"
|
||||
"name": "duck egg",
|
||||
"plural_name": "duck eggs"
|
||||
},
|
||||
"salted egg": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "gezout ei",
|
||||
"plural_name": "gezoute eieren"
|
||||
"name": "salted egg",
|
||||
"plural_name": "salted eggs"
|
||||
},
|
||||
"skyr": {
|
||||
"aliases": [],
|
||||
@@ -3077,8 +3077,8 @@
|
||||
"sheep milk": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "schapenmelk",
|
||||
"plural_name": "schapenmelk"
|
||||
"name": "sheep milk",
|
||||
"plural_name": "sheep milks"
|
||||
},
|
||||
"starter culture": {
|
||||
"aliases": [],
|
||||
@@ -3095,8 +3095,8 @@
|
||||
"ostrich egg": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "struisvogelei",
|
||||
"plural_name": "struisvogeleieren"
|
||||
"name": "ostrich egg",
|
||||
"plural_name": "ostrich eggs"
|
||||
},
|
||||
"vanilla milk": {
|
||||
"aliases": [],
|
||||
@@ -3135,14 +3135,14 @@
|
||||
"coconut milk": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "kokosmelk",
|
||||
"plural_name": "kokosmelk"
|
||||
"name": "coconut milk",
|
||||
"plural_name": "coconut milks"
|
||||
},
|
||||
"almond milk": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "amandelmelk",
|
||||
"plural_name": "amandelmelk"
|
||||
"name": "almond milk",
|
||||
"plural_name": "almond milks"
|
||||
},
|
||||
"almond butter": {
|
||||
"aliases": [],
|
||||
@@ -3177,8 +3177,8 @@
|
||||
"soy milk": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "sojamelk",
|
||||
"plural_name": "sojamelk"
|
||||
"name": "soy milk",
|
||||
"plural_name": "soy milks"
|
||||
},
|
||||
"extra firm tofu": {
|
||||
"aliases": [],
|
||||
|
||||
@@ -4,301 +4,301 @@
|
||||
"garlic": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "чеснок",
|
||||
"plural_name": "чеснока"
|
||||
"name": "garlic",
|
||||
"plural_name": "garlics"
|
||||
},
|
||||
"onion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "лук",
|
||||
"plural_name": "лука"
|
||||
"name": "onion",
|
||||
"plural_name": "onions"
|
||||
},
|
||||
"bell pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "болгарский перец",
|
||||
"plural_name": "болгарских перца"
|
||||
"name": "bell pepper",
|
||||
"plural_name": "bell peppers"
|
||||
},
|
||||
"carrot": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "морковь",
|
||||
"plural_name": "моркови"
|
||||
"name": "carrot",
|
||||
"plural_name": "carrots"
|
||||
},
|
||||
"scallion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "зелёный лук",
|
||||
"plural_name": "зелёного лука"
|
||||
"name": "scallion",
|
||||
"plural_name": "scallions"
|
||||
},
|
||||
"zucchini": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "цукини",
|
||||
"plural_name": "цукини"
|
||||
"plural_name": "zucchinis"
|
||||
},
|
||||
"potato": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "картофель",
|
||||
"plural_name": "картофеля"
|
||||
"name": "potato",
|
||||
"plural_name": "potatoes"
|
||||
},
|
||||
"red onion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "красный лук",
|
||||
"plural_name": "красного лука"
|
||||
"name": "red onion",
|
||||
"plural_name": "red onions"
|
||||
},
|
||||
"yellow onion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "жёлтый лук",
|
||||
"plural_name": "жёлтого лука"
|
||||
"name": "yellow onion",
|
||||
"plural_name": "yellow onions"
|
||||
},
|
||||
"celery": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "сельдерей",
|
||||
"plural_name": "сельдерея"
|
||||
"name": "celery",
|
||||
"plural_name": "celeries"
|
||||
},
|
||||
"jalapeno": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "халапеньо",
|
||||
"plural_name": "халапеньо"
|
||||
"name": "jalapeno",
|
||||
"plural_name": "jalapenoes"
|
||||
},
|
||||
"avocado": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "авокадо",
|
||||
"plural_name": "авокадо"
|
||||
"name": "avocado",
|
||||
"plural_name": "avocados"
|
||||
},
|
||||
"shallot": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "шалот",
|
||||
"plural_name": "шалот"
|
||||
"name": "shallot",
|
||||
"plural_name": "shallots"
|
||||
},
|
||||
"cherry tomato": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "помидор Черри",
|
||||
"plural_name": "помидоры Черри"
|
||||
"name": "cherry tomato",
|
||||
"plural_name": "cherry tomatoes"
|
||||
},
|
||||
"cucumber": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "огурец",
|
||||
"plural_name": "огурцы"
|
||||
"name": "cucumber",
|
||||
"plural_name": "cucumbers"
|
||||
},
|
||||
"spinach": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "шпинат",
|
||||
"plural_name": "шпинат"
|
||||
"name": "spinach",
|
||||
"plural_name": "spinaches"
|
||||
},
|
||||
"sweet corn": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "сладкая кукуруза",
|
||||
"plural_name": "сладкая кукуруза"
|
||||
"name": "sweet corn",
|
||||
"plural_name": "sweet corns"
|
||||
},
|
||||
"chile pepper": {
|
||||
"aliases": [
|
||||
"стручковый перец"
|
||||
"capsicum"
|
||||
],
|
||||
"description": "",
|
||||
"name": "перец чили",
|
||||
"plural_name": "перца чили"
|
||||
"name": "chile pepper",
|
||||
"plural_name": "chile peppers"
|
||||
},
|
||||
"sweet potato": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "батат",
|
||||
"plural_name": "батат"
|
||||
"name": "sweet potato",
|
||||
"plural_name": "sweet potatoes"
|
||||
},
|
||||
"broccoli": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "брокколи",
|
||||
"plural_name": "брокколи"
|
||||
"name": "broccoli",
|
||||
"plural_name": "broccolis"
|
||||
},
|
||||
"heart of palm": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "сердце пальмы",
|
||||
"plural_name": "сердец пальмы"
|
||||
"name": "heart of palm",
|
||||
"plural_name": "heart of palms"
|
||||
},
|
||||
"baby green": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "молодая зелень",
|
||||
"plural_name": "молодая зелень"
|
||||
"name": "baby green",
|
||||
"plural_name": "baby greens"
|
||||
},
|
||||
"pumpkin": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "тыква",
|
||||
"plural_name": "тыквы"
|
||||
"name": "pumpkin",
|
||||
"plural_name": "pumpkins"
|
||||
},
|
||||
"cauliflower": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "цветная капуста",
|
||||
"plural_name": "цветной капусты"
|
||||
"name": "cauliflower",
|
||||
"plural_name": "cauliflowers"
|
||||
},
|
||||
"cabbage": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "капуста",
|
||||
"plural_name": "капуста"
|
||||
"name": "cabbage",
|
||||
"plural_name": "cabbages"
|
||||
},
|
||||
"asparagu": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "спаржа",
|
||||
"plural_name": "спаржа"
|
||||
"name": "asparagu",
|
||||
"plural_name": "asparagus"
|
||||
},
|
||||
"kale": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "кудрявая капуста",
|
||||
"plural_name": "кудрявая капуста"
|
||||
"name": "kale",
|
||||
"plural_name": "kales"
|
||||
},
|
||||
"arugula": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "руккола",
|
||||
"plural_name": "руккола"
|
||||
"name": "arugula",
|
||||
"plural_name": "arugulas"
|
||||
},
|
||||
"leek": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "лук-порей",
|
||||
"plural_name": "лук-порей"
|
||||
"name": "leek",
|
||||
"plural_name": "leeks"
|
||||
},
|
||||
"eggplant": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "баклажан",
|
||||
"plural_name": "баклажаны"
|
||||
"name": "eggplant",
|
||||
"plural_name": "eggplants"
|
||||
},
|
||||
"lettuce": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "салат - латук",
|
||||
"plural_name": "салат - латук"
|
||||
"name": "lettuce",
|
||||
"plural_name": "lettuces"
|
||||
},
|
||||
"butternut squash": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "мускатная тыква",
|
||||
"plural_name": "мускатная тыква"
|
||||
"name": "butternut squash",
|
||||
"plural_name": "butternut squashes"
|
||||
},
|
||||
"romaine": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "римский салат",
|
||||
"plural_name": "римский салат"
|
||||
"name": "romaine",
|
||||
"plural_name": "romaines"
|
||||
},
|
||||
"beetroot": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "свёкла",
|
||||
"plural_name": "свёклы"
|
||||
"name": "beetroot",
|
||||
"plural_name": "beetroots"
|
||||
},
|
||||
"brussels sprout": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "брюссельская капуста",
|
||||
"plural_name": "брюссельская капуста"
|
||||
"name": "brussels sprout",
|
||||
"plural_name": "brussels sprouts"
|
||||
},
|
||||
"fennel": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "фенхель",
|
||||
"plural_name": "фенхель"
|
||||
"name": "fennel",
|
||||
"plural_name": "fennels"
|
||||
},
|
||||
"sun dried tomato": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "вяленый помидор",
|
||||
"plural_name": "вяленые помидоры"
|
||||
"name": "sun dried tomato",
|
||||
"plural_name": "sun dried tomatoes"
|
||||
},
|
||||
"radish": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "редис",
|
||||
"plural_name": "редис"
|
||||
"name": "radish",
|
||||
"plural_name": "radishes"
|
||||
},
|
||||
"red cabbage": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "красная капуста",
|
||||
"plural_name": "красная капуста"
|
||||
"name": "red cabbage",
|
||||
"plural_name": "red cabbages"
|
||||
},
|
||||
"artichoke": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "артишок",
|
||||
"plural_name": "артишоки"
|
||||
"name": "artichoke",
|
||||
"plural_name": "artichokes"
|
||||
},
|
||||
"new potato": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "молодой картофель",
|
||||
"plural_name": "молодой картофель"
|
||||
"name": "new potato",
|
||||
"plural_name": "new potatoes"
|
||||
},
|
||||
"summer squash": {
|
||||
"aliases": [
|
||||
"кабачок",
|
||||
"гем-сквош"
|
||||
"courgette",
|
||||
"gem squash"
|
||||
],
|
||||
"description": "",
|
||||
"name": "молодой кабачок",
|
||||
"plural_name": "молодой кабачок"
|
||||
"name": "summer squash",
|
||||
"plural_name": "summer squashes"
|
||||
},
|
||||
"mixed green": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "смешанная зелень",
|
||||
"plural_name": "смешанная зелень"
|
||||
"name": "mixed green",
|
||||
"plural_name": "mixed greens"
|
||||
},
|
||||
"parsnip": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "пастернак",
|
||||
"plural_name": "пастернаки"
|
||||
"name": "parsnip",
|
||||
"plural_name": "parsnips"
|
||||
},
|
||||
"baby carrot": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "беби-морковь",
|
||||
"plural_name": "беби-морковь"
|
||||
"name": "baby carrot",
|
||||
"plural_name": "baby carrots"
|
||||
},
|
||||
"mixed vegetable": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "овощная смесь",
|
||||
"plural_name": "овощная смесь"
|
||||
"name": "mixed vegetable",
|
||||
"plural_name": "mixed vegetables"
|
||||
},
|
||||
"poblano pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "перец поблано",
|
||||
"plural_name": "перец поблано"
|
||||
"name": "poblano pepper",
|
||||
"plural_name": "poblano peppers"
|
||||
},
|
||||
"sweet pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "сладкий перец",
|
||||
"plural_name": "сладкие перцы"
|
||||
"name": "sweet pepper",
|
||||
"plural_name": "sweet peppers"
|
||||
},
|
||||
"serrano pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "перец серрано",
|
||||
"plural_name": "перец серрано"
|
||||
"name": "serrano pepper",
|
||||
"plural_name": "serrano peppers"
|
||||
},
|
||||
"cayenne pepper": {
|
||||
"aliases": [],
|
||||
@@ -450,153 +450,153 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "leaf lettuce",
|
||||
"plural_name": "листовой салат"
|
||||
"plural_name": "leaf lettuces"
|
||||
},
|
||||
"pepperoncini": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "пеперончини",
|
||||
"plural_name": "пеперончини"
|
||||
"name": "pepperoncini",
|
||||
"plural_name": "pepperoncinis"
|
||||
},
|
||||
"baby bok choy": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "молодой бок‑чой",
|
||||
"plural_name": "молодой бок‑чой"
|
||||
"name": "baby bok choy",
|
||||
"plural_name": "baby bok choys"
|
||||
},
|
||||
"jicama": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "хикама",
|
||||
"plural_name": "хикама"
|
||||
"name": "jicama",
|
||||
"plural_name": "jicamas"
|
||||
},
|
||||
"endive": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "эндивий(цикорий-салатный)",
|
||||
"plural_name": "эндивий(цикорий-салатный)"
|
||||
"name": "endive",
|
||||
"plural_name": "endives"
|
||||
},
|
||||
"habanero pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "перец хабанеро",
|
||||
"plural_name": "перец хабанеро"
|
||||
"name": "habanero pepper",
|
||||
"plural_name": "habanero peppers"
|
||||
},
|
||||
"corn husk": {
|
||||
"aliases": [
|
||||
"кукуруза"
|
||||
"maize"
|
||||
],
|
||||
"description": "",
|
||||
"name": "кукурузная шелуха",
|
||||
"plural_name": "кукурузная шелуха"
|
||||
"name": "corn husk",
|
||||
"plural_name": "corn husks"
|
||||
},
|
||||
"collard green": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "листовая капуста",
|
||||
"plural_name": "листовая капуста"
|
||||
"name": "collard green",
|
||||
"plural_name": "collard greens"
|
||||
},
|
||||
"french-fried onion": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "хрустящий жареный лук",
|
||||
"plural_name": "хрустящий жареный лук"
|
||||
"name": "french-fried onion",
|
||||
"plural_name": "french-fried onions"
|
||||
},
|
||||
"daikon": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "дайкон",
|
||||
"plural_name": "дайкон"
|
||||
"name": "daikon",
|
||||
"plural_name": "daikons"
|
||||
},
|
||||
"baby corn": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "молодая кукуруза",
|
||||
"plural_name": "молодая кукуруза"
|
||||
"name": "baby corn",
|
||||
"plural_name": "baby corns"
|
||||
},
|
||||
"broccoli rabe": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "рапини",
|
||||
"plural_name": "рапини"
|
||||
"name": "broccoli rabe",
|
||||
"plural_name": "broccoli rabes"
|
||||
},
|
||||
"rutabaga": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "брюква",
|
||||
"plural_name": "брюква"
|
||||
"name": "rutabaga",
|
||||
"plural_name": "rutabagas"
|
||||
},
|
||||
"belgian endive": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "витлуф",
|
||||
"plural_name": "витлуф"
|
||||
"name": "belgian endive",
|
||||
"plural_name": "belgian endives"
|
||||
},
|
||||
"yam": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "ямс",
|
||||
"plural_name": "ямс"
|
||||
"name": "yam",
|
||||
"plural_name": "yams"
|
||||
},
|
||||
"ancho chile pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "перец анчо",
|
||||
"plural_name": "перец анчо"
|
||||
"name": "ancho chile pepper",
|
||||
"plural_name": "ancho chile peppers"
|
||||
},
|
||||
"microgreen": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "микрозелень",
|
||||
"plural_name": "микрозелень"
|
||||
"name": "microgreen",
|
||||
"plural_name": "microgreens"
|
||||
},
|
||||
"boston lettuce": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "салат Бостон",
|
||||
"plural_name": "салат Бостон"
|
||||
"name": "boston lettuce",
|
||||
"plural_name": "boston lettuces"
|
||||
},
|
||||
"kohlrabi": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "кольраби",
|
||||
"plural_name": "кольраби"
|
||||
"name": "kohlrabi",
|
||||
"plural_name": "kohlrabis"
|
||||
},
|
||||
"fresno chile": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "чили Фресно",
|
||||
"plural_name": "чили Фресно"
|
||||
"name": "fresno chile",
|
||||
"plural_name": "fresno chiles"
|
||||
},
|
||||
"delicata squash": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "деликатная тыква",
|
||||
"plural_name": "деликатная тыква"
|
||||
"name": "delicata squash",
|
||||
"plural_name": "delicata squashes"
|
||||
},
|
||||
"frisee": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "фрисе",
|
||||
"plural_name": "фрисе"
|
||||
"name": "frisee",
|
||||
"plural_name": "frisees"
|
||||
},
|
||||
"anaheim pepper": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "перец анахайм",
|
||||
"plural_name": "перец анахайм"
|
||||
"name": "anaheim pepper",
|
||||
"plural_name": "anaheim peppers"
|
||||
},
|
||||
"cres": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "кресс-салат",
|
||||
"plural_name": "кресс-салат"
|
||||
"name": "cres",
|
||||
"plural_name": "cress"
|
||||
},
|
||||
"broccoli slaw": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "брокколи слоу",
|
||||
"plural_name": "брокколи слоу"
|
||||
"name": "broccoli slaw",
|
||||
"plural_name": "broccoli slaws"
|
||||
},
|
||||
"arbol chile pepper": {
|
||||
"aliases": [],
|
||||
@@ -750,156 +750,156 @@
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "grapefruit",
|
||||
"plural_name": "грейпфрут"
|
||||
"plural_name": "grapefruits"
|
||||
},
|
||||
"plum": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "слива",
|
||||
"plural_name": "сливы"
|
||||
"name": "plum",
|
||||
"plural_name": "plums"
|
||||
},
|
||||
"fig": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "инжир",
|
||||
"plural_name": "инжир"
|
||||
"name": "fig",
|
||||
"plural_name": "figs"
|
||||
},
|
||||
"apricot": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "абрикос",
|
||||
"plural_name": "абрикосы"
|
||||
"name": "apricot",
|
||||
"plural_name": "apricots"
|
||||
},
|
||||
"currant": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "смородина",
|
||||
"plural_name": "смородина"
|
||||
"name": "currant",
|
||||
"plural_name": "currants"
|
||||
},
|
||||
"mandarin": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "мандарин",
|
||||
"plural_name": "мандарины"
|
||||
"name": "mandarin",
|
||||
"plural_name": "mandarins"
|
||||
},
|
||||
"prune": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "чернослив",
|
||||
"plural_name": "чернослив"
|
||||
"name": "prune",
|
||||
"plural_name": "prunes"
|
||||
},
|
||||
"cantaloupe": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "канталупа",
|
||||
"plural_name": "канталупа"
|
||||
"name": "cantaloupe",
|
||||
"plural_name": "cantaloupes"
|
||||
},
|
||||
"sultana": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "кишмиш Султанина",
|
||||
"plural_name": "кишмиш Султанина"
|
||||
"name": "sultana",
|
||||
"plural_name": "sultanas"
|
||||
},
|
||||
"passion fruit": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "маракуйя",
|
||||
"plural_name": "маракуйя"
|
||||
"name": "passion fruit",
|
||||
"plural_name": "passion fruits"
|
||||
},
|
||||
"papaya": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "папайя",
|
||||
"plural_name": "папайя"
|
||||
"name": "papaya",
|
||||
"plural_name": "papayas"
|
||||
},
|
||||
"tamarind": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "тамаринд",
|
||||
"plural_name": "тамаринд"
|
||||
"name": "tamarind",
|
||||
"plural_name": "tamarinds"
|
||||
},
|
||||
"nectarine": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "нектарин",
|
||||
"plural_name": "нектарины"
|
||||
"name": "nectarine",
|
||||
"plural_name": "nectarines"
|
||||
},
|
||||
"dried fig": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "сушёный инжир",
|
||||
"plural_name": "сушёный инжир"
|
||||
"name": "dried fig",
|
||||
"plural_name": "dried figs"
|
||||
},
|
||||
"chestnut": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "каштан",
|
||||
"plural_name": "каштаны"
|
||||
"name": "chestnut",
|
||||
"plural_name": "chestnuts"
|
||||
},
|
||||
"meyer lemon": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "мейер лимон",
|
||||
"plural_name": "мейер лимоны"
|
||||
"name": "meyer lemon",
|
||||
"plural_name": "meyer lemons"
|
||||
},
|
||||
"honeydew melon": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "медовая дыня",
|
||||
"plural_name": "медовые дыни"
|
||||
"name": "honeydew melon",
|
||||
"plural_name": "honeydew melons"
|
||||
},
|
||||
"dried fruit": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "сухофрукт",
|
||||
"plural_name": "сухофрукты"
|
||||
"name": "dried fruit",
|
||||
"plural_name": "dried fruits"
|
||||
},
|
||||
"clementine": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "клементин",
|
||||
"plural_name": "клементин"
|
||||
"name": "clementine",
|
||||
"plural_name": "clementines"
|
||||
},
|
||||
"persimmon": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "хурма персимон",
|
||||
"plural_name": "хурма персимон"
|
||||
"name": "persimmon",
|
||||
"plural_name": "persimmons"
|
||||
},
|
||||
"melon": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "дыня",
|
||||
"plural_name": "дыни"
|
||||
"name": "melon",
|
||||
"plural_name": "melons"
|
||||
},
|
||||
"tangerine": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "танжерин",
|
||||
"plural_name": "танжерины"
|
||||
"name": "tangerine",
|
||||
"plural_name": "tangerines"
|
||||
},
|
||||
"dried mango": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "сушёное манго",
|
||||
"plural_name": "сушёное манго"
|
||||
"name": "dried mango",
|
||||
"plural_name": "dried mangoes"
|
||||
},
|
||||
"dried apple": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "сушёное яблоко",
|
||||
"plural_name": "сушёные яблоки"
|
||||
"name": "dried apple",
|
||||
"plural_name": "dried apples"
|
||||
},
|
||||
"quince": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "айва",
|
||||
"plural_name": "айва"
|
||||
"name": "quince",
|
||||
"plural_name": "quinces"
|
||||
},
|
||||
"guava": {
|
||||
"aliases": [],
|
||||
"description": "",
|
||||
"name": "гуава",
|
||||
"name": "guava",
|
||||
"plural_name": "guavas"
|
||||
},
|
||||
"banana chip": {
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
import html
|
||||
import json
|
||||
import pathlib
|
||||
from dataclasses import dataclass
|
||||
from typing import Any
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
from fastapi import Depends, FastAPI, Response
|
||||
@@ -26,9 +24,6 @@ class MetaTag:
|
||||
property_name: str
|
||||
content: str
|
||||
|
||||
def __post_init__(self):
|
||||
self.content = escape(self.content) # escape HTML to prevent XSS attacks
|
||||
|
||||
|
||||
class SPAStaticFiles(StaticFiles):
|
||||
async def get_response(self, path: str, scope):
|
||||
@@ -47,17 +42,6 @@ __app_settings = get_app_settings()
|
||||
__contents = ""
|
||||
|
||||
|
||||
def escape(content: Any) -> Any:
|
||||
if isinstance(content, str):
|
||||
return html.escape(content)
|
||||
elif isinstance(content, list | tuple | set):
|
||||
return [escape(item) for item in content]
|
||||
elif isinstance(content, dict):
|
||||
return {escape(k): escape(v) for k, v in content.items()}
|
||||
else:
|
||||
return content
|
||||
|
||||
|
||||
def inject_meta(contents: str, tags: list[MetaTag]) -> str:
|
||||
soup = BeautifulSoup(contents, "lxml")
|
||||
scraped_meta_tags = soup.find_all("meta")
|
||||
@@ -96,13 +80,15 @@ def content_with_meta(group_slug: str, recipe: Recipe) -> str:
|
||||
# Inject meta tags
|
||||
recipe_url = f"{__app_settings.BASE_URL}/g/{group_slug}/r/{recipe.slug}"
|
||||
if recipe.image:
|
||||
image_url = f"{__app_settings.BASE_URL}/api/media/recipes/{recipe.id}/images/original.webp?version={escape(recipe.image)}"
|
||||
image_url = (
|
||||
f"{__app_settings.BASE_URL}/api/media/recipes/{recipe.id}/images/original.webp?version={recipe.image}"
|
||||
)
|
||||
else:
|
||||
image_url = "https://raw.githubusercontent.com/mealie-recipes/mealie/9571816ac4eed5beacfc0abf6c03eff1427fd0eb/frontend/static/icons/android-chrome-512x512.png"
|
||||
|
||||
ingredients: list[str] = []
|
||||
if recipe.settings.disable_amount: # type: ignore
|
||||
ingredients = [escape(i.note) for i in recipe.recipe_ingredient if i.note]
|
||||
ingredients = [i.note for i in recipe.recipe_ingredient if i.note]
|
||||
|
||||
else:
|
||||
for ing in recipe.recipe_ingredient:
|
||||
@@ -116,30 +102,25 @@ def content_with_meta(group_slug: str, recipe: Recipe) -> str:
|
||||
if ing.note:
|
||||
s += f"{ing.note}"
|
||||
|
||||
ingredients.append(escape(s))
|
||||
ingredients.append(s)
|
||||
|
||||
nutrition: dict[str, str | None] = recipe.nutrition.model_dump(by_alias=True) if recipe.nutrition else {}
|
||||
for k, v in nutrition.items():
|
||||
if v:
|
||||
nutrition[k] = escape(v)
|
||||
|
||||
as_schema_org: dict[str, Any] = {
|
||||
as_schema_org = {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Recipe",
|
||||
"name": escape(recipe.name),
|
||||
"description": escape(recipe.description),
|
||||
"name": recipe.name,
|
||||
"description": recipe.description,
|
||||
"image": [image_url],
|
||||
"datePublished": recipe.created_at,
|
||||
"prepTime": escape(recipe.prep_time),
|
||||
"cookTime": escape(recipe.cook_time),
|
||||
"totalTime": escape(recipe.total_time),
|
||||
"recipeYield": escape(recipe.recipe_yield_display),
|
||||
"prepTime": recipe.prep_time,
|
||||
"cookTime": recipe.cook_time,
|
||||
"totalTime": recipe.total_time,
|
||||
"recipeYield": recipe.recipe_yield_display,
|
||||
"recipeIngredient": ingredients,
|
||||
"recipeInstructions": [escape(i.text) for i in recipe.recipe_instructions]
|
||||
if recipe.recipe_instructions
|
||||
else [],
|
||||
"recipeCategory": [escape(c.name) for c in recipe.recipe_category] if recipe.recipe_category else [],
|
||||
"keywords": [escape(t.name) for t in recipe.tags] if recipe.tags else [],
|
||||
"recipeInstructions": [i.text for i in recipe.recipe_instructions] if recipe.recipe_instructions else [],
|
||||
"recipeCategory": [c.name for c in recipe.recipe_category] if recipe.recipe_category else [],
|
||||
"keywords": [t.name for t in recipe.tags] if recipe.tags else [],
|
||||
"nutrition": nutrition,
|
||||
}
|
||||
|
||||
|
||||
6
poetry.lock
generated
6
poetry.lock
generated
@@ -126,14 +126,14 @@ files = [
|
||||
|
||||
[[package]]
|
||||
name = "authlib"
|
||||
version = "1.6.1"
|
||||
version = "1.6.0"
|
||||
description = "The ultimate Python library in building OAuth and OpenID Connect servers and clients."
|
||||
optional = false
|
||||
python-versions = ">=3.9"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "authlib-1.6.1-py2.py3-none-any.whl", hash = "sha256:e9d2031c34c6309373ab845afc24168fe9e93dc52d252631f52642f21f5ed06e"},
|
||||
{file = "authlib-1.6.1.tar.gz", hash = "sha256:4dffdbb1460ba6ec8c17981a4c67af7d8af131231b5a36a88a1e8c80c111cdfd"},
|
||||
{file = "authlib-1.6.0-py2.py3-none-any.whl", hash = "sha256:91685589498f79e8655e8a8947431ad6288831d643f11c55c2143ffcc738048d"},
|
||||
{file = "authlib-1.6.0.tar.gz", hash = "sha256:4367d32031b7af175ad3a323d571dc7257b7099d55978087ceae4a0d88cd3210"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
|
||||
@@ -2,8 +2,7 @@ import pytest
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
from mealie.routes import spa
|
||||
from mealie.schema.recipe.recipe import Recipe, RecipeSettings
|
||||
from mealie.schema.recipe.recipe_notes import RecipeNote
|
||||
from mealie.schema.recipe.recipe import Recipe
|
||||
from mealie.schema.recipe.recipe_share_token import RecipeShareTokenSave
|
||||
from tests import data as test_data
|
||||
from tests.utils.factories import random_string
|
||||
@@ -190,28 +189,3 @@ async def test_spa_service_shared_recipe_with_meta_invalid_data(unique_user: Tes
|
||||
|
||||
response = await spa.serve_shared_recipe_with_meta(group.slug, random_string(), session=unique_user.repos.session)
|
||||
assert response.status_code == 404
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"malicious_content, malicious_strings",
|
||||
[
|
||||
("<script>alert('XSS');</script>", ["<script>", "alert('XSS')"]),
|
||||
("<img src=x onerror=alert('XSS')>", ["<img", "onerror=alert('XSS')"]),
|
||||
("<div onmouseover=alert('XSS')>Hover me</div>", ["<div", "onmouseover=alert('XSS')"]),
|
||||
("<a href='javascript:alert(\"XSS\")'>Click me</a>", ["<a", 'javascript:alert("XSS")']),
|
||||
],
|
||||
)
|
||||
def test_spa_escapes_malicious_recipe_data(unique_user: TestUser, malicious_content: str, malicious_strings: list[str]):
|
||||
recipe = Recipe(
|
||||
user_id=unique_user.user_id,
|
||||
group_id=unique_user.group_id,
|
||||
name=malicious_content,
|
||||
description=malicious_content,
|
||||
image=malicious_content,
|
||||
notes=[RecipeNote(title=malicious_content, text=malicious_content)],
|
||||
settings=RecipeSettings(),
|
||||
)
|
||||
|
||||
response = spa.content_with_meta(unique_user.group_id, recipe)
|
||||
for string in malicious_strings:
|
||||
assert string not in response
|
||||
|
||||
Reference in New Issue
Block a user