| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483 |
- 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',
- tomorrow: 'Demain',
- 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',
- extL: 'Ext-L',
- extR: 'Ext-R',
- 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',
- logView: 'Journal d\'impression',
- 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',
- noFileForReprint: 'Aucun fichier 3MF disponible — le fichier n\'a pas pu être téléchargé depuis l\'imprimante lors de l\'enregistrement',
- 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',
- },
- log: {
- date: 'Date',
- printName: 'Nom de l\'impression',
- printer: 'Imprimante',
- user: 'Utilisateur',
- status: 'Statut',
- duration: 'Durée',
- filament: 'Filament',
- allPrinters: 'Toutes les imprimantes',
- allUsers: 'Tous les utilisateurs',
- allStatuses: 'Tous les statuts',
- cancelled: 'Annulé',
- skipped: 'Ignoré',
- dateFrom: 'Du',
- dateTo: 'Au',
- noEntries: 'Aucune entrée de journal trouvée',
- showing: '{{count}} sur {{total}} entrées',
- rowsPerPage: 'Lignes',
- page: 'Page',
- prev: 'Préc.',
- next: 'Suiv.',
- clearLog: 'Effacer le journal',
- clearLogTitle: 'Effacer le journal d\'impression',
- clearLogConfirm: 'Toutes les entrées du journal d\'impression seront supprimées définitivement. Les archives et les éléments de file d\'attente ne sont pas affectés. Cette action est irréversible. Êtes-vous sûr ?',
- clearLogButton: 'Tout effacer',
- cleared: '{{count}} entrées de journal effacées',
- clearFailed: 'Échec de l\'effacement du journal d\'impression',
- },
- },
- // 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',
- plateNumber: 'Plateau {{index}}',
- // 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é',
- totalWeight: 'Poids 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',
- },
- },
- backgroundDispatch: {
- unknownFile: 'Unknown file',
- unknownPrinter: 'Unknown printer',
- startingPrints: 'Starting prints',
- progressSummary: '{{complete}}/{{total}} complete • Dispatched: {{dispatched}} • Processing: {{processing}}',
- expandDetails: 'Expand dispatch details',
- collapseDetails: 'Collapse dispatch details',
- dismissToast: 'Dismiss dispatch toast',
- cancelDispatchJob: 'Cancel dispatch job',
- cancel: 'Cancel',
- cancelling: 'Cancelling…',
- status: {
- dispatched: 'Dispatched',
- processing: 'Processing',
- completed: 'Completed',
- failed: 'Failed',
- cancelled: 'Cancelled',
- },
- toast: {
- cancellingUpload: 'Cancelling upload...',
- cancelled: 'Dispatch cancelled',
- cancelFailed: 'Failed to cancel dispatch',
- completeWithFailures: 'Background dispatch complete: {{completed}} succeeded, {{failed}} failed',
- completeSuccess: 'Background dispatch complete: {{completed}} succeeded',
- },
- },
- // 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',
- bedCooledThreshold: 'Seuil de refroidissement du plateau',
- bedCooledThresholdDescription: 'Température en dessous de laquelle le plateau est considéré comme refroidi',
- 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.',
- 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',
- builtInFeatureThirdParty: 'Les bobines tierces peuvent être assignées aux bobines d\'inventaire',
- amsSyncButton: 'Synchroniser les poids depuis l\'AMS',
- amsSyncTitle: 'Synchroniser les poids des bobines depuis l\'AMS',
- amsSyncMessage: 'Tous les poids des bobines de l\'inventaire seront écrasés par les valeurs actuelles de l\'AMS des imprimantes connectées. Utilisez ceci pour récupérer des données de poids corrompues. Les imprimantes doivent être en ligne.',
- amsSyncing: 'Synchronisation...',
- amsSyncSuccess: '{{synced}} bobine(s) synchronisée(s), {{skipped}} ignorée(s)',
- amsSyncError: 'Échec de la synchronisation des poids depuis l\'AMS',
- // 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',
- includeBetaUpdates: 'Inclure les versions bêta',
- includeBetaUpdatesDesc: 'Notifier des versions bêta et préliminaires lors de la vérification des mises à jour',
- // 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',
- storageUsage: 'Utilisation du stockage',
- storageUsageDescription: 'Répartition de l\'utilisation des données par catégorie',
- storageUsageTotal: 'Total',
- storageUsageErrors: 'Erreurs',
- storageUsageOtherBreakdown: 'Autre (inclut ressources statiques, scripts et fichiers de configuration)',
- storageUsageSystem: 'Système',
- storageUsageData: 'Données',
- storageUsageUnavailable: 'Informations d\'utilisation du stockage non disponibles',
- 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.',
- clearErrors: 'Effacer les erreurs',
- clearSuccess: 'Erreurs HMS effacées',
- clearFailed: 'Échec de l\'effacement des erreurs HMS',
- },
- // 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',
- },
- editor: {
- title: 'Modifier le groupe',
- createTitle: 'Créer un groupe',
- search: 'Rechercher des permissions...',
- selectAll: 'Tout sélectionner',
- clearAll: 'Tout désélectionner',
- permissionsSelected: '{{count}} sélectionnée(s)',
- noResults: 'Aucune permission ne correspond à votre recherche',
- },
- },
- // 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',
- 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é',
- costPerKg: 'Coût par kg',
- 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',
- 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 ?',
- archiveConfirm: 'Voulez-vous vraiment archiver 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',
- used: 'utilisé',
- remainingUnit: 'restant',
- },
- // Print modal
- printModal: {
- title: 'Lancer l\'impression',
- selectPrinter: 'Choisir l\'imprimante',
- selectPlate: 'Choisir le plateau',
- filamentMapping: 'Mapping Filament',
- totalCost: 'Coût total :',
- 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',
- },
- // 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.',
- },
- bindIp: {
- title: 'Interface réseau',
- placeholder: 'Sélectionner interface...',
- hint: 'Interface réseau sur laquelle cette imprimante virtuelle écoute. Doit être unique par imprimante.',
- },
- proxy: {
- accessCodeHint: 'En mode proxy, utilisez le code d\'accès de l\'imprimante cible dans le slicer. La connexion est transmise de manière transparente à l\'imprimante réelle.',
- },
- 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',
- step1: 'Sur le même LAN, les imprimantes virtuelles apparaissent automatiquement dans votre slicer (Bambu Studio / OrcaSlicer). Depuis d\'autres réseaux, ajoutez-les manuellement par adresse IP et code d\'accès.',
- step2: 'En mode Archive, Revue et File d\'attente, utilisez le bouton "Envoyer" dans votre slicer pour envoyer des fichiers 3MF à Bambuddy. Le slicer affichera "Impression réussie" — le fichier est stocké, pas imprimé.',
- step3: 'En mode Proxy, l\'imprimante virtuelle relaie tout le trafic vers une vraie imprimante — les impressions démarrent immédiatement comme en connexion directe.',
- },
- 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: {
- title: 'Configurer le slot AMS',
- slotConfigured: 'Slot configuré !',
- configuringSlot: 'Configuration du slot :',
- slotLabel: '{{ams}} Slot {{slot}}',
- searchPresets: 'Chercher presets...',
- colorPlaceholder: 'Nom couleur ou hex (ex: brown, FF8800)',
- clearCustomColor: 'Effacer couleur perso',
- noCloudPresets: 'Profils Cloud absents. Connectez-vous.',
- noPresetsAvailable: 'Aucun preset disponible. Connectez-vous à Bambu Cloud ou importez des profils locaux.',
- noMatchingPresets: 'Aucun profil trouvé.',
- custom: 'Perso',
- builtin: 'Inclus',
- settingsSentToPrinter: 'Réglages envoyés',
- filamentProfile: 'Profil Filament',
- kProfileLabel: 'Profil K (Pressure Advance)',
- filteringFor: 'Filtrage pour : {{material}}',
- noKProfile: 'Pas de profil K (utiliser défaut 0.020)',
- noMatchingKProfiles: 'Aucun profil K trouvé. K=0.020 par défaut sera utilisé.',
- selectFilamentFirst: 'Sélectionnez d\'abord un profil filament',
- kFromCalibration: 'K={{value}} de la calibration imprimante',
- customColorLabel: 'Couleur personnalisée (optionnel)',
- presetColors: 'Couleurs {{name}} :',
- showLessColors: 'Moins de couleurs',
- showMoreColors: 'Plus de couleurs',
- clear: 'Effacer',
- hexLabel: 'Hex : #{{hex}}',
- resetting: 'Réinitialisation...',
- resetSlot: 'Réinitialiser le slot',
- cancel: 'Annuler',
- configuring: 'Configuration...',
- configureSlot: 'Configurer le slot',
- },
- // 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: {},
- // Time
- time: {
- unknown: '-',
- waiting: 'En attente',
- justNow: 'À l\'instant',
- now: 'Maintenant',
- minsAgo: 'il y a {{count}}m',
- inMins: 'dans {{count}}m',
- hoursAgo: 'il y a {{count}}h',
- inHours: 'dans {{count}}h',
- daysAgo: 'il y a {{count}}j',
- inDays: 'dans {{count}}j',
- },
- };
|