From a47d9d00fd10ea304056afcb6823bdfb6b59bd51 Mon Sep 17 00:00:00 2001 From: Christoph Schmatzler Date: Wed, 1 Sep 2021 19:46:55 +0200 Subject: [PATCH 01/17] Allow specifying port through TANDOOR_PORT environment variable --- boot.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/boot.sh b/boot.sh index 8cd2c22cc..c799e3a39 100644 --- a/boot.sh +++ b/boot.sh @@ -1,6 +1,8 @@ #!/bin/sh source venv/bin/activate +TANDOOR_PORT="${TANDOOR_PORT:-8080}" + echo "Updating database" python manage.py migrate python manage.py collectstatic_js_reverse @@ -9,4 +11,4 @@ echo "Done" chmod -R 755 /opt/recipes/mediafiles -exec gunicorn -b :8080 --access-logfile - --error-logfile - --log-level INFO recipes.wsgi \ No newline at end of file +exec gunicorn -b :$TANDOOR_PORT --access-logfile - --error-logfile - --log-level INFO recipes.wsgi \ No newline at end of file From e5607aff9085d26f5fb13e3ee18a5a5e2df0eb71 Mon Sep 17 00:00:00 2001 From: Christoph Schmatzler Date: Thu, 2 Sep 2021 16:08:06 +0200 Subject: [PATCH 02/17] Add TANDOOR_PORT to .env.template --- .env.template | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.env.template b/.env.template index 0456ca9e7..413221180 100644 --- a/.env.template +++ b/.env.template @@ -2,6 +2,9 @@ # when unset: 1 (true) - dont unset this, just for development DEBUG=0 +# HTTP port to bind to +# TANDOOR_PORT=8080 + # hosts the application can run under e.g. recipes.mydomain.com,cooking.mydomain.com,... ALLOWED_HOSTS=* From 9f9cc766c69536093a746c7617addd908fc17eef Mon Sep 17 00:00:00 2001 From: "thl@deb030" Date: Sun, 6 Feb 2022 17:34:25 +0100 Subject: [PATCH 03/17] Small fix for dupplicate entries. --- docs/install/k8s/40-sts-postgresql.yaml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/docs/install/k8s/40-sts-postgresql.yaml b/docs/install/k8s/40-sts-postgresql.yaml index 5c769dd10..44ec13d0a 100644 --- a/docs/install/k8s/40-sts-postgresql.yaml +++ b/docs/install/k8s/40-sts-postgresql.yaml @@ -24,12 +24,6 @@ spec: name: recipes-postgresql namespace: default spec: - restartPolicy: Always - securityContext: - fsGroup: 999 - serviceAccount: recipes - serviceAccountName: recipes - terminationGracePeriodSeconds: 30 containers: - name: recipes-db env: @@ -125,8 +119,6 @@ spec: serviceAccount: recipes serviceAccountName: recipes terminationGracePeriodSeconds: 30 - updateStrategy: - type: RollingUpdate volumeClaimTemplates: - apiVersion: v1 kind: PersistentVolumeClaim From bd8633c630448a40367bf727e5bf91e0a51df8cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20M=C3=A4rtens?= Date: Sun, 6 Feb 2022 19:32:50 +0100 Subject: [PATCH 04/17] Update the baseimage of dockerfile as alpine 3.12 has some security vunerabilities. According to: https://artifacthub.io/packages/helm/truecharts/recipes?modal=security-report&image=tccr.io%2Ftruecharts%2Frecipes%3Av1.0.5%40sha256%3Ac74923879e7d2bf5bff4d1e953a100307462ad191a79908165f3364b97446833 There are at least 4 Chritical ones with a total of 47. So updating the base should prob be a good thing and help here. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b69c037ac..80e05f6a8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.9-alpine3.12 +FROM python:3.10-alpine3.15 #Install all dependencies. RUN apk add --no-cache postgresql-libs gettext zlib libjpeg libwebp libxml2-dev libxslt-dev py-cryptography From 542b656beaee1f1cf902007b5938abe7c669c7ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20M=C3=A4rtens?= Date: Mon, 7 Feb 2022 19:21:35 +0100 Subject: [PATCH 05/17] fix python-ldap bugs according to https://github.com/TandoorRecipes/recipes/pull/1499\#issuecomment-1031627178 --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 80e05f6a8..a626649ae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,7 @@ WORKDIR /opt/recipes COPY requirements.txt ./ RUN apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev zlib-dev jpeg-dev libwebp-dev libressl-dev libffi-dev cargo openssl-dev openldap-dev && \ + echo -n "INPUT ( libldap.so )" > /usr/lib/libldap_r.so && \ python -m venv venv && \ /opt/recipes/venv/bin/python -m pip install --upgrade pip && \ venv/bin/pip install wheel==0.36.2 && \ From a35aa953b4fb9949348e1c16bd498b5e2b876e07 Mon Sep 17 00:00:00 2001 From: MaxJa4 <74194322+MaxJa4@users.noreply.github.com> Date: Tue, 8 Feb 2022 18:15:04 +0100 Subject: [PATCH 06/17] Ping DB instead of trying migration --- Dockerfile | 2 +- boot.sh | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Dockerfile b/Dockerfile index b69c037ac..68d2366da 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,7 @@ WORKDIR /opt/recipes COPY requirements.txt ./ -RUN apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev zlib-dev jpeg-dev libwebp-dev libressl-dev libffi-dev cargo openssl-dev openldap-dev && \ +RUN apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev postgresql zlib-dev jpeg-dev libwebp-dev libressl-dev libffi-dev cargo openssl-dev openldap-dev && \ python -m venv venv && \ /opt/recipes/venv/bin/python -m pip install --upgrade pip && \ venv/bin/pip install wheel==0.36.2 && \ diff --git a/boot.sh b/boot.sh index 7e2f05fa0..ced7aaa29 100644 --- a/boot.sh +++ b/boot.sh @@ -1,28 +1,28 @@ #!/bin/sh source venv/bin/activate -echo "Migrating database" +echo "Waiting for database to be ready..." attempt=0 max_attempts=20 -while python manage.py migrate; \ - status=$?; \ - attempt=$((attempt+1)); \ - [ $status -eq 1 ] \ - && [ $attempt -le $max_attempts ]; do - echo -e "\n!!! Migration failed (error ${status}, attempt ${attempt}/${max_attempts})." - echo "!!! Database may not be ready yet or system is misconfigured." - echo -e "!!! Retrying in 5 seconds...\n" - sleep 5 +while pg_isready --host=${POSTGRES_HOST} -q; status=$?; attempt=$((attempt+1)); [ $status -ne 0 ] && [ $attempt -le $max_attempts ]; do + sleep 5 # no echo needed, response comes from pg_isready already done if [ $attempt -gt $max_attempts ]; then - echo -e "\n!!! Migration failed. Maximum attempts exceeded." - echo "!!! Please check logs above - misconfiguration is very likely." - echo "!!! Shutting down container." + echo -e "\nDatabase not reachable. Maximum attempts exceeded." + echo "Please check logs above - misconfiguration is very likely." + echo "Make sure the DB container is up and POSTGRES_HOST is set properly." + echo "Shutting down container." exit 1 # exit with error to make the container stop fi +echo "Database is ready" + +echo "Migrating database" + +python manage.py migrate + echo "Generating static files" python manage.py collectstatic_js_reverse @@ -32,4 +32,4 @@ echo "Done" chmod -R 755 /opt/recipes/mediafiles -exec gunicorn -b :8080 --access-logfile - --error-logfile - --log-level INFO recipes.wsgi +exec gunicorn -b :8080 --access-logfile - --error-logfile - --log-level INFO recipes.wsgi \ No newline at end of file From cb755a47bcf8986fa53bc9a4db04046efc1bc3f6 Mon Sep 17 00:00:00 2001 From: MaxJa4 <74194322+MaxJa4@users.noreply.github.com> Date: Tue, 8 Feb 2022 18:19:32 +0100 Subject: [PATCH 07/17] Remove wrong code comment --- boot.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/boot.sh b/boot.sh index ced7aaa29..9e081d5b5 100644 --- a/boot.sh +++ b/boot.sh @@ -6,7 +6,7 @@ echo "Waiting for database to be ready..." attempt=0 max_attempts=20 while pg_isready --host=${POSTGRES_HOST} -q; status=$?; attempt=$((attempt+1)); [ $status -ne 0 ] && [ $attempt -le $max_attempts ]; do - sleep 5 # no echo needed, response comes from pg_isready already + sleep 5 done if [ $attempt -gt $max_attempts ]; then @@ -32,4 +32,4 @@ echo "Done" chmod -R 755 /opt/recipes/mediafiles -exec gunicorn -b :8080 --access-logfile - --error-logfile - --log-level INFO recipes.wsgi \ No newline at end of file +exec gunicorn -b :8080 --access-logfile - --error-logfile - --log-level INFO recipes.wsgi From 45942dfa7f9a8f81948364dcab546990f0cc77e5 Mon Sep 17 00:00:00 2001 From: MaxJa4 <74194322+MaxJa4@users.noreply.github.com> Date: Tue, 8 Feb 2022 18:20:19 +0100 Subject: [PATCH 08/17] Fixed indentation --- boot.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.sh b/boot.sh index 9e081d5b5..187e4c951 100644 --- a/boot.sh +++ b/boot.sh @@ -12,7 +12,7 @@ done if [ $attempt -gt $max_attempts ]; then echo -e "\nDatabase not reachable. Maximum attempts exceeded." echo "Please check logs above - misconfiguration is very likely." - echo "Make sure the DB container is up and POSTGRES_HOST is set properly." + echo "Make sure the DB container is up and POSTGRES_HOST is set properly." echo "Shutting down container." exit 1 # exit with error to make the container stop fi From 2471bb21f65b0e93f383b08d5b83c7312c965fd0 Mon Sep 17 00:00:00 2001 From: MaxJa4 <74194322+MaxJa4@users.noreply.github.com> Date: Tue, 8 Feb 2022 19:00:54 +0100 Subject: [PATCH 09/17] Fixed dep. position and used smaller package --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 68d2366da..5e9fb621d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM python:3.9-alpine3.12 #Install all dependencies. -RUN apk add --no-cache postgresql-libs gettext zlib libjpeg libwebp libxml2-dev libxslt-dev py-cryptography +RUN apk add --no-cache postgresql-libs postgresql-client gettext zlib libjpeg libwebp libxml2-dev libxslt-dev py-cryptography #Print all logs without buffering it. ENV PYTHONUNBUFFERED 1 @@ -15,7 +15,7 @@ WORKDIR /opt/recipes COPY requirements.txt ./ -RUN apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev postgresql zlib-dev jpeg-dev libwebp-dev libressl-dev libffi-dev cargo openssl-dev openldap-dev && \ +RUN apk add --no-cache --virtual .build-deps gcc musl-dev postgresql-dev zlib-dev jpeg-dev libwebp-dev libressl-dev libffi-dev cargo openssl-dev openldap-dev && \ python -m venv venv && \ /opt/recipes/venv/bin/python -m pip install --upgrade pip && \ venv/bin/pip install wheel==0.36.2 && \ From faf51d04557355a2b49cc435ab4329f8cfa9c48b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marion=20K=C3=A4mpfer?= Date: Mon, 7 Feb 2022 21:54:15 +0000 Subject: [PATCH 10/17] Translated using Weblate (French) Currently translated at 94.7% (538 of 568 strings) Translation: Tandoor/Recipes Backend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/fr/ --- cookbook/locale/fr/LC_MESSAGES/django.po | 482 ++++++++++++----------- 1 file changed, 242 insertions(+), 240 deletions(-) diff --git a/cookbook/locale/fr/LC_MESSAGES/django.po b/cookbook/locale/fr/LC_MESSAGES/django.po index 5ca60a34e..b639bf0db 100644 --- a/cookbook/locale/fr/LC_MESSAGES/django.po +++ b/cookbook/locale/fr/LC_MESSAGES/django.po @@ -14,7 +14,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-01-18 14:52+0100\n" -"PO-Revision-Date: 2022-02-06 21:31+0000\n" +"PO-Revision-Date: 2022-02-09 01:31+0000\n" "Last-Translator: Marion Kämpfer \n" "Language-Team: French \n" @@ -61,7 +61,7 @@ msgstr "Page par défaut" #: .\cookbook\forms.py:63 msgid "Show recent recipes" -msgstr "Montrer les recettes récentes" +msgstr "Afficher les recettes récentes" #: .\cookbook\forms.py:64 msgid "Search style" @@ -89,13 +89,13 @@ msgid "" "Color of the top navigation bar. Not all colors work with all themes, just " "try them out!" msgstr "" -"La couleur de la barre de navigation du haut. Toutes les couleurs ne " -"marchent pas avec tous les thèmes, essayez-les !" +"Couleur de la barre de navigation du haut. Les couleurs ne fonctionnent pas " +"toutes avec tous les thèmes, faites des essais !" #: .\cookbook\forms.py:74 msgid "Default Unit to be used when inserting a new ingredient into a recipe." msgstr "" -"L'unité par défaut utilisée lors de l'ajout d'un nouvel ingrédient dans une " +"Unité par défaut utilisée lors de l’ajout d’un nouvel ingrédient dans une " "recette." #: .\cookbook\forms.py:76 @@ -103,24 +103,20 @@ msgid "" "Enables support for fractions in ingredient amounts (e.g. convert decimals " "to fractions automatically)" msgstr "" -"Autorise l'usage des fractions dans les quantités des ingrédients (convertit " -"les décimales en fractions automatiquement)" +"Permet la prise en charge des fractions dans les quantités d’ingrédients (" +"convertit les décimales en fractions automatiquement)" #: .\cookbook\forms.py:78 msgid "Display nutritional energy amounts in joules instead of calories" msgstr "" -"Afficher les quantités d'énergie nutritionnelle en joules plutôt qu'en " +"Afficher les quantités d’énergie nutritionnelle en joules plutôt qu’en " "calories" #: .\cookbook\forms.py:79 -#, fuzzy -#| msgid "" -#| "Users with whom newly created meal plan/shopping list entries should be " -#| "shared by default." msgid "Users with whom newly created meal plans should be shared by default." msgstr "" -"Utilisateurs avec lesquels les listes de courses et plans de repas " -"nouvellement créés seront partagés par défaut." +"Utilisateurs avec lesquels partager par défaut les menus de la semaines " +"nouvellement créés." #: .\cookbook\forms.py:80 msgid "Users with whom to share shopping lists." @@ -137,7 +133,7 @@ msgstr "Nombre de décimales pour arrondir les ingrédients." #: .\cookbook\forms.py:84 msgid "If you want to be able to create and see comments underneath recipes." msgstr "" -"Si vous souhaitez pouvoir créer et consulter des commentaires en-dessous des " +"Si vous souhaitez pouvoir créer et consulter des commentaires en dessous des " "recettes." #: .\cookbook\forms.py:86 .\cookbook\forms.py:493 @@ -147,11 +143,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\" désactivera la synchronisation automatique. Lorsque vous consultez une " +"« 0 » désactivera la synchronisation automatique. Lorsque vous consultez une " "liste de courses, la liste sera mise à jour toutes les x secondes pour " -"synchroniser les modifications apportées par quelqu'un d'autre. Utile " +"synchroniser les modifications apportées par quelqu’un d'autre. Utile " "lorsque vous faites vos courses à plusieurs mais peut consommer davantage de " -"données mobiles. Si la valeur est plus petite que les limites de l'instance, " +"données mobiles. Si la valeur est plus petite que les limites de l’instance, " "le paramètre sera réinitialisé." #: .\cookbook\forms.py:89 @@ -161,18 +157,20 @@ msgstr "Épingler la barre de navigation en haut de la page." #: .\cookbook\forms.py:90 .\cookbook\forms.py:496 msgid "Automatically add meal plan ingredients to shopping list." msgstr "" +"Ajouter les ingrédients du menu de la semaine à la liste de courses " +"automatiquement." #: .\cookbook\forms.py:91 msgid "Exclude ingredients that are on hand." -msgstr "" +msgstr "Exclure les ingrédients disponibles." #: .\cookbook\forms.py:108 msgid "" "Both fields are optional. If none are given the username will be displayed " "instead" msgstr "" -"Les deux champs sont facultatifs. Si aucun n'est rempli, le nom " -"d'utilisateur sera affiché à la place" +"Les deux champs sont facultatifs. Si aucun n’est rempli, le nom d’" +"utilisateur sera affiché à la place" #: .\cookbook\forms.py:129 .\cookbook\forms.py:298 #: .\cookbook\templates\url_import.html:161 @@ -188,11 +186,11 @@ msgstr "Mots-clés" #: .\cookbook\forms.py:131 msgid "Preparation time in minutes" -msgstr "Le temps de préparation en minutes" +msgstr "Temps de préparation en minutes" #: .\cookbook\forms.py:132 msgid "Waiting time (cooking/baking) in minutes" -msgstr "Temps d'attente (pose/cuisson) en minutes" +msgstr "Temps d’attente (cuisson) en minutes" #: .\cookbook\forms.py:133 .\cookbook\forms.py:267 .\cookbook\forms.py:300 msgid "Path" @@ -216,25 +214,25 @@ msgstr "" #: .\cookbook\forms.py:197 msgid "Add your comment: " -msgstr "Ajoutez votre commentaire : " +msgstr "Ajoutez votre commentaire : " #: .\cookbook\forms.py:212 msgid "Leave empty for dropbox and enter app password for nextcloud." msgstr "" -"Laissez vide pour Dropbox et renseigner votre mot de passe d'application " +"Laissez vide pour Dropbox et renseignez votre mot de passe d’application " "pour Nextcloud." #: .\cookbook\forms.py:219 msgid "Leave empty for nextcloud and enter api token for dropbox." msgstr "" -"Laissez vide pour Nextcloud et renseignez vote jeton d'API pour Dropbox." +"Laissez vide pour Nextcloud et renseignez votre jeton d’API pour Dropbox." #: .\cookbook\forms.py:228 msgid "" "Leave empty for dropbox and enter only base url for nextcloud (/remote." "php/webdav/ is added automatically)" msgstr "" -"Laisser vide pour Dropbox et saisissez seulement l'URL de base pour " +"Laisser vide pour Dropbox et saisissez seulement l’URL de base pour " "Nextcloud (/remote.php/webdav/ est ajouté automatiquement)" #: .\cookbook\forms.py:266 .\cookbook\views\edit.py:166 @@ -273,34 +271,34 @@ msgstr "" #: .\cookbook\forms.py:363 msgid "Maximum number of users for this space reached." -msgstr "Nombre maximum d'utilisateurs atteint pour ce groupe." +msgstr "Nombre maximum d’utilisateurs atteint pour ce groupe." #: .\cookbook\forms.py:369 msgid "Email address already taken!" -msgstr "Adresse mail déjà utilisée !" +msgstr "Adresse mail déjà utilisée !" #: .\cookbook\forms.py:377 msgid "" "An email address is not required but if present the invite link will be sent " "to the user." msgstr "" -"Une adresse mail n'est pas requise mais si elle présente, le lien " -"d'invitation sera envoyé à l'utilisateur." +"Une adresse mail n’est pas requise mais si elle est renseignée, le lien d’" +"invitation sera envoyé à l’utilisateur." #: .\cookbook\forms.py:392 msgid "Name already taken." -msgstr "Nom déjà pris." +msgstr "Nom déjà utilisé." #: .\cookbook\forms.py:403 msgid "Accept Terms and Privacy" -msgstr "Accepter les conditions d'utilisation" +msgstr "Accepter les conditions d’utilisation" #: .\cookbook\forms.py:435 msgid "" "Determines how fuzzy a search is if it uses trigram similarity matching (e." "g. low values mean more typos are ignored)." msgstr "" -"Détermine le degré de flou d'une recherche si elle utilise la correspondance " +"Détermine le degré de flou d’une recherche si elle utilise la correspondance " "par similarité de trigrammes (par exemple, des valeurs faibles signifient " "que davantage de fautes de frappe sont ignorées)." @@ -318,14 +316,14 @@ msgid "" "importing recipes." 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." +"ingrédients lors de l’édition et de l’importation de recettes." #: .\cookbook\forms.py:448 msgid "" "Fields to search ignoring accents. Selecting this option can improve or " "degrade search quality depending on language" msgstr "" -"Champs à rechercher en ignorant les accents. La sélection de cette option " +"Champs à rechercher en ignorant les accents. La sélection de cette option " "peut améliorer ou dégrader la qualité de la recherche en fonction de la " "langue." @@ -335,7 +333,7 @@ msgid "" "'pie' and 'piece' and 'soapie')" msgstr "" "Champs à rechercher pour les correspondances partielles. (par exemple, la " -"recherche de \"Tarte\" renverra \"tarte\", \"tartelette\" et \"tartes\")" +"recherche de « Tarte » renverra « tarte », « tartelette » et « tartes »)" #: .\cookbook\forms.py:452 msgid "" @@ -343,25 +341,25 @@ msgid "" "will return 'salad' and 'sandwich')" msgstr "" "Champs permettant de rechercher les correspondances de début de mot (par " -"exemple, si vous recherchez \"sa\", vous obtiendrez \"salade\" et \"sandwich" -"\")." +"exemple, si vous recherchez « sa », vous obtiendrez « salade » et « " +"sandwich»)." #: .\cookbook\forms.py:454 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 "" -"Champs pour la recherche \"floue\" (par exemple, si vous recherchez \"rectte" -"\", vous trouverez \"recette\".) Remarque : cette option est incompatible " -"avec les méthodes de recherche \"web\" et \"brute\"." +"Champs pour la recherche « floue » (par exemple, si vous recherchez « rectte»" +", vous trouverez « recette ».) Remarque : cette option est incompatible avec " +"les méthodes de recherche « web » et « brute »." #: .\cookbook\forms.py:456 msgid "" "Fields to full text search. Note: 'web', 'phrase', and 'raw' search methods " "only function with fulltext fields." msgstr "" -"Champs de recherche en texte intégral. Remarque : les méthodes de recherche " -"\"web\", \"phrase\" et \"raw\" ne fonctionnent qu'avec des champs en texte " +"Champs de recherche en texte intégral. Remarque : les méthodes de recherche «" +" web », « phrase » et « brute » ne fonctionnent qu’avec des champs en texte " "intégral." #: .\cookbook\forms.py:460 @@ -390,25 +388,32 @@ msgstr "Recherche floue" #: .\cookbook\forms.py:466 msgid "Full Text" -msgstr "Plein texte" +msgstr "Texte intégral" #: .\cookbook\forms.py:491 msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." msgstr "" +"Les utilisateurs verront tous les éléments que vous ajoutez à votre liste de " +"courses. Ils doivent vous ajouter pour que vous puissiez voir les éléments " +"de leur liste." #: .\cookbook\forms.py:497 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." 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:498 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." 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:499 msgid "Default number of hours to delay a shopping list entry." @@ -427,6 +432,7 @@ msgstr "" #: .\cookbook\forms.py:502 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:503 msgid "Delimiter to use for CSV exports." @@ -434,7 +440,7 @@ msgstr "Caractère de séparation à utiliser pour les exportations CSV." #: .\cookbook\forms.py:504 msgid "Prefix to add when copying list to the clipboard." -msgstr "Préfixe à utiliser pour copier la liste dans le presse-papiers." +msgstr "Préfixe à ajouter lors de la copie de la liste dans le presse-papiers." #: .\cookbook\forms.py:508 msgid "Share Shopping List" @@ -442,7 +448,7 @@ msgstr "Partager la liste de courses" #: .\cookbook\forms.py:509 msgid "Autosync" -msgstr "" +msgstr "Synchronisation automatique" #: .\cookbook\forms.py:510 msgid "Auto Add Meal Plan" @@ -450,11 +456,11 @@ msgstr "Ajouter le menu de la semaine automatiquement" #: .\cookbook\forms.py:511 msgid "Exclude On Hand" -msgstr "" +msgstr "Exclure ingrédients disponibles" #: .\cookbook\forms.py:512 msgid "Include Related" -msgstr "" +msgstr "Inclure recettes connexes" #: .\cookbook\forms.py:513 msgid "Default Delay Hours" @@ -468,7 +474,7 @@ msgstr "Sélectionner un supermarché" #: .\cookbook\forms.py:515 msgid "Recent Days" -msgstr "" +msgstr "Jours récents" #: .\cookbook\forms.py:516 msgid "CSV Delimiter" @@ -480,7 +486,7 @@ msgstr "Préfixe de la liste" #: .\cookbook\forms.py:518 msgid "Auto On Hand" -msgstr "" +msgstr "Disponible automatique" #: .\cookbook\forms.py:528 msgid "Reset Food Inheritance" @@ -488,7 +494,7 @@ msgstr "" #: .\cookbook\forms.py:529 msgid "Reset all food to inherit the fields configured." -msgstr "" +msgstr "Réinitialiser tous les aliments pour hériter les champs configurés." #: .\cookbook\forms.py:541 #, fuzzy @@ -497,23 +503,22 @@ msgid "Fields on food that should be inherited by default." msgstr "Aliment qui devrait être remplacé." #: .\cookbook\forms.py:542 -#, fuzzy -#| msgid "Show recently viewed recipes on search page." msgid "Show recipe counts on search filters" -msgstr "Afficher les recettes récemment consultées sur la page de recherche." +msgstr "" +"Afficher le nombre de consultations par recette sur les filtres de recherche" #: .\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 "" -"Pour éviter les spam, l'email demandé n'a pas été envoyé. Attendez quelques " -"minutes et réessayez." +"Pour éviter les courriers indésirables, l’email demandé n’a pas été envoyé. " +"Veuillez patienter quelques minutes et réessayer." #: .\cookbook\helper\permission_helper.py:136 #: .\cookbook\helper\permission_helper.py:159 .\cookbook\views\views.py:148 msgid "You are not logged in and therefore cannot view this page!" -msgstr "Vous n'êtes pas connecté et ne pouvez donc pas afficher cette page !" +msgstr "Vous n’êtes pas connecté(e) et ne pouvez donc pas afficher cette page !" #: .\cookbook\helper\permission_helper.py:140 #: .\cookbook\helper\permission_helper.py:146 @@ -525,7 +530,7 @@ msgstr "Vous n'êtes pas connecté et ne pouvez donc pas afficher cette page !" #: .\cookbook\views\views.py:159 .\cookbook\views\views.py:166 #: .\cookbook\views\views.py:232 msgid "You do not have the required permissions to view this page!" -msgstr "Vous n'avez pas les droits suffisants pour afficher cette page !" +msgstr "Vous ne disposez pas de droits suffisants pour afficher cette page !" #: .\cookbook\helper\permission_helper.py:164 #: .\cookbook\helper\permission_helper.py:187 @@ -533,46 +538,44 @@ msgstr "Vous n'avez pas les droits suffisants pour afficher cette page !" msgid "You cannot interact with this object as it is not owned by you!" msgstr "" "Vous ne pouvez pas interagir avec cet objet car il appartient à un autre " -"utilisateur !" +"utilisateur !" #: .\cookbook\helper\recipe_search.py:473 msgid "One of queryset or hash_key must be provided" msgstr "" #: .\cookbook\helper\shopping_helper.py:54 -#, fuzzy -#| msgid "You must provide at least a recipe or a title." msgid "You must supply a recipe or mealplan" -msgstr "Vous devez au moins fournir une recette ou un titre." +msgstr "Vous devez fournir une recette ou un menu de la semaine" #: .\cookbook\helper\shopping_helper.py:58 msgid "You must supply a created_by" -msgstr "" +msgstr "Vous devez fournir une information créé_par" #: .\cookbook\helper\template_helper.py:61 #: .\cookbook\helper\template_helper.py:63 msgid "Could not parse template code." -msgstr "Le code du modèle n'a pas pu être analysé." +msgstr "Impossible d’analyser le code du modèle." #: .\cookbook\integration\integration.py:200 msgid "" "Importer expected a .zip file. Did you choose the correct importer type for " "your data ?" msgstr "" -"Un fichier .zip était attendu à l'importation. Avez-vous choisi le bon " -"format pour vos données ?" +"Un fichier .zip était attendu à l’importation. Avez-vous choisi le bon " +"format pour vos données ?" #: .\cookbook\integration\integration.py:203 msgid "" "An unexpected error occurred during the import. Please make sure you have " "uploaded a valid file." msgstr "" -"Une erreur imprévue est survenue durant l'importation. Vérifiez que vous " -"avez téléverser un fichier valide." +"Une erreur imprévue est survenue durant l’importation. Vérifiez que vous " +"avez téléversé un fichier valide." #: .\cookbook\integration\integration.py:208 msgid "The following recipes were ignored because they already existed:" -msgstr "Les recettes suivantes ont été ignorées car elles existaient déjà :" +msgstr "Les recettes suivantes ont été ignorées car elles existaient déjà :" #: .\cookbook\integration\integration.py:212 #, python-format @@ -600,7 +603,7 @@ msgstr "Portions" #: .\cookbook\integration\saffron.py:25 msgid "Waiting time" -msgstr "Temps d'attente" +msgstr "Temps d’attente" #: .\cookbook\integration\saffron.py:27 msgid "Preparation Time" @@ -618,7 +621,7 @@ msgstr "Rubrique" #: .\cookbook\management\commands\rebuildindex.py:14 msgid "Rebuilds full text search index on Recipe" -msgstr "Reconstruction de l'index de recherche plein texte de Tandoor" +msgstr "Reconstruction de l’index de recherche en texte intégral de Tandoor" #: .\cookbook\management\commands\rebuildindex.py:18 msgid "Only Postgress databases use full text search, no index to rebuild" @@ -628,15 +631,15 @@ msgstr "" #: .\cookbook\management\commands\rebuildindex.py:29 msgid "Recipe index rebuild complete." -msgstr "La reconstruction de l'index des recettes est terminée." +msgstr "La reconstruction de l’index des recettes est terminée." #: .\cookbook\management\commands\rebuildindex.py:31 msgid "Recipe index rebuild failed." -msgstr "La reconstruction de l'index des recettes a échoué." +msgstr "La reconstruction de l’index des recettes a échoué." #: .\cookbook\migrations\0047_auto_20200602_1133.py:14 msgid "Breakfast" -msgstr "Petit-déjeuner" +msgstr "Petit déjeuner" #: .\cookbook\migrations\0047_auto_20200602_1133.py:19 msgid "Lunch" @@ -689,7 +692,7 @@ msgstr "Nouveau" #: .\cookbook\models.py:512 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é" +msgstr " fait partie d’une étape de la recette et ne peut être supprimé(e)" #: .\cookbook\models.py:586 .\cookbook\templates\url_import.html:44 msgid "Text" @@ -728,15 +731,15 @@ msgstr "Brut" #: .\cookbook\models.py:1082 msgid "Food Alias" -msgstr "Ingrédient équivalent" +msgstr "Aliment équivalent" #: .\cookbook\models.py:1082 msgid "Unit Alias" -msgstr "Unité" +msgstr "Unité équivalente" #: .\cookbook\models.py:1082 msgid "Keyword Alias" -msgstr "Alias de mot-clé" +msgstr "Mot-clé équivalent" #: .\cookbook\serializer.py:175 msgid "A user is required" @@ -744,7 +747,7 @@ msgstr "Un utilisateur est requis" #: .\cookbook\serializer.py:195 msgid "File uploads are not enabled for this Space." -msgstr "Le téléversement de fichiers n'est pas autorisé pour ce groupe." +msgstr "Le téléversement de fichiers n’est pas autorisé pour ce groupe." #: .\cookbook\serializer.py:206 msgid "You have reached your file upload limit." @@ -767,11 +770,11 @@ msgstr "" #: .\cookbook\serializer.py:973 msgid "Amount of food to add to the shopping list" -msgstr "" +msgstr "Quantité d’aliments à ajouter à la liste de courses" #: .\cookbook\serializer.py:974 msgid "ID of unit to use for the shopping list" -msgstr "" +msgstr "ID de l’unité à utiliser pour la liste de courses" #: .\cookbook\serializer.py:975 msgid "When set to true will delete all food from active shopping lists." @@ -799,11 +802,11 @@ msgstr "Erreur 404" #: .\cookbook\templates\404.html:18 msgid "The page you are looking for could not be found." -msgstr "La page que vous recherchez n'a pas été trouvée." +msgstr "La page que vous recherchez est introuvable." #: .\cookbook\templates\404.html:33 msgid "Take me Home" -msgstr "Page d'accueil" +msgstr "Page d’accueil" #: .\cookbook\templates\404.html:35 msgid "Report a Bug" @@ -829,7 +832,7 @@ msgstr "Adresse mail" #: .\cookbook\templates\account\email.html:19 msgid "The following e-mail addresses are associated with your account:" -msgstr "Les adresses mail suivantes sont associées à votre compte :" +msgstr "Les adresses mail suivantes sont associées à votre compte :" #: .\cookbook\templates\account\email.html:36 msgid "Verified" @@ -859,14 +862,14 @@ msgstr "Supprimer" #: .\cookbook\templates\account\email.html:58 msgid "Warning:" -msgstr "Avertissement :" +msgstr "Avertissement :" #: .\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 "" -"Vous n'avez pas encore d'adresse mail associée. Vous devriez en ajouter une " +"Vous n’avez pas encore d’adresse mail associée. Vous devriez en ajouter une " "afin de recevoir les notifications, réinitialiser votre mot de passe, etc." #: .\cookbook\templates\account\email.html:64 @@ -879,12 +882,12 @@ msgstr "Ajouter une adresse mail" #: .\cookbook\templates\account\email.html:79 msgid "Do you really want to remove the selected e-mail address?" -msgstr "Voulez-vous vraiment supprimer l'adresse mail sélectionnée ?" +msgstr "Voulez-vous vraiment supprimer l’adresse mail sélectionnée ?" #: .\cookbook\templates\account\email_confirm.html:6 #: .\cookbook\templates\account\email_confirm.html:10 msgid "Confirm E-mail Address" -msgstr "Confirmer l'adresse mail" +msgstr "Confirmer l’adresse mail" #: .\cookbook\templates\account\email_confirm.html:16 #, python-format @@ -895,8 +898,8 @@ msgid "" " ." msgstr "" "Confirmez SVP que\n" -" est une adresse mail de " -"l'utilisateur %(user_display)s." +" est une adresse mail de l’" +"utilisateur %(user_display)s." #: .\cookbook\templates\account\email_confirm.html:22 #: .\cookbook\templates\generic\delete_template.html:71 @@ -929,7 +932,7 @@ msgstr "Connexion" #: .\cookbook\templates\socialaccount\signup.html:8 #: .\cookbook\templates\socialaccount\signup.html:57 msgid "Sign Up" -msgstr "S'inscrire" +msgstr "S’inscrire" #: .\cookbook\templates\account\login.html:39 #: .\cookbook\templates\account\login.html:41 @@ -939,7 +942,7 @@ msgstr "Réinitialiser le mot de passe" #: .\cookbook\templates\account\login.html:40 msgid "Lost your password?" -msgstr "Mot de passe perdu ?" +msgstr "Mot de passe perdu ?" #: .\cookbook\templates\account\login.html:52 msgid "Social Login" @@ -957,7 +960,7 @@ msgstr "Déconnexion" #: .\cookbook\templates\account\logout.html:11 msgid "Are you sure you want to sign out?" -msgstr "Êtes-vous sûr de vouloir vous déconnecter ?" +msgstr "Êtes-vous sûr(e) de vouloir vous déconnecter ?" #: .\cookbook\templates\account\password_change.html:6 #: .\cookbook\templates\account\password_change.html:16 @@ -977,7 +980,7 @@ msgstr "Mot de passe" #: .\cookbook\templates\account\password_change.html:22 msgid "Forgot Password?" -msgstr "Mot de passe oublié ?" +msgstr "Mot de passe oublié ?" #: .\cookbook\templates\account\password_reset.html:7 #: .\cookbook\templates\account\password_reset.html:13 @@ -991,8 +994,8 @@ msgid "" "Forgotten your password? Enter your e-mail address below, and we'll send you " "an e-mail allowing you to reset it." msgstr "" -"Mot de passe oublié ? Entrez votre adresse mail ci-dessous et vous recevrez " -"un mail permettant de le réinitialiser." +"Mot de passe oublié ? Saisissez votre adresse mail ci-dessous et vous " +"recevrez un mail permettant de le réinitialiser." #: .\cookbook\templates\account\password_reset.html:32 msgid "Password reset is disabled on this instance." @@ -1019,10 +1022,10 @@ msgid "" " Please request a new " "password reset." msgstr "" -"Le lien de changement du mot de passe est invalide, probablement parce qu'il " +"Le lien de changement du mot de passe est invalide, 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" @@ -1031,17 +1034,17 @@ msgstr "modifier le mot de passe" #: .\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 "Votre mot de passe a été changé." +msgstr "Votre mot de passe a été modifié." #: .\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 "Ajouter un mot de passe" +msgstr "Définir un mot de passe" #: .\cookbook\templates\account\signup.html:6 msgid "Register" -msgstr "S'inscrire" +msgstr "S’inscrire" #: .\cookbook\templates\account\signup.html:12 msgid "Create an Account" @@ -1050,12 +1053,12 @@ msgstr "Créer un compte" #: .\cookbook\templates\account\signup.html:42 #: .\cookbook\templates\socialaccount\signup.html:33 msgid "I accept the follwoing" -msgstr "J'accepte les" +msgstr "J’accepte les" #: .\cookbook\templates\account\signup.html:45 #: .\cookbook\templates\socialaccount\signup.html:36 msgid "Terms and Conditions" -msgstr "conditions d'utilisations" +msgstr "conditions d’utilisation" #: .\cookbook\templates\account\signup.html:48 #: .\cookbook\templates\socialaccount\signup.html:39 @@ -1073,7 +1076,7 @@ msgstr "Créer un utilisateur" #: .\cookbook\templates\account\signup.html:69 msgid "Already have an account?" -msgstr "Vous avez déjà un compte ?" +msgstr "Vous avez déjà un compte ?" #: .\cookbook\templates\account\signup_closed.html:5 #: .\cookbook\templates\account\signup_closed.html:11 @@ -1116,7 +1119,7 @@ msgstr "Supermarché" #: .\cookbook\templates\base.html:163 msgid "Supermarket Category" -msgstr "Catégorie Supermarché" +msgstr "Catégorie de supermarché" #: .\cookbook\templates\base.html:175 .\cookbook\views\lists.py:180 msgid "Automations" @@ -1128,7 +1131,7 @@ msgstr "Fichiers" #: .\cookbook\templates\base.html:201 msgid "Batch Edit" -msgstr "Modification en masse" +msgstr "Édition par lot" #: .\cookbook\templates\base.html:213 .\cookbook\templates\history.html:6 #: .\cookbook\templates\history.html:14 @@ -1193,11 +1196,11 @@ msgstr "Déconnexion" #: .\cookbook\templates\batch\edit.html:6 msgid "Batch edit Category" -msgstr "Modifier en masse les catégories" +msgstr "Édition par lot des catégories" #: .\cookbook\templates\batch\edit.html:15 msgid "Batch edit Recipes" -msgstr "Modifier en masse les recettes" +msgstr "Édition par lot des recettes" #: .\cookbook\templates\batch\edit.html:20 msgid "Add the specified keywords to all recipes containing a word" @@ -1243,11 +1246,11 @@ msgstr "Gérer le stockage externe" #: .\cookbook\templates\batch\monitor.html:28 msgid "Sync Now!" -msgstr "Lancer la synchro !" +msgstr "Lancer la synchro !" #: .\cookbook\templates\batch\monitor.html:29 msgid "Show Recipes" -msgstr "Recettes dans le panier" +msgstr "Afficher les recettes" #: .\cookbook\templates\batch\monitor.html:30 msgid "Show Log" @@ -1256,7 +1259,7 @@ msgstr "Afficher le journal" #: .\cookbook\templates\batch\waiting.html:4 #: .\cookbook\templates\batch\waiting.html:10 msgid "Importing Recipes" -msgstr "Importer des ecettes" +msgstr "Importer des recettes" #: .\cookbook\templates\batch\waiting.html:28 msgid "" @@ -1272,7 +1275,7 @@ msgstr "Livres de recettes" #: .\cookbook\templates\export.html:6 .\cookbook\templates\test2.html:6 msgid "Export Recipes" -msgstr "Exporter des ecettes" +msgstr "Exporter des recettes" #: .\cookbook\templates\forms\edit_import_recipe.html:5 #: .\cookbook\templates\forms\edit_import_recipe.html:9 @@ -1306,7 +1309,7 @@ msgstr "" #: .\cookbook\templates\forms\ingredients.html:26 msgid "Are you sure that you want to merge these two units?" -msgstr "Êtes-vous sûr(e) de vouloir fusionner ces deux unités ?" +msgstr "Êtes-vous sûr(e) de vouloir fusionner ces deux unités ?" #: .\cookbook\templates\forms\ingredients.html:31 #: .\cookbook\templates\forms\ingredients.html:40 @@ -1315,12 +1318,12 @@ msgstr "Fusionner" #: .\cookbook\templates\forms\ingredients.html:36 msgid "Are you sure that you want to merge these two ingredients?" -msgstr "Êtes-vous sûr(e) de vouloir fusionner ces deux ingrédients ?" +msgstr "Êtes-vous sûr(e) de vouloir fusionner ces deux ingrédients ?" #: .\cookbook\templates\generic\delete_template.html:21 #, python-format msgid "Are you sure you want to delete the %(title)s: %(object)s " -msgstr "Êtes-vous certain de vouloir supprimer %(title)s : %(object)s " +msgstr "Êtes-vous sûr(e) de vouloir supprimer %(title)s : %(object)s " #: .\cookbook\templates\generic\delete_template.html:26 msgid "Protected" @@ -1372,7 +1375,7 @@ msgstr "suivant" #: .\cookbook\templates\history.html:20 msgid "View Log" -msgstr "Voir l'historique" +msgstr "Voir l’historique" #: .\cookbook\templates\history.html:24 msgid "Cook Log" @@ -1446,7 +1449,7 @@ msgstr "Rechercher une recette..." #: .\cookbook\templates\index.html:44 msgid "New Recipe" -msgstr "Nouvelle ecette" +msgstr "Nouvelle recette" #: .\cookbook\templates\index.html:53 msgid "Advanced Search" @@ -1514,7 +1517,7 @@ msgstr "Mise en forme" #: .\cookbook\templates\markdown_info.html:72 msgid "Line breaks are inserted by adding two spaces after the end of a line" msgstr "" -"Les sauts de ligne s'insèrent en ajoutant deux espaces après la fin d'une " +"Vous insérez des sauts de ligne en ajoutant deux espaces après la fin d’une " "ligne" #: .\cookbook\templates\markdown_info.html:57 @@ -1535,7 +1538,7 @@ msgstr "Ce texte est en italique" #: .\cookbook\templates\markdown_info.html:61 #: .\cookbook\templates\markdown_info.html:77 msgid "Blockquotes are also possible" -msgstr "On peut également faire des blocs de citation" +msgstr "Les citations groupées sont également possibles" #: .\cookbook\templates\markdown_info.html:84 msgid "Lists" @@ -1547,7 +1550,7 @@ msgid "" "before the list!" msgstr "" "Les listes peuvent être ordonnées ou non. Il est important de laisser une " -"ligne vide avant la liste !" +"ligne vide avant la liste !" #: .\cookbook\templates\markdown_info.html:87 #: .\cookbook\templates\markdown_info.html:108 @@ -1561,7 +1564,7 @@ msgstr "Liste ordonnée" #: .\cookbook\templates\markdown_info.html:111 #: .\cookbook\templates\markdown_info.html:112 msgid "unordered list item" -msgstr "élément d'une liste non ordonnée" +msgstr "élément d’une liste non ordonnée" #: .\cookbook\templates\markdown_info.html:93 #: .\cookbook\templates\markdown_info.html:114 @@ -1575,7 +1578,7 @@ msgstr "Liste non ordonnée" #: .\cookbook\templates\markdown_info.html:117 #: .\cookbook\templates\markdown_info.html:118 msgid "ordered list item" -msgstr "élément d'une liste ordonné" +msgstr "élément d’une liste ordonnée" #: .\cookbook\templates\markdown_info.html:125 msgid "Images & Links" @@ -1604,10 +1607,10 @@ msgid "" "editor like this one." msgstr "" -"Les tableaux Markdown sont difficiles à créer à la main. Il est recommandé " -"d'utiliser un éditeur de tableau comme celui-ci." -"" +"Les tableaux Markdown sont difficiles à créer à la main. Il est recommandé d’" +"utiliser un éditeur de tableau comme celui-" +"ci." #: .\cookbook\templates\markdown_info.html:155 #: .\cookbook\templates\markdown_info.html:157 @@ -1655,35 +1658,35 @@ msgstr "Autres repas ce jour" #: .\cookbook\templates\no_groups_info.html:5 #: .\cookbook\templates\no_groups_info.html:12 msgid "No Permissions" -msgstr "Pas d'autorisations" +msgstr "Pas d’autorisations" #: .\cookbook\templates\no_groups_info.html:17 msgid "You do not have any groups and therefor cannot use this application." msgstr "" -"Vous n'êtes pas lié à un groupe, ainsi, vous ne pouvez utiliser cette " +"Vous ne faites pas partie d’un groupe et ne pouvez donc pas utiliser cette " "application." #: .\cookbook\templates\no_groups_info.html:18 #: .\cookbook\templates\no_perm_info.html:15 msgid "Please contact your administrator." -msgstr "Veuillez contacter l'administrateur." +msgstr "Veuillez contacter l’administrateur." #: .\cookbook\templates\no_perm_info.html:5 #: .\cookbook\templates\no_perm_info.html:12 msgid "No Permission" -msgstr "Pas d'autorisation" +msgstr "Pas d’autorisation" #: .\cookbook\templates\no_perm_info.html:15 msgid "" "You do not have the required permissions to view this page or perform this " "action." msgstr "" -"Vous n'avez pas la permission de voir cette page ou d'effectuer cette action." +"Vous n’avez pas la permission de voir cette page ou d’effectuer cette action." #: .\cookbook\templates\no_space_info.html:6 #: .\cookbook\templates\no_space_info.html:13 msgid "No Space" -msgstr "Pas de groupe" +msgstr "Aucun groupe" #: .\cookbook\templates\no_space_info.html:17 msgid "" @@ -1691,7 +1694,7 @@ msgid "" "more people." msgstr "" "Recettes, aliments, listes de courses et plus encore sont organisés en " -"groupes d'une ou plusieurs personnes." +"groupes d’une ou plusieurs personnes." #: .\cookbook\templates\no_space_info.html:18 msgid "" @@ -1712,8 +1715,8 @@ msgid "" "To join an existing space either enter your invite token or click on the " "invite link the space owner send you." msgstr "" -"Pour rejoindre un groupe déjà existant, entrez le token d'invitation ou " -"cliquez sur le lien d'invitation que le créateur du groupe vous a envoyé." +"Pour rejoindre un groupe déjà existant, saisissez le jeton d’invitation ou " +"cliquez sur le lien d’invitation que le créateur du groupe vous a envoyé." #: .\cookbook\templates\no_space_info.html:48 #: .\cookbook\templates\no_space_info.html:56 @@ -1727,16 +1730,16 @@ msgstr "Créer votre propre groupe de partage de recettes." #: .\cookbook\templates\no_space_info.html:52 msgid "Start your own recipe space and invite other users to it." msgstr "" -"Créez votre propre groupe de partage de recettes et invitez d'autres " -"utilisateurs à l'utiliser." +"Créez votre propre groupe de partage de recettes et invitez d’autres " +"utilisateurs à l’utiliser." #: .\cookbook\templates\offline.html:6 msgid "Offline" -msgstr "Hors-ligne" +msgstr "Hors ligne" #: .\cookbook\templates\offline.html:19 msgid "You are currently offline!" -msgstr "Vous êtes actuellement hors-ligne !" +msgstr "Vous êtes actuellement hors ligne !" #: .\cookbook\templates\offline.html:20 msgid "" @@ -1744,8 +1747,8 @@ msgid "" "recently viewed them. Keep in mind that data might be outdated." msgstr "" "Les recettes listées ci-dessous sont accessible hors connexion car vous les " -"avez récemment regardées. Gardez à l'esprit que les données peuvent avoir " -"été modifiées depuis." +"avez récemment regardées. Veuillez tenir compte du fait que les données " +"peuvent avoir été modifiées depuis." #: .\cookbook\templates\recipe_view.html:26 msgid "by" @@ -1782,7 +1785,7 @@ msgstr "Marquer comme cuisiné" #: .\cookbook\templates\rest_framework\api.html:5 msgid "Recipe Home" -msgstr "Page d'accueil" +msgstr "Page d’accueil" #: .\cookbook\templates\search_info.html:5 #: .\cookbook\templates\search_info.html:9 @@ -2068,7 +2071,7 @@ msgstr "Préférences" #: .\cookbook\templates\settings.html:42 msgid "API-Settings" -msgstr "Paramètres d'API" +msgstr "Paramètres d’API" #: .\cookbook\templates\settings.html:49 msgid "Search-Settings" @@ -2114,16 +2117,16 @@ msgid "" "You can use both basic authentication and token based authentication to " "access the REST API." msgstr "" -"Vous pouvez utiliser à la fois l'authentification classique et " -"l'authentification par jeton pour accéder à l'API REST." +"Vous pouvez utiliser à la fois l’authentification classique et l’" +"authentification par jeton pour accéder à l’API REST." #: .\cookbook\templates\settings.html:160 msgid "" "Use the token as an Authorization header prefixed by the word token as shown " "in the following examples:" msgstr "" -"Utilisez le jeton dans l'entête d'autorisation préfixé par le mot \"token\" " -"comme indiqué dans les exemples suivants :" +"Utilisez le jeton dans l’en-tête d’autorisation précédé du mot « token » " +"comme indiqué dans les exemples suivants :" #: .\cookbook\templates\settings.html:162 msgid "or" @@ -2142,8 +2145,8 @@ 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 "" -"En général, vous n'avez pas besoin de configurer l'un d'entre eux et " -"pouvez simplement vous en tenir à la valeur par défaut ou à l'un des " +"En général, vous n’avez pas besoin de configurer l’un d’entre eux et " +"pouvez simplement vous en tenir à la valeur par défaut ou à l’un des " "préréglages suivants." #: .\cookbook\templates\settings.html:175 @@ -2166,11 +2169,11 @@ msgid "" msgstr "" "Trouvez ce dont vous avez besoin même si votre recherche ou la recette " "contient des fautes de frappe. Il se peut que vous obteniez plus de " -"résultats que nécessaire pour être sûr de trouver ce que vous cherchez." +"résultats que nécessaire pour être sûr(e) de trouver ce que vous cherchez." #: .\cookbook\templates\settings.html:182 msgid "This is the default behavior" -msgstr "C'est le comportement par défaut" +msgstr "Il s’agit du comportement par défaut" #: .\cookbook\templates\settings.html:183 #: .\cookbook\templates\settings.html:191 @@ -2187,7 +2190,7 @@ msgid "" "many spelling mistakes are made." msgstr "" "Permet un contrôle fin des résultats de la recherche mais peut ne pas donner " -"de résultats si trop de fautes d'orthographe sont commises." +"de résultats si le texte saisi contient trop de fautes d’orthographe." #: .\cookbook\templates\settings.html:190 msgid "Perfect for large Databases" @@ -2211,7 +2214,7 @@ msgstr "Paramètres" msgid "" "To start using this application you must first create a superuser account." msgstr "" -"Pour commencer à utiliser cette application, vous devez d'abord créer un " +"Pour commencer à utiliser cette application, vous devez d’abord créer un " "compte superutilisateur." #: .\cookbook\templates\setup.html:20 @@ -2234,11 +2237,11 @@ msgstr "Recettes dans le panier" #: .\cookbook\templates\shopping_list.html:74 msgid "No recipes selected" -msgstr "Pas de recettes sélectionnées" +msgstr "Aucune recette sélectionnée" #: .\cookbook\templates\shopping_list.html:131 msgid "Entry Mode" -msgstr "Mode d'ajout" +msgstr "Mode d’ajout" #: .\cookbook\templates\shopping_list.html:139 msgid "Add Entry" @@ -2250,7 +2253,7 @@ msgstr "Quantité" #: .\cookbook\templates\shopping_list.html:164 msgid "Select Unit" -msgstr "Sélectionnez l'unité" +msgstr "Sélectionnez l’unité" #: .\cookbook\templates\shopping_list.html:166 #: .\cookbook\templates\shopping_list.html:189 @@ -2263,7 +2266,7 @@ msgstr "Sélectionner" #: .\cookbook\templates\shopping_list.html:187 msgid "Select Food" -msgstr "Sélectionnez l'aliment" +msgstr "Sélectionner l’aliment" #: .\cookbook\templates\shopping_list.html:218 msgid "Select Supermarket" @@ -2279,7 +2282,7 @@ msgstr "Terminé" #: .\cookbook\templates\shopping_list.html:267 msgid "You are offline, shopping list might not syncronize." -msgstr "Vous êtes hors-ligne, la liste de courses n'est pas synchronisée." +msgstr "Vous êtes hors ligne, la liste de courses n’est pas synchronisée." #: .\cookbook\templates\shopping_list.html:318 msgid "Copy/Export" @@ -2296,13 +2299,13 @@ msgid "" " accounts:" msgstr "" "Vous pouvez vous connecter à votre compte en utilisant un des \n" -" comptes tiers suivants :" +" comptes tiers suivants :" #: .\cookbook\templates\socialaccount\connections.html:52 msgid "" "You currently have no social network accounts connected to this account." msgstr "" -"Vous n'avez actuellement aucun compte de réseaux sociaux connecté à votre " +"Vous n’avez actuellement aucun compte de réseaux sociaux connecté à votre " "compte." #: .\cookbook\templates\socialaccount\connections.html:55 @@ -2311,7 +2314,7 @@ msgstr "Ajouter un compte tiers" #: .\cookbook\templates\socialaccount\signup.html:5 msgid "Signup" -msgstr "S'inscrire" +msgstr "S’inscrire" #: .\cookbook\templates\socialaccount\signup.html:10 #, python-format @@ -2320,10 +2323,10 @@ msgid "" " %(provider_name)s account to login to\n" " %(site_name)s. As a final step, please complete the following form:" msgstr "" -"Vous êtes sur le point d'utiliser\n" +"Vous êtes sur le point d’utiliser\n" " votre compte %(provider_name)s pour vous connecter à\n" " %(site_name)s. Pour finaliser la requête, veuillez compléter le " -"formulaire suivant :" +"formulaire suivant :" #: .\cookbook\templates\socialaccount\snippets\provider_list.html:23 #: .\cookbook\templates\socialaccount\snippets\provider_list.html:31 @@ -2344,15 +2347,15 @@ msgstr "Se connecter avec" #: .\cookbook\templates\space.html:25 msgid "Space:" -msgstr "Groupe :" +msgstr "Groupe :" #: .\cookbook\templates\space.html:26 msgid "Manage Subscription" -msgstr "Gérer l'abonnement" +msgstr "Gérer l’abonnement" #: .\cookbook\templates\space.html:34 .\cookbook\templates\stats.html:19 msgid "Number of objects" -msgstr "Nombre d'objets" +msgstr "Nombre d’objets" #: .\cookbook\templates\space.html:54 .\cookbook\templates\stats.html:30 msgid "Recipe Imports" @@ -2360,7 +2363,7 @@ msgstr "Recettes importées" #: .\cookbook\templates\space.html:62 .\cookbook\templates\stats.html:38 msgid "Objects stats" -msgstr "Stats d'objets" +msgstr "Statistiques d’objets" #: .\cookbook\templates\space.html:65 .\cookbook\templates\stats.html:41 msgid "Recipes without Keywords" @@ -2412,12 +2415,12 @@ msgstr "Vous ne pouvez pas modifier cela vous-même." #: .\cookbook\templates\space.html:136 msgid "There are no members in your space yet!" -msgstr "Il n'y a pas encore de membres dans votre groupe !" +msgstr "Votre groupe ne contient pas encore de membres !" #: .\cookbook\templates\space.html:143 .\cookbook\templates\system.html:21 #: .\cookbook\views\lists.py:85 msgid "Invite Links" -msgstr "Liens d'invitation" +msgstr "Liens d’invitation" #: .\cookbook\templates\stats.html:4 msgid "Stats" @@ -2486,7 +2489,7 @@ msgstr "" #: .\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 "Tout est en ordre !" +msgstr "Tout est en ordre !" #: .\cookbook\templates\system.html:62 msgid "Secret Key" @@ -2563,12 +2566,11 @@ msgstr "Import URL" #: .\cookbook\templates\url_import.html:33 msgid "Drag me to your bookmarks to import recipes from anywhere" -msgstr "" -"Glissez-moi vers vos favoris pour importer des recettes de n'importe où" +msgstr "Glissez-moi vers vos favoris pour importer des recettes de n’importe où" #: .\cookbook\templates\url_import.html:34 msgid "Bookmark Me!" -msgstr "Mettez-moi en favori !" +msgstr "Ajoutez-moi aux favoris !" #: .\cookbook\templates\url_import.html:38 msgid "URL" @@ -2580,7 +2582,7 @@ msgstr "App" #: .\cookbook\templates\url_import.html:64 msgid "Enter website URL" -msgstr "Saisissez l'URL du site web" +msgstr "Saisissez l’URL du site web" #: .\cookbook\templates\url_import.html:104 msgid "Select recipe files to import or drop them here..." @@ -2666,7 +2668,7 @@ msgid "" "Drag recipe attributes from below into the appropriate box on the left. " "Click any node to display its full properties." msgstr "" -"Glissez les attributs de recettes d'en-dessous vers la boîte appropriée à " +"Glissez les attributs de recettes d’en dessous vers la boîte appropriée à " "gauche. Cliquez sur un nœud pour voir toutes ses propriétés." #: .\cookbook\templates\url_import.html:351 @@ -2687,7 +2689,7 @@ msgstr "Supprimer le texte" #: .\cookbook\templates\url_import.html:420 msgid "Delete image" -msgstr "Supprimer l'image" +msgstr "Supprimer l’image" #: .\cookbook\templates\url_import.html:436 msgid "Recipe Name" @@ -2752,29 +2754,29 @@ msgstr "Ticket GitHub" #: .\cookbook\templates\url_import.html:655 msgid "Recipe Markup Specification" -msgstr "Spécification Recipe Markup" +msgstr "Spécification Markup de recette" #: .\cookbook\views\api.py:88 .\cookbook\views\api.py:170 msgid "Parameter updated_at incorrectly formatted" -msgstr "Le paramètre « update_at » n'est pas correctement formatté" +msgstr "Le paramètre « update_at » n'est pas correctement formaté" #: .\cookbook\views\api.py:190 .\cookbook\views\api.py:291 #, python-brace-format msgid "No {self.basename} with id {pk} exists" -msgstr "Il n'existe pas de {self.basename} avec l'identifiant {pk}" +msgstr "Il n’existe aucun(e) {self.basename} avec l’identifiant {pk}" #: .\cookbook\views\api.py:194 msgid "Cannot merge with the same object!" -msgstr "Un objet ne peut être fusionné avec lui-même !" +msgstr "Impossible de fusionner un objet avec lui-même !" #: .\cookbook\views\api.py:201 #, python-brace-format msgid "No {self.basename} with id {target} exists" -msgstr "Il n'existe pas de {self.basename} avec l'id {target}" +msgstr "Il n’existe aucun(e) {self.basename} avec l’id {target}" #: .\cookbook\views\api.py:206 msgid "Cannot merge with child object!" -msgstr "Impossible de fusionner avec l'objet enfant !" +msgstr "Impossible de fusionner avec l’objet enfant !" #: .\cookbook\views\api.py:239 #, python-brace-format @@ -2785,8 +2787,8 @@ msgstr "{source.name} a été fusionné avec succès avec {target.name}" #, python-brace-format msgid "An error occurred attempting to merge {source.name} with {target.name}" msgstr "" -"Une erreur s'est produite lors de la tentative de fusion de {source.name} " -"avec {target.name}" +"Une erreur est survenue lors de la tentative de fusion de {source.name} avec " +"{target.name}" #: .\cookbook\views\api.py:300 #, python-brace-format @@ -2795,16 +2797,16 @@ msgstr "{child.name} a été déplacé avec succès vers la racine." #: .\cookbook\views\api.py:303 .\cookbook\views\api.py:321 msgid "An error occurred attempting to move " -msgstr "Une erreur s'est produite en essayant de déplacer " +msgstr "Une erreur est survenue en essayant de déplacer " #: .\cookbook\views\api.py:306 msgid "Cannot move an object to itself!" -msgstr "Impossible de déplacer un objet vers lui-même !" +msgstr "Impossible de déplacer un objet vers lui-même !" #: .\cookbook\views\api.py:312 #, python-brace-format msgid "No {self.basename} with id {parent} exists" -msgstr "Il n'existe pas de {self.basename} avec l'id {parent}" +msgstr "Il n’existe aucun(e) {self.basename} avec l’id {parent}" #: .\cookbook\views\api.py:318 #, python-brace-format @@ -2814,12 +2816,12 @@ msgstr "{child.name} a été déplacé avec succès vers le parent {parent.name} #: .\cookbook\views\api.py:470 #, python-brace-format msgid "{obj.name} was removed from the shopping list." -msgstr "" +msgstr "{obj.name} a été supprimé(e) de la liste de courses." #: .\cookbook\views\api.py:475 .\cookbook\views\api.py:726 #, python-brace-format msgid "{obj.name} was added to the shopping list." -msgstr "" +msgstr "{obj.name} a été ajouté(e) à la liste de courses." #: .\cookbook\views\api.py:587 msgid "ID of recipe a step is part of. For multiple repeat parameter." @@ -2905,12 +2907,12 @@ msgstr "" #: .\cookbook\views\edit.py:129 .\cookbook\views\new.py:95 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 !" +"Cette fonctionnalité n’est pas encore disponible dans la version hébergée de " +"Tandoor !" #: .\cookbook\views\api.py:944 msgid "Sync successful!" -msgstr "Synchro réussie !" +msgstr "Synchro réussie !" #: .\cookbook\views\api.py:949 msgid "Error synchronizing with Storage" @@ -2926,19 +2928,19 @@ msgstr "Le site web a renvoyé des données malformées et ne peut être lu." #: .\cookbook\views\api.py:1050 msgid "The requested page could not be found." -msgstr "La page souhaitée n'a pas été trouvée." +msgstr "La page souhaitée est introuvable." #: .\cookbook\views\api.py:1068 msgid "" "The requested site does not provide any recognized data format to import the " "recipe from." msgstr "" -"Le site web est dans un format qui ne permet pas d'importer automatiquement " +"Le site web est dans un format qui ne permet pas d’importer automatiquement " "la recette." #: .\cookbook\views\api.py:1082 msgid "Connection Refused." -msgstr "" +msgstr "Connexion refusée." #: .\cookbook\views\api.py:1091 msgid "No useable data could be found." @@ -2946,7 +2948,7 @@ msgstr "Aucune information utilisable n'a été trouvée." #: .\cookbook\views\api.py:1107 msgid "I couldn't find anything to do." -msgstr "Je n'ai rien trouvé à faire." +msgstr "Je n’ai rien trouvé à faire." #: .\cookbook\views\data.py:34 .\cookbook\views\data.py:129 #: .\cookbook\views\edit.py:49 .\cookbook\views\import_export.py:80 @@ -2958,16 +2960,16 @@ msgstr "Vous avez atteint le nombre maximum de recettes pour votre groupe." #: .\cookbook\views\edit.py:53 .\cookbook\views\import_export.py:84 #: .\cookbook\views\new.py:37 msgid "You have more users than allowed in your space." -msgstr "Vous avez plus d'utilisateurs qu'autorisés dans votre groupe." +msgstr "" +"Le nombre d’utilisateurs dans votre groupe dépasse le nombre d’utilisateurs " +"autorisé." #: .\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] "" -"Modification en masse effectuée. %(count)d recette a été mise à jour." -msgstr[1] "" -"Modification en masse effectuée. %(count)drecettes ont été mises à jour." +msgstr[0] "Édition par lot effectuée. %(count)d recette a été mise à jour." +msgstr[1] "Édition par lot effectuée. %(count)d recettes ont été mises à jour." #: .\cookbook\views\delete.py:101 msgid "Monitor" @@ -2995,32 +2997,32 @@ msgstr "Favoris" #: .\cookbook\views\delete.py:192 .\cookbook\views\new.py:238 msgid "Invite Link" -msgstr "Lien d'invitation" +msgstr "Lien d’invitation" #: .\cookbook\views\edit.py:125 msgid "You cannot edit this storage!" -msgstr "Vous ne pouvez pas modifier ce stockage !" +msgstr "Vous ne pouvez pas modifier ce stockage !" #: .\cookbook\views\edit.py:149 msgid "Storage saved!" -msgstr "Stockage sauvegardé !" +msgstr "Stockage sauvegardé !" #: .\cookbook\views\edit.py:155 msgid "There was an error updating this storage backend!" msgstr "" -"Une erreur s'est produite lors de la mise à jour de cet espace de stockage !" +"Une erreur est survenue lors de la mise à jour de cet espace de stockage !" #: .\cookbook\views\edit.py:248 msgid "Changes saved!" -msgstr "Modifications sauvegardées !" +msgstr "Modifications sauvegardées !" #: .\cookbook\views\edit.py:252 msgid "Error saving changes!" -msgstr "Erreur lors de la sauvegarde des modifications !" +msgstr "Erreur lors de la sauvegarde des modifications !" #: .\cookbook\views\import_export.py:106 msgid "Importing is not implemented for this provider" -msgstr "L'importation n'est pas implémentée pour ce fournisseur" +msgstr "L’importation n’est pas implémentée pour ce fournisseur" #: .\cookbook\views\import_export.py:127 msgid "" @@ -3030,11 +3032,11 @@ msgstr "" #: .\cookbook\views\import_export.py:132 msgid "Exporting is not implemented for this provider" -msgstr "L'exportation n'est pas implémentée pour ce fournisseur" +msgstr "L’exportation n’est pas implémentée pour ce fournisseur" #: .\cookbook\views\lists.py:25 msgid "Import Log" -msgstr "Historique d'import" +msgstr "Historique d’importation" #: .\cookbook\views\lists.py:38 msgid "Discovery" @@ -3062,11 +3064,11 @@ msgstr "Nouvelle liste de courses" #: .\cookbook\views\new.py:126 msgid "Imported new recipe!" -msgstr "Nouvelle recette importée !" +msgstr "Nouvelle recette importée !" #: .\cookbook\views\new.py:129 msgid "There was an error importing this recipe!" -msgstr "Une erreur s\\\\'est produite lors de l\\\\'import de cette recette !" +msgstr "Une erreur est survenue lors de l’importation de cette recette !" #: .\cookbook\views\new.py:212 msgid "Hello" @@ -3082,24 +3084,24 @@ msgstr " pour rejoindre leur groupe Tandoor Recipes " #: .\cookbook\views\new.py:214 msgid "Click the following link to activate your account: " -msgstr "Cliquez le lien suivant pour activer votre compte : " +msgstr "Cliquez le lien suivant pour activer votre compte : " #: .\cookbook\views\new.py:215 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 manuellement pour " -"rejoindre le groupe : " +"Si le lien ne fonctionne pas, utilisez le code suivant pour rejoindre le " +"groupe manuellement : " #: .\cookbook\views\new.py:216 msgid "The invitation is valid until " -msgstr "L'invitation est valide jusqu'au " +msgstr "L’invitation est valide jusqu’au " #: .\cookbook\views\new.py:217 msgid "" "Tandoor Recipes is an Open Source recipe manager. Check it out on GitHub " msgstr "" -"Tandoor Recipes sont un gestionnaire de recettes open source. Venez-voir " +"Tandoor Recipes est un gestionnaire de recettes open source. Venez-voir " "notre Github " #: .\cookbook\views\new.py:220 @@ -3108,20 +3110,20 @@ msgstr "Invitation Tandoor Recipes" #: .\cookbook\views\new.py:227 msgid "Invite link successfully send to user." -msgstr "Le lien d'invitation a été correctement envoyé à l'utilisateur." +msgstr "Le lien d’invitation a été envoyé à l’utilisateur avec succès." #: .\cookbook\views\new.py:230 msgid "" "You have send to many emails, please share the link manually or wait a few " "hours." msgstr "" -"Vous avez envoyé trop de mails, partagez le lien manuellement ou attendez " +"Vous avez envoyé trop de mails, partagez le lien manuellement ou patientez " "quelques heures." #: .\cookbook\views\new.py:232 msgid "Email to user could not be send, please share link manually." msgstr "" -"Le mail n'a pas pu être envoyé à l'utilisateur, veuillez envoyer le lien " +"Impossible d’envoyer le mail à l’utilisateur, veuillez partager le lien " "manuellement." #: .\cookbook\views\views.py:126 @@ -3130,25 +3132,25 @@ msgid "" "recipes or invite other people to join you." msgstr "" "Vous avez réussi à créer votre propre groupe de partage de recettes. " -"Commencez à ajoutez des recettes ou invitez d'autres personnes à vous " +"Commencez à ajoutez des recettes ou invitez d’autres personnes à vous " "rejoindre." #: .\cookbook\views\views.py:174 msgid "You do not have the required permissions to perform this action!" -msgstr "Vous n'avez pas la permission d'effectuer cette action !" +msgstr "Vous n’êtes pas autorisé(e) à effectuer cette action !" #: .\cookbook\views\views.py:185 msgid "Comment saved!" -msgstr "Commentaire enregistré !" +msgstr "Commentaire sauvegardé !" #: .\cookbook\views\views.py:276 msgid "This feature is not available in the demo version!" -msgstr "Cette fonctionnalité n'est pas disponible dans la version d'essai !" +msgstr "Cette fonctionnalité n’est pas disponible dans la version d’essai !" #: .\cookbook\views\views.py:335 msgid "You must select at least one field to search!" msgstr "" -"Vous devez sélectionner au moins un champ pour effectuer une recherche !" +"Vous devez sélectionner au moins un champ pour effectuer une recherche !" #: .\cookbook\views\views.py:340 msgid "" @@ -3156,12 +3158,12 @@ msgid "" "field!" msgstr "" "Pour utiliser cette méthode de recherche, vous devez sélectionner au moins " -"un champ de recherche en texte intégral !" +"un champ de recherche en texte intégral !" #: .\cookbook\views\views.py:344 msgid "Fuzzy search is not compatible with this search method!" msgstr "" -"La recherche floue n'est pas compatible avec cette méthode de recherche !" +"La recherche floue n’est pas compatible avec cette méthode de recherche !" #: .\cookbook\views\views.py:470 msgid "" @@ -3169,27 +3171,27 @@ msgid "" "forgotten your superuser credentials please consult the django documentation " "on how to reset passwords." msgstr "" -"Cette page d'installation peut uniquement être utilisée pour créer le " -"premier utilisateur ! Si vous avez oublié vos identifiants de super-" +"Cette page d’installation peut uniquement être utilisée pour créer le " +"premier utilisateur ! Si vous avez oublié vos identifiants de super-" "utilisateur, counsultez la documentation Django pour savoir comment " "réinitialiser le mot de passe." #: .\cookbook\views\views.py:477 msgid "Passwords dont match!" -msgstr "Les mots de passe ne correspondent pas !" +msgstr "Les mots de passe ne correspondent pas !" #: .\cookbook\views\views.py:493 msgid "User has been created, please login!" -msgstr "L'utilisateur a été créé, veuillez vous connecter !" +msgstr "L’utilisateur a été créé, veuillez vous connecter !" #: .\cookbook\views\views.py:509 msgid "Malformed Invite Link supplied!" -msgstr "Le lien d'invitation fourni est mal formé !" +msgstr "Le lien d’invitation fourni est mal formé !" #: .\cookbook\views\views.py:516 msgid "You are already member of a space and therefore cannot join this one." msgstr "" -"Vous êtes déjà membre d'un groupe, ainsi, vous ne pouvez rejoindre celui-ci." +"Vous êtes déjà membre d’un groupe et ne pouvez donc pas rejoindre celui-ci." #: .\cookbook\views\views.py:527 msgid "Successfully joined space." @@ -3197,23 +3199,23 @@ msgstr "Vous avez bien rejoint le groupe." #: .\cookbook\views\views.py:533 msgid "Invite Link not valid or already used!" -msgstr "Le lien d'invitation est invalide ou déjà utilisé !" +msgstr "Le lien d’invitation est invalide ou déjà utilisé !" #: .\cookbook\views\views.py:614 msgid "" "Reporting share links is not enabled for this instance. Please notify the " "page administrator to report problems." 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." +"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:620 msgid "" "Recipe sharing link has been disabled! For additional information please " "contact the page administrator." msgstr "" -"Les liens partagés de recettes ont été désactivés ! Pour plus " -"d'informations, veuillez contacter l'administrateur de la page." +"Le lien de partage de la recette a été désactivé ! Pour plus d’informations, " +"veuillez contacter l’administrateur de la page." #, python-brace-format #~ msgid "No {self.basename} with id {child} exists" From 4c259e6b9cbcfc840c2d72f342f94b5b8631d9c8 Mon Sep 17 00:00:00 2001 From: Jesse Date: Mon, 7 Feb 2022 08:33:50 +0000 Subject: [PATCH 11/17] Translated using Weblate (Dutch) Currently translated at 95.2% (541 of 568 strings) Translation: Tandoor/Recipes Backend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-backend/nl/ --- cookbook/locale/nl/LC_MESSAGES/django.po | 93 +++++++++++------------- 1 file changed, 44 insertions(+), 49 deletions(-) diff --git a/cookbook/locale/nl/LC_MESSAGES/django.po b/cookbook/locale/nl/LC_MESSAGES/django.po index 89f1adf38..ec5fbfb0d 100644 --- a/cookbook/locale/nl/LC_MESSAGES/django.po +++ b/cookbook/locale/nl/LC_MESSAGES/django.po @@ -13,16 +13,16 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-01-18 14:52+0100\n" -"PO-Revision-Date: 2021-11-14 14:06+0000\n" -"Last-Translator: Job Putters \n" -"Language-Team: Dutch \n" +"PO-Revision-Date: 2022-02-09 01:31+0000\n" +"Last-Translator: Jesse \n" +"Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.8\n" +"X-Generator: Weblate 4.10.1\n" #: .\cookbook\filters.py:23 .\cookbook\templates\forms\ingredients.html:34 #: .\cookbook\templates\space.html:50 .\cookbook\templates\stats.html:28 @@ -110,20 +110,14 @@ msgid "Display nutritional energy amounts in joules instead of calories" msgstr "Geef energiewaardes weer in joules in plaats van calorieën" #: .\cookbook\forms.py:79 -#, fuzzy -#| msgid "" -#| "Users with whom newly created meal plan/shopping list entries should be " -#| "shared by default." msgid "Users with whom newly created meal plans should be shared by default." msgstr "" -"Gebruikers waarmee een nieuw maaltijdplan/boodschappenlijst standaard " -"gedeeld moeten worden." +"Gebruikers waarmee een nieuwe maaltijdplannen standaard gedeeld moeten " +"worden." #: .\cookbook\forms.py:80 -#, fuzzy -#| msgid "Try the new shopping list" msgid "Users with whom to share shopping lists." -msgstr "Probeer de nieuwe boodschappenlijst" +msgstr "Gebruikers waarmee boodschappenlijsten gedeeld moeten worden." #: .\cookbook\forms.py:82 msgid "Show recently viewed recipes on search page." @@ -156,11 +150,11 @@ msgstr "Zet de navbar vast aan de bovenkant van de pagina." #: .\cookbook\forms.py:90 .\cookbook\forms.py:496 msgid "Automatically add meal plan ingredients to shopping list." -msgstr "" +msgstr "Zet maaltijdplan ingrediënten automatisch op boodschappenlijst." #: .\cookbook\forms.py:91 msgid "Exclude ingredients that are on hand." -msgstr "" +msgstr "Sluit ingrediënten die op voorraad zijn uit." #: .\cookbook\forms.py:108 msgid "" @@ -386,82 +380,87 @@ msgid "" "Users will see all items you add to your shopping list. They must add you " "to see items on their list." 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:497 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "include all related recipes." msgstr "" +"Als een maaltijdplan aan de boodschappenlijst toegevoegd wordt (handmatig of " +"automatisch), neem dan alle recepten op." #: .\cookbook\forms.py:498 msgid "" "When adding a meal plan to the shopping list (manually or automatically), " "exclude ingredients that are on hand." msgstr "" +"Als een maaltijdplan aan de boodschappenlijst toegevoegd wordt (handmatig of " +"automatisch), sluit ingrediënten die op voorraad zijn dan uit." #: .\cookbook\forms.py:499 msgid "Default number of hours to delay a shopping list entry." -msgstr "" +msgstr "Standaard aantal uren om een boodschappenlijst item te vertragen." #: .\cookbook\forms.py:500 msgid "Filter shopping list to only include supermarket categories." -msgstr "" +msgstr "Filter boodschappenlijst om alleen supermarktcategorieën te bevatten." #: .\cookbook\forms.py:501 msgid "Days of recent shopping list entries to display." -msgstr "" +msgstr "Dagen van recente boodschappenlijst items weer te geven." #: .\cookbook\forms.py:502 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:503 msgid "Delimiter to use for CSV exports." -msgstr "" +msgstr "Scheidingsteken te gebruiken voor CSV exports." #: .\cookbook\forms.py:504 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:508 -#, fuzzy -#| msgid "New Shopping List" msgid "Share Shopping List" -msgstr "Nieuwe boodschappenlijst" +msgstr "Deel boodschappenlijst" #: .\cookbook\forms.py:509 msgid "Autosync" -msgstr "" +msgstr "Autosync" #: .\cookbook\forms.py:510 msgid "Auto Add Meal Plan" -msgstr "" +msgstr "Voeg maaltijdplan automatisch toe" #: .\cookbook\forms.py:511 msgid "Exclude On Hand" -msgstr "" +msgstr "Sluit op voorraad uit" #: .\cookbook\forms.py:512 msgid "Include Related" -msgstr "" +msgstr "Neem gerelateerde op" #: .\cookbook\forms.py:513 msgid "Default Delay Hours" -msgstr "" +msgstr "Standaard vertraging in uren" #: .\cookbook\forms.py:514 -#, fuzzy -#| msgid "Select Supermarket" msgid "Filter to Supermarket" -msgstr "Selecteer supermarkt" +msgstr "Filter op supermarkt" #: .\cookbook\forms.py:515 msgid "Recent Days" -msgstr "" +msgstr "Afgelopen dagen" #: .\cookbook\forms.py:516 msgid "CSV Delimiter" -msgstr "" +msgstr "CSV scheidingsteken" #: .\cookbook\forms.py:517 .\cookbook\templates\shopping_list.html:322 msgid "List Prefix" @@ -469,27 +468,23 @@ msgstr "Lijst voorvoegsel" #: .\cookbook\forms.py:518 msgid "Auto On Hand" -msgstr "" +msgstr "Auto op voorraad" #: .\cookbook\forms.py:528 msgid "Reset Food Inheritance" -msgstr "" +msgstr "Herstel Ingrediënt overname" #: .\cookbook\forms.py:529 msgid "Reset all food to inherit the fields configured." -msgstr "" +msgstr "Herstel alle ingrediënten om de geconfigureerde velden over te nemen." #: .\cookbook\forms.py:541 -#, fuzzy -#| msgid "Food that should be replaced." msgid "Fields on food that should be inherited by default." -msgstr "Te vervangen Ingrediënt." +msgstr "Velden van ingrediënten die standaard overgenomen moeten worden." #: .\cookbook\forms.py:542 -#, fuzzy -#| msgid "Show recently viewed recipes on search page." msgid "Show recipe counts on search filters" -msgstr "Geef recent bekeken recepten op de zoekpagina weer." +msgstr "Toon recepten teller bij zoekfilters" #: .\cookbook\helper\AllAuthCustomAdapter.py:36 msgid "" @@ -525,17 +520,15 @@ msgstr "" #: .\cookbook\helper\recipe_search.py:473 msgid "One of queryset or hash_key must be provided" -msgstr "" +msgstr "Er moet een queryset of hash_key opgegeven worden" #: .\cookbook\helper\shopping_helper.py:54 -#, fuzzy -#| msgid "You must provide at least a recipe or a title." msgid "You must supply a recipe or mealplan" -msgstr "Je moet minimaal één recept of titel te specificeren." +msgstr "Je moet een recept of maaltijdplan aanleveren" #: .\cookbook\helper\shopping_helper.py:58 msgid "You must supply a created_by" -msgstr "" +msgstr "Je moet een created_by aanleveren" #: .\cookbook\helper\template_helper.py:61 #: .\cookbook\helper\template_helper.py:63 @@ -727,7 +720,7 @@ msgstr "Etiket alias" #: .\cookbook\serializer.py:175 msgid "A user is required" -msgstr "" +msgstr "Een gebruiker is verplicht" #: .\cookbook\serializer.py:195 msgid "File uploads are not enabled for this Space." @@ -739,13 +732,15 @@ msgstr "U heeft de uploadlimiet bereikt." #: .\cookbook\serializer.py:962 msgid "Existing shopping list to update" -msgstr "" +msgstr "Bestaande boodschappenlijst is bijgewerkt" #: .\cookbook\serializer.py:964 msgid "" "List of ingredient IDs from the recipe to add, if not provided all " "ingredients will be added." 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:965 msgid "" From 13ed297fb9f99f544c519e23c7beab31dde4b0f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marion=20K=C3=A4mpfer?= Date: Mon, 7 Feb 2022 23:16:02 +0000 Subject: [PATCH 12/17] Translated using Weblate (French) Currently translated at 95.9% (286 of 298 strings) Translation: Tandoor/Recipes Frontend Translate-URL: http://translate.tandoor.dev/projects/tandoor/recipes-frontend/fr/ --- vue/src/locales/fr.json | 104 ++++++++++++++++++++-------------------- 1 file changed, 53 insertions(+), 51 deletions(-) diff --git a/vue/src/locales/fr.json b/vue/src/locales/fr.json index a43d1ba0f..db42dc1fe 100644 --- a/vue/src/locales/fr.json +++ b/vue/src/locales/fr.json @@ -1,32 +1,32 @@ { - "err_fetching_resource": "Il y a eu une erreur pour récupérer une ressource !", - "err_creating_resource": "Il y a eu une erreur pour créer une ressource !", - "err_updating_resource": "Il y a eu une erreur pour mettre à jour une ressource !", - "err_deleting_resource": "Il y a eu une erreur pour supprimer une ressource !", - "success_fetching_resource": "Ressource correctement récupérée !", - "success_creating_resource": "Ressource correctement créée !", - "success_updating_resource": "Ressource correctement mise à jour !", - "success_deleting_resource": "Ressource correctement supprimée !", - "import_running": "Importation en cours, veuillez patienter !", - "all_fields_optional": "Tous les champs sont optionnels et peuvent être laissés vides.", + "err_fetching_resource": "Erreur lors de la récupération d’une ressource !", + "err_creating_resource": "Erreur lors de la création d’une ressource !", + "err_updating_resource": "Erreur lors de la mise à jour d’une ressource !", + "err_deleting_resource": "Erreur lors de la suppression d’une ressource !", + "success_fetching_resource": "Ressource récupérée avec succès !", + "success_creating_resource": "Ressource créée avec succès !", + "success_updating_resource": "Ressource mise à jour avec succès !", + "success_deleting_resource": "Ressource supprimée avec succès !", + "import_running": "Importation en cours, veuillez patienter !", + "all_fields_optional": "Tous les champs sont facultatifs et peuvent être laissés vides.", "convert_internal": "Convertir en recette interne", "show_only_internal": "Montrer uniquement les recettes internes", "Log_Recipe_Cooking": "Marquer la recette comme cuisinée", "External_Recipe_Image": "Image externe de recette", "Add_to_Shopping": "Ajouter à la liste de courses", "Add_to_Plan": "Ajouter au menu", - "Step_start_time": "Heure de départ de l'étape", + "Step_start_time": "Heure de début de l’étape", "Sort_by_new": "Trier par nouveautés", "Recipes_per_page": "Nombre de recettes par page", - "Manage_Books": "Gérer les favoris", + "Manage_Books": "Gérer les livres", "Meal_Plan": "Menu de la semaine", - "Select_Book": "Sélectionnez livre", + "Select_Book": "Sélectionner le livre", "Recipe_Image": "Image de la recette", "Import_finished": "Importation finie", "View_Recipes": "Voir les recettes", "Log_Cooking": "Marquer comme cuisiné", "New_Recipe": "Nouvelle recette", - "Url_Import": "Importation de l'url", + "Url_Import": "Importation de l’url", "Reset_Search": "Réinitialiser la recherche", "Recently_Viewed": "Vu récemment", "Load_More": "Charger plus", @@ -36,7 +36,7 @@ "Fats": "Matières grasses", "Carbohydrates": "Glucides", "Calories": "Calories", - "Energy": "Energie", + "Energy": "Énergie", "Nutrition": "Valeurs nutritionnelles", "Date": "Date", "Share": "Partager", @@ -93,15 +93,15 @@ "move_confirmation": "Déplacer {child} vers le parent {parent}", "merge_confirmation": "Remplacer {source} par {target}", "Root": "Racine", - "delete_confirmation": "Êtes-vous sûr de vouloir supprimer {source} ?", + "delete_confirmation": "Êtes-vous sûr de vouloir supprimer {source} ?", "Shopping_Category": "Catégorie de courses", "Ignore_Shopping": "Ignorer les courses", "Edit_Food": "Modifier aliment", "Move_Food": "Déplacer aliment", "New_Food": "Nouvel aliment", - "Hide_Food": "Cacher l'aliment", - "Delete_Food": "Supprimer l'aliment", - "No_ID": "ID introuvable, il n'a pas pu être supprimé.", + "Hide_Food": "Cacher l’aliment", + "Delete_Food": "Supprimer l’aliment", + "No_ID": "ID introuvable, impossible de supprimer.", "Meal_Plan_Days": "Futurs menus", "merge_title": "Fusionner {type}", "Food": "Aliment", @@ -112,34 +112,34 @@ "Name": "Nom", "Description": "Description", "Recipe": "Recette", - "tree_root": "Racine de l'arbre", + "tree_root": "Racine de l’arbre", "Edit_Keyword": "Modifier mot-clé", "Hide_Keywords": "Cacher le mot-clé", "move_selection": "Sélectionner un parent {type} pour y déplacer {source}.", "merge_selection": "Remplace toutes les occurrences de {source} par {type}.", "move_title": "Déplacer {type}", - "del_confirmation_tree": "Êtes-vous sûr de vouloir supprimer {source} et tous ses enfants ?", - "warning_feature_beta": "Cette fonctionnalité est actuellement en phase BETA (test). Veuillez vous attendre à des bugs et éventuellement à des changements avenir (éventuellement la perte de données liées aux fonctionnalités) lorsque vous utilisez cette fonctionnalité.", - "confirm_delete": "Voulez-vous vraiment supprimer {objet} ?", + "del_confirmation_tree": "Êtes-vous sûr de vouloir supprimer {source} et tous ses enfants ?", + "warning_feature_beta": "Cette fonctionnalité est actuellement en phase BETA (test). Veuillez vous attendre à des bugs et éventuellement à des modifications conséquentes à l’avenir (perte éventuelle de données liées à la fonctionnalité) lorsque vous utilisez cette fonctionnalité.", + "confirm_delete": "Voulez-vous vraiment supprimer {objet} ?", "Note": "Notes", "Add_Step": "Ajouter une étape", - "Step_Name": "Nom de l'étape", + "Step_Name": "Nom de l’étape", "Parameter": "Paramètre", "Automation": "Automatisation", "Text": "Texte", "Color": "Couleur", "New_Meal_Type": "Nouveau type de repas", - "Select_File": "Choisir le fichier", + "Select_File": "Sélectionner le fichier", "Shopping_list": "Liste de courses", "Save_and_View": "Sauvegarder et visualiser", - "step_time_minutes": "Temps passé en minute", - "Step_Type": "Type d'étape", + "step_time_minutes": "Temps passé en minutes", + "Step_Type": "Type d’étape", "Move_Down": "Descendre", "Key_Shift": "Maj", "Key_Ctrl": "Ctrl", "Add_nutrition_recipe": "Ajouter les valeurs nutritionelles à la recette", "Remove_nutrition_recipe": "Supprimer les valeurs nutritionelles de la recette", - "Make_Header": "Créer une en-tête", + "Make_Header": "Créer un en-tête", "Make_Ingredient": "Créer un ingrédient", "Enable_Amount": "Activer la quantité", "Disable_Amount": "Désactiver la quantité", @@ -163,14 +163,14 @@ "Meal_Types": "Types de repas", "New_Unit": "Nouvelle unité", "Create_New_Keyword": "Ajouter un nouveau mot-clé", - "Keyword_Alias": "Alias pour le mot-clé", + "Keyword_Alias": "Alias de mot-clé", "Title": "Titre", "Week": "Semaine", "Unit_Alias": "Alias pour les unités", "Icon": "Icône", "Year": "Année", "Unrated": "Non évalué", - "Shopping_List_Empty": "Votre liste de courses est actuellement vide, vous pouvez ajouter des articles via le menu de la semaine contextuel d'une entrée de plan de repas (clic droit sur la carte ou clic gauche sur l'icône du menu)", + "Shopping_List_Empty": "Votre liste de courses est actuellement vide, vous pouvez ajouter des articles via le menu contextuel d’une entrée de menu de la semaine (clic droit sur la carte ou clic gauche sur l’icône du menu)", "Meal_Type": "Type de repas", "Clone": "Cloner", "Drag_Here_To_Delete": "Glissez ici pour supprimer", @@ -179,29 +179,29 @@ "Previous_Period": "Période précédente", "Current_Period": "Période actuelle", "Export_As_ICal": "Exporter la période en cours au format iCal", - "file_upload_disabled": "Le téléversement de fichier n'est pas activé pour votre groupe.", - "Show_Week_Numbers": "Montrer les numéros de semaine ?", + "file_upload_disabled": "Le téléversement de fichier n’est pas activé pour votre groupe.", + "Show_Week_Numbers": "Afficher les numéros de semaine ?", "Week_Numbers": "Numéro de semaine", "Export_To_ICal": "Exporter .ics", "Cannot_Add_Notes_To_Shopping": "Les notes ne peuvent pas être ajoutées à la liste de courses", "Added_To_Shopping_List": "Ajouté à la liste de courses", "Next_Period": "Prochaine période", - "Show_as_header": "Montrer comme entête", - "Hide_as_header": "Cacher comme entête", - "Copy_template_reference": "Copier le modèle de référence", + "Show_as_header": "Montrer comme en-tête", + "Hide_as_header": "Cacher comme en-tête", + "Copy_template_reference": "Copier la référence du modèle", "Edit_Recipe": "Modifier une Recette", "Move_Up": "Monter", "Time": "Temps", "Coming_Soon": "Bientôt disponible", "Create_New_Shopping Category": "Ajouter une catégorie de courses", - "success_moving_resource": "Ressource correctement déplacée !", - "err_moving_resource": "Il y a eu une erreur pour déplacer une ressource !", - "err_merging_resource": "Il y a eu une erreur pour fusionner une ressource !", - "success_merging_resource": "Ressource correctement fusionnée !", - "Added_by": "Ajouter par", - "Added_on": "Ajouter le", + "success_moving_resource": "Ressource déplacée avec succès !", + "err_moving_resource": "Erreur lors du déplacement d’une ressource !", + "err_merging_resource": "Erreur lors de la fusion d’une ressource !", + "success_merging_resource": "Ressource fusionnée avec succès !", + "Added_by": "Ajouté par", + "Added_on": "Ajouté le", "Shopping_Categories": "Catégories de courses", - "Add_Servings_to_Shopping": "Ajouter {servings} partions aux courses", + "Add_Servings_to_Shopping": "Ajouter {servings} portions aux courses", "CountMore": "...+ {count} en plus", "NoCategory": "Pas de catégorie sélectionnée.", "OfflineAlert": "Vous êtes déconnecté, votre liste de courses peut ne pas être synchronisée.", @@ -215,7 +215,7 @@ "in_shopping": "Dans la liste de courses", "and_up": "&Au-dessus", "Plan_Show_How_Many_Periods": "Combien de périodes montrer", - "Edit_Meal_Plan_Entry": "Modifier le plan de repas", + "Edit_Meal_Plan_Entry": "Modifier une entrée de menu", "Periods": "Périodes", "Period": "Période", "Plan_Period_To_Show": "Montrer les semaines, mois ou années", @@ -225,14 +225,14 @@ "Clear": "Supprimer", "AddToShopping": "Ajouter à la liste de courses", "IngredientInShopping": "Cet ingrédient est dans votre liste de courses.", - "NotInShopping": "{food} n'est pas dans votre liste de courses.", + "NotInShopping": "{food} n’est pas dans votre liste de courses.", "OnHand": "Disponible actuellement", - "FoodNotOnHand": "L'ingrédient {food} n'est pas disponible.", + "FoodNotOnHand": "L’ingrédient {food} n’est pas disponible.", "Planner": "Planificateur", "Planner_Settings": "Paramètres du planificateur", - "AddFoodToShopping": "Ajouter l'ingrédient {food} à votre liste de courses", - "DeleteShoppingConfirm": "Etes-vous sûr que vous souhaitez retirer tous les ingrédients {food} de votre liste de courses ?", - "IgnoredFood": "L'ingrédient {food} est paramétré pour ignorer les courses.", + "AddFoodToShopping": "Ajouter l’ingrédient {food} à votre liste de courses", + "DeleteShoppingConfirm": "Êtes-vous sûr(e) de vouloir retirer tous les ingrédients {food} de votre liste de courses ?", + "IgnoredFood": "L’ingrédient {food} est paramétré pour ignorer les courses.", "Inherit": "Hériter", "InheritFields": "Hériter les valeurs des champs", "FoodInherit": "Ingrédient hérité", @@ -280,8 +280,10 @@ "related_recipes": "Recettes connexes", "today_recipes": "Recettes du jour", "Search Settings": "Paramètres de recherche", - "FoodOnHand": "L'ingrédient {food} est disponible.", + "FoodOnHand": "L’ingrédient {food} est disponible.", "Undefined": "Indéfini", - "Create_Meal_Plan_Entry": "Création d'un plan de repas", - "RemoveFoodFromShopping": "Retirer l'ingrédient {food} de votre liste de courses" + "Create_Meal_Plan_Entry": "Créer une entrée de menu", + "RemoveFoodFromShopping": "Retirer l’ingrédient {food} de votre liste de courses", + "left_handed": "Mode gaucher", + "left_handed_help": "Optimise l’interface utilisateur pour une utilisation avec la main gauche." } From 32a8cc9a69a72e2de178226f3450cff35484e6f2 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Wed, 9 Feb 2022 18:44:29 +0100 Subject: [PATCH 13/17] proof of concept for recipe search explain --- .../RecipeSearchView/RecipeSearchView.vue | 525 +++++++++++++----- 1 file changed, 385 insertions(+), 140 deletions(-) diff --git a/vue/src/apps/RecipeSearchView/RecipeSearchView.vue b/vue/src/apps/RecipeSearchView/RecipeSearchView.vue index d60d46905..8a3f0a6bd 100644 --- a/vue/src/apps/RecipeSearchView/RecipeSearchView.vue +++ b/vue/src/apps/RecipeSearchView/RecipeSearchView.vue @@ -1,6 +1,6 @@