diff --git a/.env.template b/.env.template index fca55ec3..cb62dc52 100644 --- a/.env.template +++ b/.env.template @@ -158,6 +158,7 @@ REVERSE_PROXY_AUTH=0 #AUTH_LDAP_BIND_PASSWORD= #AUTH_LDAP_USER_SEARCH_BASE_DN= #AUTH_LDAP_TLS_CACERTFILE= +#AUTH_LDAP_START_TLS= # Enables exporting PDF (see export docs) # Disabled by default, uncomment to enable diff --git a/.github/workflows/build-docker.yml b/.github/workflows/build-docker.yml index 072c86fa..070e27fc 100644 --- a/.github/workflows/build-docker.yml +++ b/.github/workflows/build-docker.yml @@ -115,13 +115,17 @@ jobs: needs: build-container if: startsWith(github.ref, 'refs/tags/') steps: + - name: Set tag name + run: | + # Strip "refs/tags/" prefix + echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV # Send stable discord notification - name: Discord notification env: DISCORD_WEBHOOK: ${{ secrets.DISCORD_RELEASE_WEBHOOK }} uses: Ilshidur/action-discord@0.3.2 with: - args: '🚀 Version {{ EVENT_PAYLOAD.release.tag_name }} of tandoor has been released 🥳 Check it out https://github.com/vabene1111/recipes/releases/tag/{{ EVENT_PAYLOAD.release.tag_name }}' + args: '🚀 Version {{ VERSION }} of tandoor has been released 🥳 Check it out https://github.com/vabene1111/recipes/releases/tag/{{ VERSION }}' notify-beta: name: Notify Beta diff --git a/cookbook/helper/recipe_search.py b/cookbook/helper/recipe_search.py index a618efb1..93dbe2de 100644 --- a/cookbook/helper/recipe_search.py +++ b/cookbook/helper/recipe_search.py @@ -3,9 +3,9 @@ from collections import Counter from datetime import date, timedelta from django.contrib.postgres.search import SearchQuery, SearchRank, SearchVector, TrigramSimilarity -from django.core.cache import cache -from django.core.cache import caches -from django.db.models import (Avg, Case, Count, Exists, F, Func, Max, OuterRef, Q, Subquery, Value, When, FilteredRelation) +from django.core.cache import cache, caches +from django.db.models import (Avg, Case, Count, Exists, F, Func, Max, OuterRef, Q, Subquery, Value, + When) from django.db.models.functions import Coalesce, Lower, Substr from django.utils import timezone, translation from django.utils.translation import gettext as _ @@ -20,7 +20,8 @@ from recipes import settings # TODO create extensive tests to make sure ORs ANDs and various filters, sorting, etc work as expected # TODO consider creating a simpleListRecipe API that only includes minimum of recipe info and minimal filtering class RecipeSearch(): - _postgres = settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql'] + _postgres = settings.DATABASES['default']['ENGINE'] in [ + 'django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql'] def __init__(self, request, **params): self._request = request @@ -45,7 +46,8 @@ class RecipeSearch(): cache.set(CACHE_KEY, self._search_prefs, timeout=10) else: self._search_prefs = SearchPreference() - self._string = self._params.get('query').strip() if self._params.get('query', None) else None + self._string = self._params.get('query').strip( + ) if self._params.get('query', None) else None self._rating = self._params.get('rating', None) self._keywords = { 'or': self._params.get('keywords_or', None) or self._params.get('keywords', None), @@ -74,7 +76,8 @@ class RecipeSearch(): self._random = str2bool(self._params.get('random', False)) self._new = str2bool(self._params.get('new', False)) self._num_recent = int(self._params.get('num_recent', 0)) - self._include_children = str2bool(self._params.get('include_children', None)) + self._include_children = str2bool( + self._params.get('include_children', None)) self._timescooked = self._params.get('timescooked', None) self._cookedon = self._params.get('cookedon', None) self._createdon = self._params.get('createdon', None) @@ -95,18 +98,24 @@ class RecipeSearch(): self._search_type = self._search_prefs.search or 'plain' if self._string: if self._postgres: - self._unaccent_include = self._search_prefs.unaccent.values_list('field', flat=True) + self._unaccent_include = self._search_prefs.unaccent.values_list( + 'field', flat=True) else: self._unaccent_include = [] - self._icontains_include = [x + '__unaccent' if x in self._unaccent_include else x for x in self._search_prefs.icontains.values_list('field', flat=True)] - self._istartswith_include = [x + '__unaccent' if x in self._unaccent_include else x for x in self._search_prefs.istartswith.values_list('field', flat=True)] + self._icontains_include = [ + x + '__unaccent' if x in self._unaccent_include else x for x in self._search_prefs.icontains.values_list('field', flat=True)] + self._istartswith_include = [ + x + '__unaccent' if x in self._unaccent_include else x for x in self._search_prefs.istartswith.values_list('field', flat=True)] self._trigram_include = None self._fulltext_include = None self._trigram = False if self._postgres and self._string: - self._language = DICTIONARY.get(translation.get_language(), 'simple') - self._trigram_include = [x + '__unaccent' if x in self._unaccent_include else x for x in self._search_prefs.trigram.values_list('field', flat=True)] - self._fulltext_include = self._search_prefs.fulltext.values_list('field', flat=True) or None + self._language = DICTIONARY.get( + translation.get_language(), 'simple') + self._trigram_include = [ + x + '__unaccent' if x in self._unaccent_include else x for x in self._search_prefs.trigram.values_list('field', flat=True)] + self._fulltext_include = self._search_prefs.fulltext.values_list( + 'field', flat=True) or None if self._search_type not in ['websearch', 'raw'] and self._trigram_include: self._trigram = True @@ -182,8 +191,10 @@ class RecipeSearch(): # otherwise sort by the remaining order_by attributes or favorite by default else: order += default_order - order[:] = [Lower('name').asc() if x == 'name' else x for x in order] - order[:] = [Lower('name').desc() if x == '-name' else x for x in order] + order[:] = [Lower('name').asc() if x == + 'name' else x for x in order] + order[:] = [Lower('name').desc() if x == + '-name' else x for x in order] self.orderby = order def string_filters(self, string=None): @@ -200,21 +211,28 @@ class RecipeSearch(): for f in self._filters: query_filter |= f - self._queryset = self._queryset.filter(query_filter).distinct() # this creates duplicate records which can screw up other aggregates, see makenow for workaround + # this creates duplicate records which can screw up other aggregates, see makenow for workaround + self._queryset = self._queryset.filter(query_filter).distinct() if self._fulltext_include: if self._fuzzy_match is None: - self._queryset = self._queryset.annotate(score=Coalesce(Max(self.search_rank), 0.0)) + self._queryset = self._queryset.annotate( + score=Coalesce(Max(self.search_rank), 0.0)) else: - self._queryset = self._queryset.annotate(rank=Coalesce(Max(self.search_rank), 0.0)) + self._queryset = self._queryset.annotate( + rank=Coalesce(Max(self.search_rank), 0.0)) if self._fuzzy_match is not None: - simularity = self._fuzzy_match.filter(pk=OuterRef('pk')).values('simularity') + simularity = self._fuzzy_match.filter( + pk=OuterRef('pk')).values('simularity') if not self._fulltext_include: - self._queryset = self._queryset.annotate(score=Coalesce(Subquery(simularity), 0.0)) + self._queryset = self._queryset.annotate( + score=Coalesce(Subquery(simularity), 0.0)) else: - self._queryset = self._queryset.annotate(simularity=Coalesce(Subquery(simularity), 0.0)) + self._queryset = self._queryset.annotate( + simularity=Coalesce(Subquery(simularity), 0.0)) if self._sort_includes('score') and self._fulltext_include and self._fuzzy_match is not None: - self._queryset = self._queryset.annotate(score=F('rank') + F('simularity')) + self._queryset = self._queryset.annotate( + score=F('rank') + F('simularity')) else: query_filter = Q() for f in [x + '__unaccent__iexact' if x in self._unaccent_include else x + '__iexact' for x in SearchFields.objects.all().values_list('field', flat=True)]: @@ -223,7 +241,8 @@ class RecipeSearch(): def _cooked_on_filter(self, cooked_date=None): if self._sort_includes('lastcooked') or cooked_date: - lessthan = self._sort_includes('-lastcooked') or '-' in (cooked_date or [])[:1] + lessthan = self._sort_includes( + '-lastcooked') or '-' in (cooked_date or [])[:1] if lessthan: default = timezone.now() - timedelta(days=100000) else: @@ -233,32 +252,41 @@ class RecipeSearch(): if cooked_date is None: return - cooked_date = date(*[int(x) for x in cooked_date.split('-') if x != '']) + cooked_date = date(*[int(x) + for x in cooked_date.split('-') if x != '']) if lessthan: - self._queryset = self._queryset.filter(lastcooked__date__lte=cooked_date).exclude(lastcooked=default) + self._queryset = self._queryset.filter( + lastcooked__date__lte=cooked_date).exclude(lastcooked=default) else: - self._queryset = self._queryset.filter(lastcooked__date__gte=cooked_date).exclude(lastcooked=default) + self._queryset = self._queryset.filter( + lastcooked__date__gte=cooked_date).exclude(lastcooked=default) def _created_on_filter(self, created_date=None): if created_date is None: return lessthan = '-' in created_date[:1] - created_date = date(*[int(x) for x in created_date.split('-') if x != '']) + created_date = date(*[int(x) + for x in created_date.split('-') if x != '']) if lessthan: - self._queryset = self._queryset.filter(created_at__date__lte=created_date) + self._queryset = self._queryset.filter( + created_at__date__lte=created_date) else: - self._queryset = self._queryset.filter(created_at__date__gte=created_date) + self._queryset = self._queryset.filter( + created_at__date__gte=created_date) def _updated_on_filter(self, updated_date=None): if updated_date is None: return lessthan = '-' in updated_date[:1] - updated_date = date(*[int(x) for x in updated_date.split('-') if x != '']) + updated_date = date(*[int(x) + for x in updated_date.split('-') if x != '']) if lessthan: - self._queryset = self._queryset.filter(updated_at__date__lte=updated_date) + self._queryset = self._queryset.filter( + updated_at__date__lte=updated_date) else: - self._queryset = self._queryset.filter(updated_at__date__gte=updated_date) + self._queryset = self._queryset.filter( + updated_at__date__gte=updated_date) def _viewed_on_filter(self, viewed_date=None): if self._sort_includes('lastviewed') or viewed_date: @@ -268,12 +296,15 @@ class RecipeSearch(): if viewed_date is None: return lessthan = '-' in viewed_date[:1] - viewed_date = date(*[int(x) for x in viewed_date.split('-') if x != '']) + viewed_date = date(*[int(x) + for x in viewed_date.split('-') if x != '']) if lessthan: - self._queryset = self._queryset.filter(lastviewed__date__lte=viewed_date).exclude(lastviewed=longTimeAgo) + self._queryset = self._queryset.filter( + lastviewed__date__lte=viewed_date).exclude(lastviewed=longTimeAgo) else: - self._queryset = self._queryset.filter(lastviewed__date__gte=viewed_date).exclude(lastviewed=longTimeAgo) + self._queryset = self._queryset.filter( + lastviewed__date__gte=viewed_date).exclude(lastviewed=longTimeAgo) def _new_recipes(self, new_days=7): # TODO make new days a user-setting @@ -293,27 +324,32 @@ class RecipeSearch(): num_recent_recipes = ViewLog.objects.filter(created_by=self._request.user, space=self._request.space).values( 'recipe').annotate(recent=Max('created_at')).order_by('-recent')[:num_recent] - self._queryset = self._queryset.annotate(recent=Coalesce(Max(Case(When(pk__in=num_recent_recipes.values('recipe'), then='viewlog__pk'))), Value(0))) + self._queryset = self._queryset.annotate(recent=Coalesce(Max(Case(When( + pk__in=num_recent_recipes.values('recipe'), then='viewlog__pk'))), Value(0))) def _favorite_recipes(self, times_cooked=None): if self._sort_includes('favorite') or times_cooked: - less_than = '-' in (times_cooked or []) or not self._sort_includes('-favorite') + less_than = '-' in (times_cooked or [] + ) and not self._sort_includes('-favorite') if less_than: default = 1000 else: default = 0 favorite_recipes = CookLog.objects.filter(created_by=self._request.user, space=self._request.space, recipe=OuterRef('pk') ).values('recipe').annotate(count=Count('pk', distinct=True)).values('count') - self._queryset = self._queryset.annotate(favorite=Coalesce(Subquery(favorite_recipes), default)) + self._queryset = self._queryset.annotate( + favorite=Coalesce(Subquery(favorite_recipes), default)) if times_cooked is None: return if times_cooked == '0': self._queryset = self._queryset.filter(favorite=0) elif less_than: - self._queryset = self._queryset.filter(favorite__lte=int(times_cooked[1:])).exclude(favorite=0) + self._queryset = self._queryset.filter(favorite__lte=int( + times_cooked.replace('-', ''))).exclude(favorite=0) else: - self._queryset = self._queryset.filter(favorite__gte=int(times_cooked)) + self._queryset = self._queryset.filter( + favorite__gte=int(times_cooked)) def keyword_filters(self, **kwargs): if all([kwargs[x] is None for x in kwargs]): @@ -346,7 +382,8 @@ class RecipeSearch(): else: self._queryset = self._queryset.filter(f_and) if 'not' in kw_filter: - self._queryset = self._queryset.exclude(id__in=recipes.values('id')) + self._queryset = self._queryset.exclude( + id__in=recipes.values('id')) def food_filters(self, **kwargs): if all([kwargs[x] is None for x in kwargs]): @@ -360,7 +397,8 @@ class RecipeSearch(): foods = Food.objects.filter(pk__in=kwargs[fd_filter]) if 'or' in fd_filter: if self._include_children: - f_or = Q(steps__ingredients__food__in=Food.include_descendants(foods)) + f_or = Q( + steps__ingredients__food__in=Food.include_descendants(foods)) else: f_or = Q(steps__ingredients__food__in=foods) @@ -372,7 +410,8 @@ class RecipeSearch(): recipes = Recipe.objects.all() for food in foods: if self._include_children: - f_and = Q(steps__ingredients__food__in=food.get_descendants_and_self()) + f_and = Q( + steps__ingredients__food__in=food.get_descendants_and_self()) else: f_and = Q(steps__ingredients__food=food) if 'not' in fd_filter: @@ -380,7 +419,8 @@ class RecipeSearch(): else: self._queryset = self._queryset.filter(f_and) if 'not' in fd_filter: - self._queryset = self._queryset.exclude(id__in=recipes.values('id')) + self._queryset = self._queryset.exclude( + id__in=recipes.values('id')) def unit_filters(self, units=None, operator=True): if operator != True: @@ -389,7 +429,8 @@ class RecipeSearch(): return if not isinstance(units, list): units = [units] - self._queryset = self._queryset.filter(steps__ingredients__unit__in=units) + self._queryset = self._queryset.filter( + steps__ingredients__unit__in=units) def rating_filter(self, rating=None): if rating or self._sort_includes('rating'): @@ -399,14 +440,16 @@ class RecipeSearch(): else: default = 0 # TODO make ratings a settings user-only vs all-users - self._queryset = self._queryset.annotate(rating=Round(Avg(Case(When(cooklog__created_by=self._request.user, then='cooklog__rating'), default=default)))) + self._queryset = self._queryset.annotate(rating=Round(Avg(Case(When( + cooklog__created_by=self._request.user, then='cooklog__rating'), default=default)))) if rating is None: return if rating == '0': self._queryset = self._queryset.filter(rating=0) elif lessthan: - self._queryset = self._queryset.filter(rating__lte=int(rating[1:])).exclude(rating=0) + self._queryset = self._queryset.filter( + rating__lte=int(rating[1:])).exclude(rating=0) else: self._queryset = self._queryset.filter(rating__gte=int(rating)) @@ -434,11 +477,14 @@ class RecipeSearch(): recipes = Recipe.objects.all() for book in kwargs[bk_filter]: if 'not' in bk_filter: - recipes = recipes.filter(recipebookentry__book__id=book) + recipes = recipes.filter( + recipebookentry__book__id=book) else: - self._queryset = self._queryset.filter(recipebookentry__book__id=book) + self._queryset = self._queryset.filter( + recipebookentry__book__id=book) if 'not' in bk_filter: - self._queryset = self._queryset.exclude(id__in=recipes.values('id')) + self._queryset = self._queryset.exclude( + id__in=recipes.values('id')) def step_filters(self, steps=None, operator=True): if operator != True: @@ -446,7 +492,7 @@ class RecipeSearch(): if not steps: return if not isinstance(steps, list): - steps = [unistepsts] + steps = [steps] self._queryset = self._queryset.filter(steps__id__in=steps) def build_fulltext_filters(self, string=None): @@ -457,20 +503,25 @@ class RecipeSearch(): rank = [] if 'name' in self._fulltext_include: vectors.append('name_search_vector') - rank.append(SearchRank('name_search_vector', self.search_query, cover_density=True)) + rank.append(SearchRank('name_search_vector', + self.search_query, cover_density=True)) if 'description' in self._fulltext_include: vectors.append('desc_search_vector') - rank.append(SearchRank('desc_search_vector', self.search_query, cover_density=True)) + rank.append(SearchRank('desc_search_vector', + self.search_query, cover_density=True)) if 'steps__instruction' in self._fulltext_include: vectors.append('steps__search_vector') - rank.append(SearchRank('steps__search_vector', self.search_query, cover_density=True)) + rank.append(SearchRank('steps__search_vector', + self.search_query, cover_density=True)) if 'keywords__name' in self._fulltext_include: # explicitly settings unaccent on keywords and foods so that they behave the same as search_vector fields vectors.append('keywords__name__unaccent') - rank.append(SearchRank('keywords__name__unaccent', self.search_query, cover_density=True)) + rank.append(SearchRank('keywords__name__unaccent', + self.search_query, cover_density=True)) if 'steps__ingredients__food__name' in self._fulltext_include: vectors.append('steps__ingredients__food__name__unaccent') - rank.append(SearchRank('steps__ingredients__food__name', self.search_query, cover_density=True)) + rank.append(SearchRank('steps__ingredients__food__name', + self.search_query, cover_density=True)) for r in rank: if self.search_rank is None: @@ -478,7 +529,8 @@ class RecipeSearch(): else: self.search_rank += r # modifying queryset will annotation creates duplicate results - self._filters.append(Q(id__in=Recipe.objects.annotate(vector=SearchVector(*vectors)).filter(Q(vector=self.search_query)))) + self._filters.append(Q(id__in=Recipe.objects.annotate( + vector=SearchVector(*vectors)).filter(Q(vector=self.search_query)))) def build_text_filters(self, string=None): if not string: @@ -510,23 +562,30 @@ class RecipeSearch(): def _makenow_filter(self, missing=None): if missing is None or (type(missing) == bool and missing == False): return - shopping_users = [*self._request.user.get_shopping_share(), self._request.user] + shopping_users = [ + *self._request.user.get_shopping_share(), self._request.user] onhand_filter = ( - Q(steps__ingredients__food__onhand_users__in=shopping_users) # food onhand - | Q(steps__ingredients__food__substitute__onhand_users__in=shopping_users) # or substitute food onhand - | Q(steps__ingredients__food__in=self.__children_substitute_filter(shopping_users)) - | Q(steps__ingredients__food__in=self.__sibling_substitute_filter(shopping_users)) + Q(steps__ingredients__food__onhand_users__in=shopping_users) # food onhand + # or substitute food onhand + | Q(steps__ingredients__food__substitute__onhand_users__in=shopping_users) + | Q(steps__ingredients__food__in=self.__children_substitute_filter(shopping_users)) + | Q(steps__ingredients__food__in=self.__sibling_substitute_filter(shopping_users)) ) makenow_recipes = Recipe.objects.annotate( - count_food=Count('steps__ingredients__food__pk', filter=Q(steps__ingredients__food__isnull=False), distinct=True), - count_onhand=Count('steps__ingredients__food__pk', filter=onhand_filter, distinct=True), + count_food=Count('steps__ingredients__food__pk', filter=Q( + steps__ingredients__food__isnull=False), distinct=True), + count_onhand=Count('steps__ingredients__food__pk', + filter=onhand_filter, distinct=True), count_ignore_shopping=Count('steps__ingredients__food__pk', filter=Q(steps__ingredients__food__ignore_shopping=True, steps__ingredients__food__recipe__isnull=True), distinct=True), - has_child_sub=Case(When(steps__ingredients__food__in=self.__children_substitute_filter(shopping_users), then=Value(1)), default=Value(0)), - has_sibling_sub=Case(When(steps__ingredients__food__in=self.__sibling_substitute_filter(shopping_users), then=Value(1)), default=Value(0)) + has_child_sub=Case(When(steps__ingredients__food__in=self.__children_substitute_filter( + shopping_users), then=Value(1)), default=Value(0)), + has_sibling_sub=Case(When(steps__ingredients__food__in=self.__sibling_substitute_filter( + shopping_users), then=Value(1)), default=Value(0)) ).annotate(missingfood=F('count_food') - F('count_onhand') - F('count_ignore_shopping')).filter(missingfood=missing) - self._queryset = self._queryset.distinct().filter(id__in=makenow_recipes.values('id')) + self._queryset = self._queryset.distinct().filter( + id__in=makenow_recipes.values('id')) @staticmethod def __children_substitute_filter(shopping_users=None): @@ -547,7 +606,8 @@ class RecipeSearch(): @staticmethod def __sibling_substitute_filter(shopping_users=None): sibling_onhand_subquery = Food.objects.filter( - path__startswith=Substr(OuterRef('path'), 1, Food.steplen * (OuterRef('depth') - 1)), + path__startswith=Substr( + OuterRef('path'), 1, Food.steplen * (OuterRef('depth') - 1)), depth=OuterRef('depth'), onhand_users__in=shopping_users ) @@ -586,7 +646,8 @@ class RecipeFacet(): self.Recent = self._cache.get('Recent', None) if self._queryset is not None: - self._recipe_list = list(self._queryset.values_list('id', flat=True)) + self._recipe_list = list( + self._queryset.values_list('id', flat=True)) self._search_params = { 'keyword_list': self._request.query_params.getlist('keywords', []), 'food_list': self._request.query_params.getlist('foods', []), @@ -618,7 +679,8 @@ class RecipeFacet(): 'Books': self.Books } - caches['default'].set(self._SEARCH_CACHE_KEY, self._cache, self._cache_timeout) + caches['default'].set(self._SEARCH_CACHE_KEY, + self._cache, self._cache_timeout) def get_facets(self, from_cache=False): if from_cache: @@ -655,13 +717,16 @@ class RecipeFacet(): def get_keywords(self): if self.Keywords is None: if self._search_params['search_keywords_or']: - keywords = Keyword.objects.filter(space=self._request.space).distinct() + keywords = Keyword.objects.filter( + space=self._request.space).distinct() else: - keywords = Keyword.objects.filter(Q(recipe__in=self._recipe_list) | Q(depth=1)).filter(space=self._request.space).distinct() + keywords = Keyword.objects.filter(Q(recipe__in=self._recipe_list) | Q( + depth=1)).filter(space=self._request.space).distinct() # set keywords to root objects only keywords = self._keyword_queryset(keywords) - self.Keywords = [{**x, 'children': None} if x['numchild'] > 0 else x for x in list(keywords)] + self.Keywords = [{**x, 'children': None} + if x['numchild'] > 0 else x for x in list(keywords)] self.set_cache('Keywords', self.Keywords) return self.Keywords @@ -669,28 +734,28 @@ class RecipeFacet(): if self.Foods is None: # # if using an OR search, will annotate all keywords, otherwise, just those that appear in results if self._search_params['search_foods_or']: - foods = Food.objects.filter(space=self._request.space).distinct() + foods = Food.objects.filter( + space=self._request.space).distinct() else: - foods = Food.objects.filter(Q(ingredient__step__recipe__in=self._recipe_list) | Q(depth=1)).filter(space=self._request.space).distinct() + foods = Food.objects.filter(Q(ingredient__step__recipe__in=self._recipe_list) | Q( + depth=1)).filter(space=self._request.space).distinct() # set keywords to root objects only foods = self._food_queryset(foods) - self.Foods = [{**x, 'children': None} if x['numchild'] > 0 else x for x in list(foods)] + self.Foods = [{**x, 'children': None} + if x['numchild'] > 0 else x for x in list(foods)] self.set_cache('Foods', self.Foods) return self.Foods - def get_books(self): - if self.Books is None: - self.Books = [] - return self.Books - def get_ratings(self): if self.Ratings is None: if not self._request.space.demo and self._request.space.show_facet_count: if self._queryset is None: - self._queryset = Recipe.objects.filter(id__in=self._recipe_list) - rating_qs = self._queryset.annotate(rating=Round(Avg(Case(When(cooklog__created_by=self._request.user, then='cooklog__rating'), default=Value(0))))) + self._queryset = Recipe.objects.filter( + id__in=self._recipe_list) + rating_qs = self._queryset.annotate(rating=Round(Avg(Case(When( + cooklog__created_by=self._request.user, then='cooklog__rating'), default=Value(0))))) self.Ratings = dict(Counter(r.rating for r in rating_qs)) else: self.Rating = {} @@ -715,10 +780,13 @@ class RecipeFacet(): foods = self._food_queryset(food.get_children(), food) deep_search = self.Foods for node in nodes: - index = next((i for i, x in enumerate(deep_search) if x["id"] == node.id), None) + index = next((i for i, x in enumerate( + deep_search) if x["id"] == node.id), None) deep_search = deep_search[index]['children'] - index = next((i for i, x in enumerate(deep_search) if x["id"] == food.id), None) - deep_search[index]['children'] = [{**x, 'children': None} if x['numchild'] > 0 else x for x in list(foods)] + index = next((i for i, x in enumerate( + deep_search) if x["id"] == food.id), None) + deep_search[index]['children'] = [ + {**x, 'children': None} if x['numchild'] > 0 else x for x in list(foods)] self.set_cache('Foods', self.Foods) return self.get_facets() @@ -731,10 +799,13 @@ class RecipeFacet(): keywords = self._keyword_queryset(keyword.get_children(), keyword) deep_search = self.Keywords for node in nodes: - index = next((i for i, x in enumerate(deep_search) if x["id"] == node.id), None) + index = next((i for i, x in enumerate( + deep_search) if x["id"] == node.id), None) deep_search = deep_search[index]['children'] - index = next((i for i, x in enumerate(deep_search) if x["id"] == keyword.id), None) - deep_search[index]['children'] = [{**x, 'children': None} if x['numchild'] > 0 else x for x in list(keywords)] + index = next((i for i, x in enumerate(deep_search) + if x["id"] == keyword.id), None) + deep_search[index]['children'] = [ + {**x, 'children': None} if x['numchild'] > 0 else x for x in list(keywords)] self.set_cache('Keywords', self.Keywords) return self.get_facets() diff --git a/cookbook/helper/recipe_url_import.py b/cookbook/helper/recipe_url_import.py index 6aec16b0..f9398294 100644 --- a/cookbook/helper/recipe_url_import.py +++ b/cookbook/helper/recipe_url_import.py @@ -1,8 +1,8 @@ -import random +# import random import re from html import unescape -from unicodedata import decomposition +from django.core.cache import caches from django.utils.dateparse import parse_duration from django.utils.translation import gettext as _ from isodate import parse_duration as iso_parse_duration @@ -10,9 +10,11 @@ from isodate.isoerror import ISO8601Error from pytube import YouTube from recipe_scrapers._utils import get_host_name, get_minutes -from cookbook.helper import recipe_url_import as helper +# from cookbook.helper import recipe_url_import as helper from cookbook.helper.ingredient_parser import IngredientParser -from cookbook.models import Keyword, Automation +from cookbook.models import Automation, Keyword + +# from unicodedata import decomposition # from recipe_scrapers._utils import get_minutes ## temporary until/unless upstream incorporates get_minutes() PR @@ -127,7 +129,7 @@ def get_from_scraper(scrape, request): try: if scrape.author(): keywords.append(scrape.author()) - except: + except Exception: pass try: @@ -367,10 +369,28 @@ def parse_time(recipe_time): def parse_keywords(keyword_json, space): keywords = [] + keyword_aliases = {} + # retrieve keyword automation cache if it exists, otherwise build from database + KEYWORD_CACHE_KEY = f'automation_keyword_alias_{space.pk}' + if c := caches['default'].get(KEYWORD_CACHE_KEY, None): + self.food_aliases = c + caches['default'].touch(KEYWORD_CACHE_KEY, 30) + else: + for a in Automation.objects.filter(space=space, disabled=False, type=Automation.KEYWORD_ALIAS).only('param_1', 'param_2').order_by('order').all(): + keyword_aliases[a.param_1] = a.param_2 + caches['default'].set(KEYWORD_CACHE_KEY, keyword_aliases, 30) + # keywords as list for kw in keyword_json: kw = normalize_string(kw) + # if alias exists use that instead + if len(kw) != 0: + if keyword_aliases: + try: + kw = keyword_aliases[kw] + except KeyError: + pass if k := Keyword.objects.filter(name=kw, space=space).first(): keywords.append({'label': str(k), 'name': k.name, 'id': k.id}) else: diff --git a/cookbook/locale/bg/LC_MESSAGES/django.mo b/cookbook/locale/bg/LC_MESSAGES/django.mo index 2b36ba37..eeb67944 100644 Binary files a/cookbook/locale/bg/LC_MESSAGES/django.mo and b/cookbook/locale/bg/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/bg/LC_MESSAGES/django.po b/cookbook/locale/bg/LC_MESSAGES/django.po index 8d8bf04f..37e359a0 100644 --- a/cookbook/locale/bg/LC_MESSAGES/django.po +++ b/cookbook/locale/bg/LC_MESSAGES/django.po @@ -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-05-10 15:32+0000\n" -"Last-Translator: zeon \n" +"PO-Revision-Date: 2023-04-12 11:55+0000\n" +"Last-Translator: noxonad \n" "Language-Team: Bulgarian \n" "Language: bg\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 @@ -1433,7 +1433,7 @@ msgstr "" #: .\cookbook\templates\index.html:29 msgid "Search recipe ..." -msgstr "Търсете рецепта..." +msgstr "Търсете рецепта ..." #: .\cookbook\templates\index.html:44 msgid "New Recipe" @@ -1818,7 +1818,7 @@ msgid "" msgstr "" " \n" " Пълнотекстови търсения се опитват да нормализират предоставените " -"думи, за да съответстват на често срещани варианти. Например: 'вили, " +"думи, за да съответстват на често срещани варианти. Например: 'вили, " "'вилица', 'вилици' всички ще се нормализират до 'вилиц'.\n" " Има няколко налични метода, описани по-долу, които ще " "контролират как поведението при търсене трябва да реагира, когато се търсят " diff --git a/cookbook/locale/ca/LC_MESSAGES/django.mo b/cookbook/locale/ca/LC_MESSAGES/django.mo index 39e330aa..5e08d9fd 100644 Binary files a/cookbook/locale/ca/LC_MESSAGES/django.mo and b/cookbook/locale/ca/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/ca/LC_MESSAGES/django.po b/cookbook/locale/ca/LC_MESSAGES/django.po index e7f74547..4e59fe01 100644 --- a/cookbook/locale/ca/LC_MESSAGES/django.po +++ b/cookbook/locale/ca/LC_MESSAGES/django.po @@ -12,9 +12,9 @@ msgid "" 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-05-22 11:20+0000\n" -"Last-Translator: Ramon Aixa Juan \n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" +"PO-Revision-Date: 2023-04-12 11:55+0000\n" +"Last-Translator: noxonad \n" "Language-Team: Catalan \n" "Language: ca\n" @@ -22,7 +22,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" @@ -64,7 +64,7 @@ msgstr "Decimals Ingredients" msgid "Shopping list auto sync period" msgstr "Auto-sincronització Llista compra" -#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:21 +#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:36 msgid "Comments" msgstr "Comentaris" @@ -116,7 +116,7 @@ msgstr "Nombre de decimals dels ingredients." msgid "If you want to be able to create and see comments underneath recipes." msgstr "Si vols poder crear i veure comentaris a sota de les receptes." -#: .\cookbook\forms.py:79 .\cookbook\forms.py:491 +#: .\cookbook\forms.py:79 .\cookbook\forms.py:492 msgid "" "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. " @@ -133,7 +133,7 @@ msgstr "" msgid "Makes the navbar stick to the top of the page." msgstr "Barra de navegació s'enganxi a la part superior de la pàgina." -#: .\cookbook\forms.py:83 .\cookbook\forms.py:494 +#: .\cookbook\forms.py:83 .\cookbook\forms.py:495 msgid "Automatically add meal plan ingredients to shopping list." msgstr "" "Afegeix automàticament els ingredients del pla d'àpats a la llista de la " @@ -155,11 +155,11 @@ msgstr "" "Tots dos camps són opcionals. Si no se'n dóna cap, es mostrarà el nom " "d'usuari" -#: .\cookbook\forms.py:123 .\cookbook\forms.py:296 +#: .\cookbook\forms.py:123 .\cookbook\forms.py:297 msgid "Name" msgstr "Nom" -#: .\cookbook\forms.py:124 .\cookbook\forms.py:297 .\cookbook\views\lists.py:88 +#: .\cookbook\forms.py:124 .\cookbook\forms.py:298 .\cookbook\views\lists.py:88 msgid "Keywords" msgstr "Paraules clau" @@ -171,7 +171,7 @@ msgstr "Temps de preparació en minuts" msgid "Waiting time (cooking/baking) in minutes" msgstr "Temps d'espera (cocció/fornejat) en minuts" -#: .\cookbook\forms.py:127 .\cookbook\forms.py:265 .\cookbook\forms.py:298 +#: .\cookbook\forms.py:127 .\cookbook\forms.py:266 .\cookbook\forms.py:299 msgid "Path" msgstr "Ruta" @@ -179,11 +179,11 @@ msgstr "Ruta" msgid "Storage UID" msgstr "UID Emmagatzematge" -#: .\cookbook\forms.py:160 +#: .\cookbook\forms.py:161 msgid "Default" msgstr "Per defecte" -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:173 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." @@ -191,21 +191,21 @@ msgstr "" "Per evitar duplicats, s'ignoren les receptes amb el mateix nom que les " "existents. Marqueu aquesta casella per importar-ho tot." -#: .\cookbook\forms.py:195 +#: .\cookbook\forms.py:196 msgid "Add your comment: " msgstr "Afegir el teu comentari: " -#: .\cookbook\forms.py:210 +#: .\cookbook\forms.py:211 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" "Deixeu-lo buit per a Dropbox i introduïu la contrasenya de l'aplicació per a " "nextcloud." -#: .\cookbook\forms.py:217 +#: .\cookbook\forms.py:218 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Deixeu-lo buit per a nextcloud i introduïu el token API per a Dropbox." -#: .\cookbook\forms.py:226 +#: .\cookbook\forms.py:227 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -213,33 +213,33 @@ msgstr "" "Deixeu-lo buit per a Dropbox i introduïu només l'URL base per a Nextcloud " "(/remote.php/webdav/ s'afegeix automàticament)" -#: .\cookbook\forms.py:264 .\cookbook\views\edit.py:157 +#: .\cookbook\forms.py:265 .\cookbook\views\edit.py:157 msgid "Storage" msgstr "Emmagatzematge" -#: .\cookbook\forms.py:266 +#: .\cookbook\forms.py:267 msgid "Active" msgstr "Actiu" -#: .\cookbook\forms.py:272 +#: .\cookbook\forms.py:273 msgid "Search String" msgstr "Cerca Cadena" -#: .\cookbook\forms.py:299 +#: .\cookbook\forms.py:300 msgid "File ID" msgstr "ID d'Arxiu" -#: .\cookbook\forms.py:321 +#: .\cookbook\forms.py:322 msgid "You must provide at least a recipe or a title." msgstr "Has de proporcionar com a mínim una recepta o un títol." -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:335 msgid "You can list default users to share recipes with in the settings." msgstr "" "Podeu llistar els usuaris predeterminats amb els quals voleu compartir " "receptes a la configuració." -#: .\cookbook\forms.py:335 +#: .\cookbook\forms.py:336 msgid "" "You can use markdown to format this field. See the docs here" @@ -247,15 +247,15 @@ msgstr "" "Podeu utilitzar el marcador per donar format a aquest camp. Consulteu els documents aquí " -#: .\cookbook\forms.py:361 +#: .\cookbook\forms.py:362 msgid "Maximum number of users for this space reached." msgstr "Nombre màxim d'usuaris assolit per a aquest espai." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:368 msgid "Email address already taken!" msgstr "Adreça de correu electrònic existent!" -#: .\cookbook\forms.py:375 +#: .\cookbook\forms.py:376 msgid "" "An email address is not required but if present the invite link will be sent " "to the user." @@ -263,15 +263,15 @@ msgstr "" "No cal una adreça de correu electrònic, però si està present, s'enviarà " "l'enllaç d'invitació a l'usuari." -#: .\cookbook\forms.py:390 +#: .\cookbook\forms.py:391 msgid "Name already taken." msgstr "Nom agafat." -#: .\cookbook\forms.py:401 +#: .\cookbook\forms.py:402 msgid "Accept Terms and Privacy" msgstr "Accepteu les condicions i la privadesa" -#: .\cookbook\forms.py:433 +#: .\cookbook\forms.py:434 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." @@ -280,7 +280,7 @@ msgstr "" "de trigrama (p. ex., els valors baixos signifiquen que s'ignoren més errors " "ortogràfics)." -#: .\cookbook\forms.py:443 +#: .\cookbook\forms.py:444 msgid "" "Select type method of search. Click here for " "full description of choices." @@ -288,7 +288,7 @@ msgstr "" "Seleccioneu el tipus de mètode de cerca. Feu clic aquí per obtenir una descripció completa de les opcions." -#: .\cookbook\forms.py:444 +#: .\cookbook\forms.py:445 msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." @@ -296,7 +296,7 @@ msgstr "" "Utilitzeu la concordança difusa en unitats, paraules clau i ingredients quan " "editeu i importeu receptes." -#: .\cookbook\forms.py:446 +#: .\cookbook\forms.py:447 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" @@ -304,7 +304,7 @@ msgstr "" "Camps per cercar ignorant els accents. La selecció d'aquesta opció pot " "millorar o degradar la qualitat de la cerca en funció de l'idioma" -#: .\cookbook\forms.py:448 +#: .\cookbook\forms.py:449 msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" @@ -312,7 +312,7 @@ msgstr "" "Camps per cercar coincidències parcials. (p. ex., en cercar \"Pastís\" " "tornarà \"pastís\" i \"peça\" i \"sabó\")" -#: .\cookbook\forms.py:450 +#: .\cookbook\forms.py:451 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" @@ -320,7 +320,7 @@ msgstr "" "Camps per cercar l'inici de les coincidències de paraula. (p. ex., en cercar " "\"sa\" es tornarà \"amanida\" i \"entrepà\")" -#: .\cookbook\forms.py:452 +#: .\cookbook\forms.py:453 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." @@ -329,7 +329,7 @@ msgstr "" "trobareu \"recepta\".) Nota: aquesta opció entrarà en conflicte amb els " "mètodes de cerca \"web\" i \"cru\"." -#: .\cookbook\forms.py:454 +#: .\cookbook\forms.py:455 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." @@ -337,35 +337,35 @@ msgstr "" "Camps per a la cerca de text complet. Nota: els mètodes de cerca \"web\", " "\"frase\" i \"en brut\" només funcionen amb camps de text complet." -#: .\cookbook\forms.py:458 +#: .\cookbook\forms.py:459 msgid "Search Method" msgstr "Mètode de cerca" -#: .\cookbook\forms.py:459 +#: .\cookbook\forms.py:460 msgid "Fuzzy Lookups" msgstr "Cerques difuses" -#: .\cookbook\forms.py:460 +#: .\cookbook\forms.py:461 msgid "Ignore Accent" msgstr "Ignora Accents" -#: .\cookbook\forms.py:461 +#: .\cookbook\forms.py:462 msgid "Partial Match" msgstr "Cerca Parcial" -#: .\cookbook\forms.py:462 +#: .\cookbook\forms.py:463 msgid "Starts With" msgstr "Comença amb" -#: .\cookbook\forms.py:463 +#: .\cookbook\forms.py:464 msgid "Fuzzy Search" msgstr "Cerca Difusa" -#: .\cookbook\forms.py:464 +#: .\cookbook\forms.py:465 msgid "Full Text" msgstr "Text Sencer" -#: .\cookbook\forms.py:489 +#: .\cookbook\forms.py:490 msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." @@ -373,7 +373,7 @@ msgstr "" "Els usuaris veuran tots els articles que afegiu a la vostra llista de la " "compra. Us han d'afegir per veure els elements de la seva llista." -#: .\cookbook\forms.py:495 +#: .\cookbook\forms.py:496 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." @@ -381,7 +381,7 @@ msgstr "" "Quan afegiu un pla d'àpats a la llista de la compra (de manera manual o " "automàtica), inclou totes les receptes relacionades." -#: .\cookbook\forms.py:496 +#: .\cookbook\forms.py:497 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." @@ -389,93 +389,93 @@ msgstr "" "Quan afegiu un pla d'àpats a la llista de la compra (manual o " "automàticament), excloeu els ingredients que teniu a mà." -#: .\cookbook\forms.py:497 +#: .\cookbook\forms.py:498 msgid "Default number of hours to delay a shopping list entry." msgstr "" "Nombre d'hores per defecte per retardar l'entrada d'una llista de la compra." -#: .\cookbook\forms.py:498 +#: .\cookbook\forms.py:499 msgid "Filter shopping list to only include supermarket categories." msgstr "" "Filtreu la llista de compres per incloure només categories de supermercats." -#: .\cookbook\forms.py:499 +#: .\cookbook\forms.py:500 msgid "Days of recent shopping list entries to display." msgstr "Dies de les entrades recents de la llista de la compra per mostrar." -#: .\cookbook\forms.py:500 +#: .\cookbook\forms.py:501 msgid "Mark food 'On Hand' when checked off shopping list." msgstr "Marca el menjar com a \"A mà\" quan marqueu la llista de la compra." -#: .\cookbook\forms.py:501 +#: .\cookbook\forms.py:502 msgid "Delimiter to use for CSV exports." msgstr "Delimitador per a les exportacions CSV." -#: .\cookbook\forms.py:502 +#: .\cookbook\forms.py:503 msgid "Prefix to add when copying list to the clipboard." msgstr "Prefix per afegir en copiar la llista al porta-retalls." -#: .\cookbook\forms.py:506 +#: .\cookbook\forms.py:507 msgid "Share Shopping List" msgstr "Compartir Llista de la Compra" -#: .\cookbook\forms.py:507 +#: .\cookbook\forms.py:508 msgid "Autosync" msgstr "Autosync" -#: .\cookbook\forms.py:508 +#: .\cookbook\forms.py:509 msgid "Auto Add Meal Plan" msgstr "Afegeix automàticament un pla d'àpats" -#: .\cookbook\forms.py:509 +#: .\cookbook\forms.py:510 msgid "Exclude On Hand" msgstr "Exclou a mà" -#: .\cookbook\forms.py:510 +#: .\cookbook\forms.py:511 msgid "Include Related" msgstr "Incloure Relacionats" -#: .\cookbook\forms.py:511 +#: .\cookbook\forms.py:512 msgid "Default Delay Hours" msgstr "Hores de retard per defecte" -#: .\cookbook\forms.py:512 +#: .\cookbook\forms.py:513 msgid "Filter to Supermarket" msgstr "Filtrar a supermercat" -#: .\cookbook\forms.py:513 +#: .\cookbook\forms.py:514 msgid "Recent Days" msgstr "Dies recents" -#: .\cookbook\forms.py:514 +#: .\cookbook\forms.py:515 msgid "CSV Delimiter" msgstr "Delimitador CSV" -#: .\cookbook\forms.py:515 +#: .\cookbook\forms.py:516 msgid "List Prefix" msgstr "Prefix de Llista" -#: .\cookbook\forms.py:516 +#: .\cookbook\forms.py:517 msgid "Auto On Hand" msgstr "Auto a mà" -#: .\cookbook\forms.py:526 +#: .\cookbook\forms.py:527 msgid "Reset Food Inheritance" msgstr "Restablir Herència Alimentària" -#: .\cookbook\forms.py:527 +#: .\cookbook\forms.py:528 msgid "Reset all food to inherit the fields configured." msgstr "Restableix tots els aliments per heretar els camps configurats." -#: .\cookbook\forms.py:539 +#: .\cookbook\forms.py:540 msgid "Fields on food that should be inherited by default." msgstr "Camps dels aliments que s'han d'heretar per defecte." -#: .\cookbook\forms.py:540 +#: .\cookbook\forms.py:541 msgid "Show recipe counts on search filters" msgstr "Mostra el recompte de receptes als filtres de cerca" -#: .\cookbook\forms.py:541 +#: .\cookbook\forms.py:542 msgid "Use the plural form for units and food inside this space." msgstr "" @@ -488,7 +488,7 @@ msgstr "" "uns minuts i torneu-ho a provar." #: .\cookbook\helper\permission_helper.py:164 -#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:114 +#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117 msgid "You are not logged in and therefore cannot view this page!" msgstr "No heu iniciat la sessió, no podeu veure aquesta pàgina." @@ -501,7 +501,7 @@ msgstr "No heu iniciat la sessió, no podeu veure aquesta pàgina." #: .\cookbook\helper\permission_helper.py:305 #: .\cookbook\helper\permission_helper.py:321 #: .\cookbook\helper\permission_helper.py:342 .\cookbook\views\data.py:36 -#: .\cookbook\views\views.py:125 .\cookbook\views\views.py:132 +#: .\cookbook\views\views.py:128 .\cookbook\views\views.py:135 msgid "You do not have the required permissions to view this page!" msgstr "No teniu els permisos necessaris per veure aquesta pàgina!" @@ -521,11 +521,41 @@ msgstr "Has arribat al nombre màxim de receptes per al vostre espai." msgid "You have more users than allowed in your space." msgstr "Tens més usuaris dels permesos al teu espai." -#: .\cookbook\helper\recipe_search.py:570 +#: .\cookbook\helper\recipe_search.py:630 msgid "One of queryset or hash_key must be provided" msgstr "S'ha de proporcionar una de queryset o hash_key" -#: .\cookbook\helper\shopping_helper.py:152 +#: .\cookbook\helper\recipe_url_import.py:266 +#, fuzzy +#| msgid "Use fractions" +msgid "reverse rotation" +msgstr "Utilitza fraccions" + +#: .\cookbook\helper\recipe_url_import.py:267 +msgid "careful rotation" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:268 +msgid "knead" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:269 +msgid "thicken" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:270 +msgid "warm up" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:271 +msgid "ferment" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:272 +msgid "sous-vide" +msgstr "" + +#: .\cookbook\helper\shopping_helper.py:157 msgid "You must supply a servings size" msgstr "Heu de proporcionar una mida de porcions" @@ -543,7 +573,7 @@ msgstr "" msgid "I made this" msgstr "" -#: .\cookbook\integration\integration.py:223 +#: .\cookbook\integration\integration.py:218 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" @@ -551,7 +581,7 @@ msgstr "" "S'esperava un fitxer .zip. Heu escollit el tipus d'importador correcte per a " "les vostres dades?" -#: .\cookbook\integration\integration.py:226 +#: .\cookbook\integration\integration.py:221 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." @@ -559,24 +589,30 @@ msgstr "" "S'ha produït un error inesperat durant la importació. Assegureu-vos que heu " "penjat un fitxer vàlid." -#: .\cookbook\integration\integration.py:231 +#: .\cookbook\integration\integration.py:226 msgid "The following recipes were ignored because they already existed:" msgstr "Les receptes següents s'han ignorat perquè ja existien:" -#: .\cookbook\integration\integration.py:235 +#: .\cookbook\integration\integration.py:230 #, python-format msgid "Imported %s recipes." msgstr "%s Receptes Importades." -#: .\cookbook\integration\paprika.py:46 +#: .\cookbook\integration\openeats.py:26 +#, fuzzy +#| msgid "Recipe Home" +msgid "Recipe source:" +msgstr "Receptari" + +#: .\cookbook\integration\paprika.py:49 msgid "Notes" msgstr "Notes" -#: .\cookbook\integration\paprika.py:49 +#: .\cookbook\integration\paprika.py:52 msgid "Nutritional Information" msgstr "Informació Nutricional" -#: .\cookbook\integration\paprika.py:53 +#: .\cookbook\integration\paprika.py:56 msgid "Source" msgstr "Font" @@ -647,78 +683,78 @@ msgstr "" "Emmagatzematge màxim de fitxers per espai en MB. 0 per il·limitat, -1 per " "desactivar la càrrega de fitxers." -#: .\cookbook\models.py:364 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:365 .\cookbook\templates\search.html:7 #: .\cookbook\templates\settings.html:18 #: .\cookbook\templates\space_manage.html:7 msgid "Search" msgstr "Cerca" -#: .\cookbook\models.py:365 .\cookbook\templates\base.html:110 +#: .\cookbook\models.py:366 .\cookbook\templates\base.html:110 #: .\cookbook\templates\meal_plan.html:7 .\cookbook\views\delete.py:178 #: .\cookbook\views\edit.py:211 .\cookbook\views\new.py:179 msgid "Meal-Plan" msgstr "Plans de Menjar" -#: .\cookbook\models.py:366 .\cookbook\templates\base.html:118 +#: .\cookbook\models.py:367 .\cookbook\templates\base.html:118 msgid "Books" msgstr "Receptes" -#: .\cookbook\models.py:579 +#: .\cookbook\models.py:580 msgid " is part of a recipe step and cannot be deleted" msgstr " forma part d'un pas de recepta i no es pot suprimir" -#: .\cookbook\models.py:1180 .\cookbook\templates\search_info.html:28 +#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:28 msgid "Simple" msgstr "Simple" -#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:33 +#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:33 msgid "Phrase" msgstr "Frase" -#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:38 +#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:38 msgid "Web" msgstr "Web" -#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:47 +#: .\cookbook\models.py:1184 .\cookbook\templates\search_info.html:47 msgid "Raw" msgstr "Cru" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Food Alias" msgstr "Alies Menjar" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Unit Alias" msgstr "Àlies Unitat" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Keyword Alias" msgstr "Àlies Paraula clau" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 #, fuzzy #| msgid "Description" msgid "Description Replace" msgstr "Descripció" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 #, fuzzy #| msgid "Instructions" msgid "Instruction Replace" msgstr "Instruccions" -#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36 +#: .\cookbook\models.py:1258 .\cookbook\views\delete.py:36 #: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48 msgid "Recipe" msgstr "Recepta" -#: .\cookbook\models.py:1258 +#: .\cookbook\models.py:1259 #, fuzzy #| msgid "Foods" msgid "Food" msgstr "Menjars" -#: .\cookbook\models.py:1259 .\cookbook\templates\base.html:141 +#: .\cookbook\models.py:1260 .\cookbook\templates\base.html:141 msgid "Keyword" msgstr "Paraula Clau" @@ -734,47 +770,47 @@ msgstr "Límit de càrrega de fitxers Assolit." msgid "Cannot modify Space owner permission." msgstr "" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "Hello" msgstr "Hola" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "You have been invited by " msgstr "Convidat per " -#: .\cookbook\serializer.py:1086 +#: .\cookbook\serializer.py:1094 msgid " to join their Tandoor Recipes space " msgstr " per unir-se al seu espai de Receptes " -#: .\cookbook\serializer.py:1087 +#: .\cookbook\serializer.py:1095 msgid "Click the following link to activate your account: " msgstr "Click per activar el teu compte: " -#: .\cookbook\serializer.py:1088 +#: .\cookbook\serializer.py:1096 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" "Si l'enllaç no funciona, utilitzeu el codi següent per unir-vos a l'espai: " -#: .\cookbook\serializer.py:1089 +#: .\cookbook\serializer.py:1097 msgid "The invitation is valid until " msgstr "Invitació vàlida fins " -#: .\cookbook\serializer.py:1090 +#: .\cookbook\serializer.py:1098 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" "Tandoor Recipes és un gestor de receptes de codi obert. Comprova a GitHub " -#: .\cookbook\serializer.py:1093 +#: .\cookbook\serializer.py:1101 msgid "Tandoor Recipes Invite" msgstr "Invitació de receptes Tandoor" -#: .\cookbook\serializer.py:1234 +#: .\cookbook\serializer.py:1242 msgid "Existing shopping list to update" msgstr "Llista de la compra existent a actualitzar" -#: .\cookbook\serializer.py:1236 +#: .\cookbook\serializer.py:1244 msgid "" "List of ingredient IDs from the recipe to add, if not provided all " "ingredients will be added." @@ -782,22 +818,22 @@ msgstr "" "Llista d'ingredients IDs de la recepta per afegir, si no es proporciona, " "s'afegiran tots els ingredients." -#: .\cookbook\serializer.py:1238 +#: .\cookbook\serializer.py:1246 msgid "" "Providing a list_recipe ID and servings of 0 will delete that shopping list." msgstr "" "Proporcionant un list_recipe ID i porcions de 0, se suprimirà aquesta llista " "de la compra." -#: .\cookbook\serializer.py:1247 +#: .\cookbook\serializer.py:1255 msgid "Amount of food to add to the shopping list" msgstr "Quantitat de menjar per afegir a la llista de la compra" -#: .\cookbook\serializer.py:1249 +#: .\cookbook\serializer.py:1257 msgid "ID of unit to use for the shopping list" msgstr "ID de la unitat a utilitzar per a la llista de la compra" -#: .\cookbook\serializer.py:1251 +#: .\cookbook\serializer.py:1259 msgid "When set to true will delete all food from active shopping lists." msgstr "" "Quan s'estableix a true, se suprimirà tots els aliments de les llistes de " @@ -1414,7 +1450,7 @@ msgstr "" #: .\cookbook\templates\index.html:29 msgid "Search recipe ..." -msgstr "Cerca Recepta..." +msgstr "Cerca Recepta ..." #: .\cookbook\templates\index.html:44 msgid "New Recipe" @@ -1642,11 +1678,11 @@ msgstr "" msgid "Profile" msgstr "" -#: .\cookbook\templates\recipe_view.html:26 +#: .\cookbook\templates\recipe_view.html:41 msgid "by" msgstr "per" -#: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:144 +#: .\cookbook\templates\recipe_view.html:59 .\cookbook\views\delete.py:144 #: .\cookbook\views\edit.py:171 msgid "Comment" msgstr "Comentari" @@ -2177,81 +2213,81 @@ msgstr "" msgid "URL Import" msgstr "Importació d’URL" -#: .\cookbook\views\api.py:109 .\cookbook\views\api.py:201 +#: .\cookbook\views\api.py:110 .\cookbook\views\api.py:202 msgid "Parameter updated_at incorrectly formatted" msgstr "El paràmetre updated_at té un format incorrecte" -#: .\cookbook\views\api.py:221 .\cookbook\views\api.py:324 +#: .\cookbook\views\api.py:222 .\cookbook\views\api.py:325 #, python-brace-format msgid "No {self.basename} with id {pk} exists" msgstr "No {self.basename} amb id {pk} existeix" -#: .\cookbook\views\api.py:225 +#: .\cookbook\views\api.py:226 msgid "Cannot merge with the same object!" msgstr "No es pot fusionar amb el mateix objecte!" -#: .\cookbook\views\api.py:232 +#: .\cookbook\views\api.py:233 #, python-brace-format msgid "No {self.basename} with id {target} exists" msgstr "No {self.basename} amb id {target} existeix" -#: .\cookbook\views\api.py:237 +#: .\cookbook\views\api.py:238 msgid "Cannot merge with child object!" msgstr "No es pot combinar amb l'objecte fill!" -#: .\cookbook\views\api.py:270 +#: .\cookbook\views\api.py:271 #, python-brace-format msgid "{source.name} was merged successfully with {target.name}" msgstr "{source.name} s'ha fusionat amb {target.name}" -#: .\cookbook\views\api.py:275 +#: .\cookbook\views\api.py:276 #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" msgstr "Error en intentar combinar {source.name} amb {target.name}" -#: .\cookbook\views\api.py:333 +#: .\cookbook\views\api.py:334 #, python-brace-format msgid "{child.name} was moved successfully to the root." msgstr "{child.name} s'ha mogut correctament a l'arrel." -#: .\cookbook\views\api.py:336 .\cookbook\views\api.py:354 +#: .\cookbook\views\api.py:337 .\cookbook\views\api.py:355 msgid "An error occurred attempting to move " msgstr "Error a l'intentar moure " -#: .\cookbook\views\api.py:339 +#: .\cookbook\views\api.py:340 msgid "Cannot move an object to itself!" msgstr "No es pot moure un objecte cap a si mateix!" -#: .\cookbook\views\api.py:345 +#: .\cookbook\views\api.py:346 #, python-brace-format msgid "No {self.basename} with id {parent} exists" msgstr "No existeix {self.basename} amb identificador {parent}" -#: .\cookbook\views\api.py:351 +#: .\cookbook\views\api.py:352 #, python-brace-format msgid "{child.name} was moved successfully to parent {parent.name}" msgstr "{child.name} s'ha mogut correctament al pare {parent.name}" -#: .\cookbook\views\api.py:547 +#: .\cookbook\views\api.py:553 #, python-brace-format msgid "{obj.name} was removed from the shopping list." msgstr "{obj.name} eliminat de la llista de la compra." -#: .\cookbook\views\api.py:552 .\cookbook\views\api.py:882 -#: .\cookbook\views\api.py:895 +#: .\cookbook\views\api.py:558 .\cookbook\views\api.py:888 +#: .\cookbook\views\api.py:901 #, python-brace-format msgid "{obj.name} was added to the shopping list." msgstr "Afegit {obj.name} a la llista de la compra." -#: .\cookbook\views\api.py:679 +#: .\cookbook\views\api.py:685 msgid "ID of recipe a step is part of. For multiple repeat parameter." msgstr "ID de recepta forma part d'un pas. Per a múltiples repeteix paràmetre." -#: .\cookbook\views\api.py:681 +#: .\cookbook\views\api.py:687 msgid "Query string matched (fuzzy) against object name." msgstr "La cadena de consulta coincideix (difusa) amb el nom de l'objecte." -#: .\cookbook\views\api.py:725 +#: .\cookbook\views\api.py:731 msgid "" "Query string matched (fuzzy) against recipe name. In the future also " "fulltext search." @@ -2259,7 +2295,7 @@ msgstr "" "Cadena de consulta coincideix (difusa) amb el nom de la recepta. En el futur " "també cerca text complet." -#: .\cookbook\views\api.py:727 +#: .\cookbook\views\api.py:733 #, fuzzy #| msgid "ID of keyword a recipe should have. For multiple repeat parameter." msgid "" @@ -2269,177 +2305,177 @@ msgstr "" "ID de la paraula clau que hauria de tenir una recepta. Per a múltiples " "repeteix paràmetre." -#: .\cookbook\views\api.py:730 +#: .\cookbook\views\api.py:736 msgid "" "Keyword IDs, repeat for multiple. Return recipes with any of the keywords" msgstr "" -#: .\cookbook\views\api.py:733 +#: .\cookbook\views\api.py:739 msgid "" "Keyword IDs, repeat for multiple. Return recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:736 +#: .\cookbook\views\api.py:742 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords." msgstr "" -#: .\cookbook\views\api.py:739 +#: .\cookbook\views\api.py:745 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:741 +#: .\cookbook\views\api.py:747 msgid "ID of food a recipe should have. For multiple repeat parameter." msgstr "" "ID d'aliments que ha de tenir una recepta. Per a múltiples repeteix " "paràmetres." -#: .\cookbook\views\api.py:744 +#: .\cookbook\views\api.py:750 msgid "Food IDs, repeat for multiple. Return recipes with any of the foods" msgstr "" -#: .\cookbook\views\api.py:746 +#: .\cookbook\views\api.py:752 msgid "Food IDs, repeat for multiple. Return recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:748 +#: .\cookbook\views\api.py:754 msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods." msgstr "" -#: .\cookbook\views\api.py:750 +#: .\cookbook\views\api.py:756 msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:751 +#: .\cookbook\views\api.py:757 msgid "ID of unit a recipe should have." msgstr "ID d'unitat que hauria de tenir una recepta." -#: .\cookbook\views\api.py:753 +#: .\cookbook\views\api.py:759 msgid "" "Rating a recipe should have or greater. [0 - 5] Negative value filters " "rating less than." msgstr "" -#: .\cookbook\views\api.py:754 +#: .\cookbook\views\api.py:760 msgid "ID of book a recipe should be in. For multiple repeat parameter." msgstr "" "ID del llibre hauria d'haver-hi en una recepta. Per al paràmetre de " "repetició múltiple." -#: .\cookbook\views\api.py:756 +#: .\cookbook\views\api.py:762 msgid "Book IDs, repeat for multiple. Return recipes with any of the books" msgstr "" -#: .\cookbook\views\api.py:758 +#: .\cookbook\views\api.py:764 msgid "Book IDs, repeat for multiple. Return recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:760 +#: .\cookbook\views\api.py:766 msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books." msgstr "" -#: .\cookbook\views\api.py:762 +#: .\cookbook\views\api.py:768 msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:764 +#: .\cookbook\views\api.py:770 msgid "If only internal recipes should be returned. [true/false]" msgstr "" -#: .\cookbook\views\api.py:766 +#: .\cookbook\views\api.py:772 msgid "Returns the results in randomized order. [true/false]" msgstr "" -#: .\cookbook\views\api.py:768 +#: .\cookbook\views\api.py:774 msgid "Returns new results first in search results. [true/false]" msgstr "" -#: .\cookbook\views\api.py:770 +#: .\cookbook\views\api.py:776 msgid "" "Filter recipes cooked X times or more. Negative values returns cooked less " "than X times" msgstr "" -#: .\cookbook\views\api.py:772 +#: .\cookbook\views\api.py:778 msgid "" "Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:774 +#: .\cookbook\views\api.py:780 msgid "" "Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:776 +#: .\cookbook\views\api.py:782 msgid "" "Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:778 +#: .\cookbook\views\api.py:784 msgid "" "Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:780 +#: .\cookbook\views\api.py:786 msgid "Filter recipes that can be made with OnHand food. [true/false]" msgstr "" -#: .\cookbook\views\api.py:940 +#: .\cookbook\views\api.py:946 msgid "" "Returns the shopping list entry with a primary key of id. Multiple values " "allowed." msgstr "" -#: .\cookbook\views\api.py:945 +#: .\cookbook\views\api.py:951 msgid "" "Filter shopping list entries on checked. [true, false, both, recent]
- recent includes unchecked items and recently completed items." msgstr "" -#: .\cookbook\views\api.py:948 +#: .\cookbook\views\api.py:954 msgid "Returns the shopping list entries sorted by supermarket category order." msgstr "" -#: .\cookbook\views\api.py:1160 +#: .\cookbook\views\api.py:1166 msgid "Nothing to do." msgstr "Res a fer." -#: .\cookbook\views\api.py:1180 +#: .\cookbook\views\api.py:1198 msgid "Invalid Url" msgstr "" -#: .\cookbook\views\api.py:1187 +#: .\cookbook\views\api.py:1205 msgid "Connection Refused." msgstr "Connexió Refusada." -#: .\cookbook\views\api.py:1192 +#: .\cookbook\views\api.py:1210 msgid "Bad URL Schema." msgstr "" -#: .\cookbook\views\api.py:1215 +#: .\cookbook\views\api.py:1233 msgid "No usable data could be found." msgstr "No s'han trobat dades utilitzables." -#: .\cookbook\views\api.py:1308 .\cookbook\views\import_export.py:114 +#: .\cookbook\views\api.py:1326 .\cookbook\views\import_export.py:117 msgid "Importing is not implemented for this provider" msgstr "Importació no implementada en aquest proveïdor" -#: .\cookbook\views\api.py:1352 .\cookbook\views\data.py:31 +#: .\cookbook\views\api.py:1372 .\cookbook\views\data.py:31 #: .\cookbook\views\edit.py:120 .\cookbook\views\new.py:90 msgid "This feature is not yet available in the hosted version of tandoor!" msgstr "" "Aquesta funció encara no està disponible a la versió allotjada de tandoor!" -#: .\cookbook\views\api.py:1374 +#: .\cookbook\views\api.py:1394 msgid "Sync successful!" msgstr "Sincronització correcte" -#: .\cookbook\views\api.py:1379 +#: .\cookbook\views\api.py:1399 msgid "Error synchronizing with Storage" msgstr "Error de sincronització amb emmagatzematge" @@ -2505,7 +2541,7 @@ msgstr "Canvis desats!" msgid "Error saving changes!" msgstr "Error al desar canvis!" -#: .\cookbook\views\import_export.py:101 +#: .\cookbook\views\import_export.py:104 msgid "" "The PDF Exporter is not enabled on this instance as it is still in an " "experimental state." @@ -2555,7 +2591,12 @@ msgstr "Nova Recepta importada!" msgid "There was an error importing this recipe!" msgstr "S'ha produït un error en importar la recepta!" -#: .\cookbook\views\views.py:86 +#: .\cookbook\views\views.py:73 .\cookbook\views\views.py:191 +#: .\cookbook\views\views.py:213 .\cookbook\views\views.py:399 +msgid "This feature is not available in the demo version!" +msgstr "Funció no està disponible a la versió de demostració!" + +#: .\cookbook\views\views.py:89 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." @@ -2563,24 +2604,19 @@ msgstr "" "Espai de Receptes creat correctament. Comenceu afegint algunes receptes o " "convida altres persones a unir-se." -#: .\cookbook\views\views.py:140 +#: .\cookbook\views\views.py:143 msgid "You do not have the required permissions to perform this action!" msgstr "No teniu els permisos necessaris per dur a terme aquesta acció!" -#: .\cookbook\views\views.py:151 +#: .\cookbook\views\views.py:154 msgid "Comment saved!" msgstr "Comentari Desat!" -#: .\cookbook\views\views.py:188 .\cookbook\views\views.py:210 -#: .\cookbook\views\views.py:396 -msgid "This feature is not available in the demo version!" -msgstr "Funció no està disponible a la versió de demostració!" - -#: .\cookbook\views\views.py:250 +#: .\cookbook\views\views.py:253 msgid "You must select at least one field to search!" msgstr "Heu de seleccionar almenys un camp per cercar!" -#: .\cookbook\views\views.py:255 +#: .\cookbook\views\views.py:258 msgid "" "To use this search method you must select at least one full text search " "field!" @@ -2588,11 +2624,11 @@ msgstr "" "Per utilitzar aquest mètode de cerca, heu de seleccionar almenys un camp de " "cerca de text complet!" -#: .\cookbook\views\views.py:259 +#: .\cookbook\views\views.py:262 msgid "Fuzzy search is not compatible with this search method!" msgstr "Cerca difusa no és compatible amb aquest mètode de cerca!" -#: .\cookbook\views\views.py:335 +#: .\cookbook\views\views.py:338 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2602,27 +2638,27 @@ msgstr "" "Si heu oblidat les vostres credencials de superusuari, consulteu la " "documentació de django sobre com restablir les contrasenyes." -#: .\cookbook\views\views.py:342 +#: .\cookbook\views\views.py:345 msgid "Passwords dont match!" msgstr "Les contrasenyes no coincideixen!" -#: .\cookbook\views\views.py:350 +#: .\cookbook\views\views.py:353 msgid "User has been created, please login!" msgstr "L'usuari s'ha creat, si us plau inicieu la sessió!" -#: .\cookbook\views\views.py:366 +#: .\cookbook\views\views.py:369 msgid "Malformed Invite Link supplied!" msgstr "S'ha proporcionat un enllaç d'invitació mal format." -#: .\cookbook\views\views.py:383 +#: .\cookbook\views\views.py:386 msgid "Successfully joined space." msgstr "Unit correctament a l'espai." -#: .\cookbook\views\views.py:389 +#: .\cookbook\views\views.py:392 msgid "Invite Link not valid or already used!" msgstr "L'enllaç d'invitació no és vàlid o ja s'ha utilitzat." -#: .\cookbook\views\views.py:406 +#: .\cookbook\views\views.py:409 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." @@ -2630,7 +2666,7 @@ msgstr "" "Notificació d'enllaços compartits no activada en aquesta instància. Aviseu " "l'administrador per informar dels problemes." -#: .\cookbook\views\views.py:412 +#: .\cookbook\views\views.py:415 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/cs/LC_MESSAGES/django.mo b/cookbook/locale/cs/LC_MESSAGES/django.mo index 617c31e7..fe70e404 100644 Binary files a/cookbook/locale/cs/LC_MESSAGES/django.mo and b/cookbook/locale/cs/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/da/LC_MESSAGES/django.mo b/cookbook/locale/da/LC_MESSAGES/django.mo index f0c157be..8da304df 100644 Binary files a/cookbook/locale/da/LC_MESSAGES/django.mo and b/cookbook/locale/da/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/da/LC_MESSAGES/django.po b/cookbook/locale/da/LC_MESSAGES/django.po index 7ab8150b..8d373873 100644 --- a/cookbook/locale/da/LC_MESSAGES/django.po +++ b/cookbook/locale/da/LC_MESSAGES/django.po @@ -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: 2023-03-06 10:55+0000\n" -"Last-Translator: Anders Obro \n" +"PO-Revision-Date: 2023-04-12 11:55+0000\n" +"Last-Translator: noxonad \n" "Language-Team: Danish \n" "Language: da\n" @@ -1806,7 +1806,7 @@ msgid "" msgstr "" " \n" " Heltekstsøgning forsøger at normalisere de givne ord så de " -"matcher stammevarianter. F.eks: 'skeen', 'skeer' og 'sket' vil alt " +"matcher stammevarianter. F.eks: 'skeen', 'skeer' og 'sket' vil alt " "normaliseres til 'ske'.\n" " Der er flere metoder tilgængelige, beskrevet herunder, som vil " "bestemme hvordan søgningen skal opfører sig når flere søgeord er angivet.\n" diff --git a/cookbook/locale/de/LC_MESSAGES/django.mo b/cookbook/locale/de/LC_MESSAGES/django.mo index 27e26294..da2c5568 100644 Binary files a/cookbook/locale/de/LC_MESSAGES/django.mo and b/cookbook/locale/de/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/de/LC_MESSAGES/django.po b/cookbook/locale/de/LC_MESSAGES/django.po index eb97192d..b2361c93 100644 --- a/cookbook/locale/de/LC_MESSAGES/django.po +++ b/cookbook/locale/de/LC_MESSAGES/django.po @@ -14,11 +14,11 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: 2023-02-09 13:55+0000\n" "Last-Translator: Marion Kämpfer \n" -"Language-Team: German \n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -66,7 +66,8 @@ msgstr "Nachkommastellen für Zutaten" msgid "Shopping list auto sync period" msgstr "Synchronisierungshäufigkeit der Einkaufsliste" -#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:21 +#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:36 +#: .\cookbook\templates\recipe_view.html:21 msgid "Comments" msgstr "Kommentare" @@ -119,7 +120,7 @@ msgstr "" "Wenn du in der Lage sein willst, Kommentare unter Rezepten zu erstellen und " "zu sehen." -#: .\cookbook\forms.py:79 .\cookbook\forms.py:491 +#: .\cookbook\forms.py:79 .\cookbook\forms.py:492 .\cookbook\forms.py:491 msgid "" "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. " @@ -135,7 +136,7 @@ msgstr "" msgid "Makes the navbar stick to the top of the page." msgstr "Navigationsleiste wird oben angeheftet." -#: .\cookbook\forms.py:83 .\cookbook\forms.py:494 +#: .\cookbook\forms.py:83 .\cookbook\forms.py:495 .\cookbook\forms.py:494 msgid "Automatically add meal plan ingredients to shopping list." msgstr "Fügt die Zutaten des Speiseplans automatisch zur Einkaufsliste hinzu." @@ -155,11 +156,12 @@ msgstr "" "Beide Felder sind optional. Wenn keins von beiden gegeben ist, wird der " "Nutzername angezeigt" -#: .\cookbook\forms.py:123 .\cookbook\forms.py:296 +#: .\cookbook\forms.py:123 .\cookbook\forms.py:297 .\cookbook\forms.py:296 msgid "Name" msgstr "Name" -#: .\cookbook\forms.py:124 .\cookbook\forms.py:297 .\cookbook\views\lists.py:88 +#: .\cookbook\forms.py:124 .\cookbook\forms.py:298 .\cookbook\views\lists.py:88 +#: .\cookbook\forms.py:297 msgid "Keywords" msgstr "Stichwörter" @@ -171,7 +173,8 @@ msgstr "Zubereitungszeit in Minuten" msgid "Waiting time (cooking/baking) in minutes" msgstr "Wartezeit (kochen/backen) in Minuten" -#: .\cookbook\forms.py:127 .\cookbook\forms.py:265 .\cookbook\forms.py:298 +#: .\cookbook\forms.py:127 .\cookbook\forms.py:266 .\cookbook\forms.py:299 +#: .\cookbook\forms.py:265 .\cookbook\forms.py:298 msgid "Path" msgstr "Pfad" @@ -179,11 +182,11 @@ msgstr "Pfad" msgid "Storage UID" msgstr "Speicher-UID" -#: .\cookbook\forms.py:160 +#: .\cookbook\forms.py:161 .\cookbook\forms.py:160 msgid "Default" msgstr "Standard" -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:173 .\cookbook\forms.py:172 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." @@ -191,19 +194,19 @@ msgstr "" "Um Duplikate zu vermeiden werden Rezepte mit dem gleichen Namen ignoriert. " "Aktivieren Sie dieses Kontrollkästchen, um alles zu importieren." -#: .\cookbook\forms.py:195 +#: .\cookbook\forms.py:196 .\cookbook\forms.py:195 msgid "Add your comment: " msgstr "Schreibe einen Kommentar: " -#: .\cookbook\forms.py:210 +#: .\cookbook\forms.py:211 .\cookbook\forms.py:210 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "Für Dropbox leer lassen, bei Nextcloud App-Passwort eingeben." -#: .\cookbook\forms.py:217 +#: .\cookbook\forms.py:218 .\cookbook\forms.py:217 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Für Nextcloud leer lassen, für Dropbox API-Token eingeben." -#: .\cookbook\forms.py:226 +#: .\cookbook\forms.py:227 .\cookbook\forms.py:226 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -211,33 +214,33 @@ msgstr "" "Für Dropbox leer lassen, für Nextcloud Server-URL angeben (/remote.php/" "webdav/ wird automatisch hinzugefügt)" -#: .\cookbook\forms.py:264 .\cookbook\views\edit.py:157 +#: .\cookbook\forms.py:265 .\cookbook\views\edit.py:157 .\cookbook\forms.py:264 msgid "Storage" msgstr "Speicher" -#: .\cookbook\forms.py:266 +#: .\cookbook\forms.py:267 .\cookbook\forms.py:266 msgid "Active" msgstr "Aktiv" -#: .\cookbook\forms.py:272 +#: .\cookbook\forms.py:273 .\cookbook\forms.py:272 msgid "Search String" msgstr "Suchwort" -#: .\cookbook\forms.py:299 +#: .\cookbook\forms.py:300 .\cookbook\forms.py:299 msgid "File ID" msgstr "Datei-ID" -#: .\cookbook\forms.py:321 +#: .\cookbook\forms.py:322 .\cookbook\forms.py:321 msgid "You must provide at least a recipe or a title." msgstr "Mindestens ein Rezept oder ein Titel müssen angegeben werden." -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:335 .\cookbook\forms.py:334 msgid "You can list default users to share recipes with in the settings." msgstr "" "Sie können in den Einstellungen Standardbenutzer auflisten, für die Sie " "Rezepte freigeben möchten." -#: .\cookbook\forms.py:335 +#: .\cookbook\forms.py:336 .\cookbook\forms.py:335 msgid "" "You can use markdown to format this field. See the docs here" @@ -245,15 +248,15 @@ msgstr "" "Markdown kann genutzt werden, um dieses Feld zu formatieren. Siehe hier für weitere Information" -#: .\cookbook\forms.py:361 +#: .\cookbook\forms.py:362 .\cookbook\forms.py:361 msgid "Maximum number of users for this space reached." msgstr "Maximale Nutzer-Anzahl wurde für diesen Space erreicht." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:368 .\cookbook\forms.py:367 msgid "Email address already taken!" msgstr "Email-Adresse ist bereits vergeben!" -#: .\cookbook\forms.py:375 +#: .\cookbook\forms.py:376 .\cookbook\forms.py:375 msgid "" "An email address is not required but if present the invite link will be sent " "to the user." @@ -261,15 +264,15 @@ msgstr "" "Eine Email-Adresse wird nicht benötigt, aber falls vorhanden, wird der " "Einladungslink zum Benutzer geschickt." -#: .\cookbook\forms.py:390 +#: .\cookbook\forms.py:391 .\cookbook\forms.py:390 msgid "Name already taken." msgstr "Name wird bereits verwendet." -#: .\cookbook\forms.py:401 +#: .\cookbook\forms.py:402 .\cookbook\forms.py:401 msgid "Accept Terms and Privacy" msgstr "AGB und Datenschutzerklärung akzeptieren" -#: .\cookbook\forms.py:433 +#: .\cookbook\forms.py:434 .\cookbook\forms.py:433 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." @@ -277,7 +280,7 @@ msgstr "" "Legt fest wie unscharf eine Suche ist, falls Trigramme verwendet werden (i." "A. führen niedrigere Werte zum ignorieren von mehr Tippfehlern)." -#: .\cookbook\forms.py:443 +#: .\cookbook\forms.py:444 .\cookbook\forms.py:443 msgid "" "Select type method of search. Click here for " "full description of choices." @@ -285,7 +288,7 @@ msgstr "" "Suchmethode auswählen. Klicke hier für eine " "vollständige Erklärung der Optionen." -#: .\cookbook\forms.py:444 +#: .\cookbook\forms.py:445 .\cookbook\forms.py:444 msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." @@ -293,23 +296,23 @@ msgstr "" "Benutze die unscharfe Suche für Einheiten, Schlüsselwörter und Zutaten beim " "ändern und importieren von Rezepten." -#: .\cookbook\forms.py:446 +#: .\cookbook\forms.py:447 .\cookbook\forms.py:446 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" msgstr "" -"Felder bei welchen Akzente ignoriert werden. Das aktivieren dieser Option " +"Felder bei welchen Akzente ignoriert werden. Das aktivieren dieser Option " "kann die Suchqualität je nach Sprache verbessern oder verschlechtern" -#: .\cookbook\forms.py:448 +#: .\cookbook\forms.py:449 .\cookbook\forms.py:448 msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" msgstr "" "Felder welche auf partielle Treffer durchsucht werden. (z.B. eine Suche " -"nach \"Spa\" wird \"Spaghetti\", \"Spargel\" und \"Grünspargel\" liefern.)" +"nach 'Spa' wird 'Spaghetti', 'Spargel' und 'Grünspargel' liefern.)" -#: .\cookbook\forms.py:450 +#: .\cookbook\forms.py:451 .\cookbook\forms.py:450 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" @@ -317,7 +320,7 @@ msgstr "" "Felder welche auf übereinstimmenden Wortbeginn durchsucht werden. (z.B. eine " "Suche nach \"Spa\" wird \"Spaghetti\" und \"Spargel\" liefern.)" -#: .\cookbook\forms.py:452 +#: .\cookbook\forms.py:453 .\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." @@ -326,7 +329,7 @@ msgstr "" "\"Kuhcen\" wird \"Kuchen\" liefern.) Tipp: Diese Option konfligiert mit den " "\"web\" und \"raw\" Suchtypen." -#: .\cookbook\forms.py:454 +#: .\cookbook\forms.py:455 .\cookbook\forms.py:454 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." @@ -334,35 +337,35 @@ msgstr "" "Felder welche im Volltext durchsucht werden sollen. Tipp: Die Suchtypen \"web" "\", \"raw\" und \"phrase\" funktionieren nur mit Volltext-Feldern." -#: .\cookbook\forms.py:458 +#: .\cookbook\forms.py:459 .\cookbook\forms.py:458 msgid "Search Method" msgstr "Suchmethode" -#: .\cookbook\forms.py:459 +#: .\cookbook\forms.py:460 .\cookbook\forms.py:459 msgid "Fuzzy Lookups" msgstr "Unscharfe Suche" -#: .\cookbook\forms.py:460 +#: .\cookbook\forms.py:461 .\cookbook\forms.py:460 msgid "Ignore Accent" msgstr "Akzente ignorieren" -#: .\cookbook\forms.py:461 +#: .\cookbook\forms.py:462 .\cookbook\forms.py:461 msgid "Partial Match" msgstr "Teilweise Übereinstimmung" -#: .\cookbook\forms.py:462 +#: .\cookbook\forms.py:463 .\cookbook\forms.py:462 msgid "Starts With" msgstr "Beginnt mit" -#: .\cookbook\forms.py:463 +#: .\cookbook\forms.py:464 .\cookbook\forms.py:463 msgid "Fuzzy Search" msgstr "Unpräzise Suche" -#: .\cookbook\forms.py:464 +#: .\cookbook\forms.py:465 .\cookbook\forms.py:464 msgid "Full Text" msgstr "Volltext" -#: .\cookbook\forms.py:489 +#: .\cookbook\forms.py:490 .\cookbook\forms.py:489 msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." @@ -371,7 +374,7 @@ msgstr "" "Benutzer müssen Sie hinzufügen, damit Sie Artikel auf der Liste der Benutzer " "sehen können." -#: .\cookbook\forms.py:495 +#: .\cookbook\forms.py:496 .\cookbook\forms.py:495 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." @@ -379,7 +382,7 @@ msgstr "" "Wenn Sie einen Essensplan zur Einkaufsliste hinzufügen (manuell oder " "automatisch), fügen Sie alle zugehörigen Rezepte hinzu." -#: .\cookbook\forms.py:496 +#: .\cookbook\forms.py:497 .\cookbook\forms.py:496 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." @@ -387,98 +390,98 @@ msgstr "" "Wenn Sie einen Essensplan zur Einkaufsliste hinzufügen (manuell oder " "automatisch), schließen Sie Zutaten aus, die Sie gerade zur Hand haben." -#: .\cookbook\forms.py:497 +#: .\cookbook\forms.py:498 .\cookbook\forms.py:497 msgid "Default number of hours to delay a shopping list entry." msgstr "" "Voreingestellte Anzahl von Stunden für die Verzögerung eines " "Einkaufslisteneintrags." -#: .\cookbook\forms.py:498 +#: .\cookbook\forms.py:499 .\cookbook\forms.py:498 msgid "Filter shopping list to only include supermarket categories." msgstr "" "Nur für den Supermarkt konfigurierte Kategorien in Einkaufsliste anzeigen." -#: .\cookbook\forms.py:499 +#: .\cookbook\forms.py:500 .\cookbook\forms.py:499 msgid "Days of recent shopping list entries to display." msgstr "" "Tage der letzten Einträge in der Einkaufsliste, die angezeigt werden sollen." -#: .\cookbook\forms.py:500 +#: .\cookbook\forms.py:501 .\cookbook\forms.py:500 msgid "Mark food 'On Hand' when checked off shopping list." msgstr "" "Lebensmittel als vorrätig markieren, wenn es in der Einkaufliste abgehakt " "wurde." -#: .\cookbook\forms.py:501 +#: .\cookbook\forms.py:502 .\cookbook\forms.py:501 msgid "Delimiter to use for CSV exports." msgstr "Separator für CSV-Export." -#: .\cookbook\forms.py:502 +#: .\cookbook\forms.py:503 .\cookbook\forms.py:502 msgid "Prefix to add when copying list to the clipboard." msgstr "Zusatz wird der in die Zwischenablage kopierten Liste vorangestellt." -#: .\cookbook\forms.py:506 +#: .\cookbook\forms.py:507 .\cookbook\forms.py:506 msgid "Share Shopping List" msgstr "Einkaufsliste teilen" -#: .\cookbook\forms.py:507 +#: .\cookbook\forms.py:508 .\cookbook\forms.py:507 msgid "Autosync" msgstr "Automatischer Abgleich" -#: .\cookbook\forms.py:508 +#: .\cookbook\forms.py:509 .\cookbook\forms.py:508 msgid "Auto Add Meal Plan" msgstr "automatisch dem Menüplan hinzufügen" -#: .\cookbook\forms.py:509 +#: .\cookbook\forms.py:510 .\cookbook\forms.py:509 msgid "Exclude On Hand" msgstr "Ausgenommen Vorrätiges" -#: .\cookbook\forms.py:510 +#: .\cookbook\forms.py:511 .\cookbook\forms.py:510 msgid "Include Related" msgstr "dazugehörend" -#: .\cookbook\forms.py:511 +#: .\cookbook\forms.py:512 .\cookbook\forms.py:511 msgid "Default Delay Hours" msgstr "Standardmäßige Verzögerung in Stunden" -#: .\cookbook\forms.py:512 +#: .\cookbook\forms.py:513 .\cookbook\forms.py:512 msgid "Filter to Supermarket" msgstr "Supermarkt filtern" -#: .\cookbook\forms.py:513 +#: .\cookbook\forms.py:514 .\cookbook\forms.py:513 msgid "Recent Days" msgstr "Vergangene Tage" -#: .\cookbook\forms.py:514 +#: .\cookbook\forms.py:515 .\cookbook\forms.py:514 msgid "CSV Delimiter" msgstr "CSV Trennzeichen" -#: .\cookbook\forms.py:515 +#: .\cookbook\forms.py:516 .\cookbook\forms.py:515 msgid "List Prefix" msgstr "Listenpräfix" -#: .\cookbook\forms.py:516 +#: .\cookbook\forms.py:517 .\cookbook\forms.py:516 msgid "Auto On Hand" msgstr "Automatisch als vorrätig markieren" -#: .\cookbook\forms.py:526 +#: .\cookbook\forms.py:527 .\cookbook\forms.py:526 msgid "Reset Food Inheritance" msgstr "Lebensmittelvererbung zurücksetzen" -#: .\cookbook\forms.py:527 +#: .\cookbook\forms.py:528 .\cookbook\forms.py:527 msgid "Reset all food to inherit the fields configured." msgstr "" "Alle Lebensmittel zurücksetzen, um die konfigurierten Felder zu übernehmen." -#: .\cookbook\forms.py:539 +#: .\cookbook\forms.py:540 .\cookbook\forms.py:539 msgid "Fields on food that should be inherited by default." msgstr "Zutaten, die standardmäßig übernommen werden sollen." -#: .\cookbook\forms.py:540 +#: .\cookbook\forms.py:541 .\cookbook\forms.py:540 msgid "Show recipe counts on search filters" msgstr "Rezeptanzahl im Suchfiltern anzeigen" -#: .\cookbook\forms.py:541 +#: .\cookbook\forms.py:542 .\cookbook\forms.py:541 msgid "Use the plural form for units and food inside this space." msgstr "Pluralform für Einheiten und Essen in diesem Space verwenden." @@ -491,7 +494,8 @@ msgstr "" "warte ein paar Minuten und versuche es erneut." #: .\cookbook\helper\permission_helper.py:164 -#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:114 +#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117 +#: .\cookbook\views\views.py:114 msgid "You are not logged in and therefore cannot view this page!" msgstr "Du bist nicht angemeldet, daher kannst du diese Seite nicht sehen!" @@ -504,6 +508,7 @@ msgstr "Du bist nicht angemeldet, daher kannst du diese Seite nicht sehen!" #: .\cookbook\helper\permission_helper.py:305 #: .\cookbook\helper\permission_helper.py:321 #: .\cookbook\helper\permission_helper.py:342 .\cookbook\views\data.py:36 +#: .\cookbook\views\views.py:128 .\cookbook\views\views.py:135 #: .\cookbook\views\views.py:125 .\cookbook\views\views.py:132 msgid "You do not have the required permissions to view this page!" msgstr "Du hast nicht die notwendigen Rechte um diese Seite zu sehen!" @@ -524,39 +529,47 @@ msgstr "Du hast die maximale Anzahl an Rezepten für Deinen Space erreicht." msgid "You have more users than allowed in your space." msgstr "Du hast mehr Benutzer in Deinem Space als erlaubt." +#: .\cookbook\helper\recipe_search.py:630 #: .\cookbook\helper\recipe_search.py:570 msgid "One of queryset or hash_key must be provided" msgstr "Es muss die Abfrage oder der Hash_Key angeben werden" +#: .\cookbook\helper\recipe_url_import.py:266 #: .\cookbook\helper\recipe_url_import.py:265 msgid "reverse rotation" msgstr "Linkslauf" +#: .\cookbook\helper\recipe_url_import.py:267 #: .\cookbook\helper\recipe_url_import.py:266 msgid "careful rotation" msgstr "Kochlöffel" +#: .\cookbook\helper\recipe_url_import.py:268 #: .\cookbook\helper\recipe_url_import.py:267 msgid "knead" msgstr "Kneten" +#: .\cookbook\helper\recipe_url_import.py:269 #: .\cookbook\helper\recipe_url_import.py:268 msgid "thicken" msgstr "Andicken" +#: .\cookbook\helper\recipe_url_import.py:270 #: .\cookbook\helper\recipe_url_import.py:269 msgid "warm up" msgstr "Erwärmen" +#: .\cookbook\helper\recipe_url_import.py:271 #: .\cookbook\helper\recipe_url_import.py:270 msgid "ferment" msgstr "Fermentieren" +#: .\cookbook\helper\recipe_url_import.py:272 #: .\cookbook\helper\recipe_url_import.py:271 msgid "sous-vide" msgstr "Sous-vide" - +#: .\cookbook\helper\shopping_helper.py:157 #: .\cookbook\helper\shopping_helper.py:152 msgid "You must supply a servings size" msgstr "Sie müssen eine Portionsgröße angeben" @@ -575,6 +588,7 @@ msgstr "Favorit" msgid "I made this" msgstr "Von mir gekocht" +#: .\cookbook\integration\integration.py:218 #: .\cookbook\integration\integration.py:223 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " @@ -583,6 +597,7 @@ msgstr "" "Importer erwartet eine .zip Datei. Hast du den richtigen Importer-Typ für " "deine Daten ausgewählt?" +#: .\cookbook\integration\integration.py:221 #: .\cookbook\integration\integration.py:226 msgid "" "An unexpected error occurred during the import. Please make sure you have " @@ -591,24 +606,31 @@ msgstr "" "Ein unerwarteter Fehler trat beim Importieren auf. Bitte stelle sicher, dass " "die hochgeladene Datei gültig ist." +#: .\cookbook\integration\integration.py:226 #: .\cookbook\integration\integration.py:231 msgid "The following recipes were ignored because they already existed:" msgstr "Die folgenden Rezepte wurden ignoriert da sie bereits existieren:" +#: .\cookbook\integration\integration.py:230 #: .\cookbook\integration\integration.py:235 #, python-format msgid "Imported %s recipes." msgstr "%s Rezepte importiert." -#: .\cookbook\integration\paprika.py:46 +#: .\cookbook\integration\openeats.py:26 +#, fuzzy +msgid "Recipe source:" +msgstr "Rezept-Hauptseite" + +#: .\cookbook\integration\paprika.py:49 .\cookbook\integration\paprika.py:46 msgid "Notes" msgstr "Notizen" -#: .\cookbook\integration\paprika.py:49 +#: .\cookbook\integration\paprika.py:52 .\cookbook\integration\paprika.py:49 msgid "Nutritional Information" msgstr "Nährwert Informationen" -#: .\cookbook\integration\paprika.py:53 +#: .\cookbook\integration\paprika.py:56 .\cookbook\integration\paprika.py:53 msgid "Source" msgstr "Quelle" @@ -679,76 +701,80 @@ msgstr "" "Maximale Datei-Speichergröße in MB. 0 für unbegrenzt, -1 um den Datei-Upload " "zu deaktivieren." -#: .\cookbook\models.py:364 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:365 .\cookbook\templates\search.html:7 #: .\cookbook\templates\settings.html:18 -#: .\cookbook\templates\space_manage.html:7 +#: .\cookbook\templates\space_manage.html:7 .\cookbook\models.py:364 msgid "Search" msgstr "Suchen" -#: .\cookbook\models.py:365 .\cookbook\templates\base.html:110 +#: .\cookbook\models.py:366 .\cookbook\templates\base.html:110 #: .\cookbook\templates\meal_plan.html:7 .\cookbook\views\delete.py:178 #: .\cookbook\views\edit.py:211 .\cookbook\views\new.py:179 +#: .\cookbook\models.py:365 msgid "Meal-Plan" msgstr "Essensplan" -#: .\cookbook\models.py:366 .\cookbook\templates\base.html:118 +#: .\cookbook\models.py:367 .\cookbook\templates\base.html:118 +#: .\cookbook\models.py:366 msgid "Books" msgstr "Bücher" -#: .\cookbook\models.py:579 +#: .\cookbook\models.py:580 .\cookbook\models.py:579 msgid " is part of a recipe step and cannot be deleted" msgstr " ist Teil eines Rezepts und kann nicht gelöscht werden" -#: .\cookbook\models.py:1180 .\cookbook\templates\search_info.html:28 +#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:28 +#: .\cookbook\models.py:1180 msgid "Simple" msgstr "Einfach" -#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:33 +#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:33 +#: .\cookbook\models.py:1181 msgid "Phrase" msgstr "Satz" -#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:38 +#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:38 +#: .\cookbook\models.py:1182 msgid "Web" msgstr "Web" -#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:47 +#: .\cookbook\models.py:1184 .\cookbook\templates\search_info.html:47 +#: .\cookbook\models.py:1183 msgid "Raw" msgstr "Rohdaten" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 .\cookbook\models.py:1230 msgid "Food Alias" msgstr "Lebensmittel Alias" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 .\cookbook\models.py:1230 msgid "Unit Alias" msgstr "Einheiten Alias" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 .\cookbook\models.py:1230 msgid "Keyword Alias" msgstr "Stichwort Alias" #: .\cookbook\models.py:1231 -#, fuzzy -#| msgid "Description" msgid "Description Replace" -msgstr "Beschreibung" +msgstr "Beschreibung ersetzen" #: .\cookbook\models.py:1231 -#, fuzzy -#| msgid "Instructions" msgid "Instruction Replace" -msgstr "Anleitung" +msgstr "Anleitung ersetzen" -#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36 +#: .\cookbook\models.py:1258 .\cookbook\views\delete.py:36 #: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48 +#: .\cookbook\models.py:1257 msgid "Recipe" msgstr "Rezept" -#: .\cookbook\models.py:1258 +#: .\cookbook\models.py:1259 .\cookbook\models.py:1258 msgid "Food" msgstr "Lebensmittel" -#: .\cookbook\models.py:1259 .\cookbook\templates\base.html:141 +#: .\cookbook\models.py:1260 .\cookbook\templates\base.html:141 +#: .\cookbook\models.py:1259 msgid "Keyword" msgstr "Schlüsselwort" @@ -764,49 +790,49 @@ msgstr "Du hast Dein Datei-Uploadlimit erreicht." msgid "Cannot modify Space owner permission." msgstr "Die Eigentumsberechtigung am Space kann nicht geändert werden." -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 .\cookbook\serializer.py:1085 msgid "Hello" msgstr "Hallo" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 .\cookbook\serializer.py:1085 msgid "You have been invited by " msgstr "Du wurdest eingeladen von " -#: .\cookbook\serializer.py:1086 +#: .\cookbook\serializer.py:1094 .\cookbook\serializer.py:1086 msgid " to join their Tandoor Recipes space " msgstr " um deren Tandoor Recipes Instanz beizutreten " -#: .\cookbook\serializer.py:1087 +#: .\cookbook\serializer.py:1095 .\cookbook\serializer.py:1087 msgid "Click the following link to activate your account: " msgstr "Klicke auf den folgenden Link, um deinen Account zu aktivieren: " -#: .\cookbook\serializer.py:1088 +#: .\cookbook\serializer.py:1096 .\cookbook\serializer.py:1088 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" "Falls der Link nicht funktioniert, benutze den folgenden Code um dem Space " "manuell beizutreten: " -#: .\cookbook\serializer.py:1089 +#: .\cookbook\serializer.py:1097 .\cookbook\serializer.py:1089 msgid "The invitation is valid until " msgstr "Die Einladung ist gültig bis " -#: .\cookbook\serializer.py:1090 +#: .\cookbook\serializer.py:1098 .\cookbook\serializer.py:1090 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" "Tandoor Recipes ist ein Open-Source Rezept-Manager. Mehr Informationen sind " "auf GitHub zu finden " -#: .\cookbook\serializer.py:1093 +#: .\cookbook\serializer.py:1101 .\cookbook\serializer.py:1093 msgid "Tandoor Recipes Invite" msgstr "Tandoor Recipes Einladung" -#: .\cookbook\serializer.py:1234 +#: .\cookbook\serializer.py:1242 .\cookbook\serializer.py:1234 msgid "Existing shopping list to update" msgstr "Bestehende Einkaufliste, die aktualisiert werden soll" -#: .\cookbook\serializer.py:1236 +#: .\cookbook\serializer.py:1244 .\cookbook\serializer.py:1236 msgid "" "List of ingredient IDs from the recipe to add, if not provided all " "ingredients will be added." @@ -814,23 +840,23 @@ msgstr "" "Liste der Zutaten-IDs aus dem Rezept, wenn keine Angabe erfolgt, werden alle " "Zutaten hinzugefügt." -#: .\cookbook\serializer.py:1238 +#: .\cookbook\serializer.py:1246 .\cookbook\serializer.py:1238 msgid "" "Providing a list_recipe ID and servings of 0 will delete that shopping list." msgstr "" "Wenn Sie eine list_recipe ID und Portion mit dem Wert 0 angeben, wird diese " "Einkaufsliste gelöscht." -#: .\cookbook\serializer.py:1247 +#: .\cookbook\serializer.py:1255 .\cookbook\serializer.py:1247 msgid "Amount of food to add to the shopping list" msgstr "" "Menge des Lebensmittels, welches der Einkaufsliste hinzugefügt werden soll" -#: .\cookbook\serializer.py:1249 +#: .\cookbook\serializer.py:1257 .\cookbook\serializer.py:1249 msgid "ID of unit to use for the shopping list" msgstr "ID der Einheit, die für die Einkaufsliste verwendet werden soll" -#: .\cookbook\serializer.py:1251 +#: .\cookbook\serializer.py:1259 .\cookbook\serializer.py:1251 msgid "When set to true will delete all food from active shopping lists." msgstr "" "Wenn diese Option aktiviert ist, werden alle Lebensmittel aus den aktiven " @@ -963,7 +989,7 @@ msgid "" " issue a new e-mail confirmation " "request." msgstr "" -"Dieser Email-Bestätigungslink ist abgelaufen oder ungültig. Bitte \n" +"Dieser Email-Bestätigungslink ist abgelaufen oder ungültig. Bitte\n" " beantrage einen neuen Email-" "Bestätigungslink." @@ -1079,7 +1105,7 @@ msgstr "" #: .\cookbook\templates\account\password_reset_from_key.html:33 msgid "change password" -msgstr "Passwort ändern" +msgstr "passwort ändern" #: .\cookbook\templates\account\password_reset_from_key.html:36 #: .\cookbook\templates\account\password_reset_from_key_done.html:19 @@ -1252,7 +1278,7 @@ msgstr "Ausloggen" #: .\cookbook\templates\base.html:360 msgid "You are using the free version of Tandor" -msgstr "Du benützt die Gratis-Version von Tandoor" +msgstr "Du benutzt die Gratis-Version von Tandoor" #: .\cookbook\templates\base.html:361 msgid "Upgrade Now" @@ -1448,7 +1474,7 @@ msgstr "" #: .\cookbook\templates\index.html:29 msgid "Search recipe ..." -msgstr "Rezept suchen..." +msgstr "Rezept suchen ..." #: .\cookbook\templates\index.html:44 msgid "New Recipe" @@ -1674,12 +1700,13 @@ msgstr "Zurück" msgid "Profile" msgstr "Profil" +#: .\cookbook\templates\recipe_view.html:41 #: .\cookbook\templates\recipe_view.html:26 msgid "by" msgstr "von" -#: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:144 -#: .\cookbook\views\edit.py:171 +#: .\cookbook\templates\recipe_view.html:59 .\cookbook\views\delete.py:144 +#: .\cookbook\views\edit.py:171 .\cookbook\templates\recipe_view.html:44 msgid "Comment" msgstr "Kommentar" @@ -1733,8 +1760,8 @@ msgid "" msgstr "" " \n" " Die Volltextsuche versucht Wörter in übliche Varianten zu " -"normalisieren. z.B.: \"Kürbis\", \"Kürbissuppe\", \"Kürbiskuchen\" werden " -"alle zu \"Kürbis\" normalisiert..\n" +"normalisieren. z.B.: 'Kürbis', 'Kürbissuppe', 'Kürbiskuchen' werden alle zu " +"'Kürbis' normalisiert..\n" " Es sind verschiedene Methoden verfügbar, welche weiter unten " "genau beschrieben werden. Diese beeinflussen das Suchergebnis bei einer " "Suche mit mehreren Wörtern.\n" @@ -1937,7 +1964,7 @@ msgstr "" " Die Indizes für alle Felder können auf der Admin Seite neu " "erstellt werden.'\n" " Ansonsten können die Indizes auch mit dem management command " -"\"python manage.py rebuildindex\" neu erstellt werden.\n" +"'python manage.py rebuildindex' neu erstellt werden.\n" " " #: .\cookbook\templates\settings.html:25 @@ -2307,85 +2334,89 @@ msgstr "" msgid "URL Import" msgstr "URL-Import" +#: .\cookbook\views\api.py:110 .\cookbook\views\api.py:202 #: .\cookbook\views\api.py:109 .\cookbook\views\api.py:201 msgid "Parameter updated_at incorrectly formatted" msgstr "Der Parameter updated_at ist falsch formatiert" +#: .\cookbook\views\api.py:222 .\cookbook\views\api.py:325 #: .\cookbook\views\api.py:221 .\cookbook\views\api.py:324 #, python-brace-format msgid "No {self.basename} with id {pk} exists" msgstr "Kein {self.basename} mit der ID {pk} existiert" -#: .\cookbook\views\api.py:225 +#: .\cookbook\views\api.py:226 .\cookbook\views\api.py:225 msgid "Cannot merge with the same object!" msgstr "Zusammenführen mit selben Objekt nicht möglich!" -#: .\cookbook\views\api.py:232 +#: .\cookbook\views\api.py:233 .\cookbook\views\api.py:232 #, python-brace-format msgid "No {self.basename} with id {target} exists" msgstr "Kein {self.basename} mit der ID {target} existiert" -#: .\cookbook\views\api.py:237 +#: .\cookbook\views\api.py:238 .\cookbook\views\api.py:237 msgid "Cannot merge with child object!" msgstr "Zusammenführen mit untergeordnetem Objekt nicht möglich!" -#: .\cookbook\views\api.py:270 +#: .\cookbook\views\api.py:271 .\cookbook\views\api.py:270 #, python-brace-format msgid "{source.name} was merged successfully with {target.name}" msgstr "{source.name} wurde erfolgreich mit {target.name} zusammengeführt" -#: .\cookbook\views\api.py:275 +#: .\cookbook\views\api.py:276 .\cookbook\views\api.py:275 #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" msgstr "" "Beim zusammenführen von {source.name} mit {target.name} ist ein Fehler " "aufgetreten" -#: .\cookbook\views\api.py:333 +#: .\cookbook\views\api.py:334 .\cookbook\views\api.py:333 #, python-brace-format msgid "{child.name} was moved successfully to the root." msgstr "{child.name} wurde erfolgreich zur Wurzel verschoben." +#: .\cookbook\views\api.py:337 .\cookbook\views\api.py:355 #: .\cookbook\views\api.py:336 .\cookbook\views\api.py:354 msgid "An error occurred attempting to move " msgstr "Fehler aufgetreten beim verschieben von " -#: .\cookbook\views\api.py:339 +#: .\cookbook\views\api.py:340 .\cookbook\views\api.py:339 msgid "Cannot move an object to itself!" msgstr "Ein Element kann nicht in sich selbst verschoben werden!" -#: .\cookbook\views\api.py:345 +#: .\cookbook\views\api.py:346 .\cookbook\views\api.py:345 #, python-brace-format msgid "No {self.basename} with id {parent} exists" msgstr "Kein {self.basename} mit ID {parent} existiert" -#: .\cookbook\views\api.py:351 +#: .\cookbook\views\api.py:352 .\cookbook\views\api.py:351 #, python-brace-format msgid "{child.name} was moved successfully to parent {parent.name}" msgstr "" "{child.name} wurde erfolgreich zum Überelement {parent.name} verschoben" -#: .\cookbook\views\api.py:547 +#: .\cookbook\views\api.py:553 .\cookbook\views\api.py:547 #, python-brace-format msgid "{obj.name} was removed from the shopping list." msgstr "{obj.name} wurde von der Einkaufsliste entfernt." -#: .\cookbook\views\api.py:552 .\cookbook\views\api.py:882 -#: .\cookbook\views\api.py:895 +#: .\cookbook\views\api.py:558 .\cookbook\views\api.py:888 +#: .\cookbook\views\api.py:901 .\cookbook\views\api.py:552 +#: .\cookbook\views\api.py:882 .\cookbook\views\api.py:895 #, python-brace-format msgid "{obj.name} was added to the shopping list." msgstr "{obj.name} wurde der Einkaufsliste hinzugefügt." -#: .\cookbook\views\api.py:679 +#: .\cookbook\views\api.py:685 .\cookbook\views\api.py:679 msgid "ID of recipe a step is part of. For multiple repeat parameter." msgstr "" "ID des Rezeptes zu dem ein Schritt gehört. Kann mehrfach angegeben werden." -#: .\cookbook\views\api.py:681 +#: .\cookbook\views\api.py:687 .\cookbook\views\api.py:681 msgid "Query string matched (fuzzy) against object name." msgstr "Abfragezeichenfolge, die mit dem Objektnamen übereinstimmt (ungenau)." -#: .\cookbook\views\api.py:725 +#: .\cookbook\views\api.py:731 .\cookbook\views\api.py:725 msgid "" "Query string matched (fuzzy) against recipe name. In the future also " "fulltext search." @@ -2393,7 +2424,7 @@ msgstr "" "Suchbegriff wird mit dem Rezeptnamen abgeglichen. In Zukunft auch " "Volltextsuche." -#: .\cookbook\views\api.py:727 +#: .\cookbook\views\api.py:733 .\cookbook\views\api.py:727 msgid "" "ID of keyword a recipe should have. For multiple repeat parameter. " "Equivalent to keywords_or" @@ -2401,69 +2432,69 @@ msgstr "" "ID des Stichwortes, das ein Rezept haben muss. Kann mehrfach angegeben " "werden. Äquivalent zu keywords_or" -#: .\cookbook\views\api.py:730 +#: .\cookbook\views\api.py:736 .\cookbook\views\api.py:730 msgid "" "Keyword IDs, repeat for multiple. Return recipes with any of the keywords" msgstr "" "Stichwort IDs. Kann mehrfach angegeben werden. Listet Rezepte zu jedem der " "angegebenen Stichwörter" -#: .\cookbook\views\api.py:733 +#: .\cookbook\views\api.py:739 .\cookbook\views\api.py:733 msgid "" "Keyword IDs, repeat for multiple. Return recipes with all of the keywords." msgstr "" "Stichwort IDs. Kann mehrfach angegeben werden. Listet Rezepte mit allen " "angegebenen Stichwörtern." -#: .\cookbook\views\api.py:736 +#: .\cookbook\views\api.py:742 .\cookbook\views\api.py:736 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords." msgstr "" "Stichwort ID. Kann mehrfach angegeben werden. Schließt Rezepte einem der " "angegebenen Stichwörtern aus." -#: .\cookbook\views\api.py:739 +#: .\cookbook\views\api.py:745 .\cookbook\views\api.py:739 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords." msgstr "" "Stichwort IDs. Kann mehrfach angegeben werden. Schließt Rezepte mit allen " "angegebenen Stichwörtern aus." -#: .\cookbook\views\api.py:741 +#: .\cookbook\views\api.py:747 .\cookbook\views\api.py:741 msgid "ID of food a recipe should have. For multiple repeat parameter." msgstr "" "ID einer Zutat, zu der Rezepte gelistet werden sollen. Kann mehrfach " "angegeben werden." -#: .\cookbook\views\api.py:744 +#: .\cookbook\views\api.py:750 .\cookbook\views\api.py:744 msgid "Food IDs, repeat for multiple. Return recipes with any of the foods" msgstr "" "Zutat ID. Kann mehrfach angegeben werden. Listet Rezepte mindestens einer " "der Zutaten" -#: .\cookbook\views\api.py:746 +#: .\cookbook\views\api.py:752 .\cookbook\views\api.py:746 msgid "Food IDs, repeat for multiple. Return recipes with all of the foods." msgstr "" "Zutat ID. Kann mehrfach angegeben werden. Listet Rezepte mit allen " "angegebenen Zutaten." -#: .\cookbook\views\api.py:748 +#: .\cookbook\views\api.py:754 .\cookbook\views\api.py:748 msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods." msgstr "" "Zutat ID. Kann mehrfach angegeben werden. Schließt Rezepte aus, die eine der " "angegebenen Zutaten enthalten." -#: .\cookbook\views\api.py:750 +#: .\cookbook\views\api.py:756 .\cookbook\views\api.py:750 msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods." msgstr "" "Zutat ID. Kann mehrfach angegeben werden. Schließt Rezepte aus, die alle " "angegebenen Zutaten enthalten." -#: .\cookbook\views\api.py:751 +#: .\cookbook\views\api.py:757 .\cookbook\views\api.py:751 msgid "ID of unit a recipe should have." msgstr "ID der Einheit, die ein Rezept haben sollte." -#: .\cookbook\views\api.py:753 +#: .\cookbook\views\api.py:759 .\cookbook\views\api.py:753 msgid "" "Rating a recipe should have or greater. [0 - 5] Negative value filters " "rating less than." @@ -2471,50 +2502,50 @@ msgstr "" "Mindestbewertung eines Rezeptes (0-5). Negative Werte filtern nach " "Maximalbewertung." -#: .\cookbook\views\api.py:754 +#: .\cookbook\views\api.py:760 .\cookbook\views\api.py:754 msgid "ID of book a recipe should be in. For multiple repeat parameter." msgstr "Buch ID, in dem das Rezept ist. Kann mehrfach angegeben werden." -#: .\cookbook\views\api.py:756 +#: .\cookbook\views\api.py:762 .\cookbook\views\api.py:756 msgid "Book IDs, repeat for multiple. Return recipes with any of the books" msgstr "" "Buch ID. Kann mehrfach angegeben werden. Listet alle Rezepte aus den " "angegebenen Büchern" -#: .\cookbook\views\api.py:758 +#: .\cookbook\views\api.py:764 .\cookbook\views\api.py:758 msgid "Book IDs, repeat for multiple. Return recipes with all of the books." msgstr "" "Buch ID. Kann mehrfach angegeben werden. Listet die Rezepte, die in allen " "Büchern enthalten sind." -#: .\cookbook\views\api.py:760 +#: .\cookbook\views\api.py:766 .\cookbook\views\api.py:760 msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books." msgstr "" "Buch IDs. Kann mehrfach angegeben werden. Schließt Rezepte aus den " "angegebenen Büchern aus." -#: .\cookbook\views\api.py:762 +#: .\cookbook\views\api.py:768 .\cookbook\views\api.py:762 msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books." msgstr "" "Buch IDs. Kann mehrfach angegeben werden. Schließt Rezepte aus, die in allen " "angegebenen Büchern enthalten sind." -#: .\cookbook\views\api.py:764 +#: .\cookbook\views\api.py:770 .\cookbook\views\api.py:764 msgid "If only internal recipes should be returned. [true/false]" msgstr "Nur interne Rezepte sollen gelistet werden. [ja/nein]" -#: .\cookbook\views\api.py:766 +#: .\cookbook\views\api.py:772 .\cookbook\views\api.py:766 msgid "Returns the results in randomized order. [true/false]" msgstr "" "Die Suchergebnisse sollen in zufälliger Reihenfolge gelistet werden. [ja/" "nein]" -#: .\cookbook\views\api.py:768 +#: .\cookbook\views\api.py:774 .\cookbook\views\api.py:768 msgid "Returns new results first in search results. [true/false]" msgstr "" "Die neuesten Suchergebnisse sollen zuerst angezeigt werden. [ja/nein]" -#: .\cookbook\views\api.py:770 +#: .\cookbook\views\api.py:776 .\cookbook\views\api.py:770 msgid "" "Filter recipes cooked X times or more. Negative values returns cooked less " "than X times" @@ -2522,7 +2553,7 @@ msgstr "" "Rezepte listen, die mindestens x-mal gekocht wurden. Eine negative Zahl " "listet Rezepte, die weniger als x-mal gekocht wurden" -#: .\cookbook\views\api.py:772 +#: .\cookbook\views\api.py:778 .\cookbook\views\api.py:772 msgid "" "Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on " "or before date." @@ -2531,7 +2562,7 @@ msgstr "" "wurden. Mit vorangestelltem - , werden Rezepte am oder vor dem Datum " "gelistet." -#: .\cookbook\views\api.py:774 +#: .\cookbook\views\api.py:780 .\cookbook\views\api.py:774 msgid "" "Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or " "before date." @@ -2539,7 +2570,7 @@ msgstr "" "Rezepte listen, die am angegebenen Datum oder später erstellt wurden. Wenn - " "vorangestellt wird, wird am oder vor dem Datum gelistet." -#: .\cookbook\views\api.py:776 +#: .\cookbook\views\api.py:782 .\cookbook\views\api.py:776 msgid "" "Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or " "before date." @@ -2547,7 +2578,7 @@ msgstr "" "Rezepte listen, die am angegebenen Datum oder später aktualisiert wurden. " "Wenn - vorangestellt wird, wird am oder vor dem Datum gelistet." -#: .\cookbook\views\api.py:778 +#: .\cookbook\views\api.py:784 .\cookbook\views\api.py:778 msgid "" "Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on " "or before date." @@ -2555,13 +2586,13 @@ msgstr "" "Rezepte listen, die am angegebenen Datum oder später zuletzt angesehen " "wurden. Wenn - vorangestellt wird, wird am oder vor dem Datum gelistet." -#: .\cookbook\views\api.py:780 +#: .\cookbook\views\api.py:786 .\cookbook\views\api.py:780 msgid "Filter recipes that can be made with OnHand food. [true/false]" msgstr "" "Rezepte listen, die mit vorhandenen Zutaten gekocht werden können. [ja/" "nein]" -#: .\cookbook\views\api.py:940 +#: .\cookbook\views\api.py:946 .\cookbook\views\api.py:940 msgid "" "Returns the shopping list entry with a primary key of id. Multiple values " "allowed." @@ -2569,7 +2600,7 @@ msgstr "" "Zeigt denjenigen Eintrag auf der Einkaufliste mit der angegebenen ID. Kann " "mehrfach angegeben werden." -#: .\cookbook\views\api.py:945 +#: .\cookbook\views\api.py:951 .\cookbook\views\api.py:945 msgid "" "Filter shopping list entries on checked. [true, false, both, recent]
- recent includes unchecked items and recently completed items." @@ -2578,45 +2609,47 @@ msgstr "" "kürzlich]
- kürzlich enthält nicht abgehakte Einträge und " "kürzlich abgeschlossene Einträge." -#: .\cookbook\views\api.py:948 +#: .\cookbook\views\api.py:954 .\cookbook\views\api.py:948 msgid "Returns the shopping list entries sorted by supermarket category order." msgstr "" "Listet die Einträge der Einkaufsliste sortiert nach Supermarktkategorie." -#: .\cookbook\views\api.py:1160 +#: .\cookbook\views\api.py:1166 .\cookbook\views\api.py:1160 msgid "Nothing to do." msgstr "Nichts zu tun." -#: .\cookbook\views\api.py:1180 +#: .\cookbook\views\api.py:1198 .\cookbook\views\api.py:1180 msgid "Invalid Url" msgstr "Ungültige URL" -#: .\cookbook\views\api.py:1187 +#: .\cookbook\views\api.py:1205 .\cookbook\views\api.py:1187 msgid "Connection Refused." msgstr "Verbindung fehlgeschlagen." -#: .\cookbook\views\api.py:1192 +#: .\cookbook\views\api.py:1210 .\cookbook\views\api.py:1192 msgid "Bad URL Schema." msgstr "Ungültiges URL Schema." -#: .\cookbook\views\api.py:1215 +#: .\cookbook\views\api.py:1233 .\cookbook\views\api.py:1215 msgid "No usable data could be found." msgstr "Es konnten keine nutzbaren Daten gefunden werden." +#: .\cookbook\views\api.py:1326 .\cookbook\views\import_export.py:117 #: .\cookbook\views\api.py:1308 .\cookbook\views\import_export.py:114 msgid "Importing is not implemented for this provider" msgstr "Importieren ist für diesen Anbieter noch nicht implementiert" -#: .\cookbook\views\api.py:1352 .\cookbook\views\data.py:31 +#: .\cookbook\views\api.py:1372 .\cookbook\views\data.py:31 #: .\cookbook\views\edit.py:120 .\cookbook\views\new.py:90 +#: .\cookbook\views\api.py:1352 msgid "This feature is not yet available in the hosted version of tandoor!" msgstr "Diese Funktion ist in dieser Version von Tandoor noch nicht verfügbar!" -#: .\cookbook\views\api.py:1374 +#: .\cookbook\views\api.py:1394 .\cookbook\views\api.py:1374 msgid "Sync successful!" msgstr "Synchronisation erfolgreich!" -#: .\cookbook\views\api.py:1379 +#: .\cookbook\views\api.py:1399 .\cookbook\views\api.py:1379 msgid "Error synchronizing with Storage" msgstr "Fehler beim Synchronisieren" @@ -2680,7 +2713,7 @@ msgstr "Änderungen gespeichert!" msgid "Error saving changes!" msgstr "Fehler beim Speichern der Daten!" -#: .\cookbook\views\import_export.py:101 +#: .\cookbook\views\import_export.py:104 .\cookbook\views\import_export.py:101 msgid "" "The PDF Exporter is not enabled on this instance as it is still in an " "experimental state." @@ -2728,7 +2761,14 @@ msgstr "Neues Rezept importiert!" msgid "There was an error importing this recipe!" msgstr "Beim Importieren des Rezeptes ist ein Fehler aufgetreten!" -#: .\cookbook\views\views.py:86 +#: .\cookbook\views\views.py:73 .\cookbook\views\views.py:191 +#: .\cookbook\views\views.py:213 .\cookbook\views\views.py:399 +#: .\cookbook\views\views.py:188 .\cookbook\views\views.py:210 +#: .\cookbook\views\views.py:396 +msgid "This feature is not available in the demo version!" +msgstr "Diese Funktion ist in der Demo-Version nicht verfügbar!" + +#: .\cookbook\views\views.py:89 .\cookbook\views\views.py:86 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." @@ -2736,25 +2776,20 @@ msgstr "" "Du hast erfolgreich deinen eigenen Rezept-Space erstellt. Beginne, indem Du " "ein paar Rezepte hinzufügst oder weitere Leute einlädst." -#: .\cookbook\views\views.py:140 +#: .\cookbook\views\views.py:143 .\cookbook\views\views.py:140 msgid "You do not have the required permissions to perform this action!" msgstr "" "Du hast nicht die notwendige Berechtigung, um diese Aktion durchzuführen!" -#: .\cookbook\views\views.py:151 +#: .\cookbook\views\views.py:154 .\cookbook\views\views.py:151 msgid "Comment saved!" msgstr "Kommentar gespeichert!" -#: .\cookbook\views\views.py:188 .\cookbook\views\views.py:210 -#: .\cookbook\views\views.py:396 -msgid "This feature is not available in the demo version!" -msgstr "Diese Funktion ist in der Demo-Version nicht verfügbar!" - -#: .\cookbook\views\views.py:250 +#: .\cookbook\views\views.py:253 .\cookbook\views\views.py:250 msgid "You must select at least one field to search!" msgstr "Es muss mindestens ein Feld ausgewählt sein!" -#: .\cookbook\views\views.py:255 +#: .\cookbook\views\views.py:258 .\cookbook\views\views.py:255 msgid "" "To use this search method you must select at least one full text search " "field!" @@ -2762,11 +2797,11 @@ msgstr "" "Um diese Suchmethode zu verwenden muss mindestens ein Feld für die " "Volltextsuche ausgewählt sein!" -#: .\cookbook\views\views.py:259 +#: .\cookbook\views\views.py:262 .\cookbook\views\views.py:259 msgid "Fuzzy search is not compatible with this search method!" msgstr "Die \"Ungenaue\" Suche ist mit diesem Suchtyp nicht kompatibel!" -#: .\cookbook\views\views.py:335 +#: .\cookbook\views\views.py:338 .\cookbook\views\views.py:335 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2775,27 +2810,27 @@ msgstr "" "Die Setup-Seite kann nur für den ersten Nutzer verwendet werden. Zum " "Zurücksetzen von Passwörtern bitte der Django-Dokumentation folgen." -#: .\cookbook\views\views.py:342 +#: .\cookbook\views\views.py:345 .\cookbook\views\views.py:342 msgid "Passwords dont match!" msgstr "Passwörter stimmen nicht überein!" -#: .\cookbook\views\views.py:350 +#: .\cookbook\views\views.py:353 .\cookbook\views\views.py:350 msgid "User has been created, please login!" msgstr "Benutzer wurde erstellt, bitte einloggen!" -#: .\cookbook\views\views.py:366 +#: .\cookbook\views\views.py:369 .\cookbook\views\views.py:366 msgid "Malformed Invite Link supplied!" msgstr "Fehlerhafter Einladungslink angegeben!" -#: .\cookbook\views\views.py:383 +#: .\cookbook\views\views.py:386 .\cookbook\views\views.py:383 msgid "Successfully joined space." msgstr "Space erfolgreich beigetreten." -#: .\cookbook\views\views.py:389 +#: .\cookbook\views\views.py:392 .\cookbook\views\views.py:389 msgid "Invite Link not valid or already used!" msgstr "Einladungslink ungültig oder bereits genutzt!" -#: .\cookbook\views\views.py:406 +#: .\cookbook\views\views.py:409 .\cookbook\views\views.py:406 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." @@ -2803,7 +2838,7 @@ msgstr "" "Das melden von Links ist in dieser Instanz nicht aktiviert. Bitte " "kontaktieren sie den Seitenadministrator um Probleme zu melden." -#: .\cookbook\views\views.py:412 +#: .\cookbook\views\views.py:415 .\cookbook\views\views.py:412 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." @@ -3075,7 +3110,6 @@ msgstr "" #~ msgstr "Erledigt" #, fuzzy -#~| msgid "You are offline, shopping list might not syncronize." #~ msgid "You are offline, shopping list might not synchronize." #~ msgstr "Du bist offline, die Einkaufsliste wird ggf. nicht synchronisiert." @@ -3500,7 +3534,6 @@ msgstr "" #~ msgstr "Datei auswählen" #, fuzzy -#~| msgid "Delete Recipe" #~ msgid "Select Recipe" #~ msgstr "Rezept löschen" diff --git a/cookbook/locale/en/LC_MESSAGES/django.po b/cookbook/locale/en/LC_MESSAGES/django.po index 21b6b935..c197fd52 100644 --- a/cookbook/locale/en/LC_MESSAGES/django.po +++ b/cookbook/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -58,7 +58,7 @@ msgstr "" msgid "Shopping list auto sync period" msgstr "" -#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:21 +#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:36 msgid "Comments" msgstr "" @@ -102,7 +102,7 @@ msgstr "" msgid "If you want to be able to create and see comments underneath recipes." msgstr "" -#: .\cookbook\forms.py:79 .\cookbook\forms.py:491 +#: .\cookbook\forms.py:79 .\cookbook\forms.py:492 msgid "" "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. " @@ -114,7 +114,7 @@ msgstr "" msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:83 .\cookbook\forms.py:494 +#: .\cookbook\forms.py:83 .\cookbook\forms.py:495 msgid "Automatically add meal plan ingredients to shopping list." msgstr "" @@ -132,11 +132,11 @@ msgid "" "instead" msgstr "" -#: .\cookbook\forms.py:123 .\cookbook\forms.py:296 +#: .\cookbook\forms.py:123 .\cookbook\forms.py:297 msgid "Name" msgstr "" -#: .\cookbook\forms.py:124 .\cookbook\forms.py:297 .\cookbook\views\lists.py:88 +#: .\cookbook\forms.py:124 .\cookbook\forms.py:298 .\cookbook\views\lists.py:88 msgid "Keywords" msgstr "" @@ -148,7 +148,7 @@ msgstr "" msgid "Waiting time (cooking/baking) in minutes" msgstr "" -#: .\cookbook\forms.py:127 .\cookbook\forms.py:265 .\cookbook\forms.py:298 +#: .\cookbook\forms.py:127 .\cookbook\forms.py:266 .\cookbook\forms.py:299 msgid "Path" msgstr "" @@ -156,265 +156,265 @@ msgstr "" msgid "Storage UID" msgstr "" -#: .\cookbook\forms.py:160 +#: .\cookbook\forms.py:161 msgid "Default" msgstr "" -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:173 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:195 +#: .\cookbook\forms.py:196 msgid "Add your comment: " msgstr "" -#: .\cookbook\forms.py:210 +#: .\cookbook\forms.py:211 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" -#: .\cookbook\forms.py:217 +#: .\cookbook\forms.py:218 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" -#: .\cookbook\forms.py:226 +#: .\cookbook\forms.py:227 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" msgstr "" -#: .\cookbook\forms.py:264 .\cookbook\views\edit.py:157 +#: .\cookbook\forms.py:265 .\cookbook\views\edit.py:157 msgid "Storage" msgstr "" -#: .\cookbook\forms.py:266 +#: .\cookbook\forms.py:267 msgid "Active" msgstr "" -#: .\cookbook\forms.py:272 +#: .\cookbook\forms.py:273 msgid "Search String" msgstr "" -#: .\cookbook\forms.py:299 +#: .\cookbook\forms.py:300 msgid "File ID" msgstr "" -#: .\cookbook\forms.py:321 +#: .\cookbook\forms.py:322 msgid "You must provide at least a recipe or a title." msgstr "" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:335 msgid "You can list default users to share recipes with in the settings." msgstr "" -#: .\cookbook\forms.py:335 +#: .\cookbook\forms.py:336 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" -#: .\cookbook\forms.py:361 +#: .\cookbook\forms.py:362 msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:368 msgid "Email address already taken!" msgstr "" -#: .\cookbook\forms.py:375 +#: .\cookbook\forms.py:376 msgid "" "An email address is not required but if present the invite link will be sent " "to the user." msgstr "" -#: .\cookbook\forms.py:390 +#: .\cookbook\forms.py:391 msgid "Name already taken." msgstr "" -#: .\cookbook\forms.py:401 +#: .\cookbook\forms.py:402 msgid "Accept Terms and Privacy" msgstr "" -#: .\cookbook\forms.py:433 +#: .\cookbook\forms.py:434 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." msgstr "" -#: .\cookbook\forms.py:443 +#: .\cookbook\forms.py:444 msgid "" "Select type method of search. Click here for " "full description of choices." msgstr "" -#: .\cookbook\forms.py:444 +#: .\cookbook\forms.py:445 msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." msgstr "" -#: .\cookbook\forms.py:446 +#: .\cookbook\forms.py:447 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" msgstr "" -#: .\cookbook\forms.py:448 +#: .\cookbook\forms.py:449 msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" msgstr "" -#: .\cookbook\forms.py:450 +#: .\cookbook\forms.py:451 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" msgstr "" -#: .\cookbook\forms.py:452 +#: .\cookbook\forms.py:453 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 "" -#: .\cookbook\forms.py:454 +#: .\cookbook\forms.py:455 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." msgstr "" -#: .\cookbook\forms.py:458 +#: .\cookbook\forms.py:459 msgid "Search Method" msgstr "" -#: .\cookbook\forms.py:459 +#: .\cookbook\forms.py:460 msgid "Fuzzy Lookups" msgstr "" -#: .\cookbook\forms.py:460 +#: .\cookbook\forms.py:461 msgid "Ignore Accent" msgstr "" -#: .\cookbook\forms.py:461 +#: .\cookbook\forms.py:462 msgid "Partial Match" msgstr "" -#: .\cookbook\forms.py:462 +#: .\cookbook\forms.py:463 msgid "Starts With" msgstr "" -#: .\cookbook\forms.py:463 +#: .\cookbook\forms.py:464 msgid "Fuzzy Search" msgstr "" -#: .\cookbook\forms.py:464 +#: .\cookbook\forms.py:465 msgid "Full Text" msgstr "" -#: .\cookbook\forms.py:489 +#: .\cookbook\forms.py:490 msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." msgstr "" -#: .\cookbook\forms.py:495 +#: .\cookbook\forms.py:496 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." msgstr "" -#: .\cookbook\forms.py:496 +#: .\cookbook\forms.py:497 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." msgstr "" -#: .\cookbook\forms.py:497 +#: .\cookbook\forms.py:498 msgid "Default number of hours to delay a shopping list entry." msgstr "" -#: .\cookbook\forms.py:498 +#: .\cookbook\forms.py:499 msgid "Filter shopping list to only include supermarket categories." msgstr "" -#: .\cookbook\forms.py:499 +#: .\cookbook\forms.py:500 msgid "Days of recent shopping list entries to display." msgstr "" -#: .\cookbook\forms.py:500 +#: .\cookbook\forms.py:501 msgid "Mark food 'On Hand' when checked off shopping list." msgstr "" -#: .\cookbook\forms.py:501 +#: .\cookbook\forms.py:502 msgid "Delimiter to use for CSV exports." msgstr "" -#: .\cookbook\forms.py:502 +#: .\cookbook\forms.py:503 msgid "Prefix to add when copying list to the clipboard." msgstr "" -#: .\cookbook\forms.py:506 +#: .\cookbook\forms.py:507 msgid "Share Shopping List" msgstr "" -#: .\cookbook\forms.py:507 +#: .\cookbook\forms.py:508 msgid "Autosync" msgstr "" -#: .\cookbook\forms.py:508 +#: .\cookbook\forms.py:509 msgid "Auto Add Meal Plan" msgstr "" -#: .\cookbook\forms.py:509 +#: .\cookbook\forms.py:510 msgid "Exclude On Hand" msgstr "" -#: .\cookbook\forms.py:510 +#: .\cookbook\forms.py:511 msgid "Include Related" msgstr "" -#: .\cookbook\forms.py:511 +#: .\cookbook\forms.py:512 msgid "Default Delay Hours" msgstr "" -#: .\cookbook\forms.py:512 +#: .\cookbook\forms.py:513 msgid "Filter to Supermarket" msgstr "" -#: .\cookbook\forms.py:513 +#: .\cookbook\forms.py:514 msgid "Recent Days" msgstr "" -#: .\cookbook\forms.py:514 +#: .\cookbook\forms.py:515 msgid "CSV Delimiter" msgstr "" -#: .\cookbook\forms.py:515 +#: .\cookbook\forms.py:516 msgid "List Prefix" msgstr "" -#: .\cookbook\forms.py:516 +#: .\cookbook\forms.py:517 msgid "Auto On Hand" msgstr "" -#: .\cookbook\forms.py:526 +#: .\cookbook\forms.py:527 msgid "Reset Food Inheritance" msgstr "" -#: .\cookbook\forms.py:527 +#: .\cookbook\forms.py:528 msgid "Reset all food to inherit the fields configured." msgstr "" -#: .\cookbook\forms.py:539 +#: .\cookbook\forms.py:540 msgid "Fields on food that should be inherited by default." msgstr "" -#: .\cookbook\forms.py:540 +#: .\cookbook\forms.py:541 msgid "Show recipe counts on search filters" msgstr "" -#: .\cookbook\forms.py:541 +#: .\cookbook\forms.py:542 msgid "Use the plural form for units and food inside this space." msgstr "" @@ -425,7 +425,7 @@ msgid "" msgstr "" #: .\cookbook\helper\permission_helper.py:164 -#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:114 +#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117 msgid "You are not logged in and therefore cannot view this page!" msgstr "" @@ -438,7 +438,7 @@ msgstr "" #: .\cookbook\helper\permission_helper.py:305 #: .\cookbook\helper\permission_helper.py:321 #: .\cookbook\helper\permission_helper.py:342 .\cookbook\views\data.py:36 -#: .\cookbook\views\views.py:125 .\cookbook\views\views.py:132 +#: .\cookbook\views\views.py:128 .\cookbook\views\views.py:135 msgid "You do not have the required permissions to view this page!" msgstr "" @@ -457,11 +457,39 @@ msgstr "" msgid "You have more users than allowed in your space." msgstr "" -#: .\cookbook\helper\recipe_search.py:570 +#: .\cookbook\helper\recipe_search.py:630 msgid "One of queryset or hash_key must be provided" msgstr "" -#: .\cookbook\helper\shopping_helper.py:152 +#: .\cookbook\helper\recipe_url_import.py:266 +msgid "reverse rotation" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:267 +msgid "careful rotation" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:268 +msgid "knead" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:269 +msgid "thicken" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:270 +msgid "warm up" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:271 +msgid "ferment" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:272 +msgid "sous-vide" +msgstr "" + +#: .\cookbook\helper\shopping_helper.py:157 msgid "You must supply a servings size" msgstr "" @@ -479,36 +507,40 @@ msgstr "" msgid "I made this" msgstr "" -#: .\cookbook\integration\integration.py:223 +#: .\cookbook\integration\integration.py:218 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:226 +#: .\cookbook\integration\integration.py:221 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" -#: .\cookbook\integration\integration.py:231 +#: .\cookbook\integration\integration.py:226 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:235 +#: .\cookbook\integration\integration.py:230 #, python-format msgid "Imported %s recipes." msgstr "" -#: .\cookbook\integration\paprika.py:46 -msgid "Notes" +#: .\cookbook\integration\openeats.py:26 +msgid "Recipe source:" msgstr "" #: .\cookbook\integration\paprika.py:49 +msgid "Notes" +msgstr "" + +#: .\cookbook\integration\paprika.py:52 msgid "Nutritional Information" msgstr "" -#: .\cookbook\integration\paprika.py:53 +#: .\cookbook\integration\paprika.py:56 msgid "Source" msgstr "" @@ -575,72 +607,72 @@ msgid "" "upload." msgstr "" -#: .\cookbook\models.py:364 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:365 .\cookbook\templates\search.html:7 #: .\cookbook\templates\settings.html:18 #: .\cookbook\templates\space_manage.html:7 msgid "Search" msgstr "" -#: .\cookbook\models.py:365 .\cookbook\templates\base.html:110 +#: .\cookbook\models.py:366 .\cookbook\templates\base.html:110 #: .\cookbook\templates\meal_plan.html:7 .\cookbook\views\delete.py:178 #: .\cookbook\views\edit.py:211 .\cookbook\views\new.py:179 msgid "Meal-Plan" msgstr "" -#: .\cookbook\models.py:366 .\cookbook\templates\base.html:118 +#: .\cookbook\models.py:367 .\cookbook\templates\base.html:118 msgid "Books" msgstr "" -#: .\cookbook\models.py:579 +#: .\cookbook\models.py:580 msgid " is part of a recipe step and cannot be deleted" msgstr "" -#: .\cookbook\models.py:1180 .\cookbook\templates\search_info.html:28 +#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:28 msgid "Simple" msgstr "" -#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:33 +#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:33 msgid "Phrase" msgstr "" -#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:38 +#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:38 msgid "Web" msgstr "" -#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:47 +#: .\cookbook\models.py:1184 .\cookbook\templates\search_info.html:47 msgid "Raw" msgstr "" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Food Alias" msgstr "" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Unit Alias" msgstr "" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Keyword Alias" msgstr "" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Description Replace" msgstr "" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Instruction Replace" msgstr "" -#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36 +#: .\cookbook\models.py:1258 .\cookbook\views\delete.py:36 #: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48 msgid "Recipe" msgstr "" -#: .\cookbook\models.py:1258 +#: .\cookbook\models.py:1259 msgid "Food" msgstr "" -#: .\cookbook\models.py:1259 .\cookbook\templates\base.html:141 +#: .\cookbook\models.py:1260 .\cookbook\templates\base.html:141 msgid "Keyword" msgstr "" @@ -656,64 +688,64 @@ msgstr "" msgid "Cannot modify Space owner permission." msgstr "" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "Hello" msgstr "" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "You have been invited by " msgstr "" -#: .\cookbook\serializer.py:1086 +#: .\cookbook\serializer.py:1094 msgid " to join their Tandoor Recipes space " msgstr "" -#: .\cookbook\serializer.py:1087 +#: .\cookbook\serializer.py:1095 msgid "Click the following link to activate your account: " msgstr "" -#: .\cookbook\serializer.py:1088 +#: .\cookbook\serializer.py:1096 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" -#: .\cookbook\serializer.py:1089 +#: .\cookbook\serializer.py:1097 msgid "The invitation is valid until " msgstr "" -#: .\cookbook\serializer.py:1090 +#: .\cookbook\serializer.py:1098 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -#: .\cookbook\serializer.py:1093 +#: .\cookbook\serializer.py:1101 msgid "Tandoor Recipes Invite" msgstr "" -#: .\cookbook\serializer.py:1234 +#: .\cookbook\serializer.py:1242 msgid "Existing shopping list to update" msgstr "" -#: .\cookbook\serializer.py:1236 +#: .\cookbook\serializer.py:1244 msgid "" "List of ingredient IDs from the recipe to add, if not provided all " "ingredients will be added." msgstr "" -#: .\cookbook\serializer.py:1238 +#: .\cookbook\serializer.py:1246 msgid "" "Providing a list_recipe ID and servings of 0 will delete that shopping list." msgstr "" -#: .\cookbook\serializer.py:1247 +#: .\cookbook\serializer.py:1255 msgid "Amount of food to add to the shopping list" msgstr "" -#: .\cookbook\serializer.py:1249 +#: .\cookbook\serializer.py:1257 msgid "ID of unit to use for the shopping list" msgstr "" -#: .\cookbook\serializer.py:1251 +#: .\cookbook\serializer.py:1259 msgid "When set to true will delete all food from active shopping lists." msgstr "" @@ -1501,11 +1533,11 @@ msgstr "" msgid "Profile" msgstr "" -#: .\cookbook\templates\recipe_view.html:26 +#: .\cookbook\templates\recipe_view.html:41 msgid "by" msgstr "" -#: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:144 +#: .\cookbook\templates\recipe_view.html:59 .\cookbook\views\delete.py:144 #: .\cookbook\views\edit.py:171 msgid "Comment" msgstr "" @@ -1983,258 +2015,258 @@ msgstr "" msgid "URL Import" msgstr "" -#: .\cookbook\views\api.py:109 .\cookbook\views\api.py:201 +#: .\cookbook\views\api.py:110 .\cookbook\views\api.py:202 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:221 .\cookbook\views\api.py:324 +#: .\cookbook\views\api.py:222 .\cookbook\views\api.py:325 #, python-brace-format msgid "No {self.basename} with id {pk} exists" msgstr "" -#: .\cookbook\views\api.py:225 +#: .\cookbook\views\api.py:226 msgid "Cannot merge with the same object!" msgstr "" -#: .\cookbook\views\api.py:232 +#: .\cookbook\views\api.py:233 #, python-brace-format msgid "No {self.basename} with id {target} exists" msgstr "" -#: .\cookbook\views\api.py:237 +#: .\cookbook\views\api.py:238 msgid "Cannot merge with child object!" msgstr "" -#: .\cookbook\views\api.py:270 +#: .\cookbook\views\api.py:271 #, python-brace-format msgid "{source.name} was merged successfully with {target.name}" msgstr "" -#: .\cookbook\views\api.py:275 +#: .\cookbook\views\api.py:276 #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" msgstr "" -#: .\cookbook\views\api.py:333 +#: .\cookbook\views\api.py:334 #, python-brace-format msgid "{child.name} was moved successfully to the root." msgstr "" -#: .\cookbook\views\api.py:336 .\cookbook\views\api.py:354 +#: .\cookbook\views\api.py:337 .\cookbook\views\api.py:355 msgid "An error occurred attempting to move " msgstr "" -#: .\cookbook\views\api.py:339 +#: .\cookbook\views\api.py:340 msgid "Cannot move an object to itself!" msgstr "" -#: .\cookbook\views\api.py:345 +#: .\cookbook\views\api.py:346 #, python-brace-format msgid "No {self.basename} with id {parent} exists" msgstr "" -#: .\cookbook\views\api.py:351 +#: .\cookbook\views\api.py:352 #, python-brace-format msgid "{child.name} was moved successfully to parent {parent.name}" msgstr "" -#: .\cookbook\views\api.py:547 +#: .\cookbook\views\api.py:553 #, python-brace-format msgid "{obj.name} was removed from the shopping list." msgstr "" -#: .\cookbook\views\api.py:552 .\cookbook\views\api.py:882 -#: .\cookbook\views\api.py:895 +#: .\cookbook\views\api.py:558 .\cookbook\views\api.py:888 +#: .\cookbook\views\api.py:901 #, python-brace-format msgid "{obj.name} was added to the shopping list." msgstr "" -#: .\cookbook\views\api.py:679 +#: .\cookbook\views\api.py:685 msgid "ID of recipe a step is part of. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:681 +#: .\cookbook\views\api.py:687 msgid "Query string matched (fuzzy) against object name." msgstr "" -#: .\cookbook\views\api.py:725 +#: .\cookbook\views\api.py:731 msgid "" "Query string matched (fuzzy) against recipe name. In the future also " "fulltext search." msgstr "" -#: .\cookbook\views\api.py:727 +#: .\cookbook\views\api.py:733 msgid "" "ID of keyword a recipe should have. For multiple repeat parameter. " "Equivalent to keywords_or" msgstr "" -#: .\cookbook\views\api.py:730 +#: .\cookbook\views\api.py:736 msgid "" "Keyword IDs, repeat for multiple. Return recipes with any of the keywords" msgstr "" -#: .\cookbook\views\api.py:733 +#: .\cookbook\views\api.py:739 msgid "" "Keyword IDs, repeat for multiple. Return recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:736 +#: .\cookbook\views\api.py:742 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords." msgstr "" -#: .\cookbook\views\api.py:739 +#: .\cookbook\views\api.py:745 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:741 +#: .\cookbook\views\api.py:747 msgid "ID of food a recipe should have. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:744 +#: .\cookbook\views\api.py:750 msgid "Food IDs, repeat for multiple. Return recipes with any of the foods" msgstr "" -#: .\cookbook\views\api.py:746 +#: .\cookbook\views\api.py:752 msgid "Food IDs, repeat for multiple. Return recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:748 +#: .\cookbook\views\api.py:754 msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods." msgstr "" -#: .\cookbook\views\api.py:750 +#: .\cookbook\views\api.py:756 msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:751 +#: .\cookbook\views\api.py:757 msgid "ID of unit a recipe should have." msgstr "" -#: .\cookbook\views\api.py:753 +#: .\cookbook\views\api.py:759 msgid "" "Rating a recipe should have or greater. [0 - 5] Negative value filters " "rating less than." msgstr "" -#: .\cookbook\views\api.py:754 +#: .\cookbook\views\api.py:760 msgid "ID of book a recipe should be in. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:756 +#: .\cookbook\views\api.py:762 msgid "Book IDs, repeat for multiple. Return recipes with any of the books" msgstr "" -#: .\cookbook\views\api.py:758 +#: .\cookbook\views\api.py:764 msgid "Book IDs, repeat for multiple. Return recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:760 +#: .\cookbook\views\api.py:766 msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books." msgstr "" -#: .\cookbook\views\api.py:762 +#: .\cookbook\views\api.py:768 msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:764 +#: .\cookbook\views\api.py:770 msgid "If only internal recipes should be returned. [true/false]" msgstr "" -#: .\cookbook\views\api.py:766 +#: .\cookbook\views\api.py:772 msgid "Returns the results in randomized order. [true/false]" msgstr "" -#: .\cookbook\views\api.py:768 +#: .\cookbook\views\api.py:774 msgid "Returns new results first in search results. [true/false]" msgstr "" -#: .\cookbook\views\api.py:770 +#: .\cookbook\views\api.py:776 msgid "" "Filter recipes cooked X times or more. Negative values returns cooked less " "than X times" msgstr "" -#: .\cookbook\views\api.py:772 +#: .\cookbook\views\api.py:778 msgid "" "Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:774 +#: .\cookbook\views\api.py:780 msgid "" "Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:776 +#: .\cookbook\views\api.py:782 msgid "" "Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:778 +#: .\cookbook\views\api.py:784 msgid "" "Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:780 +#: .\cookbook\views\api.py:786 msgid "Filter recipes that can be made with OnHand food. [true/false]" msgstr "" -#: .\cookbook\views\api.py:940 +#: .\cookbook\views\api.py:946 msgid "" "Returns the shopping list entry with a primary key of id. Multiple values " "allowed." msgstr "" -#: .\cookbook\views\api.py:945 +#: .\cookbook\views\api.py:951 msgid "" "Filter shopping list entries on checked. [true, false, both, recent]
- recent includes unchecked items and recently completed items." msgstr "" -#: .\cookbook\views\api.py:948 +#: .\cookbook\views\api.py:954 msgid "Returns the shopping list entries sorted by supermarket category order." msgstr "" -#: .\cookbook\views\api.py:1160 +#: .\cookbook\views\api.py:1166 msgid "Nothing to do." msgstr "" -#: .\cookbook\views\api.py:1180 +#: .\cookbook\views\api.py:1198 msgid "Invalid Url" msgstr "" -#: .\cookbook\views\api.py:1187 +#: .\cookbook\views\api.py:1205 msgid "Connection Refused." msgstr "" -#: .\cookbook\views\api.py:1192 +#: .\cookbook\views\api.py:1210 msgid "Bad URL Schema." msgstr "" -#: .\cookbook\views\api.py:1215 +#: .\cookbook\views\api.py:1233 msgid "No usable data could be found." msgstr "" -#: .\cookbook\views\api.py:1308 .\cookbook\views\import_export.py:114 +#: .\cookbook\views\api.py:1326 .\cookbook\views\import_export.py:117 msgid "Importing is not implemented for this provider" msgstr "" -#: .\cookbook\views\api.py:1352 .\cookbook\views\data.py:31 +#: .\cookbook\views\api.py:1372 .\cookbook\views\data.py:31 #: .\cookbook\views\edit.py:120 .\cookbook\views\new.py:90 msgid "This feature is not yet available in the hosted version of tandoor!" msgstr "" -#: .\cookbook\views\api.py:1374 +#: .\cookbook\views\api.py:1394 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:1379 +#: .\cookbook\views\api.py:1399 msgid "Error synchronizing with Storage" msgstr "" @@ -2295,7 +2327,7 @@ msgstr "" msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\import_export.py:101 +#: .\cookbook\views\import_export.py:104 msgid "" "The PDF Exporter is not enabled on this instance as it is still in an " "experimental state." @@ -2341,73 +2373,73 @@ msgstr "" msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\views.py:86 +#: .\cookbook\views\views.py:73 .\cookbook\views\views.py:191 +#: .\cookbook\views\views.py:213 .\cookbook\views\views.py:399 +msgid "This feature is not available in the demo version!" +msgstr "" + +#: .\cookbook\views\views.py:89 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" -#: .\cookbook\views\views.py:140 +#: .\cookbook\views\views.py:143 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:151 +#: .\cookbook\views\views.py:154 msgid "Comment saved!" msgstr "" -#: .\cookbook\views\views.py:188 .\cookbook\views\views.py:210 -#: .\cookbook\views\views.py:396 -msgid "This feature is not available in the demo version!" -msgstr "" - -#: .\cookbook\views\views.py:250 +#: .\cookbook\views\views.py:253 msgid "You must select at least one field to search!" msgstr "" -#: .\cookbook\views\views.py:255 +#: .\cookbook\views\views.py:258 msgid "" "To use this search method you must select at least one full text search " "field!" msgstr "" -#: .\cookbook\views\views.py:259 +#: .\cookbook\views\views.py:262 msgid "Fuzzy search is not compatible with this search method!" msgstr "" -#: .\cookbook\views\views.py:335 +#: .\cookbook\views\views.py:338 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:342 +#: .\cookbook\views\views.py:345 msgid "Passwords dont match!" msgstr "" -#: .\cookbook\views\views.py:350 +#: .\cookbook\views\views.py:353 msgid "User has been created, please login!" msgstr "" -#: .\cookbook\views\views.py:366 +#: .\cookbook\views\views.py:369 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:383 +#: .\cookbook\views\views.py:386 msgid "Successfully joined space." msgstr "" -#: .\cookbook\views\views.py:389 +#: .\cookbook\views\views.py:392 msgid "Invite Link not valid or already used!" msgstr "" -#: .\cookbook\views\views.py:406 +#: .\cookbook\views\views.py:409 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:412 +#: .\cookbook\views\views.py:415 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/es/LC_MESSAGES/django.mo b/cookbook/locale/es/LC_MESSAGES/django.mo index 86d8724c..faabf0ed 100644 Binary files a/cookbook/locale/es/LC_MESSAGES/django.mo and b/cookbook/locale/es/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/es/LC_MESSAGES/django.po b/cookbook/locale/es/LC_MESSAGES/django.po index 820a2a34..3aa41cdc 100644 --- a/cookbook/locale/es/LC_MESSAGES/django.po +++ b/cookbook/locale/es/LC_MESSAGES/django.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: 2023-03-13 06:55+0000\n" "Last-Translator: Amara Ude \n" "Language-Team: Spanish /remote." "php/webdav/ is added automatically)" @@ -216,33 +216,33 @@ msgstr "" "Dejar vació para Dropbox e introducir sólo la URL base para Nextcloud " "(/remote.php/webdav/ se añade automáticamente)" -#: .\cookbook\forms.py:264 .\cookbook\views\edit.py:157 +#: .\cookbook\forms.py:265 .\cookbook\views\edit.py:157 msgid "Storage" msgstr "Almacenamiento" -#: .\cookbook\forms.py:266 +#: .\cookbook\forms.py:267 msgid "Active" msgstr "Activo" -#: .\cookbook\forms.py:272 +#: .\cookbook\forms.py:273 msgid "Search String" msgstr "Cadena de búsqueda" -#: .\cookbook\forms.py:299 +#: .\cookbook\forms.py:300 msgid "File ID" msgstr "ID de Fichero" -#: .\cookbook\forms.py:321 +#: .\cookbook\forms.py:322 msgid "You must provide at least a recipe or a title." msgstr "Debe proporcionar al menos una receta o un título." -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:335 msgid "You can list default users to share recipes with in the settings." msgstr "" "Puede enumerar los usuarios predeterminados con los que compartir recetas en " "la configuración." -#: .\cookbook\forms.py:335 +#: .\cookbook\forms.py:336 msgid "" "You can use markdown to format this field. See the docs here" @@ -250,15 +250,15 @@ msgstr "" "Puede utilizar Markdown para formatear este campo. Vea la documentación aqui" -#: .\cookbook\forms.py:361 +#: .\cookbook\forms.py:362 msgid "Maximum number of users for this space reached." msgstr "Se ha alcanzado el número máximo de usuarios en este espacio." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:368 msgid "Email address already taken!" msgstr "¡El correo electrónico ya existe!" -#: .\cookbook\forms.py:375 +#: .\cookbook\forms.py:376 msgid "" "An email address is not required but if present the invite link will be sent " "to the user." @@ -266,15 +266,15 @@ msgstr "" "El correo electrónico es opcional. Si se añade uno se mandará un link de " "invitación." -#: .\cookbook\forms.py:390 +#: .\cookbook\forms.py:391 msgid "Name already taken." msgstr "El nombre ya existe." -#: .\cookbook\forms.py:401 +#: .\cookbook\forms.py:402 msgid "Accept Terms and Privacy" msgstr "Aceptar términos y condiciones" -#: .\cookbook\forms.py:433 +#: .\cookbook\forms.py:434 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." @@ -283,7 +283,7 @@ msgstr "" "similitud de trigramas(Ej. Valores más pequeños indican que más fallos se " "van a ignorar)." -#: .\cookbook\forms.py:443 +#: .\cookbook\forms.py:444 msgid "" "Select type method of search. Click here for " "full description of choices." @@ -291,7 +291,7 @@ msgstr "" "Selecciona el tipo de búsqueda. Haz click aquí para una descripción completa de las opciones." -#: .\cookbook\forms.py:444 +#: .\cookbook\forms.py:445 msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." @@ -299,7 +299,7 @@ msgstr "" "Utilizar comparación difusa en unidades, palabras clave e ingredientes al " "editar e importar recetas." -#: .\cookbook\forms.py:446 +#: .\cookbook\forms.py:447 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" @@ -307,7 +307,7 @@ 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 +#: .\cookbook\forms.py:449 msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" @@ -315,7 +315,7 @@ msgstr "" "Campos de búsqueda para coincidencias parciales. (por ejemplo, buscar 'Pie' " "devolverá 'pie' y 'piece' y 'soapie')" -#: .\cookbook\forms.py:450 +#: .\cookbook\forms.py:451 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" @@ -323,7 +323,7 @@ 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 +#: .\cookbook\forms.py:453 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." @@ -332,7 +332,7 @@ msgstr "" "'receta'). Nota: esta opción entrará en conflicto con los métodos de " "búsqueda 'web' y 'raw'." -#: .\cookbook\forms.py:454 +#: .\cookbook\forms.py:455 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." @@ -340,35 +340,35 @@ 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 +#: .\cookbook\forms.py:459 msgid "Search Method" msgstr "Método de Búsqueda" -#: .\cookbook\forms.py:459 +#: .\cookbook\forms.py:460 msgid "Fuzzy Lookups" msgstr "Búsquedas difusas" -#: .\cookbook\forms.py:460 +#: .\cookbook\forms.py:461 msgid "Ignore Accent" msgstr "Ignorar Acento" -#: .\cookbook\forms.py:461 +#: .\cookbook\forms.py:462 msgid "Partial Match" msgstr "Coincidencia Parcial" -#: .\cookbook\forms.py:462 +#: .\cookbook\forms.py:463 msgid "Starts With" msgstr "Comienza Con" -#: .\cookbook\forms.py:463 +#: .\cookbook\forms.py:464 msgid "Fuzzy Search" msgstr "Búsqueda Difusa" -#: .\cookbook\forms.py:464 +#: .\cookbook\forms.py:465 msgid "Full Text" msgstr "Texto Completo" -#: .\cookbook\forms.py:489 +#: .\cookbook\forms.py:490 msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." @@ -376,7 +376,7 @@ 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 +#: .\cookbook\forms.py:496 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." @@ -384,7 +384,7 @@ 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 +#: .\cookbook\forms.py:497 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." @@ -392,96 +392,96 @@ 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 +#: .\cookbook\forms.py:498 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 +#: .\cookbook\forms.py:499 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 +#: .\cookbook\forms.py:500 msgid "Days of recent shopping list entries to display." msgstr "Días de entradas recientes en la lista de compras a mostrar." -#: .\cookbook\forms.py:500 +#: .\cookbook\forms.py:501 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 +#: .\cookbook\forms.py:502 msgid "Delimiter to use for CSV exports." msgstr "Delimitador a utilizar para exportaciones CSV." -#: .\cookbook\forms.py:502 +#: .\cookbook\forms.py:503 msgid "Prefix to add when copying list to the clipboard." msgstr "Prefijo a agregar al copiar la lista al portapapeles." -#: .\cookbook\forms.py:506 +#: .\cookbook\forms.py:507 msgid "Share Shopping List" msgstr "Compartir Lista de la Compra" -#: .\cookbook\forms.py:507 +#: .\cookbook\forms.py:508 msgid "Autosync" msgstr "Autosincronización" -#: .\cookbook\forms.py:508 +#: .\cookbook\forms.py:509 msgid "Auto Add Meal Plan" msgstr "Agregar Plan de Comidas automáticamente" -#: .\cookbook\forms.py:509 +#: .\cookbook\forms.py:510 msgid "Exclude On Hand" msgstr "Excluir Disponible" -#: .\cookbook\forms.py:510 +#: .\cookbook\forms.py:511 msgid "Include Related" msgstr "Incluir Relacionados" -#: .\cookbook\forms.py:511 +#: .\cookbook\forms.py:512 msgid "Default Delay Hours" msgstr "Horas de Retraso Predeterminadas" -#: .\cookbook\forms.py:512 +#: .\cookbook\forms.py:513 msgid "Filter to Supermarket" msgstr "Filtrar según Supermercado" -#: .\cookbook\forms.py:513 +#: .\cookbook\forms.py:514 msgid "Recent Days" msgstr "Días Recientes" -#: .\cookbook\forms.py:514 +#: .\cookbook\forms.py:515 msgid "CSV Delimiter" msgstr "Delimitador CSV" -#: .\cookbook\forms.py:515 +#: .\cookbook\forms.py:516 msgid "List Prefix" msgstr "Prefijo de la lista" -#: .\cookbook\forms.py:516 +#: .\cookbook\forms.py:517 msgid "Auto On Hand" msgstr "Auto en existencia" -#: .\cookbook\forms.py:526 +#: .\cookbook\forms.py:527 msgid "Reset Food Inheritance" msgstr "Restablecer la herencia de alimentos" -#: .\cookbook\forms.py:527 +#: .\cookbook\forms.py:528 msgid "Reset all food to inherit the fields configured." msgstr "Reiniciar todos los alimentos para heredar los campos configurados." -#: .\cookbook\forms.py:539 +#: .\cookbook\forms.py:540 msgid "Fields on food that should be inherited by default." msgstr "Campos en los alimentos que deben ser heredados por defecto." -#: .\cookbook\forms.py:540 +#: .\cookbook\forms.py:541 msgid "Show recipe counts on search filters" msgstr "Mostrar cantidad de recetas en los filtros de búsquedas" -#: .\cookbook\forms.py:541 +#: .\cookbook\forms.py:542 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." @@ -495,7 +495,7 @@ msgstr "" "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 +#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117 msgid "You are not logged in and therefore cannot view this page!" msgstr "¡No ha iniciado sesión y por lo tanto no puede ver esta página!" @@ -508,7 +508,7 @@ msgstr "¡No ha iniciado sesión y por lo tanto no puede ver esta página!" #: .\cookbook\helper\permission_helper.py:305 #: .\cookbook\helper\permission_helper.py:321 #: .\cookbook\helper\permission_helper.py:342 .\cookbook\views\data.py:36 -#: .\cookbook\views\views.py:125 .\cookbook\views\views.py:132 +#: .\cookbook\views\views.py:128 .\cookbook\views\views.py:135 msgid "You do not have the required permissions to view this page!" msgstr "¡No tienes los permisos necesarios para ver esta página!" @@ -527,11 +527,41 @@ msgstr "Ha alcanzado el número máximo de recetas para su espacio." msgid "You have more users than allowed in your space." msgstr "" -#: .\cookbook\helper\recipe_search.py:570 +#: .\cookbook\helper\recipe_search.py:630 msgid "One of queryset or hash_key must be provided" msgstr "" -#: .\cookbook\helper\shopping_helper.py:152 +#: .\cookbook\helper\recipe_url_import.py:266 +#, fuzzy +#| msgid "Use fractions" +msgid "reverse rotation" +msgstr "Usar fracciones" + +#: .\cookbook\helper\recipe_url_import.py:267 +msgid "careful rotation" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:268 +msgid "knead" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:269 +msgid "thicken" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:270 +msgid "warm up" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:271 +msgid "ferment" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:272 +msgid "sous-vide" +msgstr "" + +#: .\cookbook\helper\shopping_helper.py:157 msgid "You must supply a servings size" msgstr "Debe proporcionar un tamaño de porción" @@ -549,7 +579,7 @@ msgstr "" msgid "I made this" msgstr "" -#: .\cookbook\integration\integration.py:223 +#: .\cookbook\integration\integration.py:218 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" @@ -557,30 +587,36 @@ msgstr "" "El importador esperaba un fichero.zip. ¿Has escogido el tipo de importador " "correcto para tus datos?" -#: .\cookbook\integration\integration.py:226 +#: .\cookbook\integration\integration.py:221 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" -#: .\cookbook\integration\integration.py:231 +#: .\cookbook\integration\integration.py:226 msgid "The following recipes were ignored because they already existed:" msgstr "Las siguentes recetas han sido ignordas por que ya existen:" -#: .\cookbook\integration\integration.py:235 +#: .\cookbook\integration\integration.py:230 #, python-format msgid "Imported %s recipes." msgstr "Se importaron %s recetas." -#: .\cookbook\integration\paprika.py:46 +#: .\cookbook\integration\openeats.py:26 +#, fuzzy +#| msgid "Recipe Home" +msgid "Recipe source:" +msgstr "Página de inicio" + +#: .\cookbook\integration\paprika.py:49 msgid "Notes" msgstr "Notas" -#: .\cookbook\integration\paprika.py:49 +#: .\cookbook\integration\paprika.py:52 msgid "Nutritional Information" msgstr "Información Nutricional" -#: .\cookbook\integration\paprika.py:53 +#: .\cookbook\integration\paprika.py:56 msgid "Source" msgstr "Fuente" @@ -647,82 +683,82 @@ msgid "" "upload." msgstr "" -#: .\cookbook\models.py:364 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:365 .\cookbook\templates\search.html:7 #: .\cookbook\templates\settings.html:18 #: .\cookbook\templates\space_manage.html:7 msgid "Search" msgstr "Buscar" -#: .\cookbook\models.py:365 .\cookbook\templates\base.html:110 +#: .\cookbook\models.py:366 .\cookbook\templates\base.html:110 #: .\cookbook\templates\meal_plan.html:7 .\cookbook\views\delete.py:178 #: .\cookbook\views\edit.py:211 .\cookbook\views\new.py:179 msgid "Meal-Plan" msgstr "Régimen de comidas" -#: .\cookbook\models.py:366 .\cookbook\templates\base.html:118 +#: .\cookbook\models.py:367 .\cookbook\templates\base.html:118 msgid "Books" msgstr "Libros" -#: .\cookbook\models.py:579 +#: .\cookbook\models.py:580 msgid " is part of a recipe step and cannot be deleted" msgstr "" -#: .\cookbook\models.py:1180 .\cookbook\templates\search_info.html:28 +#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:28 msgid "Simple" msgstr "" -#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:33 +#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:33 msgid "Phrase" msgstr "" -#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:38 +#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:38 msgid "Web" msgstr "" -#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:47 +#: .\cookbook\models.py:1184 .\cookbook\templates\search_info.html:47 msgid "Raw" msgstr "" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Food Alias" msgstr "Alias de la Comida" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 #, fuzzy #| msgid "Units" msgid "Unit Alias" msgstr "Unidades" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 #, fuzzy #| msgid "Keywords" msgid "Keyword Alias" msgstr "Palabras clave" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 #, fuzzy #| msgid "Description" msgid "Description Replace" msgstr "Descripción" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 #, fuzzy #| msgid "Instructions" msgid "Instruction Replace" msgstr "Instrucciones" -#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36 +#: .\cookbook\models.py:1258 .\cookbook\views\delete.py:36 #: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48 msgid "Recipe" msgstr "Receta" -#: .\cookbook\models.py:1258 +#: .\cookbook\models.py:1259 #, fuzzy #| msgid "Food" msgid "Food" msgstr "Comida" -#: .\cookbook\models.py:1259 .\cookbook\templates\base.html:141 +#: .\cookbook\models.py:1260 .\cookbook\templates\base.html:141 msgid "Keyword" msgstr "Palabra clave" @@ -738,64 +774,64 @@ msgstr "" msgid "Cannot modify Space owner permission." msgstr "" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "Hello" msgstr "" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "You have been invited by " msgstr "" -#: .\cookbook\serializer.py:1086 +#: .\cookbook\serializer.py:1094 msgid " to join their Tandoor Recipes space " msgstr "" -#: .\cookbook\serializer.py:1087 +#: .\cookbook\serializer.py:1095 msgid "Click the following link to activate your account: " msgstr "" -#: .\cookbook\serializer.py:1088 +#: .\cookbook\serializer.py:1096 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" -#: .\cookbook\serializer.py:1089 +#: .\cookbook\serializer.py:1097 msgid "The invitation is valid until " msgstr "" -#: .\cookbook\serializer.py:1090 +#: .\cookbook\serializer.py:1098 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -#: .\cookbook\serializer.py:1093 +#: .\cookbook\serializer.py:1101 msgid "Tandoor Recipes Invite" msgstr "" -#: .\cookbook\serializer.py:1234 +#: .\cookbook\serializer.py:1242 msgid "Existing shopping list to update" msgstr "" -#: .\cookbook\serializer.py:1236 +#: .\cookbook\serializer.py:1244 msgid "" "List of ingredient IDs from the recipe to add, if not provided all " "ingredients will be added." msgstr "" -#: .\cookbook\serializer.py:1238 +#: .\cookbook\serializer.py:1246 msgid "" "Providing a list_recipe ID and servings of 0 will delete that shopping list." msgstr "" -#: .\cookbook\serializer.py:1247 +#: .\cookbook\serializer.py:1255 msgid "Amount of food to add to the shopping list" msgstr "" -#: .\cookbook\serializer.py:1249 +#: .\cookbook\serializer.py:1257 msgid "ID of unit to use for the shopping list" msgstr "" -#: .\cookbook\serializer.py:1251 +#: .\cookbook\serializer.py:1259 msgid "When set to true will delete all food from active shopping lists." msgstr "" @@ -1664,11 +1700,11 @@ msgstr "" msgid "Profile" msgstr "" -#: .\cookbook\templates\recipe_view.html:26 +#: .\cookbook\templates\recipe_view.html:41 msgid "by" msgstr "por" -#: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:144 +#: .\cookbook\templates\recipe_view.html:59 .\cookbook\views\delete.py:144 #: .\cookbook\views\edit.py:171 msgid "Comment" msgstr "Comentario" @@ -2207,266 +2243,266 @@ msgstr "" msgid "URL Import" msgstr "Importar URL" -#: .\cookbook\views\api.py:109 .\cookbook\views\api.py:201 +#: .\cookbook\views\api.py:110 .\cookbook\views\api.py:202 #, fuzzy #| msgid "Parameter filter_list incorrectly formatted" msgid "Parameter updated_at incorrectly formatted" msgstr "Parámetro filter_list formateado incorrectamente" -#: .\cookbook\views\api.py:221 .\cookbook\views\api.py:324 +#: .\cookbook\views\api.py:222 .\cookbook\views\api.py:325 #, python-brace-format msgid "No {self.basename} with id {pk} exists" msgstr "" -#: .\cookbook\views\api.py:225 +#: .\cookbook\views\api.py:226 msgid "Cannot merge with the same object!" msgstr "¡No se puede unir con el mismo objeto!" -#: .\cookbook\views\api.py:232 +#: .\cookbook\views\api.py:233 #, python-brace-format msgid "No {self.basename} with id {target} exists" msgstr "" -#: .\cookbook\views\api.py:237 +#: .\cookbook\views\api.py:238 #, fuzzy #| msgid "Cannot merge with the same object!" msgid "Cannot merge with child object!" msgstr "¡No se puede unir con el mismo objeto!" -#: .\cookbook\views\api.py:270 +#: .\cookbook\views\api.py:271 #, python-brace-format msgid "{source.name} was merged successfully with {target.name}" msgstr "" -#: .\cookbook\views\api.py:275 +#: .\cookbook\views\api.py:276 #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" msgstr "" -#: .\cookbook\views\api.py:333 +#: .\cookbook\views\api.py:334 #, python-brace-format msgid "{child.name} was moved successfully to the root." msgstr "" -#: .\cookbook\views\api.py:336 .\cookbook\views\api.py:354 +#: .\cookbook\views\api.py:337 .\cookbook\views\api.py:355 msgid "An error occurred attempting to move " msgstr "" -#: .\cookbook\views\api.py:339 +#: .\cookbook\views\api.py:340 msgid "Cannot move an object to itself!" msgstr "" -#: .\cookbook\views\api.py:345 +#: .\cookbook\views\api.py:346 #, python-brace-format msgid "No {self.basename} with id {parent} exists" msgstr "" -#: .\cookbook\views\api.py:351 +#: .\cookbook\views\api.py:352 #, python-brace-format msgid "{child.name} was moved successfully to parent {parent.name}" msgstr "" -#: .\cookbook\views\api.py:547 +#: .\cookbook\views\api.py:553 #, python-brace-format msgid "{obj.name} was removed from the shopping list." msgstr "" -#: .\cookbook\views\api.py:552 .\cookbook\views\api.py:882 -#: .\cookbook\views\api.py:895 +#: .\cookbook\views\api.py:558 .\cookbook\views\api.py:888 +#: .\cookbook\views\api.py:901 #, python-brace-format msgid "{obj.name} was added to the shopping list." msgstr "" -#: .\cookbook\views\api.py:679 +#: .\cookbook\views\api.py:685 msgid "ID of recipe a step is part of. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:681 +#: .\cookbook\views\api.py:687 msgid "Query string matched (fuzzy) against object name." msgstr "" -#: .\cookbook\views\api.py:725 +#: .\cookbook\views\api.py:731 msgid "" "Query string matched (fuzzy) against recipe name. In the future also " "fulltext search." msgstr "" -#: .\cookbook\views\api.py:727 +#: .\cookbook\views\api.py:733 msgid "" "ID of keyword a recipe should have. For multiple repeat parameter. " "Equivalent to keywords_or" msgstr "" -#: .\cookbook\views\api.py:730 +#: .\cookbook\views\api.py:736 msgid "" "Keyword IDs, repeat for multiple. Return recipes with any of the keywords" msgstr "" -#: .\cookbook\views\api.py:733 +#: .\cookbook\views\api.py:739 msgid "" "Keyword IDs, repeat for multiple. Return recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:736 +#: .\cookbook\views\api.py:742 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords." msgstr "" -#: .\cookbook\views\api.py:739 +#: .\cookbook\views\api.py:745 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:741 +#: .\cookbook\views\api.py:747 msgid "ID of food a recipe should have. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:744 +#: .\cookbook\views\api.py:750 msgid "Food IDs, repeat for multiple. Return recipes with any of the foods" msgstr "" -#: .\cookbook\views\api.py:746 +#: .\cookbook\views\api.py:752 msgid "Food IDs, repeat for multiple. Return recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:748 +#: .\cookbook\views\api.py:754 msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods." msgstr "" -#: .\cookbook\views\api.py:750 +#: .\cookbook\views\api.py:756 msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:751 +#: .\cookbook\views\api.py:757 msgid "ID of unit a recipe should have." msgstr "" -#: .\cookbook\views\api.py:753 +#: .\cookbook\views\api.py:759 msgid "" "Rating a recipe should have or greater. [0 - 5] Negative value filters " "rating less than." msgstr "" -#: .\cookbook\views\api.py:754 +#: .\cookbook\views\api.py:760 msgid "ID of book a recipe should be in. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:756 +#: .\cookbook\views\api.py:762 msgid "Book IDs, repeat for multiple. Return recipes with any of the books" msgstr "" -#: .\cookbook\views\api.py:758 +#: .\cookbook\views\api.py:764 msgid "Book IDs, repeat for multiple. Return recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:760 +#: .\cookbook\views\api.py:766 msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books." msgstr "" -#: .\cookbook\views\api.py:762 +#: .\cookbook\views\api.py:768 msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:764 +#: .\cookbook\views\api.py:770 msgid "If only internal recipes should be returned. [true/false]" msgstr "" -#: .\cookbook\views\api.py:766 +#: .\cookbook\views\api.py:772 msgid "Returns the results in randomized order. [true/false]" msgstr "" -#: .\cookbook\views\api.py:768 +#: .\cookbook\views\api.py:774 msgid "Returns new results first in search results. [true/false]" msgstr "" -#: .\cookbook\views\api.py:770 +#: .\cookbook\views\api.py:776 msgid "" "Filter recipes cooked X times or more. Negative values returns cooked less " "than X times" msgstr "" -#: .\cookbook\views\api.py:772 +#: .\cookbook\views\api.py:778 msgid "" "Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:774 +#: .\cookbook\views\api.py:780 msgid "" "Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:776 +#: .\cookbook\views\api.py:782 msgid "" "Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:778 +#: .\cookbook\views\api.py:784 msgid "" "Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:780 +#: .\cookbook\views\api.py:786 msgid "Filter recipes that can be made with OnHand food. [true/false]" msgstr "" -#: .\cookbook\views\api.py:940 +#: .\cookbook\views\api.py:946 msgid "" "Returns the shopping list entry with a primary key of id. Multiple values " "allowed." msgstr "" -#: .\cookbook\views\api.py:945 +#: .\cookbook\views\api.py:951 msgid "" "Filter shopping list entries on checked. [true, false, both, recent]
- recent includes unchecked items and recently completed items." msgstr "" -#: .\cookbook\views\api.py:948 +#: .\cookbook\views\api.py:954 msgid "Returns the shopping list entries sorted by supermarket category order." msgstr "" -#: .\cookbook\views\api.py:1160 +#: .\cookbook\views\api.py:1166 msgid "Nothing to do." msgstr "" -#: .\cookbook\views\api.py:1180 +#: .\cookbook\views\api.py:1198 msgid "Invalid Url" msgstr "" -#: .\cookbook\views\api.py:1187 +#: .\cookbook\views\api.py:1205 msgid "Connection Refused." msgstr "" -#: .\cookbook\views\api.py:1192 +#: .\cookbook\views\api.py:1210 msgid "Bad URL Schema." msgstr "" -#: .\cookbook\views\api.py:1215 +#: .\cookbook\views\api.py:1233 #, fuzzy #| msgid "The requested page could not be found." msgid "No usable data could be found." msgstr "La página solicitada no pudo ser encontrada." -#: .\cookbook\views\api.py:1308 .\cookbook\views\import_export.py:114 +#: .\cookbook\views\api.py:1326 .\cookbook\views\import_export.py:117 msgid "Importing is not implemented for this provider" msgstr "La importación no está implementada para este proveedor" -#: .\cookbook\views\api.py:1352 .\cookbook\views\data.py:31 +#: .\cookbook\views\api.py:1372 .\cookbook\views\data.py:31 #: .\cookbook\views\edit.py:120 .\cookbook\views\new.py:90 #, fuzzy #| msgid "This feature is not available in the demo version!" msgid "This feature is not yet available in the hosted version of tandoor!" msgstr "¡Esta funcionalidad no está disponible en la versión demo!" -#: .\cookbook\views\api.py:1374 +#: .\cookbook\views\api.py:1394 msgid "Sync successful!" msgstr "¡Sincronización exitosa!" -#: .\cookbook\views\api.py:1379 +#: .\cookbook\views\api.py:1399 msgid "Error synchronizing with Storage" msgstr "Error de sincronización con el almacenamiento" @@ -2529,7 +2565,7 @@ msgstr "¡Cambios guardados!" msgid "Error saving changes!" msgstr "¡Error al guardar los cambios!" -#: .\cookbook\views\import_export.py:101 +#: .\cookbook\views\import_export.py:104 msgid "" "The PDF Exporter is not enabled on this instance as it is still in an " "experimental state." @@ -2581,40 +2617,40 @@ msgstr "¡Nueva receta importada!" msgid "There was an error importing this recipe!" msgstr "¡Hubo un error al importar esta receta!" -#: .\cookbook\views\views.py:86 +#: .\cookbook\views\views.py:73 .\cookbook\views\views.py:191 +#: .\cookbook\views\views.py:213 .\cookbook\views\views.py:399 +msgid "This feature is not available in the demo version!" +msgstr "¡Esta funcionalidad no está disponible en la versión demo!" + +#: .\cookbook\views\views.py:89 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" -#: .\cookbook\views\views.py:140 +#: .\cookbook\views\views.py:143 msgid "You do not have the required permissions to perform this action!" msgstr "¡No tienes los permisos necesarios para realizar esta acción!" -#: .\cookbook\views\views.py:151 +#: .\cookbook\views\views.py:154 msgid "Comment saved!" msgstr "¡Comentario guardado!" -#: .\cookbook\views\views.py:188 .\cookbook\views\views.py:210 -#: .\cookbook\views\views.py:396 -msgid "This feature is not available in the demo version!" -msgstr "¡Esta funcionalidad no está disponible en la versión demo!" - -#: .\cookbook\views\views.py:250 +#: .\cookbook\views\views.py:253 msgid "You must select at least one field to search!" msgstr "" -#: .\cookbook\views\views.py:255 +#: .\cookbook\views\views.py:258 msgid "" "To use this search method you must select at least one full text search " "field!" msgstr "" -#: .\cookbook\views\views.py:259 +#: .\cookbook\views\views.py:262 msgid "Fuzzy search is not compatible with this search method!" msgstr "" -#: .\cookbook\views\views.py:335 +#: .\cookbook\views\views.py:338 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2624,33 +2660,33 @@ msgstr "" "usuario. Si has olvidado tus credenciales de superusuario, por favor " "consulta la documentación de django sobre cómo restablecer las contraseñas." -#: .\cookbook\views\views.py:342 +#: .\cookbook\views\views.py:345 msgid "Passwords dont match!" msgstr "¡Las contraseñas no coinciden!" -#: .\cookbook\views\views.py:350 +#: .\cookbook\views\views.py:353 msgid "User has been created, please login!" msgstr "El usuario ha sido creado, ¡inicie sesión!" -#: .\cookbook\views\views.py:366 +#: .\cookbook\views\views.py:369 msgid "Malformed Invite Link supplied!" msgstr "¡Se proporcionó un enlace de invitación con formato incorrecto!" -#: .\cookbook\views\views.py:383 +#: .\cookbook\views\views.py:386 msgid "Successfully joined space." msgstr "" -#: .\cookbook\views\views.py:389 +#: .\cookbook\views\views.py:392 msgid "Invite Link not valid or already used!" msgstr "¡El enlace de invitación no es válido o ya se ha utilizado!" -#: .\cookbook\views\views.py:406 +#: .\cookbook\views\views.py:409 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:412 +#: .\cookbook\views\views.py:415 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/fr/LC_MESSAGES/django.mo b/cookbook/locale/fr/LC_MESSAGES/django.mo index 6c014f9b..6982ac61 100644 Binary files a/cookbook/locale/fr/LC_MESSAGES/django.mo and b/cookbook/locale/fr/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/fr/LC_MESSAGES/django.po b/cookbook/locale/fr/LC_MESSAGES/django.po index 83db28c4..52aea245 100644 --- a/cookbook/locale/fr/LC_MESSAGES/django.po +++ b/cookbook/locale/fr/LC_MESSAGES/django.po @@ -13,11 +13,11 @@ msgid "" 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-03-13 06:55+0000\n" -"Last-Translator: Jin Zhang \n" -"Language-Team: French \n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" +"PO-Revision-Date: 2023-04-12 11:55+0000\n" +"Last-Translator: noxonad \n" +"Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -65,7 +65,7 @@ msgstr "Nombre de décimales pour les ingrédients" msgid "Shopping list auto sync period" msgstr "Période de synchro automatique de la liste de courses" -#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:21 +#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:36 msgid "Comments" msgstr "Commentaires" @@ -121,7 +121,7 @@ msgstr "" "Si vous souhaitez pouvoir créer et consulter des commentaires en dessous des " "recettes." -#: .\cookbook\forms.py:79 .\cookbook\forms.py:491 +#: .\cookbook\forms.py:79 .\cookbook\forms.py:492 msgid "" "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. " @@ -139,7 +139,7 @@ msgstr "" msgid "Makes the navbar stick to the top of the page." msgstr "Épingler la barre de navigation en haut de la page." -#: .\cookbook\forms.py:83 .\cookbook\forms.py:494 +#: .\cookbook\forms.py:83 .\cookbook\forms.py:495 msgid "Automatically add meal plan ingredients to shopping list." msgstr "" "Ajouter les ingrédients du menu de la semaine à la liste de courses " @@ -161,11 +161,11 @@ msgstr "" "Les deux champs sont facultatifs. Si aucun n’est rempli, le nom " "d’utilisateur sera affiché à la place" -#: .\cookbook\forms.py:123 .\cookbook\forms.py:296 +#: .\cookbook\forms.py:123 .\cookbook\forms.py:297 msgid "Name" msgstr "Nom" -#: .\cookbook\forms.py:124 .\cookbook\forms.py:297 .\cookbook\views\lists.py:88 +#: .\cookbook\forms.py:124 .\cookbook\forms.py:298 .\cookbook\views\lists.py:88 msgid "Keywords" msgstr "Mots-clés" @@ -177,7 +177,7 @@ msgstr "Temps de préparation en minutes" msgid "Waiting time (cooking/baking) in minutes" msgstr "Temps d’attente (cuisson) en minutes" -#: .\cookbook\forms.py:127 .\cookbook\forms.py:265 .\cookbook\forms.py:298 +#: .\cookbook\forms.py:127 .\cookbook\forms.py:266 .\cookbook\forms.py:299 msgid "Path" msgstr "Chemin" @@ -185,11 +185,11 @@ msgstr "Chemin" msgid "Storage UID" msgstr "UID de stockage" -#: .\cookbook\forms.py:160 +#: .\cookbook\forms.py:161 msgid "Default" msgstr "Par défaut" -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:173 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." @@ -197,22 +197,22 @@ msgstr "" "Pour éviter les doublons, les recettes de même nom seront ignorées. Cocher " "cette case pour tout importer." -#: .\cookbook\forms.py:195 +#: .\cookbook\forms.py:196 msgid "Add your comment: " msgstr "Ajoutez votre commentaire : " -#: .\cookbook\forms.py:210 +#: .\cookbook\forms.py:211 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" "Laissez vide pour Dropbox et renseignez votre mot de passe d’application " "pour Nextcloud." -#: .\cookbook\forms.py:217 +#: .\cookbook\forms.py:218 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" "Laissez vide pour Nextcloud et renseignez votre jeton d’API pour Dropbox." -#: .\cookbook\forms.py:226 +#: .\cookbook\forms.py:227 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -220,33 +220,33 @@ msgstr "" "Laisser vide pour Dropbox et saisissez seulement l’URL de base pour " "Nextcloud (/remote.php/webdav/ est ajouté automatiquement)" -#: .\cookbook\forms.py:264 .\cookbook\views\edit.py:157 +#: .\cookbook\forms.py:265 .\cookbook\views\edit.py:157 msgid "Storage" msgstr "Stockage" -#: .\cookbook\forms.py:266 +#: .\cookbook\forms.py:267 msgid "Active" msgstr "Actif" -#: .\cookbook\forms.py:272 +#: .\cookbook\forms.py:273 msgid "Search String" msgstr "Texte recherché" -#: .\cookbook\forms.py:299 +#: .\cookbook\forms.py:300 msgid "File ID" msgstr "ID du fichier" -#: .\cookbook\forms.py:321 +#: .\cookbook\forms.py:322 msgid "You must provide at least a recipe or a title." msgstr "Vous devez au moins fournir une recette ou un titre." -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:335 msgid "You can list default users to share recipes with in the settings." msgstr "" "Vous pouvez lister les utilisateurs par défaut avec qui partager des " "recettes dans les paramètres." -#: .\cookbook\forms.py:335 +#: .\cookbook\forms.py:336 msgid "" "You can use markdown to format this field. See the
docs here" @@ -254,15 +254,15 @@ msgstr "" "Vous pouvez utiliser du markdown pour mettre en forme ce champ. Voir la documentation ici" -#: .\cookbook\forms.py:361 +#: .\cookbook\forms.py:362 msgid "Maximum number of users for this space reached." msgstr "Nombre maximum d’utilisateurs atteint pour ce groupe." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:368 msgid "Email address already taken!" msgstr "Adresse mail déjà utilisée !" -#: .\cookbook\forms.py:375 +#: .\cookbook\forms.py:376 msgid "" "An email address is not required but if present the invite link will be sent " "to the user." @@ -270,15 +270,15 @@ msgstr "" "Une adresse mail n’est pas requise mais si elle est renseignée, le lien " "d’invitation sera envoyé à l’utilisateur." -#: .\cookbook\forms.py:390 +#: .\cookbook\forms.py:391 msgid "Name already taken." msgstr "Nom déjà utilisé." -#: .\cookbook\forms.py:401 +#: .\cookbook\forms.py:402 msgid "Accept Terms and Privacy" msgstr "Accepter les conditions d’utilisation" -#: .\cookbook\forms.py:433 +#: .\cookbook\forms.py:434 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." @@ -287,15 +287,15 @@ msgstr "" "par similarité de trigrammes (par exemple, des valeurs faibles signifient " "que davantage de fautes de frappe sont ignorées)." -#: .\cookbook\forms.py:443 +#: .\cookbook\forms.py:444 msgid "" "Select type method of search. Click here for " "full description of choices." msgstr "" -"Sélectionner la méthode de recherche. Cliquer ici pour une description complète des choix." +"Sélectionner la méthode de recherche. Cliquer ici pour une description complète des choix." -#: .\cookbook\forms.py:444 +#: .\cookbook\forms.py:445 msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." @@ -303,7 +303,7 @@ msgstr "" "Utilisez la correspondance floue sur les unités, les mots-clés et les " "ingrédients lors de l’édition et de l’importation de recettes." -#: .\cookbook\forms.py:446 +#: .\cookbook\forms.py:447 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" @@ -312,7 +312,7 @@ msgstr "" "peut améliorer ou dégrader la qualité de la recherche en fonction de la " "langue." -#: .\cookbook\forms.py:448 +#: .\cookbook\forms.py:449 msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" @@ -320,7 +320,7 @@ msgstr "" "Champs à rechercher pour les correspondances partielles. (par exemple, la " "recherche de « Tarte » renverra « tarte », « tartelette » et « tartes »)" -#: .\cookbook\forms.py:450 +#: .\cookbook\forms.py:451 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" @@ -329,7 +329,7 @@ msgstr "" "exemple, si vous recherchez « sa », vous obtiendrez « salade » et " "« sandwich»)." -#: .\cookbook\forms.py:452 +#: .\cookbook\forms.py:453 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." @@ -338,7 +338,7 @@ msgstr "" "« rectte», vous trouverez « recette ».) Remarque : cette option est " "incompatible avec les méthodes de recherche « web » et « brute »." -#: .\cookbook\forms.py:454 +#: .\cookbook\forms.py:455 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." @@ -347,35 +347,35 @@ msgstr "" "« web », « phrase » et « brute » ne fonctionnent qu’avec des champs en texte " "intégral." -#: .\cookbook\forms.py:458 +#: .\cookbook\forms.py:459 msgid "Search Method" msgstr "Méthode de recherche" -#: .\cookbook\forms.py:459 +#: .\cookbook\forms.py:460 msgid "Fuzzy Lookups" msgstr "Recherches floues" -#: .\cookbook\forms.py:460 +#: .\cookbook\forms.py:461 msgid "Ignore Accent" msgstr "Ignorer les accents" -#: .\cookbook\forms.py:461 +#: .\cookbook\forms.py:462 msgid "Partial Match" msgstr "correspondance partielle" -#: .\cookbook\forms.py:462 +#: .\cookbook\forms.py:463 msgid "Starts With" msgstr "Commence par" -#: .\cookbook\forms.py:463 +#: .\cookbook\forms.py:464 msgid "Fuzzy Search" msgstr "Recherche floue" -#: .\cookbook\forms.py:464 +#: .\cookbook\forms.py:465 msgid "Full Text" msgstr "Texte intégral" -#: .\cookbook\forms.py:489 +#: .\cookbook\forms.py:490 msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." @@ -384,7 +384,7 @@ msgstr "" "courses. Ils doivent vous ajouter pour que vous puissiez voir les éléments " "de leur liste." -#: .\cookbook\forms.py:495 +#: .\cookbook\forms.py:496 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." @@ -392,7 +392,7 @@ msgstr "" "Lors de l’ajout d’un menu de la semaine à la liste de courses (manuel ou " "automatique), inclure toutes les recettes connexes." -#: .\cookbook\forms.py:496 +#: .\cookbook\forms.py:497 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." @@ -400,97 +400,97 @@ msgstr "" "Lors de l’ajout d’un menu de la semaine à la liste de courses (manuel ou " "automatique), exclure les ingrédients disponibles." -#: .\cookbook\forms.py:497 +#: .\cookbook\forms.py:498 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 +#: .\cookbook\forms.py:499 msgid "Filter shopping list to only include supermarket categories." msgstr "" "Filtrer la liste de courses pour n’inclure que des catégories de " "supermarchés." -#: .\cookbook\forms.py:499 +#: .\cookbook\forms.py:500 msgid "Days of recent shopping list entries to display." msgstr "Jours des entrées récentes de la liste de courses à afficher." -#: .\cookbook\forms.py:500 +#: .\cookbook\forms.py:501 msgid "Mark food 'On Hand' when checked off shopping list." msgstr "" "Marquer l’aliment comme disponible lorsqu’il est rayé de la liste de courses." -#: .\cookbook\forms.py:501 +#: .\cookbook\forms.py:502 msgid "Delimiter to use for CSV exports." msgstr "Caractère de séparation à utiliser pour les exportations CSV." -#: .\cookbook\forms.py:502 +#: .\cookbook\forms.py:503 msgid "Prefix to add when copying list to the clipboard." msgstr "Préfixe à ajouter lors de la copie de la liste dans le presse-papiers." -#: .\cookbook\forms.py:506 +#: .\cookbook\forms.py:507 msgid "Share Shopping List" msgstr "Partager la liste de courses" -#: .\cookbook\forms.py:507 +#: .\cookbook\forms.py:508 msgid "Autosync" msgstr "Synchronisation automatique" -#: .\cookbook\forms.py:508 +#: .\cookbook\forms.py:509 msgid "Auto Add Meal Plan" msgstr "Ajouter le menu de la semaine automatiquement" -#: .\cookbook\forms.py:509 +#: .\cookbook\forms.py:510 msgid "Exclude On Hand" msgstr "Exclure ingrédients disponibles" -#: .\cookbook\forms.py:510 +#: .\cookbook\forms.py:511 msgid "Include Related" msgstr "Inclure recettes connexes" -#: .\cookbook\forms.py:511 +#: .\cookbook\forms.py:512 msgid "Default Delay Hours" msgstr "Heures de retard par défaut" -#: .\cookbook\forms.py:512 +#: .\cookbook\forms.py:513 msgid "Filter to Supermarket" msgstr "Filtrer par supermarché" -#: .\cookbook\forms.py:513 +#: .\cookbook\forms.py:514 msgid "Recent Days" msgstr "Jours récents" -#: .\cookbook\forms.py:514 +#: .\cookbook\forms.py:515 msgid "CSV Delimiter" msgstr "Caractère de séparation CSV" -#: .\cookbook\forms.py:515 +#: .\cookbook\forms.py:516 msgid "List Prefix" msgstr "Préfixe de la liste" -#: .\cookbook\forms.py:516 +#: .\cookbook\forms.py:517 msgid "Auto On Hand" msgstr "Disponible automatique" -#: .\cookbook\forms.py:526 +#: .\cookbook\forms.py:527 msgid "Reset Food Inheritance" msgstr "Réinitialiser l'héritage alimentaire" -#: .\cookbook\forms.py:527 +#: .\cookbook\forms.py:528 msgid "Reset all food to inherit the fields configured." msgstr "Réinitialiser tous les aliments pour hériter les champs configurés." -#: .\cookbook\forms.py:539 +#: .\cookbook\forms.py:540 msgid "Fields on food that should be inherited by default." msgstr "Champs sur les aliments à hériter par défaut." -#: .\cookbook\forms.py:540 +#: .\cookbook\forms.py:541 msgid "Show recipe counts on search filters" msgstr "" "Afficher le nombre de consultations par recette sur les filtres de recherche" -#: .\cookbook\forms.py:541 +#: .\cookbook\forms.py:542 msgid "Use the plural form for units and food inside this space." msgstr "" "Utiliser la forme plurielle pour les unités et les aliments dans ce groupe." @@ -504,7 +504,7 @@ msgstr "" "Veuillez patienter quelques minutes et réessayer." #: .\cookbook\helper\permission_helper.py:164 -#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:114 +#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117 msgid "You are not logged in and therefore cannot view this page!" msgstr "" "Vous n’êtes pas connecté(e) et ne pouvez donc pas afficher cette page !" @@ -518,7 +518,7 @@ msgstr "" #: .\cookbook\helper\permission_helper.py:305 #: .\cookbook\helper\permission_helper.py:321 #: .\cookbook\helper\permission_helper.py:342 .\cookbook\views\data.py:36 -#: .\cookbook\views\views.py:125 .\cookbook\views\views.py:132 +#: .\cookbook\views\views.py:128 .\cookbook\views\views.py:135 msgid "You do not have the required permissions to view this page!" msgstr "Vous ne disposez pas de droits suffisants pour afficher cette page !" @@ -541,11 +541,41 @@ msgstr "" "Le nombre d’utilisateurs dans votre groupe dépasse le nombre d’utilisateurs " "autorisé." -#: .\cookbook\helper\recipe_search.py:570 +#: .\cookbook\helper\recipe_search.py:630 msgid "One of queryset or hash_key must be provided" msgstr "Il est nécessaire de fournir soit le queryset, soit la clé de hachage" -#: .\cookbook\helper\shopping_helper.py:152 +#: .\cookbook\helper\recipe_url_import.py:266 +#, fuzzy +#| msgid "Use fractions" +msgid "reverse rotation" +msgstr "Utiliser les fractions" + +#: .\cookbook\helper\recipe_url_import.py:267 +msgid "careful rotation" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:268 +msgid "knead" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:269 +msgid "thicken" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:270 +msgid "warm up" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:271 +msgid "ferment" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:272 +msgid "sous-vide" +msgstr "" + +#: .\cookbook\helper\shopping_helper.py:157 msgid "You must supply a servings size" msgstr "Vous devez fournir une information de portion" @@ -564,7 +594,7 @@ msgstr "Favori" msgid "I made this" msgstr "J'ai fait ça" -#: .\cookbook\integration\integration.py:223 +#: .\cookbook\integration\integration.py:218 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" @@ -572,7 +602,7 @@ msgstr "" "Un fichier .zip était attendu à l’importation. Avez-vous choisi le bon " "format pour vos données ?" -#: .\cookbook\integration\integration.py:226 +#: .\cookbook\integration\integration.py:221 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." @@ -580,24 +610,30 @@ msgstr "" "Une erreur imprévue est survenue durant l’importation. Vérifiez que vous " "avez téléversé un fichier valide." -#: .\cookbook\integration\integration.py:231 +#: .\cookbook\integration\integration.py:226 msgid "The following recipes were ignored because they already existed:" msgstr "Les recettes suivantes ont été ignorées car elles existaient déjà :" -#: .\cookbook\integration\integration.py:235 +#: .\cookbook\integration\integration.py:230 #, python-format msgid "Imported %s recipes." msgstr "%s recettes importées." -#: .\cookbook\integration\paprika.py:46 +#: .\cookbook\integration\openeats.py:26 +#, fuzzy +#| msgid "Recipe Home" +msgid "Recipe source:" +msgstr "Page d’accueil" + +#: .\cookbook\integration\paprika.py:49 msgid "Notes" msgstr "Notes" -#: .\cookbook\integration\paprika.py:49 +#: .\cookbook\integration\paprika.py:52 msgid "Nutritional Information" msgstr "Informations nutritionnelles" -#: .\cookbook\integration\paprika.py:53 +#: .\cookbook\integration\paprika.py:56 msgid "Source" msgstr "Source" @@ -668,72 +704,72 @@ msgstr "" "Le stockage maximal de fichiers pour ce groupe en Mo. Mettre 0 pour ne pas " "avoir de limite et -1 pour empêcher le téléversement de fichiers." -#: .\cookbook\models.py:364 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:365 .\cookbook\templates\search.html:7 #: .\cookbook\templates\settings.html:18 #: .\cookbook\templates\space_manage.html:7 msgid "Search" msgstr "Rechercher" -#: .\cookbook\models.py:365 .\cookbook\templates\base.html:110 +#: .\cookbook\models.py:366 .\cookbook\templates\base.html:110 #: .\cookbook\templates\meal_plan.html:7 .\cookbook\views\delete.py:178 #: .\cookbook\views\edit.py:211 .\cookbook\views\new.py:179 msgid "Meal-Plan" msgstr "Menu de la semaine" -#: .\cookbook\models.py:366 .\cookbook\templates\base.html:118 +#: .\cookbook\models.py:367 .\cookbook\templates\base.html:118 msgid "Books" msgstr "Livres" -#: .\cookbook\models.py:579 +#: .\cookbook\models.py:580 msgid " is part of a recipe step and cannot be deleted" msgstr " fait partie d’une étape de la recette et ne peut être supprimé(e)" -#: .\cookbook\models.py:1180 .\cookbook\templates\search_info.html:28 +#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:28 msgid "Simple" msgstr "Simple" -#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:33 +#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:33 msgid "Phrase" msgstr "Phrase" -#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:38 +#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:38 msgid "Web" msgstr "Internet" -#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:47 +#: .\cookbook\models.py:1184 .\cookbook\templates\search_info.html:47 msgid "Raw" msgstr "Brut" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Food Alias" msgstr "Aliment équivalent" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Unit Alias" msgstr "Unité équivalente" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Keyword Alias" msgstr "Mot-clé équivalent" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Description Replace" msgstr "Remplacer la Description" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Instruction Replace" msgstr "Remplacer l'instruction" -#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36 +#: .\cookbook\models.py:1258 .\cookbook\views\delete.py:36 #: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48 msgid "Recipe" msgstr "Recette" -#: .\cookbook\models.py:1258 +#: .\cookbook\models.py:1259 msgid "Food" msgstr "Aliment" -#: .\cookbook\models.py:1259 .\cookbook\templates\base.html:141 +#: .\cookbook\models.py:1260 .\cookbook\templates\base.html:141 msgid "Keyword" msgstr "Mot-clé" @@ -749,49 +785,49 @@ msgstr "Vous avez atteint votre limite de téléversement de fichiers." msgid "Cannot modify Space owner permission." msgstr "Impossible de modifier les permissions du propriétaire de groupe." -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "Hello" msgstr "Bonjour" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "You have been invited by " msgstr "Vous avez été invité par " -#: .\cookbook\serializer.py:1086 +#: .\cookbook\serializer.py:1094 msgid " to join their Tandoor Recipes space " msgstr " pour rejoindre leur groupe Tandoor Recipes " -#: .\cookbook\serializer.py:1087 +#: .\cookbook\serializer.py:1095 msgid "Click the following link to activate your account: " msgstr "Cliquez le lien suivant pour activer votre compte : " -#: .\cookbook\serializer.py:1088 +#: .\cookbook\serializer.py:1096 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" "Si le lien ne fonctionne pas, utilisez le code suivant pour rejoindre le " "groupe manuellement : " -#: .\cookbook\serializer.py:1089 +#: .\cookbook\serializer.py:1097 msgid "The invitation is valid until " msgstr "L’invitation est valide jusqu’au " -#: .\cookbook\serializer.py:1090 +#: .\cookbook\serializer.py:1098 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" "Tandoor Recipes est un gestionnaire de recettes open source. Venez-voir " "notre Github " -#: .\cookbook\serializer.py:1093 +#: .\cookbook\serializer.py:1101 msgid "Tandoor Recipes Invite" msgstr "Invitation Tandoor Recipes" -#: .\cookbook\serializer.py:1234 +#: .\cookbook\serializer.py:1242 msgid "Existing shopping list to update" msgstr "Liste de courses existante à mettre à jour" -#: .\cookbook\serializer.py:1236 +#: .\cookbook\serializer.py:1244 msgid "" "List of ingredient IDs from the recipe to add, if not provided all " "ingredients will be added." @@ -799,22 +835,22 @@ msgstr "" "Liste d’identifiants d’ingrédient de la recette à ajouter, si non renseigné, " "tous les ingrédients seront ajoutés." -#: .\cookbook\serializer.py:1238 +#: .\cookbook\serializer.py:1246 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 +#: .\cookbook\serializer.py:1255 msgid "Amount of food to add to the shopping list" msgstr "Quantité d’aliments à ajouter à la liste de courses" -#: .\cookbook\serializer.py:1249 +#: .\cookbook\serializer.py:1257 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 +#: .\cookbook\serializer.py:1259 #, fuzzy msgid "When set to true will delete all food from active shopping lists." msgstr "" @@ -1059,8 +1095,8 @@ msgid "" msgstr "" "Le lien de changement du mot de passe n’est pas valide, probablement parce " "qu’il a déjà été utilisé.\n" -" Merci de demander un nouveau changement de mot de passe." +" Merci de demander un nouveau changement de mot de passe." #: .\cookbook\templates\account\password_reset_from_key.html:33 msgid "change password" @@ -1430,7 +1466,7 @@ msgstr "" #: .\cookbook\templates\index.html:29 msgid "Search recipe ..." -msgstr "Rechercher une recette..." +msgstr "Rechercher une recette ..." #: .\cookbook\templates\index.html:44 msgid "New Recipe" @@ -1663,11 +1699,11 @@ msgstr "Retour" msgid "Profile" msgstr "Profil" -#: .\cookbook\templates\recipe_view.html:26 +#: .\cookbook\templates\recipe_view.html:41 msgid "by" msgstr "par" -#: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:144 +#: .\cookbook\templates\recipe_view.html:59 .\cookbook\views\delete.py:144 #: .\cookbook\views\edit.py:171 msgid "Comment" msgstr "Commentaire" @@ -1724,7 +1760,7 @@ msgstr "" " \n" " Les recherches en texte intégral tentent de normaliser les mots " "fournis pour qu'ils correspondent aux variantes courantes. Par exemple : " -"\"forked\", \"forking\", \"forks\" seront tous normalisés en \"fork\".\n" +"'forked', 'forking', 'forks' seront tous normalisés en 'fork'.\n" " Il existe plusieurs méthodes, décrites ci-dessous, qui " "permettent de contrôler la façon dont la recherche doit réagir lorsque " "plusieurs mots sont recherchés.\n" @@ -1983,10 +2019,10 @@ msgstr "" "efficacement. \n" " Vous pouvez reconstruire les index de tous les champs dans la " "page d'administration des recettes, en sélectionnant toutes les recettes et " -"en exécutant la commande \"rebuild index for selected recipes\".\n" +"en exécutant la commande 'rebuild index for selected recipes'.\n" " Vous pouvez également reconstruire les index en ligne de " -"commande en exécutant la commande de gestion \"python manage.py rebuildindex" -"\".\n" +"commande en exécutant la commande de gestion 'python manage.py " +"rebuildindex'.\n" " " #: .\cookbook\templates\settings.html:25 @@ -2368,264 +2404,264 @@ msgstr "" msgid "URL Import" msgstr "Import URL" -#: .\cookbook\views\api.py:109 .\cookbook\views\api.py:201 +#: .\cookbook\views\api.py:110 .\cookbook\views\api.py:202 msgid "Parameter updated_at incorrectly formatted" msgstr "Le paramètre « update_at » n'est pas correctement formaté" -#: .\cookbook\views\api.py:221 .\cookbook\views\api.py:324 +#: .\cookbook\views\api.py:222 .\cookbook\views\api.py:325 #, python-brace-format msgid "No {self.basename} with id {pk} exists" msgstr "Il n’existe aucun(e) {self.basename} avec l’identifiant {pk}" -#: .\cookbook\views\api.py:225 +#: .\cookbook\views\api.py:226 msgid "Cannot merge with the same object!" msgstr "Impossible de fusionner un objet avec lui-même !" -#: .\cookbook\views\api.py:232 +#: .\cookbook\views\api.py:233 #, python-brace-format msgid "No {self.basename} with id {target} exists" msgstr "Il n’existe aucun(e) {self.basename} avec l’id {target}" -#: .\cookbook\views\api.py:237 +#: .\cookbook\views\api.py:238 msgid "Cannot merge with child object!" msgstr "Impossible de fusionner avec l’objet enfant !" -#: .\cookbook\views\api.py:270 +#: .\cookbook\views\api.py:271 #, python-brace-format msgid "{source.name} was merged successfully with {target.name}" msgstr "{source.name} a été fusionné avec succès avec {target.name}" -#: .\cookbook\views\api.py:275 +#: .\cookbook\views\api.py:276 #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" msgstr "" "Une erreur est survenue lors de la tentative de fusion de {source.name} avec " "{target.name}" -#: .\cookbook\views\api.py:333 +#: .\cookbook\views\api.py:334 #, python-brace-format msgid "{child.name} was moved successfully to the root." msgstr "{child.name} a été déplacé avec succès vers la racine." -#: .\cookbook\views\api.py:336 .\cookbook\views\api.py:354 +#: .\cookbook\views\api.py:337 .\cookbook\views\api.py:355 msgid "An error occurred attempting to move " msgstr "Une erreur est survenue en essayant de déplacer " -#: .\cookbook\views\api.py:339 +#: .\cookbook\views\api.py:340 msgid "Cannot move an object to itself!" msgstr "Impossible de déplacer un objet vers lui-même !" -#: .\cookbook\views\api.py:345 +#: .\cookbook\views\api.py:346 #, python-brace-format msgid "No {self.basename} with id {parent} exists" msgstr "Il n’existe aucun(e) {self.basename} avec l’id {parent}" -#: .\cookbook\views\api.py:351 +#: .\cookbook\views\api.py:352 #, python-brace-format msgid "{child.name} was moved successfully to parent {parent.name}" msgstr "{child.name} a été déplacé avec succès vers le parent {parent.name}" -#: .\cookbook\views\api.py:547 +#: .\cookbook\views\api.py:553 #, python-brace-format msgid "{obj.name} was removed from the shopping list." msgstr "{obj.name} a été supprimé(e) de la liste de courses." -#: .\cookbook\views\api.py:552 .\cookbook\views\api.py:882 -#: .\cookbook\views\api.py:895 +#: .\cookbook\views\api.py:558 .\cookbook\views\api.py:888 +#: .\cookbook\views\api.py:901 #, python-brace-format msgid "{obj.name} was added to the shopping list." msgstr "{obj.name} a été ajouté(e) à la liste de courses." -#: .\cookbook\views\api.py:679 +#: .\cookbook\views\api.py:685 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 +#: .\cookbook\views\api.py:687 msgid "Query string matched (fuzzy) against object name." msgstr "" -#: .\cookbook\views\api.py:725 +#: .\cookbook\views\api.py:731 msgid "" "Query string matched (fuzzy) against recipe name. In the future also " "fulltext search." msgstr "" -#: .\cookbook\views\api.py:727 +#: .\cookbook\views\api.py:733 msgid "" "ID of keyword a recipe should have. For multiple repeat parameter. " "Equivalent to keywords_or" msgstr "" -#: .\cookbook\views\api.py:730 +#: .\cookbook\views\api.py:736 msgid "" "Keyword IDs, repeat for multiple. Return recipes with any of the keywords" msgstr "" -#: .\cookbook\views\api.py:733 +#: .\cookbook\views\api.py:739 msgid "" "Keyword IDs, repeat for multiple. Return recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:736 +#: .\cookbook\views\api.py:742 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords." msgstr "" -#: .\cookbook\views\api.py:739 +#: .\cookbook\views\api.py:745 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:741 +#: .\cookbook\views\api.py:747 msgid "ID of food a recipe should have. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:744 +#: .\cookbook\views\api.py:750 msgid "Food IDs, repeat for multiple. Return recipes with any of the foods" msgstr "" -#: .\cookbook\views\api.py:746 +#: .\cookbook\views\api.py:752 msgid "Food IDs, repeat for multiple. Return recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:748 +#: .\cookbook\views\api.py:754 msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods." msgstr "" -#: .\cookbook\views\api.py:750 +#: .\cookbook\views\api.py:756 msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:751 +#: .\cookbook\views\api.py:757 msgid "ID of unit a recipe should have." msgstr "" -#: .\cookbook\views\api.py:753 +#: .\cookbook\views\api.py:759 msgid "" "Rating a recipe should have or greater. [0 - 5] Negative value filters " "rating less than." msgstr "" -#: .\cookbook\views\api.py:754 +#: .\cookbook\views\api.py:760 msgid "ID of book a recipe should be in. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:756 +#: .\cookbook\views\api.py:762 msgid "Book IDs, repeat for multiple. Return recipes with any of the books" msgstr "" -#: .\cookbook\views\api.py:758 +#: .\cookbook\views\api.py:764 msgid "Book IDs, repeat for multiple. Return recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:760 +#: .\cookbook\views\api.py:766 msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books." msgstr "" -#: .\cookbook\views\api.py:762 +#: .\cookbook\views\api.py:768 msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:764 +#: .\cookbook\views\api.py:770 msgid "If only internal recipes should be returned. [true/false]" msgstr "" -#: .\cookbook\views\api.py:766 +#: .\cookbook\views\api.py:772 msgid "Returns the results in randomized order. [true/false]" msgstr "" -#: .\cookbook\views\api.py:768 +#: .\cookbook\views\api.py:774 msgid "Returns new results first in search results. [true/false]" msgstr "" -#: .\cookbook\views\api.py:770 +#: .\cookbook\views\api.py:776 msgid "" "Filter recipes cooked X times or more. Negative values returns cooked less " "than X times" msgstr "" -#: .\cookbook\views\api.py:772 +#: .\cookbook\views\api.py:778 msgid "" "Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:774 +#: .\cookbook\views\api.py:780 msgid "" "Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:776 +#: .\cookbook\views\api.py:782 msgid "" "Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:778 +#: .\cookbook\views\api.py:784 msgid "" "Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:780 +#: .\cookbook\views\api.py:786 msgid "Filter recipes that can be made with OnHand food. [true/false]" msgstr "" -#: .\cookbook\views\api.py:940 +#: .\cookbook\views\api.py:946 msgid "" "Returns the shopping list entry with a primary key of id. Multiple values " "allowed." msgstr "" -#: .\cookbook\views\api.py:945 +#: .\cookbook\views\api.py:951 msgid "" "Filter shopping list entries on checked. [true, false, both, recent]
- recent includes unchecked items and recently completed items." msgstr "" -#: .\cookbook\views\api.py:948 +#: .\cookbook\views\api.py:954 msgid "Returns the shopping list entries sorted by supermarket category order." msgstr "" -#: .\cookbook\views\api.py:1160 +#: .\cookbook\views\api.py:1166 msgid "Nothing to do." msgstr "Rien à faire." -#: .\cookbook\views\api.py:1180 +#: .\cookbook\views\api.py:1198 msgid "Invalid Url" msgstr "Url non valide" -#: .\cookbook\views\api.py:1187 +#: .\cookbook\views\api.py:1205 msgid "Connection Refused." msgstr "Connexion refusée." -#: .\cookbook\views\api.py:1192 +#: .\cookbook\views\api.py:1210 msgid "Bad URL Schema." msgstr "Mauvais schéma d’URL." -#: .\cookbook\views\api.py:1215 +#: .\cookbook\views\api.py:1233 msgid "No usable data could be found." msgstr "Aucune information utilisable n'a été trouvée." -#: .\cookbook\views\api.py:1308 .\cookbook\views\import_export.py:114 +#: .\cookbook\views\api.py:1326 .\cookbook\views\import_export.py:117 msgid "Importing is not implemented for this provider" msgstr "L’importation n’est pas implémentée pour ce fournisseur" -#: .\cookbook\views\api.py:1352 .\cookbook\views\data.py:31 +#: .\cookbook\views\api.py:1372 .\cookbook\views\data.py:31 #: .\cookbook\views\edit.py:120 .\cookbook\views\new.py:90 msgid "This feature is not yet available in the hosted version of tandoor!" msgstr "" "Cette fonctionnalité n’est pas encore disponible dans la version hébergée de " "Tandoor !" -#: .\cookbook\views\api.py:1374 +#: .\cookbook\views\api.py:1394 msgid "Sync successful!" msgstr "Synchro réussie !" -#: .\cookbook\views\api.py:1379 +#: .\cookbook\views\api.py:1399 msgid "Error synchronizing with Storage" msgstr "Erreur lors de la synchronisation avec le stockage" @@ -2691,7 +2727,7 @@ msgstr "Modifications sauvegardées !" msgid "Error saving changes!" msgstr "Erreur lors de la sauvegarde des modifications !" -#: .\cookbook\views\import_export.py:101 +#: .\cookbook\views\import_export.py:104 msgid "" "The PDF Exporter is not enabled on this instance as it is still in an " "experimental state." @@ -2737,7 +2773,12 @@ msgstr "Nouvelle recette importée !" msgid "There was an error importing this recipe!" msgstr "Une erreur est survenue lors de l’importation de cette recette !" -#: .\cookbook\views\views.py:86 +#: .\cookbook\views\views.py:73 .\cookbook\views\views.py:191 +#: .\cookbook\views\views.py:213 .\cookbook\views\views.py:399 +msgid "This feature is not available in the demo version!" +msgstr "Cette fonctionnalité n’est pas disponible dans la version d’essai !" + +#: .\cookbook\views\views.py:89 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." @@ -2746,25 +2787,20 @@ msgstr "" "Commencez à ajoutez des recettes ou invitez d’autres personnes à vous " "rejoindre." -#: .\cookbook\views\views.py:140 +#: .\cookbook\views\views.py:143 msgid "You do not have the required permissions to perform this action!" msgstr "Vous n’êtes pas autorisé(e) à effectuer cette action !" -#: .\cookbook\views\views.py:151 +#: .\cookbook\views\views.py:154 msgid "Comment saved!" msgstr "Commentaire sauvegardé !" -#: .\cookbook\views\views.py:188 .\cookbook\views\views.py:210 -#: .\cookbook\views\views.py:396 -msgid "This feature is not available in the demo version!" -msgstr "Cette fonctionnalité n’est pas disponible dans la version d’essai !" - -#: .\cookbook\views\views.py:250 +#: .\cookbook\views\views.py:253 msgid "You must select at least one field to search!" msgstr "" "Vous devez sélectionner au moins un champ pour effectuer une recherche !" -#: .\cookbook\views\views.py:255 +#: .\cookbook\views\views.py:258 msgid "" "To use this search method you must select at least one full text search " "field!" @@ -2772,12 +2808,12 @@ msgstr "" "Pour utiliser cette méthode de recherche, vous devez sélectionner au moins " "un champ de recherche en texte intégral !" -#: .\cookbook\views\views.py:259 +#: .\cookbook\views\views.py:262 msgid "Fuzzy search is not compatible with this search method!" msgstr "" "La recherche floue n’est pas compatible avec cette méthode de recherche !" -#: .\cookbook\views\views.py:335 +#: .\cookbook\views\views.py:338 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2788,27 +2824,27 @@ msgstr "" "utilisateur, counsultez la documentation Django pour savoir comment " "réinitialiser le mot de passe." -#: .\cookbook\views\views.py:342 +#: .\cookbook\views\views.py:345 msgid "Passwords dont match!" msgstr "Les mots de passe ne correspondent pas !" -#: .\cookbook\views\views.py:350 +#: .\cookbook\views\views.py:353 msgid "User has been created, please login!" msgstr "L’utilisateur a été créé, veuillez vous connecter !" -#: .\cookbook\views\views.py:366 +#: .\cookbook\views\views.py:369 msgid "Malformed Invite Link supplied!" msgstr "Le lien d’invitation fourni est mal formé !" -#: .\cookbook\views\views.py:383 +#: .\cookbook\views\views.py:386 msgid "Successfully joined space." msgstr "Vous avez bien rejoint le groupe." -#: .\cookbook\views\views.py:389 +#: .\cookbook\views\views.py:392 msgid "Invite Link not valid or already used!" msgstr "Le lien d’invitation est invalide ou déjà utilisé !" -#: .\cookbook\views\views.py:406 +#: .\cookbook\views\views.py:409 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." @@ -2816,7 +2852,7 @@ msgstr "" "Le signalement de liens partagés n’est pas autorisé pour cette installation. " "Veuillez contacter l’administrateur de la page pour signaler le problème." -#: .\cookbook\views\views.py:412 +#: .\cookbook\views\views.py:415 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/hu_HU/LC_MESSAGES/django.mo b/cookbook/locale/hu_HU/LC_MESSAGES/django.mo index e6b39e7d..b35f518b 100644 Binary files a/cookbook/locale/hu_HU/LC_MESSAGES/django.mo and b/cookbook/locale/hu_HU/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/hu_HU/LC_MESSAGES/django.po b/cookbook/locale/hu_HU/LC_MESSAGES/django.po index 63dc1906..db8b6503 100644 --- a/cookbook/locale/hu_HU/LC_MESSAGES/django.po +++ b/cookbook/locale/hu_HU/LC_MESSAGES/django.po @@ -10,9 +10,9 @@ msgid "" 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-05-24 20:32+0000\n" -"Last-Translator: Krisztian Doka \n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" +"PO-Revision-Date: 2023-04-12 11:55+0000\n" +"Last-Translator: noxonad \n" "Language-Team: Hungarian \n" "Language: hu_HU\n" @@ -20,7 +20,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" @@ -62,7 +62,7 @@ msgstr "Összetevők tizedesjegyei" msgid "Shopping list auto sync period" msgstr "Bevásárlólista automatikus szinkronizálásának periódusa" -#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:21 +#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:36 msgid "Comments" msgstr "Megjegyzések" @@ -116,7 +116,7 @@ msgstr "" "Ha azt szeretné, hogy hozzászólásokat tudjon létrehozni és látni a receptek " "alatt." -#: .\cookbook\forms.py:79 .\cookbook\forms.py:491 +#: .\cookbook\forms.py:79 .\cookbook\forms.py:492 msgid "" "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. " @@ -133,7 +133,7 @@ msgstr "" msgid "Makes the navbar stick to the top of the page." msgstr "A navigációs sávot az oldal tetejére rögzíti." -#: .\cookbook\forms.py:83 .\cookbook\forms.py:494 +#: .\cookbook\forms.py:83 .\cookbook\forms.py:495 msgid "Automatically add meal plan ingredients to shopping list." msgstr "" "Automatikusan hozzáadja az étkezési terv hozzávalóit a bevásárlólistához." @@ -154,11 +154,11 @@ msgstr "" "Mindkét mező opcionális. Ha egyiket sem adjuk meg, akkor a felhasználónév " "jelenik meg helyette" -#: .\cookbook\forms.py:123 .\cookbook\forms.py:296 +#: .\cookbook\forms.py:123 .\cookbook\forms.py:297 msgid "Name" msgstr "Név" -#: .\cookbook\forms.py:124 .\cookbook\forms.py:297 .\cookbook\views\lists.py:88 +#: .\cookbook\forms.py:124 .\cookbook\forms.py:298 .\cookbook\views\lists.py:88 msgid "Keywords" msgstr "Kulcsszavak" @@ -170,7 +170,7 @@ msgstr "Előkészítési idő percben" msgid "Waiting time (cooking/baking) in minutes" msgstr "Várakozási idő (sütés/főzés) percben" -#: .\cookbook\forms.py:127 .\cookbook\forms.py:265 .\cookbook\forms.py:298 +#: .\cookbook\forms.py:127 .\cookbook\forms.py:266 .\cookbook\forms.py:299 msgid "Path" msgstr "Elérési útvonal" @@ -178,11 +178,11 @@ msgstr "Elérési útvonal" msgid "Storage UID" msgstr "Tárhely UID" -#: .\cookbook\forms.py:160 +#: .\cookbook\forms.py:161 msgid "Default" msgstr "Alapértelmezett" -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:173 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." @@ -191,23 +191,23 @@ msgstr "" "recepteket a rendszer figyelmen kívül hagyja. Jelölje be ezt a négyzetet, ha " "mindent importálni szeretne." -#: .\cookbook\forms.py:195 +#: .\cookbook\forms.py:196 msgid "Add your comment: " msgstr "Add hozzá a kommented: " -#: .\cookbook\forms.py:210 +#: .\cookbook\forms.py:211 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" "A dropbox esetében hagyja üresen, a nextcloud esetében pedig adja meg az " "alkalmazás jelszavát." -#: .\cookbook\forms.py:217 +#: .\cookbook\forms.py:218 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" "A nextcloud esetében hagyja üresen, a dropbox esetében pedig adja meg az api " "tokent." -#: .\cookbook\forms.py:226 +#: .\cookbook\forms.py:227 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -215,33 +215,33 @@ msgstr "" "Hagyja üresen a dropbox esetén, és csak a nextcloud alap url-jét adja meg " "(/remote.php/webdav/ automatikusan hozzáadódik)" -#: .\cookbook\forms.py:264 .\cookbook\views\edit.py:157 +#: .\cookbook\forms.py:265 .\cookbook\views\edit.py:157 msgid "Storage" msgstr "Tárhely" -#: .\cookbook\forms.py:266 +#: .\cookbook\forms.py:267 msgid "Active" msgstr "Aktív" -#: .\cookbook\forms.py:272 +#: .\cookbook\forms.py:273 msgid "Search String" msgstr "Keresési kifejezés" -#: .\cookbook\forms.py:299 +#: .\cookbook\forms.py:300 msgid "File ID" msgstr "Fájl ID" -#: .\cookbook\forms.py:321 +#: .\cookbook\forms.py:322 msgid "You must provide at least a recipe or a title." msgstr "Legalább egy receptet vagy címet kell megadnia." -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:335 msgid "You can list default users to share recipes with in the settings." msgstr "" "A beállításokban megadhatja a receptek megosztására szolgáló alapértelmezett " "felhasználókat." -#: .\cookbook\forms.py:335 +#: .\cookbook\forms.py:336 msgid "" "You can use markdown to format this field. See the docs here" @@ -249,15 +249,15 @@ msgstr "" "A mező formázásához használhatja a markdown formátumot. Lásd a dokumentációt itt" -#: .\cookbook\forms.py:361 +#: .\cookbook\forms.py:362 msgid "Maximum number of users for this space reached." msgstr "Elérte a felhasználók maximális számát ezen a területen." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:368 msgid "Email address already taken!" msgstr "Az e-mail cím már foglalt!" -#: .\cookbook\forms.py:375 +#: .\cookbook\forms.py:376 msgid "" "An email address is not required but if present the invite link will be sent " "to the user." @@ -265,15 +265,15 @@ msgstr "" "Az e-mail cím megadása nem kötelező, de ha van, a meghívó linket elküldi a " "felhasználónak." -#: .\cookbook\forms.py:390 +#: .\cookbook\forms.py:391 msgid "Name already taken." msgstr "A név már foglalt." -#: .\cookbook\forms.py:401 +#: .\cookbook\forms.py:402 msgid "Accept Terms and Privacy" msgstr "Feltételek és adatvédelem elfogadása" -#: .\cookbook\forms.py:433 +#: .\cookbook\forms.py:434 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." @@ -282,7 +282,7 @@ msgstr "" "párosítást használ (pl. az alacsony értékek azt jelentik, hogy több gépelési " "hibát figyelmen kívül hagynak)." -#: .\cookbook\forms.py:443 +#: .\cookbook\forms.py:444 #, fuzzy #| msgid "" #| "Select type method of search. Click here " @@ -294,7 +294,7 @@ msgstr "" "Válassza ki a keresés típusát. Kattintson ide " "a lehetőségek teljes leírásáért." -#: .\cookbook\forms.py:444 +#: .\cookbook\forms.py:445 msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." @@ -302,7 +302,7 @@ msgstr "" "A receptek szerkesztése és importálása során az egységek, kulcsszavak és " "összetevők bizonytalan megfeleltetése." -#: .\cookbook\forms.py:446 +#: .\cookbook\forms.py:447 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" @@ -310,7 +310,7 @@ msgstr "" "Az ékezetek figyelmen kívül hagyásával keresendő mezők. Ennek az opciónak a " "kiválasztása javíthatja vagy ronthatja a keresés minőségét a nyelvtől függően" -#: .\cookbook\forms.py:448 +#: .\cookbook\forms.py:449 msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" @@ -318,7 +318,7 @@ msgstr "" "Részleges egyezések keresésére szolgáló mezők. (pl. a 'Pie' keresése a " "'pie' és a 'piece' és a 'soapie' kifejezéseket adja vissza.)" -#: .\cookbook\forms.py:450 +#: .\cookbook\forms.py:451 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" @@ -326,7 +326,7 @@ msgstr "" "Mezők a szó eleji egyezések kereséséhez. (pl. a 'sa' keresés a 'salad' és a " "'sandwich' kifejezéseket adja vissza)" -#: .\cookbook\forms.py:452 +#: .\cookbook\forms.py:453 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." @@ -335,7 +335,7 @@ msgstr "" "'recipe' szót.) Megjegyzés: ez az opció ütközik a 'web' és a 'raw' keresési " "módszerekkel." -#: .\cookbook\forms.py:454 +#: .\cookbook\forms.py:455 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." @@ -343,37 +343,37 @@ msgstr "" "Mezők a teljes szöveges kereséshez. Megjegyzés: A 'web', 'phrase' és 'raw' " "keresési módszerek csak teljes szöveges mezőkkel működnek." -#: .\cookbook\forms.py:458 +#: .\cookbook\forms.py:459 msgid "Search Method" msgstr "Keresési módszer" -#: .\cookbook\forms.py:459 +#: .\cookbook\forms.py:460 msgid "Fuzzy Lookups" msgstr "Bizonytalan keresések" -#: .\cookbook\forms.py:460 +#: .\cookbook\forms.py:461 msgid "Ignore Accent" msgstr "Ékezetek ignorálása" -#: .\cookbook\forms.py:461 +#: .\cookbook\forms.py:462 msgid "Partial Match" msgstr "Részleges találat" -#: .\cookbook\forms.py:462 +#: .\cookbook\forms.py:463 #, fuzzy #| msgid "Starts Wtih" msgid "Starts With" msgstr "Kezdődik a következővel" -#: .\cookbook\forms.py:463 +#: .\cookbook\forms.py:464 msgid "Fuzzy Search" msgstr "Bizonytalan keresés" -#: .\cookbook\forms.py:464 +#: .\cookbook\forms.py:465 msgid "Full Text" msgstr "Teljes szöveg" -#: .\cookbook\forms.py:489 +#: .\cookbook\forms.py:490 msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." @@ -382,7 +382,7 @@ msgstr "" "Ahhoz, hogy láthassák a saját listájukon szereplő tételeket, hozzá kell " "adniuk téged." -#: .\cookbook\forms.py:495 +#: .\cookbook\forms.py:496 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." @@ -390,7 +390,7 @@ msgstr "" "Amikor étkezési tervet ad hozzá a bevásárlólistához (kézzel vagy " "automatikusan), vegye fel az összes kapcsolódó receptet." -#: .\cookbook\forms.py:496 +#: .\cookbook\forms.py:497 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." @@ -398,96 +398,96 @@ msgstr "" "Amikor étkezési tervet ad hozzá a bevásárlólistához (kézzel vagy " "automatikusan), zárja ki a kéznél lévő összetevőket." -#: .\cookbook\forms.py:497 +#: .\cookbook\forms.py:498 msgid "Default number of hours to delay a shopping list entry." msgstr "A bevásárlólista bejegyzés késleltetésének alapértelmezett ideje." -#: .\cookbook\forms.py:498 +#: .\cookbook\forms.py:499 msgid "Filter shopping list to only include supermarket categories." msgstr "" "Szűrje a bevásárlólistát úgy, hogy csak a szupermarket kategóriákat " "tartalmazza." -#: .\cookbook\forms.py:499 +#: .\cookbook\forms.py:500 msgid "Days of recent shopping list entries to display." msgstr "A legutóbbi bevásárlólista bejegyzések megjelenítendő napjai." -#: .\cookbook\forms.py:500 +#: .\cookbook\forms.py:501 msgid "Mark food 'On Hand' when checked off shopping list." msgstr "" "Jelölje meg a \" Kéznél van\" jelölést, ha a bevásárlólistáról kipipálta az " "élelmiszert." -#: .\cookbook\forms.py:501 +#: .\cookbook\forms.py:502 msgid "Delimiter to use for CSV exports." msgstr "A CSV exportáláshoz használandó elválasztójel." -#: .\cookbook\forms.py:502 +#: .\cookbook\forms.py:503 msgid "Prefix to add when copying list to the clipboard." msgstr "A lista vágólapra másolásakor hozzáadandó előtag." -#: .\cookbook\forms.py:506 +#: .\cookbook\forms.py:507 msgid "Share Shopping List" msgstr "Bevásárlólista megosztása" -#: .\cookbook\forms.py:507 +#: .\cookbook\forms.py:508 msgid "Autosync" msgstr "Automatikus szinkronizálás" -#: .\cookbook\forms.py:508 +#: .\cookbook\forms.py:509 msgid "Auto Add Meal Plan" msgstr "Automatikus étkezési terv hozzáadása" -#: .\cookbook\forms.py:509 +#: .\cookbook\forms.py:510 msgid "Exclude On Hand" msgstr "Kéznél levő kihagyása" -#: .\cookbook\forms.py:510 +#: .\cookbook\forms.py:511 msgid "Include Related" msgstr "Tartalmazza a kapcsolódókat" -#: .\cookbook\forms.py:511 +#: .\cookbook\forms.py:512 msgid "Default Delay Hours" msgstr "Alapértelmezett késleltetési órák" -#: .\cookbook\forms.py:512 +#: .\cookbook\forms.py:513 msgid "Filter to Supermarket" msgstr "Szűrő a szupermarkethez" -#: .\cookbook\forms.py:513 +#: .\cookbook\forms.py:514 msgid "Recent Days" msgstr "Legutóbbi napok" -#: .\cookbook\forms.py:514 +#: .\cookbook\forms.py:515 msgid "CSV Delimiter" msgstr "CSV elválasztó" -#: .\cookbook\forms.py:515 +#: .\cookbook\forms.py:516 msgid "List Prefix" msgstr "Lista előtagja" -#: .\cookbook\forms.py:516 +#: .\cookbook\forms.py:517 msgid "Auto On Hand" msgstr "Automatikus Kéznél lévő" -#: .\cookbook\forms.py:526 +#: .\cookbook\forms.py:527 msgid "Reset Food Inheritance" msgstr "Élelmiszer-öröklés visszaállítása" -#: .\cookbook\forms.py:527 +#: .\cookbook\forms.py:528 msgid "Reset all food to inherit the fields configured." msgstr "Állítsa vissza az összes ételt, hogy örökölje a konfigurált mezőket." -#: .\cookbook\forms.py:539 +#: .\cookbook\forms.py:540 msgid "Fields on food that should be inherited by default." msgstr "" "Az élelmiszerek azon mezői, amelyeket alapértelmezés szerint örökölni kell." -#: .\cookbook\forms.py:540 +#: .\cookbook\forms.py:541 msgid "Show recipe counts on search filters" msgstr "A receptek számának megjelenítése a keresési szűrőkön" -#: .\cookbook\forms.py:541 +#: .\cookbook\forms.py:542 msgid "Use the plural form for units and food inside this space." msgstr "" @@ -500,7 +500,7 @@ msgstr "" "néhány percet, és próbálja meg újra." #: .\cookbook\helper\permission_helper.py:164 -#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:114 +#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117 msgid "You are not logged in and therefore cannot view this page!" msgstr "Ön nincs bejelentkezve, ezért nem tudja megtekinteni ezt az oldalt!" @@ -513,7 +513,7 @@ msgstr "Ön nincs bejelentkezve, ezért nem tudja megtekinteni ezt az oldalt!" #: .\cookbook\helper\permission_helper.py:305 #: .\cookbook\helper\permission_helper.py:321 #: .\cookbook\helper\permission_helper.py:342 .\cookbook\views\data.py:36 -#: .\cookbook\views\views.py:125 .\cookbook\views\views.py:132 +#: .\cookbook\views\views.py:128 .\cookbook\views\views.py:135 msgid "You do not have the required permissions to view this page!" msgstr "Nem rendelkezik a szükséges jogosultságokkal az oldal megtekintéséhez!" @@ -533,11 +533,41 @@ msgstr "Elérte a maximális számú receptet a helyén." msgid "You have more users than allowed in your space." msgstr "Több felhasználója van, mint amennyit engedélyeztek a térben." -#: .\cookbook\helper\recipe_search.py:570 +#: .\cookbook\helper\recipe_search.py:630 msgid "One of queryset or hash_key must be provided" msgstr "A queryset vagy a hash_key valamelyikét meg kell adni" -#: .\cookbook\helper\shopping_helper.py:152 +#: .\cookbook\helper\recipe_url_import.py:266 +#, fuzzy +#| msgid "Use fractions" +msgid "reverse rotation" +msgstr "Törtek használata" + +#: .\cookbook\helper\recipe_url_import.py:267 +msgid "careful rotation" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:268 +msgid "knead" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:269 +msgid "thicken" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:270 +msgid "warm up" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:271 +msgid "ferment" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:272 +msgid "sous-vide" +msgstr "" + +#: .\cookbook\helper\shopping_helper.py:157 #, fuzzy #| msgid "You must supply a created_by" msgid "You must supply a servings size" @@ -557,7 +587,7 @@ msgstr "" msgid "I made this" msgstr "" -#: .\cookbook\integration\integration.py:223 +#: .\cookbook\integration\integration.py:218 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" @@ -565,7 +595,7 @@ msgstr "" "Az importáló egy .zip fájlt várt. A megfelelő importálótípust választotta az " "adataihoz?" -#: .\cookbook\integration\integration.py:226 +#: .\cookbook\integration\integration.py:221 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." @@ -573,24 +603,30 @@ msgstr "" "Az importálás során váratlan hiba történt. Kérjük, ellenőrizze, hogy " "érvényes fájlt töltött-e fel." -#: .\cookbook\integration\integration.py:231 +#: .\cookbook\integration\integration.py:226 msgid "The following recipes were ignored because they already existed:" msgstr "A következő recepteket figyelmen kívül hagytuk, mert már léteztek:" -#: .\cookbook\integration\integration.py:235 +#: .\cookbook\integration\integration.py:230 #, python-format msgid "Imported %s recipes." msgstr "Importálva %s recept." -#: .\cookbook\integration\paprika.py:46 +#: .\cookbook\integration\openeats.py:26 +#, fuzzy +#| msgid "Recipe Home" +msgid "Recipe source:" +msgstr "Recipe Home" + +#: .\cookbook\integration\paprika.py:49 msgid "Notes" msgstr "Jegyzetek" -#: .\cookbook\integration\paprika.py:49 +#: .\cookbook\integration\paprika.py:52 msgid "Nutritional Information" msgstr "Táplálkozási információk" -#: .\cookbook\integration\paprika.py:53 +#: .\cookbook\integration\paprika.py:56 msgid "Source" msgstr "Forrás" @@ -665,78 +701,78 @@ msgstr "" "Maximális tárhely a fájloknak MB-ban. 0 a korlátlan, -1 a fájlfeltöltés " "letiltásához." -#: .\cookbook\models.py:364 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:365 .\cookbook\templates\search.html:7 #: .\cookbook\templates\settings.html:18 #: .\cookbook\templates\space_manage.html:7 msgid "Search" msgstr "Keresés" -#: .\cookbook\models.py:365 .\cookbook\templates\base.html:110 +#: .\cookbook\models.py:366 .\cookbook\templates\base.html:110 #: .\cookbook\templates\meal_plan.html:7 .\cookbook\views\delete.py:178 #: .\cookbook\views\edit.py:211 .\cookbook\views\new.py:179 msgid "Meal-Plan" msgstr "Étkezési terv" -#: .\cookbook\models.py:366 .\cookbook\templates\base.html:118 +#: .\cookbook\models.py:367 .\cookbook\templates\base.html:118 msgid "Books" msgstr "Könyvek" -#: .\cookbook\models.py:579 +#: .\cookbook\models.py:580 msgid " is part of a recipe step and cannot be deleted" msgstr " egy recept része, ezért nem törölhető" -#: .\cookbook\models.py:1180 .\cookbook\templates\search_info.html:28 +#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:28 msgid "Simple" msgstr "Egyszerű" -#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:33 +#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:33 msgid "Phrase" msgstr "Kifejezés" -#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:38 +#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:38 msgid "Web" msgstr "Web" -#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:47 +#: .\cookbook\models.py:1184 .\cookbook\templates\search_info.html:47 msgid "Raw" msgstr "Nyers" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Food Alias" msgstr "Élelmiszer álneve" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Unit Alias" msgstr "Egység álneve" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Keyword Alias" msgstr "Kulcsszó álneve" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 #, fuzzy #| msgid "Description" msgid "Description Replace" msgstr "Leírás" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 #, fuzzy #| msgid "Instructions" msgid "Instruction Replace" msgstr "Elkészítés" -#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36 +#: .\cookbook\models.py:1258 .\cookbook\views\delete.py:36 #: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48 msgid "Recipe" msgstr "Recept" -#: .\cookbook\models.py:1258 +#: .\cookbook\models.py:1259 #, fuzzy #| msgid "Foods" msgid "Food" msgstr "Ételek" -#: .\cookbook\models.py:1259 .\cookbook\templates\base.html:141 +#: .\cookbook\models.py:1260 .\cookbook\templates\base.html:141 msgid "Keyword" msgstr "Kulcsszó" @@ -752,48 +788,48 @@ msgstr "Elérte a fájlfeltöltési limitet." msgid "Cannot modify Space owner permission." msgstr "" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "Hello" msgstr "Helló" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "You have been invited by " msgstr "Önt meghívta " -#: .\cookbook\serializer.py:1086 +#: .\cookbook\serializer.py:1094 msgid " to join their Tandoor Recipes space " msgstr " hogy csatlakozzon a Tandoor Receptek helyhez " -#: .\cookbook\serializer.py:1087 +#: .\cookbook\serializer.py:1095 msgid "Click the following link to activate your account: " msgstr "Kattintson az alábbi linkre fiókja aktiválásához: " -#: .\cookbook\serializer.py:1088 +#: .\cookbook\serializer.py:1096 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" "Ha a link nem működik, használja a következő kódot, hogy manuálisan " "csatlakozzon a térhez: " -#: .\cookbook\serializer.py:1089 +#: .\cookbook\serializer.py:1097 msgid "The invitation is valid until " msgstr "A meghívó a következő időpontig érvényes " -#: .\cookbook\serializer.py:1090 +#: .\cookbook\serializer.py:1098 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" "A Tandoor Receptek egy nyílt forráskódú receptkezelő. Nézze meg a GitHubon " -#: .\cookbook\serializer.py:1093 +#: .\cookbook\serializer.py:1101 msgid "Tandoor Recipes Invite" msgstr "Tandoor receptek meghívó" -#: .\cookbook\serializer.py:1234 +#: .\cookbook\serializer.py:1242 msgid "Existing shopping list to update" msgstr "Meglévő bevásárlólista frissítése" -#: .\cookbook\serializer.py:1236 +#: .\cookbook\serializer.py:1244 msgid "" "List of ingredient IDs from the recipe to add, if not provided all " "ingredients will be added." @@ -801,20 +837,20 @@ msgstr "" "A hozzáadandó összetevők azonosítóinak listája a receptből, ha nincs " "megadva, az összes összetevő hozzáadásra kerül." -#: .\cookbook\serializer.py:1238 +#: .\cookbook\serializer.py:1246 msgid "" "Providing a list_recipe ID and servings of 0 will delete that shopping list." msgstr "A list_recipe azonosító és a 0 adag megadása törli a bevásárlólistát." -#: .\cookbook\serializer.py:1247 +#: .\cookbook\serializer.py:1255 msgid "Amount of food to add to the shopping list" msgstr "A bevásárlólistához hozzáadandó élelmiszerek mennyisége" -#: .\cookbook\serializer.py:1249 +#: .\cookbook\serializer.py:1257 msgid "ID of unit to use for the shopping list" msgstr "A bevásárlólistához használandó egység azonosítója" -#: .\cookbook\serializer.py:1251 +#: .\cookbook\serializer.py:1259 msgid "When set to true will delete all food from active shopping lists." msgstr "" "Ha igazra van állítva, akkor minden élelmiszert töröl az aktív " @@ -1435,7 +1471,7 @@ msgstr "" #: .\cookbook\templates\index.html:29 msgid "Search recipe ..." -msgstr "Recept keresése..." +msgstr "Recept keresése ..." #: .\cookbook\templates\index.html:44 msgid "New Recipe" @@ -1671,11 +1707,11 @@ msgstr "" msgid "Profile" msgstr "" -#: .\cookbook\templates\recipe_view.html:26 +#: .\cookbook\templates\recipe_view.html:41 msgid "by" msgstr "által" -#: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:144 +#: .\cookbook\templates\recipe_view.html:59 .\cookbook\views\delete.py:144 #: .\cookbook\views\edit.py:171 msgid "Comment" msgstr "Megjegyzés" @@ -2364,83 +2400,83 @@ msgstr "" msgid "URL Import" msgstr "URL importálása" -#: .\cookbook\views\api.py:109 .\cookbook\views\api.py:201 +#: .\cookbook\views\api.py:110 .\cookbook\views\api.py:202 msgid "Parameter updated_at incorrectly formatted" msgstr "Az updated_at paraméter helytelenül van formázva" -#: .\cookbook\views\api.py:221 .\cookbook\views\api.py:324 +#: .\cookbook\views\api.py:222 .\cookbook\views\api.py:325 #, python-brace-format msgid "No {self.basename} with id {pk} exists" msgstr "Nem létezik {self.basename} azonosítóval {pk}" -#: .\cookbook\views\api.py:225 +#: .\cookbook\views\api.py:226 msgid "Cannot merge with the same object!" msgstr "Nem egyesíthető ugyanazzal az objektummal!" -#: .\cookbook\views\api.py:232 +#: .\cookbook\views\api.py:233 #, python-brace-format msgid "No {self.basename} with id {target} exists" msgstr "Nem létezik {self.basename} azonosítóval {target}" -#: .\cookbook\views\api.py:237 +#: .\cookbook\views\api.py:238 msgid "Cannot merge with child object!" msgstr "Nem lehet egyesíteni a gyermekobjektummal!" -#: .\cookbook\views\api.py:270 +#: .\cookbook\views\api.py:271 #, python-brace-format msgid "{source.name} was merged successfully with {target.name}" msgstr "{source.name} sikeresen egyesült a {target.name} -vel" -#: .\cookbook\views\api.py:275 +#: .\cookbook\views\api.py:276 #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" msgstr "Hiba történt a {source.name} és a {target.name} egyesítése során" -#: .\cookbook\views\api.py:333 +#: .\cookbook\views\api.py:334 #, python-brace-format msgid "{child.name} was moved successfully to the root." msgstr "{child.name} sikeresen átkerült a gyökérbe." -#: .\cookbook\views\api.py:336 .\cookbook\views\api.py:354 +#: .\cookbook\views\api.py:337 .\cookbook\views\api.py:355 msgid "An error occurred attempting to move " msgstr "Hiba történt az áthelyezés közben " -#: .\cookbook\views\api.py:339 +#: .\cookbook\views\api.py:340 msgid "Cannot move an object to itself!" msgstr "Nem lehet egy objektumot önmagába mozgatni!" -#: .\cookbook\views\api.py:345 +#: .\cookbook\views\api.py:346 #, python-brace-format msgid "No {self.basename} with id {parent} exists" msgstr "Nem létezik {self.basename} azonosítóval {parent}" -#: .\cookbook\views\api.py:351 +#: .\cookbook\views\api.py:352 #, python-brace-format msgid "{child.name} was moved successfully to parent {parent.name}" msgstr "{child.name} sikeresen átkerült a {parent.name} szülőhöz" -#: .\cookbook\views\api.py:547 +#: .\cookbook\views\api.py:553 #, python-brace-format msgid "{obj.name} was removed from the shopping list." msgstr "{obj.name} lekerült a bevásárlólistáról." -#: .\cookbook\views\api.py:552 .\cookbook\views\api.py:882 -#: .\cookbook\views\api.py:895 +#: .\cookbook\views\api.py:558 .\cookbook\views\api.py:888 +#: .\cookbook\views\api.py:901 #, python-brace-format msgid "{obj.name} was added to the shopping list." msgstr "{obj.name} hozzá lett adva a bevásárlólistához." -#: .\cookbook\views\api.py:679 +#: .\cookbook\views\api.py:685 msgid "ID of recipe a step is part of. For multiple repeat parameter." msgstr "" "A recept azonosítója, amelynek egy lépés része. Többszörös ismétlés esetén " "paraméter." -#: .\cookbook\views\api.py:681 +#: .\cookbook\views\api.py:687 msgid "Query string matched (fuzzy) against object name." msgstr "A lekérdezés karakterlánca az objektum nevével összevetve (fuzzy)." -#: .\cookbook\views\api.py:725 +#: .\cookbook\views\api.py:731 msgid "" "Query string matched (fuzzy) against recipe name. In the future also " "fulltext search." @@ -2448,7 +2484,7 @@ msgstr "" "A lekérdezési karakterláncot a recept nevével összevetve (fuzzy). A jövőben " "teljes szöveges keresés is." -#: .\cookbook\views\api.py:727 +#: .\cookbook\views\api.py:733 #, fuzzy #| msgid "ID of keyword a recipe should have. For multiple repeat parameter." msgid "" @@ -2457,132 +2493,132 @@ msgid "" msgstr "" "A recept kulcsszavának azonosítója. Többszörös ismétlődő paraméter esetén." -#: .\cookbook\views\api.py:730 +#: .\cookbook\views\api.py:736 msgid "" "Keyword IDs, repeat for multiple. Return recipes with any of the keywords" msgstr "" -#: .\cookbook\views\api.py:733 +#: .\cookbook\views\api.py:739 msgid "" "Keyword IDs, repeat for multiple. Return recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:736 +#: .\cookbook\views\api.py:742 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords." msgstr "" -#: .\cookbook\views\api.py:739 +#: .\cookbook\views\api.py:745 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:741 +#: .\cookbook\views\api.py:747 msgid "ID of food a recipe should have. For multiple repeat parameter." msgstr "" "Az ételek azonosítója egy receptnek tartalmaznia kell. Többszörös ismétlődő " "paraméter esetén." -#: .\cookbook\views\api.py:744 +#: .\cookbook\views\api.py:750 msgid "Food IDs, repeat for multiple. Return recipes with any of the foods" msgstr "" -#: .\cookbook\views\api.py:746 +#: .\cookbook\views\api.py:752 msgid "Food IDs, repeat for multiple. Return recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:748 +#: .\cookbook\views\api.py:754 msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods." msgstr "" -#: .\cookbook\views\api.py:750 +#: .\cookbook\views\api.py:756 msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:751 +#: .\cookbook\views\api.py:757 msgid "ID of unit a recipe should have." msgstr "Az egység azonosítója, amellyel a receptnek rendelkeznie kell." -#: .\cookbook\views\api.py:753 +#: .\cookbook\views\api.py:759 msgid "" "Rating a recipe should have or greater. [0 - 5] Negative value filters " "rating less than." msgstr "" -#: .\cookbook\views\api.py:754 +#: .\cookbook\views\api.py:760 msgid "ID of book a recipe should be in. For multiple repeat parameter." msgstr "" "A könyv azonosítója, amelyben a receptnek szerepelnie kell. Többszörös " "ismétlés esetén paraméter." -#: .\cookbook\views\api.py:756 +#: .\cookbook\views\api.py:762 msgid "Book IDs, repeat for multiple. Return recipes with any of the books" msgstr "" -#: .\cookbook\views\api.py:758 +#: .\cookbook\views\api.py:764 msgid "Book IDs, repeat for multiple. Return recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:760 +#: .\cookbook\views\api.py:766 msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books." msgstr "" -#: .\cookbook\views\api.py:762 +#: .\cookbook\views\api.py:768 msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:764 +#: .\cookbook\views\api.py:770 msgid "If only internal recipes should be returned. [true/false]" msgstr "Ha csak a belső recepteket kell visszaadni. [true/false]" -#: .\cookbook\views\api.py:766 +#: .\cookbook\views\api.py:772 msgid "Returns the results in randomized order. [true/false]" msgstr "" "Az eredményeket véletlenszerű sorrendben adja vissza. [true/false]" -#: .\cookbook\views\api.py:768 +#: .\cookbook\views\api.py:774 msgid "Returns new results first in search results. [true/false]" msgstr "" "Az új találatokat adja vissza először a keresési eredmények között. [true/" "false]" -#: .\cookbook\views\api.py:770 +#: .\cookbook\views\api.py:776 msgid "" "Filter recipes cooked X times or more. Negative values returns cooked less " "than X times" msgstr "" -#: .\cookbook\views\api.py:772 +#: .\cookbook\views\api.py:778 msgid "" "Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:774 +#: .\cookbook\views\api.py:780 msgid "" "Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:776 +#: .\cookbook\views\api.py:782 msgid "" "Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:778 +#: .\cookbook\views\api.py:784 msgid "" "Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:780 +#: .\cookbook\views\api.py:786 #, fuzzy #| msgid "If only internal recipes should be returned. [true/false]" msgid "Filter recipes that can be made with OnHand food. [true/false]" msgstr "Ha csak a belső recepteket kell visszaadni. [true/false]" -#: .\cookbook\views\api.py:940 +#: .\cookbook\views\api.py:946 msgid "" "Returns the shopping list entry with a primary key of id. Multiple values " "allowed." @@ -2590,7 +2626,7 @@ msgstr "" "Visszaadja az id elsődleges kulccsal rendelkező bevásárlólista-bejegyzést. " "Több érték megengedett." -#: .\cookbook\views\api.py:945 +#: .\cookbook\views\api.py:951 msgid "" "Filter shopping list entries on checked. [true, false, both, recent]
- recent includes unchecked items and recently completed items." @@ -2599,48 +2635,48 @@ msgstr "" "mindkettő, legutóbbi]
– a legutóbbi a nem bejelölt és a nemrég " "befejezett elemeket tartalmazza." -#: .\cookbook\views\api.py:948 +#: .\cookbook\views\api.py:954 msgid "Returns the shopping list entries sorted by supermarket category order." msgstr "" "Visszaadja a bevásárlólista bejegyzéseit szupermarket kategóriák szerinti " "sorrendben." -#: .\cookbook\views\api.py:1160 +#: .\cookbook\views\api.py:1166 msgid "Nothing to do." msgstr "Semmi feladat." -#: .\cookbook\views\api.py:1180 +#: .\cookbook\views\api.py:1198 msgid "Invalid Url" msgstr "" -#: .\cookbook\views\api.py:1187 +#: .\cookbook\views\api.py:1205 msgid "Connection Refused." msgstr "Kapcsolat megtagadva." -#: .\cookbook\views\api.py:1192 +#: .\cookbook\views\api.py:1210 msgid "Bad URL Schema." msgstr "" -#: .\cookbook\views\api.py:1215 +#: .\cookbook\views\api.py:1233 #, fuzzy #| msgid "No useable data could be found." msgid "No usable data could be found." msgstr "Nem találtam használható adatokat." -#: .\cookbook\views\api.py:1308 .\cookbook\views\import_export.py:114 +#: .\cookbook\views\api.py:1326 .\cookbook\views\import_export.py:117 msgid "Importing is not implemented for this provider" msgstr "Az importálás nincs implementálva ennél a szolgáltatónál" -#: .\cookbook\views\api.py:1352 .\cookbook\views\data.py:31 +#: .\cookbook\views\api.py:1372 .\cookbook\views\data.py:31 #: .\cookbook\views\edit.py:120 .\cookbook\views\new.py:90 msgid "This feature is not yet available in the hosted version of tandoor!" msgstr "Ez a funkció még nem érhető el a tandoor hosztolt verziójában!" -#: .\cookbook\views\api.py:1374 +#: .\cookbook\views\api.py:1394 msgid "Sync successful!" msgstr "Szinkronizálás sikeres!" -#: .\cookbook\views\api.py:1379 +#: .\cookbook\views\api.py:1399 msgid "Error synchronizing with Storage" msgstr "Hiba szinkronizálás közben a tárolóval" @@ -2705,7 +2741,7 @@ msgstr "Változások mentve!" msgid "Error saving changes!" msgstr "Hiba a módosítások mentése közben!" -#: .\cookbook\views\import_export.py:101 +#: .\cookbook\views\import_export.py:104 msgid "" "The PDF Exporter is not enabled on this instance as it is still in an " "experimental state." @@ -2755,7 +2791,12 @@ msgstr "Új recept importálva!" msgid "There was an error importing this recipe!" msgstr "Hiba történt a recept importálásakor!" -#: .\cookbook\views\views.py:86 +#: .\cookbook\views\views.py:73 .\cookbook\views\views.py:191 +#: .\cookbook\views\views.py:213 .\cookbook\views\views.py:399 +msgid "This feature is not available in the demo version!" +msgstr "Ez a funkció nem érhető el a demó verzióban!" + +#: .\cookbook\views\views.py:89 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." @@ -2763,24 +2804,19 @@ msgstr "" "Sikeresen létrehozta saját receptterét. Kezdje el néhány recept " "hozzáadásával, vagy hívjon meg másokat is, hogy csatlakozzanak Önhöz." -#: .\cookbook\views\views.py:140 +#: .\cookbook\views\views.py:143 msgid "You do not have the required permissions to perform this action!" msgstr "Nem rendelkezik a művelet végrehajtásához szükséges jogosultságokkal!" -#: .\cookbook\views\views.py:151 +#: .\cookbook\views\views.py:154 msgid "Comment saved!" msgstr "Megjegyzés mentve!" -#: .\cookbook\views\views.py:188 .\cookbook\views\views.py:210 -#: .\cookbook\views\views.py:396 -msgid "This feature is not available in the demo version!" -msgstr "Ez a funkció nem érhető el a demó verzióban!" - -#: .\cookbook\views\views.py:250 +#: .\cookbook\views\views.py:253 msgid "You must select at least one field to search!" msgstr "Legalább egy mezőt ki kell választania a kereséshez!" -#: .\cookbook\views\views.py:255 +#: .\cookbook\views\views.py:258 msgid "" "To use this search method you must select at least one full text search " "field!" @@ -2788,11 +2824,11 @@ msgstr "" "Ennek a keresési módszernek a használatához legalább egy teljes szöveges " "keresési mezőt ki kell választania!" -#: .\cookbook\views\views.py:259 +#: .\cookbook\views\views.py:262 msgid "Fuzzy search is not compatible with this search method!" msgstr "A bizonytalan keresés nem kompatibilis ezzel a keresési módszerrel!" -#: .\cookbook\views\views.py:335 +#: .\cookbook\views\views.py:338 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2802,27 +2838,27 @@ msgstr "" "elfelejtette a szuperfelhasználói hitelesítő adatait, kérjük, olvassa el a " "django dokumentációját a jelszavak visszaállításáról." -#: .\cookbook\views\views.py:342 +#: .\cookbook\views\views.py:345 msgid "Passwords dont match!" msgstr "A jelszavak nem egyeznek!" -#: .\cookbook\views\views.py:350 +#: .\cookbook\views\views.py:353 msgid "User has been created, please login!" msgstr "A felhasználó létre lett hozva, kérjük, jelentkezzen be!" -#: .\cookbook\views\views.py:366 +#: .\cookbook\views\views.py:369 msgid "Malformed Invite Link supplied!" msgstr "Hibás meghívó linket küldtek!" -#: .\cookbook\views\views.py:383 +#: .\cookbook\views\views.py:386 msgid "Successfully joined space." msgstr "Sikeresen csatlakozott az térhez." -#: .\cookbook\views\views.py:389 +#: .\cookbook\views\views.py:392 msgid "Invite Link not valid or already used!" msgstr "A meghívó link nem érvényes vagy már felhasználásra került!" -#: .\cookbook\views\views.py:406 +#: .\cookbook\views\views.py:409 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." @@ -2830,7 +2866,7 @@ msgstr "" "A megosztási hivatkozások jelentése nem engedélyezett ezen a példányon. " "Kérjük, a problémák jelentéséhez értesítse az oldal adminisztrátorát." -#: .\cookbook\views\views.py:412 +#: .\cookbook\views\views.py:415 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/id/LC_MESSAGES/django.mo b/cookbook/locale/id/LC_MESSAGES/django.mo index 8e058985..a34a4b02 100644 Binary files a/cookbook/locale/id/LC_MESSAGES/django.mo and b/cookbook/locale/id/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/it/LC_MESSAGES/django.mo b/cookbook/locale/it/LC_MESSAGES/django.mo index 1168fa81..b9d42192 100644 Binary files a/cookbook/locale/it/LC_MESSAGES/django.mo and b/cookbook/locale/it/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/it/LC_MESSAGES/django.po b/cookbook/locale/it/LC_MESSAGES/django.po index 21eec4eb..1de1eee8 100644 --- a/cookbook/locale/it/LC_MESSAGES/django.po +++ b/cookbook/locale/it/LC_MESSAGES/django.po @@ -11,9 +11,9 @@ msgid "" 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-05 03:55+0000\n" -"Last-Translator: Adri \n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" +"PO-Revision-Date: 2023-04-29 07:55+0000\n" +"Last-Translator: Oliver Cervera \n" "Language-Team: Italian \n" "Language: it\n" @@ -63,7 +63,7 @@ msgstr "Posizioni decimali degli ingredienti" msgid "Shopping list auto sync period" msgstr "Frequenza di sincronizzazione automatica della lista della spesa" -#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:21 +#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:36 msgid "Comments" msgstr "Commenti" @@ -116,7 +116,7 @@ msgid "If you want to be able to create and see comments underneath recipes." msgstr "" "Se vuoi essere in grado di creare e vedere i commenti sotto le ricette." -#: .\cookbook\forms.py:79 .\cookbook\forms.py:491 +#: .\cookbook\forms.py:79 .\cookbook\forms.py:492 msgid "" "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. " @@ -134,7 +134,7 @@ msgstr "" msgid "Makes the navbar stick to the top of the page." msgstr "Fissa la barra di navigazione nella parte superiore della pagina." -#: .\cookbook\forms.py:83 .\cookbook\forms.py:494 +#: .\cookbook\forms.py:83 .\cookbook\forms.py:495 msgid "Automatically add meal plan ingredients to shopping list." msgstr "" "Aggiungi automaticamente gli ingredienti del piano alimentare alla lista " @@ -156,11 +156,11 @@ msgstr "" "Entrambi i campi sono facoltativi. Se non viene fornito, verrà visualizzato " "il nome utente" -#: .\cookbook\forms.py:123 .\cookbook\forms.py:296 +#: .\cookbook\forms.py:123 .\cookbook\forms.py:297 msgid "Name" msgstr "Nome" -#: .\cookbook\forms.py:124 .\cookbook\forms.py:297 .\cookbook\views\lists.py:88 +#: .\cookbook\forms.py:124 .\cookbook\forms.py:298 .\cookbook\views\lists.py:88 msgid "Keywords" msgstr "Parole chiave" @@ -172,7 +172,7 @@ msgstr "Tempo di preparazione in minuti" msgid "Waiting time (cooking/baking) in minutes" msgstr "Tempo di attesa (cottura) in minuti" -#: .\cookbook\forms.py:127 .\cookbook\forms.py:265 .\cookbook\forms.py:298 +#: .\cookbook\forms.py:127 .\cookbook\forms.py:266 .\cookbook\forms.py:299 msgid "Path" msgstr "Percorso" @@ -180,11 +180,11 @@ msgstr "Percorso" msgid "Storage UID" msgstr "UID di archiviazione" -#: .\cookbook\forms.py:160 +#: .\cookbook\forms.py:161 msgid "Default" msgstr "Predefinito" -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:173 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." @@ -192,20 +192,20 @@ msgstr "" "Per prevenire duplicati, vengono ignorate le ricette che hanno lo stesso " "nome di quelle esistenti. Metti la spunta per importare tutto." -#: .\cookbook\forms.py:195 +#: .\cookbook\forms.py:196 msgid "Add your comment: " msgstr "Aggiungi il tuo commento: " -#: .\cookbook\forms.py:210 +#: .\cookbook\forms.py:211 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" "Lascia vuoto per dropbox e inserisci la password dell'app per nextcloud." -#: .\cookbook\forms.py:217 +#: .\cookbook\forms.py:218 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Lascia vuoto per nextcloud e inserisci l'api token per dropbox." -#: .\cookbook\forms.py:226 +#: .\cookbook\forms.py:227 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -213,33 +213,33 @@ msgstr "" "Lascia vuoto per dropbox e inserisci solo l'url base per nextcloud (/" "remote.php/webdav/ è aggiunto automaticamente)" -#: .\cookbook\forms.py:264 .\cookbook\views\edit.py:157 +#: .\cookbook\forms.py:265 .\cookbook\views\edit.py:157 msgid "Storage" msgstr "Archiviazione" -#: .\cookbook\forms.py:266 +#: .\cookbook\forms.py:267 msgid "Active" msgstr "Attivo" -#: .\cookbook\forms.py:272 +#: .\cookbook\forms.py:273 msgid "Search String" msgstr "Stringa di Ricerca" -#: .\cookbook\forms.py:299 +#: .\cookbook\forms.py:300 msgid "File ID" msgstr "ID del File" -#: .\cookbook\forms.py:321 +#: .\cookbook\forms.py:322 msgid "You must provide at least a recipe or a title." msgstr "Devi fornire almeno una ricetta o un titolo." -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:335 msgid "You can list default users to share recipes with in the settings." msgstr "" "È possibile visualizzare l'elenco degli utenti predefiniti con cui " "condividere le ricette nelle impostazioni." -#: .\cookbook\forms.py:335 +#: .\cookbook\forms.py:336 msgid "" "You can use markdown to format this field. See the docs here" @@ -247,15 +247,15 @@ msgstr "" "Puoi usare markdown per formattare questo campo. Guarda la documentazione qui" -#: .\cookbook\forms.py:361 +#: .\cookbook\forms.py:362 msgid "Maximum number of users for this space reached." msgstr "È stato raggiunto il numero massimo di utenti per questa istanza." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:368 msgid "Email address already taken!" msgstr "Questo indirizzo email è già in uso!" -#: .\cookbook\forms.py:375 +#: .\cookbook\forms.py:376 msgid "" "An email address is not required but if present the invite link will be sent " "to the user." @@ -263,15 +263,15 @@ msgstr "" "Non è obbligatorio specificare l'indirizzo email, ma se presente verrà " "utilizzato per mandare all'utente un link di invito." -#: .\cookbook\forms.py:390 +#: .\cookbook\forms.py:391 msgid "Name already taken." msgstr "Nome già in uso." -#: .\cookbook\forms.py:401 +#: .\cookbook\forms.py:402 msgid "Accept Terms and Privacy" msgstr "Accetta i Termini d'uso e Privacy" -#: .\cookbook\forms.py:433 +#: .\cookbook\forms.py:434 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." @@ -280,7 +280,7 @@ msgstr "" "trigrammi (ad esempio, valori bassi significano che vengono ignorati più " "errori di battitura)." -#: .\cookbook\forms.py:443 +#: .\cookbook\forms.py:444 msgid "" "Select type method of search. Click here for " "full description of choices." @@ -288,7 +288,7 @@ msgstr "" "Seleziona il metodo di ricerca. Clicca qui " "per avere maggiori informazioni." -#: .\cookbook\forms.py:444 +#: .\cookbook\forms.py:445 msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." @@ -296,7 +296,7 @@ msgstr "" "Usa la corrispondenza vaga per unità, parole chiave e ingredienti durante la " "modifica e l'importazione di ricette." -#: .\cookbook\forms.py:446 +#: .\cookbook\forms.py:447 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" @@ -304,15 +304,15 @@ msgstr "" "Campi da cercare ignorando gli accenti. A seconda alla lingua utilizzata, " "questa opzione può migliorare o peggiorare la ricerca" -#: .\cookbook\forms.py:448 +#: .\cookbook\forms.py:449 msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" msgstr "" -"Campi da cercare con corrispondenza parziale. (ad esempio, cercando \"Torta" -"\" verranno mostrati \"torta\", \"tortino\" e \"contorta\")" +"Campi da cercare con corrispondenza parziale. (ad esempio, cercando 'Torta' " +"verranno mostrati 'torta', 'tortino' e 'contorta')" -#: .\cookbook\forms.py:450 +#: .\cookbook\forms.py:451 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" @@ -320,16 +320,16 @@ msgstr "" "Campi da cercare all'inizio di parole corrispondenti (es. cercando per 'ins' " "mostrerà 'insalata' e 'insaccati')" -#: .\cookbook\forms.py:452 +#: .\cookbook\forms.py:453 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 "" "Campi in cui usare la ricerca 'vaga'. (ad esempio cercando per 'riceta' " -"verrà mostrato 'ricetta'). Nota: questa opzione non è compatibile con la " +"verrà mostrato 'ricetta'). Nota: questa opzione non è compatibile con la " "ricerca 'web' o 'raw'." -#: .\cookbook\forms.py:454 +#: .\cookbook\forms.py:455 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." @@ -337,35 +337,35 @@ msgstr "" "Campi per la ricerca full-text. Nota: i metodi di ricerca 'web', 'frase' e " "'raw' funzionano solo con i campi full-text." -#: .\cookbook\forms.py:458 +#: .\cookbook\forms.py:459 msgid "Search Method" msgstr "Metodo di ricerca" -#: .\cookbook\forms.py:459 +#: .\cookbook\forms.py:460 msgid "Fuzzy Lookups" msgstr "Ricerche vaghe" -#: .\cookbook\forms.py:460 +#: .\cookbook\forms.py:461 msgid "Ignore Accent" msgstr "Ignora accento" -#: .\cookbook\forms.py:461 +#: .\cookbook\forms.py:462 msgid "Partial Match" msgstr "Corrispondenza parziale" -#: .\cookbook\forms.py:462 +#: .\cookbook\forms.py:463 msgid "Starts With" msgstr "Inizia con" -#: .\cookbook\forms.py:463 +#: .\cookbook\forms.py:464 msgid "Fuzzy Search" msgstr "Ricerca vaga" -#: .\cookbook\forms.py:464 +#: .\cookbook\forms.py:465 msgid "Full Text" msgstr "Full Text" -#: .\cookbook\forms.py:489 +#: .\cookbook\forms.py:490 msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." @@ -373,7 +373,7 @@ msgstr "" "Gli utenti potranno vedere tutti gli elementi che aggiungi alla tua lista " "della spesa. Devono aggiungerti per vedere gli elementi nella loro lista." -#: .\cookbook\forms.py:495 +#: .\cookbook\forms.py:496 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." @@ -381,7 +381,7 @@ msgstr "" "Quando si aggiunge un piano alimentare alla lista della spesa (manualmente o " "automaticamente), includi tutte le ricette correlate." -#: .\cookbook\forms.py:496 +#: .\cookbook\forms.py:497 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." @@ -389,97 +389,97 @@ msgstr "" "Quando si aggiunge un piano alimentare alla lista della spesa (manualmente o " "automaticamente), escludi gli ingredienti già disponibili." -#: .\cookbook\forms.py:497 +#: .\cookbook\forms.py:498 msgid "Default number of hours to delay a shopping list entry." msgstr "" "Il numero predefinito di ore per ritardare l'inserimento di una lista della " "spesa." -#: .\cookbook\forms.py:498 +#: .\cookbook\forms.py:499 msgid "Filter shopping list to only include supermarket categories." msgstr "" "Filtra la lista della spesa per includere solo categorie dei supermercati." -#: .\cookbook\forms.py:499 +#: .\cookbook\forms.py:500 msgid "Days of recent shopping list entries to display." msgstr "Giorni di visualizzazione di voci recenti della lista della spesa." -#: .\cookbook\forms.py:500 +#: .\cookbook\forms.py:501 msgid "Mark food 'On Hand' when checked off shopping list." msgstr "" "Contrassegna gli alimenti come 'Disponibili' quando spuntati dalla lista " "della spesa." -#: .\cookbook\forms.py:501 +#: .\cookbook\forms.py:502 msgid "Delimiter to use for CSV exports." msgstr "Delimitatore usato per le esportazioni CSV." -#: .\cookbook\forms.py:502 +#: .\cookbook\forms.py:503 msgid "Prefix to add when copying list to the clipboard." msgstr "Prefisso da aggiungere quando si copia una lista negli appunti." -#: .\cookbook\forms.py:506 +#: .\cookbook\forms.py:507 msgid "Share Shopping List" msgstr "Condividi lista della spesa" -#: .\cookbook\forms.py:507 +#: .\cookbook\forms.py:508 msgid "Autosync" msgstr "Sincronizzazione automatica" -#: .\cookbook\forms.py:508 +#: .\cookbook\forms.py:509 msgid "Auto Add Meal Plan" msgstr "Aggiungi automaticamente al piano alimentare" -#: .\cookbook\forms.py:509 +#: .\cookbook\forms.py:510 msgid "Exclude On Hand" msgstr "Escludi Disponibile" -#: .\cookbook\forms.py:510 +#: .\cookbook\forms.py:511 msgid "Include Related" msgstr "Includi correlati" -#: .\cookbook\forms.py:511 +#: .\cookbook\forms.py:512 msgid "Default Delay Hours" msgstr "Ore di ritardo predefinite" -#: .\cookbook\forms.py:512 +#: .\cookbook\forms.py:513 msgid "Filter to Supermarket" msgstr "Filtra per supermercato" -#: .\cookbook\forms.py:513 +#: .\cookbook\forms.py:514 msgid "Recent Days" msgstr "Giorni recenti" -#: .\cookbook\forms.py:514 +#: .\cookbook\forms.py:515 msgid "CSV Delimiter" msgstr "Delimitatore CSV" -#: .\cookbook\forms.py:515 +#: .\cookbook\forms.py:516 msgid "List Prefix" msgstr "Prefisso lista" -#: .\cookbook\forms.py:516 +#: .\cookbook\forms.py:517 msgid "Auto On Hand" msgstr "Disponibilità automatica" -#: .\cookbook\forms.py:526 +#: .\cookbook\forms.py:527 msgid "Reset Food Inheritance" msgstr "Ripristina Eredità Alimenti" -#: .\cookbook\forms.py:527 +#: .\cookbook\forms.py:528 msgid "Reset all food to inherit the fields configured." msgstr "Ripristina tutti gli alimenti per ereditare i campi configurati." -#: .\cookbook\forms.py:539 +#: .\cookbook\forms.py:540 msgid "Fields on food that should be inherited by default." msgstr "" "Campi su alimenti che devono essere ereditati per impostazione predefinita." -#: .\cookbook\forms.py:540 +#: .\cookbook\forms.py:541 msgid "Show recipe counts on search filters" msgstr "Mostra il conteggio delle ricette nei filtri di ricerca" -#: .\cookbook\forms.py:541 +#: .\cookbook\forms.py:542 msgid "Use the plural form for units and food inside this space." msgstr "" "Usare la forma plurale per le unità e gli alimenti all'interno di questo " @@ -494,7 +494,7 @@ msgstr "" "riprova." #: .\cookbook\helper\permission_helper.py:164 -#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:114 +#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117 msgid "You are not logged in and therefore cannot view this page!" msgstr "Non sei loggato e quindi non puoi visualizzare questa pagina!" @@ -507,7 +507,7 @@ msgstr "Non sei loggato e quindi non puoi visualizzare questa pagina!" #: .\cookbook\helper\permission_helper.py:305 #: .\cookbook\helper\permission_helper.py:321 #: .\cookbook\helper\permission_helper.py:342 .\cookbook\views\data.py:36 -#: .\cookbook\views\views.py:125 .\cookbook\views\views.py:132 +#: .\cookbook\views\views.py:128 .\cookbook\views\views.py:135 msgid "You do not have the required permissions to view this page!" msgstr "Non hai i permessi necessari per visualizzare questa pagina!" @@ -526,11 +526,39 @@ msgstr "Hai raggiunto il numero massimo di ricette nella tua istanza." msgid "You have more users than allowed in your space." msgstr "Hai più utenti di quanti permessi nella tua istanza." -#: .\cookbook\helper\recipe_search.py:570 +#: .\cookbook\helper\recipe_search.py:630 msgid "One of queryset or hash_key must be provided" msgstr "Uno tra queryset o has_key deve essere fornito" -#: .\cookbook\helper\shopping_helper.py:152 +#: .\cookbook\helper\recipe_url_import.py:266 +msgid "reverse rotation" +msgstr "rotazione inversa" + +#: .\cookbook\helper\recipe_url_import.py:267 +msgid "careful rotation" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:268 +msgid "knead" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:269 +msgid "thicken" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:270 +msgid "warm up" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:271 +msgid "ferment" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:272 +msgid "sous-vide" +msgstr "" + +#: .\cookbook\helper\shopping_helper.py:157 msgid "You must supply a servings size" msgstr "Devi fornire le dimensione delle porzioni" @@ -548,7 +576,7 @@ msgstr "Preferito" msgid "I made this" msgstr "L'ho preparato" -#: .\cookbook\integration\integration.py:223 +#: .\cookbook\integration\integration.py:218 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" @@ -556,7 +584,7 @@ msgstr "" "La procedura di import necessita di un file .zip. Hai scelto il tipo di " "importazione corretta per i tuoi dati?" -#: .\cookbook\integration\integration.py:226 +#: .\cookbook\integration\integration.py:221 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." @@ -564,24 +592,28 @@ msgstr "" "Un errore imprevisto si è verificato durante l'importazione. Assicurati di " "aver caricato un file valido." -#: .\cookbook\integration\integration.py:231 +#: .\cookbook\integration\integration.py:226 msgid "The following recipes were ignored because they already existed:" msgstr "Le seguenti ricette sono state ignorate perché già esistenti:" -#: .\cookbook\integration\integration.py:235 +#: .\cookbook\integration\integration.py:230 #, python-format msgid "Imported %s recipes." msgstr "Importate %s ricette." -#: .\cookbook\integration\paprika.py:46 +#: .\cookbook\integration\openeats.py:26 +msgid "Recipe source:" +msgstr "Fonte ricetta:" + +#: .\cookbook\integration\paprika.py:49 msgid "Notes" msgstr "Note" -#: .\cookbook\integration\paprika.py:49 +#: .\cookbook\integration\paprika.py:52 msgid "Nutritional Information" msgstr "Informazioni nutrizionali" -#: .\cookbook\integration\paprika.py:53 +#: .\cookbook\integration\paprika.py:56 msgid "Source" msgstr "Fonte" @@ -652,72 +684,72 @@ msgstr "" "Archiviazione massima in MB. 0 per illimitata, -1 per disabilitare il " "caricamento dei file." -#: .\cookbook\models.py:364 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:365 .\cookbook\templates\search.html:7 #: .\cookbook\templates\settings.html:18 #: .\cookbook\templates\space_manage.html:7 msgid "Search" msgstr "Cerca" -#: .\cookbook\models.py:365 .\cookbook\templates\base.html:110 +#: .\cookbook\models.py:366 .\cookbook\templates\base.html:110 #: .\cookbook\templates\meal_plan.html:7 .\cookbook\views\delete.py:178 #: .\cookbook\views\edit.py:211 .\cookbook\views\new.py:179 msgid "Meal-Plan" msgstr "Piano alimentare" -#: .\cookbook\models.py:366 .\cookbook\templates\base.html:118 +#: .\cookbook\models.py:367 .\cookbook\templates\base.html:118 msgid "Books" msgstr "Libri" -#: .\cookbook\models.py:579 +#: .\cookbook\models.py:580 msgid " is part of a recipe step and cannot be deleted" msgstr " è parte dello step di una ricetta e non può essere eliminato" -#: .\cookbook\models.py:1180 .\cookbook\templates\search_info.html:28 +#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:28 msgid "Simple" msgstr "Semplice" -#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:33 +#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:33 msgid "Phrase" msgstr "Frase" -#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:38 +#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:38 msgid "Web" msgstr "Web" -#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:47 +#: .\cookbook\models.py:1184 .\cookbook\templates\search_info.html:47 msgid "Raw" msgstr "Raw" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Food Alias" msgstr "Alias Alimento" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Unit Alias" msgstr "Alias Unità" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Keyword Alias" msgstr "Alias Parola Chiave" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Description Replace" msgstr "Sostituisci Descrizione" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Instruction Replace" msgstr "Sostituisci Istruzione" -#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36 +#: .\cookbook\models.py:1258 .\cookbook\views\delete.py:36 #: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48 msgid "Recipe" msgstr "Ricetta" -#: .\cookbook\models.py:1258 +#: .\cookbook\models.py:1259 msgid "Food" msgstr "Alimento" -#: .\cookbook\models.py:1259 .\cookbook\templates\base.html:141 +#: .\cookbook\models.py:1260 .\cookbook\templates\base.html:141 msgid "Keyword" msgstr "Parola chiave" @@ -733,49 +765,49 @@ msgstr "Hai raggiungo il limite per il caricamento dei file." msgid "Cannot modify Space owner permission." msgstr "Impossibile modificare i permessi del proprietario dell'istanza." -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "Hello" msgstr "Ciao" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "You have been invited by " msgstr "Sei stato invitato da " -#: .\cookbook\serializer.py:1086 +#: .\cookbook\serializer.py:1094 msgid " to join their Tandoor Recipes space " msgstr " per entrare nella sua istanza di Tandoor Recipes " -#: .\cookbook\serializer.py:1087 +#: .\cookbook\serializer.py:1095 msgid "Click the following link to activate your account: " msgstr "Clicca il link qui di seguito per attivare il tuo account: " -#: .\cookbook\serializer.py:1088 +#: .\cookbook\serializer.py:1096 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" "Se il link non funziona, usa il seguente codice per entrare manualmente " "nell'istanza: " -#: .\cookbook\serializer.py:1089 +#: .\cookbook\serializer.py:1097 msgid "The invitation is valid until " msgstr "L'invito è valido fino al " -#: .\cookbook\serializer.py:1090 +#: .\cookbook\serializer.py:1098 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" "Tandoor Recipes è un gestore di ricette Open Source. Dagli una occhiata su " "GitHub " -#: .\cookbook\serializer.py:1093 +#: .\cookbook\serializer.py:1101 msgid "Tandoor Recipes Invite" msgstr "Invito per Tandoor Recipes" -#: .\cookbook\serializer.py:1234 +#: .\cookbook\serializer.py:1242 msgid "Existing shopping list to update" msgstr "Lista della spesa esistente da aggiornare" -#: .\cookbook\serializer.py:1236 +#: .\cookbook\serializer.py:1244 msgid "" "List of ingredient IDs from the recipe to add, if not provided all " "ingredients will be added." @@ -783,22 +815,22 @@ msgstr "" "Lista degli ID degli ingredienti dalla ricetta da aggiungere, se non è " "fornita saranno aggiunti tutti gli ingredienti." -#: .\cookbook\serializer.py:1238 +#: .\cookbook\serializer.py:1246 msgid "" "Providing a list_recipe ID and servings of 0 will delete that shopping list." msgstr "" "Fornendo un ID list_recipe e impostando le porzioni a 0, la lista della " "spesa verrà eliminata." -#: .\cookbook\serializer.py:1247 +#: .\cookbook\serializer.py:1255 msgid "Amount of food to add to the shopping list" msgstr "Quantità di alimenti da aggiungere alla lista della spesa" -#: .\cookbook\serializer.py:1249 +#: .\cookbook\serializer.py:1257 msgid "ID of unit to use for the shopping list" msgstr "ID dell'unità da usare per la lista della spesa" -#: .\cookbook\serializer.py:1251 +#: .\cookbook\serializer.py:1259 msgid "When set to true will delete all food from active shopping lists." msgstr "" "Quando impostato su vero, eliminerà tutti gli alimenti dalle liste della " @@ -1042,7 +1074,7 @@ msgid "" msgstr "" "Il link per il reset della password non è corretto, probabilmente perché è " "stato già utilizzato.\n" -" Puoi richiedere un nuovo reset della password." #: .\cookbook\templates\account\password_reset_from_key.html:33 @@ -1648,11 +1680,11 @@ msgstr "Indietro" msgid "Profile" msgstr "Profilo" -#: .\cookbook\templates\recipe_view.html:26 +#: .\cookbook\templates\recipe_view.html:41 msgid "by" msgstr "di" -#: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:144 +#: .\cookbook\templates\recipe_view.html:59 .\cookbook\views\delete.py:144 #: .\cookbook\views\edit.py:171 msgid "Comment" msgstr "Commento" @@ -1707,15 +1739,15 @@ msgid "" msgstr "" " \n" " Le ricerche full-text cercano di normalizzare le parole fornite " -"per abbinare varianti comuni. Ad esempio, \"separato\", \"separando\", " -"\"separa\" verranno tutti normalizzati in \"separare\".\n" +"per abbinare varianti comuni. Ad esempio, 'separato', 'separando', 'separa' " +"verranno tutti normalizzati in 'separare'.\n" " Ci sono diversi metodi disponibili, descritti di seguito, che " "controlleranno il comportamento della ricerca in caso di ricerca con più " "parole.\n" " I dettagli tecnici completi su come questi funzionano possono " "essere visualizzati sul sito web di " -"Postgresql.\n" +"textsearch-controls.html#TEXTSEARCH-PARSING-QUERIES>sito web di Postgresql.\n" " " #: .\cookbook\templates\search_info.html:29 @@ -1893,10 +1925,12 @@ msgid "" "Allows fine control over search results but might not return results if too " "many spelling mistakes are made." msgstr "" +"Consente un controllo preciso sui risultati della ricerca, ma potrebbe non " +"mostrare risultati se vengono commessi troppi errori." #: .\cookbook\templates\settings.html:44 msgid "Perfect for large Databases" -msgstr "Perfetto per database grandi" +msgstr "Ideale per database grandi" #: .\cookbook\templates\setup.html:6 .\cookbook\templates\system.html:5 msgid "Cookbook Setup" @@ -1918,10 +1952,8 @@ msgstr "Crea super utente" #: .\cookbook\templates\socialaccount\authentication_error.html:7 #: .\cookbook\templates\socialaccount\authentication_error.html:23 -#, fuzzy -#| msgid "Social Login" msgid "Social Network Login Failure" -msgstr "Login con social network" +msgstr "Errore di login con Social Network" #: .\cookbook\templates\socialaccount\authentication_error.html:25 msgid "" @@ -2210,266 +2242,266 @@ msgstr "" msgid "URL Import" msgstr "Importa da URL" -#: .\cookbook\views\api.py:109 .\cookbook\views\api.py:201 +#: .\cookbook\views\api.py:110 .\cookbook\views\api.py:202 msgid "Parameter updated_at incorrectly formatted" msgstr "Il parametro updated_at non è formattato correttamente" -#: .\cookbook\views\api.py:221 .\cookbook\views\api.py:324 +#: .\cookbook\views\api.py:222 .\cookbook\views\api.py:325 #, python-brace-format msgid "No {self.basename} with id {pk} exists" msgstr "Non esiste nessun {self.basename} con id {pk}" -#: .\cookbook\views\api.py:225 +#: .\cookbook\views\api.py:226 msgid "Cannot merge with the same object!" msgstr "Non è possibile unirlo con lo stesso oggetto!" -#: .\cookbook\views\api.py:232 +#: .\cookbook\views\api.py:233 #, python-brace-format msgid "No {self.basename} with id {target} exists" msgstr "Non esiste nessun {self.basename} con id {target}" -#: .\cookbook\views\api.py:237 +#: .\cookbook\views\api.py:238 msgid "Cannot merge with child object!" msgstr "Non è possibile unirlo con un oggetto secondario!" -#: .\cookbook\views\api.py:270 +#: .\cookbook\views\api.py:271 #, python-brace-format msgid "{source.name} was merged successfully with {target.name}" msgstr "{source.name} è stato unito con successo a {target.name}" -#: .\cookbook\views\api.py:275 +#: .\cookbook\views\api.py:276 #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" msgstr "" "Si è verificato un errore durante l'unione di {source.name} con {target.name}" -#: .\cookbook\views\api.py:333 +#: .\cookbook\views\api.py:334 #, python-brace-format msgid "{child.name} was moved successfully to the root." msgstr "{child.name} è stato spostato con successo alla radice." -#: .\cookbook\views\api.py:336 .\cookbook\views\api.py:354 +#: .\cookbook\views\api.py:337 .\cookbook\views\api.py:355 msgid "An error occurred attempting to move " msgstr "Si è verificato un errore durante lo spostamento " -#: .\cookbook\views\api.py:339 +#: .\cookbook\views\api.py:340 msgid "Cannot move an object to itself!" msgstr "Non è possibile muovere un oggetto a sé stesso!" -#: .\cookbook\views\api.py:345 +#: .\cookbook\views\api.py:346 #, python-brace-format msgid "No {self.basename} with id {parent} exists" msgstr "Non esiste nessun {self.basename} con id {parent}" -#: .\cookbook\views\api.py:351 +#: .\cookbook\views\api.py:352 #, python-brace-format msgid "{child.name} was moved successfully to parent {parent.name}" msgstr "{child.name} è stato spostato con successo al primario {parent.name}" -#: .\cookbook\views\api.py:547 +#: .\cookbook\views\api.py:553 #, python-brace-format msgid "{obj.name} was removed from the shopping list." msgstr "{obj.name} è stato rimosso dalla lista della spesa." -#: .\cookbook\views\api.py:552 .\cookbook\views\api.py:882 -#: .\cookbook\views\api.py:895 +#: .\cookbook\views\api.py:558 .\cookbook\views\api.py:888 +#: .\cookbook\views\api.py:901 #, python-brace-format msgid "{obj.name} was added to the shopping list." msgstr "{obj.name} è stato aggiunto alla lista della spesa." -#: .\cookbook\views\api.py:679 +#: .\cookbook\views\api.py:685 msgid "ID of recipe a step is part of. For multiple repeat parameter." msgstr "" "ID di una ricetta di cui uno step ne fa parte. Usato per parametri di " "ripetizione multipla." -#: .\cookbook\views\api.py:681 +#: .\cookbook\views\api.py:687 msgid "Query string matched (fuzzy) against object name." msgstr "Stringa di ricerca abbinata (vaga) al nome dell'oggetto." -#: .\cookbook\views\api.py:725 +#: .\cookbook\views\api.py:731 msgid "" "Query string matched (fuzzy) against recipe name. In the future also " "fulltext search." msgstr "" -#: .\cookbook\views\api.py:727 +#: .\cookbook\views\api.py:733 msgid "" "ID of keyword a recipe should have. For multiple repeat parameter. " "Equivalent to keywords_or" msgstr "" -#: .\cookbook\views\api.py:730 +#: .\cookbook\views\api.py:736 msgid "" "Keyword IDs, repeat for multiple. Return recipes with any of the keywords" msgstr "" -#: .\cookbook\views\api.py:733 +#: .\cookbook\views\api.py:739 msgid "" "Keyword IDs, repeat for multiple. Return recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:736 +#: .\cookbook\views\api.py:742 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords." msgstr "" -#: .\cookbook\views\api.py:739 +#: .\cookbook\views\api.py:745 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:741 +#: .\cookbook\views\api.py:747 msgid "ID of food a recipe should have. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:744 +#: .\cookbook\views\api.py:750 msgid "Food IDs, repeat for multiple. Return recipes with any of the foods" msgstr "" -#: .\cookbook\views\api.py:746 +#: .\cookbook\views\api.py:752 msgid "Food IDs, repeat for multiple. Return recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:748 +#: .\cookbook\views\api.py:754 msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods." msgstr "" -#: .\cookbook\views\api.py:750 +#: .\cookbook\views\api.py:756 msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:751 +#: .\cookbook\views\api.py:757 msgid "ID of unit a recipe should have." msgstr "" -#: .\cookbook\views\api.py:753 +#: .\cookbook\views\api.py:759 msgid "" "Rating a recipe should have or greater. [0 - 5] Negative value filters " "rating less than." msgstr "" -#: .\cookbook\views\api.py:754 +#: .\cookbook\views\api.py:760 msgid "ID of book a recipe should be in. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:756 +#: .\cookbook\views\api.py:762 msgid "Book IDs, repeat for multiple. Return recipes with any of the books" msgstr "" -#: .\cookbook\views\api.py:758 +#: .\cookbook\views\api.py:764 msgid "Book IDs, repeat for multiple. Return recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:760 +#: .\cookbook\views\api.py:766 msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books." msgstr "" -#: .\cookbook\views\api.py:762 +#: .\cookbook\views\api.py:768 msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:764 +#: .\cookbook\views\api.py:770 msgid "If only internal recipes should be returned. [true/false]" msgstr "" -#: .\cookbook\views\api.py:766 +#: .\cookbook\views\api.py:772 msgid "Returns the results in randomized order. [true/false]" msgstr "" -#: .\cookbook\views\api.py:768 +#: .\cookbook\views\api.py:774 msgid "Returns new results first in search results. [true/false]" msgstr "" -#: .\cookbook\views\api.py:770 +#: .\cookbook\views\api.py:776 msgid "" "Filter recipes cooked X times or more. Negative values returns cooked less " "than X times" msgstr "" -#: .\cookbook\views\api.py:772 +#: .\cookbook\views\api.py:778 msgid "" "Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:774 +#: .\cookbook\views\api.py:780 msgid "" "Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:776 +#: .\cookbook\views\api.py:782 msgid "" "Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:778 +#: .\cookbook\views\api.py:784 msgid "" "Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:780 +#: .\cookbook\views\api.py:786 msgid "Filter recipes that can be made with OnHand food. [true/false]" msgstr "" "Filtra le ricette che possono essere preparate con alimenti già disponibili. " "[true/false]" -#: .\cookbook\views\api.py:940 +#: .\cookbook\views\api.py:946 msgid "" "Returns the shopping list entry with a primary key of id. Multiple values " "allowed." msgstr "" -#: .\cookbook\views\api.py:945 +#: .\cookbook\views\api.py:951 msgid "" "Filter shopping list entries on checked. [true, false, both, recent]
- recent includes unchecked items and recently completed items." msgstr "" -#: .\cookbook\views\api.py:948 +#: .\cookbook\views\api.py:954 msgid "Returns the shopping list entries sorted by supermarket category order." msgstr "" "Restituisce le voci della lista della spesa ordinate per categoria di " "supermercato." -#: .\cookbook\views\api.py:1160 +#: .\cookbook\views\api.py:1166 msgid "Nothing to do." msgstr "Nulla da fare." -#: .\cookbook\views\api.py:1180 +#: .\cookbook\views\api.py:1198 msgid "Invalid Url" msgstr "URL non valido" -#: .\cookbook\views\api.py:1187 +#: .\cookbook\views\api.py:1205 msgid "Connection Refused." msgstr "Connessione rifiutata." -#: .\cookbook\views\api.py:1192 +#: .\cookbook\views\api.py:1210 msgid "Bad URL Schema." msgstr "Schema URL invalido." -#: .\cookbook\views\api.py:1215 +#: .\cookbook\views\api.py:1233 msgid "No usable data could be found." msgstr "Nessuna informazione utilizzabile è stata trovata." -#: .\cookbook\views\api.py:1308 .\cookbook\views\import_export.py:114 +#: .\cookbook\views\api.py:1326 .\cookbook\views\import_export.py:117 msgid "Importing is not implemented for this provider" msgstr "Questo provider non permette l'importazione" -#: .\cookbook\views\api.py:1352 .\cookbook\views\data.py:31 +#: .\cookbook\views\api.py:1372 .\cookbook\views\data.py:31 #: .\cookbook\views\edit.py:120 .\cookbook\views\new.py:90 msgid "This feature is not yet available in the hosted version of tandoor!" msgstr "" "Questa funzione non è ancora disponibile nella versione hostata di Tandor!" -#: .\cookbook\views\api.py:1374 +#: .\cookbook\views\api.py:1394 msgid "Sync successful!" msgstr "Sincronizzazione completata con successo!" -#: .\cookbook\views\api.py:1379 +#: .\cookbook\views\api.py:1399 msgid "Error synchronizing with Storage" msgstr "Errore di sincronizzazione con questo backend" @@ -2535,7 +2567,7 @@ msgstr "Modifiche salvate!" msgid "Error saving changes!" msgstr "Si è verificato un errore durante il salvataggio delle modifiche!" -#: .\cookbook\views\import_export.py:101 +#: .\cookbook\views\import_export.py:104 msgid "" "The PDF Exporter is not enabled on this instance as it is still in an " "experimental state." @@ -2583,7 +2615,12 @@ msgstr "La nuova ricetta è stata importata!" msgid "There was an error importing this recipe!" msgstr "Si è verificato un errore durante l'importazione di questa ricetta!" -#: .\cookbook\views\views.py:86 +#: .\cookbook\views\views.py:73 .\cookbook\views\views.py:191 +#: .\cookbook\views\views.py:213 .\cookbook\views\views.py:399 +msgid "This feature is not available in the demo version!" +msgstr "Questa funzione non è disponibile nella versione demo!" + +#: .\cookbook\views\views.py:89 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." @@ -2591,24 +2628,19 @@ msgstr "" "Hai creato la tua istanza personale per le ricette. Inizia aggiungendo " "qualche ricetta o invita altre persone a unirsi a te." -#: .\cookbook\views\views.py:140 +#: .\cookbook\views\views.py:143 msgid "You do not have the required permissions to perform this action!" msgstr "Non hai i permessi necessari per completare questa operazione!" -#: .\cookbook\views\views.py:151 +#: .\cookbook\views\views.py:154 msgid "Comment saved!" msgstr "Commento salvato!" -#: .\cookbook\views\views.py:188 .\cookbook\views\views.py:210 -#: .\cookbook\views\views.py:396 -msgid "This feature is not available in the demo version!" -msgstr "Questa funzione non è disponibile nella versione demo!" - -#: .\cookbook\views\views.py:250 +#: .\cookbook\views\views.py:253 msgid "You must select at least one field to search!" msgstr "Devi selezionare almeno un campo da cercare!" -#: .\cookbook\views\views.py:255 +#: .\cookbook\views\views.py:258 msgid "" "To use this search method you must select at least one full text search " "field!" @@ -2616,11 +2648,11 @@ msgstr "" "Per utilizzare questo metodo di ricerca devi selezionare almeno un campo di " "ricerca full text!" -#: .\cookbook\views\views.py:259 +#: .\cookbook\views\views.py:262 msgid "Fuzzy search is not compatible with this search method!" msgstr "La ricerca vaga non è compatibile con questo metodo di ricerca!" -#: .\cookbook\views\views.py:335 +#: .\cookbook\views\views.py:338 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2630,27 +2662,27 @@ msgstr "" "utente! Se hai dimenticato le credenziali del tuo super utente controlla la " "documentazione di Django per resettare le password." -#: .\cookbook\views\views.py:342 +#: .\cookbook\views\views.py:345 msgid "Passwords dont match!" msgstr "Le password non combaciano!" -#: .\cookbook\views\views.py:350 +#: .\cookbook\views\views.py:353 msgid "User has been created, please login!" msgstr "L'utente è stato creato e ora può essere usato per il login!" -#: .\cookbook\views\views.py:366 +#: .\cookbook\views\views.py:369 msgid "Malformed Invite Link supplied!" msgstr "È stato fornito un link di invito non valido!" -#: .\cookbook\views\views.py:383 +#: .\cookbook\views\views.py:386 msgid "Successfully joined space." msgstr "Sei entrato a far parte di questa istanza." -#: .\cookbook\views\views.py:389 +#: .\cookbook\views\views.py:392 msgid "Invite Link not valid or already used!" msgstr "Il link di invito non è valido o è stato già usato!" -#: .\cookbook\views\views.py:406 +#: .\cookbook\views\views.py:409 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." @@ -2658,7 +2690,7 @@ msgstr "" "La segnalazione dei link di condivisione non è abilitata per questa istanza. " "Notifica l'amministratore per segnalare i problemi." -#: .\cookbook\views\views.py:412 +#: .\cookbook\views\views.py:415 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/lv/LC_MESSAGES/django.po b/cookbook/locale/lv/LC_MESSAGES/django.po index aab3f14f..d96bc724 100644 --- a/cookbook/locale/lv/LC_MESSAGES/django.po +++ b/cookbook/locale/lv/LC_MESSAGES/django.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: 2023-01-08 17:55+0000\n" "Last-Translator: Joachim Weber \n" "Language-Team: Latvian /remote." "php/webdav/ is added automatically)" @@ -217,33 +217,33 @@ msgstr "" "Atstājiet tukšu Dropbox un ievadiet tikai Nextcloud bāzes URL ( /" "remote.php/webdav/ tiek pievienots automātiski)" -#: .\cookbook\forms.py:264 .\cookbook\views\edit.py:157 +#: .\cookbook\forms.py:265 .\cookbook\views\edit.py:157 msgid "Storage" msgstr "Krātuve" -#: .\cookbook\forms.py:266 +#: .\cookbook\forms.py:267 msgid "Active" msgstr "" -#: .\cookbook\forms.py:272 +#: .\cookbook\forms.py:273 msgid "Search String" msgstr "Meklēšanas virkne" -#: .\cookbook\forms.py:299 +#: .\cookbook\forms.py:300 msgid "File ID" msgstr "Faila ID" -#: .\cookbook\forms.py:321 +#: .\cookbook\forms.py:322 msgid "You must provide at least a recipe or a title." msgstr "Jums jānorāda vismaz recepte vai nosaukums." -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:335 msgid "You can list default users to share recipes with in the settings." msgstr "" "Iestatījumos varat uzskaitīt noklusējuma lietotājus, ar kuriem koplietot " "receptes." -#: .\cookbook\forms.py:335 +#: .\cookbook\forms.py:336 msgid "" "You can use markdown to format this field. See the docs here" @@ -251,219 +251,219 @@ msgstr "" "Lai formatētu šo lauku, varat izmantot Markdown. Skatiet dokumentus šeit " -#: .\cookbook\forms.py:361 +#: .\cookbook\forms.py:362 msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:368 msgid "Email address already taken!" msgstr "" -#: .\cookbook\forms.py:375 +#: .\cookbook\forms.py:376 msgid "" "An email address is not required but if present the invite link will be sent " "to the user." msgstr "" -#: .\cookbook\forms.py:390 +#: .\cookbook\forms.py:391 msgid "Name already taken." msgstr "" -#: .\cookbook\forms.py:401 +#: .\cookbook\forms.py:402 msgid "Accept Terms and Privacy" msgstr "" -#: .\cookbook\forms.py:433 +#: .\cookbook\forms.py:434 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." msgstr "" -#: .\cookbook\forms.py:443 +#: .\cookbook\forms.py:444 msgid "" "Select type method of search. Click here for " "full description of choices." msgstr "" -#: .\cookbook\forms.py:444 +#: .\cookbook\forms.py:445 msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." msgstr "" -#: .\cookbook\forms.py:446 +#: .\cookbook\forms.py:447 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" msgstr "" -#: .\cookbook\forms.py:448 +#: .\cookbook\forms.py:449 msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" msgstr "" -#: .\cookbook\forms.py:450 +#: .\cookbook\forms.py:451 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" msgstr "" -#: .\cookbook\forms.py:452 +#: .\cookbook\forms.py:453 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 "" -#: .\cookbook\forms.py:454 +#: .\cookbook\forms.py:455 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." msgstr "" -#: .\cookbook\forms.py:458 +#: .\cookbook\forms.py:459 #, fuzzy #| msgid "Search" msgid "Search Method" msgstr "Meklēt" -#: .\cookbook\forms.py:459 +#: .\cookbook\forms.py:460 msgid "Fuzzy Lookups" msgstr "" -#: .\cookbook\forms.py:460 +#: .\cookbook\forms.py:461 msgid "Ignore Accent" msgstr "" -#: .\cookbook\forms.py:461 +#: .\cookbook\forms.py:462 msgid "Partial Match" msgstr "" -#: .\cookbook\forms.py:462 +#: .\cookbook\forms.py:463 msgid "Starts With" msgstr "" -#: .\cookbook\forms.py:463 +#: .\cookbook\forms.py:464 #, fuzzy #| msgid "Search" msgid "Fuzzy Search" msgstr "Meklēt" -#: .\cookbook\forms.py:464 +#: .\cookbook\forms.py:465 #, fuzzy #| msgid "Text" msgid "Full Text" msgstr "Teskts" -#: .\cookbook\forms.py:489 +#: .\cookbook\forms.py:490 msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." msgstr "" -#: .\cookbook\forms.py:495 +#: .\cookbook\forms.py:496 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." msgstr "" -#: .\cookbook\forms.py:496 +#: .\cookbook\forms.py:497 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." msgstr "" -#: .\cookbook\forms.py:497 +#: .\cookbook\forms.py:498 msgid "Default number of hours to delay a shopping list entry." msgstr "" -#: .\cookbook\forms.py:498 +#: .\cookbook\forms.py:499 msgid "Filter shopping list to only include supermarket categories." msgstr "" -#: .\cookbook\forms.py:499 +#: .\cookbook\forms.py:500 msgid "Days of recent shopping list entries to display." msgstr "" -#: .\cookbook\forms.py:500 +#: .\cookbook\forms.py:501 msgid "Mark food 'On Hand' when checked off shopping list." msgstr "" -#: .\cookbook\forms.py:501 +#: .\cookbook\forms.py:502 msgid "Delimiter to use for CSV exports." msgstr "" -#: .\cookbook\forms.py:502 +#: .\cookbook\forms.py:503 msgid "Prefix to add when copying list to the clipboard." msgstr "" -#: .\cookbook\forms.py:506 +#: .\cookbook\forms.py:507 #, fuzzy #| msgid "Shopping List" msgid "Share Shopping List" msgstr "Iepirkumu saraksts" -#: .\cookbook\forms.py:507 +#: .\cookbook\forms.py:508 msgid "Autosync" msgstr "" -#: .\cookbook\forms.py:508 +#: .\cookbook\forms.py:509 msgid "Auto Add Meal Plan" msgstr "" -#: .\cookbook\forms.py:509 +#: .\cookbook\forms.py:510 msgid "Exclude On Hand" msgstr "" -#: .\cookbook\forms.py:510 +#: .\cookbook\forms.py:511 msgid "Include Related" msgstr "" -#: .\cookbook\forms.py:511 +#: .\cookbook\forms.py:512 msgid "Default Delay Hours" msgstr "" -#: .\cookbook\forms.py:512 +#: .\cookbook\forms.py:513 msgid "Filter to Supermarket" msgstr "" -#: .\cookbook\forms.py:513 +#: .\cookbook\forms.py:514 msgid "Recent Days" msgstr "" -#: .\cookbook\forms.py:514 +#: .\cookbook\forms.py:515 msgid "CSV Delimiter" msgstr "" -#: .\cookbook\forms.py:515 +#: .\cookbook\forms.py:516 msgid "List Prefix" msgstr "Saraksta prefikss" -#: .\cookbook\forms.py:516 +#: .\cookbook\forms.py:517 msgid "Auto On Hand" msgstr "" -#: .\cookbook\forms.py:526 +#: .\cookbook\forms.py:527 msgid "Reset Food Inheritance" msgstr "" -#: .\cookbook\forms.py:527 +#: .\cookbook\forms.py:528 msgid "Reset all food to inherit the fields configured." msgstr "" -#: .\cookbook\forms.py:539 +#: .\cookbook\forms.py:540 #, fuzzy #| msgid "Food that should be replaced." msgid "Fields on food that should be inherited by default." msgstr "Ēdiens, kas būtu jāaizstāj." -#: .\cookbook\forms.py:540 +#: .\cookbook\forms.py:541 #, fuzzy #| msgid "Show recently viewed recipes on search page." msgid "Show recipe counts on search filters" msgstr "Parādīt nesen skatītās receptes meklēšanas lapā." -#: .\cookbook\forms.py:541 +#: .\cookbook\forms.py:542 msgid "Use the plural form for units and food inside this space." msgstr "" @@ -474,7 +474,7 @@ msgid "" msgstr "" #: .\cookbook\helper\permission_helper.py:164 -#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:114 +#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117 msgid "You are not logged in and therefore cannot view this page!" msgstr "Jūs neesat pieteicies un tāpēc nevarat skatīt šo lapu!" @@ -487,7 +487,7 @@ msgstr "Jūs neesat pieteicies un tāpēc nevarat skatīt šo lapu!" #: .\cookbook\helper\permission_helper.py:305 #: .\cookbook\helper\permission_helper.py:321 #: .\cookbook\helper\permission_helper.py:342 .\cookbook\views\data.py:36 -#: .\cookbook\views\views.py:125 .\cookbook\views\views.py:132 +#: .\cookbook\views\views.py:128 .\cookbook\views\views.py:135 msgid "You do not have the required permissions to view this page!" msgstr "Jums nav nepieciešamo atļauju, lai apskatītu šo lapu!" @@ -506,11 +506,41 @@ msgstr "" msgid "You have more users than allowed in your space." msgstr "" -#: .\cookbook\helper\recipe_search.py:570 +#: .\cookbook\helper\recipe_search.py:630 msgid "One of queryset or hash_key must be provided" msgstr "" -#: .\cookbook\helper\shopping_helper.py:152 +#: .\cookbook\helper\recipe_url_import.py:266 +#, fuzzy +#| msgid "System Information" +msgid "reverse rotation" +msgstr "Sistēmas informācija" + +#: .\cookbook\helper\recipe_url_import.py:267 +msgid "careful rotation" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:268 +msgid "knead" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:269 +msgid "thicken" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:270 +msgid "warm up" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:271 +msgid "ferment" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:272 +msgid "sous-vide" +msgstr "" + +#: .\cookbook\helper\shopping_helper.py:157 #, fuzzy #| msgid "You must provide at least a recipe or a title." msgid "You must supply a servings size" @@ -530,40 +560,46 @@ msgstr "" msgid "I made this" msgstr "" -#: .\cookbook\integration\integration.py:223 +#: .\cookbook\integration\integration.py:218 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:226 +#: .\cookbook\integration\integration.py:221 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" -#: .\cookbook\integration\integration.py:231 +#: .\cookbook\integration\integration.py:226 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:235 +#: .\cookbook\integration\integration.py:230 #, python-format msgid "Imported %s recipes." msgstr "Importētas %s receptes." -#: .\cookbook\integration\paprika.py:46 +#: .\cookbook\integration\openeats.py:26 +#, fuzzy +#| msgid "Recipe Home" +msgid "Recipe source:" +msgstr "Recepšu Sākums" + +#: .\cookbook\integration\paprika.py:49 #, fuzzy #| msgid "Note" msgid "Notes" msgstr "Piezīme" -#: .\cookbook\integration\paprika.py:49 +#: .\cookbook\integration\paprika.py:52 #, fuzzy #| msgid "Information" msgid "Nutritional Information" msgstr "Informācija" -#: .\cookbook\integration\paprika.py:53 +#: .\cookbook\integration\paprika.py:56 msgid "Source" msgstr "" @@ -630,82 +666,82 @@ msgid "" "upload." msgstr "" -#: .\cookbook\models.py:364 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:365 .\cookbook\templates\search.html:7 #: .\cookbook\templates\settings.html:18 #: .\cookbook\templates\space_manage.html:7 msgid "Search" msgstr "Meklēt" -#: .\cookbook\models.py:365 .\cookbook\templates\base.html:110 +#: .\cookbook\models.py:366 .\cookbook\templates\base.html:110 #: .\cookbook\templates\meal_plan.html:7 .\cookbook\views\delete.py:178 #: .\cookbook\views\edit.py:211 .\cookbook\views\new.py:179 msgid "Meal-Plan" msgstr "Maltīšu plāns" -#: .\cookbook\models.py:366 .\cookbook\templates\base.html:118 +#: .\cookbook\models.py:367 .\cookbook\templates\base.html:118 msgid "Books" msgstr "Grāmatas" -#: .\cookbook\models.py:579 +#: .\cookbook\models.py:580 msgid " is part of a recipe step and cannot be deleted" msgstr "" -#: .\cookbook\models.py:1180 .\cookbook\templates\search_info.html:28 +#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:28 msgid "Simple" msgstr "" -#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:33 +#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:33 msgid "Phrase" msgstr "" -#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:38 +#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:38 msgid "Web" msgstr "" -#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:47 +#: .\cookbook\models.py:1184 .\cookbook\templates\search_info.html:47 msgid "Raw" msgstr "" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 #, fuzzy #| msgid "Food" msgid "Food Alias" msgstr "Ēdiens" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 #, fuzzy #| msgid "Units" msgid "Unit Alias" msgstr "Vienības" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 #, fuzzy #| msgid "Keywords" msgid "Keyword Alias" msgstr "Atslēgvārdi" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Description Replace" msgstr "" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 #, fuzzy #| msgid "Instructions" msgid "Instruction Replace" msgstr "Instrukcijas" -#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36 +#: .\cookbook\models.py:1258 .\cookbook\views\delete.py:36 #: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48 msgid "Recipe" msgstr "Recepte" -#: .\cookbook\models.py:1258 +#: .\cookbook\models.py:1259 #, fuzzy #| msgid "Food" msgid "Food" msgstr "Ēdiens" -#: .\cookbook\models.py:1259 .\cookbook\templates\base.html:141 +#: .\cookbook\models.py:1260 .\cookbook\templates\base.html:141 msgid "Keyword" msgstr "Atslēgvārds" @@ -721,64 +757,64 @@ msgstr "" msgid "Cannot modify Space owner permission." msgstr "" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "Hello" msgstr "" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "You have been invited by " msgstr "" -#: .\cookbook\serializer.py:1086 +#: .\cookbook\serializer.py:1094 msgid " to join their Tandoor Recipes space " msgstr "" -#: .\cookbook\serializer.py:1087 +#: .\cookbook\serializer.py:1095 msgid "Click the following link to activate your account: " msgstr "" -#: .\cookbook\serializer.py:1088 +#: .\cookbook\serializer.py:1096 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" -#: .\cookbook\serializer.py:1089 +#: .\cookbook\serializer.py:1097 msgid "The invitation is valid until " msgstr "" -#: .\cookbook\serializer.py:1090 +#: .\cookbook\serializer.py:1098 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -#: .\cookbook\serializer.py:1093 +#: .\cookbook\serializer.py:1101 msgid "Tandoor Recipes Invite" msgstr "" -#: .\cookbook\serializer.py:1234 +#: .\cookbook\serializer.py:1242 msgid "Existing shopping list to update" msgstr "" -#: .\cookbook\serializer.py:1236 +#: .\cookbook\serializer.py:1244 msgid "" "List of ingredient IDs from the recipe to add, if not provided all " "ingredients will be added." msgstr "" -#: .\cookbook\serializer.py:1238 +#: .\cookbook\serializer.py:1246 msgid "" "Providing a list_recipe ID and servings of 0 will delete that shopping list." msgstr "" -#: .\cookbook\serializer.py:1247 +#: .\cookbook\serializer.py:1255 msgid "Amount of food to add to the shopping list" msgstr "" -#: .\cookbook\serializer.py:1249 +#: .\cookbook\serializer.py:1257 msgid "ID of unit to use for the shopping list" msgstr "" -#: .\cookbook\serializer.py:1251 +#: .\cookbook\serializer.py:1259 msgid "When set to true will delete all food from active shopping lists." msgstr "" @@ -1640,11 +1676,11 @@ msgstr "" msgid "Profile" msgstr "" -#: .\cookbook\templates\recipe_view.html:26 +#: .\cookbook\templates\recipe_view.html:41 msgid "by" msgstr "pēc" -#: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:144 +#: .\cookbook\templates\recipe_view.html:59 .\cookbook\views\delete.py:144 #: .\cookbook\views\edit.py:171 msgid "Comment" msgstr "Komentēt" @@ -2170,262 +2206,262 @@ msgstr "" msgid "URL Import" msgstr "URL importēšana" -#: .\cookbook\views\api.py:109 .\cookbook\views\api.py:201 +#: .\cookbook\views\api.py:110 .\cookbook\views\api.py:202 #, fuzzy #| msgid "Parameter filter_list incorrectly formatted" msgid "Parameter updated_at incorrectly formatted" msgstr "Parametrs filter_list ir nepareizi formatēts" -#: .\cookbook\views\api.py:221 .\cookbook\views\api.py:324 +#: .\cookbook\views\api.py:222 .\cookbook\views\api.py:325 #, python-brace-format msgid "No {self.basename} with id {pk} exists" msgstr "" -#: .\cookbook\views\api.py:225 +#: .\cookbook\views\api.py:226 msgid "Cannot merge with the same object!" msgstr "" -#: .\cookbook\views\api.py:232 +#: .\cookbook\views\api.py:233 #, python-brace-format msgid "No {self.basename} with id {target} exists" msgstr "" -#: .\cookbook\views\api.py:237 +#: .\cookbook\views\api.py:238 msgid "Cannot merge with child object!" msgstr "" -#: .\cookbook\views\api.py:270 +#: .\cookbook\views\api.py:271 #, python-brace-format msgid "{source.name} was merged successfully with {target.name}" msgstr "" -#: .\cookbook\views\api.py:275 +#: .\cookbook\views\api.py:276 #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" msgstr "" -#: .\cookbook\views\api.py:333 +#: .\cookbook\views\api.py:334 #, python-brace-format msgid "{child.name} was moved successfully to the root." msgstr "" -#: .\cookbook\views\api.py:336 .\cookbook\views\api.py:354 +#: .\cookbook\views\api.py:337 .\cookbook\views\api.py:355 msgid "An error occurred attempting to move " msgstr "" -#: .\cookbook\views\api.py:339 +#: .\cookbook\views\api.py:340 msgid "Cannot move an object to itself!" msgstr "" -#: .\cookbook\views\api.py:345 +#: .\cookbook\views\api.py:346 #, python-brace-format msgid "No {self.basename} with id {parent} exists" msgstr "" -#: .\cookbook\views\api.py:351 +#: .\cookbook\views\api.py:352 #, python-brace-format msgid "{child.name} was moved successfully to parent {parent.name}" msgstr "" -#: .\cookbook\views\api.py:547 +#: .\cookbook\views\api.py:553 #, python-brace-format msgid "{obj.name} was removed from the shopping list." msgstr "" -#: .\cookbook\views\api.py:552 .\cookbook\views\api.py:882 -#: .\cookbook\views\api.py:895 +#: .\cookbook\views\api.py:558 .\cookbook\views\api.py:888 +#: .\cookbook\views\api.py:901 #, python-brace-format msgid "{obj.name} was added to the shopping list." msgstr "" -#: .\cookbook\views\api.py:679 +#: .\cookbook\views\api.py:685 msgid "ID of recipe a step is part of. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:681 +#: .\cookbook\views\api.py:687 msgid "Query string matched (fuzzy) against object name." msgstr "" -#: .\cookbook\views\api.py:725 +#: .\cookbook\views\api.py:731 msgid "" "Query string matched (fuzzy) against recipe name. In the future also " "fulltext search." msgstr "" -#: .\cookbook\views\api.py:727 +#: .\cookbook\views\api.py:733 msgid "" "ID of keyword a recipe should have. For multiple repeat parameter. " "Equivalent to keywords_or" msgstr "" -#: .\cookbook\views\api.py:730 +#: .\cookbook\views\api.py:736 msgid "" "Keyword IDs, repeat for multiple. Return recipes with any of the keywords" msgstr "" -#: .\cookbook\views\api.py:733 +#: .\cookbook\views\api.py:739 msgid "" "Keyword IDs, repeat for multiple. Return recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:736 +#: .\cookbook\views\api.py:742 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords." msgstr "" -#: .\cookbook\views\api.py:739 +#: .\cookbook\views\api.py:745 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:741 +#: .\cookbook\views\api.py:747 msgid "ID of food a recipe should have. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:744 +#: .\cookbook\views\api.py:750 msgid "Food IDs, repeat for multiple. Return recipes with any of the foods" msgstr "" -#: .\cookbook\views\api.py:746 +#: .\cookbook\views\api.py:752 msgid "Food IDs, repeat for multiple. Return recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:748 +#: .\cookbook\views\api.py:754 msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods." msgstr "" -#: .\cookbook\views\api.py:750 +#: .\cookbook\views\api.py:756 msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:751 +#: .\cookbook\views\api.py:757 msgid "ID of unit a recipe should have." msgstr "" -#: .\cookbook\views\api.py:753 +#: .\cookbook\views\api.py:759 msgid "" "Rating a recipe should have or greater. [0 - 5] Negative value filters " "rating less than." msgstr "" -#: .\cookbook\views\api.py:754 +#: .\cookbook\views\api.py:760 msgid "ID of book a recipe should be in. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:756 +#: .\cookbook\views\api.py:762 msgid "Book IDs, repeat for multiple. Return recipes with any of the books" msgstr "" -#: .\cookbook\views\api.py:758 +#: .\cookbook\views\api.py:764 msgid "Book IDs, repeat for multiple. Return recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:760 +#: .\cookbook\views\api.py:766 msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books." msgstr "" -#: .\cookbook\views\api.py:762 +#: .\cookbook\views\api.py:768 msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:764 +#: .\cookbook\views\api.py:770 msgid "If only internal recipes should be returned. [true/false]" msgstr "" -#: .\cookbook\views\api.py:766 +#: .\cookbook\views\api.py:772 msgid "Returns the results in randomized order. [true/false]" msgstr "" -#: .\cookbook\views\api.py:768 +#: .\cookbook\views\api.py:774 msgid "Returns new results first in search results. [true/false]" msgstr "" -#: .\cookbook\views\api.py:770 +#: .\cookbook\views\api.py:776 msgid "" "Filter recipes cooked X times or more. Negative values returns cooked less " "than X times" msgstr "" -#: .\cookbook\views\api.py:772 +#: .\cookbook\views\api.py:778 msgid "" "Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:774 +#: .\cookbook\views\api.py:780 msgid "" "Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:776 +#: .\cookbook\views\api.py:782 msgid "" "Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:778 +#: .\cookbook\views\api.py:784 msgid "" "Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:780 +#: .\cookbook\views\api.py:786 msgid "Filter recipes that can be made with OnHand food. [true/false]" msgstr "" -#: .\cookbook\views\api.py:940 +#: .\cookbook\views\api.py:946 msgid "" "Returns the shopping list entry with a primary key of id. Multiple values " "allowed." msgstr "" -#: .\cookbook\views\api.py:945 +#: .\cookbook\views\api.py:951 msgid "" "Filter shopping list entries on checked. [true, false, both, recent]
- recent includes unchecked items and recently completed items." msgstr "" -#: .\cookbook\views\api.py:948 +#: .\cookbook\views\api.py:954 msgid "Returns the shopping list entries sorted by supermarket category order." msgstr "" -#: .\cookbook\views\api.py:1160 +#: .\cookbook\views\api.py:1166 msgid "Nothing to do." msgstr "" -#: .\cookbook\views\api.py:1180 +#: .\cookbook\views\api.py:1198 msgid "Invalid Url" msgstr "" -#: .\cookbook\views\api.py:1187 +#: .\cookbook\views\api.py:1205 msgid "Connection Refused." msgstr "" -#: .\cookbook\views\api.py:1192 +#: .\cookbook\views\api.py:1210 msgid "Bad URL Schema." msgstr "" -#: .\cookbook\views\api.py:1215 +#: .\cookbook\views\api.py:1233 #, fuzzy #| msgid "The requested page could not be found." msgid "No usable data could be found." msgstr "Pieprasīto lapu nevarēja atrast." -#: .\cookbook\views\api.py:1308 .\cookbook\views\import_export.py:114 +#: .\cookbook\views\api.py:1326 .\cookbook\views\import_export.py:117 msgid "Importing is not implemented for this provider" msgstr "" -#: .\cookbook\views\api.py:1352 .\cookbook\views\data.py:31 +#: .\cookbook\views\api.py:1372 .\cookbook\views\data.py:31 #: .\cookbook\views\edit.py:120 .\cookbook\views\new.py:90 msgid "This feature is not yet available in the hosted version of tandoor!" msgstr "" -#: .\cookbook\views\api.py:1374 +#: .\cookbook\views\api.py:1394 msgid "Sync successful!" msgstr "Sinhronizācija ir veiksmīga!" -#: .\cookbook\views\api.py:1379 +#: .\cookbook\views\api.py:1399 msgid "Error synchronizing with Storage" msgstr "Sinhronizējot ar krātuvi, radās kļūda" @@ -2489,7 +2525,7 @@ msgstr "Izmaiņas saglabātas!" msgid "Error saving changes!" msgstr "Saglabājot izmaiņas, radās kļūda!" -#: .\cookbook\views\import_export.py:101 +#: .\cookbook\views\import_export.py:104 msgid "" "The PDF Exporter is not enabled on this instance as it is still in an " "experimental state." @@ -2539,40 +2575,40 @@ msgstr "Importēta jauna recepte!" msgid "There was an error importing this recipe!" msgstr "Importējot šo recepti, radās kļūda!" -#: .\cookbook\views\views.py:86 +#: .\cookbook\views\views.py:73 .\cookbook\views\views.py:191 +#: .\cookbook\views\views.py:213 .\cookbook\views\views.py:399 +msgid "This feature is not available in the demo version!" +msgstr "" + +#: .\cookbook\views\views.py:89 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" -#: .\cookbook\views\views.py:140 +#: .\cookbook\views\views.py:143 msgid "You do not have the required permissions to perform this action!" msgstr "Jums nav nepieciešamo atļauju, lai veiktu šo darbību!" -#: .\cookbook\views\views.py:151 +#: .\cookbook\views\views.py:154 msgid "Comment saved!" msgstr "Komentārs saglabāts!" -#: .\cookbook\views\views.py:188 .\cookbook\views\views.py:210 -#: .\cookbook\views\views.py:396 -msgid "This feature is not available in the demo version!" -msgstr "" - -#: .\cookbook\views\views.py:250 +#: .\cookbook\views\views.py:253 msgid "You must select at least one field to search!" msgstr "" -#: .\cookbook\views\views.py:255 +#: .\cookbook\views\views.py:258 msgid "" "To use this search method you must select at least one full text search " "field!" msgstr "" -#: .\cookbook\views\views.py:259 +#: .\cookbook\views\views.py:262 msgid "Fuzzy search is not compatible with this search method!" msgstr "" -#: .\cookbook\views\views.py:335 +#: .\cookbook\views\views.py:338 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2582,33 +2618,33 @@ msgstr "" "aizmirsis sava superlietotāja informāciju, lūdzu, skatiet Django " "dokumentāciju par paroļu atiestatīšanu." -#: .\cookbook\views\views.py:342 +#: .\cookbook\views\views.py:345 msgid "Passwords dont match!" msgstr "Paroles nesakrīt!" -#: .\cookbook\views\views.py:350 +#: .\cookbook\views\views.py:353 msgid "User has been created, please login!" msgstr "Lietotājs ir izveidots, lūdzu, piesakieties!" -#: .\cookbook\views\views.py:366 +#: .\cookbook\views\views.py:369 msgid "Malformed Invite Link supplied!" msgstr "Nepareiza uzaicinājuma saite!" -#: .\cookbook\views\views.py:383 +#: .\cookbook\views\views.py:386 msgid "Successfully joined space." msgstr "" -#: .\cookbook\views\views.py:389 +#: .\cookbook\views\views.py:392 msgid "Invite Link not valid or already used!" msgstr "Uzaicinājuma saite nav derīga vai jau izmantota!" -#: .\cookbook\views\views.py:406 +#: .\cookbook\views\views.py:409 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:412 +#: .\cookbook\views\views.py:415 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/nb_NO/LC_MESSAGES/django.mo b/cookbook/locale/nb_NO/LC_MESSAGES/django.mo index 599d45ea..14d53c8f 100644 Binary files a/cookbook/locale/nb_NO/LC_MESSAGES/django.mo and b/cookbook/locale/nb_NO/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/nb_NO/LC_MESSAGES/django.po b/cookbook/locale/nb_NO/LC_MESSAGES/django.po index 07179da1..af5ff980 100644 --- a/cookbook/locale/nb_NO/LC_MESSAGES/django.po +++ b/cookbook/locale/nb_NO/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-04-11 15:09+0200\n" -"PO-Revision-Date: 2021-04-11 15:23+0000\n" -"Last-Translator: Allan Nordhøy \n" +"PO-Revision-Date: 2023-04-17 20:55+0000\n" +"Last-Translator: Espen Sellevåg \n" "Language-Team: Norwegian Bokmål \n" "Language: nb_NO\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.5.3\n" +"X-Generator: Weblate 4.15\n" #: .\cookbook\filters.py:23 .\cookbook\templates\base.html:91 #: .\cookbook\templates\forms\edit_internal_recipe.html:219 @@ -34,19 +34,23 @@ msgstr "" #: .\cookbook\forms.py:46 msgid "Default Unit to be used when inserting a new ingredient into a recipe." -msgstr "" +msgstr "Standard enhet når ny ingrediens legges til en oppskrift." #: .\cookbook\forms.py:47 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" msgstr "" +"Aktiverer støtte for deler av ingrediensmengde (konverterer feks. desimaler " +"til deler automatisk)" #: .\cookbook\forms.py:48 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." msgstr "" +"Brukere som oppretter nye måltidsplaner/handlelister, deler disse " +"oppføringene som standard." #: .\cookbook\forms.py:49 msgid "Show recently viewed recipes on search page." @@ -58,7 +62,7 @@ msgstr "Antall desimaler ingredienser skal avrundes til." #: .\cookbook\forms.py:51 msgid "If you want to be able to create and see comments underneath recipes." -msgstr "" +msgstr "Hvis du ønsker å opprette og se kommentarer under oppskrifter." #: .\cookbook\forms.py:53 msgid "" @@ -67,6 +71,11 @@ 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 vil deaktivere automatisk synkronisering. Når en handleliste vises, " +"oppdateres listen med oppgitt antall sekunders mellomrom for å synkronisere " +"endringer fra andre brukere. Nyttig dersom flere brukere handler samtidig. " +"Datatrafikk oppstår når aktiv. Hvis verdien er lavere enn grensen, " +"tilbakestilles den ved lagring." #: .\cookbook\forms.py:56 msgid "Makes the navbar stick to the top of the page." @@ -100,11 +109,11 @@ msgstr "" #: .\cookbook\forms.py:97 .\cookbook\forms.py:317 msgid "Path" -msgstr "" +msgstr "Sti" #: .\cookbook\forms.py:98 msgid "Storage UID" -msgstr "" +msgstr "Lagring UID" #: .\cookbook\forms.py:121 msgid "Default" @@ -129,7 +138,6 @@ msgid "Old Unit" msgstr "Gammel enhet" #: .\cookbook\forms.py:156 -#, fuzzy msgid "Unit that should be replaced." msgstr "Enhet som skal erstattes." @@ -204,12 +212,11 @@ msgstr "" #: .\cookbook\views\views.py:112 .\cookbook\views\views.py:116 #: .\cookbook\views\views.py:184 msgid "You do not have the required permissions to view this page!" -msgstr "Du har ikke påkrevd tilgang for å vise denne siden." +msgstr "Du har ikke påkrevd tilgang for å vise denne siden!" #: .\cookbook\helper\permission_helper.py:141 -#, fuzzy msgid "You are not logged in and therefore cannot view this page!" -msgstr "Du er ikke innlogget og kan derfor ikke vise siden." +msgstr "Du er ikke innlogget og kan derfor ikke vise siden!" #: .\cookbook\helper\permission_helper.py:145 #: .\cookbook\helper\permission_helper.py:167 @@ -379,7 +386,7 @@ msgstr "Finner ikke siden du leter etter." #: .\cookbook\templates\404.html:33 msgid "Take me Home" -msgstr "" +msgstr "Tilbake til Startsiden" #: .\cookbook\templates\404.html:35 msgid "Report a Bug" @@ -388,12 +395,12 @@ msgstr "Rapporter en feil" #: .\cookbook\templates\account\login.html:7 #: .\cookbook\templates\base.html:170 msgid "Login" -msgstr "" +msgstr "Logg inn" #: .\cookbook\templates\account\login.html:13 #: .\cookbook\templates\account\login.html:28 msgid "Sign In" -msgstr "" +msgstr "Opprett bruker" #: .\cookbook\templates\account\login.html:38 msgid "Social Login" @@ -401,7 +408,7 @@ msgstr "Sosial innlogging" #: .\cookbook\templates\account\login.html:39 msgid "You can use any of the following providers to sign in." -msgstr "" +msgstr "Velg en av følgende leverandører for å logge på." #: .\cookbook\templates\account\logout.html:5 #: .\cookbook\templates\account\logout.html:9 @@ -416,20 +423,20 @@ msgstr "Er du sikker på at du vil logge ut?" #: .\cookbook\templates\account\password_reset.html:5 #: .\cookbook\templates\account\password_reset_done.html:5 msgid "Password Reset" -msgstr "" +msgstr "Nullstill passord" #: .\cookbook\templates\account\password_reset.html:9 #: .\cookbook\templates\account\password_reset_done.html:9 msgid "Password reset is not implemented for the time being!" -msgstr "" +msgstr "Det er foreløpig ikke implementert funksjon for å nullstille passord!" #: .\cookbook\templates\account\signup.html:5 msgid "Register" -msgstr "" +msgstr "Registrer" #: .\cookbook\templates\account\signup.html:9 msgid "Create your Account" -msgstr "Opprett din konto" +msgstr "Opprett konto" #: .\cookbook\templates\account\signup.html:14 msgid "Create User" @@ -442,11 +449,11 @@ msgstr "API-dokumentasjon" #: .\cookbook\templates\base.html:78 msgid "Utensils" -msgstr "" +msgstr "Redskaper" #: .\cookbook\templates\base.html:88 msgid "Shopping" -msgstr "" +msgstr "Handle" #: .\cookbook\templates\base.html:102 .\cookbook\views\delete.py:84 #: .\cookbook\views\edit.py:93 .\cookbook\views\lists.py:26 @@ -456,27 +463,27 @@ msgstr "Nøkkelord" #: .\cookbook\templates\base.html:104 msgid "Batch Edit" -msgstr "" +msgstr "Oppdatere flere" #: .\cookbook\templates\base.html:109 msgid "Storage Data" -msgstr "" +msgstr "Datalagring" #: .\cookbook\templates\base.html:113 msgid "Storage Backends" -msgstr "" +msgstr "Lagringsplasser" #: .\cookbook\templates\base.html:115 msgid "Configure Sync" -msgstr "" +msgstr "Konfigurer synkronisering" #: .\cookbook\templates\base.html:117 msgid "Discovered Recipes" -msgstr "" +msgstr "Oppdagede oppskrifter" #: .\cookbook\templates\base.html:119 msgid "Discovery Log" -msgstr "" +msgstr "Logg Oppdagelser" #: .\cookbook\templates\base.html:121 .\cookbook\templates\stats.html:10 msgid "Statistics" @@ -484,7 +491,7 @@ msgstr "Statistikk" #: .\cookbook\templates\base.html:123 msgid "Units & Ingredients" -msgstr "" +msgstr "Enheter & Ingredienser" #: .\cookbook\templates\base.html:125 msgid "Import Recipe" @@ -521,58 +528,61 @@ msgid "API Browser" msgstr "API-utforsker" #: .\cookbook\templates\base.html:165 -#, fuzzy msgid "Logout" msgstr "Logg ut" #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" -msgstr "" +msgstr "Oppdater flere kategorier" #: .\cookbook\templates\batch\edit.html:15 msgid "Batch edit Recipes" -msgstr "" +msgstr "Oppdater flere oppskrifter" #: .\cookbook\templates\batch\edit.html:20 msgid "Add the specified keywords to all recipes containing a word" -msgstr "" +msgstr "Legg til spesifikt nøkkelord til alle oppskrifter som inneholder et ord" #: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:76 msgid "Sync" -msgstr "" +msgstr "Synkronisering" #: .\cookbook\templates\batch\monitor.html:10 msgid "Manage watched Folders" -msgstr "" +msgstr "Behandle overvåkede mapper" #: .\cookbook\templates\batch\monitor.html:14 msgid "" "On this Page you can manage all storage folder locations that should be " "monitored and synced." msgstr "" +"Her kan du behandle alle lagringsmapper og plasseringer for monitorering og " +"synkronisering." #: .\cookbook\templates\batch\monitor.html:16 msgid "The path must be in the following format" -msgstr "" +msgstr "Stien må være i følgende format" #: .\cookbook\templates\batch\monitor.html:27 msgid "Sync Now!" -msgstr "" +msgstr "Synkroniser nå!" #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" -msgstr "" +msgstr "Importerer oppskrifter" #: .\cookbook\templates\batch\waiting.html:23 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." msgstr "" +"Dette kan ta noen minutter, avhenging av antall oppskrifter som skal " +"synkroniseres. Vennligst vent." #: .\cookbook\templates\books.html:5 .\cookbook\templates\books.html:11 msgid "Recipe Books" -msgstr "" +msgstr "Oppskriftsbøker" #: .\cookbook\templates\books.html:15 msgid "New Book" @@ -584,32 +594,32 @@ msgstr "av" #: .\cookbook\templates\books.html:34 msgid "Toggle Recipes" -msgstr "" +msgstr "Veksle oppskrifter" #: .\cookbook\templates\books.html:54 #: .\cookbook\templates\meal_plan_entry.html:48 #: .\cookbook\templates\recipes_table.html:64 msgid "Last cooked" -msgstr "" +msgstr "Forrige tilbereding" #: .\cookbook\templates\books.html:71 msgid "There are no recipes in this book yet." -msgstr "" +msgstr "Det er foreløpig ingen oppskrifter i denne boken." #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" -msgstr "" +msgstr "Eksporter oppskrifter" #: .\cookbook\templates\export.html:14 .\cookbook\templates\export.html:20 #: .\cookbook\templates\shopping_list.html:347 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" -msgstr "" +msgstr "Eksporter" #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" -msgstr "" +msgstr "Importer ny oppskrift" #: .\cookbook\templates\forms\edit_import_recipe.html:14 #: .\cookbook\templates\forms\edit_internal_recipe.html:389 @@ -635,29 +645,29 @@ msgstr "Beskrivelse" #: .\cookbook\templates\forms\edit_internal_recipe.html:72 msgid "Waiting Time" -msgstr "" +msgstr "Ventetid" #: .\cookbook\templates\forms\edit_internal_recipe.html:78 msgid "Servings Text" -msgstr "" +msgstr "Porsjon beskrivelse" #: .\cookbook\templates\forms\edit_internal_recipe.html:89 msgid "Select Keywords" -msgstr "" +msgstr "Velg nøkkelord" #: .\cookbook\templates\forms\edit_internal_recipe.html:90 #: .\cookbook\templates\url_import.html:212 msgid "Add Keyword" -msgstr "" +msgstr "Legg til nøkkelord" #: .\cookbook\templates\forms\edit_internal_recipe.html:108 msgid "Nutrition" -msgstr "" +msgstr "Næringsinnhold" #: .\cookbook\templates\forms\edit_internal_recipe.html:112 #: .\cookbook\templates\forms\edit_internal_recipe.html:162 msgid "Delete Step" -msgstr "" +msgstr "Fjern trinn" #: .\cookbook\templates\forms\edit_internal_recipe.html:116 msgid "Calories" @@ -678,15 +688,15 @@ msgstr "Proteiner" #: .\cookbook\templates\forms\edit_internal_recipe.html:146 #: .\cookbook\templates\forms\edit_internal_recipe.html:454 msgid "Step" -msgstr "" +msgstr "Trinn" #: .\cookbook\templates\forms\edit_internal_recipe.html:167 msgid "Show as header" -msgstr "" +msgstr "Vis som overskrift" #: .\cookbook\templates\forms\edit_internal_recipe.html:173 msgid "Hide as header" -msgstr "" +msgstr "Skjul overskrift" #: .\cookbook\templates\forms\edit_internal_recipe.html:178 msgid "Move Up" @@ -698,15 +708,15 @@ msgstr "Flytt nedover" #: .\cookbook\templates\forms\edit_internal_recipe.html:192 msgid "Step Name" -msgstr "" +msgstr "Trinn navn" #: .\cookbook\templates\forms\edit_internal_recipe.html:196 msgid "Step Type" -msgstr "" +msgstr "Trinn type" #: .\cookbook\templates\forms\edit_internal_recipe.html:207 msgid "Step time in Minutes" -msgstr "" +msgstr "Trinn tid i minutter" #: .\cookbook\templates\forms\edit_internal_recipe.html:261 #: .\cookbook\templates\shopping_list.html:183 @@ -740,7 +750,7 @@ msgstr "Velg mat" #: .\cookbook\templates\meal_plan.html:256 #: .\cookbook\templates\url_import.html:171 msgid "Note" -msgstr "" +msgstr "Notis" #: .\cookbook\templates\forms\edit_internal_recipe.html:319 msgid "Delete Ingredient" @@ -748,7 +758,7 @@ msgstr "Slett ingrediens" #: .\cookbook\templates\forms\edit_internal_recipe.html:325 msgid "Make Header" -msgstr "" +msgstr "Bruk som overskrift" #: .\cookbook\templates\forms\edit_internal_recipe.html:331 msgid "Make Ingredient" @@ -756,15 +766,15 @@ msgstr "Opprett ingrediens" #: .\cookbook\templates\forms\edit_internal_recipe.html:337 msgid "Disable Amount" -msgstr "" +msgstr "Deaktiver mengde" #: .\cookbook\templates\forms\edit_internal_recipe.html:343 msgid "Enable Amount" -msgstr "" +msgstr "Aktiver mengde" #: .\cookbook\templates\forms\edit_internal_recipe.html:348 msgid "Copy Template Reference" -msgstr "" +msgstr "Kopier mal-referanse" #: .\cookbook\templates\forms\edit_internal_recipe.html:374 #: .\cookbook\templates\url_import.html:196 @@ -773,29 +783,28 @@ msgstr "Instruksjoner" #: .\cookbook\templates\forms\edit_internal_recipe.html:387 #: .\cookbook\templates\forms\edit_internal_recipe.html:418 -#, fuzzy msgid "Save & View" msgstr "Lagre og vis" #: .\cookbook\templates\forms\edit_internal_recipe.html:391 #: .\cookbook\templates\forms\edit_internal_recipe.html:424 msgid "Add Step" -msgstr "" +msgstr "Legg til trinn" #: .\cookbook\templates\forms\edit_internal_recipe.html:394 #: .\cookbook\templates\forms\edit_internal_recipe.html:428 msgid "Add Nutrition" -msgstr "" +msgstr "Legg til næringsinnhold" #: .\cookbook\templates\forms\edit_internal_recipe.html:396 #: .\cookbook\templates\forms\edit_internal_recipe.html:430 msgid "Remove Nutrition" -msgstr "" +msgstr "Fjern næringsinnhold" #: .\cookbook\templates\forms\edit_internal_recipe.html:398 #: .\cookbook\templates\forms\edit_internal_recipe.html:433 msgid "View Recipe" -msgstr "" +msgstr "Vis oppskrift" #: .\cookbook\templates\forms\edit_internal_recipe.html:400 #: .\cookbook\templates\forms\edit_internal_recipe.html:435 @@ -804,11 +813,11 @@ msgstr "Slett oppskrift" #: .\cookbook\templates\forms\edit_internal_recipe.html:441 msgid "Steps" -msgstr "" +msgstr "Trinn" #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" -msgstr "" +msgstr "Rediger ingrediens" #: .\cookbook\templates\forms\ingredients.html:16 msgid "" @@ -820,54 +829,61 @@ msgid "" "them.\n" " " msgstr "" +"\n" +" Følgende skjema kan brukes dersom, tilfeldigvis, to eller flere " +"enheter eller ingredienser er opprettet,\n" +" og burde være identiske.\n" +" Det slår sammen to enheter eller ingredienser og oppdaterer alle " +"oppskrifter som inneholder disse.\n" +" " #: .\cookbook\templates\forms\ingredients.html:24 #: .\cookbook\templates\stats.html:26 msgid "Units" -msgstr "" +msgstr "Enheter" #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" -msgstr "" +msgstr "Er du sikker på at du vil slå sammen disse enhetene?" #: .\cookbook\templates\forms\ingredients.html:31 #: .\cookbook\templates\forms\ingredients.html:40 msgid "Merge" -msgstr "Flett" +msgstr "Slå sammen" #: .\cookbook\templates\forms\ingredients.html:36 msgid "Are you sure that you want to merge these two ingredients?" -msgstr "" +msgstr "Er du sikker på at du vil slå sammen disse ingrediensene?" #: .\cookbook\templates\generic\delete_template.html:18 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " -msgstr "" +msgstr "Er du sikker på at du vil slette %(title)s: %(object)s " #: .\cookbook\templates\generic\delete_template.html:21 msgid "Confirm" -msgstr "" +msgstr "Bekreft" #: .\cookbook\templates\generic\edit_template.html:30 msgid "View" -msgstr "" +msgstr "Vis" #: .\cookbook\templates\generic\edit_template.html:34 msgid "Delete original file" -msgstr "" +msgstr "Slett opprinnelig fil" #: .\cookbook\templates\generic\list_template.html:6 #: .\cookbook\templates\generic\list_template.html:12 msgid "List" -msgstr "" +msgstr "Liste" #: .\cookbook\templates\generic\list_template.html:25 msgid "Filter" -msgstr "" +msgstr "Filtrer" #: .\cookbook\templates\generic\list_template.html:30 msgid "Import all" -msgstr "" +msgstr "Importer alle" #: .\cookbook\templates\generic\new_template.html:6 #: .\cookbook\templates\generic\new_template.html:14 @@ -891,19 +907,19 @@ msgstr "Vis logg" #: .\cookbook\templates\history.html:24 msgid "Cook Log" -msgstr "" +msgstr "Tilberedingslogg" #: .\cookbook\templates\import.html:6 .\cookbook\templates\test.html:6 msgid "Import Recipes" -msgstr "" +msgstr "Importer oppskrifter" #: .\cookbook\templates\include\log_cooking.html:7 msgid "Log Recipe Cooking" -msgstr "" +msgstr "Loggfør tilberedt oppskrift" #: .\cookbook\templates\include\log_cooking.html:13 msgid "All fields are optional and can be left empty." -msgstr "" +msgstr "Alle felt er valgfri og kan stå tomme." #: .\cookbook\templates\include\log_cooking.html:19 msgid "Rating" @@ -943,44 +959,53 @@ msgid "" "can be used.\n" " " msgstr "" +"\n" +" Passord og nøkkelfeltene er lagret som ren tekst i " +"databasen.\n" +" Dette er nødvendig for å kunne utføre API-forespørsler, men det øker " +"samtidig risiko for\n" +" uønsket tilgang til dem.
\n" +" For å begrense kosekvensene av uønsket tilgang, kan nøkler eller " +"kontoer med begrenset tilgang benyttes.\n" +" " #: .\cookbook\templates\index.html:29 msgid "Search recipe ..." -msgstr "" +msgstr "Søk etter oppskrift..." #: .\cookbook\templates\index.html:44 msgid "New Recipe" -msgstr "" +msgstr "Ny oppskrift" #: .\cookbook\templates\index.html:47 msgid "Website Import" -msgstr "" +msgstr "Importer fra nettside" #: .\cookbook\templates\index.html:53 msgid "Advanced Search" -msgstr "" +msgstr "Avansert søk" #: .\cookbook\templates\index.html:57 msgid "Reset Search" -msgstr "" +msgstr "Nullstill søk" #: .\cookbook\templates\index.html:85 msgid "Last viewed" -msgstr "" +msgstr "Sist sett" #: .\cookbook\templates\index.html:87 .\cookbook\templates\meal_plan.html:178 #: .\cookbook\templates\stats.html:22 msgid "Recipes" -msgstr "" +msgstr "Oppskrifter" #: .\cookbook\templates\index.html:94 msgid "Log in to view recipes" -msgstr "" +msgstr "Logg inn for å se oppskrifter" #: .\cookbook\templates\markdown_info.html:5 #: .\cookbook\templates\markdown_info.html:13 msgid "Markdown Info" -msgstr "" +msgstr "Markdown informasjon" #: .\cookbook\templates\markdown_info.html:14 msgid "" @@ -997,43 +1022,56 @@ msgid "" "below.\n" " " msgstr "" +"\n" +" Markdown er et lettvekts markup språk som benyttes for å formatere " +"ren tekst.\n" +" Denne siden bruker biblioteket Python Markdown for\n" +" å konvertere teksten din til velformatert HTML. Fullstendig " +"dokumentasjon for markdown finner du\n" +" her.\n" +" En ufullstendig, men sannsynligvis tilstrekkelig dokumentasjon " +"finner du under her.\n" +" " #: .\cookbook\templates\markdown_info.html:25 msgid "Headers" -msgstr "" +msgstr "Overskrifter" #: .\cookbook\templates\markdown_info.html:54 msgid "Formatting" -msgstr "" +msgstr "Formatering" #: .\cookbook\templates\markdown_info.html:56 #: .\cookbook\templates\markdown_info.html:72 msgid "Line breaks are inserted by adding two spaces after the end of a line" msgstr "" +"Linjeskift er satt inn ved å sette inn to mellomrom på slutten av en linje" #: .\cookbook\templates\markdown_info.html:57 #: .\cookbook\templates\markdown_info.html:73 msgid "or by leaving a blank line inbetween." -msgstr "" +msgstr "eller ved å sette inn en tom linje mellom." #: .\cookbook\templates\markdown_info.html:59 #: .\cookbook\templates\markdown_info.html:74 msgid "This text is bold" -msgstr "" +msgstr "Denne teksten er Fet" #: .\cookbook\templates\markdown_info.html:60 #: .\cookbook\templates\markdown_info.html:75 msgid "This text is italic" -msgstr "" +msgstr "Denne teksten er Kursiv" #: .\cookbook\templates\markdown_info.html:61 #: .\cookbook\templates\markdown_info.html:77 msgid "Blockquotes are also possible" -msgstr "" +msgstr "Det er også mulig å sitere avsnitt" #: .\cookbook\templates\markdown_info.html:84 msgid "Lists" -msgstr "" +msgstr "Lister" #: .\cookbook\templates\markdown_info.html:85 msgid "" @@ -1264,7 +1302,7 @@ msgstr "" #: .\cookbook\templates\no_groups_info.html:5 #: .\cookbook\templates\no_groups_info.html:12 msgid "No Permissions" -msgstr "Ingen tilganger." +msgstr "Ingen tilgang" #: .\cookbook\templates\no_groups_info.html:17 msgid "You do not have any groups and therefor cannot use this application." @@ -1298,12 +1336,11 @@ msgstr "" #: .\cookbook\templates\offline.html:6 msgid "Offline" -msgstr "Frakoblet." +msgstr "Frakoblet" #: .\cookbook\templates\offline.html:19 -#, fuzzy msgid "You are currently offline!" -msgstr "Du er ikke tilkoblet Internett." +msgstr "Du er ikke tilkoblet!" #: .\cookbook\templates\offline.html:20 msgid "" @@ -1366,7 +1403,7 @@ msgstr "Stil" #: .\cookbook\templates\settings.html:79 msgid "API Token" -msgstr "API-symbol" +msgstr "API nøkkel" #: .\cookbook\templates\settings.html:80 msgid "" @@ -1389,9 +1426,8 @@ msgid "Cookbook Setup" msgstr "Kokeboksoppsett" #: .\cookbook\templates\setup.html:14 -#, fuzzy msgid "Setup" -msgstr "Sett opp" +msgstr "Installering" #: .\cookbook\templates\setup.html:15 msgid "" @@ -1424,11 +1460,11 @@ msgstr "Mengde" #: .\cookbook\templates\shopping_list.html:226 msgid "Supermarket" -msgstr "Matbutikk" +msgstr "Butikk" #: .\cookbook\templates\shopping_list.html:236 msgid "Select Supermarket" -msgstr "Velg matbutikk" +msgstr "Velg butikk" #: .\cookbook\templates\shopping_list.html:260 msgid "Select User" @@ -1540,7 +1576,6 @@ msgstr "" #: .\cookbook\templates\system.html:49 .\cookbook\templates\system.html:64 #: .\cookbook\templates\system.html:80 .\cookbook\templates\system.html:95 -#, fuzzy msgid "Ok" msgstr "OK" diff --git a/cookbook/locale/nl/LC_MESSAGES/django.mo b/cookbook/locale/nl/LC_MESSAGES/django.mo index 055ff39e..e9bf3ea4 100644 Binary files a/cookbook/locale/nl/LC_MESSAGES/django.mo and b/cookbook/locale/nl/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/nl/LC_MESSAGES/django.po b/cookbook/locale/nl/LC_MESSAGES/django.po index 1abdb96e..bfb500fb 100644 --- a/cookbook/locale/nl/LC_MESSAGES/django.po +++ b/cookbook/locale/nl/LC_MESSAGES/django.po @@ -12,11 +12,11 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: 2023-02-27 13:55+0000\n" "Last-Translator: Jesse \n" -"Language-Team: Dutch \n" +"Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -64,7 +64,7 @@ msgstr "Ingrediënt decimalen" msgid "Shopping list auto sync period" msgstr "Boodschappenlijst auto sync periode" -#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:21 +#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:36 msgid "Comments" msgstr "Opmerkingen" @@ -116,7 +116,7 @@ msgstr "Aantal decimalen om ingrediënten op af te ronden." msgid "If you want to be able to create and see comments underneath recipes." msgstr "Als je opmerkingen onder recepten wil kunnen maken en zien." -#: .\cookbook\forms.py:79 .\cookbook\forms.py:491 +#: .\cookbook\forms.py:79 .\cookbook\forms.py:492 msgid "" "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. " @@ -133,7 +133,7 @@ msgstr "" msgid "Makes the navbar stick to the top of the page." msgstr "Zet de navbar vast aan de bovenkant van de pagina." -#: .\cookbook\forms.py:83 .\cookbook\forms.py:494 +#: .\cookbook\forms.py:83 .\cookbook\forms.py:495 msgid "Automatically add meal plan ingredients to shopping list." msgstr "Zet maaltijdplan ingrediënten automatisch op boodschappenlijst." @@ -153,11 +153,11 @@ msgstr "" "Beide velden zijn optioneel. Indien niks is opgegeven wordt de " "gebruikersnaam weergegeven" -#: .\cookbook\forms.py:123 .\cookbook\forms.py:296 +#: .\cookbook\forms.py:123 .\cookbook\forms.py:297 msgid "Name" msgstr "Naam" -#: .\cookbook\forms.py:124 .\cookbook\forms.py:297 .\cookbook\views\lists.py:88 +#: .\cookbook\forms.py:124 .\cookbook\forms.py:298 .\cookbook\views\lists.py:88 msgid "Keywords" msgstr "Etiketten" @@ -169,7 +169,7 @@ msgstr "Voorbereidingstijd in minuten" msgid "Waiting time (cooking/baking) in minutes" msgstr "Wacht tijd in minuten (koken en bakken)" -#: .\cookbook\forms.py:127 .\cookbook\forms.py:265 .\cookbook\forms.py:298 +#: .\cookbook\forms.py:127 .\cookbook\forms.py:266 .\cookbook\forms.py:299 msgid "Path" msgstr "Pad" @@ -177,11 +177,11 @@ msgstr "Pad" msgid "Storage UID" msgstr "Opslag UID" -#: .\cookbook\forms.py:160 +#: .\cookbook\forms.py:161 msgid "Default" msgstr "Standaard waarde" -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:173 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." @@ -189,19 +189,19 @@ msgstr "" "Om dubbelingen te voorkomen worden recepten met dezelfde naam als een " "bestaand recept genegeerd. Vink aan om alles te importeren." -#: .\cookbook\forms.py:195 +#: .\cookbook\forms.py:196 msgid "Add your comment: " msgstr "Voeg een opmerking toe: " -#: .\cookbook\forms.py:210 +#: .\cookbook\forms.py:211 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "Laat leeg voor dropbox en vul het app wachtwoord in voor nextcloud." -#: .\cookbook\forms.py:217 +#: .\cookbook\forms.py:218 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "Laat leeg voor nextcloud en vul de api token in voor dropbox." -#: .\cookbook\forms.py:226 +#: .\cookbook\forms.py:227 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" @@ -209,33 +209,33 @@ msgstr "" "Laat leeg voor dropbox en vul enkel de base url voor nextcloud in. (/" "remote.php/webdav/ wordt automatisch toegevoegd.)" -#: .\cookbook\forms.py:264 .\cookbook\views\edit.py:157 +#: .\cookbook\forms.py:265 .\cookbook\views\edit.py:157 msgid "Storage" msgstr "Opslag" -#: .\cookbook\forms.py:266 +#: .\cookbook\forms.py:267 msgid "Active" msgstr "Actief" -#: .\cookbook\forms.py:272 +#: .\cookbook\forms.py:273 msgid "Search String" msgstr "Zoekopdracht" -#: .\cookbook\forms.py:299 +#: .\cookbook\forms.py:300 msgid "File ID" msgstr "Bestands ID" -#: .\cookbook\forms.py:321 +#: .\cookbook\forms.py:322 msgid "You must provide at least a recipe or a title." msgstr "Je moet minimaal één recept of titel te specificeren." -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:335 msgid "You can list default users to share recipes with in the settings." msgstr "" "Je kan in de instellingen standaard gebruikers in stellen om de recepten met " "te delen." -#: .\cookbook\forms.py:335 +#: .\cookbook\forms.py:336 msgid "" "You can use markdown to format this field. See the docs here" @@ -243,15 +243,15 @@ msgstr "" "Je kunt markdown gebruiken om dit veld te op te maken. Bekijk de documentatie hier" -#: .\cookbook\forms.py:361 +#: .\cookbook\forms.py:362 msgid "Maximum number of users for this space reached." msgstr "Maximum aantal gebruikers voor deze ruimte bereikt." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:368 msgid "Email address already taken!" msgstr "E-mailadres reeds in gebruik!" -#: .\cookbook\forms.py:375 +#: .\cookbook\forms.py:376 msgid "" "An email address is not required but if present the invite link will be sent " "to the user." @@ -259,15 +259,15 @@ msgstr "" "Een e-mailadres is niet vereist, maar indien aanwezig zal de " "uitnodigingslink naar de gebruiker worden gestuurd." -#: .\cookbook\forms.py:390 +#: .\cookbook\forms.py:391 msgid "Name already taken." msgstr "Naam reeds in gebruik." -#: .\cookbook\forms.py:401 +#: .\cookbook\forms.py:402 msgid "Accept Terms and Privacy" msgstr "Accepteer voorwaarden" -#: .\cookbook\forms.py:433 +#: .\cookbook\forms.py:434 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." @@ -275,7 +275,7 @@ msgstr "" "Bepaalt hoe 'fuzzy' een zoekopdracht is als het trigram vergelijken gebruikt " "(lage waarden betekenen bijvoorbeeld dat meer typefouten genegeerd worden)." -#: .\cookbook\forms.py:443 +#: .\cookbook\forms.py:444 msgid "" "Select type method of search. Click here for " "full description of choices." @@ -283,7 +283,7 @@ msgstr "" "Selecteer zoekmethode. Klik hier voor een " "beschrijving van de keuzes." -#: .\cookbook\forms.py:444 +#: .\cookbook\forms.py:445 msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." @@ -291,7 +291,7 @@ msgstr "" "Gebruik 'fuzzy' koppelen bij eenheden, etiketten en ingrediënten bij " "bewerken en importeren van recepten." -#: .\cookbook\forms.py:446 +#: .\cookbook\forms.py:447 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" @@ -300,7 +300,7 @@ msgstr "" "deze optie kan de zoekkwaliteit afhankelijk van de taal, zowel verbeteren " "als verslechteren" -#: .\cookbook\forms.py:448 +#: .\cookbook\forms.py:449 msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" @@ -308,7 +308,7 @@ msgstr "" "Velden doorzoeken op gedeelde overeenkomsten. (zoeken op 'Appel' vindt " "'appel', 'aardappel' en 'appelsap')" -#: .\cookbook\forms.py:450 +#: .\cookbook\forms.py:451 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" @@ -316,7 +316,7 @@ msgstr "" "Velden doorzoeken op overeenkomsten aan het begin van het woord. (zoeken op " "'sa' vindt 'salade' en 'sandwich')" -#: .\cookbook\forms.py:452 +#: .\cookbook\forms.py:453 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." @@ -324,7 +324,7 @@ msgstr "" "Velden 'fuzzy' doorzoeken. (zoeken op 'recetp' vindt ook 'recept') Noot: " "deze optie conflicteert met de zoekmethoden 'web' en 'raw'." -#: .\cookbook\forms.py:454 +#: .\cookbook\forms.py:455 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." @@ -332,35 +332,35 @@ msgstr "" "Velden doorzoeken op volledige tekst. Noot: Web, Zin en Raw zoekmethoden " "werken alleen met volledige tekstvelden." -#: .\cookbook\forms.py:458 +#: .\cookbook\forms.py:459 msgid "Search Method" msgstr "Zoekmethode" -#: .\cookbook\forms.py:459 +#: .\cookbook\forms.py:460 msgid "Fuzzy Lookups" msgstr "'Fuzzy' zoekopdrachten" -#: .\cookbook\forms.py:460 +#: .\cookbook\forms.py:461 msgid "Ignore Accent" msgstr "Negeer accent" -#: .\cookbook\forms.py:461 +#: .\cookbook\forms.py:462 msgid "Partial Match" msgstr "Gedeeltelijke overeenkomst" -#: .\cookbook\forms.py:462 +#: .\cookbook\forms.py:463 msgid "Starts With" msgstr "Begint met" -#: .\cookbook\forms.py:463 +#: .\cookbook\forms.py:464 msgid "Fuzzy Search" msgstr "'Fuzzy' zoeken" -#: .\cookbook\forms.py:464 +#: .\cookbook\forms.py:465 msgid "Full Text" msgstr "Volledige tekst" -#: .\cookbook\forms.py:489 +#: .\cookbook\forms.py:490 msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." @@ -368,7 +368,7 @@ msgstr "" "Gebruikers zien alle items die je op je boodschappenlijst zet. Ze moeten " "jou toevoegen om items op hun lijst te zien." -#: .\cookbook\forms.py:495 +#: .\cookbook\forms.py:496 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." @@ -376,7 +376,7 @@ msgstr "" "Als een maaltijdplan aan de boodschappenlijst toegevoegd wordt (handmatig of " "automatisch), neem dan alle recepten op." -#: .\cookbook\forms.py:496 +#: .\cookbook\forms.py:497 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." @@ -384,94 +384,94 @@ msgstr "" "Als een maaltijdplan aan de boodschappenlijst toegevoegd wordt (handmatig of " "automatisch), sluit ingrediënten die op voorraad zijn dan uit." -#: .\cookbook\forms.py:497 +#: .\cookbook\forms.py:498 msgid "Default number of hours to delay a shopping list entry." msgstr "Standaard aantal uren om een boodschappenlijst item te vertragen." -#: .\cookbook\forms.py:498 +#: .\cookbook\forms.py:499 msgid "Filter shopping list to only include supermarket categories." msgstr "Filter boodschappenlijst om alleen supermarktcategorieën te bevatten." -#: .\cookbook\forms.py:499 +#: .\cookbook\forms.py:500 msgid "Days of recent shopping list entries to display." msgstr "Dagen van recente boodschappenlijst items weer te geven." -#: .\cookbook\forms.py:500 +#: .\cookbook\forms.py:501 msgid "Mark food 'On Hand' when checked off shopping list." msgstr "" "Markeer eten 'Op voorraad' wanneer het van het boodschappenlijstje is " "afgevinkt." -#: .\cookbook\forms.py:501 +#: .\cookbook\forms.py:502 msgid "Delimiter to use for CSV exports." msgstr "Scheidingsteken te gebruiken voor CSV exports." -#: .\cookbook\forms.py:502 +#: .\cookbook\forms.py:503 msgid "Prefix to add when copying list to the clipboard." msgstr "" "Toe te voegen Voorvoegsel bij het kopiëren van een lijst naar het klembord." -#: .\cookbook\forms.py:506 +#: .\cookbook\forms.py:507 msgid "Share Shopping List" msgstr "Deel boodschappenlijst" -#: .\cookbook\forms.py:507 +#: .\cookbook\forms.py:508 msgid "Autosync" msgstr "Autosync" -#: .\cookbook\forms.py:508 +#: .\cookbook\forms.py:509 msgid "Auto Add Meal Plan" msgstr "Voeg maaltijdplan automatisch toe" -#: .\cookbook\forms.py:509 +#: .\cookbook\forms.py:510 msgid "Exclude On Hand" msgstr "Sluit op voorraad uit" -#: .\cookbook\forms.py:510 +#: .\cookbook\forms.py:511 msgid "Include Related" msgstr "Neem gerelateerde op" -#: .\cookbook\forms.py:511 +#: .\cookbook\forms.py:512 msgid "Default Delay Hours" msgstr "Standaard vertraging in uren" -#: .\cookbook\forms.py:512 +#: .\cookbook\forms.py:513 msgid "Filter to Supermarket" msgstr "Filter op supermarkt" -#: .\cookbook\forms.py:513 +#: .\cookbook\forms.py:514 msgid "Recent Days" msgstr "Afgelopen dagen" -#: .\cookbook\forms.py:514 +#: .\cookbook\forms.py:515 msgid "CSV Delimiter" msgstr "CSV scheidingsteken" -#: .\cookbook\forms.py:515 +#: .\cookbook\forms.py:516 msgid "List Prefix" msgstr "Lijst voorvoegsel" -#: .\cookbook\forms.py:516 +#: .\cookbook\forms.py:517 msgid "Auto On Hand" msgstr "Auto op voorraad" -#: .\cookbook\forms.py:526 +#: .\cookbook\forms.py:527 msgid "Reset Food Inheritance" msgstr "Herstel Ingrediënt overname" -#: .\cookbook\forms.py:527 +#: .\cookbook\forms.py:528 msgid "Reset all food to inherit the fields configured." msgstr "Herstel alle ingrediënten om de geconfigureerde velden over te nemen." -#: .\cookbook\forms.py:539 +#: .\cookbook\forms.py:540 msgid "Fields on food that should be inherited by default." msgstr "Velden van ingrediënten die standaard overgenomen moeten worden." -#: .\cookbook\forms.py:540 +#: .\cookbook\forms.py:541 msgid "Show recipe counts on search filters" msgstr "Toon recepten teller bij zoekfilters" -#: .\cookbook\forms.py:541 +#: .\cookbook\forms.py:542 msgid "Use the plural form for units and food inside this space." msgstr "Gebruik de meervoudsvorm voor eenheden en voedsel in deze ruimte." @@ -484,7 +484,7 @@ msgstr "" "minuten en probeer het opnieuw." #: .\cookbook\helper\permission_helper.py:164 -#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:114 +#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117 msgid "You are not logged in and therefore cannot view this page!" msgstr "Je bent niet ingelogd en kan deze pagina daarom niet bekijken!" @@ -497,7 +497,7 @@ msgstr "Je bent niet ingelogd en kan deze pagina daarom niet bekijken!" #: .\cookbook\helper\permission_helper.py:305 #: .\cookbook\helper\permission_helper.py:321 #: .\cookbook\helper\permission_helper.py:342 .\cookbook\views\data.py:36 -#: .\cookbook\views\views.py:125 .\cookbook\views\views.py:132 +#: .\cookbook\views\views.py:128 .\cookbook\views\views.py:135 msgid "You do not have the required permissions to view this page!" msgstr "Je hebt niet de benodigde machtigingen om deze pagina te bekijken!" @@ -517,11 +517,41 @@ msgstr "Je hebt het maximaal aantal recepten voor jouw ruimte bereikt." msgid "You have more users than allowed in your space." msgstr "Je hebt meer gebruikers dan toegestaan in jouw ruimte." -#: .\cookbook\helper\recipe_search.py:570 +#: .\cookbook\helper\recipe_search.py:630 msgid "One of queryset or hash_key must be provided" msgstr "Er moet een queryset of hash_key opgegeven worden" -#: .\cookbook\helper\shopping_helper.py:152 +#: .\cookbook\helper\recipe_url_import.py:266 +#, fuzzy +#| msgid "Use fractions" +msgid "reverse rotation" +msgstr "Gebruik fracties" + +#: .\cookbook\helper\recipe_url_import.py:267 +msgid "careful rotation" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:268 +msgid "knead" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:269 +msgid "thicken" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:270 +msgid "warm up" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:271 +msgid "ferment" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:272 +msgid "sous-vide" +msgstr "" + +#: .\cookbook\helper\shopping_helper.py:157 msgid "You must supply a servings size" msgstr "Je moet een portiegrootte aanleveren" @@ -539,14 +569,14 @@ msgstr "Favoriet" msgid "I made this" msgstr "Ik heb dit gemaakt" -#: .\cookbook\integration\integration.py:223 +#: .\cookbook\integration\integration.py:218 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" "De importtool verwachtte een .zip bestand. Heb je het juiste type gekozen?" -#: .\cookbook\integration\integration.py:226 +#: .\cookbook\integration\integration.py:221 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." @@ -554,24 +584,30 @@ msgstr "" "Er is een onverwachte fout opgetreden tijdens het importeren. Controleer of " "u een geldig bestand hebt geüpload." -#: .\cookbook\integration\integration.py:231 +#: .\cookbook\integration\integration.py:226 msgid "The following recipes were ignored because they already existed:" msgstr "De volgende recepten zijn genegeerd omdat ze al bestonden:" -#: .\cookbook\integration\integration.py:235 +#: .\cookbook\integration\integration.py:230 #, python-format msgid "Imported %s recipes." msgstr "%s recepten geïmporteerd." -#: .\cookbook\integration\paprika.py:46 +#: .\cookbook\integration\openeats.py:26 +#, fuzzy +#| msgid "Recipe Home" +msgid "Recipe source:" +msgstr "Recept thuis" + +#: .\cookbook\integration\paprika.py:49 msgid "Notes" msgstr "Notities" -#: .\cookbook\integration\paprika.py:49 +#: .\cookbook\integration\paprika.py:52 msgid "Nutritional Information" msgstr "Voedingswaarde" -#: .\cookbook\integration\paprika.py:53 +#: .\cookbook\integration\paprika.py:56 msgid "Source" msgstr "Bron" @@ -642,72 +678,72 @@ msgstr "" "Maximale bestandsopslag voor ruimte in MB. 0 voor onbeperkt, -1 om uploaden " "van bestanden uit te schakelen." -#: .\cookbook\models.py:364 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:365 .\cookbook\templates\search.html:7 #: .\cookbook\templates\settings.html:18 #: .\cookbook\templates\space_manage.html:7 msgid "Search" msgstr "Zoeken" -#: .\cookbook\models.py:365 .\cookbook\templates\base.html:110 +#: .\cookbook\models.py:366 .\cookbook\templates\base.html:110 #: .\cookbook\templates\meal_plan.html:7 .\cookbook\views\delete.py:178 #: .\cookbook\views\edit.py:211 .\cookbook\views\new.py:179 msgid "Meal-Plan" msgstr "Maaltijdplan" -#: .\cookbook\models.py:366 .\cookbook\templates\base.html:118 +#: .\cookbook\models.py:367 .\cookbook\templates\base.html:118 msgid "Books" msgstr "Boeken" -#: .\cookbook\models.py:579 +#: .\cookbook\models.py:580 msgid " is part of a recipe step and cannot be deleted" msgstr " is deel van een receptstap en kan niet verwijderd worden" -#: .\cookbook\models.py:1180 .\cookbook\templates\search_info.html:28 +#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:28 msgid "Simple" msgstr "Simpel" -#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:33 +#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:33 msgid "Phrase" msgstr "Zin" -#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:38 +#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:38 msgid "Web" msgstr "Web" -#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:47 +#: .\cookbook\models.py:1184 .\cookbook\templates\search_info.html:47 msgid "Raw" msgstr "Rauw" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Food Alias" msgstr "Ingrediënt alias" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Unit Alias" msgstr "Eenheid alias" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Keyword Alias" msgstr "Etiket alias" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Description Replace" msgstr "Verrvang beschrijving" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Instruction Replace" msgstr "Vervang instructies" -#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36 +#: .\cookbook\models.py:1258 .\cookbook\views\delete.py:36 #: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48 msgid "Recipe" msgstr "Recept" -#: .\cookbook\models.py:1258 +#: .\cookbook\models.py:1259 msgid "Food" msgstr "Ingrediënt" -#: .\cookbook\models.py:1259 .\cookbook\templates\base.html:141 +#: .\cookbook\models.py:1260 .\cookbook\templates\base.html:141 msgid "Keyword" msgstr "Etiket" @@ -723,48 +759,48 @@ msgstr "U heeft de uploadlimiet bereikt." msgid "Cannot modify Space owner permission." msgstr "Kan de rechten van de ruimte-eigenaar niet wijzigen." -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "Hello" msgstr "Hallo" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "You have been invited by " msgstr "Je bent uitgenodigd door " -#: .\cookbook\serializer.py:1086 +#: .\cookbook\serializer.py:1094 msgid " to join their Tandoor Recipes space " msgstr " om zijn/haar Tandoor Recepten ruimte " -#: .\cookbook\serializer.py:1087 +#: .\cookbook\serializer.py:1095 msgid "Click the following link to activate your account: " msgstr "Klik om de volgende link om je account te activeren: " -#: .\cookbook\serializer.py:1088 +#: .\cookbook\serializer.py:1096 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" "Als de linkt niet werkt, gebruik dan de volgende code om handmatig tot de " "ruimte toe te treden: " -#: .\cookbook\serializer.py:1089 +#: .\cookbook\serializer.py:1097 msgid "The invitation is valid until " msgstr "De uitnodiging is geldig tot " -#: .\cookbook\serializer.py:1090 +#: .\cookbook\serializer.py:1098 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" "Tandoor Recepten is een Open Source recepten manager. Bekijk het op GitHub " -#: .\cookbook\serializer.py:1093 +#: .\cookbook\serializer.py:1101 msgid "Tandoor Recipes Invite" msgstr "Tandoor Recepten uitnodiging" -#: .\cookbook\serializer.py:1234 +#: .\cookbook\serializer.py:1242 msgid "Existing shopping list to update" msgstr "Bestaande boodschappenlijst is bijgewerkt" -#: .\cookbook\serializer.py:1236 +#: .\cookbook\serializer.py:1244 msgid "" "List of ingredient IDs from the recipe to add, if not provided all " "ingredients will be added." @@ -772,22 +808,22 @@ msgstr "" "Lijst van ingrediënten ID's van het toe te voegen recept, als deze niet " "opgegeven worden worden alle ingrediënten toegevoegd." -#: .\cookbook\serializer.py:1238 +#: .\cookbook\serializer.py:1246 msgid "" "Providing a list_recipe ID and servings of 0 will delete that shopping list." msgstr "" "Als je een list_recipe ID en portiegrootte van 0 opgeeft wordt dat " "boodschappenlijstje verwijderd." -#: .\cookbook\serializer.py:1247 +#: .\cookbook\serializer.py:1255 msgid "Amount of food to add to the shopping list" msgstr "Hoeveelheid eten om aan het boodschappenlijstje toe te voegen" -#: .\cookbook\serializer.py:1249 +#: .\cookbook\serializer.py:1257 msgid "ID of unit to use for the shopping list" msgstr "ID of eenheid om te gebruik voor het boodschappenlijstje" -#: .\cookbook\serializer.py:1251 +#: .\cookbook\serializer.py:1259 msgid "When set to true will delete all food from active shopping lists." msgstr "" "Wanneer ingesteld op waar, wordt al het voedsel van actieve " @@ -1632,11 +1668,11 @@ msgstr "Terug" msgid "Profile" msgstr "Profiel" -#: .\cookbook\templates\recipe_view.html:26 +#: .\cookbook\templates\recipe_view.html:41 msgid "by" msgstr "door" -#: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:144 +#: .\cookbook\templates\recipe_view.html:59 .\cookbook\views\delete.py:144 #: .\cookbook\views\edit.py:171 msgid "Comment" msgstr "Opmerking" @@ -2275,85 +2311,85 @@ msgstr "" msgid "URL Import" msgstr "Importeer URL" -#: .\cookbook\views\api.py:109 .\cookbook\views\api.py:201 +#: .\cookbook\views\api.py:110 .\cookbook\views\api.py:202 msgid "Parameter updated_at incorrectly formatted" msgstr "Parameter updatet_at is onjuist geformateerd" -#: .\cookbook\views\api.py:221 .\cookbook\views\api.py:324 +#: .\cookbook\views\api.py:222 .\cookbook\views\api.py:325 #, python-brace-format msgid "No {self.basename} with id {pk} exists" msgstr "Er bestaat geen {self.basename} met id {pk}" -#: .\cookbook\views\api.py:225 +#: .\cookbook\views\api.py:226 msgid "Cannot merge with the same object!" msgstr "Kan niet met hetzelfde object samenvoegen!" -#: .\cookbook\views\api.py:232 +#: .\cookbook\views\api.py:233 #, python-brace-format msgid "No {self.basename} with id {target} exists" msgstr "Er bestaat geen {self.basename} met id {target}" -#: .\cookbook\views\api.py:237 +#: .\cookbook\views\api.py:238 msgid "Cannot merge with child object!" msgstr "Kan niet met kindobject samenvoegen!" -#: .\cookbook\views\api.py:270 +#: .\cookbook\views\api.py:271 #, python-brace-format msgid "{source.name} was merged successfully with {target.name}" msgstr "{source.name} is succesvol samengevoegd met {target.name}" -#: .\cookbook\views\api.py:275 +#: .\cookbook\views\api.py:276 #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" msgstr "" "Er is een error opgetreden bij het samenvoegen van {source.name} met {target." "name}" -#: .\cookbook\views\api.py:333 +#: .\cookbook\views\api.py:334 #, python-brace-format msgid "{child.name} was moved successfully to the root." msgstr "{child.name} is succesvol verplaatst naar het hoogste niveau." -#: .\cookbook\views\api.py:336 .\cookbook\views\api.py:354 +#: .\cookbook\views\api.py:337 .\cookbook\views\api.py:355 msgid "An error occurred attempting to move " msgstr "Er is een error opgetreden bij het verplaatsen " -#: .\cookbook\views\api.py:339 +#: .\cookbook\views\api.py:340 msgid "Cannot move an object to itself!" msgstr "Kan object niet verplaatsen naar zichzelf!" -#: .\cookbook\views\api.py:345 +#: .\cookbook\views\api.py:346 #, python-brace-format msgid "No {self.basename} with id {parent} exists" msgstr "Er bestaat geen {self.basename} met id {parent}" -#: .\cookbook\views\api.py:351 +#: .\cookbook\views\api.py:352 #, python-brace-format msgid "{child.name} was moved successfully to parent {parent.name}" msgstr "{child.name} is succesvol verplaatst naar {parent.name}" -#: .\cookbook\views\api.py:547 +#: .\cookbook\views\api.py:553 #, python-brace-format msgid "{obj.name} was removed from the shopping list." msgstr "{obj.name} is verwijderd van het boodschappenlijstje." -#: .\cookbook\views\api.py:552 .\cookbook\views\api.py:882 -#: .\cookbook\views\api.py:895 +#: .\cookbook\views\api.py:558 .\cookbook\views\api.py:888 +#: .\cookbook\views\api.py:901 #, python-brace-format msgid "{obj.name} was added to the shopping list." msgstr "{obj.name} is toegevoegd aan het boodschappenlijstje." -#: .\cookbook\views\api.py:679 +#: .\cookbook\views\api.py:685 msgid "ID of recipe a step is part of. For multiple repeat parameter." msgstr "" "ID van het recept waar de stap onderdeel van is. Herhaal parameter voor " "meerdere." -#: .\cookbook\views\api.py:681 +#: .\cookbook\views\api.py:687 msgid "Query string matched (fuzzy) against object name." msgstr "Zoekterm komt overeen (fuzzy) met object naam." -#: .\cookbook\views\api.py:725 +#: .\cookbook\views\api.py:731 msgid "" "Query string matched (fuzzy) against recipe name. In the future also " "fulltext search." @@ -2361,7 +2397,7 @@ msgstr "" "Zoekterm komt overeen (fuzzy) met recept naam. In de toekomst wordt zoeken " "op volledige tekst ondersteund." -#: .\cookbook\views\api.py:727 +#: .\cookbook\views\api.py:733 msgid "" "ID of keyword a recipe should have. For multiple repeat parameter. " "Equivalent to keywords_or" @@ -2369,109 +2405,109 @@ msgstr "" "ID van etiket dat een recept moet hebben. Herhaal parameter voor meerdere. " "Gelijkwaardig aan keywords_or" -#: .\cookbook\views\api.py:730 +#: .\cookbook\views\api.py:736 msgid "" "Keyword IDs, repeat for multiple. Return recipes with any of the keywords" msgstr "" "Etiket ID, herhaal voor meerdere. Geeft recepten met elk geselecteerd etiket " "weer" -#: .\cookbook\views\api.py:733 +#: .\cookbook\views\api.py:739 msgid "" "Keyword IDs, repeat for multiple. Return recipes with all of the keywords." msgstr "" "Etiket ID, herhaal voor meerdere. Geeft recepten met alle geselecteerde " "etiketten weer." -#: .\cookbook\views\api.py:736 +#: .\cookbook\views\api.py:742 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords." msgstr "" "Etiket ID, herhaal voor meerdere. Sluit recepten met één van de etiketten " "uit." -#: .\cookbook\views\api.py:739 +#: .\cookbook\views\api.py:745 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords." msgstr "" "Etiket ID, herhaal voor meerdere. Sluit recepten met alle etiketten uit." -#: .\cookbook\views\api.py:741 +#: .\cookbook\views\api.py:747 msgid "ID of food a recipe should have. For multiple repeat parameter." msgstr "" "ID van ingrediënt dat een recept moet hebben. Herhaal parameter voor " "meerdere." -#: .\cookbook\views\api.py:744 +#: .\cookbook\views\api.py:750 msgid "Food IDs, repeat for multiple. Return recipes with any of the foods" msgstr "" "Ingrediënt ID, herhaal voor meerdere. Geeft recepten met elk ingrediënt weer" -#: .\cookbook\views\api.py:746 +#: .\cookbook\views\api.py:752 msgid "Food IDs, repeat for multiple. Return recipes with all of the foods." msgstr "" "Ingrediënt ID, herhaal voor meerdere. Geef recepten met alle ingrediënten " "weer." -#: .\cookbook\views\api.py:748 +#: .\cookbook\views\api.py:754 msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods." msgstr "" "Ingrediënt ID, herhaal voor meerdere. sluit recepten met één van de " "ingrediënten uit." -#: .\cookbook\views\api.py:750 +#: .\cookbook\views\api.py:756 msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods." msgstr "" "Ingrediënt ID, herhaal voor meerdere. Sluit recepten met alle ingrediënten " "uit." -#: .\cookbook\views\api.py:751 +#: .\cookbook\views\api.py:757 msgid "ID of unit a recipe should have." msgstr "ID van eenheid dat een recept moet hebben." -#: .\cookbook\views\api.py:753 +#: .\cookbook\views\api.py:759 msgid "" "Rating a recipe should have or greater. [0 - 5] Negative value filters " "rating less than." msgstr "Een waardering van een recept gaat van 0 tot 5." -#: .\cookbook\views\api.py:754 +#: .\cookbook\views\api.py:760 msgid "ID of book a recipe should be in. For multiple repeat parameter." msgstr "" "ID van boek dat een recept moet hebben. Herhaal parameter voor meerdere." -#: .\cookbook\views\api.py:756 +#: .\cookbook\views\api.py:762 msgid "Book IDs, repeat for multiple. Return recipes with any of the books" msgstr "Boek ID, herhaal voor meerdere. Geeft recepten uit alle boeken weer" -#: .\cookbook\views\api.py:758 +#: .\cookbook\views\api.py:764 msgid "Book IDs, repeat for multiple. Return recipes with all of the books." msgstr "Boek IDs, herhaal voor meerdere. Geeft recepten weer uit alle boeken." -#: .\cookbook\views\api.py:760 +#: .\cookbook\views\api.py:766 msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books." msgstr "" "Boek IDs, herhaal voor meerdere. Sluit recepten uit elk van de boeken uit." -#: .\cookbook\views\api.py:762 +#: .\cookbook\views\api.py:768 msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books." msgstr "Boek IDs, herhaal voor meerdere. Sluit recepten uit alle boeken uit." -#: .\cookbook\views\api.py:764 +#: .\cookbook\views\api.py:770 msgid "If only internal recipes should be returned. [true/false]" msgstr "" "Wanneer alleen interne recepten gevonden moeten worden. [waar/onwaar]" -#: .\cookbook\views\api.py:766 +#: .\cookbook\views\api.py:772 msgid "Returns the results in randomized order. [true/false]" msgstr "" "Geeft de resultaten in willekeurige volgorde weer. [waar/onwaar]" -#: .\cookbook\views\api.py:768 +#: .\cookbook\views\api.py:774 msgid "Returns new results first in search results. [true/false]" msgstr "Geeft nieuwe resultaten eerst weer. [waar/onwaar]" -#: .\cookbook\views\api.py:770 +#: .\cookbook\views\api.py:776 msgid "" "Filter recipes cooked X times or more. Negative values returns cooked less " "than X times" @@ -2479,7 +2515,7 @@ msgstr "" "Filter recepten X maal of meer bereid. Negatieve waarden geven minder dan X " "keer bereide recepten weer" -#: .\cookbook\views\api.py:772 +#: .\cookbook\views\api.py:778 msgid "" "Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on " "or before date." @@ -2487,7 +2523,7 @@ msgstr "" "Filter recepten op laatst bereid op of na JJJJ-MM-DD. Voorafgaand - filters " "op of voor datum." -#: .\cookbook\views\api.py:774 +#: .\cookbook\views\api.py:780 msgid "" "Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or " "before date." @@ -2495,7 +2531,7 @@ msgstr "" "Filter recepten aangemaakt op of na JJJJ-MM-DD. Voorafgaand - filters op of " "voor datum." -#: .\cookbook\views\api.py:776 +#: .\cookbook\views\api.py:782 msgid "" "Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or " "before date." @@ -2503,7 +2539,7 @@ msgstr "" "Filter recepten op geüpdatet op of na JJJJ-MM-DD. Voorafgaand - filters op " "of voor datum." -#: .\cookbook\views\api.py:778 +#: .\cookbook\views\api.py:784 msgid "" "Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on " "or before date." @@ -2511,13 +2547,13 @@ msgstr "" "Filter recepten op laatst bekeken op of na JJJJ-MM-DD. Voorafgaand - filters " "op of voor datum." -#: .\cookbook\views\api.py:780 +#: .\cookbook\views\api.py:786 msgid "Filter recipes that can be made with OnHand food. [true/false]" msgstr "" "Filter recepten die bereid kunnen worden met ingrediënten die op voorraad " "zijn. [waar/onwaar]" -#: .\cookbook\views\api.py:940 +#: .\cookbook\views\api.py:946 msgid "" "Returns the shopping list entry with a primary key of id. Multiple values " "allowed." @@ -2525,7 +2561,7 @@ msgstr "" "Geeft het boodschappenlijstje item met een primaire sleutel van id. " "Meerdere waarden toegestaan." -#: .\cookbook\views\api.py:945 +#: .\cookbook\views\api.py:951 msgid "" "Filter shopping list entries on checked. [true, false, both, recent]
- recent includes unchecked items and recently completed items." @@ -2533,45 +2569,45 @@ msgstr "" "Filter boodschappenlijstjes op aangevinkt. [waar,onwaar,beide,recent]
- recent bevat niet aangevinkte en recent voltooide items." -#: .\cookbook\views\api.py:948 +#: .\cookbook\views\api.py:954 msgid "Returns the shopping list entries sorted by supermarket category order." msgstr "" "Geeft items op boodschappenlijstjes gesorteerd per supermarktcategorie weer." -#: .\cookbook\views\api.py:1160 +#: .\cookbook\views\api.py:1166 msgid "Nothing to do." msgstr "Niks te doen." -#: .\cookbook\views\api.py:1180 +#: .\cookbook\views\api.py:1198 msgid "Invalid Url" msgstr "Ongeldige URL" -#: .\cookbook\views\api.py:1187 +#: .\cookbook\views\api.py:1205 msgid "Connection Refused." msgstr "Verbinding geweigerd." -#: .\cookbook\views\api.py:1192 +#: .\cookbook\views\api.py:1210 msgid "Bad URL Schema." msgstr "Verkeerd URL schema." -#: .\cookbook\views\api.py:1215 +#: .\cookbook\views\api.py:1233 msgid "No usable data could be found." msgstr "Er is geen bruikbare data gevonden." -#: .\cookbook\views\api.py:1308 .\cookbook\views\import_export.py:114 +#: .\cookbook\views\api.py:1326 .\cookbook\views\import_export.py:117 msgid "Importing is not implemented for this provider" msgstr "Importeren is voor deze provider niet geïmplementeerd" -#: .\cookbook\views\api.py:1352 .\cookbook\views\data.py:31 +#: .\cookbook\views\api.py:1372 .\cookbook\views\data.py:31 #: .\cookbook\views\edit.py:120 .\cookbook\views\new.py:90 msgid "This feature is not yet available in the hosted version of tandoor!" msgstr "Deze optie is nog niet beschikbaar in de gehoste versie van Tandoor!" -#: .\cookbook\views\api.py:1374 +#: .\cookbook\views\api.py:1394 msgid "Sync successful!" msgstr "Synchronisatie succesvol!" -#: .\cookbook\views\api.py:1379 +#: .\cookbook\views\api.py:1399 msgid "Error synchronizing with Storage" msgstr "Er is een fout opgetreden bij het synchroniseren met Opslag" @@ -2634,7 +2670,7 @@ msgstr "Wijzigingen opgeslagen!" msgid "Error saving changes!" msgstr "Fout bij het opslaan van de wijzigingen!" -#: .\cookbook\views\import_export.py:101 +#: .\cookbook\views\import_export.py:104 msgid "" "The PDF Exporter is not enabled on this instance as it is still in an " "experimental state." @@ -2682,7 +2718,12 @@ msgstr "Nieuw recept geïmporteerd!" msgid "There was an error importing this recipe!" msgstr "Er is een fout opgetreden bij het importeren van dit recept!" -#: .\cookbook\views\views.py:86 +#: .\cookbook\views\views.py:73 .\cookbook\views\views.py:191 +#: .\cookbook\views\views.py:213 .\cookbook\views\views.py:399 +msgid "This feature is not available in the demo version!" +msgstr "Deze optie is niet beschikbaar in de demo versie!" + +#: .\cookbook\views\views.py:89 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." @@ -2690,24 +2731,19 @@ msgstr "" "Je hebt je eigen recepten ruimte succesvol aangemaakt. Start met het " "toevoegen van recepten of nodig anderen uit om je te vergezellen." -#: .\cookbook\views\views.py:140 +#: .\cookbook\views\views.py:143 msgid "You do not have the required permissions to perform this action!" msgstr "Je beschikt niet over de juiste rechten om deze actie uit te voeren!" -#: .\cookbook\views\views.py:151 +#: .\cookbook\views\views.py:154 msgid "Comment saved!" msgstr "Opmerking opgeslagen!" -#: .\cookbook\views\views.py:188 .\cookbook\views\views.py:210 -#: .\cookbook\views\views.py:396 -msgid "This feature is not available in the demo version!" -msgstr "Deze optie is niet beschikbaar in de demo versie!" - -#: .\cookbook\views\views.py:250 +#: .\cookbook\views\views.py:253 msgid "You must select at least one field to search!" msgstr "Je moet tenminste één veld om te doorzoeken selecteren!" -#: .\cookbook\views\views.py:255 +#: .\cookbook\views\views.py:258 msgid "" "To use this search method you must select at least one full text search " "field!" @@ -2715,11 +2751,11 @@ msgstr "" "Om deze zoekmethode te gebruiken moet je tenminste één volledig tekstveld " "selecteren!" -#: .\cookbook\views\views.py:259 +#: .\cookbook\views\views.py:262 msgid "Fuzzy search is not compatible with this search method!" msgstr "'Fuzzy' zoeken is niet te gebruiken met deze zoekmethode!" -#: .\cookbook\views\views.py:335 +#: .\cookbook\views\views.py:338 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2730,27 +2766,27 @@ msgstr "" "documentatie raad moeten plegen voor een methode om je wachtwoord te " "resetten." -#: .\cookbook\views\views.py:342 +#: .\cookbook\views\views.py:345 msgid "Passwords dont match!" msgstr "Wachtwoorden komen niet overeen!" -#: .\cookbook\views\views.py:350 +#: .\cookbook\views\views.py:353 msgid "User has been created, please login!" msgstr "Gebruiker is gecreëerd, Log in alstublieft!" -#: .\cookbook\views\views.py:366 +#: .\cookbook\views\views.py:369 msgid "Malformed Invite Link supplied!" msgstr "Onjuiste uitnodigingslink opgegeven!" -#: .\cookbook\views\views.py:383 +#: .\cookbook\views\views.py:386 msgid "Successfully joined space." msgstr "Succesvol toegetreden tot ruimte." -#: .\cookbook\views\views.py:389 +#: .\cookbook\views\views.py:392 msgid "Invite Link not valid or already used!" msgstr "De uitnodigingslink is niet valide of al gebruikt!" -#: .\cookbook\views\views.py:406 +#: .\cookbook\views\views.py:409 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." @@ -2758,7 +2794,7 @@ msgstr "" "Het rapporteren van gedeelde links is niet geactiveerd voor deze instantie. " "Rapporteer problemen bij de beheerder van de pagina." -#: .\cookbook\views\views.py:412 +#: .\cookbook\views\views.py:415 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/pt/LC_MESSAGES/django.po b/cookbook/locale/pt/LC_MESSAGES/django.po index 35e12000..b4108bba 100644 --- a/cookbook/locale/pt/LC_MESSAGES/django.po +++ b/cookbook/locale/pt/LC_MESSAGES/django.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: 2023-01-08 17:55+0000\n" "Last-Translator: Joachim Weber \n" "Language-Team: Portuguese /remote." "php/webdav/ is added automatically)" @@ -209,33 +209,33 @@ msgstr "" "Deixar vazio para Dropbox e inserir apenas url base para Nextcloud (/" "remote.php/webdav/é adicionado automaticamente). " -#: .\cookbook\forms.py:264 .\cookbook\views\edit.py:157 +#: .\cookbook\forms.py:265 .\cookbook\views\edit.py:157 msgid "Storage" msgstr "Armazenamento" -#: .\cookbook\forms.py:266 +#: .\cookbook\forms.py:267 msgid "Active" msgstr "Ativo" -#: .\cookbook\forms.py:272 +#: .\cookbook\forms.py:273 msgid "Search String" msgstr "Procurar" -#: .\cookbook\forms.py:299 +#: .\cookbook\forms.py:300 msgid "File ID" msgstr "ID the ficheiro" -#: .\cookbook\forms.py:321 +#: .\cookbook\forms.py:322 msgid "You must provide at least a recipe or a title." msgstr "É necessário inserir uma receita ou um título." -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:335 msgid "You can list default users to share recipes with in the settings." msgstr "" "É possível escolher os utilizadores com quem partilhar receitas por defeitos " "nas definições." -#: .\cookbook\forms.py:335 +#: .\cookbook\forms.py:336 msgid "" "You can use markdown to format this field. See the docs here" @@ -243,15 +243,15 @@ msgstr "" "É possível utilizar markdown para editar este campo. Documentação disponível aqui" -#: .\cookbook\forms.py:361 +#: .\cookbook\forms.py:362 msgid "Maximum number of users for this space reached." msgstr "Número máximo de utilizadores alcançado." -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:368 msgid "Email address already taken!" msgstr "Endereço email já utilizado!" -#: .\cookbook\forms.py:375 +#: .\cookbook\forms.py:376 msgid "" "An email address is not required but if present the invite link will be sent " "to the user." @@ -259,15 +259,15 @@ msgstr "" "Um endereço de email não é obrigatório mas se fornecido será enviada uma " "mensagem ao utilizador." -#: .\cookbook\forms.py:390 +#: .\cookbook\forms.py:391 msgid "Name already taken." msgstr "Nome já existente." -#: .\cookbook\forms.py:401 +#: .\cookbook\forms.py:402 msgid "Accept Terms and Privacy" msgstr "Aceitar Termos e Condições" -#: .\cookbook\forms.py:433 +#: .\cookbook\forms.py:434 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." @@ -276,7 +276,7 @@ msgstr "" "de semelhança de trigrama (valores mais baixos significam que mais erros são " "ignorados)." -#: .\cookbook\forms.py:443 +#: .\cookbook\forms.py:444 #, fuzzy #| msgid "" #| "Select type method of search. Click here " @@ -288,7 +288,7 @@ msgstr "" "Selecionar o método de pesquisa. Uma descrição completa das opções pode ser " "encontrada aqui." -#: .\cookbook\forms.py:444 +#: .\cookbook\forms.py:445 msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." @@ -296,7 +296,7 @@ msgstr "" "Utilizar correspondência difusa em unidades, palavras-chave e ingredientes " "ao editar e importar receitas." -#: .\cookbook\forms.py:446 +#: .\cookbook\forms.py:447 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" @@ -304,171 +304,171 @@ msgstr "" "Campos de pesquisa que ignoram pontuação. Esta opção pode aumentar ou " "diminuir a qualidade de pesquisa dependendo da língua em uso" -#: .\cookbook\forms.py:448 +#: .\cookbook\forms.py:449 msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" msgstr "" -#: .\cookbook\forms.py:450 +#: .\cookbook\forms.py:451 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" msgstr "" -#: .\cookbook\forms.py:452 +#: .\cookbook\forms.py:453 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 "" -#: .\cookbook\forms.py:454 +#: .\cookbook\forms.py:455 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." msgstr "" -#: .\cookbook\forms.py:458 +#: .\cookbook\forms.py:459 #, fuzzy #| msgid "Search" msgid "Search Method" msgstr "Procurar" -#: .\cookbook\forms.py:459 +#: .\cookbook\forms.py:460 msgid "Fuzzy Lookups" msgstr "" -#: .\cookbook\forms.py:460 +#: .\cookbook\forms.py:461 msgid "Ignore Accent" msgstr "" -#: .\cookbook\forms.py:461 +#: .\cookbook\forms.py:462 msgid "Partial Match" msgstr "" -#: .\cookbook\forms.py:462 +#: .\cookbook\forms.py:463 msgid "Starts With" msgstr "" -#: .\cookbook\forms.py:463 +#: .\cookbook\forms.py:464 #, fuzzy #| msgid "Search" msgid "Fuzzy Search" msgstr "Procurar" -#: .\cookbook\forms.py:464 +#: .\cookbook\forms.py:465 #, fuzzy #| msgid "Text" msgid "Full Text" msgstr "Texto" -#: .\cookbook\forms.py:489 +#: .\cookbook\forms.py:490 msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." msgstr "" -#: .\cookbook\forms.py:495 +#: .\cookbook\forms.py:496 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." msgstr "" -#: .\cookbook\forms.py:496 +#: .\cookbook\forms.py:497 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." msgstr "" -#: .\cookbook\forms.py:497 +#: .\cookbook\forms.py:498 msgid "Default number of hours to delay a shopping list entry." msgstr "" -#: .\cookbook\forms.py:498 +#: .\cookbook\forms.py:499 msgid "Filter shopping list to only include supermarket categories." msgstr "" -#: .\cookbook\forms.py:499 +#: .\cookbook\forms.py:500 msgid "Days of recent shopping list entries to display." msgstr "" -#: .\cookbook\forms.py:500 +#: .\cookbook\forms.py:501 msgid "Mark food 'On Hand' when checked off shopping list." msgstr "" -#: .\cookbook\forms.py:501 +#: .\cookbook\forms.py:502 msgid "Delimiter to use for CSV exports." msgstr "" -#: .\cookbook\forms.py:502 +#: .\cookbook\forms.py:503 msgid "Prefix to add when copying list to the clipboard." msgstr "" -#: .\cookbook\forms.py:506 +#: .\cookbook\forms.py:507 #, fuzzy #| msgid "Shopping" msgid "Share Shopping List" msgstr "Compras" -#: .\cookbook\forms.py:507 +#: .\cookbook\forms.py:508 msgid "Autosync" msgstr "" -#: .\cookbook\forms.py:508 +#: .\cookbook\forms.py:509 msgid "Auto Add Meal Plan" msgstr "" -#: .\cookbook\forms.py:509 +#: .\cookbook\forms.py:510 msgid "Exclude On Hand" msgstr "" -#: .\cookbook\forms.py:510 +#: .\cookbook\forms.py:511 msgid "Include Related" msgstr "" -#: .\cookbook\forms.py:511 +#: .\cookbook\forms.py:512 msgid "Default Delay Hours" msgstr "" -#: .\cookbook\forms.py:512 +#: .\cookbook\forms.py:513 msgid "Filter to Supermarket" msgstr "" -#: .\cookbook\forms.py:513 +#: .\cookbook\forms.py:514 msgid "Recent Days" msgstr "" -#: .\cookbook\forms.py:514 +#: .\cookbook\forms.py:515 msgid "CSV Delimiter" msgstr "" -#: .\cookbook\forms.py:515 +#: .\cookbook\forms.py:516 msgid "List Prefix" msgstr "" -#: .\cookbook\forms.py:516 +#: .\cookbook\forms.py:517 msgid "Auto On Hand" msgstr "" -#: .\cookbook\forms.py:526 +#: .\cookbook\forms.py:527 msgid "Reset Food Inheritance" msgstr "" -#: .\cookbook\forms.py:527 +#: .\cookbook\forms.py:528 msgid "Reset all food to inherit the fields configured." msgstr "" -#: .\cookbook\forms.py:539 +#: .\cookbook\forms.py:540 #, fuzzy #| msgid "Food that should be replaced." msgid "Fields on food that should be inherited by default." msgstr "Prato a ser alterado." -#: .\cookbook\forms.py:540 +#: .\cookbook\forms.py:541 msgid "Show recipe counts on search filters" msgstr "Mostrar receitas recentes na página de pesquisa" -#: .\cookbook\forms.py:541 +#: .\cookbook\forms.py:542 msgid "Use the plural form for units and food inside this space." msgstr "" @@ -479,7 +479,7 @@ msgid "" msgstr "" #: .\cookbook\helper\permission_helper.py:164 -#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:114 +#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117 msgid "You are not logged in and therefore cannot view this page!" msgstr "Autenticação necessária para aceder a esta página!" @@ -492,7 +492,7 @@ msgstr "Autenticação necessária para aceder a esta página!" #: .\cookbook\helper\permission_helper.py:305 #: .\cookbook\helper\permission_helper.py:321 #: .\cookbook\helper\permission_helper.py:342 .\cookbook\views\data.py:36 -#: .\cookbook\views\views.py:125 .\cookbook\views\views.py:132 +#: .\cookbook\views\views.py:128 .\cookbook\views\views.py:135 msgid "You do not have the required permissions to view this page!" msgstr "Sem permissões para aceder a esta página!" @@ -511,11 +511,41 @@ msgstr "" msgid "You have more users than allowed in your space." msgstr "" -#: .\cookbook\helper\recipe_search.py:570 +#: .\cookbook\helper\recipe_search.py:630 msgid "One of queryset or hash_key must be provided" msgstr "" -#: .\cookbook\helper\shopping_helper.py:152 +#: .\cookbook\helper\recipe_url_import.py:266 +#, fuzzy +#| msgid "Use fractions" +msgid "reverse rotation" +msgstr "Usar frações" + +#: .\cookbook\helper\recipe_url_import.py:267 +msgid "careful rotation" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:268 +msgid "knead" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:269 +msgid "thicken" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:270 +msgid "warm up" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:271 +msgid "ferment" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:272 +msgid "sous-vide" +msgstr "" + +#: .\cookbook\helper\shopping_helper.py:157 msgid "You must supply a servings size" msgstr "É necessário inserir uma receita ou um título" @@ -533,38 +563,44 @@ msgstr "" msgid "I made this" msgstr "" -#: .\cookbook\integration\integration.py:223 +#: .\cookbook\integration\integration.py:218 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:226 +#: .\cookbook\integration\integration.py:221 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" -#: .\cookbook\integration\integration.py:231 +#: .\cookbook\integration\integration.py:226 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:235 +#: .\cookbook\integration\integration.py:230 #, python-format msgid "Imported %s recipes." msgstr "%s receitas importadas." -#: .\cookbook\integration\paprika.py:46 +#: .\cookbook\integration\openeats.py:26 +#, fuzzy +#| msgid "Recipes" +msgid "Recipe source:" +msgstr "Receitas" + +#: .\cookbook\integration\paprika.py:49 #, fuzzy #| msgid "Note" msgid "Notes" msgstr "Nota" -#: .\cookbook\integration\paprika.py:49 +#: .\cookbook\integration\paprika.py:52 msgid "Nutritional Information" msgstr "" -#: .\cookbook\integration\paprika.py:53 +#: .\cookbook\integration\paprika.py:56 msgid "Source" msgstr "" @@ -633,82 +669,82 @@ msgid "" "upload." msgstr "" -#: .\cookbook\models.py:364 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:365 .\cookbook\templates\search.html:7 #: .\cookbook\templates\settings.html:18 #: .\cookbook\templates\space_manage.html:7 msgid "Search" msgstr "Procurar" -#: .\cookbook\models.py:365 .\cookbook\templates\base.html:110 +#: .\cookbook\models.py:366 .\cookbook\templates\base.html:110 #: .\cookbook\templates\meal_plan.html:7 .\cookbook\views\delete.py:178 #: .\cookbook\views\edit.py:211 .\cookbook\views\new.py:179 msgid "Meal-Plan" msgstr "Plano de refeição" -#: .\cookbook\models.py:366 .\cookbook\templates\base.html:118 +#: .\cookbook\models.py:367 .\cookbook\templates\base.html:118 msgid "Books" msgstr "Livros" -#: .\cookbook\models.py:579 +#: .\cookbook\models.py:580 msgid " is part of a recipe step and cannot be deleted" msgstr "" -#: .\cookbook\models.py:1180 .\cookbook\templates\search_info.html:28 +#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:28 msgid "Simple" msgstr "" -#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:33 +#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:33 msgid "Phrase" msgstr "" -#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:38 +#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:38 msgid "Web" msgstr "" -#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:47 +#: .\cookbook\models.py:1184 .\cookbook\templates\search_info.html:47 msgid "Raw" msgstr "" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 #, fuzzy #| msgid "New Food" msgid "Food Alias" msgstr "Novo Prato" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 #, fuzzy #| msgid "Units" msgid "Unit Alias" msgstr "Unidades" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 #, fuzzy #| msgid "Keywords" msgid "Keyword Alias" msgstr "Palavras-chave" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Description Replace" msgstr "" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 #, fuzzy #| msgid "Instructions" msgid "Instruction Replace" msgstr "Instruções" -#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36 +#: .\cookbook\models.py:1258 .\cookbook\views\delete.py:36 #: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48 msgid "Recipe" msgstr "Receita" -#: .\cookbook\models.py:1258 +#: .\cookbook\models.py:1259 #, fuzzy #| msgid "New Food" msgid "Food" msgstr "Novo Prato" -#: .\cookbook\models.py:1259 .\cookbook\templates\base.html:141 +#: .\cookbook\models.py:1260 .\cookbook\templates\base.html:141 msgid "Keyword" msgstr "Palavra-chave" @@ -724,64 +760,64 @@ msgstr "" msgid "Cannot modify Space owner permission." msgstr "" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "Hello" msgstr "" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "You have been invited by " msgstr "" -#: .\cookbook\serializer.py:1086 +#: .\cookbook\serializer.py:1094 msgid " to join their Tandoor Recipes space " msgstr "" -#: .\cookbook\serializer.py:1087 +#: .\cookbook\serializer.py:1095 msgid "Click the following link to activate your account: " msgstr "" -#: .\cookbook\serializer.py:1088 +#: .\cookbook\serializer.py:1096 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" -#: .\cookbook\serializer.py:1089 +#: .\cookbook\serializer.py:1097 msgid "The invitation is valid until " msgstr "" -#: .\cookbook\serializer.py:1090 +#: .\cookbook\serializer.py:1098 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -#: .\cookbook\serializer.py:1093 +#: .\cookbook\serializer.py:1101 msgid "Tandoor Recipes Invite" msgstr "" -#: .\cookbook\serializer.py:1234 +#: .\cookbook\serializer.py:1242 msgid "Existing shopping list to update" msgstr "" -#: .\cookbook\serializer.py:1236 +#: .\cookbook\serializer.py:1244 msgid "" "List of ingredient IDs from the recipe to add, if not provided all " "ingredients will be added." msgstr "" -#: .\cookbook\serializer.py:1238 +#: .\cookbook\serializer.py:1246 msgid "" "Providing a list_recipe ID and servings of 0 will delete that shopping list." msgstr "" -#: .\cookbook\serializer.py:1247 +#: .\cookbook\serializer.py:1255 msgid "Amount of food to add to the shopping list" msgstr "" -#: .\cookbook\serializer.py:1249 +#: .\cookbook\serializer.py:1257 msgid "ID of unit to use for the shopping list" msgstr "" -#: .\cookbook\serializer.py:1251 +#: .\cookbook\serializer.py:1259 msgid "When set to true will delete all food from active shopping lists." msgstr "" @@ -1614,11 +1650,11 @@ msgstr "" msgid "Profile" msgstr "" -#: .\cookbook\templates\recipe_view.html:26 +#: .\cookbook\templates\recipe_view.html:41 msgid "by" msgstr "por" -#: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:144 +#: .\cookbook\templates\recipe_view.html:59 .\cookbook\views\delete.py:144 #: .\cookbook\views\edit.py:171 msgid "Comment" msgstr "" @@ -2108,258 +2144,258 @@ msgstr "" msgid "URL Import" msgstr "" -#: .\cookbook\views\api.py:109 .\cookbook\views\api.py:201 +#: .\cookbook\views\api.py:110 .\cookbook\views\api.py:202 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:221 .\cookbook\views\api.py:324 +#: .\cookbook\views\api.py:222 .\cookbook\views\api.py:325 #, python-brace-format msgid "No {self.basename} with id {pk} exists" msgstr "" -#: .\cookbook\views\api.py:225 +#: .\cookbook\views\api.py:226 msgid "Cannot merge with the same object!" msgstr "" -#: .\cookbook\views\api.py:232 +#: .\cookbook\views\api.py:233 #, python-brace-format msgid "No {self.basename} with id {target} exists" msgstr "" -#: .\cookbook\views\api.py:237 +#: .\cookbook\views\api.py:238 msgid "Cannot merge with child object!" msgstr "" -#: .\cookbook\views\api.py:270 +#: .\cookbook\views\api.py:271 #, python-brace-format msgid "{source.name} was merged successfully with {target.name}" msgstr "" -#: .\cookbook\views\api.py:275 +#: .\cookbook\views\api.py:276 #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" msgstr "" -#: .\cookbook\views\api.py:333 +#: .\cookbook\views\api.py:334 #, python-brace-format msgid "{child.name} was moved successfully to the root." msgstr "" -#: .\cookbook\views\api.py:336 .\cookbook\views\api.py:354 +#: .\cookbook\views\api.py:337 .\cookbook\views\api.py:355 msgid "An error occurred attempting to move " msgstr "" -#: .\cookbook\views\api.py:339 +#: .\cookbook\views\api.py:340 msgid "Cannot move an object to itself!" msgstr "" -#: .\cookbook\views\api.py:345 +#: .\cookbook\views\api.py:346 #, python-brace-format msgid "No {self.basename} with id {parent} exists" msgstr "" -#: .\cookbook\views\api.py:351 +#: .\cookbook\views\api.py:352 #, python-brace-format msgid "{child.name} was moved successfully to parent {parent.name}" msgstr "" -#: .\cookbook\views\api.py:547 +#: .\cookbook\views\api.py:553 #, python-brace-format msgid "{obj.name} was removed from the shopping list." msgstr "" -#: .\cookbook\views\api.py:552 .\cookbook\views\api.py:882 -#: .\cookbook\views\api.py:895 +#: .\cookbook\views\api.py:558 .\cookbook\views\api.py:888 +#: .\cookbook\views\api.py:901 #, python-brace-format msgid "{obj.name} was added to the shopping list." msgstr "" -#: .\cookbook\views\api.py:679 +#: .\cookbook\views\api.py:685 msgid "ID of recipe a step is part of. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:681 +#: .\cookbook\views\api.py:687 msgid "Query string matched (fuzzy) against object name." msgstr "" -#: .\cookbook\views\api.py:725 +#: .\cookbook\views\api.py:731 msgid "" "Query string matched (fuzzy) against recipe name. In the future also " "fulltext search." msgstr "" -#: .\cookbook\views\api.py:727 +#: .\cookbook\views\api.py:733 msgid "" "ID of keyword a recipe should have. For multiple repeat parameter. " "Equivalent to keywords_or" msgstr "" -#: .\cookbook\views\api.py:730 +#: .\cookbook\views\api.py:736 msgid "" "Keyword IDs, repeat for multiple. Return recipes with any of the keywords" msgstr "" -#: .\cookbook\views\api.py:733 +#: .\cookbook\views\api.py:739 msgid "" "Keyword IDs, repeat for multiple. Return recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:736 +#: .\cookbook\views\api.py:742 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords." msgstr "" -#: .\cookbook\views\api.py:739 +#: .\cookbook\views\api.py:745 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:741 +#: .\cookbook\views\api.py:747 msgid "ID of food a recipe should have. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:744 +#: .\cookbook\views\api.py:750 msgid "Food IDs, repeat for multiple. Return recipes with any of the foods" msgstr "" -#: .\cookbook\views\api.py:746 +#: .\cookbook\views\api.py:752 msgid "Food IDs, repeat for multiple. Return recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:748 +#: .\cookbook\views\api.py:754 msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods." msgstr "" -#: .\cookbook\views\api.py:750 +#: .\cookbook\views\api.py:756 msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:751 +#: .\cookbook\views\api.py:757 msgid "ID of unit a recipe should have." msgstr "" -#: .\cookbook\views\api.py:753 +#: .\cookbook\views\api.py:759 msgid "" "Rating a recipe should have or greater. [0 - 5] Negative value filters " "rating less than." msgstr "" -#: .\cookbook\views\api.py:754 +#: .\cookbook\views\api.py:760 msgid "ID of book a recipe should be in. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:756 +#: .\cookbook\views\api.py:762 msgid "Book IDs, repeat for multiple. Return recipes with any of the books" msgstr "" -#: .\cookbook\views\api.py:758 +#: .\cookbook\views\api.py:764 msgid "Book IDs, repeat for multiple. Return recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:760 +#: .\cookbook\views\api.py:766 msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books." msgstr "" -#: .\cookbook\views\api.py:762 +#: .\cookbook\views\api.py:768 msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:764 +#: .\cookbook\views\api.py:770 msgid "If only internal recipes should be returned. [true/false]" msgstr "" -#: .\cookbook\views\api.py:766 +#: .\cookbook\views\api.py:772 msgid "Returns the results in randomized order. [true/false]" msgstr "" -#: .\cookbook\views\api.py:768 +#: .\cookbook\views\api.py:774 msgid "Returns new results first in search results. [true/false]" msgstr "" -#: .\cookbook\views\api.py:770 +#: .\cookbook\views\api.py:776 msgid "" "Filter recipes cooked X times or more. Negative values returns cooked less " "than X times" msgstr "" -#: .\cookbook\views\api.py:772 +#: .\cookbook\views\api.py:778 msgid "" "Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:774 +#: .\cookbook\views\api.py:780 msgid "" "Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:776 +#: .\cookbook\views\api.py:782 msgid "" "Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:778 +#: .\cookbook\views\api.py:784 msgid "" "Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:780 +#: .\cookbook\views\api.py:786 msgid "Filter recipes that can be made with OnHand food. [true/false]" msgstr "" -#: .\cookbook\views\api.py:940 +#: .\cookbook\views\api.py:946 msgid "" "Returns the shopping list entry with a primary key of id. Multiple values " "allowed." msgstr "" -#: .\cookbook\views\api.py:945 +#: .\cookbook\views\api.py:951 msgid "" "Filter shopping list entries on checked. [true, false, both, recent]
- recent includes unchecked items and recently completed items." msgstr "" -#: .\cookbook\views\api.py:948 +#: .\cookbook\views\api.py:954 msgid "Returns the shopping list entries sorted by supermarket category order." msgstr "" -#: .\cookbook\views\api.py:1160 +#: .\cookbook\views\api.py:1166 msgid "Nothing to do." msgstr "" -#: .\cookbook\views\api.py:1180 +#: .\cookbook\views\api.py:1198 msgid "Invalid Url" msgstr "" -#: .\cookbook\views\api.py:1187 +#: .\cookbook\views\api.py:1205 msgid "Connection Refused." msgstr "" -#: .\cookbook\views\api.py:1192 +#: .\cookbook\views\api.py:1210 msgid "Bad URL Schema." msgstr "" -#: .\cookbook\views\api.py:1215 +#: .\cookbook\views\api.py:1233 msgid "No usable data could be found." msgstr "" -#: .\cookbook\views\api.py:1308 .\cookbook\views\import_export.py:114 +#: .\cookbook\views\api.py:1326 .\cookbook\views\import_export.py:117 msgid "Importing is not implemented for this provider" msgstr "" -#: .\cookbook\views\api.py:1352 .\cookbook\views\data.py:31 +#: .\cookbook\views\api.py:1372 .\cookbook\views\data.py:31 #: .\cookbook\views\edit.py:120 .\cookbook\views\new.py:90 msgid "This feature is not yet available in the hosted version of tandoor!" msgstr "" -#: .\cookbook\views\api.py:1374 +#: .\cookbook\views\api.py:1394 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:1379 +#: .\cookbook\views\api.py:1399 msgid "Error synchronizing with Storage" msgstr "" @@ -2420,7 +2456,7 @@ msgstr "" msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\import_export.py:101 +#: .\cookbook\views\import_export.py:104 msgid "" "The PDF Exporter is not enabled on this instance as it is still in an " "experimental state." @@ -2468,73 +2504,73 @@ msgstr "" msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\views.py:86 +#: .\cookbook\views\views.py:73 .\cookbook\views\views.py:191 +#: .\cookbook\views\views.py:213 .\cookbook\views\views.py:399 +msgid "This feature is not available in the demo version!" +msgstr "" + +#: .\cookbook\views\views.py:89 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" -#: .\cookbook\views\views.py:140 +#: .\cookbook\views\views.py:143 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:151 +#: .\cookbook\views\views.py:154 msgid "Comment saved!" msgstr "" -#: .\cookbook\views\views.py:188 .\cookbook\views\views.py:210 -#: .\cookbook\views\views.py:396 -msgid "This feature is not available in the demo version!" -msgstr "" - -#: .\cookbook\views\views.py:250 +#: .\cookbook\views\views.py:253 msgid "You must select at least one field to search!" msgstr "" -#: .\cookbook\views\views.py:255 +#: .\cookbook\views\views.py:258 msgid "" "To use this search method you must select at least one full text search " "field!" msgstr "" -#: .\cookbook\views\views.py:259 +#: .\cookbook\views\views.py:262 msgid "Fuzzy search is not compatible with this search method!" msgstr "" -#: .\cookbook\views\views.py:335 +#: .\cookbook\views\views.py:338 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:342 +#: .\cookbook\views\views.py:345 msgid "Passwords dont match!" msgstr "" -#: .\cookbook\views\views.py:350 +#: .\cookbook\views\views.py:353 msgid "User has been created, please login!" msgstr "" -#: .\cookbook\views\views.py:366 +#: .\cookbook\views\views.py:369 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:383 +#: .\cookbook\views\views.py:386 msgid "Successfully joined space." msgstr "" -#: .\cookbook\views\views.py:389 +#: .\cookbook\views\views.py:392 msgid "Invite Link not valid or already used!" msgstr "" -#: .\cookbook\views\views.py:406 +#: .\cookbook\views\views.py:409 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:412 +#: .\cookbook\views\views.py:415 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/pt_BR/LC_MESSAGES/django.mo b/cookbook/locale/pt_BR/LC_MESSAGES/django.mo index fd3ed3ef..181b78e7 100644 Binary files a/cookbook/locale/pt_BR/LC_MESSAGES/django.mo and b/cookbook/locale/pt_BR/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/pt_BR/LC_MESSAGES/django.po b/cookbook/locale/pt_BR/LC_MESSAGES/django.po index 2c96227d..c3eff99e 100644 --- a/cookbook/locale/pt_BR/LC_MESSAGES/django.po +++ b/cookbook/locale/pt_BR/LC_MESSAGES/django.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-02-11 08:52+0100\n" -"PO-Revision-Date: 2023-02-18 10:55+0000\n" -"Last-Translator: Joachim Weber \n" +"PO-Revision-Date: 2023-04-12 11:55+0000\n" +"Last-Translator: noxonad \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" @@ -2208,7 +2208,7 @@ msgstr "" #: .\cookbook\templates\url_import.html:38 msgid "URL" -msgstr "" +msgstr "URL" #: .\cookbook\templates\url_import.html:40 msgid "App" diff --git a/cookbook/locale/rn/LC_MESSAGES/django.po b/cookbook/locale/rn/LC_MESSAGES/django.po index 67073611..3ddfac8a 100644 --- a/cookbook/locale/rn/LC_MESSAGES/django.po +++ b/cookbook/locale/rn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -58,7 +58,7 @@ msgstr "" msgid "Shopping list auto sync period" msgstr "" -#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:21 +#: .\cookbook\forms.py:62 .\cookbook\templates\recipe_view.html:36 msgid "Comments" msgstr "" @@ -102,7 +102,7 @@ msgstr "" msgid "If you want to be able to create and see comments underneath recipes." msgstr "" -#: .\cookbook\forms.py:79 .\cookbook\forms.py:491 +#: .\cookbook\forms.py:79 .\cookbook\forms.py:492 msgid "" "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. " @@ -114,7 +114,7 @@ msgstr "" msgid "Makes the navbar stick to the top of the page." msgstr "" -#: .\cookbook\forms.py:83 .\cookbook\forms.py:494 +#: .\cookbook\forms.py:83 .\cookbook\forms.py:495 msgid "Automatically add meal plan ingredients to shopping list." msgstr "" @@ -132,11 +132,11 @@ msgid "" "instead" msgstr "" -#: .\cookbook\forms.py:123 .\cookbook\forms.py:296 +#: .\cookbook\forms.py:123 .\cookbook\forms.py:297 msgid "Name" msgstr "" -#: .\cookbook\forms.py:124 .\cookbook\forms.py:297 .\cookbook\views\lists.py:88 +#: .\cookbook\forms.py:124 .\cookbook\forms.py:298 .\cookbook\views\lists.py:88 msgid "Keywords" msgstr "" @@ -148,7 +148,7 @@ msgstr "" msgid "Waiting time (cooking/baking) in minutes" msgstr "" -#: .\cookbook\forms.py:127 .\cookbook\forms.py:265 .\cookbook\forms.py:298 +#: .\cookbook\forms.py:127 .\cookbook\forms.py:266 .\cookbook\forms.py:299 msgid "Path" msgstr "" @@ -156,265 +156,265 @@ msgstr "" msgid "Storage UID" msgstr "" -#: .\cookbook\forms.py:160 +#: .\cookbook\forms.py:161 msgid "Default" msgstr "" -#: .\cookbook\forms.py:172 +#: .\cookbook\forms.py:173 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" -#: .\cookbook\forms.py:195 +#: .\cookbook\forms.py:196 msgid "Add your comment: " msgstr "" -#: .\cookbook\forms.py:210 +#: .\cookbook\forms.py:211 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" -#: .\cookbook\forms.py:217 +#: .\cookbook\forms.py:218 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" -#: .\cookbook\forms.py:226 +#: .\cookbook\forms.py:227 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" msgstr "" -#: .\cookbook\forms.py:264 .\cookbook\views\edit.py:157 +#: .\cookbook\forms.py:265 .\cookbook\views\edit.py:157 msgid "Storage" msgstr "" -#: .\cookbook\forms.py:266 +#: .\cookbook\forms.py:267 msgid "Active" msgstr "" -#: .\cookbook\forms.py:272 +#: .\cookbook\forms.py:273 msgid "Search String" msgstr "" -#: .\cookbook\forms.py:299 +#: .\cookbook\forms.py:300 msgid "File ID" msgstr "" -#: .\cookbook\forms.py:321 +#: .\cookbook\forms.py:322 msgid "You must provide at least a recipe or a title." msgstr "" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:335 msgid "You can list default users to share recipes with in the settings." msgstr "" -#: .\cookbook\forms.py:335 +#: .\cookbook\forms.py:336 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" -#: .\cookbook\forms.py:361 +#: .\cookbook\forms.py:362 msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:368 msgid "Email address already taken!" msgstr "" -#: .\cookbook\forms.py:375 +#: .\cookbook\forms.py:376 msgid "" "An email address is not required but if present the invite link will be sent " "to the user." msgstr "" -#: .\cookbook\forms.py:390 +#: .\cookbook\forms.py:391 msgid "Name already taken." msgstr "" -#: .\cookbook\forms.py:401 +#: .\cookbook\forms.py:402 msgid "Accept Terms and Privacy" msgstr "" -#: .\cookbook\forms.py:433 +#: .\cookbook\forms.py:434 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." msgstr "" -#: .\cookbook\forms.py:443 +#: .\cookbook\forms.py:444 msgid "" "Select type method of search. Click here for " "full description of choices." msgstr "" -#: .\cookbook\forms.py:444 +#: .\cookbook\forms.py:445 msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." msgstr "" -#: .\cookbook\forms.py:446 +#: .\cookbook\forms.py:447 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" msgstr "" -#: .\cookbook\forms.py:448 +#: .\cookbook\forms.py:449 msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" msgstr "" -#: .\cookbook\forms.py:450 +#: .\cookbook\forms.py:451 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" msgstr "" -#: .\cookbook\forms.py:452 +#: .\cookbook\forms.py:453 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 "" -#: .\cookbook\forms.py:454 +#: .\cookbook\forms.py:455 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." msgstr "" -#: .\cookbook\forms.py:458 +#: .\cookbook\forms.py:459 msgid "Search Method" msgstr "" -#: .\cookbook\forms.py:459 +#: .\cookbook\forms.py:460 msgid "Fuzzy Lookups" msgstr "" -#: .\cookbook\forms.py:460 +#: .\cookbook\forms.py:461 msgid "Ignore Accent" msgstr "" -#: .\cookbook\forms.py:461 +#: .\cookbook\forms.py:462 msgid "Partial Match" msgstr "" -#: .\cookbook\forms.py:462 +#: .\cookbook\forms.py:463 msgid "Starts With" msgstr "" -#: .\cookbook\forms.py:463 +#: .\cookbook\forms.py:464 msgid "Fuzzy Search" msgstr "" -#: .\cookbook\forms.py:464 +#: .\cookbook\forms.py:465 msgid "Full Text" msgstr "" -#: .\cookbook\forms.py:489 +#: .\cookbook\forms.py:490 msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." msgstr "" -#: .\cookbook\forms.py:495 +#: .\cookbook\forms.py:496 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." msgstr "" -#: .\cookbook\forms.py:496 +#: .\cookbook\forms.py:497 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." msgstr "" -#: .\cookbook\forms.py:497 +#: .\cookbook\forms.py:498 msgid "Default number of hours to delay a shopping list entry." msgstr "" -#: .\cookbook\forms.py:498 +#: .\cookbook\forms.py:499 msgid "Filter shopping list to only include supermarket categories." msgstr "" -#: .\cookbook\forms.py:499 +#: .\cookbook\forms.py:500 msgid "Days of recent shopping list entries to display." msgstr "" -#: .\cookbook\forms.py:500 +#: .\cookbook\forms.py:501 msgid "Mark food 'On Hand' when checked off shopping list." msgstr "" -#: .\cookbook\forms.py:501 +#: .\cookbook\forms.py:502 msgid "Delimiter to use for CSV exports." msgstr "" -#: .\cookbook\forms.py:502 +#: .\cookbook\forms.py:503 msgid "Prefix to add when copying list to the clipboard." msgstr "" -#: .\cookbook\forms.py:506 +#: .\cookbook\forms.py:507 msgid "Share Shopping List" msgstr "" -#: .\cookbook\forms.py:507 +#: .\cookbook\forms.py:508 msgid "Autosync" msgstr "" -#: .\cookbook\forms.py:508 +#: .\cookbook\forms.py:509 msgid "Auto Add Meal Plan" msgstr "" -#: .\cookbook\forms.py:509 +#: .\cookbook\forms.py:510 msgid "Exclude On Hand" msgstr "" -#: .\cookbook\forms.py:510 +#: .\cookbook\forms.py:511 msgid "Include Related" msgstr "" -#: .\cookbook\forms.py:511 +#: .\cookbook\forms.py:512 msgid "Default Delay Hours" msgstr "" -#: .\cookbook\forms.py:512 +#: .\cookbook\forms.py:513 msgid "Filter to Supermarket" msgstr "" -#: .\cookbook\forms.py:513 +#: .\cookbook\forms.py:514 msgid "Recent Days" msgstr "" -#: .\cookbook\forms.py:514 +#: .\cookbook\forms.py:515 msgid "CSV Delimiter" msgstr "" -#: .\cookbook\forms.py:515 +#: .\cookbook\forms.py:516 msgid "List Prefix" msgstr "" -#: .\cookbook\forms.py:516 +#: .\cookbook\forms.py:517 msgid "Auto On Hand" msgstr "" -#: .\cookbook\forms.py:526 +#: .\cookbook\forms.py:527 msgid "Reset Food Inheritance" msgstr "" -#: .\cookbook\forms.py:527 +#: .\cookbook\forms.py:528 msgid "Reset all food to inherit the fields configured." msgstr "" -#: .\cookbook\forms.py:539 +#: .\cookbook\forms.py:540 msgid "Fields on food that should be inherited by default." msgstr "" -#: .\cookbook\forms.py:540 +#: .\cookbook\forms.py:541 msgid "Show recipe counts on search filters" msgstr "" -#: .\cookbook\forms.py:541 +#: .\cookbook\forms.py:542 msgid "Use the plural form for units and food inside this space." msgstr "" @@ -425,7 +425,7 @@ msgid "" msgstr "" #: .\cookbook\helper\permission_helper.py:164 -#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:114 +#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117 msgid "You are not logged in and therefore cannot view this page!" msgstr "" @@ -438,7 +438,7 @@ msgstr "" #: .\cookbook\helper\permission_helper.py:305 #: .\cookbook\helper\permission_helper.py:321 #: .\cookbook\helper\permission_helper.py:342 .\cookbook\views\data.py:36 -#: .\cookbook\views\views.py:125 .\cookbook\views\views.py:132 +#: .\cookbook\views\views.py:128 .\cookbook\views\views.py:135 msgid "You do not have the required permissions to view this page!" msgstr "" @@ -457,11 +457,39 @@ msgstr "" msgid "You have more users than allowed in your space." msgstr "" -#: .\cookbook\helper\recipe_search.py:570 +#: .\cookbook\helper\recipe_search.py:630 msgid "One of queryset or hash_key must be provided" msgstr "" -#: .\cookbook\helper\shopping_helper.py:152 +#: .\cookbook\helper\recipe_url_import.py:266 +msgid "reverse rotation" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:267 +msgid "careful rotation" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:268 +msgid "knead" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:269 +msgid "thicken" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:270 +msgid "warm up" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:271 +msgid "ferment" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:272 +msgid "sous-vide" +msgstr "" + +#: .\cookbook\helper\shopping_helper.py:157 msgid "You must supply a servings size" msgstr "" @@ -479,36 +507,40 @@ msgstr "" msgid "I made this" msgstr "" -#: .\cookbook\integration\integration.py:223 +#: .\cookbook\integration\integration.py:218 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:226 +#: .\cookbook\integration\integration.py:221 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" -#: .\cookbook\integration\integration.py:231 +#: .\cookbook\integration\integration.py:226 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:235 +#: .\cookbook\integration\integration.py:230 #, python-format msgid "Imported %s recipes." msgstr "" -#: .\cookbook\integration\paprika.py:46 -msgid "Notes" +#: .\cookbook\integration\openeats.py:26 +msgid "Recipe source:" msgstr "" #: .\cookbook\integration\paprika.py:49 +msgid "Notes" +msgstr "" + +#: .\cookbook\integration\paprika.py:52 msgid "Nutritional Information" msgstr "" -#: .\cookbook\integration\paprika.py:53 +#: .\cookbook\integration\paprika.py:56 msgid "Source" msgstr "" @@ -575,72 +607,72 @@ msgid "" "upload." msgstr "" -#: .\cookbook\models.py:364 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:365 .\cookbook\templates\search.html:7 #: .\cookbook\templates\settings.html:18 #: .\cookbook\templates\space_manage.html:7 msgid "Search" msgstr "" -#: .\cookbook\models.py:365 .\cookbook\templates\base.html:110 +#: .\cookbook\models.py:366 .\cookbook\templates\base.html:110 #: .\cookbook\templates\meal_plan.html:7 .\cookbook\views\delete.py:178 #: .\cookbook\views\edit.py:211 .\cookbook\views\new.py:179 msgid "Meal-Plan" msgstr "" -#: .\cookbook\models.py:366 .\cookbook\templates\base.html:118 +#: .\cookbook\models.py:367 .\cookbook\templates\base.html:118 msgid "Books" msgstr "" -#: .\cookbook\models.py:579 +#: .\cookbook\models.py:580 msgid " is part of a recipe step and cannot be deleted" msgstr "" -#: .\cookbook\models.py:1180 .\cookbook\templates\search_info.html:28 +#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:28 msgid "Simple" msgstr "" -#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:33 +#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:33 msgid "Phrase" msgstr "" -#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:38 +#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:38 msgid "Web" msgstr "" -#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:47 +#: .\cookbook\models.py:1184 .\cookbook\templates\search_info.html:47 msgid "Raw" msgstr "" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Food Alias" msgstr "" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Unit Alias" msgstr "" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Keyword Alias" msgstr "" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Description Replace" msgstr "" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Instruction Replace" msgstr "" -#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36 +#: .\cookbook\models.py:1258 .\cookbook\views\delete.py:36 #: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48 msgid "Recipe" msgstr "" -#: .\cookbook\models.py:1258 +#: .\cookbook\models.py:1259 msgid "Food" msgstr "" -#: .\cookbook\models.py:1259 .\cookbook\templates\base.html:141 +#: .\cookbook\models.py:1260 .\cookbook\templates\base.html:141 msgid "Keyword" msgstr "" @@ -656,64 +688,64 @@ msgstr "" msgid "Cannot modify Space owner permission." msgstr "" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "Hello" msgstr "" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "You have been invited by " msgstr "" -#: .\cookbook\serializer.py:1086 +#: .\cookbook\serializer.py:1094 msgid " to join their Tandoor Recipes space " msgstr "" -#: .\cookbook\serializer.py:1087 +#: .\cookbook\serializer.py:1095 msgid "Click the following link to activate your account: " msgstr "" -#: .\cookbook\serializer.py:1088 +#: .\cookbook\serializer.py:1096 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" -#: .\cookbook\serializer.py:1089 +#: .\cookbook\serializer.py:1097 msgid "The invitation is valid until " msgstr "" -#: .\cookbook\serializer.py:1090 +#: .\cookbook\serializer.py:1098 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -#: .\cookbook\serializer.py:1093 +#: .\cookbook\serializer.py:1101 msgid "Tandoor Recipes Invite" msgstr "" -#: .\cookbook\serializer.py:1234 +#: .\cookbook\serializer.py:1242 msgid "Existing shopping list to update" msgstr "" -#: .\cookbook\serializer.py:1236 +#: .\cookbook\serializer.py:1244 msgid "" "List of ingredient IDs from the recipe to add, if not provided all " "ingredients will be added." msgstr "" -#: .\cookbook\serializer.py:1238 +#: .\cookbook\serializer.py:1246 msgid "" "Providing a list_recipe ID and servings of 0 will delete that shopping list." msgstr "" -#: .\cookbook\serializer.py:1247 +#: .\cookbook\serializer.py:1255 msgid "Amount of food to add to the shopping list" msgstr "" -#: .\cookbook\serializer.py:1249 +#: .\cookbook\serializer.py:1257 msgid "ID of unit to use for the shopping list" msgstr "" -#: .\cookbook\serializer.py:1251 +#: .\cookbook\serializer.py:1259 msgid "When set to true will delete all food from active shopping lists." msgstr "" @@ -1501,11 +1533,11 @@ msgstr "" msgid "Profile" msgstr "" -#: .\cookbook\templates\recipe_view.html:26 +#: .\cookbook\templates\recipe_view.html:41 msgid "by" msgstr "" -#: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:144 +#: .\cookbook\templates\recipe_view.html:59 .\cookbook\views\delete.py:144 #: .\cookbook\views\edit.py:171 msgid "Comment" msgstr "" @@ -1983,258 +2015,258 @@ msgstr "" msgid "URL Import" msgstr "" -#: .\cookbook\views\api.py:109 .\cookbook\views\api.py:201 +#: .\cookbook\views\api.py:110 .\cookbook\views\api.py:202 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:221 .\cookbook\views\api.py:324 +#: .\cookbook\views\api.py:222 .\cookbook\views\api.py:325 #, python-brace-format msgid "No {self.basename} with id {pk} exists" msgstr "" -#: .\cookbook\views\api.py:225 +#: .\cookbook\views\api.py:226 msgid "Cannot merge with the same object!" msgstr "" -#: .\cookbook\views\api.py:232 +#: .\cookbook\views\api.py:233 #, python-brace-format msgid "No {self.basename} with id {target} exists" msgstr "" -#: .\cookbook\views\api.py:237 +#: .\cookbook\views\api.py:238 msgid "Cannot merge with child object!" msgstr "" -#: .\cookbook\views\api.py:270 +#: .\cookbook\views\api.py:271 #, python-brace-format msgid "{source.name} was merged successfully with {target.name}" msgstr "" -#: .\cookbook\views\api.py:275 +#: .\cookbook\views\api.py:276 #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" msgstr "" -#: .\cookbook\views\api.py:333 +#: .\cookbook\views\api.py:334 #, python-brace-format msgid "{child.name} was moved successfully to the root." msgstr "" -#: .\cookbook\views\api.py:336 .\cookbook\views\api.py:354 +#: .\cookbook\views\api.py:337 .\cookbook\views\api.py:355 msgid "An error occurred attempting to move " msgstr "" -#: .\cookbook\views\api.py:339 +#: .\cookbook\views\api.py:340 msgid "Cannot move an object to itself!" msgstr "" -#: .\cookbook\views\api.py:345 +#: .\cookbook\views\api.py:346 #, python-brace-format msgid "No {self.basename} with id {parent} exists" msgstr "" -#: .\cookbook\views\api.py:351 +#: .\cookbook\views\api.py:352 #, python-brace-format msgid "{child.name} was moved successfully to parent {parent.name}" msgstr "" -#: .\cookbook\views\api.py:547 +#: .\cookbook\views\api.py:553 #, python-brace-format msgid "{obj.name} was removed from the shopping list." msgstr "" -#: .\cookbook\views\api.py:552 .\cookbook\views\api.py:882 -#: .\cookbook\views\api.py:895 +#: .\cookbook\views\api.py:558 .\cookbook\views\api.py:888 +#: .\cookbook\views\api.py:901 #, python-brace-format msgid "{obj.name} was added to the shopping list." msgstr "" -#: .\cookbook\views\api.py:679 +#: .\cookbook\views\api.py:685 msgid "ID of recipe a step is part of. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:681 +#: .\cookbook\views\api.py:687 msgid "Query string matched (fuzzy) against object name." msgstr "" -#: .\cookbook\views\api.py:725 +#: .\cookbook\views\api.py:731 msgid "" "Query string matched (fuzzy) against recipe name. In the future also " "fulltext search." msgstr "" -#: .\cookbook\views\api.py:727 +#: .\cookbook\views\api.py:733 msgid "" "ID of keyword a recipe should have. For multiple repeat parameter. " "Equivalent to keywords_or" msgstr "" -#: .\cookbook\views\api.py:730 +#: .\cookbook\views\api.py:736 msgid "" "Keyword IDs, repeat for multiple. Return recipes with any of the keywords" msgstr "" -#: .\cookbook\views\api.py:733 +#: .\cookbook\views\api.py:739 msgid "" "Keyword IDs, repeat for multiple. Return recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:736 +#: .\cookbook\views\api.py:742 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords." msgstr "" -#: .\cookbook\views\api.py:739 +#: .\cookbook\views\api.py:745 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:741 +#: .\cookbook\views\api.py:747 msgid "ID of food a recipe should have. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:744 +#: .\cookbook\views\api.py:750 msgid "Food IDs, repeat for multiple. Return recipes with any of the foods" msgstr "" -#: .\cookbook\views\api.py:746 +#: .\cookbook\views\api.py:752 msgid "Food IDs, repeat for multiple. Return recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:748 +#: .\cookbook\views\api.py:754 msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods." msgstr "" -#: .\cookbook\views\api.py:750 +#: .\cookbook\views\api.py:756 msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:751 +#: .\cookbook\views\api.py:757 msgid "ID of unit a recipe should have." msgstr "" -#: .\cookbook\views\api.py:753 +#: .\cookbook\views\api.py:759 msgid "" "Rating a recipe should have or greater. [0 - 5] Negative value filters " "rating less than." msgstr "" -#: .\cookbook\views\api.py:754 +#: .\cookbook\views\api.py:760 msgid "ID of book a recipe should be in. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:756 +#: .\cookbook\views\api.py:762 msgid "Book IDs, repeat for multiple. Return recipes with any of the books" msgstr "" -#: .\cookbook\views\api.py:758 +#: .\cookbook\views\api.py:764 msgid "Book IDs, repeat for multiple. Return recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:760 +#: .\cookbook\views\api.py:766 msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books." msgstr "" -#: .\cookbook\views\api.py:762 +#: .\cookbook\views\api.py:768 msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:764 +#: .\cookbook\views\api.py:770 msgid "If only internal recipes should be returned. [true/false]" msgstr "" -#: .\cookbook\views\api.py:766 +#: .\cookbook\views\api.py:772 msgid "Returns the results in randomized order. [true/false]" msgstr "" -#: .\cookbook\views\api.py:768 +#: .\cookbook\views\api.py:774 msgid "Returns new results first in search results. [true/false]" msgstr "" -#: .\cookbook\views\api.py:770 +#: .\cookbook\views\api.py:776 msgid "" "Filter recipes cooked X times or more. Negative values returns cooked less " "than X times" msgstr "" -#: .\cookbook\views\api.py:772 +#: .\cookbook\views\api.py:778 msgid "" "Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:774 +#: .\cookbook\views\api.py:780 msgid "" "Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:776 +#: .\cookbook\views\api.py:782 msgid "" "Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:778 +#: .\cookbook\views\api.py:784 msgid "" "Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:780 +#: .\cookbook\views\api.py:786 msgid "Filter recipes that can be made with OnHand food. [true/false]" msgstr "" -#: .\cookbook\views\api.py:940 +#: .\cookbook\views\api.py:946 msgid "" "Returns the shopping list entry with a primary key of id. Multiple values " "allowed." msgstr "" -#: .\cookbook\views\api.py:945 +#: .\cookbook\views\api.py:951 msgid "" "Filter shopping list entries on checked. [true, false, both, recent]
- recent includes unchecked items and recently completed items." msgstr "" -#: .\cookbook\views\api.py:948 +#: .\cookbook\views\api.py:954 msgid "Returns the shopping list entries sorted by supermarket category order." msgstr "" -#: .\cookbook\views\api.py:1160 +#: .\cookbook\views\api.py:1166 msgid "Nothing to do." msgstr "" -#: .\cookbook\views\api.py:1180 +#: .\cookbook\views\api.py:1198 msgid "Invalid Url" msgstr "" -#: .\cookbook\views\api.py:1187 +#: .\cookbook\views\api.py:1205 msgid "Connection Refused." msgstr "" -#: .\cookbook\views\api.py:1192 +#: .\cookbook\views\api.py:1210 msgid "Bad URL Schema." msgstr "" -#: .\cookbook\views\api.py:1215 +#: .\cookbook\views\api.py:1233 msgid "No usable data could be found." msgstr "" -#: .\cookbook\views\api.py:1308 .\cookbook\views\import_export.py:114 +#: .\cookbook\views\api.py:1326 .\cookbook\views\import_export.py:117 msgid "Importing is not implemented for this provider" msgstr "" -#: .\cookbook\views\api.py:1352 .\cookbook\views\data.py:31 +#: .\cookbook\views\api.py:1372 .\cookbook\views\data.py:31 #: .\cookbook\views\edit.py:120 .\cookbook\views\new.py:90 msgid "This feature is not yet available in the hosted version of tandoor!" msgstr "" -#: .\cookbook\views\api.py:1374 +#: .\cookbook\views\api.py:1394 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:1379 +#: .\cookbook\views\api.py:1399 msgid "Error synchronizing with Storage" msgstr "" @@ -2295,7 +2327,7 @@ msgstr "" msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\import_export.py:101 +#: .\cookbook\views\import_export.py:104 msgid "" "The PDF Exporter is not enabled on this instance as it is still in an " "experimental state." @@ -2341,73 +2373,73 @@ msgstr "" msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\views.py:86 +#: .\cookbook\views\views.py:73 .\cookbook\views\views.py:191 +#: .\cookbook\views\views.py:213 .\cookbook\views\views.py:399 +msgid "This feature is not available in the demo version!" +msgstr "" + +#: .\cookbook\views\views.py:89 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" -#: .\cookbook\views\views.py:140 +#: .\cookbook\views\views.py:143 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:151 +#: .\cookbook\views\views.py:154 msgid "Comment saved!" msgstr "" -#: .\cookbook\views\views.py:188 .\cookbook\views\views.py:210 -#: .\cookbook\views\views.py:396 -msgid "This feature is not available in the demo version!" -msgstr "" - -#: .\cookbook\views\views.py:250 +#: .\cookbook\views\views.py:253 msgid "You must select at least one field to search!" msgstr "" -#: .\cookbook\views\views.py:255 +#: .\cookbook\views\views.py:258 msgid "" "To use this search method you must select at least one full text search " "field!" msgstr "" -#: .\cookbook\views\views.py:259 +#: .\cookbook\views\views.py:262 msgid "Fuzzy search is not compatible with this search method!" msgstr "" -#: .\cookbook\views\views.py:335 +#: .\cookbook\views\views.py:338 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:342 +#: .\cookbook\views\views.py:345 msgid "Passwords dont match!" msgstr "" -#: .\cookbook\views\views.py:350 +#: .\cookbook\views\views.py:353 msgid "User has been created, please login!" msgstr "" -#: .\cookbook\views\views.py:366 +#: .\cookbook\views\views.py:369 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:383 +#: .\cookbook\views\views.py:386 msgid "Successfully joined space." msgstr "" -#: .\cookbook\views\views.py:389 +#: .\cookbook\views\views.py:392 msgid "Invite Link not valid or already used!" msgstr "" -#: .\cookbook\views\views.py:406 +#: .\cookbook\views\views.py:409 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:412 +#: .\cookbook\views\views.py:415 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/ro/LC_MESSAGES/django.mo b/cookbook/locale/ro/LC_MESSAGES/django.mo index acb36632..5d9c9507 100644 Binary files a/cookbook/locale/ro/LC_MESSAGES/django.mo and b/cookbook/locale/ro/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/ro/LC_MESSAGES/django.po b/cookbook/locale/ro/LC_MESSAGES/django.po index 7cd2aece..f8867bda 100644 --- a/cookbook/locale/ro/LC_MESSAGES/django.po +++ b/cookbook/locale/ro/LC_MESSAGES/django.po @@ -8,113 +8,123 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-11-08 16:27+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2023-04-27 08:55+0000\n" +"Last-Translator: noxonad \n" +"Language-Team: Romanian \n" "Language: ro\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" +"X-Generator: Weblate 4.15\n" #: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 #: .\cookbook\templates\space.html:43 .\cookbook\templates\stats.html:28 #: .\cookbook\templates\url_import.html:274 msgid "Ingredients" -msgstr "" +msgstr "Ingrediente" #: .\cookbook\forms.py:54 msgid "Default unit" -msgstr "" +msgstr "Unitate implicită" #: .\cookbook\forms.py:55 msgid "Use fractions" -msgstr "" +msgstr "Utilizare fracții" #: .\cookbook\forms.py:56 msgid "Use KJ" -msgstr "" +msgstr "Utilizare KJ" #: .\cookbook\forms.py:57 msgid "Theme" -msgstr "" +msgstr "Teme" #: .\cookbook\forms.py:58 msgid "Navbar color" -msgstr "" +msgstr "Culoarea barei de navigare" #: .\cookbook\forms.py:59 msgid "Sticky navbar" -msgstr "" +msgstr "Bară de navigare lipicioasă" #: .\cookbook\forms.py:60 msgid "Default page" -msgstr "" +msgstr "Pagină implicită" #: .\cookbook\forms.py:61 msgid "Show recent recipes" -msgstr "" +msgstr "Afișează rețete recente" #: .\cookbook\forms.py:62 msgid "Search style" -msgstr "" +msgstr "Căutare stil" #: .\cookbook\forms.py:63 msgid "Plan sharing" -msgstr "" +msgstr "Partajarea planurilor" #: .\cookbook\forms.py:64 msgid "Ingredient decimal places" -msgstr "" +msgstr "Zecimale ale ingredientelor" #: .\cookbook\forms.py:65 msgid "Shopping list auto sync period" -msgstr "" +msgstr "Perioada de sincronizare automată a listei de cumpărături" #: .\cookbook\forms.py:66 .\cookbook\templates\recipe_view.html:21 #: .\cookbook\templates\space.html:62 .\cookbook\templates\stats.html:47 msgid "Comments" -msgstr "" +msgstr "Comentarii" #: .\cookbook\forms.py:70 msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" msgstr "" +"Culoarea barei de navigare de sus. Nu toate culorile funcționează cu toate " +"temele, doar încercați-le!" #: .\cookbook\forms.py:72 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" +"Unitate implicită care trebuie utilizată la introducerea unui ingredient nou " +"într-o rețetă." #: .\cookbook\forms.py:74 msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" msgstr "" +"Permite suport pentru fracții în cantități de ingrediente (de exemplu, " +"conversia zecimalelor în fracții automat)" #: .\cookbook\forms.py:76 msgid "Display nutritional energy amounts in joules instead of calories" -msgstr "" +msgstr "Afișați cantitățile de energie nutrițională în Jouli în loc de calorii" #: .\cookbook\forms.py:78 msgid "" "Users with whom newly created meal plan/shopping list entries should be " "shared by default." msgstr "" +"Utilizatorii cu care intrările din planul alimentar/lista de cumpărături nou " +"create ar trebui să fie partajate în mod implicit." #: .\cookbook\forms.py:80 msgid "Show recently viewed recipes on search page." -msgstr "" +msgstr "Afișați rețetele vizualizate recent pe pagina de căutare." #: .\cookbook\forms.py:81 msgid "Number of decimals to round ingredients." -msgstr "" +msgstr "Numărul de zecimale la ingrediente rotunde." #: .\cookbook\forms.py:82 msgid "If you want to be able to create and see comments underneath recipes." -msgstr "" +msgstr "Dacă doriți să puteți crea și vedea comentarii sub rețete." #: .\cookbook\forms.py:84 msgid "" @@ -123,211 +133,250 @@ 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 "" +"Setarea la 0 va dezactiva sincronizarea automată. Atunci când vizualizați o " +"listă de cumpărături, lista este actualizată la fiecare câteva secunde " +"setate pentru a sincroniza modificările pe care altcineva le-ar fi putut " +"face. Util atunci când faceți cumpărături cu mai multe persoane, dar ar " +"putea folosi un pic de date mobile. Dacă este mai mică decât limita " +"instanței, aceasta este resetată la salvare." #: .\cookbook\forms.py:87 msgid "Makes the navbar stick to the top of the page." -msgstr "" +msgstr "Face ca bara de navigare să se lipească în partea de sus a paginii." #: .\cookbook\forms.py:103 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" msgstr "" +"Ambele câmpuri sunt opționale. Dacă niciuna nu este setată, numele de " +"utilizator va fi afișată în schimb" #: .\cookbook\forms.py:124 .\cookbook\forms.py:289 #: .\cookbook\templates\url_import.html:158 msgid "Name" -msgstr "" +msgstr "Nume" #: .\cookbook\forms.py:125 .\cookbook\forms.py:290 #: .\cookbook\templates\space.html:39 .\cookbook\templates\stats.html:24 #: .\cookbook\templates\url_import.html:192 #: .\cookbook\templates\url_import.html:578 .\cookbook\views\lists.py:112 msgid "Keywords" -msgstr "" +msgstr "Cuvinte cheie" #: .\cookbook\forms.py:126 msgid "Preparation time in minutes" -msgstr "" +msgstr "Timp de pregătire în minute" #: .\cookbook\forms.py:127 msgid "Waiting time (cooking/baking) in minutes" -msgstr "" +msgstr "Timp de așteptare (gătit/coacere) în minute" #: .\cookbook\forms.py:128 .\cookbook\forms.py:259 .\cookbook\forms.py:291 msgid "Path" -msgstr "" +msgstr "Drum" #: .\cookbook\forms.py:129 msgid "Storage UID" -msgstr "" +msgstr "UID de stocare" #: .\cookbook\forms.py:157 msgid "Default" -msgstr "" +msgstr "Standard" #: .\cookbook\forms.py:168 .\cookbook\templates\url_import.html:94 msgid "" "To prevent duplicates recipes with the same name as existing ones are " "ignored. Check this box to import everything." msgstr "" +"Pentru a preveni duplicatele, rețetele cu același nume ca și cele existente " +"sunt ignorate. Bifați această casetă pentru a importa totul." #: .\cookbook\forms.py:190 msgid "Add your comment: " -msgstr "" +msgstr "Adaugă comentariul tău: " #: .\cookbook\forms.py:205 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" +"Lăsați gol pentru dropbox și introduceți parola aplicației pentru nextcloud." #: .\cookbook\forms.py:212 msgid "Leave empty for nextcloud and enter api token for dropbox." -msgstr "" +msgstr "Lăsați gol pentru nextcloud și introduceți token-ul API pentru dropbox." #: .\cookbook\forms.py:221 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" msgstr "" +"Lăsați gol pentru dropbox și introduceți numai URL-ul de bază pentru " +"nextcloud (/remote.php/webdav/ este adăugat automat)" #: .\cookbook\forms.py:258 .\cookbook\views\edit.py:166 msgid "Storage" -msgstr "" +msgstr "Stocare" #: .\cookbook\forms.py:260 msgid "Active" -msgstr "" +msgstr "Activ" #: .\cookbook\forms.py:265 msgid "Search String" -msgstr "" +msgstr "Șir de căutare" #: .\cookbook\forms.py:292 msgid "File ID" -msgstr "" +msgstr "ID-ul fișierului" #: .\cookbook\forms.py:313 msgid "You must provide at least a recipe or a title." -msgstr "" +msgstr "Trebuie să furnizați cel puțin o rețetă sau un titlu." #: .\cookbook\forms.py:326 msgid "You can list default users to share recipes with in the settings." msgstr "" +"Puteți lista utilizatorii impliciți cu care să partajați rețete în setări." #: .\cookbook\forms.py:327 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" +"Puteți utiliza markdown pentru a formata acest câmp. Vezi documentația aici" #: .\cookbook\forms.py:353 msgid "Maximum number of users for this space reached." -msgstr "" +msgstr "Numărul maxim de utilizatori pentru acest spațiu atins." #: .\cookbook\forms.py:359 msgid "Email address already taken!" -msgstr "" +msgstr "Adresa de e-mail deja în uz!" #: .\cookbook\forms.py:367 msgid "" "An email address is not required but if present the invite link will be sent " "to the user." msgstr "" +"Nu este necesară o adresă de e-mail, dar dacă este prezentă, linkul de " +"invitație va fi trimis utilizatorului." #: .\cookbook\forms.py:382 msgid "Name already taken." -msgstr "" +msgstr "Nume deja în uz." #: .\cookbook\forms.py:393 msgid "Accept Terms and Privacy" -msgstr "" +msgstr "Acceptă condițiile și politicile de confidențialitate" #: .\cookbook\forms.py:425 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." msgstr "" +"Determină cât de vagă este o căutare dacă utilizează potrivirea " +"similitudinii trigramelor (de exemplu, valorile scăzute înseamnă că mai " +"multe greșeli de scriere sunt ignorate)." #: .\cookbook\forms.py:435 msgid "" "Select type method of search. Click here for " "full desciption of choices." msgstr "" +"Selectează metoda de căutare. Apasă aici " +"pentru descrierea completă a alegerilor." #: .\cookbook\forms.py:436 msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." msgstr "" +"Utilizați potrivirea vagă pe unități, cuvinte cheie și ingrediente atunci " +"când editați și importați rețete." #: .\cookbook\forms.py:438 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" msgstr "" +"Câmpuri pentru a căuta ignorând accente. Selectarea acestei opțiuni poate " +"îmbunătăți sau degrada calitatea căutării în funcție de limbă" #: .\cookbook\forms.py:440 msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" msgstr "" +"Câmpuri pentru a căuta potriviri parțiale. (de exemplu, căutarea " +"'Plăcintei' va returna 'plăcintă' și 'plăci' și 'simplă')" #: .\cookbook\forms.py:442 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" msgstr "" +"Câmpuri pentru a căuta începutul potrivirilor de cuvinte. (ex. căutarea 'sa' " +"va returna 'salată' și 'sandwich')" #: .\cookbook\forms.py:444 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 "" +"Câmpuri pentru căutarea 'vagă'. (ex., căutarea 'rețetă' va găsi 'rețetă'. " +"Notă: această opțiune va intra în conflict cu metodele de căutare 'web' și " +"'raw'." #: .\cookbook\forms.py:446 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." msgstr "" +"Câmpuri pentru căutarea completă a textului. Notă: metodele de căutare " +"'web', 'frază' și 'raw' funcționează numai cu câmpuri full-text." #: .\cookbook\forms.py:450 msgid "Search Method" -msgstr "" +msgstr "Metodă de căutare" #: .\cookbook\forms.py:451 msgid "Fuzzy Lookups" -msgstr "" +msgstr "Căutare vagă" #: .\cookbook\forms.py:452 msgid "Ignore Accent" -msgstr "" +msgstr "Ignoră accent" #: .\cookbook\forms.py:453 msgid "Partial Match" -msgstr "" +msgstr "Potrivire parțială" #: .\cookbook\forms.py:454 msgid "Starts Wtih" -msgstr "" +msgstr "Începe cu" #: .\cookbook\forms.py:455 msgid "Fuzzy Search" -msgstr "" +msgstr "Căutare vagă" #: .\cookbook\forms.py:456 msgid "Full Text" -msgstr "" +msgstr "Text complet" #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" "In order to prevent spam, the requested email was not send. Please wait a " "few minutes and try again." msgstr "" +"Pentru a preveni spam-ul, e-mailul solicitat nu a fost trimis. Vă rugăm să " +"așteptați câteva minute și încercați din nou." #: .\cookbook\helper\permission_helper.py:136 #: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:149 msgid "You are not logged in and therefore cannot view this page!" msgstr "" +"Nu sunteți conectat și, prin urmare, nu puteți vizualiza această pagină!" #: .\cookbook\helper\permission_helper.py:140 #: .\cookbook\helper\permission_helper.py:146 @@ -339,18 +388,18 @@ msgstr "" #: .\cookbook\views\views.py:160 .\cookbook\views\views.py:167 #: .\cookbook\views\views.py:233 msgid "You do not have the required permissions to view this page!" -msgstr "" +msgstr "Nu aveți permisiunile necesare pentru a vizualiza această pagină!" #: .\cookbook\helper\permission_helper.py:164 #: .\cookbook\helper\permission_helper.py:187 #: .\cookbook\helper\permission_helper.py:202 msgid "You cannot interact with this object as it is not owned by you!" -msgstr "" +msgstr "Nu poți interacționa cu acest obiect, deoarece nu este deținut de tine!" #: .\cookbook\helper\template_helper.py:61 #: .\cookbook\helper\template_helper.py:63 msgid "Could not parse template code." -msgstr "" +msgstr "Nu s-a putut analiza codul șablonului." #: .\cookbook\integration\integration.py:126 #: .\cookbook\templates\import.html:14 .\cookbook\templates\import.html:20 @@ -363,191 +412,199 @@ msgstr "" #: .\cookbook\templates\url_import.html:609 .\cookbook\views\delete.py:89 #: .\cookbook\views\edit.py:200 msgid "Import" -msgstr "" +msgstr "Importă" #: .\cookbook\integration\integration.py:208 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" +"Importatorul se aștepta la un fișier.zip. Ați ales tipul corect de " +"importator pentru datele dvs.?" #: .\cookbook\integration\integration.py:211 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" +"A apărut o eroare neașteptată în timpul importului. Asigurați-vă că ați " +"încărcat un fișier valid." #: .\cookbook\integration\integration.py:216 msgid "The following recipes were ignored because they already existed:" -msgstr "" +msgstr "Următoarele rețete au fost ignorate pentru că existau deja:" #: .\cookbook\integration\integration.py:220 #, python-format msgid "Imported %s recipes." -msgstr "" +msgstr "%s rețete importate." #: .\cookbook\integration\paprika.py:46 msgid "Notes" -msgstr "" +msgstr "Note" #: .\cookbook\integration\paprika.py:49 msgid "Nutritional Information" -msgstr "" +msgstr "Informații nutriționale" #: .\cookbook\integration\paprika.py:53 .\cookbook\templates\url_import.html:40 msgid "Source" -msgstr "" +msgstr "Sursă" #: .\cookbook\integration\safron.py:23 #: .\cookbook\templates\include\log_cooking.html:16 #: .\cookbook\templates\url_import.html:228 #: .\cookbook\templates\url_import.html:459 msgid "Servings" -msgstr "" +msgstr "Porții" #: .\cookbook\integration\safron.py:25 msgid "Waiting time" -msgstr "" +msgstr "Timp de așteptare" #: .\cookbook\integration\safron.py:27 msgid "Preparation Time" -msgstr "" +msgstr "Timp de pregătire" #: .\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 "Bucate" #: .\cookbook\integration\safron.py:31 msgid "Section" -msgstr "" +msgstr "Secțiune" #: .\cookbook\management\commands\rebuildindex.py:14 msgid "Rebuilds full text search index on Recipe" -msgstr "" +msgstr "Reconstruiește indexul de căutare text complet pe rețetă" #: .\cookbook\management\commands\rebuildindex.py:18 msgid "Only Postgress databases use full text search, no index to rebuild" msgstr "" +"Numai bazele de date Postgress utilizează căutare text complet, nici un " +"index de reconstruit" #: .\cookbook\management\commands\rebuildindex.py:29 msgid "Recipe index rebuild complete." -msgstr "" +msgstr "Index rețetă reconstruit complet." #: .\cookbook\management\commands\rebuildindex.py:31 msgid "Recipe index rebuild failed." -msgstr "" +msgstr "Reconstruirea index-ului rețetă nu a reușit." #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" -msgstr "" +msgstr "Mic dejun" #: .\cookbook\migrations\0047_auto_20200602_1133.py:19 msgid "Lunch" -msgstr "" +msgstr "Prânz" #: .\cookbook\migrations\0047_auto_20200602_1133.py:24 msgid "Dinner" -msgstr "" +msgstr "Cină" #: .\cookbook\migrations\0047_auto_20200602_1133.py:29 msgid "Other" -msgstr "" +msgstr "Altele" #: .\cookbook\models.py:150 msgid "" "Maximum file storage for space in MB. 0 for unlimited, -1 to disable file " "upload." msgstr "" +"Spațiu maxim de stocare a fișierelor pentru spațiu în MB. 0 pentru " +"nelimitat, -1 pentru a dezactiva încărcarea fișierelor." #: .\cookbook\models.py:202 .\cookbook\templates\search.html:7 #: .\cookbook\templates\shopping_list.html:59 msgid "Search" -msgstr "" +msgstr "Căutare" #: .\cookbook\models.py:203 .\cookbook\templates\base.html:82 #: .\cookbook\templates\meal_plan.html:7 #: .\cookbook\templates\meal_plan_new.html:7 .\cookbook\views\delete.py:181 #: .\cookbook\views\edit.py:220 .\cookbook\views\new.py:184 msgid "Meal-Plan" -msgstr "" +msgstr "Plan de alimentare" #: .\cookbook\models.py:204 .\cookbook\templates\base.html:90 msgid "Books" -msgstr "" +msgstr "Cărți" #: .\cookbook\models.py:212 msgid "Small" -msgstr "" +msgstr "Mic" #: .\cookbook\models.py:212 msgid "Large" -msgstr "" +msgstr "Mare" #: .\cookbook\models.py:212 .\cookbook\templates\generic\new_template.html:6 #: .\cookbook\templates\generic\new_template.html:14 msgid "New" -msgstr "" +msgstr "Nou" #: .\cookbook\models.py:396 msgid " is part of a recipe step and cannot be deleted" -msgstr "" +msgstr " face parte dintr-un pas de rețetă și nu poate fi șters" #: .\cookbook\models.py:441 .\cookbook\templates\url_import.html:42 msgid "Text" -msgstr "" +msgstr "Text" #: .\cookbook\models.py:441 msgid "Time" -msgstr "" +msgstr "Timp" #: .\cookbook\models.py:441 .\cookbook\templates\url_import.html:44 msgid "File" -msgstr "" +msgstr "Fișier" #: .\cookbook\models.py:441 #: .\cookbook\templates\include\recipe_open_modal.html:7 #: .\cookbook\views\delete.py:39 .\cookbook\views\edit.py:260 #: .\cookbook\views\new.py:53 msgid "Recipe" -msgstr "" +msgstr "Rețetă" #: .\cookbook\models.py:871 .\cookbook\templates\search_info.html:28 msgid "Simple" -msgstr "" +msgstr "Simplu" #: .\cookbook\models.py:872 .\cookbook\templates\search_info.html:33 msgid "Phrase" -msgstr "" +msgstr "Frază" #: .\cookbook\models.py:873 .\cookbook\templates\search_info.html:38 msgid "Web" -msgstr "" +msgstr "Web" #: .\cookbook\models.py:874 .\cookbook\templates\search_info.html:47 msgid "Raw" -msgstr "" +msgstr "Crud" #: .\cookbook\models.py:912 msgid "Food Alias" -msgstr "" +msgstr "Pseudonim produse alimentare" #: .\cookbook\models.py:912 msgid "Unit Alias" -msgstr "" +msgstr "Pseudonim unități" #: .\cookbook\models.py:912 msgid "Keyword Alias" -msgstr "" +msgstr "Pseudonim cuvânt cheie" #: .\cookbook\serializer.py:157 msgid "File uploads are not enabled for this Space." -msgstr "" +msgstr "Încărcările de fișiere nu sunt permise pentru acest spațiu." #: .\cookbook\serializer.py:168 msgid "You have reached your file upload limit." -msgstr "" +msgstr "Ați atins limita de încărcare a fișierelor." #: .\cookbook\tables.py:35 .\cookbook\templates\generic\edit_template.html:6 #: .\cookbook\templates\generic\edit_template.html:14 @@ -555,7 +612,7 @@ msgstr "" #: .\cookbook\templates\shopping_list.html:40 #: .\cookbook\templates\space.html:90 msgid "Edit" -msgstr "" +msgstr "Editare" #: .\cookbook\tables.py:115 .\cookbook\tables.py:138 #: .\cookbook\templates\generic\delete_template.html:7 @@ -563,28 +620,28 @@ msgstr "" #: .\cookbook\templates\generic\edit_template.html:28 #: .\cookbook\templates\recipes_table.html:90 msgid "Delete" -msgstr "" +msgstr "Ștergere" #: .\cookbook\templates\404.html:5 msgid "404 Error" -msgstr "" +msgstr "Eroare 404" #: .\cookbook\templates\404.html:18 msgid "The page you are looking for could not be found." -msgstr "" +msgstr "Pagina pe care o căutați nu a putut fi găsită." #: .\cookbook\templates\404.html:33 msgid "Take me Home" -msgstr "" +msgstr "Du-ma acasă" #: .\cookbook\templates\404.html:35 msgid "Report a Bug" -msgstr "" +msgstr "Raportați o eroare" #: .\cookbook\templates\account\email.html:6 #: .\cookbook\templates\account\email.html:17 msgid "E-mail Addresses" -msgstr "" +msgstr "Adrese e-mail" #: .\cookbook\templates\account\email.html:12 #: .\cookbook\templates\account\password_change.html:11 @@ -593,68 +650,71 @@ msgstr "" #: .\cookbook\templates\settings.html:17 #: .\cookbook\templates\socialaccount\connections.html:10 msgid "Settings" -msgstr "" +msgstr "Setări" #: .\cookbook\templates\account\email.html:13 msgid "Email" -msgstr "" +msgstr "E-mail" #: .\cookbook\templates\account\email.html:19 msgid "The following e-mail addresses are associated with your account:" -msgstr "" +msgstr "Următoarele adrese de e-mail sunt asociate contului dvs.:" #: .\cookbook\templates\account\email.html:36 msgid "Verified" -msgstr "" +msgstr "Verificat" #: .\cookbook\templates\account\email.html:38 msgid "Unverified" -msgstr "" +msgstr "Neverificat" #: .\cookbook\templates\account\email.html:40 msgid "Primary" -msgstr "" +msgstr "Principal" #: .\cookbook\templates\account\email.html:47 msgid "Make Primary" -msgstr "" +msgstr "Setează ca principal" #: .\cookbook\templates\account\email.html:49 msgid "Re-send Verification" -msgstr "" +msgstr "Retrimite verificare" #: .\cookbook\templates\account\email.html:50 #: .\cookbook\templates\generic\delete_template.html:56 #: .\cookbook\templates\socialaccount\connections.html:44 msgid "Remove" -msgstr "" +msgstr "Elimină" #: .\cookbook\templates\account\email.html:58 msgid "Warning:" -msgstr "" +msgstr "Atenție:" #: .\cookbook\templates\account\email.html:58 msgid "" "You currently do not have any e-mail address set up. You should really add " "an e-mail address so you can receive notifications, reset your password, etc." msgstr "" +"În prezent, nu aveți nicio adresă de e-mail configurată. Ar trebui să " +"adăugați într-adevăr o adresă de e-mail, astfel încât să puteți primi " +"notificări, resetați parola etc." #: .\cookbook\templates\account\email.html:64 msgid "Add E-mail Address" -msgstr "" +msgstr "Adăugă adresa de E-mail" #: .\cookbook\templates\account\email.html:69 msgid "Add E-mail" -msgstr "" +msgstr "Adaugă E-mail" #: .\cookbook\templates\account\email.html:79 msgid "Do you really want to remove the selected e-mail address?" -msgstr "" +msgstr "Chiar doriți să eliminați adresa de e-mail selectată?" #: .\cookbook\templates\account\email_confirm.html:6 #: .\cookbook\templates\account\email_confirm.html:10 msgid "Confirm E-mail Address" -msgstr "" +msgstr "Confirmarea adresei E-mail" #: .\cookbook\templates\account\email_confirm.html:16 #, python-format @@ -664,11 +724,15 @@ msgid "" "for user %(user_display)s\n" " ." msgstr "" +"Vă rugăm să confirmați că:\n" +" %(email)s este adresa de e-mail " +"a utilizatorului %(user_display)s\n" +" ." #: .\cookbook\templates\account\email_confirm.html:22 #: .\cookbook\templates\generic\delete_template.html:71 msgid "Confirm" -msgstr "" +msgstr "Confirmă" #: .\cookbook\templates\account\email_confirm.html:29 #, python-format @@ -677,51 +741,54 @@ msgid "" " issue a new e-mail confirmation " "request." msgstr "" +"Acest link de confirmare prin e-mail a expirat sau nu este valid. Vă rugăm\n" +" să emiteți o nouă solicitare de " +"confirmare prin e-mail." #: .\cookbook\templates\account\login.html:8 .\cookbook\templates\base.html:289 msgid "Login" -msgstr "" +msgstr "Conectare" #: .\cookbook\templates\account\login.html:15 #: .\cookbook\templates\account\login.html:31 #: .\cookbook\templates\account\signup.html:69 #: .\cookbook\templates\account\signup_closed.html:15 msgid "Sign In" -msgstr "" +msgstr "Autentificare" #: .\cookbook\templates\account\login.html:32 #: .\cookbook\templates\socialaccount\signup.html:8 #: .\cookbook\templates\socialaccount\signup.html:57 msgid "Sign Up" -msgstr "" +msgstr "Înregistrare" #: .\cookbook\templates\account\login.html:36 #: .\cookbook\templates\account\login.html:37 #: .\cookbook\templates\account\password_reset.html:29 msgid "Reset My Password" -msgstr "" +msgstr "Resetarea parolei mele" #: .\cookbook\templates\account\login.html:37 msgid "Lost your password?" -msgstr "" +msgstr "V-ați pierdut parola?" #: .\cookbook\templates\account\login.html:48 msgid "Social Login" -msgstr "" +msgstr "Autentificare utilizând rețeaua socială" #: .\cookbook\templates\account\login.html:49 msgid "You can use any of the following providers to sign in." -msgstr "" +msgstr "Puteți utiliza oricare dintre următorii furnizori pentru a vă conecta." #: .\cookbook\templates\account\logout.html:5 #: .\cookbook\templates\account\logout.html:9 #: .\cookbook\templates\account\logout.html:18 msgid "Sign Out" -msgstr "" +msgstr "Deconectare" #: .\cookbook\templates\account\logout.html:11 msgid "Are you sure you want to sign out?" -msgstr "" +msgstr "Sunteți sigur că doriți să vă deconectați?" #: .\cookbook\templates\account\password_change.html:6 #: .\cookbook\templates\account\password_change.html:16 @@ -731,44 +798,48 @@ msgstr "" #: .\cookbook\templates\account\password_reset_from_key_done.html:7 #: .\cookbook\templates\account\password_reset_from_key_done.html:13 msgid "Change Password" -msgstr "" +msgstr "Schimbare parolă" #: .\cookbook\templates\account\password_change.html:12 #: .\cookbook\templates\account\password_set.html:12 #: .\cookbook\templates\settings.html:69 msgid "Password" -msgstr "" +msgstr "Parola" #: .\cookbook\templates\account\password_change.html:22 msgid "Forgot Password?" -msgstr "" +msgstr "Ai uitat parola?" #: .\cookbook\templates\account\password_reset.html:7 #: .\cookbook\templates\account\password_reset.html:13 #: .\cookbook\templates\account\password_reset_done.html:7 #: .\cookbook\templates\account\password_reset_done.html:10 msgid "Password Reset" -msgstr "" +msgstr "Resetare parolă" #: .\cookbook\templates\account\password_reset.html:24 msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" +"V-ați uitat parola? Introduceți adresa de e-mail de mai jos și vă vom " +"trimite un e-mail care vă permite să o resetați." #: .\cookbook\templates\account\password_reset.html:32 msgid "Password reset is disabled on this instance." -msgstr "" +msgstr "Resetarea parolei este dezactivată în această instanță." #: .\cookbook\templates\account\password_reset_done.html:16 msgid "" "We have sent you an e-mail. Please contact us if you do not receive it " "within a few minutes." msgstr "" +"V-am trimis un e-mail. Vă rugăm să ne contactați dacă nu îl primiți în " +"câteva minute." #: .\cookbook\templates\account\password_reset_from_key.html:13 msgid "Bad Token" -msgstr "" +msgstr "Token invalid" #: .\cookbook\templates\account\password_reset_from_key.html:25 #, python-format @@ -778,199 +849,206 @@ msgid "" " Please request a new " "password reset." msgstr "" +"Linkul de resetare a parolei nu a fost valid, posibil pentru că a fost deja " +"utilizat.\n" +" Vă rugam să cereți o " +"nouă resetare a parolei." #: .\cookbook\templates\account\password_reset_from_key.html:33 msgid "change password" -msgstr "" +msgstr "schimbare parolă" #: .\cookbook\templates\account\password_reset_from_key.html:36 #: .\cookbook\templates\account\password_reset_from_key_done.html:19 msgid "Your password is now changed." -msgstr "" +msgstr "Parola este acum schimbată." #: .\cookbook\templates\account\password_set.html:6 #: .\cookbook\templates\account\password_set.html:16 #: .\cookbook\templates\account\password_set.html:21 msgid "Set Password" -msgstr "" +msgstr "Setare parolă" #: .\cookbook\templates\account\signup.html:6 msgid "Register" -msgstr "" +msgstr "Înregistrare" #: .\cookbook\templates\account\signup.html:12 msgid "Create an Account" -msgstr "" +msgstr "Create cont" #: .\cookbook\templates\account\signup.html:42 #: .\cookbook\templates\socialaccount\signup.html:33 msgid "I accept the follwoing" -msgstr "" +msgstr "Accept următoarele" #: .\cookbook\templates\account\signup.html:45 #: .\cookbook\templates\socialaccount\signup.html:36 msgid "Terms and Conditions" -msgstr "" +msgstr "Termeni și condiții" #: .\cookbook\templates\account\signup.html:48 #: .\cookbook\templates\socialaccount\signup.html:39 msgid "and" -msgstr "" +msgstr "și" #: .\cookbook\templates\account\signup.html:52 #: .\cookbook\templates\socialaccount\signup.html:43 msgid "Privacy Policy" -msgstr "" +msgstr "Politica de confidențialitate" #: .\cookbook\templates\account\signup.html:65 msgid "Create User" -msgstr "" +msgstr "Creare utilizator" #: .\cookbook\templates\account\signup.html:69 msgid "Already have an account?" -msgstr "" +msgstr "Aveți deja un cont?" #: .\cookbook\templates\account\signup_closed.html:5 #: .\cookbook\templates\account\signup_closed.html:11 msgid "Sign Up Closed" -msgstr "" +msgstr "Înscrierea închisă" #: .\cookbook\templates\account\signup_closed.html:13 msgid "We are sorry, but the sign up is currently closed." -msgstr "" +msgstr "Ne pare rău, dar înscrierea este în prezent închisă." #: .\cookbook\templates\api_info.html:5 .\cookbook\templates\base.html:279 #: .\cookbook\templates\rest_framework\api.html:11 msgid "API Documentation" -msgstr "" +msgstr "Documentare API" #: .\cookbook\templates\base.html:86 msgid "Shopping" -msgstr "" +msgstr "Cumpărături" #: .\cookbook\templates\base.html:113 msgid "Keyword" -msgstr "" +msgstr "Cuvânt cheie" #: .\cookbook\templates\base.html:137 #: .\cookbook\templates\forms\ingredients.html:24 #: .\cookbook\templates\space.html:41 .\cookbook\templates\stats.html:26 #: .\cookbook\views\lists.py:146 msgid "Units" -msgstr "" +msgstr "Unități" #: .\cookbook\templates\base.html:151 #: .\cookbook\templates\shopping_list.html:237 #: .\cookbook\templates\supermarket.html:7 msgid "Supermarket" -msgstr "" +msgstr "Supermarket" #: .\cookbook\templates\base.html:163 msgid "Supermarket Category" -msgstr "" +msgstr "Categorie supermarket" #: .\cookbook\templates\base.html:175 .\cookbook\views\lists.py:195 msgid "Automations" -msgstr "" +msgstr "Automatizări" #: .\cookbook\templates\base.html:189 .\cookbook\views\lists.py:215 msgid "Files" -msgstr "" +msgstr "Fișiere" #: .\cookbook\templates\base.html:201 msgid "Batch Edit" -msgstr "" +msgstr "Editare în mod batch" #: .\cookbook\templates\base.html:213 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 msgid "History" -msgstr "" +msgstr "Istoric" #: .\cookbook\templates\base.html:228 .\cookbook\templates\export.html:14 #: .\cookbook\templates\export.html:20 #: .\cookbook\templates\shopping_list.html:358 #: .\cookbook\templates\test2.html:14 .\cookbook\templates\test2.html:20 msgid "Export" -msgstr "" +msgstr "Exportă" #: .\cookbook\templates\base.html:244 .\cookbook\templates\index.html:47 msgid "Import Recipe" -msgstr "" +msgstr "Importă rețeta" #: .\cookbook\templates\base.html:246 #: .\cookbook\templates\shopping_list.html:195 #: .\cookbook\templates\shopping_list.html:217 msgid "Create" -msgstr "" +msgstr "Creează" #: .\cookbook\templates\base.html:259 #: .\cookbook\templates\generic\list_template.html:14 #: .\cookbook\templates\space.html:58 .\cookbook\templates\stats.html:43 msgid "External Recipes" -msgstr "" +msgstr "Rețete externe" #: .\cookbook\templates\base.html:262 .\cookbook\templates\space.html:7 #: .\cookbook\templates\space.html:19 msgid "Space Settings" -msgstr "" +msgstr "Setări spațiu" #: .\cookbook\templates\base.html:267 .\cookbook\templates\system.html:13 msgid "System" -msgstr "" +msgstr "Sistem" #: .\cookbook\templates\base.html:269 msgid "Admin" -msgstr "" +msgstr "Admin" #: .\cookbook\templates\base.html:273 msgid "Markdown Guide" -msgstr "" +msgstr "Ghid Markdown" #: .\cookbook\templates\base.html:275 msgid "GitHub" -msgstr "" +msgstr "GitHub" #: .\cookbook\templates\base.html:277 msgid "Translate Tandoor" -msgstr "" +msgstr "Traducere Tandoor" #: .\cookbook\templates\base.html:281 msgid "API Browser" -msgstr "" +msgstr "Browser API" #: .\cookbook\templates\base.html:284 msgid "Log out" -msgstr "" +msgstr "Deconectare" #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" -msgstr "" +msgstr "Editează categoria in mod batch" #: .\cookbook\templates\batch\edit.html:15 msgid "Batch edit Recipes" -msgstr "" +msgstr "Editează rețetele in mod batch" #: .\cookbook\templates\batch\edit.html:20 msgid "Add the specified keywords to all recipes containing a word" msgstr "" +"Adăugați cuvintele cheie specificate la toate rețetele care conțin un cuvânt" #: .\cookbook\templates\batch\monitor.html:6 .\cookbook\views\edit.py:82 msgid "Sync" -msgstr "" +msgstr "Sincronizare" #: .\cookbook\templates\batch\monitor.html:10 msgid "Manage watched Folders" -msgstr "" +msgstr "Gestionarea folderelor urmărite" #: .\cookbook\templates\batch\monitor.html:14 msgid "" "On this Page you can manage all storage folder locations that should be " "monitored and synced." msgstr "" +"Pe această Pagină puteți gestiona toate locațiile folderului de stocare care " +"ar trebui monitorizate și sincronizate." #: .\cookbook\templates\batch\monitor.html:16 msgid "The path must be in the following format" -msgstr "" +msgstr "Calea trebuie să fie în următorul format" #: .\cookbook\templates\batch\monitor.html:20 #: .\cookbook\templates\forms\edit_import_recipe.html:14 @@ -982,55 +1060,57 @@ msgstr "" #: .\cookbook\templates\settings.html:195 #: .\cookbook\templates\shopping_list.html:360 msgid "Save" -msgstr "" +msgstr "Salvare" #: .\cookbook\templates\batch\monitor.html:21 msgid "Manage External Storage" -msgstr "" +msgstr "Gestionarea spațiului de stocare extern" #: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" -msgstr "" +msgstr "Sincronizează acum!" #: .\cookbook\templates\batch\monitor.html:29 msgid "Show Recipes" -msgstr "" +msgstr "Afișare rețete" #: .\cookbook\templates\batch\monitor.html:30 msgid "Show Log" -msgstr "" +msgstr "Afișare jurnal" #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" -msgstr "" +msgstr "Importă rețete" #: .\cookbook\templates\batch\waiting.html:28 msgid "" "This can take a few minutes, depending on the number of recipes in sync, " "please wait." msgstr "" +"Acest lucru poate dura câteva minute, în funcție de numărul de rețete " +"sincronizate, vă rugăm să așteptați." #: .\cookbook\templates\books.html:7 msgid "Recipe Books" -msgstr "" +msgstr "Cărți de rețete" #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" -msgstr "" +msgstr "Exportă rețete" #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 msgid "Import new Recipe" -msgstr "" +msgstr "Importă rețetă nouă" #: .\cookbook\templates\forms\edit_internal_recipe.html:7 msgid "Edit Recipe" -msgstr "" +msgstr "Editează rețetă" #: .\cookbook\templates\forms\ingredients.html:15 msgid "Edit Ingredients" -msgstr "" +msgstr "Editează ingrediente" #: .\cookbook\templates\forms\ingredients.html:16 msgid "" @@ -1042,104 +1122,112 @@ msgid "" "them.\n" " " msgstr "" +"\n" +" Următorul formular poate fi utilizat dacă, accidental, două (sau mai " +"multe) unități sau ingrediente în cazul în care au fost create care ar " +"trebui să fie\n" +" la fel.\n" +" Îmbină două unități sau ingrediente și actualizează toate rețetele " +"folosindu-le.\n" +" " #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" -msgstr "" +msgstr "Sunteți sigur că doriți să uniți aceste două unități?" #: .\cookbook\templates\forms\ingredients.html:31 #: .\cookbook\templates\forms\ingredients.html:40 msgid "Merge" -msgstr "" +msgstr "Unire" #: .\cookbook\templates\forms\ingredients.html:36 msgid "Are you sure that you want to merge these two ingredients?" -msgstr "" +msgstr "Sunteți sigur că doriți să uniți aceste două ingrediente?" #: .\cookbook\templates\generic\delete_template.html:21 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " -msgstr "" +msgstr "Sunteți sigur că doriți să ștergeți %(title)s: %(object)s " #: .\cookbook\templates\generic\delete_template.html:26 msgid "Protected" -msgstr "" +msgstr "Protejat" #: .\cookbook\templates\generic\delete_template.html:41 msgid "Cascade" -msgstr "" +msgstr "Cascadă" #: .\cookbook\templates\generic\delete_template.html:72 msgid "Cancel" -msgstr "" +msgstr "Anulare" #: .\cookbook\templates\generic\edit_template.html:32 msgid "View" -msgstr "" +msgstr "Vizualizare" #: .\cookbook\templates\generic\edit_template.html:36 msgid "Delete original file" -msgstr "" +msgstr "Ștergerea fișierului original" #: .\cookbook\templates\generic\list_template.html:6 #: .\cookbook\templates\generic\list_template.html:21 msgid "List" -msgstr "" +msgstr "Listă" #: .\cookbook\templates\generic\list_template.html:34 msgid "Filter" -msgstr "" +msgstr "Filtru" #: .\cookbook\templates\generic\list_template.html:39 msgid "Import all" -msgstr "" +msgstr "Importare toate" #: .\cookbook\templates\generic\table_template.html:76 #: .\cookbook\templates\recipes_table.html:121 msgid "previous" -msgstr "" +msgstr "precedent" #: .\cookbook\templates\generic\table_template.html:98 #: .\cookbook\templates\recipes_table.html:143 msgid "next" -msgstr "" +msgstr "următor" #: .\cookbook\templates\history.html:20 msgid "View Log" -msgstr "" +msgstr "Vizionare jurnal" #: .\cookbook\templates\history.html:24 msgid "Cook Log" -msgstr "" +msgstr "Jurnal de pregătire" #: .\cookbook\templates\import.html:6 .\cookbook\templates\test.html:6 msgid "Import Recipes" -msgstr "" +msgstr "Importă rețete" #: .\cookbook\templates\include\log_cooking.html:7 msgid "Log Recipe Cooking" -msgstr "" +msgstr "Jurnal rețetă de gătire" #: .\cookbook\templates\include\log_cooking.html:13 msgid "All fields are optional and can be left empty." -msgstr "" +msgstr "Toate câmpurile sunt opționale și pot fi lăsate goale." #: .\cookbook\templates\include\log_cooking.html:19 msgid "Rating" -msgstr "" +msgstr "Evaluare" #: .\cookbook\templates\include\log_cooking.html:27 #: .\cookbook\templates\include\recipe_open_modal.html:18 msgid "Close" -msgstr "" +msgstr "Închide" #: .\cookbook\templates\include\recipe_open_modal.html:32 msgid "Open Recipe" -msgstr "" +msgstr "Deschide rețetă" #: .\cookbook\templates\include\storage_backend_warning.html:4 msgid "Security Warning" -msgstr "" +msgstr "Avertizare de securitate" #: .\cookbook\templates\include\storage_backend_warning.html:5 msgid "" @@ -1153,40 +1241,49 @@ msgid "" "can be used.\n" " " msgstr "" +"\n" +" Câmpurile de Parolă și Token sunt stocate ca text simplu în interiorul bazei de date.\n" +" Acest lucru este necesar deoarece acestea sunt necesare pentru a " +"face cereri API, dar, de asemenea, crește riscul de\n" +" furt.
\n" +" Limitarea posibilelor deteriorări ale token-urilor sau conturilor cu " +"acces limitat ce pot fi utilizate.\n" +" " #: .\cookbook\templates\index.html:29 msgid "Search recipe ..." -msgstr "" +msgstr "Căutare rețetă ..." #: .\cookbook\templates\index.html:44 msgid "New Recipe" -msgstr "" +msgstr "Rețetă nouă" #: .\cookbook\templates\index.html:53 msgid "Advanced Search" -msgstr "" +msgstr "Căutare avansată" #: .\cookbook\templates\index.html:57 msgid "Reset Search" -msgstr "" +msgstr "Resetarea căutării" #: .\cookbook\templates\index.html:85 msgid "Last viewed" -msgstr "" +msgstr "Ultima vizualizare" #: .\cookbook\templates\index.html:87 .\cookbook\templates\space.html:35 #: .\cookbook\templates\stats.html:22 msgid "Recipes" -msgstr "" +msgstr "Rețete" #: .\cookbook\templates\index.html:94 msgid "Log in to view recipes" -msgstr "" +msgstr "Conectați-vă pentru a vizualiza rețetele" #: .\cookbook\templates\markdown_info.html:5 #: .\cookbook\templates\markdown_info.html:13 msgid "Markdown Info" -msgstr "" +msgstr "Informații Markdown" #: .\cookbook\templates\markdown_info.html:14 msgid "" @@ -1203,54 +1300,70 @@ msgid "" "below.\n" " " msgstr "" +"\n" +" Markdown este un limbaj de marcare ușor, care poate fi folosit " +"pentru formatarea textul simplu cu ușurință.\n" +" Acest site utilizează biblioteca Python Markdown pentru a\n" +" converti textului într-un document HTML frumos stilizat. " +"Documentația completă Markdown poate fi găsită\n" +" aici.\n" +" O documentație incompletă, dar cel mai probabil suficientă poate fi " +"găsită mai jos.\n" +" " #: .\cookbook\templates\markdown_info.html:25 msgid "Headers" -msgstr "" +msgstr "Anteturi" #: .\cookbook\templates\markdown_info.html:54 msgid "Formatting" -msgstr "" +msgstr "Formatare" #: .\cookbook\templates\markdown_info.html:56 #: .\cookbook\templates\markdown_info.html:72 msgid "Line breaks are inserted by adding two spaces after the end of a line" msgstr "" +"Sfârșiturile de linie sunt inserate prin adăugarea a două spații după " +"sfârșitul unei linii" #: .\cookbook\templates\markdown_info.html:57 #: .\cookbook\templates\markdown_info.html:73 msgid "or by leaving a blank line inbetween." -msgstr "" +msgstr "sau lăsând o linie goală între ele." #: .\cookbook\templates\markdown_info.html:59 #: .\cookbook\templates\markdown_info.html:74 msgid "This text is bold" -msgstr "" +msgstr "Acest text este îngroșat" #: .\cookbook\templates\markdown_info.html:60 #: .\cookbook\templates\markdown_info.html:75 msgid "This text is italic" -msgstr "" +msgstr "Acest text este cursiv" #: .\cookbook\templates\markdown_info.html:61 #: .\cookbook\templates\markdown_info.html:77 msgid "Blockquotes are also possible" -msgstr "" +msgstr "Ghilimelele bloc sunt, de asemenea, posibile" #: .\cookbook\templates\markdown_info.html:84 msgid "Lists" -msgstr "" +msgstr "Liste" #: .\cookbook\templates\markdown_info.html:85 msgid "" "Lists can ordered or unorderd. It is important to leave a blank line " "before the list!" msgstr "" +"Listele pot fi ordonate sau neordonate. Este important să lăsați o linie " +"goală înainte de listă!" #: .\cookbook\templates\markdown_info.html:87 #: .\cookbook\templates\markdown_info.html:108 msgid "Ordered List" -msgstr "" +msgstr "Listă ordonată" #: .\cookbook\templates\markdown_info.html:89 #: .\cookbook\templates\markdown_info.html:90 @@ -1259,12 +1372,12 @@ msgstr "" #: .\cookbook\templates\markdown_info.html:111 #: .\cookbook\templates\markdown_info.html:112 msgid "unordered list item" -msgstr "" +msgstr "element a listei neordonate" #: .\cookbook\templates\markdown_info.html:93 #: .\cookbook\templates\markdown_info.html:114 msgid "Unordered List" -msgstr "" +msgstr "Listă neordonată" #: .\cookbook\templates\markdown_info.html:95 #: .\cookbook\templates\markdown_info.html:96 @@ -1273,26 +1386,29 @@ msgstr "" #: .\cookbook\templates\markdown_info.html:117 #: .\cookbook\templates\markdown_info.html:118 msgid "ordered list item" -msgstr "" +msgstr "element a listei ordonate" #: .\cookbook\templates\markdown_info.html:125 msgid "Images & Links" -msgstr "" +msgstr "Imagini și link-uri" #: .\cookbook\templates\markdown_info.html:126 msgid "" "Links can be formatted with Markdown. This application also allows to paste " "links directly into markdown fields without any formatting." msgstr "" +"Link-urile pot fi formatate cu Markdown. Această aplicație permite, de " +"asemenea, să lipiți linkuri direct în câmpurile de marcare fără nicio " +"formatare." #: .\cookbook\templates\markdown_info.html:132 #: .\cookbook\templates\markdown_info.html:145 msgid "This will become an image" -msgstr "" +msgstr "Aceasta va deveni o imagine" #: .\cookbook\templates\markdown_info.html:152 msgid "Tables" -msgstr "" +msgstr "Tabele" #: .\cookbook\templates\markdown_info.html:153 msgid "" @@ -1300,175 +1416,190 @@ msgid "" "editor like this one." msgstr "" +"Tabelele Markdown sunt cu greu create de mână. Este recomandat folosirea " +"unor editoare de tabele precum acesta." #: .\cookbook\templates\markdown_info.html:155 #: .\cookbook\templates\markdown_info.html:157 #: .\cookbook\templates\markdown_info.html:171 #: .\cookbook\templates\markdown_info.html:177 msgid "Table" -msgstr "" +msgstr "Tabel" #: .\cookbook\templates\markdown_info.html:155 #: .\cookbook\templates\markdown_info.html:172 msgid "Header" -msgstr "" +msgstr "Antet" #: .\cookbook\templates\markdown_info.html:157 #: .\cookbook\templates\markdown_info.html:178 msgid "Cell" -msgstr "" +msgstr "Celulă" #: .\cookbook\templates\meal_plan_entry.html:6 msgid "Meal Plan View" -msgstr "" +msgstr "Vizualizarea planului de alimentare" #: .\cookbook\templates\meal_plan_entry.html:18 msgid "Created by" -msgstr "" +msgstr "Creat de" #: .\cookbook\templates\meal_plan_entry.html:20 #: .\cookbook\templates\shopping_list.html:261 msgid "Shared with" -msgstr "" +msgstr "Partajat cu" #: .\cookbook\templates\meal_plan_entry.html:48 #: .\cookbook\templates\recipes_table.html:64 msgid "Last cooked" -msgstr "" +msgstr "Ultima gătită" #: .\cookbook\templates\meal_plan_entry.html:50 msgid "Never cooked before." -msgstr "" +msgstr "Niciodată gătită înainte." #: .\cookbook\templates\meal_plan_entry.html:76 msgid "Other meals on this day" -msgstr "" +msgstr "Alte mese în această zi" #: .\cookbook\templates\no_groups_info.html:5 #: .\cookbook\templates\no_groups_info.html:12 msgid "No Permissions" -msgstr "" +msgstr "Fără permisiuni" #: .\cookbook\templates\no_groups_info.html:17 msgid "You do not have any groups and therefor cannot use this application." msgstr "" +"Nu aveți nici un grup și de aceea nu se poate utiliza această aplicație." #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 msgid "Please contact your administrator." -msgstr "" +msgstr "Vă rugăm să contactați administratorul." #: .\cookbook\templates\no_perm_info.html:5 #: .\cookbook\templates\no_perm_info.html:12 msgid "No Permission" -msgstr "" +msgstr "Fără permisiune" #: .\cookbook\templates\no_perm_info.html:15 msgid "" "You do not have the required permissions to view this page or perform this " "action." msgstr "" +"Nu aveți permisiunile necesare pentru a vizualiza această pagină sau pentru " +"a efectua această acțiune." #: .\cookbook\templates\no_space_info.html:6 #: .\cookbook\templates\no_space_info.html:13 msgid "No Space" -msgstr "" +msgstr "Fără spațiu" #: .\cookbook\templates\no_space_info.html:17 msgid "" "Recipes, foods, shopping lists and more are organized in spaces of one or " "more people." msgstr "" +"Rețetele, alimentele, listele de cumpărături și multe altele sunt organizate " +"în spațiile uneia sau mai multor persoane." #: .\cookbook\templates\no_space_info.html:18 msgid "" "You can either be invited into an existing space or create your own one." msgstr "" +"Puteți fi invitat într-un spațiu existent sau puteți crea propriul spațiu." #: .\cookbook\templates\no_space_info.html:31 #: .\cookbook\templates\no_space_info.html:40 msgid "Join Space" -msgstr "" +msgstr "Alăturați-vă spațiului" #: .\cookbook\templates\no_space_info.html:34 msgid "Join an existing space." -msgstr "" +msgstr "Alăturați-vă unui spațiu existent." #: .\cookbook\templates\no_space_info.html:35 msgid "" "To join an existing space either enter your invite token or click on the " "invite link the space owner send you." msgstr "" +"Pentru a vă alătura unui spațiu existent, introduceți simbolul de invitație " +"sau faceți clic pe linkul de invitație pe care vi-l trimite proprietarul " +"spațiului." #: .\cookbook\templates\no_space_info.html:48 #: .\cookbook\templates\no_space_info.html:56 msgid "Create Space" -msgstr "" +msgstr "Creare spațiu" #: .\cookbook\templates\no_space_info.html:51 msgid "Create your own recipe space." -msgstr "" +msgstr "Creați-vă propriul spațiu de rețete." #: .\cookbook\templates\no_space_info.html:52 msgid "Start your own recipe space and invite other users to it." msgstr "" +"Începeți propriul spațiu de rețete și invitați alți utilizatori la acesta." #: .\cookbook\templates\offline.html:6 msgid "Offline" -msgstr "" +msgstr "Offline" #: .\cookbook\templates\offline.html:19 msgid "You are currently offline!" -msgstr "" +msgstr "Sunteți în prezent offline!" #: .\cookbook\templates\offline.html:20 msgid "" "The recipes listed below are available for offline viewing because you have " "recently viewed them. Keep in mind that data might be outdated." msgstr "" +"Rețetele enumerate mai jos sunt disponibile pentru vizualizare offline, " +"deoarece le-ați vizualizat recent. Rețineți că datele pot fi învechite." #: .\cookbook\templates\recipe_view.html:26 msgid "by" -msgstr "" +msgstr "de" #: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:147 #: .\cookbook\views\edit.py:180 msgid "Comment" -msgstr "" +msgstr "Comentariu" #: .\cookbook\templates\recipes_table.html:19 #: .\cookbook\templates\recipes_table.html:23 #: .\cookbook\templates\url_import.html:444 msgid "Recipe Image" -msgstr "" +msgstr "Imagine rețetă" #: .\cookbook\templates\recipes_table.html:51 #: .\cookbook\templates\url_import.html:449 msgid "Preparation time ca." -msgstr "" +msgstr "Timp de pregătire cca." #: .\cookbook\templates\recipes_table.html:57 #: .\cookbook\templates\url_import.html:454 msgid "Waiting time ca." -msgstr "" +msgstr "Timp de așteptare cca." #: .\cookbook\templates\recipes_table.html:60 msgid "External" -msgstr "" +msgstr "Extern" #: .\cookbook\templates\recipes_table.html:86 msgid "Log Cooking" -msgstr "" +msgstr "Jurnal de pregătire" #: .\cookbook\templates\rest_framework\api.html:5 msgid "Recipe Home" -msgstr "" +msgstr "Rețetă acasă" #: .\cookbook\templates\search_info.html:5 #: .\cookbook\templates\search_info.html:9 #: .\cookbook\templates\settings.html:165 msgid "Search Settings" -msgstr "" +msgstr "Setări de căutare" #: .\cookbook\templates\search_info.html:10 msgid "" @@ -1481,10 +1612,18 @@ msgid "" "only available if you are using Postgres for your database.\n" " " msgstr "" +"\n" +" Crearea celei mai bune experiențe de căutare este complicată și " +"cântărește foarte mult asupra configurației personale. \n" +" Modificarea oricăreia dintre setările de căutare poate avea un " +"impact semnificativ asupra vitezei și calității rezultatelor.\n" +" Configurațiile metode de căutare, trigrame și căutare text complet " +"sunt disponibile numai dacă utilizați Postgres pentru baza de date.\n" +" " #: .\cookbook\templates\search_info.html:19 msgid "Search Methods" -msgstr "" +msgstr "Metode de căutare" #: .\cookbook\templates\search_info.html:23 msgid "" @@ -1500,6 +1639,18 @@ msgid "" "html#TEXTSEARCH-PARSING-QUERIES>Postgresql's website.\n" " " msgstr "" +" \n" +" Căutările de text complet încearcă să normalizeze cuvintele " +"furnizate pentru a se potrivi variantelor comune. De exemplu: 'bifurcat', " +"'furcă', 'furculițe' se vor normaliza la 'furculiță'.\n" +" Există mai multe metode disponibile, descrise mai jos, care vor " +"controla modul în care comportamentul de căutare ar trebui să reacționeze " +"atunci când sunt căutate mai multe cuvinte.\n" +" Detalii tehnice complete cu privire la modul în care acestea " +"funcționează pot fi vizualizate pe website-ul " +"Postgresql.\n" +" " #: .\cookbook\templates\search_info.html:29 msgid "" @@ -1511,6 +1662,14 @@ msgid "" "selected for a full text search.\n" " " msgstr "" +" \n" +" Căutările simple ignoră semnele de punctuație și cuvintele " +"comune, cum ar fi 'de', 'și', 'a', și va trata cuvinte separate după cum " +"este necesar.\n" +" Căutarea 'măr sau făină' va returna orice rețetă care include " +"atât 'măr', cât și 'făină' oriunde în câmpurile care au fost selectate " +"pentru o căutare completă de text.\n" +" " #: .\cookbook\templates\search_info.html:34 msgid "" @@ -1522,6 +1681,13 @@ msgid "" "been selected for a full text search.\n" " " msgstr "" +" \n" +" Căutările de expresii ignoră semnele de punctuație, dar vor " +"căuta toate cuvintele în ordinea exactă furnizată.\n" +" Căutarea 'măr sau făină' va returna doar o rețetă care include " +"expresia exactă 'măr sau făină' în oricare dintre câmpurile care au fost " +"selectate pentru o căutare completă a textului.\n" +" " #: .\cookbook\templates\search_info.html:39 msgid "" @@ -1541,6 +1707,21 @@ msgid "" "recipe that has the word 'butter' in any field included.\n" " " msgstr "" +" \n" +" Căutările web simulează funcționalitatea găsită pe multe site-" +"uri de căutare web care acceptă sintaxa specială.\n" +" Plasarea ghilimelelor în jurul mai multor cuvinte va converti " +"aceste cuvinte într-o frază.\n" +" 'sau' este recunoscut pentru căutarea pentru cuvântul (sau fraza)" +" imediat înainte de 'sau' SAU cuvântul (sau fraza) direct după.\n" +" '-' este recunoscut pentru căutarea rețetelor care nu includ " +"cuvântul (sau fraza) care vine imediat după. \n" +" De exemplu, căutarea 'plăcintei cu mere' sau a untului de cireșe " +"va returna orice rețetă care include expresia 'plăcintă cu mere' sau " +"cuvântul 'cireș' \n" +" în orice câmp inclus în căutarea completă a textului, dar " +"exclude orice rețetă care are cuvântul 'unt' în orice câmp inclus.\n" +" " #: .\cookbook\templates\search_info.html:48 msgid "" @@ -1549,6 +1730,10 @@ msgid "" "operators such as '|', '&' and '()'\n" " " msgstr "" +" \n" +" Căutarea brută este similară cu web-ul, cu excepția caracterelor " +"speciale, cum ar fi '|', '&' și '()'\n" +" " #: .\cookbook\templates\search_info.html:59 msgid "" @@ -1564,10 +1749,21 @@ msgid "" "methods.\n" " " msgstr "" +" \n" +" O altă abordare a căutării care, de asemenea, necesită " +"Postgresql este căutarea vagă, sau similitudinea trigramelor. O trigramă " +"este un grup de trei caractere consecutive.\n" +" De exemplu, căutarea 'mărului' va crea x trigrame 'măr', 'ăru', " +"'rul' și va crea un scor al cât de strâns se potrivesc cuvintele cu " +"trigramele generate.\n" +" Un beneficiu de căutare a trigramelor este că o căutare pentru " +"'plăcintă' va găsi cuvinte scrise greșit, cum ar fi \"plăcine\", care ar fi " +"ratat de alte metode.\n" +" " #: .\cookbook\templates\search_info.html:69 msgid "Search Fields" -msgstr "" +msgstr "Câmpuri de căutare" #: .\cookbook\templates\search_info.html:73 msgid "" @@ -1603,10 +1799,43 @@ msgid "" "full text results, it does match the trigram results.\n" " " msgstr "" +" \n" +" Unaccent este un caz special prin faptul că permite căutarea " +"unui câmp 'neaccentuat' pentru fiecare stil de căutare care încearcă să " +"ignore valorile accentuate. \n" +" De exemplu, atunci când activați unaccent pentru 'Nume', orice " +"căutare (începe cu, conține, trigramă) va încerca căutarea ignorând " +"caracterele accentuate.\n" +" \n" +" Pentru celelalte opțiuni, puteți activa căutarea pe oricare sau " +"pe toate câmpurile și acestea vor fi combinate împreună cu un presupus 'SAU'." +"\n" +" De exemplu, activarea 'Nume' pentru începe cu, 'Nume' și " +"'Descriere' pentru potrivire parțială și 'Ingrediente' și 'Cuvinte cheie' " +"pentru căutare completă\n" +" și căutarea de 'mărului' va genera o căutare care va returna " +"rețete care au:\n" +" - Un nume de rețetă care începe cu 'măr'\n" +" - SAU un nume de rețetă care conține 'măr''\n" +" - SAU o descriere a rețetei care conține 'măr'\n" +" - SAU o rețetă care va avea o potrivire completă de căutare text " +"('măr' sau 'mere') în ingrediente\n" +" - SAU o rețetă care va avea un text complet de căutare se " +"potrivesc în cuvinte cheie\n" +"\n" +" Combinarea prea multor câmpuri în prea multe tipuri de căutare " +"poate avea un impact negativ asupra performanței, poate crea rezultate " +"dublate sau poate returna rezultate neașteptate.\n" +" De exemplu, activarea căutării vage sau a potrivirilor parțiale " +"va interfera cu metodele de căutare pe web. \n" +" Căutarea 'plăcinte -mere' cu căutare vagă și căutare text " +"complet va returna rețeta plăcintelor cu mere. Deși nu este inclus în " +"rezultatele textului complet, se potrivește cu rezultatele trigramei.\n" +" " #: .\cookbook\templates\search_info.html:95 msgid "Search Index" -msgstr "" +msgstr "Index de căutare" #: .\cookbook\templates\search_info.html:99 msgid "" @@ -1620,89 +1849,108 @@ msgid "" "the management command 'python manage.py rebuildindex'\n" " " msgstr "" +" \n" +" Trigrama de căutare și full text search ambele se bazează pe " +"indexurile bazei de date pentru a efectua în mod eficient. \n" +" Puteți reconstrui indexurile pe toate câmpurile din pagina Admin " +"pentru rețete și selectând toate rețetele și rulând 'reconstrui index pentru " +"rețetele selectate'\n" +" De asemenea, puteți reconstrui indexurile la linia de comandă " +"executând comanda de gestionare 'python manage.py rebuildindex'\n" +" " #: .\cookbook\templates\settings.html:28 msgid "Account" -msgstr "" +msgstr "Cont" #: .\cookbook\templates\settings.html:35 msgid "Preferences" -msgstr "" +msgstr "Preferințe" #: .\cookbook\templates\settings.html:42 msgid "API-Settings" -msgstr "" +msgstr "Setări API" #: .\cookbook\templates\settings.html:49 msgid "Search-Settings" -msgstr "" +msgstr "Setări de căutare" #: .\cookbook\templates\settings.html:58 msgid "Name Settings" -msgstr "" +msgstr "Setări de nume" #: .\cookbook\templates\settings.html:66 msgid "Account Settings" -msgstr "" +msgstr "Setpri cont" #: .\cookbook\templates\settings.html:68 msgid "Emails" -msgstr "" +msgstr "E-mailuri" #: .\cookbook\templates\settings.html:71 #: .\cookbook\templates\socialaccount\connections.html:11 msgid "Social" -msgstr "" +msgstr "Social" #: .\cookbook\templates\settings.html:84 msgid "Language" -msgstr "" +msgstr "Limbă" #: .\cookbook\templates\settings.html:114 msgid "Style" -msgstr "" +msgstr "Stil" #: .\cookbook\templates\settings.html:135 msgid "API Token" -msgstr "" +msgstr "API Token" #: .\cookbook\templates\settings.html:136 msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." msgstr "" +"Puteți utiliza atât autentificarea de bază, cât și autentificarea bazată pe " +"token pentru a accesa REST API." #: .\cookbook\templates\settings.html:153 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" msgstr "" +"Utilizați token-ul ca antet de autorizare prefixat de token-ul cuvântului, " +"așa cum se arată în următoarele exemple:" #: .\cookbook\templates\settings.html:155 msgid "or" -msgstr "" +msgstr "sau" #: .\cookbook\templates\settings.html:166 msgid "" "There are many options to configure the search depending on your personal " "preferences." msgstr "" +"Există multe opțiuni pentru a configura căutarea în funcție de preferințele " +"personale." #: .\cookbook\templates\settings.html:167 msgid "" "Usually you do not need to configure any of them and can just stick " "with either the default or one of the following presets." msgstr "" +"De obicei, nu aveți nevoie să configurați niciuna dintre ele și poate " +"rămâne doar cu implicit sau una dintre următoarele presetări." #: .\cookbook\templates\settings.html:168 msgid "" "If you do want to configure the search you can read about the different " "options here." msgstr "" +"Dacă doriți să configurați căutarea, puteți citi despre diferitele opțiuni " +"aici." #: .\cookbook\templates\settings.html:173 msgid "Fuzzy" -msgstr "" +msgstr "Vag" #: .\cookbook\templates\settings.html:174 msgid "" @@ -1710,84 +1958,91 @@ msgid "" "return more results than needed to make sure you find what you are looking " "for." msgstr "" +"Găsiți ceea ce aveți nevoie, chiar dacă căutarea sau rețeta conține greșeli " +"de scriere. S-ar putea returna mai multe rezultate decât este necesar pentru " +"a vă asigura că găsiți ceea ce căutați." #: .\cookbook\templates\settings.html:175 msgid "This is the default behavior" -msgstr "" +msgstr "Acesta este comportamentul implicit" #: .\cookbook\templates\settings.html:176 #: .\cookbook\templates\settings.html:184 msgid "Apply" -msgstr "" +msgstr "Aplică" #: .\cookbook\templates\settings.html:181 msgid "Precise" -msgstr "" +msgstr "Precis" #: .\cookbook\templates\settings.html:182 msgid "" "Allows fine control over search results but might not return results if too " "many spelling mistakes are made." msgstr "" +"Permite un control fin asupra rezultatelor căutării, dar este posibil să nu " +"returneze rezultate dacă se fac prea multe greșeli de ortografie." #: .\cookbook\templates\settings.html:183 msgid "Perfect for large Databases" -msgstr "" +msgstr "Perfect pentru bazele de date mari" #: .\cookbook\templates\setup.html:6 .\cookbook\templates\system.html:5 msgid "Cookbook Setup" -msgstr "" +msgstr "Setarea cărții de bucate" #: .\cookbook\templates\setup.html:14 msgid "Setup" -msgstr "" +msgstr "Setare" #: .\cookbook\templates\setup.html:15 msgid "" "To start using this application you must first create a superuser account." msgstr "" +"Pentru a începe să utilizați această aplicație, trebuie mai întâi să creați " +"un cont superuser." #: .\cookbook\templates\setup.html:20 msgid "Create Superuser account" -msgstr "" +msgstr "Creează cont superuser" #: .\cookbook\templates\shopping_list.html:7 #: .\cookbook\templates\shopping_list.html:29 #: .\cookbook\templates\shopping_list.html:721 msgid "Shopping List" -msgstr "" +msgstr "Listă de cumpărături" #: .\cookbook\templates\shopping_list.html:34 msgid "Try the new shopping list" -msgstr "" +msgstr "Încercați noua listă de cumpărături" #: .\cookbook\templates\shopping_list.html:63 msgid "Search Recipe" -msgstr "" +msgstr "Căutare rețetă" #: .\cookbook\templates\shopping_list.html:86 msgid "Shopping Recipes" -msgstr "" +msgstr "Rețete de cumpărături" #: .\cookbook\templates\shopping_list.html:90 msgid "No recipes selected" -msgstr "" +msgstr "Nici o rețetă selectată" #: .\cookbook\templates\shopping_list.html:157 msgid "Entry Mode" -msgstr "" +msgstr "Mod de intrare" #: .\cookbook\templates\shopping_list.html:165 msgid "Add Entry" -msgstr "" +msgstr "Adăugare intrare" #: .\cookbook\templates\shopping_list.html:181 msgid "Amount" -msgstr "" +msgstr "Cantitate" #: .\cookbook\templates\shopping_list.html:194 msgid "Select Unit" -msgstr "" +msgstr "Selectare unitate" #: .\cookbook\templates\shopping_list.html:196 #: .\cookbook\templates\shopping_list.html:218 @@ -1796,59 +2051,62 @@ msgstr "" #: .\cookbook\templates\url_import.html:500 #: .\cookbook\templates\url_import.html:532 msgid "Select" -msgstr "" +msgstr "Selectare" #: .\cookbook\templates\shopping_list.html:216 msgid "Select Food" -msgstr "" +msgstr "Selectare mâncare" #: .\cookbook\templates\shopping_list.html:247 msgid "Select Supermarket" -msgstr "" +msgstr "Selectare supermarket" #: .\cookbook\templates\shopping_list.html:271 msgid "Select User" -msgstr "" +msgstr "Selectare utilizator" #: .\cookbook\templates\shopping_list.html:290 msgid "Finished" -msgstr "" +msgstr "Finisat" #: .\cookbook\templates\shopping_list.html:303 msgid "You are offline, shopping list might not syncronize." msgstr "" +"Sunteți offline, este posibil ca lista de cumpărături să nu se sincronizeze." #: .\cookbook\templates\shopping_list.html:368 msgid "Copy/Export" -msgstr "" +msgstr "Copiere/Exportare" #: .\cookbook\templates\shopping_list.html:372 msgid "List Prefix" -msgstr "" +msgstr "Prefix listă" #: .\cookbook\templates\socialaccount\connections.html:4 #: .\cookbook\templates\socialaccount\connections.html:15 msgid "Account Connections" -msgstr "" +msgstr "Conexiuni de cont" #: .\cookbook\templates\socialaccount\connections.html:18 msgid "" "You can sign in to your account using any of the following third party\n" " accounts:" msgstr "" +"Vă puteți conecta la cont utilizând oricare dintre următoarele terțe părți\n" +" de conturi:" #: .\cookbook\templates\socialaccount\connections.html:52 msgid "" "You currently have no social network accounts connected to this account." -msgstr "" +msgstr "În prezent, nu aveți conturi de rețea socială conectate la acest cont." #: .\cookbook\templates\socialaccount\connections.html:55 msgid "Add a 3rd Party Account" -msgstr "" +msgstr "Adăugarea unui cont a părților terțe" #: .\cookbook\templates\socialaccount\signup.html:5 msgid "Signup" -msgstr "" +msgstr "Înregistrare" #: .\cookbook\templates\socialaccount\signup.html:10 #, python-format @@ -1857,6 +2115,10 @@ msgid "" " %(provider_name)s account to login to\n" " %(site_name)s. As a final step, please complete the following form:" msgstr "" +"Sunteți pe cale de a utiliza\n" +" contul %(provider_name)s pentru a vă conecta la \n" +" %(site_name)s. Ca un pas final, vă rugăm să completați următorul " +"formular:" #: .\cookbook\templates\socialaccount\snippets\provider_list.html:23 #: .\cookbook\templates\socialaccount\snippets\provider_list.html:31 @@ -1873,100 +2135,100 @@ msgstr "" #: .\cookbook\templates\socialaccount\snippets\provider_list.html:119 #: .\cookbook\templates\socialaccount\snippets\provider_list.html:127 msgid "Sign in using" -msgstr "" +msgstr "Conectați-vă utilizând" #: .\cookbook\templates\space.html:23 msgid "Space:" -msgstr "" +msgstr "Spațiu:" #: .\cookbook\templates\space.html:24 msgid "Manage Subscription" -msgstr "" +msgstr "Gestionarea abonamentului" #: .\cookbook\templates\space.html:32 .\cookbook\templates\stats.html:19 msgid "Number of objects" -msgstr "" +msgstr "Numărul de obiecte" #: .\cookbook\templates\space.html:45 .\cookbook\templates\stats.html:30 msgid "Recipe Imports" -msgstr "" +msgstr "Importuri de rețete" #: .\cookbook\templates\space.html:53 .\cookbook\templates\stats.html:38 msgid "Objects stats" -msgstr "" +msgstr "Statistici obiecte" #: .\cookbook\templates\space.html:56 .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" -msgstr "" +msgstr "Rețete fără cuvinte cheie" #: .\cookbook\templates\space.html:60 .\cookbook\templates\stats.html:45 msgid "Internal Recipes" -msgstr "" +msgstr "Rețete interne" #: .\cookbook\templates\space.html:73 msgid "Members" -msgstr "" +msgstr "Membri" #: .\cookbook\templates\space.html:77 msgid "Invite User" -msgstr "" +msgstr "Invită utilizator" #: .\cookbook\templates\space.html:88 msgid "User" -msgstr "" +msgstr "Utilizator" #: .\cookbook\templates\space.html:89 msgid "Groups" -msgstr "" +msgstr "Grupe" #: .\cookbook\templates\space.html:105 msgid "admin" -msgstr "" +msgstr "admin" #: .\cookbook\templates\space.html:106 msgid "user" -msgstr "" +msgstr "utilizator" #: .\cookbook\templates\space.html:107 msgid "guest" -msgstr "" +msgstr "oaspete" #: .\cookbook\templates\space.html:108 msgid "remove" -msgstr "" +msgstr "eliminare" #: .\cookbook\templates\space.html:112 msgid "Update" -msgstr "" +msgstr "Actualizare" #: .\cookbook\templates\space.html:116 msgid "You cannot edit yourself." -msgstr "" +msgstr "Nu te poți edita singur pe tine." #: .\cookbook\templates\space.html:123 msgid "There are no members in your space yet!" -msgstr "" +msgstr "Încă nu există membri în spațiul dumneavoastră!" #: .\cookbook\templates\space.html:130 .\cookbook\templates\system.html:21 #: .\cookbook\views\lists.py:100 msgid "Invite Links" -msgstr "" +msgstr "Link-uri de invitație" #: .\cookbook\templates\stats.html:4 msgid "Stats" -msgstr "" +msgstr "Atribute" #: .\cookbook\templates\stats.html:10 msgid "Statistics" -msgstr "" +msgstr "Statistici" #: .\cookbook\templates\system.html:22 msgid "Show Links" -msgstr "" +msgstr "Afișează link-uri" #: .\cookbook\templates\system.html:32 msgid "System Information" -msgstr "" +msgstr "Informații despre sistem" #: .\cookbook\templates\system.html:34 msgid "" @@ -1978,20 +2240,27 @@ msgid "" "recipes/releases\">here.\n" " " msgstr "" +"\n" +" Django Recipes este o aplicație software gratuită open source. " +"Acesta poate fi găsită pe\n" +" GitHub.\n" +" Istoricul modificării poate fi găsit aici.\n" +" " #: .\cookbook\templates\system.html:48 msgid "Media Serving" -msgstr "" +msgstr "Livrare conținut media" #: .\cookbook\templates\system.html:49 .\cookbook\templates\system.html:64 #: .\cookbook\templates\system.html:80 msgid "Warning" -msgstr "" +msgstr "Atenționare" #: .\cookbook\templates\system.html:49 .\cookbook\templates\system.html:64 #: .\cookbook\templates\system.html:80 .\cookbook\templates\system.html:95 msgid "Ok" -msgstr "" +msgstr "Ok" #: .\cookbook\templates\system.html:51 msgid "" @@ -2002,15 +2271,22 @@ msgid "" " your installation.\n" " " msgstr "" +"Servirea fișierelor media direct folosind gunicorn/python nu este " +"recomandată !\n" +" Vă rugăm să urmați pașii descriși\n" +" aici pentru a actualiza\n" +" instalarea dvs..\n" +" " #: .\cookbook\templates\system.html:57 .\cookbook\templates\system.html:73 #: .\cookbook\templates\system.html:88 .\cookbook\templates\system.html:102 msgid "Everything is fine!" -msgstr "" +msgstr "Totul este bine!" #: .\cookbook\templates\system.html:62 msgid "Secret Key" -msgstr "" +msgstr "Cheie secretă" #: .\cookbook\templates\system.html:66 msgid "" @@ -2024,10 +2300,19 @@ msgid "" "file.\n" " " msgstr "" +"\n" +" Nu aveți un SECRET_KEY configurat în fișierul " +".env. Django utilizează implicit\n" +" cheia standard\n" +" prevazuta cu instalația care este cunoscuta public si nesigura! " +"Vă rugăm să setați\n" +" SECRET_KEY în fișierul de configurare ." +"env.\n" +" " #: .\cookbook\templates\system.html:78 msgid "Debug Mode" -msgstr "" +msgstr "Mod de depanare" #: .\cookbook\templates\system.html:82 msgid "" @@ -2039,14 +2324,21 @@ msgid "" "file.\n" " " msgstr "" +"\n" +" Această aplicație se execută încă în modul de depanare. Acest " +"lucru nu este cel mai probabil necesar. Rândul său, modul de depanare prin\n" +" setarea\n" +" DEBUG=0 in zona .env a fișierului de " +"configurare.\n" +" " #: .\cookbook\templates\system.html:93 msgid "Database" -msgstr "" +msgstr "Bază de date" #: .\cookbook\templates\system.html:95 msgid "Info" -msgstr "" +msgstr "Informație" #: .\cookbook\templates\system.html:97 msgid "" @@ -2056,46 +2348,52 @@ msgid "" " features only work with postgres databases.\n" " " msgstr "" +"\n" +" Această aplicație nu se execută cu un backend de bază de date " +"Postgres. Acest lucru este ok, dar nu este recomandat deoarece unele\n" +" caracteristicile funcționează numai cu baze de date Postgres.\n" +" " #: .\cookbook\templates\url_import.html:6 msgid "URL Import" -msgstr "" +msgstr "Importare URL" #: .\cookbook\templates\url_import.html:31 msgid "Drag me to your bookmarks to import recipes from anywhere" -msgstr "" +msgstr "Trageți-mă în marcajele dvs., pentru a importa rețete de oriunde" #: .\cookbook\templates\url_import.html:32 msgid "Bookmark Me!" -msgstr "" +msgstr "Marcaj-mă!" #: .\cookbook\templates\url_import.html:36 msgid "URL" -msgstr "" +msgstr "URL" #: .\cookbook\templates\url_import.html:38 msgid "App" -msgstr "" +msgstr "Aplicație" #: .\cookbook\templates\url_import.html:62 msgid "Enter website URL" -msgstr "" +msgstr "Introduceți adresa URL a site-ului web" #: .\cookbook\templates\url_import.html:101 msgid "Select recipe files to import or drop them here..." -msgstr "" +msgstr "Selectați fișierele de rețetă pentru a le importa sau a le fixa aici..." #: .\cookbook\templates\url_import.html:122 msgid "Paste json or html source here to load recipe." -msgstr "" +msgstr "Plasează sursa JSON sau HTML aici pentru a încărca rețeta." #: .\cookbook\templates\url_import.html:150 msgid "Preview Recipe Data" -msgstr "" +msgstr "Previzualizați datele rețetei" #: .\cookbook\templates\url_import.html:151 msgid "Drag recipe attributes from the right into the appropriate box below." msgstr "" +"Trageți atributele rețetei din dreapta în caseta corespunzătoare de mai jos." #: .\cookbook\templates\url_import.html:160 #: .\cookbook\templates\url_import.html:177 @@ -2108,113 +2406,116 @@ msgstr "" #: .\cookbook\templates\url_import.html:304 #: .\cookbook\templates\url_import.html:355 msgid "Clear Contents" -msgstr "" +msgstr "Curățare conținut" #: .\cookbook\templates\url_import.html:162 msgid "Text dragged here will be appended to the name." -msgstr "" +msgstr "Textul tras aici va fi adăugat la nume." #: .\cookbook\templates\url_import.html:175 msgid "Description" -msgstr "" +msgstr "Descriere" #: .\cookbook\templates\url_import.html:179 msgid "Text dragged here will be appended to the description." -msgstr "" +msgstr "Textul tras aici va fi adăugat la descriere." #: .\cookbook\templates\url_import.html:196 msgid "Keywords dragged here will be appended to current list" -msgstr "" +msgstr "Cuvintele cheie trase aici vor fi anexate la lista curentă" #: .\cookbook\templates\url_import.html:211 msgid "Image" -msgstr "" +msgstr "Imagine" #: .\cookbook\templates\url_import.html:243 msgid "Prep Time" -msgstr "" +msgstr "Timp de pregătire" #: .\cookbook\templates\url_import.html:258 msgid "Cook Time" -msgstr "" +msgstr "Timp de gătire" #: .\cookbook\templates\url_import.html:279 msgid "Ingredients dragged here will be appended to current list." -msgstr "" +msgstr "Ingredientele trase aici vor fi anexate la lista curentă." #: .\cookbook\templates\url_import.html:301 #: .\cookbook\templates\url_import.html:572 msgid "Instructions" -msgstr "" +msgstr "Instrucțiuni" #: .\cookbook\templates\url_import.html:306 msgid "" "Recipe instructions dragged here will be appended to current instructions." msgstr "" +"Instrucțiunile de rețetă trase aici vor fi anexate la instrucțiunile curente." #: .\cookbook\templates\url_import.html:329 msgid "Discovered Attributes" -msgstr "" +msgstr "Atribute descoperite" #: .\cookbook\templates\url_import.html:331 msgid "" "Drag recipe attributes from below into the appropriate box on the left. " "Click any node to display its full properties." msgstr "" +"Trageți atributele rețetei de mai jos în caseta corespunzătoare din stânga. " +"Faceți clic pe orice nod pentru a afișa proprietățile sale complete." #: .\cookbook\templates\url_import.html:348 msgid "Show Blank Field" -msgstr "" +msgstr "Afișare câmp gol" #: .\cookbook\templates\url_import.html:353 msgid "Blank Field" -msgstr "" +msgstr "Câmp gol" #: .\cookbook\templates\url_import.html:357 msgid "Items dragged to Blank Field will be appended." -msgstr "" +msgstr "Elementele trase în câmpul gol vor fi adăugate." #: .\cookbook\templates\url_import.html:404 msgid "Delete Text" -msgstr "" +msgstr "Ștergere text" #: .\cookbook\templates\url_import.html:417 msgid "Delete image" -msgstr "" +msgstr "Ștergere imagine" #: .\cookbook\templates\url_import.html:433 msgid "Recipe Name" -msgstr "" +msgstr "Nume rețetă" #: .\cookbook\templates\url_import.html:437 msgid "Recipe Description" -msgstr "" +msgstr "Descriere rețetă" #: .\cookbook\templates\url_import.html:499 #: .\cookbook\templates\url_import.html:531 #: .\cookbook\templates\url_import.html:587 msgid "Select one" -msgstr "" +msgstr "Selectați una" #: .\cookbook\templates\url_import.html:547 msgid "Note" -msgstr "" +msgstr "Notă" #: .\cookbook\templates\url_import.html:588 msgid "Add Keyword" -msgstr "" +msgstr "Adaugă cuvânt cheie" #: .\cookbook\templates\url_import.html:601 msgid "All Keywords" -msgstr "" +msgstr "Toate cuvintele cheie" #: .\cookbook\templates\url_import.html:604 msgid "Import all keywords, not only the ones already existing." -msgstr "" +msgstr "Importă toate cuvintele cheie, nu numai cele deja existente." #: .\cookbook\templates\url_import.html:631 msgid "Information" -msgstr "" +msgstr "Informație" #: .\cookbook\templates\url_import.html:633 msgid "" @@ -2226,307 +2527,332 @@ msgid "" "data feel free to post an example in the\n" " github issues." msgstr "" +" Numai site-urile web care conțin informații despre ld+json sau informații " +"microdata în prezent\n" +" pot fi importate. Majoritatea pagini " +"importante de rețete au suport pentru acest lucru. Dacă site-ul nu poate fi " +"importat, dar\n" +" crezi că\n" +" acesta are, probabil, un fel de date " +"structurate nu ezitați să posta un exemplu în\n" +" github probleme." #: .\cookbook\templates\url_import.html:641 msgid "Google ld+json Info" -msgstr "" +msgstr "Informații Google ld+json" #: .\cookbook\templates\url_import.html:644 msgid "GitHub Issues" -msgstr "" +msgstr "GitHub Probleme" #: .\cookbook\templates\url_import.html:646 msgid "Recipe Markup Specification" -msgstr "" +msgstr "Specificații a Markup-ului de rețetă" #: .\cookbook\views\api.py:83 .\cookbook\views\api.py:132 msgid "Parameter updated_at incorrectly formatted" -msgstr "" +msgstr "Parametrul updated_at formatat incorect" #: .\cookbook\views\api.py:152 #, python-brace-format msgid "No {self.basename} with id {pk} exists" -msgstr "" +msgstr "Nu există {self.basename} cu id {pk}" #: .\cookbook\views\api.py:156 msgid "Cannot merge with the same object!" -msgstr "" +msgstr "Nu se poate uni cu același obiect!" #: .\cookbook\views\api.py:163 #, python-brace-format msgid "No {self.basename} with id {target} exists" -msgstr "" +msgstr "Nu există {self.basename} cu id {target}" #: .\cookbook\views\api.py:168 msgid "Cannot merge with child object!" -msgstr "" +msgstr "Nu se poate uni cu obiect copil!" #: .\cookbook\views\api.py:201 #, python-brace-format msgid "{source.name} was merged successfully with {target.name}" -msgstr "" +msgstr "{source.name} a fost unit cu succes cu {target.name}" #: .\cookbook\views\api.py:205 #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" -msgstr "" +msgstr "A apărut o eroare la încercarea de a uni {source.name} cu {target.name}" #: .\cookbook\views\api.py:249 #, python-brace-format msgid "No {self.basename} with id {child} exists" -msgstr "" +msgstr "Nu există {self.basename} cu id {child}" #: .\cookbook\views\api.py:258 #, python-brace-format msgid "{child.name} was moved successfully to the root." -msgstr "" +msgstr "{child.name} a fost mutat cu succes la rădăcină." #: .\cookbook\views\api.py:261 .\cookbook\views\api.py:279 msgid "An error occurred attempting to move " -msgstr "" +msgstr "A apărut o eroare la încercarea de a muta " #: .\cookbook\views\api.py:264 msgid "Cannot move an object to itself!" -msgstr "" +msgstr "Nu se poate muta un obiect la sine!" #: .\cookbook\views\api.py:270 #, python-brace-format msgid "No {self.basename} with id {parent} exists" -msgstr "" +msgstr "Nu există {self.basename} cu id {parent}" #: .\cookbook\views\api.py:276 #, python-brace-format msgid "{child.name} was moved successfully to parent {parent.name}" -msgstr "" +msgstr "{child.name} a fost mutat cu succes la părintele {parent.name}" #: .\cookbook\views\api.py:723 .\cookbook\views\data.py:42 #: .\cookbook\views\edit.py:129 .\cookbook\views\new.py:95 msgid "This feature is not yet available in the hosted version of tandoor!" msgstr "" +"Această funcție nu este încă disponibilă în versiunea găzduită a tandoor!" #: .\cookbook\views\api.py:745 msgid "Sync successful!" -msgstr "" +msgstr "Sincronizare de succes!" #: .\cookbook\views\api.py:750 msgid "Error synchronizing with Storage" -msgstr "" +msgstr "Eroare la sincronizarea cu stocarea" #: .\cookbook\views\api.py:828 msgid "Nothing to do." -msgstr "" +msgstr "Nimic de făcut." #: .\cookbook\views\api.py:843 msgid "The requested site provided malformed data and cannot be read." -msgstr "" +msgstr "Site-ul solicitat a furnizat date eronate și nu poate fi citit." #: .\cookbook\views\api.py:850 msgid "The requested page could not be found." -msgstr "" +msgstr "Pagina solicitată nu a putut fi găsită." #: .\cookbook\views\api.py:859 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." msgstr "" +"Site-ul solicitat nu oferă niciun format de date recunoscut din care să " +"importați rețeta." #: .\cookbook\views\api.py:873 msgid "No useable data could be found." -msgstr "" +msgstr "Nu au putut fi găsite date utilizabile." #: .\cookbook\views\api.py:889 msgid "I couldn't find anything to do." -msgstr "" +msgstr "Nu am putut găsi nimic de făcut." #: .\cookbook\views\data.py:34 .\cookbook\views\data.py:129 #: .\cookbook\views\edit.py:49 .\cookbook\views\import_export.py:73 #: .\cookbook\views\new.py:33 msgid "You have reached the maximum number of recipes for your space." -msgstr "" +msgstr "Ai ajuns la numărul maxim de rețete pentru spațiul dvs." #: .\cookbook\views\data.py:38 .\cookbook\views\data.py:133 #: .\cookbook\views\edit.py:53 .\cookbook\views\import_export.py:77 #: .\cookbook\views\new.py:37 msgid "You have more users than allowed in your space." -msgstr "" +msgstr "Aveți mai mulți utilizatori decât este permis în spațiul dvs." #: .\cookbook\views\data.py:111 #, python-format msgid "Batch edit done. %(count)d recipe was updated." msgid_plural "Batch edit done. %(count)d Recipes where updated." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Editarea de tip batch completă. %(count)d rețetă a fost actualizată." +msgstr[1] "Editarea de tip batch completă. %(count)d rețete au fost actualizate." +msgstr[2] "Editarea de tip batch completă. %(count)d rețete au fost actualizate." #: .\cookbook\views\delete.py:101 msgid "Monitor" -msgstr "" +msgstr "Monitorizare" #: .\cookbook\views\delete.py:125 .\cookbook\views\lists.py:86 #: .\cookbook\views\new.py:101 msgid "Storage Backend" -msgstr "" +msgstr "Backend de stocare" #: .\cookbook\views\delete.py:135 msgid "" "Could not delete this storage backend as it is used in at least one monitor." msgstr "" +"Nu s-a putut șterge acest backend de stocare, deoarece este utilizat în cel " +"puțin un supervizor." #: .\cookbook\views\delete.py:158 msgid "Recipe Book" -msgstr "" +msgstr "Carte de rețete" #: .\cookbook\views\delete.py:170 msgid "Bookmarks" -msgstr "" +msgstr "Marcaje" #: .\cookbook\views\delete.py:192 .\cookbook\views\new.py:235 msgid "Invite Link" -msgstr "" +msgstr "Link de invitare" #: .\cookbook\views\edit.py:125 msgid "You cannot edit this storage!" -msgstr "" +msgstr "Nu puteți edita acest spațiu de stocare!" #: .\cookbook\views\edit.py:149 msgid "Storage saved!" -msgstr "" +msgstr "Spațiu de stocare salvat!" #: .\cookbook\views\edit.py:155 msgid "There was an error updating this storage backend!" -msgstr "" +msgstr "A existat o eroare la actualizarea acestui backend de stocare!" #: .\cookbook\views\edit.py:248 msgid "Changes saved!" -msgstr "" +msgstr "Modificări salvate!" #: .\cookbook\views\edit.py:252 msgid "Error saving changes!" -msgstr "" +msgstr "Eroare la salvarea modificărilor!" #: .\cookbook\views\import_export.py:99 msgid "Importing is not implemented for this provider" -msgstr "" +msgstr "Importul nu este implementat pentru acest furnizor" #: .\cookbook\views\import_export.py:121 msgid "Exporting is not implemented for this provider" -msgstr "" +msgstr "Exportul nu este implementat pentru acest furnizor" #: .\cookbook\views\lists.py:26 msgid "Import Log" -msgstr "" +msgstr "Jurnal de import" #: .\cookbook\views\lists.py:39 msgid "Discovery" -msgstr "" +msgstr "Descoperă" #: .\cookbook\views\lists.py:69 msgid "Shopping Lists" -msgstr "" +msgstr "Liste de cumpărături" #: .\cookbook\views\lists.py:129 msgid "Foods" -msgstr "" +msgstr "Alimente" #: .\cookbook\views\lists.py:163 msgid "Supermarkets" -msgstr "" +msgstr "Supermarketuri" #: .\cookbook\views\lists.py:179 msgid "Shopping Categories" -msgstr "" +msgstr "Categorii de cumpărături" #: .\cookbook\views\lists.py:232 msgid "New Shopping List" -msgstr "" +msgstr "Listă de cumpărături nouă" #: .\cookbook\views\new.py:126 msgid "Imported new recipe!" -msgstr "" +msgstr "Rețetă nouă importată!" #: .\cookbook\views\new.py:129 msgid "There was an error importing this recipe!" -msgstr "" +msgstr "A existat o eroare la importul acestei rețete!" #: .\cookbook\views\new.py:209 msgid "Hello" -msgstr "" +msgstr "Bună" #: .\cookbook\views\new.py:209 msgid "You have been invited by " -msgstr "" +msgstr "Ați fost invitat de " #: .\cookbook\views\new.py:210 msgid " to join their Tandoor Recipes space " -msgstr "" +msgstr " pentru a vă alătura la spațiul lor de rețete Tandoor " #: .\cookbook\views\new.py:211 msgid "Click the following link to activate your account: " -msgstr "" +msgstr "Faceți clic pe următorul link pentru a vă activa contul: " #: .\cookbook\views\new.py:212 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" +"Dacă linkul nu funcționează, utilizați următorul cod pentru a vă alătura " +"manual spațiului: " #: .\cookbook\views\new.py:213 msgid "The invitation is valid until " -msgstr "" +msgstr "Invitația este valabilă până la " #: .\cookbook\views\new.py:214 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" +"Tandoor Recipes este un manager de rețete Open Source. Priviți pe GitHub " #: .\cookbook\views\new.py:217 msgid "Tandoor Recipes Invite" -msgstr "" +msgstr "Invitație Tandoor Recipes" #: .\cookbook\views\new.py:224 msgid "Invite link successfully send to user." -msgstr "" +msgstr "Link-ul invita cu succes trimite la utilizator." #: .\cookbook\views\new.py:227 msgid "" -"You have send to many emails, please share the link manually or wait a few " +"You have sent too many emails, please share the link manually or wait a few " "hours." msgstr "" +"Ați trimis prea multe e-mailuri, vă rugăm să partajați manual linkul sau să " +"așteptați câteva ore." #: .\cookbook\views\new.py:229 msgid "Email could not be sent to user. Please share the link manually." msgstr "" +"E-mailul nu a putut fi trimis utilizatorului. Vă rugăm să partajați link-ul " +"manual." #: .\cookbook\views\views.py:127 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" +"V-ați creat cu succes propriul spațiu de rețete. Începeți prin a adăuga " +"câteva rețete sau invitați alte persoane să vi se alăture." #: .\cookbook\views\views.py:175 msgid "You do not have the required permissions to perform this action!" -msgstr "" +msgstr "Nu aveți permisiunile necesare pentru a efectua această acțiune!" #: .\cookbook\views\views.py:186 msgid "Comment saved!" -msgstr "" +msgstr "Comentariu salvat!" #: .\cookbook\views\views.py:277 msgid "This feature is not available in the demo version!" -msgstr "" +msgstr "Această funcție nu este disponibilă în versiunea demo!" #: .\cookbook\views\views.py:340 msgid "You must select at least one field to search!" -msgstr "" +msgstr "Trebuie să selectați cel puțin un câmp pentru a căuta!" #: .\cookbook\views\views.py:345 msgid "" "To use this search method you must select at least one full text search " "field!" msgstr "" +"Pentru a utiliza această metodă de căutare, trebuie să selectați cel puțin " +"un câmp de căutare text complet!" #: .\cookbook\views\views.py:349 msgid "Fuzzy search is not compatible with this search method!" -msgstr "" +msgstr "Căutarea vagă nu este compatibilă cu această metodă de căutare!" #: .\cookbook\views\views.py:452 msgid "" @@ -2534,39 +2860,48 @@ msgid "" "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" +"Pagina de inițializare poate fi utilizată numai pentru a crea primul " +"utilizator! Dacă ați uitat datele superutilizatorului, vă rugăm să " +"consultați documentația Django despre cum să resetați parolele." #: .\cookbook\views\views.py:459 msgid "Passwords dont match!" -msgstr "" +msgstr "Parolele nu se potrivesc!" #: .\cookbook\views\views.py:475 msgid "User has been created, please login!" -msgstr "" +msgstr "Utilizatorul a fost creat, vă rugăm să vă autentificați!" #: .\cookbook\views\views.py:491 msgid "Malformed Invite Link supplied!" -msgstr "" +msgstr "Link-ul de invitație este furnizat malformat!" #: .\cookbook\views\views.py:498 msgid "You are already member of a space and therefore cannot join this one." msgstr "" +"Sunteți deja membru al unui spațiu și, prin urmare, nu vă puteți alătura " +"acestuia." #: .\cookbook\views\views.py:509 msgid "Successfully joined space." -msgstr "" +msgstr "Spațiu alăturat cu succes." #: .\cookbook\views\views.py:515 msgid "Invite Link not valid or already used!" -msgstr "" +msgstr "Link-ul de invitație nu este valid sau deja utilizat!" #: .\cookbook\views\views.py:579 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" +"Raportarea linkurilor de partajare nu este activată pentru această instanță. " +"Vă rugăm să anunțați administratorul paginii pentru a raporta probleme." #: .\cookbook\views\views.py:585 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." msgstr "" +"Partajare link-urilor de rețete a fost dezactivată! Pentru informații " +"suplimentare, vă rugăm să contactați administratorul paginii." diff --git a/cookbook/locale/ru/LC_MESSAGES/django.mo b/cookbook/locale/ru/LC_MESSAGES/django.mo index b891c482..eea0334b 100644 Binary files a/cookbook/locale/ru/LC_MESSAGES/django.mo and b/cookbook/locale/ru/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/ru/LC_MESSAGES/django.po b/cookbook/locale/ru/LC_MESSAGES/django.po index 31c4280d..a8111337 100644 --- a/cookbook/locale/ru/LC_MESSAGES/django.po +++ b/cookbook/locale/ru/LC_MESSAGES/django.po @@ -8,17 +8,17 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-09-13 22:40+0200\n" -"PO-Revision-Date: 2022-11-30 19:09+0000\n" -"Last-Translator: Alex \n" +"PO-Revision-Date: 2023-04-12 11:55+0000\n" +"Last-Translator: noxonad \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.14.1\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.15\n" #: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 @@ -861,7 +861,7 @@ msgstr "" #: .\cookbook\templates\base.html:220 msgid "GitHub" -msgstr "" +msgstr "GitHub" #: .\cookbook\templates\base.html:224 msgid "API Browser" @@ -1937,7 +1937,7 @@ msgstr "" #: .\cookbook\templates\space.html:106 msgid "user" -msgstr "" +msgstr "пользователь" #: .\cookbook\templates\space.html:107 msgid "guest" diff --git a/cookbook/locale/sl/LC_MESSAGES/django.mo b/cookbook/locale/sl/LC_MESSAGES/django.mo index a6153c74..d2a3587b 100644 Binary files a/cookbook/locale/sl/LC_MESSAGES/django.mo and b/cookbook/locale/sl/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/sl/LC_MESSAGES/django.po b/cookbook/locale/sl/LC_MESSAGES/django.po index cb96c830..3ef3f5f0 100644 --- a/cookbook/locale/sl/LC_MESSAGES/django.po +++ b/cookbook/locale/sl/LC_MESSAGES/django.po @@ -8,17 +8,17 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2021-11-08 16:27+0100\n" -"PO-Revision-Date: 2022-02-02 15:31+0000\n" -"Last-Translator: Mario Dvorsek \n" +"PO-Revision-Date: 2023-04-12 11:55+0000\n" +"Last-Translator: noxonad \n" "Language-Team: Slovenian \n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" -"%100==4 ? 2 : 3;\n" -"X-Generator: Weblate 4.10.1\n" +"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || " +"n%100==4 ? 2 : 3;\n" +"X-Generator: Weblate 4.15\n" #: .\cookbook\filters.py:23 .\cookbook\templates\base.html:125 #: .\cookbook\templates\forms\ingredients.html:34 @@ -2107,7 +2107,7 @@ msgstr "" #: .\cookbook\templates\url_import.html:36 msgid "URL" -msgstr "" +msgstr "URL" #: .\cookbook\templates\url_import.html:38 msgid "App" diff --git a/cookbook/locale/tr/LC_MESSAGES/django.po b/cookbook/locale/tr/LC_MESSAGES/django.po index 69741533..7d24fb25 100644 --- a/cookbook/locale/tr/LC_MESSAGES/django.po +++ b/cookbook/locale/tr/LC_MESSAGES/django.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: 2022-11-06 22:09+0000\n" "Last-Translator: Gorkem \n" "Language-Team: Turkish /remote." "php/webdav/ is added automatically)" msgstr "" -#: .\cookbook\forms.py:264 .\cookbook\views\edit.py:157 +#: .\cookbook\forms.py:265 .\cookbook\views\edit.py:157 msgid "Storage" msgstr "" -#: .\cookbook\forms.py:266 +#: .\cookbook\forms.py:267 msgid "Active" msgstr "Aktif" -#: .\cookbook\forms.py:272 +#: .\cookbook\forms.py:273 msgid "Search String" msgstr "" -#: .\cookbook\forms.py:299 +#: .\cookbook\forms.py:300 msgid "File ID" msgstr "" -#: .\cookbook\forms.py:321 +#: .\cookbook\forms.py:322 msgid "You must provide at least a recipe or a title." msgstr "" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:335 msgid "You can list default users to share recipes with in the settings." msgstr "" -#: .\cookbook\forms.py:335 +#: .\cookbook\forms.py:336 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" -#: .\cookbook\forms.py:361 +#: .\cookbook\forms.py:362 msgid "Maximum number of users for this space reached." msgstr "" -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:368 msgid "Email address already taken!" msgstr "" -#: .\cookbook\forms.py:375 +#: .\cookbook\forms.py:376 msgid "" "An email address is not required but if present the invite link will be sent " "to the user." msgstr "" -#: .\cookbook\forms.py:390 +#: .\cookbook\forms.py:391 msgid "Name already taken." msgstr "" -#: .\cookbook\forms.py:401 +#: .\cookbook\forms.py:402 msgid "Accept Terms and Privacy" msgstr "" -#: .\cookbook\forms.py:433 +#: .\cookbook\forms.py:434 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." msgstr "" -#: .\cookbook\forms.py:443 +#: .\cookbook\forms.py:444 msgid "" "Select type method of search. Click here for " "full description of choices." msgstr "" -#: .\cookbook\forms.py:444 +#: .\cookbook\forms.py:445 msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." msgstr "" -#: .\cookbook\forms.py:446 +#: .\cookbook\forms.py:447 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" msgstr "" -#: .\cookbook\forms.py:448 +#: .\cookbook\forms.py:449 msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" msgstr "" -#: .\cookbook\forms.py:450 +#: .\cookbook\forms.py:451 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" msgstr "" -#: .\cookbook\forms.py:452 +#: .\cookbook\forms.py:453 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 "" -#: .\cookbook\forms.py:454 +#: .\cookbook\forms.py:455 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." msgstr "" -#: .\cookbook\forms.py:458 +#: .\cookbook\forms.py:459 msgid "Search Method" msgstr "" -#: .\cookbook\forms.py:459 +#: .\cookbook\forms.py:460 msgid "Fuzzy Lookups" msgstr "" -#: .\cookbook\forms.py:460 +#: .\cookbook\forms.py:461 msgid "Ignore Accent" msgstr "" -#: .\cookbook\forms.py:461 +#: .\cookbook\forms.py:462 msgid "Partial Match" msgstr "" -#: .\cookbook\forms.py:462 +#: .\cookbook\forms.py:463 msgid "Starts With" msgstr "" -#: .\cookbook\forms.py:463 +#: .\cookbook\forms.py:464 msgid "Fuzzy Search" msgstr "" -#: .\cookbook\forms.py:464 +#: .\cookbook\forms.py:465 msgid "Full Text" msgstr "" -#: .\cookbook\forms.py:489 +#: .\cookbook\forms.py:490 msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." msgstr "" -#: .\cookbook\forms.py:495 +#: .\cookbook\forms.py:496 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." msgstr "" -#: .\cookbook\forms.py:496 +#: .\cookbook\forms.py:497 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." msgstr "" -#: .\cookbook\forms.py:497 +#: .\cookbook\forms.py:498 msgid "Default number of hours to delay a shopping list entry." msgstr "" -#: .\cookbook\forms.py:498 +#: .\cookbook\forms.py:499 msgid "Filter shopping list to only include supermarket categories." msgstr "" -#: .\cookbook\forms.py:499 +#: .\cookbook\forms.py:500 msgid "Days of recent shopping list entries to display." msgstr "" -#: .\cookbook\forms.py:500 +#: .\cookbook\forms.py:501 msgid "Mark food 'On Hand' when checked off shopping list." msgstr "" -#: .\cookbook\forms.py:501 +#: .\cookbook\forms.py:502 msgid "Delimiter to use for CSV exports." msgstr "" -#: .\cookbook\forms.py:502 +#: .\cookbook\forms.py:503 msgid "Prefix to add when copying list to the clipboard." msgstr "" -#: .\cookbook\forms.py:506 +#: .\cookbook\forms.py:507 msgid "Share Shopping List" msgstr "" -#: .\cookbook\forms.py:507 +#: .\cookbook\forms.py:508 msgid "Autosync" msgstr "" -#: .\cookbook\forms.py:508 +#: .\cookbook\forms.py:509 msgid "Auto Add Meal Plan" msgstr "" -#: .\cookbook\forms.py:509 +#: .\cookbook\forms.py:510 msgid "Exclude On Hand" msgstr "" -#: .\cookbook\forms.py:510 +#: .\cookbook\forms.py:511 msgid "Include Related" msgstr "" -#: .\cookbook\forms.py:511 +#: .\cookbook\forms.py:512 msgid "Default Delay Hours" msgstr "" -#: .\cookbook\forms.py:512 +#: .\cookbook\forms.py:513 msgid "Filter to Supermarket" msgstr "" -#: .\cookbook\forms.py:513 +#: .\cookbook\forms.py:514 msgid "Recent Days" msgstr "" -#: .\cookbook\forms.py:514 +#: .\cookbook\forms.py:515 msgid "CSV Delimiter" msgstr "" -#: .\cookbook\forms.py:515 +#: .\cookbook\forms.py:516 msgid "List Prefix" msgstr "" -#: .\cookbook\forms.py:516 +#: .\cookbook\forms.py:517 msgid "Auto On Hand" msgstr "" -#: .\cookbook\forms.py:526 +#: .\cookbook\forms.py:527 msgid "Reset Food Inheritance" msgstr "" -#: .\cookbook\forms.py:527 +#: .\cookbook\forms.py:528 msgid "Reset all food to inherit the fields configured." msgstr "" -#: .\cookbook\forms.py:539 +#: .\cookbook\forms.py:540 msgid "Fields on food that should be inherited by default." msgstr "" -#: .\cookbook\forms.py:540 +#: .\cookbook\forms.py:541 #, fuzzy #| msgid "Show recently viewed recipes on search page." msgid "Show recipe counts on search filters" msgstr "Son görüntülenen tarifleri arama sayfasında göster." -#: .\cookbook\forms.py:541 +#: .\cookbook\forms.py:542 msgid "Use the plural form for units and food inside this space." msgstr "" @@ -440,7 +440,7 @@ msgid "" msgstr "" #: .\cookbook\helper\permission_helper.py:164 -#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:114 +#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117 msgid "You are not logged in and therefore cannot view this page!" msgstr "" @@ -453,7 +453,7 @@ msgstr "" #: .\cookbook\helper\permission_helper.py:305 #: .\cookbook\helper\permission_helper.py:321 #: .\cookbook\helper\permission_helper.py:342 .\cookbook\views\data.py:36 -#: .\cookbook\views\views.py:125 .\cookbook\views\views.py:132 +#: .\cookbook\views\views.py:128 .\cookbook\views\views.py:135 msgid "You do not have the required permissions to view this page!" msgstr "" @@ -472,11 +472,39 @@ msgstr "" msgid "You have more users than allowed in your space." msgstr "" -#: .\cookbook\helper\recipe_search.py:570 +#: .\cookbook\helper\recipe_search.py:630 msgid "One of queryset or hash_key must be provided" msgstr "" -#: .\cookbook\helper\shopping_helper.py:152 +#: .\cookbook\helper\recipe_url_import.py:266 +msgid "reverse rotation" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:267 +msgid "careful rotation" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:268 +msgid "knead" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:269 +msgid "thicken" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:270 +msgid "warm up" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:271 +msgid "ferment" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:272 +msgid "sous-vide" +msgstr "" + +#: .\cookbook\helper\shopping_helper.py:157 msgid "You must supply a servings size" msgstr "" @@ -494,36 +522,40 @@ msgstr "" msgid "I made this" msgstr "" -#: .\cookbook\integration\integration.py:223 +#: .\cookbook\integration\integration.py:218 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -#: .\cookbook\integration\integration.py:226 +#: .\cookbook\integration\integration.py:221 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" -#: .\cookbook\integration\integration.py:231 +#: .\cookbook\integration\integration.py:226 msgid "The following recipes were ignored because they already existed:" msgstr "" -#: .\cookbook\integration\integration.py:235 +#: .\cookbook\integration\integration.py:230 #, python-format msgid "Imported %s recipes." msgstr "" -#: .\cookbook\integration\paprika.py:46 -msgid "Notes" +#: .\cookbook\integration\openeats.py:26 +msgid "Recipe source:" msgstr "" #: .\cookbook\integration\paprika.py:49 +msgid "Notes" +msgstr "" + +#: .\cookbook\integration\paprika.py:52 msgid "Nutritional Information" msgstr "" -#: .\cookbook\integration\paprika.py:53 +#: .\cookbook\integration\paprika.py:56 msgid "Source" msgstr "" @@ -590,72 +622,72 @@ msgid "" "upload." msgstr "" -#: .\cookbook\models.py:364 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:365 .\cookbook\templates\search.html:7 #: .\cookbook\templates\settings.html:18 #: .\cookbook\templates\space_manage.html:7 msgid "Search" msgstr "" -#: .\cookbook\models.py:365 .\cookbook\templates\base.html:110 +#: .\cookbook\models.py:366 .\cookbook\templates\base.html:110 #: .\cookbook\templates\meal_plan.html:7 .\cookbook\views\delete.py:178 #: .\cookbook\views\edit.py:211 .\cookbook\views\new.py:179 msgid "Meal-Plan" msgstr "" -#: .\cookbook\models.py:366 .\cookbook\templates\base.html:118 +#: .\cookbook\models.py:367 .\cookbook\templates\base.html:118 msgid "Books" msgstr "" -#: .\cookbook\models.py:579 +#: .\cookbook\models.py:580 msgid " is part of a recipe step and cannot be deleted" msgstr "" -#: .\cookbook\models.py:1180 .\cookbook\templates\search_info.html:28 +#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:28 msgid "Simple" msgstr "" -#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:33 +#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:33 msgid "Phrase" msgstr "" -#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:38 +#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:38 msgid "Web" msgstr "" -#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:47 +#: .\cookbook\models.py:1184 .\cookbook\templates\search_info.html:47 msgid "Raw" msgstr "" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Food Alias" msgstr "" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Unit Alias" msgstr "" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Keyword Alias" msgstr "" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Description Replace" msgstr "" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Instruction Replace" msgstr "" -#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36 +#: .\cookbook\models.py:1258 .\cookbook\views\delete.py:36 #: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48 msgid "Recipe" msgstr "" -#: .\cookbook\models.py:1258 +#: .\cookbook\models.py:1259 msgid "Food" msgstr "" -#: .\cookbook\models.py:1259 .\cookbook\templates\base.html:141 +#: .\cookbook\models.py:1260 .\cookbook\templates\base.html:141 msgid "Keyword" msgstr "" @@ -671,64 +703,64 @@ msgstr "" msgid "Cannot modify Space owner permission." msgstr "" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "Hello" msgstr "" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "You have been invited by " msgstr "" -#: .\cookbook\serializer.py:1086 +#: .\cookbook\serializer.py:1094 msgid " to join their Tandoor Recipes space " msgstr "" -#: .\cookbook\serializer.py:1087 +#: .\cookbook\serializer.py:1095 msgid "Click the following link to activate your account: " msgstr "" -#: .\cookbook\serializer.py:1088 +#: .\cookbook\serializer.py:1096 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "" -#: .\cookbook\serializer.py:1089 +#: .\cookbook\serializer.py:1097 msgid "The invitation is valid until " msgstr "" -#: .\cookbook\serializer.py:1090 +#: .\cookbook\serializer.py:1098 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -#: .\cookbook\serializer.py:1093 +#: .\cookbook\serializer.py:1101 msgid "Tandoor Recipes Invite" msgstr "" -#: .\cookbook\serializer.py:1234 +#: .\cookbook\serializer.py:1242 msgid "Existing shopping list to update" msgstr "" -#: .\cookbook\serializer.py:1236 +#: .\cookbook\serializer.py:1244 msgid "" "List of ingredient IDs from the recipe to add, if not provided all " "ingredients will be added." msgstr "" -#: .\cookbook\serializer.py:1238 +#: .\cookbook\serializer.py:1246 msgid "" "Providing a list_recipe ID and servings of 0 will delete that shopping list." msgstr "" -#: .\cookbook\serializer.py:1247 +#: .\cookbook\serializer.py:1255 msgid "Amount of food to add to the shopping list" msgstr "" -#: .\cookbook\serializer.py:1249 +#: .\cookbook\serializer.py:1257 msgid "ID of unit to use for the shopping list" msgstr "" -#: .\cookbook\serializer.py:1251 +#: .\cookbook\serializer.py:1259 msgid "When set to true will delete all food from active shopping lists." msgstr "" @@ -1518,11 +1550,11 @@ msgstr "" msgid "Profile" msgstr "" -#: .\cookbook\templates\recipe_view.html:26 +#: .\cookbook\templates\recipe_view.html:41 msgid "by" msgstr "" -#: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:144 +#: .\cookbook\templates\recipe_view.html:59 .\cookbook\views\delete.py:144 #: .\cookbook\views\edit.py:171 msgid "Comment" msgstr "" @@ -2000,258 +2032,258 @@ msgstr "" msgid "URL Import" msgstr "" -#: .\cookbook\views\api.py:109 .\cookbook\views\api.py:201 +#: .\cookbook\views\api.py:110 .\cookbook\views\api.py:202 msgid "Parameter updated_at incorrectly formatted" msgstr "" -#: .\cookbook\views\api.py:221 .\cookbook\views\api.py:324 +#: .\cookbook\views\api.py:222 .\cookbook\views\api.py:325 #, python-brace-format msgid "No {self.basename} with id {pk} exists" msgstr "" -#: .\cookbook\views\api.py:225 +#: .\cookbook\views\api.py:226 msgid "Cannot merge with the same object!" msgstr "" -#: .\cookbook\views\api.py:232 +#: .\cookbook\views\api.py:233 #, python-brace-format msgid "No {self.basename} with id {target} exists" msgstr "" -#: .\cookbook\views\api.py:237 +#: .\cookbook\views\api.py:238 msgid "Cannot merge with child object!" msgstr "" -#: .\cookbook\views\api.py:270 +#: .\cookbook\views\api.py:271 #, python-brace-format msgid "{source.name} was merged successfully with {target.name}" msgstr "" -#: .\cookbook\views\api.py:275 +#: .\cookbook\views\api.py:276 #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" msgstr "" -#: .\cookbook\views\api.py:333 +#: .\cookbook\views\api.py:334 #, python-brace-format msgid "{child.name} was moved successfully to the root." msgstr "" -#: .\cookbook\views\api.py:336 .\cookbook\views\api.py:354 +#: .\cookbook\views\api.py:337 .\cookbook\views\api.py:355 msgid "An error occurred attempting to move " msgstr "" -#: .\cookbook\views\api.py:339 +#: .\cookbook\views\api.py:340 msgid "Cannot move an object to itself!" msgstr "" -#: .\cookbook\views\api.py:345 +#: .\cookbook\views\api.py:346 #, python-brace-format msgid "No {self.basename} with id {parent} exists" msgstr "" -#: .\cookbook\views\api.py:351 +#: .\cookbook\views\api.py:352 #, python-brace-format msgid "{child.name} was moved successfully to parent {parent.name}" msgstr "" -#: .\cookbook\views\api.py:547 +#: .\cookbook\views\api.py:553 #, python-brace-format msgid "{obj.name} was removed from the shopping list." msgstr "" -#: .\cookbook\views\api.py:552 .\cookbook\views\api.py:882 -#: .\cookbook\views\api.py:895 +#: .\cookbook\views\api.py:558 .\cookbook\views\api.py:888 +#: .\cookbook\views\api.py:901 #, python-brace-format msgid "{obj.name} was added to the shopping list." msgstr "" -#: .\cookbook\views\api.py:679 +#: .\cookbook\views\api.py:685 msgid "ID of recipe a step is part of. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:681 +#: .\cookbook\views\api.py:687 msgid "Query string matched (fuzzy) against object name." msgstr "" -#: .\cookbook\views\api.py:725 +#: .\cookbook\views\api.py:731 msgid "" "Query string matched (fuzzy) against recipe name. In the future also " "fulltext search." msgstr "" -#: .\cookbook\views\api.py:727 +#: .\cookbook\views\api.py:733 msgid "" "ID of keyword a recipe should have. For multiple repeat parameter. " "Equivalent to keywords_or" msgstr "" -#: .\cookbook\views\api.py:730 +#: .\cookbook\views\api.py:736 msgid "" "Keyword IDs, repeat for multiple. Return recipes with any of the keywords" msgstr "" -#: .\cookbook\views\api.py:733 +#: .\cookbook\views\api.py:739 msgid "" "Keyword IDs, repeat for multiple. Return recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:736 +#: .\cookbook\views\api.py:742 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords." msgstr "" -#: .\cookbook\views\api.py:739 +#: .\cookbook\views\api.py:745 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords." msgstr "" -#: .\cookbook\views\api.py:741 +#: .\cookbook\views\api.py:747 msgid "ID of food a recipe should have. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:744 +#: .\cookbook\views\api.py:750 msgid "Food IDs, repeat for multiple. Return recipes with any of the foods" msgstr "" -#: .\cookbook\views\api.py:746 +#: .\cookbook\views\api.py:752 msgid "Food IDs, repeat for multiple. Return recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:748 +#: .\cookbook\views\api.py:754 msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods." msgstr "" -#: .\cookbook\views\api.py:750 +#: .\cookbook\views\api.py:756 msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods." msgstr "" -#: .\cookbook\views\api.py:751 +#: .\cookbook\views\api.py:757 msgid "ID of unit a recipe should have." msgstr "" -#: .\cookbook\views\api.py:753 +#: .\cookbook\views\api.py:759 msgid "" "Rating a recipe should have or greater. [0 - 5] Negative value filters " "rating less than." msgstr "" -#: .\cookbook\views\api.py:754 +#: .\cookbook\views\api.py:760 msgid "ID of book a recipe should be in. For multiple repeat parameter." msgstr "" -#: .\cookbook\views\api.py:756 +#: .\cookbook\views\api.py:762 msgid "Book IDs, repeat for multiple. Return recipes with any of the books" msgstr "" -#: .\cookbook\views\api.py:758 +#: .\cookbook\views\api.py:764 msgid "Book IDs, repeat for multiple. Return recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:760 +#: .\cookbook\views\api.py:766 msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books." msgstr "" -#: .\cookbook\views\api.py:762 +#: .\cookbook\views\api.py:768 msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books." msgstr "" -#: .\cookbook\views\api.py:764 +#: .\cookbook\views\api.py:770 msgid "If only internal recipes should be returned. [true/false]" msgstr "" -#: .\cookbook\views\api.py:766 +#: .\cookbook\views\api.py:772 msgid "Returns the results in randomized order. [true/false]" msgstr "" -#: .\cookbook\views\api.py:768 +#: .\cookbook\views\api.py:774 msgid "Returns new results first in search results. [true/false]" msgstr "" -#: .\cookbook\views\api.py:770 +#: .\cookbook\views\api.py:776 msgid "" "Filter recipes cooked X times or more. Negative values returns cooked less " "than X times" msgstr "" -#: .\cookbook\views\api.py:772 +#: .\cookbook\views\api.py:778 msgid "" "Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:774 +#: .\cookbook\views\api.py:780 msgid "" "Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:776 +#: .\cookbook\views\api.py:782 msgid "" "Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "" -#: .\cookbook\views\api.py:778 +#: .\cookbook\views\api.py:784 msgid "" "Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" -#: .\cookbook\views\api.py:780 +#: .\cookbook\views\api.py:786 msgid "Filter recipes that can be made with OnHand food. [true/false]" msgstr "" -#: .\cookbook\views\api.py:940 +#: .\cookbook\views\api.py:946 msgid "" "Returns the shopping list entry with a primary key of id. Multiple values " "allowed." msgstr "" -#: .\cookbook\views\api.py:945 +#: .\cookbook\views\api.py:951 msgid "" "Filter shopping list entries on checked. [true, false, both, recent]
- recent includes unchecked items and recently completed items." msgstr "" -#: .\cookbook\views\api.py:948 +#: .\cookbook\views\api.py:954 msgid "Returns the shopping list entries sorted by supermarket category order." msgstr "" -#: .\cookbook\views\api.py:1160 +#: .\cookbook\views\api.py:1166 msgid "Nothing to do." msgstr "" -#: .\cookbook\views\api.py:1180 +#: .\cookbook\views\api.py:1198 msgid "Invalid Url" msgstr "" -#: .\cookbook\views\api.py:1187 +#: .\cookbook\views\api.py:1205 msgid "Connection Refused." msgstr "" -#: .\cookbook\views\api.py:1192 +#: .\cookbook\views\api.py:1210 msgid "Bad URL Schema." msgstr "" -#: .\cookbook\views\api.py:1215 +#: .\cookbook\views\api.py:1233 msgid "No usable data could be found." msgstr "" -#: .\cookbook\views\api.py:1308 .\cookbook\views\import_export.py:114 +#: .\cookbook\views\api.py:1326 .\cookbook\views\import_export.py:117 msgid "Importing is not implemented for this provider" msgstr "" -#: .\cookbook\views\api.py:1352 .\cookbook\views\data.py:31 +#: .\cookbook\views\api.py:1372 .\cookbook\views\data.py:31 #: .\cookbook\views\edit.py:120 .\cookbook\views\new.py:90 msgid "This feature is not yet available in the hosted version of tandoor!" msgstr "" -#: .\cookbook\views\api.py:1374 +#: .\cookbook\views\api.py:1394 msgid "Sync successful!" msgstr "" -#: .\cookbook\views\api.py:1379 +#: .\cookbook\views\api.py:1399 msgid "Error synchronizing with Storage" msgstr "" @@ -2312,7 +2344,7 @@ msgstr "" msgid "Error saving changes!" msgstr "" -#: .\cookbook\views\import_export.py:101 +#: .\cookbook\views\import_export.py:104 msgid "" "The PDF Exporter is not enabled on this instance as it is still in an " "experimental state." @@ -2358,73 +2390,73 @@ msgstr "" msgid "There was an error importing this recipe!" msgstr "" -#: .\cookbook\views\views.py:86 +#: .\cookbook\views\views.py:73 .\cookbook\views\views.py:191 +#: .\cookbook\views\views.py:213 .\cookbook\views\views.py:399 +msgid "This feature is not available in the demo version!" +msgstr "" + +#: .\cookbook\views\views.py:89 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "" -#: .\cookbook\views\views.py:140 +#: .\cookbook\views\views.py:143 msgid "You do not have the required permissions to perform this action!" msgstr "" -#: .\cookbook\views\views.py:151 +#: .\cookbook\views\views.py:154 msgid "Comment saved!" msgstr "" -#: .\cookbook\views\views.py:188 .\cookbook\views\views.py:210 -#: .\cookbook\views\views.py:396 -msgid "This feature is not available in the demo version!" -msgstr "" - -#: .\cookbook\views\views.py:250 +#: .\cookbook\views\views.py:253 msgid "You must select at least one field to search!" msgstr "" -#: .\cookbook\views\views.py:255 +#: .\cookbook\views\views.py:258 msgid "" "To use this search method you must select at least one full text search " "field!" msgstr "" -#: .\cookbook\views\views.py:259 +#: .\cookbook\views\views.py:262 msgid "Fuzzy search is not compatible with this search method!" msgstr "" -#: .\cookbook\views\views.py:335 +#: .\cookbook\views\views.py:338 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -#: .\cookbook\views\views.py:342 +#: .\cookbook\views\views.py:345 msgid "Passwords dont match!" msgstr "" -#: .\cookbook\views\views.py:350 +#: .\cookbook\views\views.py:353 msgid "User has been created, please login!" msgstr "" -#: .\cookbook\views\views.py:366 +#: .\cookbook\views\views.py:369 msgid "Malformed Invite Link supplied!" msgstr "" -#: .\cookbook\views\views.py:383 +#: .\cookbook\views\views.py:386 msgid "Successfully joined space." msgstr "" -#: .\cookbook\views\views.py:389 +#: .\cookbook\views\views.py:392 msgid "Invite Link not valid or already used!" msgstr "" -#: .\cookbook\views\views.py:406 +#: .\cookbook\views\views.py:409 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "" -#: .\cookbook\views\views.py:412 +#: .\cookbook\views\views.py:415 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/uk/LC_MESSAGES/django.mo b/cookbook/locale/uk/LC_MESSAGES/django.mo index 4218b426..93984701 100644 Binary files a/cookbook/locale/uk/LC_MESSAGES/django.mo and b/cookbook/locale/uk/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/uk/LC_MESSAGES/django.po b/cookbook/locale/uk/LC_MESSAGES/django.po index 94991156..b48ed6a5 100644 --- a/cookbook/locale/uk/LC_MESSAGES/django.po +++ b/cookbook/locale/uk/LC_MESSAGES/django.po @@ -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: 2023-02-09 13:55+0000\n" -"Last-Translator: vertilo \n" +"PO-Revision-Date: 2023-04-12 11:55+0000\n" +"Last-Translator: noxonad \n" "Language-Team: Ukrainian \n" "Language: uk\n" @@ -1091,7 +1091,7 @@ msgstr "" #: .\cookbook\templates\base.html:311 msgid "GitHub" -msgstr "" +msgstr "GitHub" #: .\cookbook\templates\base.html:313 msgid "Translate Tandoor" diff --git a/cookbook/locale/zh_CN/LC_MESSAGES/django.mo b/cookbook/locale/zh_CN/LC_MESSAGES/django.mo index fcbd4ef2..9a627194 100644 Binary files a/cookbook/locale/zh_CN/LC_MESSAGES/django.mo and b/cookbook/locale/zh_CN/LC_MESSAGES/django.mo differ diff --git a/cookbook/locale/zh_CN/LC_MESSAGES/django.po b/cookbook/locale/zh_CN/LC_MESSAGES/django.po index 19f012c0..b6fa35b4 100644 --- a/cookbook/locale/zh_CN/LC_MESSAGES/django.po +++ b/cookbook/locale/zh_CN/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: 2023-02-26 13:15+0000\n" "Last-Translator: 吕楪 \n" "Language-Team: Chinese (Simplified) /remote." "php/webdav/ is added automatically)" @@ -193,60 +193,60 @@ msgstr "" "Dropbox 留空并输入基础 Nextcloud 网址(/remote.php/webdav/ 会自" "动添加)" -#: .\cookbook\forms.py:264 .\cookbook\views\edit.py:157 +#: .\cookbook\forms.py:265 .\cookbook\views\edit.py:157 msgid "Storage" msgstr "存储" -#: .\cookbook\forms.py:266 +#: .\cookbook\forms.py:267 msgid "Active" msgstr "活跃" -#: .\cookbook\forms.py:272 +#: .\cookbook\forms.py:273 msgid "Search String" msgstr "搜索字符串" -#: .\cookbook\forms.py:299 +#: .\cookbook\forms.py:300 msgid "File ID" msgstr "文件编号" -#: .\cookbook\forms.py:321 +#: .\cookbook\forms.py:322 msgid "You must provide at least a recipe or a title." msgstr "你必须至少提供一份菜谱或一个标题。" -#: .\cookbook\forms.py:334 +#: .\cookbook\forms.py:335 msgid "You can list default users to share recipes with in the settings." msgstr "你可以在设置中列出默认用户来分享菜谱。" -#: .\cookbook\forms.py:335 +#: .\cookbook\forms.py:336 msgid "" "You can use markdown to format this field. See the docs here" msgstr "" "可以使用 Markdown 设置此字段格式。查看文档" -#: .\cookbook\forms.py:361 +#: .\cookbook\forms.py:362 msgid "Maximum number of users for this space reached." msgstr "已达到该空间的最大用户数。" -#: .\cookbook\forms.py:367 +#: .\cookbook\forms.py:368 msgid "Email address already taken!" msgstr "电子邮件地址已被注册!" -#: .\cookbook\forms.py:375 +#: .\cookbook\forms.py:376 msgid "" "An email address is not required but if present the invite link will be sent " "to the user." msgstr "电子邮件地址不是必需的,但如果存在,邀请链接将被发送给用户。" -#: .\cookbook\forms.py:390 +#: .\cookbook\forms.py:391 msgid "Name already taken." msgstr "名字已被占用。" -#: .\cookbook\forms.py:401 +#: .\cookbook\forms.py:402 msgid "Accept Terms and Privacy" msgstr "接受条款及隐私政策" -#: .\cookbook\forms.py:433 +#: .\cookbook\forms.py:434 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." @@ -254,7 +254,7 @@ msgstr "" "确定使用三元图相似性匹配时搜索的模糊程度(例如,较低的值意味着忽略更多的打字" "错误)。" -#: .\cookbook\forms.py:443 +#: .\cookbook\forms.py:444 msgid "" "Select type method of search. Click here for " "full description of choices." @@ -262,31 +262,31 @@ msgstr "" "选择搜索类型方法。 点击此处 查看选项的完整说" "明。" -#: .\cookbook\forms.py:444 +#: .\cookbook\forms.py:445 msgid "" "Use fuzzy matching on units, keywords and ingredients when editing and " "importing recipes." msgstr "编辑和导入菜谱时,对单位、关键词和食材使用模糊匹配。" -#: .\cookbook\forms.py:446 +#: .\cookbook\forms.py:447 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" msgstr "忽略搜索字段的重音。此选项会因语言差异导致搜索质量产生变化" -#: .\cookbook\forms.py:448 +#: .\cookbook\forms.py:449 msgid "" "Fields to search for partial matches. (e.g. searching for 'Pie' will return " "'pie' and 'piece' and 'soapie')" msgstr "用于搜索部分匹配的字段。(如搜索“Pie”会返回“pie”、“piece”和“soapie”)" -#: .\cookbook\forms.py:450 +#: .\cookbook\forms.py:451 msgid "" "Fields to search for beginning of word matches. (e.g. searching for 'sa' " "will return 'salad' and 'sandwich')" msgstr "用于搜索开头匹配的字段。(如搜索“sa”会返回“salad”和“sandwich”)" -#: .\cookbook\forms.py:452 +#: .\cookbook\forms.py:453 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." @@ -294,41 +294,41 @@ msgstr "" "“模糊”搜索字段。(例如搜索“recpie”将会找到“recipe”。)注意:此选项将" "与“web”和“raw”搜索方法冲突。" -#: .\cookbook\forms.py:454 +#: .\cookbook\forms.py:455 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." msgstr "全文搜索字段。“web”、“phrase”和“raw”搜索方法仅适用于全文字段。" -#: .\cookbook\forms.py:458 +#: .\cookbook\forms.py:459 msgid "Search Method" msgstr "搜索方法" -#: .\cookbook\forms.py:459 +#: .\cookbook\forms.py:460 msgid "Fuzzy Lookups" msgstr "模糊查找" -#: .\cookbook\forms.py:460 +#: .\cookbook\forms.py:461 msgid "Ignore Accent" msgstr "忽略重音" -#: .\cookbook\forms.py:461 +#: .\cookbook\forms.py:462 msgid "Partial Match" msgstr "部分匹配" -#: .\cookbook\forms.py:462 +#: .\cookbook\forms.py:463 msgid "Starts With" msgstr "起始于" -#: .\cookbook\forms.py:463 +#: .\cookbook\forms.py:464 msgid "Fuzzy Search" msgstr "模糊搜索" -#: .\cookbook\forms.py:464 +#: .\cookbook\forms.py:465 msgid "Full Text" msgstr "全文" -#: .\cookbook\forms.py:489 +#: .\cookbook\forms.py:490 msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." @@ -336,103 +336,103 @@ msgstr "" "用户将看到你添加到购物清单中的所有商品。他们必须将你添加到列表才能看到他们清" "单上的项目。" -#: .\cookbook\forms.py:495 +#: .\cookbook\forms.py:496 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." msgstr "将膳食计划(手动或自动)添加到购物清单时,包括所有相关食谱。" -#: .\cookbook\forms.py:496 +#: .\cookbook\forms.py:497 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." msgstr "将膳食计划(手动或自动)添加到购物清单时,排除现有食材。" -#: .\cookbook\forms.py:497 +#: .\cookbook\forms.py:498 msgid "Default number of hours to delay a shopping list entry." msgstr "延迟购物清单条目的默认小时数。" -#: .\cookbook\forms.py:498 +#: .\cookbook\forms.py:499 msgid "Filter shopping list to only include supermarket categories." msgstr "筛选购物清单仅包含超市分类。" -#: .\cookbook\forms.py:499 +#: .\cookbook\forms.py:500 msgid "Days of recent shopping list entries to display." msgstr "显示最近几天的购物清单列表。" -#: .\cookbook\forms.py:500 +#: .\cookbook\forms.py:501 msgid "Mark food 'On Hand' when checked off shopping list." msgstr "在核对购物清单时,将食物标记为“入手”。" -#: .\cookbook\forms.py:501 +#: .\cookbook\forms.py:502 msgid "Delimiter to use for CSV exports." msgstr "用于 CSV 导出的分隔符。" -#: .\cookbook\forms.py:502 +#: .\cookbook\forms.py:503 msgid "Prefix to add when copying list to the clipboard." msgstr "将清单复制到剪贴板时要添加的前缀。" -#: .\cookbook\forms.py:506 +#: .\cookbook\forms.py:507 msgid "Share Shopping List" msgstr "分享购物清单" -#: .\cookbook\forms.py:507 +#: .\cookbook\forms.py:508 msgid "Autosync" msgstr "自动同步" -#: .\cookbook\forms.py:508 +#: .\cookbook\forms.py:509 msgid "Auto Add Meal Plan" msgstr "自动添加膳食计划" -#: .\cookbook\forms.py:509 +#: .\cookbook\forms.py:510 msgid "Exclude On Hand" msgstr "排除现有" -#: .\cookbook\forms.py:510 +#: .\cookbook\forms.py:511 msgid "Include Related" msgstr "包括相关" -#: .\cookbook\forms.py:511 +#: .\cookbook\forms.py:512 msgid "Default Delay Hours" msgstr "默认延迟时间" -#: .\cookbook\forms.py:512 +#: .\cookbook\forms.py:513 msgid "Filter to Supermarket" msgstr "按超市筛选" -#: .\cookbook\forms.py:513 +#: .\cookbook\forms.py:514 msgid "Recent Days" msgstr "最近几天" -#: .\cookbook\forms.py:514 +#: .\cookbook\forms.py:515 msgid "CSV Delimiter" msgstr "CSV 分隔符" -#: .\cookbook\forms.py:515 +#: .\cookbook\forms.py:516 msgid "List Prefix" msgstr "清单前缀" -#: .\cookbook\forms.py:516 +#: .\cookbook\forms.py:517 msgid "Auto On Hand" msgstr "自动入手" -#: .\cookbook\forms.py:526 +#: .\cookbook\forms.py:527 msgid "Reset Food Inheritance" msgstr "重置食物材料" -#: .\cookbook\forms.py:527 +#: .\cookbook\forms.py:528 msgid "Reset all food to inherit the fields configured." msgstr "重置所有食物以继承配置的字段。" -#: .\cookbook\forms.py:539 +#: .\cookbook\forms.py:540 msgid "Fields on food that should be inherited by default." msgstr "默认情况下应继承的食物上的字段。" -#: .\cookbook\forms.py:540 +#: .\cookbook\forms.py:541 msgid "Show recipe counts on search filters" msgstr "显示搜索筛选器上的食谱计数" -#: .\cookbook\forms.py:541 +#: .\cookbook\forms.py:542 msgid "Use the plural form for units and food inside this space." msgstr "在此空间内使用复数形式表示单位和食物。" @@ -443,7 +443,7 @@ msgid "" msgstr "为了防止垃圾邮件,所要求的电子邮件没有被发送。请等待几分钟后再试。" #: .\cookbook\helper\permission_helper.py:164 -#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:114 +#: .\cookbook\helper\permission_helper.py:187 .\cookbook\views\views.py:117 msgid "You are not logged in and therefore cannot view this page!" msgstr "你没有登录,因此不能查看这个页面!" @@ -456,7 +456,7 @@ msgstr "你没有登录,因此不能查看这个页面!" #: .\cookbook\helper\permission_helper.py:305 #: .\cookbook\helper\permission_helper.py:321 #: .\cookbook\helper\permission_helper.py:342 .\cookbook\views\data.py:36 -#: .\cookbook\views\views.py:125 .\cookbook\views\views.py:132 +#: .\cookbook\views\views.py:128 .\cookbook\views\views.py:135 msgid "You do not have the required permissions to view this page!" msgstr "你没有必要的权限来查看这个页面!" @@ -475,11 +475,41 @@ msgstr "你已经达到了空间的菜谱的最大数量。" msgid "You have more users than allowed in your space." msgstr "你的空间中的用户数超过了允许的数量。" -#: .\cookbook\helper\recipe_search.py:570 +#: .\cookbook\helper\recipe_search.py:630 msgid "One of queryset or hash_key must be provided" msgstr "必须提供 queryset 或 hash_key 之一" -#: .\cookbook\helper\shopping_helper.py:152 +#: .\cookbook\helper\recipe_url_import.py:266 +#, fuzzy +#| msgid "Use fractions" +msgid "reverse rotation" +msgstr "使用分数" + +#: .\cookbook\helper\recipe_url_import.py:267 +msgid "careful rotation" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:268 +msgid "knead" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:269 +msgid "thicken" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:270 +msgid "warm up" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:271 +msgid "ferment" +msgstr "" + +#: .\cookbook\helper\recipe_url_import.py:272 +msgid "sous-vide" +msgstr "" + +#: .\cookbook\helper\shopping_helper.py:157 msgid "You must supply a servings size" msgstr "你必须提供一些份量" @@ -497,36 +527,42 @@ msgstr "喜欢" msgid "I made this" msgstr "我做的" -#: .\cookbook\integration\integration.py:223 +#: .\cookbook\integration\integration.py:218 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "需要一个 .zip 文件。你是否为数据选择了正确的导入器类型?" -#: .\cookbook\integration\integration.py:226 +#: .\cookbook\integration\integration.py:221 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "在导入过程中发生了一个意外的错误。请确认你已经上传了一个有效的文件。" -#: .\cookbook\integration\integration.py:231 +#: .\cookbook\integration\integration.py:226 msgid "The following recipes were ignored because they already existed:" msgstr "以下菜谱被忽略了,因为它们已经存在了:" -#: .\cookbook\integration\integration.py:235 +#: .\cookbook\integration\integration.py:230 #, python-format msgid "Imported %s recipes." msgstr "导入了%s菜谱。" -#: .\cookbook\integration\paprika.py:46 +#: .\cookbook\integration\openeats.py:26 +#, fuzzy +#| msgid "Recipe Home" +msgid "Recipe source:" +msgstr "菜谱主页" + +#: .\cookbook\integration\paprika.py:49 msgid "Notes" msgstr "说明" -#: .\cookbook\integration\paprika.py:49 +#: .\cookbook\integration\paprika.py:52 msgid "Nutritional Information" msgstr "营养信息" -#: .\cookbook\integration\paprika.py:53 +#: .\cookbook\integration\paprika.py:56 msgid "Source" msgstr "来源" @@ -593,72 +629,72 @@ msgid "" "upload." msgstr "空间的最大文件存储量,单位为 MB。0表示无限制,-1表示禁止上传文件。" -#: .\cookbook\models.py:364 .\cookbook\templates\search.html:7 +#: .\cookbook\models.py:365 .\cookbook\templates\search.html:7 #: .\cookbook\templates\settings.html:18 #: .\cookbook\templates\space_manage.html:7 msgid "Search" msgstr "搜索" -#: .\cookbook\models.py:365 .\cookbook\templates\base.html:110 +#: .\cookbook\models.py:366 .\cookbook\templates\base.html:110 #: .\cookbook\templates\meal_plan.html:7 .\cookbook\views\delete.py:178 #: .\cookbook\views\edit.py:211 .\cookbook\views\new.py:179 msgid "Meal-Plan" msgstr "膳食计划" -#: .\cookbook\models.py:366 .\cookbook\templates\base.html:118 +#: .\cookbook\models.py:367 .\cookbook\templates\base.html:118 msgid "Books" msgstr "书籍" -#: .\cookbook\models.py:579 +#: .\cookbook\models.py:580 msgid " is part of a recipe step and cannot be deleted" msgstr " 是菜谱步骤的一部分,不能删除" -#: .\cookbook\models.py:1180 .\cookbook\templates\search_info.html:28 +#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:28 msgid "Simple" msgstr "简明" -#: .\cookbook\models.py:1181 .\cookbook\templates\search_info.html:33 +#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:33 msgid "Phrase" msgstr "短语" -#: .\cookbook\models.py:1182 .\cookbook\templates\search_info.html:38 +#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:38 msgid "Web" msgstr "网络" -#: .\cookbook\models.py:1183 .\cookbook\templates\search_info.html:47 +#: .\cookbook\models.py:1184 .\cookbook\templates\search_info.html:47 msgid "Raw" msgstr "原始" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Food Alias" msgstr "食物别名" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Unit Alias" msgstr "单位别名" -#: .\cookbook\models.py:1230 +#: .\cookbook\models.py:1231 msgid "Keyword Alias" msgstr "关键词别名" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Description Replace" msgstr "描述" -#: .\cookbook\models.py:1231 +#: .\cookbook\models.py:1232 msgid "Instruction Replace" msgstr "指示" -#: .\cookbook\models.py:1257 .\cookbook\views\delete.py:36 +#: .\cookbook\models.py:1258 .\cookbook\views\delete.py:36 #: .\cookbook\views\edit.py:251 .\cookbook\views\new.py:48 msgid "Recipe" msgstr "菜谱" -#: .\cookbook\models.py:1258 +#: .\cookbook\models.py:1259 msgid "Food" msgstr "食物" -#: .\cookbook\models.py:1259 .\cookbook\templates\base.html:141 +#: .\cookbook\models.py:1260 .\cookbook\templates\base.html:141 msgid "Keyword" msgstr "关键词" @@ -674,64 +710,64 @@ msgstr "你已达到文件上传的限制。" msgid "Cannot modify Space owner permission." msgstr "无法修改空间所有者权限。" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "Hello" msgstr "你好" -#: .\cookbook\serializer.py:1085 +#: .\cookbook\serializer.py:1093 msgid "You have been invited by " msgstr "您已被邀请至 " -#: .\cookbook\serializer.py:1086 +#: .\cookbook\serializer.py:1094 msgid " to join their Tandoor Recipes space " msgstr " 加入他们的泥炉食谱空间 " -#: .\cookbook\serializer.py:1087 +#: .\cookbook\serializer.py:1095 msgid "Click the following link to activate your account: " msgstr "点击以下链接激活您的帐户: " -#: .\cookbook\serializer.py:1088 +#: .\cookbook\serializer.py:1096 msgid "" "If the link does not work use the following code to manually join the space: " msgstr "如果链接不起作用,请使用下面的代码手动加入空间: " -#: .\cookbook\serializer.py:1089 +#: .\cookbook\serializer.py:1097 msgid "The invitation is valid until " msgstr "邀请有效期至 " -#: .\cookbook\serializer.py:1090 +#: .\cookbook\serializer.py:1098 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "泥炉食谱是一个开源食谱管理器。 在 GitHub 上查看 " -#: .\cookbook\serializer.py:1093 +#: .\cookbook\serializer.py:1101 msgid "Tandoor Recipes Invite" msgstr "泥炉食谱邀请" -#: .\cookbook\serializer.py:1234 +#: .\cookbook\serializer.py:1242 msgid "Existing shopping list to update" msgstr "要更新现有的购物清单" -#: .\cookbook\serializer.py:1236 +#: .\cookbook\serializer.py:1244 msgid "" "List of ingredient IDs from the recipe to add, if not provided all " "ingredients will be added." msgstr "要添加的食谱中食材识别符列表,不提供则添加所有食材。" -#: .\cookbook\serializer.py:1238 +#: .\cookbook\serializer.py:1246 msgid "" "Providing a list_recipe ID and servings of 0 will delete that shopping list." msgstr "提供一个菜谱列表识别符或份数为0将删除该购物清单。" -#: .\cookbook\serializer.py:1247 +#: .\cookbook\serializer.py:1255 msgid "Amount of food to add to the shopping list" msgstr "要添加到购物清单中的食物数量" -#: .\cookbook\serializer.py:1249 +#: .\cookbook\serializer.py:1257 msgid "ID of unit to use for the shopping list" msgstr "用于购物清单的单位识别符" -#: .\cookbook\serializer.py:1251 +#: .\cookbook\serializer.py:1259 msgid "When set to true will delete all food from active shopping lists." msgstr "当设置为 true 时,将从活动的购物列表中删除所有食物。" @@ -1553,11 +1589,11 @@ msgstr "返回" msgid "Profile" msgstr "简介" -#: .\cookbook\templates\recipe_view.html:26 +#: .\cookbook\templates\recipe_view.html:41 msgid "by" msgstr "评论者" -#: .\cookbook\templates\recipe_view.html:44 .\cookbook\views\delete.py:144 +#: .\cookbook\templates\recipe_view.html:59 .\cookbook\views\delete.py:144 #: .\cookbook\views\edit.py:171 msgid "Comment" msgstr "评论" @@ -2155,217 +2191,217 @@ msgstr "" msgid "URL Import" msgstr "链接导入" -#: .\cookbook\views\api.py:109 .\cookbook\views\api.py:201 +#: .\cookbook\views\api.py:110 .\cookbook\views\api.py:202 msgid "Parameter updated_at incorrectly formatted" msgstr "参数 updated_at 格式不正确" -#: .\cookbook\views\api.py:221 .\cookbook\views\api.py:324 +#: .\cookbook\views\api.py:222 .\cookbook\views\api.py:325 #, python-brace-format msgid "No {self.basename} with id {pk} exists" msgstr "不存在ID是 {pk} 的 {self.basename}" -#: .\cookbook\views\api.py:225 +#: .\cookbook\views\api.py:226 msgid "Cannot merge with the same object!" msgstr "无法与同一对象合并!" -#: .\cookbook\views\api.py:232 +#: .\cookbook\views\api.py:233 #, python-brace-format msgid "No {self.basename} with id {target} exists" msgstr "不存在 ID 为 {target} 的 {self.basename}" -#: .\cookbook\views\api.py:237 +#: .\cookbook\views\api.py:238 msgid "Cannot merge with child object!" msgstr "无法与子对象合并!" -#: .\cookbook\views\api.py:270 +#: .\cookbook\views\api.py:271 #, python-brace-format msgid "{source.name} was merged successfully with {target.name}" msgstr "{source.name} 已成功与 {target.name} 合并" -#: .\cookbook\views\api.py:275 +#: .\cookbook\views\api.py:276 #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" msgstr "视图合并 {source.name} 和 {target.name} 时出错" -#: .\cookbook\views\api.py:333 +#: .\cookbook\views\api.py:334 #, python-brace-format msgid "{child.name} was moved successfully to the root." msgstr "{child.name} 已成功移动到根目录。" -#: .\cookbook\views\api.py:336 .\cookbook\views\api.py:354 +#: .\cookbook\views\api.py:337 .\cookbook\views\api.py:355 msgid "An error occurred attempting to move " msgstr "尝试移动时出错 " -#: .\cookbook\views\api.py:339 +#: .\cookbook\views\api.py:340 msgid "Cannot move an object to itself!" msgstr "无法将对象移动到自身!" -#: .\cookbook\views\api.py:345 +#: .\cookbook\views\api.py:346 #, python-brace-format msgid "No {self.basename} with id {parent} exists" msgstr "不存在 ID 为 {parent} 的 {self.basename}" -#: .\cookbook\views\api.py:351 +#: .\cookbook\views\api.py:352 #, python-brace-format msgid "{child.name} was moved successfully to parent {parent.name}" msgstr "{child.name} 成功移动到父节点 {parent.name}" -#: .\cookbook\views\api.py:547 +#: .\cookbook\views\api.py:553 #, python-brace-format msgid "{obj.name} was removed from the shopping list." msgstr "{obj.name} 已从购物清单中删除。" -#: .\cookbook\views\api.py:552 .\cookbook\views\api.py:882 -#: .\cookbook\views\api.py:895 +#: .\cookbook\views\api.py:558 .\cookbook\views\api.py:888 +#: .\cookbook\views\api.py:901 #, python-brace-format msgid "{obj.name} was added to the shopping list." msgstr "{obj.name} 已添加到购物清单中。" -#: .\cookbook\views\api.py:679 +#: .\cookbook\views\api.py:685 msgid "ID of recipe a step is part of. For multiple repeat parameter." msgstr "食谱中的步骤ID。 对于多个重复参数。" -#: .\cookbook\views\api.py:681 +#: .\cookbook\views\api.py:687 msgid "Query string matched (fuzzy) against object name." msgstr "请求参数与对象名称匹配(模糊)。" -#: .\cookbook\views\api.py:725 +#: .\cookbook\views\api.py:731 msgid "" "Query string matched (fuzzy) against recipe name. In the future also " "fulltext search." msgstr "请求参数与食谱名称匹配(模糊)。 未来会添加全文搜索。" -#: .\cookbook\views\api.py:727 +#: .\cookbook\views\api.py:733 msgid "" "ID of keyword a recipe should have. For multiple repeat parameter. " "Equivalent to keywords_or" msgstr "菜谱应包含的关键字 ID。 对于多个重复参数。 相当于keywords_or" -#: .\cookbook\views\api.py:730 +#: .\cookbook\views\api.py:736 msgid "" "Keyword IDs, repeat for multiple. Return recipes with any of the keywords" msgstr "允许多个关键字 ID。 返回带有任一关键字的食谱" -#: .\cookbook\views\api.py:733 +#: .\cookbook\views\api.py:739 msgid "" "Keyword IDs, repeat for multiple. Return recipes with all of the keywords." msgstr "允许多个关键字 ID。 返回带有所有关键字的食谱。" -#: .\cookbook\views\api.py:736 +#: .\cookbook\views\api.py:742 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with any of the keywords." msgstr "允许多个关键字 ID。 排除带有任一关键字的食谱。" -#: .\cookbook\views\api.py:739 +#: .\cookbook\views\api.py:745 msgid "" "Keyword IDs, repeat for multiple. Exclude recipes with all of the keywords." msgstr "允许多个关键字 ID。 排除带有所有关键字的食谱。" -#: .\cookbook\views\api.py:741 +#: .\cookbook\views\api.py:747 msgid "ID of food a recipe should have. For multiple repeat parameter." msgstr "食谱中食物带有ID。并可添加多个食物。" -#: .\cookbook\views\api.py:744 +#: .\cookbook\views\api.py:750 msgid "Food IDs, repeat for multiple. Return recipes with any of the foods" msgstr "食谱中食物带有ID。并可添加多个食物" -#: .\cookbook\views\api.py:746 +#: .\cookbook\views\api.py:752 msgid "Food IDs, repeat for multiple. Return recipes with all of the foods." msgstr "食谱中食物带有ID。返回包含任何食物的食谱。" -#: .\cookbook\views\api.py:748 +#: .\cookbook\views\api.py:754 msgid "Food IDs, repeat for multiple. Exclude recipes with any of the foods." msgstr "食谱中食物带有ID。排除包含任一食物的食谱。" -#: .\cookbook\views\api.py:750 +#: .\cookbook\views\api.py:756 msgid "Food IDs, repeat for multiple. Exclude recipes with all of the foods." msgstr "食谱中食物带有ID。排除包含所有食物的食谱。" -#: .\cookbook\views\api.py:751 +#: .\cookbook\views\api.py:757 msgid "ID of unit a recipe should have." msgstr "食谱应具有单一ID。" -#: .\cookbook\views\api.py:753 +#: .\cookbook\views\api.py:759 msgid "" "Rating a recipe should have or greater. [0 - 5] Negative value filters " "rating less than." msgstr "配方的评分范围从 0 到 5。" -#: .\cookbook\views\api.py:754 +#: .\cookbook\views\api.py:760 msgid "ID of book a recipe should be in. For multiple repeat parameter." msgstr "烹饪书应该在食谱中具有ID。并且可以添加多本。" -#: .\cookbook\views\api.py:756 +#: .\cookbook\views\api.py:762 msgid "Book IDs, repeat for multiple. Return recipes with any of the books" msgstr "书的ID允许多个。返回包含任一书籍的食谱" -#: .\cookbook\views\api.py:758 +#: .\cookbook\views\api.py:764 msgid "Book IDs, repeat for multiple. Return recipes with all of the books." msgstr "书的ID允许多个。返回包含所有书籍的食谱。" -#: .\cookbook\views\api.py:760 +#: .\cookbook\views\api.py:766 msgid "Book IDs, repeat for multiple. Exclude recipes with any of the books." msgstr "书的ID允许多个。排除包含任一书籍的食谱。" -#: .\cookbook\views\api.py:762 +#: .\cookbook\views\api.py:768 msgid "Book IDs, repeat for multiple. Exclude recipes with all of the books." msgstr "书的ID允许多个。排除包含所有书籍的食谱。" -#: .\cookbook\views\api.py:764 +#: .\cookbook\views\api.py:770 msgid "If only internal recipes should be returned. [true/false]" msgstr "只返回内部食谱。 [true/false]" -#: .\cookbook\views\api.py:766 +#: .\cookbook\views\api.py:772 msgid "Returns the results in randomized order. [true/false]" msgstr "按随机排序返回结果。 [true/ false ]" -#: .\cookbook\views\api.py:768 +#: .\cookbook\views\api.py:774 msgid "Returns new results first in search results. [true/false]" msgstr "在搜索结果中首先返回新结果。 [是/]" -#: .\cookbook\views\api.py:770 +#: .\cookbook\views\api.py:776 msgid "" "Filter recipes cooked X times or more. Negative values returns cooked less " "than X times" msgstr "筛选烹饪 X 次或更多次的食谱。 负值返回烹饪少于 X 次" -#: .\cookbook\views\api.py:772 +#: .\cookbook\views\api.py:778 msgid "" "Filter recipes last cooked on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" "筛选最后烹饪在 YYYY-MM-DD 当天或之后的食谱。 前置 - 在日期或日期之前筛选。" -#: .\cookbook\views\api.py:774 +#: .\cookbook\views\api.py:780 msgid "" "Filter recipes created on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "筛选在 YYYY-MM-DD 或之后创建的食谱。 前置 - 在日期或日期之前过滤。" -#: .\cookbook\views\api.py:776 +#: .\cookbook\views\api.py:782 msgid "" "Filter recipes updated on or after YYYY-MM-DD. Prepending - filters on or " "before date." msgstr "筛选在 YYYY-MM-DD 或之后更新的食谱。 前置 - 在日期或日期之前筛选。" -#: .\cookbook\views\api.py:778 +#: .\cookbook\views\api.py:784 msgid "" "Filter recipes lasts viewed on or after YYYY-MM-DD. Prepending - filters on " "or before date." msgstr "" "筛选最后查看时间是在 YYYY-MM-DD 或之后的食谱。 前置 - 在日期或日期之前筛选。" -#: .\cookbook\views\api.py:780 +#: .\cookbook\views\api.py:786 msgid "Filter recipes that can be made with OnHand food. [true/false]" msgstr "筛选可以直接用手制作的食谱。 [真/]" -#: .\cookbook\views\api.py:940 +#: .\cookbook\views\api.py:946 msgid "" "Returns the shopping list entry with a primary key of id. Multiple values " "allowed." msgstr "返回主键为 id 的购物清单条目。 允许多个值。" -#: .\cookbook\views\api.py:945 +#: .\cookbook\views\api.py:951 msgid "" "Filter shopping list entries on checked. [true, false, both, recent]
- recent includes unchecked items and recently completed items." @@ -2373,44 +2409,44 @@ msgstr "" "在选中时筛选购物清单列表。 [真, 假, 两者都有, 最近]
- 最近包括未" "选中的项目和最近完成的项目。" -#: .\cookbook\views\api.py:948 +#: .\cookbook\views\api.py:954 msgid "Returns the shopping list entries sorted by supermarket category order." msgstr "返回按超市分类排序的购物清单列表。" -#: .\cookbook\views\api.py:1160 +#: .\cookbook\views\api.py:1166 msgid "Nothing to do." msgstr "无事可做。" -#: .\cookbook\views\api.py:1180 +#: .\cookbook\views\api.py:1198 msgid "Invalid Url" msgstr "无效网址" -#: .\cookbook\views\api.py:1187 +#: .\cookbook\views\api.py:1205 msgid "Connection Refused." msgstr "连接被拒绝。" -#: .\cookbook\views\api.py:1192 +#: .\cookbook\views\api.py:1210 msgid "Bad URL Schema." msgstr "错误的 URL Schema。" -#: .\cookbook\views\api.py:1215 +#: .\cookbook\views\api.py:1233 msgid "No usable data could be found." msgstr "找不到可用的数据。" -#: .\cookbook\views\api.py:1308 .\cookbook\views\import_export.py:114 +#: .\cookbook\views\api.py:1326 .\cookbook\views\import_export.py:117 msgid "Importing is not implemented for this provider" msgstr "此提供程序未实现导入" -#: .\cookbook\views\api.py:1352 .\cookbook\views\data.py:31 +#: .\cookbook\views\api.py:1372 .\cookbook\views\data.py:31 #: .\cookbook\views\edit.py:120 .\cookbook\views\new.py:90 msgid "This feature is not yet available in the hosted version of tandoor!" msgstr "此功能在泥炉的托管版本中尚不可用!" -#: .\cookbook\views\api.py:1374 +#: .\cookbook\views\api.py:1394 msgid "Sync successful!" msgstr "同步成功!" -#: .\cookbook\views\api.py:1379 +#: .\cookbook\views\api.py:1399 msgid "Error synchronizing with Storage" msgstr "与存储同步时出错" @@ -2470,7 +2506,7 @@ msgstr "更改已保存!" msgid "Error saving changes!" msgstr "保存更改时出错!" -#: .\cookbook\views\import_export.py:101 +#: .\cookbook\views\import_export.py:104 msgid "" "The PDF Exporter is not enabled on this instance as it is still in an " "experimental state." @@ -2516,40 +2552,40 @@ msgstr "导入新菜谱!" msgid "There was an error importing this recipe!" msgstr "导入此菜谱时出错!" -#: .\cookbook\views\views.py:86 +#: .\cookbook\views\views.py:73 .\cookbook\views\views.py:191 +#: .\cookbook\views\views.py:213 .\cookbook\views\views.py:399 +msgid "This feature is not available in the demo version!" +msgstr "此功能在演示版本中不可用!" + +#: .\cookbook\views\views.py:89 msgid "" "You have successfully created your own recipe space. Start by adding some " "recipes or invite other people to join you." msgstr "你已成功创建自己的菜谱空间。 首先添加一些菜谱或邀请其他人加入。" -#: .\cookbook\views\views.py:140 +#: .\cookbook\views\views.py:143 msgid "You do not have the required permissions to perform this action!" msgstr "您没有执行此操作所需的权限!" -#: .\cookbook\views\views.py:151 +#: .\cookbook\views\views.py:154 msgid "Comment saved!" msgstr "评论已保存!" -#: .\cookbook\views\views.py:188 .\cookbook\views\views.py:210 -#: .\cookbook\views\views.py:396 -msgid "This feature is not available in the demo version!" -msgstr "此功能在演示版本中不可用!" - -#: .\cookbook\views\views.py:250 +#: .\cookbook\views\views.py:253 msgid "You must select at least one field to search!" msgstr "你必须至少选择一个字段进行搜索!" -#: .\cookbook\views\views.py:255 +#: .\cookbook\views\views.py:258 msgid "" "To use this search method you must select at least one full text search " "field!" msgstr "要使用此搜索方法,至少选择一个全文搜索字段!" -#: .\cookbook\views\views.py:259 +#: .\cookbook\views\views.py:262 msgid "Fuzzy search is not compatible with this search method!" msgstr "模糊搜索与此搜索方法不兼容!" -#: .\cookbook\views\views.py:335 +#: .\cookbook\views\views.py:338 msgid "" "The setup page can only be used to create the first user! If you have " "forgotten your superuser credentials please consult the django documentation " @@ -2558,33 +2594,33 @@ msgstr "" "设置页面只能用于创建第一个用户!如果您忘记了超级用户凭据,请参阅 Django 文" "档,了解如何重置密码。" -#: .\cookbook\views\views.py:342 +#: .\cookbook\views\views.py:345 msgid "Passwords dont match!" msgstr "密码不匹配!" -#: .\cookbook\views\views.py:350 +#: .\cookbook\views\views.py:353 msgid "User has been created, please login!" msgstr "用户已创建,请登录!" -#: .\cookbook\views\views.py:366 +#: .\cookbook\views\views.py:369 msgid "Malformed Invite Link supplied!" msgstr "提供了格式错误的邀请链接!" -#: .\cookbook\views\views.py:383 +#: .\cookbook\views\views.py:386 msgid "Successfully joined space." msgstr "成功加入空间。" -#: .\cookbook\views\views.py:389 +#: .\cookbook\views\views.py:392 msgid "Invite Link not valid or already used!" msgstr "邀请链接无效或已使用!" -#: .\cookbook\views\views.py:406 +#: .\cookbook\views\views.py:409 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." msgstr "未为此实例启用报告共享链接。请通知页面管理员报告问题。" -#: .\cookbook\views\views.py:412 +#: .\cookbook\views\views.py:415 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." diff --git a/cookbook/locale/zh_Hant/LC_MESSAGES/django.mo b/cookbook/locale/zh_Hant/LC_MESSAGES/django.mo index cb5715cd..7517dc2c 100644 Binary files a/cookbook/locale/zh_Hant/LC_MESSAGES/django.mo and b/cookbook/locale/zh_Hant/LC_MESSAGES/django.mo differ diff --git a/cookbook/tests/api/test_api_food.py b/cookbook/tests/api/test_api_food.py index 98376280..504bee0a 100644 --- a/cookbook/tests/api/test_api_food.py +++ b/cookbook/tests/api/test_api_food.py @@ -6,7 +6,7 @@ from django.urls import reverse from django_scopes import scope, scopes_disabled from pytest_factoryboy import LazyFixture, register -from cookbook.models import Food, FoodInheritField, Ingredient, ShoppingList, ShoppingListEntry +from cookbook.models import Food, Ingredient, ShoppingListEntry from cookbook.tests.factories import (FoodFactory, IngredientFactory, ShoppingListEntryFactory, SupermarketCategoryFactory) @@ -56,23 +56,32 @@ def obj_tree_1(request, space_1): params = request.param # request.param is a magic variable except AttributeError: params = {} - objs = [] inherit = params.pop('inherit', False) - objs.extend(FoodFactory.create_batch(3, space=space_1, **params)) + FoodFactory.create_batch(3, space=space_1, **params) + objs = Food.objects.values_list('id', flat=True) + obj_id = objs[1] + child_id = objs[0] + parent_id = objs[2] # set all foods to inherit everything if inherit: inherit = Food.inheritable_fields - Through = Food.objects.filter(space=space_1).first().inherit_fields.through + Through = Food.objects.filter( + space=space_1).first().inherit_fields.through for i in inherit: Through.objects.bulk_create([ Through(food_id=x, foodinheritfield_id=i.id) for x in Food.objects.filter(space=space_1).values_list('id', flat=True) ]) - objs[0].move(objs[1], node_location) - objs[1].move(objs[2], node_location) - return Food.objects.get(id=objs[1].id) # whenever you move/merge a tree it's safest to re-get the object + Food.objects.get(id=child_id).move( + Food.objects.get(id=obj_id), node_location) + + Food.objects.get(id=obj_id).move( + Food.objects.get(id=parent_id), node_location) + + # whenever you move/merge a tree it's safest to re-get the object + return Food.objects.get(id=obj_id) @pytest.mark.parametrize("arg", [ @@ -107,19 +116,23 @@ def test_list_filter(obj_1, obj_2, u1_s1): assert obj_2.name in [x['name'] for x in response['results']] assert response['results'][0]['name'] < response['results'][1]['name'] - response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?page_size=1').content) + response = json.loads( + u1_s1.get(f'{reverse(LIST_URL)}?page_size=1').content) assert len(response['results']) == 1 response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?limit=1').content) assert len(response['results']) == 1 - response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?query=''&limit=1').content) + response = json.loads( + u1_s1.get(f'{reverse(LIST_URL)}?query=''&limit=1').content) assert len(response['results']) == 1 - response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?query=chicken').content) + response = json.loads( + u1_s1.get(f'{reverse(LIST_URL)}?query=chicken').content) assert response['count'] == 0 - response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?query={obj_1.name[:-4]}').content) + response = json.loads( + u1_s1.get(f'{reverse(LIST_URL)}?query={obj_1.name[:-4]}').content) assert response['count'] == 1 @@ -262,8 +275,9 @@ def test_integrity(u1_s1, recipe_1_s1): def test_move(u1_s1, obj_tree_1, obj_2, obj_3, space_1): with scope(space=space_1): + # for some reason the 'path' attribute changes between the factory and the test when using both obj_tree and obj + obj_tree_1 = Food.objects.get(id=obj_tree_1.id) parent = obj_tree_1.get_parent() - child = obj_tree_1.get_descendants()[0] assert parent.get_num_children() == 1 assert parent.get_descendant_count() == 2 assert Food.get_root_nodes().filter(space=space_1).count() == 2 @@ -295,8 +309,9 @@ def test_move(u1_s1, obj_tree_1, obj_2, obj_3, space_1): def test_move_errors(u1_s1, obj_tree_1, obj_3, space_1): with scope(space=space_1): + # for some reason the 'path' attribute changes between the factory and the test when using both obj_tree and obj + obj_tree_1 = Food.objects.get(id=obj_tree_1.id) parent = obj_tree_1.get_parent() - child = obj_tree_1.get_descendants()[0] # move child to root r = u1_s1.put(reverse(MOVE_URL, args=[obj_tree_1.id, 0])) assert r.status_code == 200 @@ -351,7 +366,7 @@ def test_merge_shopping_entries(obj_tree_1, u1_s1, space_1): with scope(space=space_1): parent = obj_tree_1.get_parent() child = obj_tree_1.get_descendants()[0] - ShoppingListEntryFactory.create(food=parent, space=space_1) + ShoppingListEntryFactory.create(food=parent, space=space_1) ShoppingListEntryFactory.create(food=child, space=space_1) assert parent.get_num_children() == 1 assert parent.get_descendant_count() == 2 @@ -371,8 +386,10 @@ def test_merge_shopping_entries(obj_tree_1, u1_s1, space_1): assert obj_tree_1.shopping_entries.count() == 1 # now has child's ingredient -def test_merge(u1_s1, obj_tree_1, obj_1, obj_3, space_1): +def test_merge(u1_s1, obj_tree_1, obj_1, obj_3, space_1): with scope(space=space_1): + # for some reason the 'path' attribute changes between the factory and the test when using both obj_tree and obj + obj_tree_1 = Food.objects.get(id=obj_tree_1.id) parent = obj_tree_1.get_parent() child = obj_tree_1.get_descendants()[0] assert parent.get_num_children() == 1 @@ -416,8 +433,9 @@ def test_merge(u1_s1, obj_tree_1, obj_1, obj_3, space_1): def test_merge_errors(u1_s1, obj_tree_1, obj_3, space_1): with scope(space=space_1): + # for some reason the 'path' attribute changes between the factory and the test when using both obj_tree and obj + obj_tree_1 = Food.objects.get(id=obj_tree_1.id) parent = obj_tree_1.get_parent() - child = obj_tree_1.get_descendants()[0] # attempt to merge with non-existent parent r = u1_s1.put( @@ -451,44 +469,63 @@ def test_merge_errors(u1_s1, obj_tree_1, obj_3, space_1): def test_root_filter(obj_tree_1, obj_2, obj_3, u1_s1): with scope(space=obj_tree_1.space): + # for some reason the 'path' attribute changes between the factory and the test when using both obj_tree and obj + obj_tree_1 = Food.objects.get(id=obj_tree_1.id) parent = obj_tree_1.get_parent() - child = obj_tree_1.get_descendants()[0] # should return root objects in the space (obj_1, obj_2), ignoring query filters response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?root=0').content) assert len(response['results']) == 2 + # django_tree bypasses ORM - best to retrieve all changed objects with scopes_disabled(): obj_2.move(parent, node_location) + obj_2 = Food.objects.get(id=obj_2.id) + parent = Food.objects.get(id=parent.id) # should return direct children of parent (obj_tree_1, obj_2), ignoring query filters - response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?root={parent.id}').content) + response = json.loads( + u1_s1.get(f'{reverse(LIST_URL)}?root={parent.id}').content) assert response['count'] == 2 - response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?root={parent.id}&query={obj_2.name[4:]}').content) + response = json.loads(u1_s1.get( + f'{reverse(LIST_URL)}?root={parent.id}&query={obj_2.name[4:]}').content) assert response['count'] == 2 def test_tree_filter(obj_tree_1, obj_2, obj_3, u1_s1): with scope(space=obj_tree_1.space): + # for some reason the 'path' attribute changes between the factory and the test when using both obj_tree and obj parent = obj_tree_1.get_parent() - child = obj_tree_1.get_descendants()[0] obj_2.move(parent, node_location) + obj_2 = Food.objects.get(id=obj_2.id) + obj_tree_1 = Food.objects.get(id=obj_tree_1.id) + parent = Food.objects.get(id=parent.id) + # should return full tree starting at parent (obj_tree_1, obj_2), ignoring query filters - response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?tree={parent.id}').content) + response = json.loads( + u1_s1.get(f'{reverse(LIST_URL)}?tree={parent.id}').content) assert response['count'] == 4 - response = json.loads(u1_s1.get(f'{reverse(LIST_URL)}?tree={parent.id}&query={obj_2.name[4:]}').content) + response = json.loads(u1_s1.get( + f'{reverse(LIST_URL)}?tree={parent.id}&query={obj_2.name[4:]}').content) assert response['count'] == 4 # This is more about the model than the API - should this be moved to a different test? @pytest.mark.parametrize("obj_tree_1, field, inherit, new_val", [ - ({'has_category': True, 'inherit': True}, 'supermarket_category', True, 'cat_1'), - ({'has_category': True, 'inherit': False}, 'supermarket_category', False, 'cat_1'), - ({'ignore_shopping': True, 'inherit': True}, 'ignore_shopping', True, 'false'), - ({'ignore_shopping': True, 'inherit': False}, 'ignore_shopping', False, 'false'), - ({'substitute_children': True, 'inherit': True}, 'substitute_children', True, 'false'), - ({'substitute_children': True, 'inherit': False}, 'substitute_children', False, 'false'), - ({'substitute_siblings': True, 'inherit': True}, 'substitute_siblings', True, 'false'), - ({'substitute_siblings': True, 'inherit': False}, 'substitute_siblings', False, 'false'), + ({'has_category': True, 'inherit': True}, + 'supermarket_category', True, 'cat_1'), + ({'has_category': True, 'inherit': False}, + 'supermarket_category', False, 'cat_1'), + ({'ignore_shopping': True, 'inherit': True}, 'ignore_shopping', True, 'false'), + ({'ignore_shopping': True, 'inherit': False}, + 'ignore_shopping', False, 'false'), + ({'substitute_children': True, 'inherit': True}, + 'substitute_children', True, 'false'), + ({'substitute_children': True, 'inherit': False}, + 'substitute_children', False, 'false'), + ({'substitute_siblings': True, 'inherit': True}, + 'substitute_siblings', True, 'false'), + ({'substitute_siblings': True, 'inherit': False}, + 'substitute_siblings', False, 'false'), ], indirect=['obj_tree_1']) # indirect=True populates magic variable request.param of obj_tree_1 with the parameter def test_inherit(request, obj_tree_1, field, inherit, new_val, u1_s1): with scope(space=obj_tree_1.space): @@ -498,8 +535,10 @@ def test_inherit(request, obj_tree_1, field, inherit, new_val, u1_s1): new_val = request.getfixturevalue(new_val) # if this test passes it demonstrates that inheritance works # when moving to a parent as each food is created with a different category - assert (getattr(parent, field) == getattr(obj_tree_1, field)) in [inherit, True] - assert (getattr(obj_tree_1, field) == getattr(child, field)) in [inherit, True] + assert (getattr(parent, field) == getattr( + obj_tree_1, field)) in [inherit, True] + assert (getattr(obj_tree_1, field) == getattr( + child, field)) in [inherit, True] # change parent to a new value setattr(parent, field, new_val) with scope(space=parent.space): @@ -515,7 +554,8 @@ def test_inherit(request, obj_tree_1, field, inherit, new_val, u1_s1): @pytest.mark.parametrize("obj_tree_1", [ - ({'has_category': True, 'inherit': False, 'ignore_shopping': True, 'substitute_children': True, 'substitute_siblings': True}), + ({'has_category': True, 'inherit': False, 'ignore_shopping': True, + 'substitute_children': True, 'substitute_siblings': True}), ], indirect=['obj_tree_1']) @pytest.mark.parametrize("global_reset", [True, False]) @pytest.mark.parametrize("field", ['ignore_shopping', 'substitute_children', 'substitute_siblings', 'supermarket_category']) @@ -534,10 +574,13 @@ def test_reset_inherit_space_fields(obj_tree_1, space_1, global_reset, field): assert getattr(parent, field) != getattr(obj_tree_1, field) if global_reset: - space_1.food_inherit.add(*Food.inheritable_fields.values_list('id', flat=True)) # set default inherit fields + # set default inherit fields + space_1.food_inherit.add( + *Food.inheritable_fields.values_list('id', flat=True)) parent.reset_inheritance(space=space_1) else: - obj_tree_1.child_inherit_fields.set(Food.inheritable_fields.values_list('id', flat=True)) + obj_tree_1.child_inherit_fields.set( + Food.inheritable_fields.values_list('id', flat=True)) obj_tree_1.save() parent.reset_inheritance(space=space_1, food=obj_tree_1) # djangotree bypasses ORM and need to be retrieved again @@ -545,12 +588,14 @@ def test_reset_inherit_space_fields(obj_tree_1, space_1, global_reset, field): parent = Food.objects.get(id=parent.id) child = Food.objects.get(id=child.id) - assert (getattr(parent, field) == getattr(obj_tree_1, field)) == global_reset + assert (getattr(parent, field) == getattr( + obj_tree_1, field)) == global_reset assert getattr(obj_tree_1, field) == getattr(child, field) @pytest.mark.parametrize("obj_tree_1", [ - ({'has_category': True, 'inherit': False, 'ignore_shopping': True, 'substitute_children': True, 'substitute_siblings': True}), + ({'has_category': True, 'inherit': False, 'ignore_shopping': True, + 'substitute_children': True, 'substitute_siblings': True}), ], indirect=['obj_tree_1']) @pytest.mark.parametrize("field", ['ignore_shopping', 'substitute_children', 'substitute_siblings', 'supermarket_category']) def test_reset_inherit_no_food_instances(obj_tree_1, space_1, field): @@ -558,13 +603,17 @@ def test_reset_inherit_no_food_instances(obj_tree_1, space_1, field): parent = obj_tree_1.get_parent() Food.objects.all().delete() - space_1.food_inherit.add(*Food.inheritable_fields.values_list('id', flat=True)) # set default inherit fields + # set default inherit fields + space_1.food_inherit.add( + *Food.inheritable_fields.values_list('id', flat=True)) parent.reset_inheritance(space=space_1) def test_onhand(obj_1, u1_s1, u2_s1): - assert json.loads(u1_s1.get(reverse(DETAIL_URL, args={obj_1.id})).content)['food_onhand'] == False - assert json.loads(u2_s1.get(reverse(DETAIL_URL, args={obj_1.id})).content)['food_onhand'] == False + assert json.loads(u1_s1.get(reverse(DETAIL_URL, args={obj_1.id})).content)[ + 'food_onhand'] == False + assert json.loads(u2_s1.get(reverse(DETAIL_URL, args={obj_1.id})).content)[ + 'food_onhand'] == False u1_s1.patch( reverse( @@ -574,10 +623,13 @@ def test_onhand(obj_1, u1_s1, u2_s1): {'food_onhand': True}, content_type='application/json' ) - assert json.loads(u1_s1.get(reverse(DETAIL_URL, args={obj_1.id})).content)['food_onhand'] == True - assert json.loads(u2_s1.get(reverse(DETAIL_URL, args={obj_1.id})).content)['food_onhand'] == False + assert json.loads(u1_s1.get(reverse(DETAIL_URL, args={obj_1.id})).content)[ + 'food_onhand'] == True + assert json.loads(u2_s1.get(reverse(DETAIL_URL, args={obj_1.id})).content)[ + 'food_onhand'] == False user1 = auth.get_user(u1_s1) user2 = auth.get_user(u2_s1) user1.userpreference.shopping_share.add(user2) - assert json.loads(u2_s1.get(reverse(DETAIL_URL, args={obj_1.id})).content)['food_onhand'] == True + assert json.loads(u2_s1.get(reverse(DETAIL_URL, args={obj_1.id})).content)[ + 'food_onhand'] == True diff --git a/cookbook/tests/api/test_api_shopping_recipe.py b/cookbook/tests/api/test_api_shopping_recipe.py index 376f5fef..56f35683 100644 --- a/cookbook/tests/api/test_api_shopping_recipe.py +++ b/cookbook/tests/api/test_api_shopping_recipe.py @@ -1,20 +1,14 @@ import json -from datetime import timedelta -import factory import pytest # work around for bug described here https://stackoverflow.com/a/70312265/15762829 from django.conf import settings from django.contrib import auth -from django.forms import model_to_dict from django.urls import reverse -from django.utils import timezone -from django_scopes import scope, scopes_disabled -from pytest_factoryboy import LazyFixture, register +from django_scopes import scopes_disabled -from cookbook.models import Food, Ingredient, ShoppingListEntry, Step -from cookbook.tests.factories import (IngredientFactory, MealPlanFactory, RecipeFactory, - StepFactory, UserFactory) +from cookbook.models import Food, Ingredient +from cookbook.tests.factories import MealPlanFactory, RecipeFactory, StepFactory, UserFactory if settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql']: @@ -32,9 +26,12 @@ def user2(request, u1_s1): except AttributeError: params = {} user = auth.get_user(u1_s1) - user.userpreference.mealplan_autoadd_shopping = params.get('mealplan_autoadd_shopping', True) - user.userpreference.mealplan_autoinclude_related = params.get('mealplan_autoinclude_related', True) - user.userpreference.mealplan_autoexclude_onhand = params.get('mealplan_autoexclude_onhand', True) + user.userpreference.mealplan_autoadd_shopping = params.get( + 'mealplan_autoadd_shopping', True) + user.userpreference.mealplan_autoinclude_related = params.get( + 'mealplan_autoinclude_related', True) + user.userpreference.mealplan_autoexclude_onhand = params.get( + 'mealplan_autoexclude_onhand', True) user.userpreference.save() return u1_s1 @@ -50,7 +47,6 @@ def recipe(request, space_1, u1_s1): return RecipeFactory(**params) - @pytest.mark.parametrize("arg", [ ['g1_s1', 204], ['u1_s1', 204], @@ -59,11 +55,14 @@ def recipe(request, space_1, u1_s1): ]) @pytest.mark.parametrize("recipe, sle_count", [ ({}, 10), - ({'steps__recipe_count': 1}, 20), # shopping list from recipe with StepRecipe - ({'steps__food_recipe_count': {'step': 0, 'count': 1}}, 19), # shopping list from recipe with food recipe - ({'steps__food_recipe_count': {'step': 0, 'count': 1}, 'steps__recipe_count': 1}, 29), # shopping list from recipe with StepRecipe and food recipe + # shopping list from recipe with StepRecipe + ({'steps__recipe_count': 1}, 20), + # shopping list from recipe with food recipe + ({'steps__food_recipe_count': {'step': 0, 'count': 1}}, 19), + # shopping list from recipe with StepRecipe and food recipe + ({'steps__food_recipe_count': {'step': 0, 'count': 1}, 'steps__recipe_count': 1}, 29), ], indirect=['recipe']) -def test_shopping_recipe_method(request, arg, recipe, sle_count, u1_s1, u2_s1): +def test_shopping_recipe_method(request, arg, recipe, sle_count, u1_s1, u2_s1): c = request.getfixturevalue(arg[0]) user = auth.get_user(c) user.userpreference.mealplan_autoadd_shopping = True @@ -78,16 +77,20 @@ def test_shopping_recipe_method(request, arg, recipe, sle_count, u1_s1, u2_s1): if r.status_code == 204: # skip anonymous user r = json.loads(c.get(reverse(SHOPPING_LIST_URL)).content) - assert len(r) == sle_count # recipe factory creates 10 ingredients by default + # recipe factory creates 10 ingredients by default + assert len(r) == sle_count assert [x['created_by']['id'] for x in r].count(user.id) == sle_count # user in space can't see shopping list - assert len(json.loads(u2_s1.get(reverse(SHOPPING_LIST_URL)).content)) == 0 + assert len(json.loads( + u2_s1.get(reverse(SHOPPING_LIST_URL)).content)) == 0 user.userpreference.shopping_share.add(auth.get_user(u2_s1)) # after share, user in space can see shopping list - assert len(json.loads(u2_s1.get(reverse(SHOPPING_LIST_URL)).content)) == sle_count + assert len(json.loads( + u2_s1.get(reverse(SHOPPING_LIST_URL)).content)) == sle_count # confirm that the author of the recipe doesn't have access to shopping list if c != u1_s1: - assert len(json.loads(u1_s1.get(reverse(SHOPPING_LIST_URL)).content)) == 0 + assert len(json.loads( + u1_s1.get(reverse(SHOPPING_LIST_URL)).content)) == 0 r = c.get(url) assert r.status_code == 405 @@ -99,9 +102,12 @@ def test_shopping_recipe_method(request, arg, recipe, sle_count, u1_s1, u2_s1): @pytest.mark.parametrize("recipe, sle_count", [ ({}, 10), - ({'steps__recipe_count': 1}, 20), # shopping list from recipe with StepRecipe - ({'steps__food_recipe_count': {'step': 0, 'count': 1}}, 19), # shopping list from recipe with food recipe - ({'steps__food_recipe_count': {'step': 0, 'count': 1}, 'steps__recipe_count': 1}, 29), # shopping list from recipe with StepRecipe and food recipe + # shopping list from recipe with StepRecipe + ({'steps__recipe_count': 1}, 20), + # shopping list from recipe with food recipe + ({'steps__food_recipe_count': {'step': 0, 'count': 1}}, 19), + # shopping list from recipe with StepRecipe and food recipe + ({'steps__food_recipe_count': {'step': 0, 'count': 1}, 'steps__recipe_count': 1}, 29), ], indirect=['recipe']) @pytest.mark.parametrize("use_mealplan", [(False), (True), ]) def test_shopping_recipe_edit(request, recipe, sle_count, use_mealplan, u1_s1, u2_s1): @@ -115,31 +121,33 @@ def test_shopping_recipe_edit(request, recipe, sle_count, use_mealplan, u1_s1, u user.userpreference.save() if use_mealplan: - mealplan = MealPlanFactory(space=recipe.space, created_by=user, servings=recipe.servings, recipe=recipe) + mealplan = MealPlanFactory( + space=recipe.space, created_by=user, servings=recipe.servings, recipe=recipe) else: u1_s1.put(reverse(SHOPPING_RECIPE_URL, args={recipe.id})) r = json.loads(u1_s1.get(reverse(SHOPPING_LIST_URL)).content) assert [x['created_by']['id'] for x in r].count(user.id) == sle_count all_ing = [x['ingredient'] for x in r] keep_ing = all_ing[1:-1] # remove first and last element - del keep_ing[int(len(keep_ing)/2)] # remove a middle element + del keep_ing[int(len(keep_ing) / 2)] # remove a middle element list_recipe = r[0]['list_recipe'] amount_sum = sum([x['amount'] for x in r]) # test modifying shopping list as different user # test increasing servings size of recipe shopping list if use_mealplan: - mealplan.servings = 2*recipe.servings + mealplan.servings = 2 * recipe.servings mealplan.save() else: u2_s1.put(reverse(SHOPPING_RECIPE_URL, args={recipe.id}), - {'list_recipe': list_recipe, 'servings': 2*recipe.servings}, + {'list_recipe': list_recipe, 'servings': 2 * recipe.servings}, content_type='application/json' ) r = json.loads(u1_s1.get(reverse(SHOPPING_LIST_URL)).content) assert sum([x['amount'] for x in r]) == amount_sum * 2 assert len(r) == sle_count - assert len(json.loads(u2_s1.get(reverse(SHOPPING_LIST_URL)).content)) == sle_count + assert len(json.loads( + u2_s1.get(reverse(SHOPPING_LIST_URL)).content)) == sle_count # testing decreasing servings size of recipe shopping list if use_mealplan: @@ -153,7 +161,8 @@ def test_shopping_recipe_edit(request, recipe, sle_count, use_mealplan, u1_s1, u r = json.loads(u1_s1.get(reverse(SHOPPING_LIST_URL)).content) assert sum([x['amount'] for x in r]) == amount_sum * .5 assert len(r) == sle_count - assert len(json.loads(u2_s1.get(reverse(SHOPPING_LIST_URL)).content)) == sle_count + assert len(json.loads( + u2_s1.get(reverse(SHOPPING_LIST_URL)).content)) == sle_count # test removing 3 items from shopping list u2_s1.put(reverse(SHOPPING_RECIPE_URL, args={recipe.id}), @@ -162,7 +171,8 @@ def test_shopping_recipe_edit(request, recipe, sle_count, use_mealplan, u1_s1, u ) r = json.loads(u1_s1.get(reverse(SHOPPING_LIST_URL)).content) assert len(r) == sle_count - 3 - assert len(json.loads(u2_s1.get(reverse(SHOPPING_LIST_URL)).content)) == sle_count - 3 + assert len(json.loads( + u2_s1.get(reverse(SHOPPING_LIST_URL)).content)) == sle_count - 3 # add all ingredients to existing shopping list - don't change serving size u2_s1.put(reverse(SHOPPING_RECIPE_URL, args={recipe.id}), @@ -172,14 +182,16 @@ def test_shopping_recipe_edit(request, recipe, sle_count, use_mealplan, u1_s1, u r = json.loads(u1_s1.get(reverse(SHOPPING_LIST_URL)).content) assert sum([x['amount'] for x in r]) == amount_sum * .5 assert len(r) == sle_count - assert len(json.loads(u2_s1.get(reverse(SHOPPING_LIST_URL)).content)) == sle_count + assert len(json.loads( + u2_s1.get(reverse(SHOPPING_LIST_URL)).content)) == sle_count @pytest.mark.parametrize("user2, sle_count", [ ({'mealplan_autoadd_shopping': False}, (0, 18)), ({'mealplan_autoinclude_related': False}, (9, 9)), ({'mealplan_autoexclude_onhand': False}, (20, 20)), - ({'mealplan_autoexclude_onhand': False, 'mealplan_autoinclude_related': False}, (10, 10)), + ({'mealplan_autoexclude_onhand': False, + 'mealplan_autoinclude_related': False}, (10, 10)), ], indirect=['user2']) @pytest.mark.parametrize("use_mealplan", [(False), (True), ]) @pytest.mark.parametrize("recipe", [({'steps__recipe_count': 1})], indirect=['recipe']) @@ -191,20 +203,24 @@ def test_shopping_recipe_userpreference(recipe, sle_count, use_mealplan, user2): food = Food.objects.get(id=ingredients[2].food.id) food.onhand_users.add(user) food.save() - food = recipe.steps.exclude(step_recipe=None).first().step_recipe.steps.first().ingredients.first().food + food = recipe.steps.exclude(step_recipe=None).first( + ).step_recipe.steps.first().ingredients.first().food food = Food.objects.get(id=food.id) food.onhand_users.add(user) food.save() if use_mealplan: - mealplan = MealPlanFactory(space=recipe.space, created_by=user, servings=recipe.servings, recipe=recipe) - assert len(json.loads(user2.get(reverse(SHOPPING_LIST_URL)).content)) == sle_count[0] + MealPlanFactory( + space=recipe.space, created_by=user, servings=recipe.servings, recipe=recipe) + assert len(json.loads( + user2.get(reverse(SHOPPING_LIST_URL)).content)) == sle_count[0] else: user2.put(reverse(SHOPPING_RECIPE_URL, args={recipe.id})) - assert len(json.loads(user2.get(reverse(SHOPPING_LIST_URL)).content)) == sle_count[1] + assert len(json.loads( + user2.get(reverse(SHOPPING_LIST_URL)).content)) == sle_count[1] -def test_shopping_recipe_mixed_authors(u1_s1, u2_s1,space_1): +def test_shopping_recipe_mixed_authors(u1_s1, u2_s1, space_1): with scopes_disabled(): user1 = auth.get_user(u1_s1) user2 = auth.get_user(u2_s1) @@ -213,15 +229,19 @@ def test_shopping_recipe_mixed_authors(u1_s1, u2_s1,space_1): recipe1 = RecipeFactory(created_by=user1, space=space) recipe2 = RecipeFactory(created_by=user2, space=space) recipe3 = RecipeFactory(created_by=user3, space=space) - food = Food.objects.get(id=recipe1.steps.first().ingredients.first().food.id) + food = Food.objects.get( + id=recipe1.steps.first().ingredients.first().food.id) food.recipe = recipe2 food.save() - recipe1.steps.add(StepFactory(step_recipe=recipe3, ingredients__count=0, space=space)) + recipe1.steps.add(StepFactory(step_recipe=recipe3, + ingredients__count=0, space=space)) recipe1.save() u1_s1.put(reverse(SHOPPING_RECIPE_URL, args={recipe1.id})) - assert len(json.loads(u1_s1.get(reverse(SHOPPING_LIST_URL)).content)) == 29 - assert len(json.loads(u2_s1.get(reverse(SHOPPING_LIST_URL)).content)) == 0 + assert len(json.loads( + u1_s1.get(reverse(SHOPPING_LIST_URL)).content)) == 29 + assert len(json.loads( + u2_s1.get(reverse(SHOPPING_LIST_URL)).content)) == 0 @pytest.mark.parametrize("recipe", [{'steps__ingredients__header': 1}], indirect=['recipe']) @@ -230,4 +250,5 @@ def test_shopping_with_header_ingredient(u1_s1, recipe): # recipe.step_set.first().ingredient_set.add(IngredientFactory(ingredients__header=1)) u1_s1.put(reverse(SHOPPING_RECIPE_URL, args={recipe.id})) assert len(json.loads(u1_s1.get(reverse(SHOPPING_LIST_URL)).content)) == 10 - assert len(json.loads(u1_s1.get(reverse('api:ingredient-list')).content)['results']) == 11 + assert len(json.loads( + u1_s1.get(reverse('api:ingredient-list')).content)['results']) == 11 diff --git a/cookbook/tests/conftest.py b/cookbook/tests/conftest.py index 2cfe7541..85f33145 100644 --- a/cookbook/tests/conftest.py +++ b/cookbook/tests/conftest.py @@ -5,12 +5,11 @@ import uuid import pytest from django.contrib import auth -from django.contrib.auth.models import Group, User from django_scopes import scopes_disabled -from pytest_factoryboy import LazyFixture, register +from pytest_factoryboy import register -from cookbook.models import Food, Ingredient, Recipe, Space, Step, Unit -from cookbook.tests.factories import FoodFactory, SpaceFactory, UserFactory +from cookbook.models import Food, Ingredient, Recipe, Step, Unit +from cookbook.tests.factories import SpaceFactory, UserFactory register(SpaceFactory, 'space_1') register(SpaceFactory, 'space_2') @@ -60,8 +59,10 @@ def get_random_recipe(space_1, u1_s1): internal=True, ) - s1 = Step.objects.create(name=str(uuid.uuid4()), instruction=str(uuid.uuid4()), space=space_1, ) - s2 = Step.objects.create(name=str(uuid.uuid4()), instruction=str(uuid.uuid4()), space=space_1, ) + s1 = Step.objects.create(name=str(uuid.uuid4()), + instruction=str(uuid.uuid4()), space=space_1, ) + s2 = Step.objects.create(name=str(uuid.uuid4()), + instruction=str(uuid.uuid4()), space=space_1, ) r.steps.add(s1) r.steps.add(s2) @@ -70,8 +71,10 @@ def get_random_recipe(space_1, u1_s1): s1.ingredients.add( Ingredient.objects.create( amount=1, - food=Food.objects.get_or_create(name=str(uuid.uuid4()), space=space_1)[0], - unit=Unit.objects.create(name=str(uuid.uuid4()), space=space_1, ), + food=Food.objects.get_or_create( + name=str(uuid.uuid4()), space=space_1)[0], + unit=Unit.objects.create( + name=str(uuid.uuid4()), space=space_1, ), note=str(uuid.uuid4()), space=space_1, ) @@ -80,8 +83,10 @@ def get_random_recipe(space_1, u1_s1): s2.ingredients.add( Ingredient.objects.create( amount=1, - food=Food.objects.get_or_create(name=str(uuid.uuid4()), space=space_1)[0], - unit=Unit.objects.create(name=str(uuid.uuid4()), space=space_1, ), + food=Food.objects.get_or_create( + name=str(uuid.uuid4()), space=space_1)[0], + unit=Unit.objects.create( + name=str(uuid.uuid4()), space=space_1, ), note=str(uuid.uuid4()), space=space_1, ) @@ -99,8 +104,10 @@ def get_random_json_recipe(): { "instruction": str(uuid.uuid4()), "ingredients": [ - {"food": {"name": str(uuid.uuid4())}, "unit": {"name": str(uuid.uuid4())}, "amount": random.randint(0, 10)}, - {"food": {"name": str(uuid.uuid4())}, "unit": {"name": str(uuid.uuid4())}, "amount": random.randint(0, 10)}, + {"food": {"name": str(uuid.uuid4())}, "unit": {"name": str( + uuid.uuid4())}, "amount": random.randint(0, 10)}, + {"food": {"name": str(uuid.uuid4())}, "unit": {"name": str( + uuid.uuid4())}, "amount": random.randint(0, 10)}, ], } ], @@ -133,7 +140,8 @@ def validate_recipe(expected, recipe): for key in expected_lists: for k in expected_lists[key]: try: - print('comparing ', any([dict_compare(k, i) for i in target_lists[key]])) + print('comparing ', any([dict_compare(k, i) + for i in target_lists[key]])) assert any([dict_compare(k, i) for i in target_lists[key]]) except AssertionError: for result in [dict_compare(k, i, details=True) for i in target_lists[key]]: @@ -152,7 +160,8 @@ def dict_compare(d1, d2, details=False): added = d1_keys - d2_keys removed = d2_keys - d1_keys modified = {o: (d1[o], d2[o]) for o in not_dicts if d1[o] != d2[o]} - modified_dicts = {o: (d1[o], d2[o]) for o in sub_dicts if not d1[o].items() <= d2[o].items()} + modified_dicts = {o: (d1[o], d2[o]) + for o in sub_dicts if not d1[o].items() <= d2[o].items()} if details: return added, removed, modified, modified_dicts else: @@ -173,12 +182,12 @@ def transpose(text, number=2): positions = random.sample(range(len(tokens[token_pos])), number) # swap the positions - l = list(tokens[token_pos]) + lt = list(tokens[token_pos]) for first, second in zip(positions[::2], positions[1::2]): - l[first], l[second] = l[second], l[first] + lt[first], lt[second] = lt[second], lt[first] # replace original tokens with swapped - tokens[token_pos] = ''.join(l) + tokens[token_pos] = ''.join(lt) # return text with the swapped token return ' '.join(tokens) diff --git a/cookbook/tests/factories/__init__.py b/cookbook/tests/factories/__init__.py index c4b70e77..b8844119 100644 --- a/cookbook/tests/factories/__init__.py +++ b/cookbook/tests/factories/__init__.py @@ -4,13 +4,12 @@ from decimal import Decimal import factory import pytest -from django.contrib import auth from django.contrib.auth.models import Group, User from django_scopes import scopes_disabled from faker import Factory as FakerFactory from pytest_factoryboy import register -from cookbook.models import Recipe, Step, UserSpace +from cookbook.models import UserSpace # this code will run immediately prior to creating the model object useful when you want a reverse relationship # log = factory.RelatedFactory( @@ -53,7 +52,8 @@ class SpaceFactory(factory.django.DjangoModelFactory): class UserFactory(factory.django.DjangoModelFactory): """User factory.""" - username = factory.LazyAttribute(lambda x: faker.simple_profile()['username']) + username = factory.LazyAttribute( + lambda x: faker.simple_profile()['username']) first_name = factory.LazyAttribute(lambda x: faker.first_name()) last_name = factory.LazyAttribute(lambda x: faker.last_name()) email = factory.LazyAttribute(lambda x: faker.email()) @@ -65,7 +65,8 @@ class UserFactory(factory.django.DjangoModelFactory): return if extracted: - us = UserSpace.objects.create(space=self.space, user=self, active=True) + us = UserSpace.objects.create( + space=self.space, user=self, active=True) us.groups.add(Group.objects.get(name=extracted)) @factory.post_generation @@ -75,10 +76,12 @@ class UserFactory(factory.django.DjangoModelFactory): if extracted: for prefs in extracted: - self.userpreference[prefs] = extracted[prefs]/0 # intentionally break so it can be debugged later + # intentionally break so it can be debugged later + self.userpreference[prefs] = extracted[prefs] / 0 class Meta: model = User + django_get_or_create = ('username', 'space',) @register @@ -98,18 +101,22 @@ class SupermarketCategoryFactory(factory.django.DjangoModelFactory): class FoodFactory(factory.django.DjangoModelFactory): """Food factory.""" name = factory.LazyAttribute(lambda x: faker.sentence(nb_words=10)[:128]) - plural_name = factory.LazyAttribute(lambda x: faker.sentence(nb_words=3, variable_nb_words=False)) + plural_name = factory.LazyAttribute( + lambda x: faker.sentence(nb_words=3, variable_nb_words=False)) description = factory.LazyAttribute(lambda x: faker.sentence(nb_words=10)) supermarket_category = factory.Maybe( - factory.LazyAttribute(lambda x: x.has_category), - yes_declaration=factory.SubFactory(SupermarketCategoryFactory, space=factory.SelfAttribute('..space')), + factory.LazyAttribute(lambda x: x.has_category), + yes_declaration=factory.SubFactory( + SupermarketCategoryFactory, space=factory.SelfAttribute('..space')), no_declaration=None ) recipe = factory.Maybe( - factory.LazyAttribute(lambda x: x.has_recipe), - yes_declaration=factory.SubFactory('cookbook.tests.factories.RecipeFactory', space=factory.SelfAttribute('..space')), + factory.LazyAttribute(lambda x: x.has_recipe), + yes_declaration=factory.SubFactory( + 'cookbook.tests.factories.RecipeFactory', space=factory.SelfAttribute('..space')), no_declaration=None ) + path = None space = factory.SubFactory(SpaceFactory) @factory.post_generation @@ -127,17 +134,19 @@ class FoodFactory(factory.django.DjangoModelFactory): class Meta: model = 'cookbook.Food' - django_get_or_create = ('name', 'plural_name', 'space',) + django_get_or_create = ('name', 'plural_name', 'path', 'space',) @register class RecipeBookFactory(factory.django.DjangoModelFactory): """RecipeBook factory.""" - name = factory.LazyAttribute(lambda x: faker.sentence(nb_words=3, variable_nb_words=False)) + name = factory.LazyAttribute(lambda x: faker.sentence( + nb_words=3, variable_nb_words=False)) description = factory.LazyAttribute(lambda x: faker.sentence(nb_words=10)) icon = None # shared = factory.SubFactory(UserFactory, space=factory.SelfAttribute('..space')) - created_by = factory.SubFactory(UserFactory, space=factory.SelfAttribute('..space')) + created_by = factory.SubFactory( + UserFactory, space=factory.SelfAttribute('..space')) filter = None space = factory.SubFactory(SpaceFactory) @@ -149,7 +158,8 @@ class RecipeBookFactory(factory.django.DjangoModelFactory): @register class RecipeBookEntryFactory(factory.django.DjangoModelFactory): """RecipeBookEntry factory.""" - book = factory.SubFactory(RecipeBookFactory, space=factory.SelfAttribute('..recipe.space')) + book = factory.SubFactory( + RecipeBookFactory, space=factory.SelfAttribute('..recipe.space')) recipe = None class Meta: @@ -173,7 +183,8 @@ class UnitFactory(factory.django.DjangoModelFactory): @register class KeywordFactory(factory.django.DjangoModelFactory): """Keyword factory.""" - name = factory.LazyAttribute(lambda x: faker.sentence(nb_words=2, variable_nb_words=False)) + name = factory.LazyAttribute(lambda x: faker.sentence( + nb_words=2, variable_nb_words=False)) # icon = models.CharField(max_length=16, blank=True, null=True) description = factory.LazyAttribute(lambda x: faker.sentence(nb_words=10)) space = factory.SubFactory(SpaceFactory) @@ -184,15 +195,17 @@ class KeywordFactory(factory.django.DjangoModelFactory): class Meta: model = 'cookbook.Keyword' - django_get_or_create = ('name', 'space',) + django_get_or_create = ('name', 'space') exclude = ('num') @register class IngredientFactory(factory.django.DjangoModelFactory): """Ingredient factory.""" - food = factory.SubFactory(FoodFactory, space=factory.SelfAttribute('..space')) - unit = factory.SubFactory(UnitFactory, space=factory.SelfAttribute('..space')) + food = factory.SubFactory( + FoodFactory, space=factory.SelfAttribute('..space')) + unit = factory.SubFactory( + UnitFactory, space=factory.SelfAttribute('..space')) amount = factory.LazyAttribute(lambda x: faker.random_int(min=1, max=10)) note = factory.LazyAttribute(lambda x: faker.sentence(nb_words=8)) is_header = False @@ -210,7 +223,8 @@ class MealTypeFactory(factory.django.DjangoModelFactory): # icon = color = factory.LazyAttribute(lambda x: faker.safe_hex_color()) default = False - created_by = factory.SubFactory(UserFactory, space=factory.SelfAttribute('..space')) + created_by = factory.SubFactory( + UserFactory, space=factory.SelfAttribute('..space')) space = factory.SubFactory(SpaceFactory) class Meta: @@ -220,14 +234,18 @@ class MealTypeFactory(factory.django.DjangoModelFactory): @register class MealPlanFactory(factory.django.DjangoModelFactory): recipe = factory.Maybe( - factory.LazyAttribute(lambda x: x.has_recipe), - yes_declaration=factory.SubFactory('cookbook.tests.factories.RecipeFactory', space=factory.SelfAttribute('..space')), + factory.LazyAttribute(lambda x: x.has_recipe), + yes_declaration=factory.SubFactory( + 'cookbook.tests.factories.RecipeFactory', space=factory.SelfAttribute('..space')), no_declaration=None ) - servings = factory.LazyAttribute(lambda x: Decimal(faker.random_int(min=1, max=1000)/100)) + servings = factory.LazyAttribute( + lambda x: Decimal(faker.random_int(min=1, max=1000) / 100)) title = factory.LazyAttribute(lambda x: faker.sentence(nb_words=5)) - created_by = factory.SubFactory(UserFactory, space=factory.SelfAttribute('..space')) - meal_type = factory.SubFactory(MealTypeFactory, space=factory.SelfAttribute('..space')) + created_by = factory.SubFactory( + UserFactory, space=factory.SelfAttribute('..space')) + meal_type = factory.SubFactory( + MealTypeFactory, space=factory.SelfAttribute('..space')) note = factory.LazyAttribute(lambda x: faker.paragraph()) date = factory.LazyAttribute(lambda x: faker.future_date()) space = factory.SubFactory(SpaceFactory) @@ -243,12 +261,14 @@ class MealPlanFactory(factory.django.DjangoModelFactory): class ShoppingListRecipeFactory(factory.django.DjangoModelFactory): name = factory.LazyAttribute(lambda x: faker.sentence(nb_words=5)) recipe = factory.Maybe( - factory.LazyAttribute(lambda x: x.has_recipe), - yes_declaration=factory.SubFactory('cookbook.tests.factories.RecipeFactory', space=factory.SelfAttribute('..space')), + factory.LazyAttribute(lambda x: x.has_recipe), + yes_declaration=factory.SubFactory( + 'cookbook.tests.factories.RecipeFactory', space=factory.SelfAttribute('..space')), no_declaration=None ) servings = factory.LazyAttribute(lambda x: faker.random_int(min=1, max=10)) - mealplan = factory.SubFactory(MealPlanFactory, space=factory.SelfAttribute('..space')) + mealplan = factory.SubFactory( + MealPlanFactory, space=factory.SelfAttribute('..space')) space = factory.SubFactory(SpaceFactory) class Params: @@ -263,26 +283,33 @@ class ShoppingListEntryFactory(factory.django.DjangoModelFactory): """ShoppingListEntry factory.""" list_recipe = factory.Maybe( - factory.LazyAttribute(lambda x: x.has_mealplan), - yes_declaration=factory.SubFactory(ShoppingListRecipeFactory, space=factory.SelfAttribute('..space')), + factory.LazyAttribute(lambda x: x.has_mealplan), + yes_declaration=factory.SubFactory( + ShoppingListRecipeFactory, space=factory.SelfAttribute('..space')), no_declaration=None ) - food = factory.SubFactory(FoodFactory, space=factory.SelfAttribute('..space')) - unit = factory.SubFactory(UnitFactory, space=factory.SelfAttribute('..space')) + food = factory.SubFactory( + FoodFactory, space=factory.SelfAttribute('..space')) + unit = factory.SubFactory( + UnitFactory, space=factory.SelfAttribute('..space')) # # ingredient = factory.SubFactory(IngredientFactory) - amount = factory.LazyAttribute(lambda x: Decimal(faker.random_int(min=1, max=100))/10) + amount = factory.LazyAttribute( + lambda x: Decimal(faker.random_int(min=1, max=100)) / 10) order = factory.Sequence(int) checked = False - created_by = factory.SubFactory(UserFactory, space=factory.SelfAttribute('..space')) + created_by = factory.SubFactory( + UserFactory, space=factory.SelfAttribute('..space')) created_at = factory.LazyAttribute(lambda x: faker.past_date()) completed_at = None delay_until = None space = factory.SubFactory(SpaceFactory) @classmethod - def _create(cls, target_class, *args, **kwargs): # override create to prevent auto_add_now from changing the created_at date + # override create to prevent auto_add_now from changing the created_at date + def _create(cls, target_class, *args, **kwargs): created_at = kwargs.pop('created_at', None) - obj = super(ShoppingListEntryFactory, cls)._create(target_class, *args, **kwargs) + obj = super(ShoppingListEntryFactory, cls)._create( + target_class, *args, **kwargs) if created_at is not None: obj.created_at = created_at obj.save() @@ -298,7 +325,8 @@ class ShoppingListEntryFactory(factory.django.DjangoModelFactory): @register class StepFactory(factory.django.DjangoModelFactory): name = factory.LazyAttribute(lambda x: faker.sentence(nb_words=5)) - instruction = factory.LazyAttribute(lambda x: ''.join(faker.paragraphs(nb=5))) + instruction = factory.LazyAttribute( + lambda x: ''.join(faker.paragraphs(nb=5))) # TODO add optional recipe food, make dependent on recipe, make number of recipes a Params ingredients__count = 10 # default number of ingredients to add ingredients__header = 0 @@ -330,14 +358,16 @@ class StepFactory(factory.django.DjangoModelFactory): for i in range(num_ing): if num_food_recipe > 0: has_recipe = True - num_food_recipe = num_food_recipe-1 + num_food_recipe = num_food_recipe - 1 else: has_recipe = False - self.ingredients.add(IngredientFactory(space=self.space, food__has_recipe=has_recipe)) + self.ingredients.add(IngredientFactory( + space=self.space, food__has_recipe=has_recipe)) num_header = kwargs.get('header', 0) if num_header > 0: for i in range(num_header): - self.ingredients.add(IngredientFactory(food=None, unit=None, amount=0, is_header=True, space=self.space)) + self.ingredients.add(IngredientFactory( + food=None, unit=None, amount=0, is_header=True, space=self.space)) elif extracted: for ing in extracted: self.ingredients.add(ing) @@ -351,20 +381,27 @@ class RecipeFactory(factory.django.DjangoModelFactory): name = factory.LazyAttribute(lambda x: faker.sentence(nb_words=7)) description = factory.LazyAttribute(lambda x: faker.sentence(nb_words=10)) servings = factory.LazyAttribute(lambda x: faker.random_int(min=1, max=20)) - servings_text = factory.LazyAttribute(lambda x: faker.sentence(nb_words=1)) # TODO generate list of expected servings text that can be iterated through + # TODO generate list of expected servings text that can be iterated through + servings_text = factory.LazyAttribute(lambda x: faker.sentence(nb_words=1)) keywords__count = 5 # default number of keywords to generate steps__count = 1 # default number of steps to create steps__recipe_count = 0 # default number of step recipes to create - steps__food_recipe_count = {} # by default, don't create food recipes, to override {'steps__food_recipe_count': {'step': 0, 'count': 1}} - working_time = factory.LazyAttribute(lambda x: faker.random_int(min=0, max=360)) - waiting_time = factory.LazyAttribute(lambda x: faker.random_int(min=0, max=360)) + # by default, don't create food recipes, to override {'steps__food_recipe_count': {'step': 0, 'count': 1}} + steps__food_recipe_count = {} + working_time = factory.LazyAttribute( + lambda x: faker.random_int(min=0, max=360)) + waiting_time = factory.LazyAttribute( + lambda x: faker.random_int(min=0, max=360)) internal = False - created_by = factory.SubFactory(UserFactory, space=factory.SelfAttribute('..space')) - created_at = factory.LazyAttribute(lambda x: faker.date_between_dates(date_start=date(2000, 1, 1), date_end=date(2020, 12, 31))) + created_by = factory.SubFactory( + UserFactory, space=factory.SelfAttribute('..space')) + created_at = factory.LazyAttribute(lambda x: faker.date_between_dates( + date_start=date(2000, 1, 1), date_end=date(2020, 12, 31))) space = factory.SubFactory(SpaceFactory) @classmethod - def _create(cls, target_class, *args, **kwargs): # override create to prevent auto_add_now from changing the created_at date + # override create to prevent auto_add_now from changing the created_at date + def _create(cls, target_class, *args, **kwargs): created_at = kwargs.pop('created_at', None) # updated_at = kwargs.pop('updated_at', None) obj = super(RecipeFactory, cls)._create(target_class, *args, **kwargs) @@ -401,11 +438,13 @@ class RecipeFactory(factory.django.DjangoModelFactory): ing_recipe_count = 0 if food_recipe_count.get('step', None) == i: ing_recipe_count = food_recipe_count.get('count', 0) - self.steps.add(StepFactory(space=self.space, ingredients__food_recipe_count=ing_recipe_count, ingredients__header=num_ing_headers)) - num_ing_headers+-1 + self.steps.add(StepFactory( + space=self.space, ingredients__food_recipe_count=ing_recipe_count, ingredients__header=num_ing_headers)) + num_ing_headers + - 1 if num_recipe_steps > 0: for j in range(num_recipe_steps): - self.steps.add(StepFactory(space=self.space, step_recipe__has_recipe=True, ingredients__count=0)) + self.steps.add(StepFactory( + space=self.space, step_recipe__has_recipe=True, ingredients__count=0)) if extracted and (num_steps + num_recipe_steps == 0): for step in extracted: self.steps.add(step) @@ -428,15 +467,18 @@ class RecipeFactory(factory.django.DjangoModelFactory): @register class CookLogFactory(factory.django.DjangoModelFactory): """CookLog factory.""" - recipe = factory.SubFactory(RecipeFactory, space=factory.SelfAttribute('..space')) - created_by = factory.SubFactory(UserFactory, space=factory.SelfAttribute('..space')) + recipe = factory.SubFactory( + RecipeFactory, space=factory.SelfAttribute('..space')) + created_by = factory.SubFactory( + UserFactory, space=factory.SelfAttribute('..space')) created_at = factory.LazyAttribute(lambda x: faker.date_this_decade()) rating = factory.LazyAttribute(lambda x: faker.random_int(min=1, max=5)) servings = factory.LazyAttribute(lambda x: faker.random_int(min=1, max=32)) space = factory.SubFactory(SpaceFactory) @classmethod - def _create(cls, target_class, *args, **kwargs): # override create to prevent auto_add_now from changing the created_at date + # override create to prevent auto_add_now from changing the created_at date + def _create(cls, target_class, *args, **kwargs): created_at = kwargs.pop('created_at', None) obj = super(CookLogFactory, cls)._create(target_class, *args, **kwargs) if created_at is not None: @@ -451,13 +493,17 @@ class CookLogFactory(factory.django.DjangoModelFactory): @register class ViewLogFactory(factory.django.DjangoModelFactory): """ViewLog factory.""" - recipe = factory.SubFactory(RecipeFactory, space=factory.SelfAttribute('..space')) - created_by = factory.SubFactory(UserFactory, space=factory.SelfAttribute('..space')) - created_at = factory.LazyAttribute(lambda x: faker.past_datetime(start_date='-365d')) + recipe = factory.SubFactory( + RecipeFactory, space=factory.SelfAttribute('..space')) + created_by = factory.SubFactory( + UserFactory, space=factory.SelfAttribute('..space')) + created_at = factory.LazyAttribute( + lambda x: faker.past_datetime(start_date='-365d')) space = factory.SubFactory(SpaceFactory) @classmethod - def _create(cls, target_class, *args, **kwargs): # override create to prevent auto_add_now from changing the created_at date + # override create to prevent auto_add_now from changing the created_at date + def _create(cls, target_class, *args, **kwargs): created_at = kwargs.pop('created_at', None) obj = super(ViewLogFactory, cls)._create(target_class, *args, **kwargs) if created_at is not None: diff --git a/cookbook/tests/other/test_makenow_filter.py b/cookbook/tests/other/test_makenow_filter.py index 4da5e092..9e43df50 100644 --- a/cookbook/tests/other/test_makenow_filter.py +++ b/cookbook/tests/other/test_makenow_filter.py @@ -11,6 +11,11 @@ from cookbook.tests.factories import FoodFactory, RecipeFactory # TODO returns recipes with all ingredients via child substitute # TODO returns recipes with all ingredients via sibling substitute +if (Food.node_order_by): + node_location = 'sorted-child' +else: + node_location = 'last-child' + @pytest.fixture def recipes(space_1): @@ -19,7 +24,8 @@ def recipes(space_1): @pytest.fixture def makenow_recipe(request, space_1): - onhand_user = auth.get_user(request.getfixturevalue(request.param.get('onhand_users', 'u1_s1'))) + onhand_user = auth.get_user(request.getfixturevalue( + request.param.get('onhand_users', 'u1_s1'))) recipe = RecipeFactory.create(space=space_1) for food in Food.objects.filter(ingredient__step__recipe=recipe.id): @@ -55,13 +61,16 @@ def test_makenow_ignoreshopping(recipes, makenow_recipe, user1, space_1): request = type('', (object,), {'space': space_1, 'user': user1})() search = RecipeSearch(request, makenow='true') with scope(space=space_1): - food = Food.objects.filter(ingredient__step__recipe=makenow_recipe.id).first() + food = Food.objects.filter( + ingredient__step__recipe=makenow_recipe.id).first() food.onhand_users.clear() assert search.get_queryset(Recipe.objects.all()).count() == 0 food.ignore_shopping = True food.save() - assert Food.objects.filter(ingredient__step__recipe=makenow_recipe.id, onhand_users__isnull=False).count() == 9 - assert Food.objects.filter(ingredient__step__recipe=makenow_recipe.id, ignore_shopping=True).count() == 1 + assert Food.objects.filter( + ingredient__step__recipe=makenow_recipe.id, onhand_users__isnull=False).count() == 9 + assert Food.objects.filter( + ingredient__step__recipe=makenow_recipe.id, ignore_shopping=True).count() == 1 search = search.get_queryset(Recipe.objects.all()) assert search.count() == 1 assert search.first().id == makenow_recipe.id @@ -74,13 +83,17 @@ def test_makenow_substitute(recipes, makenow_recipe, user1, space_1): request = type('', (object,), {'space': space_1, 'user': user1})() search = RecipeSearch(request, makenow='true') with scope(space=space_1): - food = Food.objects.filter(ingredient__step__recipe=makenow_recipe.id).first() + food = Food.objects.filter( + ingredient__step__recipe=makenow_recipe.id).first() onhand_user = food.onhand_users.first() food.onhand_users.clear() assert search.get_queryset(Recipe.objects.all()).count() == 0 - food.substitute.add(FoodFactory.create(space=space_1, onhand_users=[onhand_user])) - assert Food.objects.filter(ingredient__step__recipe=makenow_recipe.id, onhand_users__isnull=False).count() == 9 - assert Food.objects.filter(ingredient__step__recipe=makenow_recipe.id, substitute__isnull=False).count() == 1 + food.substitute.add(FoodFactory.create( + space=space_1, onhand_users=[onhand_user])) + assert Food.objects.filter( + ingredient__step__recipe=makenow_recipe.id, onhand_users__isnull=False).count() == 9 + assert Food.objects.filter( + ingredient__step__recipe=makenow_recipe.id, substitute__isnull=False).count() == 1 search = search.get_queryset(Recipe.objects.all()) assert search.count() == 1 @@ -94,16 +107,20 @@ def test_makenow_child_substitute(recipes, makenow_recipe, user1, space_1): request = type('', (object,), {'space': space_1, 'user': user1})() search = RecipeSearch(request, makenow='true') with scope(space=space_1): - food = Food.objects.filter(ingredient__step__recipe=makenow_recipe.id).first() + food = Food.objects.filter( + ingredient__step__recipe=makenow_recipe.id).first() onhand_user = food.onhand_users.first() food.onhand_users.clear() food.substitute_children = True food.save() assert search.get_queryset(Recipe.objects.all()).count() == 0 - new_food = FoodFactory.create(space=space_1, onhand_users=[onhand_user]) - new_food.move(food, 'first-child') - assert Food.objects.filter(ingredient__step__recipe=makenow_recipe.id, onhand_users__isnull=False).count() == 9 - assert Food.objects.filter(ingredient__step__recipe=makenow_recipe.id, numchild__gt=0).count() == 1 + new_food = FoodFactory.create( + space=space_1, onhand_users=[onhand_user]) + new_food.move(food, node_location) + assert Food.objects.filter( + ingredient__step__recipe=makenow_recipe.id, onhand_users__isnull=False).count() == 9 + assert Food.objects.filter( + ingredient__step__recipe=makenow_recipe.id, numchild__gt=0).count() == 1 search = search.get_queryset(Recipe.objects.all()) assert search.count() == 1 assert search.first().id == makenow_recipe.id @@ -116,18 +133,22 @@ def test_makenow_sibling_substitute(recipes, makenow_recipe, user1, space_1): request = type('', (object,), {'space': space_1, 'user': user1})() search = RecipeSearch(request, makenow='true') with scope(space=space_1): - food = Food.objects.filter(ingredient__step__recipe=makenow_recipe.id).first() + food = Food.objects.filter( + ingredient__step__recipe=makenow_recipe.id).first() onhand_user = food.onhand_users.first() food.onhand_users.clear() food.substitute_siblings = True food.save() assert search.get_queryset(Recipe.objects.all()).count() == 0 new_parent = FoodFactory.create(space=space_1) - new_sibling = FoodFactory.create(space=space_1, onhand_users=[onhand_user]) - new_sibling.move(new_parent, 'first-child') - food.move(new_parent, 'first-child') - assert Food.objects.filter(ingredient__step__recipe=makenow_recipe.id, onhand_users__isnull=False).count() == 9 - assert Food.objects.filter(ingredient__step__recipe=makenow_recipe.id, depth=2).count() == 1 + new_sibling = FoodFactory.create( + space=space_1, onhand_users=[onhand_user]) + new_sibling.move(new_parent, node_location) + food.move(new_parent, node_location) + assert Food.objects.filter( + ingredient__step__recipe=makenow_recipe.id, onhand_users__isnull=False).count() == 9 + assert Food.objects.filter( + ingredient__step__recipe=makenow_recipe.id, depth=2).count() == 1 search = search.get_queryset(Recipe.objects.all()) assert search.count() == 1 assert search.first().id == makenow_recipe.id diff --git a/cookbook/tests/other/test_recipe_full_text_search.py b/cookbook/tests/other/test_recipe_full_text_search.py index d2159720..3e119585 100644 --- a/cookbook/tests/other/test_recipe_full_text_search.py +++ b/cookbook/tests/other/test_recipe_full_text_search.py @@ -7,9 +7,9 @@ from django.conf import settings from django.contrib import auth from django.urls import reverse from django.utils import timezone -from django_scopes import scope, scopes_disabled +from django_scopes import scope -from cookbook.models import Food, Recipe, SearchFields +from cookbook.models import Recipe, SearchFields from cookbook.tests.conftest import transpose from cookbook.tests.factories import (CookLogFactory, FoodFactory, IngredientFactory, KeywordFactory, RecipeBookEntryFactory, RecipeFactory, @@ -23,7 +23,8 @@ from cookbook.tests.factories import (CookLogFactory, FoodFactory, IngredientFac # TODO makenow with above filters # TODO test search food/keywords including/excluding children LIST_URL = 'api:recipe-list' -sqlite = settings.DATABASES['default']['ENGINE'] not in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql'] +sqlite = settings.DATABASES['default']['ENGINE'] not in [ + 'django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql'] @pytest.fixture @@ -50,26 +51,43 @@ def user1(request, space_1, u1_s1, unaccent): if params.get('fuzzy_lookups', False): user.searchpreference.lookup = True misspelled_result = 1 + else: + user.searchpreference.lookup = False + if params.get('fuzzy_search', False): user.searchpreference.trigram.set(SearchFields.objects.all()) misspelled_result = 1 + else: + user.searchpreference.trigram.set([]) if params.get('icontains', False): user.searchpreference.icontains.set(SearchFields.objects.all()) search_term = 'ghijklmn' + else: + user.searchpreference.icontains.set([]) + if params.get('istartswith', False): user.searchpreference.istartswith.set(SearchFields.objects.all()) search_term = 'abcdef' + else: + user.searchpreference.istartswith.set([]) + if params.get('unaccent', False): user.searchpreference.unaccent.set(SearchFields.objects.all()) misspelled_result *= 2 result *= 2 + else: + user.searchpreference.unaccent.set([]) + # full text vectors are hard coded to use unaccent - put this after unaccent to override result if params.get('fulltext', False): user.searchpreference.fulltext.set(SearchFields.objects.all()) # user.searchpreference.search = 'websearch' search_term = 'ghijklmn uvwxyz' result = 2 + else: + user.searchpreference.fulltext.set([]) + user.searchpreference.save() misspelled_term = transpose(search_term, number=3) return (u1_s1, result, misspelled_result, search_term, misspelled_term, params) @@ -104,7 +122,8 @@ def found_recipe(request, space_1, accent, unaccent, u1_s1, u2_s1): obj2 = FoodFactory.create(name=accent, space=space_1) recipe1.steps.first().ingredients.add(IngredientFactory.create(food=obj1)) recipe2.steps.first().ingredients.add(IngredientFactory.create(food=obj2)) - recipe3.steps.first().ingredients.add(IngredientFactory.create(food=obj1), IngredientFactory.create(food=obj2)) + recipe3.steps.first().ingredients.add(IngredientFactory.create( + food=obj1), IngredientFactory.create(food=obj2)) if request.param.get('keyword', None): obj1 = KeywordFactory.create(name=unaccent, space=space_1) obj2 = KeywordFactory.create(name=accent, space=space_1) @@ -125,7 +144,8 @@ def found_recipe(request, space_1, accent, unaccent, u1_s1, u2_s1): obj2 = UnitFactory.create(name=accent, space=space_1) recipe1.steps.first().ingredients.add(IngredientFactory.create(unit=obj1)) recipe2.steps.first().ingredients.add(IngredientFactory.create(unit=obj2)) - recipe3.steps.first().ingredients.add(IngredientFactory.create(unit=obj1), IngredientFactory.create(unit=obj2)) + recipe3.steps.first().ingredients.add(IngredientFactory.create( + unit=obj1), IngredientFactory.create(unit=obj2)) if request.param.get('name', None): recipe1.name = unaccent recipe2.name = accent @@ -145,21 +165,32 @@ def found_recipe(request, space_1, accent, unaccent, u1_s1, u2_s1): i2.save() if request.param.get('viewedon', None): - ViewLogFactory.create(recipe=recipe1, created_by=user1, created_at=days_3, space=space_1) - ViewLogFactory.create(recipe=recipe2, created_by=user1, created_at=days_30, space=space_1) - ViewLogFactory.create(recipe=recipe3, created_by=user2, created_at=days_15, space=space_1) + ViewLogFactory.create(recipe=recipe1, created_by=user1, + created_at=days_3, space=space_1) + ViewLogFactory.create(recipe=recipe2, created_by=user1, + created_at=days_30, space=space_1) + ViewLogFactory.create(recipe=recipe3, created_by=user2, + created_at=days_15, space=space_1) if request.param.get('cookedon', None): - CookLogFactory.create(recipe=recipe1, created_by=user1, created_at=days_3, space=space_1) - CookLogFactory.create(recipe=recipe2, created_by=user1, created_at=days_30, space=space_1) - CookLogFactory.create(recipe=recipe3, created_by=user2, created_at=days_15, space=space_1) + CookLogFactory.create(recipe=recipe1, created_by=user1, + created_at=days_3, space=space_1) + CookLogFactory.create(recipe=recipe2, created_by=user1, + created_at=days_30, space=space_1) + CookLogFactory.create(recipe=recipe3, created_by=user2, + created_at=days_15, space=space_1) if request.param.get('timescooked', None): - CookLogFactory.create_batch(5, recipe=recipe1, created_by=user1, space=space_1) - CookLogFactory.create(recipe=recipe2, created_by=user1, space=space_1) - CookLogFactory.create_batch(3, recipe=recipe3, created_by=user2, space=space_1) + CookLogFactory.create_batch( + 5, recipe=recipe1, created_by=user1, space=space_1) + CookLogFactory.create(recipe=recipe2, created_by=user1, space=space_1) + CookLogFactory.create_batch( + 3, recipe=recipe3, created_by=user2, space=space_1) if request.param.get('rating', None): - CookLogFactory.create(recipe=recipe1, created_by=user1, rating=5.0, space=space_1) - CookLogFactory.create(recipe=recipe2, created_by=user1, rating=1.0, space=space_1) - CookLogFactory.create(recipe=recipe3, created_by=user2, rating=3.0, space=space_1) + CookLogFactory.create( + recipe=recipe1, created_by=user1, rating=5.0, space=space_1) + CookLogFactory.create( + recipe=recipe2, created_by=user1, rating=1.0, space=space_1) + CookLogFactory.create( + recipe=recipe3, created_by=user2, rating=3.0, space=space_1) return (recipe1, recipe2, recipe3, obj1, obj2, request.param) @@ -188,7 +219,8 @@ def test_search_or_and_not(found_recipe, param_type, operator, recipes, u1_s1, s assert found_recipe[1].id in [x['id'] for x in r['results']] assert found_recipe[2].id in [x['id'] for x in r['results']] - r = json.loads(u1_s1.get(reverse(LIST_URL) + f'?{param1}&{param2}').content) + r = json.loads(u1_s1.get(reverse(LIST_URL) + + f'?{param1}&{param2}').content) assert r['count'] == operator[1] assert found_recipe[2].id in [x['id'] for x in r['results']] @@ -203,7 +235,8 @@ def test_search_or_and_not(found_recipe, param_type, operator, recipes, u1_s1, s assert found_recipe[1].id not in [x['id'] for x in r['results']] assert found_recipe[2].id not in [x['id'] for x in r['results']] - r = json.loads(u1_s1.get(reverse(LIST_URL) + f'?{param1_not}&{param2_not}').content) + r = json.loads(u1_s1.get(reverse(LIST_URL) + + f'?{param1_not}&{param2_not}').content) assert r['count'] == 10 + operator[2] assert found_recipe[2].id not in [x['id'] for x in r['results']] @@ -227,13 +260,14 @@ def test_search_units(found_recipe, recipes, u1_s1, space_1): assert found_recipe[1].id in [x['id'] for x in r['results']] assert found_recipe[2].id in [x['id'] for x in r['results']] - r = json.loads(u1_s1.get(reverse(LIST_URL) + f'?{param1}&{param2}').content) + r = json.loads(u1_s1.get(reverse(LIST_URL) + + f'?{param1}&{param2}').content) assert r['count'] == 3 assert found_recipe[2].id in [x['id'] for x in r['results']] @pytest.mark.skipif(sqlite, reason="requires PostgreSQL") -@pytest.mark.parametrize("user1", itertools.product( +@pytest.mark.parametrize("user1", itertools.product( [ ('fuzzy_search', True), ('fuzzy_search', False), ('fuzzy_lookups', True), ('fuzzy_lookups', False) @@ -245,22 +279,26 @@ def test_search_units(found_recipe, recipes, u1_s1, space_1): ({'keyword': True}, 'keyword'), ({'food': True}, 'food'), ], indirect=['found_recipe']) -def test_fuzzy_lookup(found_recipe, recipes, param_type, user1, space_1): +def test_fuzzy_lookup(found_recipe, recipes, param_type, user1, space_1): with scope(space=space_1): list_url = f'api:{param_type}-list' param1 = f"query={user1[3]}" param2 = f"query={user1[4]}" - r = json.loads(user1[0].get(reverse(list_url) + f'?{param1}&limit=2').content) - assert len([x['id'] for x in r['results'] if x['id'] in [found_recipe[3].id, found_recipe[4].id]]) == user1[1] + r = json.loads(user1[0].get(reverse(list_url) + + f'?{param1}&limit=2').content) + assert len([x['id'] for x in r['results'] if x['id'] in [ + found_recipe[3].id, found_recipe[4].id]]) == user1[1] - r = json.loads(user1[0].get(reverse(list_url) + f'?{param2}&limit=10').content) - assert len([x['id'] for x in r['results'] if x['id'] in [found_recipe[3].id, found_recipe[4].id]]) == user1[2] + r = json.loads(user1[0].get(reverse(list_url) + + f'?{param2}&limit=10').content) + assert len([x['id'] for x in r['results'] if x['id'] in [ + found_recipe[3].id, found_recipe[4].id]]) == user1[2] # commenting this out for general use - it is really slow # it should be run on occasion to ensure everything still works # @pytest.mark.skipif(sqlite and True, reason="requires PostgreSQL") -# @pytest.mark.parametrize("user1", itertools.product( +# @pytest.mark.parametrize("user1", itertools.product( # [ # ('fuzzy_search', True), ('fuzzy_search', False), # ('fulltext', True), ('fulltext', False), @@ -276,29 +314,35 @@ def test_fuzzy_lookup(found_recipe, recipes, param_type, user1, space_1): # ({'keyword': True}), # ({'food': True}), # ], indirect=['found_recipe']) -# def test_search_string(found_recipe, recipes, user1, space_1): +# # user array contains: user client, expected count of search, expected count of mispelled search, search string, mispelled search string, user search preferences +# def test_search_string(found_recipe, recipes, user1, space_1): # with scope(space=space_1): # param1 = f"query={user1[3]}" # param2 = f"query={user1[4]}" # r = json.loads(user1[0].get(reverse(LIST_URL) + f'?{param1}').content) -# assert len([x['id'] for x in r['results'] if x['id'] in [found_recipe[0].id, found_recipe[1].id]]) == user1[1] +# assert len([x['id'] for x in r['results'] if x['id'] in [ +# found_recipe[0].id, found_recipe[1].id]]) == user1[1] # r = json.loads(user1[0].get(reverse(LIST_URL) + f'?{param2}').content) -# assert len([x['id'] for x in r['results'] if x['id'] in [found_recipe[0].id, found_recipe[1].id]]) == user1[2] +# assert len([x['id'] for x in r['results'] if x['id'] in [ +# found_recipe[0].id, found_recipe[1].id]]) == user1[2] @pytest.mark.parametrize("found_recipe, param_type, result", [ ({'viewedon': True}, 'viewedon', (1, 1)), ({'cookedon': True}, 'cookedon', (1, 1)), - ({'createdon': True}, 'createdon', (2, 12)), # created dates are not filtered by user - ({'createdon': True}, 'updatedon', (2, 12)), # updated dates are not filtered by user + # created dates are not filtered by user + ({'createdon': True}, 'createdon', (2, 12)), + # updated dates are not filtered by user + ({'createdon': True}, 'updatedon', (2, 12)), ], indirect=['found_recipe']) def test_search_date(found_recipe, recipes, param_type, result, u1_s1, u2_s1, space_1): # force updated_at to equal created_at datetime with scope(space=space_1): for recipe in Recipe.objects.all(): - Recipe.objects.filter(id=recipe.id).update(updated_at=recipe.created_at) + Recipe.objects.filter(id=recipe.id).update( + updated_at=recipe.created_at) date = (timezone.now() - timedelta(days=15)).strftime("%Y-%m-%d") param1 = f"?{param_type}={date}" @@ -321,34 +365,34 @@ def test_search_date(found_recipe, recipes, param_type, result, u1_s1, u2_s1, sp assert found_recipe[2].id in [x['id'] for x in r['results']] -# TODO this is somehow screwed, probably the search itself, dont want to fix it for now -# @pytest.mark.parametrize("found_recipe, param_type", [ -# ({'rating': True}, 'rating'), -# ({'timescooked': True}, 'timescooked'), -# ], indirect=['found_recipe']) -# def test_search_count(found_recipe, recipes, param_type, u1_s1, u2_s1, space_1): -# param1 = f'?{param_type}=3' -# param2 = f'?{param_type}=-3' -# param3 = f'?{param_type}=0' -# -# r = json.loads(u1_s1.get(reverse(LIST_URL) + param1).content) -# assert r['count'] == 1 -# assert found_recipe[0].id in [x['id'] for x in r['results']] -# -# r = json.loads(u1_s1.get(reverse(LIST_URL) + param2).content) -# assert r['count'] == 1 -# assert found_recipe[1].id in [x['id'] for x in r['results']] -# -# # test search for not rated/cooked -# r = json.loads(u1_s1.get(reverse(LIST_URL) + param3).content) -# assert r['count'] == 11 -# assert (found_recipe[0].id or found_recipe[1].id) not in [x['id'] for x in r['results']] -# -# # test matched returns for lte and gte searches -# r = json.loads(u2_s1.get(reverse(LIST_URL) + param1).content) -# assert r['count'] == 1 -# assert found_recipe[2].id in [x['id'] for x in r['results']] -# -# r = json.loads(u2_s1.get(reverse(LIST_URL) + param2).content) -# assert r['count'] == 1 -# assert found_recipe[2].id in [x['id'] for x in r['results']] +@pytest.mark.parametrize("found_recipe, param_type", [ + ({'rating': True}, 'rating'), + ({'timescooked': True}, 'timescooked'), +], indirect=['found_recipe']) +def test_search_count(found_recipe, recipes, param_type, u1_s1, u2_s1, space_1): + param1 = f'?{param_type}=3' + param2 = f'?{param_type}=-3' + param3 = f'?{param_type}=0' + + r = json.loads(u1_s1.get(reverse(LIST_URL) + param1).content) + assert r['count'] == 1 + assert found_recipe[0].id in [x['id'] for x in r['results']] + + r = json.loads(u1_s1.get(reverse(LIST_URL) + param2).content) + assert r['count'] == 1 + assert found_recipe[1].id in [x['id'] for x in r['results']] + + # test search for not rated/cooked + r = json.loads(u1_s1.get(reverse(LIST_URL) + param3).content) + assert r['count'] == 11 + assert (found_recipe[0].id or found_recipe[1].id) not in [ + x['id'] for x in r['results']] + + # test matched returns for lte and gte searches + r = json.loads(u2_s1.get(reverse(LIST_URL) + param1).content) + assert r['count'] == 1 + assert found_recipe[2].id in [x['id'] for x in r['results']] + + r = json.loads(u2_s1.get(reverse(LIST_URL) + param2).content) + assert r['count'] == 1 + assert found_recipe[2].id in [x['id'] for x in r['results']] diff --git a/docs/features/authentication.md b/docs/features/authentication.md index 4dd619e6..f218d662 100644 --- a/docs/features/authentication.md +++ b/docs/features/authentication.md @@ -96,6 +96,7 @@ AUTH_LDAP_USER_SEARCH_FILTER_STR=(uid=%(user)s) AUTH_LDAP_USER_ATTR_MAP={'first_name': 'givenName', 'last_name': 'sn', 'email': 'mail'} AUTH_LDAP_ALWAYS_UPDATE_USER=1 AUTH_LDAP_CACHE_TIMEOUT=3600 +AUTH_LDAP_START_TLS=1 AUTH_LDAP_TLS_CACERTFILE=/etc/ssl/certs/own-ca.pem ``` diff --git a/recipes/locale/ca/LC_MESSAGES/django.po b/recipes/locale/ca/LC_MESSAGES/django.po index ccbff1a1..7d991c0d 100644 --- a/recipes/locale/ca/LC_MESSAGES/django.po +++ b/recipes/locale/ca/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,62 +18,66 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:382 +#: .\recipes\settings.py:436 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:383 +#: .\recipes\settings.py:437 msgid "Bulgarian" msgstr "" -#: .\recipes\settings.py:384 +#: .\recipes\settings.py:438 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:385 +#: .\recipes\settings.py:439 msgid "Czech" msgstr "" -#: .\recipes\settings.py:386 +#: .\recipes\settings.py:440 msgid "Danish" msgstr "" -#: .\recipes\settings.py:387 +#: .\recipes\settings.py:441 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:388 +#: .\recipes\settings.py:442 msgid "English" msgstr "" -#: .\recipes\settings.py:389 +#: .\recipes\settings.py:443 msgid "French" msgstr "" -#: .\recipes\settings.py:390 +#: .\recipes\settings.py:444 msgid "German" msgstr "" -#: .\recipes\settings.py:391 +#: .\recipes\settings.py:445 +msgid "Hungarian" +msgstr "" + +#: .\recipes\settings.py:446 msgid "Italian" msgstr "" -#: .\recipes\settings.py:392 +#: .\recipes\settings.py:447 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:393 +#: .\recipes\settings.py:448 msgid "Polish" msgstr "" -#: .\recipes\settings.py:394 +#: .\recipes\settings.py:449 msgid "Russian" msgstr "" -#: .\recipes\settings.py:395 +#: .\recipes\settings.py:450 msgid "Spanish" msgstr "" -#: .\recipes\settings.py:396 +#: .\recipes\settings.py:451 msgid "Swedish" msgstr "" diff --git a/recipes/locale/de/LC_MESSAGES/django.po b/recipes/locale/de/LC_MESSAGES/django.po index 8f5f66d5..e7e46fcd 100644 --- a/recipes/locale/de/LC_MESSAGES/django.po +++ b/recipes/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,64 +18,68 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:382 +#: .\recipes\settings.py:436 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:383 +#: .\recipes\settings.py:437 msgid "Bulgarian" msgstr "" -#: .\recipes\settings.py:384 +#: .\recipes\settings.py:438 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:385 +#: .\recipes\settings.py:439 msgid "Czech" msgstr "" -#: .\recipes\settings.py:386 +#: .\recipes\settings.py:440 msgid "Danish" msgstr "" -#: .\recipes\settings.py:387 +#: .\recipes\settings.py:441 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:388 +#: .\recipes\settings.py:442 msgid "English" msgstr "Englisch" -#: .\recipes\settings.py:389 +#: .\recipes\settings.py:443 msgid "French" msgstr "" -#: .\recipes\settings.py:390 +#: .\recipes\settings.py:444 msgid "German" msgstr "Deutsch" -#: .\recipes\settings.py:391 +#: .\recipes\settings.py:445 +msgid "Hungarian" +msgstr "" + +#: .\recipes\settings.py:446 msgid "Italian" msgstr "" -#: .\recipes\settings.py:392 +#: .\recipes\settings.py:447 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:393 +#: .\recipes\settings.py:448 #, fuzzy #| msgid "English" msgid "Polish" msgstr "Englisch" -#: .\recipes\settings.py:394 +#: .\recipes\settings.py:449 msgid "Russian" msgstr "" -#: .\recipes\settings.py:395 +#: .\recipes\settings.py:450 msgid "Spanish" msgstr "" -#: .\recipes\settings.py:396 +#: .\recipes\settings.py:451 msgid "Swedish" msgstr "" diff --git a/recipes/locale/en/LC_MESSAGES/django.po b/recipes/locale/en/LC_MESSAGES/django.po index ccbff1a1..7d991c0d 100644 --- a/recipes/locale/en/LC_MESSAGES/django.po +++ b/recipes/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,62 +18,66 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:382 +#: .\recipes\settings.py:436 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:383 +#: .\recipes\settings.py:437 msgid "Bulgarian" msgstr "" -#: .\recipes\settings.py:384 +#: .\recipes\settings.py:438 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:385 +#: .\recipes\settings.py:439 msgid "Czech" msgstr "" -#: .\recipes\settings.py:386 +#: .\recipes\settings.py:440 msgid "Danish" msgstr "" -#: .\recipes\settings.py:387 +#: .\recipes\settings.py:441 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:388 +#: .\recipes\settings.py:442 msgid "English" msgstr "" -#: .\recipes\settings.py:389 +#: .\recipes\settings.py:443 msgid "French" msgstr "" -#: .\recipes\settings.py:390 +#: .\recipes\settings.py:444 msgid "German" msgstr "" -#: .\recipes\settings.py:391 +#: .\recipes\settings.py:445 +msgid "Hungarian" +msgstr "" + +#: .\recipes\settings.py:446 msgid "Italian" msgstr "" -#: .\recipes\settings.py:392 +#: .\recipes\settings.py:447 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:393 +#: .\recipes\settings.py:448 msgid "Polish" msgstr "" -#: .\recipes\settings.py:394 +#: .\recipes\settings.py:449 msgid "Russian" msgstr "" -#: .\recipes\settings.py:395 +#: .\recipes\settings.py:450 msgid "Spanish" msgstr "" -#: .\recipes\settings.py:396 +#: .\recipes\settings.py:451 msgid "Swedish" msgstr "" diff --git a/recipes/locale/es/LC_MESSAGES/django.po b/recipes/locale/es/LC_MESSAGES/django.po index ccbff1a1..7d991c0d 100644 --- a/recipes/locale/es/LC_MESSAGES/django.po +++ b/recipes/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,62 +18,66 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:382 +#: .\recipes\settings.py:436 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:383 +#: .\recipes\settings.py:437 msgid "Bulgarian" msgstr "" -#: .\recipes\settings.py:384 +#: .\recipes\settings.py:438 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:385 +#: .\recipes\settings.py:439 msgid "Czech" msgstr "" -#: .\recipes\settings.py:386 +#: .\recipes\settings.py:440 msgid "Danish" msgstr "" -#: .\recipes\settings.py:387 +#: .\recipes\settings.py:441 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:388 +#: .\recipes\settings.py:442 msgid "English" msgstr "" -#: .\recipes\settings.py:389 +#: .\recipes\settings.py:443 msgid "French" msgstr "" -#: .\recipes\settings.py:390 +#: .\recipes\settings.py:444 msgid "German" msgstr "" -#: .\recipes\settings.py:391 +#: .\recipes\settings.py:445 +msgid "Hungarian" +msgstr "" + +#: .\recipes\settings.py:446 msgid "Italian" msgstr "" -#: .\recipes\settings.py:392 +#: .\recipes\settings.py:447 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:393 +#: .\recipes\settings.py:448 msgid "Polish" msgstr "" -#: .\recipes\settings.py:394 +#: .\recipes\settings.py:449 msgid "Russian" msgstr "" -#: .\recipes\settings.py:395 +#: .\recipes\settings.py:450 msgid "Spanish" msgstr "" -#: .\recipes\settings.py:396 +#: .\recipes\settings.py:451 msgid "Swedish" msgstr "" diff --git a/recipes/locale/fr/LC_MESSAGES/django.po b/recipes/locale/fr/LC_MESSAGES/django.po index 88d0a571..d62555e7 100644 --- a/recipes/locale/fr/LC_MESSAGES/django.po +++ b/recipes/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,62 +18,66 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: .\recipes\settings.py:382 +#: .\recipes\settings.py:436 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:383 +#: .\recipes\settings.py:437 msgid "Bulgarian" msgstr "" -#: .\recipes\settings.py:384 +#: .\recipes\settings.py:438 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:385 +#: .\recipes\settings.py:439 msgid "Czech" msgstr "" -#: .\recipes\settings.py:386 +#: .\recipes\settings.py:440 msgid "Danish" msgstr "" -#: .\recipes\settings.py:387 +#: .\recipes\settings.py:441 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:388 +#: .\recipes\settings.py:442 msgid "English" msgstr "" -#: .\recipes\settings.py:389 +#: .\recipes\settings.py:443 msgid "French" msgstr "" -#: .\recipes\settings.py:390 +#: .\recipes\settings.py:444 msgid "German" msgstr "" -#: .\recipes\settings.py:391 +#: .\recipes\settings.py:445 +msgid "Hungarian" +msgstr "" + +#: .\recipes\settings.py:446 msgid "Italian" msgstr "" -#: .\recipes\settings.py:392 +#: .\recipes\settings.py:447 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:393 +#: .\recipes\settings.py:448 msgid "Polish" msgstr "" -#: .\recipes\settings.py:394 +#: .\recipes\settings.py:449 msgid "Russian" msgstr "" -#: .\recipes\settings.py:395 +#: .\recipes\settings.py:450 msgid "Spanish" msgstr "" -#: .\recipes\settings.py:396 +#: .\recipes\settings.py:451 msgid "Swedish" msgstr "" diff --git a/recipes/locale/hu_HU/LC_MESSAGES/django.po b/recipes/locale/hu_HU/LC_MESSAGES/django.po index 8ab89c50..817e91ca 100644 --- a/recipes/locale/hu_HU/LC_MESSAGES/django.po +++ b/recipes/locale/hu_HU/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,62 +17,66 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: .\recipes\settings.py:382 +#: .\recipes\settings.py:436 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:383 +#: .\recipes\settings.py:437 msgid "Bulgarian" msgstr "" -#: .\recipes\settings.py:384 +#: .\recipes\settings.py:438 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:385 +#: .\recipes\settings.py:439 msgid "Czech" msgstr "" -#: .\recipes\settings.py:386 +#: .\recipes\settings.py:440 msgid "Danish" msgstr "" -#: .\recipes\settings.py:387 +#: .\recipes\settings.py:441 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:388 +#: .\recipes\settings.py:442 msgid "English" msgstr "" -#: .\recipes\settings.py:389 +#: .\recipes\settings.py:443 msgid "French" msgstr "" -#: .\recipes\settings.py:390 +#: .\recipes\settings.py:444 msgid "German" msgstr "" -#: .\recipes\settings.py:391 +#: .\recipes\settings.py:445 +msgid "Hungarian" +msgstr "" + +#: .\recipes\settings.py:446 msgid "Italian" msgstr "" -#: .\recipes\settings.py:392 +#: .\recipes\settings.py:447 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:393 +#: .\recipes\settings.py:448 msgid "Polish" msgstr "" -#: .\recipes\settings.py:394 +#: .\recipes\settings.py:449 msgid "Russian" msgstr "" -#: .\recipes\settings.py:395 +#: .\recipes\settings.py:450 msgid "Spanish" msgstr "" -#: .\recipes\settings.py:396 +#: .\recipes\settings.py:451 msgid "Swedish" msgstr "" diff --git a/recipes/locale/it/LC_MESSAGES/django.po b/recipes/locale/it/LC_MESSAGES/django.po index ccbff1a1..7d991c0d 100644 --- a/recipes/locale/it/LC_MESSAGES/django.po +++ b/recipes/locale/it/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,62 +18,66 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:382 +#: .\recipes\settings.py:436 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:383 +#: .\recipes\settings.py:437 msgid "Bulgarian" msgstr "" -#: .\recipes\settings.py:384 +#: .\recipes\settings.py:438 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:385 +#: .\recipes\settings.py:439 msgid "Czech" msgstr "" -#: .\recipes\settings.py:386 +#: .\recipes\settings.py:440 msgid "Danish" msgstr "" -#: .\recipes\settings.py:387 +#: .\recipes\settings.py:441 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:388 +#: .\recipes\settings.py:442 msgid "English" msgstr "" -#: .\recipes\settings.py:389 +#: .\recipes\settings.py:443 msgid "French" msgstr "" -#: .\recipes\settings.py:390 +#: .\recipes\settings.py:444 msgid "German" msgstr "" -#: .\recipes\settings.py:391 +#: .\recipes\settings.py:445 +msgid "Hungarian" +msgstr "" + +#: .\recipes\settings.py:446 msgid "Italian" msgstr "" -#: .\recipes\settings.py:392 +#: .\recipes\settings.py:447 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:393 +#: .\recipes\settings.py:448 msgid "Polish" msgstr "" -#: .\recipes\settings.py:394 +#: .\recipes\settings.py:449 msgid "Russian" msgstr "" -#: .\recipes\settings.py:395 +#: .\recipes\settings.py:450 msgid "Spanish" msgstr "" -#: .\recipes\settings.py:396 +#: .\recipes\settings.py:451 msgid "Swedish" msgstr "" diff --git a/recipes/locale/lv/LC_MESSAGES/django.po b/recipes/locale/lv/LC_MESSAGES/django.po index d2066b42..d8b9c52d 100644 --- a/recipes/locale/lv/LC_MESSAGES/django.po +++ b/recipes/locale/lv/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,62 +19,66 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " "2);\n" -#: .\recipes\settings.py:382 +#: .\recipes\settings.py:436 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:383 +#: .\recipes\settings.py:437 msgid "Bulgarian" msgstr "" -#: .\recipes\settings.py:384 +#: .\recipes\settings.py:438 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:385 +#: .\recipes\settings.py:439 msgid "Czech" msgstr "" -#: .\recipes\settings.py:386 +#: .\recipes\settings.py:440 msgid "Danish" msgstr "" -#: .\recipes\settings.py:387 +#: .\recipes\settings.py:441 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:388 +#: .\recipes\settings.py:442 msgid "English" msgstr "" -#: .\recipes\settings.py:389 +#: .\recipes\settings.py:443 msgid "French" msgstr "" -#: .\recipes\settings.py:390 +#: .\recipes\settings.py:444 msgid "German" msgstr "" -#: .\recipes\settings.py:391 +#: .\recipes\settings.py:445 +msgid "Hungarian" +msgstr "" + +#: .\recipes\settings.py:446 msgid "Italian" msgstr "" -#: .\recipes\settings.py:392 +#: .\recipes\settings.py:447 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:393 +#: .\recipes\settings.py:448 msgid "Polish" msgstr "" -#: .\recipes\settings.py:394 +#: .\recipes\settings.py:449 msgid "Russian" msgstr "" -#: .\recipes\settings.py:395 +#: .\recipes\settings.py:450 msgid "Spanish" msgstr "" -#: .\recipes\settings.py:396 +#: .\recipes\settings.py:451 msgid "Swedish" msgstr "" diff --git a/recipes/locale/nl/LC_MESSAGES/django.po b/recipes/locale/nl/LC_MESSAGES/django.po index ccbff1a1..7d991c0d 100644 --- a/recipes/locale/nl/LC_MESSAGES/django.po +++ b/recipes/locale/nl/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,62 +18,66 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:382 +#: .\recipes\settings.py:436 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:383 +#: .\recipes\settings.py:437 msgid "Bulgarian" msgstr "" -#: .\recipes\settings.py:384 +#: .\recipes\settings.py:438 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:385 +#: .\recipes\settings.py:439 msgid "Czech" msgstr "" -#: .\recipes\settings.py:386 +#: .\recipes\settings.py:440 msgid "Danish" msgstr "" -#: .\recipes\settings.py:387 +#: .\recipes\settings.py:441 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:388 +#: .\recipes\settings.py:442 msgid "English" msgstr "" -#: .\recipes\settings.py:389 +#: .\recipes\settings.py:443 msgid "French" msgstr "" -#: .\recipes\settings.py:390 +#: .\recipes\settings.py:444 msgid "German" msgstr "" -#: .\recipes\settings.py:391 +#: .\recipes\settings.py:445 +msgid "Hungarian" +msgstr "" + +#: .\recipes\settings.py:446 msgid "Italian" msgstr "" -#: .\recipes\settings.py:392 +#: .\recipes\settings.py:447 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:393 +#: .\recipes\settings.py:448 msgid "Polish" msgstr "" -#: .\recipes\settings.py:394 +#: .\recipes\settings.py:449 msgid "Russian" msgstr "" -#: .\recipes\settings.py:395 +#: .\recipes\settings.py:450 msgid "Spanish" msgstr "" -#: .\recipes\settings.py:396 +#: .\recipes\settings.py:451 msgid "Swedish" msgstr "" diff --git a/recipes/locale/pt/LC_MESSAGES/django.po b/recipes/locale/pt/LC_MESSAGES/django.po index ccbff1a1..7d991c0d 100644 --- a/recipes/locale/pt/LC_MESSAGES/django.po +++ b/recipes/locale/pt/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,62 +18,66 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\recipes\settings.py:382 +#: .\recipes\settings.py:436 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:383 +#: .\recipes\settings.py:437 msgid "Bulgarian" msgstr "" -#: .\recipes\settings.py:384 +#: .\recipes\settings.py:438 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:385 +#: .\recipes\settings.py:439 msgid "Czech" msgstr "" -#: .\recipes\settings.py:386 +#: .\recipes\settings.py:440 msgid "Danish" msgstr "" -#: .\recipes\settings.py:387 +#: .\recipes\settings.py:441 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:388 +#: .\recipes\settings.py:442 msgid "English" msgstr "" -#: .\recipes\settings.py:389 +#: .\recipes\settings.py:443 msgid "French" msgstr "" -#: .\recipes\settings.py:390 +#: .\recipes\settings.py:444 msgid "German" msgstr "" -#: .\recipes\settings.py:391 +#: .\recipes\settings.py:445 +msgid "Hungarian" +msgstr "" + +#: .\recipes\settings.py:446 msgid "Italian" msgstr "" -#: .\recipes\settings.py:392 +#: .\recipes\settings.py:447 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:393 +#: .\recipes\settings.py:448 msgid "Polish" msgstr "" -#: .\recipes\settings.py:394 +#: .\recipes\settings.py:449 msgid "Russian" msgstr "" -#: .\recipes\settings.py:395 +#: .\recipes\settings.py:450 msgid "Spanish" msgstr "" -#: .\recipes\settings.py:396 +#: .\recipes\settings.py:451 msgid "Swedish" msgstr "" diff --git a/recipes/locale/rn/LC_MESSAGES/django.po b/recipes/locale/rn/LC_MESSAGES/django.po index 8ab89c50..817e91ca 100644 --- a/recipes/locale/rn/LC_MESSAGES/django.po +++ b/recipes/locale/rn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,62 +17,66 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: .\recipes\settings.py:382 +#: .\recipes\settings.py:436 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:383 +#: .\recipes\settings.py:437 msgid "Bulgarian" msgstr "" -#: .\recipes\settings.py:384 +#: .\recipes\settings.py:438 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:385 +#: .\recipes\settings.py:439 msgid "Czech" msgstr "" -#: .\recipes\settings.py:386 +#: .\recipes\settings.py:440 msgid "Danish" msgstr "" -#: .\recipes\settings.py:387 +#: .\recipes\settings.py:441 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:388 +#: .\recipes\settings.py:442 msgid "English" msgstr "" -#: .\recipes\settings.py:389 +#: .\recipes\settings.py:443 msgid "French" msgstr "" -#: .\recipes\settings.py:390 +#: .\recipes\settings.py:444 msgid "German" msgstr "" -#: .\recipes\settings.py:391 +#: .\recipes\settings.py:445 +msgid "Hungarian" +msgstr "" + +#: .\recipes\settings.py:446 msgid "Italian" msgstr "" -#: .\recipes\settings.py:392 +#: .\recipes\settings.py:447 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:393 +#: .\recipes\settings.py:448 msgid "Polish" msgstr "" -#: .\recipes\settings.py:394 +#: .\recipes\settings.py:449 msgid "Russian" msgstr "" -#: .\recipes\settings.py:395 +#: .\recipes\settings.py:450 msgid "Spanish" msgstr "" -#: .\recipes\settings.py:396 +#: .\recipes\settings.py:451 msgid "Swedish" msgstr "" diff --git a/recipes/locale/tr/LC_MESSAGES/django.po b/recipes/locale/tr/LC_MESSAGES/django.po index 88d0a571..d62555e7 100644 --- a/recipes/locale/tr/LC_MESSAGES/django.po +++ b/recipes/locale/tr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,62 +18,66 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: .\recipes\settings.py:382 +#: .\recipes\settings.py:436 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:383 +#: .\recipes\settings.py:437 msgid "Bulgarian" msgstr "" -#: .\recipes\settings.py:384 +#: .\recipes\settings.py:438 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:385 +#: .\recipes\settings.py:439 msgid "Czech" msgstr "" -#: .\recipes\settings.py:386 +#: .\recipes\settings.py:440 msgid "Danish" msgstr "" -#: .\recipes\settings.py:387 +#: .\recipes\settings.py:441 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:388 +#: .\recipes\settings.py:442 msgid "English" msgstr "" -#: .\recipes\settings.py:389 +#: .\recipes\settings.py:443 msgid "French" msgstr "" -#: .\recipes\settings.py:390 +#: .\recipes\settings.py:444 msgid "German" msgstr "" -#: .\recipes\settings.py:391 +#: .\recipes\settings.py:445 +msgid "Hungarian" +msgstr "" + +#: .\recipes\settings.py:446 msgid "Italian" msgstr "" -#: .\recipes\settings.py:392 +#: .\recipes\settings.py:447 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:393 +#: .\recipes\settings.py:448 msgid "Polish" msgstr "" -#: .\recipes\settings.py:394 +#: .\recipes\settings.py:449 msgid "Russian" msgstr "" -#: .\recipes\settings.py:395 +#: .\recipes\settings.py:450 msgid "Spanish" msgstr "" -#: .\recipes\settings.py:396 +#: .\recipes\settings.py:451 msgid "Swedish" msgstr "" diff --git a/recipes/locale/zh_CN/LC_MESSAGES/django.po b/recipes/locale/zh_CN/LC_MESSAGES/django.po index 8ab89c50..817e91ca 100644 --- a/recipes/locale/zh_CN/LC_MESSAGES/django.po +++ b/recipes/locale/zh_CN/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-19 19:14+0100\n" +"POT-Creation-Date: 2023-04-26 07:46+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,62 +17,66 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: .\recipes\settings.py:382 +#: .\recipes\settings.py:436 msgid "Armenian " msgstr "" -#: .\recipes\settings.py:383 +#: .\recipes\settings.py:437 msgid "Bulgarian" msgstr "" -#: .\recipes\settings.py:384 +#: .\recipes\settings.py:438 msgid "Catalan" msgstr "" -#: .\recipes\settings.py:385 +#: .\recipes\settings.py:439 msgid "Czech" msgstr "" -#: .\recipes\settings.py:386 +#: .\recipes\settings.py:440 msgid "Danish" msgstr "" -#: .\recipes\settings.py:387 +#: .\recipes\settings.py:441 msgid "Dutch" msgstr "" -#: .\recipes\settings.py:388 +#: .\recipes\settings.py:442 msgid "English" msgstr "" -#: .\recipes\settings.py:389 +#: .\recipes\settings.py:443 msgid "French" msgstr "" -#: .\recipes\settings.py:390 +#: .\recipes\settings.py:444 msgid "German" msgstr "" -#: .\recipes\settings.py:391 +#: .\recipes\settings.py:445 +msgid "Hungarian" +msgstr "" + +#: .\recipes\settings.py:446 msgid "Italian" msgstr "" -#: .\recipes\settings.py:392 +#: .\recipes\settings.py:447 msgid "Latvian" msgstr "" -#: .\recipes\settings.py:393 +#: .\recipes\settings.py:448 msgid "Polish" msgstr "" -#: .\recipes\settings.py:394 +#: .\recipes\settings.py:449 msgid "Russian" msgstr "" -#: .\recipes\settings.py:395 +#: .\recipes\settings.py:450 msgid "Spanish" msgstr "" -#: .\recipes\settings.py:396 +#: .\recipes\settings.py:451 msgid "Swedish" msgstr "" diff --git a/recipes/settings.py b/recipes/settings.py index 92f520e5..e89dbc6d 100644 --- a/recipes/settings.py +++ b/recipes/settings.py @@ -24,7 +24,8 @@ load_dotenv() BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Get vars from .env files -SECRET_KEY = os.getenv('SECRET_KEY') if os.getenv('SECRET_KEY') else 'INSECURE_STANDARD_KEY_SET_IN_ENV' +SECRET_KEY = os.getenv('SECRET_KEY') if os.getenv( + 'SECRET_KEY') else 'INSECURE_STANDARD_KEY_SET_IN_ENV' DEBUG = bool(int(os.getenv('DEBUG', True))) DEBUG_TOOLBAR = bool(int(os.getenv('DEBUG_TOOLBAR', True))) @@ -35,9 +36,11 @@ SOCIAL_DEFAULT_GROUP = os.getenv('SOCIAL_DEFAULT_GROUP', 'guest') SPACE_DEFAULT_MAX_RECIPES = int(os.getenv('SPACE_DEFAULT_MAX_RECIPES', 0)) SPACE_DEFAULT_MAX_USERS = int(os.getenv('SPACE_DEFAULT_MAX_USERS', 0)) SPACE_DEFAULT_MAX_FILES = int(os.getenv('SPACE_DEFAULT_MAX_FILES', 0)) -SPACE_DEFAULT_ALLOW_SHARING = bool(int(os.getenv('SPACE_DEFAULT_ALLOW_SHARING', True))) +SPACE_DEFAULT_ALLOW_SHARING = bool( + int(os.getenv('SPACE_DEFAULT_ALLOW_SHARING', True))) -INTERNAL_IPS = os.getenv('INTERNAL_IPS').split(',') if os.getenv('INTERNAL_IPS') else ['127.0.0.1'] +INTERNAL_IPS = os.getenv('INTERNAL_IPS').split( + ',') if os.getenv('INTERNAL_IPS') else ['127.0.0.1'] # allow djangos wsgi server to server mediafiles GUNICORN_MEDIA = bool(int(os.getenv('GUNICORN_MEDIA', True))) @@ -51,9 +54,11 @@ KJ_PREF_DEFAULT = bool(int(os.getenv('KJ_PREF_DEFAULT', False))) STICKY_NAV_PREF_DEFAULT = bool(int(os.getenv('STICKY_NAV_PREF_DEFAULT', True))) # minimum interval that users can set for automatic sync of shopping lists -SHOPPING_MIN_AUTOSYNC_INTERVAL = int(os.getenv('SHOPPING_MIN_AUTOSYNC_INTERVAL', 5)) +SHOPPING_MIN_AUTOSYNC_INTERVAL = int( + os.getenv('SHOPPING_MIN_AUTOSYNC_INTERVAL', 5)) -ALLOWED_HOSTS = os.getenv('ALLOWED_HOSTS').split(',') if os.getenv('ALLOWED_HOSTS') else ['*'] +ALLOWED_HOSTS = os.getenv('ALLOWED_HOSTS').split( + ',') if os.getenv('ALLOWED_HOSTS') else ['*'] if os.getenv('CSRF_TRUSTED_ORIGINS'): CSRF_TRUSTED_ORIGINS = os.getenv('CSRF_TRUSTED_ORIGINS').split(',') @@ -131,7 +136,8 @@ try: plugin_module = f'recipes.plugins.{d}.apps.{app_config_classname}' if plugin_module not in INSTALLED_APPS: INSTALLED_APPS.append(plugin_module) - plugin_class = getattr(sys.modules[apps_path], app_config_classname) + plugin_class = getattr( + sys.modules[apps_path], app_config_classname) plugin_config = { 'name': plugin_class.verbose_name if hasattr(plugin_class, 'verbose_name') else plugin_class.name, 'module': f'recipes.plugins.{d}', @@ -148,7 +154,8 @@ except Exception: if DEBUG: print('ERROR failed to initialize plugins') -SOCIAL_PROVIDERS = os.getenv('SOCIAL_PROVIDERS').split(',') if os.getenv('SOCIAL_PROVIDERS') else [] +SOCIAL_PROVIDERS = os.getenv('SOCIAL_PROVIDERS').split( + ',') if os.getenv('SOCIAL_PROVIDERS') else [] SOCIALACCOUNT_EMAIL_VERIFICATION = 'none' INSTALLED_APPS = INSTALLED_APPS + SOCIAL_PROVIDERS @@ -194,7 +201,8 @@ if DEBUG_TOOLBAR: INSTALLED_APPS += ('debug_toolbar',) SORT_TREE_BY_NAME = bool(int(os.getenv('SORT_TREE_BY_NAME', False))) -DISABLE_TREE_FIX_STARTUP = bool(int(os.getenv('DISABLE_TREE_FIX_STARTUP', False))) +DISABLE_TREE_FIX_STARTUP = bool( + int(os.getenv('DISABLE_TREE_FIX_STARTUP', False))) if bool(int(os.getenv('SQL_DEBUG', False))): MIDDLEWARE += ('recipes.middleware.SqlPrintingMiddleware',) @@ -213,6 +221,7 @@ if LDAP_AUTH: AUTHENTICATION_BACKENDS.append('django_auth_ldap.backend.LDAPBackend') AUTH_LDAP_SERVER_URI = os.getenv('AUTH_LDAP_SERVER_URI') + AUTH_LDAP_START_TLS = bool(int(os.getenv('AUTH_LDAP_START_TLS', False))) AUTH_LDAP_BIND_DN = os.getenv('AUTH_LDAP_BIND_DN') AUTH_LDAP_BIND_PASSWORD = os.getenv('AUTH_LDAP_BIND_PASSWORD') AUTH_LDAP_USER_SEARCH = LDAPSearch( @@ -225,10 +234,12 @@ if LDAP_AUTH: 'last_name': 'sn', 'email': 'mail', } - AUTH_LDAP_ALWAYS_UPDATE_USER = bool(int(os.getenv('AUTH_LDAP_ALWAYS_UPDATE_USER', True))) + AUTH_LDAP_ALWAYS_UPDATE_USER = bool( + int(os.getenv('AUTH_LDAP_ALWAYS_UPDATE_USER', True))) AUTH_LDAP_CACHE_TIMEOUT = int(os.getenv('AUTH_LDAP_CACHE_TIMEOUT', 3600)) if 'AUTH_LDAP_TLS_CACERTFILE' in os.environ: - AUTH_LDAP_GLOBAL_OPTIONS = {ldap.OPT_X_TLS_CACERTFILE: os.getenv('AUTH_LDAP_TLS_CACERTFILE')} + AUTH_LDAP_GLOBAL_OPTIONS = { + ldap.OPT_X_TLS_CACERTFILE: os.getenv('AUTH_LDAP_TLS_CACERTFILE')} if DEBUG: LOGGING = { "version": 1, @@ -249,7 +260,8 @@ ACCOUNT_ADAPTER = 'cookbook.helper.AllAuthCustomAdapter' if REVERSE_PROXY_AUTH: MIDDLEWARE.insert(8, 'recipes.middleware.CustomRemoteUser') - AUTHENTICATION_BACKENDS.append('django.contrib.auth.backends.RemoteUserBackend') + AUTHENTICATION_BACKENDS.append( + 'django.contrib.auth.backends.RemoteUserBackend') # Password validation # https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators @@ -444,7 +456,8 @@ LANGUAGES = [ SCRIPT_NAME = os.getenv('SCRIPT_NAME', '') # path for django_js_reverse to generate the javascript file containing all urls. Only done because the default command (collectstatic_js_reverse) fails to update the manifest -JS_REVERSE_OUTPUT_PATH = os.path.join(BASE_DIR, "cookbook/static/django_js_reverse") +JS_REVERSE_OUTPUT_PATH = os.path.join( + BASE_DIR, "cookbook/static/django_js_reverse") JS_REVERSE_SCRIPT_PREFIX = os.getenv('JS_REVERSE_SCRIPT_PREFIX', SCRIPT_NAME) STATIC_URL = os.getenv('STATIC_URL', '/static/') @@ -499,4 +512,5 @@ EMAIL_HOST_PASSWORD = os.getenv('EMAIL_HOST_PASSWORD', '') EMAIL_USE_TLS = bool(int(os.getenv('EMAIL_USE_TLS', False))) EMAIL_USE_SSL = bool(int(os.getenv('EMAIL_USE_SSL', False))) DEFAULT_FROM_EMAIL = os.getenv('DEFAULT_FROM_EMAIL', 'webmaster@localhost') -ACCOUNT_EMAIL_SUBJECT_PREFIX = os.getenv('ACCOUNT_EMAIL_SUBJECT_PREFIX', '[Tandoor Recipes] ') # allauth sender prefix +ACCOUNT_EMAIL_SUBJECT_PREFIX = os.getenv( + 'ACCOUNT_EMAIL_SUBJECT_PREFIX', '[Tandoor Recipes] ') # allauth sender prefix diff --git a/requirements.txt b/requirements.txt index f2c4c249..5f45e930 100644 --- a/requirements.txt +++ b/requirements.txt @@ -29,12 +29,12 @@ microdata==0.8.0 Jinja2==3.1.2 django-webpack-loader==1.8.1 git+https://github.com/BITSOLVER/django-js-reverse@071e304fd600107bc64bbde6f2491f1fe049ec82 -django-allauth==0.52.0 -recipe-scrapers==14.35.0 +django-allauth==0.54.0 +recipe-scrapers==14.36.1 django-scopes==1.2.0.post1 -pytest==7.2.2 +pytest==7.3.1 pytest-django==4.5.2 -django-treebeard==4.5.1 +django-treebeard==4.7 django-cors-headers==3.13.0 django-storages==1.13.2 boto3==1.26.41 @@ -42,8 +42,8 @@ django-prometheus==2.2.0 django-hCaptcha==0.2.0 python-ldap==3.4.3 django-auth-ldap==4.2.0 -pytest-factoryboy==2.5.0 +pytest-factoryboy==2.5.1 pyppeteer==1.0.2 validators==0.20.0 pytube==12.1.0 -pint==0.20.1 \ No newline at end of file +pint==0.20.1 diff --git a/vue/src/components/IngredientComponent.vue b/vue/src/components/IngredientComponent.vue index 7749c9de..3fc431e0 100644 --- a/vue/src/components/IngredientComponent.vue +++ b/vue/src/components/IngredientComponent.vue @@ -12,18 +12,17 @@ - +