{{ item[title] }}
+
+ ({{ $t("plural_short") }}: {{ item[plural] }})
+
{{ item[subtitle] }}
{{ getFullname }}
@@ -71,7 +74,11 @@
@@ -146,12 +153,14 @@ export default {
item: { type: Object },
model: { type: Object },
title: { type: String, default: "name" }, // this and the following props need to be moved to model.js and made computed values
+ plural: { type: String, default: "plural_name" },
subtitle: { type: String, default: "description" },
child_count: { type: String, default: "numchild" },
children: { type: String, default: "children" },
recipe_count: { type: String, default: "numrecipe" },
recipes: { type: String, default: "recipes" },
show_context_menu: { type: Boolean, default: true },
+ use_plural: { type: Boolean, default: false},
},
data() {
return {
diff --git a/vue/src/components/IngredientComponent.vue b/vue/src/components/IngredientComponent.vue
index 3c531e77..cbb7c91b 100644
--- a/vue/src/components/IngredientComponent.vue
+++ b/vue/src/components/IngredientComponent.vue
@@ -16,14 +16,43 @@
v-html="calculateAmount(ingredient.amount)">
- {{ ingredient.unit.name }}
+
+
+ {{ ingredient.unit.name }}
+
+
+
+ {{ ingredient.unit.name }}
+
+
+ {{ ingredient.unit.plural_name}}
+ {{ ingredient.unit.plural_name }}
+ {{ ingredient.unit.name }}
+
+
+
|
{{ ingredient.food.name }}
- {{ ingredient.food.name }}
+ v-if="ingredient.food.recipe !== null" target="_blank"
+ rel="noopener noreferrer">{{ ingredient.food.name }}
+
+
+ {{ ingredient.food.name }}
+
+
+
+ {{ ingredient.food.name }}
+
+
+ {{ ingredient.food.plural_name }}
+ {{ ingredient.food.name }}
+ {{ ingredient.food.plural_name }}
+ {{ ingredient.food.name }}
+
+
+
|
@@ -55,6 +84,7 @@ export default {
props: {
ingredient: Object,
ingredient_factor: {type: Number, default: 1},
+ use_plural:{type: Boolean, default: false},
detailed: {type: Boolean, default: true},
},
mixins: [ResolveUrlMixin],
diff --git a/vue/src/components/IngredientsCard.vue b/vue/src/components/IngredientsCard.vue
index e8591e63..7c8e19e6 100644
--- a/vue/src/components/IngredientsCard.vue
+++ b/vue/src/components/IngredientsCard.vue
@@ -24,6 +24,7 @@
-
+
@@ -144,6 +144,7 @@ export default {
addshopping: false,
reviewshopping: false,
},
+ use_plural: false,
}
},
watch: {
@@ -171,7 +172,12 @@ export default {
this.entryEditing.servings = newVal
},
},
- mounted: function () {},
+ mounted: function () {
+ let apiClient = new ApiApiFactory()
+ apiClient.retrieveSpace(window.ACTIVE_SPACE_ID).then(r => {
+ this.use_plural = r.data.use_plural
+ })
+ },
computed: {
autoMealPlan: function () {
return getUserPreference("mealplan_autoadd_shopping")
diff --git a/vue/src/components/RecipeCard.vue b/vue/src/components/RecipeCard.vue
index b6cac11c..a40315e0 100755
--- a/vue/src/components/RecipeCard.vue
+++ b/vue/src/components/RecipeCard.vue
@@ -75,11 +75,15 @@
{{ $t("Ingredients") }}
-
-
-
-
+
+
+
+
{{ $t("External") }}
@@ -121,6 +125,7 @@ export default {
props: {
recipe: Object,
meal_plan: Object,
+ use_plural: { type: Boolean, default: false},
footer_text: String,
footer_icon: String,
detailed: {type: Boolean, default: true},
diff --git a/vue/src/locales/ar.json b/vue/src/locales/ar.json
index fad8684f..98cd23aa 100644
--- a/vue/src/locales/ar.json
+++ b/vue/src/locales/ar.json
@@ -425,5 +425,12 @@
"New_Supermarket": "",
"New_Supermarket_Category": "",
"Are_You_Sure": "",
- "Valid Until": ""
+ "Valid Until": "",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/bg.json b/vue/src/locales/bg.json
index 57936a52..65ed30b4 100644
--- a/vue/src/locales/bg.json
+++ b/vue/src/locales/bg.json
@@ -410,5 +410,12 @@
"Warning_Delete_Supermarket_Category": "Изтриването на категория супермаркет ще изтрие и всички връзки с храни. Сигурен ли си?",
"New_Supermarket": "Създайте нов супермаркет",
"New_Supermarket_Category": "Създаване на нова категория супермаркет",
- "Are_You_Sure": "Сигурен ли си?"
+ "Are_You_Sure": "Сигурен ли си?",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/da.json b/vue/src/locales/da.json
index 098b39f2..9aec5dea 100644
--- a/vue/src/locales/da.json
+++ b/vue/src/locales/da.json
@@ -458,5 +458,12 @@
"Days": "Dage",
"Message": "Besked",
"Sticky_Nav": "Fastlåst navigation",
- "reset_food_inheritance": "Nulstil nedarvning"
+ "reset_food_inheritance": "Nulstil nedarvning",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/de.json b/vue/src/locales/de.json
index b5f4d5d0..a93bef65 100644
--- a/vue/src/locales/de.json
+++ b/vue/src/locales/de.json
@@ -460,5 +460,12 @@
"Comments_setting": "Kommentare anzeigen",
"reset_food_inheritance": "Vererbung zurücksetzen",
"food_inherit_info": "Datenfelder des Lebensmittels, die standardmäßig vererbt werden sollen.",
- "Are_You_Sure": "Bist du dir sicher?"
+ "Are_You_Sure": "Bist du dir sicher?",
+ "Plural": "Plural",
+ "plural_short": "pl.",
+ "Use_Plural_Unit_Always": "Pluralform der Maßeinheit immer verwenden",
+ "Use_Plural_Unit_Simple": "Pluralform der Maßeinheit dynamisch anpassen",
+ "Use_Plural_Food_Always": "Pluralform des Essens immer verwenden",
+ "Use_Plural_Food_Simple": "Pluralform des Essens dynamisch anpassen",
+ "plural_usage_info": "Pluralform für Einheiten und Essen in diesem Space verwenden."
}
diff --git a/vue/src/locales/en.json b/vue/src/locales/en.json
index 9214740e..4eca3dda 100644
--- a/vue/src/locales/en.json
+++ b/vue/src/locales/en.json
@@ -459,5 +459,12 @@
"New_Supermarket": "Create new supermarket",
"New_Supermarket_Category": "Create new supermarket category",
"Are_You_Sure": "Are you sure?",
- "Valid Until": "Valid Until"
+ "Valid Until": "Valid Until",
+ "Plural": "Plural",
+ "plural_short": "plural",
+ "Use_Plural_Unit_Always": "Use plural form for unit always",
+ "Use_Plural_Unit_Simple": "Use plural form for unit dynamically",
+ "Use_Plural_Food_Always": "Use plural form for food always",
+ "Use_Plural_Food_Simple": "Use plural form for food dynamically",
+ "plural_usage_info": "Use the plural form for units and food inside this space."
}
diff --git a/vue/src/locales/es.json b/vue/src/locales/es.json
index cedf9002..5e8fc8ed 100644
--- a/vue/src/locales/es.json
+++ b/vue/src/locales/es.json
@@ -436,5 +436,12 @@
"Default_Unit": "Unidad Predeterminada",
"Language": "Lenguaje",
"Hour": "Hora",
- "Username": "Nombre de Usuario"
+ "Username": "Nombre de Usuario",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/fi.json b/vue/src/locales/fi.json
index 6c51c4c3..0f24fce8 100644
--- a/vue/src/locales/fi.json
+++ b/vue/src/locales/fi.json
@@ -212,5 +212,12 @@
"success_moving_resource": "Resurssin siirto onnistui!",
"success_merging_resource": "Resurssin yhdistäminen onnistui!",
"Search Settings": "Hakuasetukset",
- "Shopping_Categories": "Ostoskategoriat"
+ "Shopping_Categories": "Ostoskategoriat",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/fr.json b/vue/src/locales/fr.json
index 76d20390..062cde01 100644
--- a/vue/src/locales/fr.json
+++ b/vue/src/locales/fr.json
@@ -402,5 +402,12 @@
"Comments_setting": "Montrer les commentaires",
"import_duplicates": "Pour éviter les doublons, les recettes de même nom seront ignorées. Cocher la case pour tout importer.",
"Account": "Compte",
- "Change_Password": "Modifier le mot de passe"
+ "Change_Password": "Modifier le mot de passe",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/hu.json b/vue/src/locales/hu.json
index 827043b7..ae527f44 100644
--- a/vue/src/locales/hu.json
+++ b/vue/src/locales/hu.json
@@ -412,5 +412,12 @@
"Warning_Delete_Supermarket_Category": "",
"New_Supermarket": "",
"New_Supermarket_Category": "",
- "Are_You_Sure": ""
+ "Are_You_Sure": "",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/hy.json b/vue/src/locales/hy.json
index 5e9ba241..2ff2fdb4 100644
--- a/vue/src/locales/hy.json
+++ b/vue/src/locales/hy.json
@@ -122,5 +122,12 @@
"Save_and_View": "Պահպանել և Դիտել",
"Select_File": "Ընտրել Ֆայլ",
"Edit_Keyword": "Խմբագրել բանալի բառը",
- "Hide_Recipes": "Թաքցնել բաղադրատոմսերը"
+ "Hide_Recipes": "Թաքցնել բաղադրատոմսերը",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/it.json b/vue/src/locales/it.json
index 4983f01f..995e39e2 100644
--- a/vue/src/locales/it.json
+++ b/vue/src/locales/it.json
@@ -346,5 +346,12 @@
"csv_delim_help": "Delimitatore usato per le esportazioni CSV.",
"csv_prefix_label": "Prefisso lista",
"not": "not",
- "Keyword": "Parola chiave"
+ "Keyword": "Parola chiave",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/nl.json b/vue/src/locales/nl.json
index 72ea63c0..bbfa6d1e 100644
--- a/vue/src/locales/nl.json
+++ b/vue/src/locales/nl.json
@@ -461,5 +461,12 @@
"Valid Until": "Geldig tot",
"warning_space_delete": "Je kunt jouw space verwijderen inclusief alle recepten, boodschappenlijstjes, maaltijdplannen en alles wat je verder aangemaakt hebt. Dit kan niet ongedaan worden gemaakt! Weet je het zeker?",
"food_inherit_info": "Voedselvelden die standaard geërfd worden.",
- "facet_count_info": "Geef receptenaantal bij zoekfilters weer."
+ "facet_count_info": "Geef receptenaantal bij zoekfilters weer.",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/pl.json b/vue/src/locales/pl.json
index 4c5b4eb2..3a3d3a19 100644
--- a/vue/src/locales/pl.json
+++ b/vue/src/locales/pl.json
@@ -460,5 +460,12 @@
"First_name": "Imię",
"Last_name": "Nazwisko",
"Disabled": "Wyłączone",
- "Disable": "Wyłączyć"
+ "Disable": "Wyłączyć",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/pt.json b/vue/src/locales/pt.json
index 4b688703..c745cb56 100644
--- a/vue/src/locales/pt.json
+++ b/vue/src/locales/pt.json
@@ -382,5 +382,12 @@
"err_deleting_protected_resource": "O objeto que você está tentando deletar ainda está sendo utilizado, portanto não pode ser deletado.",
"food_inherit_info": "Campos no alimento que devem ser herdados por padrão.",
"warning_space_delete": "Você pode deletar seu espaço, inclusive todas as receitas, listas de mercado, planos de comida e tudo mais que você criou. Esta ação não poderá ser desfeita! Você tem certeza que quer fazer isto?",
- "facet_count_info": "Mostrar quantidade de receitas nos filtros de busca."
+ "facet_count_info": "Mostrar quantidade de receitas nos filtros de busca.",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/pt_BR.json b/vue/src/locales/pt_BR.json
index ee03bd9c..84ed9351 100644
--- a/vue/src/locales/pt_BR.json
+++ b/vue/src/locales/pt_BR.json
@@ -387,5 +387,12 @@
"Copy Token": "Copiar Token",
"warning_space_delete": "Você pode deletar seu espaço, inclusive todas as receitas, listas de mercado, planos de comida e tudo mais que você criou. Esta ação não poderá ser desfeita! Você tem certeza que quer fazer isto?",
"food_inherit_info": "Campos no alimento que devem ser herdados por padrão.",
- "facet_count_info": "Mostrar quantidade de receitas nos filtros de busca."
+ "facet_count_info": "Mostrar quantidade de receitas nos filtros de busca.",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/ro.json b/vue/src/locales/ro.json
index 0ecea146..9c2cc6ab 100644
--- a/vue/src/locales/ro.json
+++ b/vue/src/locales/ro.json
@@ -206,5 +206,12 @@
"Auto_Planner": "",
"New_Cookbook": "",
"Hide_Keyword": "",
- "Clear": ""
+ "Clear": "",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/ru.json b/vue/src/locales/ru.json
index 220bb26b..f4bb9baf 100644
--- a/vue/src/locales/ru.json
+++ b/vue/src/locales/ru.json
@@ -342,5 +342,12 @@
"IgnoreThis": "Никогда не добавлять {food} в список покупок автоматически",
"DelayFor": "Отложить на {hours} часов",
"New_Entry": "Новая запись",
- "GroupBy": "Сгруппировать по"
+ "GroupBy": "Сгруппировать по",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/sl.json b/vue/src/locales/sl.json
index f03fe2f3..e27a7474 100644
--- a/vue/src/locales/sl.json
+++ b/vue/src/locales/sl.json
@@ -284,5 +284,12 @@
"sql_debug": "SQL razhroščevanje",
"remember_search": "Zapomni si iskanje",
"remember_hours": "Ure, ki si jih zapomni",
- "tree_select": "Uporabi drevesno označbo"
+ "tree_select": "Uporabi drevesno označbo",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/sv.json b/vue/src/locales/sv.json
index 92e56674..25c4c7e4 100644
--- a/vue/src/locales/sv.json
+++ b/vue/src/locales/sv.json
@@ -380,5 +380,12 @@
"create_food_desc": "Skapa ett livsmedel och länka det till det här receptet.",
"additional_options": "Ytterligare alternativ",
"remember_hours": "Timmar att komma ihåg",
- "tree_select": "Använd trädval"
+ "tree_select": "Använd trädval",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/uk.json b/vue/src/locales/uk.json
index 827043b7..ae527f44 100644
--- a/vue/src/locales/uk.json
+++ b/vue/src/locales/uk.json
@@ -412,5 +412,12 @@
"Warning_Delete_Supermarket_Category": "",
"New_Supermarket": "",
"New_Supermarket_Category": "",
- "Are_You_Sure": ""
+ "Are_You_Sure": "",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/zh_Hans.json b/vue/src/locales/zh_Hans.json
index 5a57b5b8..a20a8413 100644
--- a/vue/src/locales/zh_Hans.json
+++ b/vue/src/locales/zh_Hans.json
@@ -459,5 +459,12 @@
"reset_children_help": "用继承字段中的值覆盖所有子项。 继承的子字段将设置为继承,除非它们已设置为继承。",
"substitute_siblings": "代替品",
"book_filter_help": "除手动选择的食谱外,还包括筛选中的食谱。",
- "Internal": "内部"
+ "Internal": "内部",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/locales/zh_Hant.json b/vue/src/locales/zh_Hant.json
index 6c9cb4a4..cda8efe3 100644
--- a/vue/src/locales/zh_Hant.json
+++ b/vue/src/locales/zh_Hant.json
@@ -77,5 +77,12 @@
"and": "",
"Information": "",
"Download": "",
- "Create": ""
+ "Create": "",
+ "Plural": "",
+ "plural_short": "",
+ "Use_Plural_Unit_Always": "",
+ "Use_Plural_Unit_Simple": "",
+ "Use_Plural_Food_Always": "",
+ "Use_Plural_Food_Simple": "",
+ "plural_usage_info": ""
}
diff --git a/vue/src/utils/models.js b/vue/src/utils/models.js
index 9c066650..1a81ae5e 100644
--- a/vue/src/utils/models.js
+++ b/vue/src/utils/models.js
@@ -78,6 +78,7 @@ export class Models {
params: [
[
"name",
+ "plural_name",
"description",
"recipe",
"food_onhand",
@@ -103,6 +104,13 @@ export class Models {
placeholder: "", // form.placeholder always translated
subtitle_field: "full_name",
},
+ plural_name: {
+ form_field: true,
+ type: "text",
+ field: "plural_name",
+ label: "Plural",
+ placeholder: "",
+ },
description: {
form_field: true,
type: "text",
@@ -261,7 +269,7 @@ export class Models {
apiName: "Unit",
paginated: true,
create: {
- params: [["name", "description"]],
+ params: [["name", "plural_name", "description",]],
form: {
name: {
form_field: true,
@@ -270,6 +278,13 @@ export class Models {
label: "Name",
placeholder: "",
},
+ plural_name: {
+ form_field: true,
+ type: "text",
+ field: "plural_name",
+ label: "Plural name",
+ placeholder: "",
+ },
description: {
form_field: true,
type: "text",
|