| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361 |
- export default {
- // Navigation
- nav: {
- printers: 'Imprimantes',
- archives: 'Archives',
- queue: 'File d\'attente',
- stats: 'Statistiques',
- profiles: 'Profils',
- maintenance: 'Maintenance',
- projects: 'Projets',
- inventory: 'Filament',
- files: 'Gestionnaire de fichiers',
- settings: 'Paramètres',
- system: 'Système',
- collapseSidebar: 'Réduire la barre latérale',
- expandSidebar: 'Développer la barre latérale',
- update: 'Mise à jour',
- updateAvailable: 'Mise à jour disponible : v{{version}}',
- updateAvailableBanner: 'La version {{version}} est disponible !',
- viewUpdate: 'Voir la mise à jour',
- viewOnGithub: 'Voir sur GitHub',
- keyboardShortcuts: 'Raccourcis clavier (?)',
- switchToLight: 'Passer au mode clair',
- switchToDark: 'Passer au mode sombre',
- smartSwitches: 'Interrupteurs intelligents',
- logout: 'Déconnexion',
- },
- // Common
- common: {
- save: 'Enregistrer',
- saving: 'Enregistrement...',
- cancel: 'Annuler',
- delete: 'Supprimer',
- edit: 'Modifier',
- add: 'Ajouter',
- close: 'Fermer',
- confirm: 'Confirmer',
- loading: 'Chargement...',
- error: 'Erreur',
- success: 'Succès',
- warning: 'Avertissement',
- enabled: 'Activé',
- disabled: 'Désactivé',
- yes: 'Oui',
- no: 'Non',
- on: 'On',
- off: 'Off',
- all: 'Tous',
- none: 'Aucun',
- search: 'Rechercher',
- filter: 'Filtrer',
- sort: 'Trier',
- refresh: 'Actualiser',
- download: 'Télécharger',
- upload: 'Téléverser',
- actions: 'Actions',
- status: 'Statut',
- name: 'Nom',
- description: 'Description',
- date: 'Date',
- time: 'Heure',
- hours: 'heures',
- minutes: 'minutes',
- seconds: 'secondes',
- days: 'jours',
- enable: 'Activer',
- disable: 'Désactiver',
- permissions: 'Autorisations',
- noPrinters: 'Aucune imprimante configurée',
- noData: 'Aucune donnée disponible',
- linkNotFound: 'Lien non trouvé',
- required: 'Requis',
- optional: 'Optionnel',
- dismiss: 'Ignorer',
- apply: 'Appliquer',
- reset: 'Réinitialiser',
- export: 'Exporter',
- import: 'Importer',
- clear: 'Effacer',
- selectAll: 'Tout sélectionner',
- deselectAll: 'Tout désélectionner',
- noChange: '— Aucun changement —',
- unchanged: 'Inchangé',
- unassigned: 'Non assigné',
- unknown: 'Inconnu',
- unknownError: 'Erreur inconnue',
- today: 'Aujourd\'hui',
- asap: 'Dès que possible',
- overdue: 'En retard',
- now: 'Maintenant',
- collapse: 'Réduire',
- expand: 'Développer',
- viewArchive: 'Voir l\'archive',
- viewInFileManager: 'Voir dans le gestionnaire de fichiers',
- addedBy: 'Ajouté par {{username}}',
- prints: 'impressions',
- more: '+{{count}} de plus',
- ascending: 'Croissant',
- descending: 'Décroissant',
- printer: 'Imprimante',
- remove: 'Retirer',
- type: 'Type',
- print: 'Imprimer',
- rename: 'Renommer',
- move: 'Déplacer',
- create: 'Créer',
- duplicate: 'Dupliquer',
- left: 'Gauche',
- right: 'Droite',
- },
- // Printers page
- printers: {
- title: 'Imprimantes',
- addPrinter: 'Ajouter une imprimante',
- editPrinter: 'Modifier l\'imprimante',
- deletePrinter: 'Supprimer l\'imprimante',
- printerName: 'Nom de l\'imprimante',
- serialNumber: 'Numéro de série',
- ipAddress: 'Adresse IP / Nom d\'hôte',
- accessCode: 'Code d\'accès',
- model: 'Modèle',
- nozzleCount: 'Nombre de buses',
- autoArchive: 'Auto-archivage',
- status: {
- available: 'Disponible',
- idle: 'Inactif',
- printing: 'Impression en cours',
- paused: 'En pause',
- offline: 'Hors ligne',
- error: 'Erreur',
- finished: 'Terminé',
- unknown: 'Inconnu',
- },
- temperatures: {
- nozzle: 'Buse',
- bed: 'Plateau',
- chamber: 'Chambre',
- },
- progress: '{{percent}}% terminé',
- timeRemaining: '{{time}} restant',
- deleteConfirm: 'Êtes-vous sûr de vouloir supprimer "{{name}}" ?',
- maintenanceOk: 'Maintenance OK',
- maintenanceWarning: '{{count}} avertissement',
- maintenanceWarning_plural: '{{count}} avertissements',
- maintenanceDue: '{{count}} échéance',
- maintenanceDue_plural: '{{count}} échéances',
- // Sort options
- sort: {
- name: 'Nom',
- status: 'Statut',
- model: 'Modèle',
- location: 'Emplacement',
- ascending: 'Tri croissant',
- descending: 'Tri décroissant',
- },
- // Card size
- cardSize: {
- small: 'Petites cartes',
- medium: 'Cartes moyennes',
- large: 'Grandes cartes',
- extraLarge: 'Très grandes cartes',
- },
- // Controls
- hideOffline: 'Masquer hors ligne',
- nextAvailable: 'Prochaine disponible',
- powerOn: 'Allumer',
- offlinePrintersWithPlugs: 'Imprimantes hors ligne avec prises connectées',
- noPrintersConfigured: 'Aucune imprimante configurée pour le moment',
- // Printer card
- readyToPrint: 'Prête à imprimer',
- external: 'Externe',
- deleteArchives: 'Supprimer les archives d\'impression',
- noLabel: 'Pas d\'étiquette',
- printPreview: 'Aperçu avant impression',
- width: 'Largeur',
- height: 'Hauteur',
- noObjectsFound: 'Aucun objet trouvé',
- objectsLoadedOnPrintStart: 'Les objets sont chargés au début de l\'impression',
- willBeSkipped: 'Sera sauté',
- name: 'Nom',
- serialCannotBeChanged: 'Le numéro de série ne peut pas être modifié',
- locationHelp: 'Utilisé pour grouper les imprimantes et filtrer la file d\'attente',
- // WiFi signal strength
- wifiSignal: {
- veryWeak: 'Très faible',
- weak: 'Faible',
- fair: 'Moyen',
- good: 'Bon',
- excellent: 'Excellent',
- },
- // Maintenance
- maintenanceUpToDate: 'Maintenance à jour - Cliquez pour voir',
- // Chamber light
- chamberLightOn: 'Allumer la lumière de la chambre',
- chamberLightOff: 'Éteindre la lumière de la chambre',
- // Files
- browseFiles: 'Parcourir les fichiers de l\'imprimante',
- // Smart plug
- autoOffAfterPrint: 'Extinction auto après impression',
- autoOffExecuted: 'Extinction auto exécutée - rallumez pour réinitialiser',
- // HMS errors
- hmsErrors: 'Erreurs HMS',
- viewHmsErrors: 'Voir {{count}} erreur(s) HMS',
- // Actions
- resume: 'Reprendre',
- pause: 'Pause',
- stop: 'Arrêter',
- camera: 'Caméra',
- skipObject: 'Sauter l\'objet',
- reconnect: 'Reconnecter',
- mqttDebug: 'Débogage MQTT',
- activeNozzle: 'Active : buse {{nozzle}}',
- nozzleRack: 'Rack à buses',
- nozzleDocked: 'Rangée',
- nozzleMounted: 'Montée',
- nozzleActive: 'Active',
- nozzleIdle: 'Inactive',
- nozzleDiameter: 'Diamètre',
- nozzleType: 'Type',
- nozzleStatus: 'Statut',
- nozzleFilament: 'Filament',
- nozzleWear: 'Usure',
- nozzleMaxTemp: 'Temp Max',
- nozzleSerial: 'Série',
- nozzleHardenedSteel: 'Acier Trempé',
- nozzleStainlessSteel: 'Acier Inoxydable',
- nozzleTungstenCarbide: 'Carbure de Tungstène',
- nozzleFlow: 'Débit',
- nozzleHighFlow: 'Haut débit',
- nozzleStandardFlow: 'Standard',
- // Firmware
- firmwareUpdate: 'Mise à jour Firmware',
- firmwareInstructions: 'Sur l\'écran de l\'imprimante, allez dans',
- firmwareNav: 'Naviguez vers',
- settings: 'Paramètres',
- firmware: 'Firmware',
- // Discovery
- discoverPrinters: 'Découvrir les imprimantes',
- searching: 'Recherche...',
- manualEntry: 'Saisie manuelle',
- addFromCloud: 'Ajouter depuis le Cloud',
- // Toast messages
- toast: {
- printerDeleted: 'Imprimante supprimée',
- printerAdded: 'Imprimante ajoutée',
- printerUpdated: 'Imprimante mise à jour',
- failedToDelete: 'Échec de la suppression',
- failedToAdd: 'Échec de l\'ajout',
- failedToUpdate: 'Échec de la mise à jour',
- commandSent: 'Commande envoyée',
- failedToSendCommand: 'Échec de l\'envoi de la commande',
- turnedOn: '{{name}} allumée',
- failedToPowerOn: 'Échec de l\'allumage de {{name}}',
- scriptTriggered: 'Script déclenché',
- printStopped: 'Impression arrêtée',
- printPaused: 'Impression en pause',
- printResumed: 'Impression reprise',
- referenceDeleted: 'Référence supprimée',
- detectionAreaSaved: 'Zone de détection enregistrée',
- failedToRunScript: 'Échec du script',
- failedToStopPrint: 'Échec de l\'arrêt',
- failedToPausePrint: 'Échec de la mise en pause',
- failedToResumePrint: 'Échec de la reprise',
- failedToControlChamberLight: 'Échec du contrôle de la lumière',
- failedToUpdateSetting: 'Échec de mise à jour du paramètre',
- failedToSkipObjects: 'Échec du saut d\'objets',
- failedToRereadRfid: 'Échec lecture RFID',
- failedToCheckPlate: 'Échec vérification plateau',
- failedToUpdateLabel: 'Échec mise à jour étiquette',
- failedToDeleteReference: 'Échec suppression référence',
- failedToSaveDetectionArea: 'Échec enregistrement zone',
- plateCheckEnabled: 'Vérification plateau activée',
- plateCheckDisabled: 'Vérification plateau désactivée',
- calibrationSaved: 'Calibration enregistrée !',
- calibrationFailed: 'Échec de la calibration',
- rfidRereadInitiated: 'Lecture RFID initiée',
- },
- // Connection status
- connection: {
- connected: 'Connecté',
- offline: 'Hors ligne',
- },
- // Queue info
- queue: {
- inQueue: '{{count}} impression en file',
- inQueue_plural: '{{count}} impressions en file',
- },
- // Controls section
- controls: 'Contrôles',
- // RFID
- rfid: {
- reread: 'Relire RFID',
- },
- // Permissions
- permission: {
- noAdd: 'Pas d\'autorisation pour ajouter',
- noEdit: 'Pas d\'autorisation pour modifier',
- noDelete: 'Pas d\'autorisation pour supprimer',
- noControl: 'Pas d\'autorisation pour contrôler',
- noFiles: 'Pas d\'autorisation pour les fichiers',
- noAmsRfid: 'Pas d\'autorisation pour le RFID',
- noSmartPlugControl: 'Pas d\'autorisation pour les prises',
- },
- // Add/Edit modal
- modal: {
- addTitle: 'Ajouter une imprimante',
- editTitle: 'Modifier l\'imprimante',
- myPrinter: 'Mon imprimante',
- selectModel: 'Choisir un modèle...',
- locationGroup: 'Emplacement / Groupe (optionnel)',
- locationPlaceholder: 'ex: Atelier, Bureau',
- autoArchiveLabel: 'Auto-archiver les impressions terminées',
- fromPrinterSettings: 'Depuis les paramètres imprimante',
- modelOptional: 'Modèle (optionnel)',
- saveChanges: 'Enregistrer les modifications',
- },
- // Skip objects
- skipObjects: {
- tooltip: 'Sauter des objets',
- onlyWhilePrinting: 'Sauter (uniquement pendant l\'impression)',
- requiresMultiple: 'Sauter (nécessite 2+ objets)',
- title: 'Sauter des objets',
- matchIdsInfo: 'Faites correspondre les IDs avec l\'écran de l\'imprimante',
- printerShowsIds: 'L\'écran affiche les IDs des objets sur le plateau',
- skipSelected: 'Sauter la sélection',
- skipping: 'Saut en cours...',
- noObjectsSelected: 'Aucun objet sélectionné',
- selectObjectsToSkip: 'Sélectionnez les objets à ignorer',
- skipped: 'sauté',
- objectsSkipped: 'Objets sautés',
- activeCount: '{{count}} actifs',
- waitForLayer: 'Attendez la couche 2 pour sauter des objets (actuelle : {{layer}})',
- skip: 'Sauter',
- confirmTitle: 'Sauter l\'objet ?',
- confirmMessage: 'Voulez-vous vraiment sauter "{{name}}" ? Cette action est irréversible.',
- },
- // Confirm modals
- confirm: {
- deleteTitle: 'Supprimer l\'imprimante',
- deleteMessage: 'Supprimer "{{name}}" ? Cela retirera tous les paramètres de connexion.',
- deleteArchivesNote: 'Tout l\'historique sera définitivement supprimé.',
- keepArchivesNote: 'L\'historique sera conservé mais plus associé à cette imprimante.',
- stopTitle: 'Arrêter l\'impression',
- stopMessage: 'Arrêter l\'impression sur "{{name}}" ?',
- stopButton: 'Arrêter',
- pauseTitle: 'Mettre en pause',
- pauseMessage: 'Mettre en pause l\'impression sur "{{name}}" ?',
- pauseButton: 'Pause',
- resumeTitle: 'Reprendre l\'impression',
- resumeMessage: 'Reprendre l\'impression sur "{{name}}" ?',
- resumeButton: 'Reprendre',
- powerOnTitle: 'Allumer l\'imprimante',
- powerOnMessage: 'Allumer "{{name}}" ?',
- powerOnButton: 'Allumer',
- powerOffTitle: 'Éteindre l\'imprimante',
- powerOffMessage: 'Éteindre "{{name}}" ?',
- powerOffWarning: 'ATTENTION : "{{name}}" imprime ! L\'éteindre maintenant peut endommager l\'imprimante.',
- powerOffButton: 'Éteindre',
- },
- // Discovery
- discovery: {
- title: 'Découvrir les imprimantes',
- searching: 'Recherche...',
- scanning: 'Scan en cours...',
- scanProgress: 'Scan... {{scanned}}/{{total}}',
- foundPrinters: '{{count}} imprimante(s) trouvée(s)',
- noPrintersFound: 'Aucune imprimante trouvée',
- noPrintersFoundSubnet: 'Aucune imprimante dans ce sous-réseau.',
- noPrintersFoundNetwork: 'Aucune imprimante sur le réseau.',
- allConfigured: 'Toutes les imprimantes trouvées sont déjà configurées.',
- alreadyAdded: 'Déjà ajoutée',
- select: 'Sélectionner',
- manualEntry: 'Saisie manuelle',
- addFromCloud: 'Ajouter depuis le Cloud',
- subnetToScan: 'Sous-réseau à scanner',
- dockerNote: 'Docker détecté. Entrez le sous-réseau en notation CIDR. Nécessite network_mode: host.',
- scanSubnet: 'Scanner le sous-réseau',
- discoverNetwork: 'Découvrir sur le réseau',
- scanningSubnet: 'Scan du sous-réseau pour imprimantes Bambu...',
- scanningNetwork: 'Scan du réseau...',
- serialRequired: 'Série requis',
- unknown: 'Inconnu',
- failedToStart: 'Échec du démarrage de la découverte',
- },
- // Filaments section
- filaments: 'Filaments',
- // Camera
- openCameraOverlay: 'Ouvrir la caméra en superposition',
- openCameraWindow: 'Ouvrir la caméra dans une fenêtre',
- // Firmware
- firmwareUpdateAvailable: 'Mise à jour firmware : {{current}} → {{latest}}',
- firmwareUpToDate: 'Firmware {{version}} — À jour',
- firmwareUpdateButton: 'Mettre à jour',
- // Plate detection
- plateDetection: {
- noPermission: 'Pas d\'autorisation de modification',
- enabledClick: 'Vérification activée - Cliquez pour désactiver',
- disabledClick: 'Vérification désactivée - Cliquez pour activer',
- manageCalibration: 'Gérer la calibration de détection',
- calibrationRequired: 'Calibration requise',
- calibrationInstructions: 'Videz le plateau, puis cliquez sur Calibrer.',
- calibrationDescription: 'Capture une image de référence du plateau vide.',
- calibrationTip: 'Conseil : Stockez jusqu\'à 5 références. Le système utilise la meilleure correspondance.',
- plateEmpty: 'Le plateau semble vide',
- objectsDetected: 'Objets détectés sur le plateau',
- confidence: 'Confiance',
- difference: 'Différence',
- analysisPreview: 'Aperçu de l\'analyse :',
- analysisLegend: 'Cadre vert = zone, Rouge = différences',
- savedReferences: 'Références ({{count}}/{{max}})',
- deleteReference: 'Supprimer la référence',
- labelPlaceholder: 'Étiquette...',
- clickToEdit: '{{label}} - Modifier',
- clickToAddLabel: 'Ajouter une étiquette',
- },
- // Fans
- fans: {
- partCooling: 'Ventilateur pièce',
- auxiliary: 'Ventilateur auxiliaire',
- chamber: 'Ventilateur chambre',
- },
- // HMS errors
- clickToViewHmsErrors: 'Cliquez pour voir les erreurs HMS',
- estimatedCompletion: 'Fin estimée',
- slotOptions: 'Options du slot',
- // Firmware modal
- firmwareModal: {
- title: 'Mise à jour Firmware',
- titleUpToDate: 'Infos Firmware',
- currentVersion: 'Actuelle :',
- latestVersion: 'Dernière :',
- releaseNotes: 'Notes de version',
- checkingPrereqs: 'Vérification des prérequis...',
- sdCardReady: 'Carte SD prête. Cliquez pour téléverser.',
- uploadedSuccess: 'Firmware téléversé !',
- applyInstructions: 'Pour appliquer sur l\'imprimante :',
- step1: 'Sur l\'écran, allez dans Paramètres',
- step2: 'Allez dans Firmware',
- step3: 'Sélectionnez "Mettre à jour depuis carte SD"',
- step4: 'Prévoyez 10-20 minutes',
- done: 'Terminé',
- starting: 'Démarrage...',
- uploadFirmware: 'Téléverser le Firmware',
- uploadFailed: 'Échec du téléversement : {{error}}',
- uploadedToast: 'Firmware téléversé ! Lancez la mise à jour sur l\'écran.',
- },
- accessCodePlaceholder: 'Laissez vide pour garder l\'actuel',
- // ROI editor
- roi: {
- title: 'Zone de détection (ROI)',
- xStart: 'Début X',
- yStart: 'Début Y',
- width: 'Largeur',
- height: 'Hauteur',
- instruction: 'Ajustez le cadre vert pour cibler le plateau.',
- },
- },
- // Archives page
- archives: {
- title: 'Archives d\'impression',
- searchPlaceholder: 'Chercher dans les archives...',
- filterByPrinter: 'Par imprimante',
- filterByStatus: 'Par statut',
- sortBy: 'Trier par',
- sortNewest: 'Plus récent',
- sortOldest: 'Plus ancien',
- sortName: 'Nom',
- sortDuration: 'Durée',
- sortLargest: 'Plus volumineux',
- sortSmallest: 'Plus léger',
- sortSize: 'Taille',
- noArchives: 'Aucune archive trouvée',
- noArchivesSearch: 'Aucune archive ne correspond',
- noArchivesYet: 'Pas encore d\'archive',
- loadingArchives: 'Chargement...',
- releaseToUpload: 'Relâcher pour téléverser',
- showAll: 'Tout afficher',
- showFavoritesOnly: 'Favoris uniquement',
- gridView: 'Grille',
- listView: 'Liste',
- calendarView: 'Calendrier',
- manageTags: 'Gérer les tags',
- showFailedPrints: 'Afficher les échecs',
- hideFailedPrints: 'Masquer les échecs',
- printTime: 'Temps d\'impression',
- filamentUsed: 'Filament utilisé',
- cost: 'Coût',
- reprint: 'Réimprimer',
- preview: 'Aperçu',
- deleteArchive: 'Supprimer l\'archive',
- deleteConfirm: 'Supprimer cette archive ?',
- favorite: 'Favori',
- unfavorite: 'Retirer des favoris',
- viewDetails: 'Détails',
- status: {
- completed: 'Réussi',
- failed: 'Échoué',
- stopped: 'Arrêté',
- },
- toast: {
- source3mfAttached: 'Source 3MF attachée : {{filename}}',
- failedUploadSource3mf: 'Échec téléversement 3MF',
- source3mfRemoved: 'Source 3MF retirée',
- failedRemoveSource3mf: 'Échec retrait 3MF',
- f3dAttached: 'F3D attaché : {{filename}}',
- failedUploadF3d: 'Échec téléversement F3D',
- f3dRemoved: 'F3D retiré',
- failedRemoveF3d: 'Échec retrait F3D',
- timelapseAttached: 'Timelapse attaché : {{filename}}',
- timelapseAlreadyAttached: 'Timelapse déjà présent',
- noMatchingTimelapse: 'Pas de timelapse correspondant',
- failedScanTimelapse: 'Échec scan timelapse',
- failedAttachTimelapse: 'Échec attache timelapse',
- archiveDeleted: 'Archive supprimée',
- failedDeleteArchive: 'Échec suppression',
- addedToFavorites: 'Ajouté aux favoris',
- removedFromFavorites: 'Retiré des favoris',
- projectUpdated: 'Projet mis à jour',
- failedUpdateProject: 'Échec mise à jour projet',
- linkCopied: 'Lien copié',
- failedCopyLink: 'Échec copie lien',
- photoDeleted: 'Photo supprimée',
- failedDeletePhoto: 'Échec suppression photo',
- failedDeleteArchives: 'Échec suppression archives',
- failedUpdateFavorites: 'Échec mise à jour favoris',
- exportDownloaded: 'Export téléchargé',
- exportFailed: 'Échec export',
- },
- menu: {
- print: 'Imprimer',
- schedule: 'Planifier',
- openInBambuStudio: 'Ouvrir dans le Slicer',
- slice: 'Découper',
- externalLink: 'Lien externe',
- viewOnMakerWorld: 'Voir sur MakerWorld',
- preview3d: 'Aperçu 3D',
- viewTimelapse: 'Voir le Timelapse',
- scanForTimelapse: 'Scanner pour Timelapse',
- downloadSource3mf: 'Télécharger Source 3MF',
- uploadSource3mf: 'Téléverser Source 3MF',
- replaceSource3mf: 'Remplacer Source 3MF',
- removeSource3mf: 'Retirer Source 3MF',
- uploadF3d: 'Téléverser F3D',
- replaceF3d: 'Remplacer F3D',
- downloadF3d: 'Télécharger F3D',
- removeF3d: 'Retirer F3D',
- download: 'Télécharger',
- copyDownloadLink: 'Copier lien de téléchargement',
- qrCode: 'Code QR',
- viewPhotos: 'Voir les photos',
- viewPhotosCount: 'Voir les photos ({{count}})',
- projectPage: 'Page du Projet',
- addToFavorites: 'Ajouter aux favoris',
- removeFromFavorites: 'Retirer des favoris',
- edit: 'Modifier',
- goToProject: 'Aller au Projet : {{name}}',
- addToProject: 'Ajouter au Projet',
- removeFromProject: 'Retirer du Projet',
- loading: 'Chargement...',
- noProjectsAvailable: 'Aucun projet disponible',
- select: 'Sélectionner',
- deselect: 'Désélectionner',
- delete: 'Supprimer',
- },
- permission: {
- noReprint: 'Pas d\'autorisation de réimpression',
- noAddToQueue: 'Pas d\'autorisation pour la file',
- noUpdateArchives: 'Pas d\'autorisation de mise à jour',
- noUploadFiles: 'Pas d\'autorisation de téléversement',
- noDownload: 'Pas d\'autorisation de téléchargement',
- noCopyLink: 'Pas d\'autorisation de copie lien',
- noDelete: 'Pas d\'autorisation de suppression',
- noCreate: 'Pas d\'autorisation de création',
- },
- card: {
- previousPlate: 'Plateau précédent',
- nextPlate: 'Plateau suivant',
- plateNumber: 'Plateau {{index}}',
- moreOptions: 'Clic droit pour plus d\'options',
- addToFavorites: 'Ajouter aux favoris',
- removeFromFavorites: 'Retirer des favoris',
- cancelled: 'annulé',
- failed: 'échoué',
- duplicate: 'doublon',
- duplicateTitle: 'Ce modèle a déjà été imprimé',
- openSource3mf: 'Ouvrir 3MF dans Bambu Studio (clic droit pour plus)',
- downloadF3d: 'Télécharger fichier Fusion 360',
- viewTimelapse: 'Voir timelapse',
- viewPhoto: 'Voir 1 photo',
- viewPhotos: 'Voir {{count}} photos',
- openFolder: 'Ouvrir le dossier : {{name}}',
- slicedFile: 'Fichier découpé - prêt',
- sourceFile: 'Fichier source uniquement - pas de mapping AMS',
- gcode: 'GCODE',
- source: 'SOURCE',
- project: 'Projet : {{name}}',
- estimated: 'Estimé : {{time}}',
- actual: 'Réel : {{time}}',
- accuracy: 'Précision : {{percent}}%',
- filament: '{{weight}}g',
- layer: '{{count}} couche',
- layers: '{{count}} couches',
- object: '{{count}} objet',
- objects: '{{count}} objets',
- slicedFor: 'Découpé pour {{model}}',
- uploadedBy: 'Téléversé par',
- noPermissionReprint: 'Pas d\'autorisation de réimpression',
- noPermissionEdit: 'Pas d\'autorisation de modification',
- noPermissionDelete: 'Pas d\'autorisation de suppression',
- reprint: 'Réimprimer',
- schedulePrint: 'Planifier',
- schedule: 'Planifier',
- openInBambuStudio: 'Ouvrir dans le Slicer',
- openInBambuStudioToSlice: 'Ouvrir dans le Slicer pour découper',
- slice: 'Découper',
- externalLink: 'Lien externe',
- makerWorld: 'MakerWorld : {{designer}}',
- viewProject: 'Voir projet',
- noExternalLink: 'Aucun lien externe',
- preview3d: 'Aperçu 3D',
- download: 'Télécharger',
- edit: 'Modifier',
- delete: 'Supprimer',
- },
- modal: {
- deleteArchive: 'Supprimer l\'archive',
- deleteConfirm: 'Supprimer "{{name}}" ? Cette action est irréversible.',
- deleteButton: 'Supprimer',
- removeSource3mf: 'Retirer Source 3MF',
- removeSource3mfConfirm: 'Retirer le fichier 3MF de "{{name}}" ?',
- removeButton: 'Retirer',
- removeF3d: 'Retirer F3D',
- removeF3dConfirm: 'Retirer le fichier Fusion 360 de "{{name}}" ?',
- timelapse: '{{name}} - Timelapse',
- selectTimelapse: 'Choisir un Timelapse',
- selectTimelapseDesc: 'Sélectionnez manuellement le timelapse :',
- deleteArchives: 'Supprimer les archives',
- deleteArchivesConfirm: 'Supprimer {{count}} archive(s) ?',
- deleteCount: 'Supprimer {{count}}',
- },
- page: {
- title: 'Archives',
- printsCount: '{{filtered}} sur {{total}} impressions',
- dropFilesHere: 'Déposez les fichiers .3mf ici',
- releaseToUpload: 'Relâcher pour téléverser',
- only3mfSupported: 'Seuls les fichiers .3mf sont supportés',
- close: 'Fermer',
- selected: '{{count}} sélectionnés',
- selectAll: 'Tout sélectionner',
- tags: 'Tags',
- project: 'Projet',
- favorite: 'Favori',
- delete: 'Supprimer',
- toggledFavorites: 'Favoris mis à jour pour {{count}} archive(s)',
- failedUpdateFavorites: 'Échec mise à jour favoris',
- archivesDeleted: '{{count}} archive(s) supprimée(s)',
- failedDeleteArchives: 'Échec suppression',
- photoDeleted: 'Photo supprimée',
- failedDeletePhoto: 'Échec suppression photo',
- },
- list: {
- name: 'Nom',
- printer: 'Imprimante',
- date: 'Date',
- size: 'Taille',
- actions: 'Actions',
- hasTimelapse: 'A un timelapse',
- },
- },
- // Queue page
- queue: {
- title: 'File d\'attente',
- subtitle: 'Gérez vos travaux d\'impression',
- addToQueue: 'Ajouter à la file',
- // Print modal
- print: 'Imprimer',
- reprint: 'Réimprimer',
- schedulePrint: 'Planifier',
- editQueueItem: 'Modifier l\'élément',
- printToPrinters: 'Imprimer sur {{count}} imprimantes',
- queueToPrinters: 'Ajouter à la file pour {{count}} imprimantes',
- sending: 'Envoi...',
- sendingProgress: 'Envoi {{current}}/{{total}}...',
- adding: 'Ajout...',
- addingProgress: 'Ajout {{current}}/{{total}}...',
- savingProgress: 'Enregistrement {{current}}/{{total}}...',
- clearQueue: 'Vider la file',
- clearHistory: 'Effacer l\'historique',
- emptyQueue: 'La file est vide',
- position: 'Position',
- scheduledTime: 'Heure prévue',
- moveUp: 'Monter',
- moveDown: 'Descendre',
- startNow: 'Démarrer maintenant',
- printingInProgress: 'Impression en cours...',
- viewArchive: 'Voir l\'archive',
- viewInFileManager: 'Voir dans le gestionnaire',
- itemCount: '{{count}} élément',
- itemCount_plural: '{{count}} éléments',
- dragToReorder: 'Glisser pour réordonner (ASAP uniquement)',
- reorderHint: 'La position n\'affecte que les éléments ASAP.',
- addedBy: 'Ajouté par {{name}}',
- nextInQueue: 'Prochain en file',
- clearPlate: 'Vider plateau & lancer suivant',
- clearPlateSuccess: 'Plateau vidé — prêt pour l\'impression suivante',
- plateReady: 'Plateau vidé — prêt pour l\'impression suivante',
- // Sections
- sections: {
- currentlyPrinting: 'En cours',
- queued: 'En attente',
- history: 'Historique',
- },
- // Status
- status: {
- pending: 'En attente',
- waiting: 'En attente',
- printing: 'Impression',
- paused: 'En pause',
- completed: 'Terminé',
- failed: 'Échoué',
- skipped: 'Sauté',
- cancelled: 'Annulé',
- },
- // Summary cards
- summary: {
- printing: 'Impressions',
- queued: 'En attente',
- totalTime: 'Temps total estimé',
- history: 'Historique',
- },
- // Filters
- filter: {
- allPrinters: 'Toutes les imprimantes',
- unassigned: 'Non assigné',
- allStatus: 'Tous les statuts',
- allLocations: 'Tous les emplacements',
- any: 'Tout',
- },
- // Sort
- sort: {
- byPosition: 'Par position',
- byName: 'Par nom',
- byPrinter: 'Par imprimante',
- bySchedule: 'Par planification',
- byDate: 'Par date',
- ascendingOldest: 'Croissant (plus vieux)',
- descendingNewest: 'Décroissant (plus récent)',
- },
- // Badges
- badges: {
- staged: 'Préparé',
- requiresPrevious: 'Nécessite succès précédent',
- autoPowerOff: 'Extinction auto',
- },
- // Empty state
- empty: {
- title: 'Aucune impression prévue',
- description: 'Planifiez depuis les Archives ou glissez des fichiers ici.',
- },
- // Time
- time: {
- asap: 'Dès que possible',
- overdue: 'En retard',
- now: 'Maintenant',
- lessThanMinute: 'Dans moins d\'une minute',
- inMinutes: 'Dans {{count}} min',
- inHours: 'Dans {{count}} heures',
- },
- // Actions
- actions: {
- stopPrint: 'Arrêter',
- startPrint: 'Démarrer',
- requeue: 'Remettre en file',
- },
- // Bulk edit
- bulkEdit: {
- title: 'Modifier {{count}} élément',
- title_plural: 'Modifier {{count}} éléments',
- description: 'Seuls les changements seront appliqués.',
- printer: 'Imprimante',
- noChange: '— Aucun changement —',
- queueOptions: 'Options de file',
- staged: 'Préparé (manuel)',
- autoPowerOff: 'Extinction auto après',
- requirePrevious: 'Requiert succès précédent',
- printOptions: 'Options d\'impression',
- bedLevelling: 'Nivellement plateau',
- flowCalibration: 'Calibration débit',
- vibrationCalibration: 'Vibration (Input Shaper)',
- layerInspection: 'Inspection 1ère couche',
- timelapse: 'Timelapse',
- useAms: 'Utiliser AMS',
- applyChanges: 'Appliquer',
- selectAll: 'Tout sélectionner',
- deselectAll: 'Tout désélectionner',
- selected: '{{count}} sélectionnés',
- editSelected: 'Modifier la sélection',
- cancelSelected: 'Annuler la sélection',
- },
- // Confirmations
- confirm: {
- cancelTitle: 'Annuler l\'impression prévue',
- cancelMessage: 'Annuler "{{name}}" ?',
- stopTitle: 'Arrêter l\'impression',
- stopMessage: 'Arrêter "{{name}}" sur l\'imprimante ?',
- removeTitle: 'Retirer de l\'historique',
- removeMessage: 'Retirer "{{name}}" de l\'historique ?',
- clearHistoryTitle: 'Effacer l\'historique',
- clearHistoryMessage: 'Retirer les {{count}} éléments ?',
- cancelButton: 'Annuler l\'impression',
- stopButton: 'Arrêter l\'impression',
- thisPrint: 'cette impression',
- thisItem: 'cet élément',
- },
- // Toast messages
- toast: {
- cancelled: 'Élément annulé',
- cancelFailed: 'Échec annulation',
- removed: 'Élément retiré',
- removeFailed: 'Échec retrait',
- stopped: 'Impression arrêtée',
- stopFailed: 'Échec arrêt',
- released: 'Libéré dans la file',
- startFailed: 'Échec démarrage',
- reorderFailed: 'Échec réorganisation',
- historyCleared: '{{count}} éléments effacés',
- clearHistoryFailed: 'Échec effacement',
- updateFailed: 'Échec mise à jour',
- bulkCancelled: '{{count}} éléments annulés',
- bulkCancelFailed: 'Échec annulation',
- },
- // Permissions
- permissions: {
- noStopPrint: 'Pas d\'autorisation d\'arrêt',
- noStartPrint: 'Pas d\'autorisation de démarrage',
- noEdit: 'Pas d\'autorisation de modification',
- noCancel: 'Pas d\'autorisation d\'annulation',
- noRequeue: 'Pas d\'autorisation de remise en file',
- noRemove: 'Pas d\'autorisation de retrait',
- noClearHistory: 'Pas d\'autorisation historique',
- noEditItems: 'Pas d\'autorisation modification groupée',
- noCancelItems: 'Pas d\'autorisation annulation groupée',
- },
- },
- // Statistics page
- stats: {
- title: 'Tableau de bord',
- subtitle: 'Glissez les widgets pour réorganiser. Cliquez sur l\'œil pour masquer.',
- overview: 'Vue d\'ensemble',
- totalPrints: 'Total impressions',
- successRate: 'Taux de succès',
- totalPrintTime: 'Temps total d\'impression',
- printTime: 'Temps d\'impression',
- totalFilament: 'Total filament utilisé',
- filamentUsed: 'Filament utilisé',
- filamentCost: 'Coût filament',
- totalCost: 'Coût total',
- energyUsed: 'Énergie consommée',
- energyCost: 'Coût énergie',
- averagePrintTime: 'Temps moyen par impression',
- printsPerDay: 'Impressions par jour',
- byPrinter: 'Par imprimante',
- printsByPrinter: 'Impressions par imprimante',
- byMaterial: 'Par matériau',
- byMonth: 'Par mois',
- last7Days: '7 derniers jours',
- last30Days: '30 derniers jours',
- last90Days: '90 derniers jours',
- allTime: 'Tout le temps',
- // Widgets
- quickStats: 'Stats rapides',
- printActivity: 'Activité d\'impression',
- filamentTypes: 'Types de filament',
- filamentTrends: 'Tendances filament',
- failureAnalysis: 'Analyse des échecs',
- timeAccuracy: 'Précision du temps',
- successful: 'Succès :',
- failed: 'Échecs :',
- perfectEstimate: '100% = estimation parfaite',
- noTimeAccuracyData: 'Pas encore de données de précision',
- noFilamentData: 'Aucune donnée de filament',
- noPrinterData: 'Aucune donnée d\'imprimante',
- noPrintData: 'Aucune donnée d\'impression',
- noPrintDataLast30Days: 'Aucune impression ces 30 derniers jours',
- failureReasons: 'Raisons des échecs',
- topFailureReasons: 'Top raisons d\'échec',
- failedPrintsCount: '{{failed}} / {{total}} impressions ont échoué',
- lastWeekRate: 'Semaine dernière : {{rate}}%',
- // Actions
- resetLayout: 'Réinitialiser la mise en page',
- recalculateCosts: 'Recalculer les coûts',
- recalculateCostsHint: 'Recalcule les coûts avec les prix actuels des filaments',
- exportStats: 'Exporter les stats',
- exportAsCsv: 'Exporter en CSV',
- exportAsExcel: 'Exporter en Excel',
- hiddenCount: '{{count}} Masqués',
- // Toast
- exportDownloaded: 'Export téléchargé',
- exportFailed: 'Échec export',
- layoutReset: 'Mise en page réinitialisée',
- recalculatedCosts: 'Coûts recalculés pour {{count}} archives',
- recalculateFailed: 'Échec du calcul',
- // Loading
- loadingStats: 'Chargement des statistiques...',
- // Permissions
- noPermissionResetLayout: 'Pas d\'autorisation de réinitialisation',
- noPermissionRecalculate: 'Pas d\'autorisation de recalcul',
- },
- // Maintenance page
- maintenance: {
- title: 'Maintenance',
- overview: 'Vue d\'ensemble',
- allOk: 'Toute la maintenance est à jour',
- dueCount: '{{count}} tâche à faire',
- dueCount_plural: '{{count}} tâches à faire',
- warningCount: '{{count}} avertissement',
- warningCount_plural: '{{count}} avertissements',
- totalPrintTime: 'Temps d\'impression total',
- nextMaintenance: 'Prochaine maintenance',
- nothingDue: 'Rien de prévu',
- tasks: 'Tâches',
- lastPerformed: 'Dernière réalisation',
- interval: 'Intervalle',
- hoursRemaining: '{{hours}}h restantes',
- hoursOverdue: '{{hours}}h de retard',
- markDone: 'Marquer comme fait',
- performMaintenance: 'Effectuer la maintenance',
- history: 'Historique',
- noHistory: 'Aucun historique',
- editPrintHours: 'Modifier les heures d\'impression',
- currentHours: 'Heures actuelles',
- // Tabs
- statusTab: 'Statut',
- settingsTab: 'Paramètres',
- // Status
- overdueCount: '{{count}} en retard',
- dueSoonCount: '{{count}} bientôt',
- dueSoon: 'Bientôt',
- allGood: 'Tout va bien',
- overdueBy: 'Retard de {{duration}}',
- dueIn: 'Dans {{duration}}',
- timeLeft: '{{duration}} restant',
- // Duration formats
- day: '1 jour',
- days: '{{count}} jours',
- week: '1 semaine',
- weeks: '{{count}} semaines',
- month: '1 mois',
- months: '{{count}} mois',
- year: '1 an',
- // Settings
- maintenanceTypes: 'Types de maintenance',
- maintenanceTypesDescription: 'Types système et tâches personnalisées',
- addCustomType: 'Ajouter un type',
- intervalType: 'Type d\'intervalle',
- intervalValue: 'Intervalle ({{type}})',
- icon: 'Icône',
- documentationLink: 'Lien documentation (optionnel)',
- assignToPrinters: 'Assigner aux imprimantes',
- selectAtLeastOnePrinter: 'Sélectionnez au moins une imprimante',
- addType: 'Ajouter le type',
- custom: 'Personnalisé',
- printHours: 'Heures d\'impression',
- calendarDays: 'Jours calendaires',
- exampleName: 'ex: Remplacement filtre HEPA',
- viewDocumentation: 'Voir documentation',
- timeBasedInterval: 'Intervalle temporel',
- // Interval overrides
- intervalOverrides: 'Exceptions d\'intervalle',
- intervalOverridesDescription: 'Intervalles spécifiques par imprimante',
- // Printer assignment
- assignedToPrinters: 'Assigné aux imprimantes :',
- noPrintersAssigned: 'Aucune imprimante assignée',
- addPrinterShort: 'Ajouter :',
- printersAssignedClick: '{{count}} imprimante(s) assignée(s) - gérer',
- removeFromPrinter: 'Retirer de cette imprimante',
- // Types
- types: {
- lubricateCarbonRods: 'Lubrifier les tiges carbone',
- lubricateRails: 'Lubrifier les rails linéaires',
- cleanNozzle: 'Nettoyer la buse / hotend',
- checkBelts: 'Vérifier la tension des courroies',
- cleanBuildPlate: 'Nettoyer le plateau',
- checkExtruder: 'Vérifier les engrenages de l\'extrudeur',
- checkCooling: 'Vérifier les ventilateurs',
- generalInspection: 'Inspection générale',
- cleanCarbonRods: 'Nettoyer les tiges carbone',
- cleanLinearRails: 'Nettoyer les rails linéaires',
- checkPtfeTube: 'Vérifier le tube PTFE',
- replaceHepaFilter: 'Remplacer le filtre HEPA',
- replaceCarbonFilter: 'Remplacer le filtre charbon',
- lubricateLeftNozzleRail: 'Lubrifier le rail de buse gauche',
- },
- // Toast
- maintenanceComplete: 'Maintenance marquée comme faite',
- typeUpdated: 'Type mis à jour',
- typeDeleted: 'Type supprimé',
- printHoursUpdated: 'Heures mises à jour',
- printerAssigned: 'Imprimante assignée',
- printerRemoved: 'Imprimante retirée',
- // Confirmation
- deleteTypeConfirm: 'Supprimer "{{name}}" ?',
- // Permissions
- noPermissionUpdate: 'Pas d\'autorisation de mise à jour',
- noPermissionPerform: 'Pas d\'autorisation d\'action',
- noPermissionEditTypes: 'Pas d\'autorisation de modification types',
- noPermissionDeleteTypes: 'Pas d\'autorisation de suppression types',
- noPermissionEditHours: 'Pas d\'autorisation de modification heures',
- noPermissionRemovePrinter: 'Pas d\'autorisation retrait imprimante',
- noPermissionAssignPrinter: 'Pas d\'autorisation assignation',
- noPermissionEditIntervals: 'Pas d\'autorisation modification intervalles',
- // Configure link
- configureSettings: 'Configurer types et intervalles',
- },
- // Settings page
- settings: {
- title: 'Paramètres',
- general: 'Général',
- // Tab names
- tabs: {
- general: 'Général',
- smartPlugs: 'Prises connectées',
- notifications: 'Notifications',
- filament: 'Filament',
- network: 'Réseau',
- apiKeys: 'Clés API',
- virtualPrinter: 'Imprimante virtuelle',
- users: 'Authentification',
- backup: 'Sauvegarde',
- emailAuth: 'Authentification Email',
- },
- // Email settings
- email: {
- smtpSettings: 'Configuration SMTP',
- smtpHost: 'Serveur SMTP',
- smtpPort: 'Port SMTP',
- security: 'Sécurité',
- authentication: 'Authentification',
- username: 'Utilisateur',
- password: 'Mot de passe',
- fromEmail: 'Email expéditeur',
- fromName: 'Nom expéditeur',
- testConnection: 'Tester la connexion SMTP',
- testRecipient: 'Email test destinataire',
- sendTest: 'Envoyer email test',
- sending: 'Envoi...',
- save: 'Enregistrer les paramètres',
- saving: 'Enregistrement...',
- advancedAuth: 'Authentification avancée',
- advancedAuthEnabled: 'L\'authentification avancée est activée',
- advancedAuthEnabledDesc: 'La gestion des utilisateurs par email est active. Les nouveaux utilisateurs recevront un mot de passe auto-généré.',
- advancedAuthDisabled: 'Authentification avancée désactivée',
- advancedAuthDisabledDesc: 'Activez pour les fonctionnalités liées à l\'email (mot de passe oublié, etc).',
- enable: 'Activer',
- disable: 'Désactiver',
- feature1: 'Génération auto et envoi de mots de passe par email',
- feature2: 'Connexion par utilisateur ou email',
- feature3: 'Réinitialisation mot de passe oublié disponible',
- feature4: 'Réinitialisation admin par email',
- // Error messages
- errors: {
- requiredFields: 'Remplissez tous les champs requis',
- usernameRequired: 'L\'utilisateur est requis pour l\'authentification',
- enterTestEmail: 'Entrez une adresse email de test',
- smtpServerAndEmail: 'Serveur et expéditeur requis pour le test',
- usernamePasswordRequired: 'Utilisateur et mot de passe requis pour l\'auth',
- configureSmtpFirst: 'Configurez et testez le SMTP d\'abord',
- },
- // Success messages
- success: {
- settingsSaved: 'Paramètres SMTP enregistrés',
- },
- // Security options
- securityOptions: {
- starttls: 'STARTTLS (Port 587)',
- ssl: 'SSL/TLS (Port 465)',
- none: 'Aucun (Port 25)',
- },
- // Authentication options
- authOptions: {
- enabled: 'Activée',
- disabled: 'Désactivée',
- },
- },
- appearance: 'Apparence',
- notifications: 'Notifications',
- smartPlugs: 'Prises connectées',
- spoolman: 'Spoolman',
- updates: 'Mises à jour',
- language: 'Langue',
- languageDescription: 'Choisissez votre langue',
- theme: 'Thème',
- themeLight: 'Clair',
- themeDark: 'Sombre',
- themeSystem: 'Système',
- defaultView: 'Vue par défaut',
- defaultViewDescription: 'Page affichée au démarrage',
- checkForUpdates: 'Vérifier les mises à jour',
- autoUpdate: 'Mise à jour auto',
- currentVersion: 'Version actuelle',
- latestVersion: 'Dernière version',
- upToDate: 'Bambuddy est à jour',
- updateAvailable: 'Mise à jour disponible',
- // Notifications
- notificationLanguage: 'Langue des notifications',
- notificationLanguageDescription: 'Langue pour les notifications push',
- notificationProviders: 'Fournisseurs de notifications',
- addProvider: 'Ajouter un fournisseur',
- editProvider: 'Modifier le fournisseur',
- providerType: 'Type de fournisseur',
- testNotification: 'Tester la notification',
- testSuccess: 'Notification de test envoyée',
- testFailed: 'Échec de l\'envoi du test',
- quietHours: 'Heures de silence',
- quietHoursDescription: 'Ne pas déranger pendant ces heures',
- quietHoursStart: 'Début',
- quietHoursEnd: 'Fin',
- events: {
- title: 'Événements de notification',
- printStart: 'Impression démarrée',
- printComplete: 'Impression terminée',
- printFailed: 'Impression échouée',
- printStopped: 'Impression arrêtée',
- printProgress: 'Jalons de progression',
- printProgressDescription: 'Notifier à 25%, 50%, 75%',
- printerOffline: 'Imprimante hors ligne',
- printerError: 'Erreur imprimante',
- filamentLow: 'Filament bas',
- maintenanceDue: 'Maintenance due',
- maintenanceDueDescription: 'Notifier quand une tâche est due',
- },
- // Smart Plugs
- smartPlug: {
- title: 'Prises connectées',
- add: 'Ajouter une prise',
- edit: 'Modifier la prise',
- name: 'Nom',
- ipAddress: 'Adresse IP',
- linkedPrinter: 'Imprimante liée',
- autoOn: 'Allumage auto',
- autoOnDescription: 'Allumer au début de l\'impression',
- autoOff: 'Extinction auto',
- autoOffDescription: 'Éteindre après l\'impression',
- offDelay: 'Délai d\'extinction',
- offDelayMinutes: 'Minutes après fin',
- offDelayTemp: 'Quand la buse est sous',
- currentState: 'État actuel',
- turnOn: 'Allumer',
- turnOff: 'Éteindre',
- },
- // Filament Tracking Mode
- filamentTracking: 'Suivi de Filament',
- filamentTrackingDesc: 'Choisissez comment suivre vos bobines. Utilisez l\'inventaire intégré ou connectez un serveur Spoolman.',
- disableFilamentWarnings: 'Désactiver les avertissements de filament',
- disableFilamentWarningsDesc: 'Ne pas afficher les avertissements de filament insuffisant lors de l\'impression ou de la mise en file d\'attente',
- trackingModeBuiltIn: 'Inventaire Intégré',
- trackingModeBuiltInDesc: 'Correspondance RFID et suivi de consommation inclus',
- trackingModeSpoolmanDesc: 'Serveur de gestion externe',
- builtInFeatureRfid: 'Détecte auto les bobines RFID Bambu Lab dans l\'AMS',
- builtInFeatureUsage: 'Suit la consommation par impression',
- builtInFeatureCatalog: 'Gère bobines, couleurs et profils facteur K',
- // Spoolman settings
- spoolmanUrl: 'URL Spoolman',
- spoolmanUrlHint: 'URL de votre serveur Spoolman (ex: http://localhost:7912)',
- spoolmanConnected: 'Connecté',
- spoolmanDisconnected: 'Déconnecté',
- status: 'Statut',
- connect: 'Connecter',
- disconnect: 'Déconnecter',
- howSyncWorks: 'Fonctionnement de la Sync',
- syncInfoRfidOnly: 'Seules les bobines officielles RFID sont synchronisées',
- syncInfoAutoCreate: 'Les bobines sont créées dans Spoolman à la 1ère sync',
- syncInfoThirdPartySkipped: 'Les bobines tierces ou rechargées sont ignorées',
- linkingExistingSpools: 'Lier des bobines existantes',
- linkingExistingSpoolsDesc: 'Pour lier une bobine Spoolman, survolez un slot AMS et cliquez sur "Lier à Spoolman".',
- syncMode: 'Mode de Sync',
- syncModeAuto: 'Automatique',
- syncModeManual: 'Manuel uniquement',
- syncModeAutoDesc: 'Sync auto lors de changements AMS',
- syncModeManualDesc: 'Sync uniquement sur déclenchement manuel',
- syncAmsData: 'Synchroniser AMS',
- syncAmsDataDesc: 'Synchroniser manuellement les données vers Spoolman',
- allPrinters: 'Toutes les imprimantes',
- // Default printer
- noDefaultPrinter: 'Aucune par défaut (demander à chaque fois)',
- // Sidebar
- sidebarOrder: 'Ordre de la barre latérale',
- // Camera
- saveThumbnails: 'Enregistrer les vignettes',
- captureFinishPhoto: 'Prendre une photo à la fin',
- noPrintersConfigured: 'Aucune imprimante configurée',
- // Archive settings
- archiveMode: {
- always: 'Toujours créer une archive',
- never: 'Ne jamais créer d\'archive',
- ask: 'Demander à chaque fois',
- },
- // Updates
- checkForUpdatesLabel: 'Vérifier les mises à jour',
- checkPrinterFirmware: 'Vérifier le firmware imprimante',
- // Queue
- enableRetry: 'Activer la rétentative',
- // Home Assistant
- homeAssistantDescription: 'Contrôler les prises via Home Assistant',
- environmentManagedLabel: '(Géré par l\'environnement)',
- autoEnabledViaEnv: 'Activé via variables d\'environnement',
- urlFromEnvReadOnly: 'Valeur HA_URL (lecture seule)',
- tokenFromEnvReadOnly: 'Valeur HA_TOKEN (lecture seule)',
- // MQTT
- mqttConnectedTo: 'Connecté à',
- // Prometheus
- prometheusDescription: 'Exposer les données au format Prometheus',
- // Smart plugs empty state
- noSmartPlugsTitle: 'Aucune prise configurée',
- noSmartPlugsDescription: 'Ajoutez une prise Tasmota pour suivre l\'énergie et automatiser.',
- // Notifications empty state
- noProvidersTitle: 'Aucun fournisseur configuré',
- noProvidersDescription: 'Ajoutez un fournisseur pour recevoir des alertes.',
- noTemplatesAvailable: 'Aucun modèle dispo. Redémarrez pour les générer.',
- // API permissions
- apiPermissionView: 'Voir statut et file',
- apiPermissionEdit: 'Gérer la file d\'attente',
- // API keys
- apiKeysEmptyTitle: 'Aucune clé API',
- apiKeysEmptyDescription: 'Créez une clé pour vos intégrations.',
- // Users
- noUsersFound: 'Aucun utilisateur trouvé',
- noGroupsFound: 'Aucun groupe trouvé',
- noGroupsAvailable: 'Aucun groupe disponible',
- passwordsDoNotMatch: 'Les mots de passe ne correspondent pas',
- systemGroupWarning: 'Les noms des groupes système sont fixes',
- // Auth disabled
- authDisabledTitle: 'Authentification désactivée',
- authDisabledFeature1: 'Requis pour accéder au système',
- authDisabledFeature2: 'Gestion multi-utilisateurs et groupes',
- authDisabledFeature3: 'Plus de 50 permissions granulaires',
- // User deletion
- userHasCreated: 'Cet utilisateur a créé :',
- userItemsQuestion: 'Que faire de ces éléments ?',
- deleteUserConfirm: 'Supprimer cet utilisateur ?',
- actionCannotBeUndone: 'Cette action est irréversible.',
- // Smart plugs
- addFirstSmartPlug: 'Ajoutez votre première prise',
- // Notifications
- providers: 'Fournisseurs',
- log: 'Journal',
- testAll: 'Tout tester',
- testResults: 'Résultats du test',
- testPassedCount: '{{count}} succès',
- testFailedCount: '{{count}} échecs',
- messageTemplates: 'Modèles de message',
- messageTemplatesDescription: 'Personnalisez les messages par événement.',
- // API Keys section
- apiKeys: 'Clés API',
- apiKeysDescription: 'Créez des clés pour webhooks et API.',
- createKey: 'Créer une clé',
- apiKeyCreated: 'Clé API créée avec succès',
- apiKeyCopyWarning: "Copiez cette clé maintenant - elle ne sera plus affichée !",
- useInApiBrowser: 'Utiliser dans l\'explorateur API',
- createNewApiKey: 'Nouvelle clé API',
- keyName: 'Nom de la clé',
- keyNamePlaceholder: 'ex: Home Assistant, OctoPrint',
- readStatus: 'Lire le statut',
- readStatusDescription: 'Voir les imprimantes et la file',
- manageQueue: 'Gérer la file',
- manageQueueDescription: 'Ajouter/retirer des éléments',
- controlPrinter: 'Contrôler l\'imprimante',
- controlPrinterDescription: 'Pause, reprise, arrêt',
- unnamedKey: 'Clé sans nom',
- lastUsed: 'Dernière utilisation',
- read: 'Lecture',
- control: 'Contrôle',
- createFirstKey: 'Créez votre première clé',
- webhookEndpoints: 'Points de terminaison Webhook',
- webhookApiKeyHint: 'Utilisez la clé dans l\'en-tête X-API-Key.',
- webhook: {
- getAllStatus: 'Tous les statuts',
- getSpecificStatus: 'Statut spécifique',
- addToQueue: 'Ajouter à la file',
- pausePrint: 'Pause',
- resumePrint: 'Reprise',
- stopPrint: 'Arrêt',
- },
- apiBrowser: 'Explorateur API',
- apiBrowserDescription: 'Testez les endpoints API.',
- apiKeyForTesting: 'Clé API pour test',
- apiKeyPlaceholder: 'Collez votre clé pour tester...',
- apiKeyHint: 'Sera envoyée via l\'en-tête X-API-Key.',
- deleteApiKeyTitle: 'Supprimer la clé API',
- deleteApiKeyMessage: 'Les intégrations utilisant cette clé cesseront de fonctionner.',
- deleteKey: 'Supprimer la clé',
- // Filament tab
- amsDisplayThresholds: 'Seuils d\'affichage AMS',
- amsThresholdsDescription: 'Seuils de couleur pour humidité et température.',
- humidity: 'Humidité',
- goodGreen: 'Bon (vert)',
- fairOrange: 'Moyen (orange)',
- aboveFairBad: 'Au-dessus = rouge (mauvais)',
- temperature: 'Température',
- goodBlue: 'Bon (bleu)',
- aboveFairHot: 'Au-dessus = rouge (chaud)',
- historyRetention: 'Rétention d\'historique',
- keepSensorHistory: 'Garder l\'historique pendant',
- historyRetentionDescription: 'Les anciennes données seront supprimées.',
- printModal: 'Fenêtre d\'impression',
- expandCustomMapping: 'Étendre le mapping personnalisé par défaut',
- expandCustomMappingDescription: 'Affiche le mapping AMS par imprimante étendu.',
- // User management
- authentication: 'Authentification',
- authEnabledDescription: 'L\'instance est sécurisée',
- authDisabledDescription: 'Activez pour restreindre l\'accès',
- authDisabledMessage: 'Activez l\'authentification pour gérer comptes et permissions.',
- enableAuthentication: 'Activer l\'authentification',
- currentUser: 'Utilisateur actuel',
- changePassword: 'Changer le mot de passe',
- admin: 'Admin',
- users: 'Utilisateurs',
- addUser: 'Ajouter un utilisateur',
- groups: 'Groupes',
- addGroup: 'Ajouter un groupe',
- system: 'Système',
- noDescription: 'Pas de description',
- userCount: '{{count}} utilisateurs',
- permissionCount: '{{count}} permissions',
- createUser: 'Créer un utilisateur',
- username: 'Nom d\'utilisateur',
- enterUsername: 'Entrez l\'utilisateur',
- password: 'Mot de passe',
- enterPassword: 'Mot de passe (min 6 char)',
- confirmPassword: 'Confirmer le mot de passe',
- confirmPasswordPlaceholder: 'Confirmez le mot de passe',
- // Title tooltips
- viewReleaseOnGitHub: 'Voir la version sur GitHub',
- turnAllPlugsOn: 'Tout allumer',
- turnAllPlugsOff: 'Tout éteindre',
- // Modal: Clear logs
- clearNotificationLogs: 'Effacer les journaux',
- clearLogsMessage: 'Efface définitivement les logs de plus de 30 jours.',
- clearLogs: 'Effacer les logs',
- // Modal: Reset UI
- resetUiPreferences: 'Réinitialiser l\'UI',
- resetUiPreferencesMessage: 'Réinitialise l\'ordre, thème, widgets, etc. N\'affecte pas vos données.',
- resetPreferences: 'Réinitialiser',
- // Modal: Delete group
- deleteGroupTitle: 'Supprimer le groupe',
- deleteGroupMessage: 'Les utilisateurs de ce groupe perdront ces permissions.',
- deleteGroup: 'Supprimer le groupe',
- // Modal: Disable auth
- disableAuthenticationTitle: 'Désactiver l\'authentification',
- disableAuthenticationMessage: 'Instance accessible sans connexion. Les comptes sont conservés.',
- disableAuthentication: 'Désactiver',
- // Additional settings
- configureBambuddy: 'Configurer Bambuddy',
- systemDefault: 'Défaut système',
- archiveSettings: 'Réglages Archives',
- newWindow: 'Nouvelle fenêtre',
- embeddedOverlay: 'Superposition intégrée',
- preferredSlicer: 'Slicer préféré',
- preferredSlicerDescription: 'Application pour ouvrir les fichiers',
- externalCameras: 'Caméras externes',
- costTracking: 'Suivi des coûts',
- printsOnly: 'Impressions uniquement',
- totalConsumption: 'Consommation totale',
- dataManagement: 'Gestion des données',
- clearNotificationLogsDescription: 'Supprimer logs de plus de 30 jours',
- resetUiPreferencesDescription: 'Réinitialise thèmes et affichage sans toucher aux données.',
- enableHomeAssistant: 'Activer Home Assistant',
- enableMqtt: 'Activer MQTT',
- useTls: 'Utiliser TLS',
- enableMetricsEndpoint: 'Activer l\'endpoint Metrics',
- availableMetrics: 'Metrics disponibles',
- editUser: 'Modifier l\'utilisateur',
- deleteUserTitle: 'Supprimer l\'utilisateur',
- groupName: 'Nom du groupe',
- // Placeholders
- leaveEmptyForAnonymous: 'Vide pour anonyme',
- leaveEmptyForNoAuth: 'Vide si pas d\'auth',
- enterNewPassword: 'Nouveau mot de passe',
- confirmNewPassword: 'Confirmer nouveau mdp',
- enterGroupName: 'Entrez le nom du groupe',
- enterDescriptionOptional: 'Description (optionnel)',
- enterCurrentPassword: 'Mdp actuel',
- enterNewPasswordMin6: 'Nouveau mdp (min 6 char)',
- toast: {
- keyCopied: 'Clé copiée',
- copyFailed: 'Échec copie',
- keyAddedToBrowser: 'Clé ajoutée à l\'explorateur',
- clearLogsFailed: 'Échec effacement logs',
- uiPreferencesReset: 'Préférences UI réinitialisées. Rafraîchissement...',
- authDisabled: 'Authentification désactivée',
- authDisableFailed: 'Échec désactivation',
- apiKeyCreated: 'Clé API créée',
- apiKeyDeleted: 'Clé API supprimée',
- userCreated: 'Utilisateur créé',
- userUpdated: 'Utilisateur mis à jour',
- userDeleted: 'Utilisateur supprimé',
- groupCreated: 'Groupe créé',
- groupUpdated: 'Groupe mis à jour',
- groupDeleted: 'Groupe supprimé',
- fillRequiredFields: 'Remplissez les champs requis',
- passwordsDoNotMatch: 'Les mots de passe ne correspondent pas',
- passwordTooShort: 'Minimum 6 caractères',
- enterGroupName: 'Entrez un nom de groupe',
- settingsSaved: 'Paramètres enregistrés',
- cameraSettingsSaved: 'Réglages caméra enregistrés',
- enterCameraUrl: 'Entrez une URL caméra',
- passwordChanged: 'Mot de passe modifié',
- connectionFailed: 'Échec connexion',
- testFailed: 'Échec test',
- cameraConnected: 'Caméra connectée {{resolution}}',
- },
- testConnection: 'Tester la connexion',
- catalog: {
- spoolCatalog: 'Catalogue de Bobines',
- spoolCatalogDescription: 'Poids des bobines vides par marque/type. Utilisé pour le calcul auto du poids restant.',
- searchCatalog: 'Chercher dans le catalogue...',
- addNewEntry: 'Nouvelle Entrée',
- namePlaceholder: 'Nom (ex: Bambu Lab - Plastique)',
- weight: 'Poids',
- type: 'Type',
- default: 'Défaut',
- custom: 'Perso',
- noMatch: 'Aucune entrée correspondante',
- empty: 'Catalogue vide',
- deleteEntry: 'Supprimer l\'entrée',
- deleteConfirm: 'Supprimer "{{name}}" ?',
- resetCatalog: 'Réinitialiser le catalogue',
- resetConfirm: 'Réinitialiser aux valeurs par défaut ? Vos entrées personnalisées seront supprimées.',
- loadFailed: 'Échec chargement catalogue',
- nameWeightRequired: 'Nom et poids requis',
- entryAdded: 'Entrée ajoutée',
- addFailed: 'Échec ajout',
- entryUpdated: 'Entrée mise à jour',
- updateFailed: 'Échec mise à jour',
- entryDeleted: 'Entrée supprimée',
- deleteFailed: 'Échec suppression',
- resetSuccess: 'Catalogue réinitialisé',
- resetFailed: 'Échec réinitialisation',
- exported: '{{count}} entrées exportées',
- imported: '{{added}} entrées importées ({{skipped}} ignorées)',
- importFailed: 'Échec import : format JSON invalide',
- exportTooltip: 'Exporter en JSON',
- importTooltip: 'Importer depuis JSON',
- resetTooltip: 'Réinitialiser par défaut',
- },
- colorCatalog: {
- title: 'Catalogue de Couleurs',
- description: 'Couleurs de filament par fabricant. Utilisé pour la recherche auto lors de l\'ajout de bobines.',
- searchColors: 'Chercher couleurs...',
- allManufacturers: 'Tous les fabricants',
- addNewColor: 'Nouvelle Couleur',
- manufacturer: 'Fabricant',
- colorName: 'Nom couleur',
- hex: 'Hex',
- materialOptional: 'Matériau (optionnel)',
- showing: 'Affichage {{filtered}} sur {{total}} couleurs',
- noMatch: 'Aucune couleur correspondante',
- empty: 'Catalogue vide',
- deleteColor: 'Supprimer couleur',
- deleteConfirm: 'Supprimer "{{name}}" ?',
- resetCatalog: 'Réinitialiser catalogue couleurs',
- resetConfirm: 'Réinitialiser aux valeurs par défaut ?',
- sync: 'Sync',
- starting: 'Démarrage...',
- syncTooltip: 'Sync depuis FilamentColors.xyz (2000+ couleurs, peut être long)',
- loadFailed: 'Échec chargement catalogue couleurs',
- fieldsRequired: 'Fabricant, nom et code Hex requis',
- colorAdded: 'Couleur ajoutée',
- addFailed: 'Échec ajout',
- colorUpdated: 'Couleur mise à jour',
- updateFailed: 'Échec mise à jour',
- colorDeleted: 'Couleur supprimée',
- deleteFailed: 'Échec suppression',
- resetSuccess: 'Catalogue réinitialisé',
- resetFailed: 'Échec réinitialisation',
- syncUpToDate: 'Déjà à jour ({{count}} couleurs vérifiées)',
- syncComplete: '{{added}} couleurs ajoutées ({{skipped}} déjà présentes)',
- syncError: 'Erreur de sync',
- syncFailed: 'Échec sync FilamentColors.xyz',
- exported: '{{count}} couleurs exportées',
- imported: '{{added}} couleurs importées ({{skipped}} ignorées)',
- importFailed: 'Échec import : format JSON invalide',
- },
- },
- // Notifications (for push notifications)
- notification: {
- printStarted: {
- title: 'Impression démarrée',
- body: '{{printer}} : {{filename}} commence l\'impression',
- },
- printCompleted: {
- title: 'Impression terminée',
- body: '{{printer}} : {{filename}} a réussi',
- },
- printFailed: {
- title: 'Impression échouée',
- body: '{{printer}} : {{filename}} a échoué',
- },
- printStopped: {
- title: 'Impression arrêtée',
- body: '{{printer}} : {{filename}} a été arrêtée',
- },
- printProgress: {
- title: 'Progression d\'impression',
- body: '{{printer}} : {{filename}} est à {{percent}}%',
- },
- printerOffline: {
- title: 'Imprimante hors ligne',
- body: '{{printer}} est déconnectée',
- },
- printerError: {
- title: 'Erreur imprimante',
- body: '{{printer}} : {{error}}',
- },
- filamentLow: {
- title: 'Filament bas',
- body: '{{printer}} : Le filament est presque vide',
- },
- maintenanceDue: {
- title: 'Maintenance due',
- body: '{{printer}} : {{items}} demandent votre attention',
- },
- },
- // Errors
- errors: {
- generic: 'Une erreur est survenue',
- networkError: 'Erreur réseau. Vérifiez votre connexion.',
- notFound: 'Non trouvé',
- unauthorized: 'Non autorisé',
- serverError: 'Erreur serveur',
- validationError: 'Vérifiez vos saisies',
- printerConnectionFailed: 'Échec connexion imprimante',
- saveFailed: 'Échec enregistrement',
- deleteFailed: 'Échec suppression',
- loadFailed: 'Échec chargement',
- },
- // HMS Errors modal
- hmsErrors: {
- title: 'Erreurs - {{name}}',
- noErrors: 'Aucune erreur',
- viewOnWiki: 'Voir sur le Wiki Bambu Lab',
- clearInstructions: 'Effacez les erreurs sur l\'imprimante pour les retirer ici.',
- },
- // MQTT Debug modal
- mqttDebug: {
- title: 'Journal de débogage MQTT',
- searchPlaceholder: 'Chercher topic ou message...',
- noMessages: 'Aucun message enregistré',
- startLoggingHint: 'Cliquez sur "Démarrer" pour capturer les messages MQTT',
- noMessagesMatch: 'Aucun message ne correspond',
- adjustFilterHint: 'Ajustez votre recherche',
- incoming: 'Entrant',
- outgoing: 'Sortant',
- loggingStopped: 'Enregistrement arrêté',
- loggingActive: 'Enregistrement actif - rafraîchissement auto',
- startLogging: 'Démarrer',
- stopLogging: 'Arrêter',
- clearLog: 'Effacer le journal',
- topic: 'Topic',
- timestamp: 'Horodatage',
- direction: 'Direction',
- all: 'Tous',
- },
- // Printer File Manager modal (printer internal storage)
- printerFiles: {
- title: 'Gestionnaire de fichiers',
- storageUsed: 'Utilisé :',
- storageFree: 'Libre :',
- filterPlaceholder: 'Filtrer les fichiers...',
- deleteButton: 'Supprimer',
- deleteFiles: 'Supprimer {{count}} fichiers',
- deleteFileConfirm: 'Supprimer "{{name}}" ?',
- deleteFilesConfirm: 'Supprimer les {{count}} fichiers sélectionnés ?',
- noFiles: 'Aucun fichier sur l\'imprimante',
- loadingFiles: 'Chargement...',
- failedToLoad: 'Échec chargement fichiers',
- toast: {
- filesDeleted: '{{count}} fichier(s) supprimé(s)',
- deleteFailed: 'Échec suppression : {{error}}',
- },
- },
- // Confirmations
- confirm: {
- delete: 'Voulez-vous vraiment supprimer cet élément ?',
- unsavedChanges: 'Changements non sauvegardés. Voulez-vous quitter ?',
- clearQueue: 'Voulez-vous vraiment vider la file d\'attente ?',
- },
- // Login page
- login: {
- title: 'Connexion Bambuddy',
- subtitle: 'Connectez-vous à votre compte',
- username: 'Utilisateur',
- usernamePlaceholder: 'Entrez votre utilisateur',
- usernameOrEmail: 'Utilisateur ou Email',
- usernameOrEmailPlaceholder: 'Utilisateur ou @ Email',
- password: 'Mot de passe',
- passwordPlaceholder: 'Entrez votre mot de passe',
- signIn: 'Se connecter',
- signingIn: 'Connexion...',
- forgotPassword: 'Mot de passe oublié ?',
- loginSuccess: 'Connecté avec succès',
- loginFailed: 'Échec de connexion',
- enterCredentials: 'Entrez vos identifiants',
- forgotPasswordTitle: 'Mot de passe oublié',
- forgotPasswordMessage: "Contactez votre administrateur pour réinitialiser votre accès.",
- forgotPasswordEmailMessage: "Entrez votre email pour recevoir un nouveau mot de passe.",
- emailAddress: 'Adresse Email',
- emailPlaceholder: 'votre.email@exemple.com',
- cancel: 'Annuler',
- sending: 'Envoi...',
- sendResetEmail: 'Envoyer l\'email',
- howToReset: 'Comment réinitialiser :',
- resetStep1: 'Contactez votre admin Bambuddy',
- resetStep2: 'Demandez une réinitialisation dans la Gestion Utilisateurs',
- resetStep3: 'Il vous donnera un mot de passe temporaire',
- resetStep4: 'Connectez-vous et changez-le dans les Paramètres',
- gotIt: 'Compris',
- },
- // Setup page
- setup: {
- title: 'Configuration Bambuddy',
- subtitle: 'Configurez l\'authentification',
- enableAuth: 'Activer l\'authentification',
- adminAccount: 'Compte Admin',
- adminAccountDesc: 'Si des admins existent, ils seront utilisés. Sinon, créez-en un ci-dessous.',
- adminUsername: 'Utilisateur Admin',
- adminPassword: 'Mot de passe Admin',
- optionalIfAdminExists: '(optionnel si admin existe)',
- adminUsernamePlaceholder: 'Nom admin (optionnel)',
- adminPasswordPlaceholder: 'Mdp admin (optionnel)',
- confirmPassword: 'Confirmer mdp',
- confirmPasswordPlaceholder: 'Confirmez mdp admin',
- settingUp: 'Configuration...',
- completeSetup: 'Terminer la configuration',
- toast: {
- authEnabledAdminCreated: 'Authentification activée et admin créé',
- authEnabledExistingAdmins: 'Authentification activée avec admins existants',
- setupCompleted: 'Configuration terminée',
- enterBothCredentials: 'Entrez les deux ou laissez vide pour utiliser les admins existants',
- passwordsDoNotMatch: 'Les mots de passe ne correspondent pas',
- passwordTooShort: 'Minimum 6 caractères',
- },
- },
- // Password change
- changePassword: {
- title: 'Changer le mot de passe',
- currentPassword: 'Mot de passe actuel',
- currentPasswordPlaceholder: 'Entrez mdp actuel',
- newPassword: 'Nouveau mot de passe',
- newPasswordPlaceholder: 'Nouveau mdp (min 6 char)',
- confirmPassword: 'Confirmer nouveau mdp',
- confirmPasswordPlaceholder: 'Confirmez nouveau mdp',
- passwordsDoNotMatch: 'Les mots de passe ne correspondent pas',
- passwordTooShort: 'Minimum 6 caractères',
- changing: 'Changement...',
- success: 'Mot de passe modifié',
- failed: 'Échec modification',
- },
- // Plate detection alert
- plateAlert: {
- title: 'Impression en Pause !',
- message: 'Objets détectés sur le plateau. L\'impression a été suspendue automatiquement. Videz le plateau avant de reprendre.',
- understand: 'J\'ai compris',
- },
- // Camera page
- camera: {
- title: 'Vue Caméra',
- invalidPrinterId: 'ID imprimante invalide',
- live: 'Direct',
- snapshot: 'Instantané',
- restartStream: 'Redémarrer le flux',
- refreshSnapshot: 'Rafraîchir l\'image',
- fullscreen: 'Plein écran',
- exitFullscreen: 'Quitter plein écran',
- connectingToCamera: 'Connexion caméra...',
- capturingSnapshot: 'Capture...',
- connectionLost: 'Connexion perdue',
- connectionFailed: 'Échec connexion caméra',
- reconnecting: 'Reconnexion dans {{countdown}}s... (essai {{attempt}}/{{max}})',
- reconnectNow: 'Reconnexion immédiate',
- cameraUnavailable: 'Caméra indisponible',
- cameraUnavailableDesc: 'Vérifiez que l\'imprimante est allumée.',
- noCamera: 'Aucune caméra disponible',
- retry: 'Réessayer',
- cameraStream: 'Flux caméra',
- zoomOut: 'Zoom arrière',
- zoomIn: 'Zoom avant',
- resetZoom: 'Réinitialiser zoom',
- recording: 'Enregistrement',
- startRecording: 'Démarrer l\'enregistrement',
- stopRecording: 'Arrêter l\'enregistrement',
- chamberLight: 'Basculer lumière chambre',
- },
- // Groups management
- groups: {
- title: 'Gestion des Groupes',
- subtitle: 'Gérez les permissions pour le contrôle d\'accès',
- backToSettings: 'Retour aux paramètres',
- createGroup: 'Créer un groupe',
- noPermission: 'Accès refusé.',
- system: 'Système',
- noDescription: 'Pas de description',
- usersCount: '{{count}} utilisateurs',
- permissionsCount: '{{count}} permissions',
- edit: 'Modifier',
- delete: 'Supprimer',
- toast: {
- created: 'Groupe créé',
- updated: 'Groupe mis à jour',
- deleted: 'Groupe supprimé',
- enterGroupName: 'Entrez un nom de groupe',
- },
- modal: {
- editGroup: 'Modifier le groupe',
- createGroup: 'Créer un groupe',
- cancel: 'Annuler',
- saving: 'Enregistrement...',
- creating: 'Création...',
- saveChanges: 'Enregistrer',
- },
- form: {
- groupName: 'Nom du groupe',
- groupNamePlaceholder: 'Nom du groupe',
- systemGroupWarning: 'Les groupes système sont fixes',
- description: 'Description',
- descriptionPlaceholder: 'Description (optionnel)',
- permissions: 'Permissions ({{count}} sélectionnées)',
- },
- deleteModal: {
- title: 'Supprimer le groupe',
- message: 'Les utilisateurs de ce groupe perdront ces permissions.',
- confirm: 'Supprimer',
- },
- },
- // Users management
- users: {
- title: 'Gestion des Utilisateurs',
- subtitle: 'Gérez les accès à Bambuddy',
- backToSettings: 'Retour aux paramètres',
- createUser: 'Créer un utilisateur',
- noPermission: 'Accès refusé.',
- admin: 'Admin',
- noGroups: 'Aucun groupe',
- active: 'Actif',
- inactive: 'Inactif',
- edit: 'Modifier',
- delete: 'Supprimer',
- system: 'Système',
- noGroupsAvailable: 'Aucun groupe disponible',
- table: {
- username: 'Utilisateur',
- groups: 'Groupes',
- status: 'Statut',
- actions: 'Actions',
- },
- toast: {
- created: 'Utilisateur créé',
- updated: 'Utilisateur mis à jour',
- deleted: 'Utilisateur supprimé',
- fillRequired: 'Remplissez les champs requis',
- passwordsDoNotMatch: 'Les mots de passe ne correspondent pas',
- passwordTooShort: 'Minimum 6 caractères',
- },
- modal: {
- createUser: 'Créer utilisateur',
- editUser: 'Modifier utilisateur',
- cancel: 'Annuler',
- creating: 'Création...',
- saving: 'Enregistrement...',
- saveChanges: 'Enregistrer',
- advancedAuthSubtitle: 'avec Authentification Avancée',
- },
- form: {
- username: 'Utilisateur',
- usernamePlaceholder: 'Nom utilisateur',
- email: 'Email',
- emailPlaceholder: 'utilisateur@exemple.com',
- password: 'Mot de passe',
- passwordPlaceholder: 'Mot de passe',
- confirmPassword: 'Confirmer mdp',
- confirmPasswordPlaceholder: 'Confirmez mdp',
- newPasswordPlaceholder: 'Nouveau mdp',
- confirmNewPasswordPlaceholder: 'Confirmez nouveau mdp',
- leaveBlankToKeep: 'Laissez vide pour conserver l\'actuel',
- groups: 'Groupes',
- optional: 'optionnel',
- autoGeneratedPassword: 'Un mot de passe sera généré et envoyé par email.',
- passwordManagedByAdvancedAuth: 'Géré par Auth Avancée. Utilisez "Réinitialiser" pour envoyer un nouveau mdp par email.',
- resetPassword: 'Réinitialiser le mot de passe',
- resettingPassword: 'Réinitialisation...',
- },
- deleteModal: {
- title: 'Supprimer utilisateur',
- message: 'Cette action est irréversible.',
- confirm: 'Supprimer',
- },
- },
- // Stream overlay
- streamOverlay: {
- title: 'Superposition Flux',
- invalidPrinterId: 'ID invalide',
- cameraStream: 'Flux caméra',
- progress: 'Progression',
- eta: 'Fin estimée',
- tomorrow: 'Demain',
- printerIdle: 'Imprimante inactive',
- printerOffline: 'Imprimante hors ligne',
- status: {
- printing: 'Impression',
- paused: 'En pause',
- finished: 'Terminée',
- failed: 'Échouée',
- idle: 'Inactive',
- unknown: 'Inconnue',
- },
- },
- // Profiles
- profiles: {
- title: 'Profils',
- subtitle: 'Gérez vos presets slicer et calibrations Pressure Advance',
- tabs: {
- cloud: 'Profils Cloud',
- local: 'Profils Locaux',
- kprofiles: 'K-Profiles',
- },
- localProfiles: {
- title: 'Profils Locaux',
- subtitle: 'Gérez vos presets OrcaSlicer',
- import: 'Importer Profils',
- importDesc: 'Déposez les fichiers .bbscfg, .bbsflmt, .orca_filament, .zip ou .json',
- importing: 'Importation...',
- search: 'Chercher un preset...',
- noPresets: 'Aucun preset local',
- badge: 'Local',
- edit: 'Modifier',
- delete: 'Supprimer',
- cancel: 'Annuler',
- deleteConfirmTitle: 'Supprimer Preset',
- deleteConfirm: 'Supprimer définitivement ce preset ?',
- source: 'Source',
- inheritsFrom: 'Hérite de',
- filamentType: 'Type',
- vendor: 'Vendeur',
- compatiblePrinters: 'Imprimantes',
- nozzleTemp: 'Temp Buse',
- cost: 'Coût',
- density: 'Densité',
- pressureAdvance: 'Pressure Advance',
- filament: 'Filament',
- process: 'Processus',
- printer: 'Imprimante',
- toast: {
- importSuccess: '{{count}} profil(s) importé(s)',
- importSkipped: '{{count}} profil(s) ignoré(s) (doublons)',
- importError: '{{count}} erreur(s) d\'import',
- deleted: 'Preset supprimé',
- updated: 'Preset mis à jour',
- },
- },
- connectedAs: 'Connecté en tant que',
- logout: 'Déconnexion',
- noLogoutPermission: 'Pas d\'autorisation de déconnexion',
- failedToLoad: 'Échec chargement profils',
- retry: 'Réessayer',
- time: {
- justNow: 'À l\'instant',
- minsAgo: 'Il y a {{count}}m',
- hoursAgo: 'Il y a {{count}}h',
- daysAgo: 'Il y a {{count}}j',
- },
- toast: {
- loggedOut: 'Déconnecté',
- },
- login: {
- title: 'Connexion Bambu Cloud',
- subtitle: 'Synchronisez vos presets slicer',
- email: 'Email',
- password: 'Mot de passe',
- region: 'Région',
- regionGlobal: 'Global',
- regionChina: 'Chine',
- verificationCode: 'Code de vérification',
- totpCode: 'Code Authenticator',
- checkEmail: 'Code envoyé à {{email}}',
- enterTotpHint: 'Entrez le code 2FA',
- accessToken: 'Jeton d\'accès (Access Token)',
- accessTokenHint: 'Collez le jeton (depuis Bambu Studio)',
- back: 'Retour',
- loginButton: 'Connexion',
- verifyButton: 'Vérifier',
- setTokenButton: 'Définir Jeton',
- useToken: 'Utiliser jeton d\'accès',
- useEmail: 'Connexion par email',
- toast: {
- loggedIn: 'Connecté avec succès',
- codeSent: 'Code envoyé par email',
- enterTotp: 'Entrez le code Authenticator',
- tokenSet: 'Jeton défini',
- },
- },
- presets: {
- myPreset: 'Mon preset (modifiable)',
- duplicate: 'Dupliquer',
- editable: 'Modifiable',
- failedToLoadDetails: 'Échec détails preset',
- deleteConfirm: 'Supprimer ce preset ?',
- deleteWarning: 'Ceci supprimera "{{name}}" de Bambu Cloud définitivement.',
- noDuplicatePermission: 'Pas d\'autorisation duplication',
- noEditPermission: 'Pas d\'autorisation modification',
- noDeletePermission: 'Pas d\'autorisation suppression',
- types: {
- filament: 'Preset filament',
- printer: 'Preset imprimante',
- process: 'Preset processus',
- },
- toast: {
- deleted: 'Preset supprimé',
- created: 'Preset créé',
- updated: 'Preset mis à jour',
- duplicated: 'Preset dupliqué',
- fieldAdded: 'Champ "{{key}}" ajouté',
- exported: 'Preset exporté',
- },
- baseLabel: 'Base : {{name}}',
- currentLabel: 'Actuel : {{name}}',
- newPreset: 'Nouveau Preset',
- editPreset: 'Modifier Preset',
- duplicatePreset: 'Dupliquer Preset',
- createNewPreset: 'Créer un nouveau Preset',
- customizeSettings: 'Personnalisez vos réglages',
- compareWithBase: 'Comparer avec la base',
- compare: 'Comparer',
- // CreatePresetModal - Basic Info
- basePreset: 'Preset de base',
- selectBasePreset: 'Choisir preset de base...',
- presetName: 'Nom du preset',
- myCustomPreset: 'Mon preset personnalisé',
- inheritsFrom: 'Hérite de',
- dropJsonToImport: 'Glissez JSON pour importer',
- // CreatePresetModal - Tabs
- tabs: {
- common: 'Commun',
- allFields: 'Tous les champs',
- },
- // CreatePresetModal - All Fields Tab
- availableFields: 'Champs disponibles',
- searchFieldsPlaceholder: 'Chercher un champ...',
- noMatchingFields: 'Aucun champ trouvé',
- allFieldsAdded: 'Tous les champs sont ajoutés',
- addCustomField: 'Ajouter un champ personnalisé',
- yourOverrides: 'Vos modifications',
- noOverridesYet: 'Aucune modification',
- clickFieldsToAdd: 'Cliquez à gauche pour ajouter',
- saveAsTemplate: 'Enregistrer comme modèle',
- jsonTip: 'Conseil : Glissez un .json pour importer les réglages',
- },
- cloudView: {
- searchPlaceholder: 'Chercher presets...',
- templates: 'Modèles',
- refresh: 'Rafraîchir',
- newPreset: 'Nouveau Preset',
- clearFilters: 'Effacer filtres',
- // Compare mode
- compareMode: 'Mode Comparaison',
- selectAnotherPreset: 'Choisir un autre preset {{type}}',
- clickTwoPresets: 'Choisissez deux presets de même type',
- selectFirst: '1. Sélectionner premier',
- selectSecond: '2. Sélectionner second',
- compareNow: 'Comparer maintenant',
- // Status row
- lastSynced: 'Synchronisé :',
- showingCount: '{{showing}} sur {{total}} presets',
- noPresetsFound: 'Aucun preset trouvé',
- // Column headers
- columns: {
- filament: 'Filament',
- process: 'Processus',
- printer: 'Imprimante',
- },
- noFilamentPresets: 'Pas de preset filament',
- noProcessPresets: 'Pas de preset processus',
- noPrinterPresets: 'Pas de preset imprimante',
- // Filters
- filters: {
- type: 'Type',
- owner: 'Propriétaire',
- printer: 'Imprimante',
- nozzle: 'Buse',
- filament: 'Filament',
- layer: 'Couche',
- all: 'Tous',
- myPresets: 'Mes Presets',
- builtIn: 'Inclus',
- process: 'Processus',
- },
- // Permissions
- noTemplatesPermission: 'Pas d\'autorisation modèles',
- noRefreshPermission: 'Pas d\'autorisation rafraîchissement',
- noCreatePermission: 'Pas d\'autorisation création',
- },
- templates: {
- title: 'Modèles rapides',
- noTemplates: 'Aucun modèle',
- createFirst: 'Créez-en depuis l\'éditeur de preset',
- typeFilter: 'Type :',
- deleteTitle: 'Supprimer modèle',
- deleteWarning: 'Action irréversible',
- deleteConfirm: 'Supprimer "{{name}}" ?',
- namePlaceholder: 'Nom du modèle',
- descriptionPlaceholder: 'Description',
- settingsJson: 'Paramètres (JSON)',
- fieldsCount: '{{count}} champs',
- shownInModals: 'Visible dans fenêtres',
- hiddenInModals: 'Masqué dans fenêtres',
- apply: 'Appliquer',
- toast: {
- deleted: 'Modèle supprimé',
- updated: 'Modèle mis à jour',
- created: 'Modèle créé',
- applied: 'Modèle appliqué',
- },
- },
- },
- // Support/Debug
- support: {
- debugLoggingActive: 'Débogage actif',
- manageLogs: 'Gérer',
- collectItem7: 'Connectivité et versions firmware',
- collectItem8: 'Statut intégrations (Spoolman, MQTT, HA)',
- collectItem9: 'Interfaces réseau (sous-réseaux)',
- collectItem10: 'Versions packages Python',
- collectItem11: 'Santé base de données',
- collectItem12: 'Détails environnement Docker',
- },
- // File manager
- fileManager: {
- title: 'Gestionnaire de fichiers',
- subtitle: 'Organisez vos fichiers d\'impression',
- uploadFiles: 'Téléverser fichiers',
- newFolder: 'Nouveau dossier',
- folderName: 'Nom du dossier',
- folderNamePlaceholder: 'ex: Pièces Utiles',
- renameFile: 'Renommer fichier',
- renameFolder: 'Renommer dossier',
- moveFiles: 'Déplacer {{count}} fichier(s)',
- rootNoFolder: 'Racine (aucun dossier)',
- current: 'actuel',
- linkFolder: 'Lier le dossier',
- linkFolderDescription: 'Lier "{{name}}" à un projet ou archive.',
- project: 'Projet',
- archive: 'Archive',
- noProjectsFound: 'Aucun projet trouvé',
- noArchivesFound: 'Aucune archive trouvée',
- unlink: 'Délier',
- link: 'Lier',
- dragDropFiles: 'Glissez les fichiers ici',
- dropFilesHere: 'Déposez ici',
- orClickToBrowse: 'ou cliquez pour parcourir',
- allFileTypesSupported: 'Tous types supportés. ZIP extraits.',
- zipFilesDetected: 'ZIP détectés',
- zipExtractOptions: 'Choix de structure pour ZIP :',
- preserveZipStructure: 'Garder structure ZIP',
- createFolderFromZip: 'Dossier par nom du ZIP',
- stlThumbnailGeneration: 'Vignettes STL',
- zipMayContainStl: 'Extraction vignettes possible pour STL.',
- thumbnailsCanBeGenerated: 'Génération vignettes (peut être long).',
- generateThumbnailsForStl: 'Générer vignettes STL',
- threemfDetected: 'Fichiers 3MF détectés',
- threemfExtractionInfo: 'Réglages extraits auto du 3MF.',
- willBeExtracted: 'Sera extrait',
- filesExtracted: '{{count}} fichiers extraits',
- uploadComplete: 'Terminé : {{succeeded}} succès',
- uploadFailed: '{{count}} échecs',
- uploading: 'Téléversement...',
- changeLink: 'Modifier lien...',
- linkTo: 'Lier à...',
- linkToProjectOrArchive: 'Lier à projet ou archive',
- addToQueue: 'Ajouter à la file',
- schedulePrint: 'Planifier',
- generateThumbnail: 'Générer vignette',
- generateThumbnails: 'Générer vignettes',
- generateThumbnailsForMissing: 'Vignettes STL manquantes',
- gridView: 'Grille',
- listView: 'Liste',
- lowDiskSpaceWarning: 'Espace disque faible',
- lowDiskSpaceDetails: '{{free}} libre sur {{total}}. Seuil : {{threshold}} Go.',
- files: 'Fichiers',
- folders: 'Dossiers',
- size: 'Taille',
- free: 'Libre',
- allFiles: 'Tous les fichiers',
- wrap: 'Retour ligne',
- enableTextWrapping: 'Activer retour ligne',
- disableTextWrapping: 'Désactiver retour ligne',
- dragToResizeTooltip: 'Glisser pour redimensionner, double-clic reset',
- searchFiles: 'Chercher fichiers...',
- allTypes: 'Tous types',
- prints: 'Impressions',
- ascending: 'Croissant',
- descending: 'Décroissant',
- resultsCount: '{{showing}} sur {{total}} fichiers',
- selectAll: 'Tout sélectionner',
- deselectAll: 'Tout désélectionner',
- selected: '{{count}} sélectionnés',
- adding: 'Ajout...',
- loadingFiles: 'Chargement...',
- folderIsEmpty: 'Dossier vide',
- noFilesYet: 'Aucun fichier',
- folderEmptyDescription: 'Téléversez ou déplacez des fichiers ici.',
- noFilesDescription: 'Téléversez des fichiers pour organiser.',
- noMatchingFiles: 'Aucun fichier correspondant',
- noMatchingFilesDescription: 'Ajustez votre recherche.',
- clearFilters: 'Effacer filtres',
- printedCount: 'Imprimé {{count}}x',
- uploadedBy: 'Téléversé par',
- deleteFolder: 'Supprimer dossier',
- deleteFile: 'Supprimer fichier',
- deleteFilesCount: 'Supprimer {{count}} fichiers',
- deleteFolderConfirm: 'Supprimer le dossier et son contenu ?',
- deleteFileConfirm: 'Supprimer ce fichier ?',
- deleteFilesConfirm: 'Supprimer {{count}} fichiers définitivement ?',
- deleting: 'Suppression...',
- noPermissionRenameFolder: 'Pas d\'autorisation renommage',
- noPermissionLinkFolder: 'Pas d\'autorisation lien',
- noPermissionDeleteFolder: 'Pas d\'autorisation suppression dossier',
- noPermissionPrint: 'Pas d\'autorisation impression',
- noPermissionAddToQueue: 'Pas d\'autorisation file',
- noPermissionDownload: 'Pas d\'autorisation téléchargement',
- noPermissionRenameFile: 'Pas d\'autorisation renommage fichier',
- noPermissionGenerateThumbnail: 'Pas d\'autorisation vignettes',
- noPermissionDeleteFile: 'Pas d\'autorisation suppression fichier',
- noPermissionCreateFolder: 'Pas d\'autorisation nouveau dossier',
- noPermissionUpload: 'Pas d\'autorisation téléversement',
- noPermissionMoveFiles: 'Pas d\'autorisation déplacement',
- noPermissionDeleteFiles: 'Pas d\'autorisation suppression groupée',
- toast: {
- folderCreated: 'Dossier créé',
- folderDeleted: 'Dossier supprimé',
- fileDeleted: 'Fichier supprimé',
- filesDeleted: '{{count}} fichiers supprimés',
- filesMoved: 'Fichiers déplacés',
- folderLinked: 'Dossier lié',
- folderUnlinked: 'Dossier délié',
- addedToQueue: '{{count}} fichier(s) ajouté(s)',
- addedToQueuePartial: '{{added}} ajoutés, {{failed}} échecs',
- failedToAddToQueue: 'Échec ajout file : {{error}}',
- fileRenamed: 'Fichier renommé',
- folderRenamed: 'Dossier renommé',
- thumbnailsGenerated: '{{count}} vignette(s) générée(s)',
- thumbnailsGeneratedPartial: '{{succeeded}} succès, {{failed}} échecs',
- noStlMissingThumbnails: 'Aucun STL sans vignette',
- failedToGenerateThumbnails: 'Échec vignettes : {{error}}',
- thumbnailGenerated: 'Vignette générée',
- failedToGenerateThumbnail: 'Échec vignette : {{error}}',
- },
- },
- // Projects
- projects: {
- title: 'Projets',
- subtitle: 'Suivez vos projets d\'impression 3D',
- newProject: 'Nouveau Projet',
- editProject: 'Modifier Projet',
- deleteProject: 'Supprimer Projet',
- projectName: 'Nom du Projet',
- description: 'Description',
- noProjects: 'Aucun projet',
- noProjectsFiltered: 'Aucun projet {{status}}',
- noProjectsFilteredHelp: 'Les projets apparaîtront ici quand leur statut changera.',
- createFirst: 'Créez votre premier projet pour organiser vos builds.',
- createFirstButton: 'Créer votre premier projet',
- create: 'Créer',
- files: 'Fichiers',
- prints: 'Impressions',
- plates: 'plateaux',
- parts: 'pièces',
- lastModified: 'Modifié le',
- deleteConfirm: 'Supprimer ce projet ? Les archives seront déliées mais conservées.',
- addFiles: 'Ajouter fichiers',
- removeFile: 'Retirer fichier',
- viewDetails: 'Détails',
- // Modal fields
- namePlaceholder: 'ex: Build Voron 2.4',
- descriptionPlaceholder: 'Description optionnelle...',
- color: 'Couleur',
- targetPlates: 'Plateaux cibles',
- targetPlatesPlaceholder: 'ex: 25',
- targetPlatesHelp: 'Nombre total de jobs',
- targetParts: 'Pièces cibles',
- targetPartsPlaceholder: 'ex: 150',
- targetPartsHelp: 'Nombre total d\'objets',
- tagsLabel: 'Tags (séparés par virgules)',
- tagsPlaceholder: 'ex: voron, cadeau',
- dueDate: 'Échéance',
- priority: 'Priorité',
- priorityLow: 'Basse',
- priorityNormal: 'Normale',
- priorityHigh: 'Haute',
- priorityUrgent: 'Urgente',
- // Status
- statusActive: 'Actif',
- statusCompleted: 'Terminé',
- statusArchived: 'Archivé',
- done: 'Fait',
- completed: 'terminé',
- failed: 'échoué',
- inQueue: 'en file',
- noPrintsYet: 'Aucune impression',
- // Footer stats
- printJobs: 'Jobs (plateaux)',
- partsPrinted: 'Pièces imprimées',
- failedParts: 'Pièces échouées',
- // Actions
- import: 'Importer',
- export: 'Exporter',
- importProject: 'Importer projet',
- exportAll: 'Exporter tous les projets',
- loading: 'Chargement des projets...',
- // Permissions
- noEditPermission: 'Pas d\'autorisation de modification',
- noDeletePermission: 'Pas d\'autorisation de suppression',
- noCreatePermission: 'Pas d\'autorisation de création',
- noImportPermission: 'Pas d\'autorisation d\'import',
- noExportPermission: 'Pas d\'autorisation d\'export',
- // Toast
- toast: {
- created: 'Projet créé',
- updated: 'Projet mis à jour',
- deleted: 'Projet supprimé',
- imported: 'Projet importé',
- multipleImported: '{{count}} projets importés',
- importFailed: 'Échec d\'import',
- exported: 'Projets exportés (métadonnées)',
- },
- },
- // Project detail page
- projectDetail: {
- notFound: 'Projet non trouvé',
- backToProjects: 'Retour aux Projets',
- export: 'Exporter',
- exportProject: 'Exporter projet',
- noExportPermission: 'Pas d\'autorisation export',
- noEditPermission: 'Pas d\'autorisation modification',
- partOf: 'Fait partie de :',
- priorityLabel: 'Priorité :',
- noPrints: 'Aucune impression dans ce projet',
- status: {
- active: 'Actif',
- completed: 'Terminé',
- archived: 'Archivé',
- },
- priority: {
- low: 'Basse',
- normal: 'Normale',
- high: 'Haute',
- urgent: 'Urgente',
- },
- dueDate: {
- overdue: 'En retard',
- today: 'Aujourd\'hui',
- daysLeft: '{{count}} jours restants',
- },
- progress: {
- platesProgress: 'Progression Plateaux',
- partsProgress: 'Progression Pièces',
- printJobs: 'jobs d\'impression',
- parts: 'pièces',
- percentComplete: '{{percent}}% terminé',
- remaining: '{{count}} restant(s)',
- },
- stats: {
- printJobs: 'Jobs d\'Impression',
- total: 'total',
- failed: '{{count}} échecs',
- partsPrinted: '{{count}} pièces imprimées',
- printTime: 'Temps d\'Impression',
- filamentUsed: 'Filament utilisé',
- },
- cost: {
- title: 'Suivi des coûts',
- filamentCost: 'Coût Filament',
- energy: 'Énergie',
- budget: 'Budget',
- remaining: 'Restant',
- },
- subProjects: {
- title: 'Sous-projets ({{count}})',
- },
- notes: {
- title: 'Notes',
- noEditPermission: 'Pas d\'autorisation modification',
- placeholder: 'Ajouter des notes...',
- empty: 'Aucune note. Cliquez sur modifier.',
- },
- files: {
- title: 'Fichiers',
- linkFolders: 'Liez des dossiers depuis le gestionnaire',
- forQuickAccess: 'pour un accès rapide.',
- fileCount: '{{count}} fichier(s)',
- empty: 'Aucun dossier lié.',
- },
- bom: {
- title: 'BOM (Liste matériel)',
- acquired: '{{completed}}/{{total}} acquis',
- showAll: 'Tout afficher',
- hideDone: 'Masquer acquis',
- addPart: 'Ajouter matériel',
- noAddPermission: 'Pas d\'autorisation ajout',
- partNamePlaceholder: 'Nom (ex: Vis M3x8)',
- partName: 'Nom de pièce',
- qty: 'Qté',
- price: 'Prix ({{currency}})',
- sourcingUrlPlaceholder: 'Lien d\'achat (optionnel)',
- remarksPlaceholder: 'Remarques (optionnel)',
- deletePart: 'Supprimer pièce',
- deleteConfirm: 'Supprimer "{{name}}" ?',
- noUpdatePermission: 'Pas d\'autorisation mise à jour',
- noEditPermission: 'Pas d\'autorisation modification',
- noDeletePermission: 'Pas d\'autorisation suppression',
- totalCost: 'Coût total :',
- empty: 'BOM vide. Ajoutez du matériel ou de l\'électronique.',
- },
- timeline: {
- title: 'Historique d\'activité',
- empty: 'Aucune activité.',
- },
- template: {
- saveAsTemplate: 'Enregistrer comme modèle',
- noCreatePermission: 'Pas d\'autorisation modèle',
- },
- queue: {
- title: 'File d\'attente',
- viewAll: 'Tout voir',
- printing: '{{count}} en cours',
- queued: '{{count}} en file',
- },
- prints: {
- title: 'Impressions ({{count}})',
- },
- toast: {
- projectUpdated: 'Projet mis à jour',
- partAdded: 'Pièce ajoutée',
- partRemoved: 'Pièce retirée',
- exportFailed: 'Échec export',
- projectExported: 'Projet exporté',
- templateCreated: 'Modèle créé',
- },
- },
- // System info
- system: {
- title: 'Informations Système',
- version: 'Version',
- uptime: 'Temps de fonctionnement',
- cpuUsage: 'Utilisation CPU',
- memoryUsage: 'Utilisation RAM',
- diskUsage: 'Utilisation Disque',
- networkInfo: 'Infos Réseau',
- logs: 'Journaux',
- debugMode: 'Mode Débogage',
- enableDebug: 'Activer débogage',
- disableDebug: 'Désactiver débogage',
- downloadLogs: 'Télécharger logs',
- clearLogs: 'Effacer logs',
- dockerInfo: 'Infos Docker',
- containerName: 'Nom conteneur',
- imageName: 'Nom image',
- platform: 'Plateforme',
- architecture: 'Architecture',
- },
- // Library (K Profiles)
- library: {
- title: 'Bibliothèque Filament',
- addFilament: 'Ajouter Filament',
- editFilament: 'Modifier Filament',
- deleteFilament: 'Supprimer Filament',
- vendor: 'Vendeur',
- material: 'Matériau',
- color: 'Couleur',
- kFactor: 'Facteur K',
- temperature: 'Température',
- noFilaments: 'Bibliothèque vide',
- deleteConfirm: 'Supprimer ce filament ?',
- importFromPrinter: 'Importer de l\'imprimante',
- exportToFile: 'Exporter vers fichier',
- },
- // Spoolman
- spoolman: {
- title: 'Intégration Spoolman',
- enabled: 'Spoolman Activé',
- url: 'URL Spoolman',
- connected: 'Connecté',
- disconnected: 'Non Connecté',
- testConnection: 'Tester connexion',
- sync: 'Synchroniser',
- syncing: 'Sync...',
- lastSync: 'Dernière Sync',
- linkToSpoolman: 'Lier à Spoolman',
- openInSpoolman: 'Ouvrir Spoolman',
- unlinkSpool: 'Délier bobine',
- selectSpool: 'Choisir bobine',
- noUnlinkedSpools: 'Pas de bobine libre',
- linkSuccess: 'Lien réussi',
- linkFailed: 'Échec lien',
- spoolId: 'ID Bobine',
- fillSourceLabel: '(Spoolman)',
- weight: 'Poids',
- remaining: 'Restant',
- disableWeightSync: 'Désactiver Sync poids estimé AMS',
- disableWeightSyncDesc: 'Ne pas utiliser les estimations AMS. Utile si vous préférez le suivi Spoolman.',
- reportPartialUsage: 'Rapporter consommation partielle pour échecs',
- reportPartialUsageDesc: 'Si l\'impression échoue, rapporte le filament consommé selon les couches.',
- },
- // Inventory
- inventory: {
- title: 'Inventaire de Bobines',
- addSpool: 'Ajouter Bobine',
- editSpool: 'Modifier Bobine',
- material: 'Matériau',
- selectMaterial: 'Choisir matériau...',
- subtype: 'Sous-type',
- brand: 'Marque',
- searchBrand: 'Chercher marque...',
- useCustomBrand: 'Utiliser "{{brand}}"',
- colorName: 'Nom de couleur',
- colorNamePlaceholder: 'Jade White, Fire Red...',
- color: 'Couleur',
- hexColor: 'Code Hex',
- pickColor: 'Choisir couleur perso',
- labelWeight: 'Poids net',
- coreWeight: 'Poids bobine vide',
- searchSpoolWeight: 'Chercher poids bobine...',
- weightUsed: 'Consommé',
- currentWeight: 'Poids restant',
- measuredWeight: 'Poids mesuré',
- measuredWeightError: 'Le poids mesuré doit être entre {{min}}g et {{max}}g.',
- slicerFilament: 'Filament Slicer',
- slicerFilamentName: 'Nom du Preset Slicer',
- slicerPreset: 'Preset Slicer',
- searchPresets: 'Chercher presets...',
- selectedPreset: 'Sélectionné',
- noPresetsFound: 'Aucun preset trouvé',
- tempOverrides: 'Exceptions Température',
- note: 'Note',
- notePlaceholder: 'Notes additionnelles sur cette bobine...',
- archive: 'Archiver',
- restore: 'Restaurer',
- noSpools: 'Aucune bobine. Ajoutez votre première bobine pour commencer.',
- noManualSpools: 'Aucune bobine manuelle disponible. Ajoutez-en une d\'abord.',
- kProfiles: 'K-Profiles',
- addKProfile: 'Ajouter K-Profile',
- assignSpool: 'Assigner Bobine',
- unassignSpool: 'Désassigner',
- assignSuccess: 'Bobine assignée et slot AMS configuré',
- assignFailed: 'Échec assignation',
- assignMismatchTitle: 'Matériau non correspondant',
- assignMismatchMessage: 'Le matériau de la bobine sélectionnée ({{spoolMaterial}}) ne correspond pas au profil AMS ({{trayMaterial}}) pour {{location}}. Assigner quand même ?',
- assignMismatchConfirm: 'Assigner quand même',
- selectSpool: 'Choisir une bobine pour ce slot',
- assigned: 'Assigné',
- assigning: 'Assignation...',
- searchSpools: 'Chercher bobines...',
- allMaterials: 'Tous Matériaux',
- filterByBrand: 'Filtrer par marque...',
- showArchived: 'Afficher archivées',
- spoolCreated: 'Bobine créée',
- spoolUpdated: 'Bobine mise à jour',
- spoolDeleted: 'Bobine supprimée',
- spoolArchived: 'Bobine archivée',
- spoolRestored: 'Bobine restaurée',
- deleteConfirm: 'Supprimer définitivement cette bobine ?',
- advancedSettings: 'Paramètres Avancés',
- // Tabs
- filamentInfoTab: 'Infos Filament',
- paProfileTab: 'Profil PA',
- filamentInfo: 'Filament',
- additional: 'Additionnel',
- // Cloud
- loadingPresets: 'Chargement des presets cloud...',
- cloudConnected: 'Cloud connecté',
- cloudNotConnected: 'Cloud déconnecté (valeurs par défaut)',
- // Colors
- recentColors: 'Récentes',
- searchColors: 'Chercher couleurs...',
- searchResults: 'Résultats',
- allColors: 'Toutes',
- commonColors: 'Communes',
- showLess: 'Moins',
- showAll: 'Toutes',
- noColorsFound: 'Aucune couleur correspondante',
- noResults: 'Aucun résultat',
- // PA Profiles
- selectMaterialFirst: 'Veuillez choisir un matériau dans l\'onglet Infos Filament.',
- noPrintersConfigured: 'Ajoutez une imprimante pour utiliser les profils PA.',
- matchingFilter: 'Correspondant',
- anyBrand: 'Toute marque',
- anyVariant: 'Toute variante',
- autoSelect: 'Auto-sélection',
- matches: 'correspondances',
- match: 'correspondance',
- noMatches: 'Aucune correspondance',
- connected: 'Connecté',
- offline: 'Hors ligne',
- printerOffline: 'Imprimante hors ligne. Connectez-vous pour voir les profils.',
- noKProfilesMatch: 'Aucun profil K ne correspond au filament.',
- leftNozzle: 'Buse Gauche',
- rightNozzle: 'Buse Droite',
- profilesSelected: 'profil(s) de calibration sélectionné(s)',
- // Stats & enhanced table
- totalInventory: 'Total Inventaire',
- totalConsumed: 'Total Consommé',
- byMaterial: 'Par Matériau',
- inPrinter: 'Dans Imprimante',
- lowStock: 'Stock Bas',
- sinceTracking: 'Depuis le début du suivi',
- loadedInAms: 'Chargé dans AMS/Ext',
- remaining: 'Restant',
- lowStockThreshold: '<20% restant',
- search: 'Chercher bobines...',
- showing: 'Affichage',
- to: 'à',
- of: 'sur',
- show: 'Voir',
- spools: 'bobines',
- spool: 'bobine',
- page: 'Page',
- noSpoolsMatch: 'Aucun résultat trouvé',
- noSpoolsMatchDesc: 'Ajustez votre recherche ou vos filtres.',
- active: 'Actif',
- archived: 'Archivé',
- all: 'Tous',
- used: 'Occasion',
- new: 'Neuf',
- clearFilters: 'Effacer filtres',
- table: 'Tableau',
- cards: 'Cartes',
- net: 'Net',
- // Column config
- columns: 'Colonnes',
- configureColumns: 'Configurer Colonnes',
- configureColumnsDesc: 'Glissez pour ordonner ou utilisez les flèches. Cliquez sur l\'œil pour masquer.',
- visible: 'visible',
- reset: 'Reset',
- cancel: 'Annuler',
- applyChanges: 'Appliquer',
- moveUp: 'Monter',
- moveDown: 'Descendre',
- hideColumn: 'Masquer',
- showColumn: 'Afficher',
- // Tag linking
- linkToSpool: 'Lier à une Bobine',
- tagLinked: 'Tag lié à la bobine',
- tagLinkFailed: 'Échec lien tag',
- tagAlreadyLinked: 'Tag déjà lié à une autre bobine',
- unknownTag: 'Tag RFID inconnu détecté',
- // Usage history
- usageHistory: 'Historique de Consommation',
- noUsageHistory: 'Aucune consommation enregistrée',
- printName: 'Nom Impression',
- weightConsumed: 'Poids consommé',
- clearHistory: 'Effacer',
- historyCleared: 'Historique effacé',
- fillSourceLabel: '(Inv)',
- },
- // Timelapse
- timelapse: {
- title: 'Timelapse',
- create: 'Créer Timelapse',
- download: 'Télécharger',
- delete: 'Supprimer',
- preview: 'Aperçu',
- frameRate: 'Images/sec',
- quality: 'Qualité',
- processing: 'Traitement...',
- noTimelapses: 'Aucun timelapse',
- },
- // AMS
- ams: {
- title: 'AMS',
- slot: 'Slot',
- empty: 'Vide',
- emptySlot: 'Slot vide',
- unknown: 'Inconnu',
- humidity: 'Humidité',
- temperature: 'Température',
- filamentType: 'Type filament',
- filamentColor: 'Couleur',
- remaining: 'Restant',
- history: 'Historique AMS',
- noHistory: 'Aucun historique',
- configureSlot: 'Configurer Slot',
- externalSpool: 'Bobine externe',
- profile: 'Profil',
- kFactor: 'Facteur K',
- fill: 'Remplir',
- configure: 'Configurer',
- },
- // Print modal
- printModal: {
- title: 'Lancer l\'impression',
- selectPrinter: 'Choisir l\'imprimante',
- selectPlate: 'Choisir le plateau',
- filamentMapping: 'Mapping Filament',
- printSettings: 'Réglages d\'impression',
- bedLeveling: 'Nivellement plateau',
- flowCalibration: 'Calibration débit',
- vibrationCalibration: 'Vibration (Input Shaper)',
- layerInspection: 'Inspection 1ère couche',
- timelapse: 'Timelapse',
- startPrint: 'Démarrer',
- addToQueue: 'Ajouter à la file',
- cancel: 'Annuler',
- noPrintersAvailable: 'Aucune imprimante disponible',
- printerBusy: 'L\'imprimante est occupée',
- printerOffline: 'L\'imprimante est hors ligne',
- sameTypeDifferentColor: 'Même type, couleur différente',
- filamentTypeNotLoaded: 'Type de filament non chargé',
- openCalendar: 'Ouvrir calendrier',
- leftNozzle: 'G',
- rightNozzle: 'D',
- leftNozzleTooltip: 'Buse gauche',
- rightNozzleTooltip: 'Buse droite',
- insufficientFilamentTitle: 'Not enough filament',
- insufficientFilamentMessage: 'Some assigned spools have less filament remaining than this print needs:',
- insufficientFilamentLine: '{{printer}} - {{slot}}: needs {{required}}g, remaining {{remaining}}g',
- printAnyway: 'Print anyway',
- },
- // Backup
- backup: {
- title: 'Sauvegarde & Restauration',
- createBackup: 'Créer Sauvegarde',
- restoreBackup: 'Restaurer Sauvegarde',
- restoreDescription: 'Remplace les données par un fichier de sauvegarde',
- downloadBackup: 'Télécharger Sauvegarde',
- uploadBackup: 'Téléverser Sauvegarde',
- lastBackup: 'Dernière sauvegarde',
- autoBackup: 'Sauvegarde auto',
- backupNow: 'Sauvegarder maintenant',
- restoreWarning: 'Attention : Écrase TOUTES les données actuelles.',
- includeArchives: 'Inclure Archives',
- includeSettings: 'Inclure Paramètres',
- includeProfiles: 'Inclure Profils',
- backupSuccess: 'Sauvegarde réussie',
- restoreSuccess: 'Restauration réussie',
- backupFailed: 'Échec sauvegarde',
- restoreFailed: 'Échec restauration',
- restoreNote: 'L\'imprimante virtuelle sera arrêtée pendant la restauration',
- },
- // Tags
- tags: {
- title: 'Tags',
- addTag: 'Ajouter Tag',
- editTag: 'Modifier Tag',
- deleteTag: 'Supprimer Tag',
- tagName: 'Nom du Tag',
- tagColor: 'Couleur du Tag',
- noTags: 'Aucun tag',
- deleteConfirm: 'Supprimer ce tag ?',
- manageTags: 'Gérer les Tags',
- },
- // Upload modal (archives)
- uploadModal: {
- title: 'Téléverser des fichiers 3MF',
- dragDrop: 'Glissez les fichiers .3mf ici',
- or: 'ou',
- browseFiles: 'Parcourir',
- extractionInfo: 'Le modèle d\'imprimante est extrait des métadonnées 3MF.',
- uploaded: 'téléversé',
- failed: 'échoué',
- uploading: 'En cours...',
- upload: 'Téléverser',
- uploadFailed: 'Échec du téléversement',
- },
- // Edit archive modal
- // Edit Archive Modal
- editArchive: {
- title: 'Modifier l\'archive',
- name: 'Nom',
- namePlaceholder: 'Nom de l\'impression',
- printer: 'Imprimante',
- noPrinter: 'Aucune imprimante',
- project: 'Projet',
- noProject: 'Aucun projet',
- itemsPrinted: 'Nombre de pièces',
- itemsPrintedHelp: 'Nombre d\'objets produits',
- notes: 'Notes',
- notesPlaceholder: 'Notes sur l\'impression...',
- externalLink: 'Lien externe',
- externalLinkPlaceholder: 'https://...',
- externalLinkHelp: 'Lien vers Printables, Thingiverse, etc.',
- tags: 'Tags',
- tagsPlaceholder: 'Ajouter des tags...',
- addMoreTags: 'Plus de tags...',
- matchingTags: 'Correspondant à "{{query}}"',
- existingTags: 'Tags existants',
- clickToAdd: '(cliquer pour ajouter)',
- status: 'Statut',
- failureReason: 'Raison de l\'échec',
- selectReason: 'Choisir raison...',
- photos: 'Photos du résultat',
- photosHelp: 'Cliquez sur + pour ajouter des photos',
- printResult: 'Résultat d\'impression',
- saving: 'Enregistrement...',
- // Failure reasons
- failureReasons: {
- adhesionFailure: 'Défaut d\'adhésion',
- spaghettiDetached: 'Spaghetti / Détaché',
- layerShift: 'Décalage de couche',
- cloggedNozzle: 'Buse bouchée',
- filamentRunout: 'Filament fini',
- warping: 'Warping (Déformation)',
- stringing: 'Stringing (Cheveux d\'ange)',
- underExtrusion: 'Sous-extrusion',
- powerFailure: 'Coupure courant',
- userCancelled: 'Annulé par l\'utilisateur',
- other: 'Autre',
- },
- // Archive statuses
- statuses: {
- completed: 'Réussie',
- failed: 'Échouée',
- aborted: 'Annulée',
- printing: 'Impression',
- },
- },
- // K-Profiles
- kProfiles: {
- title: 'K-Profiles',
- noPrintersConfigured: 'Aucune imprimante configurée',
- addPrinterInSettings: 'Ajoutez une imprimante pour gérer les K-profiles',
- noActivePrinters: 'Aucune imprimante active',
- enablePrinterConnection: 'Activez la connexion pour voir les K-profiles',
- loadingProfiles: 'Chargement des K-Profiles...',
- printerOffline: 'Imprimante hors ligne',
- printerOfflineDesc: 'L\'imprimante doit être allumée.',
- noMatchingProfiles: 'Aucun profil correspondant',
- noMatchingProfilesDesc: 'Ajustez votre recherche',
- noKProfiles: 'Aucun K-Profile',
- noKProfilesDesc: 'Aucun profil trouvé pour une buse de {{diameter}}mm',
- createFirstProfile: 'Créer le premier profil',
- // Controls
- printer: 'Imprimante',
- nozzle: 'Buse',
- refresh: 'Rafraîchir',
- addProfile: 'Ajouter Profil',
- export: 'Exporter',
- import: 'Importer',
- select: 'Choisir',
- selectAll: 'Tout sélectionner',
- delete: 'Supprimer',
- // Filters
- searchPlaceholder: 'Nom ou filament...',
- allExtruders: 'Tous les extrudeurs',
- leftOnly: 'Gauche uniquement',
- rightOnly: 'Droite uniquement',
- allFlow: 'Tout débit',
- hfOnly: 'HF uniquement',
- sOnly: 'S uniquement',
- sortName: 'Tri : Nom',
- sortKValue: 'Tri : Valeur K',
- sortFilament: 'Tri : Filament',
- // Dual extruder labels
- leftExtruder: 'Extrudeur gauche',
- rightExtruder: 'Extrudeur droit',
- // Modal
- modal: {
- addTitle: 'Ajouter K-Profile',
- editTitle: 'Modifier K-Profile',
- profileName: 'Nom du profil',
- profileNamePlaceholder: 'ex: Mon profil PLA',
- kValue: 'Valeur K',
- kValuePlaceholder: '0.020',
- kValueHelp: 'Plage type : 0.01-0.06 (PLA), 0.02-0.10 (PETG)',
- filament: 'Filament',
- selectFilament: 'Choisir filament...',
- noFilamentsHelp: 'Créez d\'abord un profil dans Bambu Studio.',
- flowType: 'Type de débit',
- highFlow: 'Haut Débit (HF)',
- standard: 'Standard',
- nozzleSize: 'Taille buse',
- extruder: 'Extrudeur',
- extruders: 'Extrudeurs',
- left: 'Gauche',
- right: 'Droite',
- notes: 'Notes (locales)',
- notesPlaceholder: 'Notes sur ce profil...',
- notesHelp: 'Enregistré dans Bambuddy, pas sur l\'imprimante',
- syncing: 'Sync avec l\'imprimante...',
- savingExtruder: 'Sauvegarde extrudeur {{current}}/{{total}}...',
- pleaseWait: 'Patientez...',
- },
- // Delete confirmation
- deleteConfirm: {
- title: 'Supprimer profil',
- cannotUndo: 'Action irréversible',
- message: 'Supprimer "{{name}}" de l\'imprimante ?',
- },
- // Bulk delete
- bulkDelete: {
- title: 'Supprimer les profils',
- cannotUndo: 'Action irréversible',
- message: 'Supprimer les {{count}} profils de l\'imprimante ?',
- },
- // Toast
- toast: {
- profileSaved: 'Profil K enregistré',
- profilesSaved: 'Profil K enregistré sur {{count}} extrudeur(s)',
- selectAtLeastOneExtruder: 'Sélectionnez un extrudeur',
- profileDeleted: 'Profil K supprimé',
- profilesDeleted: '{{count}} profils supprimés',
- exportedProfiles: '{{count}} profils exportés',
- importedProfiles: '{{count}} sur {{total}} profils importés',
- noProfilesToExport: 'Rien à exporter',
- invalidFileFormat: 'Format invalide',
- failedToParseImport: 'Échec analyse fichier',
- failedToSaveBatch: 'Échec enregistrement groupé',
- noteSaved: 'Note enregistrée',
- failedToSaveNote: 'Échec note',
- },
- // Permissions
- permission: {
- noRead: 'Pas d\'autorisation lecture',
- noCreate: 'Pas d\'autorisation création',
- noUpdate: 'Pas d\'autorisation mise à jour',
- noDelete: 'Pas d\'autorisation suppression',
- noExport: 'Pas d\'autorisation export',
- noImport: 'Pas d\'autorisation import',
- },
- },
- // Virtual Printer
- virtualPrinter: {
- title: 'Imprimante Virtuelle',
- running: 'En cours',
- stopped: 'Arrêtée',
- description: {
- default: 'Active une imprimante qui apparaît dans Bambu Studio. Les fichiers envoyés sont archivés sans impression.',
- proxy: 'Active un proxy qui relaie le trafic vers une imprimante réelle, permettant l\'impression à distance.',
- },
- enable: {
- title: 'Activer l\'imprimante virtuelle',
- visibleInSlicer: 'Visible comme "Bambuddy" dans le Slicer',
- proxyingTo: 'Proxy vers {{name}}',
- notActive: 'Inactive',
- },
- model: {
- title: 'Modèle d\'imprimante',
- description: 'Choisissez le modèle à émuler.',
- restartWarning: 'Changer le modèle redémarrera le service',
- },
- accessCode: {
- title: 'Code d\'accès',
- isSet: 'Code défini',
- notSet: 'Code requis pour activer',
- placeholder: 'Code 8 char',
- placeholderChange: 'Entrez nouveau code',
- hint: 'Exactement 8 caractères. Sert à l\'auth du Slicer.',
- charCount: '({{count}}/8)',
- },
- targetPrinter: {
- title: 'Imprimante cible',
- configured: 'Cible configurée',
- notConfigured: 'Imprimante requise pour mode Proxy',
- placeholder: 'Choisir imprimante...',
- hint: 'L\'imprimante doit être en mode LAN.',
- noPrinters: 'Ajoutez une imprimante réelle d\'abord.',
- },
- remoteInterface: {
- title: 'Exception Interface Réseau',
- configured: 'Override actif',
- optional: 'Optionnel - si IP auto est fausse (VPN, Docker, multi-NIC).',
- placeholder: 'Auto (défaut)...',
- hint: 'Force l\'IP annoncée via SSDP.',
- },
- mode: {
- title: 'Mode',
- archive: 'Archiver',
- archiveDesc: 'Archive immédiatement',
- review: 'Revue',
- reviewDesc: 'Attendre revue avant archive',
- queue: 'File',
- queueDesc: 'Archiver et ajouter à la file',
- proxy: 'Proxy',
- proxyDesc: 'Relais vers imprimante réelle',
- },
- setupRequired: {
- title: 'Configuration requise',
- description: 'Nécessite des réglages système (ports, pare-feu).',
- readGuide: 'Lire le guide de configuration',
- },
- howItWorks: {
- title: 'Fonctionnement',
- titleProxy: 'Fonctionnement (Mode Proxy)',
- step1: 'Suivez le guide pour votre plateforme',
- step2: 'Activez et réglez le code d\'accès',
- step3: 'Dans le Slicer, allez dans "Ajouter Imprimante"',
- step4: '"Bambuddy" apparaîtra dans la découverte',
- step5: 'Connectez avec votre code d\'accès',
- step6: 'Imprimez vers Bambuddy : le 3MF est archivé',
- proxyStep1: 'Cible réelle en mode LAN',
- proxyStep2: 'Choisissez l\'interface réseau',
- proxyStep3: 'Activez le proxy',
- proxyStep4: 'Connectez avec le code de la vraie imprimante',
- proxyStep5: 'Le trafic est relayé par Bambuddy',
- proxyStep6: 'Streaming caméra : voir doc NAT/IP forwarding',
- },
- status: {
- title: 'Détails du statut',
- printerName: 'Nom',
- model: 'Modèle',
- serialNumber: 'Série',
- mode: 'Mode',
- pendingFiles: 'Fichiers en attente',
- targetPrinter: 'Cible',
- ftpPort: 'Port FTP',
- mqttPort: 'Port MQTT',
- ftpConnections: 'Connexions FTP',
- mqttConnections: 'Connexions MQTT',
- },
- toast: {
- updated: 'Réglages virtuels mis à jour',
- failedToUpdate: 'Échec mise à jour',
- accessCodeRequired: 'Code d\'accès requis',
- targetPrinterRequired: 'Imprimante cible requise',
- accessCodeEmpty: 'Le code ne peut pas être vide',
- accessCodeLength: 'Le code doit faire 8 caractères',
- },
- },
- // Model Viewer
- modelViewer: {
- openInSlicer: 'Ouvrir dans le Slicer',
- tabs: {
- model: 'Modèle 3D',
- gcode: 'Aperçu G-code',
- },
- notAvailable: 'indisponible',
- notSliced: 'pas découpé',
- plates: 'Plateaux',
- allPlates: 'Tous les plateaux',
- plateNumber: 'Plateau {{number}}',
- plateCount: '{{count}} plateau',
- plateCount_other: '{{count}} plateaux',
- objectCount: '{{count}} objet',
- objectCount_other: '{{count}} objets',
- filamentCount: '{{count}} filament',
- filamentCount_other: '{{count}} filaments',
- eta: 'Fin {{minutes}} min',
- noPreview: 'Aucun aperçu pour ce fichier',
- pagination: {
- pageOf: 'Page {{current}} sur {{total}}',
- prev: 'Préc',
- next: 'Suiv',
- },
- errors: {
- failedToLoad: 'Échec chargement fichier',
- noMeshes: 'Aucun maillage trouvé dans le 3MF',
- unsupportedFormat: 'Format non supporté',
- },
- },
- // Maintenance type descriptions (built-in)
- maintenanceDescriptions: {
- lubricateCarbonRods: 'Appliquer du lubrifiant sur les tiges carbone pour un mouvement fluide',
- lubricateRails: 'Appliquer du lubrifiant sur les rails linéaires',
- cleanNozzle: 'Nettoyer buse et hotend anti-bouchage',
- checkBelts: 'Tension des courroies pour la précision',
- cleanBuildPlate: 'Nettoyage plateau pour l\'adhésion',
- checkExtruder: 'Usure des engrenages de l\'extrudeur',
- checkCooling: 'Bon fonctionnement des ventilateurs',
- generalInspection: 'Inspection générale de la machine',
- cleanCarbonRods: 'Nettoyer les tiges carbone (friction)',
- cleanLinearRails: 'Essuyer les rails linéaires (poussière/débris)',
- checkPtfeTube: 'Usure ou dommage du tube PTFE',
- replaceHepaFilter: 'Filtre HEPA pour la qualité de l\'air',
- replaceCarbonFilter: 'Filtre charbon actif (odeurs)',
- lubricateLeftNozzleRail: 'Lubrifier le rail de buse gauche (Série H2)',
- },
- // Smart Plugs
- smartPlugs: {
- offline: 'Hors ligne',
- admin: 'Admin',
- openPlugAdminPage: 'Page admin de la prise',
- deleteSmartPlug: 'Supprimer la prise',
- turnOnSmartPlug: 'Allumer la prise',
- turnOffSmartPlug: 'Éteindre la prise',
- turnOn: 'Allumer',
- turnOff: 'Éteindre',
- addSmartPlug: {
- scanningNetwork: 'Scan réseau...',
- chooseEntity: 'Choisir une entité...',
- connectionFailed: 'Échec connexion',
- searchEntities: 'Chercher entités...',
- searchPowerSensors: 'Capteurs puissance...',
- searchEnergySensors: 'Capteurs énergie...',
- placeholders: {
- plugName: 'Prise Salon',
- mqttStateOnValue: 'ON, true, 1',
- mqttSameAsPower: 'Identique au topic puissance, ou différent',
- },
- },
- },
- // Rich Text Editor
- richTextEditor: {
- bold: 'Gras',
- italic: 'Italique',
- underline: 'Souligné',
- bulletList: 'Liste à puces',
- numberedList: 'Liste numérotée',
- alignLeft: 'Aligner à gauche',
- alignCenter: 'Centrer',
- alignRight: 'Aligner à droite',
- addLink: 'Ajouter lien',
- removeLink: 'Retirer lien',
- },
- // External Links
- externalLinks: {
- noLinksConfigured: 'Aucun lien externe configuré',
- deleteLink: 'Supprimer lien',
- removeCustomIcon: 'Retirer icône personnalisée',
- openInNewTab: 'Ouvrir dans un nouvel onglet',
- placeholders: {
- linkName: 'Mon Lien',
- },
- },
- // Keyboard Shortcuts Modal
- keyboardShortcuts: {
- title: 'Raccourcis Clavier',
- navigation: 'Navigation',
- archivesSection: 'Archives',
- kProfilesSection: 'K-Profiles',
- generalSection: 'Général',
- shortcuts: {
- goToPrinters: 'Aller aux Imprimantes',
- goToArchives: 'Aller aux Archives',
- goToQueue: 'Aller à la File',
- goToStats: 'Aller aux Stats',
- goToProfiles: 'Aller aux Profils Cloud',
- goToSettings: 'Aller aux Paramètres',
- focusSearch: 'Focus recherche',
- openUploadModal: 'Ouvrir téléversement',
- clearSelection: 'Tout déselectionner',
- contextMenu: 'Menu contextuel (cartes)',
- refreshProfiles: 'Rafraîchir profils',
- newProfile: 'Nouveau profil',
- exitSelectionMode: 'Quitter mode sélection',
- showHelp: 'Afficher cette aide',
- },
- footer: 'Échap ou clic extérieur pour fermer',
- },
- // Notification Log
- notificationLog: {
- title: 'Journal de Notification',
- events: {
- printStarted: 'Début impression',
- printComplete: 'Fin impression',
- printFailed: 'Échec impression',
- printStopped: 'Arrêt impression',
- progress: 'Progression',
- printerOffline: 'Hors ligne',
- printerError: 'Erreur',
- lowFilament: 'Filament bas',
- maintenanceDue: 'Maintenance',
- test: 'Test',
- },
- timeAgo: {
- justNow: 'À l\'instant',
- minutesAgo: 'Il y a {{minutes}}m',
- hoursAgo: 'Il y a {{hours}}h',
- },
- },
- // Restore/Backup Modal
- restoreBackup: {
- title: 'Restaurer Sauvegarde',
- restoring: 'Restauration...',
- restoreComplete: 'Restauration terminée',
- restoreFailed: 'Échec restauration',
- importSettings: 'Importer les réglages d\'un fichier',
- pleaseWait: 'Patientez pendant la restauration',
- clickToSelect: 'Fichier .json ou .zip',
- howDuplicateHandling: 'Gestion des doublons :',
- categories: {
- printers: 'Imprimantes',
- smartPlugs: 'Prises',
- notificationProviders: 'Fournisseurs',
- filaments: 'Filaments',
- archives: 'Archives',
- pendingUploads: 'Téléversements en attente',
- settingsTemplates: 'Réglages & Modèles',
- },
- matchingInfo: {
- printers: 'par numéro de série',
- smartPlugs: 'par adresse IP',
- notificationProviders: 'par nom',
- filaments: 'par nom+type+marque',
- archives: 'par empreinte numérique (hash)',
- pendingUploads: 'par nom de fichier',
- settingsTemplates: 'toujours écrasés',
- },
- replaceExisting: 'Remplacer existant',
- keepExisting: 'Garder existant',
- replaceDescription: 'Écrase les doublons avec la sauvegarde',
- keepDescription: 'Ne restaure que les éléments absents',
- caution: 'Attention :',
- cautionText: 'L\'écrasement remplacera vos réglages. Les codes d\'accès imprimantes sont exclus par sécurité.',
- itemsRestored: 'Éléments restaurés',
- itemsSkipped: 'Éléments ignorés',
- restored: 'Restaurés',
- skipped: 'Ignorés (déjà présents)',
- filesLabel: 'Fichiers (3MF, vignettes, etc.)',
- newApiKeysGenerated: 'Nouvelles clés API générées',
- newApiKeysWarning: 'Copiées maintenant, elles ne seront plus visibles !',
- processingBackup: 'Traitement du fichier...',
- noDataFound: 'Aucune donnée trouvée dans le fichier.',
- failedToRestore: 'Échec restaure. Vérifiez le format.',
- },
- // Backup Export Modal
- backupExport: {
- title: 'Exporter Sauvegarde',
- selectData: 'Données à inclure',
- selectAll: 'Tout sélectionner',
- selectNone: 'Ne rien sélectionner',
- categoryDescriptions: {
- settings: 'Langue, thèmes, préférences',
- notifications: 'ntfy, Pushover, Discord, etc.',
- templates: 'Modèles de messages personnalisés',
- smartPlugs: 'Configuration des prises Tasmota',
- externalLinks: 'Liens externes de la barre latérale',
- printers: 'Infos imprimantes (codes d\'accès exclus par défaut)',
- plateDetection: 'Images références des plateaux vides',
- filaments: 'Types et coûts filaments',
- maintenance: 'Plannings de maintenance personnalisés',
- archives: 'Données impressions + fichiers (3MF, vignettes, etc.)',
- projects: 'Projets, BOM, pièces jointes',
- pendingUploads: 'En attente revue virtuelle',
- apiKeys: 'Clés Webhook (nouvelles clés générées à l\'import)',
- },
- requiresPrinters: 'Nécessite sélection des imprimantes',
- zipFileWarning: 'Fichier ZIP créé.',
- zipFileDescription: 'Contient tous les médias. Peut être volumineux.',
- includeAccessCodes: 'Inclure Codes d\'accès',
- includeAccessCodesDescription: 'Pour migrer vers une autre machine',
- includeAccessCodesWarning: 'Codes en texte clair. Sécurisez ce fichier !',
- categoriesSelected: '{{selectedCount}} catégories choisies',
- },
- // Pending Uploads Panel
- pendingUploads: {
- placeholders: {
- notes: 'Notes sur l\'impression...',
- },
- discardUpload: 'Rejeter',
- archiveAllUploads: 'Tout archiver',
- discardAllUploads: 'Tout rejeter',
- archive: 'Archiver',
- timeAgo: {
- justNow: 'À l\'instant',
- minutesAgo: 'Il y a {{minutes}}m',
- hoursAgo: 'Il y a {{hours}}h',
- daysAgo: 'Il y a {{days}}j',
- },
- },
- // API Browser
- apiBrowser: {
- placeholders: {
- requestBody: 'Corps JSON...',
- searchEndpoints: 'Chercher endpoints...',
- },
- },
- // Configure AMS Slot Modal
- configureAmsSlot: {
- searchPresets: 'Chercher presets...',
- colorPlaceholder: 'Nom couleur ou hex (ex: brown, FF8800)',
- clearCustomColor: 'Effacer couleur perso',
- noCloudPresets: 'Profils Cloud absents. Connectez-vous.',
- noMatchingPresets: 'Aucun profil trouvé.',
- custom: 'Perso',
- builtin: 'Inclus',
- settingsSentToPrinter: 'Réglages envoyés',
- filamentProfile: 'Profil Filament',
- },
- // GitHub Backup Settings
- githubBackup: {
- title: 'Sauvegarde GitHub',
- history: 'Historique',
- downloadBackup: 'Télécharger',
- restoreBackup: 'Restaurer',
- noBackupsYet: 'Aucune sauvegarde',
- },
- // Email Settings
- emailSettings: {
- placeholders: {
- fromName: 'BamBuddy',
- },
- },
- // Tag Management Modal
- tagManagement: {
- searchTags: 'Chercher tags...',
- renameTag: 'Renommer tag',
- deleteTag: 'Supprimer tag',
- },
- // Notification Template Editor
- notificationTemplates: {
- placeholders: {
- title: 'Titre notification...',
- body: 'Message notification...',
- },
- },
- // Batch Tag Modal
- batchTag: {
- placeholders: {
- newTag: 'Nouveau tag...',
- },
- },
- // Photo Gallery Modal
- photoGallery: {
- deletePhoto: 'Supprimer photo',
- },
- // Filament Hover Card
- filamentHoverCard: {
- copySpoolUuid: 'Copier UUID bobine',
- },
- // K Profiles View
- kProfilesView: {
- hasNote: 'A une note',
- copyProfile: 'Copier profil',
- },
- // Layout/Navigation
- layout: {
- openMenu: 'Ouvrir menu',
- noPermissionSystemInfo: 'Pas d\'autorisation système',
- },
- // Dashboard
- dashboard: {
- dragToReorder: 'Glisser pour réorganiser',
- hideWidget: 'Masquer widget',
- },
- // Notification Provider Card
- notificationProviderCard: {
- deleteNotificationProvider: 'Supprimer fournisseur',
- },
- // File Manager Modal
- fileManagerModal: {
- closeFileManager: 'Fermer gestionnaire',
- sortFiles: 'Trier fichiers',
- goToParentFolder: 'Dossier parent',
- threeView: 'Vue 3D',
- },
- // Embedded Camera Viewer
- embeddedCameraViewer: {
- refreshStream: 'Actualiser flux',
- close: 'Fermer',
- zoomOut: 'Zoom -',
- resetZoom: 'Reset zoom',
- zoomIn: 'Zoom +',
- dragToResize: 'Glisser pour dimension',
- },
- // Timelapse Viewer
- timelapseViewer: {
- skipBack5s: '-5s',
- skipForward5s: '+5s',
- },
- // Notification Providers
- notificationProviders: {
- descriptions: {
- email: 'Notifications par email SMTP',
- telegram: 'Via bot Telegram',
- discord: 'Via webhook Discord',
- ntfy: 'Push auto-hébergé (ntfy)',
- pushover: 'Push fiable (Pushover)',
- callmebot: 'WhatsApp gratuit via CallMeBot',
- webhook: 'Requête HTTP POST personnalisée',
- },
- },
- // Log Viewer
- logViewer: {
- searchPlaceholder: 'Message ou nom...',
- noLogEntries: 'Aucune entrée journal',
- },
- // Switchbar Popover
- switchbarPopover: {
- noSwitchesInSwitchbar: 'Aucun interrupteur',
- },
- // Project Page Modal
- projectPageModal: {
- placeholders: {
- title: 'Titre',
- designer: 'Designer',
- license: 'Licence',
- description: 'Description...',
- profileTitle: 'Titre du profil',
- profileDescription: 'Description du profil...',
- },
- },
- // Spoolman Settings
- spoolmanSettings: {},
- };
|