Organize imports: persist undo across sessions, translate UI to 23 languages
CI / check (push) Failing after 5m7s
CI / preflight (push) Skipped
CI / deploy (push) Skipped
CI / publish-container (push) Skipped

This commit is contained in:
openhands committed 2026-09-14 19:07:56 +02:00
1 parent 3a4089a5fa
commit 0f01ebf48b
24 files changed
+1717 -1662

No files matched your search

+66 -66
View File
@@ -1958,82 +1958,82 @@
"createWithItems": "Create ({count} items)"
},
"organizeImports": {
"title": "Organize imports",
"itemsBadge": "{count} items",
"loading": "Loading imported furniture…",
"empty": "No imported furniture found. Import furniture first.",
"loadError": "Could not load imports. Try again.",
"refresh": "Refresh",
"desc": "Imported furniture is grouped into suggested pages. Review each group, then create the pages you approve.",
"selectAll": "Select all",
"deselectAll": "Deselect all",
"title": "Organiser les imports",
"itemsBadge": "{count} éléments",
"loading": "Chargement des meubles importés…",
"empty": "Aucun meuble importé trouvé. Importez d'abord des meubles.",
"loadError": "Impossible de charger les imports. Réessayez.",
"refresh": "Actualiser",
"desc": "Les meubles importés sont regroupés en pages suggérées. Examinez chaque groupe, puis créez les pages que vous approuvez.",
"selectAll": "Tout sélectionner",
"deselectAll": "Tout désélectionner",
"mode": "Mode",
"modeCreate": "Create new pages",
"modeMove": "Move into an existing page",
"destination": "Destination page",
"destinationChosen": "selected",
"destinationSearchPlaceholder": "Search pages by name…",
"noDestResults": "No pages found",
"destinationHint": "All approved groups are moved into this page — no new page is created.",
"chooseDestination": "Pick a destination page first",
"move": "Move {count, plural, one {1 item} other {# items}}",
"name": "Name",
"icon": "Icon",
"layout": "Layout",
"resetSuggestion": "Suggested",
"suggestedLayout": "Suggested: {layout}",
"movedLabel": "{count} moved",
"newLabel": "{count} new",
"isNew": "new",
"price": "Price",
"free": "Free",
"setPrice": "Set a price",
"credits": "Credits",
"modeCreate": "Créer de nouvelles pages",
"modeMove": "Déplacer vers une page existante",
"destination": "Page de destination",
"destinationChosen": "sélectionné",
"destinationSearchPlaceholder": "Rechercher des pages par nom…",
"noDestResults": "Aucune page trouvée",
"destinationHint": "Tous les groupes approuvés sont déplacés dans cette page – aucune nouvelle page n'est créée.",
"chooseDestination": "Choisissez d'abord une page de destination",
"move": "{count, plural, one {Déplacer 1 élément} other {Déplacer # éléments}}",
"name": "Nom",
"icon": "Icône",
"layout": "Disposition",
"resetSuggestion": "Suggestion",
"suggestedLayout": "Suggestion : {layout}",
"movedLabel": "{count} déplacé",
"newLabel": "{count} nouveau",
"isNew": "nouveau",
"price": "Prix",
"free": "Gratuit",
"setPrice": "Définir un prix",
"credits": "Crédits",
"points": "Points",
"pointsType": "Type",
"newPriceHint": "Applies to new offers only; moved offers keep their current price.",
"parent": "Place pages under",
"root": "Catalog root",
"importedRoot": "Imported Furniture",
"cancel": "Cancel",
"create": "Create {count, plural, one {1 page} other {# pages}}",
"batchLayout": "Set layout for all",
"batchPrefix": "Add prefix to all titles",
"applyBatch": "Apply to all",
"searchGroups": "Filter import groups...",
"visualPreview": "Preview",
"resetAll": "Reset overrides",
"onlyUnplaced": "Only show unplaced items",
"errorMaxItems": "Max 500 items per run. Reduce selection.",
"errorMaxGroups": "Max {count} groups per run. Reduce selection.",
"errorNoName": "Every approved page needs a name",
"tipMove": "Tip: Pick a destination page below to move furniture.",
"tipCreate": "Tip: Pick this mode to create new pages.",
"limitHint": "Max 500 items and 50 groups per run.",
"errorFailed": "Failed to organize imports",
"successMove": "Moved {moved} offer{moved, plural, one {} other {s}}{added, plural, =0 {} other {, added {added} new}} to \"{destination}\"",
"successCreate": "Created {count, plural, one {1 page} other {# pages}} with {moved} moved and {added} added furniture",
"batchLabel": "Batch:",
"newPriceHint": "Ne s'applique qu'aux nouvelles offres ; les offres déplacées conservent leur prix actuel.",
"parent": "Placer les pages sous",
"root": "Racine du catalogue",
"importedRoot": "Meubles importés",
"cancel": "Annuler",
"create": "{count, plural, one {Créer 1 page} other {Créer # pages}}",
"batchLayout": "Définir la disposition pour toutes",
"batchPrefix": "Ajouter un préfixe à tous les titres",
"applyBatch": "Appliquer à toutes",
"searchGroups": "Filtrer les groupes d'import...",
"visualPreview": "Aperçu",
"resetAll": "Réinitialiser les modifications",
"onlyUnplaced": "Afficher uniquement les éléments non placés",
"errorMaxItems": "Max. 500 éléments par passage. Réduisez la sélection.",
"errorMaxGroups": "Max. {count} groupes par passage. Réduisez la sélection.",
"errorNoName": "Chaque page approuvée doit avoir un nom",
"tipMove": "Astuce : choisissez une page de destination ci-dessous pour déplacer des meubles.",
"tipCreate": "Astuce : choisissez ce mode pour créer de nouvelles pages.",
"limitHint": "Max. 500 éléments et 50 groupes par passage.",
"errorFailed": "Échec de l'organisation des imports",
"successMove": "{moved} offre{moved, plural, one {} other {s}} vers \"{destination}\" déplacée{moved, plural, one {} other {s}}{added, plural, =0 {} other {, {added} nouvelles}}",
"successCreate": "{count, plural, one {1 page} other {# pages}} créée{moved, plural, one {} other {s}} avec {moved, plural, one {1 meuble} other {# meubles}} déplacé{moved, plural, one {} other {s}} et {added, plural, one {1 ajouté} other {# ajoutés}}",
"batchLabel": "Lot :",
"layoutFallbackDefault3x3": "3x3",
"itemsUnit": "items",
"itemsUnit": "éléments",
"impPrefix": "Imp ",
"isMoved": "moved",
"isMoved": "déplacé",
"showAll": "Tout afficher ({count})",
"showLess": "Afficher moins",
"moveItemTo": "Déplacer vers…",
"batchMoveTo": "Déplacer la sélection vers…",
"selectedCount": "{count} sélectionné(s)",
"selectedCount": "{count, plural, one {1 sélectionné} other {# sélectionnés}}",
"clearSelection": "Effacer la sélection",
"undo": "Undo",
"daysLabel": "Days",
"daysValue": "{days} days",
"dupeSummary": "Already in the destination page: {count} item{count, plural, one {} other {s}}",
"layoutPreview": "Layout preview",
"emptyCategory": "No items in this category",
"dupeOnDest": "Already present on the destination page",
"dupeOnDestShort": "duplicate",
"errorPartial": "{failed} of {total} runs failed. Review and retry.",
"successCreateRuns": "Created {count, plural, one {1 page} other {# pages}} in {runs, plural, one {1 run} other {# runs}} with {moved} moved and {added} added furniture"
"undo": "Annuler",
"daysLabel": "Jours",
"daysValue": "{days} jours",
"dupeSummary": "Déjà dans la page de destination : {count, plural, one {1 élément} other {# éléments}}",
"layoutPreview": "Aperçu de la disposition",
"emptyCategory": "Aucun élément dans cette catégorie",
"dupeOnDest": "Déjà présent sur la page de destination",
"dupeOnDestShort": "doublon",
"errorPartial": "{failed, plural, one {1 passage} other {# passages}} sur {total} ont échoué. Vérifiez et réessayez.",
"successCreateRuns": "{count, plural, one {1 page} other {# pages}} créée{moved, plural, one {} other {s}} en {runs, plural, one {1 passage} other {# passages}} avec {moved, plural, one {1 meuble} other {# meubles}} déplacé{moved, plural, one {} other {s}} et {added, plural, one {1 ajouté} other {# ajoutés}}"
}
},
"discovery": {