diff --git a/cookbook/templatetags/theming_tags.py b/cookbook/templatetags/theming_tags.py
index d3febbbc..ec35b2f0 100644
--- a/cookbook/templatetags/theming_tags.py
+++ b/cookbook/templatetags/theming_tags.py
@@ -1,7 +1,8 @@
from django import template
from django.templatetags.static import static
+from django_scopes import scopes_disabled
-from cookbook.models import UserPreference
+from cookbook.models import UserPreference, UserFile, Space
from recipes.settings import STICKY_NAV_PREF_DEFAULT
register = template.Library()
@@ -19,35 +20,58 @@ def theme_url(request):
UserPreference.TANDOOR: 'themes/tandoor.min.css',
UserPreference.TANDOOR_DARK: 'themes/tandoor_dark.min.css',
}
- if request.user.userpreference.theme in themes:
- return static(themes[request.user.userpreference.theme])
+ # if request.space.custom_space_theme:
+ # return request.space.custom_space_theme.file.url
+
+ if request.space.space_theme in themes:
+ return static(themes[request.space.space_theme])
else:
- raise AttributeError
+ if request.user.userpreference.theme in themes:
+ return static(themes[request.user.userpreference.theme])
+ else:
+ raise AttributeError
+
+
+@register.simple_tag
+def custom_theme(request):
+ if request.user.is_authenticated and request.space.custom_space_theme:
+ return request.space.custom_space_theme.file.url
@register.simple_tag
def logo_url(request):
- if request.user.is_authenticated and getattr(getattr(request, "space", {}), 'image', None):
- return request.space.image.file.url
+ if request.user.is_authenticated and getattr(getattr(request, "space", {}), 'nav_logo', None):
+ return request.space.nav_logo.file.url
else:
return static('assets/brand_logo.png')
@register.simple_tag
-def nav_color(request):
+def nav_bg_color(request):
if not request.user.is_authenticated:
- return 'navbar-light bg-primary'
-
- if request.user.userpreference.nav_color.lower() in ['light', 'warning', 'info', 'success']:
- return f'navbar-light bg-{request.user.userpreference.nav_color.lower()}'
+ return '#ddbf86'
else:
- return f'navbar-dark bg-{request.user.userpreference.nav_color.lower()}'
+ if request.space.nav_bg_color:
+ return request.space.nav_bg_color
+ else:
+ return request.user.userpreference.nav_bg_color
+
+
+@register.simple_tag
+def nav_text_color(request):
+ type_mapping = {Space.DARK: 'navbar-light', Space.LIGHT: 'navbar-dark'} # inverted since navbar-dark means the background
+ if not request.user.is_authenticated:
+ return 'navbar-dark'
+ else:
+ if request.space.nav_text_color != Space.BLANK:
+ return type_mapping[request.space.nav_text_color]
+ else:
+ return type_mapping[request.user.userpreference.nav_text_color]
@register.simple_tag
def sticky_nav(request):
- if (not request.user.is_authenticated and STICKY_NAV_PREF_DEFAULT) or \
- (request.user.is_authenticated and request.user.userpreference.sticky_navbar): # noqa: E501
+ if (not request.user.is_authenticated and STICKY_NAV_PREF_DEFAULT) or (request.user.is_authenticated and request.user.userpreference.nav_sticky):
return 'position: sticky; top: 0; left: 0; z-index: 1000;'
else:
return ''
diff --git a/cookbook/views/api.py b/cookbook/views/api.py
index 0222fff8..8a6b19d8 100644
--- a/cookbook/views/api.py
+++ b/cookbook/views/api.py
@@ -738,7 +738,7 @@ class AutoPlanViewSet(viewsets.ViewSet):
serializer = AutoMealPlanSerializer(data=request.data)
if serializer.is_valid():
- keywords = serializer.validated_data['keywords']
+ keyword_ids = serializer.validated_data['keyword_ids']
start_date = serializer.validated_data['start_date']
end_date = serializer.validated_data['end_date']
servings = serializer.validated_data['servings']
@@ -753,8 +753,8 @@ class AutoPlanViewSet(viewsets.ViewSet):
recipes = Recipe.objects.values('id', 'name')
meal_plans = list()
- for keyword in keywords:
- recipes = recipes.filter(keywords__name=keyword['name'])
+ for keyword_id in keyword_ids:
+ recipes = recipes.filter(keywords__id=keyword_id)
if len(recipes) == 0:
return Response(serializer.data)
diff --git a/docs/install/truenas_portainer.md b/docs/install/truenas_portainer.md
index 03b288fd..7be57bf2 100644
--- a/docs/install/truenas_portainer.md
+++ b/docs/install/truenas_portainer.md
@@ -71,12 +71,13 @@ Basic guide to setup Docker and Portainer TrueNAS Core.
-Select "Get Started" to use the Enviroment Portainer is running in

-### 3. Install Tandoor Recipies VIA Portainer Web Editor
+### 3. Install Tandoor Recipes VIA Portainer Web Editor
-From the menu select Stacks, click Add stack, give the stack a descriptive name then select Web editor.

