diff --git a/client_v2/locales/cs/common.json b/client_v2/locales/cs/common.json index 8da2da4d..342af5cd 100644 --- a/client_v2/locales/cs/common.json +++ b/client_v2/locales/cs/common.json @@ -327,7 +327,7 @@ "labels.showingReal": "", "labels.showingSpool": "", "labels.showingTags": "", - "labels.sizeMm": "", + "labels.sizeMm": "Velikost", "labels.skipHint": "", "labels.sortHint": "Seřadit cívky", "labels.sortId": "#", @@ -348,18 +348,23 @@ "labels.yMm": "Y", "library.apiError": "", "library.collapseGroup": "", + "library.dateFilter.never": "Nikdy", + "library.dateFilter.olderThan": "Starší než {{span}}", + "library.dateFilter.since": "Od {{date}}", + "library.dateFilter.to": "Do (volitelně)", "library.emptyBody": "", "library.emptyFiltered": "", - "library.emptyTitle": "", - "library.expandGroup": "", - "library.filterBy": "", - "library.groupBy": "", + "library.emptyTitle": "Zatím žádné cívky", + "library.expandGroup": "Zobrazit tyto cívky", + "library.filterBy": "Filtrovat podle", + "library.groupBy": "Skupina", "library.groupNone": "", "library.groupSpools_few": "{{count}} cívky", "library.groupSpools_one": "{{count}} cívka", "library.groupSpools_other": "{{count}} cívek", "library.nUnused": "", "library.noLocation": "bez uvedení místa", + "library.noSpools": "Žádné cívky", "library.noValues": "Žádné hodnoty", "library.openGroup": "", "library.openManufacturer": "", diff --git a/client_v2/locales/fr/common.json b/client_v2/locales/fr/common.json index 86d913eb..1d51eea0 100644 --- a/client_v2/locales/fr/common.json +++ b/client_v2/locales/fr/common.json @@ -17,11 +17,11 @@ "add.duplicateTitle": "Nouveau filament copie de “{{name}}”", "add.filamentNamePlaceholder": "Exemple : PolyTerra Matte Sage", "add.fill.full": "Rempli", - "add.fillLevel": "", - "add.importNote": "", - "add.inCatalog": "", - "add.locationHint": "", - "add.locationPlaceholder": "", + "add.fillLevel": "Niveau de remplissage", + "add.importNote": "Ce filament sera ajouté à votre catalogue lorsque vous ajouterez les bobines.", + "add.inCatalog": "au catalogue", + "add.locationHint": "L’endroit où vous rangez physiquement la bobine — une étagère, une caisse ou une imprimante. Laissez vide si vous les gardez toutes au même endroit.", + "add.locationPlaceholder": "ex. Étagère A, Caisson 2, Imprimante 1", "add.manufacturerPlaceholder": "exemple : Polymaker", "add.nameHint": "Indiquez la couleur : c’est ce qui permet de distinguer vos filaments.", "add.newFilament": "Ajouter filament", @@ -45,72 +45,119 @@ "add.step2New": "Étape 2 · Détails du filament et de la bobine", "add.summary_many": "{{count}} bobines", "add.summary_one": "{{count}} bobine", - "add.summary_other": "(n == 0 || n == 1) ? 0 : ((n != 0 && n % 1000000 == 0) ? 1 : 2)", + "add.summary_other": "{{count}} bobines", "add.typeToSearchAll": "Tapez pour rechercher parmi des milliers de filaments", "add.typeToSearchMatches": "Tapez pour rechercher — aucun résultat", "add.useExisting": "utiliser un existant", "add.vendorHint.existing": "Utilisation du fabricant existant \"{{name}}\"", - "add.vendorHint.new": "", - "add.vendorHint.optional": "", - "add.yourCatalog": "", + "add.vendorHint.new": "Le nouveau fabricant « {{name}} » sera créé", + "add.vendorHint.optional": "Facultatif — laissez vide pour ne pas indiquer de fabricant", + "add.weightPresets": "Tailles de bobines courantes", + "add.yourCatalog": "Votre catalogue", + "buttons.apply": "Appliquer", "buttons.archive": "Archiver", "buttons.cancel": "Abandonner", "buttons.clear": "Effacer", - "buttons.close": "", + "buttons.close": "Fermer", "buttons.delete": "Supprimer", "buttons.edit": "Editer", "buttons.filter": "Filtre", "buttons.save": "Enregistrer", "buttons.showArchived": "Afficher les archives", + "buttons.showNoSpools": "Afficher les filaments sans bobine", "buttons.unArchive": "Désarchiver", - "common.decrement": "", - "common.increment": "", - "common.remove": "", - "common.search": "", - "dashboard.addFieldHint": "", - "dashboard.dashboard": "", - "dashboard.deleteGroup": "", - "dashboard.dragHint": "", - "dashboard.dropHere": "", - "dashboard.emptyHelp": "", - "dashboard.errorEmptyName": "", - "dashboard.errorExists": "", - "dashboard.errorRename": "", - "dashboard.lastUsed": "", - "dashboard.newGroup": "", - "dashboard.newGroupName": "", - "dashboard.reorderGroup": "", - "dashboard.unassigned": "", - "datetime.done": "", - "datetime.hour": "", - "datetime.minute": "", - "datetime.nextMonth": "", - "datetime.now": "", - "datetime.pick": "", - "datetime.prevMonth": "", - "datetime.time": "", - "documentTitle.dashboard.list": "", - "documentTitle.labels.list": "", - "documentTitle.library.list": "", + "changeFilament.action": "Changer", + "changeFilament.adoptWeight": "Fixer le poids plein de cette bobine à {{full}}", + "changeFilament.adoptWeightHelp": "Il est enregistré à {{current}}, hérité du filament précédent. Le poids consommé ({{used}}) est conservé dans les deux cas, ce qui laisse {{remaining}}.", + "changeFilament.apply": "Changer le filament", + "changeFilament.applying": "Changement en cours…", + "changeFilament.current": "actuel", + "changeFilament.done": "Filament changé.", + "changeFilament.failed": "Le changement de filament a échoué.", + "changeFilament.importNote": "Ce filament sera ajouté à votre catalogue lorsque vous validerez le changement.", + "changeFilament.intro": "La bobine n° {{id}} conserve son numéro, son emplacement, ses dates et son historique d’utilisation — seul le filament qu’elle contient change.", + "changeFilament.newTag": "nouveau", + "changeFilament.next": "Remplacer par", + "changeFilament.now": "Actuellement", + "changeFilament.pickBelow": "Choisissez un filament ci-dessous", + "changeFilament.title": "Changer le filament", + "changeFilament.useExisting": "Choisir un filament existant", + "changeFilament.weightFollows": "Cette bobine n’a pas de poids plein propre : elle reprend celui du nouveau filament, soit {{full}}, ce qui laisse {{remaining}} après les {{used}} déjà consommés.", + "changeVendor.action": "Changer", + "changeVendor.apply": "Changer le fabricant", + "changeVendor.applying": "Changement en cours…", + "changeVendor.clearHint": "Laisser ce filament sans fabricant", + "changeVendor.create": "Créer « {{name}} »", + "changeVendor.createHint": "Ne fait pas encore partie de vos fabricants — il sera ajouté", + "changeVendor.current": "actuel", + "changeVendor.done": "Fabricant changé.", + "changeVendor.emptySpool": "Bobine vide {{value}}", + "changeVendor.failed": "Le changement de fabricant a échoué.", + "changeVendor.intro": "« {{name}} » conserve ses bobines, ses caractéristiques et son historique — seul le fabricant sous lequel il est classé change.", + "changeVendor.next": "Remplacer par", + "changeVendor.noEmptySpool": "Aucun poids de bobine vide", + "changeVendor.noMatches": "Aucun fabricant ne correspond", + "changeVendor.none": "Aucun fabricant pour l’instant", + "changeVendor.noneNote": "Classé sans marque", + "changeVendor.now": "Actuellement", + "changeVendor.pickBelow": "Choisissez un fabricant ci-dessous", + "changeVendor.searchPlaceholder": "Rechercher ou nommer un fabricant", + "changeVendor.tareFollows": "Ce filament n’a pas de poids de bobine vide propre : il reprend celui de son fabricant. Après le changement, ce sera {{value}}, c’est-à-dire ce que pèse une bobine vide de ce filament lorsque vous la mesurez.", + "changeVendor.tareGone": "Ce filament n’a pas de poids de bobine vide propre et reprend les {{current}} de son fabricant. Après le changement, il n’y en aura plus à reprendre, jusqu’à ce que vous en donniez un au filament.", + "changeVendor.title": "Changer le fabricant", + "changeVendor.willBeCreated": "Sera créé", + "common.decrement": "Diminuer", + "common.increment": "Augmenter", + "common.remove": "Retirer", + "common.search": "Rechercher", + "dashboard.addFieldHint": "Ajoutez un champ texte ou à choix aux bobines dans les Réglages pour pouvoir aussi les grouper par ce champ", + "dashboard.dashboard": "Tableau de bord", + "dashboard.deleteGroup": "Supprimer le groupe", + "dashboard.dragHint": "Faites glisser une bobine vers une autre carte pour changer son champ {{field}}, ou à l’intérieur d’une carte pour la réordonner", + "dashboard.dropHere": "déposez des bobines ici", + "dashboard.emptyHelp": "Cette page regroupe vos bobines selon le champ de votre choix. Ajoutez des bobines pour commencer !", + "dashboard.errorEmptyName": "Le nom ne peut pas être vide", + "dashboard.errorExists": "Un groupe portant ce nom existe déjà", + "dashboard.errorRename": "Le renommage du groupe a échoué", + "dashboard.lastUsed": "Utilisée il y a {{time}}", + "dashboard.newGroup": "Nouveau groupe", + "dashboard.newGroupName": "Nouveau groupe {{n}}", + "dashboard.reorderGroup": "Faites glisser pour réordonner le groupe", + "dashboard.spoolCount_many": "{{count}} bobines", + "dashboard.spoolCount_one": "{{count}} bobine", + "dashboard.spoolCount_other": "{{count}} bobines", + "dashboard.unassigned": "Sans groupe", + "datetime.done": "Terminé", + "datetime.hour": "Heure", + "datetime.minute": "Minute", + "datetime.nextMonth": "Mois suivant", + "datetime.now": "Maintenant", + "datetime.pick": "Choisir la date et l’heure", + "datetime.prevMonth": "Mois précédent", + "datetime.time": "Heure", + "documentTitle.dashboard.list": "Tableau de bord | Spoolman", + "documentTitle.labels.list": "Étiquettes | Spoolman", + "documentTitle.library.list": "Bibliothèque | Spoolman", "documentTitle.locations.list": "Emplacements | Spoolman", - "documentTitle.settings.list": "", - "filament.fields.addColor": "", + "documentTitle.settings.list": "Réglages | Spoolman", + "filament.fields.addColor": "Ajouter une couleur", "filament.fields.articleNumber": "Numéro d'article", "filament.fields.coaxial": "Coextrudée", "filament.fields.colorHex": "Couleur", - "filament.fields.colorType": "", + "filament.fields.colorType": "Type de couleur", "filament.fields.comment": "Commentaire", "filament.fields.density": "Densité", "filament.fields.diameter": "Diamètre", "filament.fields.externalId": "ID externe", - "filament.fields.id": "ID", + "filament.fields.id": "Identifiant", "filament.fields.longitudinal": "Longitudinale", "filament.fields.material": "Matériau", "filament.fields.multiColor": "Multi", "filament.fields.name": "Nom", + "filament.fields.opacity": "Opacité", "filament.fields.price": "Prix", "filament.fields.registered": "Enregistré", - "filament.fields.removeColor": "", + "filament.fields.removeColor": "Retirer la couleur", "filament.fields.settingsBedTemp": "Température du lit", "filament.fields.settingsExtruderTemp": "Température de l'extrudeuse", "filament.fields.singleColor": "Unique", @@ -122,210 +169,253 @@ "filament.fieldsHelp.spoolWeight": "Le poids d'une bobine vide. Utilisé pour déterminer le poids d'une bobine.", "filament.fieldsHelp.weight": "Le poids du filament d'une bobine complète (poids net). Ce poids ne doit pas inclure le poids de la bobine elle-même, mais uniquement celui du filament. C'est ce qui est généralement indiqué sur l'emballage.", "filament.filament": "Filaments", - "footer.documentation": "", - "footer.reportIssue": "", + "footer.documentation": "Documentation", + "footer.reportIssue": "Signaler un problème", "help.help": "Aide", - "inspector.addSpoolsOfThis": "", - "inspector.adjustFailed": "", - "inspector.adjustHelp": "", - "inspector.adjustWeight": "", - "inspector.apply": "", - "inspector.applying": "", - "inspector.colorHex": "", - "inspector.consumeAmount": "", - "inspector.delete.deleting": "", - "inspector.delete.errorGone": "", - "inspector.delete.errorSpoolsExist": "", - "inspector.delete.errorUnknown": "", - "inspector.delete.filament": "", - "inspector.delete.filamentBlockedHint": "", - "inspector.delete.filamentBlockedTitle": "", - "inspector.delete.filamentBody": "", - "inspector.delete.filamentDone": "", - "inspector.delete.filamentTitle": "", - "inspector.delete.spool": "", - "inspector.delete.spoolBody": "", - "inspector.delete.spoolDone": "", - "inspector.delete.spoolRemaining": "", - "inspector.delete.spoolTitle": "", - "inspector.delete.vendor": "", - "inspector.delete.vendorBody": "", - "inspector.delete.vendorDone": "", - "inspector.delete.vendorTitle": "", - "inspector.duplicateFilament": "", - "inspector.empty": "", - "inspector.enterValidLength": "", - "inspector.enterValidWeight": "", - "inspector.loading": "", - "inspector.manageExtraFields": "", - "inspector.measuredHelp": "", - "inspector.multi": "", - "inspector.newGross": "", - "inspector.noExtraFields": "", - "inspector.notFound": "", - "inspector.ofRemaining": "", - "inspector.openFilament": "", - "inspector.openLink": "", - "inspector.openManufacturer": "", - "inspector.specs": "", - "inspector.spoolsCount": "", - "inspector.spoolsTotalRemaining": "", - "inspector.used": "", + "inspector.addSpoolsOfThis": "Ajouter des bobines de ce filament", + "inspector.adjustFailed": "L’ajustement du poids a échoué.", + "inspector.adjustHelp": "Une valeur positive consomme du filament, une valeur négative en rend.", + "inspector.adjustWeight": "Ajuster le poids", + "inspector.apply": "Appliquer", + "inspector.applying": "Application en cours…", + "inspector.colorHex": "Couleur hexadécimale", + "inspector.consumeAmount": "Quantité à consommer :", + "inspector.defaultFrom.filament": "{{value}} — valeur par défaut du filament", + "inspector.defaultFrom.manufacturer": "{{value}} — valeur par défaut du fabricant", + "inspector.delete.deleting": "Suppression en cours…", + "inspector.delete.errorGone": "L’élément avait déjà été supprimé.", + "inspector.delete.errorSpoolsExist": "Impossible de supprimer ce filament — des bobines l’utilisent encore.", + "inspector.delete.errorUnknown": "La suppression a échoué. Consultez les journaux du serveur pour en savoir plus.", + "inspector.delete.filament": "Supprimer le filament", + "inspector.delete.filamentBlockedHint": "Supprimez d’abord ces bobines. Les archiver ne suffit pas.", + "inspector.delete.filamentBlockedTitle": "Ce filament ne peut pas être supprimé", + "inspector.delete.filamentBlocked_many": "{{count}} bobines utilisent encore « {{name}} », archives comprises.", + "inspector.delete.filamentBlocked_one": "{{count}} bobine utilise encore « {{name}} », archives comprises.", + "inspector.delete.filamentBlocked_other": "{{count}} bobines utilisent encore « {{name}} », archives comprises.", + "inspector.delete.filamentBody": "« {{name}} » sera retiré de votre catalogue. Cette action est irréversible.", + "inspector.delete.filamentDone": "Filament supprimé.", + "inspector.delete.filamentTitle": "Supprimer ce filament ?", + "inspector.delete.spool": "Supprimer la bobine", + "inspector.delete.spoolBody": "La bobine n° {{id}} de « {{name}} » sera supprimée, ainsi que son historique d’utilisation. Cette action est irréversible.", + "inspector.delete.spoolDone": "Bobine supprimée.", + "inspector.delete.spoolRemaining": "Il lui reste encore {{weight}} de filament. Archivez-la plutôt, si vous voulez simplement l’écarter.", + "inspector.delete.spoolTitle": "Supprimer cette bobine ?", + "inspector.delete.vendor": "Supprimer le fabricant", + "inspector.delete.vendorBody": "« {{name}} » sera supprimé. Cette action est irréversible.", + "inspector.delete.vendorDone": "Fabricant supprimé.", + "inspector.delete.vendorOrphans_many": "Ses {{count}} filaments sont conservés, mais se retrouvent sans fabricant.", + "inspector.delete.vendorOrphans_one": "Son {{count}} filament est conservé, mais se retrouve sans fabricant.", + "inspector.delete.vendorOrphans_other": "Ses {{count}} filaments sont conservés, mais se retrouvent sans fabricant.", + "inspector.delete.vendorTitle": "Supprimer ce fabricant ?", + "inspector.duplicateFilament": "Dupliquer", + "inspector.empty": "Sélectionnez une bobine, un filament ou un fabricant dans la liste pour en afficher le détail ici.", + "inspector.enterValidLength": "Saisissez une longueur valide.", + "inspector.enterValidWeight": "Saisissez un poids valide.", + "inspector.loading": "Chargement…", + "inspector.manageExtraFields": "Gérer les champs", + "inspector.measuredHelp": "Poids total de la bobine et du filament restant, tel que lu sur une balance.", + "inspector.multi": "multi ×{{count}}", + "inspector.newGross": "Nouveau poids brut :", + "inspector.noExtraFields": "Aucun pour l’instant — ajoutez vos propres champs pour suivre ce que Spoolman ne gère pas.", + "inspector.notFound": "Cet élément est introuvable. Il a peut-être été supprimé.", + "inspector.ofRemaining": "sur {{weight}} restants · {{length}} m", + "inspector.openFilament": "Ouvrir le filament", + "inspector.openLink": "Ouvrir {{url}} dans un nouvel onglet", + "inspector.openManufacturer": "Ouvrir le fabricant", + "inspector.override.byFilament": "Remplacé par ce filament — {{value}}", + "inspector.override.bySpool": "Remplacé par cette bobine — {{value}}", + "inspector.override.overridesFilament": "Remplace le filament — {{value}}", + "inspector.override.overridesManufacturer": "Remplace le fabricant — {{value}}", + "inspector.specs": "Caractéristiques — modifiables sur place", + "inspector.spoolsCount": "Bobines · {{count}}", + "inspector.spoolsTotalRemaining": "{{weight}} au total", + "inspector.used": "consommé", + "inspector.vendorSub_many": "{{count}} filaments", + "inspector.vendorSub_one": "{{count}} filament", + "inspector.vendorSub_other": "{{count}} filaments", "kofi": "Me donner un pourboire sur Ko-fi", - "labels.addHead": "", - "labels.addQr": "", - "labels.addRect": "", - "labels.addSwatch": "", - "labels.addText": "", - "labels.align": "", - "labels.alignCenter": "", - "labels.alignLeft": "", - "labels.alignRight": "", - "labels.blank": "", - "labels.bold": "", - "labels.canvasHint": "", - "labels.centerLogo": "", - "labels.chooseField": "", - "labels.clearFill": "", - "labels.copies": "", - "labels.cornerRadiusMm": "", - "labels.createFirst": "", - "labels.cutGuides": "", - "labels.deleteConfirm": "", - "labels.deleteElement": "", - "labels.designName": "", - "labels.designerDesc": "", - "labels.designerTitle": "", - "labels.dpi": "", - "labels.dpiHint": "", - "labels.duplicate": "", - "labels.fields.bedTemp": "", - "labels.fields.diameterMm": "", - "labels.fields.groupVendor": "", - "labels.fields.initialG": "", - "labels.fields.netWeightG": "", - "labels.fields.remainingG": "", - "labels.fill": "", - "labels.fitWidth": "", - "labels.fitWidthHint": "", - "labels.fontMm": "", - "labels.gridInfo": "", - "labels.hMm": "", - "labels.heightMm": "", - "labels.hintNowrap": "", - "labels.hintSwatch": "", - "labels.hintWrap": "", + "labels.addHead": "Ajouter", + "labels.addQr": "QR code", + "labels.addRect": "Rectangle", + "labels.addSwatch": "Pastille de couleur", + "labels.addText": "Texte / champ", + "labels.align": "Alignement", + "labels.alignCenter": "Centré", + "labels.alignLeft": "À gauche", + "labels.alignRight": "À droite", + "labels.blank": "Vous n’avez encore aucun modèle d’étiquette.", + "labels.bold": "Gras", + "labels.canvasHint": "Glissez pour déplacer · cliquez pour sélectionner · poignées pour redimensionner.", + "labels.centerLogo": "Centrer le logo Spoolman", + "labels.chooseField": "Choisissez un champ…", + "labels.clearFill": "Supprimer le remplissage (contour seul)", + "labels.copies": "Exemplaires", + "labels.cornerRadiusMm": "Rayon des coins", + "labels.createFirst": "Créez votre première étiquette", + "labels.cutGuides": "Repères de coupe", + "labels.deleteConfirm": "Supprimer ce modèle d’étiquette ?", + "labels.deleteElement": "Supprimer l’élément", + "labels.designName": "Nom du modèle", + "labels.designerDesc": "Concevez des étiquettes à QR code avec n’importe quel champ de bobine, de filament ou de fabricant, puis imprimez-les sur planche ou sur une imprimante d’étiquettes. Les modèles sont enregistrés sur le serveur.", + "labels.designerTitle": "Éditeur d’étiquettes", + "labels.dpi": "Résolution", + "labels.dpiHint": "Accordez-la à votre imprimante pour que les petites étiquettes restent nettes : 203 ppp pour la plupart des imprimantes thermiques, 300 ou plus pour le laser et le jet d’encre.", + "labels.duplicate": "Dupliquer", + "labels.exportDescAml": "Enregistre un fichier d’étiquette .aml par étiquette sélectionnée, chacune de {{w}} × {{h}} mm. S’ouvre dans les applications LPAPI fournies avec la plupart des imprimantes d’étiquettes thermiques, qui lisent la taille physique dans le fichier.", + "labels.exportDescPng": "Enregistre une image PNG par étiquette sélectionnée, chacune de {{w}} × {{h}} mm.", + "labels.exportFormat": "Format de fichier", + "labels.exportFormatOptions.aml": "Fichier d’étiquette AML", + "labels.exportFormatOptions.png": "Image PNG", + "labels.fields.bedTemp": "Temp. plateau", + "labels.fields.diameterMm": "Diamètre (mm)", + "labels.fields.groupVendor": "Fabricant", + "labels.fields.initialG": "Initial (g)", + "labels.fields.netWeightG": "Poids net (g)", + "labels.fields.remainingG": "Restant (g)", + "labels.filamentsSelected_many": "{{count}} filaments sélectionnés", + "labels.filamentsSelected_one": "{{count}} filament sélectionné", + "labels.filamentsSelected_other": "{{count}} filaments sélectionnés", + "labels.fill": "Remplissage", + "labels.fitWidth": "Ajuster la largeur aux colonnes", + "labels.fitWidthHint": "Règle la largeur de l’étiquette pour que le nombre de colonnes choisi remplisse la page.", + "labels.fontMm": "Police", + "labels.gridInfo": "{{cols}} × {{rows}} = {{perPage}} étiquettes par page", + "labels.hMm": "H", + "labels.heightMm": "Hauteur", + "labels.hintNowrap": "Le texte reste sur une seule ligne ; ce qui dépasse la largeur est coupé.", + "labels.hintSwatch": "Rempli avec la ou les couleurs du filament de la bobine au moment de l’impression.", + "labels.hintWrap": "Encadrez un champ pour le masquer lorsqu’il est vide :", "labels.imageDesc": "", - "labels.imageZipNote": "", - "labels.insertField": "", - "labels.kind.qr": "", - "labels.kind.rect": "", - "labels.kind.swatch": "", - "labels.kind.text": "", - "labels.labelSize": "", - "labels.labelType": "", - "labels.layout": "", - "labels.modeImage": "", - "labels.modeLabel": "", - "labels.modeSheet": "", - "labels.new": "", - "labels.newText": "", - "labels.noDesignsOption": "", - "labels.noFilaments": "", - "labels.noSpools": "", - "labels.onePerLabel": "", - "labels.preparing": "", - "labels.preview": "", - "labels.previewWith": "", - "labels.radiusMm": "", - "labels.sampleData": "", - "labels.saved": "", - "labels.saving": "", - "labels.searchFilaments": "", - "labels.searchSpools": "", - "labels.selectAllShort": "", - "labels.selectAtLeastOne": "", - "labels.selectAtLeastOneFilament": "", - "labels.selectDesign": "", - "labels.selectElement": "", - "labels.selectNoneShort": "", - "labels.selectRecentHint": "", - "labels.selectRecentShort": "", - "labels.showingFilament": "", - "labels.showingReal": "", - "labels.showingSpool": "", - "labels.showingTags": "", - "labels.sizeMm": "", - "labels.skipHint": "", - "labels.sortHint": "", - "labels.sortId": "", - "labels.sortNewest": "", - "labels.stroke": "", - "labels.strokeMm": "", - "labels.tabDesign": "", - "labels.tabPrint": "", - "labels.textTemplate": "", - "labels.typeFilament": "", - "labels.typeHint": "", - "labels.typeSpool": "", - "labels.unknownFilament": "", - "labels.wMm": "", - "labels.widthMm": "", - "labels.wrapText": "", - "labels.xMm": "", - "labels.yMm": "", - "library.apiError": "", - "library.collapseGroup": "", - "library.emptyBody": "", - "library.emptyFiltered": "", - "library.emptyTitle": "", - "library.expandGroup": "", - "library.filterBy": "", - "library.groupBy": "", - "library.groupNone": "", - "library.nUnused": "", - "library.noLocation": "", - "library.noValues": "", - "library.openGroup": "", - "library.openManufacturer": "", - "library.section.extra": "", - "library.section.filament": "", - "library.section.spool": "", - "library.section.vendor": "", - "library.showMore": "", - "library.sort.nozzle": "", - "library.sortBy": "", - "library.unassigned": "", - "library.unitGroups": "", - "library.unitSpools": "", - "library.unused": "", - "library.unusedGroup": "", - "library.unusedGroupMixed": "", - "library.unusedSub": "", - "library.unusedSubMixed": "", - "library.used": "", - "library.usedAgo": "", + "labels.imageZipNote": "Au-delà de {{threshold}} étiquettes, le tout est livré dans un seul fichier zip.", + "labels.insertField": "Insérer un champ", + "labels.kind.qr": "QR code", + "labels.kind.rect": "Rectangle", + "labels.kind.swatch": "Pastille", + "labels.kind.text": "Texte", + "labels.labelSize": "Taille de l’étiquette", + "labels.labelType": "Type d’étiquette", + "labels.layout": "Disposition", + "labels.modeImage": "Fichiers", + "labels.modeLabel": "Imprimante d’étiquettes", + "labels.modeSheet": "Planche (mosaïque)", + "labels.new": "Nouveau", + "labels.newText": "Nouveau texte", + "labels.noDesignsOption": "Aucun modèle pour l’instant", + "labels.noFilaments": "Aucun filament.", + "labels.noSpools": "Aucune bobine.", + "labels.onePerLabel": "Une page de {{w}} × {{h}} mm par étiquette.", + "labels.preparing": "Préparation…", + "labels.preview": "Aperçu", + "labels.previewWith": "Aperçu avec", + "labels.printN_many": "Imprimer {{count}} étiquettes", + "labels.printN_one": "Imprimer {{count}} étiquette", + "labels.printN_other": "Imprimer {{count}} étiquettes", + "labels.radiusMm": "Rayon", + "labels.sampleData": "Données d’exemple", + "labels.saveAsFormat": "Enregistrer au format {{format}}", + "labels.saved": "Enregistré", + "labels.saving": "Enregistrement…", + "labels.searchFilaments": "Rechercher des filaments…", + "labels.searchSpools": "Rechercher des bobines…", + "labels.selectAllShort": "Tout", + "labels.selectAtLeastOne": "Sélectionnez au moins une bobine.", + "labels.selectAtLeastOneFilament": "Sélectionnez au moins un filament.", + "labels.selectDesign": "Choisir un modèle d’étiquette", + "labels.selectElement": "Sélectionnez un élément pour le modifier, ou ajoutez-en un depuis la palette.", + "labels.selectNoneShort": "Aucun", + "labels.selectRecentHint": "Sélectionner les bobines ajoutées dans les dernières 24 heures", + "labels.selectRecentShort": "Récentes ({{count}})", + "labels.showingFilament": "Affichage du filament n° {{id}}", + "labels.showingReal": "Affichage des données réelles de la bobine.", + "labels.showingSpool": "Affichage de la bobine n° {{id}}", + "labels.showingTags": "Les champs s’affichent sous forme d’étiquettes tant que vous n’avez pas choisi une bobine ci-dessus.", + "labels.sizeMm": "Taille", + "labels.skipHint": "« Ignorer des cases » laisse ce nombre de cases vides avant la première étiquette, ce qui permet de réutiliser une planche entamée : comptez les étiquettes déjà décollées, de gauche à droite en partant du haut.", + "labels.sortHint": "Trier les bobines", + "labels.sortId": "N°", + "labels.sortNewest": "Plus récentes", + "labels.stroke": "Contour", + "labels.strokeMm": "Contour", + "labels.tabDesign": "Conception", + "labels.tabPrint": "Impression", + "labels.textTemplate": "Texte / modèle", + "labels.typeFilament": "Filament", + "labels.typeHint": "Les étiquettes de filament omettent les champs propres aux bobines, et leur QR code renvoie vers le filament plutôt que vers une bobine.", + "labels.typeSpool": "Bobine", + "labels.unknownFilament": "Filament inconnu", + "labels.wMm": "L", + "labels.widthMm": "Largeur", + "labels.wrapText": "Retour à la ligne", + "labels.xMm": "X", + "labels.yMm": "Y", + "library.apiError": "Impossible de joindre l’API de Spoolman. Le serveur est-il démarré ?", + "library.collapseGroup": "Masquer ces bobines", + "library.dateFilter.ago": "il y a {{span}}", + "library.dateFilter.between": "{{from}} — {{to}}", + "library.dateFilter.customRange": "Période personnalisée", + "library.dateFilter.from": "Du", + "library.dateFilter.last": "{{span}} écoulés", + "library.dateFilter.never": "Jamais", + "library.dateFilter.olderThan": "Plus ancien que {{span}}", + "library.dateFilter.since": "Depuis le {{date}}", + "library.dateFilter.to": "Au (facultatif)", + "library.dateFilter.until": "Jusqu’au {{date}}", + "library.emptyBody": "Ajoutez votre première bobine pour commencer à suivre votre filament.", + "library.emptyFiltered": "Aucune correspondance parmi les {{unit}} avec les filtres actuels.", + "library.emptyTitle": "Aucune bobine pour l’instant", + "library.expandGroup": "Afficher ces bobines", + "library.filterBy": "Filtrer par", + "library.groupBy": "Grouper", + "library.groupNone": "Aucun (liste simple)", + "library.groupSpools_many": "{{count}} bobines", + "library.groupSpools_one": "{{count}} bobine", + "library.groupSpools_other": "{{count}} bobines", + "library.nUnused": "×{{count}} neuves", + "library.noLocation": "sans emplacement", + "library.noSpools": "Aucune bobine", + "library.noValues": "Aucune valeur", + "library.openGroup": "Ouvrir {{name}}", + "library.openManufacturer": "Ouvrir le fabricant {{name}}", + "library.resizeList": "Redimensionner la liste (double-clic pour réinitialiser)", + "library.reverseSort": "Inverser l’ordre de tri", + "library.section.extra": "Champs supplémentaires", + "library.section.filament": "Filament", + "library.section.spool": "Bobine", + "library.section.vendor": "Fabricant", + "library.showMore": "afficher {{count}} de plus", + "library.sort.nozzle": "Temp. buse", + "library.sortBy": "Trier", + "library.unassigned": "non assignée", + "library.unitGroups": "groupes", + "library.unitSpools": "bobines", + "library.unused": "neuve", + "library.unusedGroup": "{{count}} neuves · {{weight}} g chacune", + "library.unusedGroupMixed": "{{count}} neuves", + "library.unusedSub": "{{weight}} g chacune · {{location}}", + "library.unusedSubMixed": "{{location}}", + "library.used": "entamée", + "library.usedAgo": "utilisée il y a {{time}}", "loading": "Chargement", "locations.locations": "Emplacements", "locations.newLocation": "Créer un emplacement", "locations.noLocation": "Pas de localisation", "locations.noLocationsHelp": "Cette page vous permet d'organiser vos bobines par lieu, ajoutez une bobine pour commencer !", - "nav.labels": "", - "nav.library": "", + "nav.labels": "Étiquettes", + "nav.library": "Bibliothèque", "no": "Non", "notifications.error": "Erreur (status code : {{statusCode}})", "notifications.saveSuccessful": "Sauvegarde réussie !", - "pagination.empty": "", - "pagination.next": "", - "pagination.pageSize": "", - "pagination.perPage": "", - "pagination.prev": "", - "pagination.range": "", + "pagination.empty": "Aucune {{unit}}", + "pagination.next": "Page suivante", + "pagination.pageSize": "Taille de page", + "pagination.perPage": "{{size}} par page", + "pagination.prev": "Page précédente", + "pagination.range": "{{from}}–{{to}} sur {{total}} {{unit}}", "printing.generic.columns": "Colonnes", "printing.generic.customSize": "Personnaliser", "printing.generic.description": "Ajustez les paramètres ci-dessous pour obtenir la mise en page d'impression souhaitée. Gardez à l'esprit que les imprimantes et votre système d'exploitation peuvent appliquer leurs propres marges et mises à l'échelle, il se peut donc que vous deviez faire quelques essais avant que tout soit correct. Testez-le sur une feuille de papier ordinaire avant d'imprimer les étiquettes en elles mêmes.", "printing.generic.dimensions": "Dimensions", - "printing.generic.gridTooWide": "", + "printing.generic.gridTooWide": "Les étiquettes sont plus larges que la page. Réduisez le nombre de colonnes, l’espacement ou les marges.", "printing.generic.helpMargin": "Les marges doivent être configurées en fonction de votre papier à étiquettes et de votre imprimante, leur modification aura une incidence sur la taille de l'ensemble de la grille.", "printing.generic.helpPrinterMargin": "La zone de sécurité doit être définie en fonction de la proximité du bord du papier que votre imprimante peut imprimer, la modification de ces paramètres n'affectera pas l'ensemble de la grille.", "printing.generic.horizontalSpacing": "Espacement horizontal", @@ -343,11 +433,11 @@ "printing.generic.skipItems": "Articles ignorés", "printing.generic.verticalSpacing": "Espacement vertical", "printing.qrcode.button": "Imprimer des étiquettes", - "printing.qrcode.customUrl.caveat": "", - "printing.qrcode.customUrl.hint": "", - "printing.qrcode.customUrl.label": "", + "printing.qrcode.customUrl.caveat": "Une URL personnalisée ne ramènera pas vers Spoolman à la lecture — utilisez-la pour pointer un QR code imprimé vers une application externe ou un autre serveur.", + "printing.qrcode.customUrl.hint": "Insérez l’identifiant de la bobine où vous voulez à l’aide du marqueur", + "printing.qrcode.customUrl.label": "Modèle d’URL personnalisée", "printing.qrcode.useHTTPUrl.label": "Lien du QR code", - "printing.qrcode.useHTTPUrl.options.custom": "", + "printing.qrcode.useHTTPUrl.options.custom": "URL personnalisée", "printing.qrcode.useHTTPUrl.options.default": "Défaut", "printing.qrcode.useHTTPUrl.options.url": "URL", "printing.qrcode.useHTTPUrl.preview": "Prévisualisation :", @@ -356,31 +446,32 @@ "printing.spoolSelect.selectedTotal_one": "{{count}} bobine sélectionnée", "printing.spoolSelect.selectedTotal_other": "{{count}} bobines sélectionnées", "scanner.description": "Scannez un code QR de Spoolman pour afficher les détails de la bobine.", - "scanner.error.inUse": "", + "scanner.error.inUse": "La caméra est déjà utilisée par une autre application.", "scanner.error.insecureContext": "La page n'est pas servie par HTTPS.", "scanner.error.notAllowed": "Vous n'avez pas autorisé l'accès à l'appareil photo.", "scanner.error.notFound": "Aucun appareil photo n'a été trouvé.", "scanner.error.streamApiNotSupported": "Le navigateur ne prend pas en charge l'API MediaStream.", "scanner.error.unknown": "Une erreur inconnue s'est produite. ({{error}})", - "scanner.starting": "", + "scanner.starting": "Démarrage de la caméra…", "scanner.title": "Scanner de code QR", - "search.colorHint": "", - "search.noResults": "", - "search.searching": "", - "search.section.filaments": "", - "search.section.spools": "", - "search.section.vendors": "", - "search.threshold": "", - "search.unknownFilament": "", - "settings.appearance.tab": "", - "settings.appearance.theme.dark": "", - "settings.appearance.theme.desc": "", - "settings.appearance.theme.label": "", - "settings.appearance.theme.light": "", - "settings.appearance.theme.system": "", - "settings.extraFields.addChoice": "", - "settings.extraFields.addChoicesFirst": "", - "settings.extraFields.addEntityField": "", + "search.colorHint": "Les noms de couleurs doivent être saisis en anglais.", + "search.moreSpools": "+{{count}} de plus", + "search.noResults": "Aucun résultat", + "search.searching": "Recherche en cours…", + "search.section.filaments": "Filaments", + "search.section.spools": "Bobines", + "search.section.vendors": "Fabricants", + "search.threshold": "Correspondance de couleur", + "search.unknownFilament": "Filament inconnu", + "settings.appearance.tab": "Apparence", + "settings.appearance.theme.dark": "Sombre", + "settings.appearance.theme.desc": "Thème de couleurs (ce navigateur uniquement)", + "settings.appearance.theme.label": "Thème", + "settings.appearance.theme.light": "Clair", + "settings.appearance.theme.system": "Système", + "settings.extraFields.addChoice": "ajouter un choix…", + "settings.extraFields.addChoicesFirst": "Ajoutez d’abord des choix", + "settings.extraFields.addEntityField": "Ajouter un champ {{entity}}", "settings.extraFields.booleanFalse": "Non", "settings.extraFields.booleanTrue": "Oui", "settings.extraFields.deleteConfirm": "Supprimer le champ {{name}} de {{entity}} ?", @@ -388,14 +479,14 @@ "settings.extraFields.description.intro": "Ici vous pouvez ajouter des champs personnalisés supplémentaires à vos entités.", "settings.extraFields.description.keyUsage": "La clé correspond à ce que les autres programmes lisent/écrivent, donc si votre champs doit s'intégrer avec un programme tiers, assurez-vous de le configurer correctement. La valeur par défaut n'est appliquées qu'aux nouveaux éléments.", "settings.extraFields.description.tableViews": "Les champs supplementaires ne peuvent pas être triés ou filtrés dans les vues de table.", - "settings.extraFields.editorEdit": "", - "settings.extraFields.editorNew": "", - "settings.extraFields.errors.choiceNeeded": "", - "settings.extraFields.errors.choicesRemoved": "", - "settings.extraFields.errors.deleteFailed": "", - "settings.extraFields.errors.keyFormat": "", - "settings.extraFields.errors.nameRequired": "", - "settings.extraFields.errors.saveFailed": "", + "settings.extraFields.editorEdit": "Modifier le champ {{entity}}", + "settings.extraFields.editorNew": "Nouveau champ {{entity}}", + "settings.extraFields.errors.choiceNeeded": "Un champ à choix nécessite au moins un choix.", + "settings.extraFields.errors.choicesRemoved": "Les choix existants ne peuvent pas être retirés : {{choices}}.", + "settings.extraFields.errors.deleteFailed": "La suppression du champ a échoué.", + "settings.extraFields.errors.keyFormat": "La clé ne doit contenir que des minuscules, des chiffres et des tirets bas.", + "settings.extraFields.errors.nameRequired": "Le nom est obligatoire.", + "settings.extraFields.errors.saveFailed": "L’enregistrement du champ a échoué.", "settings.extraFields.fieldType.boolean": "Booléen", "settings.extraFields.fieldType.choice": "Choix", "settings.extraFields.fieldType.datetime": "Date et heure", @@ -404,13 +495,13 @@ "settings.extraFields.fieldType.integer": "Entier", "settings.extraFields.fieldType.integerRange": "Plage d'entier", "settings.extraFields.fieldType.text": "Texte", - "settings.extraFields.max": "", - "settings.extraFields.min": "", - "settings.extraFields.multiSuffix": "", - "settings.extraFields.multiple": "", - "settings.extraFields.namePlaceholder": "", + "settings.extraFields.max": "max", + "settings.extraFields.min": "min", + "settings.extraFields.multiSuffix": " · multiple", + "settings.extraFields.multiple": "Multiple", + "settings.extraFields.namePlaceholder": "Nom affiché", "settings.extraFields.nonUniqueKeyError": "La clé doit être unique.", - "settings.extraFields.none": "", + "settings.extraFields.none": "Aucun champ supplémentaire défini pour {{entity}}.", "settings.extraFields.params.choices": "Choix", "settings.extraFields.params.defaultValue": "Valeur par défaut", "settings.extraFields.params.fieldType": "Type", @@ -418,26 +509,42 @@ "settings.extraFields.params.name": "Nom", "settings.extraFields.params.order": "Ordre", "settings.extraFields.params.unit": "Unité", - "settings.extraFields.saveField": "", + "settings.extraFields.reorderChoice": "Faites glisser, ou utilisez les flèches du clavier, pour réordonner ce choix.", + "settings.extraFields.saveField": "Enregistrer le champ", "settings.extraFields.tab": "Champs additionnel", "settings.general.baseUrl.label": "Base de l'URL", "settings.general.baseUrl.tooltip": "La base de l'URL à utiliser lors de la génération de QR codes.", - "settings.general.currency.desc": "", + "settings.general.currency.desc": "Code ISO à trois lettres (par exemple EUR, USD) utilisé pour les prix", "settings.general.currency.label": "Devise", - "settings.general.roundPrices.label": "", - "settings.general.roundPrices.tooltip": "", + "settings.general.roundPrices.label": "Arrondir les prix", + "settings.general.roundPrices.tooltip": "Arrondir les prix au nombre entier le plus proche.", "settings.general.tab": "Général", "settings.header": "Paramètres", - "settings.language.desc": "", - "settings.language.label": "", - "settings.library.lowThreshold.desc": "", - "settings.library.lowThreshold.label": "", - "settings.library.tab": "", + "settings.language.desc": "Langue de l’interface (ce navigateur uniquement)", + "settings.language.label": "Langue", + "settings.library.lowThreshold.desc": "Les bobines à ce poids ou en dessous sont signalées en rouge (ce navigateur uniquement)", + "settings.library.lowThreshold.label": "Seuil de stock bas", + "settings.library.tab": "Comportement de la bibliothèque", + "settings.scanner.autoNavigate.desc": "Ouvrir automatiquement, dans ce navigateur, la bobine ou le filament lu par un lecteur de puces.", + "settings.scanner.autoNavigate.label": "Ouverture automatique", + "settings.scanner.docs": "Comment configurer un lecteur de puces", + "settings.scanner.lastSeen": "il y a {{when}}", + "settings.scanner.pair": "Associer par lecture", + "settings.scanner.reader.anyDesc": "Les lectures de n’importe quel lecteur ouvrent les bobines dans ce navigateur. Vous pouvez en associer un en particulier si vous souhaitez un contrôle plus fin. C’est aussi ce lecteur qui servira à ajouter de nouvelles puces aux bobines et aux filaments.", + "settings.scanner.reader.label": "Lecteur de puces", + "settings.scanner.reader.pairedDesc": "Seules les lectures de ce lecteur ouvrent les bobines dans ce navigateur.", + "settings.scanner.recent": "Lecteurs récents", + "settings.scanner.recentNone": "Aucun lecteur en mémoire. Configurez un lecteur de puces, puis lisez une puce pour le voir apparaître ici.", + "settings.scanner.tab": "Lecture de puces", + "settings.scanner.unpair": "Utiliser n’importe quel lecteur", + "settings.scanner.use": "Utiliser celui-ci", + "settings.scanner.waiting": "Présentez une puce sur le lecteur que vous souhaitez associer…", + "sponsor": "Soutenez-moi sur GitHub", "spool.fields.archived": "Archivé", "spool.fields.comment": "Commentaire", "spool.fields.filament": "Filament", "spool.fields.firstUsed": "Première utilisation", - "spool.fields.id": "ID", + "spool.fields.id": "Identifiant", "spool.fields.lastUsed": "Dernière utilisation", "spool.fields.location": "Localisation", "spool.fields.lotNr": "N° de Lot", @@ -446,30 +553,85 @@ "spool.fields.price": "Prix", "spool.fields.registered": "Enregistré", "spool.fields.remainingWeight": "Poids restant", + "spool.fields.spoolWeight": "Poids de la bobine", "spool.fields.usedWeight": "Poids utilisé", + "spool.fields.weight": "Poids", "spool.fieldsHelp.location": "L'emplacement de la bobine si vous stockez vos bobines à plusieurs endroits.", "spool.fieldsHelp.lotNr": "Numéro de lot du fabricant. Peut être utilisé pour s'assurer que la couleur d'une impression est homogène si plusieurs bobines sont utilisées.", "spool.fieldsHelp.measuredWeight": "Le poids du filament et de la bobine.", "spool.fieldsHelp.price": "Prix d'une bobine complète. S'il n'est pas défini, le prix du filament sera pris en compte.", "spool.fieldsHelp.remainingWeight": "La quantité de filament restant sur la bobine. Pour une nouvelle bobine, cela devrait correspondre au poids de la bobine.", + "spool.fieldsHelp.spoolWeight": "Ce que pèse cette bobine à vide. Laissez le champ libre pour suivre le poids de bobine du filament, et renseignez-le lorsque cette bobine précise diffère — un rouleau rembobiné, ou un mandrin carton remplacé par du plastique. C’est ce qui est soustrait de la mesure lorsque vous ajustez au poids pesé : une valeur erronée fausse aussi la quantité de filament restante.", "spool.fieldsHelp.usedWeight": "Combien de filament a été utilisé à partir de la bobine. Une bobine neuve devrait avoir 0g utilisé.", + "spool.fieldsHelp.weight": "Quantité de filament que contenait cette bobine pleine (poids net, sans compter la bobine elle-même). Laissez le champ libre pour suivre le poids du filament, et renseignez-le lorsque cette bobine précise diffère — un rouleau entamé, ou le même filament acheté sur une bobine plus grande.", "spool.form.measurementType.length": "Longueur", "spool.form.measurementType.weight": "Poids", "spool.spool": "Bobines", - "topbar.addSpools": "", - "topbar.searchPlaceholder": "", + "tags.add": "Ajouter une puce", + "tags.added": "Puce associée.", + "tags.addedOn": "Ajoutée le {{date}}", + "tags.modal.alreadyHere": "Cette puce identifie déjà cette bobine.", + "tags.modal.alreadyHereFilament": "Cette puce identifie déjà ce filament.", + "tags.modal.badUid": "L’UID d’une puce est hexadécimal, par exemple 04A2B3C4.", + "tags.modal.checking": "Vérification…", + "tags.modal.failed": "L’association de la puce a échoué.", + "tags.modal.filamentNamed": "le filament {{name}}", + "tags.modal.free": "Cette puce n’est encore associée à rien.", + "tags.modal.intro": "Présenter cette puce sur un lecteur ouvrira désormais la bobine n° {{id}}.", + "tags.modal.introFilament": "Présenter cette puce sur un lecteur ouvrira désormais ce filament.", + "tags.modal.lastSeenOn": "{{reader}} a lu {{uid}} en dernier.", + "tags.modal.link": "Associer la puce", + "tags.modal.linking": "Association en cours…", + "tags.modal.move": "La déplacer ici depuis la n° {{id}}", + "tags.modal.moveFailed": "Le déplacement de la puce a échoué. Elle peut n’être désormais associée à aucune des deux bobines — essayez de l’associer à nouveau.", + "tags.modal.moveFailedFilament": "Le déplacement de la puce a échoué. Elle peut n’être désormais associée à rien — essayez de l’associer à nouveau.", + "tags.modal.moveHere": "La déplacer ici", + "tags.modal.moving": "Déplacement en cours…", + "tags.modal.phoneReading": "Maintenez la puce contre votre téléphone…", + "tags.modal.phoneScan": "Lire une puce avec ce téléphone", + "tags.modal.spoolNamed": "la bobine n° {{id}}, {{name}}", + "tags.modal.spoolShort": "la bobine n° {{id}}", + "tags.modal.takenBy": "Actuellement associée à {{spool}}.", + "tags.modal.title": "Associer une puce", + "tags.modal.uidHelp": "Les séparateurs et la casse n’ont aucune importance : 04:a2:b3:c4, 04-A2-B3-C4 et 04a2b3c4 désignent la même puce.", + "tags.modal.uidLabel": "UID de la puce", + "tags.modal.uidPlaceholder": "04A2B3C4", + "tags.modal.useLastSeen": "L’utiliser", + "tags.modal.waitingAny": "En attente d’une lecture sur n’importe quel lecteur.", + "tags.modal.waitingOn": "En attente d’une lecture sur {{reader}}.", + "tags.moved": "Puce déplacée ici depuis la bobine n° {{id}}.", + "tags.movedFromFilament": "Puce déplacée ici depuis le filament {{name}}.", + "tags.nfc.insecureContext": "La lecture des puces nécessite une connexion sécurisée. Ouvrez Spoolman en HTTPS pour utiliser le NFC de votre téléphone.", + "tags.nfc.notAllowed": "Ce site n’est pas autorisé à utiliser le NFC. Accordez-lui la permission dans les réglages de site de votre navigateur, puis réessayez.", + "tags.nfc.notReadable": "Le lecteur NFC est indisponible — une autre application l’utilise peut-être.", + "tags.nfc.notSupported": "Ce téléphone n’a pas de NFC, ou le NFC est désactivé dans les réglages du système.", + "tags.nfc.unknown": "La lecture de la puce a échoué.", + "tags.none": "Aucune puce associée.", + "tags.scan.openedFilament": "Puce lue : filament {{name}} ouvert.", + "tags.scan.openedSpool": "Puce lue : bobine n° {{id}} ouverte, {{name}}.", + "tags.scan.unknown": "Puce inconnue {{uid}}. Ouvrez la bobine à laquelle elle appartient et utilisez « Ajouter une puce » pour l’associer.", + "tags.section": "Puces", + "tags.unlink": "Dissocier", + "tags.unlinkBody": "La puce {{uid}} cessera d’identifier cette bobine. Rien n’est écrit sur la puce elle-même : vous pourrez l’associer à nouveau — à cette bobine ou à une autre — quand vous le souhaiterez.", + "tags.unlinkBodyFilament": "La puce {{uid}} cessera d’identifier ce filament. Rien n’est écrit sur la puce elle-même : vous pourrez l’associer à nouveau — ici ou ailleurs — quand vous le souhaiterez.", + "tags.unlinkFailed": "La dissociation de la puce a échoué.", + "tags.unlinkTitle": "Dissocier cette puce ?", + "tags.unlinked": "Puce dissociée.", + "tags.unlinking": "Dissociation en cours…", + "topbar.addSpools": "Ajouter des bobines", + "topbar.searchPlaceholder": "Rechercher — essayez « red » ou « pla »", "unknown": "Inconnu", - "validation.hexDigits": "", - "validation.maxChars": "", - "validation.mustBeGt": "", - "validation.mustBeMax": "", - "validation.mustBeMin": "", - "validation.mustBeNumber": "", - "validation.required": "", + "validation.hexDigits": "Utilisez 6 ou 8 chiffres hexadécimaux", + "validation.maxChars": "{{max}} caractères au maximum", + "validation.mustBeGt": "Doit être supérieur à {{value}}", + "validation.mustBeMax": "Doit être inférieur ou égal à {{value}}", + "validation.mustBeMin": "Doit être supérieur ou égal à {{value}}", + "validation.mustBeNumber": "Doit être un nombre", + "validation.required": "Obligatoire", "vendor.fields.comment": "Commentaire", "vendor.fields.emptySpoolWeight": "Poids de la bobine vide", "vendor.fields.externalId": "ID externe", - "vendor.fields.id": "ID", + "vendor.fields.id": "Identifiant", "vendor.fields.name": "Nom", "vendor.fields.registered": "Enregistré", "vendor.fieldsHelp.emptySpoolWeight": "Le poids d'une bobine vide de ce fabricant.",