feat: bulk tag editing, bulk export, and move recipes between collections

Extends the existing bulk-select infra: recipes list gets tag add/remove
and multi-recipe Markdown export; collection pages get a select mode to
move recipes to another collection or remove them from the current one.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Arnaud
2026-07-13 11:57:07 +02:00
parent 4960dfc7c6
commit 70eb565eec
14 changed files with 533 additions and 18 deletions
+19 -1
View File
@@ -197,6 +197,17 @@
"bulkUpdateFailed": "Échec de la mise à jour",
"bulkDeleteConfirmTitle": "{count, plural, one {Supprimer 1 recette ?} other {Supprimer {count} recettes ?}}",
"bulkDeleteConfirmDescription": "Cette action est irréversible.",
"bulkTagsButton": "Étiquettes",
"bulkTagsTitle": "{count, plural, one {Modifier les étiquettes de 1 recette} other {Modifier les étiquettes de {count} recettes}}",
"bulkTagsAddLabel": "Ajouter des étiquettes",
"bulkTagsAddPlaceholder": "Tapez une étiquette et appuyez sur Entrée",
"bulkTagsAddButton": "Ajouter",
"bulkTagsRemoveLabel": "Retirer des étiquettes existantes",
"bulkTagsUpdated": "{count, plural, one {Étiquettes mises à jour sur 1 recette} other {Étiquettes mises à jour sur {count} recettes}}",
"bulkExportButton": "Exporter",
"bulkExportFailed": "Échec de l'export",
"moveToCollectionTitle": "Déplacer {count, plural, one {1 recette} other {{count} recettes}} vers une collection",
"moveToCollectionSuccess": "{count, plural, one {1 recette} other {{count} recettes}} déplacée(s) vers « {name} »",
"deselectAll": "Tout désélectionner",
"selectAll": "Tout sélectionner",
"clickToSelect": "Cliquez sur les cartes pour sélectionner",
@@ -967,7 +978,14 @@
"createFailed": "Échec de la création",
"forking": "Duplication…",
"forkCollection": "Dupliquer la collection",
"forkFailed": "Échec de la duplication"
"forkFailed": "Échec de la duplication",
"selectRecipes": "Sélectionner",
"moveToCollection": "Déplacer vers…",
"removeFromCollection": "Retirer",
"removedFromCollection": "{count, plural, one {1 recette retirée de cette collection} other {{count} recettes retirées de cette collection}}",
"removeFromCollectionFailed": "Échec du retrait de la collection",
"removeFromCollectionConfirmTitle": "{count, plural, one {Retirer 1 recette de cette collection ?} other {Retirer {count} recettes de cette collection ?}}",
"removeFromCollectionConfirmDescription": "La recette elle-même ne sera pas supprimée, seulement retirée de cette collection."
},
"shareDialog": {
"invite": "Inviter",