-Use the below code and input it into the Web Editor:
-`version: "3"
+```yaml
+version: "3"
services:
db_recipes:
restart: always
@@ -87,13 +88,12 @@ services:
- stack.env
web_recipes:
-# image: vabene1111/recipes:latest
- image: vabene1111/recipes:beta
+ image: vabene1111/recipes:latest
env_file:
- stack.env
volumes:
- staticfiles:/opt/recipes/staticfiles
- # Do not make this a bind mount, see https://docs.tandoor.dev/install/docker/#volumes-vs-bind-mounts
+ # Do not make this a bind mount, see https://docs.tandoor.dev/install/docker/#volumes-vs-bind-mounts
- nginx_config:/opt/recipes/nginx/conf.d
- ./mediafiles:/opt/recipes/mediafiles
depends_on:
@@ -116,7 +116,8 @@ services:
volumes:
nginx_config:
- staticfiles:`
+ staticfiles:
+```
-Download the .env template from [HERE](https://raw.githubusercontent.com/vabene1111/recipes/develop/.env.template) and load this file by pressing the "Load Variables from .env File" button:

diff --git a/vue/src/apps/RecipeEditView/RecipeEditView.vue b/vue/src/apps/RecipeEditView/RecipeEditView.vue
index 2649c037..7fd5dbe7 100644
--- a/vue/src/apps/RecipeEditView/RecipeEditView.vue
+++ b/vue/src/apps/RecipeEditView/RecipeEditView.vue
@@ -506,7 +506,6 @@
-
-
+
+
{{ $t('Recipes') }}
@@ -32,13 +32,13 @@
-
-
+
+
-
-
+
+
-
{{ $t('Users') }}
+
{{ $t('Users') }}
@@ -51,14 +51,14 @@
{{ us.user.display_name }} |
|
@@ -67,12 +67,12 @@
|
-
-
+
+
-
-
+
+
{{ $t('Invites') }}
{{ $t('Create') }}
-
-
+
+
-
-
-
{{ $t('Settings') }}
+
+
+ {{ $t('Cosmetic') }}
+ {{ $t('Space_Cosmetic_Settings') }}
-
-
+
+
+
-
-
-
+
+
+
-
-
-
- {{ $t('food_inherit_info') }}
+
+
+ ----
+ Tandoor
+ Tandoor Dark (Beta)
+ Bootstrap
+ Darkly
+ Flatly
+ Superhero
+
+
- {{ $t('Update') }}
- {{ $t('reset_food_inheritance') }}
- {{ $t('reset_food_inheritance_info') }}
-
-
-
-
+
+
+
+
+
+
+
+
+
+ {{ $t('Reset') }}
+
+
+
+
+
+
+ ----
+ Light
+ Dark
+
+
+
+ {{ $t('Update') }}
+
+
+
+
+
+ {{ $t('Settings') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('Update') }}
+ {{ $t('reset_food_inheritance') }}
+
+
+
+
+
+
+
+
{{ $t('Open_Data_Import') }}
-
+
-
+
diff --git a/vue/src/components/AutoMealPlanModal.vue b/vue/src/components/AutoMealPlanModal.vue
index 5428fdfe..3138c14e 100644
--- a/vue/src/components/AutoMealPlanModal.vue
+++ b/vue/src/components/AutoMealPlanModal.vue
@@ -227,11 +227,18 @@ export default {
async autoPlanThread(autoPlan, mealTypeIndex) {
let apiClient = new ApiApiFactory()
+
+ let keyword_ids = []
+ for (const index in autoPlan.keywords[mealTypeIndex]){
+ let keyword = autoPlan.keywords[mealTypeIndex][index]
+ keyword_ids.push(keyword.id)
+ }
+
let data = {
"start_date": moment(autoPlan.startDay).format("YYYY-MM-DD"),
"end_date": moment(autoPlan.endDay).format("YYYY-MM-DD"),
"meal_type_id": autoPlan.meal_types[mealTypeIndex].id,
- "keywords": autoPlan.keywords[mealTypeIndex],
+ "keyword_ids": keyword_ids,
"servings": autoPlan.servings,
"shared": autoPlan.shared,
"addshopping": autoPlan.addshopping
diff --git a/vue/src/components/Settings/CosmeticSettingsComponent.vue b/vue/src/components/Settings/CosmeticSettingsComponent.vue
index 01bc1c7d..b3786654 100644
--- a/vue/src/components/Settings/CosmeticSettingsComponent.vue
+++ b/vue/src/components/Settings/CosmeticSettingsComponent.vue
@@ -49,34 +49,47 @@
+
+ {{ $t('Space_Cosmetic_Settings') }}
+
Tandoor
+ Tandoor Dark (Beta)
Bootstrap
Darkly
Flatly
Superhero
- Tandoor Dark (INCOMPLETE)
-
-
- {{ $t('Sticky_Nav') }}
-
-
+
-
- Primary
- Secondary
- Success
- Info
- Warning
- Danger
+
+
+
+ {{ $t('Reset') }}
+
+
+
+
+
+
Light
Dark
+
+
+
+ {{ $t('Show_Logo') }}
+
+
+
+
+
+ {{ $t('Sticky_Nav') }}
+
diff --git a/vue/src/locales/de.json b/vue/src/locales/de.json
index 0311ecdf..6bdea528 100644
--- a/vue/src/locales/de.json
+++ b/vue/src/locales/de.json
@@ -535,5 +535,6 @@
"Never_Unit": "Nie Einheit",
"Unit_Replace": "Einheit Ersetzen",
"quart": "\"Quart\" [qt] (US, Volumen)",
- "imperial_quart": "Engl. \"Quart\" [imp qt] (UK, Volumen)"
+ "imperial_quart": "Engl. \"Quart\" [imp qt] (UK, Volumen)",
+ "err_importing_recipe": "Beim Importieren des Rezeptes ist ein Fehler aufgetreten!"
}
diff --git a/vue/src/locales/en.json b/vue/src/locales/en.json
index 39cb6b64..56e03a63 100644
--- a/vue/src/locales/en.json
+++ b/vue/src/locales/en.json
@@ -1,552 +1,561 @@
{
- "warning_feature_beta": "This feature is currently in a BETA (testing) state. Please expect bugs and possibly breaking changes in the future (possibly losing feature-related data) when using this feature.",
- "err_fetching_resource": "There was an error fetching a resource!",
- "err_creating_resource": "There was an error creating a resource!",
- "err_updating_resource": "There was an error updating a resource!",
- "err_deleting_resource": "There was an error deleting a resource!",
- "err_deleting_protected_resource": "The object you are trying to delete is still used and can't be deleted.",
- "err_moving_resource": "There was an error moving a resource!",
- "err_merging_resource": "There was an error merging a resource!",
- "err_importing_recipe": "There was an error importing the recipe!",
- "success_fetching_resource": "Successfully fetched a resource!",
- "success_creating_resource": "Successfully created a resource!",
- "success_updating_resource": "Successfully updated a resource!",
- "success_deleting_resource": "Successfully deleted a resource!",
- "success_moving_resource": "Successfully moved a resource!",
- "success_merging_resource": "Successfully merged a resource!",
- "file_upload_disabled": "File upload is not enabled for your space.",
- "recipe_property_info": "You can also add properties to foods to calculate them automatically based on your recipe!",
- "warning_space_delete": "You can delete your space including all recipes, shopping lists, meal plans and whatever else you have created. This cannot be undone! Are you sure you want to do this ?",
- "food_inherit_info": "Fields on food that should be inherited by default.",
- "step_time_minutes": "Step time in minutes",
- "confirm_delete": "Are you sure you want to delete this {object}?",
- "import_running": "Import running, please wait!",
- "all_fields_optional": "All fields are optional and can be left empty.",
- "convert_internal": "Convert to internal recipe",
- "show_only_internal": "Show only internal recipes",
- "show_split_screen": "Split View",
- "Log_Recipe_Cooking": "Log Recipe Cooking",
- "External_Recipe_Image": "External Recipe Image",
- "Add_to_Shopping": "Add to Shopping",
- "Add_to_Plan": "Add to Plan",
- "Step_start_time": "Step start time",
- "Sort_by_new": "Sort by new",
- "Table_of_Contents": "Table of Contents",
- "Recipes_per_page": "Recipes per Page",
- "Show_as_header": "Show as header",
- "Hide_as_header": "Hide as header",
- "Add_nutrition_recipe": "Add nutrition to recipe",
- "Remove_nutrition_recipe": "Delete nutrition from recipe",
- "Copy_template_reference": "Copy template reference",
- "per_serving": "per servings",
- "Save_and_View": "Save & View",
- "Manage_Books": "Manage Books",
- "Meal_Plan": "Meal Plan",
- "Select_Book": "Select Book",
- "Select_File": "Select File",
- "Recipe_Image": "Recipe Image",
- "Import_finished": "Import finished",
- "View_Recipes": "View Recipes",
- "Log_Cooking": "Log Cooking",
- "New_Recipe": "New Recipe",
- "Url_Import": "Url Import",
- "Reset_Search": "Reset Search",
- "Recently_Viewed": "Recently Viewed",
- "Load_More": "Load More",
- "New_Keyword": "New Keyword",
- "Delete_Keyword": "Delete Keyword",
- "Edit_Keyword": "Edit Keyword",
- "Edit_Recipe": "Edit Recipe",
- "Move_Keyword": "Move Keyword",
- "Merge_Keyword": "Merge Keyword",
- "Hide_Keywords": "Hide Keyword",
- "Hide_Recipes": "Hide Recipes",
- "Move_Up": "Move up",
- "Move_Down": "Move down",
- "Step_Name": "Step Name",
- "Step_Type": "Step Type",
- "Make_Header": "Make Header",
- "Make_Ingredient": "Make Ingredient",
- "Amount": "Amount",
- "Enable_Amount": "Enable Amount",
- "Disable_Amount": "Disable Amount",
- "Ingredient Editor": "Ingredient Editor",
- "Description_Replace": "Description Replace",
- "Instruction_Replace": "Instruction Replace",
- "Auto_Sort": "Auto Sort",
- "Auto_Sort_Help": "Move all ingredients to the best fitting step.",
- "Private_Recipe": "Private Recipe",
- "Private_Recipe_Help": "Recipe is only shown to you and people its shared with.",
- "reusable_help_text": "Should the invite link be usable for more than one user.",
- "open_data_help_text": "The Tandoor Open Data project provides community contributed data for Tandoor. This field is filled automatically when importing it and allows updates in the future.",
- "Open_Data_Slug": "Open Data Slug",
- "Open_Data_Import": "Open Data Import",
- "Properties_Food_Amount": "Properties Food Amount",
- "Properties_Food_Unit": "Properties Food Unit",
- "FDC_ID": "FDC ID",
- "FDC_Search": "FDC Search",
- "FDC_ID_help": "FDC database ID",
- "property_type_fdc_hint": "Only property types with an FDC ID can automatically pull data from the FDC database",
- "Data_Import_Info": "Enhance your Space by importing a community curated list of foods, units and more to improve your recipe collection.",
- "Update_Existing_Data": "Update Existing Data",
- "Use_Metric": "Use Metric Units",
- "Learn_More": "Learn More",
- "converted_unit": "Converted Unit",
- "converted_amount": "Converted Amount",
- "base_unit": "Base Unit",
- "base_amount": "Base Amount",
- "Datatype": "Datatype",
- "Number of Objects": "Number of Objects",
- "Add_Step": "Add Step",
- "Keywords": "Keywords",
- "Books": "Books",
- "Proteins": "Proteins",
- "Fats": "Fats",
- "Carbohydrates": "Carbohydrates",
- "Calories": "Calories",
- "Energy": "Energy",
- "Nutrition": "Nutrition",
- "Date": "Date",
- "StartDate": "Start Date",
- "EndDate": "End Date",
- "Share": "Share",
- "Automation": "Automation",
- "Parameter": "Parameter",
- "Export": "Export",
- "Copy": "Copy",
- "Rating": "Rating",
- "Close": "Close",
- "Cancel": "Cancel",
- "Link": "Link",
- "Add": "Add",
- "New": "New",
- "Note": "Note",
- "Alignment": "Alignment",
- "Success": "Success",
- "Failure": "Failure",
- "Protected": "Protected",
- "Ingredients": "Ingredients",
- "Supermarket": "Supermarket",
- "Categories": "Categories",
- "Category": "Category",
- "Selected": "Selected",
- "min": "min",
- "Servings": "Servings",
- "Waiting": "Waiting",
- "Preparation": "Preparation",
- "External": "External",
- "Size": "Size",
- "Files": "Files",
- "File": "File",
- "Edit": "Edit",
- "Image": "Image",
- "Delete": "Delete",
- "Open": "Open",
- "Ok": "Ok",
- "Save": "Save",
- "Step": "Step",
- "Search": "Search",
- "Import": "Import",
- "Print": "Print",
- "Settings": "Settings",
- "or": "or",
- "and": "and",
- "Information": "Information",
- "Download": "Download",
- "Create": "Create",
- "Search Settings": "Search Settings",
- "View": "View",
- "Recipes": "Recipes",
- "Welcome": "Welcome",
- "Move": "Move",
- "Merge": "Merge",
- "Parent": "Parent",
- "Copy Link": "Copy Link",
- "Copy Token": "Copy Token",
- "delete_confirmation": "Are you sure that you want to delete {source}?",
- "move_confirmation": "Move {child} to parent {parent}",
- "merge_confirmation": "Replace {source} with {target}",
- "create_rule": "and create automation",
- "move_selection": "Select a parent {type} to move {source} to.",
- "merge_selection": "Replace all occurrences of {source} with the selected {type}.",
- "Root": "Root",
- "Ignore_Shopping": "Ignore Shopping",
- "Shopping_Category": "Shopping Category",
- "Shopping_Categories": "Shopping Categories",
- "Edit_Food": "Edit Food",
- "Move_Food": "Move Food",
- "New_Food": "New Food",
- "Hide_Food": "Hide Food",
- "Food_Alias": "Food Alias",
- "Unit_Alias": "Unit Alias",
- "Keyword_Alias": "Keyword Alias",
- "Delete_Food": "Delete Food",
- "Delete_All": "Delete All",
- "No_ID": "ID not found, cannot delete.",
- "Meal_Plan_Days": "Future meal plans",
- "merge_title": "Merge {type}",
- "move_title": "Move {type}",
- "Food": "Food",
- "Property": "Property",
- "Property_Editor": "Property Editor",
- "Conversion": "Conversion",
- "Original_Text": "Original Text",
- "Recipe_Book": "Recipe Book",
- "del_confirmation_tree": "Are you sure that you want to delete {source} and all of it's children?",
- "delete_title": "Delete {type}",
- "create_title": "New {type}",
- "edit_title": "Edit {type}",
- "Name": "Name",
- "Properties": "Properties",
- "Type": "Type",
- "Description": "Description",
- "Recipe": "Recipe",
- "tree_root": "Root of Tree",
- "Icon": "Icon",
- "Unit": "Unit",
- "Decimals": "Decimals",
- "Default_Unit": "Default Unit",
- "No_Results": "No Results",
- "New_Unit": "New Unit",
- "Create_New_Shopping Category": "Create New Shopping Category",
- "Create_New_Food": "Add New Food",
- "Create_New_Keyword": "Add New Keyword",
- "Create_New_Unit": "Add New Unit",
- "Create_New_Meal_Type": "Add New Meal Type",
- "Create_New_Shopping_Category": "Add New Shopping Category",
- "and_up": "& Up",
- "and_down": "& Down",
- "Instructions": "Instructions",
- "Unrated": "Unrated",
- "Automate": "Automate",
- "Empty": "Empty",
- "Key_Ctrl": "Ctrl",
- "Key_Shift": "Shift",
- "Time": "Time",
- "Text": "Text",
- "Shopping_list": "Shopping List",
- "Added_by": "Added By",
- "Added_on": "Added On",
- "AddToShopping": "Add to shopping list",
- "IngredientInShopping": "This ingredient is in your shopping list.",
- "NotInShopping": "{food} is not in your shopping list.",
- "OnHand": "Currently On Hand",
- "FoodOnHand": "You have {food} on hand.",
- "FoodNotOnHand": "You do not have {food} on hand.",
- "Undefined": "Undefined",
- "Create_Meal_Plan_Entry": "Create meal plan entry",
- "Edit_Meal_Plan_Entry": "Edit meal plan entry",
- "Title": "Title",
- "Week": "Week",
- "Month": "Month",
- "Year": "Year",
- "Planner": "Planner",
- "Planner_Settings": "Planner settings",
- "Period": "Period",
- "Plan_Period_To_Show": "Show weeks, months or years",
- "Periods": "Periods",
- "Plan_Show_How_Many_Periods": "How many periods to show",
- "Starting_Day": "Starting day of the week",
- "Meal_Types": "Meal types",
- "Meal_Type": "Meal type",
- "New_Entry": "New Entry",
- "Clone": "Clone",
- "Drag_Here_To_Delete": "Drag here to delete",
- "Meal_Type_Required": "Meal type is required",
- "Title_or_Recipe_Required": "Title or recipe selection required",
- "Color": "Color",
- "New_Meal_Type": "New Meal type",
- "Use_Fractions": "Use Fractions",
- "Use_Fractions_Help": "Automatically convert decimals to fractions when viewing a recipe.",
- "AddFoodToShopping": "Add {food} to your shopping list",
- "RemoveFoodFromShopping": "Remove {food} from your shopping list",
- "DeleteShoppingConfirm": "Are you sure that you want to remove all {food} from the shopping list?",
- "IgnoredFood": "{food} is set to ignore shopping.",
- "Add_Servings_to_Shopping": "Add {servings} Servings to Shopping",
- "Week_Numbers": "Week numbers",
- "Show_Week_Numbers": "Show week numbers ?",
- "Export_As_ICal": "Export current period to iCal format",
- "Export_To_ICal": "Export .ics",
- "Cannot_Add_Notes_To_Shopping": "Notes cannot be added to the shopping list",
- "Added_To_Shopping_List": "Added to shopping list",
- "Shopping_List_Empty": "Your shopping list is currently empty, you can add items via the context menu of a meal plan entry (right click on the card or left click the menu icon)",
- "Next_Period": "Next Period",
- "Previous_Period": "Previous Period",
- "Current_Period": "Current Period",
- "Next_Day": "Next Day",
- "Previous_Day": "Previous Day",
- "Inherit": "Inherit",
- "InheritFields": "Inherit Fields Values",
- "FoodInherit": "Food Inheritable Fields",
- "ShowUncategorizedFood": "Show Undefined",
- "GroupBy": "Group By",
- "Language": "Language",
- "Theme": "Theme",
- "SupermarketCategoriesOnly": "Supermarket Categories Only",
- "MoveCategory": "Move To: ",
- "CountMore": "...+{count} more",
- "IgnoreThis": "Never auto-add {food} to shopping",
- "DelayFor": "Delay for {hours} hours",
- "Warning": "Warning",
- "NoCategory": "No category selected.",
- "InheritWarning": "{food} is set to inherit, changes may not persist.",
- "ShowDelayed": "Show postponed items",
- "PostponedUntil": "Postponed until",
- "Postpone": "Postponed until",
- "ShowRecentlyCompleted": "Show recently completed items",
- "Completed": "Completed",
- "OfflineAlert": "You are offline, shopping list may not syncronize.",
- "shopping_share": "Share Shopping List",
- "shopping_auto_sync": "Autosync",
- "one_url_per_line": "One URL per line",
- "mealplan_autoadd_shopping": "Auto Add Meal Plan",
- "mealplan_autoexclude_onhand": "Exclude Food On Hand",
- "mealplan_autoinclude_related": "Add Related Recipes",
- "default_delay": "Default Delay Hours",
- "plan_share_desc": "New Meal Plan entries will automatically be shared with selected users.",
- "shopping_share_desc": "Users will see all items you add to your shopping list. They must add you to see items on their list.",
- "shopping_auto_sync_desc": "Setting to 0 will disable auto sync. When viewing a shopping list the list is updated every set seconds to sync changes someone else might have made. Useful when shopping with multiple people but will use mobile data.",
- "mealplan_autoadd_shopping_desc": "Automatically add meal plan ingredients to shopping list.",
- "mealplan_autoexclude_onhand_desc": "When adding a meal plan to the shopping list (manually or automatically), exclude ingredients that are currently on hand.",
- "mealplan_autoinclude_related_desc": "When adding a meal plan to the shopping list (manually or automatically), include all related recipes.",
- "default_delay_desc": "Default number of hours to delay a shopping list entry.",
- "filter_to_supermarket": "Filter to Supermarket",
- "Coming_Soon": "Coming-Soon",
- "Auto_Planner": "Auto-Planner",
- "New_Cookbook": "New cookbook",
- "Hide_Keyword": "Hide keywords",
- "Hour": "Hour",
- "Hours": "Hours",
- "Day": "Day",
- "Days": "Days",
- "Second": "Second",
- "Seconds": "Seconds",
- "Clear": "Clear",
- "Users": "Users",
- "Invites": "Invites",
- "err_move_self": "Cannot move item to itself",
- "nothing": "Nothing to do",
- "err_merge_self": "Cannot merge item with itself",
- "show_sql": "Show SQL",
- "filter_to_supermarket_desc": "By default, filter shopping list to only include categories for selected supermarket.",
- "CategoryName": "Category Name",
- "SupermarketName": "Supermarket Name",
- "CategoryInstruction": "Drag categories to change the order categories appear in shopping list.",
- "OrderInformation": "Objects are ordered from small to large numbers.",
- "shopping_recent_days_desc": "Days of recent shopping list entries to display.",
- "shopping_recent_days": "Recent Days",
- "download_pdf": "Download PDF",
- "download_csv": "Download CSV",
- "csv_delim_help": "Delimiter to use for CSV exports.",
- "csv_delim_label": "CSV Delimiter",
- "SuccessClipboard": "Shopping list copied to clipboard",
- "copy_to_clipboard": "Copy to Clipboard",
- "csv_prefix_help": "Prefix to add when copying list to the clipboard.",
- "csv_prefix_label": "List Prefix",
- "copy_markdown_table": "Copy as Markdown Table",
- "in_shopping": "In Shopping List",
- "DelayUntil": "Delay Until",
- "Delay": "Delay",
- "Pin": "Pin",
- "Unpin": "Unpin",
- "Entries": "Entries",
- "PinnedConfirmation": "{recipe} has been pinned.",
- "UnpinnedConfirmation": "{recipe} has been unpinned.",
- "mark_complete": "Mark Complete",
- "QuickEntry": "Quick Entry",
- "shopping_add_onhand_desc": "Mark food 'On Hand' when checked off shopping list.",
- "shopping_add_onhand": "Auto On Hand",
- "related_recipes": "Related Recipes",
- "today_recipes": "Today's Recipes",
- "sql_debug": "SQL Debug",
- "remember_search": "Remember Search",
- "remember_hours": "Hours to Remember",
- "tree_select": "Use Tree Selection",
- "OnHand_help": "Food is in inventory and will not be automatically added to a shopping list. Onhand status is shared with shopping users.",
- "ignore_shopping_help": "Never add food to the shopping list (e.g. water)",
- "shopping_category_help": "Supermarkets can be ordered and filtered by Shopping Category according to the layout of the aisles.",
- "food_recipe_help": "Linking a recipe here will include the linked recipe in any other recipe that use this food",
- "Foods": "Foods",
- "Account": "Account",
- "Cosmetic": "Cosmetic",
- "API": "API",
- "enable_expert": "Enable Expert Mode",
- "expert_mode": "Expert Mode",
- "simple_mode": "Simple Mode",
- "advanced": "Advanced",
- "fields": "Fields",
- "show_keywords": "Show Keywords",
- "show_foods": "Show Foods",
- "show_books": "Show Books",
- "show_rating": "Show Rating",
- "show_units": "Show Units",
- "show_filters": "Show Filters",
- "not": "not",
- "save_filter": "Save Filter",
- "filter_name": "Filter Name",
- "left_handed": "Left-handed mode",
- "left_handed_help": "Will optimize the UI for use with your left hand.",
- "show_step_ingredients_setting": "Show Ingredients Next To Recipe Steps",
- "show_step_ingredients_setting_help": "Add ingredients table next to recipe steps. Applies at creation time. Can be overridden in the edit recipe view.",
- "show_step_ingredients": "Show Step Ingredients",
- "hide_step_ingredients": "Hide Step Ingredients",
- "Custom Filter": "Custom Filter",
- "shared_with": "Shared With",
- "sort_by": "Sort By",
- "asc": "Ascending",
- "desc": "Descending",
- "date_viewed": "Last Viewed",
- "last_cooked": "Last Cooked",
- "times_cooked": "Times Cooked",
- "date_created": "Date Created",
- "show_sortby": "Show Sort By",
- "search_rank": "Search Rank",
- "make_now": "Make Now",
- "make_now_count": "At most missing ingredients",
- "recipe_filter": "Recipe Filter",
- "book_filter_help": "Include recipes from recipe filter in addition to manually assigned ones.",
- "review_shopping": "Review shopping entries before saving",
- "view_recipe": "View Recipe",
- "copy_to_new": "Copy To New Recipe",
- "recipe_name": "Recipe Name",
- "paste_ingredients_placeholder": "Paste ingredient list here...",
- "paste_ingredients": "Paste Ingredients",
- "ingredient_list": "Ingredient List",
- "explain": "Explain",
- "filter": "Filter",
- "Website": "Website",
- "App": "App",
- "Message": "Message",
- "Bookmarklet": "Bookmarklet",
- "Sticky_Nav": "Sticky Navigation",
- "Sticky_Nav_Help": "Always show the navigation menu at the top of the screen.",
- "Nav_Color": "Navigation Color",
- "Nav_Color_Help": "Change navigation color.",
- "Use_Kj": "Use kJ instead of kcal",
- "Comments_setting": "Show Comments",
- "click_image_import": "Click the image you want to import for this recipe",
- "no_more_images_found": "No additional images found on Website.",
- "import_duplicates": "To prevent duplicates recipes with the same name as existing ones are ignored. Check this box to import everything.",
- "paste_json": "Paste json or html source here to load recipe.",
- "Click_To_Edit": "Click to edit",
- "search_no_recipes": "Could not find any recipes!",
- "search_import_help_text": "Import a recipe from an external website or application.",
- "search_create_help_text": "Create a new recipe directly in Tandoor.",
- "warning_duplicate_filter": "Warning: Due to technical limitations having multiple filters of the same combination (and/or/not) might yield unexpected results.",
- "reset_children": "Reset Child Inheritance",
- "reset_children_help": "Overwrite all children with values from inherited fields. Inherited fields of children will be set to Inherit Fields unless Children Inherit Fields is set.",
- "reset_food_inheritance": "Reset Inheritance",
- "reset_food_inheritance_info": "Reset all foods to default inherited fields and their parent values.",
- "substitute_help": "Substitutes are considered when searching for recipes that can be made with onhand ingredients.",
- "substitute_siblings_help": "All food that share a parent of this food are considered substitutes.",
- "substitute_children_help": "All food that are children of this food are considered substitutes.",
- "substitute_siblings": "Substitute Siblings",
- "substitute_children": "Substitute Children",
- "SubstituteOnHand": "You have a substitute on hand.",
- "ChildInheritFields": "Children Inherit Fields",
- "ChildInheritFields_help": "Children will inherit these fields by default.",
- "InheritFields_help": "The values of these fields will be inherited from parent (Exception: blank shopping categories are not inherited)",
- "show_ingredients_table": "Display a table of the ingredients next to the step's text",
- "show_ingredient_overview": "Display a list of all ingredients at the start of the recipe.",
- "Ingredient Overview": "Ingredient Overview",
- "last_viewed": "Last Viewed",
- "created_on": "Created on",
- "created_by": "Created by",
- "updatedon": "Updated on",
- "Imported_From": "Imported from",
- "advanced_search_settings": "Advanced Search Settings",
- "nothing_planned_today": "You have nothing planned for today!",
- "no_pinned_recipes": "You have no pinned recipes!",
- "Planned": "Planned",
- "Pinned": "Pinned",
- "Imported": "Imported",
- "Quick actions": "Quick actions",
- "Ratings": "Ratings",
- "Internal": "Internal",
- "Units": "Units",
- "Manage_Emails": "Manage Emails",
- "Change_Password": "Change Password",
- "Social_Authentication": "Social Authentication",
- "Random Recipes": "Random Recipes",
- "parameter_count": "Parameter {count}",
- "select_keyword": "Select Keyword",
- "add_keyword": "Add Keyword",
- "select_file": "Select File",
- "select_recipe": "Select Recipe",
- "select_unit": "Select Unit",
- "select_food": "Select Food",
- "remove_selection": "Deselect",
- "empty_list": "List is empty.",
- "Select": "Select",
- "Supermarkets": "Supermarkets",
- "User": "User",
- "Username": "Username",
- "First_name": "First Name",
- "Last_name": "Last Name",
- "Keyword": "Keyword",
- "Advanced": "Advanced",
- "Page": "Page",
- "Single": "Single",
- "Multiple": "Multiple",
- "Reset": "Reset",
- "Disabled": "Disabled",
- "Disable": "Disable",
- "Options": "Options",
- "Create Food": "Create Food",
- "create_food_desc": "Create a food and link it to this recipe.",
- "additional_options": "Additional Options",
- "Importer_Help": "More information and help on this importer:",
- "Documentation": "Documentation",
- "Select_App_To_Import": "Please select an App to Import from",
- "Import_Supported": "Import supported",
- "Export_Supported": "Export supported",
- "Import_Not_Yet_Supported": "Import not yet supported",
- "Export_Not_Yet_Supported": "Export not yet supported",
- "Import_Result_Info": "{imported} of {total} recipes were imported",
- "Recipes_In_Import": "Recipes in your import file",
- "Toggle": "Toggle",
- "total": "total",
- "Import_Error": "An Error occurred during your import. Please expand the Details at the bottom of the page to view it.",
- "Warning_Delete_Supermarket_Category": "Deleting a supermarket category will also delete all relations to foods. Are you sure?",
- "New_Supermarket": "Create new supermarket",
- "New_Supermarket_Category": "Create new supermarket category",
- "Are_You_Sure": "Are you sure?",
- "Valid Until": "Valid Until",
- "Split_All_Steps": "Split all rows into separate steps.",
- "Combine_All_Steps": "Combine all steps into a single field.",
- "Plural": "Plural",
- "plural_short": "plural",
-
- "g": "gram [g] (metric, weight)",
- "kg": "kilogram [kg] (metric, weight)",
- "ounce": "ounce [oz] (weight)",
- "pound": "pound (weight)",
- "ml": "millilitre [ml] (metric, volume)",
- "l": "litre [l] (metric, volume)",
- "fluid_ounce": "fluid ounce [fl oz] (US, volume)",
- "pint": "pint [pt] (US, volume)",
- "quart": "quart [qt] (US, volume)",
- "gallon": "gallon [gal] (US, volume)",
- "tbsp": "tablespoon [tbsp] (US, volume)",
- "tsp": "teaspoon [tsp] (US, volume)",
- "imperial_fluid_ounce": "imperial fluid ounce [imp fl oz] (UK, volume)",
- "imperial_pint": "imperial pint [imp pt] (UK, volume)",
- "imperial_quart": "imperial quart [imp qt] (UK, volume)",
- "imperial_gallon": "imperial gal [imp gal] (UK, volume)",
- "imperial_tbsp": "imperial tablespoon [imp tbsp] (UK, volume)",
- "imperial_tsp": "imperial teaspoon [imp tsp] (UK, volume)",
- "Choose_Category": "Choose Category",
- "Back": "Back",
- "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.",
- "Create Recipe": "Create Recipe",
- "Import Recipe": "Import Recipe",
- "Never_Unit": "Never Unit",
- "Transpose_Words": "Transpose Words",
- "Name_Replace":"Name Replace",
- "Food_Replace":"Food Replace",
- "Unit_Replace":"Unit Replace"
-}
+ "warning_feature_beta": "This feature is currently in a BETA (testing) state. Please expect bugs and possibly breaking changes in the future (possibly losing feature-related data) when using this feature.",
+ "err_fetching_resource": "There was an error fetching a resource!",
+ "err_creating_resource": "There was an error creating a resource!",
+ "err_updating_resource": "There was an error updating a resource!",
+ "err_deleting_resource": "There was an error deleting a resource!",
+ "err_deleting_protected_resource": "The object you are trying to delete is still used and can't be deleted.",
+ "err_moving_resource": "There was an error moving a resource!",
+ "err_merging_resource": "There was an error merging a resource!",
+ "err_importing_recipe": "There was an error importing the recipe!",
+ "success_fetching_resource": "Successfully fetched a resource!",
+ "success_creating_resource": "Successfully created a resource!",
+ "success_updating_resource": "Successfully updated a resource!",
+ "success_deleting_resource": "Successfully deleted a resource!",
+ "success_moving_resource": "Successfully moved a resource!",
+ "success_merging_resource": "Successfully merged a resource!",
+ "file_upload_disabled": "File upload is not enabled for your space.",
+ "recipe_property_info": "You can also add properties to foods to calculate them automatically based on your recipe!",
+ "warning_space_delete": "You can delete your space including all recipes, shopping lists, meal plans and whatever else you have created. This cannot be undone! Are you sure you want to do this ?",
+ "food_inherit_info": "Fields on food that should be inherited by default.",
+ "step_time_minutes": "Step time in minutes",
+ "confirm_delete": "Are you sure you want to delete this {object}?",
+ "import_running": "Import running, please wait!",
+ "all_fields_optional": "All fields are optional and can be left empty.",
+ "convert_internal": "Convert to internal recipe",
+ "show_only_internal": "Show only internal recipes",
+ "show_split_screen": "Split View",
+ "Log_Recipe_Cooking": "Log Recipe Cooking",
+ "External_Recipe_Image": "External Recipe Image",
+ "Add_to_Shopping": "Add to Shopping",
+ "Add_to_Plan": "Add to Plan",
+ "Step_start_time": "Step start time",
+ "Sort_by_new": "Sort by new",
+ "Table_of_Contents": "Table of Contents",
+ "Recipes_per_page": "Recipes per Page",
+ "Show_as_header": "Show as header",
+ "Hide_as_header": "Hide as header",
+ "Add_nutrition_recipe": "Add nutrition to recipe",
+ "Remove_nutrition_recipe": "Delete nutrition from recipe",
+ "Copy_template_reference": "Copy template reference",
+ "per_serving": "per servings",
+ "Save_and_View": "Save & View",
+ "Manage_Books": "Manage Books",
+ "Meal_Plan": "Meal Plan",
+ "Select_Book": "Select Book",
+ "Select_File": "Select File",
+ "Recipe_Image": "Recipe Image",
+ "Import_finished": "Import finished",
+ "View_Recipes": "View Recipes",
+ "Log_Cooking": "Log Cooking",
+ "New_Recipe": "New Recipe",
+ "Url_Import": "Url Import",
+ "Reset_Search": "Reset Search",
+ "Recently_Viewed": "Recently Viewed",
+ "Load_More": "Load More",
+ "New_Keyword": "New Keyword",
+ "Delete_Keyword": "Delete Keyword",
+ "Edit_Keyword": "Edit Keyword",
+ "Edit_Recipe": "Edit Recipe",
+ "Move_Keyword": "Move Keyword",
+ "Merge_Keyword": "Merge Keyword",
+ "Hide_Keywords": "Hide Keyword",
+ "Hide_Recipes": "Hide Recipes",
+ "Move_Up": "Move up",
+ "Move_Down": "Move down",
+ "Step_Name": "Step Name",
+ "Step_Type": "Step Type",
+ "Make_Header": "Make Header",
+ "Make_Ingredient": "Make Ingredient",
+ "Amount": "Amount",
+ "Enable_Amount": "Enable Amount",
+ "Disable_Amount": "Disable Amount",
+ "Ingredient Editor": "Ingredient Editor",
+ "Description_Replace": "Description Replace",
+ "Instruction_Replace": "Instruction Replace",
+ "Auto_Sort": "Auto Sort",
+ "Auto_Sort_Help": "Move all ingredients to the best fitting step.",
+ "Private_Recipe": "Private Recipe",
+ "Private_Recipe_Help": "Recipe is only shown to you and people its shared with.",
+ "reusable_help_text": "Should the invite link be usable for more than one user.",
+ "open_data_help_text": "The Tandoor Open Data project provides community contributed data for Tandoor. This field is filled automatically when importing it and allows updates in the future.",
+ "Open_Data_Slug": "Open Data Slug",
+ "Open_Data_Import": "Open Data Import",
+ "Properties_Food_Amount": "Properties Food Amount",
+ "Properties_Food_Unit": "Properties Food Unit",
+ "FDC_ID": "FDC ID",
+ "FDC_Search": "FDC Search",
+ "FDC_ID_help": "FDC database ID",
+ "property_type_fdc_hint": "Only property types with an FDC ID can automatically pull data from the FDC database",
+ "Data_Import_Info": "Enhance your Space by importing a community curated list of foods, units and more to improve your recipe collection.",
+ "Update_Existing_Data": "Update Existing Data",
+ "Use_Metric": "Use Metric Units",
+ "Learn_More": "Learn More",
+ "converted_unit": "Converted Unit",
+ "converted_amount": "Converted Amount",
+ "base_unit": "Base Unit",
+ "base_amount": "Base Amount",
+ "Datatype": "Datatype",
+ "Number of Objects": "Number of Objects",
+ "Add_Step": "Add Step",
+ "Keywords": "Keywords",
+ "Books": "Books",
+ "Proteins": "Proteins",
+ "Fats": "Fats",
+ "Carbohydrates": "Carbohydrates",
+ "Calories": "Calories",
+ "Energy": "Energy",
+ "Nutrition": "Nutrition",
+ "Date": "Date",
+ "StartDate": "Start Date",
+ "EndDate": "End Date",
+ "Share": "Share",
+ "Automation": "Automation",
+ "Parameter": "Parameter",
+ "Export": "Export",
+ "Copy": "Copy",
+ "Rating": "Rating",
+ "Close": "Close",
+ "Cancel": "Cancel",
+ "Link": "Link",
+ "Add": "Add",
+ "New": "New",
+ "Note": "Note",
+ "Alignment": "Alignment",
+ "Success": "Success",
+ "Failure": "Failure",
+ "Protected": "Protected",
+ "Ingredients": "Ingredients",
+ "Supermarket": "Supermarket",
+ "Categories": "Categories",
+ "Category": "Category",
+ "Selected": "Selected",
+ "min": "min",
+ "Servings": "Servings",
+ "Waiting": "Waiting",
+ "Preparation": "Preparation",
+ "External": "External",
+ "Size": "Size",
+ "Files": "Files",
+ "File": "File",
+ "Edit": "Edit",
+ "Image": "Image",
+ "Delete": "Delete",
+ "Open": "Open",
+ "Ok": "Ok",
+ "Save": "Save",
+ "Step": "Step",
+ "Search": "Search",
+ "Import": "Import",
+ "Print": "Print",
+ "Settings": "Settings",
+ "or": "or",
+ "and": "and",
+ "Information": "Information",
+ "Download": "Download",
+ "Create": "Create",
+ "Search Settings": "Search Settings",
+ "View": "View",
+ "Recipes": "Recipes",
+ "Welcome": "Welcome",
+ "Move": "Move",
+ "Merge": "Merge",
+ "Parent": "Parent",
+ "Copy Link": "Copy Link",
+ "Copy Token": "Copy Token",
+ "delete_confirmation": "Are you sure that you want to delete {source}?",
+ "move_confirmation": "Move {child} to parent {parent}",
+ "merge_confirmation": "Replace {source} with {target}",
+ "create_rule": "and create automation",
+ "move_selection": "Select a parent {type} to move {source} to.",
+ "merge_selection": "Replace all occurrences of {source} with the selected {type}.",
+ "Root": "Root",
+ "Ignore_Shopping": "Ignore Shopping",
+ "Shopping_Category": "Shopping Category",
+ "Shopping_Categories": "Shopping Categories",
+ "Edit_Food": "Edit Food",
+ "Move_Food": "Move Food",
+ "New_Food": "New Food",
+ "Hide_Food": "Hide Food",
+ "Food_Alias": "Food Alias",
+ "Unit_Alias": "Unit Alias",
+ "Keyword_Alias": "Keyword Alias",
+ "Delete_Food": "Delete Food",
+ "No_ID": "ID not found, cannot delete.",
+ "Meal_Plan_Days": "Future meal plans",
+ "merge_title": "Merge {type}",
+ "move_title": "Move {type}",
+ "Food": "Food",
+ "Property": "Property",
+ "Property_Editor": "Property Editor",
+ "Conversion": "Conversion",
+ "Original_Text": "Original Text",
+ "Recipe_Book": "Recipe Book",
+ "del_confirmation_tree": "Are you sure that you want to delete {source} and all of it's children?",
+ "delete_title": "Delete {type}",
+ "create_title": "New {type}",
+ "edit_title": "Edit {type}",
+ "Name": "Name",
+ "Properties": "Properties",
+ "Type": "Type",
+ "Description": "Description",
+ "Recipe": "Recipe",
+ "tree_root": "Root of Tree",
+ "Icon": "Icon",
+ "Unit": "Unit",
+ "Decimals": "Decimals",
+ "Default_Unit": "Default Unit",
+ "No_Results": "No Results",
+ "New_Unit": "New Unit",
+ "Create_New_Shopping Category": "Create New Shopping Category",
+ "Create_New_Food": "Add New Food",
+ "Create_New_Keyword": "Add New Keyword",
+ "Create_New_Unit": "Add New Unit",
+ "Create_New_Meal_Type": "Add New Meal Type",
+ "Create_New_Shopping_Category": "Add New Shopping Category",
+ "and_up": "& Up",
+ "and_down": "& Down",
+ "Instructions": "Instructions",
+ "Unrated": "Unrated",
+ "Automate": "Automate",
+ "Empty": "Empty",
+ "Key_Ctrl": "Ctrl",
+ "Key_Shift": "Shift",
+ "Time": "Time",
+ "Text": "Text",
+ "Shopping_list": "Shopping List",
+ "Added_by": "Added By",
+ "Added_on": "Added On",
+ "AddToShopping": "Add to shopping list",
+ "IngredientInShopping": "This ingredient is in your shopping list.",
+ "NotInShopping": "{food} is not in your shopping list.",
+ "OnHand": "Currently On Hand",
+ "FoodOnHand": "You have {food} on hand.",
+ "FoodNotOnHand": "You do not have {food} on hand.",
+ "Undefined": "Undefined",
+ "Create_Meal_Plan_Entry": "Create meal plan entry",
+ "Edit_Meal_Plan_Entry": "Edit meal plan entry",
+ "Title": "Title",
+ "Week": "Week",
+ "Month": "Month",
+ "Year": "Year",
+ "Planner": "Planner",
+ "Planner_Settings": "Planner settings",
+ "Period": "Period",
+ "Plan_Period_To_Show": "Show weeks, months or years",
+ "Periods": "Periods",
+ "Plan_Show_How_Many_Periods": "How many periods to show",
+ "Starting_Day": "Starting day of the week",
+ "Meal_Types": "Meal types",
+ "Meal_Type": "Meal type",
+ "New_Entry": "New Entry",
+ "Clone": "Clone",
+ "Drag_Here_To_Delete": "Drag here to delete",
+ "Meal_Type_Required": "Meal type is required",
+ "Title_or_Recipe_Required": "Title or recipe selection required",
+ "Color": "Color",
+ "New_Meal_Type": "New Meal type",
+ "Use_Fractions": "Use Fractions",
+ "Use_Fractions_Help": "Automatically convert decimals to fractions when viewing a recipe.",
+ "AddFoodToShopping": "Add {food} to your shopping list",
+ "RemoveFoodFromShopping": "Remove {food} from your shopping list",
+ "DeleteShoppingConfirm": "Are you sure that you want to remove all {food} from the shopping list?",
+ "IgnoredFood": "{food} is set to ignore shopping.",
+ "Add_Servings_to_Shopping": "Add {servings} Servings to Shopping",
+ "Week_Numbers": "Week numbers",
+ "Show_Week_Numbers": "Show week numbers ?",
+ "Export_As_ICal": "Export current period to iCal format",
+ "Export_To_ICal": "Export .ics",
+ "Cannot_Add_Notes_To_Shopping": "Notes cannot be added to the shopping list",
+ "Added_To_Shopping_List": "Added to shopping list",
+ "Shopping_List_Empty": "Your shopping list is currently empty, you can add items via the context menu of a meal plan entry (right click on the card or left click the menu icon)",
+ "Next_Period": "Next Period",
+ "Previous_Period": "Previous Period",
+ "Current_Period": "Current Period",
+ "Next_Day": "Next Day",
+ "Previous_Day": "Previous Day",
+ "Inherit": "Inherit",
+ "InheritFields": "Inherit Fields Values",
+ "FoodInherit": "Food Inheritable Fields",
+ "ShowUncategorizedFood": "Show Undefined",
+ "GroupBy": "Group By",
+ "Language": "Language",
+ "Theme": "Theme",
+ "CustomTheme": "Custom Theme",
+ "CustomThemeHelp": "Override styles of the selected theme by uploading a custom CSS file.",
+ "CustomImageHelp": "Upload an image to show in the space overview.",
+ "CustomNavLogoHelp": "Upload an image to use as the space logo.",
+ "SupermarketCategoriesOnly": "Supermarket Categories Only",
+ "MoveCategory": "Move To: ",
+ "CountMore": "...+{count} more",
+ "IgnoreThis": "Never auto-add {food} to shopping",
+ "DelayFor": "Delay for {hours} hours",
+ "Warning": "Warning",
+ "NoCategory": "No category selected.",
+ "InheritWarning": "{food} is set to inherit, changes may not persist.",
+ "ShowDelayed": "Show postponed items",
+ "Completed": "Completed",
+ "OfflineAlert": "You are offline, shopping list may not syncronize.",
+ "shopping_share": "Share Shopping List",
+ "shopping_auto_sync": "Autosync",
+ "one_url_per_line": "One URL per line",
+ "mealplan_autoadd_shopping": "Auto Add Meal Plan",
+ "mealplan_autoexclude_onhand": "Exclude Food On Hand",
+ "mealplan_autoinclude_related": "Add Related Recipes",
+ "default_delay": "Default Delay Hours",
+ "plan_share_desc": "New Meal Plan entries will automatically be shared with selected users.",
+ "shopping_share_desc": "Users will see all items you add to your shopping list. They must add you to see items on their list.",
+ "shopping_auto_sync_desc": "Setting to 0 will disable auto sync. When viewing a shopping list the list is updated every set seconds to sync changes someone else might have made. Useful when shopping with multiple people but will use mobile data.",
+ "mealplan_autoadd_shopping_desc": "Automatically add meal plan ingredients to shopping list.",
+ "mealplan_autoexclude_onhand_desc": "When adding a meal plan to the shopping list (manually or automatically), exclude ingredients that are currently on hand.",
+ "mealplan_autoinclude_related_desc": "When adding a meal plan to the shopping list (manually or automatically), include all related recipes.",
+ "default_delay_desc": "Default number of hours to delay a shopping list entry.",
+ "filter_to_supermarket": "Filter to Supermarket",
+ "Coming_Soon": "Coming-Soon",
+ "Auto_Planner": "Auto-Planner",
+ "New_Cookbook": "New cookbook",
+ "Hide_Keyword": "Hide keywords",
+ "Hour": "Hour",
+ "Hours": "Hours",
+ "Day": "Day",
+ "Days": "Days",
+ "Second": "Second",
+ "Seconds": "Seconds",
+ "Clear": "Clear",
+ "Users": "Users",
+ "Invites": "Invites",
+ "err_move_self": "Cannot move item to itself",
+ "nothing": "Nothing to do",
+ "err_merge_self": "Cannot merge item with itself",
+ "show_sql": "Show SQL",
+ "filter_to_supermarket_desc": "By default, filter shopping list to only include categories for selected supermarket.",
+ "CategoryName": "Category Name",
+ "SupermarketName": "Supermarket Name",
+ "CategoryInstruction": "Drag categories to change the order categories appear in shopping list.",
+ "OrderInformation": "Objects are ordered from small to large numbers.",
+ "shopping_recent_days_desc": "Days of recent shopping list entries to display.",
+ "shopping_recent_days": "Recent Days",
+ "download_pdf": "Download PDF",
+ "download_csv": "Download CSV",
+ "csv_delim_help": "Delimiter to use for CSV exports.",
+ "csv_delim_label": "CSV Delimiter",
+ "SuccessClipboard": "Shopping list copied to clipboard",
+ "copy_to_clipboard": "Copy to Clipboard",
+ "csv_prefix_help": "Prefix to add when copying list to the clipboard.",
+ "csv_prefix_label": "List Prefix",
+ "copy_markdown_table": "Copy as Markdown Table",
+ "in_shopping": "In Shopping List",
+ "DelayUntil": "Delay Until",
+ "Pin": "Pin",
+ "Unpin": "Unpin",
+ "PinnedConfirmation": "{recipe} has been pinned.",
+ "UnpinnedConfirmation": "{recipe} has been unpinned.",
+ "mark_complete": "Mark Complete",
+ "QuickEntry": "Quick Entry",
+ "shopping_add_onhand_desc": "Mark food 'On Hand' when checked off shopping list.",
+ "shopping_add_onhand": "Auto On Hand",
+ "related_recipes": "Related Recipes",
+ "today_recipes": "Today's Recipes",
+ "sql_debug": "SQL Debug",
+ "remember_search": "Remember Search",
+ "remember_hours": "Hours to Remember",
+ "tree_select": "Use Tree Selection",
+ "OnHand_help": "Food is in inventory and will not be automatically added to a shopping list. Onhand status is shared with shopping users.",
+ "ignore_shopping_help": "Never add food to the shopping list (e.g. water)",
+ "shopping_category_help": "Supermarkets can be ordered and filtered by Shopping Category according to the layout of the aisles.",
+ "food_recipe_help": "Linking a recipe here will include the linked recipe in any other recipe that use this food",
+ "Foods": "Foods",
+ "Account": "Account",
+ "Cosmetic": "Cosmetic",
+ "API": "API",
+ "enable_expert": "Enable Expert Mode",
+ "expert_mode": "Expert Mode",
+ "simple_mode": "Simple Mode",
+ "advanced": "Advanced",
+ "fields": "Fields",
+ "show_keywords": "Show Keywords",
+ "show_foods": "Show Foods",
+ "show_books": "Show Books",
+ "show_rating": "Show Rating",
+ "show_units": "Show Units",
+ "show_filters": "Show Filters",
+ "not": "not",
+ "save_filter": "Save Filter",
+ "filter_name": "Filter Name",
+ "left_handed": "Left-handed mode",
+ "left_handed_help": "Will optimize the UI for use with your left hand.",
+ "show_step_ingredients_setting": "Show Ingredients Next To Recipe Steps",
+ "show_step_ingredients_setting_help": "Add ingredients table next to recipe steps. Applies at creation time. Can be overridden in the edit recipe view.",
+ "show_step_ingredients": "Show Step Ingredients",
+ "hide_step_ingredients": "Hide Step Ingredients",
+ "Custom Filter": "Custom Filter",
+ "shared_with": "Shared With",
+ "sort_by": "Sort By",
+ "asc": "Ascending",
+ "desc": "Descending",
+ "date_viewed": "Last Viewed",
+ "last_cooked": "Last Cooked",
+ "times_cooked": "Times Cooked",
+ "date_created": "Date Created",
+ "show_sortby": "Show Sort By",
+ "search_rank": "Search Rank",
+ "make_now": "Make Now",
+ "make_now_count": "At most missing ingredients",
+ "recipe_filter": "Recipe Filter",
+ "book_filter_help": "Include recipes from recipe filter in addition to manually assigned ones.",
+ "review_shopping": "Review shopping entries before saving",
+ "view_recipe": "View Recipe",
+ "copy_to_new": "Copy To New Recipe",
+ "recipe_name": "Recipe Name",
+ "paste_ingredients_placeholder": "Paste ingredient list here...",
+ "paste_ingredients": "Paste Ingredients",
+ "ingredient_list": "Ingredient List",
+ "explain": "Explain",
+ "filter": "Filter",
+ "Website": "Website",
+ "App": "App",
+ "Message": "Message",
+ "Bookmarklet": "Bookmarklet",
+ "Sticky_Nav": "Sticky Navigation",
+ "Sticky_Nav_Help": "Always show the navigation menu at the top of the screen.",
+ "Logo": "Logo",
+ "Show_Logo": "Show Logo",
+ "Show_Logo_Help": "Show Tandoor or space logo in navigation bar.",
+ "Nav_Color": "Navigation Color",
+ "Nav_Text_Mode": "Navigation Text Mode",
+ "Nav_Text_Mode_Help": "Behaves differently for every theme.",
+ "Nav_Color_Help": "Change navigation color.",
+ "Space_Cosmetic_Settings": "Some cosmetic settings can be changed by space administrators and will override client settings for that space.",
+ "Use_Kj": "Use kJ instead of kcal",
+ "Comments_setting": "Show Comments",
+ "click_image_import": "Click the image you want to import for this recipe",
+ "no_more_images_found": "No additional images found on Website.",
+ "import_duplicates": "To prevent duplicates recipes with the same name as existing ones are ignored. Check this box to import everything.",
+ "paste_json": "Paste json or html source here to load recipe.",
+ "Click_To_Edit": "Click to edit",
+ "search_no_recipes": "Could not find any recipes!",
+ "search_import_help_text": "Import a recipe from an external website or application.",
+ "search_create_help_text": "Create a new recipe directly in Tandoor.",
+ "warning_duplicate_filter": "Warning: Due to technical limitations having multiple filters of the same combination (and/or/not) might yield unexpected results.",
+ "reset_children": "Reset Child Inheritance",
+ "reset_children_help": "Overwrite all children with values from inherited fields. Inherited fields of children will be set to Inherit Fields unless Children Inherit Fields is set.",
+ "reset_food_inheritance": "Reset Inheritance",
+ "reset_food_inheritance_info": "Reset all foods to default inherited fields and their parent values.",
+ "substitute_help": "Substitutes are considered when searching for recipes that can be made with onhand ingredients.",
+ "substitute_siblings_help": "All food that share a parent of this food are considered substitutes.",
+ "substitute_children_help": "All food that are children of this food are considered substitutes.",
+ "substitute_siblings": "Substitute Siblings",
+ "substitute_children": "Substitute Children",
+ "SubstituteOnHand": "You have a substitute on hand.",
+ "ChildInheritFields": "Children Inherit Fields",
+ "ChildInheritFields_help": "Children will inherit these fields by default.",
+ "InheritFields_help": "The values of these fields will be inherited from parent (Exception: blank shopping categories are not inherited)",
+ "show_ingredients_table": "Display a table of the ingredients next to the step's text",
+ "show_ingredient_overview": "Display a list of all ingredients at the start of the recipe.",
+ "Ingredient Overview": "Ingredient Overview",
+ "last_viewed": "Last Viewed",
+ "created_on": "Created on",
+ "updatedon": "Updated on",
+ "Imported_From": "Imported from",
+ "advanced_search_settings": "Advanced Search Settings",
+ "nothing_planned_today": "You have nothing planned for today!",
+ "no_pinned_recipes": "You have no pinned recipes!",
+ "Planned": "Planned",
+ "Pinned": "Pinned",
+ "Imported": "Imported",
+ "Quick actions": "Quick actions",
+ "Ratings": "Ratings",
+ "Internal": "Internal",
+ "Units": "Units",
+ "Manage_Emails": "Manage Emails",
+ "Change_Password": "Change Password",
+ "Social_Authentication": "Social Authentication",
+ "Random Recipes": "Random Recipes",
+ "parameter_count": "Parameter {count}",
+ "select_keyword": "Select Keyword",
+ "add_keyword": "Add Keyword",
+ "select_file": "Select File",
+ "select_recipe": "Select Recipe",
+ "select_unit": "Select Unit",
+ "select_food": "Select Food",
+ "remove_selection": "Deselect",
+ "empty_list": "List is empty.",
+ "Select": "Select",
+ "Supermarkets": "Supermarkets",
+ "User": "User",
+ "Username": "Username",
+ "First_name": "First Name",
+ "Last_name": "Last Name",
+ "Keyword": "Keyword",
+ "Advanced": "Advanced",
+ "Page": "Page",
+ "Single": "Single",
+ "Multiple": "Multiple",
+ "Reset": "Reset",
+ "Disabled": "Disabled",
+ "Disable": "Disable",
+ "Options": "Options",
+ "Create Food": "Create Food",
+ "create_food_desc": "Create a food and link it to this recipe.",
+ "additional_options": "Additional Options",
+ "Importer_Help": "More information and help on this importer:",
+ "Documentation": "Documentation",
+ "Select_App_To_Import": "Please select an App to Import from",
+ "Import_Supported": "Import supported",
+ "Export_Supported": "Export supported",
+ "Import_Not_Yet_Supported": "Import not yet supported",
+ "Export_Not_Yet_Supported": "Export not yet supported",
+ "Import_Result_Info": "{imported} of {total} recipes were imported",
+ "Recipes_In_Import": "Recipes in your import file",
+ "Toggle": "Toggle",
+ "total": "total",
+ "Import_Error": "An Error occurred during your import. Please expand the Details at the bottom of the page to view it.",
+ "Warning_Delete_Supermarket_Category": "Deleting a supermarket category will also delete all relations to foods. Are you sure?",
+ "New_Supermarket": "Create new supermarket",
+ "New_Supermarket_Category": "Create new supermarket category",
+ "Are_You_Sure": "Are you sure?",
+ "Valid Until": "Valid Until",
+ "Split_All_Steps": "Split all rows into separate steps.",
+ "Combine_All_Steps": "Combine all steps into a single field.",
+ "Plural": "Plural",
+ "plural_short": "plural",
+ "g": "gram [g] (metric, weight)",
+ "kg": "kilogram [kg] (metric, weight)",
+ "ounce": "ounce [oz] (weight)",
+ "pound": "pound (weight)",
+ "ml": "millilitre [ml] (metric, volume)",
+ "l": "litre [l] (metric, volume)",
+ "fluid_ounce": "fluid ounce [fl oz] (US, volume)",
+ "pint": "pint [pt] (US, volume)",
+ "quart": "quart [qt] (US, volume)",
+ "gallon": "gallon [gal] (US, volume)",
+ "tbsp": "tablespoon [tbsp] (US, volume)",
+ "tsp": "teaspoon [tsp] (US, volume)",
+ "imperial_fluid_ounce": "imperial fluid ounce [imp fl oz] (UK, volume)",
+ "imperial_pint": "imperial pint [imp pt] (UK, volume)",
+ "imperial_quart": "imperial quart [imp qt] (UK, volume)",
+ "imperial_gallon": "imperial gal [imp gal] (UK, volume)",
+ "imperial_tbsp": "imperial tablespoon [imp tbsp] (UK, volume)",
+ "imperial_tsp": "imperial teaspoon [imp tsp] (UK, volume)",
+ "Choose_Category": "Choose Category",
+ "Back": "Back",
+ "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.",
+ "Create Recipe": "Create Recipe",
+ "Import Recipe": "Import Recipe",
+ "Never_Unit": "Never Unit",
+ "Transpose_Words": "Transpose Words",
+ "Name_Replace": "Name Replace",
+ "Food_Replace": "Food Replace",
+ "Unit_Replace": "Unit Replace",
+ "Delete_All": "Delete All",
+ "PostponedUntil": "Postponed until",
+ "Postpone": "Postponed until",
+ "ShowRecentlyCompleted": "Show recently completed items",
+ "Delay": "Delay",
+ "Entries": "Entries",
+ "created_by": "Created by"
+}
\ No newline at end of file
diff --git a/vue/src/locales/he.json b/vue/src/locales/he.json
index 572e6952..747746bf 100644
--- a/vue/src/locales/he.json
+++ b/vue/src/locales/he.json
@@ -263,9 +263,9 @@
"Current_Period": "תקופה נוכחית",
"Next_Day": "היום הבא",
"Previous_Day": "יום קודם",
- "Inherit": "",
- "InheritFields": "",
- "FoodInherit": "",
+ "Inherit": "ירושה",
+ "InheritFields": "ירושת ערכי שדות",
+ "FoodInherit": "ערכי מזון",
"ShowUncategorizedFood": "הצג לא מוגדר",
"GroupBy": "אסוף לפי",
"Language": "שפה",
@@ -317,14 +317,14 @@
"CategoryName": "שם קטגוריה",
"SupermarketName": "שם סופרמרקט",
"CategoryInstruction": "גרור קטגוריות לשינוי הסדר שבו הן מופיעות ברשימת הקניות.",
- "shopping_recent_days_desc": "",
- "shopping_recent_days": "",
- "download_pdf": "",
- "download_csv": "",
+ "shopping_recent_days_desc": "מספר ימי קניות להציג.",
+ "shopping_recent_days": "מספר ימים",
+ "download_pdf": "הורד PDF",
+ "download_csv": "הורד CSV",
"csv_delim_help": "",
"csv_delim_label": "",
- "SuccessClipboard": "",
- "copy_to_clipboard": "",
+ "SuccessClipboard": "רשימת קניות הועתקה",
+ "copy_to_clipboard": "העתק",
"csv_prefix_help": "תחילית להוספה כאשר מעתיקים את הרשימה ללוח הכתיבה.",
"csv_prefix_label": "רשימת תחיליות",
"copy_markdown_table": "העתק כטבלת Markdown",
@@ -521,5 +521,15 @@
"Alignment": "יישור",
"StartDate": "תאריך התחלה",
"EndDate": "תאריך סיום",
- "OrderInformation": "המוצרים מוצגים מהמספר הקטן לגדול."
+ "OrderInformation": "המוצרים מוצגים מהמספר הקטן לגדול.",
+ "FDC_ID_help": "מספר FDC",
+ "FDC_ID": "מספר FDC",
+ "show_step_ingredients_setting": "הצג חומרי גלם בתוך שלבי המרשם",
+ "err_importing_recipe": "שגיאה בעת יבוא המרשם!",
+ "FDC_Search": "חפש FDC",
+ "property_type_fdc_hint": "רק תכונות עם מספר FDC ימשכו מבסיס נתוני FDC",
+ "Property_Editor": "עורך ערכים",
+ "show_step_ingredients_setting_help": "הצג טבלת חומרי גלם לצדי שלבי המרשם. ניתן לשנות בזמן עריכת המרשם.",
+ "show_step_ingredients": "הראה חומרי גלם בשלבי המרשם",
+ "hide_step_ingredients": "הסתר חומרי גלם בשלבי המרשם"
}
diff --git a/vue/src/locales/ru.json b/vue/src/locales/ru.json
index 7c1d0e3a..b29b3e1c 100644
--- a/vue/src/locales/ru.json
+++ b/vue/src/locales/ru.json
@@ -345,5 +345,6 @@
"GroupBy": "Сгруппировать по",
"food_inherit_info": "Поля для продуктов питания, которые должны наследоваться по умолчанию.",
"warning_space_delete": "Вы можете удалить свое пространство, включая все рецепты, списки покупок, планы питания и все остальное, что вы создали. Этого нельзя отменить! Вы уверены, что хотите это сделать?",
- "Description_Replace": "Изменить описание"
+ "Description_Replace": "Изменить описание",
+ "err_importing_recipe": "Произошла ошибка при импортировании рецепта!"
}
diff --git a/vue/src/utils/openapi/api.ts b/vue/src/utils/openapi/api.ts
index d61dbcb8..367811a3 100644
--- a/vue/src/utils/openapi/api.ts
+++ b/vue/src/utils/openapi/api.ts
@@ -4537,6 +4537,18 @@ export interface Space {
* @memberof Space
*/
image?: RecipeFile | null;
+ /**
+ *
+ * @type {RecipeFile}
+ * @memberof Space
+ */
+ nav_logo?: RecipeFile | null;
+ /**
+ *
+ * @type {RecipeFile}
+ * @memberof Space
+ */
+ space_theme?: RecipeFile | null;
/**
*
* @type {boolean}
@@ -5124,7 +5136,19 @@ export interface UserPreference {
* @type {string}
* @memberof UserPreference
*/
- nav_color?: UserPreferenceNavColorEnum;
+ nav_bg_color?: string;
+ /**
+ *
+ * @type {string}
+ * @memberof UserPreference
+ */
+ nav_text_color?: UserPreferenceNavTextColorEnum;
+ /**
+ *
+ * @type {boolean}
+ * @memberof UserPreference
+ */
+ nav_show_logo?: boolean;
/**
*
* @type {string}
@@ -5160,7 +5184,7 @@ export interface UserPreference {
* @type {boolean}
* @memberof UserPreference
*/
- sticky_navbar?: boolean;
+ nav_sticky?: boolean;
/**
*
* @type {number}
@@ -5281,13 +5305,7 @@ export enum UserPreferenceThemeEnum {
* @export
* @enum {string}
*/
-export enum UserPreferenceNavColorEnum {
- Primary = 'PRIMARY',
- Secondary = 'SECONDARY',
- Success = 'SUCCESS',
- Info = 'INFO',
- Warning = 'WARNING',
- Danger = 'DANGER',
+export enum UserPreferenceNavTextColorEnum {
Light = 'LIGHT',
Dark = 'DARK'
}