fr.ts 121 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361
  1. export default {
  2. // Navigation
  3. nav: {
  4. printers: 'Imprimantes',
  5. archives: 'Archives',
  6. queue: 'File d\'attente',
  7. stats: 'Statistiques',
  8. profiles: 'Profils',
  9. maintenance: 'Maintenance',
  10. projects: 'Projets',
  11. inventory: 'Filament',
  12. files: 'Gestionnaire de fichiers',
  13. settings: 'Paramètres',
  14. system: 'Système',
  15. collapseSidebar: 'Réduire la barre latérale',
  16. expandSidebar: 'Développer la barre latérale',
  17. update: 'Mise à jour',
  18. updateAvailable: 'Mise à jour disponible : v{{version}}',
  19. updateAvailableBanner: 'La version {{version}} est disponible !',
  20. viewUpdate: 'Voir la mise à jour',
  21. viewOnGithub: 'Voir sur GitHub',
  22. keyboardShortcuts: 'Raccourcis clavier (?)',
  23. switchToLight: 'Passer au mode clair',
  24. switchToDark: 'Passer au mode sombre',
  25. smartSwitches: 'Interrupteurs intelligents',
  26. logout: 'Déconnexion',
  27. },
  28. // Common
  29. common: {
  30. save: 'Enregistrer',
  31. saving: 'Enregistrement...',
  32. cancel: 'Annuler',
  33. delete: 'Supprimer',
  34. edit: 'Modifier',
  35. add: 'Ajouter',
  36. close: 'Fermer',
  37. confirm: 'Confirmer',
  38. loading: 'Chargement...',
  39. error: 'Erreur',
  40. success: 'Succès',
  41. warning: 'Avertissement',
  42. enabled: 'Activé',
  43. disabled: 'Désactivé',
  44. yes: 'Oui',
  45. no: 'Non',
  46. on: 'On',
  47. off: 'Off',
  48. all: 'Tous',
  49. none: 'Aucun',
  50. search: 'Rechercher',
  51. filter: 'Filtrer',
  52. sort: 'Trier',
  53. refresh: 'Actualiser',
  54. download: 'Télécharger',
  55. upload: 'Téléverser',
  56. actions: 'Actions',
  57. status: 'Statut',
  58. name: 'Nom',
  59. description: 'Description',
  60. date: 'Date',
  61. time: 'Heure',
  62. hours: 'heures',
  63. minutes: 'minutes',
  64. seconds: 'secondes',
  65. days: 'jours',
  66. enable: 'Activer',
  67. disable: 'Désactiver',
  68. permissions: 'Autorisations',
  69. noPrinters: 'Aucune imprimante configurée',
  70. noData: 'Aucune donnée disponible',
  71. linkNotFound: 'Lien non trouvé',
  72. required: 'Requis',
  73. optional: 'Optionnel',
  74. dismiss: 'Ignorer',
  75. apply: 'Appliquer',
  76. reset: 'Réinitialiser',
  77. export: 'Exporter',
  78. import: 'Importer',
  79. clear: 'Effacer',
  80. selectAll: 'Tout sélectionner',
  81. deselectAll: 'Tout désélectionner',
  82. noChange: '— Aucun changement —',
  83. unchanged: 'Inchangé',
  84. unassigned: 'Non assigné',
  85. unknown: 'Inconnu',
  86. unknownError: 'Erreur inconnue',
  87. today: 'Aujourd\'hui',
  88. asap: 'Dès que possible',
  89. overdue: 'En retard',
  90. now: 'Maintenant',
  91. collapse: 'Réduire',
  92. expand: 'Développer',
  93. viewArchive: 'Voir l\'archive',
  94. viewInFileManager: 'Voir dans le gestionnaire de fichiers',
  95. addedBy: 'Ajouté par {{username}}',
  96. prints: 'impressions',
  97. more: '+{{count}} de plus',
  98. ascending: 'Croissant',
  99. descending: 'Décroissant',
  100. printer: 'Imprimante',
  101. remove: 'Retirer',
  102. type: 'Type',
  103. print: 'Imprimer',
  104. rename: 'Renommer',
  105. move: 'Déplacer',
  106. create: 'Créer',
  107. duplicate: 'Dupliquer',
  108. left: 'Gauche',
  109. right: 'Droite',
  110. },
  111. // Printers page
  112. printers: {
  113. title: 'Imprimantes',
  114. addPrinter: 'Ajouter une imprimante',
  115. editPrinter: 'Modifier l\'imprimante',
  116. deletePrinter: 'Supprimer l\'imprimante',
  117. printerName: 'Nom de l\'imprimante',
  118. serialNumber: 'Numéro de série',
  119. ipAddress: 'Adresse IP / Nom d\'hôte',
  120. accessCode: 'Code d\'accès',
  121. model: 'Modèle',
  122. nozzleCount: 'Nombre de buses',
  123. autoArchive: 'Auto-archivage',
  124. status: {
  125. available: 'Disponible',
  126. idle: 'Inactif',
  127. printing: 'Impression en cours',
  128. paused: 'En pause',
  129. offline: 'Hors ligne',
  130. error: 'Erreur',
  131. finished: 'Terminé',
  132. unknown: 'Inconnu',
  133. },
  134. temperatures: {
  135. nozzle: 'Buse',
  136. bed: 'Plateau',
  137. chamber: 'Chambre',
  138. },
  139. progress: '{{percent}}% terminé',
  140. timeRemaining: '{{time}} restant',
  141. deleteConfirm: 'Êtes-vous sûr de vouloir supprimer "{{name}}" ?',
  142. maintenanceOk: 'Maintenance OK',
  143. maintenanceWarning: '{{count}} avertissement',
  144. maintenanceWarning_plural: '{{count}} avertissements',
  145. maintenanceDue: '{{count}} échéance',
  146. maintenanceDue_plural: '{{count}} échéances',
  147. // Sort options
  148. sort: {
  149. name: 'Nom',
  150. status: 'Statut',
  151. model: 'Modèle',
  152. location: 'Emplacement',
  153. ascending: 'Tri croissant',
  154. descending: 'Tri décroissant',
  155. },
  156. // Card size
  157. cardSize: {
  158. small: 'Petites cartes',
  159. medium: 'Cartes moyennes',
  160. large: 'Grandes cartes',
  161. extraLarge: 'Très grandes cartes',
  162. },
  163. // Controls
  164. hideOffline: 'Masquer hors ligne',
  165. nextAvailable: 'Prochaine disponible',
  166. powerOn: 'Allumer',
  167. offlinePrintersWithPlugs: 'Imprimantes hors ligne avec prises connectées',
  168. noPrintersConfigured: 'Aucune imprimante configurée pour le moment',
  169. // Printer card
  170. readyToPrint: 'Prête à imprimer',
  171. external: 'Externe',
  172. deleteArchives: 'Supprimer les archives d\'impression',
  173. noLabel: 'Pas d\'étiquette',
  174. printPreview: 'Aperçu avant impression',
  175. width: 'Largeur',
  176. height: 'Hauteur',
  177. noObjectsFound: 'Aucun objet trouvé',
  178. objectsLoadedOnPrintStart: 'Les objets sont chargés au début de l\'impression',
  179. willBeSkipped: 'Sera sauté',
  180. name: 'Nom',
  181. serialCannotBeChanged: 'Le numéro de série ne peut pas être modifié',
  182. locationHelp: 'Utilisé pour grouper les imprimantes et filtrer la file d\'attente',
  183. // WiFi signal strength
  184. wifiSignal: {
  185. veryWeak: 'Très faible',
  186. weak: 'Faible',
  187. fair: 'Moyen',
  188. good: 'Bon',
  189. excellent: 'Excellent',
  190. },
  191. // Maintenance
  192. maintenanceUpToDate: 'Maintenance à jour - Cliquez pour voir',
  193. // Chamber light
  194. chamberLightOn: 'Allumer la lumière de la chambre',
  195. chamberLightOff: 'Éteindre la lumière de la chambre',
  196. // Files
  197. browseFiles: 'Parcourir les fichiers de l\'imprimante',
  198. // Smart plug
  199. autoOffAfterPrint: 'Extinction auto après impression',
  200. autoOffExecuted: 'Extinction auto exécutée - rallumez pour réinitialiser',
  201. // HMS errors
  202. hmsErrors: 'Erreurs HMS',
  203. viewHmsErrors: 'Voir {{count}} erreur(s) HMS',
  204. // Actions
  205. resume: 'Reprendre',
  206. pause: 'Pause',
  207. stop: 'Arrêter',
  208. camera: 'Caméra',
  209. skipObject: 'Sauter l\'objet',
  210. reconnect: 'Reconnecter',
  211. mqttDebug: 'Débogage MQTT',
  212. activeNozzle: 'Active : buse {{nozzle}}',
  213. nozzleRack: 'Rack à buses',
  214. nozzleDocked: 'Rangée',
  215. nozzleMounted: 'Montée',
  216. nozzleActive: 'Active',
  217. nozzleIdle: 'Inactive',
  218. nozzleDiameter: 'Diamètre',
  219. nozzleType: 'Type',
  220. nozzleStatus: 'Statut',
  221. nozzleFilament: 'Filament',
  222. nozzleWear: 'Usure',
  223. nozzleMaxTemp: 'Temp Max',
  224. nozzleSerial: 'Série',
  225. nozzleHardenedSteel: 'Acier Trempé',
  226. nozzleStainlessSteel: 'Acier Inoxydable',
  227. nozzleTungstenCarbide: 'Carbure de Tungstène',
  228. nozzleFlow: 'Débit',
  229. nozzleHighFlow: 'Haut débit',
  230. nozzleStandardFlow: 'Standard',
  231. // Firmware
  232. firmwareUpdate: 'Mise à jour Firmware',
  233. firmwareInstructions: 'Sur l\'écran de l\'imprimante, allez dans',
  234. firmwareNav: 'Naviguez vers',
  235. settings: 'Paramètres',
  236. firmware: 'Firmware',
  237. // Discovery
  238. discoverPrinters: 'Découvrir les imprimantes',
  239. searching: 'Recherche...',
  240. manualEntry: 'Saisie manuelle',
  241. addFromCloud: 'Ajouter depuis le Cloud',
  242. // Toast messages
  243. toast: {
  244. printerDeleted: 'Imprimante supprimée',
  245. printerAdded: 'Imprimante ajoutée',
  246. printerUpdated: 'Imprimante mise à jour',
  247. failedToDelete: 'Échec de la suppression',
  248. failedToAdd: 'Échec de l\'ajout',
  249. failedToUpdate: 'Échec de la mise à jour',
  250. commandSent: 'Commande envoyée',
  251. failedToSendCommand: 'Échec de l\'envoi de la commande',
  252. turnedOn: '{{name}} allumée',
  253. failedToPowerOn: 'Échec de l\'allumage de {{name}}',
  254. scriptTriggered: 'Script déclenché',
  255. printStopped: 'Impression arrêtée',
  256. printPaused: 'Impression en pause',
  257. printResumed: 'Impression reprise',
  258. referenceDeleted: 'Référence supprimée',
  259. detectionAreaSaved: 'Zone de détection enregistrée',
  260. failedToRunScript: 'Échec du script',
  261. failedToStopPrint: 'Échec de l\'arrêt',
  262. failedToPausePrint: 'Échec de la mise en pause',
  263. failedToResumePrint: 'Échec de la reprise',
  264. failedToControlChamberLight: 'Échec du contrôle de la lumière',
  265. failedToUpdateSetting: 'Échec de mise à jour du paramètre',
  266. failedToSkipObjects: 'Échec du saut d\'objets',
  267. failedToRereadRfid: 'Échec lecture RFID',
  268. failedToCheckPlate: 'Échec vérification plateau',
  269. failedToUpdateLabel: 'Échec mise à jour étiquette',
  270. failedToDeleteReference: 'Échec suppression référence',
  271. failedToSaveDetectionArea: 'Échec enregistrement zone',
  272. plateCheckEnabled: 'Vérification plateau activée',
  273. plateCheckDisabled: 'Vérification plateau désactivée',
  274. calibrationSaved: 'Calibration enregistrée !',
  275. calibrationFailed: 'Échec de la calibration',
  276. rfidRereadInitiated: 'Lecture RFID initiée',
  277. },
  278. // Connection status
  279. connection: {
  280. connected: 'Connecté',
  281. offline: 'Hors ligne',
  282. },
  283. // Queue info
  284. queue: {
  285. inQueue: '{{count}} impression en file',
  286. inQueue_plural: '{{count}} impressions en file',
  287. },
  288. // Controls section
  289. controls: 'Contrôles',
  290. // RFID
  291. rfid: {
  292. reread: 'Relire RFID',
  293. },
  294. // Permissions
  295. permission: {
  296. noAdd: 'Pas d\'autorisation pour ajouter',
  297. noEdit: 'Pas d\'autorisation pour modifier',
  298. noDelete: 'Pas d\'autorisation pour supprimer',
  299. noControl: 'Pas d\'autorisation pour contrôler',
  300. noFiles: 'Pas d\'autorisation pour les fichiers',
  301. noAmsRfid: 'Pas d\'autorisation pour le RFID',
  302. noSmartPlugControl: 'Pas d\'autorisation pour les prises',
  303. },
  304. // Add/Edit modal
  305. modal: {
  306. addTitle: 'Ajouter une imprimante',
  307. editTitle: 'Modifier l\'imprimante',
  308. myPrinter: 'Mon imprimante',
  309. selectModel: 'Choisir un modèle...',
  310. locationGroup: 'Emplacement / Groupe (optionnel)',
  311. locationPlaceholder: 'ex: Atelier, Bureau',
  312. autoArchiveLabel: 'Auto-archiver les impressions terminées',
  313. fromPrinterSettings: 'Depuis les paramètres imprimante',
  314. modelOptional: 'Modèle (optionnel)',
  315. saveChanges: 'Enregistrer les modifications',
  316. },
  317. // Skip objects
  318. skipObjects: {
  319. tooltip: 'Sauter des objets',
  320. onlyWhilePrinting: 'Sauter (uniquement pendant l\'impression)',
  321. requiresMultiple: 'Sauter (nécessite 2+ objets)',
  322. title: 'Sauter des objets',
  323. matchIdsInfo: 'Faites correspondre les IDs avec l\'écran de l\'imprimante',
  324. printerShowsIds: 'L\'écran affiche les IDs des objets sur le plateau',
  325. skipSelected: 'Sauter la sélection',
  326. skipping: 'Saut en cours...',
  327. noObjectsSelected: 'Aucun objet sélectionné',
  328. selectObjectsToSkip: 'Sélectionnez les objets à ignorer',
  329. skipped: 'sauté',
  330. objectsSkipped: 'Objets sautés',
  331. activeCount: '{{count}} actifs',
  332. waitForLayer: 'Attendez la couche 2 pour sauter des objets (actuelle : {{layer}})',
  333. skip: 'Sauter',
  334. confirmTitle: 'Sauter l\'objet ?',
  335. confirmMessage: 'Voulez-vous vraiment sauter "{{name}}" ? Cette action est irréversible.',
  336. },
  337. // Confirm modals
  338. confirm: {
  339. deleteTitle: 'Supprimer l\'imprimante',
  340. deleteMessage: 'Supprimer "{{name}}" ? Cela retirera tous les paramètres de connexion.',
  341. deleteArchivesNote: 'Tout l\'historique sera définitivement supprimé.',
  342. keepArchivesNote: 'L\'historique sera conservé mais plus associé à cette imprimante.',
  343. stopTitle: 'Arrêter l\'impression',
  344. stopMessage: 'Arrêter l\'impression sur "{{name}}" ?',
  345. stopButton: 'Arrêter',
  346. pauseTitle: 'Mettre en pause',
  347. pauseMessage: 'Mettre en pause l\'impression sur "{{name}}" ?',
  348. pauseButton: 'Pause',
  349. resumeTitle: 'Reprendre l\'impression',
  350. resumeMessage: 'Reprendre l\'impression sur "{{name}}" ?',
  351. resumeButton: 'Reprendre',
  352. powerOnTitle: 'Allumer l\'imprimante',
  353. powerOnMessage: 'Allumer "{{name}}" ?',
  354. powerOnButton: 'Allumer',
  355. powerOffTitle: 'Éteindre l\'imprimante',
  356. powerOffMessage: 'Éteindre "{{name}}" ?',
  357. powerOffWarning: 'ATTENTION : "{{name}}" imprime ! L\'éteindre maintenant peut endommager l\'imprimante.',
  358. powerOffButton: 'Éteindre',
  359. },
  360. // Discovery
  361. discovery: {
  362. title: 'Découvrir les imprimantes',
  363. searching: 'Recherche...',
  364. scanning: 'Scan en cours...',
  365. scanProgress: 'Scan... {{scanned}}/{{total}}',
  366. foundPrinters: '{{count}} imprimante(s) trouvée(s)',
  367. noPrintersFound: 'Aucune imprimante trouvée',
  368. noPrintersFoundSubnet: 'Aucune imprimante dans ce sous-réseau.',
  369. noPrintersFoundNetwork: 'Aucune imprimante sur le réseau.',
  370. allConfigured: 'Toutes les imprimantes trouvées sont déjà configurées.',
  371. alreadyAdded: 'Déjà ajoutée',
  372. select: 'Sélectionner',
  373. manualEntry: 'Saisie manuelle',
  374. addFromCloud: 'Ajouter depuis le Cloud',
  375. subnetToScan: 'Sous-réseau à scanner',
  376. dockerNote: 'Docker détecté. Entrez le sous-réseau en notation CIDR. Nécessite network_mode: host.',
  377. scanSubnet: 'Scanner le sous-réseau',
  378. discoverNetwork: 'Découvrir sur le réseau',
  379. scanningSubnet: 'Scan du sous-réseau pour imprimantes Bambu...',
  380. scanningNetwork: 'Scan du réseau...',
  381. serialRequired: 'Série requis',
  382. unknown: 'Inconnu',
  383. failedToStart: 'Échec du démarrage de la découverte',
  384. },
  385. // Filaments section
  386. filaments: 'Filaments',
  387. // Camera
  388. openCameraOverlay: 'Ouvrir la caméra en superposition',
  389. openCameraWindow: 'Ouvrir la caméra dans une fenêtre',
  390. // Firmware
  391. firmwareUpdateAvailable: 'Mise à jour firmware : {{current}} → {{latest}}',
  392. firmwareUpToDate: 'Firmware {{version}} — À jour',
  393. firmwareUpdateButton: 'Mettre à jour',
  394. // Plate detection
  395. plateDetection: {
  396. noPermission: 'Pas d\'autorisation de modification',
  397. enabledClick: 'Vérification activée - Cliquez pour désactiver',
  398. disabledClick: 'Vérification désactivée - Cliquez pour activer',
  399. manageCalibration: 'Gérer la calibration de détection',
  400. calibrationRequired: 'Calibration requise',
  401. calibrationInstructions: 'Videz le plateau, puis cliquez sur Calibrer.',
  402. calibrationDescription: 'Capture une image de référence du plateau vide.',
  403. calibrationTip: 'Conseil : Stockez jusqu\'à 5 références. Le système utilise la meilleure correspondance.',
  404. plateEmpty: 'Le plateau semble vide',
  405. objectsDetected: 'Objets détectés sur le plateau',
  406. confidence: 'Confiance',
  407. difference: 'Différence',
  408. analysisPreview: 'Aperçu de l\'analyse :',
  409. analysisLegend: 'Cadre vert = zone, Rouge = différences',
  410. savedReferences: 'Références ({{count}}/{{max}})',
  411. deleteReference: 'Supprimer la référence',
  412. labelPlaceholder: 'Étiquette...',
  413. clickToEdit: '{{label}} - Modifier',
  414. clickToAddLabel: 'Ajouter une étiquette',
  415. },
  416. // Fans
  417. fans: {
  418. partCooling: 'Ventilateur pièce',
  419. auxiliary: 'Ventilateur auxiliaire',
  420. chamber: 'Ventilateur chambre',
  421. },
  422. // HMS errors
  423. clickToViewHmsErrors: 'Cliquez pour voir les erreurs HMS',
  424. estimatedCompletion: 'Fin estimée',
  425. slotOptions: 'Options du slot',
  426. // Firmware modal
  427. firmwareModal: {
  428. title: 'Mise à jour Firmware',
  429. titleUpToDate: 'Infos Firmware',
  430. currentVersion: 'Actuelle :',
  431. latestVersion: 'Dernière :',
  432. releaseNotes: 'Notes de version',
  433. checkingPrereqs: 'Vérification des prérequis...',
  434. sdCardReady: 'Carte SD prête. Cliquez pour téléverser.',
  435. uploadedSuccess: 'Firmware téléversé !',
  436. applyInstructions: 'Pour appliquer sur l\'imprimante :',
  437. step1: 'Sur l\'écran, allez dans Paramètres',
  438. step2: 'Allez dans Firmware',
  439. step3: 'Sélectionnez "Mettre à jour depuis carte SD"',
  440. step4: 'Prévoyez 10-20 minutes',
  441. done: 'Terminé',
  442. starting: 'Démarrage...',
  443. uploadFirmware: 'Téléverser le Firmware',
  444. uploadFailed: 'Échec du téléversement : {{error}}',
  445. uploadedToast: 'Firmware téléversé ! Lancez la mise à jour sur l\'écran.',
  446. },
  447. accessCodePlaceholder: 'Laissez vide pour garder l\'actuel',
  448. // ROI editor
  449. roi: {
  450. title: 'Zone de détection (ROI)',
  451. xStart: 'Début X',
  452. yStart: 'Début Y',
  453. width: 'Largeur',
  454. height: 'Hauteur',
  455. instruction: 'Ajustez le cadre vert pour cibler le plateau.',
  456. },
  457. },
  458. // Archives page
  459. archives: {
  460. title: 'Archives d\'impression',
  461. searchPlaceholder: 'Chercher dans les archives...',
  462. filterByPrinter: 'Par imprimante',
  463. filterByStatus: 'Par statut',
  464. sortBy: 'Trier par',
  465. sortNewest: 'Plus récent',
  466. sortOldest: 'Plus ancien',
  467. sortName: 'Nom',
  468. sortDuration: 'Durée',
  469. sortLargest: 'Plus volumineux',
  470. sortSmallest: 'Plus léger',
  471. sortSize: 'Taille',
  472. noArchives: 'Aucune archive trouvée',
  473. noArchivesSearch: 'Aucune archive ne correspond',
  474. noArchivesYet: 'Pas encore d\'archive',
  475. loadingArchives: 'Chargement...',
  476. releaseToUpload: 'Relâcher pour téléverser',
  477. showAll: 'Tout afficher',
  478. showFavoritesOnly: 'Favoris uniquement',
  479. gridView: 'Grille',
  480. listView: 'Liste',
  481. calendarView: 'Calendrier',
  482. manageTags: 'Gérer les tags',
  483. showFailedPrints: 'Afficher les échecs',
  484. hideFailedPrints: 'Masquer les échecs',
  485. printTime: 'Temps d\'impression',
  486. filamentUsed: 'Filament utilisé',
  487. cost: 'Coût',
  488. reprint: 'Réimprimer',
  489. preview: 'Aperçu',
  490. deleteArchive: 'Supprimer l\'archive',
  491. deleteConfirm: 'Supprimer cette archive ?',
  492. favorite: 'Favori',
  493. unfavorite: 'Retirer des favoris',
  494. viewDetails: 'Détails',
  495. status: {
  496. completed: 'Réussi',
  497. failed: 'Échoué',
  498. stopped: 'Arrêté',
  499. },
  500. toast: {
  501. source3mfAttached: 'Source 3MF attachée : {{filename}}',
  502. failedUploadSource3mf: 'Échec téléversement 3MF',
  503. source3mfRemoved: 'Source 3MF retirée',
  504. failedRemoveSource3mf: 'Échec retrait 3MF',
  505. f3dAttached: 'F3D attaché : {{filename}}',
  506. failedUploadF3d: 'Échec téléversement F3D',
  507. f3dRemoved: 'F3D retiré',
  508. failedRemoveF3d: 'Échec retrait F3D',
  509. timelapseAttached: 'Timelapse attaché : {{filename}}',
  510. timelapseAlreadyAttached: 'Timelapse déjà présent',
  511. noMatchingTimelapse: 'Pas de timelapse correspondant',
  512. failedScanTimelapse: 'Échec scan timelapse',
  513. failedAttachTimelapse: 'Échec attache timelapse',
  514. archiveDeleted: 'Archive supprimée',
  515. failedDeleteArchive: 'Échec suppression',
  516. addedToFavorites: 'Ajouté aux favoris',
  517. removedFromFavorites: 'Retiré des favoris',
  518. projectUpdated: 'Projet mis à jour',
  519. failedUpdateProject: 'Échec mise à jour projet',
  520. linkCopied: 'Lien copié',
  521. failedCopyLink: 'Échec copie lien',
  522. photoDeleted: 'Photo supprimée',
  523. failedDeletePhoto: 'Échec suppression photo',
  524. failedDeleteArchives: 'Échec suppression archives',
  525. failedUpdateFavorites: 'Échec mise à jour favoris',
  526. exportDownloaded: 'Export téléchargé',
  527. exportFailed: 'Échec export',
  528. },
  529. menu: {
  530. print: 'Imprimer',
  531. schedule: 'Planifier',
  532. openInBambuStudio: 'Ouvrir dans le Slicer',
  533. slice: 'Découper',
  534. externalLink: 'Lien externe',
  535. viewOnMakerWorld: 'Voir sur MakerWorld',
  536. preview3d: 'Aperçu 3D',
  537. viewTimelapse: 'Voir le Timelapse',
  538. scanForTimelapse: 'Scanner pour Timelapse',
  539. downloadSource3mf: 'Télécharger Source 3MF',
  540. uploadSource3mf: 'Téléverser Source 3MF',
  541. replaceSource3mf: 'Remplacer Source 3MF',
  542. removeSource3mf: 'Retirer Source 3MF',
  543. uploadF3d: 'Téléverser F3D',
  544. replaceF3d: 'Remplacer F3D',
  545. downloadF3d: 'Télécharger F3D',
  546. removeF3d: 'Retirer F3D',
  547. download: 'Télécharger',
  548. copyDownloadLink: 'Copier lien de téléchargement',
  549. qrCode: 'Code QR',
  550. viewPhotos: 'Voir les photos',
  551. viewPhotosCount: 'Voir les photos ({{count}})',
  552. projectPage: 'Page du Projet',
  553. addToFavorites: 'Ajouter aux favoris',
  554. removeFromFavorites: 'Retirer des favoris',
  555. edit: 'Modifier',
  556. goToProject: 'Aller au Projet : {{name}}',
  557. addToProject: 'Ajouter au Projet',
  558. removeFromProject: 'Retirer du Projet',
  559. loading: 'Chargement...',
  560. noProjectsAvailable: 'Aucun projet disponible',
  561. select: 'Sélectionner',
  562. deselect: 'Désélectionner',
  563. delete: 'Supprimer',
  564. },
  565. permission: {
  566. noReprint: 'Pas d\'autorisation de réimpression',
  567. noAddToQueue: 'Pas d\'autorisation pour la file',
  568. noUpdateArchives: 'Pas d\'autorisation de mise à jour',
  569. noUploadFiles: 'Pas d\'autorisation de téléversement',
  570. noDownload: 'Pas d\'autorisation de téléchargement',
  571. noCopyLink: 'Pas d\'autorisation de copie lien',
  572. noDelete: 'Pas d\'autorisation de suppression',
  573. noCreate: 'Pas d\'autorisation de création',
  574. },
  575. card: {
  576. previousPlate: 'Plateau précédent',
  577. nextPlate: 'Plateau suivant',
  578. plateNumber: 'Plateau {{index}}',
  579. moreOptions: 'Clic droit pour plus d\'options',
  580. addToFavorites: 'Ajouter aux favoris',
  581. removeFromFavorites: 'Retirer des favoris',
  582. cancelled: 'annulé',
  583. failed: 'échoué',
  584. duplicate: 'doublon',
  585. duplicateTitle: 'Ce modèle a déjà été imprimé',
  586. openSource3mf: 'Ouvrir 3MF dans Bambu Studio (clic droit pour plus)',
  587. downloadF3d: 'Télécharger fichier Fusion 360',
  588. viewTimelapse: 'Voir timelapse',
  589. viewPhoto: 'Voir 1 photo',
  590. viewPhotos: 'Voir {{count}} photos',
  591. openFolder: 'Ouvrir le dossier : {{name}}',
  592. slicedFile: 'Fichier découpé - prêt',
  593. sourceFile: 'Fichier source uniquement - pas de mapping AMS',
  594. gcode: 'GCODE',
  595. source: 'SOURCE',
  596. project: 'Projet : {{name}}',
  597. estimated: 'Estimé : {{time}}',
  598. actual: 'Réel : {{time}}',
  599. accuracy: 'Précision : {{percent}}%',
  600. filament: '{{weight}}g',
  601. layer: '{{count}} couche',
  602. layers: '{{count}} couches',
  603. object: '{{count}} objet',
  604. objects: '{{count}} objets',
  605. slicedFor: 'Découpé pour {{model}}',
  606. uploadedBy: 'Téléversé par',
  607. noPermissionReprint: 'Pas d\'autorisation de réimpression',
  608. noPermissionEdit: 'Pas d\'autorisation de modification',
  609. noPermissionDelete: 'Pas d\'autorisation de suppression',
  610. reprint: 'Réimprimer',
  611. schedulePrint: 'Planifier',
  612. schedule: 'Planifier',
  613. openInBambuStudio: 'Ouvrir dans le Slicer',
  614. openInBambuStudioToSlice: 'Ouvrir dans le Slicer pour découper',
  615. slice: 'Découper',
  616. externalLink: 'Lien externe',
  617. makerWorld: 'MakerWorld : {{designer}}',
  618. viewProject: 'Voir projet',
  619. noExternalLink: 'Aucun lien externe',
  620. preview3d: 'Aperçu 3D',
  621. download: 'Télécharger',
  622. edit: 'Modifier',
  623. delete: 'Supprimer',
  624. },
  625. modal: {
  626. deleteArchive: 'Supprimer l\'archive',
  627. deleteConfirm: 'Supprimer "{{name}}" ? Cette action est irréversible.',
  628. deleteButton: 'Supprimer',
  629. removeSource3mf: 'Retirer Source 3MF',
  630. removeSource3mfConfirm: 'Retirer le fichier 3MF de "{{name}}" ?',
  631. removeButton: 'Retirer',
  632. removeF3d: 'Retirer F3D',
  633. removeF3dConfirm: 'Retirer le fichier Fusion 360 de "{{name}}" ?',
  634. timelapse: '{{name}} - Timelapse',
  635. selectTimelapse: 'Choisir un Timelapse',
  636. selectTimelapseDesc: 'Sélectionnez manuellement le timelapse :',
  637. deleteArchives: 'Supprimer les archives',
  638. deleteArchivesConfirm: 'Supprimer {{count}} archive(s) ?',
  639. deleteCount: 'Supprimer {{count}}',
  640. },
  641. page: {
  642. title: 'Archives',
  643. printsCount: '{{filtered}} sur {{total}} impressions',
  644. dropFilesHere: 'Déposez les fichiers .3mf ici',
  645. releaseToUpload: 'Relâcher pour téléverser',
  646. only3mfSupported: 'Seuls les fichiers .3mf sont supportés',
  647. close: 'Fermer',
  648. selected: '{{count}} sélectionnés',
  649. selectAll: 'Tout sélectionner',
  650. tags: 'Tags',
  651. project: 'Projet',
  652. favorite: 'Favori',
  653. delete: 'Supprimer',
  654. toggledFavorites: 'Favoris mis à jour pour {{count}} archive(s)',
  655. failedUpdateFavorites: 'Échec mise à jour favoris',
  656. archivesDeleted: '{{count}} archive(s) supprimée(s)',
  657. failedDeleteArchives: 'Échec suppression',
  658. photoDeleted: 'Photo supprimée',
  659. failedDeletePhoto: 'Échec suppression photo',
  660. },
  661. list: {
  662. name: 'Nom',
  663. printer: 'Imprimante',
  664. date: 'Date',
  665. size: 'Taille',
  666. actions: 'Actions',
  667. hasTimelapse: 'A un timelapse',
  668. },
  669. },
  670. // Queue page
  671. queue: {
  672. title: 'File d\'attente',
  673. subtitle: 'Gérez vos travaux d\'impression',
  674. addToQueue: 'Ajouter à la file',
  675. // Print modal
  676. print: 'Imprimer',
  677. reprint: 'Réimprimer',
  678. schedulePrint: 'Planifier',
  679. editQueueItem: 'Modifier l\'élément',
  680. printToPrinters: 'Imprimer sur {{count}} imprimantes',
  681. queueToPrinters: 'Ajouter à la file pour {{count}} imprimantes',
  682. sending: 'Envoi...',
  683. sendingProgress: 'Envoi {{current}}/{{total}}...',
  684. adding: 'Ajout...',
  685. addingProgress: 'Ajout {{current}}/{{total}}...',
  686. savingProgress: 'Enregistrement {{current}}/{{total}}...',
  687. clearQueue: 'Vider la file',
  688. clearHistory: 'Effacer l\'historique',
  689. emptyQueue: 'La file est vide',
  690. position: 'Position',
  691. scheduledTime: 'Heure prévue',
  692. moveUp: 'Monter',
  693. moveDown: 'Descendre',
  694. startNow: 'Démarrer maintenant',
  695. printingInProgress: 'Impression en cours...',
  696. viewArchive: 'Voir l\'archive',
  697. viewInFileManager: 'Voir dans le gestionnaire',
  698. itemCount: '{{count}} élément',
  699. itemCount_plural: '{{count}} éléments',
  700. dragToReorder: 'Glisser pour réordonner (ASAP uniquement)',
  701. reorderHint: 'La position n\'affecte que les éléments ASAP.',
  702. addedBy: 'Ajouté par {{name}}',
  703. nextInQueue: 'Prochain en file',
  704. clearPlate: 'Vider plateau & lancer suivant',
  705. clearPlateSuccess: 'Plateau vidé — prêt pour l\'impression suivante',
  706. plateReady: 'Plateau vidé — prêt pour l\'impression suivante',
  707. // Sections
  708. sections: {
  709. currentlyPrinting: 'En cours',
  710. queued: 'En attente',
  711. history: 'Historique',
  712. },
  713. // Status
  714. status: {
  715. pending: 'En attente',
  716. waiting: 'En attente',
  717. printing: 'Impression',
  718. paused: 'En pause',
  719. completed: 'Terminé',
  720. failed: 'Échoué',
  721. skipped: 'Sauté',
  722. cancelled: 'Annulé',
  723. },
  724. // Summary cards
  725. summary: {
  726. printing: 'Impressions',
  727. queued: 'En attente',
  728. totalTime: 'Temps total estimé',
  729. history: 'Historique',
  730. },
  731. // Filters
  732. filter: {
  733. allPrinters: 'Toutes les imprimantes',
  734. unassigned: 'Non assigné',
  735. allStatus: 'Tous les statuts',
  736. allLocations: 'Tous les emplacements',
  737. any: 'Tout',
  738. },
  739. // Sort
  740. sort: {
  741. byPosition: 'Par position',
  742. byName: 'Par nom',
  743. byPrinter: 'Par imprimante',
  744. bySchedule: 'Par planification',
  745. byDate: 'Par date',
  746. ascendingOldest: 'Croissant (plus vieux)',
  747. descendingNewest: 'Décroissant (plus récent)',
  748. },
  749. // Badges
  750. badges: {
  751. staged: 'Préparé',
  752. requiresPrevious: 'Nécessite succès précédent',
  753. autoPowerOff: 'Extinction auto',
  754. },
  755. // Empty state
  756. empty: {
  757. title: 'Aucune impression prévue',
  758. description: 'Planifiez depuis les Archives ou glissez des fichiers ici.',
  759. },
  760. // Time
  761. time: {
  762. asap: 'Dès que possible',
  763. overdue: 'En retard',
  764. now: 'Maintenant',
  765. lessThanMinute: 'Dans moins d\'une minute',
  766. inMinutes: 'Dans {{count}} min',
  767. inHours: 'Dans {{count}} heures',
  768. },
  769. // Actions
  770. actions: {
  771. stopPrint: 'Arrêter',
  772. startPrint: 'Démarrer',
  773. requeue: 'Remettre en file',
  774. },
  775. // Bulk edit
  776. bulkEdit: {
  777. title: 'Modifier {{count}} élément',
  778. title_plural: 'Modifier {{count}} éléments',
  779. description: 'Seuls les changements seront appliqués.',
  780. printer: 'Imprimante',
  781. noChange: '— Aucun changement —',
  782. queueOptions: 'Options de file',
  783. staged: 'Préparé (manuel)',
  784. autoPowerOff: 'Extinction auto après',
  785. requirePrevious: 'Requiert succès précédent',
  786. printOptions: 'Options d\'impression',
  787. bedLevelling: 'Nivellement plateau',
  788. flowCalibration: 'Calibration débit',
  789. vibrationCalibration: 'Vibration (Input Shaper)',
  790. layerInspection: 'Inspection 1ère couche',
  791. timelapse: 'Timelapse',
  792. useAms: 'Utiliser AMS',
  793. applyChanges: 'Appliquer',
  794. selectAll: 'Tout sélectionner',
  795. deselectAll: 'Tout désélectionner',
  796. selected: '{{count}} sélectionnés',
  797. editSelected: 'Modifier la sélection',
  798. cancelSelected: 'Annuler la sélection',
  799. },
  800. // Confirmations
  801. confirm: {
  802. cancelTitle: 'Annuler l\'impression prévue',
  803. cancelMessage: 'Annuler "{{name}}" ?',
  804. stopTitle: 'Arrêter l\'impression',
  805. stopMessage: 'Arrêter "{{name}}" sur l\'imprimante ?',
  806. removeTitle: 'Retirer de l\'historique',
  807. removeMessage: 'Retirer "{{name}}" de l\'historique ?',
  808. clearHistoryTitle: 'Effacer l\'historique',
  809. clearHistoryMessage: 'Retirer les {{count}} éléments ?',
  810. cancelButton: 'Annuler l\'impression',
  811. stopButton: 'Arrêter l\'impression',
  812. thisPrint: 'cette impression',
  813. thisItem: 'cet élément',
  814. },
  815. // Toast messages
  816. toast: {
  817. cancelled: 'Élément annulé',
  818. cancelFailed: 'Échec annulation',
  819. removed: 'Élément retiré',
  820. removeFailed: 'Échec retrait',
  821. stopped: 'Impression arrêtée',
  822. stopFailed: 'Échec arrêt',
  823. released: 'Libéré dans la file',
  824. startFailed: 'Échec démarrage',
  825. reorderFailed: 'Échec réorganisation',
  826. historyCleared: '{{count}} éléments effacés',
  827. clearHistoryFailed: 'Échec effacement',
  828. updateFailed: 'Échec mise à jour',
  829. bulkCancelled: '{{count}} éléments annulés',
  830. bulkCancelFailed: 'Échec annulation',
  831. },
  832. // Permissions
  833. permissions: {
  834. noStopPrint: 'Pas d\'autorisation d\'arrêt',
  835. noStartPrint: 'Pas d\'autorisation de démarrage',
  836. noEdit: 'Pas d\'autorisation de modification',
  837. noCancel: 'Pas d\'autorisation d\'annulation',
  838. noRequeue: 'Pas d\'autorisation de remise en file',
  839. noRemove: 'Pas d\'autorisation de retrait',
  840. noClearHistory: 'Pas d\'autorisation historique',
  841. noEditItems: 'Pas d\'autorisation modification groupée',
  842. noCancelItems: 'Pas d\'autorisation annulation groupée',
  843. },
  844. },
  845. // Statistics page
  846. stats: {
  847. title: 'Tableau de bord',
  848. subtitle: 'Glissez les widgets pour réorganiser. Cliquez sur l\'œil pour masquer.',
  849. overview: 'Vue d\'ensemble',
  850. totalPrints: 'Total impressions',
  851. successRate: 'Taux de succès',
  852. totalPrintTime: 'Temps total d\'impression',
  853. printTime: 'Temps d\'impression',
  854. totalFilament: 'Total filament utilisé',
  855. filamentUsed: 'Filament utilisé',
  856. filamentCost: 'Coût filament',
  857. totalCost: 'Coût total',
  858. energyUsed: 'Énergie consommée',
  859. energyCost: 'Coût énergie',
  860. averagePrintTime: 'Temps moyen par impression',
  861. printsPerDay: 'Impressions par jour',
  862. byPrinter: 'Par imprimante',
  863. printsByPrinter: 'Impressions par imprimante',
  864. byMaterial: 'Par matériau',
  865. byMonth: 'Par mois',
  866. last7Days: '7 derniers jours',
  867. last30Days: '30 derniers jours',
  868. last90Days: '90 derniers jours',
  869. allTime: 'Tout le temps',
  870. // Widgets
  871. quickStats: 'Stats rapides',
  872. printActivity: 'Activité d\'impression',
  873. filamentTypes: 'Types de filament',
  874. filamentTrends: 'Tendances filament',
  875. failureAnalysis: 'Analyse des échecs',
  876. timeAccuracy: 'Précision du temps',
  877. successful: 'Succès :',
  878. failed: 'Échecs :',
  879. perfectEstimate: '100% = estimation parfaite',
  880. noTimeAccuracyData: 'Pas encore de données de précision',
  881. noFilamentData: 'Aucune donnée de filament',
  882. noPrinterData: 'Aucune donnée d\'imprimante',
  883. noPrintData: 'Aucune donnée d\'impression',
  884. noPrintDataLast30Days: 'Aucune impression ces 30 derniers jours',
  885. failureReasons: 'Raisons des échecs',
  886. topFailureReasons: 'Top raisons d\'échec',
  887. failedPrintsCount: '{{failed}} / {{total}} impressions ont échoué',
  888. lastWeekRate: 'Semaine dernière : {{rate}}%',
  889. // Actions
  890. resetLayout: 'Réinitialiser la mise en page',
  891. recalculateCosts: 'Recalculer les coûts',
  892. recalculateCostsHint: 'Recalcule les coûts avec les prix actuels des filaments',
  893. exportStats: 'Exporter les stats',
  894. exportAsCsv: 'Exporter en CSV',
  895. exportAsExcel: 'Exporter en Excel',
  896. hiddenCount: '{{count}} Masqués',
  897. // Toast
  898. exportDownloaded: 'Export téléchargé',
  899. exportFailed: 'Échec export',
  900. layoutReset: 'Mise en page réinitialisée',
  901. recalculatedCosts: 'Coûts recalculés pour {{count}} archives',
  902. recalculateFailed: 'Échec du calcul',
  903. // Loading
  904. loadingStats: 'Chargement des statistiques...',
  905. // Permissions
  906. noPermissionResetLayout: 'Pas d\'autorisation de réinitialisation',
  907. noPermissionRecalculate: 'Pas d\'autorisation de recalcul',
  908. },
  909. // Maintenance page
  910. maintenance: {
  911. title: 'Maintenance',
  912. overview: 'Vue d\'ensemble',
  913. allOk: 'Toute la maintenance est à jour',
  914. dueCount: '{{count}} tâche à faire',
  915. dueCount_plural: '{{count}} tâches à faire',
  916. warningCount: '{{count}} avertissement',
  917. warningCount_plural: '{{count}} avertissements',
  918. totalPrintTime: 'Temps d\'impression total',
  919. nextMaintenance: 'Prochaine maintenance',
  920. nothingDue: 'Rien de prévu',
  921. tasks: 'Tâches',
  922. lastPerformed: 'Dernière réalisation',
  923. interval: 'Intervalle',
  924. hoursRemaining: '{{hours}}h restantes',
  925. hoursOverdue: '{{hours}}h de retard',
  926. markDone: 'Marquer comme fait',
  927. performMaintenance: 'Effectuer la maintenance',
  928. history: 'Historique',
  929. noHistory: 'Aucun historique',
  930. editPrintHours: 'Modifier les heures d\'impression',
  931. currentHours: 'Heures actuelles',
  932. // Tabs
  933. statusTab: 'Statut',
  934. settingsTab: 'Paramètres',
  935. // Status
  936. overdueCount: '{{count}} en retard',
  937. dueSoonCount: '{{count}} bientôt',
  938. dueSoon: 'Bientôt',
  939. allGood: 'Tout va bien',
  940. overdueBy: 'Retard de {{duration}}',
  941. dueIn: 'Dans {{duration}}',
  942. timeLeft: '{{duration}} restant',
  943. // Duration formats
  944. day: '1 jour',
  945. days: '{{count}} jours',
  946. week: '1 semaine',
  947. weeks: '{{count}} semaines',
  948. month: '1 mois',
  949. months: '{{count}} mois',
  950. year: '1 an',
  951. // Settings
  952. maintenanceTypes: 'Types de maintenance',
  953. maintenanceTypesDescription: 'Types système et tâches personnalisées',
  954. addCustomType: 'Ajouter un type',
  955. intervalType: 'Type d\'intervalle',
  956. intervalValue: 'Intervalle ({{type}})',
  957. icon: 'Icône',
  958. documentationLink: 'Lien documentation (optionnel)',
  959. assignToPrinters: 'Assigner aux imprimantes',
  960. selectAtLeastOnePrinter: 'Sélectionnez au moins une imprimante',
  961. addType: 'Ajouter le type',
  962. custom: 'Personnalisé',
  963. printHours: 'Heures d\'impression',
  964. calendarDays: 'Jours calendaires',
  965. exampleName: 'ex: Remplacement filtre HEPA',
  966. viewDocumentation: 'Voir documentation',
  967. timeBasedInterval: 'Intervalle temporel',
  968. // Interval overrides
  969. intervalOverrides: 'Exceptions d\'intervalle',
  970. intervalOverridesDescription: 'Intervalles spécifiques par imprimante',
  971. // Printer assignment
  972. assignedToPrinters: 'Assigné aux imprimantes :',
  973. noPrintersAssigned: 'Aucune imprimante assignée',
  974. addPrinterShort: 'Ajouter :',
  975. printersAssignedClick: '{{count}} imprimante(s) assignée(s) - gérer',
  976. removeFromPrinter: 'Retirer de cette imprimante',
  977. // Types
  978. types: {
  979. lubricateCarbonRods: 'Lubrifier les tiges carbone',
  980. lubricateRails: 'Lubrifier les rails linéaires',
  981. cleanNozzle: 'Nettoyer la buse / hotend',
  982. checkBelts: 'Vérifier la tension des courroies',
  983. cleanBuildPlate: 'Nettoyer le plateau',
  984. checkExtruder: 'Vérifier les engrenages de l\'extrudeur',
  985. checkCooling: 'Vérifier les ventilateurs',
  986. generalInspection: 'Inspection générale',
  987. cleanCarbonRods: 'Nettoyer les tiges carbone',
  988. cleanLinearRails: 'Nettoyer les rails linéaires',
  989. checkPtfeTube: 'Vérifier le tube PTFE',
  990. replaceHepaFilter: 'Remplacer le filtre HEPA',
  991. replaceCarbonFilter: 'Remplacer le filtre charbon',
  992. lubricateLeftNozzleRail: 'Lubrifier le rail de buse gauche',
  993. },
  994. // Toast
  995. maintenanceComplete: 'Maintenance marquée comme faite',
  996. typeUpdated: 'Type mis à jour',
  997. typeDeleted: 'Type supprimé',
  998. printHoursUpdated: 'Heures mises à jour',
  999. printerAssigned: 'Imprimante assignée',
  1000. printerRemoved: 'Imprimante retirée',
  1001. // Confirmation
  1002. deleteTypeConfirm: 'Supprimer "{{name}}" ?',
  1003. // Permissions
  1004. noPermissionUpdate: 'Pas d\'autorisation de mise à jour',
  1005. noPermissionPerform: 'Pas d\'autorisation d\'action',
  1006. noPermissionEditTypes: 'Pas d\'autorisation de modification types',
  1007. noPermissionDeleteTypes: 'Pas d\'autorisation de suppression types',
  1008. noPermissionEditHours: 'Pas d\'autorisation de modification heures',
  1009. noPermissionRemovePrinter: 'Pas d\'autorisation retrait imprimante',
  1010. noPermissionAssignPrinter: 'Pas d\'autorisation assignation',
  1011. noPermissionEditIntervals: 'Pas d\'autorisation modification intervalles',
  1012. // Configure link
  1013. configureSettings: 'Configurer types et intervalles',
  1014. },
  1015. // Settings page
  1016. settings: {
  1017. title: 'Paramètres',
  1018. general: 'Général',
  1019. // Tab names
  1020. tabs: {
  1021. general: 'Général',
  1022. smartPlugs: 'Prises connectées',
  1023. notifications: 'Notifications',
  1024. filament: 'Filament',
  1025. network: 'Réseau',
  1026. apiKeys: 'Clés API',
  1027. virtualPrinter: 'Imprimante virtuelle',
  1028. users: 'Authentification',
  1029. backup: 'Sauvegarde',
  1030. emailAuth: 'Authentification Email',
  1031. },
  1032. // Email settings
  1033. email: {
  1034. smtpSettings: 'Configuration SMTP',
  1035. smtpHost: 'Serveur SMTP',
  1036. smtpPort: 'Port SMTP',
  1037. security: 'Sécurité',
  1038. authentication: 'Authentification',
  1039. username: 'Utilisateur',
  1040. password: 'Mot de passe',
  1041. fromEmail: 'Email expéditeur',
  1042. fromName: 'Nom expéditeur',
  1043. testConnection: 'Tester la connexion SMTP',
  1044. testRecipient: 'Email test destinataire',
  1045. sendTest: 'Envoyer email test',
  1046. sending: 'Envoi...',
  1047. save: 'Enregistrer les paramètres',
  1048. saving: 'Enregistrement...',
  1049. advancedAuth: 'Authentification avancée',
  1050. advancedAuthEnabled: 'L\'authentification avancée est activée',
  1051. advancedAuthEnabledDesc: 'La gestion des utilisateurs par email est active. Les nouveaux utilisateurs recevront un mot de passe auto-généré.',
  1052. advancedAuthDisabled: 'Authentification avancée désactivée',
  1053. advancedAuthDisabledDesc: 'Activez pour les fonctionnalités liées à l\'email (mot de passe oublié, etc).',
  1054. enable: 'Activer',
  1055. disable: 'Désactiver',
  1056. feature1: 'Génération auto et envoi de mots de passe par email',
  1057. feature2: 'Connexion par utilisateur ou email',
  1058. feature3: 'Réinitialisation mot de passe oublié disponible',
  1059. feature4: 'Réinitialisation admin par email',
  1060. // Error messages
  1061. errors: {
  1062. requiredFields: 'Remplissez tous les champs requis',
  1063. usernameRequired: 'L\'utilisateur est requis pour l\'authentification',
  1064. enterTestEmail: 'Entrez une adresse email de test',
  1065. smtpServerAndEmail: 'Serveur et expéditeur requis pour le test',
  1066. usernamePasswordRequired: 'Utilisateur et mot de passe requis pour l\'auth',
  1067. configureSmtpFirst: 'Configurez et testez le SMTP d\'abord',
  1068. },
  1069. // Success messages
  1070. success: {
  1071. settingsSaved: 'Paramètres SMTP enregistrés',
  1072. },
  1073. // Security options
  1074. securityOptions: {
  1075. starttls: 'STARTTLS (Port 587)',
  1076. ssl: 'SSL/TLS (Port 465)',
  1077. none: 'Aucun (Port 25)',
  1078. },
  1079. // Authentication options
  1080. authOptions: {
  1081. enabled: 'Activée',
  1082. disabled: 'Désactivée',
  1083. },
  1084. },
  1085. appearance: 'Apparence',
  1086. notifications: 'Notifications',
  1087. smartPlugs: 'Prises connectées',
  1088. spoolman: 'Spoolman',
  1089. updates: 'Mises à jour',
  1090. language: 'Langue',
  1091. languageDescription: 'Choisissez votre langue',
  1092. theme: 'Thème',
  1093. themeLight: 'Clair',
  1094. themeDark: 'Sombre',
  1095. themeSystem: 'Système',
  1096. defaultView: 'Vue par défaut',
  1097. defaultViewDescription: 'Page affichée au démarrage',
  1098. checkForUpdates: 'Vérifier les mises à jour',
  1099. autoUpdate: 'Mise à jour auto',
  1100. currentVersion: 'Version actuelle',
  1101. latestVersion: 'Dernière version',
  1102. upToDate: 'Bambuddy est à jour',
  1103. updateAvailable: 'Mise à jour disponible',
  1104. // Notifications
  1105. notificationLanguage: 'Langue des notifications',
  1106. notificationLanguageDescription: 'Langue pour les notifications push',
  1107. notificationProviders: 'Fournisseurs de notifications',
  1108. addProvider: 'Ajouter un fournisseur',
  1109. editProvider: 'Modifier le fournisseur',
  1110. providerType: 'Type de fournisseur',
  1111. testNotification: 'Tester la notification',
  1112. testSuccess: 'Notification de test envoyée',
  1113. testFailed: 'Échec de l\'envoi du test',
  1114. quietHours: 'Heures de silence',
  1115. quietHoursDescription: 'Ne pas déranger pendant ces heures',
  1116. quietHoursStart: 'Début',
  1117. quietHoursEnd: 'Fin',
  1118. events: {
  1119. title: 'Événements de notification',
  1120. printStart: 'Impression démarrée',
  1121. printComplete: 'Impression terminée',
  1122. printFailed: 'Impression échouée',
  1123. printStopped: 'Impression arrêtée',
  1124. printProgress: 'Jalons de progression',
  1125. printProgressDescription: 'Notifier à 25%, 50%, 75%',
  1126. printerOffline: 'Imprimante hors ligne',
  1127. printerError: 'Erreur imprimante',
  1128. filamentLow: 'Filament bas',
  1129. maintenanceDue: 'Maintenance due',
  1130. maintenanceDueDescription: 'Notifier quand une tâche est due',
  1131. },
  1132. // Smart Plugs
  1133. smartPlug: {
  1134. title: 'Prises connectées',
  1135. add: 'Ajouter une prise',
  1136. edit: 'Modifier la prise',
  1137. name: 'Nom',
  1138. ipAddress: 'Adresse IP',
  1139. linkedPrinter: 'Imprimante liée',
  1140. autoOn: 'Allumage auto',
  1141. autoOnDescription: 'Allumer au début de l\'impression',
  1142. autoOff: 'Extinction auto',
  1143. autoOffDescription: 'Éteindre après l\'impression',
  1144. offDelay: 'Délai d\'extinction',
  1145. offDelayMinutes: 'Minutes après fin',
  1146. offDelayTemp: 'Quand la buse est sous',
  1147. currentState: 'État actuel',
  1148. turnOn: 'Allumer',
  1149. turnOff: 'Éteindre',
  1150. },
  1151. // Filament Tracking Mode
  1152. filamentTracking: 'Suivi de Filament',
  1153. filamentTrackingDesc: 'Choisissez comment suivre vos bobines. Utilisez l\'inventaire intégré ou connectez un serveur Spoolman.',
  1154. disableFilamentWarnings: 'Désactiver les avertissements de filament',
  1155. disableFilamentWarningsDesc: 'Ne pas afficher les avertissements de filament insuffisant lors de l\'impression ou de la mise en file d\'attente',
  1156. trackingModeBuiltIn: 'Inventaire Intégré',
  1157. trackingModeBuiltInDesc: 'Correspondance RFID et suivi de consommation inclus',
  1158. trackingModeSpoolmanDesc: 'Serveur de gestion externe',
  1159. builtInFeatureRfid: 'Détecte auto les bobines RFID Bambu Lab dans l\'AMS',
  1160. builtInFeatureUsage: 'Suit la consommation par impression',
  1161. builtInFeatureCatalog: 'Gère bobines, couleurs et profils facteur K',
  1162. // Spoolman settings
  1163. spoolmanUrl: 'URL Spoolman',
  1164. spoolmanUrlHint: 'URL de votre serveur Spoolman (ex: http://localhost:7912)',
  1165. spoolmanConnected: 'Connecté',
  1166. spoolmanDisconnected: 'Déconnecté',
  1167. status: 'Statut',
  1168. connect: 'Connecter',
  1169. disconnect: 'Déconnecter',
  1170. howSyncWorks: 'Fonctionnement de la Sync',
  1171. syncInfoRfidOnly: 'Seules les bobines officielles RFID sont synchronisées',
  1172. syncInfoAutoCreate: 'Les bobines sont créées dans Spoolman à la 1ère sync',
  1173. syncInfoThirdPartySkipped: 'Les bobines tierces ou rechargées sont ignorées',
  1174. linkingExistingSpools: 'Lier des bobines existantes',
  1175. linkingExistingSpoolsDesc: 'Pour lier une bobine Spoolman, survolez un slot AMS et cliquez sur "Lier à Spoolman".',
  1176. syncMode: 'Mode de Sync',
  1177. syncModeAuto: 'Automatique',
  1178. syncModeManual: 'Manuel uniquement',
  1179. syncModeAutoDesc: 'Sync auto lors de changements AMS',
  1180. syncModeManualDesc: 'Sync uniquement sur déclenchement manuel',
  1181. syncAmsData: 'Synchroniser AMS',
  1182. syncAmsDataDesc: 'Synchroniser manuellement les données vers Spoolman',
  1183. allPrinters: 'Toutes les imprimantes',
  1184. // Default printer
  1185. noDefaultPrinter: 'Aucune par défaut (demander à chaque fois)',
  1186. // Sidebar
  1187. sidebarOrder: 'Ordre de la barre latérale',
  1188. // Camera
  1189. saveThumbnails: 'Enregistrer les vignettes',
  1190. captureFinishPhoto: 'Prendre une photo à la fin',
  1191. noPrintersConfigured: 'Aucune imprimante configurée',
  1192. // Archive settings
  1193. archiveMode: {
  1194. always: 'Toujours créer une archive',
  1195. never: 'Ne jamais créer d\'archive',
  1196. ask: 'Demander à chaque fois',
  1197. },
  1198. // Updates
  1199. checkForUpdatesLabel: 'Vérifier les mises à jour',
  1200. checkPrinterFirmware: 'Vérifier le firmware imprimante',
  1201. // Queue
  1202. enableRetry: 'Activer la rétentative',
  1203. // Home Assistant
  1204. homeAssistantDescription: 'Contrôler les prises via Home Assistant',
  1205. environmentManagedLabel: '(Géré par l\'environnement)',
  1206. autoEnabledViaEnv: 'Activé via variables d\'environnement',
  1207. urlFromEnvReadOnly: 'Valeur HA_URL (lecture seule)',
  1208. tokenFromEnvReadOnly: 'Valeur HA_TOKEN (lecture seule)',
  1209. // MQTT
  1210. mqttConnectedTo: 'Connecté à',
  1211. // Prometheus
  1212. prometheusDescription: 'Exposer les données au format Prometheus',
  1213. // Smart plugs empty state
  1214. noSmartPlugsTitle: 'Aucune prise configurée',
  1215. noSmartPlugsDescription: 'Ajoutez une prise Tasmota pour suivre l\'énergie et automatiser.',
  1216. // Notifications empty state
  1217. noProvidersTitle: 'Aucun fournisseur configuré',
  1218. noProvidersDescription: 'Ajoutez un fournisseur pour recevoir des alertes.',
  1219. noTemplatesAvailable: 'Aucun modèle dispo. Redémarrez pour les générer.',
  1220. // API permissions
  1221. apiPermissionView: 'Voir statut et file',
  1222. apiPermissionEdit: 'Gérer la file d\'attente',
  1223. // API keys
  1224. apiKeysEmptyTitle: 'Aucune clé API',
  1225. apiKeysEmptyDescription: 'Créez une clé pour vos intégrations.',
  1226. // Users
  1227. noUsersFound: 'Aucun utilisateur trouvé',
  1228. noGroupsFound: 'Aucun groupe trouvé',
  1229. noGroupsAvailable: 'Aucun groupe disponible',
  1230. passwordsDoNotMatch: 'Les mots de passe ne correspondent pas',
  1231. systemGroupWarning: 'Les noms des groupes système sont fixes',
  1232. // Auth disabled
  1233. authDisabledTitle: 'Authentification désactivée',
  1234. authDisabledFeature1: 'Requis pour accéder au système',
  1235. authDisabledFeature2: 'Gestion multi-utilisateurs et groupes',
  1236. authDisabledFeature3: 'Plus de 50 permissions granulaires',
  1237. // User deletion
  1238. userHasCreated: 'Cet utilisateur a créé :',
  1239. userItemsQuestion: 'Que faire de ces éléments ?',
  1240. deleteUserConfirm: 'Supprimer cet utilisateur ?',
  1241. actionCannotBeUndone: 'Cette action est irréversible.',
  1242. // Smart plugs
  1243. addFirstSmartPlug: 'Ajoutez votre première prise',
  1244. // Notifications
  1245. providers: 'Fournisseurs',
  1246. log: 'Journal',
  1247. testAll: 'Tout tester',
  1248. testResults: 'Résultats du test',
  1249. testPassedCount: '{{count}} succès',
  1250. testFailedCount: '{{count}} échecs',
  1251. messageTemplates: 'Modèles de message',
  1252. messageTemplatesDescription: 'Personnalisez les messages par événement.',
  1253. // API Keys section
  1254. apiKeys: 'Clés API',
  1255. apiKeysDescription: 'Créez des clés pour webhooks et API.',
  1256. createKey: 'Créer une clé',
  1257. apiKeyCreated: 'Clé API créée avec succès',
  1258. apiKeyCopyWarning: "Copiez cette clé maintenant - elle ne sera plus affichée !",
  1259. useInApiBrowser: 'Utiliser dans l\'explorateur API',
  1260. createNewApiKey: 'Nouvelle clé API',
  1261. keyName: 'Nom de la clé',
  1262. keyNamePlaceholder: 'ex: Home Assistant, OctoPrint',
  1263. readStatus: 'Lire le statut',
  1264. readStatusDescription: 'Voir les imprimantes et la file',
  1265. manageQueue: 'Gérer la file',
  1266. manageQueueDescription: 'Ajouter/retirer des éléments',
  1267. controlPrinter: 'Contrôler l\'imprimante',
  1268. controlPrinterDescription: 'Pause, reprise, arrêt',
  1269. unnamedKey: 'Clé sans nom',
  1270. lastUsed: 'Dernière utilisation',
  1271. read: 'Lecture',
  1272. control: 'Contrôle',
  1273. createFirstKey: 'Créez votre première clé',
  1274. webhookEndpoints: 'Points de terminaison Webhook',
  1275. webhookApiKeyHint: 'Utilisez la clé dans l\'en-tête X-API-Key.',
  1276. webhook: {
  1277. getAllStatus: 'Tous les statuts',
  1278. getSpecificStatus: 'Statut spécifique',
  1279. addToQueue: 'Ajouter à la file',
  1280. pausePrint: 'Pause',
  1281. resumePrint: 'Reprise',
  1282. stopPrint: 'Arrêt',
  1283. },
  1284. apiBrowser: 'Explorateur API',
  1285. apiBrowserDescription: 'Testez les endpoints API.',
  1286. apiKeyForTesting: 'Clé API pour test',
  1287. apiKeyPlaceholder: 'Collez votre clé pour tester...',
  1288. apiKeyHint: 'Sera envoyée via l\'en-tête X-API-Key.',
  1289. deleteApiKeyTitle: 'Supprimer la clé API',
  1290. deleteApiKeyMessage: 'Les intégrations utilisant cette clé cesseront de fonctionner.',
  1291. deleteKey: 'Supprimer la clé',
  1292. // Filament tab
  1293. amsDisplayThresholds: 'Seuils d\'affichage AMS',
  1294. amsThresholdsDescription: 'Seuils de couleur pour humidité et température.',
  1295. humidity: 'Humidité',
  1296. goodGreen: 'Bon (vert)',
  1297. fairOrange: 'Moyen (orange)',
  1298. aboveFairBad: 'Au-dessus = rouge (mauvais)',
  1299. temperature: 'Température',
  1300. goodBlue: 'Bon (bleu)',
  1301. aboveFairHot: 'Au-dessus = rouge (chaud)',
  1302. historyRetention: 'Rétention d\'historique',
  1303. keepSensorHistory: 'Garder l\'historique pendant',
  1304. historyRetentionDescription: 'Les anciennes données seront supprimées.',
  1305. printModal: 'Fenêtre d\'impression',
  1306. expandCustomMapping: 'Étendre le mapping personnalisé par défaut',
  1307. expandCustomMappingDescription: 'Affiche le mapping AMS par imprimante étendu.',
  1308. // User management
  1309. authentication: 'Authentification',
  1310. authEnabledDescription: 'L\'instance est sécurisée',
  1311. authDisabledDescription: 'Activez pour restreindre l\'accès',
  1312. authDisabledMessage: 'Activez l\'authentification pour gérer comptes et permissions.',
  1313. enableAuthentication: 'Activer l\'authentification',
  1314. currentUser: 'Utilisateur actuel',
  1315. changePassword: 'Changer le mot de passe',
  1316. admin: 'Admin',
  1317. users: 'Utilisateurs',
  1318. addUser: 'Ajouter un utilisateur',
  1319. groups: 'Groupes',
  1320. addGroup: 'Ajouter un groupe',
  1321. system: 'Système',
  1322. noDescription: 'Pas de description',
  1323. userCount: '{{count}} utilisateurs',
  1324. permissionCount: '{{count}} permissions',
  1325. createUser: 'Créer un utilisateur',
  1326. username: 'Nom d\'utilisateur',
  1327. enterUsername: 'Entrez l\'utilisateur',
  1328. password: 'Mot de passe',
  1329. enterPassword: 'Mot de passe (min 6 char)',
  1330. confirmPassword: 'Confirmer le mot de passe',
  1331. confirmPasswordPlaceholder: 'Confirmez le mot de passe',
  1332. // Title tooltips
  1333. viewReleaseOnGitHub: 'Voir la version sur GitHub',
  1334. turnAllPlugsOn: 'Tout allumer',
  1335. turnAllPlugsOff: 'Tout éteindre',
  1336. // Modal: Clear logs
  1337. clearNotificationLogs: 'Effacer les journaux',
  1338. clearLogsMessage: 'Efface définitivement les logs de plus de 30 jours.',
  1339. clearLogs: 'Effacer les logs',
  1340. // Modal: Reset UI
  1341. resetUiPreferences: 'Réinitialiser l\'UI',
  1342. resetUiPreferencesMessage: 'Réinitialise l\'ordre, thème, widgets, etc. N\'affecte pas vos données.',
  1343. resetPreferences: 'Réinitialiser',
  1344. // Modal: Delete group
  1345. deleteGroupTitle: 'Supprimer le groupe',
  1346. deleteGroupMessage: 'Les utilisateurs de ce groupe perdront ces permissions.',
  1347. deleteGroup: 'Supprimer le groupe',
  1348. // Modal: Disable auth
  1349. disableAuthenticationTitle: 'Désactiver l\'authentification',
  1350. disableAuthenticationMessage: 'Instance accessible sans connexion. Les comptes sont conservés.',
  1351. disableAuthentication: 'Désactiver',
  1352. // Additional settings
  1353. configureBambuddy: 'Configurer Bambuddy',
  1354. systemDefault: 'Défaut système',
  1355. archiveSettings: 'Réglages Archives',
  1356. newWindow: 'Nouvelle fenêtre',
  1357. embeddedOverlay: 'Superposition intégrée',
  1358. preferredSlicer: 'Slicer préféré',
  1359. preferredSlicerDescription: 'Application pour ouvrir les fichiers',
  1360. externalCameras: 'Caméras externes',
  1361. costTracking: 'Suivi des coûts',
  1362. printsOnly: 'Impressions uniquement',
  1363. totalConsumption: 'Consommation totale',
  1364. dataManagement: 'Gestion des données',
  1365. clearNotificationLogsDescription: 'Supprimer logs de plus de 30 jours',
  1366. resetUiPreferencesDescription: 'Réinitialise thèmes et affichage sans toucher aux données.',
  1367. enableHomeAssistant: 'Activer Home Assistant',
  1368. enableMqtt: 'Activer MQTT',
  1369. useTls: 'Utiliser TLS',
  1370. enableMetricsEndpoint: 'Activer l\'endpoint Metrics',
  1371. availableMetrics: 'Metrics disponibles',
  1372. editUser: 'Modifier l\'utilisateur',
  1373. deleteUserTitle: 'Supprimer l\'utilisateur',
  1374. groupName: 'Nom du groupe',
  1375. // Placeholders
  1376. leaveEmptyForAnonymous: 'Vide pour anonyme',
  1377. leaveEmptyForNoAuth: 'Vide si pas d\'auth',
  1378. enterNewPassword: 'Nouveau mot de passe',
  1379. confirmNewPassword: 'Confirmer nouveau mdp',
  1380. enterGroupName: 'Entrez le nom du groupe',
  1381. enterDescriptionOptional: 'Description (optionnel)',
  1382. enterCurrentPassword: 'Mdp actuel',
  1383. enterNewPasswordMin6: 'Nouveau mdp (min 6 char)',
  1384. toast: {
  1385. keyCopied: 'Clé copiée',
  1386. copyFailed: 'Échec copie',
  1387. keyAddedToBrowser: 'Clé ajoutée à l\'explorateur',
  1388. clearLogsFailed: 'Échec effacement logs',
  1389. uiPreferencesReset: 'Préférences UI réinitialisées. Rafraîchissement...',
  1390. authDisabled: 'Authentification désactivée',
  1391. authDisableFailed: 'Échec désactivation',
  1392. apiKeyCreated: 'Clé API créée',
  1393. apiKeyDeleted: 'Clé API supprimée',
  1394. userCreated: 'Utilisateur créé',
  1395. userUpdated: 'Utilisateur mis à jour',
  1396. userDeleted: 'Utilisateur supprimé',
  1397. groupCreated: 'Groupe créé',
  1398. groupUpdated: 'Groupe mis à jour',
  1399. groupDeleted: 'Groupe supprimé',
  1400. fillRequiredFields: 'Remplissez les champs requis',
  1401. passwordsDoNotMatch: 'Les mots de passe ne correspondent pas',
  1402. passwordTooShort: 'Minimum 6 caractères',
  1403. enterGroupName: 'Entrez un nom de groupe',
  1404. settingsSaved: 'Paramètres enregistrés',
  1405. cameraSettingsSaved: 'Réglages caméra enregistrés',
  1406. enterCameraUrl: 'Entrez une URL caméra',
  1407. passwordChanged: 'Mot de passe modifié',
  1408. connectionFailed: 'Échec connexion',
  1409. testFailed: 'Échec test',
  1410. cameraConnected: 'Caméra connectée {{resolution}}',
  1411. },
  1412. testConnection: 'Tester la connexion',
  1413. catalog: {
  1414. spoolCatalog: 'Catalogue de Bobines',
  1415. spoolCatalogDescription: 'Poids des bobines vides par marque/type. Utilisé pour le calcul auto du poids restant.',
  1416. searchCatalog: 'Chercher dans le catalogue...',
  1417. addNewEntry: 'Nouvelle Entrée',
  1418. namePlaceholder: 'Nom (ex: Bambu Lab - Plastique)',
  1419. weight: 'Poids',
  1420. type: 'Type',
  1421. default: 'Défaut',
  1422. custom: 'Perso',
  1423. noMatch: 'Aucune entrée correspondante',
  1424. empty: 'Catalogue vide',
  1425. deleteEntry: 'Supprimer l\'entrée',
  1426. deleteConfirm: 'Supprimer "{{name}}" ?',
  1427. resetCatalog: 'Réinitialiser le catalogue',
  1428. resetConfirm: 'Réinitialiser aux valeurs par défaut ? Vos entrées personnalisées seront supprimées.',
  1429. loadFailed: 'Échec chargement catalogue',
  1430. nameWeightRequired: 'Nom et poids requis',
  1431. entryAdded: 'Entrée ajoutée',
  1432. addFailed: 'Échec ajout',
  1433. entryUpdated: 'Entrée mise à jour',
  1434. updateFailed: 'Échec mise à jour',
  1435. entryDeleted: 'Entrée supprimée',
  1436. deleteFailed: 'Échec suppression',
  1437. resetSuccess: 'Catalogue réinitialisé',
  1438. resetFailed: 'Échec réinitialisation',
  1439. exported: '{{count}} entrées exportées',
  1440. imported: '{{added}} entrées importées ({{skipped}} ignorées)',
  1441. importFailed: 'Échec import : format JSON invalide',
  1442. exportTooltip: 'Exporter en JSON',
  1443. importTooltip: 'Importer depuis JSON',
  1444. resetTooltip: 'Réinitialiser par défaut',
  1445. },
  1446. colorCatalog: {
  1447. title: 'Catalogue de Couleurs',
  1448. description: 'Couleurs de filament par fabricant. Utilisé pour la recherche auto lors de l\'ajout de bobines.',
  1449. searchColors: 'Chercher couleurs...',
  1450. allManufacturers: 'Tous les fabricants',
  1451. addNewColor: 'Nouvelle Couleur',
  1452. manufacturer: 'Fabricant',
  1453. colorName: 'Nom couleur',
  1454. hex: 'Hex',
  1455. materialOptional: 'Matériau (optionnel)',
  1456. showing: 'Affichage {{filtered}} sur {{total}} couleurs',
  1457. noMatch: 'Aucune couleur correspondante',
  1458. empty: 'Catalogue vide',
  1459. deleteColor: 'Supprimer couleur',
  1460. deleteConfirm: 'Supprimer "{{name}}" ?',
  1461. resetCatalog: 'Réinitialiser catalogue couleurs',
  1462. resetConfirm: 'Réinitialiser aux valeurs par défaut ?',
  1463. sync: 'Sync',
  1464. starting: 'Démarrage...',
  1465. syncTooltip: 'Sync depuis FilamentColors.xyz (2000+ couleurs, peut être long)',
  1466. loadFailed: 'Échec chargement catalogue couleurs',
  1467. fieldsRequired: 'Fabricant, nom et code Hex requis',
  1468. colorAdded: 'Couleur ajoutée',
  1469. addFailed: 'Échec ajout',
  1470. colorUpdated: 'Couleur mise à jour',
  1471. updateFailed: 'Échec mise à jour',
  1472. colorDeleted: 'Couleur supprimée',
  1473. deleteFailed: 'Échec suppression',
  1474. resetSuccess: 'Catalogue réinitialisé',
  1475. resetFailed: 'Échec réinitialisation',
  1476. syncUpToDate: 'Déjà à jour ({{count}} couleurs vérifiées)',
  1477. syncComplete: '{{added}} couleurs ajoutées ({{skipped}} déjà présentes)',
  1478. syncError: 'Erreur de sync',
  1479. syncFailed: 'Échec sync FilamentColors.xyz',
  1480. exported: '{{count}} couleurs exportées',
  1481. imported: '{{added}} couleurs importées ({{skipped}} ignorées)',
  1482. importFailed: 'Échec import : format JSON invalide',
  1483. },
  1484. },
  1485. // Notifications (for push notifications)
  1486. notification: {
  1487. printStarted: {
  1488. title: 'Impression démarrée',
  1489. body: '{{printer}} : {{filename}} commence l\'impression',
  1490. },
  1491. printCompleted: {
  1492. title: 'Impression terminée',
  1493. body: '{{printer}} : {{filename}} a réussi',
  1494. },
  1495. printFailed: {
  1496. title: 'Impression échouée',
  1497. body: '{{printer}} : {{filename}} a échoué',
  1498. },
  1499. printStopped: {
  1500. title: 'Impression arrêtée',
  1501. body: '{{printer}} : {{filename}} a été arrêtée',
  1502. },
  1503. printProgress: {
  1504. title: 'Progression d\'impression',
  1505. body: '{{printer}} : {{filename}} est à {{percent}}%',
  1506. },
  1507. printerOffline: {
  1508. title: 'Imprimante hors ligne',
  1509. body: '{{printer}} est déconnectée',
  1510. },
  1511. printerError: {
  1512. title: 'Erreur imprimante',
  1513. body: '{{printer}} : {{error}}',
  1514. },
  1515. filamentLow: {
  1516. title: 'Filament bas',
  1517. body: '{{printer}} : Le filament est presque vide',
  1518. },
  1519. maintenanceDue: {
  1520. title: 'Maintenance due',
  1521. body: '{{printer}} : {{items}} demandent votre attention',
  1522. },
  1523. },
  1524. // Errors
  1525. errors: {
  1526. generic: 'Une erreur est survenue',
  1527. networkError: 'Erreur réseau. Vérifiez votre connexion.',
  1528. notFound: 'Non trouvé',
  1529. unauthorized: 'Non autorisé',
  1530. serverError: 'Erreur serveur',
  1531. validationError: 'Vérifiez vos saisies',
  1532. printerConnectionFailed: 'Échec connexion imprimante',
  1533. saveFailed: 'Échec enregistrement',
  1534. deleteFailed: 'Échec suppression',
  1535. loadFailed: 'Échec chargement',
  1536. },
  1537. // HMS Errors modal
  1538. hmsErrors: {
  1539. title: 'Erreurs - {{name}}',
  1540. noErrors: 'Aucune erreur',
  1541. viewOnWiki: 'Voir sur le Wiki Bambu Lab',
  1542. clearInstructions: 'Effacez les erreurs sur l\'imprimante pour les retirer ici.',
  1543. },
  1544. // MQTT Debug modal
  1545. mqttDebug: {
  1546. title: 'Journal de débogage MQTT',
  1547. searchPlaceholder: 'Chercher topic ou message...',
  1548. noMessages: 'Aucun message enregistré',
  1549. startLoggingHint: 'Cliquez sur "Démarrer" pour capturer les messages MQTT',
  1550. noMessagesMatch: 'Aucun message ne correspond',
  1551. adjustFilterHint: 'Ajustez votre recherche',
  1552. incoming: 'Entrant',
  1553. outgoing: 'Sortant',
  1554. loggingStopped: 'Enregistrement arrêté',
  1555. loggingActive: 'Enregistrement actif - rafraîchissement auto',
  1556. startLogging: 'Démarrer',
  1557. stopLogging: 'Arrêter',
  1558. clearLog: 'Effacer le journal',
  1559. topic: 'Topic',
  1560. timestamp: 'Horodatage',
  1561. direction: 'Direction',
  1562. all: 'Tous',
  1563. },
  1564. // Printer File Manager modal (printer internal storage)
  1565. printerFiles: {
  1566. title: 'Gestionnaire de fichiers',
  1567. storageUsed: 'Utilisé :',
  1568. storageFree: 'Libre :',
  1569. filterPlaceholder: 'Filtrer les fichiers...',
  1570. deleteButton: 'Supprimer',
  1571. deleteFiles: 'Supprimer {{count}} fichiers',
  1572. deleteFileConfirm: 'Supprimer "{{name}}" ?',
  1573. deleteFilesConfirm: 'Supprimer les {{count}} fichiers sélectionnés ?',
  1574. noFiles: 'Aucun fichier sur l\'imprimante',
  1575. loadingFiles: 'Chargement...',
  1576. failedToLoad: 'Échec chargement fichiers',
  1577. toast: {
  1578. filesDeleted: '{{count}} fichier(s) supprimé(s)',
  1579. deleteFailed: 'Échec suppression : {{error}}',
  1580. },
  1581. },
  1582. // Confirmations
  1583. confirm: {
  1584. delete: 'Voulez-vous vraiment supprimer cet élément ?',
  1585. unsavedChanges: 'Changements non sauvegardés. Voulez-vous quitter ?',
  1586. clearQueue: 'Voulez-vous vraiment vider la file d\'attente ?',
  1587. },
  1588. // Login page
  1589. login: {
  1590. title: 'Connexion Bambuddy',
  1591. subtitle: 'Connectez-vous à votre compte',
  1592. username: 'Utilisateur',
  1593. usernamePlaceholder: 'Entrez votre utilisateur',
  1594. usernameOrEmail: 'Utilisateur ou Email',
  1595. usernameOrEmailPlaceholder: 'Utilisateur ou @ Email',
  1596. password: 'Mot de passe',
  1597. passwordPlaceholder: 'Entrez votre mot de passe',
  1598. signIn: 'Se connecter',
  1599. signingIn: 'Connexion...',
  1600. forgotPassword: 'Mot de passe oublié ?',
  1601. loginSuccess: 'Connecté avec succès',
  1602. loginFailed: 'Échec de connexion',
  1603. enterCredentials: 'Entrez vos identifiants',
  1604. forgotPasswordTitle: 'Mot de passe oublié',
  1605. forgotPasswordMessage: "Contactez votre administrateur pour réinitialiser votre accès.",
  1606. forgotPasswordEmailMessage: "Entrez votre email pour recevoir un nouveau mot de passe.",
  1607. emailAddress: 'Adresse Email',
  1608. emailPlaceholder: 'votre.email@exemple.com',
  1609. cancel: 'Annuler',
  1610. sending: 'Envoi...',
  1611. sendResetEmail: 'Envoyer l\'email',
  1612. howToReset: 'Comment réinitialiser :',
  1613. resetStep1: 'Contactez votre admin Bambuddy',
  1614. resetStep2: 'Demandez une réinitialisation dans la Gestion Utilisateurs',
  1615. resetStep3: 'Il vous donnera un mot de passe temporaire',
  1616. resetStep4: 'Connectez-vous et changez-le dans les Paramètres',
  1617. gotIt: 'Compris',
  1618. },
  1619. // Setup page
  1620. setup: {
  1621. title: 'Configuration Bambuddy',
  1622. subtitle: 'Configurez l\'authentification',
  1623. enableAuth: 'Activer l\'authentification',
  1624. adminAccount: 'Compte Admin',
  1625. adminAccountDesc: 'Si des admins existent, ils seront utilisés. Sinon, créez-en un ci-dessous.',
  1626. adminUsername: 'Utilisateur Admin',
  1627. adminPassword: 'Mot de passe Admin',
  1628. optionalIfAdminExists: '(optionnel si admin existe)',
  1629. adminUsernamePlaceholder: 'Nom admin (optionnel)',
  1630. adminPasswordPlaceholder: 'Mdp admin (optionnel)',
  1631. confirmPassword: 'Confirmer mdp',
  1632. confirmPasswordPlaceholder: 'Confirmez mdp admin',
  1633. settingUp: 'Configuration...',
  1634. completeSetup: 'Terminer la configuration',
  1635. toast: {
  1636. authEnabledAdminCreated: 'Authentification activée et admin créé',
  1637. authEnabledExistingAdmins: 'Authentification activée avec admins existants',
  1638. setupCompleted: 'Configuration terminée',
  1639. enterBothCredentials: 'Entrez les deux ou laissez vide pour utiliser les admins existants',
  1640. passwordsDoNotMatch: 'Les mots de passe ne correspondent pas',
  1641. passwordTooShort: 'Minimum 6 caractères',
  1642. },
  1643. },
  1644. // Password change
  1645. changePassword: {
  1646. title: 'Changer le mot de passe',
  1647. currentPassword: 'Mot de passe actuel',
  1648. currentPasswordPlaceholder: 'Entrez mdp actuel',
  1649. newPassword: 'Nouveau mot de passe',
  1650. newPasswordPlaceholder: 'Nouveau mdp (min 6 char)',
  1651. confirmPassword: 'Confirmer nouveau mdp',
  1652. confirmPasswordPlaceholder: 'Confirmez nouveau mdp',
  1653. passwordsDoNotMatch: 'Les mots de passe ne correspondent pas',
  1654. passwordTooShort: 'Minimum 6 caractères',
  1655. changing: 'Changement...',
  1656. success: 'Mot de passe modifié',
  1657. failed: 'Échec modification',
  1658. },
  1659. // Plate detection alert
  1660. plateAlert: {
  1661. title: 'Impression en Pause !',
  1662. message: 'Objets détectés sur le plateau. L\'impression a été suspendue automatiquement. Videz le plateau avant de reprendre.',
  1663. understand: 'J\'ai compris',
  1664. },
  1665. // Camera page
  1666. camera: {
  1667. title: 'Vue Caméra',
  1668. invalidPrinterId: 'ID imprimante invalide',
  1669. live: 'Direct',
  1670. snapshot: 'Instantané',
  1671. restartStream: 'Redémarrer le flux',
  1672. refreshSnapshot: 'Rafraîchir l\'image',
  1673. fullscreen: 'Plein écran',
  1674. exitFullscreen: 'Quitter plein écran',
  1675. connectingToCamera: 'Connexion caméra...',
  1676. capturingSnapshot: 'Capture...',
  1677. connectionLost: 'Connexion perdue',
  1678. connectionFailed: 'Échec connexion caméra',
  1679. reconnecting: 'Reconnexion dans {{countdown}}s... (essai {{attempt}}/{{max}})',
  1680. reconnectNow: 'Reconnexion immédiate',
  1681. cameraUnavailable: 'Caméra indisponible',
  1682. cameraUnavailableDesc: 'Vérifiez que l\'imprimante est allumée.',
  1683. noCamera: 'Aucune caméra disponible',
  1684. retry: 'Réessayer',
  1685. cameraStream: 'Flux caméra',
  1686. zoomOut: 'Zoom arrière',
  1687. zoomIn: 'Zoom avant',
  1688. resetZoom: 'Réinitialiser zoom',
  1689. recording: 'Enregistrement',
  1690. startRecording: 'Démarrer l\'enregistrement',
  1691. stopRecording: 'Arrêter l\'enregistrement',
  1692. chamberLight: 'Basculer lumière chambre',
  1693. },
  1694. // Groups management
  1695. groups: {
  1696. title: 'Gestion des Groupes',
  1697. subtitle: 'Gérez les permissions pour le contrôle d\'accès',
  1698. backToSettings: 'Retour aux paramètres',
  1699. createGroup: 'Créer un groupe',
  1700. noPermission: 'Accès refusé.',
  1701. system: 'Système',
  1702. noDescription: 'Pas de description',
  1703. usersCount: '{{count}} utilisateurs',
  1704. permissionsCount: '{{count}} permissions',
  1705. edit: 'Modifier',
  1706. delete: 'Supprimer',
  1707. toast: {
  1708. created: 'Groupe créé',
  1709. updated: 'Groupe mis à jour',
  1710. deleted: 'Groupe supprimé',
  1711. enterGroupName: 'Entrez un nom de groupe',
  1712. },
  1713. modal: {
  1714. editGroup: 'Modifier le groupe',
  1715. createGroup: 'Créer un groupe',
  1716. cancel: 'Annuler',
  1717. saving: 'Enregistrement...',
  1718. creating: 'Création...',
  1719. saveChanges: 'Enregistrer',
  1720. },
  1721. form: {
  1722. groupName: 'Nom du groupe',
  1723. groupNamePlaceholder: 'Nom du groupe',
  1724. systemGroupWarning: 'Les groupes système sont fixes',
  1725. description: 'Description',
  1726. descriptionPlaceholder: 'Description (optionnel)',
  1727. permissions: 'Permissions ({{count}} sélectionnées)',
  1728. },
  1729. deleteModal: {
  1730. title: 'Supprimer le groupe',
  1731. message: 'Les utilisateurs de ce groupe perdront ces permissions.',
  1732. confirm: 'Supprimer',
  1733. },
  1734. },
  1735. // Users management
  1736. users: {
  1737. title: 'Gestion des Utilisateurs',
  1738. subtitle: 'Gérez les accès à Bambuddy',
  1739. backToSettings: 'Retour aux paramètres',
  1740. createUser: 'Créer un utilisateur',
  1741. noPermission: 'Accès refusé.',
  1742. admin: 'Admin',
  1743. noGroups: 'Aucun groupe',
  1744. active: 'Actif',
  1745. inactive: 'Inactif',
  1746. edit: 'Modifier',
  1747. delete: 'Supprimer',
  1748. system: 'Système',
  1749. noGroupsAvailable: 'Aucun groupe disponible',
  1750. table: {
  1751. username: 'Utilisateur',
  1752. groups: 'Groupes',
  1753. status: 'Statut',
  1754. actions: 'Actions',
  1755. },
  1756. toast: {
  1757. created: 'Utilisateur créé',
  1758. updated: 'Utilisateur mis à jour',
  1759. deleted: 'Utilisateur supprimé',
  1760. fillRequired: 'Remplissez les champs requis',
  1761. passwordsDoNotMatch: 'Les mots de passe ne correspondent pas',
  1762. passwordTooShort: 'Minimum 6 caractères',
  1763. },
  1764. modal: {
  1765. createUser: 'Créer utilisateur',
  1766. editUser: 'Modifier utilisateur',
  1767. cancel: 'Annuler',
  1768. creating: 'Création...',
  1769. saving: 'Enregistrement...',
  1770. saveChanges: 'Enregistrer',
  1771. advancedAuthSubtitle: 'avec Authentification Avancée',
  1772. },
  1773. form: {
  1774. username: 'Utilisateur',
  1775. usernamePlaceholder: 'Nom utilisateur',
  1776. email: 'Email',
  1777. emailPlaceholder: 'utilisateur@exemple.com',
  1778. password: 'Mot de passe',
  1779. passwordPlaceholder: 'Mot de passe',
  1780. confirmPassword: 'Confirmer mdp',
  1781. confirmPasswordPlaceholder: 'Confirmez mdp',
  1782. newPasswordPlaceholder: 'Nouveau mdp',
  1783. confirmNewPasswordPlaceholder: 'Confirmez nouveau mdp',
  1784. leaveBlankToKeep: 'Laissez vide pour conserver l\'actuel',
  1785. groups: 'Groupes',
  1786. optional: 'optionnel',
  1787. autoGeneratedPassword: 'Un mot de passe sera généré et envoyé par email.',
  1788. passwordManagedByAdvancedAuth: 'Géré par Auth Avancée. Utilisez "Réinitialiser" pour envoyer un nouveau mdp par email.',
  1789. resetPassword: 'Réinitialiser le mot de passe',
  1790. resettingPassword: 'Réinitialisation...',
  1791. },
  1792. deleteModal: {
  1793. title: 'Supprimer utilisateur',
  1794. message: 'Cette action est irréversible.',
  1795. confirm: 'Supprimer',
  1796. },
  1797. },
  1798. // Stream overlay
  1799. streamOverlay: {
  1800. title: 'Superposition Flux',
  1801. invalidPrinterId: 'ID invalide',
  1802. cameraStream: 'Flux caméra',
  1803. progress: 'Progression',
  1804. eta: 'Fin estimée',
  1805. tomorrow: 'Demain',
  1806. printerIdle: 'Imprimante inactive',
  1807. printerOffline: 'Imprimante hors ligne',
  1808. status: {
  1809. printing: 'Impression',
  1810. paused: 'En pause',
  1811. finished: 'Terminée',
  1812. failed: 'Échouée',
  1813. idle: 'Inactive',
  1814. unknown: 'Inconnue',
  1815. },
  1816. },
  1817. // Profiles
  1818. profiles: {
  1819. title: 'Profils',
  1820. subtitle: 'Gérez vos presets slicer et calibrations Pressure Advance',
  1821. tabs: {
  1822. cloud: 'Profils Cloud',
  1823. local: 'Profils Locaux',
  1824. kprofiles: 'K-Profiles',
  1825. },
  1826. localProfiles: {
  1827. title: 'Profils Locaux',
  1828. subtitle: 'Gérez vos presets OrcaSlicer',
  1829. import: 'Importer Profils',
  1830. importDesc: 'Déposez les fichiers .bbscfg, .bbsflmt, .orca_filament, .zip ou .json',
  1831. importing: 'Importation...',
  1832. search: 'Chercher un preset...',
  1833. noPresets: 'Aucun preset local',
  1834. badge: 'Local',
  1835. edit: 'Modifier',
  1836. delete: 'Supprimer',
  1837. cancel: 'Annuler',
  1838. deleteConfirmTitle: 'Supprimer Preset',
  1839. deleteConfirm: 'Supprimer définitivement ce preset ?',
  1840. source: 'Source',
  1841. inheritsFrom: 'Hérite de',
  1842. filamentType: 'Type',
  1843. vendor: 'Vendeur',
  1844. compatiblePrinters: 'Imprimantes',
  1845. nozzleTemp: 'Temp Buse',
  1846. cost: 'Coût',
  1847. density: 'Densité',
  1848. pressureAdvance: 'Pressure Advance',
  1849. filament: 'Filament',
  1850. process: 'Processus',
  1851. printer: 'Imprimante',
  1852. toast: {
  1853. importSuccess: '{{count}} profil(s) importé(s)',
  1854. importSkipped: '{{count}} profil(s) ignoré(s) (doublons)',
  1855. importError: '{{count}} erreur(s) d\'import',
  1856. deleted: 'Preset supprimé',
  1857. updated: 'Preset mis à jour',
  1858. },
  1859. },
  1860. connectedAs: 'Connecté en tant que',
  1861. logout: 'Déconnexion',
  1862. noLogoutPermission: 'Pas d\'autorisation de déconnexion',
  1863. failedToLoad: 'Échec chargement profils',
  1864. retry: 'Réessayer',
  1865. time: {
  1866. justNow: 'À l\'instant',
  1867. minsAgo: 'Il y a {{count}}m',
  1868. hoursAgo: 'Il y a {{count}}h',
  1869. daysAgo: 'Il y a {{count}}j',
  1870. },
  1871. toast: {
  1872. loggedOut: 'Déconnecté',
  1873. },
  1874. login: {
  1875. title: 'Connexion Bambu Cloud',
  1876. subtitle: 'Synchronisez vos presets slicer',
  1877. email: 'Email',
  1878. password: 'Mot de passe',
  1879. region: 'Région',
  1880. regionGlobal: 'Global',
  1881. regionChina: 'Chine',
  1882. verificationCode: 'Code de vérification',
  1883. totpCode: 'Code Authenticator',
  1884. checkEmail: 'Code envoyé à {{email}}',
  1885. enterTotpHint: 'Entrez le code 2FA',
  1886. accessToken: 'Jeton d\'accès (Access Token)',
  1887. accessTokenHint: 'Collez le jeton (depuis Bambu Studio)',
  1888. back: 'Retour',
  1889. loginButton: 'Connexion',
  1890. verifyButton: 'Vérifier',
  1891. setTokenButton: 'Définir Jeton',
  1892. useToken: 'Utiliser jeton d\'accès',
  1893. useEmail: 'Connexion par email',
  1894. toast: {
  1895. loggedIn: 'Connecté avec succès',
  1896. codeSent: 'Code envoyé par email',
  1897. enterTotp: 'Entrez le code Authenticator',
  1898. tokenSet: 'Jeton défini',
  1899. },
  1900. },
  1901. presets: {
  1902. myPreset: 'Mon preset (modifiable)',
  1903. duplicate: 'Dupliquer',
  1904. editable: 'Modifiable',
  1905. failedToLoadDetails: 'Échec détails preset',
  1906. deleteConfirm: 'Supprimer ce preset ?',
  1907. deleteWarning: 'Ceci supprimera "{{name}}" de Bambu Cloud définitivement.',
  1908. noDuplicatePermission: 'Pas d\'autorisation duplication',
  1909. noEditPermission: 'Pas d\'autorisation modification',
  1910. noDeletePermission: 'Pas d\'autorisation suppression',
  1911. types: {
  1912. filament: 'Preset filament',
  1913. printer: 'Preset imprimante',
  1914. process: 'Preset processus',
  1915. },
  1916. toast: {
  1917. deleted: 'Preset supprimé',
  1918. created: 'Preset créé',
  1919. updated: 'Preset mis à jour',
  1920. duplicated: 'Preset dupliqué',
  1921. fieldAdded: 'Champ "{{key}}" ajouté',
  1922. exported: 'Preset exporté',
  1923. },
  1924. baseLabel: 'Base : {{name}}',
  1925. currentLabel: 'Actuel : {{name}}',
  1926. newPreset: 'Nouveau Preset',
  1927. editPreset: 'Modifier Preset',
  1928. duplicatePreset: 'Dupliquer Preset',
  1929. createNewPreset: 'Créer un nouveau Preset',
  1930. customizeSettings: 'Personnalisez vos réglages',
  1931. compareWithBase: 'Comparer avec la base',
  1932. compare: 'Comparer',
  1933. // CreatePresetModal - Basic Info
  1934. basePreset: 'Preset de base',
  1935. selectBasePreset: 'Choisir preset de base...',
  1936. presetName: 'Nom du preset',
  1937. myCustomPreset: 'Mon preset personnalisé',
  1938. inheritsFrom: 'Hérite de',
  1939. dropJsonToImport: 'Glissez JSON pour importer',
  1940. // CreatePresetModal - Tabs
  1941. tabs: {
  1942. common: 'Commun',
  1943. allFields: 'Tous les champs',
  1944. },
  1945. // CreatePresetModal - All Fields Tab
  1946. availableFields: 'Champs disponibles',
  1947. searchFieldsPlaceholder: 'Chercher un champ...',
  1948. noMatchingFields: 'Aucun champ trouvé',
  1949. allFieldsAdded: 'Tous les champs sont ajoutés',
  1950. addCustomField: 'Ajouter un champ personnalisé',
  1951. yourOverrides: 'Vos modifications',
  1952. noOverridesYet: 'Aucune modification',
  1953. clickFieldsToAdd: 'Cliquez à gauche pour ajouter',
  1954. saveAsTemplate: 'Enregistrer comme modèle',
  1955. jsonTip: 'Conseil : Glissez un .json pour importer les réglages',
  1956. },
  1957. cloudView: {
  1958. searchPlaceholder: 'Chercher presets...',
  1959. templates: 'Modèles',
  1960. refresh: 'Rafraîchir',
  1961. newPreset: 'Nouveau Preset',
  1962. clearFilters: 'Effacer filtres',
  1963. // Compare mode
  1964. compareMode: 'Mode Comparaison',
  1965. selectAnotherPreset: 'Choisir un autre preset {{type}}',
  1966. clickTwoPresets: 'Choisissez deux presets de même type',
  1967. selectFirst: '1. Sélectionner premier',
  1968. selectSecond: '2. Sélectionner second',
  1969. compareNow: 'Comparer maintenant',
  1970. // Status row
  1971. lastSynced: 'Synchronisé :',
  1972. showingCount: '{{showing}} sur {{total}} presets',
  1973. noPresetsFound: 'Aucun preset trouvé',
  1974. // Column headers
  1975. columns: {
  1976. filament: 'Filament',
  1977. process: 'Processus',
  1978. printer: 'Imprimante',
  1979. },
  1980. noFilamentPresets: 'Pas de preset filament',
  1981. noProcessPresets: 'Pas de preset processus',
  1982. noPrinterPresets: 'Pas de preset imprimante',
  1983. // Filters
  1984. filters: {
  1985. type: 'Type',
  1986. owner: 'Propriétaire',
  1987. printer: 'Imprimante',
  1988. nozzle: 'Buse',
  1989. filament: 'Filament',
  1990. layer: 'Couche',
  1991. all: 'Tous',
  1992. myPresets: 'Mes Presets',
  1993. builtIn: 'Inclus',
  1994. process: 'Processus',
  1995. },
  1996. // Permissions
  1997. noTemplatesPermission: 'Pas d\'autorisation modèles',
  1998. noRefreshPermission: 'Pas d\'autorisation rafraîchissement',
  1999. noCreatePermission: 'Pas d\'autorisation création',
  2000. },
  2001. templates: {
  2002. title: 'Modèles rapides',
  2003. noTemplates: 'Aucun modèle',
  2004. createFirst: 'Créez-en depuis l\'éditeur de preset',
  2005. typeFilter: 'Type :',
  2006. deleteTitle: 'Supprimer modèle',
  2007. deleteWarning: 'Action irréversible',
  2008. deleteConfirm: 'Supprimer "{{name}}" ?',
  2009. namePlaceholder: 'Nom du modèle',
  2010. descriptionPlaceholder: 'Description',
  2011. settingsJson: 'Paramètres (JSON)',
  2012. fieldsCount: '{{count}} champs',
  2013. shownInModals: 'Visible dans fenêtres',
  2014. hiddenInModals: 'Masqué dans fenêtres',
  2015. apply: 'Appliquer',
  2016. toast: {
  2017. deleted: 'Modèle supprimé',
  2018. updated: 'Modèle mis à jour',
  2019. created: 'Modèle créé',
  2020. applied: 'Modèle appliqué',
  2021. },
  2022. },
  2023. },
  2024. // Support/Debug
  2025. support: {
  2026. debugLoggingActive: 'Débogage actif',
  2027. manageLogs: 'Gérer',
  2028. collectItem7: 'Connectivité et versions firmware',
  2029. collectItem8: 'Statut intégrations (Spoolman, MQTT, HA)',
  2030. collectItem9: 'Interfaces réseau (sous-réseaux)',
  2031. collectItem10: 'Versions packages Python',
  2032. collectItem11: 'Santé base de données',
  2033. collectItem12: 'Détails environnement Docker',
  2034. },
  2035. // File manager
  2036. fileManager: {
  2037. title: 'Gestionnaire de fichiers',
  2038. subtitle: 'Organisez vos fichiers d\'impression',
  2039. uploadFiles: 'Téléverser fichiers',
  2040. newFolder: 'Nouveau dossier',
  2041. folderName: 'Nom du dossier',
  2042. folderNamePlaceholder: 'ex: Pièces Utiles',
  2043. renameFile: 'Renommer fichier',
  2044. renameFolder: 'Renommer dossier',
  2045. moveFiles: 'Déplacer {{count}} fichier(s)',
  2046. rootNoFolder: 'Racine (aucun dossier)',
  2047. current: 'actuel',
  2048. linkFolder: 'Lier le dossier',
  2049. linkFolderDescription: 'Lier "{{name}}" à un projet ou archive.',
  2050. project: 'Projet',
  2051. archive: 'Archive',
  2052. noProjectsFound: 'Aucun projet trouvé',
  2053. noArchivesFound: 'Aucune archive trouvée',
  2054. unlink: 'Délier',
  2055. link: 'Lier',
  2056. dragDropFiles: 'Glissez les fichiers ici',
  2057. dropFilesHere: 'Déposez ici',
  2058. orClickToBrowse: 'ou cliquez pour parcourir',
  2059. allFileTypesSupported: 'Tous types supportés. ZIP extraits.',
  2060. zipFilesDetected: 'ZIP détectés',
  2061. zipExtractOptions: 'Choix de structure pour ZIP :',
  2062. preserveZipStructure: 'Garder structure ZIP',
  2063. createFolderFromZip: 'Dossier par nom du ZIP',
  2064. stlThumbnailGeneration: 'Vignettes STL',
  2065. zipMayContainStl: 'Extraction vignettes possible pour STL.',
  2066. thumbnailsCanBeGenerated: 'Génération vignettes (peut être long).',
  2067. generateThumbnailsForStl: 'Générer vignettes STL',
  2068. threemfDetected: 'Fichiers 3MF détectés',
  2069. threemfExtractionInfo: 'Réglages extraits auto du 3MF.',
  2070. willBeExtracted: 'Sera extrait',
  2071. filesExtracted: '{{count}} fichiers extraits',
  2072. uploadComplete: 'Terminé : {{succeeded}} succès',
  2073. uploadFailed: '{{count}} échecs',
  2074. uploading: 'Téléversement...',
  2075. changeLink: 'Modifier lien...',
  2076. linkTo: 'Lier à...',
  2077. linkToProjectOrArchive: 'Lier à projet ou archive',
  2078. addToQueue: 'Ajouter à la file',
  2079. schedulePrint: 'Planifier',
  2080. generateThumbnail: 'Générer vignette',
  2081. generateThumbnails: 'Générer vignettes',
  2082. generateThumbnailsForMissing: 'Vignettes STL manquantes',
  2083. gridView: 'Grille',
  2084. listView: 'Liste',
  2085. lowDiskSpaceWarning: 'Espace disque faible',
  2086. lowDiskSpaceDetails: '{{free}} libre sur {{total}}. Seuil : {{threshold}} Go.',
  2087. files: 'Fichiers',
  2088. folders: 'Dossiers',
  2089. size: 'Taille',
  2090. free: 'Libre',
  2091. allFiles: 'Tous les fichiers',
  2092. wrap: 'Retour ligne',
  2093. enableTextWrapping: 'Activer retour ligne',
  2094. disableTextWrapping: 'Désactiver retour ligne',
  2095. dragToResizeTooltip: 'Glisser pour redimensionner, double-clic reset',
  2096. searchFiles: 'Chercher fichiers...',
  2097. allTypes: 'Tous types',
  2098. prints: 'Impressions',
  2099. ascending: 'Croissant',
  2100. descending: 'Décroissant',
  2101. resultsCount: '{{showing}} sur {{total}} fichiers',
  2102. selectAll: 'Tout sélectionner',
  2103. deselectAll: 'Tout désélectionner',
  2104. selected: '{{count}} sélectionnés',
  2105. adding: 'Ajout...',
  2106. loadingFiles: 'Chargement...',
  2107. folderIsEmpty: 'Dossier vide',
  2108. noFilesYet: 'Aucun fichier',
  2109. folderEmptyDescription: 'Téléversez ou déplacez des fichiers ici.',
  2110. noFilesDescription: 'Téléversez des fichiers pour organiser.',
  2111. noMatchingFiles: 'Aucun fichier correspondant',
  2112. noMatchingFilesDescription: 'Ajustez votre recherche.',
  2113. clearFilters: 'Effacer filtres',
  2114. printedCount: 'Imprimé {{count}}x',
  2115. uploadedBy: 'Téléversé par',
  2116. deleteFolder: 'Supprimer dossier',
  2117. deleteFile: 'Supprimer fichier',
  2118. deleteFilesCount: 'Supprimer {{count}} fichiers',
  2119. deleteFolderConfirm: 'Supprimer le dossier et son contenu ?',
  2120. deleteFileConfirm: 'Supprimer ce fichier ?',
  2121. deleteFilesConfirm: 'Supprimer {{count}} fichiers définitivement ?',
  2122. deleting: 'Suppression...',
  2123. noPermissionRenameFolder: 'Pas d\'autorisation renommage',
  2124. noPermissionLinkFolder: 'Pas d\'autorisation lien',
  2125. noPermissionDeleteFolder: 'Pas d\'autorisation suppression dossier',
  2126. noPermissionPrint: 'Pas d\'autorisation impression',
  2127. noPermissionAddToQueue: 'Pas d\'autorisation file',
  2128. noPermissionDownload: 'Pas d\'autorisation téléchargement',
  2129. noPermissionRenameFile: 'Pas d\'autorisation renommage fichier',
  2130. noPermissionGenerateThumbnail: 'Pas d\'autorisation vignettes',
  2131. noPermissionDeleteFile: 'Pas d\'autorisation suppression fichier',
  2132. noPermissionCreateFolder: 'Pas d\'autorisation nouveau dossier',
  2133. noPermissionUpload: 'Pas d\'autorisation téléversement',
  2134. noPermissionMoveFiles: 'Pas d\'autorisation déplacement',
  2135. noPermissionDeleteFiles: 'Pas d\'autorisation suppression groupée',
  2136. toast: {
  2137. folderCreated: 'Dossier créé',
  2138. folderDeleted: 'Dossier supprimé',
  2139. fileDeleted: 'Fichier supprimé',
  2140. filesDeleted: '{{count}} fichiers supprimés',
  2141. filesMoved: 'Fichiers déplacés',
  2142. folderLinked: 'Dossier lié',
  2143. folderUnlinked: 'Dossier délié',
  2144. addedToQueue: '{{count}} fichier(s) ajouté(s)',
  2145. addedToQueuePartial: '{{added}} ajoutés, {{failed}} échecs',
  2146. failedToAddToQueue: 'Échec ajout file : {{error}}',
  2147. fileRenamed: 'Fichier renommé',
  2148. folderRenamed: 'Dossier renommé',
  2149. thumbnailsGenerated: '{{count}} vignette(s) générée(s)',
  2150. thumbnailsGeneratedPartial: '{{succeeded}} succès, {{failed}} échecs',
  2151. noStlMissingThumbnails: 'Aucun STL sans vignette',
  2152. failedToGenerateThumbnails: 'Échec vignettes : {{error}}',
  2153. thumbnailGenerated: 'Vignette générée',
  2154. failedToGenerateThumbnail: 'Échec vignette : {{error}}',
  2155. },
  2156. },
  2157. // Projects
  2158. projects: {
  2159. title: 'Projets',
  2160. subtitle: 'Suivez vos projets d\'impression 3D',
  2161. newProject: 'Nouveau Projet',
  2162. editProject: 'Modifier Projet',
  2163. deleteProject: 'Supprimer Projet',
  2164. projectName: 'Nom du Projet',
  2165. description: 'Description',
  2166. noProjects: 'Aucun projet',
  2167. noProjectsFiltered: 'Aucun projet {{status}}',
  2168. noProjectsFilteredHelp: 'Les projets apparaîtront ici quand leur statut changera.',
  2169. createFirst: 'Créez votre premier projet pour organiser vos builds.',
  2170. createFirstButton: 'Créer votre premier projet',
  2171. create: 'Créer',
  2172. files: 'Fichiers',
  2173. prints: 'Impressions',
  2174. plates: 'plateaux',
  2175. parts: 'pièces',
  2176. lastModified: 'Modifié le',
  2177. deleteConfirm: 'Supprimer ce projet ? Les archives seront déliées mais conservées.',
  2178. addFiles: 'Ajouter fichiers',
  2179. removeFile: 'Retirer fichier',
  2180. viewDetails: 'Détails',
  2181. // Modal fields
  2182. namePlaceholder: 'ex: Build Voron 2.4',
  2183. descriptionPlaceholder: 'Description optionnelle...',
  2184. color: 'Couleur',
  2185. targetPlates: 'Plateaux cibles',
  2186. targetPlatesPlaceholder: 'ex: 25',
  2187. targetPlatesHelp: 'Nombre total de jobs',
  2188. targetParts: 'Pièces cibles',
  2189. targetPartsPlaceholder: 'ex: 150',
  2190. targetPartsHelp: 'Nombre total d\'objets',
  2191. tagsLabel: 'Tags (séparés par virgules)',
  2192. tagsPlaceholder: 'ex: voron, cadeau',
  2193. dueDate: 'Échéance',
  2194. priority: 'Priorité',
  2195. priorityLow: 'Basse',
  2196. priorityNormal: 'Normale',
  2197. priorityHigh: 'Haute',
  2198. priorityUrgent: 'Urgente',
  2199. // Status
  2200. statusActive: 'Actif',
  2201. statusCompleted: 'Terminé',
  2202. statusArchived: 'Archivé',
  2203. done: 'Fait',
  2204. completed: 'terminé',
  2205. failed: 'échoué',
  2206. inQueue: 'en file',
  2207. noPrintsYet: 'Aucune impression',
  2208. // Footer stats
  2209. printJobs: 'Jobs (plateaux)',
  2210. partsPrinted: 'Pièces imprimées',
  2211. failedParts: 'Pièces échouées',
  2212. // Actions
  2213. import: 'Importer',
  2214. export: 'Exporter',
  2215. importProject: 'Importer projet',
  2216. exportAll: 'Exporter tous les projets',
  2217. loading: 'Chargement des projets...',
  2218. // Permissions
  2219. noEditPermission: 'Pas d\'autorisation de modification',
  2220. noDeletePermission: 'Pas d\'autorisation de suppression',
  2221. noCreatePermission: 'Pas d\'autorisation de création',
  2222. noImportPermission: 'Pas d\'autorisation d\'import',
  2223. noExportPermission: 'Pas d\'autorisation d\'export',
  2224. // Toast
  2225. toast: {
  2226. created: 'Projet créé',
  2227. updated: 'Projet mis à jour',
  2228. deleted: 'Projet supprimé',
  2229. imported: 'Projet importé',
  2230. multipleImported: '{{count}} projets importés',
  2231. importFailed: 'Échec d\'import',
  2232. exported: 'Projets exportés (métadonnées)',
  2233. },
  2234. },
  2235. // Project detail page
  2236. projectDetail: {
  2237. notFound: 'Projet non trouvé',
  2238. backToProjects: 'Retour aux Projets',
  2239. export: 'Exporter',
  2240. exportProject: 'Exporter projet',
  2241. noExportPermission: 'Pas d\'autorisation export',
  2242. noEditPermission: 'Pas d\'autorisation modification',
  2243. partOf: 'Fait partie de :',
  2244. priorityLabel: 'Priorité :',
  2245. noPrints: 'Aucune impression dans ce projet',
  2246. status: {
  2247. active: 'Actif',
  2248. completed: 'Terminé',
  2249. archived: 'Archivé',
  2250. },
  2251. priority: {
  2252. low: 'Basse',
  2253. normal: 'Normale',
  2254. high: 'Haute',
  2255. urgent: 'Urgente',
  2256. },
  2257. dueDate: {
  2258. overdue: 'En retard',
  2259. today: 'Aujourd\'hui',
  2260. daysLeft: '{{count}} jours restants',
  2261. },
  2262. progress: {
  2263. platesProgress: 'Progression Plateaux',
  2264. partsProgress: 'Progression Pièces',
  2265. printJobs: 'jobs d\'impression',
  2266. parts: 'pièces',
  2267. percentComplete: '{{percent}}% terminé',
  2268. remaining: '{{count}} restant(s)',
  2269. },
  2270. stats: {
  2271. printJobs: 'Jobs d\'Impression',
  2272. total: 'total',
  2273. failed: '{{count}} échecs',
  2274. partsPrinted: '{{count}} pièces imprimées',
  2275. printTime: 'Temps d\'Impression',
  2276. filamentUsed: 'Filament utilisé',
  2277. },
  2278. cost: {
  2279. title: 'Suivi des coûts',
  2280. filamentCost: 'Coût Filament',
  2281. energy: 'Énergie',
  2282. budget: 'Budget',
  2283. remaining: 'Restant',
  2284. },
  2285. subProjects: {
  2286. title: 'Sous-projets ({{count}})',
  2287. },
  2288. notes: {
  2289. title: 'Notes',
  2290. noEditPermission: 'Pas d\'autorisation modification',
  2291. placeholder: 'Ajouter des notes...',
  2292. empty: 'Aucune note. Cliquez sur modifier.',
  2293. },
  2294. files: {
  2295. title: 'Fichiers',
  2296. linkFolders: 'Liez des dossiers depuis le gestionnaire',
  2297. forQuickAccess: 'pour un accès rapide.',
  2298. fileCount: '{{count}} fichier(s)',
  2299. empty: 'Aucun dossier lié.',
  2300. },
  2301. bom: {
  2302. title: 'BOM (Liste matériel)',
  2303. acquired: '{{completed}}/{{total}} acquis',
  2304. showAll: 'Tout afficher',
  2305. hideDone: 'Masquer acquis',
  2306. addPart: 'Ajouter matériel',
  2307. noAddPermission: 'Pas d\'autorisation ajout',
  2308. partNamePlaceholder: 'Nom (ex: Vis M3x8)',
  2309. partName: 'Nom de pièce',
  2310. qty: 'Qté',
  2311. price: 'Prix ({{currency}})',
  2312. sourcingUrlPlaceholder: 'Lien d\'achat (optionnel)',
  2313. remarksPlaceholder: 'Remarques (optionnel)',
  2314. deletePart: 'Supprimer pièce',
  2315. deleteConfirm: 'Supprimer "{{name}}" ?',
  2316. noUpdatePermission: 'Pas d\'autorisation mise à jour',
  2317. noEditPermission: 'Pas d\'autorisation modification',
  2318. noDeletePermission: 'Pas d\'autorisation suppression',
  2319. totalCost: 'Coût total :',
  2320. empty: 'BOM vide. Ajoutez du matériel ou de l\'électronique.',
  2321. },
  2322. timeline: {
  2323. title: 'Historique d\'activité',
  2324. empty: 'Aucune activité.',
  2325. },
  2326. template: {
  2327. saveAsTemplate: 'Enregistrer comme modèle',
  2328. noCreatePermission: 'Pas d\'autorisation modèle',
  2329. },
  2330. queue: {
  2331. title: 'File d\'attente',
  2332. viewAll: 'Tout voir',
  2333. printing: '{{count}} en cours',
  2334. queued: '{{count}} en file',
  2335. },
  2336. prints: {
  2337. title: 'Impressions ({{count}})',
  2338. },
  2339. toast: {
  2340. projectUpdated: 'Projet mis à jour',
  2341. partAdded: 'Pièce ajoutée',
  2342. partRemoved: 'Pièce retirée',
  2343. exportFailed: 'Échec export',
  2344. projectExported: 'Projet exporté',
  2345. templateCreated: 'Modèle créé',
  2346. },
  2347. },
  2348. // System info
  2349. system: {
  2350. title: 'Informations Système',
  2351. version: 'Version',
  2352. uptime: 'Temps de fonctionnement',
  2353. cpuUsage: 'Utilisation CPU',
  2354. memoryUsage: 'Utilisation RAM',
  2355. diskUsage: 'Utilisation Disque',
  2356. networkInfo: 'Infos Réseau',
  2357. logs: 'Journaux',
  2358. debugMode: 'Mode Débogage',
  2359. enableDebug: 'Activer débogage',
  2360. disableDebug: 'Désactiver débogage',
  2361. downloadLogs: 'Télécharger logs',
  2362. clearLogs: 'Effacer logs',
  2363. dockerInfo: 'Infos Docker',
  2364. containerName: 'Nom conteneur',
  2365. imageName: 'Nom image',
  2366. platform: 'Plateforme',
  2367. architecture: 'Architecture',
  2368. },
  2369. // Library (K Profiles)
  2370. library: {
  2371. title: 'Bibliothèque Filament',
  2372. addFilament: 'Ajouter Filament',
  2373. editFilament: 'Modifier Filament',
  2374. deleteFilament: 'Supprimer Filament',
  2375. vendor: 'Vendeur',
  2376. material: 'Matériau',
  2377. color: 'Couleur',
  2378. kFactor: 'Facteur K',
  2379. temperature: 'Température',
  2380. noFilaments: 'Bibliothèque vide',
  2381. deleteConfirm: 'Supprimer ce filament ?',
  2382. importFromPrinter: 'Importer de l\'imprimante',
  2383. exportToFile: 'Exporter vers fichier',
  2384. },
  2385. // Spoolman
  2386. spoolman: {
  2387. title: 'Intégration Spoolman',
  2388. enabled: 'Spoolman Activé',
  2389. url: 'URL Spoolman',
  2390. connected: 'Connecté',
  2391. disconnected: 'Non Connecté',
  2392. testConnection: 'Tester connexion',
  2393. sync: 'Synchroniser',
  2394. syncing: 'Sync...',
  2395. lastSync: 'Dernière Sync',
  2396. linkToSpoolman: 'Lier à Spoolman',
  2397. openInSpoolman: 'Ouvrir Spoolman',
  2398. unlinkSpool: 'Délier bobine',
  2399. selectSpool: 'Choisir bobine',
  2400. noUnlinkedSpools: 'Pas de bobine libre',
  2401. linkSuccess: 'Lien réussi',
  2402. linkFailed: 'Échec lien',
  2403. spoolId: 'ID Bobine',
  2404. fillSourceLabel: '(Spoolman)',
  2405. weight: 'Poids',
  2406. remaining: 'Restant',
  2407. disableWeightSync: 'Désactiver Sync poids estimé AMS',
  2408. disableWeightSyncDesc: 'Ne pas utiliser les estimations AMS. Utile si vous préférez le suivi Spoolman.',
  2409. reportPartialUsage: 'Rapporter consommation partielle pour échecs',
  2410. reportPartialUsageDesc: 'Si l\'impression échoue, rapporte le filament consommé selon les couches.',
  2411. },
  2412. // Inventory
  2413. inventory: {
  2414. title: 'Inventaire de Bobines',
  2415. addSpool: 'Ajouter Bobine',
  2416. editSpool: 'Modifier Bobine',
  2417. material: 'Matériau',
  2418. selectMaterial: 'Choisir matériau...',
  2419. subtype: 'Sous-type',
  2420. brand: 'Marque',
  2421. searchBrand: 'Chercher marque...',
  2422. useCustomBrand: 'Utiliser "{{brand}}"',
  2423. colorName: 'Nom de couleur',
  2424. colorNamePlaceholder: 'Jade White, Fire Red...',
  2425. color: 'Couleur',
  2426. hexColor: 'Code Hex',
  2427. pickColor: 'Choisir couleur perso',
  2428. labelWeight: 'Poids net',
  2429. coreWeight: 'Poids bobine vide',
  2430. searchSpoolWeight: 'Chercher poids bobine...',
  2431. weightUsed: 'Consommé',
  2432. currentWeight: 'Poids restant',
  2433. measuredWeight: 'Poids mesuré',
  2434. measuredWeightError: 'Le poids mesuré doit être entre {{min}}g et {{max}}g.',
  2435. slicerFilament: 'Filament Slicer',
  2436. slicerFilamentName: 'Nom du Preset Slicer',
  2437. slicerPreset: 'Preset Slicer',
  2438. searchPresets: 'Chercher presets...',
  2439. selectedPreset: 'Sélectionné',
  2440. noPresetsFound: 'Aucun preset trouvé',
  2441. tempOverrides: 'Exceptions Température',
  2442. note: 'Note',
  2443. notePlaceholder: 'Notes additionnelles sur cette bobine...',
  2444. archive: 'Archiver',
  2445. restore: 'Restaurer',
  2446. noSpools: 'Aucune bobine. Ajoutez votre première bobine pour commencer.',
  2447. noManualSpools: 'Aucune bobine manuelle disponible. Ajoutez-en une d\'abord.',
  2448. kProfiles: 'K-Profiles',
  2449. addKProfile: 'Ajouter K-Profile',
  2450. assignSpool: 'Assigner Bobine',
  2451. unassignSpool: 'Désassigner',
  2452. assignSuccess: 'Bobine assignée et slot AMS configuré',
  2453. assignFailed: 'Échec assignation',
  2454. assignMismatchTitle: 'Matériau non correspondant',
  2455. assignMismatchMessage: 'Le matériau de la bobine sélectionnée ({{spoolMaterial}}) ne correspond pas au profil AMS ({{trayMaterial}}) pour {{location}}. Assigner quand même ?',
  2456. assignMismatchConfirm: 'Assigner quand même',
  2457. selectSpool: 'Choisir une bobine pour ce slot',
  2458. assigned: 'Assigné',
  2459. assigning: 'Assignation...',
  2460. searchSpools: 'Chercher bobines...',
  2461. allMaterials: 'Tous Matériaux',
  2462. filterByBrand: 'Filtrer par marque...',
  2463. showArchived: 'Afficher archivées',
  2464. spoolCreated: 'Bobine créée',
  2465. spoolUpdated: 'Bobine mise à jour',
  2466. spoolDeleted: 'Bobine supprimée',
  2467. spoolArchived: 'Bobine archivée',
  2468. spoolRestored: 'Bobine restaurée',
  2469. deleteConfirm: 'Supprimer définitivement cette bobine ?',
  2470. advancedSettings: 'Paramètres Avancés',
  2471. // Tabs
  2472. filamentInfoTab: 'Infos Filament',
  2473. paProfileTab: 'Profil PA',
  2474. filamentInfo: 'Filament',
  2475. additional: 'Additionnel',
  2476. // Cloud
  2477. loadingPresets: 'Chargement des presets cloud...',
  2478. cloudConnected: 'Cloud connecté',
  2479. cloudNotConnected: 'Cloud déconnecté (valeurs par défaut)',
  2480. // Colors
  2481. recentColors: 'Récentes',
  2482. searchColors: 'Chercher couleurs...',
  2483. searchResults: 'Résultats',
  2484. allColors: 'Toutes',
  2485. commonColors: 'Communes',
  2486. showLess: 'Moins',
  2487. showAll: 'Toutes',
  2488. noColorsFound: 'Aucune couleur correspondante',
  2489. noResults: 'Aucun résultat',
  2490. // PA Profiles
  2491. selectMaterialFirst: 'Veuillez choisir un matériau dans l\'onglet Infos Filament.',
  2492. noPrintersConfigured: 'Ajoutez une imprimante pour utiliser les profils PA.',
  2493. matchingFilter: 'Correspondant',
  2494. anyBrand: 'Toute marque',
  2495. anyVariant: 'Toute variante',
  2496. autoSelect: 'Auto-sélection',
  2497. matches: 'correspondances',
  2498. match: 'correspondance',
  2499. noMatches: 'Aucune correspondance',
  2500. connected: 'Connecté',
  2501. offline: 'Hors ligne',
  2502. printerOffline: 'Imprimante hors ligne. Connectez-vous pour voir les profils.',
  2503. noKProfilesMatch: 'Aucun profil K ne correspond au filament.',
  2504. leftNozzle: 'Buse Gauche',
  2505. rightNozzle: 'Buse Droite',
  2506. profilesSelected: 'profil(s) de calibration sélectionné(s)',
  2507. // Stats & enhanced table
  2508. totalInventory: 'Total Inventaire',
  2509. totalConsumed: 'Total Consommé',
  2510. byMaterial: 'Par Matériau',
  2511. inPrinter: 'Dans Imprimante',
  2512. lowStock: 'Stock Bas',
  2513. sinceTracking: 'Depuis le début du suivi',
  2514. loadedInAms: 'Chargé dans AMS/Ext',
  2515. remaining: 'Restant',
  2516. lowStockThreshold: '<20% restant',
  2517. search: 'Chercher bobines...',
  2518. showing: 'Affichage',
  2519. to: 'à',
  2520. of: 'sur',
  2521. show: 'Voir',
  2522. spools: 'bobines',
  2523. spool: 'bobine',
  2524. page: 'Page',
  2525. noSpoolsMatch: 'Aucun résultat trouvé',
  2526. noSpoolsMatchDesc: 'Ajustez votre recherche ou vos filtres.',
  2527. active: 'Actif',
  2528. archived: 'Archivé',
  2529. all: 'Tous',
  2530. used: 'Occasion',
  2531. new: 'Neuf',
  2532. clearFilters: 'Effacer filtres',
  2533. table: 'Tableau',
  2534. cards: 'Cartes',
  2535. net: 'Net',
  2536. // Column config
  2537. columns: 'Colonnes',
  2538. configureColumns: 'Configurer Colonnes',
  2539. configureColumnsDesc: 'Glissez pour ordonner ou utilisez les flèches. Cliquez sur l\'œil pour masquer.',
  2540. visible: 'visible',
  2541. reset: 'Reset',
  2542. cancel: 'Annuler',
  2543. applyChanges: 'Appliquer',
  2544. moveUp: 'Monter',
  2545. moveDown: 'Descendre',
  2546. hideColumn: 'Masquer',
  2547. showColumn: 'Afficher',
  2548. // Tag linking
  2549. linkToSpool: 'Lier à une Bobine',
  2550. tagLinked: 'Tag lié à la bobine',
  2551. tagLinkFailed: 'Échec lien tag',
  2552. tagAlreadyLinked: 'Tag déjà lié à une autre bobine',
  2553. unknownTag: 'Tag RFID inconnu détecté',
  2554. // Usage history
  2555. usageHistory: 'Historique de Consommation',
  2556. noUsageHistory: 'Aucune consommation enregistrée',
  2557. printName: 'Nom Impression',
  2558. weightConsumed: 'Poids consommé',
  2559. clearHistory: 'Effacer',
  2560. historyCleared: 'Historique effacé',
  2561. fillSourceLabel: '(Inv)',
  2562. },
  2563. // Timelapse
  2564. timelapse: {
  2565. title: 'Timelapse',
  2566. create: 'Créer Timelapse',
  2567. download: 'Télécharger',
  2568. delete: 'Supprimer',
  2569. preview: 'Aperçu',
  2570. frameRate: 'Images/sec',
  2571. quality: 'Qualité',
  2572. processing: 'Traitement...',
  2573. noTimelapses: 'Aucun timelapse',
  2574. },
  2575. // AMS
  2576. ams: {
  2577. title: 'AMS',
  2578. slot: 'Slot',
  2579. empty: 'Vide',
  2580. emptySlot: 'Slot vide',
  2581. unknown: 'Inconnu',
  2582. humidity: 'Humidité',
  2583. temperature: 'Température',
  2584. filamentType: 'Type filament',
  2585. filamentColor: 'Couleur',
  2586. remaining: 'Restant',
  2587. history: 'Historique AMS',
  2588. noHistory: 'Aucun historique',
  2589. configureSlot: 'Configurer Slot',
  2590. externalSpool: 'Bobine externe',
  2591. profile: 'Profil',
  2592. kFactor: 'Facteur K',
  2593. fill: 'Remplir',
  2594. configure: 'Configurer',
  2595. },
  2596. // Print modal
  2597. printModal: {
  2598. title: 'Lancer l\'impression',
  2599. selectPrinter: 'Choisir l\'imprimante',
  2600. selectPlate: 'Choisir le plateau',
  2601. filamentMapping: 'Mapping Filament',
  2602. printSettings: 'Réglages d\'impression',
  2603. bedLeveling: 'Nivellement plateau',
  2604. flowCalibration: 'Calibration débit',
  2605. vibrationCalibration: 'Vibration (Input Shaper)',
  2606. layerInspection: 'Inspection 1ère couche',
  2607. timelapse: 'Timelapse',
  2608. startPrint: 'Démarrer',
  2609. addToQueue: 'Ajouter à la file',
  2610. cancel: 'Annuler',
  2611. noPrintersAvailable: 'Aucune imprimante disponible',
  2612. printerBusy: 'L\'imprimante est occupée',
  2613. printerOffline: 'L\'imprimante est hors ligne',
  2614. sameTypeDifferentColor: 'Même type, couleur différente',
  2615. filamentTypeNotLoaded: 'Type de filament non chargé',
  2616. openCalendar: 'Ouvrir calendrier',
  2617. leftNozzle: 'G',
  2618. rightNozzle: 'D',
  2619. leftNozzleTooltip: 'Buse gauche',
  2620. rightNozzleTooltip: 'Buse droite',
  2621. insufficientFilamentTitle: 'Not enough filament',
  2622. insufficientFilamentMessage: 'Some assigned spools have less filament remaining than this print needs:',
  2623. insufficientFilamentLine: '{{printer}} - {{slot}}: needs {{required}}g, remaining {{remaining}}g',
  2624. printAnyway: 'Print anyway',
  2625. },
  2626. // Backup
  2627. backup: {
  2628. title: 'Sauvegarde & Restauration',
  2629. createBackup: 'Créer Sauvegarde',
  2630. restoreBackup: 'Restaurer Sauvegarde',
  2631. restoreDescription: 'Remplace les données par un fichier de sauvegarde',
  2632. downloadBackup: 'Télécharger Sauvegarde',
  2633. uploadBackup: 'Téléverser Sauvegarde',
  2634. lastBackup: 'Dernière sauvegarde',
  2635. autoBackup: 'Sauvegarde auto',
  2636. backupNow: 'Sauvegarder maintenant',
  2637. restoreWarning: 'Attention : Écrase TOUTES les données actuelles.',
  2638. includeArchives: 'Inclure Archives',
  2639. includeSettings: 'Inclure Paramètres',
  2640. includeProfiles: 'Inclure Profils',
  2641. backupSuccess: 'Sauvegarde réussie',
  2642. restoreSuccess: 'Restauration réussie',
  2643. backupFailed: 'Échec sauvegarde',
  2644. restoreFailed: 'Échec restauration',
  2645. restoreNote: 'L\'imprimante virtuelle sera arrêtée pendant la restauration',
  2646. },
  2647. // Tags
  2648. tags: {
  2649. title: 'Tags',
  2650. addTag: 'Ajouter Tag',
  2651. editTag: 'Modifier Tag',
  2652. deleteTag: 'Supprimer Tag',
  2653. tagName: 'Nom du Tag',
  2654. tagColor: 'Couleur du Tag',
  2655. noTags: 'Aucun tag',
  2656. deleteConfirm: 'Supprimer ce tag ?',
  2657. manageTags: 'Gérer les Tags',
  2658. },
  2659. // Upload modal (archives)
  2660. uploadModal: {
  2661. title: 'Téléverser des fichiers 3MF',
  2662. dragDrop: 'Glissez les fichiers .3mf ici',
  2663. or: 'ou',
  2664. browseFiles: 'Parcourir',
  2665. extractionInfo: 'Le modèle d\'imprimante est extrait des métadonnées 3MF.',
  2666. uploaded: 'téléversé',
  2667. failed: 'échoué',
  2668. uploading: 'En cours...',
  2669. upload: 'Téléverser',
  2670. uploadFailed: 'Échec du téléversement',
  2671. },
  2672. // Edit archive modal
  2673. // Edit Archive Modal
  2674. editArchive: {
  2675. title: 'Modifier l\'archive',
  2676. name: 'Nom',
  2677. namePlaceholder: 'Nom de l\'impression',
  2678. printer: 'Imprimante',
  2679. noPrinter: 'Aucune imprimante',
  2680. project: 'Projet',
  2681. noProject: 'Aucun projet',
  2682. itemsPrinted: 'Nombre de pièces',
  2683. itemsPrintedHelp: 'Nombre d\'objets produits',
  2684. notes: 'Notes',
  2685. notesPlaceholder: 'Notes sur l\'impression...',
  2686. externalLink: 'Lien externe',
  2687. externalLinkPlaceholder: 'https://...',
  2688. externalLinkHelp: 'Lien vers Printables, Thingiverse, etc.',
  2689. tags: 'Tags',
  2690. tagsPlaceholder: 'Ajouter des tags...',
  2691. addMoreTags: 'Plus de tags...',
  2692. matchingTags: 'Correspondant à "{{query}}"',
  2693. existingTags: 'Tags existants',
  2694. clickToAdd: '(cliquer pour ajouter)',
  2695. status: 'Statut',
  2696. failureReason: 'Raison de l\'échec',
  2697. selectReason: 'Choisir raison...',
  2698. photos: 'Photos du résultat',
  2699. photosHelp: 'Cliquez sur + pour ajouter des photos',
  2700. printResult: 'Résultat d\'impression',
  2701. saving: 'Enregistrement...',
  2702. // Failure reasons
  2703. failureReasons: {
  2704. adhesionFailure: 'Défaut d\'adhésion',
  2705. spaghettiDetached: 'Spaghetti / Détaché',
  2706. layerShift: 'Décalage de couche',
  2707. cloggedNozzle: 'Buse bouchée',
  2708. filamentRunout: 'Filament fini',
  2709. warping: 'Warping (Déformation)',
  2710. stringing: 'Stringing (Cheveux d\'ange)',
  2711. underExtrusion: 'Sous-extrusion',
  2712. powerFailure: 'Coupure courant',
  2713. userCancelled: 'Annulé par l\'utilisateur',
  2714. other: 'Autre',
  2715. },
  2716. // Archive statuses
  2717. statuses: {
  2718. completed: 'Réussie',
  2719. failed: 'Échouée',
  2720. aborted: 'Annulée',
  2721. printing: 'Impression',
  2722. },
  2723. },
  2724. // K-Profiles
  2725. kProfiles: {
  2726. title: 'K-Profiles',
  2727. noPrintersConfigured: 'Aucune imprimante configurée',
  2728. addPrinterInSettings: 'Ajoutez une imprimante pour gérer les K-profiles',
  2729. noActivePrinters: 'Aucune imprimante active',
  2730. enablePrinterConnection: 'Activez la connexion pour voir les K-profiles',
  2731. loadingProfiles: 'Chargement des K-Profiles...',
  2732. printerOffline: 'Imprimante hors ligne',
  2733. printerOfflineDesc: 'L\'imprimante doit être allumée.',
  2734. noMatchingProfiles: 'Aucun profil correspondant',
  2735. noMatchingProfilesDesc: 'Ajustez votre recherche',
  2736. noKProfiles: 'Aucun K-Profile',
  2737. noKProfilesDesc: 'Aucun profil trouvé pour une buse de {{diameter}}mm',
  2738. createFirstProfile: 'Créer le premier profil',
  2739. // Controls
  2740. printer: 'Imprimante',
  2741. nozzle: 'Buse',
  2742. refresh: 'Rafraîchir',
  2743. addProfile: 'Ajouter Profil',
  2744. export: 'Exporter',
  2745. import: 'Importer',
  2746. select: 'Choisir',
  2747. selectAll: 'Tout sélectionner',
  2748. delete: 'Supprimer',
  2749. // Filters
  2750. searchPlaceholder: 'Nom ou filament...',
  2751. allExtruders: 'Tous les extrudeurs',
  2752. leftOnly: 'Gauche uniquement',
  2753. rightOnly: 'Droite uniquement',
  2754. allFlow: 'Tout débit',
  2755. hfOnly: 'HF uniquement',
  2756. sOnly: 'S uniquement',
  2757. sortName: 'Tri : Nom',
  2758. sortKValue: 'Tri : Valeur K',
  2759. sortFilament: 'Tri : Filament',
  2760. // Dual extruder labels
  2761. leftExtruder: 'Extrudeur gauche',
  2762. rightExtruder: 'Extrudeur droit',
  2763. // Modal
  2764. modal: {
  2765. addTitle: 'Ajouter K-Profile',
  2766. editTitle: 'Modifier K-Profile',
  2767. profileName: 'Nom du profil',
  2768. profileNamePlaceholder: 'ex: Mon profil PLA',
  2769. kValue: 'Valeur K',
  2770. kValuePlaceholder: '0.020',
  2771. kValueHelp: 'Plage type : 0.01-0.06 (PLA), 0.02-0.10 (PETG)',
  2772. filament: 'Filament',
  2773. selectFilament: 'Choisir filament...',
  2774. noFilamentsHelp: 'Créez d\'abord un profil dans Bambu Studio.',
  2775. flowType: 'Type de débit',
  2776. highFlow: 'Haut Débit (HF)',
  2777. standard: 'Standard',
  2778. nozzleSize: 'Taille buse',
  2779. extruder: 'Extrudeur',
  2780. extruders: 'Extrudeurs',
  2781. left: 'Gauche',
  2782. right: 'Droite',
  2783. notes: 'Notes (locales)',
  2784. notesPlaceholder: 'Notes sur ce profil...',
  2785. notesHelp: 'Enregistré dans Bambuddy, pas sur l\'imprimante',
  2786. syncing: 'Sync avec l\'imprimante...',
  2787. savingExtruder: 'Sauvegarde extrudeur {{current}}/{{total}}...',
  2788. pleaseWait: 'Patientez...',
  2789. },
  2790. // Delete confirmation
  2791. deleteConfirm: {
  2792. title: 'Supprimer profil',
  2793. cannotUndo: 'Action irréversible',
  2794. message: 'Supprimer "{{name}}" de l\'imprimante ?',
  2795. },
  2796. // Bulk delete
  2797. bulkDelete: {
  2798. title: 'Supprimer les profils',
  2799. cannotUndo: 'Action irréversible',
  2800. message: 'Supprimer les {{count}} profils de l\'imprimante ?',
  2801. },
  2802. // Toast
  2803. toast: {
  2804. profileSaved: 'Profil K enregistré',
  2805. profilesSaved: 'Profil K enregistré sur {{count}} extrudeur(s)',
  2806. selectAtLeastOneExtruder: 'Sélectionnez un extrudeur',
  2807. profileDeleted: 'Profil K supprimé',
  2808. profilesDeleted: '{{count}} profils supprimés',
  2809. exportedProfiles: '{{count}} profils exportés',
  2810. importedProfiles: '{{count}} sur {{total}} profils importés',
  2811. noProfilesToExport: 'Rien à exporter',
  2812. invalidFileFormat: 'Format invalide',
  2813. failedToParseImport: 'Échec analyse fichier',
  2814. failedToSaveBatch: 'Échec enregistrement groupé',
  2815. noteSaved: 'Note enregistrée',
  2816. failedToSaveNote: 'Échec note',
  2817. },
  2818. // Permissions
  2819. permission: {
  2820. noRead: 'Pas d\'autorisation lecture',
  2821. noCreate: 'Pas d\'autorisation création',
  2822. noUpdate: 'Pas d\'autorisation mise à jour',
  2823. noDelete: 'Pas d\'autorisation suppression',
  2824. noExport: 'Pas d\'autorisation export',
  2825. noImport: 'Pas d\'autorisation import',
  2826. },
  2827. },
  2828. // Virtual Printer
  2829. virtualPrinter: {
  2830. title: 'Imprimante Virtuelle',
  2831. running: 'En cours',
  2832. stopped: 'Arrêtée',
  2833. description: {
  2834. default: 'Active une imprimante qui apparaît dans Bambu Studio. Les fichiers envoyés sont archivés sans impression.',
  2835. proxy: 'Active un proxy qui relaie le trafic vers une imprimante réelle, permettant l\'impression à distance.',
  2836. },
  2837. enable: {
  2838. title: 'Activer l\'imprimante virtuelle',
  2839. visibleInSlicer: 'Visible comme "Bambuddy" dans le Slicer',
  2840. proxyingTo: 'Proxy vers {{name}}',
  2841. notActive: 'Inactive',
  2842. },
  2843. model: {
  2844. title: 'Modèle d\'imprimante',
  2845. description: 'Choisissez le modèle à émuler.',
  2846. restartWarning: 'Changer le modèle redémarrera le service',
  2847. },
  2848. accessCode: {
  2849. title: 'Code d\'accès',
  2850. isSet: 'Code défini',
  2851. notSet: 'Code requis pour activer',
  2852. placeholder: 'Code 8 char',
  2853. placeholderChange: 'Entrez nouveau code',
  2854. hint: 'Exactement 8 caractères. Sert à l\'auth du Slicer.',
  2855. charCount: '({{count}}/8)',
  2856. },
  2857. targetPrinter: {
  2858. title: 'Imprimante cible',
  2859. configured: 'Cible configurée',
  2860. notConfigured: 'Imprimante requise pour mode Proxy',
  2861. placeholder: 'Choisir imprimante...',
  2862. hint: 'L\'imprimante doit être en mode LAN.',
  2863. noPrinters: 'Ajoutez une imprimante réelle d\'abord.',
  2864. },
  2865. remoteInterface: {
  2866. title: 'Exception Interface Réseau',
  2867. configured: 'Override actif',
  2868. optional: 'Optionnel - si IP auto est fausse (VPN, Docker, multi-NIC).',
  2869. placeholder: 'Auto (défaut)...',
  2870. hint: 'Force l\'IP annoncée via SSDP.',
  2871. },
  2872. mode: {
  2873. title: 'Mode',
  2874. archive: 'Archiver',
  2875. archiveDesc: 'Archive immédiatement',
  2876. review: 'Revue',
  2877. reviewDesc: 'Attendre revue avant archive',
  2878. queue: 'File',
  2879. queueDesc: 'Archiver et ajouter à la file',
  2880. proxy: 'Proxy',
  2881. proxyDesc: 'Relais vers imprimante réelle',
  2882. },
  2883. setupRequired: {
  2884. title: 'Configuration requise',
  2885. description: 'Nécessite des réglages système (ports, pare-feu).',
  2886. readGuide: 'Lire le guide de configuration',
  2887. },
  2888. howItWorks: {
  2889. title: 'Fonctionnement',
  2890. titleProxy: 'Fonctionnement (Mode Proxy)',
  2891. step1: 'Suivez le guide pour votre plateforme',
  2892. step2: 'Activez et réglez le code d\'accès',
  2893. step3: 'Dans le Slicer, allez dans "Ajouter Imprimante"',
  2894. step4: '"Bambuddy" apparaîtra dans la découverte',
  2895. step5: 'Connectez avec votre code d\'accès',
  2896. step6: 'Imprimez vers Bambuddy : le 3MF est archivé',
  2897. proxyStep1: 'Cible réelle en mode LAN',
  2898. proxyStep2: 'Choisissez l\'interface réseau',
  2899. proxyStep3: 'Activez le proxy',
  2900. proxyStep4: 'Connectez avec le code de la vraie imprimante',
  2901. proxyStep5: 'Le trafic est relayé par Bambuddy',
  2902. proxyStep6: 'Streaming caméra : voir doc NAT/IP forwarding',
  2903. },
  2904. status: {
  2905. title: 'Détails du statut',
  2906. printerName: 'Nom',
  2907. model: 'Modèle',
  2908. serialNumber: 'Série',
  2909. mode: 'Mode',
  2910. pendingFiles: 'Fichiers en attente',
  2911. targetPrinter: 'Cible',
  2912. ftpPort: 'Port FTP',
  2913. mqttPort: 'Port MQTT',
  2914. ftpConnections: 'Connexions FTP',
  2915. mqttConnections: 'Connexions MQTT',
  2916. },
  2917. toast: {
  2918. updated: 'Réglages virtuels mis à jour',
  2919. failedToUpdate: 'Échec mise à jour',
  2920. accessCodeRequired: 'Code d\'accès requis',
  2921. targetPrinterRequired: 'Imprimante cible requise',
  2922. accessCodeEmpty: 'Le code ne peut pas être vide',
  2923. accessCodeLength: 'Le code doit faire 8 caractères',
  2924. },
  2925. },
  2926. // Model Viewer
  2927. modelViewer: {
  2928. openInSlicer: 'Ouvrir dans le Slicer',
  2929. tabs: {
  2930. model: 'Modèle 3D',
  2931. gcode: 'Aperçu G-code',
  2932. },
  2933. notAvailable: 'indisponible',
  2934. notSliced: 'pas découpé',
  2935. plates: 'Plateaux',
  2936. allPlates: 'Tous les plateaux',
  2937. plateNumber: 'Plateau {{number}}',
  2938. plateCount: '{{count}} plateau',
  2939. plateCount_other: '{{count}} plateaux',
  2940. objectCount: '{{count}} objet',
  2941. objectCount_other: '{{count}} objets',
  2942. filamentCount: '{{count}} filament',
  2943. filamentCount_other: '{{count}} filaments',
  2944. eta: 'Fin {{minutes}} min',
  2945. noPreview: 'Aucun aperçu pour ce fichier',
  2946. pagination: {
  2947. pageOf: 'Page {{current}} sur {{total}}',
  2948. prev: 'Préc',
  2949. next: 'Suiv',
  2950. },
  2951. errors: {
  2952. failedToLoad: 'Échec chargement fichier',
  2953. noMeshes: 'Aucun maillage trouvé dans le 3MF',
  2954. unsupportedFormat: 'Format non supporté',
  2955. },
  2956. },
  2957. // Maintenance type descriptions (built-in)
  2958. maintenanceDescriptions: {
  2959. lubricateCarbonRods: 'Appliquer du lubrifiant sur les tiges carbone pour un mouvement fluide',
  2960. lubricateRails: 'Appliquer du lubrifiant sur les rails linéaires',
  2961. cleanNozzle: 'Nettoyer buse et hotend anti-bouchage',
  2962. checkBelts: 'Tension des courroies pour la précision',
  2963. cleanBuildPlate: 'Nettoyage plateau pour l\'adhésion',
  2964. checkExtruder: 'Usure des engrenages de l\'extrudeur',
  2965. checkCooling: 'Bon fonctionnement des ventilateurs',
  2966. generalInspection: 'Inspection générale de la machine',
  2967. cleanCarbonRods: 'Nettoyer les tiges carbone (friction)',
  2968. cleanLinearRails: 'Essuyer les rails linéaires (poussière/débris)',
  2969. checkPtfeTube: 'Usure ou dommage du tube PTFE',
  2970. replaceHepaFilter: 'Filtre HEPA pour la qualité de l\'air',
  2971. replaceCarbonFilter: 'Filtre charbon actif (odeurs)',
  2972. lubricateLeftNozzleRail: 'Lubrifier le rail de buse gauche (Série H2)',
  2973. },
  2974. // Smart Plugs
  2975. smartPlugs: {
  2976. offline: 'Hors ligne',
  2977. admin: 'Admin',
  2978. openPlugAdminPage: 'Page admin de la prise',
  2979. deleteSmartPlug: 'Supprimer la prise',
  2980. turnOnSmartPlug: 'Allumer la prise',
  2981. turnOffSmartPlug: 'Éteindre la prise',
  2982. turnOn: 'Allumer',
  2983. turnOff: 'Éteindre',
  2984. addSmartPlug: {
  2985. scanningNetwork: 'Scan réseau...',
  2986. chooseEntity: 'Choisir une entité...',
  2987. connectionFailed: 'Échec connexion',
  2988. searchEntities: 'Chercher entités...',
  2989. searchPowerSensors: 'Capteurs puissance...',
  2990. searchEnergySensors: 'Capteurs énergie...',
  2991. placeholders: {
  2992. plugName: 'Prise Salon',
  2993. mqttStateOnValue: 'ON, true, 1',
  2994. mqttSameAsPower: 'Identique au topic puissance, ou différent',
  2995. },
  2996. },
  2997. },
  2998. // Rich Text Editor
  2999. richTextEditor: {
  3000. bold: 'Gras',
  3001. italic: 'Italique',
  3002. underline: 'Souligné',
  3003. bulletList: 'Liste à puces',
  3004. numberedList: 'Liste numérotée',
  3005. alignLeft: 'Aligner à gauche',
  3006. alignCenter: 'Centrer',
  3007. alignRight: 'Aligner à droite',
  3008. addLink: 'Ajouter lien',
  3009. removeLink: 'Retirer lien',
  3010. },
  3011. // External Links
  3012. externalLinks: {
  3013. noLinksConfigured: 'Aucun lien externe configuré',
  3014. deleteLink: 'Supprimer lien',
  3015. removeCustomIcon: 'Retirer icône personnalisée',
  3016. openInNewTab: 'Ouvrir dans un nouvel onglet',
  3017. placeholders: {
  3018. linkName: 'Mon Lien',
  3019. },
  3020. },
  3021. // Keyboard Shortcuts Modal
  3022. keyboardShortcuts: {
  3023. title: 'Raccourcis Clavier',
  3024. navigation: 'Navigation',
  3025. archivesSection: 'Archives',
  3026. kProfilesSection: 'K-Profiles',
  3027. generalSection: 'Général',
  3028. shortcuts: {
  3029. goToPrinters: 'Aller aux Imprimantes',
  3030. goToArchives: 'Aller aux Archives',
  3031. goToQueue: 'Aller à la File',
  3032. goToStats: 'Aller aux Stats',
  3033. goToProfiles: 'Aller aux Profils Cloud',
  3034. goToSettings: 'Aller aux Paramètres',
  3035. focusSearch: 'Focus recherche',
  3036. openUploadModal: 'Ouvrir téléversement',
  3037. clearSelection: 'Tout déselectionner',
  3038. contextMenu: 'Menu contextuel (cartes)',
  3039. refreshProfiles: 'Rafraîchir profils',
  3040. newProfile: 'Nouveau profil',
  3041. exitSelectionMode: 'Quitter mode sélection',
  3042. showHelp: 'Afficher cette aide',
  3043. },
  3044. footer: 'Échap ou clic extérieur pour fermer',
  3045. },
  3046. // Notification Log
  3047. notificationLog: {
  3048. title: 'Journal de Notification',
  3049. events: {
  3050. printStarted: 'Début impression',
  3051. printComplete: 'Fin impression',
  3052. printFailed: 'Échec impression',
  3053. printStopped: 'Arrêt impression',
  3054. progress: 'Progression',
  3055. printerOffline: 'Hors ligne',
  3056. printerError: 'Erreur',
  3057. lowFilament: 'Filament bas',
  3058. maintenanceDue: 'Maintenance',
  3059. test: 'Test',
  3060. },
  3061. timeAgo: {
  3062. justNow: 'À l\'instant',
  3063. minutesAgo: 'Il y a {{minutes}}m',
  3064. hoursAgo: 'Il y a {{hours}}h',
  3065. },
  3066. },
  3067. // Restore/Backup Modal
  3068. restoreBackup: {
  3069. title: 'Restaurer Sauvegarde',
  3070. restoring: 'Restauration...',
  3071. restoreComplete: 'Restauration terminée',
  3072. restoreFailed: 'Échec restauration',
  3073. importSettings: 'Importer les réglages d\'un fichier',
  3074. pleaseWait: 'Patientez pendant la restauration',
  3075. clickToSelect: 'Fichier .json ou .zip',
  3076. howDuplicateHandling: 'Gestion des doublons :',
  3077. categories: {
  3078. printers: 'Imprimantes',
  3079. smartPlugs: 'Prises',
  3080. notificationProviders: 'Fournisseurs',
  3081. filaments: 'Filaments',
  3082. archives: 'Archives',
  3083. pendingUploads: 'Téléversements en attente',
  3084. settingsTemplates: 'Réglages & Modèles',
  3085. },
  3086. matchingInfo: {
  3087. printers: 'par numéro de série',
  3088. smartPlugs: 'par adresse IP',
  3089. notificationProviders: 'par nom',
  3090. filaments: 'par nom+type+marque',
  3091. archives: 'par empreinte numérique (hash)',
  3092. pendingUploads: 'par nom de fichier',
  3093. settingsTemplates: 'toujours écrasés',
  3094. },
  3095. replaceExisting: 'Remplacer existant',
  3096. keepExisting: 'Garder existant',
  3097. replaceDescription: 'Écrase les doublons avec la sauvegarde',
  3098. keepDescription: 'Ne restaure que les éléments absents',
  3099. caution: 'Attention :',
  3100. cautionText: 'L\'écrasement remplacera vos réglages. Les codes d\'accès imprimantes sont exclus par sécurité.',
  3101. itemsRestored: 'Éléments restaurés',
  3102. itemsSkipped: 'Éléments ignorés',
  3103. restored: 'Restaurés',
  3104. skipped: 'Ignorés (déjà présents)',
  3105. filesLabel: 'Fichiers (3MF, vignettes, etc.)',
  3106. newApiKeysGenerated: 'Nouvelles clés API générées',
  3107. newApiKeysWarning: 'Copiées maintenant, elles ne seront plus visibles !',
  3108. processingBackup: 'Traitement du fichier...',
  3109. noDataFound: 'Aucune donnée trouvée dans le fichier.',
  3110. failedToRestore: 'Échec restaure. Vérifiez le format.',
  3111. },
  3112. // Backup Export Modal
  3113. backupExport: {
  3114. title: 'Exporter Sauvegarde',
  3115. selectData: 'Données à inclure',
  3116. selectAll: 'Tout sélectionner',
  3117. selectNone: 'Ne rien sélectionner',
  3118. categoryDescriptions: {
  3119. settings: 'Langue, thèmes, préférences',
  3120. notifications: 'ntfy, Pushover, Discord, etc.',
  3121. templates: 'Modèles de messages personnalisés',
  3122. smartPlugs: 'Configuration des prises Tasmota',
  3123. externalLinks: 'Liens externes de la barre latérale',
  3124. printers: 'Infos imprimantes (codes d\'accès exclus par défaut)',
  3125. plateDetection: 'Images références des plateaux vides',
  3126. filaments: 'Types et coûts filaments',
  3127. maintenance: 'Plannings de maintenance personnalisés',
  3128. archives: 'Données impressions + fichiers (3MF, vignettes, etc.)',
  3129. projects: 'Projets, BOM, pièces jointes',
  3130. pendingUploads: 'En attente revue virtuelle',
  3131. apiKeys: 'Clés Webhook (nouvelles clés générées à l\'import)',
  3132. },
  3133. requiresPrinters: 'Nécessite sélection des imprimantes',
  3134. zipFileWarning: 'Fichier ZIP créé.',
  3135. zipFileDescription: 'Contient tous les médias. Peut être volumineux.',
  3136. includeAccessCodes: 'Inclure Codes d\'accès',
  3137. includeAccessCodesDescription: 'Pour migrer vers une autre machine',
  3138. includeAccessCodesWarning: 'Codes en texte clair. Sécurisez ce fichier !',
  3139. categoriesSelected: '{{selectedCount}} catégories choisies',
  3140. },
  3141. // Pending Uploads Panel
  3142. pendingUploads: {
  3143. placeholders: {
  3144. notes: 'Notes sur l\'impression...',
  3145. },
  3146. discardUpload: 'Rejeter',
  3147. archiveAllUploads: 'Tout archiver',
  3148. discardAllUploads: 'Tout rejeter',
  3149. archive: 'Archiver',
  3150. timeAgo: {
  3151. justNow: 'À l\'instant',
  3152. minutesAgo: 'Il y a {{minutes}}m',
  3153. hoursAgo: 'Il y a {{hours}}h',
  3154. daysAgo: 'Il y a {{days}}j',
  3155. },
  3156. },
  3157. // API Browser
  3158. apiBrowser: {
  3159. placeholders: {
  3160. requestBody: 'Corps JSON...',
  3161. searchEndpoints: 'Chercher endpoints...',
  3162. },
  3163. },
  3164. // Configure AMS Slot Modal
  3165. configureAmsSlot: {
  3166. searchPresets: 'Chercher presets...',
  3167. colorPlaceholder: 'Nom couleur ou hex (ex: brown, FF8800)',
  3168. clearCustomColor: 'Effacer couleur perso',
  3169. noCloudPresets: 'Profils Cloud absents. Connectez-vous.',
  3170. noMatchingPresets: 'Aucun profil trouvé.',
  3171. custom: 'Perso',
  3172. builtin: 'Inclus',
  3173. settingsSentToPrinter: 'Réglages envoyés',
  3174. filamentProfile: 'Profil Filament',
  3175. },
  3176. // GitHub Backup Settings
  3177. githubBackup: {
  3178. title: 'Sauvegarde GitHub',
  3179. history: 'Historique',
  3180. downloadBackup: 'Télécharger',
  3181. restoreBackup: 'Restaurer',
  3182. noBackupsYet: 'Aucune sauvegarde',
  3183. },
  3184. // Email Settings
  3185. emailSettings: {
  3186. placeholders: {
  3187. fromName: 'BamBuddy',
  3188. },
  3189. },
  3190. // Tag Management Modal
  3191. tagManagement: {
  3192. searchTags: 'Chercher tags...',
  3193. renameTag: 'Renommer tag',
  3194. deleteTag: 'Supprimer tag',
  3195. },
  3196. // Notification Template Editor
  3197. notificationTemplates: {
  3198. placeholders: {
  3199. title: 'Titre notification...',
  3200. body: 'Message notification...',
  3201. },
  3202. },
  3203. // Batch Tag Modal
  3204. batchTag: {
  3205. placeholders: {
  3206. newTag: 'Nouveau tag...',
  3207. },
  3208. },
  3209. // Photo Gallery Modal
  3210. photoGallery: {
  3211. deletePhoto: 'Supprimer photo',
  3212. },
  3213. // Filament Hover Card
  3214. filamentHoverCard: {
  3215. copySpoolUuid: 'Copier UUID bobine',
  3216. },
  3217. // K Profiles View
  3218. kProfilesView: {
  3219. hasNote: 'A une note',
  3220. copyProfile: 'Copier profil',
  3221. },
  3222. // Layout/Navigation
  3223. layout: {
  3224. openMenu: 'Ouvrir menu',
  3225. noPermissionSystemInfo: 'Pas d\'autorisation système',
  3226. },
  3227. // Dashboard
  3228. dashboard: {
  3229. dragToReorder: 'Glisser pour réorganiser',
  3230. hideWidget: 'Masquer widget',
  3231. },
  3232. // Notification Provider Card
  3233. notificationProviderCard: {
  3234. deleteNotificationProvider: 'Supprimer fournisseur',
  3235. },
  3236. // File Manager Modal
  3237. fileManagerModal: {
  3238. closeFileManager: 'Fermer gestionnaire',
  3239. sortFiles: 'Trier fichiers',
  3240. goToParentFolder: 'Dossier parent',
  3241. threeView: 'Vue 3D',
  3242. },
  3243. // Embedded Camera Viewer
  3244. embeddedCameraViewer: {
  3245. refreshStream: 'Actualiser flux',
  3246. close: 'Fermer',
  3247. zoomOut: 'Zoom -',
  3248. resetZoom: 'Reset zoom',
  3249. zoomIn: 'Zoom +',
  3250. dragToResize: 'Glisser pour dimension',
  3251. },
  3252. // Timelapse Viewer
  3253. timelapseViewer: {
  3254. skipBack5s: '-5s',
  3255. skipForward5s: '+5s',
  3256. },
  3257. // Notification Providers
  3258. notificationProviders: {
  3259. descriptions: {
  3260. email: 'Notifications par email SMTP',
  3261. telegram: 'Via bot Telegram',
  3262. discord: 'Via webhook Discord',
  3263. ntfy: 'Push auto-hébergé (ntfy)',
  3264. pushover: 'Push fiable (Pushover)',
  3265. callmebot: 'WhatsApp gratuit via CallMeBot',
  3266. webhook: 'Requête HTTP POST personnalisée',
  3267. },
  3268. },
  3269. // Log Viewer
  3270. logViewer: {
  3271. searchPlaceholder: 'Message ou nom...',
  3272. noLogEntries: 'Aucune entrée journal',
  3273. },
  3274. // Switchbar Popover
  3275. switchbarPopover: {
  3276. noSwitchesInSwitchbar: 'Aucun interrupteur',
  3277. },
  3278. // Project Page Modal
  3279. projectPageModal: {
  3280. placeholders: {
  3281. title: 'Titre',
  3282. designer: 'Designer',
  3283. license: 'Licence',
  3284. description: 'Description...',
  3285. profileTitle: 'Titre du profil',
  3286. profileDescription: 'Description du profil...',
  3287. },
  3288. },
  3289. // Spoolman Settings
  3290. spoolmanSettings: {},
  3291. };