de.ts 241 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482
  1. export default {
  2. // Navigation
  3. nav: {
  4. printers: 'Drucker',
  5. archives: 'Archiv',
  6. queue: 'Warteschlange',
  7. stats: 'Statistiken',
  8. profiles: 'Profile',
  9. maintenance: 'Wartung',
  10. projects: 'Projekte',
  11. inventory: 'Filament',
  12. files: 'Dateimanager',
  13. makerworld: 'MakerWorld',
  14. notifications: 'Benachrichtigungen',
  15. settings: 'Einstellungen',
  16. system: 'System',
  17. collapseSidebar: 'Seitenleiste einklappen',
  18. expandSidebar: 'Seitenleiste ausklappen',
  19. update: 'Update',
  20. updateAvailable: 'Update verfügbar: v{{version}}',
  21. updateAvailableBanner: 'Version {{version}} ist verfügbar!',
  22. viewUpdate: 'Update anzeigen',
  23. viewOnGithub: 'Auf GitHub ansehen',
  24. keyboardShortcuts: 'Tastaturkürzel (?)',
  25. switchToLight: 'Zum hellen Modus wechseln',
  26. switchToDark: 'Zum dunklen Modus wechseln',
  27. smartSwitches: 'Smart Switches',
  28. logout: 'Abmelden',
  29. },
  30. // Common
  31. common: {
  32. save: 'Speichern',
  33. saving: 'Speichern...',
  34. cancel: 'Abbrechen',
  35. delete: 'Löschen',
  36. edit: 'Bearbeiten',
  37. add: 'Hinzufügen',
  38. close: 'Schließen',
  39. confirm: 'Bestätigen',
  40. loading: 'Lädt...',
  41. error: 'Fehler',
  42. success: 'Erfolg',
  43. warning: 'Warnung',
  44. enabled: 'Aktiviert',
  45. disabled: 'Deaktiviert',
  46. yes: 'Ja',
  47. no: 'Nein',
  48. on: 'An',
  49. off: 'Aus',
  50. all: 'Alle',
  51. none: 'Keine',
  52. search: 'Suchen',
  53. filter: 'Filtern',
  54. sort: 'Sortieren',
  55. refresh: 'Aktualisieren',
  56. download: 'Herunterladen',
  57. upload: 'Hochladen',
  58. uploading: 'Hochladen...',
  59. uploadFailed: 'Hochladen fehlgeschlagen',
  60. actions: 'Aktionen',
  61. status: 'Status',
  62. name: 'Name',
  63. description: 'Beschreibung',
  64. date: 'Datum',
  65. time: 'Zeit',
  66. hours: 'Stunden',
  67. minutes: 'Minuten',
  68. seconds: 'Sekunden',
  69. days: 'Tage',
  70. enable: 'Aktivieren',
  71. disable: 'Deaktivieren',
  72. permissions: 'Berechtigungen',
  73. noPrinters: 'Keine Drucker konfiguriert',
  74. noData: 'Keine Daten verfügbar',
  75. linkNotFound: 'Link nicht gefunden',
  76. required: 'Erforderlich',
  77. optional: 'Optional',
  78. dismiss: 'Schließen',
  79. apply: 'Anwenden',
  80. reset: 'Zurücksetzen',
  81. export: 'Exportieren',
  82. import: 'Importieren',
  83. clear: 'Leeren',
  84. selectAll: 'Alle auswählen',
  85. deselectAll: 'Auswahl aufheben',
  86. noChange: '— Keine Änderung —',
  87. unchanged: 'Unverändert',
  88. unassigned: 'Nicht zugewiesen',
  89. unknown: 'Unbekannt',
  90. unknownError: 'Unbekannter Fehler',
  91. today: 'Heute',
  92. tomorrow: 'Morgen',
  93. asap: 'Sofort',
  94. overdue: 'Überfällig',
  95. now: 'Jetzt',
  96. collapse: 'Einklappen',
  97. expand: 'Ausklappen',
  98. viewArchive: 'Archiv anzeigen',
  99. viewInFileManager: 'Im Dateimanager anzeigen',
  100. addedBy: 'Hinzugefügt von {{username}}',
  101. prints: 'Drucke',
  102. more: '+{{count}} weitere',
  103. ascending: 'Aufsteigend',
  104. descending: 'Absteigend',
  105. back: 'Zurück',
  106. copy: 'Kopieren',
  107. copied: 'Kopiert!',
  108. printer: 'Drucker',
  109. remove: 'Entfernen',
  110. type: 'Typ',
  111. print: 'Drucken',
  112. rename: 'Umbenennen',
  113. move: 'Verschieben',
  114. create: 'Erstellen',
  115. duplicate: 'Duplizieren',
  116. left: 'Links',
  117. right: 'Rechts',
  118. },
  119. // Printers page
  120. printers: {
  121. title: 'Drucker',
  122. addPrinter: 'Drucker hinzufügen',
  123. editPrinter: 'Drucker bearbeiten',
  124. deletePrinter: 'Drucker löschen',
  125. printerName: 'Druckername',
  126. serialNumber: 'Seriennummer',
  127. ipAddress: 'IP-Adresse / Hostname',
  128. accessCode: 'Zugangscode',
  129. model: 'Modell',
  130. nozzleCount: 'Düsenanzahl',
  131. autoArchive: 'Automatische Archivierung',
  132. status: {
  133. available: 'Verfügbar',
  134. idle: 'Bereit',
  135. printing: 'Druckt',
  136. paused: 'Pausiert',
  137. offline: 'Offline',
  138. problem: 'Problem',
  139. error: 'Fehler',
  140. finished: 'Fertig',
  141. unknown: 'Unbekannt',
  142. },
  143. temperatures: {
  144. nozzle: 'Düse',
  145. bed: 'Druckbett',
  146. chamber: 'Kammer',
  147. },
  148. progress: '{{percent}}% abgeschlossen',
  149. timeRemaining: 'Noch {{time}}',
  150. deleteConfirm: 'Möchten Sie "{{name}}" wirklich löschen?',
  151. maintenanceOk: 'Wartung OK',
  152. maintenanceWarning: '{{count}} Warnung',
  153. maintenanceWarning_plural: '{{count}} Warnungen',
  154. maintenanceDue: '{{count}} fällig',
  155. maintenanceDue_plural: '{{count}} fällig',
  156. // Sort options
  157. sort: {
  158. name: 'Name',
  159. status: 'Status',
  160. model: 'Modell',
  161. location: 'Standort',
  162. ascending: 'Aufsteigend sortieren',
  163. descending: 'Absteigend sortieren',
  164. },
  165. // Card size
  166. cardSize: {
  167. small: 'Kleine Karten',
  168. medium: 'Mittlere Karten',
  169. large: 'Große Karten',
  170. extraLarge: 'Extra große Karten',
  171. },
  172. // Controls
  173. hideOffline: 'Offline ausblenden',
  174. nextAvailable: 'Nächster verfügbar',
  175. powerOn: 'Einschalten',
  176. offlinePrintersWithPlugs: 'Offline-Drucker mit Smart-Plugs',
  177. noPrintersConfigured: 'Noch keine Drucker konfiguriert',
  178. search: 'Drucker suchen...',
  179. noSearchResults: 'Keine Drucker entsprechen deiner Suche oder deinen Filtern',
  180. filter: {
  181. allStatuses: 'Alle Status',
  182. allLocations: 'Alle Standorte',
  183. },
  184. // Printer card
  185. readyToPrint: 'Druckbereit',
  186. external: 'Extern',
  187. extL: 'Ext-L',
  188. extR: 'Ext-R',
  189. deleteArchives: 'Druckarchive löschen',
  190. noLabel: 'Keine Bezeichnung',
  191. printPreview: 'Druckvorschau',
  192. width: 'Breite',
  193. height: 'Höhe',
  194. noObjectsFound: 'Keine Objekte gefunden',
  195. objectsLoadedOnPrintStart: 'Objekte werden beim Druckstart geladen',
  196. willBeSkipped: 'Wird übersprungen',
  197. name: 'Name',
  198. serialCannotBeChanged: 'Seriennummer kann nicht geändert werden',
  199. locationHelp: 'Dient zur Gruppierung von Druckern und zum Filtern von Warteschlangenaufträgen',
  200. // WiFi signal strength
  201. wifiSignal: {
  202. veryWeak: 'Sehr schwach',
  203. weak: 'Schwach',
  204. fair: 'Ausreichend',
  205. good: 'Gut',
  206. excellent: 'Ausgezeichnet',
  207. },
  208. // Maintenance
  209. maintenanceUpToDate: 'Alle Wartungen aktuell - Klicken zum Anzeigen',
  210. // Chamber light
  211. chamberLightOn: 'Kammerbeleuchtung einschalten',
  212. chamberLightOff: 'Kammerbeleuchtung ausschalten',
  213. // Files
  214. files: 'Dateien',
  215. browseFiles: 'Druckerdateien durchsuchen',
  216. // Smart plug
  217. autoOffAfterPrint: 'Automatisches Ausschalten nach Druck',
  218. autoOffExecuted: 'Auto-off wurde ausgeführt - Drucker einschalten zum Zurücksetzen',
  219. // HMS errors
  220. hmsErrors: 'HMS-Fehler',
  221. viewHmsErrors: '{{count}} HMS-Fehler anzeigen',
  222. // Actions
  223. resume: 'Fortsetzen',
  224. pause: 'Pausieren',
  225. stop: 'Stoppen',
  226. camera: 'Kamera',
  227. skipObject: 'Objekt überspringen',
  228. reconnect: 'Neu verbinden',
  229. forceRefresh: 'Aktualisierung erzwingen',
  230. forceRefreshSuccess: 'Aktualisierung angefordert',
  231. mqttDebug: 'MQTT-Debug',
  232. printerInformation: 'Druckerinformationen',
  233. copyToClipboard: 'Kopieren',
  234. copied: 'Kopiert!',
  235. state: 'Zustand',
  236. wifiSignalLabel: 'WLAN-Signal',
  237. developerMode: 'Entwicklermodus',
  238. enabled: 'Aktiviert',
  239. disabled: 'Deaktiviert',
  240. addedOn: 'Hinzugefügt',
  241. sdCard: 'SD-Karte',
  242. inserted: 'Eingelegt',
  243. notInserted: 'Nicht eingelegt',
  244. totalPrintHours: 'Druckstunden',
  245. activeNozzle: 'Aktiv: {{nozzle}} Düse',
  246. nozzleRack: 'Düsenhalter',
  247. nozzleDocked: 'Angedockt',
  248. nozzleMounted: 'Montiert',
  249. nozzleActive: 'Aktiv',
  250. nozzleIdle: 'Inaktiv',
  251. nozzleDiameter: 'Durchmesser',
  252. nozzleType: 'Typ',
  253. nozzleStatus: 'Status',
  254. nozzleFilament: 'Filament',
  255. nozzleWear: 'Verschleiß',
  256. nozzleMaxTemp: 'Max Temp',
  257. nozzleSerial: 'Seriennr.',
  258. nozzleHardenedSteel: 'Gehärteter Stahl',
  259. nozzleStainlessSteel: 'Edelstahl',
  260. nozzleTungstenCarbide: 'Wolframkarbid',
  261. nozzleFlow: 'Durchfluss',
  262. nozzleHighFlow: 'High Flow',
  263. nozzleStandardFlow: 'Standard',
  264. // Firmware
  265. firmwareUpdate: 'Firmware-Update',
  266. firmwareInstructions: 'Gehen Sie auf dem Touchscreen des Druckers zu',
  267. firmwareNav: 'Navigieren Sie zu',
  268. settings: 'Einstellungen',
  269. firmware: 'Firmware',
  270. // Discovery
  271. discoverPrinters: 'Drucker entdecken',
  272. searching: 'Suche...',
  273. manualEntry: 'Manuelle Eingabe',
  274. addFromCloud: 'Aus Cloud hinzufügen',
  275. // Toast messages
  276. toast: {
  277. printerDeleted: 'Drucker gelöscht',
  278. missingSpoolAssignment: 'Druck gestartet auf {{printer}}. Fehlende Spulenzuordnung für: {{slots}}',
  279. printerAdded: 'Drucker hinzugefügt',
  280. printerUpdated: 'Drucker aktualisiert',
  281. failedToDelete: 'Drucker konnte nicht gelöscht werden',
  282. failedToAdd: 'Drucker konnte nicht hinzugefügt werden',
  283. failedToUpdate: 'Drucker konnte nicht aktualisiert werden',
  284. commandSent: 'Befehl gesendet',
  285. failedToSendCommand: 'Befehl konnte nicht gesendet werden',
  286. turnedOn: '{{name}} eingeschaltet',
  287. failedToPowerOn: '{{name}} konnte nicht eingeschaltet werden',
  288. scriptTriggered: 'Skript ausgelöst',
  289. printStopped: 'Druck gestoppt',
  290. printPaused: 'Druck pausiert',
  291. printResumed: 'Druck fortgesetzt',
  292. referenceDeleted: 'Referenz gelöscht',
  293. detectionAreaSaved: 'Erkennungsbereich gespeichert',
  294. failedToRunScript: 'Skript konnte nicht ausgeführt werden',
  295. failedToStopPrint: 'Druck konnte nicht gestoppt werden',
  296. failedToPausePrint: 'Druck konnte nicht pausiert werden',
  297. failedToResumePrint: 'Druck konnte nicht fortgesetzt werden',
  298. failedToControlChamberLight: 'Kammerbeleuchtung konnte nicht gesteuert werden',
  299. failedToSetSpeed: 'Druckgeschwindigkeit konnte nicht eingestellt werden',
  300. failedToUpdateSetting: 'Einstellung konnte nicht aktualisiert werden',
  301. failedToSkipObjects: 'Objekte konnten nicht übersprungen werden',
  302. failedToRereadRfid: 'RFID konnte nicht erneut gelesen werden',
  303. failedToCheckPlate: 'Platte konnte nicht überprüft werden',
  304. failedToUpdateLabel: 'Bezeichnung konnte nicht aktualisiert werden',
  305. failedToDeleteReference: 'Referenz konnte nicht gelöscht werden',
  306. failedToSaveDetectionArea: 'Erkennungsbereich konnte nicht gespeichert werden',
  307. plateCheckEnabled: 'Plattenprüfung aktiviert',
  308. plateCheckDisabled: 'Plattenprüfung deaktiviert',
  309. calibrationSaved: 'Kalibrierung gespeichert!',
  310. calibrationFailed: 'Kalibrierung fehlgeschlagen',
  311. rfidRereadInitiated: 'RFID-Neueinlesen gestartet',
  312. loadInitiated: 'Filament wird geladen…',
  313. unloadInitiated: 'Filament wird entladen…',
  314. failedToLoad: 'Filament konnte nicht geladen werden',
  315. failedToUnload: 'Filament konnte nicht entladen werden',
  316. },
  317. // Connection status
  318. connection: {
  319. connected: 'Verbunden',
  320. offline: 'Offline',
  321. },
  322. plateStatus: {
  323. markCleared: 'Platte als freigegeben markieren',
  324. cleared: 'Platte freigegeben',
  325. notCleared: 'Platte nicht freigegeben',
  326. inUse: 'Platte in Benutzung',
  327. },
  328. // Queue info
  329. queue: {
  330. inQueue: '{{count}} Druck in Warteschlange',
  331. inQueue_plural: '{{count}} Drucke in Warteschlange',
  332. },
  333. // Controls section
  334. controls: 'Steuerung',
  335. // RFID
  336. rfid: {
  337. reread: 'RFID neu lesen',
  338. },
  339. // AMS Laden/Entladen (#891)
  340. ams: {
  341. load: 'Laden',
  342. unload: 'Entladen',
  343. },
  344. bedJog: {
  345. title: 'Druckbett bewegen',
  346. bed: 'Bett',
  347. step: 'Schritt (mm)',
  348. up: 'Platte hoch',
  349. down: 'Platte runter',
  350. disabledWhilePrinting: 'Während des Drucks deaktiviert',
  351. notHomedTitle: 'Drucker ist nicht referenziert',
  352. notHomedMessage: 'Der Drucker wurde seit dem letzten Druck nicht referenziert. Führen Sie zuerst die automatische Referenzfahrt aus (parkt den Werkzeugkopf und referenziert dann X, Y und Z) oder bewegen Sie trotzdem — die Software-Endschalter werden dabei umgangen.',
  353. homeZ: 'Automatische Referenzfahrt',
  354. moveAnyway: 'Trotzdem bewegen',
  355. homingStarted: 'Drucker wird automatisch referenziert…',
  356. },
  357. // Permissions
  358. permission: {
  359. noAdd: 'Sie haben keine Berechtigung, Drucker hinzuzufügen',
  360. noEdit: 'Sie haben keine Berechtigung, Drucker zu bearbeiten',
  361. noDelete: 'Sie haben keine Berechtigung, Drucker zu löschen',
  362. noControl: 'Sie haben keine Berechtigung, Drucker zu steuern',
  363. noFiles: 'Sie haben keine Berechtigung, auf Druckerdateien zuzugreifen',
  364. noAmsRfid: 'Sie haben keine Berechtigung, AMS-RFID erneut zu lesen',
  365. noSmartPlugControl: 'Sie haben keine Berechtigung, Smart Plugs zu steuern',
  366. noCamera: 'Sie haben keine Berechtigung, Kameras anzuzeigen',
  367. },
  368. // Add/Edit modal
  369. modal: {
  370. addTitle: 'Drucker hinzufügen',
  371. editTitle: 'Drucker bearbeiten',
  372. myPrinter: 'Mein Drucker',
  373. selectModel: 'Modell auswählen...',
  374. locationGroup: 'Standort / Gruppe (optional)',
  375. locationPlaceholder: 'z.B. Werkstatt, Büro, Keller',
  376. autoArchiveLabel: 'Abgeschlossene Drucke automatisch archivieren',
  377. fromPrinterSettings: 'Aus Druckereinstellungen',
  378. modelOptional: 'Modell (optional)',
  379. saveChanges: 'Änderungen speichern',
  380. },
  381. // Skip objects
  382. skipObjects: {
  383. tooltip: 'Objekte überspringen',
  384. onlyWhilePrinting: 'Objekte überspringen (nur während des Drucks)',
  385. requiresMultiple: 'Objekte überspringen (erfordert 2+ Objekte)',
  386. title: 'Objekte überspringen',
  387. matchIdsInfo: 'IDs mit Drucker-Display abgleichen',
  388. printerShowsIds: 'Der Druckerbildschirm zeigt Objekt-IDs auf der Bauplatte',
  389. skipSelected: 'Ausgewählte überspringen',
  390. skipping: 'Überspringe...',
  391. noObjectsSelected: 'Keine Objekte ausgewählt',
  392. selectObjectsToSkip: 'Wählen Sie Objekte aus, die Sie vom aktuellen Druck überspringen möchten',
  393. skipped: 'übersprungen',
  394. objectsSkipped: 'Objekte übersprungen',
  395. activeCount: '{{count}} aktiv',
  396. waitForLayer: 'Warten Sie auf Schicht 2+ zum Überspringen von Objekten (aktuell Schicht {{layer}})',
  397. skip: 'Überspringen',
  398. confirmTitle: 'Objekt überspringen?',
  399. confirmMessage: 'Möchten Sie "{{name}}" wirklich überspringen? Dies kann nicht rückgängig gemacht werden.',
  400. },
  401. // Confirm modals
  402. confirm: {
  403. deleteTitle: 'Drucker löschen',
  404. deleteMessage: 'Möchten Sie "{{name}}" wirklich löschen? Alle Verbindungseinstellungen werden entfernt.',
  405. deleteArchivesNote: 'Der gesamte Druckverlauf für diesen Drucker wird dauerhaft gelöscht.',
  406. keepArchivesNote: 'Der Druckverlauf wird beibehalten, aber nicht mehr mit diesem Drucker verknüpft.',
  407. stopTitle: 'Druck stoppen',
  408. stopMessage: 'Möchten Sie den aktuellen Druck auf "{{name}}" wirklich stoppen? Der Druckauftrag wird abgebrochen.',
  409. stopButton: 'Druck stoppen',
  410. pauseTitle: 'Druck pausieren',
  411. pauseMessage: 'Möchten Sie den aktuellen Druck auf "{{name}}" wirklich pausieren?',
  412. pauseButton: 'Druck pausieren',
  413. resumeTitle: 'Druck fortsetzen',
  414. resumeMessage: 'Möchten Sie den Druck auf "{{name}}" fortsetzen?',
  415. resumeButton: 'Druck fortsetzen',
  416. powerOnTitle: 'Drucker einschalten',
  417. powerOnMessage: 'Möchten Sie die Stromversorgung für "{{name}}" wirklich EINSCHALTEN?',
  418. powerOnButton: 'Einschalten',
  419. powerOffTitle: 'Drucker ausschalten',
  420. powerOffMessage: 'Möchten Sie die Stromversorgung für "{{name}}" wirklich AUSSCHALTEN?',
  421. powerOffWarning: 'WARNUNG: "{{name}}" druckt gerade! Möchten Sie die Stromversorgung wirklich AUSSCHALTEN? Dies unterbricht den Druck und kann den Drucker beschädigen.',
  422. powerOffButton: 'Ausschalten',
  423. },
  424. // Bulk actions
  425. bulk: {
  426. select: 'Auswählen',
  427. selectAll: 'Alle auswählen',
  428. selectByLocation: 'Nach Standort auswählen',
  429. selected: '{{count}} ausgewählt',
  430. actions: {
  431. stop: 'Stoppen',
  432. pause: 'Pausieren',
  433. resume: 'Fortsetzen',
  434. clearPlate: 'Druckbett leeren',
  435. clearHMS: 'Benachrichtigungen löschen',
  436. },
  437. confirm: {
  438. stopTitle: '{{count}} Drucke stoppen',
  439. stopMessage: 'Dies wird aktive Drucke auf {{count}} Drucker(n) abbrechen. Diese Aktion kann nicht rückgängig gemacht werden.',
  440. stopButton: 'Alle stoppen',
  441. pauseTitle: '{{count}} Drucke pausieren',
  442. pauseMessage: 'Dies wird aktive Drucke auf {{count}} Drucker(n) pausieren.',
  443. pauseButton: 'Alle pausieren',
  444. clearPlateTitle: '{{count}} Druckbetten leeren',
  445. clearPlateMessage: 'Dies wird das Druckbett auf {{count}} Drucker(n) leeren und kann wartende Aufträge starten.',
  446. clearPlateButton: 'Alle leeren',
  447. },
  448. success: '{{action}} auf {{count}} Drucker(n) abgeschlossen',
  449. partial: '{{succeeded}} erfolgreich, {{failed}} fehlgeschlagen',
  450. noneApplicable: 'Keine ausgewählten Drucker sind im richtigen Zustand für diese Aktion',
  451. selectByState: 'Nach Status auswählen',
  452. },
  453. // Discovery
  454. discovery: {
  455. title: 'Drucker entdecken',
  456. searching: 'Suche...',
  457. scanning: 'Scanne...',
  458. scanProgress: 'Scanne... {{scanned}}/{{total}}',
  459. foundPrinters: '{{count}} Drucker gefunden',
  460. noPrintersFound: 'Keine Drucker gefunden',
  461. noPrintersFoundSubnet: 'Keine Drucker im angegebenen Subnetz gefunden.',
  462. noPrintersFoundNetwork: 'Keine Drucker im Netzwerk gefunden.',
  463. allConfigured: 'Alle erkannten Drucker sind bereits konfiguriert.',
  464. alreadyAdded: 'Bereits hinzugefügt',
  465. select: 'Auswählen',
  466. manualEntry: 'Manuelle Eingabe',
  467. addFromCloud: 'Aus Cloud hinzufügen',
  468. subnetToScan: 'Zu scannendes Subnetz',
  469. dockerNote: 'Docker erkannt. Geben Sie das Subnetz Ihres Druckers in CIDR-Notation ein. Erfordert network_mode: host in docker-compose.yml.',
  470. scanSubnet: 'Subnetz nach Druckern scannen',
  471. discoverNetwork: 'Drucker im Netzwerk suchen',
  472. scanningSubnet: 'Subnetz wird nach Bambu-Druckern gescannt...',
  473. scanningNetwork: 'Netzwerk wird gescannt...',
  474. serialRequired: 'Seriennummer erforderlich',
  475. unknown: 'Unbekannt',
  476. failedToStart: 'Erkennung konnte nicht gestartet werden',
  477. },
  478. // AMS Drying
  479. drying: {
  480. start: 'Trocknung starten',
  481. stop: 'Trocknung stoppen',
  482. temperature: 'Temperatur',
  483. duration: 'Dauer',
  484. hours: 'Stunden',
  485. timeRemaining: '{{time}} verbleibend',
  486. active: 'Trocknung',
  487. notSupported: 'Trocknung nicht unterstützt',
  488. powerRequired: 'AMS-Netzteil anschließen, um Trocknung zu aktivieren',
  489. startingDrying: 'Trocknung wird gestartet...',
  490. stoppingDrying: 'Trocknung wird gestoppt...',
  491. rotateTray: 'Spule während der Trocknung drehen',
  492. },
  493. // Filaments section
  494. filaments: 'Filamente',
  495. // Camera
  496. openCameraOverlay: 'Kamera-Overlay öffnen',
  497. openCameraWindow: 'Kamera in neuem Fenster öffnen',
  498. // Firmware
  499. firmwareUpdateAvailable: 'Firmware-Update verfügbar: {{current}} → {{latest}}',
  500. firmwareUpToDate: 'Firmware {{version}} — Aktuell',
  501. firmwareUpdateButton: 'Update',
  502. // Plate detection
  503. plateDetection: {
  504. noPermission: 'Sie haben keine Berechtigung, Drucker zu aktualisieren',
  505. enabledClick: 'Plattenprüfung aktiviert - Klicken zum Deaktivieren',
  506. disabledClick: 'Plattenprüfung deaktiviert - Klicken zum Aktivieren',
  507. manageCalibration: 'Platten-Erkennungskalibrierung verwalten',
  508. calibrationRequired: 'Kalibrierung erforderlich',
  509. calibrationInstructions: 'Bitte stellen Sie sicher, dass die Druckplatte <strong>vollständig leer</strong> ist, und klicken Sie dann auf Kalibrieren.',
  510. calibrationDescription: 'Die Kalibrierung erfasst ein Referenzbild der leeren Platte. Zukünftige Prüfungen vergleichen mit dieser Referenz, um Objekte zu erkennen.',
  511. calibrationTip: '<strong>Tipp:</strong> Sie können bis zu 5 Kalibrierungen für verschiedene Platten speichern. Das System verwendet automatisch die beste Übereinstimmung bei der Prüfung.',
  512. plateEmpty: 'Platte erscheint leer',
  513. objectsDetected: 'Objekte auf Platte erkannt',
  514. confidence: 'Konfidenz',
  515. difference: 'Differenz',
  516. analysisPreview: 'Analysevorschau:',
  517. analysisLegend: 'Grüner Rahmen = Erkennungsbereich, Rote Überlagerung = Unterschiede zur Kalibrierung',
  518. savedReferences: 'Gespeicherte Referenzen ({{count}}/{{max}})',
  519. deleteReference: 'Referenz löschen',
  520. labelPlaceholder: 'Bezeichnung...',
  521. clickToEdit: '{{label}} - Zum Bearbeiten klicken',
  522. clickToAddLabel: 'Zum Hinzufügen einer Bezeichnung klicken',
  523. },
  524. // Speed
  525. speed: {
  526. title: 'Druckgeschwindigkeit',
  527. silent: 'Leise (50%)',
  528. standard: 'Standard (100%)',
  529. sport: 'Sport (124%)',
  530. ludicrous: 'Ludicrous (166%)',
  531. },
  532. airduct: {
  533. title: 'Luftkanal-Modus',
  534. cooling: 'Kühlen',
  535. heating: 'Heizen',
  536. },
  537. noSdCard: 'Keine SD',
  538. door: {
  539. open: 'Offen',
  540. closed: 'Zu',
  541. },
  542. // Fans
  543. fans: {
  544. partCooling: 'Bauteilkühlung',
  545. auxiliary: 'Hilfsventilator',
  546. chamber: 'Kammerventilator',
  547. },
  548. // HMS errors
  549. clickToViewHmsErrors: 'Klicken, um HMS-Fehler anzuzeigen',
  550. estimatedCompletion: 'Geschätzte Fertigstellungszeit',
  551. plateNumber: 'Platte {{number}}',
  552. slotOptions: 'Slot-Optionen',
  553. // AMS hover popup
  554. amsPopup: {
  555. friendlyName: 'AMS-Name',
  556. friendlyNamePlaceholder: 'z. B. AMS-Anzeigename',
  557. serialNumber: 'Seriennummer',
  558. firmwareVersion: 'Firmware',
  559. save: 'Speichern',
  560. clear: 'Löschen',
  561. noEditPermission: 'Sie haben keine Berechtigung, AMS-Einheiten umzubenennen',
  562. },
  563. // Firmware modal
  564. firmwareModal: {
  565. title: 'Firmware-Update',
  566. titleUpToDate: 'Firmware-Info',
  567. currentVersion: 'Aktuell:',
  568. latestVersion: 'Neueste:',
  569. releaseNotes: 'Versionshinweise',
  570. checkingPrereqs: 'Prüfe Voraussetzungen...',
  571. sdCardReady: 'SD-Karte bereit. Klicken Sie unten, um die Firmware hochzuladen.',
  572. uploadedSuccess: 'Firmware auf SD-Karte hochgeladen!',
  573. applyInstructions: 'So wenden Sie das Update auf Ihrem Drucker an:',
  574. step1: 'Gehen Sie auf dem Touchscreen des Druckers zu <strong>Einstellungen</strong>',
  575. step2: 'Navigieren Sie zu <strong>Firmware</strong>',
  576. step3: 'Wählen Sie <strong>Update von SD-Karte</strong>',
  577. step4: 'Das Update dauert 10-20 Minuten',
  578. done: 'Fertig',
  579. starting: 'Starte...',
  580. uploadFirmware: 'Firmware hochladen',
  581. uploadFailed: 'Upload fehlgeschlagen: {{error}}',
  582. uploadedToast: 'Firmware hochgeladen! Starten Sie das Update vom Druckerbildschirm.',
  583. availableVersions: 'Verfügbare Versionen',
  584. usable: 'Installierbar',
  585. unavailable: 'Nicht verfügbar',
  586. installed: 'Installiert',
  587. newerBadge: 'neuer',
  588. olderBadge: 'älter',
  589. currentBadge: 'aktuell',
  590. },
  591. accessCodePlaceholder: 'Leer lassen, um den aktuellen zu behalten',
  592. // ROI editor
  593. roi: {
  594. title: 'Erkennungsbereich (ROI)',
  595. xStart: 'X-Start',
  596. yStart: 'Y-Start',
  597. width: 'Breite',
  598. height: 'Höhe',
  599. instruction: 'Passen Sie den Erkennungsbereich an, um sich auf die Druckplatte zu konzentrieren. Der grüne Rahmen in der Vorschau zeigt den aktuellen Bereich.',
  600. },
  601. developerModeWarning: 'Der Entwickler-LAN-Modus ist nicht aktiviert auf: {{names}}. Einige Funktionen funktionieren möglicherweise nicht.',
  602. howToEnable: 'Aktivieren',
  603. incompatibleFile: 'Diese Datei wurde für {{slicedFor}} geslicet, aber dieser Drucker ist ein {{printerModel}}',
  604. dropNotPrintable: 'Nur .gcode- und .gcode.3mf-Dateien können gedruckt werden',
  605. dropToPrint: 'Zum Drucken ablegen',
  606. cannotPrint: 'Drucker beschäftigt',
  607. },
  608. // Archives page
  609. archives: {
  610. title: 'Druckarchiv',
  611. searchPlaceholder: 'Archiv durchsuchen...',
  612. filterByPrinter: 'Nach Drucker filtern',
  613. filterByStatus: 'Nach Status filtern',
  614. sortBy: 'Sortieren nach',
  615. sortNewest: 'Neueste zuerst',
  616. sortOldest: 'Älteste zuerst',
  617. sortName: 'Name',
  618. sortDuration: 'Dauer',
  619. sortLargest: 'Größte zuerst',
  620. sortSmallest: 'Kleinste zuerst',
  621. sortSize: 'Größe',
  622. noArchives: 'Keine Archive gefunden',
  623. noArchivesSearch: 'Keine Archive entsprechen Ihrer Suche',
  624. originalPrintNotVisible: 'Ursprünglicher Druck nicht sichtbar - versuchen Sie, die Filter zu löschen',
  625. noArchivesYet: 'Noch keine Archive',
  626. prints: 'Drucke',
  627. pagination: {
  628. showing: 'Zeige',
  629. to: 'bis',
  630. of: 'von',
  631. show: 'Zeige',
  632. page: 'Seite',
  633. all: 'Alle',
  634. },
  635. loadingArchives: 'Lade Archive...',
  636. releaseToUpload: 'Loslassen zum Hochladen',
  637. showAll: 'Alle anzeigen',
  638. showFavoritesOnly: 'Nur Favoriten anzeigen',
  639. gridView: 'Rasteransicht',
  640. listView: 'Listenansicht',
  641. calendarView: 'Kalenderansicht',
  642. logView: 'Druckprotokoll',
  643. manageTags: 'Tags verwalten',
  644. showFailedPrints: 'Fehlgeschlagene Drucke anzeigen',
  645. hideFailedPrints: 'Fehlgeschlagene Drucke ausblenden',
  646. hideDuplicates: 'Duplikate ausblenden',
  647. viewOriginalPrint: 'Klicken, um den ursprünglichen Druck anzuzeigen (#{{id}})',
  648. printTime: 'Druckzeit',
  649. filamentUsed: 'Verbrauchtes Filament',
  650. cost: 'Kosten',
  651. reprint: 'Drucken',
  652. preview: 'Vorschau',
  653. deleteArchive: 'Archiv löschen',
  654. deleteConfirm: 'Möchten Sie dieses Archiv wirklich löschen?',
  655. favorite: 'Favorit',
  656. unfavorite: 'Aus Favoriten entfernen',
  657. viewDetails: 'Details anzeigen',
  658. status: {
  659. completed: 'Abgeschlossen',
  660. failed: 'Fehlgeschlagen',
  661. stopped: 'Gestoppt',
  662. },
  663. toast: {
  664. source3mfAttached: 'Quell-3MF angehängt: {{filename}}',
  665. failedUploadSource3mf: 'Fehler beim Hochladen der Quell-3MF',
  666. source3mfRemoved: 'Quell-3MF entfernt',
  667. failedRemoveSource3mf: 'Fehler beim Entfernen der Quell-3MF',
  668. f3dAttached: 'F3D angehängt: {{filename}}',
  669. failedUploadF3d: 'Fehler beim Hochladen der F3D',
  670. f3dRemoved: 'F3D entfernt',
  671. failedRemoveF3d: 'Fehler beim Entfernen der F3D',
  672. timelapseAttached: 'Zeitraffer angehängt: {{filename}}',
  673. timelapseAlreadyAttached: 'Zeitraffer bereits angehängt',
  674. noMatchingTimelapse: 'Kein passender Zeitraffer gefunden',
  675. failedScanTimelapse: 'Fehler beim Suchen nach Zeitraffer',
  676. failedAttachTimelapse: 'Fehler beim Anhängen des Zeitraffers',
  677. timelapseRemoved: 'Zeitraffer entfernt',
  678. failedRemoveTimelapse: 'Fehler beim Entfernen des Zeitraffers',
  679. timelapseUploaded: 'Zeitraffer hochgeladen: {{filename}}',
  680. failedUploadTimelapse: 'Fehler beim Hochladen des Zeitraffers',
  681. archiveDeleted: 'Archiv gelöscht',
  682. failedDeleteArchive: 'Fehler beim Löschen des Archivs',
  683. addedToFavorites: 'Zu Favoriten hinzugefügt',
  684. removedFromFavorites: 'Aus Favoriten entfernt',
  685. projectUpdated: 'Projekt aktualisiert',
  686. failedUpdateProject: 'Fehler beim Aktualisieren des Projekts',
  687. linkCopied: 'Link in die Zwischenablage kopiert',
  688. failedCopyLink: 'Fehler beim Kopieren des Links',
  689. photoDeleted: 'Foto gelöscht',
  690. failedDeletePhoto: 'Fehler beim Löschen des Fotos',
  691. failedDeleteArchives: 'Fehler beim Löschen der Archive',
  692. failedUpdateFavorites: 'Fehler beim Aktualisieren der Favoriten',
  693. exportDownloaded: 'Export heruntergeladen',
  694. exportFailed: 'Export fehlgeschlagen',
  695. },
  696. menu: {
  697. print: 'Drucken',
  698. schedule: 'Planen',
  699. openInBambuStudio: 'Im Slicer öffnen',
  700. slice: 'Slicen',
  701. externalLink: 'Externer Link',
  702. viewOnMakerWorld: 'Auf MakerWorld ansehen',
  703. preview3d: '3D-Vorschau',
  704. viewTimelapse: 'Zeitraffer ansehen',
  705. scanForTimelapse: 'Nach Zeitraffer suchen',
  706. uploadTimelapse: 'Zeitraffer hochladen',
  707. removeTimelapse: 'Zeitraffer entfernen',
  708. downloadSource3mf: 'Quell-3MF herunterladen',
  709. uploadSource3mf: 'Quell-3MF hochladen',
  710. replaceSource3mf: 'Quell-3MF ersetzen',
  711. removeSource3mf: 'Quell-3MF entfernen',
  712. uploadF3d: 'F3D hochladen',
  713. replaceF3d: 'F3D ersetzen',
  714. downloadF3d: 'F3D herunterladen',
  715. removeF3d: 'F3D entfernen',
  716. download: 'Herunterladen',
  717. copyDownloadLink: 'Download-Link kopieren',
  718. qrCode: 'QR-Code',
  719. viewPhotos: 'Fotos ansehen',
  720. viewPhotosCount: 'Fotos ansehen ({{count}})',
  721. projectPage: 'Projektseite',
  722. addToFavorites: 'Zu Favoriten hinzufügen',
  723. removeFromFavorites: 'Aus Favoriten entfernen',
  724. edit: 'Bearbeiten',
  725. goToProject: 'Zum Projekt: {{name}}',
  726. addToProject: 'Zu Projekt hinzufügen',
  727. removeFromProject: 'Aus Projekt entfernen',
  728. loading: 'Laden...',
  729. noProjectsAvailable: 'Keine Projekte verfügbar',
  730. searchProjects: 'Projekte suchen…',
  731. select: 'Auswählen',
  732. deselect: 'Abwählen',
  733. delete: 'Löschen',
  734. },
  735. permission: {
  736. noReprint: 'Sie haben keine Berechtigung, dieses Archiv erneut zu drucken',
  737. noAddToQueue: 'Sie haben keine Berechtigung, zur Warteschlange hinzuzufügen',
  738. noUpdateArchives: 'Sie haben keine Berechtigung, Archive zu aktualisieren',
  739. noUploadFiles: 'Sie haben keine Berechtigung, Dateien hochzuladen',
  740. noDownload: 'Sie haben keine Berechtigung, Archive herunterzuladen',
  741. noCopyLink: 'Sie haben keine Berechtigung, Download-Links zu kopieren',
  742. noDelete: 'Sie haben keine Berechtigung, dieses Archiv zu löschen',
  743. noCreate: 'Sie haben keine Berechtigung, Archive zu erstellen',
  744. },
  745. platePicker: {
  746. title: 'Platte zur Vorschau auswählen',
  747. hint: 'Dieses Archiv enthält mehrere Platten. Wähle eine, um sie im GCode-Viewer zu öffnen.',
  748. plateLabel: 'Platte {{index}}',
  749. objectCount: '{{count}} Objekt',
  750. objectCount_plural: '{{count}} Objekte',
  751. noGcode: 'Dieses Archiv enthält keinen geschnittenen G-Code zur Vorschau. Öffne es zuerst in Bambu Studio zum Slicen.',
  752. },
  753. card: {
  754. previousPlate: 'Vorherige Platte',
  755. nextPlate: 'Nächste Platte',
  756. plateNumber: 'Platte {{index}}',
  757. moreOptions: 'Rechtsklick für mehr Optionen',
  758. addToFavorites: 'Zu Favoriten hinzufügen',
  759. removeFromFavorites: 'Aus Favoriten entfernen',
  760. cancelled: 'abgebrochen',
  761. failed: 'fehlgeschlagen',
  762. duplicate: 'Duplikat',
  763. duplicateTitle: 'Dieses Modell wurde bereits zuvor gedruckt',
  764. openSource3mf: 'Quell-3MF in Bambu Studio öffnen (Rechtsklick für mehr Optionen)',
  765. downloadF3d: 'Fusion 360 Designdatei herunterladen',
  766. viewTimelapse: 'Zeitraffer ansehen',
  767. viewPhoto: '1 Foto ansehen',
  768. viewPhotos: '{{count}} Fotos ansehen',
  769. openFolder: 'Ordner öffnen: {{name}}',
  770. slicedFile: 'Geslicte Datei - druckbereit',
  771. sourceFile: 'Nur Quelldatei - keine AMS-Zuordnung verfügbar',
  772. gcode: 'GCODE',
  773. source: 'QUELLE',
  774. project: 'Projekt: {{name}}',
  775. estimated: 'Geschätzt: {{time}}',
  776. actual: 'Tatsächlich: {{time}}',
  777. accuracy: 'Genauigkeit: {{percent}}%',
  778. filament: '{{weight}}g',
  779. layer: '{{count}} Schicht',
  780. layers: '{{count}} Schichten',
  781. object: '{{count}} Objekt',
  782. objects: '{{count}} Objekte',
  783. slicedFor: 'Geslict für {{model}}',
  784. uploadedBy: 'Hochgeladen von',
  785. noPermissionReprint: 'Sie haben keine Berechtigung, erneut zu drucken',
  786. noFileForReprint: 'Keine 3MF-Datei verfügbar — die Datei konnte beim Aufzeichnen des Drucks nicht vom Drucker heruntergeladen werden',
  787. noPermissionEdit: 'Sie haben keine Berechtigung, Archive zu bearbeiten',
  788. noPermissionDelete: 'Sie haben keine Berechtigung, Archive zu löschen',
  789. reprint: 'Drucken',
  790. schedulePrint: 'Druck planen',
  791. schedule: 'Planen',
  792. openInBambuStudio: 'Im Slicer öffnen',
  793. openInBambuStudioToSlice: 'Im Slicer öffnen zum Slicen',
  794. slice: 'Slicen',
  795. externalLink: 'Externer Link',
  796. makerWorld: 'MakerWorld: {{designer}}',
  797. viewProject: 'Projekt ansehen',
  798. noExternalLink: 'Kein externer Link',
  799. preview3d: '3D-Vorschau',
  800. download: 'Herunterladen',
  801. edit: 'Bearbeiten',
  802. delete: 'Löschen',
  803. },
  804. modal: {
  805. deleteArchive: 'Archiv löschen',
  806. deleteConfirm: 'Möchten Sie "{{name}}" wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.',
  807. deleteButton: 'Löschen',
  808. removeSource3mf: 'Quell-3MF entfernen',
  809. removeSource3mfConfirm: 'Möchten Sie die Quell-3MF-Datei wirklich von "{{name}}" entfernen? Die ursprüngliche Slicer-Projektdatei wird gelöscht.',
  810. removeButton: 'Entfernen',
  811. removeF3d: 'F3D entfernen',
  812. removeF3dConfirm: 'Möchten Sie die Fusion 360 Designdatei wirklich von "{{name}}" entfernen?',
  813. removeTimelapse: 'Zeitraffer entfernen',
  814. removeTimelapseConfirm: 'Möchten Sie das Zeitraffervideo wirklich von "{{name}}" entfernen?',
  815. timelapse: '{{name}} - Zeitraffer',
  816. selectTimelapse: 'Zeitraffer auswählen',
  817. selectTimelapseDesc: 'Keine automatische Übereinstimmung gefunden. Wählen Sie den Zeitraffer für diesen Druck:',
  818. deleteArchives: 'Archive löschen',
  819. deleteArchivesConfirm: 'Möchten Sie wirklich {{count}} Archiv(e) löschen? Diese Aktion kann nicht rückgängig gemacht werden.',
  820. deleteCount: '{{count}} löschen',
  821. },
  822. page: {
  823. title: 'Archive',
  824. printsCount: '{{filtered}} von {{total}} Drucken',
  825. dropFilesHere: '.3mf-Dateien hier ablegen',
  826. releaseToUpload: 'Loslassen zum Hochladen',
  827. only3mfSupported: 'Nur .3mf-Dateien werden unterstützt',
  828. close: 'Schließen',
  829. selected: '{{count}} ausgewählt',
  830. selectAll: 'Alle auswählen',
  831. tags: 'Tags',
  832. project: 'Projekt',
  833. favorite: 'Favorit',
  834. delete: 'Löschen',
  835. toggledFavorites: 'Favoriten für {{count}} Archiv(e) umgeschaltet',
  836. failedUpdateFavorites: 'Fehler beim Aktualisieren der Favoriten',
  837. archivesDeleted: '{{count}} Archiv(e) gelöscht',
  838. failedDeleteArchives: 'Fehler beim Löschen der Archive',
  839. photoDeleted: 'Foto gelöscht',
  840. failedDeletePhoto: 'Fehler beim Löschen des Fotos',
  841. },
  842. list: {
  843. name: 'Name',
  844. printer: 'Drucker',
  845. date: 'Datum',
  846. size: 'Größe',
  847. actions: 'Aktionen',
  848. hasTimelapse: 'Hat Zeitraffer',
  849. },
  850. log: {
  851. date: 'Datum',
  852. printName: 'Druckname',
  853. printer: 'Drucker',
  854. user: 'Benutzer',
  855. status: 'Status',
  856. duration: 'Dauer',
  857. filament: 'Filament',
  858. allPrinters: 'Alle Drucker',
  859. allUsers: 'Alle Benutzer',
  860. allStatuses: 'Alle Status',
  861. cancelled: 'Abgebrochen',
  862. skipped: 'Übersprungen',
  863. dateFrom: 'Von',
  864. dateTo: 'Bis',
  865. noEntries: 'Keine Druckprotokolleinträge gefunden',
  866. showing: '{{count}} von {{total}} Einträgen',
  867. rowsPerPage: 'Zeilen',
  868. page: 'Seite',
  869. prev: 'Zurück',
  870. next: 'Weiter',
  871. clearLog: 'Protokoll löschen',
  872. clearLogTitle: 'Druckprotokoll löschen',
  873. clearLogConfirm: 'Alle Druckprotokolleinträge werden dauerhaft gelöscht. Archive und Warteschlangeneinträge sind nicht betroffen. Diese Aktion kann nicht rückgängig gemacht werden. Sind Sie sicher?',
  874. clearLogButton: 'Alle löschen',
  875. cleared: '{{count}} Protokolleinträge gelöscht',
  876. clearFailed: 'Druckprotokoll konnte nicht gelöscht werden',
  877. },
  878. },
  879. // Queue page
  880. queue: {
  881. title: 'Druckwarteschlange',
  882. subtitle: 'Planen und verwalten Sie Ihre Druckaufträge',
  883. addToQueue: 'Zur Warteschlange hinzufügen',
  884. // Print modal
  885. print: 'Drucken',
  886. reprint: 'Erneut drucken',
  887. schedulePrint: 'Druck planen',
  888. editQueueItem: 'Warteschlangeneintrag bearbeiten',
  889. printToPrinters: 'Auf {{count}} Druckern drucken',
  890. queueToPrinters: 'Zu {{count}} Druckern hinzufügen',
  891. queueSelectedPlates: '{{count}} Platten in die Warteschlange',
  892. selectAllPlates: 'Alle {{count}} Platten auswählen',
  893. deselectAll: 'Alle abwählen',
  894. printQueued: 'Druck in Warteschlange',
  895. itemsQueued: '{{count}} Einträge in Warteschlange',
  896. sending: 'Wird gesendet...',
  897. sendingProgress: 'Sende {{current}}/{{total}}...',
  898. adding: 'Wird hinzugefügt...',
  899. addingProgress: 'Füge hinzu {{current}}/{{total}}...',
  900. savingProgress: 'Speichere {{current}}/{{total}}...',
  901. clearQueue: 'Warteschlange leeren',
  902. clearHistory: 'Verlauf löschen',
  903. emptyQueue: 'Warteschlange ist leer',
  904. position: 'Position',
  905. scheduledTime: 'Geplante Zeit',
  906. moveUp: 'Nach oben',
  907. moveDown: 'Nach unten',
  908. startNow: 'Jetzt starten',
  909. printingInProgress: 'Druck läuft...',
  910. viewArchive: 'Archiv anzeigen',
  911. viewInFileManager: 'Im Dateimanager anzeigen',
  912. itemCount: '{{count}} Element',
  913. itemCount_plural: '{{count}} Elemente',
  914. dragToReorder: 'Ziehen zum Neuordnen (nur Sofort)',
  915. reorderHint: 'Position betrifft nur Sofort-Elemente. Geplante Elemente werden zur festgelegten Zeit ausgeführt.',
  916. sjf: {
  917. label: 'SJF',
  918. tooltip: 'Kürzester Auftrag zuerst — Scheduler bevorzugt kürzere Drucke',
  919. },
  920. addedBy: 'Hinzugefügt von {{name}}',
  921. nextInQueue: 'Nächster in der Warteschlange',
  922. clearPlateSuccess: 'Druckplatte freigegeben — bereit für nächsten Druck',
  923. plateNumber: 'Platte {{index}}',
  924. // Batch / quantity
  925. quantity: 'Menge',
  926. quantityHint: 'Erstellt {{count}} Warteschlangeneinträge',
  927. activeBatches: 'Aktive Stapel',
  928. batchProgress: '{{completed}} von {{total}} abgeschlossen',
  929. cancelBatch: 'Verbleibende abbrechen',
  930. batchCancelled: 'Verbleibende Stapeleinträge abgebrochen',
  931. cancelBatchConfirmTitle: 'Stapel abbrechen',
  932. cancelBatchConfirmMessage: 'Alle verbleibenden ausstehenden Einträge in diesem Stapel abbrechen?',
  933. batch: 'Stapel',
  934. // Sections
  935. sections: {
  936. currentlyPrinting: 'Aktuell druckend',
  937. queued: 'In Warteschlange',
  938. history: 'Verlauf',
  939. },
  940. // Status
  941. status: {
  942. pending: 'Ausstehend',
  943. waiting: 'Wartend',
  944. printing: 'Druckt',
  945. paused: 'Pausiert',
  946. completed: 'Abgeschlossen',
  947. failed: 'Fehlgeschlagen',
  948. skipped: 'Übersprungen',
  949. cancelled: 'Abgebrochen',
  950. },
  951. // Summary cards
  952. summary: {
  953. printing: 'Druckt',
  954. queued: 'In Warteschlange',
  955. totalTime: 'Gesamte Wartezeit',
  956. totalWeight: 'Gesamtgewicht der Warteschlange',
  957. history: 'Verlauf',
  958. },
  959. // Filters
  960. filter: {
  961. allPrinters: 'Alle Drucker',
  962. unassigned: 'Nicht zugewiesen',
  963. allStatus: 'Alle Status',
  964. allLocations: 'Alle Standorte',
  965. any: 'Beliebig',
  966. },
  967. // Sort
  968. sort: {
  969. byPosition: 'Nach Position sortieren',
  970. byName: 'Nach Name sortieren',
  971. byPrinter: 'Nach Drucker sortieren',
  972. bySchedule: 'Nach Zeitplan sortieren',
  973. byDate: 'Nach Datum sortieren',
  974. ascendingOldest: 'Aufsteigend (älteste zuerst)',
  975. descendingNewest: 'Absteigend (neueste zuerst)',
  976. },
  977. // Badges
  978. badges: {
  979. staged: 'Bereitgestellt',
  980. requiresPrevious: 'Erfordert vorherigen Erfolg',
  981. autoPowerOff: 'Automatisch ausschalten',
  982. gcodeInjection: 'G-code',
  983. },
  984. // Empty state
  985. empty: {
  986. title: 'Keine Drucke geplant',
  987. description: 'Planen Sie einen Druck von der Archivseite über die Option "Planen" im Kontextmenü oder ziehen Sie Dateien hierher.',
  988. },
  989. // Time
  990. time: {
  991. asap: 'Sofort',
  992. overdue: 'Überfällig',
  993. now: 'Jetzt',
  994. lessThanMinute: 'In weniger als einer Minute',
  995. inMinutes: 'In {{count}} Min',
  996. inHours: 'In {{count}} Stunden',
  997. },
  998. // Actions
  999. actions: {
  1000. stopPrint: 'Druck stoppen',
  1001. startPrint: 'Druck starten',
  1002. requeue: 'Erneut einreihen',
  1003. },
  1004. // Bulk edit
  1005. bulkEdit: {
  1006. title: '{{count}} Element bearbeiten',
  1007. title_plural: '{{count}} Elemente bearbeiten',
  1008. description: 'Nur geänderte Einstellungen werden auf ausgewählte Elemente angewendet.',
  1009. printer: 'Drucker',
  1010. noChange: '— Keine Änderung —',
  1011. queueOptions: 'Warteschlangenoptionen',
  1012. staged: 'Bereitgestellt (manueller Start)',
  1013. autoPowerOff: 'Nach Druck automatisch ausschalten',
  1014. requirePrevious: 'Vorherigen Erfolg erfordern',
  1015. printOptions: 'Druckoptionen',
  1016. bedLevelling: 'Bett-Nivellierung',
  1017. flowCalibration: 'Fluss-Kalibrierung',
  1018. vibrationCalibration: 'Vibrations-Kalibrierung',
  1019. layerInspection: 'Erste-Schicht-Prüfung',
  1020. timelapse: 'Zeitraffer',
  1021. useAms: 'AMS verwenden',
  1022. applyChanges: 'Änderungen übernehmen',
  1023. selectAll: 'Alle auswählen',
  1024. deselectAll: 'Auswahl aufheben',
  1025. selected: '{{count}} ausgewählt',
  1026. editSelected: 'Ausgewählte bearbeiten',
  1027. cancelSelected: 'Ausgewählte abbrechen',
  1028. },
  1029. // Confirmations
  1030. confirm: {
  1031. cancelTitle: 'Geplanten Druck abbrechen',
  1032. cancelMessage: 'Möchten Sie "{{name}}" wirklich abbrechen?',
  1033. stopTitle: 'Druck stoppen',
  1034. stopMessage: 'Möchten Sie den aktuellen Druck "{{name}}" wirklich stoppen? Der Druckauftrag wird am Drucker abgebrochen.',
  1035. removeTitle: 'Aus Verlauf entfernen',
  1036. removeMessage: 'Möchten Sie "{{name}}" wirklich aus dem Warteschlangenverlauf entfernen?',
  1037. clearHistoryTitle: 'Verlauf löschen',
  1038. clearHistoryMessage: 'Möchten Sie alle {{count}} Element(e) aus dem Verlauf entfernen?',
  1039. cancelButton: 'Druck abbrechen',
  1040. stopButton: 'Druck stoppen',
  1041. thisPrint: 'diesen Druck',
  1042. thisItem: 'dieses Element',
  1043. },
  1044. // Toast messages
  1045. toast: {
  1046. cancelled: 'Warteschlangenelement abgebrochen',
  1047. cancelFailed: 'Element konnte nicht abgebrochen werden',
  1048. removed: 'Warteschlangenelement entfernt',
  1049. removeFailed: 'Element konnte nicht entfernt werden',
  1050. stopped: 'Druck gestoppt',
  1051. stopFailed: 'Druck konnte nicht gestoppt werden',
  1052. released: 'Druck in Warteschlange freigegeben',
  1053. startFailed: 'Druck konnte nicht gestartet werden',
  1054. reorderFailed: 'Warteschlange konnte nicht neu geordnet werden',
  1055. historyCleared: '{{count}} Verlaufselement(e) gelöscht',
  1056. clearHistoryFailed: 'Verlauf konnte nicht gelöscht werden',
  1057. updateFailed: 'Elemente konnten nicht aktualisiert werden',
  1058. bulkCancelled: '{{count}} Element(e) abgebrochen',
  1059. bulkCancelFailed: 'Elemente konnten nicht abgebrochen werden',
  1060. },
  1061. // Timeline view
  1062. timeline: {
  1063. listView: 'Liste',
  1064. timelineView: 'Zeitstrahl',
  1065. unassigned: 'Nicht zugewiesen',
  1066. noData: 'Keine geplanten Drucke für diesen Tag',
  1067. allDoneBy: 'Alle Drucke voraussichtlich fertig um {{time}}',
  1068. staged: 'Bereitgestellt',
  1069. filterAll: 'Alle anzeigen',
  1070. filterPrinting: 'Druckend',
  1071. filterQueued: 'Warteschlange',
  1072. time: {
  1073. anyMoment: 'jeden Moment',
  1074. minutesLeft: '{{minutes}}m übrig',
  1075. hoursLeft: '{{hours}}h übrig',
  1076. hoursMinutesLeft: '{{hours}}h {{minutes}}m übrig',
  1077. },
  1078. day: {
  1079. previous: 'Vorheriger Tag',
  1080. next: 'Nächster Tag',
  1081. today: 'Heute',
  1082. },
  1083. },
  1084. // Permissions
  1085. permissions: {
  1086. noStopPrint: 'Sie haben keine Berechtigung, Drucke zu stoppen',
  1087. noStartPrint: 'Sie haben keine Berechtigung, Drucke zu starten',
  1088. noEdit: 'Sie haben keine Berechtigung, dieses Warteschlangenelement zu bearbeiten',
  1089. noCancel: 'Sie haben keine Berechtigung, dieses Warteschlangenelement abzubrechen',
  1090. noRequeue: 'Sie haben keine Berechtigung, Elemente erneut einzureihen',
  1091. noRemove: 'Sie haben keine Berechtigung, dieses Warteschlangenelement zu entfernen',
  1092. noClearHistory: 'Sie haben keine Berechtigung, den gesamten Verlauf zu löschen',
  1093. noEditItems: 'Sie haben keine Berechtigung, Warteschlangenelemente zu bearbeiten',
  1094. noCancelItems: 'Sie haben keine Berechtigung, Warteschlangenelemente abzubrechen',
  1095. },
  1096. },
  1097. backgroundDispatch: {
  1098. unknownFile: 'Unbekannte Datei',
  1099. unknownPrinter: 'Unbekannter Drucker',
  1100. startingPrints: 'Starte Drucke',
  1101. progressSummary: '{{complete}}/{{total}} abgeschlossen • Geplant: {{dispatched}} • In Bearbeitung: {{processing}}',
  1102. expandDetails: 'Dispatch-Details ausklappen',
  1103. collapseDetails: 'Dispatch-Details einklappen',
  1104. dismissToast: 'Dispatch-Hinweis schließen',
  1105. cancelDispatchJob: 'Dispatch-Job abbrechen',
  1106. cancel: 'Abbrechen',
  1107. cancelling: 'Wird abgebrochen…',
  1108. awaitingPrinter: 'Warte auf Drucker…',
  1109. status: {
  1110. dispatched: 'Geplant',
  1111. processing: 'In Bearbeitung',
  1112. completed: 'Abgeschlossen',
  1113. failed: 'Fehlgeschlagen',
  1114. cancelled: 'Abgebrochen',
  1115. },
  1116. toast: {
  1117. cancellingUpload: 'Upload wird abgebrochen...',
  1118. cancelled: 'Dispatch abgebrochen',
  1119. cancelFailed: 'Dispatch konnte nicht abgebrochen werden',
  1120. completeWithFailures: 'Background Dispatch abgeschlossen: {{completed}} erfolgreich, {{failed}} fehlgeschlagen',
  1121. completeSuccess: 'Background Dispatch abgeschlossen: {{completed}} erfolgreich',
  1122. printStartedRemaining: '{{completed}} Druck(e) gestartet, {{remaining}} weitere werden gesendet...',
  1123. },
  1124. },
  1125. // Statistics page
  1126. stats: {
  1127. title: 'Dashboard',
  1128. subtitle: 'Widgets zum Neuanordnen ziehen. Auf das Augensymbol klicken zum Ausblenden.',
  1129. overview: 'Übersicht',
  1130. totalPrints: 'Gesamtdrucke',
  1131. successRate: 'Erfolgsrate',
  1132. totalPrintTime: 'Gesamtdruckzeit',
  1133. printTime: 'Druckzeit',
  1134. totalFilament: 'Gesamtverbrauch Filament',
  1135. filamentUsed: 'Filamentverbrauch',
  1136. filamentCost: 'Filamentkosten',
  1137. totalCost: 'Gesamtkosten',
  1138. energyUsed: 'Energieverbrauch',
  1139. energyCost: 'Energiekosten',
  1140. energyWarmingUpTooltip: 'Die Energieerfassung sammelt noch stündliche Snapshots. Zeitraumwerte werden genau, sobald vor dem gewählten Bereich mindestens ein Snapshot vorliegt. Frühe Werte können zu niedrig sein.',
  1141. averagePrintTime: 'Durchschnittliche Druckzeit',
  1142. printsPerDay: 'Drucke pro Tag',
  1143. byPrinter: 'Nach Drucker',
  1144. printsByPrinter: 'Drucke nach Drucker',
  1145. byMaterial: 'Nach Material',
  1146. byMonth: 'Nach Monat',
  1147. last7Days: 'Letzte 7 Tage',
  1148. last30Days: 'Letzte 30 Tage',
  1149. last90Days: 'Letzte 90 Tage',
  1150. allTime: 'Gesamt',
  1151. // Widgets
  1152. quickStats: 'Schnellstatistiken',
  1153. printActivity: 'Druckaktivität',
  1154. filamentTypes: 'Filamenttypen',
  1155. filamentTrends: 'Filamenttrends',
  1156. failureAnalysis: 'Fehleranalyse',
  1157. timeAccuracy: 'Zeitgenauigkeit',
  1158. successful: 'Erfolgreich:',
  1159. failed: 'Fehlgeschlagen:',
  1160. perfectEstimate: '100% = perfekte Schätzung',
  1161. noTimeAccuracyData: 'Noch keine Zeitgenauigkeitsdaten',
  1162. noFilamentData: 'Keine Filamentdaten verfügbar',
  1163. noPrinterData: 'Keine Druckerdaten verfügbar',
  1164. noPrintData: 'Keine Druckdaten verfügbar',
  1165. noPrintDataLast30Days: 'Keine Druckdaten in den letzten 30 Tagen',
  1166. failureReasons: 'Fehlerursachen',
  1167. topFailureReasons: 'Häufigste Fehlerursachen',
  1168. failedPrintsCount: '{{failed}} / {{total}} Drucke fehlgeschlagen',
  1169. lastWeekRate: 'Letzte Woche: {{rate}}%',
  1170. // Actions
  1171. resetLayout: 'Layout zurücksetzen',
  1172. recalculateCosts: 'Kosten neu berechnen',
  1173. recalculateCostsHint: 'Alle Archivkosten mit aktuellen Filamentpreisen neu berechnen',
  1174. exportStats: 'Statistiken exportieren',
  1175. exportAsCsv: 'Als CSV exportieren',
  1176. exportAsExcel: 'Als Excel exportieren',
  1177. hiddenCount: '{{count}} ausgeblendet',
  1178. // Toast
  1179. exportDownloaded: 'Export heruntergeladen',
  1180. exportFailed: 'Export fehlgeschlagen',
  1181. layoutReset: 'Layout zurückgesetzt',
  1182. recalculatedCosts: 'Kosten für {{count}} Archive neu berechnet',
  1183. recalculateFailed: 'Kosten konnten nicht neu berechnet werden',
  1184. // Loading
  1185. loadingStats: 'Statistiken werden geladen...',
  1186. // Permissions
  1187. noPermissionResetLayout: 'Sie haben keine Berechtigung, das Layout zurückzusetzen',
  1188. noPermissionRecalculate: 'Sie haben keine Berechtigung, Kosten neu zu berechnen',
  1189. noPrintDataInRange: 'Keine Druckdaten im ausgewählten Zeitraum',
  1190. periodFilament: 'Filamentverbrauch',
  1191. periodCost: 'Kosten',
  1192. avgPerPrint: 'Durchschnitt pro Druck',
  1193. usageOverTime: 'Verbrauch im Zeitverlauf',
  1194. filamentByWeight: 'Gewicht',
  1195. printDuration: 'Druckdauer',
  1196. printerUtilization: 'Druckerauslastung',
  1197. filamentSuccess: 'Erfolg nach Material',
  1198. printHabits: 'Druckgewohnheiten',
  1199. printTimeOfDay: 'Druck-Tageszeit',
  1200. colorDistribution: 'Farbverteilung',
  1201. noColorData: 'Keine Farbdaten verfügbar',
  1202. records: 'Rekorde',
  1203. longestPrint: 'Längster Druck',
  1204. heaviestPrint: 'Schwerster Druck',
  1205. mostExpensivePrint: 'Teuerster Druck',
  1206. busiestDay: 'Aktivster Tag',
  1207. successStreak: 'Erfolgsserie',
  1208. streakPrint: 'aufeinanderfolgender Druck',
  1209. streakPrints: '{{count}} aufeinanderfolgende Drucke',
  1210. printerStats: 'Druckerstatistiken',
  1211. hours: 'Stunden',
  1212. avgPrints: 'Ø Drucke',
  1213. noArchiveData: 'Keine Druckdaten verfügbar',
  1214. filamentByTime: 'Zeitverlauf',
  1215. avgWeight: 'Ø Gewicht',
  1216. avgTime: 'Ø Zeit',
  1217. filamentByPrints: 'Drucke',
  1218. timeframe: {
  1219. 'today': 'Heute',
  1220. 'this-week': 'Diese Woche',
  1221. 'this-month': 'Dieser Monat',
  1222. 'last-7': 'Letzte 7 Tage',
  1223. 'last-30': 'Letzte 30 Tage',
  1224. 'last-90': 'Letzte 90 Tage',
  1225. 'this-year': 'Dieses Jahr',
  1226. 'all-time': 'Gesamt',
  1227. 'custom': 'Benutzerdefiniert',
  1228. from: 'Von',
  1229. to: 'Bis',
  1230. },
  1231. allUsers: 'Alle Benutzer',
  1232. noUser: 'Kein Benutzer (System)',
  1233. filterByUser: 'Nach Benutzer filtern',
  1234. },
  1235. // Maintenance page
  1236. maintenance: {
  1237. title: 'Wartung',
  1238. overview: 'Übersicht',
  1239. allOk: 'Alle Wartungen aktuell',
  1240. dueCount: '{{count}} Aufgabe fällig',
  1241. dueCount_plural: '{{count}} Aufgaben fällig',
  1242. warningCount: '{{count}} Warnung',
  1243. warningCount_plural: '{{count}} Warnungen',
  1244. totalPrintTime: 'Gesamtdruckzeit',
  1245. nextMaintenance: 'Nächste Wartung',
  1246. nothingDue: 'Nichts fällig',
  1247. tasks: 'Aufgaben',
  1248. lastPerformed: 'Zuletzt durchgeführt',
  1249. interval: 'Intervall',
  1250. hoursRemaining: '{{hours}}h verbleibend',
  1251. hoursOverdue: '{{hours}}h überfällig',
  1252. markDone: 'Als erledigt markieren',
  1253. performMaintenance: 'Wartung durchführen',
  1254. history: 'Verlauf',
  1255. noHistory: 'Kein Wartungsverlauf',
  1256. editPrintHours: 'Druckstunden bearbeiten',
  1257. currentHours: 'Aktuelle Stunden',
  1258. // Tabs
  1259. statusTab: 'Status',
  1260. settingsTab: 'Einstellungen',
  1261. // Status
  1262. overdueCount: '{{count}} überfällig',
  1263. dueSoonCount: '{{count}} bald fällig',
  1264. dueSoon: 'Bald fällig',
  1265. allGood: 'Alles in Ordnung',
  1266. overdueBy: 'Überfällig um {{duration}}',
  1267. dueIn: 'Fällig in {{duration}}',
  1268. timeLeft: '{{duration}} verbleibend',
  1269. // Duration formats
  1270. day: '1 Tag',
  1271. days: '{{count}} Tage',
  1272. week: '1 Woche',
  1273. weeks: '{{count}} Wochen',
  1274. month: '1 Monat',
  1275. months: '{{count}} Monate',
  1276. year: '1 Jahr',
  1277. // Settings
  1278. maintenanceTypes: 'Wartungstypen',
  1279. maintenanceTypesDescription: 'Systemtypen und Ihre benutzerdefinierten Wartungsaufgaben',
  1280. addCustomType: 'Benutzerdefinierten Typ hinzufügen',
  1281. restoreDefaults: 'Standardaufgaben wiederherstellen',
  1282. intervalType: 'Intervalltyp',
  1283. intervalValue: 'Intervall ({{type}})',
  1284. icon: 'Symbol',
  1285. documentationLink: 'Dokumentationslink (optional)',
  1286. assignToPrinters: 'Druckern zuweisen',
  1287. selectAtLeastOnePrinter: 'Wählen Sie mindestens einen Drucker',
  1288. addType: 'Typ hinzufügen',
  1289. custom: 'Benutzerdefiniert',
  1290. printHours: 'Druckstunden',
  1291. calendarDays: 'Kalendertage',
  1292. exampleName: 'z.B. HEPA-Filter ersetzen',
  1293. viewDocumentation: 'Dokumentation anzeigen',
  1294. timeBasedInterval: 'Zeitbasiertes Intervall',
  1295. // Interval overrides
  1296. intervalOverrides: 'Intervall-Überschreibungen',
  1297. intervalOverridesDescription: 'Intervalle für bestimmte Drucker anpassen',
  1298. // Printer assignment
  1299. assignedToPrinters: 'Druckern zugewiesen:',
  1300. noPrintersAssigned: 'Keine Drucker zugewiesen',
  1301. addPrinterShort: 'Hinzufügen:',
  1302. printersAssignedClick: '{{count}} Drucker zugewiesen - klicken zum Verwalten',
  1303. removeFromPrinter: 'Von diesem Drucker entfernen',
  1304. // Types
  1305. types: {
  1306. lubricateCarbonRods: 'Karbonstäbe schmieren',
  1307. lubricateRails: 'Linearschienen schmieren',
  1308. cleanNozzle: 'Düse/Hotend reinigen',
  1309. checkBelts: 'Riemenspannung prüfen',
  1310. cleanBuildPlate: 'Druckbett reinigen',
  1311. checkExtruder: 'Extruderzahnräder prüfen',
  1312. checkCooling: 'Kühlungslüfter prüfen',
  1313. generalInspection: 'Allgemeine Inspektion',
  1314. cleanCarbonRods: 'Kohlenstoffstangen reinigen',
  1315. lubricateSteelRods: 'Stahlstangen schmieren',
  1316. cleanSteelRods: 'Stahlstangen reinigen',
  1317. cleanLinearRails: 'Linearschienen reinigen',
  1318. checkPtfeTube: 'PTFE-Schlauch prüfen',
  1319. replaceHepaFilter: 'HEPA-Filter ersetzen',
  1320. replaceCarbonFilter: 'Aktivkohlefilter ersetzen',
  1321. lubricateLeftNozzleRail: 'Linke Düsenschiene schmieren',
  1322. },
  1323. // Toast
  1324. maintenanceComplete: 'Wartung als abgeschlossen markiert',
  1325. typeUpdated: 'Wartungstyp aktualisiert',
  1326. typeDeleted: 'Wartungstyp gelöscht',
  1327. defaultsRestored: '{{count}} Standardaufgabe(n) wiederhergestellt',
  1328. printHoursUpdated: 'Druckstunden aktualisiert',
  1329. printerAssigned: 'Drucker zugewiesen',
  1330. printerRemoved: 'Drucker entfernt',
  1331. // Confirmation
  1332. deleteTypeConfirm: '"{{name}}" löschen?',
  1333. deleteSystemTypeTitle: 'Standard-Wartungsaufgabe löschen?',
  1334. deleteSystemTypeMessage: 'Möchten Sie die Standard-Wartungsaufgabe "{{name}}" wirklich löschen?',
  1335. // Permissions
  1336. noPermissionUpdate: 'Sie haben keine Berechtigung, Wartungselemente zu aktualisieren',
  1337. noPermissionPerform: 'Sie haben keine Berechtigung, Wartungen durchzuführen',
  1338. noPermissionEditTypes: 'Sie haben keine Berechtigung, Wartungstypen zu bearbeiten',
  1339. noPermissionDeleteTypes: 'Sie haben keine Berechtigung, Wartungstypen zu löschen',
  1340. noPermissionEditHours: 'Sie haben keine Berechtigung, Druckstunden zu bearbeiten',
  1341. noPermissionRemovePrinter: 'Sie haben keine Berechtigung, Druckerzuweisungen zu entfernen',
  1342. noPermissionAssignPrinter: 'Sie haben keine Berechtigung, Drucker zuzuweisen',
  1343. noPermissionEditIntervals: 'Sie haben keine Berechtigung, Intervalle zu bearbeiten',
  1344. // Configure link
  1345. configureSettings: 'Wartungstypen und Intervalle konfigurieren',
  1346. },
  1347. // Settings page
  1348. settings: {
  1349. title: 'Einstellungen',
  1350. general: 'Allgemein',
  1351. // Tab names
  1352. tabs: {
  1353. general: 'Allgemein',
  1354. smartPlugs: 'Smart Plugs',
  1355. notifications: 'Benachrichtigungen',
  1356. queue: 'Workflow',
  1357. filament: 'Filament',
  1358. network: 'Netzwerk',
  1359. apiKeys: 'API-Schlüssel',
  1360. virtualPrinter: 'Virtueller Drucker',
  1361. spoolbuddy: 'SpoolBuddy',
  1362. failureDetection: 'Fehlererkennung',
  1363. users: 'Authentifizierung',
  1364. backup: 'Sicherung',
  1365. emailAuth: 'E-Mail-Authentifizierung',
  1366. ldap: 'LDAP',
  1367. twoFa: 'Zwei-Faktor-Auth',
  1368. oidc: 'SSO / OIDC',
  1369. },
  1370. spoolbuddy: {
  1371. infoTitle: 'SpoolBuddy-Geräte',
  1372. infoBody: 'SpoolBuddy-Kioske registrieren sich automatisch per Heartbeat. Ein Gerät hier abmelden, wenn es nicht mehr verwendet wird oder wenn ein veralteter Eintrag nach einem Daemon-Absturz übrig geblieben ist.',
  1373. duplicatesTitle: '{{count}} Geräte registriert',
  1374. duplicatesBody: 'Die Kiosk-Oberfläche verwendet nur das zuerst registrierte Gerät. Falls eines davon ein veralteter Doppeleintrag nach einem Absturz ist, kann es hier entfernt werden — ein laufendes Gerät registriert sich beim nächsten Heartbeat automatisch neu.',
  1375. empty: 'Noch keine SpoolBuddy-Geräte registriert.',
  1376. online: 'Online',
  1377. offline: 'Offline',
  1378. unregister: 'Abmelden',
  1379. unregisterSuccess: 'Gerät abgemeldet',
  1380. unregisterError: 'Gerät konnte nicht abgemeldet werden',
  1381. confirmTitle: 'SpoolBuddy-Gerät abmelden?',
  1382. confirmBody: 'Dies entfernt „{{hostname}}" ({{deviceId}}) aus der Datenbank. Ein laufendes Gerät registriert sich beim nächsten Heartbeat automatisch neu.',
  1383. ipAddress: 'IP-Adresse',
  1384. firmware: 'Firmware',
  1385. lastSeen: 'Zuletzt gesehen',
  1386. daemonUptime: 'Daemon-Laufzeit',
  1387. systemUptime: 'System-Laufzeit',
  1388. never: 'nie',
  1389. nfc: 'NFC',
  1390. scale: 'Waage',
  1391. cpuTemp: 'CPU-Temp.',
  1392. memory: 'Speicher',
  1393. disk: 'Festplatte',
  1394. update: 'Aktualisieren',
  1395. updateConfirmTitle: 'Spoolbuddy-Daemon aktualisieren?',
  1396. updateConfirmBody: 'Software-Update auf „{{hostname}}" auslösen? Der Daemon startet nach dem Update neu.',
  1397. restartBrowser: 'Browser neu starten',
  1398. restartBrowserConfirmTitle: 'Kiosk-Browser neu starten?',
  1399. restartBrowserConfirmBody: 'Kiosk-Browser auf „{{hostname}}" neu starten? Die Anzeige wird kurz schwarz.',
  1400. restartDaemon: 'Daemon neu starten',
  1401. restartDaemonConfirmTitle: 'Spoolbuddy-Daemon neu starten?',
  1402. restartDaemonConfirmBody: 'Spoolbuddy-Daemon auf „{{hostname}}" neu starten? Das Gerät ist für einige Sekunden offline.',
  1403. reboot: 'Neustart',
  1404. rebootConfirmTitle: 'Gerät neu starten?',
  1405. rebootConfirmBody: '„{{hostname}}" neu starten? Das Gerät ist für etwa eine Minute offline.',
  1406. shutdown: 'Herunterfahren',
  1407. shutdownConfirmTitle: 'Gerät herunterfahren?',
  1408. shutdownConfirmBody: '„{{hostname}}" herunterfahren? Physischer Zugriff ist nötig, um es wieder einzuschalten.',
  1409. commandConfirm: 'Bestätigen',
  1410. commandQueued: 'Befehl eingereiht',
  1411. commandError: 'Befehl konnte nicht gesendet werden',
  1412. },
  1413. ldap: {
  1414. title: 'LDAP-Authentifizierung',
  1415. enabledDesc: 'LDAP-Authentifizierung ist aktiviert',
  1416. disabledDesc: 'LDAP-Authentifizierung ist deaktiviert',
  1417. disabledHint: 'LDAP-Einstellungen unten konfigurieren und speichern, dann aktivieren.',
  1418. enabled: 'LDAP-Authentifizierung aktiviert',
  1419. disabled: 'LDAP-Authentifizierung deaktiviert',
  1420. feature1: 'Benutzer können sich mit LDAP-Anmeldedaten anmelden',
  1421. feature2: 'Lokales Admin-Konto bleibt als Fallback erhalten',
  1422. feature3: 'LDAP-Gruppen werden bei der Anmeldung BamBuddy-Gruppen zugeordnet',
  1423. serverConfig: 'LDAP-Server-Konfiguration',
  1424. serverUrl: 'Server-URL',
  1425. serverUrlHint: 'Verwenden Sie ldap:// für Standard oder ldaps:// für SSL-Verbindungen',
  1426. security: 'Sicherheit',
  1427. securityHint: 'StartTLS aktualisiert eine einfache Verbindung auf TLS. LDAPS verwendet TLS von Anfang an.',
  1428. bindDn: 'Bind-DN (Dienstkonto)',
  1429. bindPassword: 'Bind-Passwort',
  1430. searchBase: 'Such-Basis-DN',
  1431. userFilter: 'Benutzer-Suchfilter',
  1432. userFilterHint: '{username} wird durch den Anmeldenamen ersetzt. Verwenden Sie (uid={username}) für OpenLDAP.',
  1433. autoProvision: 'Benutzer automatisch anlegen',
  1434. autoProvisionHint: 'Automatisch ein BamBuddy-Konto bei der ersten LDAP-Anmeldung erstellen',
  1435. defaultGroup: 'Standardgruppe',
  1436. defaultGroupNone: '— Keine (kein Fallback) —',
  1437. defaultGroupHint: 'Fallback-Gruppe, die zugewiesen wird, wenn sich ein LDAP-Benutzer authentifiziert, aber in keiner zugeordneten LDAP-Gruppe enthalten ist. Leer lassen, um nicht zugeordnete Benutzer ohne Berechtigungen zu belassen.',
  1438. groupMapping: 'Gruppenzuordnung (JSON)',
  1439. groupMappingHint: 'LDAP-Gruppen-DNs BamBuddy-Gruppen zuordnen. Verfügbare Gruppen: ',
  1440. testConnection: 'Verbindung testen',
  1441. settingsSaved: 'LDAP-Einstellungen gespeichert',
  1442. errors: {
  1443. serverRequired: 'LDAP-Server-URL ist erforderlich',
  1444. searchBaseRequired: 'Such-Basis-DN ist erforderlich',
  1445. enableAuthFirst: 'Authentifizierung zuerst aktivieren',
  1446. configureLdapFirst: 'LDAP-Einstellungen zuerst speichern',
  1447. },
  1448. },
  1449. // Email settings
  1450. email: {
  1451. smtpSettings: 'SMTP-Konfiguration',
  1452. smtpHost: 'SMTP-Server',
  1453. smtpPort: 'SMTP-Port',
  1454. security: 'Sicherheit',
  1455. authentication: 'Authentifizierung',
  1456. username: 'Benutzername',
  1457. password: 'Passwort',
  1458. fromEmail: 'Absender-E-Mail',
  1459. fromName: 'Absendername',
  1460. testConnection: 'SMTP-Verbindung testen',
  1461. testRecipient: 'Test-Empfänger-E-Mail',
  1462. sendTest: 'Test-E-Mail senden',
  1463. sending: 'Wird gesendet...',
  1464. save: 'Einstellungen speichern',
  1465. saving: 'Wird gespeichert...',
  1466. advancedAuth: 'Erweiterte Authentifizierung',
  1467. advancedAuthEnabled: 'Erweiterte Authentifizierung ist aktiviert',
  1468. advancedAuthEnabledDesc: 'E-Mail-basierte Benutzerverwaltungsfunktionen sind aktiv. Neue Benutzer erhalten automatisch generierte Passwörter per E-Mail und können ihr Passwort über die Passwort vergessen Funktion zurücksetzen.',
  1469. advancedAuthDisabled: 'Erweiterte Authentifizierung ist deaktiviert',
  1470. advancedAuthDisabledDesc: 'Aktivieren Sie die erweiterte Authentifizierung, um E-Mail-basierte Funktionen für die Benutzerverwaltung zu aktivieren.',
  1471. enable: 'Aktivieren',
  1472. disable: 'Deaktivieren',
  1473. feature1: 'Passwörter werden automatisch generiert und an neue Benutzer gesendet',
  1474. feature2: 'Benutzer können sich mit Benutzername oder E-Mail anmelden',
  1475. feature3: 'Passwort vergessen Funktion ist verfügbar',
  1476. feature4: 'Administratoren können Benutzerpasswörter per E-Mail zurücksetzen',
  1477. // Error messages
  1478. errors: {
  1479. requiredFields: 'Bitte füllen Sie alle Pflichtfelder aus',
  1480. usernameRequired: 'Benutzername ist erforderlich, wenn Authentifizierung aktiviert ist',
  1481. enterTestEmail: 'Bitte geben Sie eine Test-E-Mail-Adresse ein',
  1482. smtpServerAndEmail: 'Bitte füllen Sie SMTP-Server und Absender-E-Mail aus, bevor Sie testen',
  1483. usernamePasswordRequired: 'Benutzername und Passwort sind erforderlich, wenn Authentifizierung aktiviert ist',
  1484. configureSmtpFirst: 'Bitte konfigurieren und testen Sie zuerst die SMTP-Einstellungen',
  1485. enableAuthFirst: 'Bitte aktivieren Sie zuerst die Authentifizierung, um E-Mail-basierte Funktionen nutzen zu können.',
  1486. },
  1487. // Success messages
  1488. success: {
  1489. settingsSaved: 'SMTP-Einstellungen erfolgreich gespeichert',
  1490. },
  1491. // Security options
  1492. securityOptions: {
  1493. starttls: 'STARTTLS (Port 587)',
  1494. ssl: 'SSL/TLS (Port 465)',
  1495. none: 'Keine (Port 25)',
  1496. },
  1497. // Authentication options
  1498. authOptions: {
  1499. enabled: 'Aktiviert',
  1500. disabled: 'Deaktiviert',
  1501. },
  1502. },
  1503. appearance: 'Erscheinungsbild',
  1504. notifications: 'Benachrichtigungen',
  1505. smartPlugs: 'Smart Plugs',
  1506. spoolman: 'Spoolman',
  1507. updates: 'Updates',
  1508. language: 'Sprache',
  1509. languageDescription: 'Wählen Sie Ihre bevorzugte Sprache',
  1510. theme: 'Design',
  1511. themeLight: 'Hell',
  1512. themeDark: 'Dunkel',
  1513. themeSystem: 'System',
  1514. defaultView: 'Standardansicht',
  1515. defaultViewDescription: 'Seite, die beim Öffnen der App angezeigt wird',
  1516. checkForUpdates: 'Nach Updates suchen',
  1517. autoUpdate: 'Automatische Updates',
  1518. currentVersion: 'Aktuelle Version',
  1519. latestVersion: 'Neueste Version',
  1520. upToDate: 'Sie sind auf dem neuesten Stand',
  1521. updateAvailable: 'Update verfügbar',
  1522. // Notifications
  1523. notificationLanguage: 'Benachrichtigungssprache',
  1524. notificationLanguageDescription: 'Sprache für Push-Benachrichtigungen',
  1525. bedCooledThreshold: 'Bett-Abkühlung Schwellenwert',
  1526. bedCooledThresholdDescription: 'Temperatur, unter der das Bett nach einem Druck als abgekühlt gilt',
  1527. userNotificationsEnabled: 'Benutzerbenachrichtigungen',
  1528. userNotificationsEnabledDescription: 'Aktiviert das Benutzerbenachrichtigungsmenü und E-Mail-Benachrichtigungen für Druckereignisse. Erfordert Erweiterte Authentifizierung.',
  1529. userNotificationsDisabledHint: 'Erweiterte Authentifizierung aktivieren, um Benutzerbenachrichtigungen zu verwenden.',
  1530. notificationProviders: 'Benachrichtigungsanbieter',
  1531. addProvider: 'Anbieter hinzufügen',
  1532. editProvider: 'Anbieter bearbeiten',
  1533. providerType: 'Anbietertyp',
  1534. testNotification: 'Testbenachrichtigung',
  1535. testSuccess: 'Testbenachrichtigung erfolgreich gesendet',
  1536. testFailed: 'Testbenachrichtigung konnte nicht gesendet werden',
  1537. quietHours: 'Ruhezeiten',
  1538. quietHoursDescription: 'Keine Störungen während dieser Zeiten',
  1539. quietHoursStart: 'Beginn',
  1540. quietHoursEnd: 'Ende',
  1541. events: {
  1542. title: 'Benachrichtigungsereignisse',
  1543. printStart: 'Druck gestartet',
  1544. printComplete: 'Druck abgeschlossen',
  1545. printFailed: 'Druck fehlgeschlagen',
  1546. printStopped: 'Druck gestoppt',
  1547. printProgress: 'Fortschrittsmeldungen',
  1548. printProgressDescription: 'Bei 25%, 50%, 75% benachrichtigen',
  1549. printerOffline: 'Drucker offline',
  1550. printerError: 'Druckerfehler',
  1551. filamentLow: 'Filament niedrig',
  1552. maintenanceDue: 'Wartung fällig',
  1553. maintenanceDueDescription: 'Benachrichtigen, wenn Wartung erforderlich',
  1554. },
  1555. // Smart Plugs
  1556. smartPlug: {
  1557. title: 'Smart Plugs',
  1558. add: 'Smart Plug hinzufügen',
  1559. edit: 'Smart Plug bearbeiten',
  1560. name: 'Name',
  1561. ipAddress: 'IP-Adresse',
  1562. linkedPrinter: 'Verknüpfter Drucker',
  1563. autoOn: 'Automatisch einschalten',
  1564. autoOnDescription: 'Einschalten beim Druckstart',
  1565. autoOff: 'Automatisch ausschalten',
  1566. autoOffDescription: 'Ausschalten nach Druckende',
  1567. offDelay: 'Ausschaltverzögerung',
  1568. offDelayMinutes: 'Minuten nach Druck',
  1569. offDelayTemp: 'Wenn Düse unter Temperatur',
  1570. currentState: 'Aktueller Status',
  1571. turnOn: 'Einschalten',
  1572. turnOff: 'Ausschalten',
  1573. },
  1574. // Filament Tracking Mode
  1575. filamentTracking: 'Filament-Verfolgung',
  1576. filamentTrackingDesc: 'Wählen Sie, wie Sie Ihre Filamentspulen verfolgen möchten. Sie können das integrierte Inventar oder einen externen Spoolman-Server verwenden.',
  1577. filamentChecks: 'Filament-Prüfungen',
  1578. disableFilamentWarnings: 'Filament-Warnungen deaktivieren',
  1579. disableFilamentWarningsDesc: 'Keine Warnungen über unzureichendes Filament beim Drucken oder Einreihen anzeigen',
  1580. preferLowestFilament: 'Niedrigsten Filamentrest bevorzugen',
  1581. preferLowestFilamentDesc: 'Bei mehreren passenden Spulen die mit dem geringsten Restfilament verwenden',
  1582. trackingModeBuiltIn: 'Integriertes Inventar',
  1583. trackingModeBuiltInDesc: 'RFID-Erkennung und Verbrauchserfassung inklusive',
  1584. trackingModeSpoolmanDesc: 'Externer Filament-Management-Server',
  1585. builtInFeatureRfid: 'Erkennt automatisch Bambu Lab RFID-Spulen im AMS',
  1586. builtInFeatureUsage: 'Erfasst den Filamentverbrauch pro Druck',
  1587. builtInFeatureCatalog: 'Spulen, Farben und K-Faktor-Profile verwalten',
  1588. builtInFeatureThirdParty: 'Drittanbieter-Spulen können Inventarspulen zugewiesen werden',
  1589. amsSyncButton: 'Gewichte vom AMS synchronisieren',
  1590. amsSyncTitle: 'Spulengewichte vom AMS synchronisieren',
  1591. amsSyncMessage: 'Alle Inventar-Spulengewichte werden mit den aktuellen AMS-Restwerten der verbundenen Drucker überschrieben. Verwenden Sie dies zur Wiederherstellung beschädigter Gewichtsdaten. Drucker müssen online sein.',
  1592. amsSyncing: 'Synchronisiere...',
  1593. amsSyncSuccess: '{{synced}} Spule(n) synchronisiert, {{skipped}} übersprungen',
  1594. amsSyncError: 'Synchronisierung der Gewichte vom AMS fehlgeschlagen',
  1595. // Spoolman settings
  1596. spoolmanUrl: 'Spoolman URL',
  1597. spoolmanUrlHint: 'URL Ihres Spoolman-Servers (z.B. http://localhost:7912)',
  1598. spoolmanConnected: 'Verbunden',
  1599. spoolmanDisconnected: 'Nicht verbunden',
  1600. status: 'Status',
  1601. connect: 'Verbinden',
  1602. disconnect: 'Trennen',
  1603. howSyncWorks: 'So funktioniert die Synchronisierung',
  1604. syncInfoRfidOnly: 'Nur offizielle Bambu Lab Spulen mit RFID werden synchronisiert',
  1605. syncInfoAutoCreate: 'Neue Spulen werden bei der ersten Synchronisierung automatisch in Spoolman erstellt',
  1606. syncInfoThirdPartySkipped: 'Nicht-Bambu-Lab-Spulen (Drittanbieter, nachgefüllt) werden übersprungen',
  1607. linkingExistingSpools: 'Vorhandene Spulen verknüpfen',
  1608. linkingExistingSpoolsDesc: 'Um vorhandene Spoolman-Spulen mit Ihrem AMS zu verknüpfen, fahren Sie über einen AMS-Slot und klicken Sie auf "Mit Spoolman verknüpfen".',
  1609. syncMode: 'Synchronisierungsmodus',
  1610. syncModeAuto: 'Automatisch',
  1611. syncModeManual: 'Nur manuell',
  1612. syncModeAutoDesc: 'AMS-Daten werden automatisch synchronisiert, wenn Änderungen erkannt werden',
  1613. syncModeManualDesc: 'Nur bei manueller Auslösung synchronisieren',
  1614. syncAmsData: 'AMS-Daten synchronisieren',
  1615. syncAmsDataDesc: 'AMS-Daten des Druckers manuell mit Spoolman synchronisieren',
  1616. allPrinters: 'Alle Drucker',
  1617. // Default printer
  1618. noDefaultPrinter: 'Kein Standard (jedes Mal fragen)',
  1619. // Sidebar
  1620. sidebarOrder: 'Seitenleisten-Reihenfolge',
  1621. // Camera
  1622. saveThumbnails: 'Vorschaubilder speichern',
  1623. captureFinishPhoto: 'Abschlussfoto aufnehmen',
  1624. noPrintersConfigured: 'Keine Drucker konfiguriert',
  1625. // Archive settings
  1626. archiveMode: {
  1627. always: 'Immer Archiveintrag erstellen',
  1628. never: 'Nie Archiveintrag erstellen',
  1629. ask: 'Jedes Mal fragen',
  1630. },
  1631. // Updates
  1632. checkForUpdatesLabel: 'Nach Updates suchen',
  1633. checkPrinterFirmware: 'Drucker-Firmware prüfen',
  1634. includeBetaUpdates: 'Beta-Versionen einschließen',
  1635. includeBetaUpdatesDesc: 'Über Beta- und Vorabversionen bei der Updateprüfung benachrichtigen',
  1636. // Queue
  1637. enableRetry: 'Wiederholung aktivieren',
  1638. // Home Assistant
  1639. homeAssistantDescription: 'Smart Plugs über Home Assistant steuern',
  1640. environmentManagedLabel: '(Umgebungsvariable)',
  1641. autoEnabledViaEnv: 'Automatisch über Umgebungsvariablen aktiviert',
  1642. urlFromEnvReadOnly: 'Wert wird über HA_URL Umgebungsvariable gesetzt (schreibgeschützt)',
  1643. tokenFromEnvReadOnly: 'Wert wird über HA_TOKEN Umgebungsvariable gesetzt (schreibgeschützt)',
  1644. // MQTT
  1645. mqttConnectedTo: 'Verbunden mit',
  1646. // Prometheus
  1647. prometheusDescription: 'Druckerdaten im Prometheus-Format bereitstellen',
  1648. // Smart plugs empty state
  1649. noSmartPlugsTitle: 'Keine Smart Plugs konfiguriert',
  1650. noSmartPlugsDescription: 'Fügen Sie einen Tasmota-basierten Smart Plug hinzu, um den Energieverbrauch zu verfolgen und die Stromsteuerung zu automatisieren.',
  1651. // Notifications empty state
  1652. noProvidersTitle: 'Keine Anbieter konfiguriert',
  1653. noProvidersDescription: 'Fügen Sie einen Anbieter hinzu, um Benachrichtigungen zu erhalten.',
  1654. noTemplatesAvailable: 'Keine Vorlagen verfügbar. Starten Sie das Backend neu, um Standardvorlagen zu laden.',
  1655. // API permissions
  1656. apiPermissionView: 'Druckerstatus und Warteschlange anzeigen',
  1657. apiPermissionEdit: 'Elemente zur Druckwarteschlange hinzufügen und entfernen',
  1658. // API keys
  1659. apiKeysEmptyTitle: 'Keine API-Schlüssel',
  1660. apiKeysEmptyDescription: 'Erstellen Sie einen API-Schlüssel zur Integration mit externen Diensten.',
  1661. // Users
  1662. noUsersFound: 'Keine Benutzer gefunden',
  1663. noGroupsFound: 'Keine Gruppen gefunden',
  1664. noGroupsAvailable: 'Keine Gruppen verfügbar',
  1665. passwordsDoNotMatch: 'Passwörter stimmen nicht überein',
  1666. systemGroupWarning: 'System-Gruppennamen können nicht geändert werden',
  1667. // Auth disabled
  1668. authDisabledTitle: 'Authentifizierung ist deaktiviert',
  1669. authDisabledFeature1: 'Anmeldung zum Zugriff auf das System erforderlich',
  1670. authDisabledFeature2: 'Mehrere Benutzer mit gruppenbasierten Berechtigungen erstellen',
  1671. authDisabledFeature3: 'Zugriff mit über 50 granularen Berechtigungen steuern',
  1672. // User deletion
  1673. userHasCreated: 'Dieser Benutzer hat erstellt:',
  1674. userItemsQuestion: 'Was möchten Sie mit diesen Elementen tun?',
  1675. deleteUserConfirm: 'Möchten Sie diesen Benutzer wirklich löschen?',
  1676. actionCannotBeUndone: 'Diese Aktion kann nicht rückgängig gemacht werden.',
  1677. // Smart plugs
  1678. addFirstSmartPlug: 'Ersten Smart Plug hinzufügen',
  1679. // Notifications
  1680. providers: 'Anbieter',
  1681. log: 'Protokoll',
  1682. testAll: 'Alle testen',
  1683. testResults: 'Testergebnisse',
  1684. testPassedCount: '{{count}} bestanden',
  1685. testFailedCount: '{{count}} fehlgeschlagen',
  1686. messageTemplates: 'Nachrichtenvorlagen',
  1687. messageTemplatesDescription: 'Passen Sie Benachrichtigungen für jedes Ereignis an.',
  1688. // API Keys section
  1689. apiKeys: 'API-Schlüssel',
  1690. apiKeysDescription: 'Erstellen Sie API-Schlüssel für externe Integrationen und Webhooks.',
  1691. createKey: 'Schlüssel erstellen',
  1692. apiKeyCreated: 'API-Schlüssel erfolgreich erstellt',
  1693. apiKeyCopyWarning: 'Kopieren Sie diesen Schlüssel jetzt - er wird nicht mehr angezeigt!',
  1694. useInApiBrowser: 'Im API-Browser verwenden',
  1695. createNewApiKey: 'Neuen API-Schlüssel erstellen',
  1696. keyName: 'Schlüsselname',
  1697. keyNamePlaceholder: 'z.B. Home Assistant, OctoPrint',
  1698. readStatus: 'Status lesen',
  1699. readStatusDescription: 'Druckerstatus und Warteschlange anzeigen',
  1700. manageQueue: 'Warteschlange verwalten',
  1701. manageQueueDescription: 'Elemente zur Druckwarteschlange hinzufügen und entfernen',
  1702. controlPrinter: 'Drucker steuern',
  1703. controlPrinterDescription: 'Drucke pausieren, fortsetzen und stoppen',
  1704. cloudAccess: 'Cloud-Zugriff erlauben',
  1705. cloudAccessDescription: 'Liest Bambu-Cloud-Presets und -Filamente in Ihrem Namen. Erfordert eine Anmeldung in Bambu Cloud.',
  1706. cloudBadge: 'Cloud',
  1707. legacyKey: 'Alt',
  1708. legacyKeyTooltip: 'Wurde vor der nutzerbezogenen Eigentümerschaft erstellt; neu erstellen, um Cloud-Zugriff zu nutzen',
  1709. unnamedKey: 'Unbenannter Schlüssel',
  1710. lastUsed: 'Zuletzt verwendet',
  1711. read: 'Lesen',
  1712. control: 'Steuern',
  1713. createFirstKey: 'Ersten Schlüssel erstellen',
  1714. webhookEndpoints: 'Webhook-Endpunkte',
  1715. webhookApiKeyHint: 'Verwenden Sie Ihren API-Schlüssel im X-API-Key-Header.',
  1716. webhook: {
  1717. getAllStatus: 'Alle Druckerstatus abrufen',
  1718. getSpecificStatus: 'Spezifischen Druckerstatus abrufen',
  1719. addToQueue: 'Zur Druckwarteschlange hinzufügen',
  1720. pausePrint: 'Druck pausieren',
  1721. resumePrint: 'Druck fortsetzen',
  1722. stopPrint: 'Druck stoppen',
  1723. },
  1724. apiBrowser: 'API-Browser',
  1725. apiBrowserDescription: 'Erkunden und testen Sie alle verfügbaren API-Endpunkte.',
  1726. apiKeyForTesting: 'API-Schlüssel zum Testen',
  1727. apiKeyPlaceholder: 'Fügen Sie hier Ihren API-Schlüssel ein, um authentifizierte Endpunkte zu testen...',
  1728. apiKeyHint: 'Dieser Schlüssel wird als X-API-Key-Header mit Anfragen gesendet.',
  1729. deleteApiKeyTitle: 'API-Schlüssel löschen',
  1730. deleteApiKeyMessage: 'Möchten Sie diesen API-Schlüssel wirklich löschen? Alle Integrationen, die diesen Schlüssel verwenden, funktionieren nicht mehr.',
  1731. deleteKey: 'Schlüssel löschen',
  1732. // Filament tab
  1733. amsDisplayThresholds: 'AMS-Anzeigeschwellenwerte',
  1734. amsThresholdsDescription: 'Konfigurieren Sie Farbschwellenwerte für AMS-Feuchtigkeits- und Temperaturanzeigen.',
  1735. humidity: 'Luftfeuchtigkeit',
  1736. goodGreen: 'Gut (grün)',
  1737. fairOrange: 'Mittel (orange)',
  1738. aboveFairBad: 'Über dem mittleren Schwellenwert wird rot angezeigt (schlecht)',
  1739. fairAlsoDryingThreshold: 'Dieser Schwellenwert wird auch für die automatische Trocknung verwendet',
  1740. temperature: 'Temperatur',
  1741. goodBlue: 'Gut (blau)',
  1742. aboveFairHot: 'Über dem mittleren Schwellenwert wird rot angezeigt (heiß)',
  1743. historyRetention: 'Verlaufsaufbewahrung',
  1744. keepSensorHistory: 'Sensorverlauf behalten für',
  1745. historyRetentionDescription: 'Ältere Feuchtigkeits- und Temperaturdaten werden automatisch gelöscht',
  1746. defaultPrintOptions: 'Standard-Druckoptionen',
  1747. defaultPrintOptionsDescription: 'Standardwerte für Druckoptionen bei neuen Drucken festlegen. Diese können im Druckdialog pro Druck überschrieben werden.',
  1748. defaultBedLevelling: 'Bett-Nivellierung',
  1749. defaultBedLevellingDesc: 'Bett vor dem Druck automatisch nivellieren',
  1750. defaultFlowCali: 'Fluss-Kalibrierung',
  1751. defaultFlowCaliDesc: 'Extrusionsfluss kalibrieren',
  1752. defaultVibrationCali: 'Vibrationskalibrierung',
  1753. defaultVibrationCaliDesc: 'Ringing-Artefakte reduzieren',
  1754. defaultLayerInspect: 'Erste-Schicht-Inspektion',
  1755. defaultLayerInspectDesc: 'KI-Inspektion der ersten Schicht',
  1756. defaultTimelapse: 'Zeitraffer',
  1757. defaultTimelapseDesc: 'Zeitraffervideo aufnehmen',
  1758. staggeredStart: 'Staggered Start',
  1759. staggeredStartDescription: 'Default group size and interval when staggering multi-printer batch starts. Can be overridden per batch in the print modal.',
  1760. plateClear: 'Druckplatte-Bestätigung',
  1761. requirePlateClear: 'Druckplatte-Bestätigung erforderlich',
  1762. requirePlateClearDescription: 'Wenn aktiviert, wartet der Scheduler auf eine Druckplatten-Bestätigung pro Drucker, bevor geplante Drucke auf Druckern mit abgeschlossenen Aufträgen gestartet werden. Wenn dies deaktiviert ist, werden auch das Druckplatten-Status-Badge und die Schaltfläche "Druckplatte als freigegeben markieren" auf den Druckerkarten ausgeblendet.',
  1763. gcodeInjection: 'G-code Injection',
  1764. gcodeInjectionDescription: 'Konfigurieren Sie benutzerdefinierten G-code, der am Anfang und/oder Ende von Drucken für Auto-Print-Systeme wie Farmloop, SwapMod, AutoClear und Printflow 3D eingefügt wird. Snippets werden pro Druckermodell konfiguriert und angewendet, wenn "G-code einfügen" bei einem Warteschlangen-Element aktiviert ist.',
  1765. gcodeInjectionNoPrinters: 'Keine Drucker gefunden. Fügen Sie Drucker hinzu, um G-code-Snippets zu konfigurieren.',
  1766. gcodeStartLabel: 'Start G-code',
  1767. gcodeEndLabel: 'End G-code',
  1768. gcodeStartPlaceholder: 'G-code, der vor dem Druckstart eingefügt wird...',
  1769. gcodeEndPlaceholder: 'G-code, der nach dem Druckende angefügt wird...',
  1770. staggerGroupSize: 'Group size',
  1771. staggerGroupSizeHelp: 'Printers to start simultaneously per group',
  1772. staggerInterval: 'Interval (minutes)',
  1773. staggerIntervalHelp: 'Delay between each group starting',
  1774. queueDrying: 'Automatische Trocknung',
  1775. queueDryingDescription: 'AMS-Filament automatisch trocknen, wenn der Drucker zwischen Warteschlangen-Drucken im Leerlauf ist. Verwendet den Feuchtigkeitsschwellenwert oben.',
  1776. queueDryingEnabled: 'Automatische Trocknung aktivieren',
  1777. queueDryingEnabledDescription: 'AMS-Trocknung automatisch starten, wenn der Drucker im Leerlauf ist und die Feuchtigkeit über dem Schwellenwert liegt',
  1778. queueDryingBlock: 'Auf Trocknung warten',
  1779. queueDryingBlockDescription: 'Druckwarteschlange blockieren, bis die Trocknung abgeschlossen ist. Wenn aus, haben Drucke Vorrang.',
  1780. ambientDryingEnabled: 'Umgebungstrocknung',
  1781. ambientDryingEnabledDescription: 'Filament auf inaktiven Druckern automatisch trocknen, wenn die Luftfeuchtigkeit den Schwellenwert überschreitet — auch ohne Warteschlange.',
  1782. dryingPresets: 'Trocknungsvoreinstellungen',
  1783. dryingPresetsDescription: 'Temperatur und Dauer pro Filamenttyp. AMS 2 Pro verwendet niedrigere Temperaturen, AMS-HT unterstützt höhere.',
  1784. dryingFilament: 'Filament',
  1785. printModal: 'Druckdialog',
  1786. expandCustomMapping: 'Benutzerdefinierte Zuordnung standardmäßig erweitern',
  1787. expandCustomMappingDescription: 'Bei Druck auf mehrere Drucker die AMS-Zuordnung pro Drucker erweitert anzeigen',
  1788. // User management
  1789. authentication: 'Authentifizierung',
  1790. authEnabledDescription: 'Ihre Instanz ist mit Benutzerauthentifizierung gesichert',
  1791. authDisabledDescription: 'Aktivieren Sie die Anmeldepflicht und verwalten Sie den Benutzerzugriff',
  1792. authDisabledMessage: 'Aktivieren Sie die Authentifizierung, um Benutzerkonten zu erstellen, Berechtigungen zu verwalten und Ihre Bambuddy-Instanz zu sichern.',
  1793. enableAuthentication: 'Authentifizierung aktivieren',
  1794. currentUser: 'Aktueller Benutzer',
  1795. changePassword: 'Passwort ändern',
  1796. admin: 'Admin',
  1797. users: 'Benutzer',
  1798. addUser: 'Benutzer hinzufügen',
  1799. groups: 'Gruppen',
  1800. addGroup: 'Gruppe hinzufügen',
  1801. system: 'System',
  1802. noDescription: 'Keine Beschreibung',
  1803. userCount: '{{count}} Benutzer',
  1804. permissionCount: '{{count}} Berechtigungen',
  1805. createUser: 'Benutzer erstellen',
  1806. username: 'Benutzername',
  1807. enterUsername: 'Benutzername eingeben',
  1808. password: 'Passwort',
  1809. enterPassword: 'Passwort eingeben (min. 6 Zeichen)',
  1810. confirmPassword: 'Passwort bestätigen',
  1811. confirmPasswordPlaceholder: 'Passwort bestätigen',
  1812. // Title tooltips
  1813. viewReleaseOnGitHub: 'Release auf GitHub anzeigen',
  1814. turnAllPlugsOn: 'Alle Stecker einschalten',
  1815. turnAllPlugsOff: 'Alle Stecker ausschalten',
  1816. // Modal: Clear logs
  1817. clearNotificationLogs: 'Benachrichtigungsprotokolle löschen',
  1818. clearLogsMessage: 'Dadurch werden alle Benachrichtigungsprotokolle, die älter als 30 Tage sind, dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.',
  1819. clearLogs: 'Protokolle löschen',
  1820. // Modal: Reset UI
  1821. resetUiPreferences: 'UI-Einstellungen zurücksetzen',
  1822. resetUiPreferencesMessage: 'Dadurch werden alle UI-Einstellungen auf Standardwerte zurückgesetzt: Seitenleisten-Reihenfolge, Theme, Dashboard-Layout, Ansichtsmodi und Sortiereinstellungen. Ihre Drucker, Archive und Servereinstellungen werden NICHT beeinträchtigt. Die Seite wird nach dem Löschen neu geladen.',
  1823. resetPreferences: 'Einstellungen zurücksetzen',
  1824. // Modal: Delete group
  1825. deleteGroupTitle: 'Gruppe löschen',
  1826. deleteGroupMessage: 'Möchten Sie diese Gruppe wirklich löschen? Benutzer in dieser Gruppe verlieren diese Berechtigungen.',
  1827. deleteGroup: 'Gruppe löschen',
  1828. // Modal: Disable auth
  1829. disableAuthenticationTitle: 'Authentifizierung deaktivieren',
  1830. disableAuthenticationMessage: 'Möchten Sie die Authentifizierung wirklich deaktivieren? Dadurch wird Ihre Bambuddy-Instanz ohne Anmeldung zugänglich. Alle Benutzer bleiben in der Datenbank, aber die Authentifizierung wird deaktiviert.',
  1831. disableAuthentication: 'Authentifizierung deaktivieren',
  1832. // Additional settings
  1833. configureBambuddy: 'Bambuddy konfigurieren',
  1834. systemDefault: 'Systemstandard',
  1835. archiveSettings: 'Archiv-Einstellungen',
  1836. newWindow: 'Neues Fenster',
  1837. embeddedOverlay: 'Eingebettetes Overlay',
  1838. preferredSlicer: 'Bevorzugter Slicer',
  1839. preferredSlicerDescription: 'Wähle die Slicer-Anwendung zum Öffnen von Dateien',
  1840. orcaslicerKnownIssuesWarning: 'OrcaSlicer 2.3.2 / 2.4.0-dev haben bekannte CLI-Bugs, die das Slicen vieler von BambuStudio erstellter 3MF-Dateien blockieren — siehe Upstream-Issues #12426 (Segfault bei bemalten Multi-Extruder-Dateien) und #13386 (zu strikte Parameter-Range-Validierung). Bis die Upstream-Fixes verfügbar sind, wird Bambu Studio empfohlen.',
  1841. useSlicerApi: 'Slicer-API verwenden',
  1842. useSlicerApiDescription: 'Wenn aktiv, öffnen "Slice"-Aktionen das in-App Slicer-Modal und rufen den Slicer-API-Sidecar. Aus (Standard): Übergabe an den Desktop-Slicer per URI-Schema.',
  1843. slicerCard: 'Slicer',
  1844. orcaslicerApiUrl: 'OrcaSlicer Sidecar-URL',
  1845. bambuStudioApiUrl: 'Bambu Studio Sidecar-URL',
  1846. slicerApiUrlDescription: 'URL des Slicer-API-Sidecar-Containers. Leer lassen, um die SLICER_API_URL- bzw. BAMBU_STUDIO_API_URL-Umgebungsvariablen zu nutzen.',
  1847. externalCameras: 'Externe Kameras',
  1848. costTracking: 'Kostenverfolgung',
  1849. printsOnly: 'Nur Drucke',
  1850. totalConsumption: 'Gesamtverbrauch',
  1851. dataManagement: 'Datenverwaltung',
  1852. storageUsage: 'Speichernutzung',
  1853. storageUsageDescription: 'Aufschlüsselung der Datennutzung nach Kategorie',
  1854. storageUsageTotal: 'Gesamt',
  1855. storageUsageErrors: 'Fehler',
  1856. storageUsageOtherBreakdown: 'Sonstiges (enthält statische Assets, Skripte und Konfigurationsdateien)',
  1857. storageUsageSystem: 'System',
  1858. storageUsageData: 'Daten',
  1859. storageUsageUnavailable: 'Speichernutzungsinformationen nicht verfügbar',
  1860. clearNotificationLogsDescription: 'Benachrichtigungsprotokolle älter als 30 Tage löschen',
  1861. resetUiPreferencesDescription: 'Seitenleisten-Reihenfolge, Theme, Ansichtsmodi und Layout-Einstellungen zurücksetzen. Drucker, Archive und Einstellungen werden nicht beeinflusst.',
  1862. enableHomeAssistant: 'Home Assistant aktivieren',
  1863. enableMqtt: 'MQTT aktivieren',
  1864. useTls: 'TLS verwenden',
  1865. enableMetricsEndpoint: 'Metrik-Endpunkt aktivieren',
  1866. availableMetrics: 'Verfügbare Metriken',
  1867. editUser: 'Benutzer bearbeiten',
  1868. deleteUserTitle: 'Benutzer löschen',
  1869. groupName: 'Gruppenname',
  1870. // Placeholders
  1871. leaveEmptyForAnonymous: 'Leer lassen für anonym',
  1872. leaveEmptyForNoAuth: 'Leer lassen für keine Authentifizierung',
  1873. enterNewPassword: 'Neues Passwort eingeben',
  1874. confirmNewPassword: 'Neues Passwort bestätigen',
  1875. enterGroupName: 'Gruppenname eingeben',
  1876. enterDescriptionOptional: 'Beschreibung eingeben (optional)',
  1877. enterCurrentPassword: 'Aktuelles Passwort eingeben',
  1878. enterNewPasswordMin6: 'Neues Passwort eingeben (min. 6 Zeichen)',
  1879. toast: {
  1880. keyCopied: 'Schlüssel in Zwischenablage kopiert',
  1881. copyFailed: 'Schlüssel konnte nicht kopiert werden',
  1882. keyAddedToBrowser: 'Schlüssel zum API-Browser hinzugefügt',
  1883. clearLogsFailed: 'Protokolle konnten nicht gelöscht werden',
  1884. uiPreferencesReset: 'UI-Einstellungen zurückgesetzt. Wird neu geladen...',
  1885. authDisabled: 'Authentifizierung erfolgreich deaktiviert',
  1886. authDisableFailed: 'Authentifizierung konnte nicht deaktiviert werden',
  1887. apiKeyCreated: 'API-Schlüssel erstellt',
  1888. apiKeyDeleted: 'API-Schlüssel gelöscht',
  1889. userCreated: 'Benutzer erfolgreich erstellt',
  1890. userUpdated: 'Benutzer erfolgreich aktualisiert',
  1891. userDeleted: 'Benutzer erfolgreich gelöscht',
  1892. groupCreated: 'Gruppe erfolgreich erstellt',
  1893. groupUpdated: 'Gruppe erfolgreich aktualisiert',
  1894. groupDeleted: 'Gruppe erfolgreich gelöscht',
  1895. fillRequiredFields: 'Bitte füllen Sie alle erforderlichen Felder aus',
  1896. passwordsDoNotMatch: 'Passwörter stimmen nicht überein',
  1897. passwordTooShort: 'Passwort muss mindestens 6 Zeichen lang sein',
  1898. enterGroupName: 'Bitte geben Sie einen Gruppennamen ein',
  1899. settingsSaved: 'Einstellungen gespeichert',
  1900. noPermissionUpdate: 'Sie haben keine Berechtigung, Einstellungen zu ändern',
  1901. cameraSettingsSaved: 'Kamera-Einstellungen gespeichert',
  1902. enterCameraUrl: 'Bitte geben Sie eine Kamera-URL ein',
  1903. passwordChanged: 'Passwort erfolgreich geändert',
  1904. connectionFailed: 'Verbindung fehlgeschlagen',
  1905. testFailed: 'Test fehlgeschlagen',
  1906. cameraConnected: 'Kamera verbunden{{resolution}}',
  1907. },
  1908. testConnection: 'Verbindung testen',
  1909. catalog: {
  1910. spoolCatalog: 'Spulenkatalog',
  1911. spoolCatalogDescription: 'Leerspulengewichte nach Marke/Typ. Wird für die automatische Gewichtssuche beim Hinzufügen von Spulen verwendet.',
  1912. searchCatalog: 'Katalog durchsuchen...',
  1913. addNewEntry: 'Neuen Eintrag hinzufügen',
  1914. namePlaceholder: 'Name (z.B. Bambu Lab - Plastik)',
  1915. weight: 'Gewicht',
  1916. type: 'Typ',
  1917. default: 'Standard',
  1918. custom: 'Benutzerdefiniert',
  1919. noMatch: 'Keine Einträge entsprechen Ihrer Suche',
  1920. empty: 'Keine Einträge im Katalog',
  1921. deleteEntry: 'Eintrag löschen',
  1922. deleteConfirm: 'Möchten Sie "{{name}}" wirklich löschen?',
  1923. resetCatalog: 'Katalog zurücksetzen',
  1924. resetConfirm: 'Katalog auf Standardwerte zurücksetzen? Alle benutzerdefinierten Einträge werden entfernt.',
  1925. loadFailed: 'Spulenkatalog konnte nicht geladen werden',
  1926. nameWeightRequired: 'Name und Gewicht sind erforderlich',
  1927. entryAdded: 'Eintrag hinzugefügt',
  1928. addFailed: 'Eintrag konnte nicht hinzugefügt werden',
  1929. entryUpdated: 'Eintrag aktualisiert',
  1930. updateFailed: 'Eintrag konnte nicht aktualisiert werden',
  1931. entryDeleted: 'Eintrag gelöscht',
  1932. deleteFailed: 'Eintrag konnte nicht gelöscht werden',
  1933. resetSuccess: 'Katalog auf Standardwerte zurückgesetzt',
  1934. resetFailed: 'Katalog konnte nicht zurückgesetzt werden',
  1935. exported: '{{count}} Einträge exportiert',
  1936. imported: '{{added}} Einträge importiert ({{skipped}} übersprungen)',
  1937. importFailed: 'Import fehlgeschlagen: ungültiges JSON-Format',
  1938. exportTooltip: 'Katalog als JSON exportieren',
  1939. importTooltip: 'Katalog aus JSON importieren',
  1940. resetTooltip: 'Auf Standardwerte zurücksetzen',
  1941. selectedCount: '{{count}} ausgewählt',
  1942. deleteSelected: 'Ausgewählte löschen',
  1943. bulkDeleteConfirm: 'Möchten Sie {{count}} Einträge wirklich löschen?',
  1944. bulkDeleted: '{{count}} Einträge gelöscht',
  1945. bulkDeleteFailed: 'Fehler beim Löschen der Einträge',
  1946. },
  1947. colorCatalog: {
  1948. title: 'Farbkatalog',
  1949. description: 'Filamentfarben nach Hersteller/Material. Wird für die automatische Farbsuche beim Hinzufügen von Spulen verwendet.',
  1950. searchColors: 'Farben durchsuchen...',
  1951. allManufacturers: 'Alle Hersteller',
  1952. addNewColor: 'Neue Farbe hinzufügen',
  1953. manufacturer: 'Hersteller',
  1954. colorName: 'Farbname',
  1955. hex: 'Hex',
  1956. materialOptional: 'Material (optional)',
  1957. showing: '{{filtered}} von {{total}} Farben angezeigt',
  1958. noMatch: 'Keine Farben entsprechen Ihrer Suche',
  1959. empty: 'Keine Farben im Katalog',
  1960. deleteColor: 'Farbe löschen',
  1961. deleteConfirm: 'Möchten Sie "{{name}}" wirklich löschen?',
  1962. resetCatalog: 'Farbkatalog zurücksetzen',
  1963. resetConfirm: 'Katalog auf Standardwerte zurücksetzen? Alle benutzerdefinierten Farben werden entfernt.',
  1964. sync: 'Sync',
  1965. starting: 'Starten...',
  1966. syncTooltip: 'Von FilamentColors.xyz synchronisieren (2000+ Farben)',
  1967. loadFailed: 'Farbkatalog konnte nicht geladen werden',
  1968. fieldsRequired: 'Hersteller, Farbname und Hex-Farbe sind erforderlich',
  1969. colorAdded: 'Farbe hinzugefügt',
  1970. addFailed: 'Farbe konnte nicht hinzugefügt werden',
  1971. colorUpdated: 'Farbe aktualisiert',
  1972. updateFailed: 'Farbe konnte nicht aktualisiert werden',
  1973. colorDeleted: 'Farbe gelöscht',
  1974. deleteFailed: 'Farbe konnte nicht gelöscht werden',
  1975. resetSuccess: 'Farbkatalog auf Standardwerte zurückgesetzt',
  1976. resetFailed: 'Katalog konnte nicht zurückgesetzt werden',
  1977. syncUpToDate: 'Bereits aktuell ({{count}} Farben geprüft)',
  1978. syncComplete: '{{added}} neue Farben hinzugefügt ({{skipped}} bereits vorhanden)',
  1979. syncError: 'Sync-Fehler',
  1980. syncFailed: 'Synchronisierung von FilamentColors.xyz fehlgeschlagen',
  1981. exported: '{{count}} Farben exportiert',
  1982. imported: '{{added}} Farben importiert ({{skipped}} übersprungen)',
  1983. importFailed: 'Import fehlgeschlagen: ungültiges JSON-Format',
  1984. selectedCount: '{{count}} ausgewählt',
  1985. deleteSelected: 'Ausgewählte löschen',
  1986. bulkDeleteConfirm: 'Möchten Sie {{count}} Farben wirklich löschen?',
  1987. bulkDeleted: '{{count}} Farben gelöscht',
  1988. bulkDeleteFailed: 'Fehler beim Löschen der Farben',
  1989. },
  1990. // General tab
  1991. dateFormat: 'Datumsformat',
  1992. dateFormatUs: 'US (MM/TT/JJJJ)',
  1993. dateFormatEu: 'EU (TT/MM/JJJJ)',
  1994. dateFormatIso: 'ISO (JJJJ-MM-TT)',
  1995. timeFormat: 'Zeitformat',
  1996. timeFormat12: '12-Stunden (3:30 PM)',
  1997. timeFormat24: '24-Stunden (15:30)',
  1998. defaultPrinter: 'Standarddrucker',
  1999. defaultPrinterDescription: 'Diesen Drucker für Uploads, Nachdrucke und andere Vorgänge vorauswählen.',
  2000. slicerBambuStudio: 'Bambu Studio',
  2001. slicerOrcaSlicer: 'OrcaSlicer',
  2002. sidebarOrderDescription: 'Elemente in der Seitenleiste per Drag & Drop neu anordnen. Hier auf Standardreihenfolge zurücksetzen.',
  2003. setDefault: 'Standard setzen',
  2004. sidebarOrderSetDefaultHint: 'Standard setzen übernimmt die aktuelle Menüreihenfolge für Benutzer, die ihre noch nicht angepasst haben.',
  2005. sidebarDefaultSet: 'Standard-Menüreihenfolge wurde festgelegt.',
  2006. sidebarDefaultCleared: 'Standard-Menüreihenfolge gelöscht.',
  2007. sidebarDefaultFailed: 'Festlegen der Standard-Menüreihenfolge fehlgeschlagen.',
  2008. reset: 'Zurücksetzen',
  2009. // Appearance
  2010. darkMode: 'Dunkelmodus',
  2011. lightMode: 'Hellmodus',
  2012. active: '(aktiv)',
  2013. background: 'Hintergrund',
  2014. accent: 'Akzent',
  2015. style: 'Stil',
  2016. bgNeutral: 'Neutral',
  2017. bgWarm: 'Warm',
  2018. bgCool: 'Kühl',
  2019. bgOled: 'OLED Schwarz',
  2020. bgSlate: 'Schieferblau',
  2021. bgForest: 'Waldgrün',
  2022. accentGreen: 'Grün',
  2023. accentTeal: 'Türkis',
  2024. accentBlue: 'Blau',
  2025. accentOrange: 'Orange',
  2026. accentPurple: 'Lila',
  2027. accentRed: 'Rot',
  2028. styleClassic: 'Klassisch',
  2029. styleGlow: 'Leuchtend',
  2030. styleVibrant: 'Lebendig',
  2031. themeToggleHint: 'Zwischen Hell- und Dunkelmodus mit dem Sonnen-/Mondsymbol in der Seitenleiste wechseln.',
  2032. // Archive
  2033. autoArchivePrints: 'Drucke automatisch archivieren',
  2034. autoArchiveDescription: '3MF-Dateien automatisch speichern, wenn Drucke abgeschlossen sind',
  2035. saveThumbnailsDescription: 'Vorschaubilder aus 3MF-Dateien extrahieren und speichern',
  2036. captureFinishPhotoDescription: 'Foto von der Druckerkamera aufnehmen, wenn der Druck abgeschlossen ist',
  2037. ffmpegNotInstalled: 'ffmpeg nicht installiert',
  2038. ffmpegRequired: 'Kameraaufnahme benötigt ffmpeg. Installieren über <brew>brew install ffmpeg</brew> (macOS) oder <apt>apt install ffmpeg</apt> (Linux).',
  2039. // Camera
  2040. camera: 'Kamera',
  2041. cameraViewMode: 'Kamera-Ansichtsmodus',
  2042. cameraOverlayDescription: 'Kamera öffnet sich als größenveränderbares Overlay auf dem Hauptbildschirm',
  2043. cameraWindowDescription: 'Kamera öffnet sich in einem separaten Browserfenster',
  2044. externalCamerasDescription: 'Externe Kameras konfigurieren, um die eingebaute Druckerkamera zu ersetzen. Unterstützt MJPEG-Streams, RTSP, HTTP-Snapshots und USB-Kameras (V4L2). Wenn aktiviert, wird die externe Kamera für Live-Ansicht und Abschlussfotos verwendet.',
  2045. cameraPlaceholderUsb: 'Gerätepfad (/dev/video0)',
  2046. cameraPlaceholderUrl: 'Kamera-URL (rtsp://... oder http://...)',
  2047. cameraTypeMjpeg: 'MJPEG-Stream',
  2048. cameraTypeRtsp: 'RTSP-Stream',
  2049. cameraTypeSnapshot: 'HTTP-Snapshot',
  2050. cameraTypeUsb: 'USB-Kamera (V4L2)',
  2051. cameraSnapshotUrl: 'Snapshot-URL (optional)',
  2052. cameraSnapshotUrlPlaceholder: 'http://192.168.1.61:1984/api/frame.jpeg?src=printer',
  2053. cameraSnapshotUrlHelp: 'URL für Einzelbildaufnahmen — wird für Benachrichtigungs-Vorschaubilder, Abschlussfotos, Zeitraffer und Plattenerkennung verwendet. Leer lassen, um Bilder aus dem oben konfigurierten Live-Stream zu verwenden. Nützlich für go2rtc (/api/frame.jpeg) und IP-Kameras mit dediziertem Snapshot-Endpunkt.',
  2054. cameraRotation: 'Drehung',
  2055. test: 'Testen',
  2056. connected: 'Verbunden',
  2057. disconnected: 'Getrennt',
  2058. // Cost tracking
  2059. currency: 'Währung',
  2060. defaultFilamentCost: 'Standard-Filamentkosten (pro kg)',
  2061. electricityCost: 'Stromkosten pro kWh',
  2062. energyDisplayMode: 'Energieanzeige-Modus',
  2063. energyModePrintDescription: 'Dashboard zeigt Summe der während Drucken verbrauchten Energie',
  2064. energyModeTotalDescription: 'Dashboard zeigt Gesamtenergie der Smart Plugs',
  2065. // File Manager
  2066. fileManager: 'Dateimanager',
  2067. createArchiveEntry: 'Archiveintrag beim Drucken erstellen',
  2068. createArchiveEntryDescription: 'Beim Drucken aus dem Dateimanager optional einen Archiveintrag erstellen',
  2069. lowDiskSpaceWarning: 'Warnung bei wenig Speicherplatz',
  2070. lowDiskSpaceDescription: 'Warnung anzeigen, wenn freier Speicherplatz unter diesen Schwellenwert fällt',
  2071. // Updates
  2072. printerFirmware: 'Drucker-Firmware',
  2073. checkFirmwareDescription: 'Nach Firmware-Updates von Bambu Lab suchen',
  2074. bambuddySoftware: 'Bambuddy Software',
  2075. autoCheckDescription: 'Automatisch beim Start nach neuen Versionen suchen',
  2076. checkNow: 'Jetzt prüfen',
  2077. updateAvailableVersion: 'Update verfügbar: v{{version}}',
  2078. releaseNotes: 'Versionshinweise',
  2079. updateViaDocker: 'Update über Docker Compose:',
  2080. updateViaHomeAssistant: 'Updates werden vom Home Assistant Supervisor verwaltet. Öffne Einstellungen → Add-ons → Bambuddy in Home Assistant, um die neue Version zu installieren.',
  2081. installUpdate: 'Update installieren',
  2082. latestVersionRunning: 'Sie verwenden die neueste Version',
  2083. failedToCheckUpdates: 'Update-Prüfung fehlgeschlagen: {{error}}',
  2084. // Data Management
  2085. backupRestore: 'Sicherung & Wiederherstellung',
  2086. backupRestoreDescription: 'Einstellungen exportieren/importieren und GitHub-Backup konfigurieren',
  2087. goToBackup: 'Zur Sicherung',
  2088. // Network tab
  2089. externalUrl: 'Externe URL',
  2090. externalUrlDescription: 'Die externe URL, unter der Bambuddy erreichbar ist. Wird für Benachrichtigungsbilder und externe Integrationen verwendet.',
  2091. bambuddyUrl: 'Bambuddy-URL',
  2092. externalUrlHint: 'Protokoll und Port angeben (z.B. http://192.168.1.100:8000)',
  2093. ftpRetry: 'FTP-Wiederholung',
  2094. ftpRetryDescription: 'FTP-Operationen bei unzuverlässigem Drucker-WLAN wiederholen. Gilt für 3MF-Downloads, Druck-Uploads, Zeitraffer-Downloads und Firmware-Updates.',
  2095. autoRetryDescription: 'Fehlgeschlagene FTP-Operationen automatisch wiederholen',
  2096. retryAttempts: 'Wiederholungsversuche',
  2097. retryDelay: 'Wiederholungsverzögerung',
  2098. connectionTimeout: 'Verbindungs-Timeout',
  2099. time_one: '{{count}} Mal',
  2100. time_other: '{{count}} Mal',
  2101. second_one: '{{count}} Sekunde',
  2102. second_other: '{{count}} Sekunden',
  2103. nSeconds: '{{count}} Sekunden',
  2104. increaseForWeakWifi: 'Erhöhen für Drucker mit schwachem WLAN',
  2105. // Home Assistant
  2106. homeAssistant: 'Home Assistant',
  2107. homeAssistantFullDescription: 'Mit Home Assistant verbinden, um Smart Plugs über die HA REST-API zu steuern. Unterstützt Switch-, Light-, Input_Boolean- und Script-Entitäten.',
  2108. homeAssistantUrl: 'Home Assistant URL',
  2109. longLivedAccessToken: 'Langlebiges Zugriffstoken',
  2110. haTokenHint: 'Token in HA erstellen: Profil → Langlebige Zugriffstoken → Token erstellen',
  2111. connectionSuccessful: 'Verbindung erfolgreich',
  2112. connectionFailed: 'Verbindung fehlgeschlagen',
  2113. haConnectionSuccess: 'Erfolgreich mit Home Assistant verbunden.',
  2114. haConnectionFailed: 'Verbindung zu Home Assistant fehlgeschlagen.',
  2115. // MQTT
  2116. mqttPublishing: 'MQTT-Veröffentlichung',
  2117. mqttDescription: 'BamBuddy-Ereignisse an einen externen MQTT-Broker zur Integration mit Node-RED, Home Assistant und anderen Automatisierungssystemen veröffentlichen.',
  2118. mqttEnableDescription: 'Ereignisse an externen MQTT-Broker veröffentlichen',
  2119. brokerHostname: 'Broker-Hostname',
  2120. port: 'Port',
  2121. usernameOptional: 'Benutzername (optional)',
  2122. passwordOptional: 'Passwort (optional)',
  2123. topicPrefix: 'Topic-Präfix',
  2124. topicPrefixHint: 'Topics werden sein: {{prefix}}/printers/<serial>/status, etc.',
  2125. // Prometheus
  2126. prometheusMetrics: 'Prometheus-Metriken',
  2127. prometheusEndpointDescription: 'Druckermetriken unter <code>/api/v1/metrics</code> für Prometheus/Grafana-Überwachung bereitstellen.',
  2128. bearerTokenOptional: 'Bearer-Token (optional)',
  2129. bearerTokenHint: 'Wenn gesetzt, müssen Anfragen <code>Authorization: Bearer <token></code> enthalten',
  2130. metricsConnectionStatus: 'Verbindungsstatus',
  2131. metricsPrinterState: 'Druckerstatus (idle/printing/etc)',
  2132. metricsPrintProgress: 'Druckfortschritt 0-100%',
  2133. metricsBedTemp: 'Betttemperatur',
  2134. metricsNozzleTemp: 'Düsentemperatur',
  2135. metricsPrintsTotal: 'Gesamtdrucke nach Ergebnis',
  2136. metricsMore: '...und mehr (Schichten, Lüfter, Warteschlange, Filamentverbrauch)',
  2137. // Smart Plugs
  2138. smartPlugsDescription: 'Smart Plugs (Tasmota oder Home Assistant) verbinden, um Stromsteuerung zu automatisieren und Energieverbrauch für Ihre Drucker zu verfolgen.',
  2139. allOn: 'Alle Ein',
  2140. allOff: 'Alle Aus',
  2141. addSmartPlug: 'Smart Plug hinzufügen',
  2142. energySummary: 'Energieübersicht',
  2143. currentPower: 'Aktuelle Leistung',
  2144. plugsOnline: '{{reachable}}/{{total}} Plugs online',
  2145. today: 'Heute',
  2146. yesterday: 'Gestern',
  2147. total: 'Gesamt',
  2148. enablePlugsForSummary: 'Plugs aktivieren, um Energieübersicht zu sehen',
  2149. addNotificationProvider: 'Hinzufügen',
  2150. // Users
  2151. systemBadge: '(System)',
  2152. creating: 'Erstellen...',
  2153. changing: 'Ändern...',
  2154. deleteUserAndItems: 'Benutzer UND dessen Elemente löschen',
  2155. deleteUserKeepItems: 'Benutzer löschen, Elemente behalten (werden herrenlos)',
  2156. ok: 'OK',
  2157. // 2FA settings
  2158. twoFa: {
  2159. totpTitle: 'Authenticator-App (TOTP)',
  2160. totpDesc: 'Verwende eine Authenticator-App wie Google Authenticator, Aegis oder Authy.',
  2161. emailOtpTitle: 'E-Mail OTP',
  2162. emailOtpDesc: 'Sende einen Einmalcode an {{email}} beim Einloggen.',
  2163. emailOtpNoEmail: 'Füge eine E-Mail-Adresse zu deinem Konto hinzu, um diese Methode zu aktivieren.',
  2164. addEmailFirst: 'Dein Konto hat keine E-Mail-Adresse. Bitte einen Administrator, eine hinzuzufügen.',
  2165. setupTotp: 'Authenticator-App einrichten',
  2166. setupAuthApp: 'Authenticator-App einrichten',
  2167. setupInstructions: 'Scanne den QR-Code mit deiner Authenticator-App und bestätige mit einem Code.',
  2168. manualEntry: 'Kein Scanner? Gib dieses Secret manuell ein:',
  2169. scannedContinue: 'Code gescannt — weiter',
  2170. enterCodeToConfirm: 'Gib den 6-stelligen Code aus deiner Authenticator-App ein, um die Einrichtung zu bestätigen.',
  2171. activate: 'Aktivieren',
  2172. disableTotp: 'Authenticator deaktivieren',
  2173. disableConfirmHint: 'Gib einen gültigen TOTP-Code oder einen Backup-Code ein, um den Authenticator zu deaktivieren.',
  2174. totpDisabled: 'Authenticator-App deaktiviert.',
  2175. emailOtpEnabled: 'E-Mail OTP aktiviert.',
  2176. emailOtpDisabled: 'E-Mail OTP deaktiviert.',
  2177. smtpRequired: 'Bitte konfigurieren und testen Sie zuerst die SMTP-Einstellungen.',
  2178. invalidCode: 'Ungültiger Code. Bitte erneut versuchen.',
  2179. enableEmailOtp: 'E-Mail OTP aktivieren',
  2180. disableEmailOtp: 'E-Mail OTP deaktivieren',
  2181. emailSetupEnterCode: 'Ein Bestätigungscode wurde an Ihre E-Mail-Adresse gesendet. Geben Sie ihn unten ein, um zu bestätigen, dass Ihnen dieses Postfach gehört.',
  2182. verifyAndEnable: 'Verifizieren & Aktivieren',
  2183. emailDisablePasswordHint: 'Geben Sie Ihr Kontopasswort ein, um die Deaktivierung des E-Mail OTP zu bestätigen.',
  2184. passwordPlaceholder: 'Passwort eingeben',
  2185. backupCodesTitle: 'Backup-Codes sichern',
  2186. backupCodesWarning: 'Speichere diese Codes sicher. Jeder Code kann nur einmal verwendet werden und wird nicht erneut angezeigt.',
  2187. backupCodesRemaining: '{{count}} Backup-Codes verbleibend',
  2188. savedCodes: 'Codes gespeichert',
  2189. regenBackup: 'Backup-Codes neu generieren',
  2190. regenBackupHint: 'Gib deinen aktuellen TOTP-Code ein, um 10 neue Backup-Codes zu generieren. Alle bestehenden Codes werden ungültig.',
  2191. newBackupCodes: 'Neue Backup-Codes',
  2192. linkedAccounts: 'Verknüpfte SSO-Konten',
  2193. linkedAccountsDesc: 'Diese externen Identitätsanbieter sind mit deinem Konto verknüpft.',
  2194. oidcUnlinked: 'Konto getrennt.',
  2195. },
  2196. // OIDC provider settings
  2197. oidc: {
  2198. title: 'SSO / OIDC-Anbieter',
  2199. desc: 'Konfiguriere OpenID Connect-Anbieter für Single Sign-On.',
  2200. addProvider: 'Anbieter hinzufügen',
  2201. newProvider: 'Neuer Anbieter',
  2202. empty: 'Noch keine OIDC-Anbieter konfiguriert.',
  2203. created: 'Anbieter erstellt.',
  2204. updated: 'Anbieter aktualisiert.',
  2205. deleted: 'Anbieter gelöscht.',
  2206. deleteTitle: 'Anbieter löschen',
  2207. deleteMessage: '"{{name}}" löschen? Alle verknüpften Benutzerkonten werden getrennt.',
  2208. form: {
  2209. name: 'Anzeigename',
  2210. issuerUrl: 'Aussteller-URL',
  2211. clientId: 'Client-ID',
  2212. clientSecret: 'Client-Secret',
  2213. scopes: 'Scopes',
  2214. iconUrl: 'Symbol-URL (optional)',
  2215. enabled: 'Aktiviert',
  2216. autoCreate: 'Benutzer automatisch anlegen',
  2217. autoCreateDesc: 'Erstellt beim ersten Login automatisch ein lokales Konto.',
  2218. autoLink: 'Bestehende Konten automatisch verknüpfen',
  2219. autoLinkDesc: 'Verknüpft beim ersten Login vorhandene lokale Konten anhand der E-Mail-Adresse.',
  2220. secretHint: 'leer lassen zum Beibehalten',
  2221. secretPlaceholder: 'neues Secret',
  2222. emailClaim: 'E-Mail-Claim',
  2223. emailClaimDesc: "JWT-Claim für die E-Mail-Identität. Für Azure Entra ID 'preferred_username' oder 'upn' verwenden (sendet kein email_verified). Nur vertrauenswürdige Claim-Namen verwenden.",
  2224. emailClaimPlaceholder: 'email',
  2225. emailClaimCustomClaimAutoLinkWarning: "Benutzerdefinierte Claims sind für die Auto-Verknüpfung nur sicher, wenn der Wert vom Mandanten verwaltet wird (z. B. Azure Entra ID upn / preferred_username). Aktiviere Auto-Verknüpfung nicht, wenn dein IdP Benutzern erlaubt, diesen Claim selbst zu setzen.",
  2226. requireEmailVerified: 'E-Mail-Verifizierung erforderlich',
  2227. requireEmailVerifiedDesc: 'E-Mail-Claim nur akzeptieren, wenn der Provider ihn als verifiziert markiert.',
  2228. requireEmailVerifiedWarning: 'Warnung: E-Mail wird auch ohne Verifizierung akzeptiert. Nur bei vertrauenswürdigen Providern verwenden.',
  2229. requireEmailVerifiedAutoLink: 'Auto-Verknüpfung zuerst deaktivieren, um diese Einstellung zu ändern.',
  2230. defaultGroup: 'Standardgruppe',
  2231. defaultGroupDesc: 'Gruppe, der automatisch erstellte Benutzer zugewiesen werden. Fallback auf Viewers, wenn nicht gesetzt.',
  2232. defaultGroupViewersFallback: 'Viewers (Standard)',
  2233. },
  2234. },
  2235. },
  2236. // Notifications (for push notifications)
  2237. notification: {
  2238. printStarted: {
  2239. title: 'Druck gestartet',
  2240. body: '{{printer}}: {{filename}} wird gedruckt',
  2241. },
  2242. printCompleted: {
  2243. title: 'Druck abgeschlossen',
  2244. body: '{{printer}}: {{filename}} erfolgreich abgeschlossen',
  2245. },
  2246. printFailed: {
  2247. title: 'Druck fehlgeschlagen',
  2248. body: '{{printer}}: {{filename}} ist fehlgeschlagen',
  2249. },
  2250. printStopped: {
  2251. title: 'Druck gestoppt',
  2252. body: '{{printer}}: {{filename}} wurde gestoppt',
  2253. },
  2254. printProgress: {
  2255. title: 'Druckfortschritt',
  2256. body: '{{printer}}: {{filename}} ist zu {{percent}}% abgeschlossen',
  2257. },
  2258. printerOffline: {
  2259. title: 'Drucker offline',
  2260. body: '{{printer}} ist offline',
  2261. },
  2262. printerError: {
  2263. title: 'Druckerfehler',
  2264. body: '{{printer}}: {{error}}',
  2265. },
  2266. filamentLow: {
  2267. title: 'Filament niedrig',
  2268. body: '{{printer}}: Filament geht zur Neige',
  2269. },
  2270. maintenanceDue: {
  2271. title: 'Wartung fällig',
  2272. body: '{{printer}}: {{items}} benötigen Aufmerksamkeit',
  2273. },
  2274. },
  2275. // Errors
  2276. errors: {
  2277. generic: 'Etwas ist schiefgelaufen',
  2278. networkError: 'Netzwerkfehler. Bitte überprüfen Sie Ihre Verbindung.',
  2279. notFound: 'Nicht gefunden',
  2280. unauthorized: 'Nicht autorisiert',
  2281. serverError: 'Serverfehler',
  2282. validationError: 'Bitte überprüfen Sie Ihre Eingabe',
  2283. printerConnectionFailed: 'Verbindung zum Drucker fehlgeschlagen',
  2284. saveFailed: 'Speichern fehlgeschlagen',
  2285. deleteFailed: 'Löschen fehlgeschlagen',
  2286. loadFailed: 'Laden der Daten fehlgeschlagen',
  2287. },
  2288. // HMS Errors modal
  2289. hmsErrors: {
  2290. title: 'Fehler - {{name}}',
  2291. noErrors: 'Keine Fehler',
  2292. viewOnWiki: 'Im Bambu Lab Wiki ansehen',
  2293. clearInstructions: 'Löschen Sie die Fehler am Drucker, um sie hier zu entfernen.',
  2294. clearErrors: 'Fehler löschen',
  2295. clearSuccess: 'HMS-Fehler gelöscht',
  2296. clearFailed: 'HMS-Fehler konnten nicht gelöscht werden',
  2297. },
  2298. // MQTT Debug modal
  2299. mqttDebug: {
  2300. title: 'MQTT-Debug-Protokoll',
  2301. searchPlaceholder: 'Topic oder Payload suchen...',
  2302. noMessages: 'Noch keine Nachrichten protokolliert',
  2303. startLoggingHint: 'Klicken Sie auf "Protokollierung starten", um MQTT-Nachrichten aufzuzeichnen',
  2304. noMessagesMatch: 'Keine Nachrichten entsprechen Ihrem Filter',
  2305. adjustFilterHint: 'Versuchen Sie, Ihre Such- oder Filterkriterien anzupassen',
  2306. incoming: 'Eingehend',
  2307. outgoing: 'Ausgehend',
  2308. loggingStopped: 'Protokollierung gestoppt',
  2309. loggingActive: 'Protokollierung aktiv - Nachrichten werden automatisch aktualisiert',
  2310. startLogging: 'Protokollierung starten',
  2311. stopLogging: 'Protokollierung stoppen',
  2312. clearLog: 'Protokoll löschen',
  2313. topic: 'Topic',
  2314. timestamp: 'Zeitstempel',
  2315. direction: 'Richtung',
  2316. all: 'Alle',
  2317. },
  2318. // Printer File Manager modal (printer internal storage)
  2319. printerFiles: {
  2320. title: 'Dateimanager',
  2321. storageUsed: 'Belegt:',
  2322. storageFree: 'Frei:',
  2323. filterPlaceholder: 'Dateien filtern...',
  2324. deleteButton: 'Löschen',
  2325. deleteFiles: '{{count}} Dateien löschen',
  2326. deleteFileConfirm: '"{{name}}" löschen? Dies kann nicht rückgängig gemacht werden.',
  2327. deleteFilesConfirm: '{{count}} ausgewählte Dateien löschen? Dies kann nicht rückgängig gemacht werden.',
  2328. noFiles: 'Keine Dateien auf dem Drucker',
  2329. loadingFiles: 'Dateien werden geladen...',
  2330. failedToLoad: 'Dateien konnten nicht geladen werden',
  2331. toast: {
  2332. filesDeleted: '{{count}} Datei(en) gelöscht',
  2333. deleteFailed: 'Löschen fehlgeschlagen: {{error}}',
  2334. },
  2335. },
  2336. // Confirmations
  2337. confirm: {
  2338. delete: 'Möchten Sie dies wirklich löschen?',
  2339. unsavedChanges: 'Sie haben ungespeicherte Änderungen. Möchten Sie wirklich verlassen?',
  2340. clearQueue: 'Möchten Sie die Warteschlange wirklich leeren?',
  2341. },
  2342. // Login page
  2343. login: {
  2344. title: 'Bambuddy Anmeldung',
  2345. subtitle: 'Melden Sie sich bei Ihrem Konto an',
  2346. username: 'Benutzername',
  2347. usernamePlaceholder: 'Benutzername eingeben',
  2348. usernameOrEmail: 'Benutzername oder E-Mail',
  2349. usernameOrEmailPlaceholder: 'Benutzername oder @ E-Mail',
  2350. password: 'Passwort',
  2351. passwordPlaceholder: 'Passwort eingeben',
  2352. signIn: 'Anmelden',
  2353. signingIn: 'Anmeldung läuft...',
  2354. rememberMe: 'Angemeldet bleiben',
  2355. forgotPassword: 'Passwort vergessen?',
  2356. loginSuccess: 'Erfolgreich angemeldet',
  2357. loginFailed: 'Anmeldung fehlgeschlagen',
  2358. enterCredentials: 'Bitte Benutzername und Passwort eingeben',
  2359. enterEmail: 'Bitte geben Sie Ihre E-Mail-Adresse ein',
  2360. oidcLoginFailed: 'OIDC-Anmeldung fehlgeschlagen',
  2361. oidcErrors: {
  2362. providerError: 'Der Identity-Provider hat einen Fehler zurückgegeben',
  2363. missingParameters: 'Dem OIDC-Callback fehlen erforderliche Parameter',
  2364. invalidState: 'OIDC-State ist ungültig oder wurde bereits verwendet',
  2365. stateExpired: 'OIDC-Sitzung abgelaufen — bitte erneut versuchen',
  2366. providerNotFound: 'OIDC-Provider nicht gefunden',
  2367. discoveryFailed: 'OIDC-Discovery-Dokument konnte nicht abgerufen werden',
  2368. invalidDiscovery: 'OIDC-Discovery-Dokument ist ungültig',
  2369. networkError: 'Netzwerkfehler beim OIDC-Token-Austausch',
  2370. badResponse: 'Unerwartete Antwort beim OIDC-Token-Austausch',
  2371. noIdToken: 'OIDC-Provider hat kein ID-Token zurückgegeben',
  2372. validationFailed: 'OIDC-Token-Validierung fehlgeschlagen',
  2373. nonceMismatch: 'OIDC-Nonce stimmt nicht überein — möglicher Replay-Angriff',
  2374. missingSubClaim: 'OIDC-Token enthält keinen Sub-Claim',
  2375. noLinkedAccount: 'Kein lokales Konto mit dieser OIDC-Identität verknüpft',
  2376. accountInactive: 'Ihr Konto ist inaktiv',
  2377. userResolutionFailed: 'Ihr Konto konnte nicht aufgelöst werden',
  2378. internalError: 'Interner Fehler beim OIDC-Login',
  2379. tokenExchangeFailed: 'OIDC-Token-Austausch fehlgeschlagen',
  2380. },
  2381. forgotPasswordTitle: 'Passwort vergessen',
  2382. forgotPasswordMessage: 'Wenn Sie Ihr Passwort vergessen haben, wenden Sie sich bitte an Ihren Systemadministrator.',
  2383. forgotPasswordEmailMessage: 'Geben Sie Ihre E-Mail-Adresse ein und wir senden Ihnen ein neues Passwort.',
  2384. emailAddress: 'E-Mail-Adresse',
  2385. emailPlaceholder: 'ihre.email@beispiel.de',
  2386. cancel: 'Abbrechen',
  2387. sending: 'Wird gesendet...',
  2388. sendResetEmail: 'Zurücksetzungs-E-Mail senden',
  2389. howToReset: 'So setzen Sie Ihr Passwort zurück:',
  2390. resetStep1: 'Kontaktieren Sie Ihren Bambuddy-Administrator',
  2391. resetStep2: 'Bitten Sie ihn, Ihr Passwort in der Benutzerverwaltung zurückzusetzen',
  2392. resetStep3: 'Er kann ein neues temporäres Passwort für Sie festlegen',
  2393. resetStep4: 'Melden Sie sich mit dem neuen Passwort an und ändern Sie es in den Einstellungen',
  2394. gotIt: 'Verstanden',
  2395. resetPassword: {
  2396. title: 'Neues Passwort festlegen',
  2397. subtitle: 'Geben Sie unten Ihr neues Passwort ein und bestätigen Sie es.',
  2398. newPassword: 'Neues Passwort',
  2399. newPasswordPlaceholder: 'Mindestens 8 Zeichen',
  2400. confirmPassword: 'Passwort bestätigen',
  2401. confirmPasswordPlaceholder: 'Neues Passwort wiederholen',
  2402. saving: 'Wird gespeichert\u2026',
  2403. submit: 'Neues Passwort festlegen',
  2404. backToLogin: 'Zurück zur Anmeldung',
  2405. passwordsDoNotMatch: 'Passwörter stimmen nicht überein',
  2406. passwordTooShort: 'Passwort muss mindestens 8 Zeichen lang sein',
  2407. resetFailed: 'Passwort zurücksetzen fehlgeschlagen. Der Link ist möglicherweise abgelaufen.',
  2408. },
  2409. twoFA: {
  2410. title: 'Zwei-Faktor-Authentifizierung',
  2411. subtitle: 'Ihr Konto ist mit 2FA geschützt. Geben Sie unten den Bestätigungscode ein.',
  2412. methodAuthenticator: 'Authenticator-App',
  2413. methodEmail: 'E-Mail-Code',
  2414. methodBackup: 'Wiederherstellungscode',
  2415. instructionsTotp: 'Öffnen Sie Ihre Authenticator-App und geben Sie den 6-stelligen Code für Bambuddy ein.',
  2416. instructionsEmail: 'Ein 6-stelliger Code wurde an Ihre E-Mail-Adresse gesendet. Er ist 10 Minuten gültig.',
  2417. instructionsEmailNotSent: 'Klicken Sie unten, um einen Bestätigungscode per E-Mail zu erhalten.',
  2418. instructionsBackup: 'Geben Sie einen Ihrer 8-stelligen Wiederherstellungscodes ein. Jeder Code kann nur einmal verwendet werden.',
  2419. sendCodeButton: 'Code per E-Mail senden',
  2420. sendingCode: 'Wird gesendet...',
  2421. resendCode: 'Code erneut senden',
  2422. codeLabel: 'Bestätigungscode',
  2423. backupCodeLabel: 'Wiederherstellungscode',
  2424. codePlaceholder: '000000',
  2425. backupCodePlaceholder: 'XXXXXXXX',
  2426. verifyButton: 'Bestätigen',
  2427. verifyingButton: 'Wird überprüft...',
  2428. backToLogin: '← Zurück zur Anmeldung',
  2429. orContinueWith: 'oder anmelden mit',
  2430. signInWith: 'Anmelden mit {{provider}}',
  2431. enterCode: 'Bitte geben Sie den Bestätigungscode ein',
  2432. sendCodeFailed: 'Bestätigungscode konnte nicht gesendet werden',
  2433. invalidCode: 'Ungültiger Code. Bitte erneut versuchen.',
  2434. },
  2435. },
  2436. // Setup page
  2437. setup: {
  2438. title: 'Bambuddy Einrichtung',
  2439. subtitle: 'Konfigurieren Sie die Authentifizierung für Ihre Bambuddy-Instanz',
  2440. enableAuth: 'Authentifizierung aktivieren',
  2441. adminAccount: 'Admin-Konto',
  2442. adminAccountDesc: 'Wenn bereits Admin-Benutzer existieren, wird die Authentifizierung mit den vorhandenen Admin-Konten aktiviert. Lassen Sie die Felder unten leer, um vorhandene Admins zu verwenden, oder geben Sie neue Anmeldedaten ein, um einen neuen Admin-Benutzer zu erstellen.',
  2443. adminUsername: 'Admin-Benutzername',
  2444. adminPassword: 'Admin-Passwort',
  2445. optionalIfAdminExists: '(optional, wenn Admin-Benutzer existieren)',
  2446. adminUsernamePlaceholder: 'Admin-Benutzernamen eingeben (optional)',
  2447. adminPasswordPlaceholder: 'Admin-Passwort eingeben (optional)',
  2448. confirmPassword: 'Passwort bestätigen',
  2449. confirmPasswordPlaceholder: 'Admin-Passwort bestätigen',
  2450. settingUp: 'Einrichtung läuft...',
  2451. completeSetup: 'Einrichtung abschließen',
  2452. toast: {
  2453. authEnabledAdminCreated: 'Authentifizierung aktiviert und Admin-Benutzer erstellt',
  2454. authEnabledExistingAdmins: 'Authentifizierung mit vorhandenen Admin-Benutzern aktiviert',
  2455. setupCompleted: 'Einrichtung abgeschlossen',
  2456. enterBothCredentials: 'Bitte geben Sie sowohl Admin-Benutzernamen als auch Passwort ein, oder lassen Sie beide leer, um vorhandene Admin-Benutzer zu verwenden',
  2457. passwordsDoNotMatch: 'Passwörter stimmen nicht überein',
  2458. passwordTooShort: 'Passwort muss mindestens 6 Zeichen lang sein',
  2459. },
  2460. },
  2461. // Password change
  2462. changePassword: {
  2463. title: 'Passwort ändern',
  2464. currentPassword: 'Aktuelles Passwort',
  2465. currentPasswordPlaceholder: 'Aktuelles Passwort eingeben',
  2466. newPassword: 'Neues Passwort',
  2467. newPasswordPlaceholder: 'Neues Passwort eingeben (min. 6 Zeichen)',
  2468. confirmPassword: 'Neues Passwort bestätigen',
  2469. confirmPasswordPlaceholder: 'Neues Passwort bestätigen',
  2470. passwordsDoNotMatch: 'Passwörter stimmen nicht überein',
  2471. passwordTooShort: 'Passwort muss mindestens 6 Zeichen lang sein',
  2472. changing: 'Wird geändert...',
  2473. success: 'Passwort erfolgreich geändert',
  2474. failed: 'Passwortänderung fehlgeschlagen',
  2475. },
  2476. // Plate detection alert
  2477. plateAlert: {
  2478. title: 'Druck pausiert!',
  2479. message: 'Objekte auf dem Druckbett erkannt. Der Druck wurde automatisch pausiert. Bitte räumen Sie das Druckbett und setzen Sie den Druck fort.',
  2480. understand: 'Verstanden',
  2481. },
  2482. // Camera page
  2483. camera: {
  2484. title: 'Kameraansicht',
  2485. invalidPrinterId: 'Ungültige Drucker-ID',
  2486. live: 'Live',
  2487. snapshot: 'Schnappschuss',
  2488. restartStream: 'Stream neu starten',
  2489. refreshSnapshot: 'Schnappschuss aktualisieren',
  2490. fullscreen: 'Vollbild',
  2491. exitFullscreen: 'Vollbild beenden',
  2492. connectingToCamera: 'Verbinde mit Kamera...',
  2493. capturingSnapshot: 'Schnappschuss wird aufgenommen...',
  2494. connectionLost: 'Verbindung verloren',
  2495. connectionFailed: 'Kameraverbindung fehlgeschlagen',
  2496. reconnecting: 'Neuverbindung in {{countdown}}s... (Versuch {{attempt}}/{{max}})',
  2497. reconnectNow: 'Jetzt verbinden',
  2498. cameraUnavailable: 'Kamera nicht verfügbar',
  2499. cameraUnavailableDesc: 'Stellen Sie sicher, dass der Drucker eingeschaltet und verbunden ist.',
  2500. noCamera: 'Keine Kamera verfügbar',
  2501. retry: 'Erneut versuchen',
  2502. cameraStream: 'Kamera-Stream',
  2503. zoomOut: 'Verkleinern',
  2504. zoomIn: 'Vergrößern',
  2505. resetZoom: 'Zoom zurücksetzen',
  2506. recording: 'Aufnahme',
  2507. startRecording: 'Aufnahme starten',
  2508. stopRecording: 'Aufnahme stoppen',
  2509. chamberLight: 'Kammerbeleuchtung umschalten',
  2510. },
  2511. // Groups management
  2512. groups: {
  2513. title: 'Gruppenverwaltung',
  2514. subtitle: 'Berechtigungsgruppen für Zugriffskontrolle verwalten',
  2515. backToSettings: 'Zurück zu Einstellungen',
  2516. createGroup: 'Gruppe erstellen',
  2517. noPermission: 'Sie haben keine Berechtigung, auf diese Seite zuzugreifen.',
  2518. system: 'System',
  2519. noDescription: 'Keine Beschreibung',
  2520. usersCount: '{{count}} Benutzer',
  2521. permissionsCount: '{{count}} Berechtigungen',
  2522. edit: 'Bearbeiten',
  2523. delete: 'Löschen',
  2524. toast: {
  2525. created: 'Gruppe erfolgreich erstellt',
  2526. updated: 'Gruppe erfolgreich aktualisiert',
  2527. deleted: 'Gruppe erfolgreich gelöscht',
  2528. enterGroupName: 'Bitte geben Sie einen Gruppennamen ein',
  2529. },
  2530. modal: {
  2531. editGroup: 'Gruppe bearbeiten',
  2532. createGroup: 'Gruppe erstellen',
  2533. cancel: 'Abbrechen',
  2534. saving: 'Speichern...',
  2535. creating: 'Erstellen...',
  2536. saveChanges: 'Änderungen speichern',
  2537. },
  2538. form: {
  2539. groupName: 'Gruppenname',
  2540. groupNamePlaceholder: 'Gruppennamen eingeben',
  2541. systemGroupWarning: 'Systemgruppennamen können nicht geändert werden',
  2542. description: 'Beschreibung',
  2543. descriptionPlaceholder: 'Beschreibung eingeben (optional)',
  2544. permissions: 'Berechtigungen ({{count}} ausgewählt)',
  2545. },
  2546. deleteModal: {
  2547. title: 'Gruppe löschen',
  2548. message: 'Sind Sie sicher, dass Sie diese Gruppe löschen möchten? Benutzer in dieser Gruppe verlieren diese Berechtigungen.',
  2549. confirm: 'Gruppe löschen',
  2550. },
  2551. editor: {
  2552. title: 'Gruppe bearbeiten',
  2553. createTitle: 'Gruppe erstellen',
  2554. search: 'Berechtigungen suchen...',
  2555. selectAll: 'Alle auswählen',
  2556. clearAll: 'Alle abwählen',
  2557. permissionsSelected: '{{count}} ausgewählt',
  2558. noResults: 'Keine Berechtigungen entsprechen Ihrer Suche',
  2559. },
  2560. },
  2561. // Users management
  2562. users: {
  2563. title: 'Benutzerverwaltung',
  2564. subtitle: 'Benutzer und deren Zugriff auf Ihre Bambuddy-Instanz verwalten',
  2565. backToSettings: 'Zurück zu Einstellungen',
  2566. createUser: 'Benutzer erstellen',
  2567. noPermission: 'Sie haben keine Berechtigung, auf diese Seite zuzugreifen.',
  2568. admin: 'Admin',
  2569. noGroups: 'Keine Gruppen',
  2570. active: 'Aktiv',
  2571. inactive: 'Inaktiv',
  2572. edit: 'Bearbeiten',
  2573. delete: 'Löschen',
  2574. system: 'System',
  2575. noGroupsAvailable: 'Keine Gruppen verfügbar',
  2576. table: {
  2577. username: 'Benutzername',
  2578. groups: 'Gruppen',
  2579. status: 'Status',
  2580. actions: 'Aktionen',
  2581. },
  2582. toast: {
  2583. created: 'Benutzer erfolgreich erstellt',
  2584. updated: 'Benutzer erfolgreich aktualisiert',
  2585. deleted: 'Benutzer erfolgreich gelöscht',
  2586. fillRequired: 'Bitte füllen Sie alle Pflichtfelder aus',
  2587. passwordsDoNotMatch: 'Passwörter stimmen nicht überein',
  2588. passwordTooShort: 'Passwort muss mindestens 6 Zeichen lang sein',
  2589. },
  2590. modal: {
  2591. createUser: 'Benutzer erstellen',
  2592. editUser: 'Benutzer bearbeiten',
  2593. cancel: 'Abbrechen',
  2594. creating: 'Erstellen...',
  2595. saving: 'Speichern...',
  2596. saveChanges: 'Änderungen speichern',
  2597. advancedAuthSubtitle: 'mit erweiterter Authentifizierung',
  2598. },
  2599. form: {
  2600. username: 'Benutzername',
  2601. usernamePlaceholder: 'Benutzernamen eingeben',
  2602. email: 'E-Mail',
  2603. emailPlaceholder: 'benutzer@beispiel.de',
  2604. password: 'Passwort',
  2605. passwordPlaceholder: 'Passwort eingeben',
  2606. confirmPassword: 'Passwort bestätigen',
  2607. confirmPasswordPlaceholder: 'Passwort bestätigen',
  2608. newPasswordPlaceholder: 'Neues Passwort eingeben',
  2609. confirmNewPasswordPlaceholder: 'Neues Passwort bestätigen',
  2610. leaveBlankToKeep: 'leer lassen, um das aktuelle zu behalten',
  2611. groups: 'Gruppen',
  2612. optional: 'optional',
  2613. autoGeneratedPassword: 'Ein sicheres Passwort wird automatisch generiert und per E-Mail an den Benutzer gesendet.',
  2614. passwordManagedByAdvancedAuth: 'Das Passwort wird durch erweiterte Authentifizierung verwaltet. Verwenden Sie "Passwort zurücksetzen", um ein neues Passwort per E-Mail an den Benutzer zu senden.',
  2615. resetPassword: 'Passwort zurücksetzen',
  2616. resettingPassword: 'Passwort wird zurückgesetzt...',
  2617. },
  2618. deleteModal: {
  2619. title: 'Benutzer löschen',
  2620. message: 'Sind Sie sicher, dass Sie diesen Benutzer löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.',
  2621. confirm: 'Benutzer löschen',
  2622. },
  2623. },
  2624. // Stream overlay
  2625. streamOverlay: {
  2626. title: 'Stream-Overlay',
  2627. invalidPrinterId: 'Ungültige Drucker-ID',
  2628. cameraStream: 'Kamera-Stream',
  2629. progress: 'Fortschritt',
  2630. eta: 'ETA',
  2631. printerIdle: 'Drucker ist inaktiv',
  2632. printerOffline: 'Drucker offline',
  2633. status: {
  2634. printing: 'Druckt',
  2635. paused: 'Pausiert',
  2636. finished: 'Fertig',
  2637. failed: 'Fehlgeschlagen',
  2638. idle: 'Inaktiv',
  2639. unknown: 'Unbekannt',
  2640. },
  2641. },
  2642. // Profiles
  2643. profiles: {
  2644. title: 'Profile',
  2645. subtitle: 'Verwalten Sie Ihre Slicer-Voreinstellungen und Druckvorschub-Kalibrierungen',
  2646. tabs: {
  2647. cloud: 'Cloud-Profile',
  2648. local: 'Lokale Profile',
  2649. kprofiles: 'K-Profile',
  2650. },
  2651. localProfiles: {
  2652. title: 'Lokale Profile',
  2653. subtitle: 'Slicer-Voreinstellungen aus OrcaSlicer importieren und verwalten',
  2654. import: 'Profile importieren',
  2655. importDesc: '.bbscfg-, .bbsflmt-, .orca_filament-, .zip- oder .json-Dateien hier ablegen',
  2656. importing: 'Importiere...',
  2657. search: 'Lokale Voreinstellungen durchsuchen...',
  2658. noPresets: 'Noch keine lokalen Voreinstellungen',
  2659. badge: 'Lokal',
  2660. edit: 'Bearbeiten',
  2661. delete: 'Löschen',
  2662. cancel: 'Abbrechen',
  2663. deleteConfirmTitle: 'Voreinstellung löschen',
  2664. deleteConfirm: 'Möchten Sie diese Voreinstellung wirklich löschen? Dies kann nicht rückgängig gemacht werden.',
  2665. source: 'Quelle',
  2666. inheritsFrom: 'Erbt von',
  2667. filamentType: 'Typ',
  2668. vendor: 'Hersteller',
  2669. compatiblePrinters: 'Drucker',
  2670. nozzleTemp: 'Düsentemperatur',
  2671. cost: 'Kosten',
  2672. density: 'Dichte',
  2673. pressureAdvance: 'Druckvorschub',
  2674. filament: 'Filament',
  2675. process: 'Prozess',
  2676. printer: 'Drucker',
  2677. toast: {
  2678. importSuccess: '{{count}} Voreinstellung(en) importiert',
  2679. importSkipped: '{{count}} Voreinstellung(en) übersprungen (Duplikate)',
  2680. importError: '{{count}} Fehler beim Import',
  2681. deleted: 'Voreinstellung gelöscht',
  2682. updated: 'Voreinstellung aktualisiert',
  2683. },
  2684. },
  2685. connectedAs: 'Verbunden als',
  2686. logout: 'Abmelden',
  2687. noLogoutPermission: 'Sie haben keine Berechtigung zum Abmelden',
  2688. failedToLoad: 'Profile konnten nicht geladen werden',
  2689. retry: 'Erneut versuchen',
  2690. time: {
  2691. justNow: 'Gerade eben',
  2692. minsAgo: 'vor {{count}}m',
  2693. hoursAgo: 'vor {{count}}h',
  2694. daysAgo: 'vor {{count}}d',
  2695. },
  2696. toast: {
  2697. loggedOut: 'Abgemeldet',
  2698. },
  2699. login: {
  2700. title: 'Mit Bambu Cloud verbinden',
  2701. subtitle: 'Synchronisieren Sie Ihre Slicer-Voreinstellungen geräteübergreifend',
  2702. email: 'E-Mail',
  2703. password: 'Passwort',
  2704. region: 'Region',
  2705. regionGlobal: 'Global',
  2706. regionChina: 'China',
  2707. verificationCode: 'Bestätigungscode',
  2708. totpCode: 'Authenticator-Code',
  2709. checkEmail: 'Prüfen Sie Ihre E-Mail ({{email}}) für einen 6-stelligen Code',
  2710. enterTotpHint: 'Geben Sie den 6-stelligen Code aus Ihrer Authenticator-App ein',
  2711. accessToken: 'Zugriffstoken',
  2712. accessTokenHint: 'Fügen Sie Ihr Bambu Lab Zugriffstoken ein (aus Bambu Studio)',
  2713. back: 'Zurück',
  2714. loginButton: 'Anmelden',
  2715. verifyButton: 'Bestätigen',
  2716. setTokenButton: 'Token setzen',
  2717. useToken: 'Stattdessen Zugriffstoken verwenden',
  2718. useEmail: 'Stattdessen mit E-Mail anmelden',
  2719. toast: {
  2720. loggedIn: 'Erfolgreich angemeldet',
  2721. codeSent: 'Bestätigungscode an Ihre E-Mail gesendet',
  2722. enterTotp: 'Geben Sie den Code aus Ihrer Authenticator-App ein',
  2723. tokenSet: 'Token erfolgreich gesetzt',
  2724. },
  2725. },
  2726. presets: {
  2727. myPreset: 'Mein Profil (bearbeitbar)',
  2728. duplicate: 'Duplizieren',
  2729. editable: 'Bearbeitbar',
  2730. failedToLoadDetails: 'Profil-Details konnten nicht geladen werden',
  2731. deleteConfirm: 'Dieses Profil löschen?',
  2732. deleteWarning: '"{{name}}" wird dauerhaft aus Bambu Cloud gelöscht. Dies kann nicht rückgängig gemacht werden.',
  2733. noDuplicatePermission: 'Sie haben keine Berechtigung zum Duplizieren von Profilen',
  2734. noEditPermission: 'Sie haben keine Berechtigung zum Bearbeiten von Profilen',
  2735. noDeletePermission: 'Sie haben keine Berechtigung zum Löschen von Profilen',
  2736. types: {
  2737. filament: 'Filament-Profil',
  2738. printer: 'Drucker-Profil',
  2739. process: 'Prozess-Profil',
  2740. },
  2741. toast: {
  2742. deleted: 'Profil gelöscht',
  2743. created: 'Profil erstellt',
  2744. updated: 'Profil aktualisiert',
  2745. duplicated: 'Profil dupliziert',
  2746. fieldAdded: 'Feld "{{key}}" hinzugefügt',
  2747. exported: 'Profil exportiert',
  2748. },
  2749. baseLabel: 'Basis: {{name}}',
  2750. currentLabel: 'Aktuell: {{name}}',
  2751. newPreset: 'Neues Profil',
  2752. editPreset: 'Profil bearbeiten',
  2753. duplicatePreset: 'Profil duplizieren',
  2754. createNewPreset: 'Neues Profil erstellen',
  2755. customizeSettings: 'Passen Sie die Einstellungen für Ihr neues Profil an',
  2756. compareWithBase: 'Mit Basis-Profil vergleichen',
  2757. compare: 'Vergleichen',
  2758. // CreatePresetModal - Basic Info
  2759. basePreset: 'Basis-Profil',
  2760. selectBasePreset: 'Basis-Profil auswählen...',
  2761. presetName: 'Profilname',
  2762. myCustomPreset: 'Mein eigenes Profil',
  2763. inheritsFrom: 'Erbt von',
  2764. dropJsonToImport: 'JSON zum Importieren ablegen',
  2765. // CreatePresetModal - Tabs
  2766. tabs: {
  2767. common: 'Allgemein',
  2768. allFields: 'Alle Felder',
  2769. },
  2770. // CreatePresetModal - All Fields Tab
  2771. availableFields: 'Verfügbare Felder',
  2772. searchFieldsPlaceholder: 'Felder suchen...',
  2773. noMatchingFields: 'Keine passenden Felder',
  2774. allFieldsAdded: 'Alle Felder hinzugefügt',
  2775. addCustomField: 'Eigenes Feld hinzufügen',
  2776. yourOverrides: 'Ihre Überschreibungen',
  2777. noOverridesYet: 'Noch keine Überschreibungen',
  2778. clickFieldsToAdd: 'Klicken Sie links auf Felder, um sie hinzuzufügen',
  2779. saveAsTemplate: 'Als Vorlage speichern',
  2780. jsonTip: 'Tipp: Ziehen Sie eine .json-Datei auf dieses Fenster, um Einstellungen zu importieren',
  2781. },
  2782. cloudView: {
  2783. searchPlaceholder: 'Profile suchen...',
  2784. templates: 'Vorlagen',
  2785. refresh: 'Aktualisieren',
  2786. newPreset: 'Neues Profil',
  2787. clearFilters: 'Filter zurücksetzen',
  2788. // Compare mode
  2789. compareMode: 'Vergleichsmodus',
  2790. selectAnotherPreset: 'Wählen Sie ein weiteres {{type}}-Profil',
  2791. clickTwoPresets: 'Klicken Sie auf zwei Profile des gleichen Typs zum Vergleichen',
  2792. selectFirst: '1. Erstes auswählen',
  2793. selectSecond: '2. Zweites auswählen',
  2794. compareNow: 'Jetzt vergleichen',
  2795. // Status row
  2796. lastSynced: 'Zuletzt synchronisiert:',
  2797. showingCount: '{{showing}} von {{total}} Profilen',
  2798. noPresetsFound: 'Keine Profile gefunden',
  2799. // Column headers
  2800. columns: {
  2801. filament: 'Filament',
  2802. process: 'Prozess',
  2803. printer: 'Drucker',
  2804. },
  2805. noFilamentPresets: 'Keine Filament-Profile',
  2806. noProcessPresets: 'Keine Prozess-Profile',
  2807. noPrinterPresets: 'Keine Drucker-Profile',
  2808. // Filters
  2809. filters: {
  2810. type: 'Typ',
  2811. owner: 'Besitzer',
  2812. printer: 'Drucker',
  2813. nozzle: 'Düse',
  2814. filament: 'Filament',
  2815. layer: 'Schicht',
  2816. all: 'Alle',
  2817. myPresets: 'Meine Profile',
  2818. builtIn: 'Voreingestellt',
  2819. process: 'Prozess',
  2820. },
  2821. // Permissions
  2822. noTemplatesPermission: 'Sie haben keine Berechtigung, Vorlagen zu verwalten',
  2823. noRefreshPermission: 'Sie haben keine Berechtigung, Profile zu aktualisieren',
  2824. noCreatePermission: 'Sie haben keine Berechtigung, Profile zu erstellen',
  2825. },
  2826. templates: {
  2827. title: 'Schnellvorlagen',
  2828. noTemplates: 'Noch keine Vorlagen',
  2829. createFirst: 'Erstellen Sie Vorlagen aus dem Preset-Editor',
  2830. typeFilter: 'Typ:',
  2831. deleteTitle: 'Vorlage löschen',
  2832. deleteWarning: 'Diese Aktion kann nicht rückgängig gemacht werden',
  2833. deleteConfirm: 'Möchten Sie "{{name}}" wirklich löschen?',
  2834. namePlaceholder: 'Vorlagenname',
  2835. descriptionPlaceholder: 'Beschreibung',
  2836. settingsJson: 'Einstellungen (JSON)',
  2837. fieldsCount: '{{count}} Felder',
  2838. shownInModals: 'In Dialogen angezeigt',
  2839. hiddenInModals: 'In Dialogen ausgeblendet',
  2840. apply: 'Anwenden',
  2841. toast: {
  2842. deleted: 'Vorlage gelöscht',
  2843. updated: 'Vorlage aktualisiert',
  2844. created: 'Vorlage erstellt',
  2845. applied: 'Vorlage angewendet',
  2846. },
  2847. },
  2848. },
  2849. // Support/Debug
  2850. support: {
  2851. debugLoggingActive: 'Debug-Protokollierung ist aktiv',
  2852. manageLogs: 'Verwalten',
  2853. collectItem7: 'Drucker-Verbindungsstatus und Firmware-Versionen',
  2854. collectItem8: 'Integrationsstatus (Spoolman, MQTT, HA)',
  2855. collectItem9: 'Netzwerkschnittstellen (nur Subnetze)',
  2856. collectItem10: 'Python-Paketversionen',
  2857. collectItem11: 'Datenbankzustandsprüfungen',
  2858. collectItem12: 'Docker-Umgebungsdetails',
  2859. },
  2860. // File manager
  2861. fileManager: {
  2862. title: 'Dateimanager',
  2863. subtitle: 'Organisieren und verwalten Sie Ihre Druckdateien',
  2864. uploadFiles: 'Dateien hochladen',
  2865. newFolder: 'Neuer Ordner',
  2866. folderName: 'Ordnername',
  2867. folderNamePlaceholder: 'z.B. Funktionsteile',
  2868. renameFile: 'Datei umbenennen',
  2869. renameFolder: 'Ordner umbenennen',
  2870. moveFiles: '{{count}} Datei(en) verschieben',
  2871. rootNoFolder: 'Stammverzeichnis (Kein Ordner)',
  2872. current: 'aktuell',
  2873. linkFolder: 'Ordner verknüpfen',
  2874. linkFolderDescription: '"{{name}}" mit einem Projekt oder Archiv verknüpfen für schnellen Zugriff.',
  2875. project: 'Projekt',
  2876. archive: 'Archiv',
  2877. noProjectsFound: 'Keine Projekte gefunden',
  2878. noArchivesFound: 'Keine Archive gefunden',
  2879. unlink: 'Verknüpfung aufheben',
  2880. link: 'Verknüpfen',
  2881. dragDropFiles: 'Dateien hierher ziehen',
  2882. dropFilesHere: 'Dateien hier ablegen',
  2883. orClickToBrowse: 'oder klicken zum Durchsuchen',
  2884. allFileTypesSupported: 'Alle Dateitypen werden unterstützt. ZIP-Dateien werden extrahiert.',
  2885. zipFilesDetected: 'ZIP-Dateien erkannt',
  2886. zipExtractOptions: 'ZIP-Dateien werden extrahiert. Wählen Sie, wie die Ordnerstruktur behandelt werden soll:',
  2887. preserveZipStructure: 'Ordnerstruktur aus ZIP beibehalten',
  2888. createFolderFromZip: 'Ordner aus ZIP-Dateiname erstellen',
  2889. stlThumbnailGeneration: 'STL-Vorschaubildgenerierung',
  2890. zipMayContainStl: 'ZIP-Dateien können STL-Dateien enthalten. Vorschaubilder können während der Extraktion generiert werden.',
  2891. thumbnailsCanBeGenerated: 'Vorschaubilder können für STL-Dateien generiert werden. Große Modelle benötigen möglicherweise mehr Zeit.',
  2892. generateThumbnailsForStl: 'Vorschaubilder für STL-Dateien generieren',
  2893. threemfDetected: '3MF-Dateien erkannt',
  2894. threemfExtractionInfo: 'Druckermodell, Material, Farbe und Druckeinstellungen werden automatisch aus 3MF-Dateien extrahiert.',
  2895. willBeExtracted: 'Wird extrahiert',
  2896. filesExtracted: '{{count}} Dateien extrahiert',
  2897. uploadComplete: 'Upload abgeschlossen: {{succeeded}} erfolgreich',
  2898. uploadFailed: 'Hochladen fehlgeschlagen',
  2899. zipFilesFailed: '{{count}} Dateien fehlgeschlagen',
  2900. uploading: 'Hochladen...',
  2901. changeLink: 'Verknüpfung ändern...',
  2902. linkTo: 'Verknüpfen mit...',
  2903. linkToProjectOrArchive: 'Mit Projekt oder Archiv verknüpfen',
  2904. addToQueue: 'Zur Warteschlange',
  2905. schedulePrint: 'Planen',
  2906. generateThumbnail: 'Vorschaubild generieren',
  2907. generateThumbnails: 'Vorschaubilder generieren',
  2908. generateThumbnailsForMissing: 'Vorschaubilder für STL-Dateien ohne Vorschau generieren',
  2909. gridView: 'Rasteransicht',
  2910. listView: 'Listenansicht',
  2911. lowDiskSpaceWarning: 'Warnung: Wenig Speicherplatz',
  2912. lowDiskSpaceDetails: 'Nur {{free}} frei von {{total}} gesamt. Schwellenwert ist auf {{threshold}} GB eingestellt.',
  2913. files: 'Dateien',
  2914. folders: 'Ordner',
  2915. size: 'Größe',
  2916. free: 'Frei',
  2917. allFiles: 'Alle Dateien',
  2918. wrap: 'Umbrechen',
  2919. enableTextWrapping: 'Textumbruch aktivieren',
  2920. disableTextWrapping: 'Textumbruch deaktivieren',
  2921. collapse: 'Einklappen',
  2922. collapseFoldersByDefault: 'Ordner standardmäßig einklappen',
  2923. expandFoldersByDefault: 'Ordner standardmäßig ausklappen',
  2924. dragToResizeTooltip: 'Ziehen zum Ändern der Größe, Doppelklick zum Zurücksetzen',
  2925. searchFiles: 'Dateien suchen...',
  2926. allTypes: 'Alle Typen',
  2927. prints: 'Drucke',
  2928. ascending: 'Aufsteigend',
  2929. descending: 'Absteigend',
  2930. resultsCount: '{{showing}} von {{total}} Dateien',
  2931. selectAll: 'Alle auswählen',
  2932. deselectAll: 'Auswahl aufheben',
  2933. selected: '{{count}} ausgewählt',
  2934. adding: 'Hinzufügen...',
  2935. loadingFiles: 'Dateien werden geladen...',
  2936. folderIsEmpty: 'Ordner ist leer',
  2937. noFilesYet: 'Noch keine Dateien',
  2938. folderEmptyDescription: 'Laden Sie Dateien hoch oder verschieben Sie Dateien in diesen Ordner.',
  2939. noFilesDescription: 'Laden Sie Dateien hoch, um Ihre Druckdateien zu organisieren.',
  2940. noMatchingFiles: 'Keine passenden Dateien',
  2941. noMatchingFilesDescription: 'Keine Dateien entsprechen Ihren aktuellen Such- oder Filterkriterien.',
  2942. clearFilters: 'Filter zurücksetzen',
  2943. printedCount: '{{count}}x gedruckt',
  2944. uploadedBy: 'Hochgeladen von',
  2945. deleteFolder: 'Ordner löschen',
  2946. deleteFile: 'Datei löschen',
  2947. deleteFilesCount: '{{count}} Dateien löschen',
  2948. deleteFolderConfirm: 'Möchten Sie diesen Ordner wirklich löschen? Alle Dateien darin werden ebenfalls gelöscht.',
  2949. deleteFileConfirm: 'Möchten Sie diese Datei wirklich löschen?',
  2950. deleteFilesConfirm: 'Möchten Sie {{count}} ausgewählte Dateien wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.',
  2951. deleting: 'Wird gelöscht...',
  2952. noPermissionRenameFolder: 'Sie haben keine Berechtigung, Ordner umzubenennen',
  2953. noPermissionLinkFolder: 'Sie haben keine Berechtigung, Ordner zu verknüpfen',
  2954. noPermissionDeleteFolder: 'Sie haben keine Berechtigung, Ordner zu löschen',
  2955. noPermissionPrint: 'Sie haben keine Berechtigung zum Drucken',
  2956. noPermissionSlice: 'Sie haben keine Berechtigung, Dateien zu slicen',
  2957. noPermissionAddToQueue: 'Sie haben keine Berechtigung, zur Warteschlange hinzuzufügen',
  2958. noPermissionDownload: 'Sie haben keine Berechtigung, Dateien herunterzuladen',
  2959. noPermissionRenameFile: 'Sie haben keine Berechtigung, diese Datei umzubenennen',
  2960. noPermissionGenerateThumbnail: 'Sie haben keine Berechtigung, Vorschaubilder zu generieren',
  2961. noPermissionDeleteFile: 'Sie haben keine Berechtigung, diese Datei zu löschen',
  2962. noPermissionCreateFolder: 'Sie haben keine Berechtigung, Ordner zu erstellen',
  2963. noPermissionUpload: 'Sie haben keine Berechtigung, Dateien hochzuladen',
  2964. noPermissionMoveFiles: 'Sie haben keine Berechtigung, Dateien zu verschieben',
  2965. noPermissionDeleteFiles: 'Sie haben keine Berechtigung, Dateien zu löschen',
  2966. // External folder
  2967. linkExternal: 'Extern verknüpfen',
  2968. linkExternalFolder: 'Externen Ordner verknüpfen',
  2969. linkExternalFolderDescription: 'Ein Host-Verzeichnis (NAS, USB, Netzlaufwerk) in den Dateimanager einbinden. Dateien werden nicht kopiert — sie werden direkt vom Originalpfad gelesen.',
  2970. externalFolderNamePlaceholder: 'z.B. NAS-Drucke',
  2971. externalPath: 'Host-Pfad',
  2972. externalPathHelp: 'Absoluter Pfad zum Verzeichnis auf dem Docker-Host. Muss als Bind-Mount in den Container eingebunden sein.',
  2973. readOnly: 'Nur Lesen',
  2974. readOnlyHelp: 'verhindert Uploads und Löschungen',
  2975. showHiddenFiles: 'Versteckte Dateien anzeigen (Punkt-Dateien)',
  2976. externalFolder: 'Externer Ordner',
  2977. scanFolder: 'Scannen',
  2978. toast: {
  2979. folderCreated: 'Ordner erstellt',
  2980. folderDeleted: 'Ordner gelöscht',
  2981. fileDeleted: 'Datei gelöscht',
  2982. filesDeleted: '{{count}} Dateien gelöscht',
  2983. filesMoved: 'Dateien verschoben',
  2984. folderLinked: 'Ordner verknüpft',
  2985. folderUnlinked: 'Ordnerverknüpfung aufgehoben',
  2986. externalFolderLinked: 'Externer Ordner verknüpft und gescannt',
  2987. folderScanned: 'Scan abgeschlossen: {{added}} hinzugefügt, {{removed}} entfernt',
  2988. addedToQueue: '{{count}} Datei(en) zur Warteschlange hinzugefügt',
  2989. addedToQueuePartial: '{{added}} Datei(en) hinzugefügt, {{failed}} fehlgeschlagen',
  2990. failedToAddToQueue: 'Fehler beim Hinzufügen: {{error}}',
  2991. fileRenamed: 'Datei umbenannt',
  2992. folderRenamed: 'Ordner umbenannt',
  2993. thumbnailsGenerated: '{{count}} Vorschaubild(er) generiert',
  2994. thumbnailsGeneratedPartial: '{{succeeded}} Vorschaubild(er) generiert, {{failed}} fehlgeschlagen',
  2995. noStlMissingThumbnails: 'Keine STL-Dateien ohne Vorschaubild',
  2996. failedToGenerateThumbnails: 'Fehler beim Generieren der Vorschaubilder: {{error}}',
  2997. thumbnailGenerated: 'Vorschaubild generiert',
  2998. failedToGenerateThumbnail: 'Fehler beim Generieren des Vorschaubildes: {{error}}',
  2999. },
  3000. },
  3001. // Projects
  3002. projects: {
  3003. title: 'Projekte',
  3004. subtitle: 'Organisieren und verfolgen Sie Ihre 3D-Druckprojekte',
  3005. newProject: 'Neues Projekt',
  3006. editProject: 'Projekt bearbeiten',
  3007. deleteProject: 'Projekt löschen',
  3008. projectName: 'Projektname',
  3009. description: 'Beschreibung',
  3010. noProjects: 'Noch keine Projekte',
  3011. noProjectsFiltered: 'Keine {{status}} Projekte',
  3012. noProjectsFilteredHelp: 'Sie haben keine {{status}} Projekte. Projekte werden hier angezeigt, wenn sich ihr Status ändert.',
  3013. createFirst: 'Erstellen Sie Ihr erstes Projekt, um verwandte Drucke zu organisieren, den Fortschritt zu verfolgen und Ihre Builds zu verwalten.',
  3014. createFirstButton: 'Erstes Projekt erstellen',
  3015. create: 'Erstellen',
  3016. files: 'Dateien',
  3017. prints: 'Drucke',
  3018. plates: 'Platten',
  3019. parts: 'Teile',
  3020. lastModified: 'Zuletzt geändert',
  3021. deleteConfirm: 'Möchten Sie dieses Projekt wirklich löschen? Archive und Warteschlangenelemente werden getrennt, aber nicht gelöscht.',
  3022. addFiles: 'Dateien hinzufügen',
  3023. removeFile: 'Datei entfernen',
  3024. viewDetails: 'Details anzeigen',
  3025. // Modal fields
  3026. namePlaceholder: 'z.B. Voron 2.4 Build',
  3027. descriptionPlaceholder: 'Optionale Beschreibung...',
  3028. urlLabel: 'URL',
  3029. urlPlaceholder: 'https://makerworld.com/...',
  3030. urlInvalid: 'URL muss mit http:// oder https:// beginnen',
  3031. openExternalUrl: 'Projekt-URL öffnen',
  3032. coverImageLabel: 'Titelbild',
  3033. coverImageAlt: 'Projekt-Titelbild',
  3034. coverImageUpload: 'Hochladen',
  3035. coverImageReplace: 'Ersetzen',
  3036. coverImageRemove: 'Entfernen',
  3037. color: 'Farbe',
  3038. targetPlates: 'Ziel-Platten',
  3039. targetPlatesPlaceholder: 'z.B. 25',
  3040. targetPlatesHelp: 'Anzahl der Druckaufträge',
  3041. targetParts: 'Ziel-Teile',
  3042. targetPartsPlaceholder: 'z.B. 150',
  3043. targetPartsHelp: 'Benötigte Objekte insgesamt',
  3044. tagsLabel: 'Tags (kommagetrennt)',
  3045. tagsPlaceholder: 'z.B. voron, funktional, geschenk',
  3046. dueDate: 'Fälligkeitsdatum',
  3047. priority: 'Priorität',
  3048. priorityLow: 'Niedrig',
  3049. priorityNormal: 'Normal',
  3050. priorityHigh: 'Hoch',
  3051. priorityUrgent: 'Dringend',
  3052. // Status
  3053. statusActive: 'Aktiv',
  3054. statusCompleted: 'Abgeschlossen',
  3055. statusArchived: 'Archiviert',
  3056. done: 'Fertig',
  3057. completed: 'abgeschlossen',
  3058. failed: 'fehlgeschlagen',
  3059. inQueue: 'in Warteschlange',
  3060. noPrintsYet: 'Noch keine Drucke',
  3061. // Footer stats
  3062. printJobs: 'Druckaufträge (Platten)',
  3063. partsPrinted: 'Gedruckte Teile',
  3064. failedParts: 'Fehlgeschlagene Teile',
  3065. // Actions
  3066. import: 'Importieren',
  3067. export: 'Exportieren',
  3068. importProject: 'Projekt importieren',
  3069. exportAll: 'Alle Projekte exportieren',
  3070. loading: 'Projekte werden geladen...',
  3071. // Permissions
  3072. noEditPermission: 'Sie haben keine Berechtigung, Projekte zu bearbeiten',
  3073. noDeletePermission: 'Sie haben keine Berechtigung, Projekte zu löschen',
  3074. noCreatePermission: 'Sie haben keine Berechtigung, Projekte zu erstellen',
  3075. noImportPermission: 'Sie haben keine Berechtigung, Projekte zu importieren',
  3076. noExportPermission: 'Sie haben keine Berechtigung, Projekte zu exportieren',
  3077. // Toast
  3078. toast: {
  3079. created: 'Projekt erstellt',
  3080. updated: 'Projekt aktualisiert',
  3081. deleted: 'Projekt gelöscht',
  3082. imported: 'Projekt importiert',
  3083. multipleImported: '{{count}} Projekte importiert',
  3084. importFailed: 'Import fehlgeschlagen',
  3085. exported: 'Projekte exportiert (nur Metadaten)',
  3086. },
  3087. },
  3088. // Project detail page
  3089. projectDetail: {
  3090. notFound: 'Projekt nicht gefunden',
  3091. backToProjects: 'Zurück zu Projekten',
  3092. export: 'Exportieren',
  3093. exportProject: 'Projekt exportieren',
  3094. noExportPermission: 'Sie haben keine Berechtigung, Projekte zu exportieren',
  3095. noEditPermission: 'Sie haben keine Berechtigung, Projekte zu bearbeiten',
  3096. partOf: 'Teil von:',
  3097. priorityLabel: 'Priorität:',
  3098. noPrints: 'Noch keine Drucke in diesem Projekt',
  3099. status: {
  3100. active: 'Aktiv',
  3101. completed: 'Abgeschlossen',
  3102. archived: 'Archiviert',
  3103. },
  3104. priority: {
  3105. low: 'Niedrig',
  3106. normal: 'Normal',
  3107. high: 'Hoch',
  3108. urgent: 'Dringend',
  3109. },
  3110. dueDate: {
  3111. overdue: 'Überfällig',
  3112. today: 'Heute fällig',
  3113. daysLeft: '{{count}} Tage übrig',
  3114. },
  3115. progress: {
  3116. platesProgress: 'Platten-Fortschritt',
  3117. partsProgress: 'Teile-Fortschritt',
  3118. printJobs: 'Druckaufträge',
  3119. parts: 'Teile',
  3120. percentComplete: '{{percent}}% abgeschlossen',
  3121. remaining: '{{count}} verbleibend',
  3122. },
  3123. stats: {
  3124. printJobs: 'Druckaufträge',
  3125. total: 'gesamt',
  3126. failed: '{{count}} fehlgeschlagen',
  3127. partsPrinted: '{{count}} Teile gedruckt',
  3128. printTime: 'Druckzeit',
  3129. filamentUsed: 'Filament verbraucht',
  3130. },
  3131. cost: {
  3132. title: 'Kostenverfolgung',
  3133. filamentCost: 'Filamentkosten',
  3134. energy: 'Energie',
  3135. totalCost: 'Gesamtkosten',
  3136. total: 'Gesamt',
  3137. includesBom: 'inkl. Stückliste',
  3138. budget: 'Budget',
  3139. remaining: 'Verbleibend',
  3140. },
  3141. subProjects: {
  3142. title: 'Unterprojekte ({{count}})',
  3143. },
  3144. notes: {
  3145. title: 'Notizen',
  3146. noEditPermission: 'Sie haben keine Berechtigung, Notizen zu bearbeiten',
  3147. placeholder: 'Notizen zu diesem Projekt hinzufügen...',
  3148. empty: 'Noch keine Notizen. Klicken Sie auf Bearbeiten, um Notizen hinzuzufügen.',
  3149. },
  3150. files: {
  3151. title: 'Dateien',
  3152. linkFolders: 'Ordner aus dem Dateimanager verknüpfen',
  3153. forQuickAccess: 'für schnellen Zugriff auf dieses Projekt.',
  3154. fileCount: '{{count}} Datei(en)',
  3155. empty: 'Keine Ordner verknüpft. Gehen Sie zum Dateimanager und verknüpfen Sie einen Ordner mit diesem Projekt.',
  3156. noFiles: 'Keine Dateien in diesem Ordner.',
  3157. print: 'Jetzt drucken',
  3158. addToQueue: 'Zur Warteschlange',
  3159. },
  3160. bom: {
  3161. title: 'Stückliste',
  3162. acquired: '{{completed}}/{{total}} beschafft',
  3163. showAll: 'Alle anzeigen',
  3164. hideDone: 'Erledigte ausblenden',
  3165. addPart: 'Teil hinzufügen',
  3166. noAddPermission: 'Sie haben keine Berechtigung, Teile hinzuzufügen',
  3167. partNamePlaceholder: 'Teilename (z.B. M3x8 Schrauben)',
  3168. partName: 'Teilename',
  3169. qty: 'Menge',
  3170. price: 'Preis ({{currency}})',
  3171. sourcingUrlPlaceholder: 'Bezugsquelle-URL (optional)',
  3172. remarksPlaceholder: 'Bemerkungen (optional)',
  3173. deletePart: 'Teil löschen',
  3174. deleteConfirm: 'Möchten Sie "{{name}}" wirklich löschen?',
  3175. noUpdatePermission: 'Sie haben keine Berechtigung, Teile zu aktualisieren',
  3176. noEditPermission: 'Sie haben keine Berechtigung, Teile zu bearbeiten',
  3177. noDeletePermission: 'Sie haben keine Berechtigung, Teile zu löschen',
  3178. totalCost: 'Gesamtkosten:',
  3179. empty: 'Keine Teile in der Stückliste. Fügen Sie Hardware, Elektronik oder andere Komponenten hinzu, um zu verfolgen, was beschafft werden muss.',
  3180. },
  3181. timeline: {
  3182. title: 'Aktivitätsverlauf',
  3183. empty: 'Noch keine Aktivität.',
  3184. },
  3185. template: {
  3186. saveAsTemplate: 'Als Vorlage speichern',
  3187. noCreatePermission: 'Sie haben keine Berechtigung, Vorlagen zu erstellen',
  3188. },
  3189. queue: {
  3190. title: 'Warteschlange',
  3191. viewAll: 'Alle anzeigen',
  3192. printing: '{{count}} druckend',
  3193. queued: '{{count}} in Warteschlange',
  3194. },
  3195. prints: {
  3196. title: 'Drucke ({{count}})',
  3197. },
  3198. toast: {
  3199. projectUpdated: 'Projekt aktualisiert',
  3200. partAdded: 'Teil hinzugefügt',
  3201. partRemoved: 'Teil entfernt',
  3202. exportFailed: 'Export fehlgeschlagen',
  3203. projectExported: 'Projekt exportiert',
  3204. templateCreated: 'Vorlage erstellt',
  3205. },
  3206. },
  3207. // System info
  3208. system: {
  3209. title: 'Systeminformationen',
  3210. version: 'Version',
  3211. uptime: 'Laufzeit',
  3212. cpuUsage: 'CPU-Auslastung',
  3213. memoryUsage: 'Speicherauslastung',
  3214. diskUsage: 'Festplattenauslastung',
  3215. networkInfo: 'Netzwerkinformationen',
  3216. logs: 'Protokolle',
  3217. debugMode: 'Debug-Modus',
  3218. enableDebug: 'Debug-Protokollierung aktivieren',
  3219. disableDebug: 'Debug-Protokollierung deaktivieren',
  3220. downloadLogs: 'Protokolle herunterladen',
  3221. clearLogs: 'Protokolle löschen',
  3222. dockerInfo: 'Docker-Info',
  3223. containerName: 'Container-Name',
  3224. imageName: 'Image-Name',
  3225. platform: 'Plattform',
  3226. architecture: 'Architektur',
  3227. },
  3228. // Library (K Profiles)
  3229. library: {
  3230. title: 'Filament-Bibliothek',
  3231. addFilament: 'Filament hinzufügen',
  3232. editFilament: 'Filament bearbeiten',
  3233. deleteFilament: 'Filament löschen',
  3234. vendor: 'Hersteller',
  3235. material: 'Material',
  3236. color: 'Farbe',
  3237. kFactor: 'K-Faktor',
  3238. temperature: 'Temperatur',
  3239. noFilaments: 'Keine Filamente in der Bibliothek',
  3240. deleteConfirm: 'Möchten Sie dieses Filament wirklich löschen?',
  3241. importFromPrinter: 'Vom Drucker importieren',
  3242. exportToFile: 'In Datei exportieren',
  3243. },
  3244. // Slice (slicer-API integration via SliceModal)
  3245. slice: {
  3246. title: 'Modell slicen',
  3247. action: 'Slice',
  3248. slicing: 'Slicen…',
  3249. printer: 'Drucker-Profil',
  3250. process: 'Prozess-Profil',
  3251. filament: 'Filament-Profil',
  3252. filamentSlot: 'Filament {{index}} ({{type}})',
  3253. selectPreset: '— Profil auswählen —',
  3254. loadingPresets: 'Profile werden geladen…',
  3255. analyzingPlateFilaments: 'Plattenfilamente werden analysiert…',
  3256. analyzingPlateFilamentsHint: 'Es wird ein Probeschnitt ausgeführt, um die belegten AMS-Slots dieser Platte zu ermitteln. Wird zwischengespeichert — erneutes Öffnen ist sofort.',
  3257. previewToast: '{{name}} wird analysiert — {{elapsed}}',
  3258. previewWithProgress: '{{name}} wird analysiert — {{stage}} ({{percent}}%) — {{elapsed}}',
  3259. notUsedByPlate: '— wird von dieser Platte nicht verwendet',
  3260. printerMismatch: 'Dieses 3MF wurde für {{source}} gesliced, du hast aber {{target}} ausgewählt. Der Slicer-CLI kann ein 3MF nicht für einen anderen Drucker neu slicen — öffne die Quelle in Bambu Studio, ändere den Drucker und exportiere neu.',
  3261. noPresetsForSlot: 'Keine Profile verfügbar',
  3262. presetsLoadFailed: 'Profile konnten nicht geladen werden. Importiere sie zuerst unter Einstellungen → Profile.',
  3263. allPresetsRequired: 'Alle Profile müssen ausgewählt sein',
  3264. enqueuing: 'Slice-Auftrag wird übermittelt…',
  3265. queued: 'In Warteschlange…',
  3266. failed: 'Slicen fehlgeschlagen. Logs des Slicer-Sidecars prüfen.',
  3267. startedToast: '{{name}} wird im Hintergrund gesliced…',
  3268. queuedToast: 'Warteschlange: {{name}} — {{elapsed}}',
  3269. runningToast: '{{name}} wird gesliced — {{elapsed}}',
  3270. runningWithProgress: '{{name}} — {{stage}} ({{percent}}%) — {{elapsed}}',
  3271. completedToast: '{{name}} wurde gesliced',
  3272. failedToast: 'Slicen von {{name}} fehlgeschlagen: {{detail}}',
  3273. tier: {
  3274. local: 'Importiert',
  3275. cloud: 'Cloud',
  3276. standard: 'Standard',
  3277. },
  3278. cloud: {
  3279. notAuthenticated: 'In Bambu Cloud anmelden (Einstellungen → Profile → Cloud), um deine Cloud-Profile zu sehen.',
  3280. expired: 'Bambu-Cloud-Sitzung abgelaufen — erneut anmelden, um die Cloud-Profile zu aktualisieren.',
  3281. unreachable: 'Bambu Cloud ist gerade nicht erreichbar. Lokale und Standard-Profile funktionieren weiterhin.',
  3282. },
  3283. },
  3284. // Spoolman
  3285. spoolman: {
  3286. title: 'Spoolman-Integration',
  3287. enabled: 'Spoolman aktiviert',
  3288. url: 'Spoolman URL',
  3289. connected: 'Verbunden',
  3290. disconnected: 'Nicht verbunden',
  3291. testConnection: 'Verbindung testen',
  3292. sync: 'Synchronisieren',
  3293. syncing: 'Synchronisiert...',
  3294. lastSync: 'Letzte Synchronisierung',
  3295. linkToSpoolman: 'Mit Spoolman verknüpfen',
  3296. openInSpoolman: 'In Spoolman öffnen',
  3297. unlinkSpool: 'Spule trennen',
  3298. unlinkConfirmTitle: 'Spule entkoppeln?',
  3299. unlinkConfirmMessage: 'Dadurch wird die Spule von Spoolman getrennt. Die Spulendaten in Spoolman bleiben unverändert.',
  3300. selectSpool: 'Spule auswählen',
  3301. noUnlinkedSpools: 'Keine nicht verknüpften Spulen verfügbar',
  3302. linkSuccess: 'Spule erfolgreich mit Spoolman verknüpft',
  3303. linkFailed: 'Verknüpfung mit Spoolman fehlgeschlagen',
  3304. unlinkSuccess: 'Spule erfolgreich von Spoolman getrennt',
  3305. unlinkFailed: 'Trennen der Spule von Spoolman fehlgeschlagen',
  3306. spoolId: 'Spulen-ID',
  3307. fillSourceLabel: '(Spoolman)',
  3308. weight: 'Gewicht',
  3309. remaining: 'Verbleibend',
  3310. disableWeightSync: 'AMS-Gewichtsschätzung deaktivieren',
  3311. disableWeightSyncDesc: 'Verbleibende Kapazität nicht aus AMS-Schätzungen aktualisieren. Verwenden Sie dies, wenn Sie die Verbrauchserfassung von Spoolman gegenüber den prozentualen AMS-Schätzungen bevorzugen. Neue Spulen verwenden weiterhin die AMS-Schätzung als Anfangsgewicht.',
  3312. reportPartialUsage: 'Teilverbrauch bei fehlgeschlagenen Drucken melden',
  3313. reportPartialUsageDesc: 'Wenn ein Druck fehlschlägt oder abgebrochen wird, den geschätzten Filamentverbrauch bis zu diesem Zeitpunkt basierend auf dem Schichtfortschritt melden.',
  3314. },
  3315. // Inventar
  3316. inventory: {
  3317. title: 'Spulen-Inventar',
  3318. spoolmanMixedContentTitle: 'Spoolman lässt sich nicht über HTTPS laden — Browser blockiert gemischte Inhalte',
  3319. spoolmanMixedContentBody: 'Bambuddy wird über HTTPS ausgeliefert (über deinen Reverse-Proxy), aber deine Spoolman-URL ist nach wie vor HTTP. Browser blockieren gemischte Inhalte aus Sicherheitsgründen, daher kann die eingebettete Spoolman-Oberfläche nicht geladen werden. Spoolman muss ebenfalls über HTTPS erreichbar sein.',
  3320. spoolmanMixedContentFixReverseProxy: 'Stelle Spoolman hinter denselben Reverse-Proxy wie Bambuddy (Traefik / Nginx / Caddy) mit HTTPS und aktualisiere die Spoolman-URL in den Einstellungen auf die neue HTTPS-Adresse.',
  3321. spoolmanMixedContentFixOpenNewTab: 'Als Workaround kannst du Spoolman in einem neuen Tab über HTTP öffnen — gemischte Inhalte werden nur innerhalb eingebetteter Frames blockiert, ein eigener Tab funktioniert weiterhin.',
  3322. spoolmanOpenInNewTab: 'Spoolman in neuem Tab öffnen',
  3323. addSpool: 'Spule hinzufügen',
  3324. editSpool: 'Spule bearbeiten',
  3325. material: 'Material',
  3326. selectMaterial: 'Material auswählen...',
  3327. subtype: 'Untertyp',
  3328. brand: 'Marke',
  3329. searchBrand: 'Marke suchen...',
  3330. useCustomBrand: '"{{brand}}" verwenden',
  3331. useCustomMaterial: 'Benutzerdefiniertes Material verwenden: {{material}}',
  3332. colorName: 'Farbname',
  3333. colorNamePlaceholder: 'Jade White, Fire Red...',
  3334. color: 'Farbe',
  3335. hexColor: 'Hex-Farbe',
  3336. pickColor: 'Benutzerdefinierte Farbe wählen',
  3337. labelWeight: 'Nenngewicht',
  3338. coreWeight: 'Leergewicht der Spule',
  3339. searchSpoolWeight: 'Spulengewicht suchen...',
  3340. weightUsed: 'Verbraucht',
  3341. currentWeight: 'Restgewicht',
  3342. measuredWeight: 'Gemessenes Gewicht',
  3343. spoolName: 'Spule',
  3344. costPerKg: 'Kosten pro kg',
  3345. measuredWeightError: 'Das gemessene Gewicht muss zwischen {{min}}g und {{max}}g liegen.',
  3346. slicerFilament: 'Slicer-Filament',
  3347. slicerFilamentName: 'Slicer-Preset-Name',
  3348. slicerPreset: 'Slicer-Preset',
  3349. searchPresets: 'Filament-Presets suchen...',
  3350. selectedPreset: 'Ausgewählt',
  3351. noPresetsFound: 'Keine Presets gefunden',
  3352. tempOverrides: 'Temperatur-Überschreibungen',
  3353. note: 'Notiz',
  3354. notePlaceholder: 'Zusätzliche Notizen zu dieser Spule...',
  3355. // Per-spool category + low-stock threshold override (#729)
  3356. category: 'Kategorie',
  3357. categoryPlaceholder: 'z. B. Produktion, Prototyp, Kunde A',
  3358. categoryNone: 'Ohne Kategorie',
  3359. lowStockThresholdOverride: 'Niedrigbestandsschwelle (diese Spule)',
  3360. lowStockThresholdOverrideHelp: 'Leer lassen, um den globalen Schwellenwert ({{global}}%) zu verwenden.',
  3361. // RFID button rename (was "Tag löschen")
  3362. clearRfid: 'RFID-Tag löschen',
  3363. rfidCleared: 'RFID-Tag gelöscht',
  3364. archive: 'Archivieren',
  3365. restore: 'Wiederherstellen',
  3366. noSpools: 'Noch keine Spulen. Fügen Sie Ihre erste Spule hinzu.',
  3367. noAvailableSpools: 'Keine Spulen verfügbar. Fügen Sie eine Spule zum Inventar hinzu oder lösen Sie eine aus einem anderen Slot.',
  3368. kProfiles: 'K-Profile',
  3369. addKProfile: 'K-Profil hinzufügen',
  3370. assignSpool: 'Spule zuweisen',
  3371. unassignSpool: 'Zuweisung aufheben',
  3372. assignSuccess: 'Spule zugewiesen und AMS-Slot konfiguriert',
  3373. assignFailed: 'Spulenzuweisung fehlgeschlagen',
  3374. selectSpool: 'Wählen Sie eine Spule für diesen Slot',
  3375. assigned: 'Zugewiesen',
  3376. assigning: 'Wird zugewiesen...',
  3377. searchSpools: 'Spulen suchen...',
  3378. showAllSpools: 'Alle Spulen anzeigen',
  3379. allMaterials: 'Alle Materialien',
  3380. filterByBrand: 'Nach Marke filtern...',
  3381. showArchived: 'Archivierte anzeigen',
  3382. quickAdd: 'Schnellerfassung (Lager)',
  3383. quantity: 'Menge',
  3384. stock: 'Lager',
  3385. configured: 'Konfiguriert',
  3386. spoolsCreated: '{{count}} Spulen erstellt',
  3387. spoolCreated: 'Spule erstellt',
  3388. spoolUpdated: 'Spule aktualisiert',
  3389. spoolDeleted: 'Spule gelöscht',
  3390. spoolArchived: 'Spule archiviert',
  3391. spoolRestored: 'Spule wiederhergestellt',
  3392. deleteConfirm: 'Möchten Sie diese Spule wirklich löschen? Dies kann nicht rückgängig gemacht werden.',
  3393. archiveConfirm: 'Möchten Sie diese Spule wirklich archivieren?',
  3394. advancedSettings: 'Erweiterte Einstellungen',
  3395. filamentInfoTab: 'Filament-Info',
  3396. paProfileTab: 'PA-Profil',
  3397. filamentInfo: 'Filament',
  3398. additional: 'Zusätzlich',
  3399. loadingPresets: 'Cloud-Presets werden geladen...',
  3400. cloudConnected: 'Cloud verbunden',
  3401. cloudNotConnected: 'Cloud nicht verbunden (Standardwerte)',
  3402. recentColors: 'Zuletzt',
  3403. searchColors: 'Farben suchen...',
  3404. searchResults: 'Suchergebnisse',
  3405. allColors: 'Alle Farben',
  3406. commonColors: 'Häufige Farben',
  3407. showLess: 'Weniger',
  3408. showAll: 'Alle',
  3409. noColorsFound: 'Keine Farben gefunden',
  3410. noResults: 'Keine Ergebnisse',
  3411. // Multi-Color-Verlauf + visueller Effekt (#1154)
  3412. extraColorsLabel: 'Zusätzliche Farben',
  3413. extraColorsPlaceholder: 'EC984C,#6CD4BC,A66EB9,D87694',
  3414. extraColorsHint: '2 bis 8 Hex-Stops, durch Kommas getrennt. Wird als Verlauf dargestellt.',
  3415. extraColorsInvalid: 'Ungültige Hex-Werte ignoriert: {{tokens}}',
  3416. colorEffectLabel: 'Effekt',
  3417. colorEffect: {
  3418. none: 'Keiner',
  3419. // Oberflächeneffekte
  3420. sparkle: 'Glitzer',
  3421. wood: 'Holz',
  3422. marble: 'Marmor',
  3423. glow: 'Leuchtend',
  3424. matte: 'Matt',
  3425. // Glanz- / Finish-Varianten
  3426. silk: 'Seide',
  3427. galaxy: 'Galaxy',
  3428. rainbow: 'Regenbogen',
  3429. metal: 'Metallic',
  3430. translucent: 'Lichtdurchlässig',
  3431. // Mehrfarbige Varianten
  3432. gradient: 'Verlauf',
  3433. dualColor: 'Zweifarbig',
  3434. triColor: 'Dreifarbig',
  3435. multicolor: 'Mehrfarbig',
  3436. },
  3437. selectMaterialFirst: 'Bitte zuerst ein Material im Filament-Info Tab auswählen.',
  3438. noPrintersConfigured: 'Keine Drucker konfiguriert. Fügen Sie Drucker hinzu.',
  3439. matchingFilter: 'Filter',
  3440. anyBrand: 'Jede Marke',
  3441. anyVariant: 'Jede Variante',
  3442. autoSelect: 'Auto-Auswahl',
  3443. matches: 'Treffer',
  3444. match: 'Treffer',
  3445. noMatches: 'Keine Treffer',
  3446. connected: 'Verbunden',
  3447. offline: 'Offline',
  3448. printerOffline: 'Drucker ist offline. Verbinden Sie ihn, um Kalibrierungsprofile anzuzeigen.',
  3449. noKProfilesMatch: 'Keine K-Profile stimmen mit dem gewählten Filament überein.',
  3450. leftNozzle: 'Linke Düse',
  3451. rightNozzle: 'Rechte Düse',
  3452. profilesSelected: 'Kalibrierungsprofil(e) ausgewählt',
  3453. // Stats & enhanced table
  3454. totalInventory: 'Gesamtbestand',
  3455. totalConsumed: 'Gesamtverbrauch',
  3456. byMaterial: 'Nach Material',
  3457. inPrinter: 'Im Drucker',
  3458. lowStock: 'Niedriger Bestand',
  3459. sinceTracking: 'Seit Beginn der Erfassung',
  3460. loadedInAms: 'Im AMS/Ext geladen',
  3461. remaining: 'Verbleibend',
  3462. weightCheck: 'Gewichtskontrolle',
  3463. lastWeighed: 'Zuletzt gewogen',
  3464. neverWeighed: 'Nie gewogen',
  3465. search: 'Spulen suchen...',
  3466. showing: 'Zeige',
  3467. to: 'bis',
  3468. of: 'von',
  3469. show: 'Zeige',
  3470. spools: 'Spulen',
  3471. spool: 'Spule',
  3472. page: 'Seite',
  3473. noSpoolsMatch: 'Keine Ergebnisse',
  3474. noSpoolsMatchDesc: 'Versuchen Sie, Ihre Suche oder Filter anzupassen.',
  3475. active: 'Aktiv',
  3476. archived: 'Archiviert',
  3477. all: 'Alle',
  3478. used: 'Verwendet',
  3479. new: 'Neu',
  3480. clearFilters: 'Filter löschen',
  3481. table: 'Tabelle',
  3482. cards: 'Karten',
  3483. net: 'Netto',
  3484. // Grouping
  3485. groupSimilar: 'Gruppieren',
  3486. groupedSpools: '{{count}} identische Spulen',
  3487. groupedRows: 'Zeilen',
  3488. // Column config
  3489. columns: 'Spalten',
  3490. configureColumns: 'Spalten konfigurieren',
  3491. configureColumnsDesc: 'Ziehen zum Neuordnen oder Pfeile verwenden. Sichtbarkeit mit dem Augensymbol umschalten.',
  3492. visible: 'sichtbar',
  3493. reset: 'Zurücksetzen',
  3494. cancel: 'Abbrechen',
  3495. applyChanges: 'Änderungen anwenden',
  3496. moveUp: 'Nach oben',
  3497. moveDown: 'Nach unten',
  3498. hideColumn: 'Spalte ausblenden',
  3499. showColumn: 'Spalte einblenden',
  3500. // Tag-Verknüpfung
  3501. linkToSpool: 'Mit Spule verknüpfen',
  3502. tagLinked: 'Tag mit Spule verknüpft',
  3503. tagLinkFailed: 'Tag-Verknüpfung fehlgeschlagen',
  3504. tagAlreadyLinked: 'Tag bereits mit anderer Spule verknüpft',
  3505. unknownTag: 'Unbekannter RFID-Tag erkannt',
  3506. // Verbrauchshistorie
  3507. usageHistory: 'Verbrauchshistorie',
  3508. noUsageHistory: 'Noch kein Verbrauch erfasst',
  3509. printName: 'Druckname',
  3510. weightConsumed: 'Verbrauchtes Gewicht',
  3511. clearHistory: 'Löschen',
  3512. historyCleared: 'Verbrauchshistorie gelöscht',
  3513. fillSourceLabel: '(Inv)',
  3514. lowStockThresholdError: 'Der Schwellenwert muss zwischen 0.1 und 99.9 liegen',
  3515. assignMismatchTitle: 'Material stimmt nicht überein',
  3516. assignMismatchMessage: 'Das ausgewählte Spulenmaterial "{{spoolMaterial}}" stimmt nicht mit dem Tray-Material "{{trayMaterial}}" für {{location}} überein. Trotzdem zuweisen?',
  3517. assignMismatchConfirm: 'Trotzdem zuweisen',
  3518. assignPartialMismatchMessage: 'Das Spulenmaterial "{{spoolMaterial}}" ist ähnlich, stimmt aber nicht genau mit "{{trayMaterial}}" in {{location}} überein. Möchten Sie fortfahren?',
  3519. assignProfileMismatchMessage: 'Das Spulenprofil "{{spoolProfile}}" stimmt nicht mit dem Fachprofil "{{trayProfile}}" in {{location}} überein. Möchten Sie fortfahren?',
  3520. },
  3521. // Timelapse
  3522. timelapse: {
  3523. title: 'Zeitraffer',
  3524. create: 'Zeitraffer erstellen',
  3525. download: 'Herunterladen',
  3526. delete: 'Löschen',
  3527. preview: 'Vorschau',
  3528. frameRate: 'Bildrate',
  3529. quality: 'Qualität',
  3530. processing: 'Wird verarbeitet...',
  3531. noTimelapses: 'Keine Zeitraffer verfügbar',
  3532. },
  3533. // AMS
  3534. ams: {
  3535. title: 'AMS',
  3536. slot: 'Slot',
  3537. empty: 'Leer',
  3538. emptySlot: 'Leerer Slot',
  3539. unknown: 'Unbekannt',
  3540. humidity: 'Luftfeuchtigkeit',
  3541. temperature: 'Temperatur',
  3542. filamentType: 'Filamenttyp',
  3543. filamentColor: 'Farbe',
  3544. remaining: 'Verbleibend',
  3545. history: 'AMS-Verlauf',
  3546. noHistory: 'Kein Verlauf verfügbar',
  3547. configureSlot: 'Slot konfigurieren',
  3548. externalSpool: 'Externe Spule',
  3549. profile: 'Profil',
  3550. kFactor: 'K-Faktor',
  3551. fill: 'Füllstand',
  3552. configure: 'Konfigurieren',
  3553. used: 'verwendet',
  3554. remainingUnit: 'verbleibend',
  3555. },
  3556. // Print modal
  3557. printModal: {
  3558. title: 'Druck starten',
  3559. selectPrinter: 'Drucker auswählen',
  3560. selectPlate: 'Platte auswählen',
  3561. filamentMapping: 'Filamentzuordnung',
  3562. totalCost: 'Gesamtkosten:',
  3563. slotRemainingShort: ' - {{grams}}g übrig',
  3564. printSettings: 'Druckeinstellungen',
  3565. bedLeveling: 'Bett-Nivellierung',
  3566. flowCalibration: 'Fluss-Kalibrierung',
  3567. vibrationCalibration: 'Vibrations-Kalibrierung',
  3568. layerInspection: 'Erste-Schicht-Prüfung',
  3569. timelapse: 'Zeitraffer',
  3570. startPrint: 'Druck starten',
  3571. addToQueue: 'Zur Warteschlange hinzufügen',
  3572. cancel: 'Abbrechen',
  3573. noPrintersAvailable: 'Keine Drucker verfügbar',
  3574. printerBusy: 'Drucker ist beschäftigt',
  3575. printerOffline: 'Drucker ist offline',
  3576. sameTypeDifferentColor: 'Gleicher Typ, andere Farbe',
  3577. filamentTypeNotLoaded: 'Filamenttyp nicht geladen',
  3578. openCalendar: 'Kalender öffnen',
  3579. leftNozzle: 'L',
  3580. rightNozzle: 'R',
  3581. leftNozzleTooltip: 'Linke Düse',
  3582. rightNozzleTooltip: 'Rechte Düse',
  3583. filamentOverride: 'Filament-Überschreibung',
  3584. filamentOverrideHint: 'Filamente für modellbasierte Zuweisung optional überschreiben. Der Planer wird gegen die ausgewählten Filamente statt der ursprünglichen 3MF-Werte abgleichen.',
  3585. originalFilament: 'Original',
  3586. overrideWith: 'Ersetzen mit',
  3587. resetToOriginal: 'Auf Original zurücksetzen',
  3588. insufficientFilamentTitle: 'Nicht genug Filament',
  3589. insufficientFilamentMessage: 'Einige zugewiesene Spulen haben weniger Filament als dieser Druck benötigt:',
  3590. insufficientFilamentLine: '{{printer}} - {{slot}}: benötigt {{required}}g, verbleibend {{remaining}}g',
  3591. printAnyway: 'Trotzdem drucken',
  3592. forceColorMatch: 'Farbe erzwingen',
  3593. staggerPrinterStarts: 'Stagger printer starts',
  3594. staggerGroupSize: 'Group size',
  3595. staggerInterval: 'Interval (min)',
  3596. staggerPreview: '{{printers}} printers → {{groups}} groups of {{size}}, starting every {{interval}} min',
  3597. staggerLastGroup: 'last group: {{count}}',
  3598. staggerTotal: 'total: {{minutes}} min',
  3599. staggerToPrinters: 'Gestaffelt an {{count}} Drucker senden',
  3600. gcodeInjection: 'Auto-Print G-code einfügen',
  3601. },
  3602. // Backup
  3603. backup: {
  3604. title: 'Sichern & Wiederherstellen',
  3605. createBackup: 'Sicherung erstellen',
  3606. restoreBackup: 'Sicherung wiederherstellen',
  3607. restoreDescription: 'Alle Daten aus einer Sicherungsdatei ersetzen',
  3608. downloadBackup: 'Sicherung herunterladen',
  3609. uploadBackup: 'Sicherung hochladen',
  3610. lastBackup: 'Letzte Sicherung',
  3611. autoBackup: 'Automatische Sicherung',
  3612. backupNow: 'Jetzt sichern',
  3613. restoreWarning: 'Warnung: Das Wiederherstellen einer Sicherung überschreibt alle aktuellen Daten.',
  3614. includeArchives: 'Archive einschließen',
  3615. includeSettings: 'Einstellungen einschließen',
  3616. includeProfiles: 'Profile einschließen',
  3617. backupSuccess: 'Sicherung erfolgreich erstellt',
  3618. restoreSuccess: 'Sicherung erfolgreich wiederhergestellt',
  3619. backupFailed: 'Sicherung fehlgeschlagen',
  3620. restoreFailed: 'Wiederherstellung fehlgeschlagen',
  3621. restoreNote: 'Virtueller Drucker wird während der Wiederherstellung gestoppt',
  3622. // GitHub Backup
  3623. githubBackup: 'Git Backup',
  3624. enabled: 'Aktiviert',
  3625. cloudLoginRequired: 'Bambu Cloud Login erforderlich. Melden Sie sich unter Profile → Cloud-Profile an, um GitHub-Backup zu aktivieren.',
  3626. cloudLoginRequiredShort: 'Cloud-Login erforderlich',
  3627. githubDescription: 'Synchronisieren Sie Ihre Profile automatisch mit einem privaten GitHub-Repository für Backup und Versionsverlauf.',
  3628. repositoryUrl: 'Repository-URL',
  3629. repoUrlPlaceholderGitHub: 'https://github.com/username/repo-name',
  3630. repoUrlPlaceholderGitea: 'https://gitea.example.com/username/repo-name',
  3631. repoUrlPlaceholderForgejo: 'https://forgejo.example.com/username/repo-name',
  3632. repoUrlPlaceholderGitLab: 'https://gitlab.com/username/repo-name',
  3633. allowInsecureHttp: 'Unsicheres HTTP erlauben',
  3634. allowInsecureHttpHint: 'Für selbst gehostete Instanzen in privaten Netzwerken ohne TLS aktivieren',
  3635. personalAccessToken: 'Persönlicher Zugriffstoken',
  3636. tokenSaved: '(gespeichert)',
  3637. enterNewToken: 'Neuen Token eingeben zum Aktualisieren',
  3638. tokenHint: 'Feingranularer Token mit Lese-/Schreibberechtigung für Inhalte',
  3639. branch: 'Branch',
  3640. provider: 'Git Provider',
  3641. providerGitHub: 'GitHub',
  3642. providerGitLab: 'GitLab',
  3643. providerGitea: 'Gitea',
  3644. providerForgejo: 'Forgejo',
  3645. manualOnly: 'Nur manuell',
  3646. hourly: 'Stündlich',
  3647. daily: 'Täglich',
  3648. weekly: 'Wöchentlich',
  3649. includeInBackup: 'In Sicherung einschließen',
  3650. kProfiles: 'K-Profile',
  3651. kProfilesDescription: 'Druckvorschub-Kalibrierung von verbundenen Druckern',
  3652. noPrintersConnected: 'Keine Drucker verbunden',
  3653. printersConnected: '{{connected}}/{{total}} verbunden',
  3654. cloudProfiles: 'Cloud-Profile',
  3655. cloudProfilesDescription: 'Filament-, Drucker- und Prozessprofile aus der Bambu Cloud',
  3656. appSettings: 'App-Einstellungen',
  3657. appSettingsDescription: 'Bambuddy-Konfiguration (komplette Datenbank)',
  3658. spoolInventory: 'Spulenbestand',
  3659. spoolInventoryDescription: 'Filamentspulen, Nutzungsverlauf und Kostenverfolgung',
  3660. printArchives: 'Druckarchive',
  3661. printArchivesDescription: 'Druckverlauf-Metadaten (keine GCode/3MF-Dateien)',
  3662. lastBackupAt: 'Letzte Sicherung:',
  3663. noBackupsYet: 'Noch keine Sicherungen',
  3664. next: 'Nächste:',
  3665. startingBackup: 'Sicherung wird gestartet...',
  3666. test: 'Test',
  3667. enableBackup: 'Sicherung aktivieren',
  3668. testConnection: 'Verbindung testen',
  3669. enterRepoUrl: 'Repository-URL eingeben',
  3670. enterRepoAndToken: 'Repository-URL und Zugriffstoken eingeben',
  3671. repoRequired: 'Repository-URL ist erforderlich',
  3672. tokenRequired: 'Zugriffstoken ist erforderlich',
  3673. githubBackupEnabled: 'GitHub-Backup aktiviert',
  3674. tokenUpdated: 'Token aktualisiert',
  3675. settingsSaved: 'Einstellungen gespeichert',
  3676. failedToSave: 'Speichern fehlgeschlagen: {{message}}',
  3677. backupCompleteFiles: 'Sicherung abgeschlossen - {{count}} Dateien aktualisiert',
  3678. backupSkippedNoChanges: 'Sicherung übersprungen - keine Änderungen',
  3679. backupFailed2: 'Sicherung fehlgeschlagen: {{message}}',
  3680. clearedLogs: '{{count}} Protokolle gelöscht',
  3681. failedToClearLogs: 'Protokolle löschen fehlgeschlagen: {{message}}',
  3682. // History
  3683. history: 'Verlauf',
  3684. clear: 'Löschen',
  3685. date: 'Datum',
  3686. status: 'Status',
  3687. commit: 'Commit',
  3688. // Local Backup
  3689. localBackup: 'Lokale Sicherung',
  3690. localBackupDescription: 'Erstellen Sie eine vollständige Sicherung Ihrer Bambuddy-Daten einschließlich Datenbank, Archive, Uploads und aller Dateien.',
  3691. downloadBackupLabel: 'Sicherung herunterladen',
  3692. completeBackupZip: 'Vollständige Sicherung: Datenbank + alle Dateien (ZIP)',
  3693. download: 'Herunterladen',
  3694. preparingBackup: 'Sicherung wird vorbereitet...',
  3695. creatingArchive: 'Sicherungsarchiv wird erstellt... Dies kann bei großen Archiven eine Weile dauern.',
  3696. downloadingFile: 'Sicherungsdatei wird heruntergeladen...',
  3697. backupDownloaded: 'Sicherung erfolgreich heruntergeladen',
  3698. failedToCreateBackup: 'Sicherung erstellen fehlgeschlagen: {{message}}',
  3699. restore: 'Wiederherstellen',
  3700. restoreReplacesAll: 'Wiederherstellung ersetzt alle Daten.',
  3701. restoreReplacesAllDetail: 'Ihre aktuelle Datenbank und Dateien werden vollständig ersetzt. Nach der Wiederherstellung ist ein Neustart erforderlich.',
  3702. restoreConfirmTitle: 'Sicherung wiederherstellen',
  3703. restoreConfirmMessage: 'Sind Sie sicher, dass Sie von "{{filename}}" wiederherstellen möchten? Dies ersetzt Ihre aktuelle Datenbank und alle Dateien vollständig. Die Anwendung muss nach der Wiederherstellung neu gestartet werden.',
  3704. restoreConfirmButton: 'Sicherung wiederherstellen',
  3705. uploadingFile: 'Sicherungsdatei wird hochgeladen...',
  3706. backupRestoredRestart: 'Sicherung wiederhergestellt. Bitte starten Sie Bambuddy neu.',
  3707. failedToRestore: 'Sicherung wiederherstellen fehlgeschlagen. Bitte überprüfen Sie das Dateiformat.',
  3708. reloadNow: 'Jetzt neu laden',
  3709. creatingBackup: 'Sicherung erstellen',
  3710. restoringBackup: 'Sicherung wiederherstellen',
  3711. preparing: 'Vorbereiten...',
  3712. processing: 'Verarbeiten...',
  3713. doNotClosePage: 'Bitte schließen Sie diese Seite nicht und navigieren Sie nicht weg. Dieser Vorgang kann bei großen Sicherungen mehrere Minuten dauern.',
  3714. // RestoreModal
  3715. restoring: 'Wiederherstellen...',
  3716. restoreComplete: 'Wiederherstellung abgeschlossen',
  3717. restoreFailed2: 'Wiederherstellung fehlgeschlagen',
  3718. importSettings: 'Einstellungen aus einer Sicherungsdatei importieren',
  3719. pleaseWaitRestoring: 'Bitte warten Sie, während Ihre Daten wiederhergestellt werden',
  3720. selectBackupFile: 'Klicken Sie, um eine Sicherungsdatei auszuwählen (.json oder .zip)',
  3721. duplicateHandling: 'So funktioniert die Duplikatbehandlung:',
  3722. matchPrinters: 'Drucker',
  3723. matchPrintersBy: 'abgeglichen nach Seriennummer',
  3724. matchSmartPlugs: 'Smart Plugs',
  3725. matchSmartPlugsBy: 'abgeglichen nach IP-Adresse',
  3726. matchNotificationProviders: 'Benachrichtigungsanbieter',
  3727. matchNotificationProvidersBy: 'abgeglichen nach Name',
  3728. matchFilaments: 'Filamente',
  3729. matchFilamentsBy: 'abgeglichen nach Name + Typ + Marke',
  3730. matchArchives: 'Archive',
  3731. matchArchivesBy: 'abgeglichen nach Inhaltshash (immer übersprungen)',
  3732. matchPendingUploads: 'Ausstehende Uploads',
  3733. matchPendingUploadsBy: 'abgeglichen nach Dateiname',
  3734. matchSettingsTemplates: 'Einstellungen & Vorlagen',
  3735. matchSettingsTemplatesBy: 'immer überschrieben',
  3736. replaceExisting: 'Vorhandene Daten ersetzen',
  3737. keepExisting: 'Vorhandene Daten behalten',
  3738. overwriteDescription: 'Bereits vorhandene Elemente mit Sicherungsdaten überschreiben',
  3739. keepDescription: 'Nur Elemente wiederherstellen, die noch nicht vorhanden sind',
  3740. overwriteCaution: 'Achtung:',
  3741. overwriteWarning: 'Das Überschreiben ersetzt Ihre aktuellen Konfigurationen durch Daten aus der Sicherung. Drucker-Zugangscodes werden aus Sicherheitsgründen nie überschrieben.',
  3742. cancel: 'Abbrechen',
  3743. processingBackup: 'Sicherungsdatei wird verarbeitet...',
  3744. itemsRestored: 'Wiederhergestellt',
  3745. itemsSkipped: 'Übersprungen',
  3746. restored: 'Wiederhergestellt',
  3747. skippedAlreadyExist: 'Übersprungen (bereits vorhanden)',
  3748. filesCategory: 'Dateien (3MF, Thumbnails, etc.)',
  3749. andMore: '...und {{count}} weitere',
  3750. newApiKeysGenerated: 'Neue API-Schlüssel generiert',
  3751. keysShownOnce: 'Diese Schlüssel werden nur einmal angezeigt. Kopieren Sie sie jetzt!',
  3752. copy: 'Kopieren',
  3753. noDataFound: 'In der Sicherungsdatei wurden keine Daten zur Wiederherstellung gefunden.',
  3754. close: 'Schließen',
  3755. // Scheduled local backups (#884)
  3756. scheduledBackup: 'Scheduled Backups',
  3757. scheduledBackupDescription: 'Automatically create backup snapshots on a schedule. Output directory can be mounted to a NAS or external storage.',
  3758. frequency: 'Frequency',
  3759. backupTime: 'Time',
  3760. retention: 'Retention',
  3761. retentionDescription: 'Number of backups to keep',
  3762. outputPath: 'Output Path',
  3763. outputPathPlaceholder: 'Default: {{path}}',
  3764. outputPathDescription: 'Leave empty for default location',
  3765. runNow: 'Run Now',
  3766. backupFiles: 'Backup Files',
  3767. noScheduledBackups: 'No backups yet',
  3768. deleteBackup: 'Delete',
  3769. deleteBackupConfirm: 'Delete this backup file?',
  3770. backupRunning: 'Backup in progress...',
  3771. scheduledBackupComplete: 'Backup completed successfully',
  3772. scheduledBackupFailed: 'Backup failed',
  3773. nextBackup: 'Next backup',
  3774. backupSize: 'Size',
  3775. utc: 'UTC',
  3776. defaultPathLabel: 'Default:',
  3777. // Category labels
  3778. categories: {
  3779. settings: 'Einstellungen',
  3780. notification_providers: 'Benachrichtigungsanbieter',
  3781. notification_templates: 'Benachrichtigungsvorlagen',
  3782. smart_plugs: 'Smart Plugs',
  3783. printers: 'Drucker',
  3784. filaments: 'Filamente',
  3785. maintenance_types: 'Wartungstypen',
  3786. archives: 'Archive',
  3787. projects: 'Projekte',
  3788. pending_uploads: 'Ausstehende Uploads',
  3789. external_links: 'Externe Links',
  3790. api_keys: 'API-Schlüssel',
  3791. },
  3792. },
  3793. // Tags
  3794. tags: {
  3795. title: 'Tags',
  3796. addTag: 'Tag hinzufügen',
  3797. editTag: 'Tag bearbeiten',
  3798. deleteTag: 'Tag löschen',
  3799. tagName: 'Tag-Name',
  3800. tagColor: 'Tag-Farbe',
  3801. noTags: 'Keine Tags',
  3802. deleteConfirm: 'Möchten Sie diesen Tag wirklich löschen?',
  3803. manageTags: 'Tags verwalten',
  3804. },
  3805. // Upload modal (archives)
  3806. uploadModal: {
  3807. title: '3MF-Dateien hochladen',
  3808. dragDrop: '3MF-Dateien hierher ziehen',
  3809. or: 'oder',
  3810. browseFiles: 'Dateien durchsuchen',
  3811. extractionInfo: 'Das Druckermodell wird automatisch aus den 3MF-Datei-Metadaten extrahiert.',
  3812. uploaded: 'hochgeladen',
  3813. failed: 'fehlgeschlagen',
  3814. uploading: 'Wird hochgeladen...',
  3815. upload: 'Hochladen',
  3816. uploadFailed: 'Hochladen fehlgeschlagen',
  3817. },
  3818. // Edit archive modal
  3819. editArchive: {
  3820. title: 'Archiv bearbeiten',
  3821. name: 'Name',
  3822. namePlaceholder: 'Druckname',
  3823. printer: 'Drucker',
  3824. noPrinter: 'Kein Drucker',
  3825. project: 'Projekt',
  3826. noProject: 'Kein Projekt',
  3827. itemsPrinted: 'Gedruckte Teile',
  3828. itemsPrintedHelp: 'Anzahl der in diesem Druckauftrag produzierten Teile',
  3829. notes: 'Notizen',
  3830. notesPlaceholder: 'Notizen zu diesem Druck hinzufügen...',
  3831. externalLink: 'Externer Link',
  3832. externalLinkPlaceholder: 'https://printables.com/model/...',
  3833. externalLinkHelp: 'Link zu Printables, Thingiverse oder anderer Quelle',
  3834. tags: 'Tags',
  3835. tagsPlaceholder: 'Tags hinzufügen...',
  3836. addMoreTags: 'Weitere Tags hinzufügen...',
  3837. matchingTags: 'Übereinstimmend mit "{{query}}"',
  3838. existingTags: 'Vorhandene Tags',
  3839. clickToAdd: '(zum Hinzufügen klicken)',
  3840. status: 'Status',
  3841. failureReason: 'Fehlergrund',
  3842. selectReason: 'Grund auswählen...',
  3843. photos: 'Fotos des Druckergebnisses',
  3844. photosHelp: 'Klicken Sie auf + um Fotos Ihres Druckergebnisses hinzuzufügen',
  3845. printResult: 'Druckergebnis',
  3846. saving: 'Wird gespeichert...',
  3847. // Failure reasons
  3848. failureReasons: {
  3849. adhesionFailure: 'Haftungsfehler',
  3850. spaghettiDetached: 'Spaghetti / Abgelöst',
  3851. layerShift: 'Schichtversatz',
  3852. cloggedNozzle: 'Verstopfte Düse',
  3853. filamentRunout: 'Filament aufgebraucht',
  3854. warping: 'Verformung',
  3855. stringing: 'Fadenziehen',
  3856. underExtrusion: 'Unterextrusion',
  3857. powerFailure: 'Stromausfall',
  3858. userCancelled: 'Vom Benutzer abgebrochen',
  3859. other: 'Sonstiges',
  3860. },
  3861. // Archive statuses
  3862. statuses: {
  3863. completed: 'Abgeschlossen',
  3864. failed: 'Fehlgeschlagen',
  3865. aborted: 'Abgebrochen',
  3866. printing: 'Druckt',
  3867. },
  3868. },
  3869. // K-Profiles
  3870. kProfiles: {
  3871. title: 'K-Profile',
  3872. noPrintersConfigured: 'Keine Drucker konfiguriert',
  3873. addPrinterInSettings: 'Fügen Sie einen Drucker in den Einstellungen hinzu, um K-Profile zu verwalten',
  3874. noActivePrinters: 'Keine aktiven Drucker',
  3875. enablePrinterConnection: 'Aktivieren Sie eine Druckerverbindung, um K-Profile anzuzeigen',
  3876. loadingProfiles: 'Lade K-Profile...',
  3877. printerOffline: 'Drucker offline',
  3878. printerOfflineDesc: 'Der ausgewählte Drucker ist nicht verbunden. Schalten Sie ihn ein, um K-Profile anzuzeigen.',
  3879. noMatchingProfiles: 'Keine passenden Profile',
  3880. noMatchingProfilesDesc: 'Keine Profile entsprechen Ihren Suchkriterien',
  3881. noKProfiles: 'Keine K-Profile',
  3882. noKProfilesDesc: 'Keine Druckvorschub-Profile für {{diameter}}mm Düse gefunden',
  3883. createFirstProfile: 'Erstes Profil erstellen',
  3884. // Controls
  3885. printer: 'Drucker',
  3886. nozzle: 'Düse',
  3887. refresh: 'Aktualisieren',
  3888. addProfile: 'Profil hinzufügen',
  3889. export: 'Exportieren',
  3890. import: 'Importieren',
  3891. select: 'Auswählen',
  3892. selectAll: 'Alle auswählen',
  3893. delete: 'Löschen',
  3894. // Filters
  3895. searchPlaceholder: 'Nach Name oder Filament suchen...',
  3896. allExtruders: 'Alle Extruder',
  3897. leftOnly: 'Nur links',
  3898. rightOnly: 'Nur rechts',
  3899. allFlow: 'Alle Flusstypen',
  3900. hfOnly: 'Nur HF',
  3901. sOnly: 'Nur S',
  3902. sortName: 'Sortieren: Name',
  3903. sortKValue: 'Sortieren: K-Wert',
  3904. sortFilament: 'Sortieren: Filament',
  3905. // Dual extruder labels
  3906. leftExtruder: 'Linker Extruder',
  3907. rightExtruder: 'Rechter Extruder',
  3908. // Modal
  3909. modal: {
  3910. addTitle: 'K-Profil hinzufügen',
  3911. editTitle: 'K-Profil bearbeiten',
  3912. profileName: 'Profilname',
  3913. profileNamePlaceholder: 'Mein PLA-Profil',
  3914. kValue: 'K-Wert',
  3915. kValuePlaceholder: '0,020',
  3916. kValueHelp: 'Typischer Bereich: 0,01 - 0,06 für PLA, 0,02 - 0,10 für PETG',
  3917. filament: 'Filament',
  3918. selectFilament: 'Filament auswählen...',
  3919. noFilamentsHelp: 'Keine Filamente gefunden. Erstellen Sie zuerst ein K-Profil in Bambu Studio.',
  3920. flowType: 'Flusstyp',
  3921. highFlow: 'High Flow',
  3922. standard: 'Standard',
  3923. nozzleSize: 'Düsengröße',
  3924. extruder: 'Extruder',
  3925. extruders: 'Extruder',
  3926. left: 'Links',
  3927. right: 'Rechts',
  3928. notes: 'Notizen (lokal gespeichert)',
  3929. notesPlaceholder: 'Notizen zu diesem Profil hinzufügen...',
  3930. notesHelp: 'Notizen werden in Bambuddy gespeichert, nicht auf dem Drucker',
  3931. syncing: 'Synchronisiert mit Drucker...',
  3932. savingExtruder: 'Speichern auf Extruder {{current}}/{{total}}...',
  3933. pleaseWait: 'Bitte warten',
  3934. },
  3935. // Delete confirmation
  3936. deleteConfirm: {
  3937. title: 'Profil löschen',
  3938. cannotUndo: 'Dies kann nicht rückgängig gemacht werden',
  3939. message: 'Möchten Sie "{{name}}" wirklich vom Drucker löschen?',
  3940. },
  3941. // Bulk delete
  3942. bulkDelete: {
  3943. title: 'Profile löschen',
  3944. cannotUndo: 'Dies kann nicht rückgängig gemacht werden',
  3945. message: 'Möchten Sie wirklich {{count}} ausgewählte Profile vom Drucker löschen?',
  3946. },
  3947. // Toast
  3948. toast: {
  3949. profileSaved: 'K-Profil gespeichert',
  3950. profilesSaved: 'K-Profil auf {{count}} Extrudern gespeichert',
  3951. selectAtLeastOneExtruder: 'Bitte wählen Sie mindestens einen Extruder aus',
  3952. profileDeleted: 'K-Profil gelöscht',
  3953. profilesDeleted: '{{count}} Profile gelöscht',
  3954. exportedProfiles: '{{count}} Profile exportiert',
  3955. importedProfiles: '{{count}} von {{total}} Profilen importiert',
  3956. noProfilesToExport: 'Keine Profile zum Exportieren',
  3957. invalidFileFormat: 'Ungültiges Dateiformat',
  3958. failedToParseImport: 'Import-Datei konnte nicht gelesen werden',
  3959. failedToSaveBatch: 'K-Profile konnten nicht gespeichert werden',
  3960. noteSaved: 'Notiz gespeichert',
  3961. failedToSaveNote: 'Notiz konnte nicht gespeichert werden',
  3962. },
  3963. // Permissions
  3964. permission: {
  3965. noRead: 'Sie haben keine Berechtigung, Profile zu aktualisieren',
  3966. noCreate: 'Sie haben keine Berechtigung, Profile hinzuzufügen',
  3967. noUpdate: 'Sie haben keine Berechtigung, K-Profile zu aktualisieren',
  3968. noDelete: 'Sie haben keine Berechtigung, K-Profile zu löschen',
  3969. noExport: 'Sie haben keine Berechtigung, Profile zu exportieren',
  3970. noImport: 'Sie haben keine Berechtigung, Profile zu importieren',
  3971. },
  3972. },
  3973. // Virtual Printer
  3974. virtualPrinter: {
  3975. title: 'Virtueller Drucker',
  3976. running: 'Läuft',
  3977. stopped: 'Gestoppt',
  3978. description: {
  3979. default: 'Aktiviere einen virtuellen Drucker, der in Bambu Studio und OrcaSlicer erscheint. Dateien, die an diesen Drucker gesendet werden, werden direkt archiviert ohne zu drucken.',
  3980. proxy: 'Aktiviere einen Proxy, der Slicer-Datenverkehr an einen echten Drucker weiterleitet, um Ferndruck über jedes Netzwerk zu ermöglichen.',
  3981. },
  3982. enable: {
  3983. title: 'Virtuellen Drucker aktivieren',
  3984. visibleInSlicer: 'Sichtbar als "Bambuddy" in der Slicer-Erkennung',
  3985. proxyingTo: 'Proxy zu {{name}}',
  3986. notActive: 'Nicht aktiv',
  3987. },
  3988. model: {
  3989. title: 'Druckermodell',
  3990. description: 'Wähle welches Druckermodell emuliert werden soll.',
  3991. restartWarning: 'Das Ändern des Modells startet den virtuellen Drucker neu',
  3992. },
  3993. accessCode: {
  3994. title: 'Zugangscode',
  3995. isSet: 'Zugangscode ist gesetzt',
  3996. notSet: 'Kein Zugangscode gesetzt - erforderlich zum Aktivieren',
  3997. placeholder: '8-Zeichen-Code eingeben',
  3998. placeholderChange: 'Neuen Code eingeben zum Ändern',
  3999. hint: 'Muss genau 8 Zeichen lang sein. Wird von Slicern zur Authentifizierung verwendet.',
  4000. charCount: '({{count}}/8)',
  4001. },
  4002. targetPrinter: {
  4003. title: 'Zieldrucker',
  4004. configured: 'Proxy-Ziel konfiguriert',
  4005. notConfigured: 'Kein Zieldrucker ausgewählt - erforderlich für Proxy-Modus',
  4006. placeholder: 'Drucker auswählen...',
  4007. hint: 'Wähle den Drucker aus, an den der Slicer-Datenverkehr weitergeleitet werden soll. Der Drucker muss im LAN-Modus sein.',
  4008. noPrinters: 'Keine Drucker konfiguriert. Füge zuerst einen Drucker hinzu, um den Proxy-Modus zu verwenden.',
  4009. },
  4010. remoteInterface: {
  4011. title: 'Netzwerkschnittstelle überschreiben',
  4012. configured: 'Schnittstellenüberschreibung aktiv',
  4013. optional: 'Optional - verwenden wenn die automatisch erkannte IP falsch ist (z.B. mehrere NICs, Docker, VPN)',
  4014. placeholder: 'Automatisch erkennen (Standard)...',
  4015. hint: 'Überschreibt die per SSDP beworbene und im TLS-Zertifikat verwendete IP-Adresse. Nützlich wenn Bambuddy mehrere Netzwerkschnittstellen hat.',
  4016. },
  4017. mode: {
  4018. title: 'Modus',
  4019. archive: 'Archivieren',
  4020. archiveDesc: 'Dateien sofort archivieren',
  4021. review: 'Überprüfen',
  4022. reviewDesc: 'Vor dem Archivieren überprüfen',
  4023. queue: 'Warteschlange',
  4024. queueDesc: 'Archivieren und zur Warteschlange hinzufügen',
  4025. proxy: 'Proxy',
  4026. proxyDesc: 'An echten Drucker weiterleiten',
  4027. },
  4028. autoDispatch: {
  4029. title: 'Automatisch starten',
  4030. description: 'Drucke automatisch starten, wenn sie zur Warteschlange hinzugefügt werden. Wenn deaktiviert, warten Drucke auf manuellen Start.',
  4031. },
  4032. queueForceColorMatch: {
  4033. title: 'Farbabgleich erzwingen',
  4034. description: 'Druckaufträge nur an Drucker senden, bei denen der genaue Filament-Typ und die genaue Farbe geladen sind. Standardmäßig deaktiviert — ohne diese Option verwendet die Warteschlange nur den Drucker-Modell-Abgleich und wählt möglicherweise einen Drucker mit der falschen Farbe.',
  4035. },
  4036. tailscaleDisabled: {
  4037. title: 'Tailscale-Integration',
  4038. description: 'Aktivieren, um diesen VP als per Tailscale erreichbar zu markieren. Zeigt die Tailscale-Adresse des Hosts an, damit du weißt, welche IP du im Slicer eintragen musst. Der CA-Import bleibt unverändert — diese Option hat keinen Einfluss auf Zertifikate.',
  4039. },
  4040. setupRequired: {
  4041. title: 'Einrichtung erforderlich',
  4042. description: 'Die virtuelle Druckerfunktion erfordert zusätzliche Systemkonfiguration, bevor sie funktioniert. Dies beinhaltet Portweiterleitung, Firewall-Regeln und plattformspezifische Einstellungen.',
  4043. readGuide: 'Lese die Einrichtungsanleitung vor dem Aktivieren',
  4044. },
  4045. archiveNameSource: {
  4046. title: 'Quelle des Archivnamens',
  4047. description: 'Lege fest, wie neue Archive benannt werden, wenn Dateien über den virtuellen Drucker eintreffen. "Metadaten" verwendet den im 3MF eingebetteten Titel des Slicers (Standard). "Dateiname" nutzt den Dateinamen, den Bambu Studio per FTP gesendet hat — praktisch, wenn der Job im Dialog "Zum Drucker senden" umbenannt wurde.',
  4048. metadata: 'Metadaten',
  4049. filename: 'Dateiname',
  4050. },
  4051. howItWorks: {
  4052. title: 'So funktioniert es',
  4053. step1: 'Im selben LAN erscheinen virtuelle Drucker automatisch in deinem Slicer (Bambu Studio / OrcaSlicer). Aus anderen Netzwerken füge sie manuell per IP-Adresse und Zugangscode hinzu.',
  4054. step2: 'Im Archiv-, Überprüfungs- und Warteschlangen-Modus verwende die "Senden"-Funktion im Slicer, um 3MF-Dateien an Bambuddy zu senden. Der Slicer zeigt "Druck erfolgreich" — die Datei wird gespeichert, nicht gedruckt.',
  4055. step3: 'Im Proxy-Modus leitet der virtuelle Drucker den gesamten Datenverkehr an einen echten Drucker weiter — Drucke starten sofort wie bei einer direkten Verbindung.',
  4056. },
  4057. status: {
  4058. title: 'Status-Details',
  4059. printerName: 'Druckername',
  4060. model: 'Modell',
  4061. serialNumber: 'Seriennummer',
  4062. mode: 'Modus',
  4063. pendingFiles: 'Ausstehende Dateien',
  4064. targetPrinter: 'Zieldrucker',
  4065. ftpPort: 'FTP-Port',
  4066. mqttPort: 'MQTT-Port',
  4067. ftpConnections: 'FTP-Verbindungen',
  4068. mqttConnections: 'MQTT-Verbindungen',
  4069. },
  4070. toast: {
  4071. updated: 'Virtuelle Druckereinstellungen aktualisiert',
  4072. failedToUpdate: 'Einstellungen konnten nicht aktualisiert werden',
  4073. copyFailed: 'Kopieren fehlgeschlagen — bitte Text manuell markieren',
  4074. accessCodeRequired: 'Bitte zuerst einen Zugangscode setzen',
  4075. targetPrinterRequired: 'Bitte zuerst einen Zieldrucker auswählen',
  4076. bindIpRequired: 'Bitte zuerst eine Bind-IP setzen',
  4077. accessCodeEmpty: 'Zugangscode darf nicht leer sein',
  4078. accessCodeLength: 'Zugangscode muss genau 8 Zeichen lang sein',
  4079. created: 'Virtueller Drucker erstellt',
  4080. failedToCreate: 'Virtueller Drucker konnte nicht erstellt werden',
  4081. deleted: 'Virtueller Drucker gelöscht',
  4082. failedToDelete: 'Virtueller Drucker konnte nicht gelöscht werden',
  4083. },
  4084. list: {
  4085. title: 'Virtuelle Drucker',
  4086. add: 'Hinzufügen',
  4087. addFirst: 'Virtuellen Drucker hinzufügen',
  4088. empty: 'Keine virtuellen Drucker konfiguriert. Fügen Sie einen hinzu, um zu beginnen.',
  4089. },
  4090. bindIp: {
  4091. title: 'Bind-Interface',
  4092. placeholder: 'Interface auswählen...',
  4093. hint: 'Netzwerkinterface, an das dieser virtuelle Drucker gebunden wird. Muss pro Drucker eindeutig sein.',
  4094. },
  4095. proxy: {
  4096. accessCodeHint: 'Im Proxy-Modus den Zugangscode des Zieldruckers im Slicer verwenden. Die Verbindung wird transparent zum echten Drucker weitergeleitet.',
  4097. },
  4098. addDialog: {
  4099. title: 'Virtuellen Drucker hinzufügen',
  4100. name: 'Name',
  4101. hint: 'Sie können Zugangscode, Zieldrucker und andere Einstellungen nach dem Erstellen konfigurieren.',
  4102. create: 'Erstellen',
  4103. },
  4104. deleteConfirm: {
  4105. title: 'Virtuellen Drucker löschen',
  4106. message: 'Möchten Sie "{{name}}" wirklich löschen? Dies stoppt alle Dienste für diesen Drucker.',
  4107. },
  4108. },
  4109. // Model Viewer
  4110. modelViewer: {
  4111. openInSlicer: 'Im Slicer öffnen',
  4112. tabs: {
  4113. model: '3D-Modell',
  4114. gcode: 'G-Code Vorschau',
  4115. },
  4116. notAvailable: 'nicht verfügbar',
  4117. notSliced: 'nicht geslicet',
  4118. plates: 'Platten',
  4119. allPlates: 'Alle Platten',
  4120. plateNumber: 'Platte {{number}}',
  4121. plateCount: '{{count}} Platte',
  4122. plateCount_other: '{{count}} Platten',
  4123. objectCount: '{{count}} Objekt',
  4124. objectCount_other: '{{count}} Objekte',
  4125. filamentCount: '{{count}} Filament',
  4126. filamentCount_other: '{{count}} Filamente',
  4127. eta: 'ETA {{minutes}} Min',
  4128. noPreview: 'Keine Vorschau für diese Datei verfügbar',
  4129. pagination: {
  4130. pageOf: 'Seite {{current}} von {{total}}',
  4131. prev: 'Zurück',
  4132. next: 'Weiter',
  4133. },
  4134. errors: {
  4135. failedToLoad: 'Datei konnte nicht geladen werden',
  4136. noMeshes: 'Keine Meshes in 3MF-Datei gefunden',
  4137. unsupportedFormat: 'Nicht unterstütztes Dateiformat',
  4138. },
  4139. },
  4140. // Maintenance type descriptions (built-in)
  4141. maintenanceDescriptions: {
  4142. lubricateCarbonRods: 'Schmiermittel auf Karbonstäbe für sanfte Bewegung auftragen',
  4143. lubricateRails: 'Schmiermittel auf Linearschienen für sanfte Bewegung auftragen',
  4144. cleanNozzle: 'Hotend und Düse reinigen, um Verstopfungen zu verhindern',
  4145. checkBelts: 'Riemenspannung für präzise Drucke überprüfen',
  4146. cleanBuildPlate: 'Druckplatte für bessere Haftung reinigen',
  4147. checkExtruder: 'Extruderzahnräder auf Verschleiß prüfen',
  4148. checkCooling: 'Sicherstellen, dass Lüfter ordnungsgemäß funktionieren',
  4149. generalInspection: 'Allgemeine Druckerinspektion',
  4150. cleanCarbonRods: 'Karbonstäbe reinigen, um Reibung zu reduzieren',
  4151. lubricateSteelRods: 'Schmiermittel auf Stahlstangen für sanfte Bewegung auftragen',
  4152. cleanSteelRods: 'Stahlstangen reinigen, um Reibung zu reduzieren',
  4153. cleanLinearRails: 'Linearschienen abwischen, um Staub und Schmutz zu entfernen',
  4154. checkPtfeTube: 'PTFE-Schlauch auf Verschleiß oder Beschädigung prüfen',
  4155. replaceHepaFilter: 'HEPA-Filter für Luftqualität ersetzen',
  4156. replaceCarbonFilter: 'Aktivkohlefilter ersetzen',
  4157. lubricateLeftNozzleRail: 'Linke Düsenschiene schmieren (H2-Serie)',
  4158. },
  4159. // Smart Plugs
  4160. smartPlugs: {
  4161. offline: 'Offline',
  4162. admin: 'Admin',
  4163. openPlugAdminPage: 'Plug-Admin-Seite öffnen',
  4164. deleteSmartPlug: 'Smart Plug löschen',
  4165. turnOnSmartPlug: 'Smart Plug einschalten',
  4166. turnOffSmartPlug: 'Smart Plug ausschalten',
  4167. turnOn: 'Einschalten',
  4168. turnOff: 'Ausschalten',
  4169. addSmartPlug: {
  4170. scanningNetwork: 'Netzwerk wird durchsucht...',
  4171. chooseEntity: 'Entität auswählen...',
  4172. connectionFailed: 'Verbindung fehlgeschlagen',
  4173. searchEntities: 'Entitäten suchen...',
  4174. searchPowerSensors: 'Leistungssensoren suchen...',
  4175. searchEnergySensors: 'Energiesensoren suchen...',
  4176. placeholders: {
  4177. plugName: 'Wohnzimmer Steckdose',
  4178. mqttStateOnValue: 'ON, true, 1',
  4179. mqttSameAsPower: 'Gleich wie Leistungs-Topic oder anders',
  4180. },
  4181. },
  4182. // SmartPlugCard
  4183. linkedTo: 'Verbunden mit:',
  4184. monitorOnly: 'Nur Überwachung',
  4185. alerts: 'Alarme',
  4186. scheduleOn: 'Ein {{time}}',
  4187. scheduleOff: 'Aus {{time}}',
  4188. on: 'Ein',
  4189. off: 'Aus',
  4190. power: 'Leistung',
  4191. kwhToday: 'kWh Heute',
  4192. settings: 'Einstellungen',
  4193. automationSettings: 'Automatisierungseinstellungen',
  4194. showInSwitchbar: 'In Schaltleiste anzeigen',
  4195. quickAccessSidebar: 'Schnellzugriff über Seitenleiste',
  4196. enabled: 'Aktiviert',
  4197. enableAutomation: 'Automatisierung für diesen Stecker aktivieren',
  4198. autoOn: 'Auto Ein',
  4199. autoOnDescription: 'Einschalten wenn Druck startet',
  4200. autoOff: 'Auto Aus',
  4201. autoOffDescription: 'Ausschalten wenn Druck abgeschlossen (einmalig)',
  4202. autoOffPersistent: 'Aktiviert lassen',
  4203. autoOffPersistentDescription: 'Zwischen Drucken aktiviert bleiben statt einmalig',
  4204. turnOffDelayMode: 'Ausschaltverzögerungsmodus',
  4205. time: 'Zeit',
  4206. temp: 'Temp',
  4207. delayMinutes: 'Verzögerung (Minuten)',
  4208. tempThreshold: 'Temperaturschwelle (°C)',
  4209. tempThresholdDescription: 'Schaltet aus wenn die Düse unter diese Temperatur abkühlt',
  4210. edit: 'Bearbeiten',
  4211. deleteConfirm: 'Möchten Sie "{{name}}" wirklich löschen? Dies kann nicht rückgängig gemacht werden.',
  4212. turnOnConfirm: 'Möchten Sie "{{name}}" wirklich einschalten?',
  4213. turnOffConfirm: 'Möchten Sie "{{name}}" wirklich ausschalten? Dies unterbricht die Stromversorgung des angeschlossenen Geräts.',
  4214. failedToTurn: '{{name}}" konnte nicht {{action}} werden',
  4215. unknown: 'Unbekannt',
  4216. // AddSmartPlugModal
  4217. addTitle: 'Smart Plug hinzufügen',
  4218. editTitle: 'Smart Plug bearbeiten',
  4219. stopScanning: 'Suche beenden',
  4220. discoverTasmota: 'Tasmota Geräte suchen',
  4221. foundDevices: '{{count}} Gerät(e) gefunden - zum Auswählen klicken:',
  4222. noDevicesFound: 'Keine Tasmota Geräte in Ihrem Netzwerk gefunden',
  4223. haNotConfigured: 'Home Assistant ist nicht konfiguriert. Einrichtung unter',
  4224. haSettingsPath: 'Einstellungen → Netzwerk → Home Assistant',
  4225. selectEntity: 'Entität auswählen *',
  4226. ipAddress: 'IP-Adresse *',
  4227. nameLabel: 'Name *',
  4228. username: 'Benutzername',
  4229. password: 'Passwort',
  4230. authHint: 'Leer lassen, wenn Ihr Tasmota-Gerät keine Authentifizierung benötigt',
  4231. linkToPrinter: 'Mit Drucker verbinden',
  4232. noPrinter: 'Kein Drucker (nur manuelle Steuerung)',
  4233. linkingDescription: 'Verknüpfung ermöglicht automatisches Ein-/Ausschalten bei Druckstart/-ende',
  4234. powerAlerts: 'Leistungsalarme',
  4235. alertAbove: 'Alarm wenn über (W)',
  4236. alertBelow: 'Alarm wenn unter (W)',
  4237. alertDescription: 'Benachrichtigung wenn der Stromverbrauch diese Schwellenwerte überschreitet. Leer lassen um diese Richtung zu deaktivieren.',
  4238. dailySchedule: 'Tagesplan',
  4239. turnOnAt: 'Einschalten um',
  4240. turnOffAt: 'Ausschalten um',
  4241. scheduleDescription: 'Den Stecker automatisch täglich zu diesen Zeiten ein-/ausschalten. Leer lassen um diese Aktion zu überspringen.',
  4242. showOnPrinterCard: 'Auf Druckerkarte anzeigen',
  4243. displayOnPrinterCard: 'Schaltfläche auf Druckerkarte anzeigen',
  4244. connectedResult: 'Verbunden!',
  4245. deviceLabel: 'Gerät: {{name}} - ',
  4246. stateLabel: 'Status: {{state}}',
  4247. test: 'Test',
  4248. delete: 'Löschen',
  4249. save: 'Speichern',
  4250. add: 'Hinzufügen',
  4251. cancel: 'Abbrechen',
  4252. failedToStartScan: 'Suche konnte nicht gestartet werden',
  4253. nameRequired: 'Name ist erforderlich',
  4254. entityRequired: 'Entität ist für Home Assistant Stecker erforderlich',
  4255. mqttTopicRequired: 'Mindestens ein MQTT-Topic muss für Leistung, Energie oder Statusüberwachung konfiguriert sein',
  4256. loadingEntities: 'Entitäten werden geladen...',
  4257. loading: 'Laden...',
  4258. failedToLoadEntities: 'Entitäten konnten nicht geladen werden: {{error}}',
  4259. noEntitiesMatching: 'Keine Entitäten gefunden die "{{search}}" entsprechen',
  4260. noEntitiesAvailable: 'Keine Entitäten verfügbar',
  4261. searchingEntities: 'Alle Entitäten durchsuchen ({{count}} gefunden)',
  4262. showingEntities: 'Zeige switch, light, input_boolean ({{count}} verfügbar)',
  4263. energyMonitoringOptional: 'Energieüberwachung (Optional)',
  4264. energyMonitoringHint: 'Sensoren suchen und auswählen, die Leistungs-/Energiedaten liefern.',
  4265. powerSensorW: 'Leistungssensor (W)',
  4266. energyTodayKwh: 'Energie Heute (kWh)',
  4267. totalEnergyKwh: 'Gesamtenergie (kWh)',
  4268. noMatchingSensors: 'Keine passenden Sensoren',
  4269. none: 'Keine',
  4270. mqttNotConfigured: 'MQTT-Broker nicht konfiguriert. Broker-Adresse einstellen unter',
  4271. mqttSettingsPath: 'Einstellungen → Netzwerk → MQTT-Veröffentlichung',
  4272. mqttNotConfiguredSuffix: '(Sie müssen die Veröffentlichung nicht aktivieren, nur die Broker-Details ausfüllen).',
  4273. mqttMonitorOnlyDescription: 'MQTT-Stecker empfangen Leistungs-/Energiedaten über MQTT-Abonnement. Ein-/Ausschalten ist nicht verfügbar - verwenden Sie Ihren MQTT-Broker oder Ihr Home-Automation-System.',
  4274. powerMonitoring: 'Leistungsüberwachung',
  4275. energyMonitoring: 'Energieüberwachung',
  4276. stateMonitoring: 'Statusüberwachung',
  4277. optional: 'optional',
  4278. topic: 'Topic',
  4279. jsonPath: 'JSON-Pfad',
  4280. multiplier: 'Multiplikator',
  4281. onValue: 'EIN-Wert',
  4282. mqttPowerHint: 'JSON-Pfad extrahiert Wert aus JSON-Payload (z.B. "power_l1"). Leer lassen wenn Topic rohe numerische Werte sendet.\nMultiplikator 0.001 für mW→W, 1000 für kW→W verwenden.',
  4283. mqttEnergyHint: 'JSON-Pfad extrahiert Wert aus JSON-Payload. Leer lassen für rohe Werte.\nMultiplikator 0.001 für Wh→kWh, 1000 für MWh→kWh verwenden.',
  4284. mqttStateHint: 'JSON-Pfad extrahiert Wert aus JSON-Payload. Leer lassen für rohe Werte.\nEIN-Wert: der genaue String der "EIN" bedeutet. Leer lassen für Auto-Erkennung (ON, true, 1).',
  4285. // REST smart plug
  4286. restControl: 'Control',
  4287. restOnUrl: 'Turn ON URL',
  4288. restOffUrl: 'Turn OFF URL',
  4289. restOnBody: 'ON Request Body',
  4290. restOffBody: 'OFF Request Body',
  4291. restMethod: 'HTTP Method',
  4292. restHeaders: 'Custom Headers (JSON)',
  4293. restStatusUrl: 'Status URL',
  4294. restStatusPath: 'State JSON Path',
  4295. restStatusOnValue: 'ON Value',
  4296. restPowerUrl: 'Power URL',
  4297. restPowerPath: 'Power JSON Path',
  4298. restPowerMultiplier: 'Power Multiplikator',
  4299. restEnergyUrl: 'Energie URL',
  4300. restEnergyPath: 'Energy JSON Path',
  4301. restEnergyMultiplier: 'Energie Multiplikator',
  4302. restUrlRequired: 'At least one URL (ON or OFF) is required for REST plugs',
  4303. restHeadersHint: 'e.g. {"Authorization": "Bearer your-token"}',
  4304. restBodyHint: 'e.g. ON, {"state": "on"}',
  4305. restStatusHint: 'URL to poll for current state',
  4306. restPathHint: 'e.g. state or data.power.status',
  4307. restPowerUrlHint: 'Eigene URL für Leistungsdaten (nutzt Status URL wenn leer)',
  4308. restEnergyUrlHint: 'Eigene URL für Energiedaten (nutzt Status URL wenn leer)',
  4309. restEnergyHint: 'Jeder Wert kann eine eigene URL verwenden oder auf die Status URL zurückgreifen. Multiplikatoren für Einheitenumrechnung verwenden (z.B. 0.001 für Wh zu kWh).',
  4310. testConnection: 'Test Connection',
  4311. connectionSuccess: 'Connection successful',
  4312. noSwitchesInSwitchbar: 'Keine Schalter in der Schaltleiste',
  4313. enableSwitchbarHint: '"In Schaltleiste anzeigen" unter Einstellungen > Smart Plugs aktivieren',
  4314. },
  4315. // Notifications
  4316. notifications: {
  4317. // Provider types
  4318. providerTypes: {
  4319. callmebot: 'CallMeBot/WhatsApp',
  4320. ntfy: 'ntfy',
  4321. pushover: 'Pushover',
  4322. telegram: 'Telegram',
  4323. email: 'E-Mail',
  4324. discord: 'Discord',
  4325. webhook: 'Webhook',
  4326. homeassistant: 'Home Assistant',
  4327. },
  4328. // Provider descriptions
  4329. providerDescriptions: {
  4330. email: 'SMTP-E-Mail-Benachrichtigungen',
  4331. telegram: 'Benachrichtigungen über Telegram-Bot',
  4332. discord: 'An Discord-Kanal per Webhook senden',
  4333. ntfy: 'Kostenlose, selbst-hostbare Push-Benachrichtigungen',
  4334. pushover: 'Einfache, zuverlässige Push-Benachrichtigungen',
  4335. callmebot: 'Kostenlose WhatsApp-Benachrichtigungen über CallMeBot',
  4336. webhook: 'Generischer HTTP-POST an beliebige URL',
  4337. homeassistant: 'Dauerhafte Benachrichtigungen im Home Assistant Dashboard',
  4338. },
  4339. // NotificationProviderCard
  4340. lastSuccess: 'Zuletzt: {{date}}',
  4341. error: 'Fehler',
  4342. printer: 'Drucker:',
  4343. allPrinters: 'Alle Drucker',
  4344. sendTestNotification: 'Testbenachrichtigung senden',
  4345. eventSettings: 'Ereigniseinstellungen',
  4346. enabled: 'Aktiviert',
  4347. sendFromProvider: 'Benachrichtigungen von diesem Anbieter senden',
  4348. // Event categories
  4349. printEvents: 'Druckereignisse',
  4350. printerStatus: 'Druckerstatus',
  4351. amsAlarms: 'AMS-Alarme',
  4352. amsHtAlarms: 'AMS-HT-Alarme',
  4353. printQueue: 'Druckwarteschlange',
  4354. // Event tags (badges)
  4355. start: 'Start',
  4356. plateCheck: 'Plattenkontrolle',
  4357. complete: 'Abgeschlossen',
  4358. failed: 'Fehlgeschlagen',
  4359. stopped: 'Gestoppt',
  4360. progress: 'Fortschritt',
  4361. offline: 'Offline',
  4362. lowFilament: 'Filament niedrig',
  4363. maintenance: 'Wartung',
  4364. amsHumidity: 'AMS-Feuchtigkeit',
  4365. amsTemp: 'AMS-Temperatur',
  4366. amsHtHumidity: 'AMS-HT-Feuchtigkeit',
  4367. amsHtTemp: 'AMS-HT-Temperatur',
  4368. bedCooled: 'Bett abgekühlt',
  4369. firstLayer: 'Erste Schicht',
  4370. quiet: 'Ruhe',
  4371. digest: 'Zusammenfassung {{time}}',
  4372. // Event labels (expanded settings)
  4373. printStarted: 'Druck gestartet',
  4374. plateNotEmpty: 'Platte nicht leer',
  4375. plateNotEmptyDescription: 'Objekte vor dem Druck erkannt',
  4376. printCompleted: 'Druck abgeschlossen',
  4377. bedCooledLabel: 'Bett abgekühlt',
  4378. bedCooledDescription: 'Bett nach dem Druck unter Schwellenwert abgekühlt',
  4379. firstLayerCompleteLabel: 'Erste Schicht fertig',
  4380. firstLayerCompleteDescription: 'Benachrichtigung mit Foto nach erster Schicht',
  4381. missingSpoolAssignmentLabel: 'Fehlende Spulenzuordnung',
  4382. missingSpoolAssignmentDescription: 'Benachrichtigen, wenn ein Druck startet und benoetigte Schaechte keine zugeordnete Spule haben',
  4383. printFailed: 'Druck fehlgeschlagen',
  4384. printStopped: 'Druck gestoppt',
  4385. progressMilestones: 'Fortschrittsmeilensteine',
  4386. progressMilestonesDescription: 'Benachrichtigung bei 25%, 50%, 75%',
  4387. printerOffline: 'Drucker offline',
  4388. printerError: 'Druckerfehler',
  4389. lowFilamentLabel: 'Filament niedrig',
  4390. maintenanceDue: 'Wartung fällig',
  4391. maintenanceDueDescription: 'Benachrichtigen, wenn Wartung erforderlich ist',
  4392. amsHumidityHigh: 'AMS-Feuchtigkeit hoch',
  4393. amsHumidityHighDescription: 'Normale AMS-Feuchtigkeit überschreitet Schwellenwert',
  4394. amsTemperatureHigh: 'AMS-Temperatur hoch',
  4395. amsTemperatureHighDescription: 'Normale AMS-Temperatur überschreitet Schwellenwert',
  4396. amsHtHumidityHigh: 'AMS-HT-Feuchtigkeit hoch',
  4397. amsHtHumidityHighDescription: 'AMS-HT-Feuchtigkeit überschreitet Schwellenwert',
  4398. amsHtTemperatureHigh: 'AMS-HT-Temperatur hoch',
  4399. amsHtTemperatureHighDescription: 'AMS-HT-Temperatur überschreitet Schwellenwert',
  4400. // Queue events
  4401. jobAdded: 'Auftrag hinzugefügt',
  4402. jobAddedDescription: 'Auftrag zur Warteschlange hinzugefügt',
  4403. jobAssigned: 'Auftrag zugewiesen',
  4404. jobAssignedDescription: 'Modellbasierter Auftrag einem Drucker zugewiesen',
  4405. jobStarted: 'Auftrag gestartet',
  4406. jobStartedDescription: 'Warteschlangenauftrag hat Druck begonnen',
  4407. jobWaiting: 'Auftrag wartet',
  4408. jobWaitingDescription: 'Auftrag wartet auf Filament oder Drucker',
  4409. jobSkipped: 'Auftrag übersprungen',
  4410. jobSkippedDescription: 'Auftrag übersprungen (vorheriger fehlgeschlagen)',
  4411. jobFailed: 'Auftrag fehlgeschlagen',
  4412. jobFailedDescription: 'Auftrag konnte nicht gestartet werden',
  4413. queueComplete: 'Warteschlange abgeschlossen',
  4414. queueCompleteDescription: 'Alle Warteschlangenaufträge beendet',
  4415. // Quiet hours
  4416. quietHours: 'Ruhezeiten',
  4417. noNotificationsDuring: 'Keine Benachrichtigungen während dieser Zeiten',
  4418. editProviderToChangeQuietHours: 'Anbieter bearbeiten, um Ruhezeiten zu ändern',
  4419. // Daily digest
  4420. dailyDigest: 'Tägliche Zusammenfassung',
  4421. batchNotifications: 'Benachrichtigungen zu einer täglichen Zusammenfassung bündeln',
  4422. sendAt: 'Senden um {{time}}',
  4423. editProviderToChangeDigestTime: 'Anbieter bearbeiten, um Zusammenfassungszeit zu ändern',
  4424. // Actions
  4425. edit: 'Bearbeiten',
  4426. deleteProvider: 'Benachrichtigungsanbieter löschen',
  4427. deleteConfirm: 'Sind Sie sicher, dass Sie "{{name}}" löschen möchten? Dies kann nicht rückgängig gemacht werden.',
  4428. delete: 'Löschen',
  4429. // AddNotificationModal
  4430. addTitle: 'Benachrichtigungsanbieter hinzufügen',
  4431. editTitle: 'Benachrichtigungsanbieter bearbeiten',
  4432. nameLabel: 'Name *',
  4433. namePlaceholder: 'Meine Benachrichtigungen',
  4434. providerTypeLabel: 'Anbietertyp *',
  4435. configuration: 'Konfiguration',
  4436. testConfiguration: 'Konfiguration testen',
  4437. printerFilter: 'Druckerfilter',
  4438. onlyFromPrinter: 'Nur Benachrichtigungen für Ereignisse von diesem Drucker senden',
  4439. quietHoursDnd: 'Ruhezeiten (Nicht stören)',
  4440. quietStart: 'Start',
  4441. quietEnd: 'Ende',
  4442. dailyDigestLabel: 'Tägliche Zusammenfassung',
  4443. sendDigestAt: 'Zusammenfassung senden um',
  4444. digestCollected: 'Ereignisse werden gesammelt und als einzelne Zusammenfassung zu dieser Zeit gesendet',
  4445. notificationEvents: 'Benachrichtigungsereignisse',
  4446. progressPercent: '(25%, 50%, 75%)',
  4447. bedCooledAfterPrint: '(nach Druckabschluss)',
  4448. // Per-event ntfy priority (#990)
  4449. eventPriority: {
  4450. sectionTitle: 'ntfy-Priorität',
  4451. helpNtfy: 'Wähle eine Priorität pro aktiviertem Ereignis. ntfy nutzt diese, um Hinweise (Ton, Sichtbarkeit, Push-Verhalten) zu eskalieren. Hier nicht gesetzte Stufen verwenden den ntfy-Server-Standard.',
  4452. min: 'Min',
  4453. low: 'Niedrig',
  4454. default: 'Standard',
  4455. high: 'Hoch',
  4456. urgent: 'Dringend',
  4457. },
  4458. cancel: 'Abbrechen',
  4459. save: 'Speichern',
  4460. add: 'Hinzufügen',
  4461. nameRequired: 'Name ist erforderlich',
  4462. fieldRequired: '{{field}} ist erforderlich',
  4463. // Config field labels
  4464. phoneNumber: 'Telefonnummer',
  4465. apiKey: 'API-Schlüssel',
  4466. serverUrl: 'Server-URL',
  4467. topic: 'Thema',
  4468. authToken: 'Auth-Token',
  4469. userKey: 'Benutzerschlüssel',
  4470. appToken: 'App-Token',
  4471. priority: 'Priorität',
  4472. botToken: 'Bot-Token',
  4473. chatId: 'Chat-ID',
  4474. smtpServer: 'SMTP-Server',
  4475. smtpPort: 'SMTP-Port',
  4476. security: 'Sicherheit',
  4477. authentication: 'Authentifizierung',
  4478. username: 'Benutzername',
  4479. password: 'Passwort',
  4480. fromEmail: 'Absender-E-Mail',
  4481. toEmail: 'Empfänger-E-Mail',
  4482. webhookUrl: 'Webhook-URL',
  4483. payloadFormat: 'Payload-Format',
  4484. authorization: 'Autorisierung',
  4485. titleFieldName: 'Titel-Feldname',
  4486. messageFieldName: 'Nachrichten-Feldname',
  4487. // NotificationTemplateEditor
  4488. editTemplate: 'Vorlage bearbeiten: {{name}}',
  4489. titleLabel: 'Titel',
  4490. bodyLabel: 'Inhalt',
  4491. titlePlaceholder: 'Benachrichtigungstitel...',
  4492. bodyPlaceholder: 'Benachrichtigungsinhalt...',
  4493. availableVariables: 'Verfügbare Variablen',
  4494. clickToInsert: 'Klicken, um an Cursorposition im Inhalt einzufügen',
  4495. livePreview: 'Live-Vorschau',
  4496. hide: 'Ausblenden',
  4497. show: 'Anzeigen',
  4498. loadingPreview: 'Vorschau wird geladen...',
  4499. enterTemplateContent: 'Vorlageninhalt eingeben, um Vorschau zu sehen',
  4500. titlePreview: 'Titel:',
  4501. bodyPreview: 'Inhalt:',
  4502. resetToDefault: 'Auf Standard zurücksetzen',
  4503. titleRequired: 'Titel ist erforderlich',
  4504. bodyRequired: 'Inhalt ist erforderlich',
  4505. // NotificationLogViewer
  4506. notificationLog: 'Benachrichtigungsprotokoll',
  4507. showFailedOnly: 'Nur fehlgeschlagene',
  4508. last24Hours: 'Letzte 24 Stunden',
  4509. last7Days: 'Letzte 7 Tage',
  4510. last30Days: 'Letzte 30 Tage',
  4511. last90Days: 'Letzte 90 Tage',
  4512. justNow: 'Gerade eben',
  4513. noFailedNotifications: 'Keine fehlgeschlagenen Benachrichtigungen',
  4514. noNotificationsLogged: 'Keine Benachrichtigungen protokolliert',
  4515. unknownProvider: 'Unbekannter Anbieter',
  4516. logTitle: 'Titel',
  4517. logMessage: 'Nachricht',
  4518. logError: 'Fehler',
  4519. logProvider: 'Anbieter: {{type}}',
  4520. logTime: 'Zeit: {{time}}',
  4521. refresh: 'Aktualisieren',
  4522. clearOld: 'Alte löschen',
  4523. statsSummary: 'Letzte {{days}} Tage:',
  4524. statsNotifications: 'Benachrichtigungen',
  4525. statsSent: '{{count}} gesendet',
  4526. statsFailed: '{{count}} fehlgeschlagen',
  4527. // Event type labels (for log viewer)
  4528. eventTypes: {
  4529. print_start: 'Druck gestartet',
  4530. print_complete: 'Druck abgeschlossen',
  4531. print_failed: 'Druck fehlgeschlagen',
  4532. print_stopped: 'Druck gestoppt',
  4533. print_progress: 'Fortschritt',
  4534. printer_offline: 'Drucker offline',
  4535. printer_error: 'Druckerfehler',
  4536. filament_low: 'Filament niedrig',
  4537. maintenance_due: 'Wartung fällig',
  4538. test: 'Test',
  4539. },
  4540. // User email notification preferences
  4541. userEmail: {
  4542. title: 'Benachrichtigungen',
  4543. emailNotifications: 'E-Mail-Benachrichtigungen',
  4544. emailNotificationsDesc: 'Erhalten Sie E-Mail-Benachrichtigungen für Ihre eigenen Druckaufträge. E-Mails werden über die in der erweiterten Authentifizierung konfigurierten SMTP-Einstellungen gesendet.',
  4545. sendingTo: 'Benachrichtigungen werden gesendet an',
  4546. noEmailWarning: 'Ihr Konto hat keine E-Mail-Adresse. Wenden Sie sich an einen Administrator, um eine hinzuzufügen.',
  4547. printJobNotifications: 'Druckauftrags-Benachrichtigungen',
  4548. printJobNotificationsDesc: 'Wählen Sie aus, welche Ereignisse E-Mail-Benachrichtigungen für von Ihnen gesendete Druckaufträge auslösen.',
  4549. printJobStarts: 'Druckauftrag startet',
  4550. printJobStartsDesc: 'Benachrichtigt werden, wenn Ihr Druckauftrag beginnt.',
  4551. printJobFinishes: 'Druckauftrag fertig',
  4552. printJobFinishesDesc: 'Benachrichtigt werden, wenn Ihr Druckauftrag erfolgreich abgeschlossen wurde.',
  4553. printErrors: 'Druckfehler',
  4554. printErrorsDesc: 'Benachrichtigt werden, wenn Ihr Druckauftrag fehlschlägt oder auf einen Fehler stößt.',
  4555. printJobStops: 'Druckauftrag gestoppt',
  4556. printJobStopsDesc: 'Benachrichtigt werden, wenn Ihr Druckauftrag abgebrochen oder gestoppt wird.',
  4557. saveSuccess: 'Benachrichtigungseinstellungen gespeichert.',
  4558. saveError: 'Benachrichtigungseinstellungen konnten nicht gespeichert werden.',
  4559. },
  4560. },
  4561. // Rich Text Editor
  4562. richTextEditor: {
  4563. bold: 'Fett',
  4564. italic: 'Kursiv',
  4565. underline: 'Unterstrichen',
  4566. bulletList: 'Aufzählungsliste',
  4567. numberedList: 'Nummerierte Liste',
  4568. alignLeft: 'Linksbündig',
  4569. alignCenter: 'Zentriert',
  4570. alignRight: 'Rechtsbündig',
  4571. addLink: 'Link hinzufügen',
  4572. removeLink: 'Link entfernen',
  4573. },
  4574. // External Links
  4575. externalLinks: {
  4576. noLinksConfigured: 'Keine externen Links konfiguriert',
  4577. deleteLink: 'Link löschen',
  4578. removeCustomIcon: 'Benutzerdefiniertes Symbol entfernen',
  4579. openInNewTab: 'In neuem Tab öffnen',
  4580. placeholders: {
  4581. linkName: 'Mein Link',
  4582. },
  4583. },
  4584. // Keyboard Shortcuts Modal
  4585. keyboardShortcuts: {
  4586. title: 'Tastaturkürzel',
  4587. navigation: 'Navigation',
  4588. archivesSection: 'Archive',
  4589. kProfilesSection: 'K-Profile',
  4590. generalSection: 'Allgemein',
  4591. shortcuts: {
  4592. goToPrinters: 'Zu Drucker gehen',
  4593. goToArchives: 'Zu Archiv gehen',
  4594. goToQueue: 'Zur Warteschlange gehen',
  4595. goToStats: 'Zu Statistiken gehen',
  4596. goToProfiles: 'Zu Cloud-Profilen gehen',
  4597. goToSettings: 'Zu Einstellungen gehen',
  4598. focusSearch: 'Suche fokussieren',
  4599. openUploadModal: 'Upload-Modal öffnen',
  4600. clearSelection: 'Auswahl löschen / Eingabe aufheben',
  4601. contextMenu: 'Kontextmenü auf Karten',
  4602. refreshProfiles: 'Profile aktualisieren',
  4603. newProfile: 'Neues Profil',
  4604. exitSelectionMode: 'Auswahlmodus beenden',
  4605. showHelp: 'Diese Hilfe anzeigen',
  4606. },
  4607. footer: 'Drücken Sie Esc oder klicken Sie außerhalb, um zu schließen',
  4608. },
  4609. // Notification Log
  4610. notificationLog: {
  4611. title: 'Benachrichtigungsprotokoll',
  4612. events: {
  4613. printStarted: 'Druck gestartet',
  4614. printComplete: 'Druck abgeschlossen',
  4615. printFailed: 'Druck fehlgeschlagen',
  4616. printStopped: 'Druck gestoppt',
  4617. progress: 'Fortschritt',
  4618. printerOffline: 'Drucker offline',
  4619. printerError: 'Druckerfehler',
  4620. lowFilament: 'Wenig Filament',
  4621. maintenanceDue: 'Wartung fällig',
  4622. test: 'Test',
  4623. },
  4624. timeAgo: {
  4625. justNow: 'Gerade eben',
  4626. minutesAgo: 'vor {{minutes}}m',
  4627. hoursAgo: 'vor {{hours}}h',
  4628. },
  4629. },
  4630. // Restore/Backup Modal
  4631. restoreBackup: {
  4632. title: 'Backup wiederherstellen',
  4633. restoring: 'Wird wiederhergestellt...',
  4634. restoreComplete: 'Wiederherstellung abgeschlossen',
  4635. restoreFailed: 'Wiederherstellung fehlgeschlagen',
  4636. importSettings: 'Einstellungen aus Backup-Datei importieren',
  4637. pleaseWait: 'Bitte warten Sie, während Ihre Daten wiederhergestellt werden',
  4638. clickToSelect: 'Klicken Sie, um Backup-Datei auszuwählen (.json oder .zip)',
  4639. howDuplicateHandling: 'So funktioniert die Duplikatbehandlung:',
  4640. categories: {
  4641. printers: 'Drucker',
  4642. smartPlugs: 'Smart Plugs',
  4643. notificationProviders: 'Benachrichtigungsanbieter',
  4644. filaments: 'Filamente',
  4645. archives: 'Archive',
  4646. pendingUploads: 'Ausstehende Uploads',
  4647. settingsTemplates: 'Einstellungen & Vorlagen',
  4648. },
  4649. matchingInfo: {
  4650. printers: 'abgeglichen nach Seriennummer',
  4651. smartPlugs: 'abgeglichen nach IP-Adresse',
  4652. notificationProviders: 'abgeglichen nach Name',
  4653. filaments: 'abgeglichen nach Name + Typ + Marke',
  4654. archives: 'abgeglichen nach Inhalts-Hash',
  4655. pendingUploads: 'abgeglichen nach Dateiname',
  4656. settingsTemplates: 'immer überschrieben',
  4657. },
  4658. replaceExisting: 'Vorhandene Daten ersetzen',
  4659. keepExisting: 'Vorhandene Daten behalten',
  4660. replaceDescription: 'Bereits vorhandene Elemente mit Backup-Daten überschreiben',
  4661. keepDescription: 'Nur Elemente wiederherstellen, die noch nicht existieren',
  4662. caution: 'Vorsicht:',
  4663. cautionText: 'Das Überschreiben ersetzt Ihre aktuellen Konfigurationen durch Backup-Daten. Drucker-Zugangscodes werden aus Sicherheitsgründen niemals überschrieben.',
  4664. itemsRestored: 'Wiederhergestellte Elemente',
  4665. itemsSkipped: 'Übersprungene Elemente',
  4666. restored: 'Wiederhergestellt',
  4667. skipped: 'Übersprungen (existieren bereits)',
  4668. filesLabel: 'Dateien (3MF, Thumbnails, etc.)',
  4669. newApiKeysGenerated: 'Neue API-Schlüssel generiert',
  4670. newApiKeysWarning: 'Diese Schlüssel werden nur einmal angezeigt. Kopieren Sie sie jetzt!',
  4671. processingBackup: 'Backup-Datei wird verarbeitet...',
  4672. noDataFound: 'In der Backup-Datei wurden keine wiederherzustellenden Daten gefunden.',
  4673. failedToRestore: 'Backup konnte nicht wiederhergestellt werden. Bitte überprüfen Sie das Dateiformat.',
  4674. },
  4675. // Backup Export Modal
  4676. backupExport: {
  4677. title: 'Backup exportieren',
  4678. selectData: 'Zu exportierende Daten auswählen',
  4679. selectAll: 'Alle auswählen',
  4680. selectNone: 'Keine auswählen',
  4681. categoryDescriptions: {
  4682. settings: 'Sprache, Theme, Update-Einstellungen',
  4683. notifications: 'ntfy, Pushover, Discord, usw.',
  4684. templates: 'Benutzerdefinierte Nachrichtenvorlagen',
  4685. smartPlugs: 'Tasmota-Plug-Konfigurationen',
  4686. externalLinks: 'Seitenleiste Links zu externen Diensten',
  4687. printers: 'Druckerinformationen (Zugangscodes ausgeschlossen)',
  4688. plateDetection: 'Leere Platten-Referenzbilder',
  4689. filaments: 'Filamenttypen und -kosten',
  4690. maintenance: 'Benutzerdefinierte Wartungspläne',
  4691. archives: 'Alle Druckdaten + Dateien (3MF, Thumbnails, Fotos)',
  4692. projects: 'Projekte, BOM-Elemente und Anhänge',
  4693. pendingUploads: 'Virtueller Drucker-Uploads zur Überprüfung',
  4694. apiKeys: 'Webhook-API-Schlüssel (neue Schlüssel bei Import generiert)',
  4695. },
  4696. requiresPrinters: 'Drucker müssen ausgewählt sein',
  4697. zipFileWarning: 'ZIP-Datei wird erstellt.',
  4698. zipFileDescription: 'Enthält alle 3MF-Dateien, Thumbnails, Zeitraffer und Fotos. Dies kann eine Weile dauern und zu einer großen Datei führen.',
  4699. includeAccessCodes: 'Zugangscodes einschließen',
  4700. includeAccessCodesDescription: 'Für die Übertragung auf eine andere Maschine',
  4701. includeAccessCodesWarning: 'Zugangscodes werden im Klartext eingeschlossen. Bewahren Sie diese Backup-Datei sicher auf!',
  4702. categoriesSelected: '{{selectedCount}} Kategorien ausgewählt',
  4703. },
  4704. // Pending Uploads Panel
  4705. pendingUploads: {
  4706. placeholders: {
  4707. notes: 'Notizen zu diesem Druck hinzufügen...',
  4708. },
  4709. discardUpload: 'Upload verwerfen',
  4710. archiveAllUploads: 'Alle Uploads archivieren',
  4711. discardAllUploads: 'Alle Uploads verwerfen',
  4712. archive: 'Archivieren',
  4713. timeAgo: {
  4714. justNow: 'Gerade eben',
  4715. minutesAgo: 'vor {{minutes}}m',
  4716. hoursAgo: 'vor {{hours}}h',
  4717. daysAgo: 'vor {{days}}d',
  4718. },
  4719. },
  4720. // API Browser
  4721. apiBrowser: {
  4722. placeholders: {
  4723. requestBody: 'JSON-Anforderungstext...',
  4724. searchEndpoints: 'Endpunkte suchen...',
  4725. },
  4726. },
  4727. // Configure AMS Slot Modal
  4728. configureAmsSlot: {
  4729. title: 'AMS-Slot konfigurieren',
  4730. slotConfigured: 'Slot konfiguriert!',
  4731. configuringSlot: 'Slot wird konfiguriert:',
  4732. slotLabel: '{{ams}} Slot {{slot}}',
  4733. searchPresets: 'Voreinstellungen suchen...',
  4734. colorPlaceholder: 'Farbname oder Hex (z.B. braun, FF8800)',
  4735. clearCustomColor: 'Benutzerdefinierte Farbe löschen',
  4736. noCloudPresets: 'Keine Cloud-Voreinstellungen. Melden Sie sich bei Bambu Cloud an, um zu synchronisieren.',
  4737. noPresetsAvailable: 'Keine Voreinstellungen verfügbar. Melden Sie sich bei Bambu Cloud an oder importieren Sie lokale Profile.',
  4738. noMatchingPresets: 'Keine passenden Voreinstellungen gefunden.',
  4739. custom: 'Benutzerdefiniert',
  4740. builtin: 'Integriert',
  4741. settingsSentToPrinter: 'Einstellungen an Drucker gesendet',
  4742. filamentProfile: 'Filamentprofil',
  4743. kProfileLabel: 'K-Profil (Pressure Advance)',
  4744. filteringFor: 'Filtern nach: {{material}}',
  4745. noKProfile: 'Kein K-Profil (Standard 0.020 verwenden)',
  4746. noMatchingKProfiles: 'Keine passenden K-Profile gefunden. Standard K=0.020 wird verwendet.',
  4747. selectFilamentFirst: 'Zuerst ein Filamentprofil auswählen',
  4748. kFromCalibration: 'K={{value}} aus Druckerkalibrierung',
  4749. customColorLabel: 'Benutzerdefinierte Farbe (optional)',
  4750. presetColors: '{{name}} Farben:',
  4751. showLessColors: 'Weniger Farben anzeigen',
  4752. showMoreColors: 'Mehr Farben anzeigen',
  4753. clear: 'Löschen',
  4754. hexLabel: 'Hex: #{{hex}}',
  4755. resetting: 'Wird zurückgesetzt...',
  4756. resetSlot: 'Slot zurücksetzen',
  4757. cancel: 'Abbrechen',
  4758. configuring: 'Wird konfiguriert...',
  4759. configureSlot: 'Slot konfigurieren',
  4760. },
  4761. // Git Backup Settings
  4762. githubBackup: {
  4763. title: 'Git-Backup',
  4764. history: 'Verlauf',
  4765. downloadBackup: 'Backup herunterladen',
  4766. restoreBackup: 'Backup wiederherstellen',
  4767. noBackupsYet: 'Noch keine Backups',
  4768. },
  4769. // Email Settings
  4770. emailSettings: {
  4771. placeholders: {
  4772. fromName: 'BamBuddy',
  4773. },
  4774. },
  4775. // Tag Management Modal
  4776. tagManagement: {
  4777. searchTags: 'Tags suchen...',
  4778. renameTag: 'Tag umbenennen',
  4779. deleteTag: 'Tag löschen',
  4780. },
  4781. // Notification Template Editor
  4782. notificationTemplates: {
  4783. placeholders: {
  4784. title: 'Benachrichtigungstitel...',
  4785. body: 'Benachrichtigungstext...',
  4786. },
  4787. },
  4788. // Batch Tag Modal
  4789. batchTag: {
  4790. placeholders: {
  4791. newTag: 'Neuen Tag eingeben...',
  4792. },
  4793. },
  4794. // Photo Gallery Modal
  4795. photoGallery: {
  4796. deletePhoto: 'Foto löschen',
  4797. },
  4798. // Filament Hover Card
  4799. filamentHoverCard: {
  4800. copySpoolUuid: 'Spulen-UUID kopieren',
  4801. },
  4802. // K Profiles View
  4803. kProfilesView: {
  4804. hasNote: 'Hat Notiz',
  4805. copyProfile: 'Profil kopieren',
  4806. },
  4807. // Layout/Navigation
  4808. layout: {
  4809. openMenu: 'Menü öffnen',
  4810. noPermissionSystemInfo: 'Sie haben keine Berechtigung zum Anzeigen von Systeminformationen',
  4811. },
  4812. // Dashboard
  4813. dashboard: {
  4814. dragToReorder: 'Ziehen zum Neuordnen',
  4815. hideWidget: 'Widget ausblenden',
  4816. },
  4817. // Notification Provider Card
  4818. notificationProviderCard: {
  4819. deleteNotificationProvider: 'Benachrichtigungsanbieter löschen',
  4820. },
  4821. // File Manager Modal
  4822. fileManagerModal: {
  4823. closeFileManager: 'Dateimanager schließen',
  4824. sortFiles: 'Dateien sortieren',
  4825. goToParentFolder: 'Zum übergeordneten Ordner gehen',
  4826. threeView: '3D-Ansicht',
  4827. },
  4828. // Embedded Camera Viewer
  4829. embeddedCameraViewer: {
  4830. refreshStream: 'Stream aktualisieren',
  4831. close: 'Schließen',
  4832. zoomOut: 'Verkleinern',
  4833. resetZoom: 'Zoom zurücksetzen',
  4834. zoomIn: 'Vergrößern',
  4835. dragToResize: 'Ziehen zum Größe ändern',
  4836. },
  4837. // Timelapse Viewer
  4838. timelapseViewer: {
  4839. skipBack5s: '5s zurückspringen',
  4840. skipForward5s: '5s vorspringen',
  4841. },
  4842. // Notification Providers
  4843. notificationProviders: {
  4844. descriptions: {
  4845. email: 'SMTP-E-Mail-Benachrichtigungen',
  4846. telegram: 'Benachrichtigungen über Telegram-Bot',
  4847. discord: 'An Discord-Kanal über Webhook senden',
  4848. ntfy: 'Kostenlose, selbst hostbare Push-Benachrichtigungen',
  4849. pushover: 'Einfache, zuverlässige Push-Benachrichtigungen',
  4850. callmebot: 'Kostenlose WhatsApp-Benachrichtigungen über CallMeBot',
  4851. webhook: 'Generischer HTTP POST zu beliebiger URL',
  4852. },
  4853. },
  4854. // Log Viewer
  4855. logViewer: {
  4856. searchPlaceholder: 'Nachricht oder Logger-Name suchen...',
  4857. noLogEntries: 'Keine Logeinträge gefunden',
  4858. },
  4859. // Switchbar Popover
  4860. switchbarPopover: {
  4861. noSwitchesInSwitchbar: 'Keine Schalter in Schalterleiste',
  4862. },
  4863. // Project Page Modal
  4864. projectPageModal: {
  4865. placeholders: {
  4866. title: 'Titel',
  4867. designer: 'Designer',
  4868. license: 'Lizenz',
  4869. description: 'Beschreibung eingeben...',
  4870. profileTitle: 'Profil-Titel',
  4871. profileDescription: 'Profilbeschreibung...',
  4872. },
  4873. },
  4874. // Spoolman Settings
  4875. spoolmanSettings: {},
  4876. // Time
  4877. time: {
  4878. unknown: '-',
  4879. waiting: 'Wartend',
  4880. justNow: 'Gerade eben',
  4881. now: 'Jetzt',
  4882. minsAgo: 'vor {{count}}m',
  4883. inMins: 'in {{count}}m',
  4884. hoursAgo: 'vor {{count}}h',
  4885. inHours: 'in {{count}}h',
  4886. daysAgo: 'vor {{count}}d',
  4887. inDays: 'in {{count}}d',
  4888. },
  4889. // SpoolBuddy Kiosk
  4890. spoolbuddy: {
  4891. nav: {
  4892. dashboard: 'Dashboard',
  4893. ams: 'AMS',
  4894. inventory: 'Inventar',
  4895. writeTag: 'Schreiben',
  4896. settings: 'Einstellungen',
  4897. },
  4898. status: {
  4899. nfcReady: 'NFC bereit',
  4900. nfcOff: 'NFC aus',
  4901. offline: 'Offline',
  4902. online: 'Online',
  4903. noPrinters: 'Keine Drucker',
  4904. deviceOffline: 'Gerät offline',
  4905. waitingConnection: 'Warte auf Geräteverbindung...',
  4906. systemReady: 'System bereit',
  4907. status: 'Status',
  4908. },
  4909. dashboard: {
  4910. readyToScan: 'Bereit zum Scannen',
  4911. idleMessage: 'Spule auf die Waage legen zum Identifizieren',
  4912. nfcHint: 'NFC-Tag wird automatisch gelesen',
  4913. device: 'Gerät',
  4914. syncWeight: 'Gewicht sync.',
  4915. weightSynced: 'Synchronisiert!',
  4916. unknownTag: 'Unbekannter Tag',
  4917. newTag: 'Neuer Tag erkannt',
  4918. onScale: 'auf der Waage',
  4919. linkSpool: 'Mit Spule verknüpfen',
  4920. linkTagTitle: 'Tag mit Spule verknüpfen',
  4921. linkTag: 'Tag verknüpfen',
  4922. selectSpool: 'Spule zum Verknüpfen auswählen:',
  4923. noUntagged: 'Keine Spulen ohne Tags gefunden',
  4924. tagDetected: 'Tag erkannt',
  4925. noTag: 'Kein Tag',
  4926. tagId: 'Tag',
  4927. grossWeight: 'Bruttogewicht',
  4928. spoolSize: 'Spulengröße',
  4929. close: 'Schließen',
  4930. currentSpool: 'Aktuelle Spule',
  4931. plateReady: 'Druckplatte bereit: {{name}}',
  4932. plateReadyLabel: 'Bereit-zum-Quittieren-Liste',
  4933. plateClearAction: 'Frei',
  4934. plateClearedToast: 'Druckplatte als geleert markiert',
  4935. plateClearFailed: 'Druckplatte konnte nicht als geleert markiert werden',
  4936. },
  4937. modal: {
  4938. spoolDetected: 'Spule erkannt',
  4939. assignToAms: 'AMS zuweisen',
  4940. syncWeight: 'Gewicht sync.',
  4941. weightSynced: 'Synchronisiert!',
  4942. syncing: 'Synchronisiere...',
  4943. newTagDetected: 'Neuer Tag erkannt',
  4944. addToInventory: 'Zum Inventar hinzufügen',
  4945. assignToAmsTitle: 'AMS zuweisen',
  4946. selectSlot: 'Slot auswählen',
  4947. assign: 'Zuweisen',
  4948. assigning: 'Zuweisen...',
  4949. assignSuccess: 'Zugewiesen!',
  4950. assignPendingInsert: 'Zugewiesen. Slot wird beim Einsetzen der Spule konfiguriert.',
  4951. assignError: 'Fehler beim Zuweisen. Bitte erneut versuchen.',
  4952. noPrinterSelected: 'Drucker auswählen...',
  4953. noAmsDetected: 'Kein AMS an diesem Drucker erkannt',
  4954. slot: 'Slot',
  4955. },
  4956. weight: {
  4957. noReading: 'Kein Messwert',
  4958. stable: 'Stabil',
  4959. measuring: 'Messen...',
  4960. tare: 'Tarieren',
  4961. calibrate: 'Kalibrieren',
  4962. },
  4963. spool: {
  4964. remaining: 'Verbleibend',
  4965. material: 'Material',
  4966. brand: 'Marke',
  4967. color: 'Farbe',
  4968. coreWeight: 'Kern',
  4969. labelWeight: 'Etikett',
  4970. scaleWeight: 'Waage',
  4971. netWeight: 'Netto',
  4972. lastUsed: 'Zuletzt verwendet',
  4973. },
  4974. ams: {
  4975. noData: 'Kein AMS erkannt',
  4976. connectAms: 'AMS anschließen um Filament-Slots zu sehen',
  4977. noPrinter: 'Kein Drucker ausgewählt',
  4978. selectPrinter: 'Drucker in der oberen Leiste auswählen',
  4979. printerDisconnected: 'Drucker getrennt',
  4980. humidity: 'Feuchtigkeit',
  4981. level: 'Stufe',
  4982. active: 'Aktiv',
  4983. slot: 'Slot',
  4984. empty: 'Leer',
  4985. },
  4986. inventory: {
  4987. search: 'Spulen suchen...',
  4988. empty: 'Keine Spulen im Inventar',
  4989. noResults: 'Keine passenden Spulen',
  4990. spools: 'Spulen',
  4991. addSpool: 'Spule hinzufügen',
  4992. },
  4993. settings: {
  4994. // Tabs
  4995. tabDevice: 'Gerät',
  4996. tabDisplay: 'Anzeige',
  4997. tabScale: 'Waage',
  4998. tabUpdates: 'Updates',
  4999. // Device tab
  5000. nfcReader: 'NFC-Leser',
  5001. type: 'Typ',
  5002. connection: 'Verbindung',
  5003. notConnected: 'N/A',
  5004. deviceInfo: 'Geräteinfo',
  5005. hostname: 'Host',
  5006. uptime: 'Betriebszeit',
  5007. systemConfig: 'Backend & Auth',
  5008. backendUrl: 'Bambuddy Backend URL',
  5009. apiToken: 'API-Token',
  5010. apiTokenPlaceholder: 'API-Token eingeben',
  5011. saveConfig: 'Konfiguration speichern',
  5012. systemQueued: 'Konfiguration in Warteschlange.',
  5013. nfcDiagnostic: 'NFC-Diagnose',
  5014. scaleDiagnostic: 'Waagen-Diagnose',
  5015. readTagDiagnostic: 'Tag-Lese-Diagnose',
  5016. testNfc: 'Leser testen',
  5017. testScale: 'Genauigkeit testen',
  5018. testReadTag: 'Tag lesen',
  5019. systemFieldsRequired: 'Backend-URL ist erforderlich.',
  5020. // Display tab
  5021. brightness: 'Helligkeit',
  5022. saved: 'Gespeichert',
  5023. noBacklight: 'Keine DSI-Hintergrundbeleuchtung erkannt. Helligkeitssteuerung erfordert ein DSI-Display.',
  5024. screenBlank: 'Bildschirm-Abschaltzeit',
  5025. screenBlankDesc: 'Bildschirm schaltet sich nach Inaktivität ab. Zum Aufwecken berühren.',
  5026. displayNote: 'Helligkeit wird als Software-Filter angewendet.',
  5027. // Scale tab
  5028. scaleCalibration: 'Waagen-Kalibrierung',
  5029. currentWeight: 'Aktuelles Gewicht',
  5030. tareOffset: 'Tara',
  5031. calFactor: 'Faktor',
  5032. knownWeight: 'Bekanntes Gewicht',
  5033. calStep1: 'Alle Gegenstände von der Waage entfernen und Nullpunkt setzen.',
  5034. calStep2: 'Bekanntes Gewicht auf die Waage legen.',
  5035. setZero: 'Nullpunkt setzen',
  5036. calibrateNow: 'Kalibrieren',
  5037. calibrated: 'Kalibriert',
  5038. tareSet: 'Tara-Befehl gesendet. Warte auf Gerät...',
  5039. tareFailed: 'Tara-Befehl fehlgeschlagen',
  5040. zeroSet: 'Nullpunkt gesetzt. Bekanntes Gewicht auf die Waage legen.',
  5041. calibrationDone: 'Kalibrierung abgeschlossen!',
  5042. calibrationFailed: 'Kalibrierung fehlgeschlagen',
  5043. lastCalibrated: 'Zuletzt kalibriert',
  5044. stable: 'Stabil',
  5045. settling: 'Stabilisierung...',
  5046. firmware: 'Firmware',
  5047. scale: 'Waage',
  5048. noDevice: 'Kein SpoolBuddy-Gerät gefunden',
  5049. // Updates tab
  5050. daemonVersion: 'Daemon-Version',
  5051. currentVersion: 'Aktuell',
  5052. versionPending: 'Warte auf Daemon...',
  5053. checking: 'Prüfe...',
  5054. checkUpdates: 'Nach Updates suchen',
  5055. updateAvailable: 'Update verfügbar',
  5056. updateInstructions: 'Update per SSH: SpoolBuddy-Installationsskript ausführen.',
  5057. upToDate: 'Aktuell',
  5058. includeBeta: 'Beta-Versionen einschließen',
  5059. },
  5060. writeTag: {
  5061. tabExisting: 'Vorhandene Spule',
  5062. tabNew: 'Neue Spule',
  5063. tabReplace: 'Tag ersetzen',
  5064. searchPlaceholder: 'Suche nach Material, Farbe, Marke...',
  5065. noUntaggedSpools: 'Keine Spulen ohne Tags',
  5066. noTaggedSpools: 'Keine Spulen mit Tags',
  5067. selectSpool: 'Spule auswählen, dann einen NTAG auf den Leser legen',
  5068. placeTag: 'NTAG auf den Leser legen',
  5069. tagReady: 'Tag erkannt — bereit zum Schreiben',
  5070. writeTag: 'Tag beschreiben',
  5071. replaceTag: 'Tag ersetzen',
  5072. writing: 'Tag wird beschrieben...',
  5073. waiting: 'Warte auf SpoolBuddy...',
  5074. writeSuccess: 'Tag erfolgreich beschrieben!',
  5075. writeFailed: 'Schreiben fehlgeschlagen',
  5076. queueFailed: 'Schreibbefehl konnte nicht eingereiht werden',
  5077. tryAgain: 'Erneut versuchen',
  5078. cancel: 'Abbrechen',
  5079. replaceWarning: 'Alter Tag wird getrennt. Neuer Tag ersetzt ihn.',
  5080. deviceOffline: 'SpoolBuddy ist offline',
  5081. material: 'Material',
  5082. colorName: 'Farbname',
  5083. color: 'Farbe',
  5084. brand: 'Marke',
  5085. weight: 'Gewicht (g)',
  5086. createSpool: 'Spule erstellen',
  5087. creating: 'Wird erstellt...',
  5088. spoolCreated: 'Spule erstellt! Bereit zum Schreiben.',
  5089. createFailed: 'Spule konnte nicht erstellt werden',
  5090. },
  5091. quickMenu: {
  5092. printerPower: 'Drucker-Strom',
  5093. systemControls: 'System',
  5094. restartDaemon: 'Daemon neustarten',
  5095. restartBrowser: 'Browser neustarten',
  5096. reboot: 'Neustart',
  5097. shutdown: 'Herunterfahren',
  5098. swipeToClose: 'Nach unten wischen zum Schließen',
  5099. confirmTitle: 'Bestätigen',
  5100. confirmShutdown: 'Möchten Sie das SpoolBuddy wirklich herunterfahren? Sie benötigen physischen Zugang, um es wieder einzuschalten.',
  5101. confirmReboot: 'Möchten Sie das SpoolBuddy wirklich neu starten?',
  5102. confirmRestartDaemon: 'SpoolBuddy-Daemon neustarten? NFC und Waage sind vorübergehend nicht verfügbar.',
  5103. confirmRestartBrowser: 'Kiosk-Browser neustarten? Das Display wird kurz schwarz.',
  5104. confirm: 'Bestätigen',
  5105. confirmPlugOn: '{{name}} einschalten?',
  5106. confirmPlugOff: '{{name}} ausschalten?',
  5107. turnOn: 'Einschalten',
  5108. turnOff: 'Ausschalten',
  5109. },
  5110. },
  5111. bugReport: {
  5112. title: 'Fehler melden',
  5113. description: 'Beschreibung',
  5114. descriptionPlaceholder: 'Was ist schiefgelaufen? Bitte beschreiben Sie das Problem...',
  5115. email: 'E-Mail (optional)',
  5116. emailPlaceholder: 'ihre@email.de',
  5117. emailPrivacy: 'Falls angegeben, wird Ihre E-Mail in einem eingeklappten Abschnitt des GitHub-Issues aufgeführt, damit der Betreuer sich melden kann.',
  5118. screenshot: 'Screenshot',
  5119. uploadOrPaste: 'Bild hochladen, einfügen oder ziehen',
  5120. dataCollectedSummary: 'Welche Daten werden im Bericht gesendet?',
  5121. dataIncluded: 'Enthalten:',
  5122. dataIncludedList: 'App-Version, Betriebssystem, Architektur, Python-Version, Datenbankstatistiken (nur Anzahl), Druckermodelle, Düsenanzahl, Firmware-Versionen, Verbindungsstatus, Integrationsstatus (Spoolman, MQTT, HA), nicht-sensible Einstellungen, Netzwerkschnittstellenanzahl, Docker-Details, Abhängigkeitsversionen.',
  5123. dataNeverIncluded: 'Nie enthalten:',
  5124. dataNeverIncludedList: 'Druckernamen, Seriennummern, Zugangscodes, Passwörter, IP-Adressen, E-Mail-Adressen, API-Schlüssel, Tokens, Webhook-URLs, Hostnamen oder Benutzernamen.',
  5125. submit: 'Absenden',
  5126. startLogging: 'Debug-Protokollierung starten',
  5127. stepEnableLogging: 'Debug-Protokollierung aktiviert',
  5128. stepReproduce: 'Problem jetzt reproduzieren',
  5129. stepStopLogging: 'Stoppen & Bericht senden',
  5130. stopAndSubmit: 'Stoppen & Senden',
  5131. maxDuration: 'Stoppt automatisch nach {{minutes}} Min.',
  5132. stoppingLogs: 'Protokolle sammeln & senden...',
  5133. submitting: 'Fehlerbericht wird gesendet...',
  5134. submitSuccess: 'Fehlerbericht erfolgreich gesendet!',
  5135. submitFailed: 'Fehlerbericht konnte nicht gesendet werden',
  5136. thankYou: 'Vielen Dank!',
  5137. submitted: 'Ihr Fehlerbericht wurde eingereicht.',
  5138. viewIssue: 'Issue ansehen',
  5139. unexpectedError: 'Ein unerwarteter Fehler ist aufgetreten',
  5140. },
  5141. failureDetection: {
  5142. title: 'KI-Fehlererkennung',
  5143. description: 'Überwacht Drucke über eine selbst gehostete Obico-ML-API und reagiert automatisch auf erkannte Fehldrucke.',
  5144. mlUrl: 'Obico-ML-API-URL',
  5145. mlUrlHint: 'Basis-URL deines selbst gehosteten Obico-ml_api-Containers (z. B. http://192.168.1.10:3333).',
  5146. test: 'Testen',
  5147. testSuccess: 'ML-API erreichbar und funktionsfähig.',
  5148. testFailed: 'ML-API konnte nicht erreicht werden.',
  5149. sensitivity: 'Empfindlichkeit',
  5150. sensitivityLow: 'Niedrig (weniger Fehlalarme)',
  5151. sensitivityMedium: 'Mittel (ausgewogen)',
  5152. sensitivityHigh: 'Hoch (frühe Erkennung, mehr Fehlalarme)',
  5153. sensitivityHint: 'Passt die Konfidenz-Schwellwerte an, die Warnungen und Fehler auslösen.',
  5154. action: 'Aktion bei erkanntem Fehler',
  5155. actionNotify: 'Nur benachrichtigen',
  5156. actionPause: 'Druck pausieren',
  5157. actionPauseOff: 'Pausieren und Strom abschalten',
  5158. pollInterval: 'Prüfintervall (Sekunden)',
  5159. pollIntervalHint: 'Wie oft jeder Drucker während eines laufenden Drucks geprüft wird. Minimum 5 s, Maximum 120 s.',
  5160. externalUrlMissing: 'Externe URL ist nicht gesetzt.',
  5161. externalUrlHint: 'Die ML-API ruft das Kamera-Snapshot per URL ab. Setze die externe URL in den allgemeinen Einstellungen, damit der ML-API-Container Bambuddy erreichen kann.',
  5162. perPrinterTitle: 'Überwachte Drucker',
  5163. perPrinterHint: 'Wähle, welche Drucker vom Erkennungsdienst überwacht werden.',
  5164. monitorAll: 'Alle verbundenen Drucker überwachen',
  5165. statusTitle: 'Status',
  5166. serviceRunning: 'Dienst läuft',
  5167. thresholds: 'Niedrig / Hoch-Schwellwerte',
  5168. activePrinters: 'Aktive Drucke',
  5169. noActivePrints: 'Derzeit laufen keine Drucke.',
  5170. historyTitle: 'Letzte Erkennungen',
  5171. noHistory: 'Noch keine Erkennungen.',
  5172. },
  5173. makerworld: {
  5174. title: 'MakerWorld',
  5175. description: 'Füge eine MakerWorld-Modell-URL ein, um es direkt aus Bambuddy zu importieren und zu drucken — ohne die Bambu Handy App zu öffnen.',
  5176. pasteUrlHeader: 'Von MakerWorld importieren',
  5177. pasteUrlPlaceholder: 'https://makerworld.com/de/models/… oder beliebigen MakerWorld-Link einfügen',
  5178. resolveButton: 'Laden',
  5179. signInRequiredTitle: 'Bambu-Cloud-Anmeldung für Download erforderlich',
  5180. signInRequiredBody: 'Modell-Details können anonym angezeigt werden, aber MakerWorld verlangt eine Bambu-Cloud-Anmeldung zum Herunterladen der 3MF-Dateien.',
  5181. openCloudSettings: 'Cloud-Einstellungen öffnen',
  5182. untitledModel: 'Unbenanntes Modell',
  5183. byCreator: 'von {{name}}',
  5184. downloadsCount: '{{count}} Downloads',
  5185. licensePrefix: 'Lizenz',
  5186. alreadyImported: 'Bereits in Bibliothek',
  5187. openOnMakerworld: 'Auf MakerWorld öffnen',
  5188. alreadyInLibrary: 'Dieses Modell ist bereits in deiner Bibliothek — zu finden im Dateimanager → MakerWorld',
  5189. importSuccess: '{{filename}} importiert — gespeichert im Dateimanager → MakerWorld',
  5190. platesHeader: 'Platten ({{count}})',
  5191. plateDefaultName: 'Platte {{n}}',
  5192. materialCount: '{{count}} Filamente',
  5193. amsRequired: 'AMS erforderlich',
  5194. slicedFor: 'Gesliced für {{printer}}',
  5195. alsoCompatible: 'Auch kompatibel: {{printers}}',
  5196. importToLibrary: 'Speichern',
  5197. sliceIn: 'Speichern & in {{slicer}} öffnen',
  5198. disclaimer: 'Die MakerWorld-Integration verwendet von der Community dokumentierte API-Endpunkte. Bambuddy ist nicht mit MakerWorld oder Bambu Lab verbunden oder von diesen unterstützt.',
  5199. lastImportSuccess: 'In deine Bibliothek importiert',
  5200. lastImportAlreadyInLibrary: 'Bereits in deiner Bibliothek',
  5201. viewInLibrary: 'Im Dateimanager anzeigen',
  5202. openInBambuStudio: 'In Bambu Studio öffnen',
  5203. openInOrcaSlicer: 'In OrcaSlicer öffnen',
  5204. importTo: 'In Dateimanager importieren',
  5205. recentImportsHeader: 'Zuletzt importiert',
  5206. phaseResolving: 'Auflösen',
  5207. phaseDownloading: 'Lade herunter',
  5208. folderAuto: 'MakerWorld (Standard)',
  5209. importAll: 'Alle importieren',
  5210. importAllProgress: 'Importiere {{current}}/{{total}}',
  5211. openGallery: 'Bildergalerie öffnen',
  5212. galleryPrev: 'Vorheriges Bild',
  5213. galleryNext: 'Nächstes Bild',
  5214. deleteImport: 'Aus Bibliothek entfernen',
  5215. importDeleting: 'Wird entfernt…',
  5216. importDeleted: 'Aus Bibliothek entfernt',
  5217. confirmDelete: '{{filename}} aus der Bibliothek entfernen? Die lokale Datei wird gelöscht, die Platte kann aber erneut von MakerWorld importiert werden.',
  5218. errors: {
  5219. resolveFailed: 'Diese MakerWorld-URL konnte nicht aufgelöst werden.',
  5220. downloadFailed: 'Download fehlgeschlagen. Bitte erneut versuchen.',
  5221. deleteFailed: 'Datei konnte nicht aus der Bibliothek entfernt werden.',
  5222. },
  5223. },
  5224. libraryTrash: {
  5225. title: 'Papierkorb',
  5226. headerButton: 'Papierkorb',
  5227. headerTooltip: 'In den Papierkorb verschobene Dateien anzeigen',
  5228. backToFiles: 'Zurück zum Dateimanager',
  5229. subtitleAdmin: 'Gelöschte Dateien bleiben {{days}} Tage hier und werden dann automatisch entfernt. Diese Ansicht zeigt Papierkorb-Dateien aller Benutzer.',
  5230. subtitleUser: 'Gelöschte Dateien bleiben {{days}} Tage hier und werden dann automatisch entfernt.',
  5231. loading: 'Papierkorb wird geladen…',
  5232. loadError: 'Papierkorb konnte nicht geladen werden.',
  5233. empty: 'Der Papierkorb ist leer.',
  5234. summary: '{{count}} Dateien · {{size}}',
  5235. emptyTrash: 'Papierkorb leeren',
  5236. restore: 'Wiederherstellen',
  5237. purgeNow: 'Jetzt löschen',
  5238. autoPurgeIn: 'Wird in {{when}} gelöscht',
  5239. days: 'Tage',
  5240. retentionLabel: 'Automatisch löschen nach',
  5241. selectAll: 'Alle auswählen',
  5242. selectOne: '{{filename}} auswählen',
  5243. selectionCount: '{{count}} ausgewählt',
  5244. bulkRestore: 'Auswahl wiederherstellen',
  5245. bulkPurge: 'Auswahl löschen',
  5246. col: {
  5247. filename: 'Datei',
  5248. folder: 'Ordner',
  5249. size: 'Größe',
  5250. deleted: 'Verschoben',
  5251. autoPurge: 'Löschung',
  5252. owner: 'Besitzer',
  5253. actions: 'Aktionen',
  5254. },
  5255. confirm: {
  5256. purgeTitle: 'Endgültig löschen?',
  5257. purgeBody: '{{filename}} wird von der Festplatte gelöscht und kann nicht wiederhergestellt werden.',
  5258. emptyTitle: 'Papierkorb leeren?',
  5259. emptyBody: 'Alle {{count}} Dateien werden endgültig von der Festplatte gelöscht.',
  5260. bulkPurgeTitle: 'Ausgewählte Dateien endgültig löschen?',
  5261. bulkPurgeBody: 'Die {{count}} ausgewählten Dateien werden von der Festplatte gelöscht und können nicht wiederhergestellt werden.',
  5262. cta: 'Endgültig löschen',
  5263. },
  5264. toast: {
  5265. restored: 'Datei wiederhergestellt.',
  5266. restoreFailed: 'Datei konnte nicht wiederhergestellt werden.',
  5267. purged: 'Datei endgültig gelöscht.',
  5268. purgeFailed: 'Datei konnte nicht gelöscht werden.',
  5269. emptied: '{{count}} Datei(en) aus dem Papierkorb gelöscht.',
  5270. emptyFailed: 'Papierkorb konnte nicht geleert werden.',
  5271. retentionSaved: 'Automatisches Löschen auf {{days}} Tage gesetzt.',
  5272. retentionFailed: 'Einstellung konnte nicht gespeichert werden.',
  5273. bulkRestored: '{{count}} Datei(en) wiederhergestellt.',
  5274. bulkPurged: '{{count}} Datei(en) gelöscht.',
  5275. },
  5276. },
  5277. libraryPurge: {
  5278. title: 'Alte Dateien entfernen',
  5279. headerButton: 'Alte entfernen',
  5280. headerTooltip: 'Alte Dateien im Block in den Papierkorb verschieben',
  5281. description: 'Räume alte Dateien in einem Rutsch aus deiner Bibliothek. Dateien mit Druckverlauf werden nach dem letzten Druckdatum bewertet; nie gedruckte Dateien nach dem Upload-Datum.',
  5282. ageLabel: 'Dateien älter als',
  5283. days: 'Tage',
  5284. includeNeverPrinted: 'Dateien einbeziehen, die nie gedruckt wurden',
  5285. effectsTitle: 'Was passiert, wenn du auf „Entfernen" klickst',
  5286. effect1: 'Passende Dateien werden in den Papierkorb verschoben — noch nicht von der Festplatte gelöscht.',
  5287. effect2: 'Du kannst sie bis zum Ablauf der Aufbewahrungsfrist jederzeit wiederherstellen.',
  5288. effect3: 'Nach Ablauf der Frist löscht der Papierkorb-Sweeper sie endgültig von der Festplatte.',
  5289. effect4: 'Dateien in externen (verknüpften) Ordnern werden übersprungen — Bambuddy löscht keine Bytes, die ihm nicht gehören.',
  5290. previewLoading: 'Prüfe, wie viele Dateien passen…',
  5291. previewFailed: 'Vorschau konnte nicht geladen werden.',
  5292. previewSummary: '{{count}} Dateien · {{size}} würden in den Papierkorb verschoben',
  5293. andMore: '…und {{count}} weitere',
  5294. warning: 'Dateien im Papierkorb zählen weiterhin zum Speicher, bis die Aufbewahrungsfrist abgelaufen ist. Leere den Papierkorb danach, um sofort Speicher freizugeben.',
  5295. confirmCta: '{{count}} in den Papierkorb verschieben',
  5296. purging: 'Wird verschoben…',
  5297. toast: {
  5298. success: '{{count}} Datei(en) in den Papierkorb verschoben.',
  5299. failed: 'Dateien konnten nicht verschoben werden.',
  5300. },
  5301. },
  5302. libraryAutoPurge: {
  5303. enableLabel: 'Alte Dateien automatisch entfernen',
  5304. enableDescription: 'Führt die Admin-Bereinigung einmal pro Tag aus. Dateien landen zuerst im Papierkorb — sie werden nicht sofort gelöscht.',
  5305. ageLabel: 'Dateien älter als',
  5306. ageDescription: 'Minimum 7 Tage, Maximum 10 Jahre. Verwendet dieselbe Altersregel wie die manuelle „Alte entfernen“-Schaltfläche.',
  5307. days: 'Tage',
  5308. includeNeverPrinted: 'Dateien einbeziehen, die nie gedruckt wurden',
  5309. saveFailed: 'Einstellungen konnten nicht gespeichert werden.',
  5310. },
  5311. archivePurge: {
  5312. headerButton: 'Alte löschen',
  5313. headerTooltip: 'Alte Archive in einem Rutsch löschen',
  5314. title: 'Alte Archive löschen',
  5315. description: 'Räume alte Druckhistorie auf. Jedes Archiv wird nach seinem letzten abgeschlossenen Druck bewertet — ein erneuter Druck setzt die Frist zurück, aktive Arbeit bleibt sicher.',
  5316. ageLabel: 'Archive löschen, die zuletzt gedruckt wurden vor',
  5317. days: 'Tage',
  5318. effectsTitle: 'Was passiert, wenn du auf „Löschen" klickst',
  5319. effect1: 'Jedes passende Archiv wird endgültig aus der Datenbank entfernt.',
  5320. effect2: 'Die 3MF-Datei, Vorschau, Timelapse, Quell-3MF, F3D-Designdatei und der Foto-Ordner werden von der Festplatte gelöscht.',
  5321. effect3: 'Es gibt keinen Papierkorb für Archive — die Löschung ist sofort und unwiderruflich.',
  5322. effect4: 'Ein erneuter Druck setzt die Frist zurück, Archive, die du weiterhin nutzt, bleiben sicher.',
  5323. previewLoading: 'Prüfe passende Archive…',
  5324. previewFailed: 'Vorschau konnte nicht erstellt werden.',
  5325. previewSummary: '{{count}} Archive · {{size}} werden gelöscht',
  5326. andMore: '…und {{count}} weitere',
  5327. warning: 'Dies ist endgültig. Lade wichtige Archive vorher herunter oder markiere sie als Favorit.',
  5328. confirmCta: '{{count}} Archiv(e) löschen',
  5329. purging: 'Lösche…',
  5330. toast: {
  5331. success: '{{count}} Archiv(e) gelöscht.',
  5332. failed: 'Archive konnten nicht gelöscht werden.',
  5333. },
  5334. },
  5335. archiveAutoPurge: {
  5336. enableLabel: 'Alte Archive automatisch löschen',
  5337. enableDescription: 'Löscht einmal pro Tag Archive endgültig, die im angegebenen Zeitraum nicht gedruckt wurden. Ein erneuter Druck setzt die Frist zurück. Kein Papierkorb — die Löschung erfolgt sofort.',
  5338. ageLabel: 'Archive automatisch löschen, die zuletzt gedruckt wurden vor',
  5339. ageDescription: 'Minimum 7 Tage, Maximum 10 Jahre. Basiert auf dem letzten abgeschlossenen Druck — ein erneuter Druck setzt die Frist zurück. Löscht Archiv, 3MF, Vorschaubild, Timelapse und Fotos.',
  5340. days: 'Tage',
  5341. runNow: 'Archive jetzt löschen',
  5342. saveFailed: 'Einstellungen konnten nicht gespeichert werden.',
  5343. },
  5344. cameraTokens: {
  5345. title: 'Camera API Tokens',
  5346. navTitle: 'Camera API tokens',
  5347. description:
  5348. 'Long-lived tokens for embedding the camera stream into Home Assistant, Frigate, kiosks, or any other tool that needs a stable URL. Each token is camera-stream-only and can be revoked at any time.',
  5349. loading: 'Loading…',
  5350. confirmRevoke: {
  5351. title: 'Revoke this token?',
  5352. body: 'Any device using "{{name}}" will lose access immediately. This cannot be undone.',
  5353. cancel: 'Cancel',
  5354. confirm: 'Revoke',
  5355. },
  5356. create: {
  5357. title: 'Create new token',
  5358. nameLabel: 'Token name',
  5359. namePlaceholder: 'e.g. Home Assistant',
  5360. daysLabel: 'Days until expiry',
  5361. submit: 'Create',
  5362. hint:
  5363. 'Maximum lifetime is 365 days. The token value is shown only once on creation — copy it now.',
  5364. },
  5365. created: {
  5366. title: 'Token created — copy it now',
  5367. warning:
  5368. 'This is the only time this token will be visible. After you close this dialog you can never view it again.',
  5369. copy: 'Copy',
  5370. dismiss: "I've saved it",
  5371. },
  5372. list: {
  5373. myTitle: 'My tokens',
  5374. allTitle: 'All users (admin view)',
  5375. empty: 'No tokens yet.',
  5376. name: 'Name',
  5377. owner: 'Owner',
  5378. prefix: 'Prefix',
  5379. created: 'Created',
  5380. expires: 'Expires',
  5381. lastUsed: 'Last used',
  5382. revoke: 'Revoke',
  5383. expired: 'Expired',
  5384. },
  5385. toast: {
  5386. created: 'Token created',
  5387. createFailed: 'Failed to create token',
  5388. revoked: 'Token revoked',
  5389. revokeFailed: 'Failed to revoke token',
  5390. loadFailed: 'Failed to load tokens',
  5391. copied: 'Copied to clipboard',
  5392. copyFailed: 'Copy failed — select and copy manually',
  5393. },
  5394. },
  5395. };