mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-06 22:58:19 -05:00
Merge branch 'develop' into feature/unit-conversion
This commit is contained in:
@@ -5,6 +5,7 @@ from zipfile import ZipFile
|
||||
|
||||
from cookbook.helper.image_processing import get_filetype
|
||||
from cookbook.helper.ingredient_parser import IngredientParser
|
||||
from cookbook.helper.recipe_url_import import parse_servings, parse_servings_text, parse_time
|
||||
from cookbook.integration.integration import Integration
|
||||
from cookbook.models import Ingredient, Recipe, Step
|
||||
|
||||
@@ -23,41 +24,60 @@ class Mealie(Integration):
|
||||
name=recipe_json['name'].strip(), description=description,
|
||||
created_by=self.request.user, internal=True, space=self.request.space)
|
||||
|
||||
# TODO parse times (given in PT2H3M )
|
||||
# @vabene check recipe_url_import.iso_duration_to_minutes I think it does what you are looking for
|
||||
|
||||
ingredients_added = False
|
||||
for s in recipe_json['recipe_instructions']:
|
||||
step = Step.objects.create(
|
||||
instruction=s['text'], space=self.request.space,
|
||||
)
|
||||
if not ingredients_added:
|
||||
ingredients_added = True
|
||||
|
||||
if len(recipe_json['description'].strip()) > 500:
|
||||
step.instruction = recipe_json['description'].strip() + '\n\n' + step.instruction
|
||||
|
||||
ingredient_parser = IngredientParser(self.request, True)
|
||||
for ingredient in recipe_json['recipe_ingredient']:
|
||||
try:
|
||||
if ingredient['food']:
|
||||
f = ingredient_parser.get_food(ingredient['food'])
|
||||
u = ingredient_parser.get_unit(ingredient['unit'])
|
||||
amount = ingredient['quantity']
|
||||
note = ingredient['note']
|
||||
original_text = None
|
||||
else:
|
||||
amount, unit, food, note = ingredient_parser.parse(ingredient['note'])
|
||||
f = ingredient_parser.get_food(food)
|
||||
u = ingredient_parser.get_unit(unit)
|
||||
original_text = ingredient['note']
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note, original_text=original_text, space=self.request.space,
|
||||
))
|
||||
except Exception:
|
||||
pass
|
||||
step = Step.objects.create(instruction=s['text'], space=self.request.space, )
|
||||
recipe.steps.add(step)
|
||||
|
||||
step = recipe.steps.first()
|
||||
if not step: # if there is no step in the exported data
|
||||
step = Step.objects.create(instruction='', space=self.request.space, )
|
||||
recipe.steps.add(step)
|
||||
|
||||
if len(recipe_json['description'].strip()) > 500:
|
||||
step.instruction = recipe_json['description'].strip() + '\n\n' + step.instruction
|
||||
|
||||
ingredient_parser = IngredientParser(self.request, True)
|
||||
for ingredient in recipe_json['recipe_ingredient']:
|
||||
try:
|
||||
if ingredient['food']:
|
||||
f = ingredient_parser.get_food(ingredient['food'])
|
||||
u = ingredient_parser.get_unit(ingredient['unit'])
|
||||
amount = ingredient['quantity']
|
||||
note = ingredient['note']
|
||||
original_text = None
|
||||
else:
|
||||
amount, unit, food, note = ingredient_parser.parse(ingredient['note'])
|
||||
f = ingredient_parser.get_food(food)
|
||||
u = ingredient_parser.get_unit(unit)
|
||||
original_text = ingredient['note']
|
||||
step.ingredients.add(Ingredient.objects.create(
|
||||
food=f, unit=u, amount=amount, note=note, original_text=original_text, space=self.request.space,
|
||||
))
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if 'notes' in recipe_json and len(recipe_json['notes']) > 0:
|
||||
notes_text = "#### Notes \n\n"
|
||||
for n in recipe_json['notes']:
|
||||
notes_text += f'{n["text"]} \n'
|
||||
|
||||
step = Step.objects.create(
|
||||
instruction=notes_text, space=self.request.space,
|
||||
)
|
||||
recipe.steps.add(step)
|
||||
|
||||
if 'recipe_yield' in recipe_json:
|
||||
recipe.servings = parse_servings(recipe_json['recipe_yield'])
|
||||
recipe.servings_text = parse_servings_text(recipe_json['recipe_yield'])
|
||||
|
||||
if 'total_time' in recipe_json and recipe_json['total_time'] is not None:
|
||||
recipe.working_time = parse_time(recipe_json['total_time'])
|
||||
|
||||
if 'org_url' in recipe_json:
|
||||
recipe.source_url = recipe_json['org_url']
|
||||
|
||||
recipe.save()
|
||||
|
||||
for f in self.files:
|
||||
if '.zip' in f['name']:
|
||||
import_zip = ZipFile(f['file'])
|
||||
|
||||
@@ -5,6 +5,9 @@ import re
|
||||
from gettext import gettext as _
|
||||
from io import BytesIO
|
||||
|
||||
import requests
|
||||
import validators
|
||||
|
||||
from cookbook.helper.ingredient_parser import IngredientParser
|
||||
from cookbook.helper.recipe_url_import import parse_servings, parse_servings_text
|
||||
from cookbook.integration.integration import Integration
|
||||
@@ -81,7 +84,14 @@ class Paprika(Integration):
|
||||
|
||||
recipe.steps.add(step)
|
||||
|
||||
if recipe_json.get("photo_data", None):
|
||||
self.import_recipe_image(recipe, BytesIO(base64.b64decode(recipe_json['photo_data'])), filetype='.jpeg')
|
||||
try:
|
||||
if recipe_json.get("image_url", None):
|
||||
url = recipe_json.get("image_url", None)
|
||||
if validators.url(url, public=True):
|
||||
response = requests.get(url)
|
||||
self.import_recipe_image(recipe, BytesIO(response.content))
|
||||
except:
|
||||
if recipe_json.get("photo_data", None):
|
||||
self.import_recipe_image(recipe, BytesIO(base64.b64decode(recipe_json['photo_data'])), filetype='.jpeg')
|
||||
|
||||
return recipe
|
||||
|
||||
@@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2022-04-29 18:42+0200\n"
|
||||
"PO-Revision-Date: 2022-08-18 14:32+0000\n"
|
||||
"Last-Translator: Mathias Rasmussen <math625f@gmail.com>\n"
|
||||
"PO-Revision-Date: 2023-03-06 10:55+0000\n"
|
||||
"Last-Translator: Anders Obro <oebro@duck.com>\n"
|
||||
"Language-Team: Danish <http://translate.tandoor.dev/projects/tandoor/"
|
||||
"recipes-backend/da/>\n"
|
||||
"Language: da\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.10.1\n"
|
||||
"X-Generator: Weblate 4.15\n"
|
||||
|
||||
#: .\cookbook\filters.py:23 .\cookbook\templates\forms\ingredients.html:34
|
||||
#: .\cookbook\templates\space.html:49 .\cookbook\templates\stats.html:28
|
||||
@@ -2122,9 +2122,9 @@ msgid ""
|
||||
"return more results than needed to make sure you find what you are looking "
|
||||
"for."
|
||||
msgstr ""
|
||||
"Find hvad du har brug for selvom opskriften har stavefejl. Kan måske "
|
||||
"returnere flere resultater end du har brug for, for at være sikker på at du "
|
||||
"finder hvad du leder efter."
|
||||
"Find hvad du har brug for, selvom opskriften har stavefejl. Kan måske "
|
||||
"returnere flere resultater end du har brug for, for at være sikker på, at du "
|
||||
"finder, hvad du leder efter."
|
||||
|
||||
#: .\cookbook\templates\settings.html:182
|
||||
msgid "This is the default behavior"
|
||||
@@ -2196,8 +2196,7 @@ msgid ""
|
||||
"You can sign in to your account using any of the following third party\n"
|
||||
" accounts:"
|
||||
msgstr ""
|
||||
"Du kan logge ind på din konto med enhver af de følgende tredjepartsapps\n"
|
||||
" kontoer:"
|
||||
"Du kan logge ind på din konto med enhver af de følgende tredjepartskontoer:"
|
||||
|
||||
#: .\cookbook\templates\socialaccount\connections.html:52
|
||||
msgid ""
|
||||
@@ -2212,7 +2211,7 @@ msgstr "Tilføj en tredjepartskonto"
|
||||
|
||||
#: .\cookbook\templates\socialaccount\signup.html:5
|
||||
msgid "Signup"
|
||||
msgstr "Registrering"
|
||||
msgstr "Registrer"
|
||||
|
||||
#: .\cookbook\templates\socialaccount\signup.html:10
|
||||
#, python-format
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-19 19:14+0100\n"
|
||||
"PO-Revision-Date: 2022-08-12 21:32+0000\n"
|
||||
"Last-Translator: Thorin <thorin8@hotmail.com>\n"
|
||||
"PO-Revision-Date: 2023-03-13 06:55+0000\n"
|
||||
"Last-Translator: Amara Ude <apu24@drexel.edu>\n"
|
||||
"Language-Team: Spanish <http://translate.tandoor.dev/projects/tandoor/"
|
||||
"recipes-backend/es/>\n"
|
||||
"Language: es\n"
|
||||
@@ -23,7 +23,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.10.1\n"
|
||||
"X-Generator: Weblate 4.15\n"
|
||||
|
||||
#: .\cookbook\forms.py:52
|
||||
msgid "Default unit"
|
||||
@@ -143,7 +143,7 @@ msgstr ""
|
||||
|
||||
#: .\cookbook\forms.py:84
|
||||
msgid "Exclude ingredients that are on hand."
|
||||
msgstr ""
|
||||
msgstr "Excluir ingredientes que están disponibles."
|
||||
|
||||
#: .\cookbook\forms.py:85
|
||||
msgid "Will optimize the UI for use with your left hand."
|
||||
@@ -296,36 +296,49 @@ msgid ""
|
||||
"Use fuzzy matching on units, keywords and ingredients when editing and "
|
||||
"importing recipes."
|
||||
msgstr ""
|
||||
"Utilizar comparación difusa en unidades, palabras clave e ingredientes al "
|
||||
"editar e importar recetas."
|
||||
|
||||
#: .\cookbook\forms.py:446
|
||||
msgid ""
|
||||
"Fields to search ignoring accents. Selecting this option can improve or "
|
||||
"degrade search quality depending on language"
|
||||
msgstr ""
|
||||
"Campos de búsqueda ignorando acentos. La selección de esta opción puede "
|
||||
"mejorar o degradar la calidad de la búsqueda dependiendo del idioma"
|
||||
|
||||
#: .\cookbook\forms.py:448
|
||||
msgid ""
|
||||
"Fields to search for partial matches. (e.g. searching for 'Pie' will return "
|
||||
"'pie' and 'piece' and 'soapie')"
|
||||
msgstr ""
|
||||
"Campos de búsqueda para coincidencias parciales. (por ejemplo, buscar 'Pie' "
|
||||
"devolverá 'pie' y 'piece' y 'soapie')"
|
||||
|
||||
#: .\cookbook\forms.py:450
|
||||
msgid ""
|
||||
"Fields to search for beginning of word matches. (e.g. searching for 'sa' "
|
||||
"will return 'salad' and 'sandwich')"
|
||||
msgstr ""
|
||||
"Campos de búsqueda para coincidencias al principio de la palabra. (por "
|
||||
"ejemplo, buscar 'sa' devolverá 'ensalada' y 'sándwich')"
|
||||
|
||||
#: .\cookbook\forms.py:452
|
||||
msgid ""
|
||||
"Fields to 'fuzzy' search. (e.g. searching for 'recpie' will find 'recipe'.) "
|
||||
"Note: this option will conflict with 'web' and 'raw' methods of search."
|
||||
msgstr ""
|
||||
"Campos para búsqueda \"difusa\". (por ejemplo, buscar 'recpie' encontrará "
|
||||
"'receta'). Nota: esta opción entrará en conflicto con los métodos de "
|
||||
"búsqueda 'web' y 'raw'."
|
||||
|
||||
#: .\cookbook\forms.py:454
|
||||
msgid ""
|
||||
"Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods "
|
||||
"only function with fulltext fields."
|
||||
msgstr ""
|
||||
"Campos para búsqueda de texto completo. Nota: los métodos de búsqueda 'web', "
|
||||
"'phrase' y 'raw' solo funcionan con campos de texto completo."
|
||||
|
||||
#: .\cookbook\forms.py:458
|
||||
msgid "Search Method"
|
||||
@@ -333,25 +346,23 @@ msgstr "Método de Búsqueda"
|
||||
|
||||
#: .\cookbook\forms.py:459
|
||||
msgid "Fuzzy Lookups"
|
||||
msgstr ""
|
||||
msgstr "Búsquedas difusas"
|
||||
|
||||
#: .\cookbook\forms.py:460
|
||||
msgid "Ignore Accent"
|
||||
msgstr ""
|
||||
msgstr "Ignorar Acento"
|
||||
|
||||
#: .\cookbook\forms.py:461
|
||||
msgid "Partial Match"
|
||||
msgstr ""
|
||||
msgstr "Coincidencia Parcial"
|
||||
|
||||
#: .\cookbook\forms.py:462
|
||||
msgid "Starts With"
|
||||
msgstr ""
|
||||
msgstr "Comienza Con"
|
||||
|
||||
#: .\cookbook\forms.py:463
|
||||
#, fuzzy
|
||||
#| msgid "Search"
|
||||
msgid "Fuzzy Search"
|
||||
msgstr "Buscar"
|
||||
msgstr "Búsqueda Difusa"
|
||||
|
||||
#: .\cookbook\forms.py:464
|
||||
msgid "Full Text"
|
||||
@@ -362,42 +373,53 @@ msgid ""
|
||||
"Users will see all items you add to your shopping list. They must add you "
|
||||
"to see items on their list."
|
||||
msgstr ""
|
||||
"Los usuarios verán todos los elementos que agregues a tu lista de compras. "
|
||||
"Deben agregarte para ver los elementos en su lista."
|
||||
|
||||
#: .\cookbook\forms.py:495
|
||||
msgid ""
|
||||
"When adding a meal plan to the shopping list (manually or automatically), "
|
||||
"include all related recipes."
|
||||
msgstr ""
|
||||
"Al agregar un plan de comidas a la lista de compras (manualmente o "
|
||||
"automáticamente), incluir todas las recetas relacionadas."
|
||||
|
||||
#: .\cookbook\forms.py:496
|
||||
msgid ""
|
||||
"When adding a meal plan to the shopping list (manually or automatically), "
|
||||
"exclude ingredients that are on hand."
|
||||
msgstr ""
|
||||
"Al agregar un plan de comidas a la lista de compras (manualmente o "
|
||||
"automáticamente), excluir los ingredientes que están disponibles."
|
||||
|
||||
#: .\cookbook\forms.py:497
|
||||
msgid "Default number of hours to delay a shopping list entry."
|
||||
msgstr ""
|
||||
"Número predeterminado de horas para retrasar una entrada en la lista de "
|
||||
"compras."
|
||||
|
||||
#: .\cookbook\forms.py:498
|
||||
msgid "Filter shopping list to only include supermarket categories."
|
||||
msgstr ""
|
||||
"Filtrar la lista de compras para incluir solo categorías de supermercados."
|
||||
|
||||
#: .\cookbook\forms.py:499
|
||||
msgid "Days of recent shopping list entries to display."
|
||||
msgstr ""
|
||||
msgstr "Días de entradas recientes en la lista de compras a mostrar."
|
||||
|
||||
#: .\cookbook\forms.py:500
|
||||
msgid "Mark food 'On Hand' when checked off shopping list."
|
||||
msgstr ""
|
||||
"Marcar los alimentos como 'Disponible' cuando se marca en la lista de "
|
||||
"compras."
|
||||
|
||||
#: .\cookbook\forms.py:501
|
||||
msgid "Delimiter to use for CSV exports."
|
||||
msgstr ""
|
||||
msgstr "Delimitador a utilizar para exportaciones CSV."
|
||||
|
||||
#: .\cookbook\forms.py:502
|
||||
msgid "Prefix to add when copying list to the clipboard."
|
||||
msgstr ""
|
||||
msgstr "Prefijo a agregar al copiar la lista al portapapeles."
|
||||
|
||||
#: .\cookbook\forms.py:506
|
||||
msgid "Share Shopping List"
|
||||
@@ -405,23 +427,23 @@ msgstr "Compartir Lista de la Compra"
|
||||
|
||||
#: .\cookbook\forms.py:507
|
||||
msgid "Autosync"
|
||||
msgstr ""
|
||||
msgstr "Autosincronización"
|
||||
|
||||
#: .\cookbook\forms.py:508
|
||||
msgid "Auto Add Meal Plan"
|
||||
msgstr ""
|
||||
msgstr "Agregar Plan de Comidas automáticamente"
|
||||
|
||||
#: .\cookbook\forms.py:509
|
||||
msgid "Exclude On Hand"
|
||||
msgstr ""
|
||||
msgstr "Excluir Disponible"
|
||||
|
||||
#: .\cookbook\forms.py:510
|
||||
msgid "Include Related"
|
||||
msgstr ""
|
||||
msgstr "Incluir Relacionados"
|
||||
|
||||
#: .\cookbook\forms.py:511
|
||||
msgid "Default Delay Hours"
|
||||
msgstr ""
|
||||
msgstr "Horas de Retraso Predeterminadas"
|
||||
|
||||
#: .\cookbook\forms.py:512
|
||||
msgid "Filter to Supermarket"
|
||||
@@ -429,11 +451,11 @@ msgstr "Filtrar según Supermercado"
|
||||
|
||||
#: .\cookbook\forms.py:513
|
||||
msgid "Recent Days"
|
||||
msgstr ""
|
||||
msgstr "Días Recientes"
|
||||
|
||||
#: .\cookbook\forms.py:514
|
||||
msgid "CSV Delimiter"
|
||||
msgstr ""
|
||||
msgstr "Delimitador CSV"
|
||||
|
||||
#: .\cookbook\forms.py:515
|
||||
msgid "List Prefix"
|
||||
@@ -441,21 +463,19 @@ msgstr "Prefijo de la lista"
|
||||
|
||||
#: .\cookbook\forms.py:516
|
||||
msgid "Auto On Hand"
|
||||
msgstr ""
|
||||
msgstr "Auto en existencia"
|
||||
|
||||
#: .\cookbook\forms.py:526
|
||||
msgid "Reset Food Inheritance"
|
||||
msgstr ""
|
||||
msgstr "Restablecer la herencia de alimentos"
|
||||
|
||||
#: .\cookbook\forms.py:527
|
||||
msgid "Reset all food to inherit the fields configured."
|
||||
msgstr ""
|
||||
msgstr "Reiniciar todos los alimentos para heredar los campos configurados."
|
||||
|
||||
#: .\cookbook\forms.py:539
|
||||
#, fuzzy
|
||||
#| msgid "Food that should be replaced."
|
||||
msgid "Fields on food that should be inherited by default."
|
||||
msgstr "Alimento que se va a reemplazar."
|
||||
msgstr "Campos en los alimentos que deben ser heredados por defecto."
|
||||
|
||||
#: .\cookbook\forms.py:540
|
||||
msgid "Show recipe counts on search filters"
|
||||
@@ -464,12 +484,15 @@ msgstr "Mostrar cantidad de recetas en los filtros de búsquedas"
|
||||
#: .\cookbook\forms.py:541
|
||||
msgid "Use the plural form for units and food inside this space."
|
||||
msgstr ""
|
||||
"Utilice la forma plural para las unidades y alimentos dentro de este espacio."
|
||||
|
||||
#: .\cookbook\helper\AllAuthCustomAdapter.py:39
|
||||
msgid ""
|
||||
"In order to prevent spam, the requested email was not send. Please wait a "
|
||||
"few minutes and try again."
|
||||
msgstr ""
|
||||
"Para prevenir el spam, el correo electrónico solicitado no se envió. Por "
|
||||
"favor, espere unos minutos e inténtelo de nuevo."
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:164
|
||||
#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:114
|
||||
@@ -498,7 +521,7 @@ msgstr "¡No puede interactuar con este objeto ya que no es de tu propiedad!"
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:403
|
||||
msgid "You have reached the maximum number of recipes for your space."
|
||||
msgstr ""
|
||||
msgstr "Ha alcanzado el número máximo de recetas para su espacio."
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:415
|
||||
msgid "You have more users than allowed in your space."
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-19 19:14+0100\n"
|
||||
"PO-Revision-Date: 2023-02-24 02:55+0000\n"
|
||||
"Last-Translator: JFL <moijesuistoitues+d85m0tz6@gmail.com>\n"
|
||||
"PO-Revision-Date: 2023-03-13 06:55+0000\n"
|
||||
"Last-Translator: Jin Zhang <JinLZhang278@hotmail.com>\n"
|
||||
"Language-Team: French <http://translate.tandoor.dev/projects/tandoor/"
|
||||
"recipes-backend/fr/>\n"
|
||||
"Language: fr\n"
|
||||
@@ -167,7 +167,7 @@ msgstr "Nom"
|
||||
|
||||
#: .\cookbook\forms.py:124 .\cookbook\forms.py:297 .\cookbook\views\lists.py:88
|
||||
msgid "Keywords"
|
||||
msgstr "mots-clés"
|
||||
msgstr "Mots-clés"
|
||||
|
||||
#: .\cookbook\forms.py:125
|
||||
msgid "Preparation time in minutes"
|
||||
@@ -288,16 +288,12 @@ msgstr ""
|
||||
"que davantage de fautes de frappe sont ignorées)."
|
||||
|
||||
#: .\cookbook\forms.py:443
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Select type method of search. Click <a href=\"/docs/search/\">here</a> "
|
||||
#| "for full desciption of choices."
|
||||
msgid ""
|
||||
"Select type method of search. Click <a href=\"/docs/search/\">here</a> for "
|
||||
"full description of choices."
|
||||
msgstr ""
|
||||
"Sélectionner la méthode de recherche. Cliquer <a href=\"/docs/search/"
|
||||
"\">ici</a> pour une description complète des choix."
|
||||
"Sélectionner la méthode de recherche. Cliquer <a href=\"/docs/search/\""
|
||||
">ici</a> pour une description complète des choix."
|
||||
|
||||
#: .\cookbook\forms.py:444
|
||||
msgid ""
|
||||
@@ -407,6 +403,8 @@ msgstr ""
|
||||
#: .\cookbook\forms.py:497
|
||||
msgid "Default number of hours to delay a shopping list entry."
|
||||
msgstr ""
|
||||
"Nombre d'heures par défaut pour retarder l'ajoût d'un article à la liste de "
|
||||
"courses."
|
||||
|
||||
#: .\cookbook\forms.py:498
|
||||
msgid "Filter shopping list to only include supermarket categories."
|
||||
@@ -416,7 +414,7 @@ msgstr ""
|
||||
|
||||
#: .\cookbook\forms.py:499
|
||||
msgid "Days of recent shopping list entries to display."
|
||||
msgstr ""
|
||||
msgstr "Jours des entrées récentes de la liste de courses à afficher."
|
||||
|
||||
#: .\cookbook\forms.py:500
|
||||
msgid "Mark food 'On Hand' when checked off shopping list."
|
||||
@@ -453,7 +451,7 @@ msgstr "Inclure recettes connexes"
|
||||
|
||||
#: .\cookbook\forms.py:511
|
||||
msgid "Default Delay Hours"
|
||||
msgstr ""
|
||||
msgstr "Heures de retard par défaut"
|
||||
|
||||
#: .\cookbook\forms.py:512
|
||||
msgid "Filter to Supermarket"
|
||||
@@ -477,7 +475,7 @@ msgstr "Disponible automatique"
|
||||
|
||||
#: .\cookbook\forms.py:526
|
||||
msgid "Reset Food Inheritance"
|
||||
msgstr ""
|
||||
msgstr "Réinitialiser l'héritage alimentaire"
|
||||
|
||||
#: .\cookbook\forms.py:527
|
||||
msgid "Reset all food to inherit the fields configured."
|
||||
@@ -545,7 +543,7 @@ msgstr ""
|
||||
|
||||
#: .\cookbook\helper\recipe_search.py:570
|
||||
msgid "One of queryset or hash_key must be provided"
|
||||
msgstr ""
|
||||
msgstr "Il est nécessaire de fournir soit le queryset, soit la clé de hachage"
|
||||
|
||||
#: .\cookbook\helper\shopping_helper.py:152
|
||||
msgid "You must supply a servings size"
|
||||
@@ -562,8 +560,9 @@ msgid "Favorite"
|
||||
msgstr "Favori"
|
||||
|
||||
#: .\cookbook\integration\copymethat.py:50
|
||||
#, fuzzy
|
||||
msgid "I made this"
|
||||
msgstr ""
|
||||
msgstr "J'ai fait ça"
|
||||
|
||||
#: .\cookbook\integration\integration.py:223
|
||||
msgid ""
|
||||
@@ -722,10 +721,8 @@ msgid "Description Replace"
|
||||
msgstr "Remplacer la Description"
|
||||
|
||||
#: .\cookbook\models.py:1231
|
||||
#, fuzzy
|
||||
#| msgid "Instructions"
|
||||
msgid "Instruction Replace"
|
||||
msgstr "Instructions"
|
||||
msgstr "Remplacer l'instruction"
|
||||
|
||||
#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36
|
||||
#: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48
|
||||
@@ -750,7 +747,7 @@ msgstr "Vous avez atteint votre limite de téléversement de fichiers."
|
||||
|
||||
#: .\cookbook\serializer.py:291
|
||||
msgid "Cannot modify Space owner permission."
|
||||
msgstr ""
|
||||
msgstr "Impossible de modifier les permissions du propriétaire de groupe."
|
||||
|
||||
#: .\cookbook\serializer.py:1085
|
||||
msgid "Hello"
|
||||
@@ -806,6 +803,8 @@ msgstr ""
|
||||
msgid ""
|
||||
"Providing a list_recipe ID and servings of 0 will delete that shopping list."
|
||||
msgstr ""
|
||||
"Fournir un identifiant de liste de courses et un nombre de portions de 0 "
|
||||
"supprimera cette liste de courses."
|
||||
|
||||
#: .\cookbook\serializer.py:1247
|
||||
msgid "Amount of food to add to the shopping list"
|
||||
@@ -816,8 +815,11 @@ msgid "ID of unit to use for the shopping list"
|
||||
msgstr "ID de l’unité à utiliser pour la liste de courses"
|
||||
|
||||
#: .\cookbook\serializer.py:1251
|
||||
#, fuzzy
|
||||
msgid "When set to true will delete all food from active shopping lists."
|
||||
msgstr ""
|
||||
"Lorsqu'il est défini sur \"true\", tous les aliments des listes de courses "
|
||||
"actives seront supprimés."
|
||||
|
||||
#: .\cookbook\tables.py:61 .\cookbook\tables.py:75
|
||||
#: .\cookbook\templates\generic\delete_template.html:7
|
||||
@@ -1239,7 +1241,7 @@ msgstr "Vous utilisez la version gratuite de Tandoor"
|
||||
|
||||
#: .\cookbook\templates\base.html:361
|
||||
msgid "Upgrade Now"
|
||||
msgstr ""
|
||||
msgstr "Mettez à jour maintenant"
|
||||
|
||||
#: .\cookbook\templates\batch\edit.html:6
|
||||
msgid "Batch edit Category"
|
||||
@@ -1333,8 +1335,9 @@ msgid "Are you sure you want to delete the %(title)s: <b>%(object)s</b> "
|
||||
msgstr "Êtes-vous sûr(e) de vouloir supprimer %(title)s : <b>%(object)s</b> "
|
||||
|
||||
#: .\cookbook\templates\generic\delete_template.html:22
|
||||
#, fuzzy
|
||||
msgid "This cannot be undone!"
|
||||
msgstr ""
|
||||
msgstr "Cela ne peut pas être annulé !"
|
||||
|
||||
#: .\cookbook\templates\generic\delete_template.html:27
|
||||
msgid "Protected"
|
||||
@@ -1351,7 +1354,7 @@ msgstr "Annuler"
|
||||
#: .\cookbook\templates\generic\edit_template.html:6
|
||||
#: .\cookbook\templates\generic\edit_template.html:14
|
||||
msgid "Edit"
|
||||
msgstr "modifier"
|
||||
msgstr "Modifier"
|
||||
|
||||
#: .\cookbook\templates\generic\edit_template.html:32
|
||||
msgid "View"
|
||||
@@ -1499,8 +1502,6 @@ msgstr ""
|
||||
|
||||
#: .\cookbook\templates\markdown_info.html:57
|
||||
#: .\cookbook\templates\markdown_info.html:73
|
||||
#, fuzzy
|
||||
#| msgid "or by leaving a blank line inbetween."
|
||||
msgid "or by leaving a blank line in between."
|
||||
msgstr "ou en laissant une ligne vide entre deux."
|
||||
|
||||
@@ -1524,16 +1525,12 @@ msgid "Lists"
|
||||
msgstr "Listes"
|
||||
|
||||
#: .\cookbook\templates\markdown_info.html:85
|
||||
#, fuzzy
|
||||
#| msgid ""
|
||||
#| "Lists can ordered or unorderd. It is <b>important to leave a blank line "
|
||||
#| "before the list!</b>"
|
||||
msgid ""
|
||||
"Lists can ordered or unordered. It is <b>important to leave a blank line "
|
||||
"before the list!</b>"
|
||||
msgstr ""
|
||||
"Les listes peuvent être ordonnées ou non. Il est <b>important de laisser une "
|
||||
"ligne vide avant la liste !</b>"
|
||||
"ligne vide avant la liste!</b>"
|
||||
|
||||
#: .\cookbook\templates\markdown_info.html:87
|
||||
#: .\cookbook\templates\markdown_info.html:108
|
||||
@@ -2076,10 +2073,8 @@ msgstr "Créer un compte superutilisateur"
|
||||
|
||||
#: .\cookbook\templates\socialaccount\authentication_error.html:7
|
||||
#: .\cookbook\templates\socialaccount\authentication_error.html:23
|
||||
#, fuzzy
|
||||
#| msgid "Social Login"
|
||||
msgid "Social Network Login Failure"
|
||||
msgstr "Connexion par réseau social"
|
||||
msgstr "Échec de la connexion au réseau social"
|
||||
|
||||
#: .\cookbook\templates\socialaccount\authentication_error.html:25
|
||||
msgid ""
|
||||
@@ -2130,16 +2125,20 @@ msgstr "Connecter %(provider)s"
|
||||
#, python-format
|
||||
msgid "You are about to connect a new third party account from %(provider)s."
|
||||
msgstr ""
|
||||
"Vous êtes sur le point de connecter un nouveau compte tiers depuis "
|
||||
"%(provider)s."
|
||||
|
||||
#: .\cookbook\templates\socialaccount\login.html:13
|
||||
#, python-format
|
||||
msgid "Sign In Via %(provider)s"
|
||||
msgstr ""
|
||||
msgstr "Se connecter via %(provider)s"
|
||||
|
||||
#: .\cookbook\templates\socialaccount\login.html:15
|
||||
#, python-format
|
||||
msgid "You are about to sign in using a third party account from %(provider)s."
|
||||
msgstr ""
|
||||
"ous êtes sur le point de vous connecter en utilisant un compte tiers depuis "
|
||||
"%(provider)s."
|
||||
|
||||
#: .\cookbook\templates\socialaccount\login.html:20
|
||||
msgid "Continue"
|
||||
@@ -2204,10 +2203,8 @@ msgid "Owner"
|
||||
msgstr "Propriétaire"
|
||||
|
||||
#: .\cookbook\templates\space_overview.html:57
|
||||
#, fuzzy
|
||||
#| msgid "Create Space"
|
||||
msgid "Leave Space"
|
||||
msgstr "Créer un groupe"
|
||||
msgstr "Quitter le groupe"
|
||||
|
||||
#: .\cookbook\templates\space_overview.html:78
|
||||
#: .\cookbook\templates\space_overview.html:88
|
||||
@@ -2442,6 +2439,8 @@ msgstr "{obj.name} a été ajouté(e) à la liste de courses."
|
||||
#: .\cookbook\views\api.py:679
|
||||
msgid "ID of recipe a step is part of. For multiple repeat parameter."
|
||||
msgstr ""
|
||||
"Identifiant de la recette dont fait partie une étape. Pour plusieurs "
|
||||
"paramètres de répétition."
|
||||
|
||||
#: .\cookbook\views\api.py:681
|
||||
msgid "Query string matched (fuzzy) against object name."
|
||||
@@ -2608,8 +2607,6 @@ msgid "Bad URL Schema."
|
||||
msgstr "Mauvais schéma d’URL."
|
||||
|
||||
#: .\cookbook\views\api.py:1215
|
||||
#, fuzzy
|
||||
#| msgid "No useable data could be found."
|
||||
msgid "No usable data could be found."
|
||||
msgstr "Aucune information utilisable n'a été trouvée."
|
||||
|
||||
@@ -2725,10 +2722,8 @@ msgid "Shopping Categories"
|
||||
msgstr "Catégories de courses"
|
||||
|
||||
#: .\cookbook\views\lists.py:187
|
||||
#, fuzzy
|
||||
#| msgid "Filter"
|
||||
msgid "Custom Filters"
|
||||
msgstr "Filtre"
|
||||
msgstr "Filtre personnalisé"
|
||||
|
||||
#: .\cookbook\views\lists.py:224
|
||||
msgid "Steps"
|
||||
|
||||
@@ -13,16 +13,16 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-19 19:14+0100\n"
|
||||
"PO-Revision-Date: 2022-09-01 20:32+0000\n"
|
||||
"Last-Translator: 1k2 <tandoor@1k2.nl>\n"
|
||||
"Language-Team: Dutch <http://translate.tandoor.dev/projects/tandoor/recipes-"
|
||||
"backend/nl/>\n"
|
||||
"PO-Revision-Date: 2023-02-27 13:55+0000\n"
|
||||
"Last-Translator: Jesse <jesse.kamps@pm.me>\n"
|
||||
"Language-Team: Dutch <http://translate.tandoor.dev/projects/tandoor/"
|
||||
"recipes-backend/nl/>\n"
|
||||
"Language: nl\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.10.1\n"
|
||||
"X-Generator: Weblate 4.15\n"
|
||||
|
||||
#: .\cookbook\forms.py:52
|
||||
msgid "Default unit"
|
||||
@@ -473,7 +473,7 @@ msgstr "Toon recepten teller bij zoekfilters"
|
||||
|
||||
#: .\cookbook\forms.py:541
|
||||
msgid "Use the plural form for units and food inside this space."
|
||||
msgstr ""
|
||||
msgstr "Gebruik de meervoudsvorm voor eenheden en voedsel in deze ruimte."
|
||||
|
||||
#: .\cookbook\helper\AllAuthCustomAdapter.py:39
|
||||
msgid ""
|
||||
@@ -537,7 +537,7 @@ msgstr "Favoriet"
|
||||
|
||||
#: .\cookbook\integration\copymethat.py:50
|
||||
msgid "I made this"
|
||||
msgstr ""
|
||||
msgstr "Ik heb dit gemaakt"
|
||||
|
||||
#: .\cookbook\integration\integration.py:223
|
||||
msgid ""
|
||||
@@ -691,16 +691,12 @@ msgid "Keyword Alias"
|
||||
msgstr "Etiket alias"
|
||||
|
||||
#: .\cookbook\models.py:1231
|
||||
#, fuzzy
|
||||
#| msgid "Description"
|
||||
msgid "Description Replace"
|
||||
msgstr "Beschrijving"
|
||||
msgstr "Verrvang beschrijving"
|
||||
|
||||
#: .\cookbook\models.py:1231
|
||||
#, fuzzy
|
||||
#| msgid "Instructions"
|
||||
msgid "Instruction Replace"
|
||||
msgstr "Instructies"
|
||||
msgstr "Vervang instructies"
|
||||
|
||||
#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36
|
||||
#: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48
|
||||
@@ -725,7 +721,7 @@ msgstr "U heeft de uploadlimiet bereikt."
|
||||
|
||||
#: .\cookbook\serializer.py:291
|
||||
msgid "Cannot modify Space owner permission."
|
||||
msgstr ""
|
||||
msgstr "Kan de rechten van de ruimte-eigenaar niet wijzigen."
|
||||
|
||||
#: .\cookbook\serializer.py:1085
|
||||
msgid "Hello"
|
||||
@@ -1634,7 +1630,7 @@ msgstr "Terug"
|
||||
|
||||
#: .\cookbook\templates\profile.html:7
|
||||
msgid "Profile"
|
||||
msgstr ""
|
||||
msgstr "Profiel"
|
||||
|
||||
#: .\cookbook\templates\recipe_view.html:26
|
||||
msgid "by"
|
||||
@@ -2039,6 +2035,8 @@ msgstr "Verbind %(provider)s"
|
||||
#, python-format
|
||||
msgid "You are about to connect a new third party account from %(provider)s."
|
||||
msgstr ""
|
||||
"Je staat op het punt een nieuw derde partij account van %(provider)s te "
|
||||
"verbinden."
|
||||
|
||||
#: .\cookbook\templates\socialaccount\login.html:13
|
||||
#, python-format
|
||||
@@ -2049,6 +2047,8 @@ msgstr "Log in via %(provider)s"
|
||||
#, python-format
|
||||
msgid "You are about to sign in using a third party account from %(provider)s."
|
||||
msgstr ""
|
||||
"Je staat op het punt met een derde partij account van %(provider)s in te "
|
||||
"loggen."
|
||||
|
||||
#: .\cookbook\templates\socialaccount\login.html:20
|
||||
msgid "Continue"
|
||||
@@ -2092,7 +2092,7 @@ msgstr "Beheer abonnementen"
|
||||
|
||||
#: .\cookbook\templates\space_overview.html:13 .\cookbook\views\delete.py:216
|
||||
msgid "Space"
|
||||
msgstr "Space"
|
||||
msgstr "Ruimte"
|
||||
|
||||
#: .\cookbook\templates\space_overview.html:17
|
||||
msgid ""
|
||||
|
||||
@@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-01-19 19:14+0100\n"
|
||||
"PO-Revision-Date: 2022-08-23 13:32+0000\n"
|
||||
"PO-Revision-Date: 2023-02-26 13:15+0000\n"
|
||||
"Last-Translator: 吕楪 <thy@irithys.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <http://translate.tandoor.dev/projects/"
|
||||
"tandoor/recipes-backend/zh_Hans/>\n"
|
||||
@@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 4.10.1\n"
|
||||
"X-Generator: Weblate 4.15\n"
|
||||
|
||||
#: .\cookbook\forms.py:52
|
||||
msgid "Default unit"
|
||||
@@ -434,7 +434,7 @@ msgstr "显示搜索筛选器上的食谱计数"
|
||||
|
||||
#: .\cookbook\forms.py:541
|
||||
msgid "Use the plural form for units and food inside this space."
|
||||
msgstr ""
|
||||
msgstr "在此空间内使用复数形式表示单位和食物。"
|
||||
|
||||
#: .\cookbook\helper\AllAuthCustomAdapter.py:39
|
||||
msgid ""
|
||||
@@ -495,7 +495,7 @@ msgstr "喜欢"
|
||||
|
||||
#: .\cookbook\integration\copymethat.py:50
|
||||
msgid "I made this"
|
||||
msgstr ""
|
||||
msgstr "我做的"
|
||||
|
||||
#: .\cookbook\integration\integration.py:223
|
||||
msgid ""
|
||||
@@ -642,16 +642,12 @@ msgid "Keyword Alias"
|
||||
msgstr "关键词别名"
|
||||
|
||||
#: .\cookbook\models.py:1231
|
||||
#, fuzzy
|
||||
#| msgid "Description"
|
||||
msgid "Description Replace"
|
||||
msgstr "描述"
|
||||
|
||||
#: .\cookbook\models.py:1231
|
||||
#, fuzzy
|
||||
#| msgid "Instructions"
|
||||
msgid "Instruction Replace"
|
||||
msgstr "说明"
|
||||
msgstr "指示"
|
||||
|
||||
#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36
|
||||
#: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48
|
||||
@@ -1555,7 +1551,7 @@ msgstr "返回"
|
||||
|
||||
#: .\cookbook\templates\profile.html:7
|
||||
msgid "Profile"
|
||||
msgstr ""
|
||||
msgstr "简介"
|
||||
|
||||
#: .\cookbook\templates\recipe_view.html:26
|
||||
msgid "by"
|
||||
@@ -2173,10 +2169,9 @@ msgid "Cannot merge with the same object!"
|
||||
msgstr "无法与同一对象合并!"
|
||||
|
||||
#: .\cookbook\views\api.py:232
|
||||
#, fuzzy, python-brace-format
|
||||
#| msgid "No {self.basename} with id {target} exists"
|
||||
#, python-brace-format
|
||||
msgid "No {self.basename} with id {target} exists"
|
||||
msgstr "不存在 ID 为 {pk} 的 {self.basename}"
|
||||
msgstr "不存在 ID 为 {target} 的 {self.basename}"
|
||||
|
||||
#: .\cookbook\views\api.py:237
|
||||
msgid "Cannot merge with child object!"
|
||||
|
||||
@@ -8,14 +8,16 @@ msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-06-12 20:30+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"PO-Revision-Date: 2023-03-12 02:55+0000\n"
|
||||
"Last-Translator: Feng Zhong <fewoodse@gmail.com>\n"
|
||||
"Language-Team: Chinese (Traditional) <http://translate.tandoor.dev/projects/"
|
||||
"tandoor/recipes-backend/zh_Hant/>\n"
|
||||
"Language: zh_Hant\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Weblate 4.15\n"
|
||||
|
||||
#: .\cookbook\filters.py:23 .\cookbook\templates\base.html:98
|
||||
#: .\cookbook\templates\forms\edit_internal_recipe.html:246
|
||||
@@ -23,41 +25,41 @@ msgstr ""
|
||||
#: .\cookbook\templates\space.html:37 .\cookbook\templates\stats.html:28
|
||||
#: .\cookbook\templates\url_import.html:270 .\cookbook\views\lists.py:67
|
||||
msgid "Ingredients"
|
||||
msgstr ""
|
||||
msgstr "食材"
|
||||
|
||||
#: .\cookbook\forms.py:49
|
||||
msgid ""
|
||||
"Color of the top navigation bar. Not all colors work with all themes, just "
|
||||
"try them out!"
|
||||
msgstr ""
|
||||
msgstr "頂部導航欄的顏色。並非所有的顏色都適用於所有的主題,只要試一試就可以了!"
|
||||
|
||||
#: .\cookbook\forms.py:51
|
||||
msgid "Default Unit to be used when inserting a new ingredient into a recipe."
|
||||
msgstr ""
|
||||
msgstr "在菜譜中插入新食材時使用的默認單位。"
|
||||
|
||||
#: .\cookbook\forms.py:53
|
||||
msgid ""
|
||||
"Enables support for fractions in ingredient amounts (e.g. convert decimals "
|
||||
"to fractions automatically)"
|
||||
msgstr ""
|
||||
msgstr "啟用對食材數量的分數支持(例如自動將小數轉換為分數)"
|
||||
|
||||
#: .\cookbook\forms.py:56
|
||||
msgid ""
|
||||
"Users with whom newly created meal plan/shopping list entries should be "
|
||||
"shared by default."
|
||||
msgstr ""
|
||||
msgstr "默認情況下,將自動與用戶共享新創建的膳食計劃。"
|
||||
|
||||
#: .\cookbook\forms.py:58
|
||||
msgid "Show recently viewed recipes on search page."
|
||||
msgstr ""
|
||||
msgstr "在搜索頁面上查看最近看過的食譜。"
|
||||
|
||||
#: .\cookbook\forms.py:59
|
||||
msgid "Number of decimals to round ingredients."
|
||||
msgstr ""
|
||||
msgstr "四舍五入食材的小數點數量。"
|
||||
|
||||
#: .\cookbook\forms.py:60
|
||||
msgid "If you want to be able to create and see comments underneath recipes."
|
||||
msgstr ""
|
||||
msgstr "如果你希望能夠在菜譜下面創建並看到評論。"
|
||||
|
||||
#: .\cookbook\forms.py:62
|
||||
msgid ""
|
||||
@@ -66,22 +68,25 @@ msgid ""
|
||||
"Useful when shopping with multiple people but might use a little bit of "
|
||||
"mobile data. If lower than instance limit it is reset when saving."
|
||||
msgstr ""
|
||||
"設置為0將禁用自動同步。當查看購物清單時,清單會每隔幾秒鐘更新一次,以同步其他"
|
||||
"人可能做出的改變。在與多人一起購物時很有用,但可能會消耗一點移動數據。如果低"
|
||||
"於實例限制,它將在保存時被重置。"
|
||||
|
||||
#: .\cookbook\forms.py:65
|
||||
msgid "Makes the navbar stick to the top of the page."
|
||||
msgstr ""
|
||||
msgstr "使導航欄保持在頁面的頂部。"
|
||||
|
||||
#: .\cookbook\forms.py:81
|
||||
msgid ""
|
||||
"Both fields are optional. If none are given the username will be displayed "
|
||||
"instead"
|
||||
msgstr ""
|
||||
msgstr "這兩個字段都是可選的。如果沒有輸入,將顯示用戶名"
|
||||
|
||||
#: .\cookbook\forms.py:102 .\cookbook\forms.py:331
|
||||
#: .\cookbook\templates\forms\edit_internal_recipe.html:49
|
||||
#: .\cookbook\templates\url_import.html:154
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
msgstr "名字"
|
||||
|
||||
#: .\cookbook\forms.py:103 .\cookbook\forms.py:332
|
||||
#: .\cookbook\templates\base.html:105
|
||||
@@ -90,37 +95,37 @@ msgstr ""
|
||||
#: .\cookbook\templates\url_import.html:188
|
||||
#: .\cookbook\templates\url_import.html:573
|
||||
msgid "Keywords"
|
||||
msgstr ""
|
||||
msgstr "關鍵詞"
|
||||
|
||||
#: .\cookbook\forms.py:104
|
||||
msgid "Preparation time in minutes"
|
||||
msgstr ""
|
||||
msgstr "準備時間(分鐘)"
|
||||
|
||||
#: .\cookbook\forms.py:105
|
||||
msgid "Waiting time (cooking/baking) in minutes"
|
||||
msgstr ""
|
||||
msgstr "等候(烹飪、烘焙等)時間(分鐘)"
|
||||
|
||||
#: .\cookbook\forms.py:106 .\cookbook\forms.py:333
|
||||
msgid "Path"
|
||||
msgstr ""
|
||||
msgstr "路徑"
|
||||
|
||||
#: .\cookbook\forms.py:107
|
||||
msgid "Storage UID"
|
||||
msgstr ""
|
||||
msgstr "存儲ID"
|
||||
|
||||
#: .\cookbook\forms.py:133
|
||||
msgid "Default"
|
||||
msgstr ""
|
||||
msgstr "默認"
|
||||
|
||||
#: .\cookbook\forms.py:144 .\cookbook\templates\url_import.html:90
|
||||
msgid ""
|
||||
"To prevent duplicates recipes with the same name as existing ones are "
|
||||
"ignored. Check this box to import everything."
|
||||
msgstr ""
|
||||
msgstr "為防止重復,忽略與現有同名的菜譜。選中此框可導入所有內容(包括同名菜譜)。"
|
||||
|
||||
#: .\cookbook\forms.py:164
|
||||
msgid "New Unit"
|
||||
msgstr ""
|
||||
msgstr "新單位"
|
||||
|
||||
#: .\cookbook\forms.py:165
|
||||
msgid "New unit that other gets replaced by."
|
||||
@@ -128,15 +133,15 @@ msgstr ""
|
||||
|
||||
#: .\cookbook\forms.py:170
|
||||
msgid "Old Unit"
|
||||
msgstr ""
|
||||
msgstr "舊單位"
|
||||
|
||||
#: .\cookbook\forms.py:171
|
||||
msgid "Unit that should be replaced."
|
||||
msgstr ""
|
||||
msgstr "該被替換的單位。"
|
||||
|
||||
#: .\cookbook\forms.py:187
|
||||
msgid "New Food"
|
||||
msgstr ""
|
||||
msgstr "新食物"
|
||||
|
||||
#: .\cookbook\forms.py:188
|
||||
msgid "New food that other gets replaced by."
|
||||
@@ -144,85 +149,86 @@ msgstr ""
|
||||
|
||||
#: .\cookbook\forms.py:193
|
||||
msgid "Old Food"
|
||||
msgstr ""
|
||||
msgstr "舊食物"
|
||||
|
||||
#: .\cookbook\forms.py:194
|
||||
msgid "Food that should be replaced."
|
||||
msgstr ""
|
||||
msgstr "該被替換的食物。"
|
||||
|
||||
#: .\cookbook\forms.py:212
|
||||
msgid "Add your comment: "
|
||||
msgstr ""
|
||||
msgstr "發表評論。 "
|
||||
|
||||
#: .\cookbook\forms.py:253
|
||||
msgid "Leave empty for dropbox and enter app password for nextcloud."
|
||||
msgstr ""
|
||||
msgstr "Dropbox 留空並輸入 Nextcloud 應用密碼。"
|
||||
|
||||
#: .\cookbook\forms.py:260
|
||||
msgid "Leave empty for nextcloud and enter api token for dropbox."
|
||||
msgstr ""
|
||||
msgstr "Nextcloud 留空並輸入 Dropbox API 令牌。"
|
||||
|
||||
#: .\cookbook\forms.py:269
|
||||
msgid ""
|
||||
"Leave empty for dropbox and enter only base url for nextcloud (<code>/remote."
|
||||
"php/webdav/</code> is added automatically)"
|
||||
msgstr ""
|
||||
msgstr "Dropbox 留空並輸入基礎 Nextcloud 網址(<code>/remote.php/webdav/</code> "
|
||||
"會自動添加)"
|
||||
|
||||
#: .\cookbook\forms.py:307
|
||||
msgid "Search String"
|
||||
msgstr ""
|
||||
msgstr "搜索字符串"
|
||||
|
||||
#: .\cookbook\forms.py:334
|
||||
msgid "File ID"
|
||||
msgstr ""
|
||||
msgstr "文件編號"
|
||||
|
||||
#: .\cookbook\forms.py:370
|
||||
msgid "You must provide at least a recipe or a title."
|
||||
msgstr ""
|
||||
msgstr "你必須至少提供一份菜譜或一個標題。"
|
||||
|
||||
#: .\cookbook\forms.py:383
|
||||
msgid "You can list default users to share recipes with in the settings."
|
||||
msgstr ""
|
||||
msgstr "你可以在設置中列出默認用戶來分享菜譜。"
|
||||
|
||||
#: .\cookbook\forms.py:384
|
||||
#: .\cookbook\templates\forms\edit_internal_recipe.html:404
|
||||
msgid ""
|
||||
"You can use markdown to format this field. See the <a href=\"/docs/markdown/"
|
||||
"\">docs here</a>"
|
||||
msgstr ""
|
||||
msgstr "可以使用 Markdown 設置此字段格式。<a href=\"/docs/markdown/\">查看文檔</a>"
|
||||
|
||||
#: .\cookbook\forms.py:409
|
||||
msgid "Maximum number of users for this space reached."
|
||||
msgstr ""
|
||||
msgstr "已達到該空間的最大用戶數。"
|
||||
|
||||
#: .\cookbook\forms.py:415
|
||||
msgid "Email address already taken!"
|
||||
msgstr ""
|
||||
msgstr "電子郵件地址已被註冊!"
|
||||
|
||||
#: .\cookbook\forms.py:423
|
||||
msgid ""
|
||||
"An email address is not required but if present the invite link will be send "
|
||||
"to the user."
|
||||
msgstr ""
|
||||
msgstr "電子郵件地址不是必需的,但如果存在,邀請鏈接將被發送給用戶。"
|
||||
|
||||
#: .\cookbook\forms.py:438
|
||||
msgid "Name already taken."
|
||||
msgstr ""
|
||||
msgstr "名字已被占用。"
|
||||
|
||||
#: .\cookbook\forms.py:449
|
||||
msgid "Accept Terms and Privacy"
|
||||
msgstr ""
|
||||
msgstr "接受條款及隱私政策"
|
||||
|
||||
#: .\cookbook\helper\AllAuthCustomAdapter.py:30
|
||||
msgid ""
|
||||
"In order to prevent spam, the requested email was not send. Please wait a "
|
||||
"few minutes and try again."
|
||||
msgstr ""
|
||||
msgstr "為了防止垃圾郵件,所要求的電子郵件沒有被發送。請等待幾分鐘後再試。"
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:124
|
||||
#: .\cookbook\helper\permission_helper.py:144 .\cookbook\views\views.py:147
|
||||
msgid "You are not logged in and therefore cannot view this page!"
|
||||
msgstr ""
|
||||
msgstr "你还沒有登錄,因此不能查看這個頁面!"
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:127
|
||||
#: .\cookbook\helper\permission_helper.py:132
|
||||
@@ -234,18 +240,18 @@ msgstr ""
|
||||
#: .\cookbook\views\views.py:158 .\cookbook\views\views.py:165
|
||||
#: .\cookbook\views\views.py:253
|
||||
msgid "You do not have the required permissions to view this page!"
|
||||
msgstr ""
|
||||
msgstr "你沒有必要的權限來查看這個頁面!"
|
||||
|
||||
#: .\cookbook\helper\permission_helper.py:148
|
||||
#: .\cookbook\helper\permission_helper.py:170
|
||||
#: .\cookbook\helper\permission_helper.py:185
|
||||
msgid "You cannot interact with this object as it is not owned by you!"
|
||||
msgstr ""
|
||||
msgstr "你不能與此對象交互,因為它不屬於你!"
|
||||
|
||||
#: .\cookbook\helper\template_helper.py:60
|
||||
#: .\cookbook\helper\template_helper.py:62
|
||||
msgid "Could not parse template code."
|
||||
msgstr ""
|
||||
msgstr "無法解析模板代碼。"
|
||||
|
||||
#: .\cookbook\integration\integration.py:102
|
||||
#: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20
|
||||
@@ -258,40 +264,40 @@ msgstr ""
|
||||
#: .\cookbook\templates\url_import.html:604 .\cookbook\views\delete.py:60
|
||||
#: .\cookbook\views\edit.py:199
|
||||
msgid "Import"
|
||||
msgstr ""
|
||||
msgstr "導入"
|
||||
|
||||
#: .\cookbook\integration\integration.py:162
|
||||
msgid ""
|
||||
"Importer expected a .zip file. Did you choose the correct importer type for "
|
||||
"your data ?"
|
||||
msgstr ""
|
||||
msgstr "導入需要一個 .zip 文件。你是否為數據選擇了正確的導入器類型?"
|
||||
|
||||
#: .\cookbook\integration\integration.py:165
|
||||
msgid ""
|
||||
"An unexpected error occurred during the import. Please make sure you have "
|
||||
"uploaded a valid file."
|
||||
msgstr ""
|
||||
msgstr "在導入過程中發生了一個意外的錯誤。請確認你上傳的文件是否有效。"
|
||||
|
||||
#: .\cookbook\integration\integration.py:169
|
||||
msgid "The following recipes were ignored because they already existed:"
|
||||
msgstr ""
|
||||
msgstr "以下菜譜被忽略了,因為它們已經存在了:"
|
||||
|
||||
#: .\cookbook\integration\integration.py:173
|
||||
#, python-format
|
||||
msgid "Imported %s recipes."
|
||||
msgstr ""
|
||||
msgstr "導入了%s菜譜。"
|
||||
|
||||
#: .\cookbook\integration\paprika.py:46
|
||||
msgid "Notes"
|
||||
msgstr ""
|
||||
msgstr "說明"
|
||||
|
||||
#: .\cookbook\integration\paprika.py:49
|
||||
msgid "Nutritional Information"
|
||||
msgstr ""
|
||||
msgstr "營養信息"
|
||||
|
||||
#: .\cookbook\integration\paprika.py:53
|
||||
msgid "Source"
|
||||
msgstr ""
|
||||
msgstr "來源"
|
||||
|
||||
#: .\cookbook\integration\safron.py:23
|
||||
#: .\cookbook\templates\forms\edit_internal_recipe.html:79
|
||||
@@ -299,101 +305,101 @@ msgstr ""
|
||||
#: .\cookbook\templates\url_import.html:224
|
||||
#: .\cookbook\templates\url_import.html:455
|
||||
msgid "Servings"
|
||||
msgstr ""
|
||||
msgstr "份量"
|
||||
|
||||
#: .\cookbook\integration\safron.py:25
|
||||
msgid "Waiting time"
|
||||
msgstr ""
|
||||
msgstr "等待時間"
|
||||
|
||||
#: .\cookbook\integration\safron.py:27
|
||||
#: .\cookbook\templates\forms\edit_internal_recipe.html:73
|
||||
msgid "Preparation Time"
|
||||
msgstr ""
|
||||
msgstr "準備時間"
|
||||
|
||||
#: .\cookbook\integration\safron.py:29 .\cookbook\templates\base.html:78
|
||||
#: .\cookbook\templates\forms\ingredients.html:7
|
||||
#: .\cookbook\templates\index.html:7
|
||||
msgid "Cookbook"
|
||||
msgstr ""
|
||||
msgstr "菜譜"
|
||||
|
||||
#: .\cookbook\integration\safron.py:31
|
||||
msgid "Section"
|
||||
msgstr ""
|
||||
msgstr "部分"
|
||||
|
||||
#: .\cookbook\migrations\0047_auto_20200602_1133.py:14
|
||||
msgid "Breakfast"
|
||||
msgstr ""
|
||||
msgstr "早餐"
|
||||
|
||||
#: .\cookbook\migrations\0047_auto_20200602_1133.py:19
|
||||
msgid "Lunch"
|
||||
msgstr ""
|
||||
msgstr "午餐"
|
||||
|
||||
#: .\cookbook\migrations\0047_auto_20200602_1133.py:24
|
||||
msgid "Dinner"
|
||||
msgstr ""
|
||||
msgstr "晚餐"
|
||||
|
||||
#: .\cookbook\migrations\0047_auto_20200602_1133.py:29
|
||||
msgid "Other"
|
||||
msgstr ""
|
||||
msgstr "其他"
|
||||
|
||||
#: .\cookbook\models.py:71
|
||||
msgid ""
|
||||
"Maximum file storage for space in MB. 0 for unlimited, -1 to disable file "
|
||||
"upload."
|
||||
msgstr ""
|
||||
msgstr "空間的最大文件存儲量,單位為 MB。0表示無限製,-1表示禁止上傳文件。"
|
||||
|
||||
#: .\cookbook\models.py:121 .\cookbook\templates\search.html:7
|
||||
#: .\cookbook\templates\shopping_list.html:52
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
msgstr "搜索"
|
||||
|
||||
#: .\cookbook\models.py:122 .\cookbook\templates\base.html:92
|
||||
#: .\cookbook\templates\meal_plan.html:5 .\cookbook\views\delete.py:152
|
||||
#: .\cookbook\views\edit.py:233 .\cookbook\views\new.py:201
|
||||
msgid "Meal-Plan"
|
||||
msgstr ""
|
||||
msgstr "膳食計劃"
|
||||
|
||||
#: .\cookbook\models.py:123 .\cookbook\templates\base.html:89
|
||||
msgid "Books"
|
||||
msgstr ""
|
||||
msgstr "書籍"
|
||||
|
||||
#: .\cookbook\models.py:131
|
||||
msgid "Small"
|
||||
msgstr ""
|
||||
msgstr "小"
|
||||
|
||||
#: .\cookbook\models.py:131
|
||||
msgid "Large"
|
||||
msgstr ""
|
||||
msgstr "大"
|
||||
|
||||
#: .\cookbook\models.py:131 .\cookbook\templates\generic\new_template.html:6
|
||||
#: .\cookbook\templates\generic\new_template.html:14
|
||||
#: .\cookbook\templates\meal_plan.html:323
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
msgstr "新"
|
||||
|
||||
#: .\cookbook\models.py:340
|
||||
#: .\cookbook\templates\forms\edit_internal_recipe.html:202
|
||||
msgid "Text"
|
||||
msgstr ""
|
||||
msgstr "文本"
|
||||
|
||||
#: .\cookbook\models.py:340
|
||||
#: .\cookbook\templates\forms\edit_internal_recipe.html:203
|
||||
msgid "Time"
|
||||
msgstr ""
|
||||
msgstr "時間"
|
||||
|
||||
#: .\cookbook\models.py:340
|
||||
#: .\cookbook\templates\forms\edit_internal_recipe.html:204
|
||||
#: .\cookbook\templates\forms\edit_internal_recipe.html:218
|
||||
msgid "File"
|
||||
msgstr ""
|
||||
msgstr "文件"
|
||||
|
||||
#: .\cookbook\serializer.py:109
|
||||
msgid "File uploads are not enabled for this Space."
|
||||
msgstr ""
|
||||
msgstr "未為此空間啟用文件上傳。"
|
||||
|
||||
#: .\cookbook\serializer.py:117
|
||||
msgid "You have reached your file upload limit."
|
||||
msgstr ""
|
||||
msgstr "你已達到文件上傳的限製。"
|
||||
|
||||
#: .\cookbook\tables.py:35 .\cookbook\templates\books.html:36
|
||||
#: .\cookbook\templates\generic\edit_template.html:6
|
||||
@@ -403,7 +409,7 @@ msgstr ""
|
||||
#: .\cookbook\templates\shopping_list.html:33
|
||||
#: .\cookbook\templates\space.html:84
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
msgstr "編輯"
|
||||
|
||||
#: .\cookbook\tables.py:124 .\cookbook\tables.py:147
|
||||
#: .\cookbook\templates\books.html:38
|
||||
@@ -413,28 +419,28 @@ msgstr ""
|
||||
#: .\cookbook\templates\meal_plan.html:277
|
||||
#: .\cookbook\templates\recipes_table.html:90
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
msgstr "刪除"
|
||||
|
||||
#: .\cookbook\templates\404.html:5
|
||||
msgid "404 Error"
|
||||
msgstr ""
|
||||
msgstr "404錯誤"
|
||||
|
||||
#: .\cookbook\templates\404.html:18
|
||||
msgid "The page you are looking for could not be found."
|
||||
msgstr ""
|
||||
msgstr "找不到你要找的頁面。"
|
||||
|
||||
#: .\cookbook\templates\404.html:33
|
||||
msgid "Take me Home"
|
||||
msgstr ""
|
||||
msgstr "回到主頁"
|
||||
|
||||
#: .\cookbook\templates\404.html:35
|
||||
msgid "Report a Bug"
|
||||
msgstr ""
|
||||
msgstr "報告一個錯誤"
|
||||
|
||||
#: .\cookbook\templates\account\email.html:6
|
||||
#: .\cookbook\templates\account\email.html:9
|
||||
msgid "E-mail Addresses"
|
||||
msgstr ""
|
||||
msgstr "電子郵件地址"
|
||||
|
||||
#: .\cookbook\templates\account\email.html:11
|
||||
msgid "The following e-mail addresses are associated with your account:"
|
||||
@@ -1769,7 +1775,7 @@ msgstr ""
|
||||
|
||||
#: .\cookbook\templates\space.html:100
|
||||
msgid "user"
|
||||
msgstr ""
|
||||
msgstr "用戶"
|
||||
|
||||
#: .\cookbook\templates\space.html:101
|
||||
msgid "guest"
|
||||
|
||||
@@ -700,7 +700,7 @@ class Ingredient(ExportModelOperationsMixin('ingredient'), models.Model, Permiss
|
||||
if self.always_use_plural_unit and self.unit.plural_name not in (None, "") and not self.no_amount:
|
||||
unit = self.unit.plural_name
|
||||
else:
|
||||
if self.amount > 1 and self.unit.plural_name not in (None, "") and not self.no_amount:
|
||||
if self.amount > 1 and self.unit is not None and self.unit.plural_name not in (None, "") and not self.no_amount:
|
||||
unit = self.unit.plural_name
|
||||
else:
|
||||
unit = str(self.unit)
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
{% endfor %}
|
||||
|
||||
{% if request.user.is_authenticated %}
|
||||
<div class="d-print-none">
|
||||
<div class="d-print-none" style="padding-bottom: 60px">
|
||||
|
||||
<form method="POST" class="post-form">
|
||||
{% csrf_token %}
|
||||
|
||||
Reference in New Issue
Block a user