| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467 |
- export default {
- // Navigation
- nav: {
- printers: '打印机',
- archives: '归档',
- queue: '队列',
- stats: '统计',
- profiles: '配置文件',
- maintenance: '维护',
- projects: '项目',
- inventory: '耗材',
- files: '文件管理器',
- makerworld: 'MakerWorld',
- notifications: '通知',
- settings: '设置',
- system: '系统',
- collapseSidebar: '收起侧边栏',
- expandSidebar: '展开侧边栏',
- update: '更新',
- updateAvailable: '有可用更新:v{{version}}',
- updateAvailableBanner: '版本 {{version}} 已发布!',
- viewUpdate: '查看更新',
- viewOnGithub: '在 GitHub 上查看',
- keyboardShortcuts: '键盘快捷键 (?)',
- switchToLight: '切换到浅色模式',
- switchToDark: '切换到深色模式',
- smartSwitches: '智能开关',
- logout: '退出登录',
- },
- // Common
- common: {
- save: '保存',
- saving: '保存中...',
- cancel: '取消',
- delete: '删除',
- edit: '编辑',
- add: '添加',
- close: '关闭',
- confirm: '确认',
- loading: '加载中...',
- error: '错误',
- success: '成功',
- warning: '警告',
- enabled: '已启用',
- disabled: '已禁用',
- yes: '是',
- no: '否',
- on: '开',
- off: '关',
- all: '全部',
- none: '无',
- search: '搜索',
- filter: '筛选',
- sort: '排序',
- refresh: '刷新',
- download: '下载',
- upload: '上传',
- uploading: '上传中...',
- uploadFailed: '上传失败',
- actions: '操作',
- status: '状态',
- name: '名称',
- description: '描述',
- date: '日期',
- time: '时间',
- hours: '小时',
- minutes: '分钟',
- seconds: '秒',
- days: '天',
- enable: '启用',
- disable: '禁用',
- permissions: '权限',
- noPrinters: '未配置打印机',
- noData: '暂无数据',
- linkNotFound: '未找到链接',
- required: '必填',
- optional: '可选',
- dismiss: '关闭',
- apply: '应用',
- reset: '重置',
- export: '导出',
- import: '导入',
- clear: '清除',
- selectAll: '全选',
- deselectAll: '取消全选',
- noChange: '— 不更改 —',
- unchanged: '未更改',
- unassigned: '未分配',
- unknown: '未知',
- unknownError: '未知错误',
- today: '今天',
- tomorrow: '明天',
- asap: '尽快',
- overdue: '已逾期',
- now: '现在',
- collapse: '收起',
- expand: '展开',
- viewArchive: '查看归档',
- viewInFileManager: '在文件管理器中查看',
- addedBy: '由 {{username}} 添加',
- prints: '次打印',
- more: '还有 {{count}} 个',
- ascending: '升序',
- descending: '降序',
- back: '返回',
- copy: '复制',
- copied: '已复制!',
- printer: '打印机',
- remove: '移除',
- type: '类型',
- print: '打印',
- rename: '重命名',
- move: '移动',
- create: '创建',
- duplicate: '复制',
- left: '左',
- right: '右',
- },
- // Printers page
- printers: {
- title: '打印机',
- addPrinter: '添加打印机',
- editPrinter: '编辑打印机',
- deletePrinter: '删除打印机',
- printerName: '打印机名称',
- serialNumber: '序列号',
- ipAddress: 'IP 地址 / 主机名',
- accessCode: '访问码',
- model: '型号',
- nozzleCount: '喷嘴数量',
- autoArchive: '自动归档',
- status: {
- available: '可用',
- idle: '空闲',
- printing: '打印中',
- paused: '已暂停',
- offline: '离线',
- problem: '故障',
- error: '错误',
- finished: '已完成',
- unknown: '未知',
- },
- temperatures: {
- nozzle: '喷嘴',
- bed: '热床',
- chamber: '腔室',
- },
- progress: '{{percent}}% 完成',
- timeRemaining: '剩余 {{time}}',
- deleteConfirm: '确定要删除"{{name}}"吗?',
- maintenanceOk: '维护正常',
- maintenanceWarning: '{{count}} 个警告',
- maintenanceWarning_plural: '{{count}} 个警告',
- maintenanceDue: '{{count}} 个到期',
- maintenanceDue_plural: '{{count}} 个到期',
- // Sort options
- sort: {
- name: '名称',
- status: '状态',
- model: '型号',
- location: '位置',
- ascending: '升序排列',
- descending: '降序排列',
- },
- // Card size
- cardSize: {
- small: '小卡片',
- medium: '中卡片',
- large: '大卡片',
- extraLarge: '超大卡片',
- },
- // Controls
- hideOffline: '隐藏离线',
- nextAvailable: '下一个可用',
- powerOn: '开机',
- offlinePrintersWithPlugs: '带智能插座的离线打印机',
- noPrintersConfigured: '尚未配置打印机',
- search: '搜索打印机...',
- noSearchResults: '没有打印机符合您的搜索或筛选条件',
- filter: {
- allStatuses: '所有状态',
- allLocations: '所有位置',
- },
- // Printer card
- readyToPrint: '准备打印',
- external: '外部',
- extL: '外置左',
- extR: '外置右',
- deleteArchives: '删除打印归档',
- noLabel: '无标签',
- printPreview: '打印预览',
- width: '宽度',
- height: '高度',
- noObjectsFound: '未找到对象',
- objectsLoadedOnPrintStart: '对象在打印开始时加载',
- willBeSkipped: '将被跳过',
- name: '名称',
- serialCannotBeChanged: '序列号无法更改',
- locationHelp: '用于分组打印机和筛选队列任务',
- // WiFi signal strength
- wifiSignal: {
- veryWeak: '非常弱',
- weak: '弱',
- fair: '一般',
- good: '良好',
- excellent: '优秀',
- },
- // Maintenance
- maintenanceUpToDate: '所有维护均已完成 - 点击查看',
- // Chamber light
- chamberLightOn: '打开腔室灯',
- chamberLightOff: '关闭腔室灯',
- // Files
- files: '文件',
- browseFiles: '浏览打印机文件',
- // Smart plug
- autoOffAfterPrint: '打印后自动关机',
- autoOffExecuted: '已执行自动关机 - 开启打印机以重置',
- // HMS errors
- hmsErrors: 'HMS 错误',
- viewHmsErrors: '查看 {{count}} 个 HMS 错误',
- // Actions
- resume: '继续',
- pause: '暂停',
- stop: '停止',
- camera: '摄像头',
- skipObject: '跳过对象',
- reconnect: '重新连接',
- forceRefresh: '强制刷新',
- forceRefreshSuccess: '已请求刷新',
- mqttDebug: 'MQTT 调试',
- printerInformation: '打印机信息',
- copyToClipboard: '复制',
- copied: '已复制!',
- state: '状态',
- wifiSignalLabel: 'WiFi 信号',
- developerMode: '开发者模式',
- enabled: '已启用',
- disabled: '已禁用',
- addedOn: '添加日期',
- sdCard: 'SD 卡',
- inserted: '已插入',
- notInserted: '未插入',
- totalPrintHours: '打印时长',
- activeNozzle: '当前:{{nozzle}} 喷嘴',
- nozzleRack: '喷嘴架',
- nozzleDocked: '已停靠',
- nozzleMounted: '已安装',
- nozzleActive: '使用中',
- nozzleIdle: '空闲',
- nozzleDiameter: '直径',
- nozzleType: '类型',
- nozzleStatus: '状态',
- nozzleFilament: '耗材',
- nozzleWear: '磨损',
- nozzleMaxTemp: '最高温度',
- nozzleSerial: '序列号',
- nozzleHardenedSteel: '硬化钢',
- nozzleStainlessSteel: '不锈钢',
- nozzleTungstenCarbide: '碳化钨',
- nozzleFlow: '流量',
- nozzleHighFlow: '高流量',
- nozzleStandardFlow: '标准',
- // Firmware
- firmwareUpdate: '固件更新',
- firmwareInstructions: '在打印机触摸屏上,前往',
- firmwareNav: '导航到',
- settings: '设置',
- firmware: '固件',
- // Discovery
- discoverPrinters: '发现打印机',
- searching: '搜索中...',
- manualEntry: '手动输入',
- addFromCloud: '从云端添加',
- // Toast messages
- toast: {
- printerDeleted: '打印机已删除',
- missingSpoolAssignment: '已在{{printer}}上开始打印。以下料槽未分配耗材: {{slots}}',
- printerAdded: '打印机已添加',
- printerUpdated: '打印机已更新',
- failedToDelete: '删除打印机失败',
- failedToAdd: '添加打印机失败',
- failedToUpdate: '更新打印机失败',
- commandSent: '命令已发送',
- failedToSendCommand: '发送命令失败',
- turnedOn: '{{name}} 已开启',
- failedToPowerOn: '开启 {{name}} 失败',
- scriptTriggered: '脚本已触发',
- printStopped: '打印已停止',
- printPaused: '打印已暂停',
- printResumed: '打印已继续',
- referenceDeleted: '参考已删除',
- detectionAreaSaved: '检测区域已保存',
- failedToRunScript: '运行脚本失败',
- failedToStopPrint: '停止打印失败',
- failedToPausePrint: '暂停打印失败',
- failedToResumePrint: '继续打印失败',
- failedToControlChamberLight: '控制腔室灯失败',
- failedToSetSpeed: '设置打印速度失败',
- failedToUpdateSetting: '更新设置失败',
- failedToSkipObjects: '跳过对象失败',
- failedToRereadRfid: '重新读取 RFID 失败',
- failedToCheckPlate: '检查打印板失败',
- failedToUpdateLabel: '更新标签失败',
- failedToDeleteReference: '删除参考失败',
- failedToSaveDetectionArea: '保存检测区域失败',
- plateCheckEnabled: '打印板检查已启用',
- plateCheckDisabled: '打印板检查已禁用',
- calibrationSaved: '校准已保存!',
- calibrationFailed: '校准失败',
- rfidRereadInitiated: '已发起 RFID 重新读取',
- loadInitiated: 'Loading filament…',
- unloadInitiated: 'Unloading filament…',
- failedToLoad: 'Failed to load filament',
- failedToUnload: 'Failed to unload filament',
- },
- // Connection status
- connection: {
- connected: '已连接',
- offline: '离线',
- },
- plateStatus: {
- markCleared: '将打印板标记为已清理',
- cleared: '打印板已清理',
- notCleared: '打印板未清理',
- inUse: '打印板使用中',
- },
- // Queue info
- queue: {
- inQueue: '队列中有 {{count}} 个打印任务',
- inQueue_plural: '队列中有 {{count}} 个打印任务',
- },
- // Controls section
- controls: '控制',
- // RFID
- rfid: {
- reread: '重新读取 RFID',
- },
- // AMS load/unload (#891)
- ams: {
- load: 'Load',
- unload: 'Unload',
- },
- bedJog: {
- title: '移动热床',
- bed: '热床',
- step: '步长 (mm)',
- up: '热床上移',
- down: '热床下移',
- disabledWhilePrinting: '打印中已禁用',
- notHomedTitle: '打印机未归零',
- notHomedMessage: '打印机自上次打印以来尚未归零。请先执行自动归零以确保安全定位(先停放喷头,然后归零 X、Y 和 Z),或者直接移动 — 软限位将被绕过。',
- homeZ: '自动归零',
- moveAnyway: '强制移动',
- homingStarted: '打印机自动归零中…',
- },
- // Permissions
- permission: {
- noAdd: '您没有添加打印机的权限',
- noEdit: '您没有编辑打印机的权限',
- noDelete: '您没有删除打印机的权限',
- noControl: '您没有控制打印机的权限',
- noFiles: '您没有访问打印机文件的权限',
- noAmsRfid: '您没有重新读取 AMS RFID 的权限',
- noSmartPlugControl: '您没有控制智能插座的权限',
- noCamera: '您没有查看摄像头的权限',
- },
- // Add/Edit modal
- modal: {
- addTitle: '添加打印机',
- editTitle: '编辑打印机',
- myPrinter: '我的打印机',
- selectModel: '选择型号...',
- locationGroup: '位置 / 分组(可选)',
- locationPlaceholder: '例如:工作室、办公室、地下室',
- autoArchiveLabel: '自动归档已完成的打印',
- fromPrinterSettings: '来自打印机设置',
- modelOptional: '型号(可选)',
- saveChanges: '保存更改',
- },
- // Skip objects
- skipObjects: {
- tooltip: '跳过对象',
- onlyWhilePrinting: '跳过对象(仅在打印时)',
- requiresMultiple: '跳过对象(需要2个以上对象)',
- title: '跳过对象',
- matchIdsInfo: '将 ID 与打印机显示屏上的 ID 进行对照',
- printerShowsIds: '打印机屏幕上显示构建板上对象的 ID',
- skipSelected: '跳过所选',
- skipping: '跳过中...',
- noObjectsSelected: '未选择对象',
- selectObjectsToSkip: '选择要从当前打印中跳过的对象',
- skipped: '已跳过',
- objectsSkipped: '对象已跳过',
- activeCount: '{{count}} 个活跃',
- waitForLayer: '等待第2层以上才能跳过对象(当前第 {{layer}} 层)',
- skip: '跳过',
- confirmTitle: '跳过对象?',
- confirmMessage: '确定要跳过"{{name}}"吗?此操作无法撤销。',
- },
- // Confirm modals
- confirm: {
- deleteTitle: '删除打印机',
- deleteMessage: '确定要删除"{{name}}"吗?这将移除所有连接设置。',
- deleteArchivesNote: '此打印机的所有打印历史将被永久删除。',
- keepArchivesNote: '打印历史将保留,但不再与此打印机关联。',
- stopTitle: '停止打印',
- stopMessage: '确定要停止"{{name}}"上的当前打印吗?这将取消打印任务。',
- stopButton: '停止打印',
- pauseTitle: '暂停打印',
- pauseMessage: '确定要暂停"{{name}}"上的当前打印吗?',
- pauseButton: '暂停打印',
- resumeTitle: '继续打印',
- resumeMessage: '确定要继续"{{name}}"上的打印吗?',
- resumeButton: '继续打印',
- powerOnTitle: '开启打印机',
- powerOnMessage: '确定要打开"{{name}}"的电源吗?',
- powerOnButton: '开机',
- powerOffTitle: '关闭打印机',
- powerOffMessage: '确定要关闭"{{name}}"的电源吗?',
- powerOffWarning: '警告:"{{name}}"正在打印中!确定要关闭电源吗?这将中断打印并可能损坏打印机。',
- powerOffButton: '关机',
- },
- // Bulk actions
- bulk: {
- select: '选择',
- selectAll: '全选',
- selectByLocation: '按位置选择',
- selected: '已选择{{count}}台',
- actions: {
- stop: '停止',
- pause: '暂停',
- resume: '继续',
- clearPlate: '清除打印床',
- clearHMS: '清除通知',
- },
- confirm: {
- stopTitle: '停止{{count}}个打印任务',
- stopMessage: '这将取消{{count}}台打印机上的活动打印任务。此操作无法撤销。',
- stopButton: '全部停止',
- pauseTitle: '暂停{{count}}个打印任务',
- pauseMessage: '这将暂停{{count}}台打印机上的活动打印任务。',
- pauseButton: '全部暂停',
- clearPlateTitle: '清除{{count}}个打印床',
- clearPlateMessage: '这将清除{{count}}台打印机的打印床,可能会触发队列中的任务。',
- clearPlateButton: '全部清除',
- },
- success: '{{action}}已在{{count}}台打印机上完成',
- partial: '{{succeeded}}成功,{{failed}}失败',
- noneApplicable: '没有选中的打印机处于适合此操作的状态',
- selectByState: '按状态选择',
- },
- // Discovery
- discovery: {
- title: '发现打印机',
- searching: '搜索中...',
- scanning: '扫描中...',
- scanProgress: '扫描中... {{scanned}}/{{total}}',
- foundPrinters: '发现 {{count}} 台打印机',
- noPrintersFound: '未找到打印机',
- noPrintersFoundSubnet: '在指定子网中未找到打印机。',
- noPrintersFoundNetwork: '在网络上未找到打印机。',
- allConfigured: '所有发现的打印机已配置完毕。',
- alreadyAdded: '已添加',
- select: '选择',
- manualEntry: '手动输入',
- addFromCloud: '从云端添加',
- subnetToScan: '要扫描的子网',
- dockerNote: '检测到 Docker 环境。请以 CIDR 格式输入打印机所在子网。需要在 docker-compose.yml 中设置 network_mode: host。',
- scanSubnet: '扫描子网查找打印机',
- discoverNetwork: '在网络上发现打印机',
- scanningSubnet: '正在扫描子网查找拓竹打印机...',
- scanningNetwork: '正在扫描网络...',
- serialRequired: '需要序列号',
- unknown: '未知',
- failedToStart: '启动发现失败',
- },
- // AMS Drying
- drying: {
- start: '开始干燥',
- stop: '停止干燥',
- temperature: '温度',
- duration: '时长',
- hours: '小时',
- timeRemaining: '剩余 {{time}}',
- active: '干燥中',
- notSupported: '不支持干燥',
- powerRequired: '连接AMS电源适配器以启用干燥',
- startingDrying: '正在启动干燥...',
- stoppingDrying: '正在停止干燥...',
- rotateTray: '干燥时旋转料盘',
- },
- // Filaments section
- filaments: '耗材',
- // Camera
- openCameraOverlay: '打开摄像头叠加层',
- openCameraWindow: '在新窗口中打开摄像头',
- // Firmware
- firmwareUpdateAvailable: '固件更新可用:{{current}} → {{latest}}',
- firmwareUpToDate: '固件 {{version}} — 已是最新',
- firmwareUpdateButton: '更新',
- // Plate detection
- plateDetection: {
- noPermission: '您没有更新打印机的权限',
- enabledClick: '打印板检查已启用 - 点击禁用',
- disabledClick: '打印板检查已禁用 - 点击启用',
- manageCalibration: '管理打印板检测校准',
- calibrationRequired: '需要校准',
- calibrationInstructions: '请确保构建板<strong>完全空置</strong>,然后点击校准。',
- calibrationDescription: '校准会拍摄空置打印板的参考图像。后续检查将与此参考进行比较以检测物体。',
- calibrationTip: '<strong>提示:</strong>您最多可以为不同的打印板存储5个校准。系统会在检查时自动使用最佳匹配。',
- plateEmpty: '打印板似乎是空的',
- objectsDetected: '在打印板上检测到物体',
- confidence: '置信度',
- difference: '差异',
- analysisPreview: '分析预览:',
- analysisLegend: '绿色框 = 检测区域,红色覆盖 = 与校准的差异',
- savedReferences: '已保存的参考 ({{count}}/{{max}})',
- deleteReference: '删除参考',
- labelPlaceholder: '标签...',
- clickToEdit: '{{label}} - 点击编辑',
- clickToAddLabel: '点击添加标签',
- },
- // Speed
- speed: {
- title: '打印速度',
- silent: '静音 (50%)',
- standard: '标准 (100%)',
- sport: '运动 (124%)',
- ludicrous: '疯狂 (166%)',
- },
- airduct: {
- title: '风道模式',
- cooling: '制冷',
- heating: '加热',
- },
- noSdCard: '无SD',
- door: {
- open: '开',
- closed: '关',
- },
- // Fans
- fans: {
- partCooling: '零件冷却风扇',
- auxiliary: '辅助风扇',
- chamber: '腔室风扇',
- },
- // HMS errors
- clickToViewHmsErrors: '点击查看 HMS 错误',
- estimatedCompletion: '预计完成时间',
- plateNumber: '板 {{number}}',
- slotOptions: '槽位选项',
- // AMS hover popup
- amsPopup: {
- friendlyName: 'AMS 名称',
- friendlyNamePlaceholder: '例如 AMS 友好名称',
- serialNumber: '序列号',
- firmwareVersion: '固件',
- save: '保存',
- clear: '清除',
- noEditPermission: '您没有重命名 AMS 单元的权限',
- },
- // Firmware modal
- firmwareModal: {
- title: '固件更新',
- titleUpToDate: '固件信息',
- currentVersion: '当前版本:',
- latestVersion: '最新版本:',
- releaseNotes: '发布说明',
- checkingPrereqs: '正在检查前提条件...',
- sdCardReady: 'SD 卡已就绪。点击下方上传固件。',
- uploadedSuccess: '固件已上传到 SD 卡!',
- applyInstructions: '在打印机上应用更新:',
- step1: '在打印机触摸屏上,前往<strong>设置</strong>',
- step2: '导航到<strong>固件</strong>',
- step3: '选择<strong>从 SD 卡更新</strong>',
- step4: '更新将需要 10-20 分钟',
- done: '完成',
- starting: '启动中...',
- uploadFirmware: '上传固件',
- uploadFailed: '上传启动失败:{{error}}',
- uploadedToast: '固件已上传!请在打印机屏幕上触发更新。',
- availableVersions: '可用版本',
- usable: '可用',
- unavailable: '不可用',
- installed: '已安装',
- newerBadge: '较新',
- olderBadge: '较旧',
- currentBadge: '当前',
- },
- accessCodePlaceholder: '留空以保持当前值',
- // ROI editor
- roi: {
- title: '检测区域 (ROI)',
- xStart: 'X 起点',
- yStart: 'Y 起点',
- width: '宽度',
- height: '高度',
- instruction: '调整检测区域以聚焦到构建板。预览中的绿色框显示当前区域。',
- },
- developerModeWarning: '以下打印机未启用开发者局域网模式:{{names}}。某些功能可能无法使用。',
- howToEnable: '如何启用',
- incompatibleFile: '此文件是为 {{slicedFor}} 切片的,但该打印机是 {{printerModel}}',
- dropNotPrintable: '只能打印 .gcode 和 .gcode.3mf 文件',
- dropToPrint: '拖放以打印',
- cannotPrint: '打印机忙碌',
- },
- // Archives page
- archives: {
- title: '打印归档',
- searchPlaceholder: '搜索归档...',
- filterByPrinter: '按打印机筛选',
- filterByStatus: '按状态筛选',
- sortBy: '排序方式',
- sortNewest: '最新优先',
- sortOldest: '最旧优先',
- sortName: '名称',
- sortDuration: '时长',
- sortLargest: '最大优先',
- sortSmallest: '最小优先',
- sortSize: '大小',
- noArchives: '未找到归档',
- noArchivesSearch: '没有匹配搜索的归档',
- originalPrintNotVisible: '原始打印不可见 - 请尝试清除筛选条件',
- noArchivesYet: '暂无归档',
- prints: '条打印',
- pagination: {
- showing: '显示',
- to: '至',
- of: '共',
- show: '每页',
- page: '页',
- all: '全部',
- },
- loadingArchives: '加载归档中...',
- releaseToUpload: '释放以上传',
- showAll: '显示全部',
- showFavoritesOnly: '仅显示收藏',
- gridView: '网格视图',
- listView: '列表视图',
- calendarView: '日历视图',
- logView: '打印日志',
- manageTags: '管理标签',
- showFailedPrints: '显示失败的打印',
- hideFailedPrints: '隐藏失败的打印',
- hideDuplicates: '隐藏重复项',
- viewOriginalPrint: '点击查看原始打印 (#{{id}})',
- printTime: '打印时间',
- filamentUsed: '耗材用量',
- cost: '成本',
- reprint: '重新打印',
- preview: '预览',
- deleteArchive: '删除归档',
- deleteConfirm: '确定要删除此归档吗?',
- favorite: '收藏',
- unfavorite: '取消收藏',
- viewDetails: '查看详情',
- status: {
- completed: '已完成',
- failed: '失败',
- stopped: '已停止',
- },
- toast: {
- source3mfAttached: '源 3MF 已附加:{{filename}}',
- failedUploadSource3mf: '上传源 3MF 失败',
- source3mfRemoved: '源 3MF 已移除',
- failedRemoveSource3mf: '移除源 3MF 失败',
- f3dAttached: 'F3D 已附加:{{filename}}',
- failedUploadF3d: '上传 F3D 失败',
- f3dRemoved: 'F3D 已移除',
- failedRemoveF3d: '移除 F3D 失败',
- timelapseAttached: '延时摄影已附加:{{filename}}',
- timelapseAlreadyAttached: '延时摄影已附加',
- noMatchingTimelapse: '未找到匹配的延时摄影',
- failedScanTimelapse: '扫描延时摄影失败',
- failedAttachTimelapse: '附加延时摄影失败',
- timelapseRemoved: '延时摄影已移除',
- failedRemoveTimelapse: '移除延时摄影失败',
- timelapseUploaded: '延时摄影已上传:{{filename}}',
- failedUploadTimelapse: '上传延时摄影失败',
- archiveDeleted: '归档已删除',
- failedDeleteArchive: '删除归档失败',
- addedToFavorites: '已添加到收藏',
- removedFromFavorites: '已从收藏中移除',
- projectUpdated: '项目已更新',
- failedUpdateProject: '更新项目失败',
- linkCopied: '链接已复制到剪贴板',
- failedCopyLink: '复制链接失败',
- photoDeleted: '照片已删除',
- failedDeletePhoto: '删除照片失败',
- failedDeleteArchives: '删除归档失败',
- failedUpdateFavorites: '更新收藏失败',
- exportDownloaded: '导出已下载',
- exportFailed: '导出失败',
- },
- menu: {
- print: '打印',
- schedule: '排程',
- openInBambuStudio: '在切片软件中打开',
- slice: '切片',
- externalLink: '外部链接',
- viewOnMakerWorld: '在 MakerWorld 上查看',
- preview3d: '3D 预览',
- viewTimelapse: '查看延时摄影',
- scanForTimelapse: '扫描延时摄影',
- uploadTimelapse: '上传延时摄影',
- removeTimelapse: '移除延时摄影',
- downloadSource3mf: '下载源 3MF',
- uploadSource3mf: '上传源 3MF',
- replaceSource3mf: '替换源 3MF',
- removeSource3mf: '移除源 3MF',
- uploadF3d: '上传 F3D',
- replaceF3d: '替换 F3D',
- downloadF3d: '下载 F3D',
- removeF3d: '移除 F3D',
- download: '下载',
- copyDownloadLink: '复制下载链接',
- qrCode: '二维码',
- viewPhotos: '查看照片',
- viewPhotosCount: '查看照片 ({{count}})',
- projectPage: '项目页面',
- addToFavorites: '添加到收藏',
- removeFromFavorites: '从收藏中移除',
- edit: '编辑',
- goToProject: '前往项目:{{name}}',
- addToProject: '添加到项目',
- removeFromProject: '从项目中移除',
- loading: '加载中...',
- noProjectsAvailable: '无可用项目',
- searchProjects: 'Search projects…',
- select: '选择',
- deselect: '取消选择',
- delete: '删除',
- },
- permission: {
- noReprint: '您没有重新打印此归档的权限',
- noAddToQueue: '您没有添加到队列的权限',
- noUpdateArchives: '您没有更新归档的权限',
- noUploadFiles: '您没有上传文件的权限',
- noDownload: '您没有下载归档的权限',
- noCopyLink: '您没有复制下载链接的权限',
- noDelete: '您没有删除此归档的权限',
- noCreate: '您没有创建归档的权限',
- },
- platePicker: {
- title: '选择要预览的打印板',
- hint: '此存档包含多个打印板。选择一个在 GCode 查看器中打开。',
- plateLabel: '打印板 {{index}}',
- objectCount: '{{count}} 个对象',
- objectCount_plural: '{{count}} 个对象',
- noGcode: '此存档没有可预览的已切片 G 代码。请先在 Bambu Studio 中打开并切片。',
- },
- card: {
- previousPlate: '上一个板',
- nextPlate: '下一个板',
- plateNumber: '板 {{index}}',
- moreOptions: '右键查看更多选项',
- addToFavorites: '添加到收藏',
- removeFromFavorites: '从收藏中移除',
- cancelled: '已取消',
- failed: '失败',
- duplicate: '重复',
- duplicateTitle: '此模型之前已打印过',
- openSource3mf: '在 Bambu Studio 中打开源 3MF(右键查看更多选项)',
- downloadF3d: '下载 Fusion 360 设计文件',
- viewTimelapse: '查看延时摄影',
- viewPhoto: '查看 1 张照片',
- viewPhotos: '查看 {{count}} 张照片',
- openFolder: '打开文件夹:{{name}}',
- slicedFile: '已切片文件 - 可以打印',
- sourceFile: '仅源文件 - 无 AMS 映射可用',
- gcode: 'GCODE',
- source: '源文件',
- project: '项目:{{name}}',
- estimated: '预计:{{time}}',
- actual: '实际:{{time}}',
- accuracy: '准确度:{{percent}}%',
- filament: '{{weight}}g',
- layer: '{{count}} 层',
- layers: '{{count}} 层',
- object: '{{count}} 个对象',
- objects: '{{count}} 个对象',
- slicedFor: '为 {{model}} 切片',
- uploadedBy: '上传者',
- noPermissionReprint: '您没有重新打印的权限',
- noFileForReprint: '无可用的 3MF 文件 — 打印记录时无法从打印机下载该文件',
- noPermissionEdit: '您没有编辑归档的权限',
- noPermissionDelete: '您没有删除归档的权限',
- reprint: '重新打印',
- schedulePrint: '排程打印',
- schedule: '排程',
- openInBambuStudio: '在切片软件中打开',
- openInBambuStudioToSlice: '在切片软件中打开进行切片',
- slice: '切片',
- externalLink: '外部链接',
- makerWorld: 'MakerWorld:{{designer}}',
- viewProject: '查看项目',
- noExternalLink: '无外部链接',
- preview3d: '3D 预览',
- download: '下载',
- edit: '编辑',
- delete: '删除',
- },
- modal: {
- deleteArchive: '删除归档',
- deleteConfirm: '确定要删除"{{name}}"吗?此操作无法撤销。',
- deleteButton: '删除',
- removeSource3mf: '移除源 3MF',
- removeSource3mfConfirm: '确定要从"{{name}}"中移除源 3MF 文件吗?这将删除原始切片项目文件。',
- removeButton: '移除',
- removeF3d: '移除 F3D',
- removeF3dConfirm: '确定要从"{{name}}"中移除 Fusion 360 设计文件吗?',
- removeTimelapse: '移除延时摄影',
- removeTimelapseConfirm: '确定要从"{{name}}"中移除延时摄影视频吗?',
- timelapse: '{{name}} - 延时摄影',
- selectTimelapse: '选择延时摄影',
- selectTimelapseDesc: '未找到自动匹配。请选择此打印的延时摄影:',
- deleteArchives: '删除归档',
- deleteArchivesConfirm: '确定要删除 {{count}} 个归档吗?此操作无法撤销。',
- deleteCount: '删除 {{count}} 个',
- },
- page: {
- title: '归档',
- printsCount: '{{filtered}} / {{total}} 次打印',
- dropFilesHere: '将 .3mf 文件拖放到此处',
- releaseToUpload: '释放以上传',
- only3mfSupported: '仅支持 .3mf 文件',
- close: '关闭',
- selected: '已选择 {{count}} 个',
- selectAll: '全选',
- tags: '标签',
- project: '项目',
- favorite: '收藏',
- delete: '删除',
- toggledFavorites: '已切换 {{count}} 个归档的收藏状态',
- failedUpdateFavorites: '更新收藏失败',
- archivesDeleted: '已删除 {{count}} 个归档',
- failedDeleteArchives: '删除归档失败',
- photoDeleted: '照片已删除',
- failedDeletePhoto: '删除照片失败',
- },
- list: {
- name: '名称',
- printer: '打印机',
- date: '日期',
- size: '大小',
- actions: '操作',
- hasTimelapse: '有延时摄影',
- },
- log: {
- date: '日期',
- printName: '打印名称',
- printer: '打印机',
- user: '用户',
- status: '状态',
- duration: '时长',
- filament: '耗材',
- allPrinters: '所有打印机',
- allUsers: '所有用户',
- allStatuses: '所有状态',
- cancelled: '已取消',
- skipped: '已跳过',
- dateFrom: '从',
- dateTo: '到',
- noEntries: '未找到打印日志条目',
- showing: '显示 {{count}} / {{total}} 条',
- rowsPerPage: '行数',
- page: '页',
- prev: '上一页',
- next: '下一页',
- clearLog: '清除日志',
- clearLogTitle: '清除打印日志',
- clearLogConfirm: '所有打印日志条目将被永久删除。归档和队列项目不受影响。此操作无法撤销。确定要继续吗?',
- clearLogButton: '全部清除',
- cleared: '已清除 {{count}} 条日志',
- clearFailed: '清除打印日志失败',
- },
- },
- // Queue page
- queue: {
- title: '打印队列',
- subtitle: '排程和管理您的打印任务',
- addToQueue: '添加到队列',
- // Print modal
- print: '打印',
- reprint: '重新打印',
- schedulePrint: '排程打印',
- editQueueItem: '编辑队列项目',
- printToPrinters: '打印到 {{count}} 台打印机',
- queueToPrinters: '排队到 {{count}} 台打印机',
- queueSelectedPlates: '将 {{count}} 个热床加入队列',
- selectAllPlates: '选择全部 {{count}} 个热床',
- deselectAll: '取消全选',
- printQueued: '已加入打印队列',
- itemsQueued: '{{count}} 个任务已加入队列',
- sending: '发送中...',
- sendingProgress: '发送中 {{current}}/{{total}}...',
- adding: '添加中...',
- addingProgress: '添加中 {{current}}/{{total}}...',
- savingProgress: '保存中 {{current}}/{{total}}...',
- clearQueue: '清空队列',
- clearHistory: '清除历史',
- emptyQueue: '队列为空',
- position: '位置',
- scheduledTime: '排程时间',
- moveUp: '上移',
- moveDown: '下移',
- startNow: '立即开始',
- printingInProgress: '打印进行中...',
- viewArchive: '查看归档',
- viewInFileManager: '在文件管理器中查看',
- itemCount: '{{count}} 个项目',
- itemCount_plural: '{{count}} 个项目',
- dragToReorder: '拖动以重新排序(仅限尽快)',
- reorderHint: '位置仅影响"尽快"项目。排程项目按设定时间运行。',
- sjf: {
- label: 'SJF',
- tooltip: '最短任务优先 — 调度器优先处理较短的打印任务',
- },
- addedBy: '由 {{name}} 添加',
- nextInQueue: '队列中的下一个',
- clearPlateSuccess: '打印板已清理 — 准备进行下一个打印',
- plateNumber: '板 {{index}}',
- // Batch / quantity
- quantity: '数量',
- quantityHint: '创建 {{count}} 个队列项目',
- activeBatches: '活跃批次',
- batchProgress: '已完成 {{completed}}/{{total}}',
- cancelBatch: '取消剩余',
- batchCancelled: '已取消剩余批次项目',
- cancelBatchConfirmTitle: '取消批次',
- cancelBatchConfirmMessage: '取消此批次中所有剩余的待处理项目?',
- batch: '批次',
- // Sections
- sections: {
- currentlyPrinting: '正在打印',
- queued: '排队中',
- history: '历史',
- },
- // Status
- status: {
- pending: '等待中',
- waiting: '等待中',
- printing: '打印中',
- paused: '已暂停',
- completed: '已完成',
- failed: '失败',
- skipped: '已跳过',
- cancelled: '已取消',
- },
- // Summary cards
- summary: {
- printing: '打印中',
- queued: '排队中',
- totalTime: '总队列时间',
- totalWeight: '总队列重量',
- history: '历史',
- },
- // Filters
- filter: {
- allPrinters: '所有打印机',
- unassigned: '未分配',
- allStatus: '所有状态',
- allLocations: '所有位置',
- any: '任意',
- },
- // Sort
- sort: {
- byPosition: '按位置排序',
- byName: '按名称排序',
- byPrinter: '按打印机排序',
- bySchedule: '按排程排序',
- byDate: '按日期排序',
- ascendingOldest: '升序(最旧优先)',
- descendingNewest: '降序(最新优先)',
- },
- // Badges
- badges: {
- staged: '已暂存',
- requiresPrevious: '需要前一个成功',
- autoPowerOff: '自动关机',
- gcodeInjection: 'G-code',
- },
- // Empty state
- empty: {
- title: '没有排程的打印',
- description: '从归档页面使用右键菜单中的"排程"选项来排程打印,或拖放文件开始。',
- },
- // Time
- time: {
- asap: '尽快',
- overdue: '已逾期',
- now: '现在',
- lessThanMinute: '不到一分钟',
- inMinutes: '{{count}} 分钟后',
- inHours: '{{count}} 小时后',
- },
- // Actions
- actions: {
- stopPrint: '停止打印',
- startPrint: '开始打印',
- requeue: '重新排队',
- },
- // Bulk edit
- bulkEdit: {
- title: '编辑 {{count}} 个项目',
- title_plural: '编辑 {{count}} 个项目',
- description: '仅更改的设置将应用于所选项目。',
- printer: '打印机',
- noChange: '— 不更改 —',
- queueOptions: '队列选项',
- staged: '暂存(手动开始)',
- autoPowerOff: '打印后自动关机',
- requirePrevious: '要求前一个成功',
- printOptions: '打印选项',
- bedLevelling: '热床调平',
- flowCalibration: '流量校准',
- vibrationCalibration: '振动校准',
- layerInspection: '首层检查',
- timelapse: '延时摄影',
- useAms: '使用 AMS',
- applyChanges: '应用更改',
- selectAll: '全选',
- deselectAll: '取消全选',
- selected: '已选择 {{count}} 个',
- editSelected: '编辑所选',
- cancelSelected: '取消所选',
- },
- // Confirmations
- confirm: {
- cancelTitle: '取消排程打印',
- cancelMessage: '确定要取消"{{name}}"吗?',
- stopTitle: '停止打印',
- stopMessage: '确定要停止当前打印"{{name}}"吗?这将取消打印机上的打印任务。',
- removeTitle: '从历史中移除',
- removeMessage: '确定要从队列历史中移除"{{name}}"吗?',
- clearHistoryTitle: '清除历史',
- clearHistoryMessage: '确定要从历史中移除所有 {{count}} 个项目吗?',
- cancelButton: '取消打印',
- stopButton: '停止打印',
- thisPrint: '此打印',
- thisItem: '此项目',
- },
- // Toast messages
- toast: {
- cancelled: '队列项目已取消',
- cancelFailed: '取消项目失败',
- removed: '队列项目已移除',
- removeFailed: '移除项目失败',
- stopped: '打印已停止',
- stopFailed: '停止打印失败',
- released: '打印已释放到队列',
- startFailed: '开始打印失败',
- reorderFailed: '重新排序队列失败',
- historyCleared: '已清除 {{count}} 条历史记录',
- clearHistoryFailed: '清除历史失败',
- updateFailed: '更新项目失败',
- bulkCancelled: '已取消 {{count}} 个项目',
- bulkCancelFailed: '批量取消项目失败',
- },
- // Timeline view
- timeline: {
- listView: '列表',
- timelineView: '时间线',
- unassigned: '未分配',
- noData: '当天没有计划的打印任务',
- allDoneBy: '所有打印预计在 {{time}} 前完成',
- staged: '暂存',
- filterAll: '全部显示',
- filterPrinting: '打印中',
- filterQueued: '排队中',
- time: {
- anyMoment: '即将完成',
- minutesLeft: '剩余{{minutes}}分钟',
- hoursLeft: '剩余{{hours}}小时',
- hoursMinutesLeft: '剩余{{hours}}小时{{minutes}}分钟',
- },
- day: {
- previous: '前一天',
- next: '后一天',
- today: '今天',
- },
- },
- // Permissions
- permissions: {
- noStopPrint: '您没有停止打印的权限',
- noStartPrint: '您没有开始打印的权限',
- noEdit: '您没有编辑此队列项目的权限',
- noCancel: '您没有取消此队列项目的权限',
- noRequeue: '您没有重新排队的权限',
- noRemove: '您没有移除此队列项目的权限',
- noClearHistory: '您没有清除所有历史的权限',
- noEditItems: '您没有编辑队列项目的权限',
- noCancelItems: '您没有取消队列项目的权限',
- },
- },
- backgroundDispatch: {
- unknownFile: '未知文件',
- unknownPrinter: '未知打印机',
- startingPrints: '正在开始打印',
- progressSummary: '{{complete}}/{{total}} 完成 • 已分发:{{dispatched}} • 处理中:{{processing}}',
- expandDetails: '展开分发详情',
- collapseDetails: '收起分发详情',
- dismissToast: '关闭分发通知',
- cancelDispatchJob: '取消分发任务',
- cancel: '取消',
- cancelling: '取消中…',
- awaitingPrinter: '等待打印机…',
- status: {
- dispatched: '已分发',
- processing: '处理中',
- completed: '已完成',
- failed: '失败',
- cancelled: '已取消',
- },
- toast: {
- cancellingUpload: '取消上传中...',
- cancelled: '分发已取消',
- cancelFailed: '取消分发失败',
- completeWithFailures: '后台分发完成:{{completed}} 成功,{{failed}} 失败',
- completeSuccess: '后台分发完成:{{completed}} 成功',
- printStartedRemaining: '{{completed}} 个打印已开始,{{remaining}} 个正在发送...',
- },
- },
- // Statistics page
- stats: {
- title: '仪表板',
- subtitle: '拖动小部件以重新排列。点击眼睛图标隐藏。',
- overview: '概览',
- totalPrints: '总打印次数',
- successRate: '成功率',
- totalPrintTime: '总打印时间',
- printTime: '打印时间',
- totalFilament: '总耗材用量',
- filamentUsed: '耗材用量',
- filamentCost: '耗材成本',
- totalCost: '总成本',
- energyUsed: '能耗',
- energyCost: '能源成本',
- energyWarmingUpTooltip: '能耗追踪正在收集每小时快照。当所选范围之前至少存在一个快照时,时间段合计将变得准确。早期数值可能偏低。',
- averagePrintTime: '平均打印时间',
- printsPerDay: '每日打印次数',
- byPrinter: '按打印机',
- printsByPrinter: '各打印机打印次数',
- byMaterial: '按材料',
- byMonth: '按月份',
- last7Days: '最近 7 天',
- last30Days: '最近 30 天',
- last90Days: '最近 90 天',
- allTime: '全部时间',
- // Widgets
- quickStats: '快速统计',
- printActivity: '打印活动',
- filamentTypes: '耗材类型',
- filamentTrends: '耗材趋势',
- failureAnalysis: '失败分析',
- timeAccuracy: '时间准确度',
- successful: '成功:',
- failed: '失败:',
- perfectEstimate: '100% = 完美估计',
- noTimeAccuracyData: '暂无时间准确度数据',
- noFilamentData: '暂无耗材数据',
- noPrinterData: '暂无打印机数据',
- noPrintData: '暂无打印数据',
- noPrintDataLast30Days: '最近 30 天无打印数据',
- failureReasons: '失败原因',
- topFailureReasons: '主要失败原因',
- failedPrintsCount: '{{failed}} / {{total}} 次打印失败',
- lastWeekRate: '上周:{{rate}}%',
- // Actions
- resetLayout: '重置布局',
- recalculateCosts: '重新计算成本',
- recalculateCostsHint: '使用当前耗材价格重新计算所有归档成本',
- exportStats: '导出统计',
- exportAsCsv: '导出为 CSV',
- exportAsExcel: '导出为 Excel',
- hiddenCount: '{{count}} 个已隐藏',
- // Toast
- exportDownloaded: '导出已下载',
- exportFailed: '导出失败',
- layoutReset: '布局已重置',
- recalculatedCosts: '已为 {{count}} 个归档重新计算成本',
- recalculateFailed: '重新计算成本失败',
- // Loading
- loadingStats: '加载统计数据中...',
- // Permissions
- noPermissionResetLayout: '您没有重置布局的权限',
- noPermissionRecalculate: '您没有重新计算成本的权限',
- noPrintDataInRange: '所选范围内无打印数据',
- periodFilament: '期间耗材',
- periodCost: '期间成本',
- avgPerPrint: '每次打印平均',
- usageOverTime: '随时间的使用量',
- filamentByWeight: '重量',
- printDuration: '打印时长',
- printerUtilization: '打印机利用率',
- filamentSuccess: '按材料成功率',
- printHabits: '打印习惯',
- printTimeOfDay: '打印时段',
- colorDistribution: '颜色分布',
- noColorData: '暂无颜色数据',
- records: '记录',
- longestPrint: '最长打印',
- heaviestPrint: '最重打印',
- mostExpensivePrint: '最贵打印',
- busiestDay: '最忙碌的一天',
- successStreak: '连续成功',
- streakPrint: '连续打印',
- streakPrints: '{{count}} 次连续打印',
- printerStats: '打印机统计',
- hours: '小时',
- avgPrints: '平均打印',
- noArchiveData: '暂无打印数据',
- filamentByTime: '时间',
- avgWeight: '平均重量',
- avgTime: '平均时间',
- filamentByPrints: '打印次数',
- timeframe: {
- today: '今天',
- 'this-week': '本周',
- 'this-month': '本月',
- 'last-7': '最近 7 天',
- 'last-30': '最近 30 天',
- 'last-90': '最近 90 天',
- 'this-year': '今年',
- 'all-time': '全部时间',
- custom: '自定义范围',
- from: '从',
- to: '到',
- },
- allUsers: '所有用户',
- noUser: '无用户(系统)',
- filterByUser: '按用户筛选',
- },
- // Maintenance page
- maintenance: {
- title: '维护',
- overview: '概览',
- allOk: '所有维护均已完成',
- dueCount: '{{count}} 项到期',
- dueCount_plural: '{{count}} 项到期',
- warningCount: '{{count}} 个警告',
- warningCount_plural: '{{count}} 个警告',
- totalPrintTime: '总打印时间',
- nextMaintenance: '下次维护',
- nothingDue: '无到期项目',
- tasks: '任务',
- lastPerformed: '上次执行',
- interval: '间隔',
- hoursRemaining: '剩余 {{hours}} 小时',
- hoursOverdue: '逾期 {{hours}} 小时',
- markDone: '标记为完成',
- performMaintenance: '执行维护',
- history: '历史',
- noHistory: '无维护历史',
- editPrintHours: '编辑打印时间',
- currentHours: '当前小时数',
- // Tabs
- statusTab: '状态',
- settingsTab: '设置',
- // Status
- overdueCount: '{{count}} 个逾期',
- dueSoonCount: '{{count}} 个即将到期',
- dueSoon: '即将到期',
- allGood: '一切正常',
- overdueBy: '逾期 {{duration}}',
- dueIn: '{{duration}} 后到期',
- timeLeft: '剩余 {{duration}}',
- // Duration formats
- day: '1 天',
- days: '{{count}} 天',
- week: '1 周',
- weeks: '{{count}} 周',
- month: '1 个月',
- months: '{{count}} 个月',
- year: '1 年',
- // Settings
- maintenanceTypes: '维护类型',
- maintenanceTypesDescription: '系统类型和您的自定义维护任务',
- addCustomType: '添加自定义类型',
- restoreDefaults: '恢复默认任务',
- intervalType: '间隔类型',
- intervalValue: '间隔 ({{type}})',
- icon: '图标',
- documentationLink: '文档链接(可选)',
- assignToPrinters: '分配给打印机',
- selectAtLeastOnePrinter: '至少选择一台打印机',
- addType: '添加类型',
- custom: '自定义',
- printHours: '打印小时数',
- calendarDays: '日历天数',
- exampleName: '例如:更换 HEPA 过滤器',
- viewDocumentation: '查看文档',
- timeBasedInterval: '基于时间的间隔',
- // Interval overrides
- intervalOverrides: '间隔覆盖',
- intervalOverridesDescription: '为特定打印机自定义间隔',
- // Printer assignment
- assignedToPrinters: '已分配给打印机:',
- noPrintersAssigned: '未分配打印机',
- addPrinterShort: '添加:',
- printersAssignedClick: '已分配 {{count}} 台打印机 - 点击管理',
- removeFromPrinter: '从此打印机移除',
- // Types
- types: {
- lubricateCarbonRods: '润滑碳纤维杆',
- lubricateRails: '润滑线性导轨',
- cleanNozzle: '清洁喷嘴/热端',
- checkBelts: '检查皮带张力',
- cleanBuildPlate: '清洁构建板',
- checkExtruder: '检查挤出机齿轮',
- checkCooling: '检查冷却风扇',
- generalInspection: '综合检查',
- cleanCarbonRods: '清洁碳纤维杆',
- lubricateSteelRods: '润滑钢杆',
- cleanSteelRods: '清洁钢杆',
- cleanLinearRails: '清洁线性导轨',
- checkPtfeTube: '检查 PTFE 管',
- replaceHepaFilter: '更换 HEPA 过滤器',
- replaceCarbonFilter: '更换活性炭过滤器',
- lubricateLeftNozzleRail: '润滑左喷嘴导轨',
- },
- // Toast
- maintenanceComplete: '维护已标记为完成',
- typeUpdated: '维护类型已更新',
- typeDeleted: '维护类型已删除',
- defaultsRestored: '已恢复 {{count}} 个默认任务',
- printHoursUpdated: '打印小时数已更新',
- printerAssigned: '打印机已分配',
- printerRemoved: '打印机已移除',
- // Confirmation
- deleteTypeConfirm: '删除"{{name}}"?',
- deleteSystemTypeTitle: '删除默认维护任务?',
- deleteSystemTypeMessage: '确定要删除默认维护任务"{{name}}"吗?',
- // Permissions
- noPermissionUpdate: '您没有更新维护项目的权限',
- noPermissionPerform: '您没有执行维护的权限',
- noPermissionEditTypes: '您没有编辑维护类型的权限',
- noPermissionDeleteTypes: '您没有删除维护类型的权限',
- noPermissionEditHours: '您没有编辑打印时间的权限',
- noPermissionRemovePrinter: '您没有移除打印机分配的权限',
- noPermissionAssignPrinter: '您没有分配打印机的权限',
- noPermissionEditIntervals: '您没有编辑间隔的权限',
- // Configure link
- configureSettings: '配置维护类型和间隔',
- },
- // Settings page
- settings: {
- title: '设置',
- general: '通用',
- // Tab names
- tabs: {
- general: '通用',
- smartPlugs: '智能插座',
- notifications: '通知',
- queue: '工作流',
- filament: '耗材',
- network: '网络',
- apiKeys: 'API 密钥',
- virtualPrinter: '虚拟打印机',
- spoolbuddy: 'SpoolBuddy',
- failureDetection: '故障检测',
- users: '身份验证',
- backup: '备份',
- emailAuth: '邮箱认证',
- ldap: 'LDAP',
- twoFa: '双因素认证',
- oidc: 'SSO / OIDC',
- },
- spoolbuddy: {
- infoTitle: 'SpoolBuddy 设备',
- infoBody: 'SpoolBuddy kiosk 通过心跳自动注册。如果设备不再使用,或守护进程崩溃遗留了陈旧的重复项,可在此注销。',
- duplicatesTitle: '已注册 {{count}} 台设备',
- duplicatesBody: 'kiosk 界面只使用最先注册的设备。如果其中有因崩溃遗留的陈旧重复项,请注销它——在线设备会在下次心跳时重新注册自己。',
- empty: '尚未注册任何 SpoolBuddy 设备。',
- online: '在线',
- offline: '离线',
- unregister: '注销',
- unregisterSuccess: '设备已注销',
- unregisterError: '注销设备失败',
- confirmTitle: '注销 SpoolBuddy 设备?',
- confirmBody: '将从数据库中移除 "{{hostname}}" ({{deviceId}})。如果设备在线,会在下次心跳时重新注册自己。',
- ipAddress: 'IP 地址',
- firmware: '固件',
- lastSeen: '上次在线',
- daemonUptime: '守护进程运行时间',
- systemUptime: '系统运行时间',
- never: '从未',
- nfc: 'NFC',
- scale: '秤',
- cpuTemp: 'CPU 温度',
- memory: '内存',
- disk: '磁盘',
- // Device actions
- update: '更新',
- updateConfirmTitle: '更新 SpoolBuddy 守护进程?',
- updateConfirmBody: '对 "{{hostname}}" 触发软件更新?更新完成后守护进程将重启。',
- restartBrowser: '重启浏览器',
- restartBrowserConfirmTitle: '重启 kiosk 浏览器?',
- restartBrowserConfirmBody: '在 "{{hostname}}" 上重启 kiosk 浏览器?显示将短暂黑屏。',
- restartDaemon: '重启守护进程',
- restartDaemonConfirmTitle: '重启 SpoolBuddy 守护进程?',
- restartDaemonConfirmBody: '在 "{{hostname}}" 上重启 SpoolBuddy 守护进程?设备将离线几秒钟。',
- reboot: '重启',
- rebootConfirmTitle: '重启设备?',
- rebootConfirmBody: '重启 "{{hostname}}"?设备将离线约一分钟。',
- shutdown: '关机',
- shutdownConfirmTitle: '关闭设备?',
- shutdownConfirmBody: '关闭 "{{hostname}}"?您需要物理访问才能重新开机。',
- commandConfirm: '确认',
- commandQueued: '命令已加入队列',
- commandError: '发送命令失败',
- },
- ldap: {
- title: 'LDAP 认证',
- enabledDesc: 'LDAP 认证已启用',
- disabledDesc: 'LDAP 认证已禁用',
- disabledHint: '在下方配置并保存 LDAP 设置,然后启用。',
- enabled: 'LDAP 认证已启用',
- disabled: 'LDAP 认证已禁用',
- feature1: '用户可以使用 LDAP 凭据登录',
- feature2: '本地管理员帐户作为后备保留',
- feature3: '登录时 LDAP 组映射到 BamBuddy 组',
- serverConfig: 'LDAP 服务器配置',
- serverUrl: '服务器 URL',
- serverUrlHint: '使用 ldap:// 进行标准连接或 ldaps:// 进行 SSL 连接',
- security: '安全',
- securityHint: 'StartTLS 将普通连接升级为 TLS。LDAPS 从一开始就使用 TLS。',
- bindDn: '绑定 DN(服务帐户)',
- bindPassword: '绑定密码',
- searchBase: '搜索基础 DN',
- userFilter: '用户搜索过滤器',
- userFilterHint: '{username} 替换为登录用户名。OpenLDAP 使用 (uid={username})。',
- autoProvision: '自动创建用户',
- autoProvisionHint: '首次 LDAP 登录时自动创建 BamBuddy 帐户',
- defaultGroup: '默认组',
- defaultGroupNone: '— 无(无回退)—',
- defaultGroupHint: '当 LDAP 用户通过身份验证但不在任何已映射的 LDAP 组中时分配的回退组。留空以使未映射的用户没有权限。',
- groupMapping: '组映射(JSON)',
- groupMappingHint: '将 LDAP 组 DN 映射到 BamBuddy 组。可用组:',
- testConnection: '测试连接',
- settingsSaved: 'LDAP 设置已保存',
- errors: {
- serverRequired: 'LDAP 服务器 URL 为必填项',
- searchBaseRequired: '搜索基础 DN 为必填项',
- enableAuthFirst: '请先启用认证',
- configureLdapFirst: '请先保存 LDAP 设置',
- },
- },
- // Email settings
- email: {
- smtpSettings: 'SMTP 配置',
- smtpHost: 'SMTP 服务器',
- smtpPort: 'SMTP 端口',
- security: '安全',
- authentication: '认证',
- username: '用户名',
- password: '密码',
- fromEmail: '发件邮箱',
- fromName: '发件人名称',
- testConnection: '测试 SMTP 连接',
- testRecipient: '测试收件邮箱',
- sendTest: '发送测试邮件',
- sending: '发送中...',
- save: '保存设置',
- saving: '保存中...',
- advancedAuth: '高级认证',
- advancedAuthEnabled: '高级认证已启用',
- advancedAuthEnabledDesc: '基于邮箱的用户管理功能已激活。新用户将通过邮件收到自动生成的密码,用户可以通过忘记密码功能重置密码。',
- advancedAuthDisabled: '高级认证已禁用',
- advancedAuthDisabledDesc: '启用高级认证以激活基于邮箱的用户管理功能。',
- enable: '启用',
- disable: '禁用',
- feature1: '密码自动生成并通过邮件发送给新用户',
- feature2: '用户可以使用用户名或邮箱登录',
- feature3: '忘记密码功能可用',
- feature4: '管理员可以通过邮件重置用户密码',
- // Error messages
- errors: {
- requiredFields: '请填写所有必填字段',
- usernameRequired: '启用认证时需要用户名',
- enterTestEmail: '请输入测试邮箱地址',
- smtpServerAndEmail: '测试前请填写 SMTP 服务器和发件邮箱',
- usernamePasswordRequired: '启用认证时需要用户名和密码',
- configureSmtpFirst: '请先配置并测试 SMTP 设置',
- enableAuthFirst: '请先启用身份验证才能使用基于电子邮件的功能。',
- },
- // Success messages
- success: {
- settingsSaved: 'SMTP 设置保存成功',
- },
- // Security options
- securityOptions: {
- starttls: 'STARTTLS(端口 587)',
- ssl: 'SSL/TLS(端口 465)',
- none: '无(端口 25)',
- },
- // Authentication options
- authOptions: {
- enabled: '已启用',
- disabled: '已禁用',
- },
- },
- appearance: '外观',
- notifications: '通知',
- smartPlugs: '智能插座',
- spoolman: 'Spoolman',
- updates: '更新',
- language: '语言',
- languageDescription: '选择您的首选语言',
- theme: '主题',
- themeLight: '浅色',
- themeDark: '深色',
- themeSystem: '跟随系统',
- defaultView: '默认视图',
- defaultViewDescription: '打开应用时显示的页面',
- checkForUpdates: '检查更新',
- autoUpdate: '自动更新',
- currentVersion: '当前版本',
- latestVersion: '最新版本',
- upToDate: '已是最新版本',
- updateAvailable: '有可用更新',
- // Notifications
- notificationLanguage: '通知语言',
- notificationLanguageDescription: '推送通知的语言',
- bedCooledThreshold: '热床冷却阈值',
- bedCooledThresholdDescription: '打印后热床被视为已冷却的温度',
- userNotificationsEnabled: '用户通知',
- userNotificationsEnabledDescription: '启用用户通知菜单和打印任务事件的邮件通知。需要高级身份验证。',
- userNotificationsDisabledHint: '请启用高级身份验证以使用用户通知。',
- notificationProviders: '通知提供商',
- addProvider: '添加提供商',
- editProvider: '编辑提供商',
- providerType: '提供商类型',
- testNotification: '测试通知',
- testSuccess: '测试通知发送成功',
- testFailed: '发送测试通知失败',
- quietHours: '免打扰时间',
- quietHoursDescription: '在此时间段内不发送通知',
- quietHoursStart: '开始',
- quietHoursEnd: '结束',
- events: {
- title: '通知事件',
- printStart: '打印开始',
- printComplete: '打印完成',
- printFailed: '打印失败',
- printStopped: '打印停止',
- printProgress: '进度里程碑',
- printProgressDescription: '在 25%、50%、75% 时通知',
- printerOffline: '打印机离线',
- printerError: '打印机错误',
- filamentLow: '耗材不足',
- maintenanceDue: '维护到期',
- maintenanceDueDescription: '需要维护时通知',
- },
- // Smart Plugs
- smartPlug: {
- title: '智能插座',
- add: '添加智能插座',
- edit: '编辑智能插座',
- name: '名称',
- ipAddress: 'IP 地址',
- linkedPrinter: '关联打印机',
- autoOn: '自动开启',
- autoOnDescription: '打印开始时开启',
- autoOff: '自动关闭',
- autoOffDescription: '打印完成后关闭',
- offDelay: '关闭延迟',
- offDelayMinutes: '打印后分钟数',
- offDelayTemp: '当喷嘴温度低于',
- currentState: '当前状态',
- turnOn: '开启',
- turnOff: '关闭',
- },
- // Filament Tracking Mode
- filamentTracking: '耗材追踪',
- filamentTrackingDesc: '选择如何追踪您的耗材。您可以使用内置库存或连接外部 Spoolman 服务器。',
- filamentChecks: '耗材检查',
- disableFilamentWarnings: '禁用耗材警告',
- disableFilamentWarningsDesc: '在打印或加入队列时不显示耗材不足警告',
- preferLowestFilament: '优先使用剩余最少的耗材',
- preferLowestFilamentDesc: '当多个料盘匹配时,使用剩余耗材最少的那个',
- trackingModeBuiltIn: '内置库存',
- trackingModeBuiltInDesc: '包含 RFID 自动匹配和用量追踪',
- trackingModeSpoolmanDesc: '外部耗材管理服务器',
- builtInFeatureRfid: '自动检测 AMS 中的拓竹 RFID 耗材',
- builtInFeatureUsage: '追踪每次打印的耗材消耗',
- builtInFeatureCatalog: '管理耗材、颜色和 K 值配置文件',
- builtInFeatureThirdParty: '第三方耗材可分配到库存耗材',
- amsSyncButton: '从 AMS 同步重量',
- amsSyncTitle: '从 AMS 同步耗材重量',
- amsSyncMessage: '这将使用已连接打印机的当前 AMS 剩余百分比值覆盖所有库存耗材重量。用于从损坏的重量数据中恢复。打印机必须在线。',
- amsSyncing: '同步中...',
- amsSyncSuccess: '已同步 {{synced}} 个耗材,跳过 {{skipped}} 个',
- amsSyncError: '从 AMS 同步重量失败',
- // Spoolman settings
- spoolmanUrl: 'Spoolman URL',
- spoolmanUrlHint: 'Spoolman 服务器的 URL(例如 http://localhost:7912)',
- spoolmanConnected: '已连接',
- spoolmanDisconnected: '未连接',
- status: '状态',
- connect: '连接',
- disconnect: '断开',
- howSyncWorks: '同步工作原理',
- syncInfoRfidOnly: '仅同步带有 RFID 的官方拓竹耗材',
- syncInfoAutoCreate: '首次同步时自动在 Spoolman 中创建新耗材',
- syncInfoThirdPartySkipped: '非拓竹耗材(第三方、重新填充的)将被跳过',
- linkingExistingSpools: '链接现有耗材',
- linkingExistingSpoolsDesc: '要将现有的 Spoolman 耗材链接到您的 AMS,请将鼠标悬停在 AMS 槽位上并点击"链接到 Spoolman"。',
- syncMode: '同步模式',
- syncModeAuto: '自动',
- syncModeManual: '仅手动',
- syncModeAutoDesc: '检测到更改时自动同步 AMS 数据',
- syncModeManualDesc: '仅在手动触发时同步',
- syncAmsData: '同步 AMS 数据',
- syncAmsDataDesc: '手动将打印机 AMS 数据同步到 Spoolman',
- allPrinters: '所有打印机',
- // Default printer
- noDefaultPrinter: '无默认(每次询问)',
- // Sidebar
- sidebarOrder: '侧边栏顺序',
- // Camera
- saveThumbnails: '保存缩略图',
- captureFinishPhoto: '拍摄完成照片',
- noPrintersConfigured: '未配置打印机',
- // Archive settings
- archiveMode: {
- always: '始终创建归档条目',
- never: '从不创建归档条目',
- ask: '每次询问',
- },
- // Updates
- checkForUpdatesLabel: '检查更新',
- checkPrinterFirmware: '检查打印机固件',
- includeBetaUpdates: '包含测试版本',
- includeBetaUpdatesDesc: '检查更新时通知测试版和预发布版本',
- // Queue
- enableRetry: '启用重试',
- // Home Assistant
- homeAssistantDescription: '通过 Home Assistant 控制智能插座',
- environmentManagedLabel: '(环境变量管理)',
- autoEnabledViaEnv: '通过环境变量自动启用',
- urlFromEnvReadOnly: '值由 HA_URL 环境变量设置(只读)',
- tokenFromEnvReadOnly: '值由 HA_TOKEN 环境变量设置(只读)',
- // MQTT
- mqttConnectedTo: '已连接到',
- // Prometheus
- prometheusDescription: '以 Prometheus 格式暴露打印机数据',
- // Smart plugs empty state
- noSmartPlugsTitle: '未配置智能插座',
- noSmartPlugsDescription: '添加基于 Tasmota 的智能插座以追踪能耗并自动化电源控制。',
- // Notifications empty state
- noProvidersTitle: '未配置提供商',
- noProvidersDescription: '添加提供商以接收警报。',
- noTemplatesAvailable: '无可用模板。重启后端以加载默认模板。',
- // API permissions
- apiPermissionView: '查看打印机状态和队列',
- apiPermissionEdit: '添加和移除打印队列中的项目',
- // API keys
- apiKeysEmptyTitle: '无 API 密钥',
- apiKeysEmptyDescription: '创建 API 密钥以与外部服务集成。',
- // Users
- noUsersFound: '未找到用户',
- noGroupsFound: '未找到组',
- noGroupsAvailable: '无可用组',
- passwordsDoNotMatch: '密码不匹配',
- systemGroupWarning: '系统组名称不可更改',
- // Auth disabled
- authDisabledTitle: '身份验证已禁用',
- authDisabledFeature1: '需要登录才能访问系统',
- authDisabledFeature2: '创建多个用户并基于组的权限管理',
- authDisabledFeature3: '使用 50+ 个细粒度权限控制访问',
- // User deletion
- userHasCreated: '此用户已创建:',
- userItemsQuestion: '您想如何处理这些项目?',
- deleteUserConfirm: '确定要删除此用户吗?',
- actionCannotBeUndone: '此操作无法撤销。',
- // Smart plugs
- addFirstSmartPlug: '添加您的第一个智能插座',
- // Notifications
- providers: '提供商',
- log: '日志',
- testAll: '全部测试',
- testResults: '测试结果',
- testPassedCount: '{{count}} 个通过',
- testFailedCount: '{{count}} 个失败',
- messageTemplates: '消息模板',
- messageTemplatesDescription: '自定义每个事件的通知消息。',
- // API Keys section
- apiKeys: 'API 密钥',
- apiKeysDescription: '创建 API 密钥用于外部集成和 Webhook。',
- createKey: '创建密钥',
- apiKeyCreated: 'API 密钥创建成功',
- apiKeyCopyWarning: '请立即复制此密钥 - 它不会再次显示!',
- useInApiBrowser: '在 API 浏览器中使用',
- createNewApiKey: '创建新 API 密钥',
- keyName: '密钥名称',
- keyNamePlaceholder: '例如:Home Assistant、OctoPrint',
- readStatus: '读取状态',
- readStatusDescription: '查看打印机状态和队列',
- manageQueue: '管理队列',
- manageQueueDescription: '添加和移除打印队列中的项目',
- controlPrinter: '控制打印机',
- controlPrinterDescription: '暂停、继续和停止打印',
- cloudAccess: 'Allow cloud access',
- cloudAccessDescription: 'Read Bambu Cloud presets and filaments on your behalf. Requires you to be signed into Bambu Cloud.',
- cloudBadge: 'Cloud',
- legacyKey: 'Legacy',
- legacyKeyTooltip: 'Created before per-user ownership; recreate to use cloud access',
- unnamedKey: '未命名密钥',
- lastUsed: '上次使用',
- read: '读取',
- control: '控制',
- createFirstKey: '创建您的第一个密钥',
- webhookEndpoints: 'Webhook 端点',
- webhookApiKeyHint: '在 X-API-Key 请求头中使用您的 API 密钥。',
- webhook: {
- getAllStatus: '获取所有打印机状态',
- getSpecificStatus: '获取特定打印机状态',
- addToQueue: '添加到打印队列',
- pausePrint: '暂停打印',
- resumePrint: '继续打印',
- stopPrint: '停止打印',
- },
- apiBrowser: 'API 浏览器',
- apiBrowserDescription: '浏览和测试所有可用的 API 端点。',
- apiKeyForTesting: '测试用 API 密钥',
- apiKeyPlaceholder: '在此粘贴您的 API 密钥以测试需要认证的端点...',
- apiKeyHint: '此密钥将作为 X-API-Key 请求头随请求发送。',
- deleteApiKeyTitle: '删除 API 密钥',
- deleteApiKeyMessage: '确定要删除此 API 密钥吗?使用此密钥的所有集成将停止工作。',
- deleteKey: '删除密钥',
- // Filament tab
- amsDisplayThresholds: 'AMS 显示阈值',
- amsThresholdsDescription: '配置 AMS 湿度和温度指示器的颜色阈值。',
- humidity: '湿度',
- goodGreen: '良好(绿色)',
- fairOrange: '一般(橙色)',
- aboveFairBad: '超过一般阈值显示为红色(差)',
- fairAlsoDryingThreshold: '此阈值也用于触发自动干燥',
- temperature: '温度',
- goodBlue: '良好(蓝色)',
- aboveFairHot: '超过一般阈值显示为红色(热)',
- historyRetention: '历史保留',
- keepSensorHistory: '保留传感器历史',
- historyRetentionDescription: '较旧的湿度和温度数据将被自动删除',
- defaultPrintOptions: '默认打印选项',
- defaultPrintOptionsDescription: '设置新打印的默认选项值。可在打印对话框中逐次覆盖。',
- defaultBedLevelling: '热床调平',
- defaultBedLevellingDesc: '打印前自动调平热床',
- defaultFlowCali: '流量校准',
- defaultFlowCaliDesc: '校准挤出流量',
- defaultVibrationCali: '振动校准',
- defaultVibrationCaliDesc: '减少振纹伪影',
- defaultLayerInspect: '首层检测',
- defaultLayerInspectDesc: 'AI首层检测',
- defaultTimelapse: '延时摄影',
- defaultTimelapseDesc: '录制延时摄影视频',
- staggeredStart: 'Staggered Start',
- staggeredStartDescription: 'Default group size and interval when staggering multi-printer batch starts. Can be overridden per batch in the print modal.',
- plateClear: '热床清空确认',
- requirePlateClear: '需要热床清空确认',
- requirePlateClearDescription: '启用后,调度器会在已完成打印的打印机上启动排队打印之前,等待每台打印机的热床清空确认。禁用后,也会隐藏打印机卡片上的打印板状态标记和“将打印板标记为已清理”按钮。',
- gcodeInjection: 'G-code注入',
- gcodeInjectionDescription: '为Farmloop、SwapMod、AutoClear和Printflow 3D等自动打印系统配置自定义G-code,在打印开始和/或结束时注入。代码片段按打印机型号配置,在队列项目上启用"注入G-code"时应用。',
- gcodeInjectionNoPrinters: '未找到打印机。添加打印机以配置G-code代码片段。',
- gcodeStartLabel: '开始G-code',
- gcodeEndLabel: '结束G-code',
- gcodeStartPlaceholder: '在打印开始前插入的G-code...',
- gcodeEndPlaceholder: '在打印结束后追加的G-code...',
- staggerGroupSize: 'Group size',
- staggerGroupSizeHelp: 'Printers to start simultaneously per group',
- staggerInterval: 'Interval (minutes)',
- staggerIntervalHelp: 'Delay between each group starting',
- queueDrying: '自动干燥',
- queueDryingDescription: '在队列打印之间,打印机空闲时自动干燥AMS耗材。使用上方的湿度阈值触发干燥。',
- queueDryingEnabled: '启用自动干燥',
- queueDryingEnabledDescription: '当打印机空闲且湿度超过阈值时,自动启动AMS干燥',
- queueDryingBlock: '等待干燥完成',
- queueDryingBlockDescription: '阻止打印队列直到干燥完成。关闭时,打印优先于干燥。',
- ambientDryingEnabled: '环境干燥',
- ambientDryingEnabledDescription: '当空闲打印机的湿度超过阈值时自动干燥耗材,无需排队打印。',
- dryingPresets: '干燥预设',
- dryingPresetsDescription: '每种耗材类型的温度和时长。AMS 2 Pro使用较低温度,AMS-HT支持较高温度。',
- dryingFilament: '耗材',
- printModal: '打印对话框',
- expandCustomMapping: '默认展开自定义映射',
- expandCustomMappingDescription: '打印到多台打印机时,默认展开显示每台打印机的 AMS 映射',
- // User management
- authentication: '身份验证',
- authEnabledDescription: '您的实例已通过用户身份验证保护',
- authDisabledDescription: '启用以要求登录并管理用户访问',
- authDisabledMessage: '启用身份验证以创建用户账户、管理权限并保护您的 Bambuddy 实例。',
- enableAuthentication: '启用身份验证',
- currentUser: '当前用户',
- changePassword: '修改密码',
- admin: '管理员',
- users: '用户',
- addUser: '添加用户',
- groups: '组',
- addGroup: '添加组',
- system: '系统',
- noDescription: '无描述',
- userCount: '{{count}} 个用户',
- permissionCount: '{{count}} 个权限',
- createUser: '创建用户',
- username: '用户名',
- enterUsername: '输入用户名',
- password: '密码',
- enterPassword: '输入密码(至少 6 个字符)',
- confirmPassword: '确认密码',
- confirmPasswordPlaceholder: '确认密码',
- // Title tooltips
- viewReleaseOnGitHub: '在 GitHub 上查看发布',
- turnAllPlugsOn: '开启所有插座',
- turnAllPlugsOff: '关闭所有插座',
- // Modal: Clear logs
- clearNotificationLogs: '清除通知日志',
- clearLogsMessage: '这将永久删除所有 30 天前的通知日志。此操作无法撤销。',
- clearLogs: '清除日志',
- // Modal: Reset UI
- resetUiPreferences: '重置 UI 偏好',
- resetUiPreferencesMessage: '这将重置所有 UI 偏好为默认值:侧边栏顺序、主题、仪表板布局、视图模式和排序偏好。您的打印机、归档和服务器设置不会受到影响。清除后页面将重新加载。',
- resetPreferences: '重置偏好',
- // Modal: Delete group
- deleteGroupTitle: '删除组',
- deleteGroupMessage: '确定要删除此组吗?此组中的用户将失去这些权限。',
- deleteGroup: '删除组',
- // Modal: Disable auth
- disableAuthenticationTitle: '禁用身份验证',
- disableAuthenticationMessage: '确定要禁用身份验证吗?这将使您的 Bambuddy 实例无需登录即可访问。所有用户将保留在数据库中但身份验证将被禁用。',
- disableAuthentication: '禁用身份验证',
- // Additional settings
- configureBambuddy: '配置 Bambuddy',
- systemDefault: '系统默认',
- archiveSettings: '归档设置',
- newWindow: '新窗口',
- embeddedOverlay: '嵌入式叠加层',
- preferredSlicer: '首选切片软件',
- preferredSlicerDescription: '选择要用于打开文件的切片软件',
- orcaslicerKnownIssuesWarning: 'OrcaSlicer 2.3.2 / 2.4.0-dev have known CLI bugs that block slicing many Bambu-authored 3MFs — see upstream issues #12426 (segfault on painted multi-extruder files) and #13386 (parameter-range strict-validation reject). Bambu Studio is recommended until the upstream fixes land.',
- useSlicerApi: 'Use Slicer API',
- useSlicerApiDescription: 'When on, "Slice" actions open the in-app slicer modal and call the slicer-API sidecar. When off (default), they hand off to the desktop slicer via URI scheme.',
- slicerCard: 'Slicer',
- orcaslicerApiUrl: 'OrcaSlicer sidecar URL',
- bambuStudioApiUrl: 'Bambu Studio sidecar URL',
- slicerApiUrlDescription: 'URL of the slicer-API sidecar container. Leave blank to use the SLICER_API_URL / BAMBU_STUDIO_API_URL env var defaults.',
- externalCameras: '外部摄像头',
- costTracking: '成本追踪',
- printsOnly: '仅打印',
- totalConsumption: '总消耗',
- dataManagement: '数据管理',
- storageUsage: '存储使用情况',
- storageUsageDescription: '按类别的数据使用情况明细',
- storageUsageTotal: '总计',
- storageUsageErrors: '错误',
- storageUsageOtherBreakdown: '其他(包括静态资源、脚本和配置文件)',
- storageUsageSystem: '系统',
- storageUsageData: '数据',
- storageUsageUnavailable: '存储使用信息不可用',
- clearNotificationLogsDescription: '删除 30 天前的通知日志',
- resetUiPreferencesDescription: '重置侧边栏顺序、主题、视图模式和布局偏好。打印机、归档和设置不受影响。',
- enableHomeAssistant: '启用 Home Assistant',
- enableMqtt: '启用 MQTT',
- useTls: '使用 TLS',
- enableMetricsEndpoint: '启用指标端点',
- availableMetrics: '可用指标',
- editUser: '编辑用户',
- deleteUserTitle: '删除用户',
- groupName: '组名称',
- // Placeholders
- leaveEmptyForAnonymous: '留空为匿名',
- leaveEmptyForNoAuth: '留空为无认证',
- enterNewPassword: '输入新密码',
- confirmNewPassword: '确认新密码',
- enterGroupName: '输入组名称',
- enterDescriptionOptional: '输入描述(可选)',
- enterCurrentPassword: '输入当前密码',
- enterNewPasswordMin6: '输入新密码(至少 6 个字符)',
- toast: {
- keyCopied: '密钥已复制到剪贴板',
- copyFailed: '复制密钥失败',
- keyAddedToBrowser: '密钥已添加到 API 浏览器',
- clearLogsFailed: '清除日志失败',
- uiPreferencesReset: 'UI 偏好已重置。刷新中...',
- authDisabled: '身份验证已成功禁用',
- authDisableFailed: '禁用身份验证失败',
- apiKeyCreated: 'API 密钥已创建',
- apiKeyDeleted: 'API 密钥已删除',
- userCreated: '用户创建成功',
- userUpdated: '用户更新成功',
- userDeleted: '用户删除成功',
- groupCreated: '组创建成功',
- groupUpdated: '组更新成功',
- groupDeleted: '组删除成功',
- fillRequiredFields: '请填写所有必填字段',
- passwordsDoNotMatch: '密码不匹配',
- passwordTooShort: '密码至少需要 6 个字符',
- enterGroupName: '请输入组名称',
- settingsSaved: '设置已保存',
- noPermissionUpdate: '您没有权限更改设置',
- cameraSettingsSaved: '摄像头设置已保存',
- enterCameraUrl: '请输入摄像头 URL',
- passwordChanged: '密码修改成功',
- connectionFailed: '连接失败',
- testFailed: '测试失败',
- cameraConnected: '摄像头已连接{{resolution}}',
- },
- testConnection: '测试连接',
- catalog: {
- spoolCatalog: '耗材目录',
- spoolCatalogDescription: '按品牌/类型的空耗材重量。用于添加耗材时的自动重量查找。',
- searchCatalog: '搜索目录...',
- addNewEntry: '添加新条目',
- namePlaceholder: '名称(例如:Bambu Lab - 塑料)',
- weight: '重量',
- type: '类型',
- default: '默认',
- custom: '自定义',
- noMatch: '没有条目匹配您的搜索',
- empty: '目录中没有条目',
- deleteEntry: '删除条目',
- deleteConfirm: '确定要删除"{{name}}"吗?',
- resetCatalog: '重置目录',
- resetConfirm: '重置目录为默认值?这将移除所有自定义条目。',
- loadFailed: '加载耗材目录失败',
- nameWeightRequired: '名称和重量为必填项',
- entryAdded: '条目已添加',
- addFailed: '添加条目失败',
- entryUpdated: '条目已更新',
- updateFailed: '更新条目失败',
- entryDeleted: '条目已删除',
- deleteFailed: '删除条目失败',
- resetSuccess: '目录已重置为默认值',
- resetFailed: '重置目录失败',
- exported: '已导出 {{count}} 条',
- imported: '已导入 {{added}} 条(跳过 {{skipped}} 条)',
- importFailed: '导入失败:无效的 JSON 格式',
- exportTooltip: '导出目录为 JSON',
- importTooltip: '从 JSON 导入目录',
- resetTooltip: '重置为默认值',
- selectedCount: '已选择 {{count}} 项',
- deleteSelected: '删除所选',
- bulkDeleteConfirm: '确定要删除 {{count}} 个条目吗?',
- bulkDeleted: '已删除 {{count}} 个条目',
- bulkDeleteFailed: '删除条目失败',
- },
- colorCatalog: {
- title: '颜色目录',
- description: '按制造商/材料的耗材颜色。用于添加耗材时的自动颜色查找。',
- searchColors: '搜索颜色...',
- allManufacturers: '所有制造商',
- addNewColor: '添加新颜色',
- manufacturer: '制造商',
- colorName: '颜色名称',
- hex: '十六进制',
- materialOptional: '材料(可选)',
- showing: '显示 {{filtered}} / {{total}} 种颜色',
- noMatch: '没有颜色匹配您的搜索',
- empty: '目录中没有颜色',
- deleteColor: '删除颜色',
- deleteConfirm: '确定要删除"{{name}}"吗?',
- resetCatalog: '重置颜色目录',
- resetConfirm: '重置目录为默认值?这将移除所有自定义颜色。',
- sync: '同步',
- starting: '启动中...',
- syncTooltip: '从 FilamentColors.xyz 同步(2000+ 种颜色,可能需要一分钟)',
- loadFailed: '加载颜色目录失败',
- fieldsRequired: '制造商、颜色名称和十六进制颜色为必填项',
- colorAdded: '颜色已添加',
- addFailed: '添加颜色失败',
- colorUpdated: '颜色已更新',
- updateFailed: '更新颜色失败',
- colorDeleted: '颜色已删除',
- deleteFailed: '删除颜色失败',
- resetSuccess: '颜色目录已重置为默认值',
- resetFailed: '重置目录失败',
- syncUpToDate: '已是最新(检查了 {{count}} 种颜色)',
- syncComplete: '添加了 {{added}} 种新颜色({{skipped}} 种已存在)',
- syncError: '同步错误',
- syncFailed: '从 FilamentColors.xyz 同步失败',
- exported: '已导出 {{count}} 种颜色',
- imported: '已导入 {{added}} 种颜色(跳过 {{skipped}} 种)',
- importFailed: '导入失败:无效的 JSON 格式',
- selectedCount: '已选择 {{count}} 项',
- deleteSelected: '删除所选',
- bulkDeleteConfirm: '确定要删除 {{count}} 种颜色吗?',
- bulkDeleted: '已删除 {{count}} 种颜色',
- bulkDeleteFailed: '删除颜色失败',
- },
- dateFormat: '日期格式',
- dateFormatUs: '美式 (MM/DD/YYYY)',
- dateFormatEu: '欧式 (DD/MM/YYYY)',
- dateFormatIso: 'ISO (YYYY-MM-DD)',
- timeFormat: '时间格式',
- timeFormat12: '12小时制 (3:30 PM)',
- timeFormat24: '24小时制 (15:30)',
- defaultPrinter: '默认打印机',
- defaultPrinterDescription: '为上传、重印和其他操作预选此打印机。',
- slicerBambuStudio: 'Bambu Studio',
- slicerOrcaSlicer: 'OrcaSlicer',
- sidebarOrderDescription: '拖拽侧边栏项目以重新排序。在此处重置为默认顺序。',
- setDefault: '设为默认',
- sidebarOrderSetDefaultHint: '设为默认将当前菜单顺序应用于尚未自定义的用户。',
- sidebarDefaultSet: '已设置默认菜单顺序。',
- sidebarDefaultCleared: '已清除默认菜单顺序。',
- sidebarDefaultFailed: '设置默认菜单顺序失败。',
- reset: '重置',
- darkMode: '深色模式',
- lightMode: '浅色模式',
- active: '(当前)',
- background: '背景',
- accent: '强调色',
- style: '样式',
- bgNeutral: '中性',
- bgWarm: '暖色',
- bgCool: '冷色',
- bgOled: 'OLED 纯黑',
- bgSlate: '石板蓝',
- bgForest: '森林绿',
- accentGreen: '绿色',
- accentTeal: '青色',
- accentBlue: '蓝色',
- accentOrange: '橙色',
- accentPurple: '紫色',
- accentRed: '红色',
- styleClassic: '经典',
- styleGlow: '发光',
- styleVibrant: '鲜艳',
- themeToggleHint: '使用侧边栏中的太阳/月亮图标在深色和浅色模式之间切换。',
- autoArchivePrints: '自动归档打印',
- autoArchiveDescription: '打印完成时自动保存3MF文件',
- saveThumbnailsDescription: '从3MF文件中提取并保存预览图像',
- captureFinishPhotoDescription: '打印完成时从打印机摄像头拍照',
- ffmpegNotInstalled: '未安装ffmpeg',
- ffmpegRequired: '摄像头捕获需要ffmpeg。通过 <brew>brew install ffmpeg</brew>(macOS)或 <apt>apt install ffmpeg</apt>(Linux)安装。',
- camera: '摄像头',
- cameraViewMode: '摄像头查看模式',
- cameraOverlayDescription: '摄像头在主屏幕上以可调大小的覆盖层打开',
- cameraWindowDescription: '摄像头在单独的浏览器窗口中打开',
- externalCamerasDescription: '配置外部摄像头以替换内置打印机摄像头。支持MJPEG流、RTSP、HTTP快照和USB摄像头(V4L2)。启用后,外部摄像头将用于实时查看和完成照片。',
- cameraPlaceholderUsb: '设备路径 (/dev/video0)',
- cameraPlaceholderUrl: '摄像头URL (rtsp://... 或 http://...)',
- cameraTypeMjpeg: 'MJPEG 流',
- cameraTypeRtsp: 'RTSP 流',
- cameraTypeSnapshot: 'HTTP 快照',
- cameraTypeUsb: 'USB 摄像头 (V4L2)',
- cameraSnapshotUrl: 'Snapshot URL (optional)',
- cameraSnapshotUrlPlaceholder: 'http://192.168.1.61:1984/api/frame.jpeg?src=printer',
- cameraSnapshotUrlHelp: 'Single-frame URL used for notification thumbnails, finish photos, timelapse and plate detection. Leave blank to capture from the live stream above. Useful for go2rtc (/api/frame.jpeg) and IP cameras with a dedicated snapshot endpoint.',
- cameraRotation: '旋转',
- test: '测试',
- connected: '已连接',
- disconnected: '未连接',
- currency: '货币',
- defaultFilamentCost: '默认耗材成本(每公斤)',
- electricityCost: '每千瓦时电费',
- energyDisplayMode: '能源显示模式',
- energyModePrintDescription: '仪表板显示打印期间使用的能源总和',
- energyModeTotalDescription: '仪表板显示智能插座的累计能源',
- fileManager: '文件管理器',
- createArchiveEntry: '打印时创建归档条目',
- createArchiveEntryDescription: '从文件管理器打印时,可选择创建归档条目',
- lowDiskSpaceWarning: '磁盘空间不足警告',
- lowDiskSpaceDescription: '当可用磁盘空间低于此阈值时显示警告',
- printerFirmware: '打印机固件',
- checkFirmwareDescription: '检查Bambu Lab的打印机固件更新',
- bambuddySoftware: 'Bambuddy 软件',
- autoCheckDescription: '启动时自动检查新版本',
- checkNow: '立即检查',
- updateAvailableVersion: '可用更新:v{{version}}',
- releaseNotes: '发布说明',
- updateViaDocker: '通过 Docker Compose 更新:',
- updateViaHomeAssistant: '更新由 Home Assistant Supervisor 管理。请在 Home Assistant 中打开 设置 → 加载项 → Bambuddy 以安装新版本。',
- installUpdate: '安装更新',
- latestVersionRunning: '您正在运行最新版本',
- failedToCheckUpdates: '检查更新失败:{{error}}',
- backupRestore: '备份与恢复',
- backupRestoreDescription: '导出/导入设置并配置GitHub备份',
- goToBackup: '前往备份',
- externalUrl: '外部URL',
- externalUrlDescription: 'Bambuddy可访问的外部URL。用于通知图像和外部集成。',
- bambuddyUrl: 'Bambuddy URL',
- externalUrlHint: '包含协议和端口(例如:http://192.168.1.100:8000)',
- ftpRetry: 'FTP重试',
- ftpRetryDescription: '当打印机WiFi不稳定时重试FTP操作。适用于3MF下载、打印上传、延时摄影下载和固件更新。',
- autoRetryDescription: '自动重试失败的FTP操作',
- retryAttempts: '重试次数',
- retryDelay: '重试延迟',
- connectionTimeout: '连接超时',
- time_one: '{{count}}次',
- time_other: '{{count}}次',
- second_one: '{{count}}秒',
- second_other: '{{count}}秒',
- nSeconds: '{{count}}秒',
- increaseForWeakWifi: '对WiFi信号弱的打印机增加此值',
- homeAssistant: 'Home Assistant',
- homeAssistantFullDescription: '连接到Home Assistant,通过HA REST API控制智能插座。支持switch、light、input_boolean和script实体。',
- homeAssistantUrl: 'Home Assistant URL',
- longLivedAccessToken: '长期访问令牌',
- haTokenHint: '在HA中创建令牌:个人资料 → 长期访问令牌 → 创建令牌',
- connectionSuccessful: '连接成功',
- connectionFailed: '连接失败',
- haConnectionSuccess: '已成功连接到Home Assistant。',
- haConnectionFailed: '连接Home Assistant失败。',
- mqttPublishing: 'MQTT发布',
- mqttDescription: '将BamBuddy事件发布到外部MQTT代理,用于与Node-RED、Home Assistant和其他自动化系统集成。',
- mqttEnableDescription: '向外部MQTT代理发布事件',
- brokerHostname: '代理主机名',
- port: '端口',
- usernameOptional: '用户名(可选)',
- passwordOptional: '密码(可选)',
- topicPrefix: '主题前缀',
- topicPrefixHint: '主题格式:{{prefix}}/printers/<serial>/status 等',
- prometheusMetrics: 'Prometheus 指标',
- prometheusEndpointDescription: '在 <code>/api/v1/metrics</code> 公开打印机指标,用于Prometheus/Grafana监控。',
- bearerTokenOptional: 'Bearer令牌(可选)',
- bearerTokenHint: '设置后,请求必须包含 <code>Authorization: Bearer <token></code>',
- metricsConnectionStatus: '连接状态',
- metricsPrinterState: '打印机状态(空闲/打印中等)',
- metricsPrintProgress: '打印进度 0-100%',
- metricsBedTemp: '热床温度',
- metricsNozzleTemp: '喷嘴温度',
- metricsPrintsTotal: '按结果分类的总打印数',
- metricsMore: '...以及更多(层数、风扇、队列、耗材用量)',
- smartPlugsDescription: '连接智能插座(Tasmota或Home Assistant)以自动化电源控制并跟踪打印机的能源使用情况。',
- allOn: '全部开启',
- allOff: '全部关闭',
- addSmartPlug: '添加智能插座',
- energySummary: '能源概要',
- currentPower: '当前功率',
- plugsOnline: '{{reachable}}/{{total}} 个插座在线',
- today: '今天',
- yesterday: '昨天',
- total: '总计',
- enablePlugsForSummary: '启用插座以查看能源概要',
- addNotificationProvider: '添加',
- systemBadge: '(系统)',
- creating: '创建中...',
- changing: '修改中...',
- deleteUserAndItems: '删除用户及其所有项目',
- deleteUserKeepItems: '删除用户,保留项目(将变为无主项目)',
- ok: '确定',
- // 2FA settings
- twoFa: {
- totpTitle: '身份验证器应用 (TOTP)',
- totpDesc: '使用 Google Authenticator、Aegis 或 Authy 等应用。',
- emailOtpTitle: '邮件 OTP',
- emailOtpDesc: '登录时向 {{email}} 发送一次性验证码。',
- emailOtpNoEmail: '请先为账户添加邮箱地址以启用此方式。',
- addEmailFirst: '您的账户没有邮箱地址,请联系管理员添加。',
- setupTotp: '设置身份验证器应用',
- setupAuthApp: '设置身份验证器应用',
- setupInstructions: '使用身份验证器应用扫描二维码,然后输入验证码确认。',
- manualEntry: '无法扫描?请手动输入此密钥:',
- scannedContinue: '已扫描 — 继续',
- enterCodeToConfirm: '请输入身份验证器应用中的6位验证码以确认设置。',
- activate: '激活',
- disableTotp: '停用身份验证器',
- disableConfirmHint: '请输入有效的 TOTP 码或备用码来停用身份验证器。',
- totpDisabled: '身份验证器应用已停用。',
- emailOtpEnabled: '邮件 OTP 已启用。',
- emailOtpDisabled: '邮件 OTP 已停用。',
- smtpRequired: '请先配置并测试SMTP设置。',
- invalidCode: '无效验证码,请重试。',
- enableEmailOtp: '启用邮件 OTP',
- disableEmailOtp: '停用邮件 OTP',
- emailSetupEnterCode: '验证码已发送至您的邮箱地址。请在下方输入以确认您拥有此邮箱。',
- verifyAndEnable: '验证并启用',
- emailDisablePasswordHint: '请输入您的账户密码以确认停用邮件 OTP。',
- passwordPlaceholder: '输入您的密码',
- backupCodesTitle: '保存备用码',
- backupCodesWarning: '请将这些码保存在安全的地方。每个码只能使用一次,且不会再次显示。',
- backupCodesRemaining: '剩余 {{count}} 个备用码',
- savedCodes: '已保存',
- regenBackup: '重新生成备用码',
- regenBackupHint: '输入当前 TOTP 码以生成 10 个新备用码,所有现有备用码将失效。',
- newBackupCodes: '新备用码',
- linkedAccounts: '已关联的 SSO 账户',
- linkedAccountsDesc: '以下外部身份提供商已与您的账户关联。',
- oidcUnlinked: '账户已解除关联。',
- },
- // OIDC provider settings
- oidc: {
- title: 'SSO / OIDC 提供商',
- desc: '配置 OpenID Connect 提供商以实现单点登录。',
- addProvider: '添加提供商',
- newProvider: '新提供商',
- empty: '尚未配置 OIDC 提供商。',
- created: '提供商已创建。',
- updated: '提供商已更新。',
- deleted: '提供商已删除。',
- deleteTitle: '删除提供商',
- deleteMessage: '删除"{{name}}"?所有关联账户将断开连接。',
- form: {
- name: '显示名称',
- issuerUrl: '颁发者 URL',
- clientId: '客户端 ID',
- clientSecret: '客户端密钥',
- scopes: '作用域',
- iconUrl: '图标 URL(可选)',
- enabled: '已启用',
- autoCreate: '自动创建用户',
- autoCreateDesc: '首次登录时自动创建本地账户。',
- autoLink: '自动关联已有账户',
- autoLinkDesc: '首次登录时通过邮箱匹配现有本地账户并自动关联。',
- secretHint: '留空以保留当前',
- secretPlaceholder: '新密钥',
- emailClaim: '邮箱声明',
- emailClaimDesc: "用作邮箱身份的 JWT 声明。Azure Entra ID 请使用 'preferred_username' 或 'upn'(不发送 email_verified)。仅使用可信的声明名称。",
- emailClaimPlaceholder: 'email',
- emailClaimCustomClaimAutoLinkWarning: "Custom claims are safe for auto-link only when the value is tenant-administered (e.g. Azure Entra ID upn / preferred_username). Do not enable auto-link if your IdP allows users to self-assert this claim.",
- requireEmailVerified: '要求邮箱已验证',
- requireEmailVerifiedDesc: '仅在提供商将邮箱声明标记为已验证时才接受。',
- requireEmailVerifiedWarning: '警告:将在未经验证的情况下接受邮箱。仅对受信任的提供商使用。',
- requireEmailVerifiedAutoLink: '请先禁用自动关联以更改此设置。',
- defaultGroup: '默认组',
- defaultGroupDesc: '自动创建用户时分配的组。未设置时回退到 Viewers。',
- defaultGroupViewersFallback: 'Viewers(默认)',
- },
- },
- },
- // Notifications (for push notifications)
- notification: {
- printStarted: {
- title: '打印已开始',
- body: '{{printer}}:{{filename}} 已开始打印',
- },
- printCompleted: {
- title: '打印已完成',
- body: '{{printer}}:{{filename}} 已成功完成',
- },
- printFailed: {
- title: '打印失败',
- body: '{{printer}}:{{filename}} 打印失败',
- },
- printStopped: {
- title: '打印已停止',
- body: '{{printer}}:{{filename}} 已停止',
- },
- printProgress: {
- title: '打印进度',
- body: '{{printer}}:{{filename}} 已完成 {{percent}}%',
- },
- printerOffline: {
- title: '打印机离线',
- body: '{{printer}} 已离线',
- },
- printerError: {
- title: '打印机错误',
- body: '{{printer}}:{{error}}',
- },
- filamentLow: {
- title: '耗材不足',
- body: '{{printer}}:耗材即将用完',
- },
- maintenanceDue: {
- title: '维护到期',
- body: '{{printer}}:{{items}} 需要关注',
- },
- },
- // Errors
- errors: {
- generic: '出了点问题',
- networkError: '网络错误。请检查您的连接。',
- notFound: '未找到',
- unauthorized: '未授权',
- serverError: '服务器错误',
- validationError: '请检查您的输入',
- printerConnectionFailed: '连接打印机失败',
- saveFailed: '保存更改失败',
- deleteFailed: '删除失败',
- loadFailed: '加载数据失败',
- },
- // HMS Errors modal
- hmsErrors: {
- title: '错误 - {{name}}',
- noErrors: '无错误',
- viewOnWiki: '在拓竹 Wiki 上查看',
- clearInstructions: '在打印机上清除错误以在此处消除它们。',
- clearErrors: '清除错误',
- clearSuccess: 'HMS 错误已清除',
- clearFailed: '清除 HMS 错误失败',
- },
- // MQTT Debug modal
- mqttDebug: {
- title: 'MQTT 调试日志',
- searchPlaceholder: '搜索主题或负载...',
- noMessages: '尚未记录消息',
- startLoggingHint: '点击"开始记录"以开始捕获 MQTT 消息',
- noMessagesMatch: '没有消息匹配您的筛选条件',
- adjustFilterHint: '尝试调整您的搜索或筛选条件',
- incoming: '传入',
- outgoing: '传出',
- loggingStopped: '记录已停止',
- loggingActive: '记录中 - 消息将自动刷新',
- startLogging: '开始记录',
- stopLogging: '停止记录',
- clearLog: '清除日志',
- topic: '主题',
- timestamp: '时间戳',
- direction: '方向',
- all: '全部',
- },
- // Printer File Manager modal (printer internal storage)
- printerFiles: {
- title: '文件管理器',
- storageUsed: '已用:',
- storageFree: '剩余:',
- filterPlaceholder: '筛选文件...',
- deleteButton: '删除',
- deleteFiles: '删除 {{count}} 个文件',
- deleteFileConfirm: '删除"{{name}}"?此操作无法撤销。',
- deleteFilesConfirm: '删除 {{count}} 个选中的文件?此操作无法撤销。',
- noFiles: '打印机上没有文件',
- loadingFiles: '加载文件中...',
- failedToLoad: '加载文件失败',
- toast: {
- filesDeleted: '已删除 {{count}} 个文件',
- deleteFailed: '删除失败:{{error}}',
- },
- },
- // Confirmations
- confirm: {
- delete: '确定要删除吗?',
- unsavedChanges: '您有未保存的更改。确定要离开吗?',
- clearQueue: '确定要清空队列吗?',
- },
- // Login page
- login: {
- title: 'Bambuddy 登录',
- subtitle: '登录您的账户',
- username: '用户名',
- usernamePlaceholder: '输入您的用户名',
- usernameOrEmail: '用户名或邮箱',
- usernameOrEmailPlaceholder: '用户名或 @ 邮箱',
- password: '密码',
- passwordPlaceholder: '输入您的密码',
- signIn: '登录',
- signingIn: '登录中...',
- rememberMe: '记住我',
- forgotPassword: '忘记密码?',
- loginSuccess: '登录成功',
- loginFailed: '登录失败',
- enterCredentials: '请输入用户名和密码',
- enterEmail: '请输入您的电子邮件地址',
- oidcLoginFailed: 'OIDC 登录失败',
- oidcErrors: {
- providerError: '身份提供商返回了一个错误',
- missingParameters: 'OIDC 回调缺少必要参数',
- invalidState: 'OIDC 状态无效或已被使用',
- stateExpired: 'OIDC 登录会话已过期,请重试',
- providerNotFound: '未找到 OIDC 提供商',
- discoveryFailed: '无法获取 OIDC 发现文档',
- invalidDiscovery: 'OIDC 发现文档无效',
- networkError: 'OIDC 令牌交换时出现网络错误',
- badResponse: 'OIDC 令牌交换时收到意外响应',
- noIdToken: 'OIDC 提供商未返回 ID 令牌',
- validationFailed: 'OIDC 令牌验证失败',
- nonceMismatch: 'OIDC nonce 不匹配,可能存在重放攻击',
- missingSubClaim: 'OIDC 令牌缺少 sub 声明',
- noLinkedAccount: '没有与此 OIDC 身份关联的本地帐户',
- accountInactive: '您的帐户已被停用',
- userResolutionFailed: '无法解析您的帐户',
- internalError: 'OIDC 登录过程中发生内部错误',
- tokenExchangeFailed: 'OIDC 令牌交换失败',
- },
- forgotPasswordTitle: '忘记密码',
- forgotPasswordMessage: '如果您忘记了密码,请联系系统管理员进行重置。',
- forgotPasswordEmailMessage: '输入您的邮箱地址,我们将向您发送新密码。',
- emailAddress: '邮箱地址',
- emailPlaceholder: 'your.email@example.com',
- cancel: '取消',
- sending: '发送中...',
- sendResetEmail: '发送重置邮件',
- howToReset: '如何重置密码:',
- resetStep1: '联系您的 Bambuddy 管理员',
- resetStep2: '请他们在用户管理中重置您的密码',
- resetStep3: '他们可以为您设置一个临时密码',
- resetStep4: '使用新密码登录并在设置中修改密码',
- gotIt: '知道了',
- resetPassword: {
- title: '设置新密码',
- subtitle: '请在下方输入并确认您的新密码。',
- newPassword: '新密码',
- newPasswordPlaceholder: '至少 8 个字符',
- confirmPassword: '确认密码',
- confirmPasswordPlaceholder: '重复输入新密码',
- saving: '保存中…',
- submit: '设置新密码',
- backToLogin: '返回登录',
- passwordsDoNotMatch: '密码不匹配',
- passwordTooShort: '密码至少需要 8 个字符',
- resetFailed: '密码重置失败。链接可能已过期。',
- },
- twoFA: {
- title: '两步验证',
- subtitle: '您的账户已启用两步验证。请在下方输入验证码。',
- methodAuthenticator: '身份验证器应用',
- methodEmail: '邮箱验证码',
- methodBackup: '备用恢复码',
- instructionsTotp: '请打开您的身份验证器应用,输入 Bambuddy 的 6 位验证码。',
- instructionsEmail: '6 位验证码已发送至您的邮箱,有效期为 10 分钟。',
- instructionsEmailNotSent: '点击下方按钮,通过邮件获取验证码。',
- instructionsBackup: '请输入您的一个 8 位备用恢复码。每个恢复码只能使用一次。',
- sendCodeButton: '发送邮箱验证码',
- sendingCode: '发送中...',
- resendCode: '重新发送验证码',
- codeLabel: '验证码',
- backupCodeLabel: '备用恢复码',
- codePlaceholder: '000000',
- backupCodePlaceholder: 'XXXXXXXX',
- verifyButton: '验证',
- verifyingButton: '验证中...',
- backToLogin: '← 返回登录页面',
- orContinueWith: '或通过以下方式登录',
- signInWith: '使用 {{provider}} 登录',
- enterCode: '请输入验证码',
- sendCodeFailed: '验证码发送失败',
- invalidCode: '无效验证码,请重试。',
- },
- },
- // Setup page
- setup: {
- title: 'Bambuddy 设置',
- subtitle: '为您的 Bambuddy 实例配置身份验证',
- enableAuth: '启用身份验证',
- adminAccount: '管理员账户',
- adminAccountDesc: '如果管理员用户已存在,将使用现有管理员账户启用身份验证。如需使用现有管理员,请将下方字段留空,或输入新凭据创建新管理员用户。',
- adminUsername: '管理员用户名',
- adminPassword: '管理员密码',
- optionalIfAdminExists: '(如管理员用户已存在则为可选)',
- adminUsernamePlaceholder: '输入管理员用户名(可选)',
- adminPasswordPlaceholder: '输入管理员密码(可选)',
- confirmPassword: '确认密码',
- confirmPasswordPlaceholder: '确认管理员密码',
- settingUp: '设置中...',
- completeSetup: '完成设置',
- toast: {
- authEnabledAdminCreated: '身份验证已启用并创建了管理员用户',
- authEnabledExistingAdmins: '使用现有管理员用户启用了身份验证',
- setupCompleted: '设置完成',
- enterBothCredentials: '请输入管理员用户名和密码,或将两者留空以使用现有管理员用户',
- passwordsDoNotMatch: '密码不匹配',
- passwordTooShort: '密码至少需要 6 个字符',
- },
- },
- // Password change
- changePassword: {
- title: '修改密码',
- currentPassword: '当前密码',
- currentPasswordPlaceholder: '输入当前密码',
- newPassword: '新密码',
- newPasswordPlaceholder: '输入新密码(至少 6 个字符)',
- confirmPassword: '确认新密码',
- confirmPasswordPlaceholder: '确认新密码',
- passwordsDoNotMatch: '密码不匹配',
- passwordTooShort: '密码至少需要 6 个字符',
- changing: '修改中...',
- success: '密码修改成功',
- failed: '密码修改失败',
- },
- // Plate detection alert
- plateAlert: {
- title: '打印已暂停!',
- message: '在构建板上检测到物体。打印已自动暂停。请清理打印板并继续打印。',
- understand: '我知道了',
- },
- // Camera page
- camera: {
- title: '摄像头视图',
- invalidPrinterId: '无效的打印机 ID',
- live: '实时',
- snapshot: '快照',
- restartStream: '重启流',
- refreshSnapshot: '刷新快照',
- fullscreen: '全屏',
- exitFullscreen: '退出全屏',
- connectingToCamera: '连接摄像头中...',
- capturingSnapshot: '拍摄快照中...',
- connectionLost: '连接已断开',
- connectionFailed: '摄像头连接失败',
- reconnecting: '{{countdown}} 秒后重新连接...(第 {{attempt}}/{{max}} 次尝试)',
- reconnectNow: '立即重新连接',
- cameraUnavailable: '摄像头不可用',
- cameraUnavailableDesc: '请确保打印机已通电并已连接。',
- noCamera: '无可用摄像头',
- retry: '重试',
- cameraStream: '摄像头流',
- zoomOut: '缩小',
- zoomIn: '放大',
- resetZoom: '重置缩放',
- recording: '录制中',
- startRecording: '开始录制',
- stopRecording: '停止录制',
- chamberLight: '切换腔室灯',
- },
- // Groups management
- groups: {
- title: '组管理',
- subtitle: '管理访问控制的权限组',
- backToSettings: '返回设置',
- createGroup: '创建组',
- noPermission: '您没有访问此页面的权限。',
- system: '系统',
- noDescription: '无描述',
- usersCount: '{{count}} 个用户',
- permissionsCount: '{{count}} 个权限',
- edit: '编辑',
- delete: '删除',
- toast: {
- created: '组创建成功',
- updated: '组更新成功',
- deleted: '组删除成功',
- enterGroupName: '请输入组名称',
- },
- modal: {
- editGroup: '编辑组',
- createGroup: '创建组',
- cancel: '取消',
- saving: '保存中...',
- creating: '创建中...',
- saveChanges: '保存更改',
- },
- form: {
- groupName: '组名称',
- groupNamePlaceholder: '输入组名称',
- systemGroupWarning: '系统组名称不可更改',
- description: '描述',
- descriptionPlaceholder: '输入描述(可选)',
- permissions: '权限(已选 {{count}} 个)',
- },
- deleteModal: {
- title: '删除组',
- message: '确定要删除此组吗?此组中的用户将失去这些权限。',
- confirm: '删除组',
- },
- editor: {
- title: '编辑组',
- createTitle: '创建组',
- search: '搜索权限...',
- selectAll: '全选',
- clearAll: '清除全部',
- permissionsSelected: '已选 {{count}} 个',
- noResults: '没有权限匹配您的搜索',
- },
- },
- // Users management
- users: {
- title: '用户管理',
- subtitle: '管理用户及其对 Bambuddy 实例的访问',
- backToSettings: '返回设置',
- createUser: '创建用户',
- noPermission: '您没有访问此页面的权限。',
- admin: '管理员',
- noGroups: '无组',
- active: '活跃',
- inactive: '非活跃',
- edit: '编辑',
- delete: '删除',
- system: '系统',
- noGroupsAvailable: '无可用组',
- table: {
- username: '用户名',
- groups: '组',
- status: '状态',
- actions: '操作',
- },
- toast: {
- created: '用户创建成功',
- updated: '用户更新成功',
- deleted: '用户删除成功',
- fillRequired: '请填写所有必填字段',
- passwordsDoNotMatch: '密码不匹配',
- passwordTooShort: '密码至少需要 6 个字符',
- },
- modal: {
- createUser: '创建用户',
- editUser: '编辑用户',
- cancel: '取消',
- creating: '创建中...',
- saving: '保存中...',
- saveChanges: '保存更改',
- advancedAuthSubtitle: '使用高级认证',
- },
- form: {
- username: '用户名',
- usernamePlaceholder: '输入用户名',
- email: '邮箱',
- emailPlaceholder: 'user@example.com',
- password: '密码',
- passwordPlaceholder: '输入密码',
- confirmPassword: '确认密码',
- confirmPasswordPlaceholder: '确认密码',
- newPasswordPlaceholder: '输入新密码',
- confirmNewPasswordPlaceholder: '确认新密码',
- leaveBlankToKeep: '留空以保持当前值',
- groups: '组',
- optional: '可选',
- autoGeneratedPassword: '将自动生成安全密码并通过邮件发送给用户。',
- passwordManagedByAdvancedAuth: '密码由高级认证管理。使用"重置密码"通过邮件向用户发送新密码。',
- resetPassword: '重置密码',
- resettingPassword: '重置密码中...',
- },
- deleteModal: {
- title: '删除用户',
- message: '确定要删除此用户吗?此操作无法撤销。',
- confirm: '删除用户',
- },
- },
- // Stream overlay
- streamOverlay: {
- title: '流叠加层',
- invalidPrinterId: '无效的打印机 ID',
- cameraStream: '摄像头流',
- progress: '进度',
- eta: '预计完成时间',
- printerIdle: '打印机空闲',
- printerOffline: '打印机离线',
- status: {
- printing: '打印中',
- paused: '已暂停',
- finished: '已完成',
- failed: '失败',
- idle: '空闲',
- unknown: '未知',
- },
- },
- // Profiles
- profiles: {
- title: '配置文件',
- subtitle: '管理您的切片预设和压力推进校准',
- tabs: {
- cloud: '云端配置文件',
- local: '本地配置文件',
- kprofiles: 'K 值配置',
- },
- localProfiles: {
- title: '本地配置文件',
- subtitle: '从 OrcaSlicer 导入和管理切片预设',
- import: '导入配置文件',
- importDesc: '将 .bbscfg、.bbsflmt、.orca_filament、.zip 或 .json 文件拖放到此处',
- importing: '导入中...',
- search: '搜索本地预设...',
- noPresets: '暂无本地预设',
- badge: '本地',
- edit: '编辑',
- delete: '删除',
- cancel: '取消',
- deleteConfirmTitle: '删除预设',
- deleteConfirm: '确定要删除此预设吗?此操作无法撤销。',
- source: '来源',
- inheritsFrom: '继承自',
- filamentType: '类型',
- vendor: '厂商',
- compatiblePrinters: '兼容打印机',
- nozzleTemp: '喷嘴温度',
- cost: '成本',
- density: '密度',
- pressureAdvance: '压力推进',
- filament: '耗材',
- process: '工艺',
- printer: '打印机',
- toast: {
- importSuccess: '已导入 {{count}} 个预设',
- importSkipped: '跳过 {{count}} 个预设(重复)',
- importError: '导入时出现 {{count}} 个错误',
- deleted: '预设已删除',
- updated: '预设已更新',
- },
- },
- connectedAs: '已连接为',
- logout: '退出登录',
- noLogoutPermission: '您没有退出登录的权限',
- failedToLoad: '加载配置文件失败',
- retry: '重试',
- time: {
- justNow: '刚刚',
- minsAgo: '{{count}} 分钟前',
- hoursAgo: '{{count}} 小时前',
- daysAgo: '{{count}} 天前',
- },
- toast: {
- loggedOut: '已退出登录',
- },
- login: {
- title: '连接到拓竹云',
- subtitle: '跨设备同步您的切片预设',
- email: '邮箱',
- password: '密码',
- region: '地区',
- regionGlobal: '全球',
- regionChina: '中国',
- verificationCode: '验证码',
- totpCode: '验证器代码',
- checkEmail: '检查您的邮箱 ({{email}}) 获取 6 位验证码',
- enterTotpHint: '输入验证器应用中的 6 位代码',
- accessToken: '访问令牌',
- accessTokenHint: '粘贴您的拓竹访问令牌(来自 Bambu Studio)',
- back: '返回',
- loginButton: '登录',
- verifyButton: '验证',
- setTokenButton: '设置令牌',
- useToken: '改用访问令牌',
- useEmail: '改用邮箱登录',
- toast: {
- loggedIn: '登录成功',
- codeSent: '验证码已发送到您的邮箱',
- enterTotp: '输入验证器应用中的代码',
- tokenSet: '令牌设置成功',
- },
- },
- presets: {
- myPreset: '我的预设(可编辑)',
- duplicate: '复制',
- editable: '可编辑',
- failedToLoadDetails: '加载预设详情失败',
- deleteConfirm: '删除此预设?',
- deleteWarning: '这将从拓竹云中永久删除"{{name}}"。此操作无法撤销。',
- noDuplicatePermission: '您没有复制预设的权限',
- noEditPermission: '您没有编辑预设的权限',
- noDeletePermission: '您没有删除预设的权限',
- types: {
- filament: '耗材预设',
- printer: '打印机预设',
- process: '工艺预设',
- },
- toast: {
- deleted: '预设已删除',
- created: '预设已创建',
- updated: '预设已更新',
- duplicated: '预设已复制',
- fieldAdded: '字段"{{key}}"已添加',
- exported: '预设已导出',
- },
- baseLabel: '基础:{{name}}',
- currentLabel: '当前:{{name}}',
- newPreset: '新建预设',
- editPreset: '编辑预设',
- duplicatePreset: '复制预设',
- createNewPreset: '创建新预设',
- customizeSettings: '自定义新预设的设置',
- compareWithBase: '与基础预设比较',
- compare: '比较',
- // CreatePresetModal - Basic Info
- basePreset: '基础预设',
- selectBasePreset: '选择基础预设...',
- presetName: '预设名称',
- myCustomPreset: '我的自定义预设',
- inheritsFrom: '继承自',
- dropJsonToImport: '拖放 JSON 以导入',
- // CreatePresetModal - Tabs
- tabs: {
- common: '常用',
- allFields: '所有字段',
- },
- // CreatePresetModal - All Fields Tab
- availableFields: '可用字段',
- searchFieldsPlaceholder: '搜索字段...',
- noMatchingFields: '没有匹配的字段',
- allFieldsAdded: '所有字段已添加',
- addCustomField: '添加自定义字段',
- yourOverrides: '您的覆盖值',
- noOverridesYet: '暂无覆盖值',
- clickFieldsToAdd: '点击左侧的字段进行添加',
- saveAsTemplate: '保存为模板',
- jsonTip: '提示:将 .json 文件拖放到此对话框的任意位置以导入设置',
- },
- cloudView: {
- searchPlaceholder: '搜索预设...',
- templates: '模板',
- refresh: '刷新',
- newPreset: '新建预设',
- clearFilters: '清除筛选',
- // Compare mode
- compareMode: '比较模式',
- selectAnotherPreset: '选择另一个 {{type}} 预设',
- clickTwoPresets: '点击两个相同类型的预设进行比较',
- selectFirst: '1. 选择第一个',
- selectSecond: '2. 选择第二个',
- compareNow: '立即比较',
- // Status row
- lastSynced: '上次同步:',
- showingCount: '显示 {{showing}} / {{total}} 个预设',
- noPresetsFound: '未找到预设',
- // Column headers
- columns: {
- filament: '耗材',
- process: '工艺',
- printer: '打印机',
- },
- noFilamentPresets: '无耗材预设',
- noProcessPresets: '无工艺预设',
- noPrinterPresets: '无打印机预设',
- // Filters
- filters: {
- type: '类型',
- owner: '所有者',
- printer: '打印机',
- nozzle: '喷嘴',
- filament: '耗材',
- layer: '层',
- all: '全部',
- myPresets: '我的预设',
- builtIn: '内置',
- process: '工艺',
- },
- // Permissions
- noTemplatesPermission: '您没有管理模板的权限',
- noRefreshPermission: '您没有刷新配置文件的权限',
- noCreatePermission: '您没有创建预设的权限',
- },
- templates: {
- title: '快速模板',
- noTemplates: '暂无模板',
- createFirst: '从预设编辑器创建模板',
- typeFilter: '类型:',
- deleteTitle: '删除模板',
- deleteWarning: '此操作无法撤销',
- deleteConfirm: '确定要删除"{{name}}"吗?',
- namePlaceholder: '模板名称',
- descriptionPlaceholder: '描述',
- settingsJson: '设置 (JSON)',
- fieldsCount: '{{count}} 个字段',
- shownInModals: '在对话框中显示',
- hiddenInModals: '在对话框中隐藏',
- apply: '应用',
- toast: {
- deleted: '模板已删除',
- updated: '模板已更新',
- created: '模板已创建',
- applied: '模板已应用',
- },
- },
- },
- // Support/Debug
- support: {
- debugLoggingActive: '调试日志记录已激活',
- manageLogs: '管理',
- collectItem7: '打印机连接和固件版本',
- collectItem8: '集成状态(Spoolman、MQTT、HA)',
- collectItem9: '网络接口(仅子网)',
- collectItem10: 'Python 包版本',
- collectItem11: '数据库健康检查',
- collectItem12: 'Docker 环境详情',
- },
- // File manager
- fileManager: {
- title: '文件管理器',
- subtitle: '组织和管理您的打印文件',
- uploadFiles: '上传文件',
- newFolder: '新建文件夹',
- folderName: '文件夹名称',
- folderNamePlaceholder: '例如:功能零件',
- renameFile: '重命名文件',
- renameFolder: '重命名文件夹',
- moveFiles: '移动 {{count}} 个文件',
- rootNoFolder: '根目录(无文件夹)',
- current: '当前',
- linkFolder: '链接文件夹',
- linkFolderDescription: '将"{{name}}"链接到项目或归档以便快速访问。',
- project: '项目',
- archive: '归档',
- noProjectsFound: '未找到项目',
- noArchivesFound: '未找到归档',
- unlink: '取消链接',
- link: '链接',
- dragDropFiles: '将文件拖放到此处',
- dropFilesHere: '将文件放在此处',
- orClickToBrowse: '或点击浏览',
- allFileTypesSupported: '支持所有文件类型。ZIP 文件将被解压。',
- zipFilesDetected: '检测到 ZIP 文件',
- zipExtractOptions: 'ZIP 文件将被解压。选择如何处理文件夹结构:',
- preserveZipStructure: '保留 ZIP 中的文件夹结构',
- createFolderFromZip: '从 ZIP 文件名创建文件夹',
- stlThumbnailGeneration: 'STL 缩略图生成',
- zipMayContainStl: 'ZIP 文件可能包含 STL 文件。可以在解压时生成缩略图。',
- thumbnailsCanBeGenerated: '可以为 STL 文件生成缩略图。大型模型可能需要更长时间处理。',
- generateThumbnailsForStl: '为 STL 文件生成缩略图',
- threemfDetected: '检测到 3MF 文件',
- threemfExtractionInfo: '将自动从 3MF 文件中提取打印机型号、材料、颜色和打印设置。',
- willBeExtracted: '将被解压',
- filesExtracted: '已解压 {{count}} 个文件',
- uploadComplete: '上传完成:{{succeeded}} 个成功',
- uploadFailed: '上传失败',
- zipFilesFailed: '{{count}} 个文件失败',
- uploading: '上传中...',
- changeLink: '更改链接...',
- linkTo: '链接到...',
- linkToProjectOrArchive: '链接到项目或归档',
- addToQueue: '添加到队列',
- schedulePrint: '排程',
- generateThumbnail: '生成缩略图',
- generateThumbnails: '生成缩略图',
- generateThumbnailsForMissing: '为缺少缩略图的 STL 文件生成缩略图',
- gridView: '网格视图',
- listView: '列表视图',
- lowDiskSpaceWarning: '磁盘空间不足警告',
- lowDiskSpaceDetails: '仅剩 {{free}}(总共 {{total}})。阈值设置为 {{threshold}} GB。',
- files: '文件',
- folders: '文件夹',
- size: '大小',
- free: '剩余',
- allFiles: '所有文件',
- wrap: '换行',
- enableTextWrapping: '启用文本换行',
- disableTextWrapping: '禁用文本换行',
- collapse: '折叠',
- collapseFoldersByDefault: '默认折叠文件夹',
- expandFoldersByDefault: '默认展开文件夹',
- dragToResizeTooltip: '拖动调整大小,双击重置',
- searchFiles: '搜索文件...',
- allTypes: '所有类型',
- prints: '打印',
- ascending: '升序',
- descending: '降序',
- resultsCount: '{{showing}} / {{total}} 个文件',
- selectAll: '全选',
- deselectAll: '取消全选',
- selected: '已选择 {{count}} 个',
- adding: '添加中...',
- loadingFiles: '加载文件中...',
- folderIsEmpty: '文件夹为空',
- noFilesYet: '暂无文件',
- folderEmptyDescription: '上传文件或将文件移入此文件夹以开始使用。',
- noFilesDescription: '上传文件以开始组织您的打印相关文件。',
- noMatchingFiles: '没有匹配的文件',
- noMatchingFilesDescription: '没有文件匹配您当前的搜索或筛选条件。',
- clearFilters: '清除筛选',
- printedCount: '已打印 {{count}} 次',
- uploadedBy: '上传者',
- deleteFolder: '删除文件夹',
- deleteFile: '删除文件',
- deleteFilesCount: '删除 {{count}} 个文件',
- deleteFolderConfirm: '确定要删除此文件夹吗?其中的所有文件也将被删除。',
- deleteFileConfirm: '确定要删除此文件吗?',
- deleteFilesConfirm: '确定要删除 {{count}} 个选中的文件吗?此操作无法撤销。',
- deleting: '删除中...',
- noPermissionRenameFolder: '您没有重命名文件夹的权限',
- noPermissionLinkFolder: '您没有链接文件夹的权限',
- noPermissionDeleteFolder: '您没有删除文件夹的权限',
- noPermissionPrint: '您没有打印的权限',
- noPermissionSlice: 'You do not have permission to slice files',
- noPermissionAddToQueue: '您没有添加到队列的权限',
- noPermissionDownload: '您没有下载文件的权限',
- noPermissionRenameFile: '您没有重命名此文件的权限',
- noPermissionGenerateThumbnail: '您没有生成缩略图的权限',
- noPermissionDeleteFile: '您没有删除此文件的权限',
- noPermissionCreateFolder: '您没有创建文件夹的权限',
- noPermissionUpload: '您没有上传文件的权限',
- noPermissionMoveFiles: '您没有移动文件的权限',
- noPermissionDeleteFiles: '您没有删除文件的权限',
- // External folder
- linkExternal: '链接外部',
- linkExternalFolder: '链接外部文件夹',
- linkExternalFolderDescription: '将主机目录(NAS、USB、网络共享)挂载到文件管理器中。文件不会被复制——直接从原始路径访问。',
- externalFolderNamePlaceholder: '例如:NAS打印文件',
- externalPath: '主机路径',
- externalPathHelp: 'Docker主机上目录的绝对路径。必须以绑定挂载方式挂载到容器中。',
- readOnly: '只读',
- readOnlyHelp: '防止上传和删除',
- showHiddenFiles: '显示隐藏文件(点文件)',
- externalFolder: '外部文件夹',
- scanFolder: '扫描',
- toast: {
- folderCreated: '文件夹已创建',
- folderDeleted: '文件夹已删除',
- fileDeleted: '文件已删除',
- filesDeleted: '已删除 {{count}} 个文件',
- filesMoved: '文件已移动',
- folderLinked: '文件夹已链接',
- folderUnlinked: '文件夹已取消链接',
- externalFolderLinked: '外部文件夹已链接并扫描',
- folderScanned: '扫描完成:添加 {{added}} 个,移除 {{removed}} 个',
- addedToQueue: '已将 {{count}} 个文件添加到队列',
- addedToQueuePartial: '已添加 {{added}} 个文件,{{failed}} 个失败',
- failedToAddToQueue: '添加文件失败:{{error}}',
- fileRenamed: '文件已重命名',
- folderRenamed: '文件夹已重命名',
- thumbnailsGenerated: '已生成 {{count}} 个缩略图',
- thumbnailsGeneratedPartial: '已生成 {{succeeded}} 个缩略图,{{failed}} 个失败',
- noStlMissingThumbnails: '没有缺少缩略图的 STL 文件',
- failedToGenerateThumbnails: '生成缩略图失败:{{error}}',
- thumbnailGenerated: '缩略图已生成',
- failedToGenerateThumbnail: '生成缩略图失败:{{error}}',
- },
- },
- // Projects
- projects: {
- title: '项目',
- subtitle: '组织和跟踪您的 3D 打印项目',
- newProject: '新建项目',
- editProject: '编辑项目',
- deleteProject: '删除项目',
- projectName: '项目名称',
- description: '描述',
- noProjects: '暂无项目',
- noProjectsFiltered: '没有{{status}}项目',
- noProjectsFilteredHelp: '您没有任何{{status}}项目。当项目状态更改时,它们将出现在这里。',
- createFirst: '创建您的第一个项目以开始组织相关打印、跟踪进度和管理构建。',
- createFirstButton: '创建您的第一个项目',
- create: '创建',
- files: '文件',
- prints: '打印',
- plates: '板',
- parts: '零件',
- lastModified: '最后修改',
- deleteConfirm: '确定要删除此项目吗?归档和队列项目将被取消链接但不会被删除。',
- addFiles: '添加文件',
- removeFile: '移除文件',
- viewDetails: '查看详情',
- // Modal fields
- namePlaceholder: '例如:Voron 2.4 构建',
- descriptionPlaceholder: '可选描述...',
- urlLabel: '网址',
- urlPlaceholder: 'https://makerworld.com/...',
- urlInvalid: '网址必须以 http:// 或 https:// 开头',
- openExternalUrl: '打开项目网址',
- coverImageLabel: '封面图片',
- coverImageAlt: '项目封面图片',
- coverImageUpload: '上传',
- coverImageReplace: '替换',
- coverImageRemove: '移除',
- color: '颜色',
- targetPlates: '目标板数',
- targetPlatesPlaceholder: '例如:25',
- targetPlatesHelp: '打印任务数量',
- targetParts: '目标零件数',
- targetPartsPlaceholder: '例如:150',
- targetPartsHelp: '所需零件总数',
- tagsLabel: '标签(逗号分隔)',
- tagsPlaceholder: '例如:voron、功能件、礼物',
- dueDate: '截止日期',
- priority: '优先级',
- priorityLow: '低',
- priorityNormal: '普通',
- priorityHigh: '高',
- priorityUrgent: '紧急',
- // Status
- statusActive: '进行中',
- statusCompleted: '已完成',
- statusArchived: '已归档',
- done: '完成',
- completed: '已完成',
- failed: '失败',
- inQueue: '队列中',
- noPrintsYet: '暂无打印',
- // Footer stats
- printJobs: '打印任务(板)',
- partsPrinted: '已打印零件',
- failedParts: '失败零件',
- // Actions
- import: '导入',
- export: '导出',
- importProject: '导入项目',
- exportAll: '导出所有项目',
- loading: '加载项目中...',
- // Permissions
- noEditPermission: '您没有编辑项目的权限',
- noDeletePermission: '您没有删除项目的权限',
- noCreatePermission: '您没有创建项目的权限',
- noImportPermission: '您没有导入项目的权限',
- noExportPermission: '您没有导出项目的权限',
- // Toast
- toast: {
- created: '项目已创建',
- updated: '项目已更新',
- deleted: '项目已删除',
- imported: '项目已导入',
- multipleImported: '已导入 {{count}} 个项目',
- importFailed: '导入失败',
- exported: '项目已导出(仅元数据)',
- },
- },
- // Project detail page
- projectDetail: {
- notFound: '未找到项目',
- backToProjects: '返回项目',
- export: '导出',
- exportProject: '导出项目',
- noExportPermission: '您没有导出项目的权限',
- noEditPermission: '您没有编辑项目的权限',
- partOf: '属于:',
- priorityLabel: '优先级:',
- noPrints: '此项目暂无打印',
- status: {
- active: '进行中',
- completed: '已完成',
- archived: '已归档',
- },
- priority: {
- low: '低',
- normal: '普通',
- high: '高',
- urgent: '紧急',
- },
- dueDate: {
- overdue: '已逾期',
- today: '今天到期',
- daysLeft: '还有 {{count}} 天',
- },
- progress: {
- platesProgress: '板进度',
- partsProgress: '零件进度',
- printJobs: '打印任务',
- parts: '零件',
- percentComplete: '{{percent}}% 完成',
- remaining: '剩余 {{count}} 个',
- },
- stats: {
- printJobs: '打印任务',
- total: '总计',
- failed: '{{count}} 个失败',
- partsPrinted: '已打印 {{count}} 个零件',
- printTime: '打印时间',
- filamentUsed: '耗材用量',
- },
- cost: {
- title: '成本追踪',
- filamentCost: '耗材成本',
- energy: '能源',
- totalCost: '总成本',
- total: '总计',
- includesBom: '含物料清单',
- budget: '预算',
- remaining: '剩余',
- },
- subProjects: {
- title: '子项目 ({{count}})',
- },
- notes: {
- title: '备注',
- noEditPermission: '您没有编辑备注的权限',
- placeholder: '添加关于此项目的备注...',
- empty: '暂无备注。点击编辑添加备注。',
- },
- files: {
- title: '文件',
- linkFolders: '从文件管理器链接文件夹',
- forQuickAccess: '到此项目以便快速访问。',
- fileCount: '{{count}} 个文件',
- empty: '未链接文件夹。前往文件管理器将文件夹链接到此项目。',
- noFiles: '此文件夹中没有文件。',
- print: '立即打印',
- addToQueue: '加入队列',
- },
- bom: {
- title: '材料清单',
- acquired: '已获取 {{completed}}/{{total}}',
- showAll: '显示全部',
- hideDone: '隐藏已完成',
- addPart: '添加零件',
- noAddPermission: '您没有添加零件的权限',
- partNamePlaceholder: '零件名称(例如:M3x8 螺丝)',
- partName: '零件名称',
- qty: '数量',
- price: '价格 ({{currency}})',
- sourcingUrlPlaceholder: '采购链接(可选)',
- remarksPlaceholder: '备注(可选)',
- deletePart: '删除零件',
- deleteConfirm: '确定要删除"{{name}}"吗?',
- noUpdatePermission: '您没有更新零件的权限',
- noEditPermission: '您没有编辑零件的权限',
- noDeletePermission: '您没有删除零件的权限',
- totalCost: '总成本:',
- empty: '材料清单中没有零件。添加硬件、电子元件或其他组件以跟踪需要采购的物品。',
- },
- timeline: {
- title: '活动时间线',
- empty: '暂无活动。',
- },
- template: {
- saveAsTemplate: '保存为模板',
- noCreatePermission: '您没有创建模板的权限',
- },
- queue: {
- title: '队列',
- viewAll: '查看全部',
- printing: '{{count}} 个打印中',
- queued: '{{count}} 个排队中',
- },
- prints: {
- title: '打印 ({{count}})',
- },
- toast: {
- projectUpdated: '项目已更新',
- partAdded: '零件已添加',
- partRemoved: '零件已移除',
- exportFailed: '导出失败',
- projectExported: '项目已导出',
- templateCreated: '模板已创建',
- },
- },
- // System info
- system: {
- title: '系统信息',
- version: '版本',
- uptime: '运行时间',
- cpuUsage: 'CPU 使用率',
- memoryUsage: '内存使用率',
- diskUsage: '磁盘使用率',
- networkInfo: '网络信息',
- logs: '日志',
- debugMode: '调试模式',
- enableDebug: '启用调试日志',
- disableDebug: '禁用调试日志',
- downloadLogs: '下载日志',
- clearLogs: '清除日志',
- dockerInfo: 'Docker 信息',
- containerName: '容器名称',
- imageName: '镜像名称',
- platform: '平台',
- architecture: '架构',
- },
- // Library (K Profiles)
- library: {
- title: '耗材库',
- addFilament: '添加耗材',
- editFilament: '编辑耗材',
- deleteFilament: '删除耗材',
- vendor: '厂商',
- material: '材料',
- color: '颜色',
- kFactor: 'K 值',
- temperature: '温度',
- noFilaments: '耗材库中没有耗材',
- deleteConfirm: '确定要删除此耗材吗?',
- importFromPrinter: '从打印机导入',
- exportToFile: '导出到文件',
- },
- // Slice (slicer-API integration via SliceModal)
- slice: {
- title: 'Slice model',
- action: 'Slice',
- slicing: 'Slicing…',
- printer: 'Printer profile',
- process: 'Process profile',
- filament: 'Filament profile',
- filamentSlot: 'Filament {{index}} ({{type}})',
- selectPreset: '— Select a preset —',
- loadingPresets: 'Loading presets…',
- analyzingPlateFilaments: 'Analyzing plate filaments…',
- analyzingPlateFilamentsHint: 'Running a preview slice to discover which AMS slots this plate uses. Cached after — re-opening is instant.',
- previewToast: 'Analyzing {{name}} — {{elapsed}}',
- previewWithProgress: 'Analyzing {{name}} — {{stage}} ({{percent}}%) — {{elapsed}}',
- notUsedByPlate: '— not used by this plate',
- printerMismatch: 'This 3MF was sliced for {{source}}, but you picked {{target}}. The slicer CLI cannot re-slice a 3MF for a different printer — open the source in Bambu Studio, change the printer, and re-export.',
- noPresetsForSlot: 'No presets available',
- presetsLoadFailed: 'Failed to load presets. Open Settings → Profiles to import them first.',
- allPresetsRequired: 'All presets must be selected',
- enqueuing: 'Submitting slice job…',
- queued: 'Queued…',
- failed: 'Slicing failed. Check the slicer sidecar logs.',
- startedToast: 'Slicing {{name}} in the background…',
- queuedToast: 'Queued: {{name}} — {{elapsed}}',
- runningToast: 'Slicing {{name}} — {{elapsed}}',
- runningWithProgress: '{{name}} — {{stage}} ({{percent}}%) — {{elapsed}}',
- completedToast: 'Sliced {{name}}',
- failedToast: 'Slicing {{name}} failed: {{detail}}',
- tier: {
- local: 'Imported',
- cloud: 'Cloud',
- standard: 'Standard',
- },
- cloud: {
- notAuthenticated: 'Sign in to Bambu Cloud (Settings → Profiles → Cloud) to see your cloud presets.',
- expired: 'Bambu Cloud session expired — sign in again to refresh your cloud presets.',
- unreachable: 'Bambu Cloud is unreachable right now. Local and standard presets still work.',
- },
- },
- // Spoolman
- spoolman: {
- title: 'Spoolman 集成',
- enabled: 'Spoolman 已启用',
- url: 'Spoolman URL',
- connected: '已连接',
- disconnected: '未连接',
- testConnection: '测试连接',
- sync: '同步',
- syncing: '同步中...',
- lastSync: '上次同步',
- linkToSpoolman: '链接到 Spoolman',
- openInSpoolman: '在 Spoolman 中打开',
- unlinkSpool: '取消链接耗材',
- unlinkConfirmTitle: '解开线轴?',
- unlinkConfirmMessage: '这将断开卷轴与 Spoolman 的连接。Spoolman 中的卷轴数据将保持不变。',
- selectSpool: '选择耗材',
- noUnlinkedSpools: '无未链接的耗材',
- linkSuccess: '耗材已成功链接到 Spoolman',
- linkFailed: '链接耗材失败',
- unlinkSuccess: '已成功从 Spoolman 取消链接耗材',
- unlinkFailed: '取消链接耗材失败',
- spoolId: '耗材 ID',
- fillSourceLabel: '(Spoolman)',
- weight: '重量',
- remaining: '剩余',
- disableWeightSync: '禁用 AMS 估计重量同步',
- disableWeightSyncDesc: '不从 AMS 估计值更新剩余容量。如果您更喜欢 Spoolman 的用量追踪而非 AMS 百分比估计,请使用此选项。新耗材仍将使用 AMS 估计值作为初始重量。',
- reportPartialUsage: '报告失败打印的部分用量',
- reportPartialUsageDesc: '当打印失败或被取消时,根据层进度报告估计的耗材使用量。',
- },
- // Inventory
- inventory: {
- title: '耗材库存',
- spoolmanMixedContentTitle: 'Spoolman 无法通过 HTTPS 加载 — 浏览器已阻止混合内容',
- spoolmanMixedContentBody: 'Bambuddy 通过您的反向代理以 HTTPS 提供服务,但您的 Spoolman 地址仍为 HTTP。出于安全考虑,浏览器会阻止混合内容,因此嵌入式 Spoolman 界面无法加载。Spoolman 也必须通过 HTTPS 访问。',
- spoolmanMixedContentFixReverseProxy: '请将 Spoolman 置于与 Bambuddy 相同的反向代理(Traefik / Nginx / Caddy)之后并启用 HTTPS,然后在设置中将 Spoolman URL 更新为新的 HTTPS 地址。',
- spoolmanMixedContentFixOpenNewTab: '作为变通方案,可在新标签页中通过 HTTP 打开 Spoolman — 混合内容规则仅适用于嵌入式框架,独立标签页仍可正常使用。',
- spoolmanOpenInNewTab: '在新标签页中打开 Spoolman',
- addSpool: '添加耗材',
- editSpool: '编辑耗材',
- material: '材料',
- selectMaterial: '选择材料...',
- subtype: '子类型',
- brand: '品牌',
- searchBrand: '搜索品牌...',
- useCustomBrand: '使用"{{brand}}"',
- useCustomMaterial: '使用自定义材料:{{material}}',
- colorName: '颜色名称',
- colorNamePlaceholder: '翡翠白、烈焰红...',
- color: '颜色',
- hexColor: '十六进制颜色',
- pickColor: '选择自定义颜色',
- labelWeight: '标签重量',
- coreWeight: '空盘重量',
- searchSpoolWeight: '搜索耗材重量...',
- weightUsed: '已使用',
- currentWeight: '剩余重量',
- measuredWeight: '称量重量',
- spoolName: '线轴',
- costPerKg: '每公斤成本',
- measuredWeightError: '称量重量必须在 {{min}}g 到 {{max}}g 之间。',
- slicerFilament: '切片耗材',
- slicerFilamentName: '切片预设名称',
- slicerPreset: '切片预设',
- searchPresets: '搜索耗材预设...',
- selectedPreset: '已选择',
- noPresetsFound: '未找到预设',
- tempOverrides: '温度覆盖',
- note: '备注',
- notePlaceholder: '关于此耗材的任何备注...',
- // Per-spool category + low-stock threshold override (#729)
- category: '类别',
- categoryPlaceholder: '例如:生产、原型、客户A',
- categoryNone: '未分类',
- lowStockThresholdOverride: '低库存阈值(此料盘)',
- lowStockThresholdOverrideHelp: '留空以使用全局阈值({{global}}%)。',
- clearRfid: '清除 RFID 标签',
- rfidCleared: 'RFID 标签已清除',
- archive: '归档',
- restore: '恢复',
- noSpools: '暂无耗材。添加您的第一个耗材开始使用。',
- noAvailableSpools: '没有可用的耗材。请先向库存中添加耗材,或从其他槽位取消分配一个耗材。',
- kProfiles: 'K 值配置',
- addKProfile: '添加 K 值配置',
- assignSpool: '分配耗材',
- unassignSpool: '取消分配',
- assignSuccess: '耗材已分配,AMS 槽位已配置',
- assignFailed: '分配耗材失败',
- assignMismatchTitle: '材料不匹配',
- assignMismatchMessage: '所选线轴材料 "{{spoolMaterial}}" 与 {{location}} 的料槽材料 "{{trayMaterial}}" 不匹配。仍要分配吗?',
- assignMismatchConfirm: '仍然分配',
- assignPartialMismatchMessage: '线轴材料 "{{spoolMaterial}}" 与 {{location}} 的 "{{trayMaterial}}" 相近但不完全一致。是否继续?',
- assignProfileMismatchMessage: '线轴配置 "{{spoolProfile}}" 与 {{location}} 的料槽配置 "{{trayProfile}}" 不一致。是否继续?',
- selectSpool: '选择要分配到此槽位的耗材',
- assigned: '已分配',
- assigning: '分配中...',
- searchSpools: '搜索耗材...',
- showAllSpools: '显示所有耗材',
- allMaterials: '所有材料',
- filterByBrand: '按品牌筛选...',
- showArchived: '显示已归档',
- quickAdd: '快速添加(库存)',
- quantity: '数量',
- stock: '库存',
- configured: '已配置',
- spoolsCreated: '已创建 {{count}} 个耗材',
- spoolCreated: '耗材已创建',
- spoolUpdated: '耗材已更新',
- spoolDeleted: '耗材已删除',
- spoolArchived: '耗材已归档',
- spoolRestored: '耗材已恢复',
- deleteConfirm: '确定要删除此耗材吗?此操作无法撤销。',
- archiveConfirm: '确定要归档此耗材吗?',
- advancedSettings: '高级设置',
- // Tabs
- filamentInfoTab: '耗材信息',
- paProfileTab: 'PA 配置',
- filamentInfo: '耗材',
- additional: '附加',
- // Cloud
- loadingPresets: '加载云端预设中...',
- cloudConnected: '云端已连接',
- cloudNotConnected: '云端未连接(使用默认值)',
- // Colors
- recentColors: '最近',
- searchColors: '搜索颜色...',
- searchResults: '搜索结果',
- allColors: '所有颜色',
- commonColors: '常用颜色',
- showLess: '显示更少',
- showAll: '显示全部',
- noColorsFound: '没有颜色匹配您的搜索',
- noResults: '未找到匹配项',
- // 多色渐变 + 视觉效果 (#1154)
- extraColorsLabel: '附加颜色',
- extraColorsPlaceholder: 'EC984C,#6CD4BC,A66EB9,D87694',
- extraColorsHint: '粘贴 2 到 8 个十六进制色值,以逗号分隔。将渲染为渐变。',
- extraColorsInvalid: '已忽略无效的十六进制值:{{tokens}}',
- colorEffectLabel: '效果',
- colorEffect: {
- none: '无',
- sparkle: '闪光',
- wood: '木纹',
- marble: '大理石',
- glow: '夜光',
- matte: '哑光',
- silk: '丝光',
- galaxy: '星空',
- rainbow: '彩虹',
- metal: '金属',
- translucent: '半透明',
- gradient: '渐变',
- dualColor: '双色',
- triColor: '三色',
- multicolor: '多色',
- },
- // PA Profiles
- selectMaterialFirst: '请先在耗材信息选项卡中选择材料。',
- noPrintersConfigured: '未配置打印机。添加打印机以使用 PA 配置。',
- matchingFilter: '匹配',
- anyBrand: '任何品牌',
- anyVariant: '任何变体',
- autoSelect: '自动选择',
- matches: '匹配',
- match: '匹配',
- noMatches: '无匹配',
- connected: '已连接',
- offline: '离线',
- printerOffline: '打印机离线。连接后查看校准配置。',
- noKProfilesMatch: '没有 K 值配置匹配所选耗材。',
- leftNozzle: '左喷嘴',
- rightNozzle: '右喷嘴',
- profilesSelected: '个校准配置已选择',
- // Stats & enhanced table
- totalInventory: '总库存',
- totalConsumed: '总消耗',
- byMaterial: '按材料',
- inPrinter: '在打印机中',
- lowStock: '库存不足',
- sinceTracking: '自开始追踪',
- loadedInAms: '已装载到 AMS/外置',
- remaining: '剩余',
- weightCheck: '重量检查',
- lastWeighed: '上次称量',
- neverWeighed: '从未称量',
- search: '搜索耗材...',
- showing: '显示',
- to: '到',
- of: '共',
- show: '显示',
- spools: '个耗材',
- spool: '个耗材',
- page: '页',
- noSpoolsMatch: '未找到结果',
- noSpoolsMatchDesc: '尝试调整您的搜索或筛选条件。',
- active: '活跃',
- archived: '已归档',
- all: '全部',
- used: '已使用',
- new: '新的',
- clearFilters: '清除筛选',
- table: '表格',
- cards: '卡片',
- net: '净重',
- // Grouping
- groupSimilar: '分组',
- groupedSpools: '{{count}} 个相同耗材',
- groupedRows: '行',
- // Column config
- columns: '列',
- configureColumns: '配置列',
- configureColumnsDesc: '拖动以重新排序列或使用箭头。使用眼睛图标切换可见性。',
- visible: '可见',
- reset: '重置',
- cancel: '取消',
- applyChanges: '应用更改',
- moveUp: '上移',
- moveDown: '下移',
- hideColumn: '隐藏列',
- showColumn: '显示列',
- // Tag linking
- linkToSpool: '链接到耗材',
- tagLinked: '标签已链接到耗材',
- tagLinkFailed: '链接标签失败',
- tagAlreadyLinked: '标签已链接到其他耗材',
- unknownTag: '检测到未知 RFID 标签',
- // Usage history
- usageHistory: '使用历史',
- noUsageHistory: '暂无使用记录',
- printName: '打印名称',
- weightConsumed: '消耗重量',
- clearHistory: '清除',
- historyCleared: '使用历史已清除',
- fillSourceLabel: '(库存)',
- lowStockThresholdError: '阈值必须在 0.1 到 99.9 之间',
- },
- // Timelapse
- timelapse: {
- title: '延时摄影',
- create: '创建延时摄影',
- download: '下载',
- delete: '删除',
- preview: '预览',
- frameRate: '帧率',
- quality: '质量',
- processing: '处理中...',
- noTimelapses: '无可用延时摄影',
- },
- // AMS
- ams: {
- title: 'AMS',
- slot: '槽位',
- empty: '空',
- emptySlot: '空槽位',
- unknown: '未知',
- humidity: '湿度',
- temperature: '温度',
- filamentType: '耗材类型',
- filamentColor: '颜色',
- remaining: '剩余',
- history: 'AMS 历史',
- noHistory: '无可用历史',
- configureSlot: '配置槽位',
- externalSpool: '外置耗材',
- profile: '配置',
- kFactor: 'K 值',
- fill: '填充',
- configure: '配置',
- used: '已使用',
- remainingUnit: '剩余',
- },
- // Print modal
- printModal: {
- title: '开始打印',
- selectPrinter: '选择打印机',
- selectPlate: '选择板',
- filamentMapping: '耗材映射',
- totalCost: '总成本:',
- slotRemainingShort: ' - 剩余 {{grams}}g',
- printSettings: '打印设置',
- bedLeveling: '热床调平',
- flowCalibration: '流量校准',
- vibrationCalibration: '振动校准',
- layerInspection: '首层检查',
- timelapse: '延时摄影',
- startPrint: '开始打印',
- addToQueue: '添加到队列',
- cancel: '取消',
- noPrintersAvailable: '无可用打印机',
- printerBusy: '打印机忙碌',
- printerOffline: '打印机离线',
- sameTypeDifferentColor: '相同类型,不同颜色',
- filamentTypeNotLoaded: '耗材类型未装载',
- openCalendar: '打开日历',
- leftNozzle: '左',
- rightNozzle: '右',
- leftNozzleTooltip: '左喷嘴',
- rightNozzleTooltip: '右喷嘴',
- filamentOverride: '耗材覆盖',
- filamentOverrideHint: '可选覆盖用于基于模型的耗材分配。调度器将使用您选择的耗材而不是原始 3MF 值进行匹配。',
- originalFilament: '原始',
- overrideWith: '覆盖为',
- resetToOriginal: '恢复为原始',
- insufficientFilamentTitle: '耗材不足',
- insufficientFilamentMessage: '部分已分配线轴的剩余耗材少于本次打印所需:',
- insufficientFilamentLine: '{{printer}} - {{slot}}:需要 {{required}}g,剩余 {{remaining}}g',
- printAnyway: '仍然打印',
- forceColorMatch: '强制颜色匹配',
- staggerPrinterStarts: 'Stagger printer starts',
- staggerGroupSize: 'Group size',
- staggerInterval: 'Interval (min)',
- staggerPreview: '{{printers}} printers → {{groups}} groups of {{size}}, starting every {{interval}} min',
- staggerLastGroup: 'last group: {{count}}',
- staggerTotal: 'total: {{minutes}} min',
- staggerToPrinters: '分批发送到 {{count}} 台打印机',
- gcodeInjection: '注入自动打印G-code',
- },
- // Backup
- backup: {
- title: '备份与恢复',
- createBackup: '创建备份',
- restoreBackup: '恢复备份',
- restoreDescription: '从备份文件替换所有数据',
- downloadBackup: '下载备份',
- uploadBackup: '上传备份',
- lastBackup: '上次备份',
- autoBackup: '自动备份',
- backupNow: '立即备份',
- restoreWarning: '警告:恢复备份将覆盖所有当前数据。',
- includeArchives: '包含归档',
- includeSettings: '包含设置',
- includeProfiles: '包含配置文件',
- backupSuccess: '备份创建成功',
- restoreSuccess: '备份恢复成功',
- backupFailed: '备份失败',
- restoreFailed: '恢复失败',
- restoreNote: '恢复期间虚拟打印机将停止',
- // GitHub Backup
- githubBackup: 'GitHub 备份',
- enabled: '已启用',
- cloudLoginRequired: '需要登录 Bambu Cloud。请在 配置文件 → 云配置文件 中登录以启用 GitHub 备份。',
- cloudLoginRequiredShort: '需要Cloud登录',
- githubDescription: '自动将您的配置文件同步到私有 GitHub 仓库以进行备份和版本历史记录。',
- repositoryUrl: '仓库 URL',
- repoUrlPlaceholderGitHub: 'https://github.com/username/repo-name',
- repoUrlPlaceholderGitea: 'https://gitea.example.com/username/repo-name',
- repoUrlPlaceholderForgejo: 'https://forgejo.example.com/username/repo-name',
- repoUrlPlaceholderGitLab: 'https://gitlab.com/username/repo-name',
- allowInsecureHttp: '允许不安全的 HTTP',
- allowInsecureHttpHint: '为无 TLS 的私有网络自托管实例启用',
- personalAccessToken: '个人访问令牌',
- tokenSaved: '(已保存)',
- enterNewToken: '输入新令牌以更新',
- tokenHint: '具有内容读写权限的细粒度令牌',
- branch: '分支',
- provider: 'Git Provider',
- providerGitHub: 'GitHub',
- providerGitLab: 'GitLab',
- providerGitea: 'Gitea',
- providerForgejo: 'Forgejo',
- manualOnly: '仅手动',
- hourly: '每小时',
- daily: '每天',
- weekly: '每周',
- includeInBackup: '包含在备份中',
- kProfiles: 'K 配置文件',
- kProfilesDescription: '来自已连接打印机的压力推进校准',
- noPrintersConnected: '没有打印机连接',
- printersConnected: '{{connected}}/{{total}} 已连接',
- cloudProfiles: '云配置文件',
- cloudProfilesDescription: '来自 Bambu Cloud 的耗材、打印机和工艺预设',
- appSettings: '应用设置',
- appSettingsDescription: 'Bambuddy 配置(完整数据库)',
- spoolInventory: '耗材库存',
- spoolInventoryDescription: '耗材卷轴、使用记录和成本追踪',
- printArchives: '打印档案',
- printArchivesDescription: '打印历史元数据(不含 gcode/3MF 文件)',
- lastBackupAt: '上次备份:',
- noBackupsYet: '尚无备份',
- next: '下次:',
- startingBackup: '正在启动备份...',
- test: '测试',
- enableBackup: '启用备份',
- testConnection: '测试连接',
- enterRepoUrl: '请输入仓库 URL',
- enterRepoAndToken: '请输入仓库 URL 和访问令牌',
- repoRequired: '仓库 URL 为必填项',
- tokenRequired: '访问令牌为必填项',
- githubBackupEnabled: 'GitHub 备份已启用',
- tokenUpdated: '令牌已更新',
- settingsSaved: '设置已保存',
- failedToSave: '保存失败:{{message}}',
- backupCompleteFiles: '备份完成 - {{count}} 个文件已更新',
- backupSkippedNoChanges: '备份已跳过 - 无更改',
- backupFailed2: '备份失败:{{message}}',
- clearedLogs: '已清除 {{count}} 条日志',
- failedToClearLogs: '清除日志失败:{{message}}',
- // History
- history: '历史记录',
- clear: '清除',
- date: '日期',
- status: '状态',
- commit: '提交',
- // Local Backup
- localBackup: '本地备份',
- localBackupDescription: '创建 Bambuddy 数据的完整备份,包括数据库、档案、上传和所有文件。',
- downloadBackupLabel: '下载备份',
- completeBackupZip: '完整备份:数据库 + 所有文件(ZIP)',
- download: '下载',
- preparingBackup: '正在准备备份...',
- creatingArchive: '正在创建备份归档...对于大型归档可能需要一些时间。',
- downloadingFile: '正在下载备份文件...',
- backupDownloaded: '备份下载成功',
- failedToCreateBackup: '创建备份失败:{{message}}',
- restore: '恢复',
- restoreReplacesAll: '恢复将替换所有数据。',
- restoreReplacesAllDetail: '您当前的数据库和文件将被完全替换。恢复后需要重启。',
- restoreConfirmTitle: '恢复备份',
- restoreConfirmMessage: '您确定要从"{{filename}}"恢复吗?这将完全替换您当前的数据库和所有文件。恢复后需要重启应用程序。',
- restoreConfirmButton: '恢复备份',
- uploadingFile: '正在上传备份文件...',
- backupRestoredRestart: '备份已恢复。请重启 Bambuddy。',
- failedToRestore: '恢复备份失败。请检查文件格式。',
- reloadNow: '立即重新加载',
- creatingBackup: '正在创建备份',
- restoringBackup: '正在恢复备份',
- preparing: '准备中...',
- processing: '处理中...',
- doNotClosePage: '请不要关闭此页面或导航离开。对于大型备份,此操作可能需要几分钟。',
- // RestoreModal
- restoring: '恢复中...',
- restoreComplete: '恢复完成',
- restoreFailed2: '恢复失败',
- importSettings: '从备份文件导入设置',
- pleaseWaitRestoring: '请等待数据恢复中',
- selectBackupFile: '点击选择备份文件(.json 或 .zip)',
- duplicateHandling: '重复项处理方式:',
- matchPrinters: '打印机',
- matchPrintersBy: '按序列号匹配',
- matchSmartPlugs: '智能插座',
- matchSmartPlugsBy: '按 IP 地址匹配',
- matchNotificationProviders: '通知提供者',
- matchNotificationProvidersBy: '按名称匹配',
- matchFilaments: '耗材',
- matchFilamentsBy: '按名称 + 类型 + 品牌匹配',
- matchArchives: '档案',
- matchArchivesBy: '按内容哈希匹配(始终跳过)',
- matchPendingUploads: '待上传',
- matchPendingUploadsBy: '按文件名匹配',
- matchSettingsTemplates: '设置和模板',
- matchSettingsTemplatesBy: '始终覆盖',
- replaceExisting: '替换现有数据',
- keepExisting: '保留现有数据',
- overwriteDescription: '用备份数据覆盖已存在的项目',
- keepDescription: '仅恢复尚不存在的项目',
- overwriteCaution: '注意:',
- overwriteWarning: '覆盖将用备份数据替换您当前的配置。出于安全考虑,打印机访问代码永远不会被覆盖。',
- cancel: '取消',
- processingBackup: '正在处理备份文件...',
- itemsRestored: '已恢复项目',
- itemsSkipped: '已跳过项目',
- restored: '已恢复',
- skippedAlreadyExist: '已跳过(已存在)',
- filesCategory: '文件(3MF、缩略图等)',
- andMore: '...还有 {{count}} 项',
- newApiKeysGenerated: '已生成新的 API 密钥',
- keysShownOnce: '这些密钥仅显示一次。请立即复制!',
- copy: '复制',
- noDataFound: '在备份文件中未找到可恢复的数据。',
- close: '关闭',
- // Scheduled local backups (#884)
- scheduledBackup: 'Scheduled Backups',
- scheduledBackupDescription: 'Automatically create backup snapshots on a schedule. Output directory can be mounted to a NAS or external storage.',
- frequency: 'Frequency',
- backupTime: 'Time',
- retention: 'Retention',
- retentionDescription: 'Number of backups to keep',
- outputPath: 'Output Path',
- outputPathPlaceholder: 'Default: {{path}}',
- outputPathDescription: 'Leave empty for default location',
- runNow: 'Run Now',
- backupFiles: 'Backup Files',
- noScheduledBackups: 'No backups yet',
- deleteBackup: 'Delete',
- deleteBackupConfirm: 'Delete this backup file?',
- backupRunning: 'Backup in progress...',
- scheduledBackupComplete: 'Backup completed successfully',
- scheduledBackupFailed: 'Backup failed',
- nextBackup: 'Next backup',
- backupSize: 'Size',
- utc: 'UTC',
- defaultPathLabel: 'Default:',
- // Category labels
- categories: {
- settings: '设置',
- notification_providers: '通知提供者',
- notification_templates: '通知模板',
- smart_plugs: '智能插座',
- printers: '打印机',
- filaments: '耗材',
- maintenance_types: '维护类型',
- archives: '档案',
- projects: '项目',
- pending_uploads: '待上传',
- external_links: '外部链接',
- api_keys: 'API 密钥',
- },
- },
- // Tags
- tags: {
- title: '标签',
- addTag: '添加标签',
- editTag: '编辑标签',
- deleteTag: '删除标签',
- tagName: '标签名称',
- tagColor: '标签颜色',
- noTags: '无标签',
- deleteConfirm: '确定要删除此标签吗?',
- manageTags: '管理标签',
- },
- // Upload modal (archives)
- uploadModal: {
- title: '上传 3MF 文件',
- dragDrop: '将 .3mf 文件拖放到此处',
- or: '或',
- browseFiles: '浏览文件',
- extractionInfo: '将从 3MF 文件元数据中自动提取打印机型号。',
- uploaded: '已上传',
- failed: '失败',
- uploading: '上传中...',
- upload: '上传',
- uploadFailed: '上传失败',
- },
- // Edit archive modal
- // Edit Archive Modal
- editArchive: {
- title: '编辑归档',
- name: '名称',
- namePlaceholder: '打印名称',
- printer: '打印机',
- noPrinter: '无打印机',
- project: '项目',
- noProject: '无项目',
- itemsPrinted: '打印数量',
- itemsPrintedHelp: '此打印任务中生产的物品数量',
- notes: '备注',
- notesPlaceholder: '添加关于此打印的备注...',
- externalLink: '外部链接',
- externalLinkPlaceholder: 'https://printables.com/model/...',
- externalLinkHelp: '链接到 Printables、Thingiverse 或其他来源',
- tags: '标签',
- tagsPlaceholder: '添加标签...',
- addMoreTags: '添加更多标签...',
- matchingTags: '匹配"{{query}}"',
- existingTags: '现有标签',
- clickToAdd: '(点击添加)',
- status: '状态',
- failureReason: '失败原因',
- selectReason: '选择原因...',
- photos: '打印成品照片',
- photosHelp: '点击 + 添加打印成品照片',
- printResult: '打印成品',
- saving: '保存中...',
- // Failure reasons
- failureReasons: {
- adhesionFailure: '附着力失败',
- spaghettiDetached: '拉丝 / 脱落',
- layerShift: '层偏移',
- cloggedNozzle: '喷嘴堵塞',
- filamentRunout: '耗材用完',
- warping: '翘曲',
- stringing: '拉丝',
- underExtrusion: '挤出不足',
- powerFailure: '断电',
- userCancelled: '用户取消',
- other: '其他',
- },
- // Archive statuses
- statuses: {
- completed: '已完成',
- failed: '失败',
- aborted: '已取消',
- printing: '打印中',
- },
- },
- // K-Profiles
- kProfiles: {
- title: 'K 值配置',
- noPrintersConfigured: '未配置打印机',
- addPrinterInSettings: '在设置中添加打印机以管理 K 值配置',
- noActivePrinters: '无活跃打印机',
- enablePrinterConnection: '启用打印机连接以查看其 K 值配置',
- loadingProfiles: '加载 K 值配置中...',
- printerOffline: '打印机离线',
- printerOfflineDesc: '所选打印机未连接。开启电源以查看 K 值配置。',
- noMatchingProfiles: '无匹配的配置',
- noMatchingProfilesDesc: '没有配置匹配您的搜索条件',
- noKProfiles: '无 K 值配置',
- noKProfilesDesc: '未找到 {{diameter}}mm 喷嘴的压力推进配置',
- createFirstProfile: '创建第一个配置',
- // Controls
- printer: '打印机',
- nozzle: '喷嘴',
- refresh: '刷新',
- addProfile: '添加配置',
- export: '导出',
- import: '导入',
- select: '选择',
- selectAll: '全选',
- delete: '删除',
- // Filters
- searchPlaceholder: '按名称或耗材搜索...',
- allExtruders: '所有挤出机',
- leftOnly: '仅左侧',
- rightOnly: '仅右侧',
- allFlow: '所有流量',
- hfOnly: '仅高流量',
- sOnly: '仅标准',
- sortName: '排序:名称',
- sortKValue: '排序:K 值',
- sortFilament: '排序:耗材',
- // Dual extruder labels
- leftExtruder: '左挤出机',
- rightExtruder: '右挤出机',
- // Modal
- modal: {
- addTitle: '添加 K 值配置',
- editTitle: '编辑 K 值配置',
- profileName: '配置名称',
- profileNamePlaceholder: '我的 PLA 配置',
- kValue: 'K 值',
- kValuePlaceholder: '0.020',
- kValueHelp: '典型范围:PLA 0.01 - 0.06,PETG 0.02 - 0.10',
- filament: '耗材',
- selectFilament: '选择耗材...',
- noFilamentsHelp: '未找到耗材。请先在 Bambu Studio 中创建 K 值配置。',
- flowType: '流量类型',
- highFlow: '高流量',
- standard: '标准',
- nozzleSize: '喷嘴尺寸',
- extruder: '挤出机',
- extruders: '挤出机',
- left: '左',
- right: '右',
- notes: '备注(本地存储)',
- notesPlaceholder: '添加关于此配置的备注...',
- notesHelp: '备注保存在 Bambuddy 中,不在打印机上',
- syncing: '与打印机同步中...',
- savingExtruder: '保存到挤出机 {{current}}/{{total}}...',
- pleaseWait: '请稍候',
- },
- // Delete confirmation
- deleteConfirm: {
- title: '删除配置',
- cannotUndo: '此操作无法撤销',
- message: '确定要从打印机删除"{{name}}"吗?',
- },
- // Bulk delete
- bulkDelete: {
- title: '删除配置',
- cannotUndo: '此操作无法撤销',
- message: '确定要从打印机删除 {{count}} 个选中的配置吗?',
- },
- // Toast
- toast: {
- profileSaved: 'K 值配置已保存',
- profilesSaved: 'K 值配置已保存到 {{count}} 个挤出机',
- selectAtLeastOneExtruder: '请至少选择一个挤出机',
- profileDeleted: 'K 值配置已删除',
- profilesDeleted: '已删除 {{count}} 个配置',
- exportedProfiles: '已导出 {{count}} 个配置',
- importedProfiles: '已导入 {{count}} / {{total}} 个配置',
- noProfilesToExport: '无可导出的配置',
- invalidFileFormat: '无效的文件格式',
- failedToParseImport: '解析导入文件失败',
- failedToSaveBatch: '批量保存 K 值配置失败',
- noteSaved: '备注已保存',
- failedToSaveNote: '保存备注失败',
- },
- // Permissions
- permission: {
- noRead: '您没有刷新配置的权限',
- noCreate: '您没有添加配置的权限',
- noUpdate: '您没有更新 K 值配置的权限',
- noDelete: '您没有删除 K 值配置的权限',
- noExport: '您没有导出配置的权限',
- noImport: '您没有导入配置的权限',
- },
- },
- // Virtual Printer
- virtualPrinter: {
- title: '虚拟打印机',
- running: '运行中',
- stopped: '已停止',
- description: {
- default: '启用虚拟打印机,使其在 Bambu Studio 和 OrcaSlicer 中可见。发送到此打印机的文件将直接归档而不打印。',
- proxy: '启用代理,将切片软件流量中继到真实打印机,允许在任何网络上远程打印。',
- },
- enable: {
- title: '启用虚拟打印机',
- visibleInSlicer: '在切片软件发现中显示为"Bambuddy"',
- proxyingTo: '代理到 {{name}}',
- notActive: '未激活',
- },
- model: {
- title: '打印机型号',
- description: '选择要模拟的打印机型号。',
- restartWarning: '更改型号将重启虚拟打印机',
- },
- accessCode: {
- title: '访问码',
- isSet: '访问码已设置',
- notSet: '未设置访问码 - 需要设置才能启用',
- placeholder: '输入 8 位字符代码',
- placeholderChange: '输入新代码以更改',
- hint: '必须恰好 8 个字符。切片软件使用此代码进行认证。',
- charCount: '({{count}}/8)',
- },
- targetPrinter: {
- title: '目标打印机',
- configured: '代理目标已配置',
- notConfigured: '未选择目标打印机 - 代理模式需要设置',
- placeholder: '选择打印机...',
- hint: '选择要将切片软件流量代理到的打印机。打印机必须处于局域网模式。',
- noPrinters: '未配置打印机。请先添加打印机以使用代理模式。',
- },
- remoteInterface: {
- title: '网络接口覆盖',
- configured: '接口覆盖已激活',
- optional: '可选 - 当自动检测的 IP 不正确时使用(例如多网卡、Docker、VPN)',
- placeholder: '自动检测(默认)...',
- hint: '覆盖通过 SSDP 广播并在 TLS 证书中使用的 IP 地址。在 Bambuddy 有多个网络接口时很有用。',
- },
- mode: {
- title: '模式',
- archive: '归档',
- archiveDesc: '立即归档文件',
- review: '审核',
- reviewDesc: '归档前审核',
- queue: '队列',
- queueDesc: '归档并添加到队列',
- proxy: '代理',
- proxyDesc: '中继到真实打印机',
- },
- autoDispatch: {
- title: '自动派发',
- description: '添加到队列时自动开始打印。关闭后,打印任务等待手动派发。',
- },
- queueForceColorMatch: {
- title: 'Force color match',
- description: 'Refuse to dispatch onto a printer that does not have the exact filament type and color loaded. Off by default — without this, the queue uses model-only matching and may pick a printer with the wrong colour loaded.',
- },
- tailscaleDisabled: {
- title: 'Tailscale 集成',
- description: 'Enable to mark this VP as exposed over Tailscale. Shows the host\'s Tailscale address so you know which IP to paste into the slicer. The CA-import step is unchanged — this toggle has no effect on certificates.',
- },
- setupRequired: {
- title: '需要设置',
- description: '虚拟打印机功能需要额外的系统配置才能工作。包括端口转发、防火墙规则和平台特定设置。',
- readGuide: '启用前请阅读设置指南',
- },
- archiveNameSource: {
- title: '存档名称来源',
- description: '选择通过虚拟打印机接收文件时新存档的命名方式。"元数据"使用 3MF 中嵌入的切片标题(默认)。"文件名"使用 Bambu Studio 通过 FTP 发送的文件名 — 当您在"发送到打印机"对话框中重命名作业时非常有用。',
- metadata: '元数据',
- filename: '文件名',
- },
- howItWorks: {
- title: '工作原理',
- step1: '在同一局域网中,虚拟打印机会通过发现机制自动出现在您的切片软件(Bambu Studio / OrcaSlicer)中。从其他网络,通过 IP 地址和访问码手动添加。',
- step2: '在归档、审核和队列模式下,使用切片软件中的"发送"按钮将 3MF 文件上传到 Bambuddy。切片软件会显示"打印成功"— 文件已存储,未打印。',
- step3: '在代理模式下,虚拟打印机将所有流量中继到真实打印机 — 打印会立即开始,就像直接连接一样。',
- },
- status: {
- title: '状态详情',
- printerName: '打印机名称',
- model: '型号',
- serialNumber: '序列号',
- mode: '模式',
- pendingFiles: '待处理文件',
- targetPrinter: '目标打印机',
- ftpPort: 'FTP 端口',
- mqttPort: 'MQTT 端口',
- ftpConnections: 'FTP 连接',
- mqttConnections: 'MQTT 连接',
- },
- toast: {
- updated: '虚拟打印机设置已更新',
- failedToUpdate: '更新设置失败',
- copyFailed: '复制失败 — 请手动选中文本',
- accessCodeRequired: '请先设置访问码',
- targetPrinterRequired: '请先选择目标打印机',
- bindIpRequired: '请先设置绑定 IP',
- accessCodeEmpty: '访问码不能为空',
- accessCodeLength: '访问码必须恰好 8 个字符',
- created: '虚拟打印机已创建',
- failedToCreate: '创建虚拟打印机失败',
- deleted: '虚拟打印机已删除',
- failedToDelete: '删除虚拟打印机失败',
- },
- list: {
- title: '虚拟打印机',
- add: '添加',
- addFirst: '添加虚拟打印机',
- empty: '未配置虚拟打印机。添加一个以开始使用。',
- },
- bindIp: {
- title: '绑定接口',
- placeholder: '选择接口...',
- hint: '此虚拟打印机绑定的网络接口。每台打印机必须唯一。',
- },
- proxy: {
- accessCodeHint: '在代理模式下,在切片软件中使用目标打印机的访问码。连接会透明转发到真实打印机。',
- },
- addDialog: {
- title: '添加虚拟打印机',
- name: '名称',
- hint: '创建后可以配置访问码、目标打印机和其他设置。',
- create: '创建',
- },
- deleteConfirm: {
- title: '删除虚拟打印机',
- message: '确定要删除"{{name}}"吗?这将停止此打印机的所有服务。',
- },
- },
- // Model Viewer
- modelViewer: {
- openInSlicer: '在切片软件中打开',
- tabs: {
- model: '3D 模型',
- gcode: 'G-code 预览',
- },
- notAvailable: '不可用',
- notSliced: '未切片',
- plates: '板',
- allPlates: '所有板',
- plateNumber: '板 {{number}}',
- plateCount: '{{count}} 个板',
- plateCount_other: '{{count}} 个板',
- objectCount: '{{count}} 个对象',
- objectCount_other: '{{count}} 个对象',
- filamentCount: '{{count}} 种耗材',
- filamentCount_other: '{{count}} 种耗材',
- eta: '预计 {{minutes}} 分钟',
- noPreview: '此文件无可用预览',
- pagination: {
- pageOf: '第 {{current}} / {{total}} 页',
- prev: '上一页',
- next: '下一页',
- },
- errors: {
- failedToLoad: '加载文件失败',
- noMeshes: '3MF 文件中未找到网格',
- unsupportedFormat: '不支持的文件格式',
- },
- },
- // Maintenance type descriptions (built-in)
- maintenanceDescriptions: {
- lubricateCarbonRods: '在碳纤维杆上涂抹润滑剂以确保顺畅运动',
- lubricateRails: '在线性导轨上涂抹润滑剂以确保顺畅运动',
- cleanNozzle: '清洁热端和喷嘴以防止堵塞',
- checkBelts: '检查皮带张力以确保打印精度',
- cleanBuildPlate: '清洁构建板以获得更好的附着力',
- checkExtruder: '检查挤出机齿轮磨损情况',
- checkCooling: '确保冷却风扇正常工作',
- generalInspection: '打印机综合检查',
- cleanCarbonRods: '清洁碳纤维杆以减少摩擦',
- lubricateSteelRods: '在钢杆上涂抹润滑剂以确保顺畅运动',
- cleanSteelRods: '清洁钢杆以减少摩擦',
- cleanLinearRails: '擦拭线性导轨以清除灰尘和碎屑',
- checkPtfeTube: '检查 PTFE 管的磨损或损坏',
- replaceHepaFilter: '更换 HEPA 过滤器以保证空气质量',
- replaceCarbonFilter: '更换活性炭过滤器',
- lubricateLeftNozzleRail: '润滑左喷嘴导轨(H2 系列)',
- },
- // Smart Plugs
- smartPlugs: {
- offline: '离线',
- admin: '管理',
- openPlugAdminPage: '打开插座管理页面',
- deleteSmartPlug: '删除智能插座',
- turnOnSmartPlug: '开启智能插座',
- turnOffSmartPlug: '关闭智能插座',
- turnOn: '开启',
- turnOff: '关闭',
- addSmartPlug: {
- scanningNetwork: '扫描网络中...',
- chooseEntity: '选择实体...',
- connectionFailed: '连接失败',
- searchEntities: '搜索实体...',
- searchPowerSensors: '搜索功率传感器...',
- searchEnergySensors: '搜索能量传感器...',
- placeholders: {
- plugName: '客厅插座',
- mqttStateOnValue: 'ON、true、1',
- mqttSameAsPower: '与功率主题相同,或不同',
- },
- },
- // SmartPlugCard
- linkedTo: '关联到:',
- monitorOnly: '仅监控',
- alerts: '警报',
- scheduleOn: '开启 {{time}}',
- scheduleOff: '关闭 {{time}}',
- on: '开启',
- off: '关闭',
- power: '功率',
- kwhToday: '今日kWh',
- settings: '设置',
- automationSettings: '自动化设置',
- showInSwitchbar: '在开关栏显示',
- quickAccessSidebar: '从侧边栏快速访问',
- enabled: '已启用',
- enableAutomation: '为此插座启用自动化',
- autoOn: '自动开启',
- autoOnDescription: '打印开始时开启',
- autoOff: '自动关闭',
- autoOffDescription: '打印完成时关闭(一次性)',
- autoOffPersistent: '保持启用',
- autoOffPersistentDescription: '在打印之间保持启用而非一次性',
- turnOffDelayMode: '关闭延迟模式',
- time: '时间',
- temp: '温度',
- delayMinutes: '延迟(分钟)',
- tempThreshold: '温度阈值(°C)',
- tempThresholdDescription: '当喷嘴冷却到此温度以下时关闭',
- edit: '编辑',
- deleteConfirm: '确定要删除"{{name}}"吗?此操作无法撤销。',
- turnOnConfirm: '确定要开启"{{name}}"吗?',
- turnOffConfirm: '确定要关闭"{{name}}"吗?这将切断连接设备的电源。',
- failedToTurn: '无法{{action}}"{{name}}"',
- unknown: '未知',
- // AddSmartPlugModal
- addTitle: '添加智能插座',
- editTitle: '编辑智能插座',
- stopScanning: '停止扫描',
- discoverTasmota: '发现Tasmota设备',
- foundDevices: '找到{{count}}个设备 - 点击选择:',
- noDevicesFound: '未在您的网络中找到Tasmota设备',
- haNotConfigured: 'Home Assistant未配置。请在以下位置设置',
- haSettingsPath: '设置 → 网络 → Home Assistant',
- selectEntity: '选择实体 *',
- ipAddress: 'IP地址 *',
- nameLabel: '名称 *',
- username: '用户名',
- password: '密码',
- authHint: '如果您的Tasmota设备不需要认证,请留空',
- linkToPrinter: '关联打印机',
- noPrinter: '无打印机(仅手动控制)',
- linkingDescription: '关联后可在打印开始/完成时自动开关',
- powerAlerts: '功率警报',
- alertAbove: '高于时警报(W)',
- alertBelow: '低于时警报(W)',
- alertDescription: '当电力消耗超过这些阈值时收到通知。留空以禁用该方向。',
- dailySchedule: '每日计划',
- turnOnAt: '开启时间',
- turnOffAt: '关闭时间',
- scheduleDescription: '每天在这些时间自动开关插座。留空以跳过该操作。',
- showOnPrinterCard: '在打印机卡片上显示',
- displayOnPrinterCard: '在打印机卡片上显示按钮',
- connectedResult: '已连接!',
- deviceLabel: '设备:{{name}} - ',
- stateLabel: '状态:{{state}}',
- test: '测试',
- delete: '删除',
- save: '保存',
- add: '添加',
- cancel: '取消',
- failedToStartScan: '无法开始扫描',
- nameRequired: '名称为必填项',
- entityRequired: 'Home Assistant插座需要实体',
- mqttTopicRequired: '必须为功率、能源或状态监控配置至少一个MQTT主题',
- loadingEntities: '正在加载实体...',
- loading: '加载中...',
- failedToLoadEntities: '加载实体失败:{{error}}',
- noEntitiesMatching: '未找到匹配"{{search}}"的实体',
- noEntitiesAvailable: '无可用实体',
- searchingEntities: '搜索所有实体(找到{{count}}个)',
- showingEntities: '显示 switch、light、input_boolean({{count}}个可用)',
- energyMonitoringOptional: '能源监控(可选)',
- energyMonitoringHint: '搜索并选择提供功率/能源数据的传感器。',
- powerSensorW: '功率传感器(W)',
- energyTodayKwh: '今日能源(kWh)',
- totalEnergyKwh: '总能源(kWh)',
- noMatchingSensors: '无匹配的传感器',
- none: '无',
- mqttNotConfigured: 'MQTT代理未配置。请在以下位置设置代理地址',
- mqttSettingsPath: '设置 → 网络 → MQTT发布',
- mqttNotConfiguredSuffix: '(您不需要启用发布,只需填写代理详细信息)。',
- mqttMonitorOnlyDescription: 'MQTT插座通过MQTT订阅接收功率/能源数据。开关控制不可用 - 请使用您的MQTT代理或家庭自动化系统。',
- powerMonitoring: '功率监控',
- energyMonitoring: '能源监控',
- stateMonitoring: '状态监控',
- optional: '可选',
- topic: '主题',
- jsonPath: 'JSON路径',
- multiplier: '乘数',
- onValue: 'ON值',
- mqttPowerHint: 'JSON路径从JSON负载中提取值(例如"power_l1")。如果主题发布原始数值,请留空。\n乘数:mW→W使用0.001,kW→W使用1000。',
- mqttEnergyHint: 'JSON路径从JSON负载中提取值。原始值请留空。\n乘数:Wh→kWh使用0.001,MWh→kWh使用1000。',
- mqttStateHint: 'JSON路径从JSON负载中提取值。原始值请留空。\nON值:表示"ON"的确切字符串。留空以自动检测(ON、true、1)。',
- // REST smart plug
- restControl: 'Control',
- restOnUrl: 'Turn ON URL',
- restOffUrl: 'Turn OFF URL',
- restOnBody: 'ON Request Body',
- restOffBody: 'OFF Request Body',
- restMethod: 'HTTP Method',
- restHeaders: 'Custom Headers (JSON)',
- restStatusUrl: 'Status URL',
- restStatusPath: 'State JSON Path',
- restStatusOnValue: 'ON Value',
- restPowerUrl: '功率URL',
- restPowerPath: 'Power JSON Path',
- restPowerMultiplier: '功率乘数',
- restEnergyUrl: '能耗URL',
- restEnergyPath: 'Energy JSON Path',
- restEnergyMultiplier: '能耗乘数',
- restUrlRequired: 'At least one URL (ON or OFF) is required for REST plugs',
- restHeadersHint: 'e.g. {"Authorization": "Bearer your-token"}',
- restBodyHint: 'e.g. ON, {"state": "on"}',
- restStatusHint: 'URL to poll for current state',
- restPathHint: 'e.g. state or data.power.status',
- restPowerUrlHint: '功率数据的独立URL(留空则使用状态URL)',
- restEnergyUrlHint: '能耗数据的独立URL(留空则使用状态URL)',
- restEnergyHint: '每个值可以使用独立的URL,或回退到状态URL。使用乘数进行单位转换(例如:0.001 将 Wh 转换为 kWh)。',
- testConnection: 'Test Connection',
- connectionSuccess: 'Connection successful',
- noSwitchesInSwitchbar: '开关栏中没有开关',
- enableSwitchbarHint: '在设置 > 智能插座中启用"在开关栏显示"',
- },
- // Notifications
- notifications: {
- // Provider types
- providerTypes: {
- callmebot: 'CallMeBot/WhatsApp',
- ntfy: 'ntfy',
- pushover: 'Pushover',
- telegram: 'Telegram',
- email: '电子邮件',
- discord: 'Discord',
- webhook: 'Webhook',
- homeassistant: 'Home Assistant',
- },
- // Provider descriptions
- providerDescriptions: {
- email: 'SMTP 电子邮件通知',
- telegram: '通过 Telegram 机器人发送通知',
- discord: '通过 Webhook 发送到 Discord 频道',
- ntfy: '免费、可自托管的推送通知',
- pushover: '简单、可靠的推送通知',
- callmebot: '通过 CallMeBot 免费发送 WhatsApp 通知',
- webhook: '通用 HTTP POST 到任意 URL',
- homeassistant: 'Home Assistant 仪表板中的持久通知',
- },
- // NotificationProviderCard
- lastSuccess: '上次:{{date}}',
- error: '错误',
- printer: '打印机:',
- allPrinters: '所有打印机',
- sendTestNotification: '发送测试通知',
- eventSettings: '事件设置',
- enabled: '已启用',
- sendFromProvider: '从此提供商发送通知',
- // Event categories
- printEvents: '打印事件',
- printerStatus: '打印机状态',
- amsAlarms: 'AMS 警报',
- amsHtAlarms: 'AMS-HT 警报',
- printQueue: '打印队列',
- // Event tags (badges)
- start: '开始',
- plateCheck: '热床检测',
- complete: '完成',
- failed: '失败',
- stopped: '已停止',
- progress: '进度',
- offline: '离线',
- lowFilament: '耗材不足',
- maintenance: '维护',
- amsHumidity: 'AMS 湿度',
- amsTemp: 'AMS 温度',
- amsHtHumidity: 'AMS-HT 湿度',
- amsHtTemp: 'AMS-HT 温度',
- bedCooled: '热床已冷却',
- firstLayer: '首层完成',
- quiet: '免打扰',
- digest: '摘要 {{time}}',
- // Event labels (expanded settings)
- printStarted: '打印已开始',
- plateNotEmpty: '热床非空',
- plateNotEmptyDescription: '打印前检测到物体',
- printCompleted: '打印已完成',
- bedCooledLabel: '热床已冷却',
- bedCooledDescription: '打印后热床温度降至阈值以下',
- firstLayerCompleteLabel: '首层打印完成',
- firstLayerCompleteDescription: '首层完成时发送带照片的通知',
- missingSpoolAssignmentLabel: '缺少料卷分配',
- missingSpoolAssignmentDescription: '当打印开始且所需料盘没有分配料卷时发送通知',
- printFailed: '打印失败',
- printStopped: '打印已停止',
- progressMilestones: '进度里程碑',
- progressMilestonesDescription: '在 25%、50%、75% 时通知',
- printerOffline: '打印机离线',
- printerError: '打印机错误',
- lowFilamentLabel: '耗材不足',
- maintenanceDue: '需要维护',
- maintenanceDueDescription: '需要维护时通知',
- amsHumidityHigh: 'AMS 湿度过高',
- amsHumidityHighDescription: '普通 AMS 湿度超过阈值',
- amsTemperatureHigh: 'AMS 温度过高',
- amsTemperatureHighDescription: '普通 AMS 温度超过阈值',
- amsHtHumidityHigh: 'AMS-HT 湿度过高',
- amsHtHumidityHighDescription: 'AMS-HT 湿度超过阈值',
- amsHtTemperatureHigh: 'AMS-HT 温度过高',
- amsHtTemperatureHighDescription: 'AMS-HT 温度超过阈值',
- // Queue events
- jobAdded: '任务已添加',
- jobAddedDescription: '任务已添加到队列',
- jobAssigned: '任务已分配',
- jobAssignedDescription: '基于模型的任务已分配给打印机',
- jobStarted: '任务已开始',
- jobStartedDescription: '队列任务已开始打印',
- jobWaiting: '任务等待中',
- jobWaitingDescription: '任务正在等待耗材或打印机',
- jobSkipped: '任务已跳过',
- jobSkippedDescription: '任务已跳过(上一个失败)',
- jobFailed: '任务失败',
- jobFailedDescription: '任务启动失败',
- queueComplete: '队列已完成',
- queueCompleteDescription: '所有队列任务已完成',
- // Quiet hours
- quietHours: '免打扰时段',
- noNotificationsDuring: '在此时段内不发送通知',
- editProviderToChangeQuietHours: '编辑提供商以更改免打扰时段',
- // Daily digest
- dailyDigest: '每日摘要',
- batchNotifications: '将通知汇总为每日摘要',
- sendAt: '发送于 {{time}}',
- editProviderToChangeDigestTime: '编辑提供商以更改摘要时间',
- // Actions
- edit: '编辑',
- deleteProvider: '删除通知提供商',
- deleteConfirm: '确定要删除"{{name}}"吗?此操作无法撤销。',
- delete: '删除',
- // AddNotificationModal
- addTitle: '添加通知提供商',
- editTitle: '编辑通知提供商',
- nameLabel: '名称 *',
- namePlaceholder: '我的通知',
- providerTypeLabel: '提供商类型 *',
- configuration: '配置',
- testConfiguration: '测试配置',
- printerFilter: '打印机筛选',
- onlyFromPrinter: '仅发送来自此打印机的事件通知',
- quietHoursDnd: '免打扰时段',
- quietStart: '开始',
- quietEnd: '结束',
- dailyDigestLabel: '每日摘要',
- sendDigestAt: '发送摘要于',
- digestCollected: '事件将被收集并在此时间作为单条摘要发送',
- notificationEvents: '通知事件',
- progressPercent: '(25%、50%、75%)',
- bedCooledAfterPrint: '(打印完成后)',
- // Per-event ntfy priority (#990)
- eventPriority: {
- sectionTitle: 'ntfy 优先级',
- helpNtfy: '为每个已启用的事件选择优先级。ntfy 使用它来升级提醒(声音、可见性、推送行为)。此处未设置的级别将使用 ntfy 服务器默认值。',
- min: '最低',
- low: '低',
- default: '默认',
- high: '高',
- urgent: '紧急',
- },
- cancel: '取消',
- save: '保存',
- add: '添加',
- nameRequired: '名称为必填项',
- fieldRequired: '{{field}}为必填项',
- // Config field labels
- phoneNumber: '电话号码',
- apiKey: 'API 密钥',
- serverUrl: '服务器 URL',
- topic: '主题',
- authToken: '认证令牌',
- userKey: '用户密钥',
- appToken: '应用令牌',
- priority: '优先级',
- botToken: '机器人令牌',
- chatId: '聊天 ID',
- smtpServer: 'SMTP 服务器',
- smtpPort: 'SMTP 端口',
- security: '安全',
- authentication: '认证',
- username: '用户名',
- password: '密码',
- fromEmail: '发件人邮箱',
- toEmail: '收件人邮箱',
- webhookUrl: 'Webhook URL',
- payloadFormat: '负载格式',
- authorization: '授权',
- titleFieldName: '标题字段名',
- messageFieldName: '消息字段名',
- // NotificationTemplateEditor
- editTemplate: '编辑模板:{{name}}',
- titleLabel: '标题',
- bodyLabel: '正文',
- titlePlaceholder: '通知标题...',
- bodyPlaceholder: '通知正文...',
- availableVariables: '可用变量',
- clickToInsert: '点击插入到正文光标位置',
- livePreview: '实时预览',
- hide: '隐藏',
- show: '显示',
- loadingPreview: '加载预览中...',
- enterTemplateContent: '输入模板内容以查看预览',
- titlePreview: '标题:',
- bodyPreview: '正文:',
- resetToDefault: '恢复默认',
- titleRequired: '标题为必填项',
- bodyRequired: '正文为必填项',
- // NotificationLogViewer
- notificationLog: '通知日志',
- showFailedOnly: '仅显示失败',
- last24Hours: '最近 24 小时',
- last7Days: '最近 7 天',
- last30Days: '最近 30 天',
- last90Days: '最近 90 天',
- justNow: '刚刚',
- noFailedNotifications: '没有失败的通知',
- noNotificationsLogged: '没有通知记录',
- unknownProvider: '未知提供商',
- logTitle: '标题',
- logMessage: '消息',
- logError: '错误',
- logProvider: '提供商:{{type}}',
- logTime: '时间:{{time}}',
- refresh: '刷新',
- clearOld: '清除旧记录',
- statsSummary: '最近 {{days}} 天:',
- statsNotifications: '条通知',
- statsSent: '{{count}} 条已发送',
- statsFailed: '{{count}} 条失败',
- // Event type labels (for log viewer)
- eventTypes: {
- print_start: '打印已开始',
- print_complete: '打印完成',
- print_failed: '打印失败',
- print_stopped: '打印已停止',
- print_progress: '进度',
- printer_offline: '打印机离线',
- printer_error: '打印机错误',
- filament_low: '耗材不足',
- maintenance_due: '需要维护',
- test: '测试',
- },
- userEmail: {
- title: '通知',
- emailNotifications: '邮件通知',
- emailNotificationsDesc: '接收您自己打印任务的邮件通知。邮件将通过高级身份验证中配置的 SMTP 设置发送。',
- sendingTo: '通知将发送至',
- noEmailWarning: '您的账户没有邮件地址。请联系管理员添加。',
- printJobNotifications: '打印任务通知',
- printJobNotificationsDesc: '选择哪些事件会触发您提交的打印任务的邮件通知。',
- printJobStarts: '打印任务开始',
- printJobStartsDesc: '当您的打印任务开始时收到通知。',
- printJobFinishes: '打印任务完成',
- printJobFinishesDesc: '当您的打印任务成功完成时收到通知。',
- printErrors: '打印错误',
- printErrorsDesc: '当您的打印任务失败或遇到错误时收到通知。',
- printJobStops: '打印任务停止',
- printJobStopsDesc: '当您的打印任务被取消或停止时收到通知。',
- saveSuccess: '通知偏好设置已保存。',
- saveError: '保存通知偏好设置失败。',
- },
- },
- // Rich Text Editor
- richTextEditor: {
- bold: '粗体',
- italic: '斜体',
- underline: '下划线',
- bulletList: '无序列表',
- numberedList: '有序列表',
- alignLeft: '左对齐',
- alignCenter: '居中对齐',
- alignRight: '右对齐',
- addLink: '添加链接',
- removeLink: '移除链接',
- },
- // External Links
- externalLinks: {
- noLinksConfigured: '未配置外部链接',
- deleteLink: '删除链接',
- removeCustomIcon: '移除自定义图标',
- openInNewTab: '在新标签页中打开',
- placeholders: {
- linkName: '我的链接',
- },
- },
- // Keyboard Shortcuts Modal
- keyboardShortcuts: {
- title: '键盘快捷键',
- navigation: '导航',
- archivesSection: '归档',
- kProfilesSection: 'K 值配置',
- generalSection: '通用',
- shortcuts: {
- goToPrinters: '前往打印机',
- goToArchives: '前往归档',
- goToQueue: '前往队列',
- goToStats: '前往统计',
- goToProfiles: '前往云端配置',
- goToSettings: '前往设置',
- focusSearch: '聚焦搜索',
- openUploadModal: '打开上传对话框',
- clearSelection: '清除选择 / 取消焦点',
- contextMenu: '卡片右键菜单',
- refreshProfiles: '刷新配置',
- newProfile: '新建配置',
- exitSelectionMode: '退出选择模式',
- showHelp: '显示此帮助',
- },
- footer: '按 Esc 或点击外部关闭',
- },
- // Notification Log
- notificationLog: {
- title: '通知日志',
- events: {
- printStarted: '打印开始',
- printComplete: '打印完成',
- printFailed: '打印失败',
- printStopped: '打印停止',
- progress: '进度',
- printerOffline: '打印机离线',
- printerError: '打印机错误',
- lowFilament: '耗材不足',
- maintenanceDue: '维护到期',
- test: '测试',
- },
- timeAgo: {
- justNow: '刚刚',
- minutesAgo: '{{minutes}} 分钟前',
- hoursAgo: '{{hours}} 小时前',
- },
- },
- // Restore/Backup Modal
- restoreBackup: {
- title: '恢复备份',
- restoring: '恢复中...',
- restoreComplete: '恢复完成',
- restoreFailed: '恢复失败',
- importSettings: '从备份文件导入设置',
- pleaseWait: '请稍候,正在恢复您的数据',
- clickToSelect: '点击选择备份文件(.json 或 .zip)',
- howDuplicateHandling: '重复处理方式:',
- categories: {
- printers: '打印机',
- smartPlugs: '智能插座',
- notificationProviders: '通知提供商',
- filaments: '耗材',
- archives: '归档',
- pendingUploads: '待处理上传',
- settingsTemplates: '设置和模板',
- },
- matchingInfo: {
- printers: '按序列号匹配',
- smartPlugs: '按 IP 地址匹配',
- notificationProviders: '按名称匹配',
- filaments: '按名称 + 类型 + 品牌匹配',
- archives: '按内容哈希匹配',
- pendingUploads: '按文件名匹配',
- settingsTemplates: '始终覆盖',
- },
- replaceExisting: '替换现有数据',
- keepExisting: '保留现有数据',
- replaceDescription: '用备份数据覆盖已存在的项目',
- keepDescription: '仅恢复不存在的项目',
- caution: '注意:',
- cautionText: '覆盖将用备份数据替换您当前的配置。出于安全考虑,打印机访问码永远不会被覆盖。',
- itemsRestored: '已恢复项目',
- itemsSkipped: '已跳过项目',
- restored: '已恢复',
- skipped: '已跳过(已存在)',
- filesLabel: '文件(3MF、缩略图等)',
- newApiKeysGenerated: '已生成新 API 密钥',
- newApiKeysWarning: '这些密钥仅显示一次。请立即复制!',
- processingBackup: '处理备份文件中...',
- noDataFound: '备份文件中未找到可恢复的数据。',
- failedToRestore: '恢复备份失败。请检查文件格式。',
- },
- // Backup Export Modal
- backupExport: {
- title: '导出备份',
- selectData: '选择要包含的数据',
- selectAll: '全选',
- selectNone: '全不选',
- categoryDescriptions: {
- settings: '语言、主题、更新偏好',
- notifications: 'ntfy、Pushover、Discord 等',
- templates: '自定义消息模板',
- smartPlugs: 'Tasmota 插座配置',
- externalLinks: '侧边栏外部服务链接',
- printers: '打印机信息(不含访问码)',
- plateDetection: '空打印板参考图像',
- filaments: '耗材类型和成本',
- maintenance: '自定义维护计划',
- archives: '所有打印数据 + 文件(3MF、缩略图、照片)',
- projects: '项目、材料清单和附件',
- pendingUploads: '虚拟打印机待审核的上传',
- apiKeys: 'Webhook API 密钥(导入时生成新密钥)',
- },
- requiresPrinters: '需要选择打印机',
- zipFileWarning: '将创建 ZIP 文件。',
- zipFileDescription: '包括所有 3MF 文件、缩略图、延时摄影和照片。这可能需要一些时间并生成较大的文件。',
- includeAccessCodes: '包含访问码',
- includeAccessCodesDescription: '用于转移到另一台机器',
- includeAccessCodesWarning: '访问码将以明文形式包含。请妥善保管此备份文件!',
- categoriesSelected: '已选择 {{selectedCount}} 个类别',
- },
- // Pending Uploads Panel
- pendingUploads: {
- placeholders: {
- notes: '添加关于此打印的备注...',
- },
- discardUpload: '丢弃上传',
- archiveAllUploads: '归档所有上传',
- discardAllUploads: '丢弃所有上传',
- archive: '归档',
- timeAgo: {
- justNow: '刚刚',
- minutesAgo: '{{minutes}} 分钟前',
- hoursAgo: '{{hours}} 小时前',
- daysAgo: '{{days}} 天前',
- },
- },
- // API Browser
- apiBrowser: {
- placeholders: {
- requestBody: 'JSON 请求体...',
- searchEndpoints: '搜索端点...',
- },
- },
- // Configure AMS Slot Modal
- configureAmsSlot: {
- title: '配置 AMS 槽位',
- slotConfigured: '槽位已配置!',
- configuringSlot: '正在配置槽位:',
- slotLabel: '{{ams}} 槽位 {{slot}}',
- searchPresets: '搜索预设...',
- colorPlaceholder: '颜色名称或十六进制(例如:棕色、FF8800)',
- clearCustomColor: '清除自定义颜色',
- noCloudPresets: '无云端预设。登录拓竹云以同步。',
- noPresetsAvailable: '无可用预设。登录拓竹云或导入本地配置。',
- noMatchingPresets: '未找到匹配的预设。',
- custom: '自定义',
- builtin: '内置',
- settingsSentToPrinter: '设置已发送到打印机',
- filamentProfile: '耗材配置',
- kProfileLabel: 'K 值配置(压力推进)',
- filteringFor: '筛选:{{material}}',
- noKProfile: '无 K 值配置(使用默认值 0.020)',
- noMatchingKProfiles: '未找到匹配的 K 值配置。将使用默认 K=0.020。',
- selectFilamentFirst: '请先选择耗材配置',
- kFromCalibration: 'K={{value}}(来自打印机校准)',
- customColorLabel: '自定义颜色(可选)',
- presetColors: '{{name}} 颜色:',
- showLessColors: '显示更少颜色',
- showMoreColors: '显示更多颜色',
- clear: '清除',
- hexLabel: '十六进制:#{{hex}}',
- resetting: '重置中...',
- resetSlot: '重置槽位',
- cancel: '取消',
- configuring: '配置中...',
- configureSlot: '配置槽位',
- },
- // Git Backup Settings
- githubBackup: {
- title: 'Git 备份',
- history: '历史',
- downloadBackup: '下载备份',
- restoreBackup: '恢复备份',
- noBackupsYet: '暂无备份',
- },
- // Email Settings
- emailSettings: {
- placeholders: {
- fromName: 'BamBuddy',
- },
- },
- // Tag Management Modal
- tagManagement: {
- searchTags: '搜索标签...',
- renameTag: '重命名标签',
- deleteTag: '删除标签',
- },
- // Notification Template Editor
- notificationTemplates: {
- placeholders: {
- title: '通知标题...',
- body: '通知正文...',
- },
- },
- // Batch Tag Modal
- batchTag: {
- placeholders: {
- newTag: '输入新标签...',
- },
- },
- // Photo Gallery Modal
- photoGallery: {
- deletePhoto: '删除照片',
- },
- // Filament Hover Card
- filamentHoverCard: {
- copySpoolUuid: '复制耗材 UUID',
- },
- // K Profiles View
- kProfilesView: {
- hasNote: '有备注',
- copyProfile: '复制配置',
- },
- // Layout/Navigation
- layout: {
- openMenu: '打开菜单',
- noPermissionSystemInfo: '您没有查看系统信息的权限',
- },
- // Dashboard
- dashboard: {
- dragToReorder: '拖动以重新排列',
- hideWidget: '隐藏小部件',
- },
- // Notification Provider Card
- notificationProviderCard: {
- deleteNotificationProvider: '删除通知提供商',
- },
- // File Manager Modal
- fileManagerModal: {
- closeFileManager: '关闭文件管理器',
- sortFiles: '排序文件',
- goToParentFolder: '返回上级文件夹',
- threeView: '3D 视图',
- },
- // Embedded Camera Viewer
- embeddedCameraViewer: {
- refreshStream: '刷新流',
- close: '关闭',
- zoomOut: '缩小',
- resetZoom: '重置缩放',
- zoomIn: '放大',
- dragToResize: '拖动调整大小',
- },
- // Timelapse Viewer
- timelapseViewer: {
- skipBack5s: '后退 5 秒',
- skipForward5s: '前进 5 秒',
- },
- // Notification Providers
- notificationProviders: {
- descriptions: {
- email: 'SMTP 邮件通知',
- telegram: '通过 Telegram 机器人通知',
- discord: '通过 Webhook 发送到 Discord 频道',
- ntfy: '免费、可自托管的推送通知',
- pushover: '简单、可靠的推送通知',
- callmebot: '通过 CallMeBot 的免费 WhatsApp 通知',
- webhook: '通用 HTTP POST 到任意 URL',
- },
- },
- // Log Viewer
- logViewer: {
- searchPlaceholder: '搜索消息或日志名称...',
- noLogEntries: '未找到日志条目',
- },
- // Switchbar Popover
- switchbarPopover: {
- noSwitchesInSwitchbar: '切换栏中没有开关',
- },
- // Project Page Modal
- projectPageModal: {
- placeholders: {
- title: '标题',
- designer: '设计师',
- license: '许可证',
- description: '输入描述...',
- profileTitle: '配置标题',
- profileDescription: '配置描述...',
- },
- },
- // Spoolman Settings
- spoolmanSettings: {},
- // Time
- time: {
- unknown: '-',
- waiting: '等待中',
- justNow: '刚刚',
- now: '现在',
- minsAgo: '{{count}} 分钟前',
- inMins: '{{count}} 分钟后',
- hoursAgo: '{{count}} 小时前',
- inHours: '{{count}} 小时后',
- daysAgo: '{{count}} 天前',
- inDays: '{{count}} 天后',
- },
- // SpoolBuddy Kiosk
- spoolbuddy: {
- nav: {
- dashboard: '仪表板',
- ams: 'AMS',
- inventory: '库存',
- writeTag: '写入',
- settings: '设置',
- },
- status: {
- nfcReady: 'NFC 就绪',
- nfcOff: 'NFC 关闭',
- offline: '离线',
- online: '在线',
- noPrinters: '无打印机',
- deviceOffline: '设备离线',
- waitingConnection: '等待设备连接...',
- systemReady: '系统就绪',
- status: '状态',
- },
- dashboard: {
- readyToScan: '准备扫描',
- idleMessage: '将耗材放在秤上以识别',
- nfcHint: 'NFC 标签将自动读取',
- device: '设备',
- syncWeight: '同步重量',
- weightSynced: '已同步!',
- unknownTag: '未知标签',
- newTag: '检测到新标签',
- onScale: '在秤上',
- linkSpool: '链接到耗材',
- linkTagTitle: '将标签链接到耗材',
- linkTag: '链接标签',
- selectSpool: '选择要链接此标签的耗材:',
- noUntagged: '未找到没有标签的耗材',
- tagDetected: '检测到标签',
- noTag: '无标签',
- tagId: '标签',
- grossWeight: '毛重',
- spoolSize: '耗材盘尺寸',
- close: '关闭',
- currentSpool: '当前耗材',
- plateReady: '热床就绪: {{name}}',
- plateReadyLabel: '待清理的热床',
- plateClearAction: '清理',
- plateClearedToast: '已将热床标记为已清理',
- plateClearFailed: '无法将热床标记为已清理',
- },
- modal: {
- spoolDetected: '检测到耗材',
- assignToAms: '分配到 AMS',
- syncWeight: '同步重量',
- weightSynced: '已同步!',
- syncing: '同步中...',
- newTagDetected: '检测到新标签',
- addToInventory: '添加到库存',
- assignToAmsTitle: '分配到 AMS',
- selectSlot: '选择槽位',
- assign: '分配',
- assigning: '分配中...',
- assignSuccess: '已分配!',
- assignPendingInsert: '已分配。插入耗材后将配置槽位。',
- assignError: '分配耗材失败。请重试。',
- noPrinterSelected: '选择打印机...',
- noAmsDetected: '此打印机未检测到 AMS',
- slot: '槽位',
- },
- weight: {
- noReading: '无读数',
- stable: '稳定',
- measuring: '测量中...',
- tare: '去皮',
- calibrate: '校准',
- },
- spool: {
- remaining: '剩余',
- material: '材料',
- brand: '品牌',
- color: '颜色',
- coreWeight: '空盘',
- labelWeight: '标签',
- scaleWeight: '秤重',
- netWeight: '净重',
- lastUsed: '上次使用',
- },
- ams: {
- noData: '未检测到 AMS',
- connectAms: '连接 AMS 以查看耗材槽位',
- noPrinter: '未选择打印机',
- selectPrinter: '从顶部栏选择打印机',
- printerDisconnected: '打印机已断开',
- humidity: '湿度',
- level: '余量',
- active: '活跃',
- slot: '槽位',
- empty: '空',
- },
- inventory: {
- search: '搜索耗材...',
- empty: '库存中没有耗材',
- noResults: '没有匹配的耗材',
- spools: '个耗材',
- addSpool: '添加耗材',
- },
- settings: {
- // Tabs
- tabDevice: '设备',
- tabDisplay: '显示',
- tabScale: '秤',
- tabUpdates: '更新',
- // Device tab
- nfcReader: 'NFC 读卡器',
- type: '类型',
- connection: '连接',
- notConnected: '不适用',
- deviceInfo: '设备信息',
- hostname: '主机',
- uptime: '运行时间',
- systemConfig: '后端与认证',
- backendUrl: 'Bambuddy 后端 URL',
- apiToken: 'API 令牌',
- apiTokenPlaceholder: '输入 API 令牌',
- saveConfig: '保存配置',
- systemQueued: '配置已加入队列。',
- nfcDiagnostic: 'NFC 诊断',
- scaleDiagnostic: '秤诊断',
- readTagDiagnostic: '读取标签诊断',
- testNfc: '测试读卡器',
- testScale: '测试精度',
- testReadTag: '读取标签',
- systemFieldsRequired: '后端 URL 为必填项。',
- // Display tab
- brightness: '亮度',
- saved: '已保存',
- noBacklight: '未检测到 DSI 背光。亮度控制需要 DSI 显示屏。',
- screenBlank: '屏幕熄灭超时',
- screenBlankDesc: '不活动后屏幕关闭。触摸唤醒。',
- displayNote: '亮度作为软件滤镜应用。',
- // Scale tab
- scaleCalibration: '秤校准',
- currentWeight: '当前重量',
- tareOffset: '去皮',
- calFactor: '系数',
- knownWeight: '已知重量',
- calStep1: '移除秤上所有物品并按设置零点。',
- calStep2: '将已知重量放在秤上。',
- setZero: '设置零点',
- calibrateNow: '校准',
- calibrated: '已校准',
- tareSet: '去皮命令已发送。等待设备响应...',
- tareFailed: '发送去皮命令失败',
- zeroSet: '零点已设置。将已知重量放在秤上。',
- calibrationDone: '校准完成!',
- calibrationFailed: '校准失败',
- lastCalibrated: '上次校准',
- stable: '稳定',
- settling: '稳定中...',
- firmware: '固件',
- scale: '秤',
- noDevice: '未找到 SpoolBuddy 设备',
- // Updates tab
- daemonVersion: '守护进程版本',
- currentVersion: '当前',
- versionPending: '等待守护进程...',
- checking: '检查中...',
- checkUpdates: '检查更新',
- updateAvailable: '有可用更新',
- updateInstructions: '通过 SSH 更新:运行 SpoolBuddy 安装脚本进行升级。',
- upToDate: '已是最新',
- includeBeta: '包含测试版本',
- },
- writeTag: {
- tabExisting: '现有耗材',
- tabNew: '新耗材',
- tabReplace: '替换标签',
- searchPlaceholder: '按材料、颜色、品牌搜索...',
- noUntaggedSpools: '没有无标签的耗材',
- noTaggedSpools: '没有有标签的耗材',
- selectSpool: '选择一个耗材,然后将空白 NTAG 放在读卡器上',
- placeTag: '将 NTAG 放在读卡器上',
- tagReady: '检测到标签 — 准备写入',
- writeTag: '写入标签',
- replaceTag: '替换标签',
- writing: '写入标签中...',
- waiting: '等待 SpoolBuddy...',
- writeSuccess: '标签写入成功!',
- writeFailed: '写入失败',
- queueFailed: '排队写入命令失败',
- tryAgain: '重试',
- cancel: '取消',
- replaceWarning: '旧标签将被取消链接。新标签将替换它。',
- deviceOffline: 'SpoolBuddy 离线',
- material: '材料',
- colorName: '颜色名称',
- color: '颜色',
- brand: '品牌',
- weight: '重量 (g)',
- createSpool: '创建耗材',
- creating: '创建中...',
- spoolCreated: '耗材已创建!准备写入。',
- createFailed: '创建耗材失败',
- },
- quickMenu: {
- printerPower: '打印机电源',
- systemControls: '系统',
- restartDaemon: '重启守护进程',
- restartBrowser: '重启浏览器',
- reboot: '重启',
- shutdown: '关机',
- swipeToClose: '向下滑动关闭',
- confirmTitle: '确认',
- confirmShutdown: '确定要关闭SpoolBuddy吗?您需要物理访问才能重新开启。',
- confirmReboot: '确定要重启SpoolBuddy吗?',
- confirmRestartDaemon: '重启SpoolBuddy守护进程?NFC和秤将暂时不可用。',
- confirmRestartBrowser: '重启kiosk浏览器?屏幕将短暂变黑。',
- confirm: '确认',
- confirmPlugOn: '开启 {{name}}?',
- confirmPlugOff: '关闭 {{name}}?',
- turnOn: '开启',
- turnOff: '关闭',
- },
- },
- bugReport: {
- title: '报告错误',
- description: '描述',
- descriptionPlaceholder: '出了什么问题?请描述问题...',
- email: '邮箱(可选)',
- emailPlaceholder: 'your@email.com',
- emailPrivacy: '如果提供,您的邮箱将包含在GitHub Issue的折叠部分中,以便维护者后续跟进。',
- screenshot: '截图',
- uploadOrPaste: '上传、粘贴或拖拽图片',
- dataCollectedSummary: '报告中包含哪些数据?',
- dataIncluded: '包含:',
- dataIncludedList: '应用版本、操作系统、架构、Python版本、数据库统计(仅计数)、打印机型号、喷嘴数量、固件版本、连接状态、集成状态(Spoolman、MQTT、HA)、非敏感设置、网络接口数量、Docker详情、依赖版本。',
- dataNeverIncluded: '绝不包含:',
- dataNeverIncludedList: '打印机名称、序列号、访问代码、密码、IP地址、邮箱地址、API密钥、令牌、Webhook URL、主机名或用户名。',
- submit: '提交',
- startLogging: '开始调试日志',
- stepEnableLogging: '调试日志已启用',
- stepReproduce: '请现在重现问题',
- stepStopLogging: '停止并提交报告',
- stopAndSubmit: '停止并提交',
- maxDuration: '{{minutes}}分钟后自动停止',
- stoppingLogs: '正在收集日志并提交...',
- submitting: '正在提交错误报告...',
- submitSuccess: '错误报告提交成功!',
- submitFailed: '提交错误报告失败',
- thankYou: '谢谢!',
- submitted: '您的错误报告已提交。',
- viewIssue: '查看Issue',
- unexpectedError: '发生了意外错误',
- },
- failureDetection: {
- title: 'AI 故障检测',
- description: '通过自托管的 Obico ML API 监控打印,并对检测到的故障自动采取行动。',
- mlUrl: 'Obico ML API 地址',
- mlUrlHint: '您自托管的 Obico ml_api 容器的基础 URL(例如 http://192.168.1.10:3333)。',
- test: '测试',
- testSuccess: 'ML API 可访问且正常。',
- testFailed: '无法访问 ML API。',
- sensitivity: '灵敏度',
- sensitivityLow: '低(减少误报)',
- sensitivityMedium: '中(平衡)',
- sensitivityHigh: '高(更早检测,更多误报)',
- sensitivityHint: '调整触发警告和故障的置信度阈值。',
- action: '检测到故障时的操作',
- actionNotify: '仅通知',
- actionPause: '暂停打印',
- actionPauseOff: '暂停并切断电源',
- pollInterval: '检查间隔(秒)',
- pollIntervalHint: '打印过程中每台打印机的检查频率。最小 5 秒,最大 120 秒。',
- externalUrlMissing: 'External URL is not set.',
- externalUrlHint: 'The ML API fetches the camera snapshot by URL. Set the External URL in General settings so the ML API container can reach Bambuddy.',
- perPrinterTitle: '监控的打印机',
- perPrinterHint: '选择检测服务要监视哪些打印机。',
- monitorAll: '监控所有已连接的打印机',
- statusTitle: '状态',
- serviceRunning: '服务运行中',
- thresholds: '低 / 高阈值',
- activePrinters: '活动打印',
- noActivePrints: '当前没有正在进行的打印。',
- historyTitle: '最近检测',
- noHistory: '暂无检测记录。',
- },
- makerworld: {
- title: 'MakerWorld',
- description: '粘贴 MakerWorld 模型链接,即可直接在 Bambuddy 中导入并打印 —— 无需切换到 Bambu Handy 应用。',
- pasteUrlHeader: '从 MakerWorld 导入',
- pasteUrlPlaceholder: 'https://makerworld.com/en/models/… 或粘贴任意 MakerWorld 链接',
- resolveButton: '解析',
- signInRequiredTitle: '下载需要登录 Bambu Cloud',
- signInRequiredBody: '您可以匿名浏览模型详情,但下载 3MF 文件需要 Bambu Cloud 账户。',
- openCloudSettings: '打开云设置',
- untitledModel: '无标题模型',
- byCreator: '作者: {{name}}',
- downloadsCount: '{{count}} 次下载',
- licensePrefix: '许可协议',
- alreadyImported: '已在资料库中',
- openOnMakerworld: '在 MakerWorld 中打开',
- alreadyInLibrary: '此模型已在您的资料库中 —— 可在文件管理器 → MakerWorld 中找到',
- importSuccess: '已导入 {{filename}} —— 已保存到文件管理器 → MakerWorld',
- platesHeader: '打印板 ({{count}})',
- plateDefaultName: '打印板 {{n}}',
- materialCount: '{{count}} 种耗材',
- amsRequired: '需要 AMS',
- slicedFor: 'Sliced for {{printer}}',
- alsoCompatible: 'Also marked compatible: {{printers}}',
- importToLibrary: '保存',
- sliceIn: '保存并在 {{slicer}} 中切片',
- disclaimer: 'MakerWorld 集成使用由社区记录的 API 接口。Bambuddy 与 MakerWorld 或 Bambu Lab 没有从属或认可关系。',
- lastImportSuccess: '已导入到您的资料库',
- lastImportAlreadyInLibrary: '已存在于您的资料库中',
- viewInLibrary: '在文件管理器中查看',
- openInBambuStudio: '在 Bambu Studio 中打开',
- openInOrcaSlicer: '在 OrcaSlicer 中打开',
- importTo: '导入到文件管理器',
- recentImportsHeader: '最近导入',
- phaseResolving: '解析中',
- phaseDownloading: '下载中',
- folderAuto: 'MakerWorld (默认)',
- importAll: '全部导入',
- importAllProgress: '正在导入 {{current}}/{{total}}',
- openGallery: '打开图片库',
- galleryPrev: '上一张',
- galleryNext: '下一张',
- deleteImport: '从资料库中移除',
- importDeleting: '正在移除…',
- importDeleted: '已从资料库中移除',
- confirmDelete: '从资料库中移除 {{filename}}?本地文件将被删除,但可以从 MakerWorld 重新导入。',
- errors: {
- resolveFailed: '无法解析该 MakerWorld 链接。',
- downloadFailed: '下载失败。请重试。',
- deleteFailed: '无法从资料库中移除文件。',
- },
- },
- libraryTrash: {
- title: '回收站',
- headerButton: '回收站',
- headerTooltip: '查看已移至回收站的文件',
- backToFiles: '返回文件管理器',
- subtitleAdmin: '已删除的文件会在回收站保留 {{days}} 天,之后自动删除。此视图显示所有用户的回收站。',
- subtitleUser: '已删除的文件会在回收站保留 {{days}} 天,之后自动删除。',
- loading: '正在加载回收站…',
- loadError: '无法加载回收站。',
- empty: '回收站为空。',
- summary: '{{count}} 个文件 · {{size}}',
- emptyTrash: '清空回收站',
- restore: '还原',
- purgeNow: '立即删除',
- autoPurgeIn: '将于 {{when}} 自动删除',
- days: '天',
- retentionLabel: '自动删除时间',
- selectAll: '全选',
- selectOne: '选择 {{filename}}',
- selectionCount: '已选择 {{count}} 项',
- bulkRestore: '还原所选',
- bulkPurge: '删除所选',
- col: {
- filename: '文件',
- folder: '文件夹',
- size: '大小',
- deleted: '移入回收站',
- autoPurge: '自动删除',
- owner: '所有者',
- actions: '操作',
- },
- confirm: {
- purgeTitle: '永久删除?',
- purgeBody: '{{filename}} 将从磁盘中删除,无法恢复。',
- emptyTitle: '清空回收站?',
- emptyBody: '全部 {{count}} 个文件将从磁盘中删除。此操作无法撤消。',
- bulkPurgeTitle: '永久删除所选文件?',
- bulkPurgeBody: '所选的 {{count}} 个文件将从磁盘中删除,无法恢复。',
- cta: '永久删除',
- },
- toast: {
- restored: '文件已还原。',
- restoreFailed: '无法还原文件。',
- purged: '文件已永久删除。',
- purgeFailed: '无法删除文件。',
- emptied: '已从回收站删除 {{count}} 个文件。',
- emptyFailed: '无法清空回收站。',
- retentionSaved: '自动删除已设置为 {{days}} 天。',
- retentionFailed: '无法保存保留设置。',
- bulkRestored: '已还原 {{count}} 个文件。',
- bulkPurged: '已删除 {{count}} 个文件。',
- },
- },
- libraryPurge: {
- title: '清理旧文件',
- headerButton: '清理旧文件',
- headerTooltip: '批量将旧文件移至回收站',
- description: '早于所选阈值的文件将被移至回收站。外部文件夹会被跳过。在自动删除之前,您可以从回收站还原文件。',
- ageLabel: '移动早于以下天数的文件',
- days: '天',
- includeNeverPrinted: '包括从未打印过的文件',
- effectsTitle: 'What happens when you click Purge',
- effect1: 'Matching files are moved to Trash — they are not deleted from disk yet.',
- effect2: 'You can restore them from Trash at any time until the retention window expires.',
- effect3: 'After retention, the trash sweeper permanently removes them from disk.',
- effect4: 'Files in external (linked) folders are skipped — Bambuddy never deletes bytes it does not own.', previewLoading: '正在检查匹配的文件数量…',
- previewFailed: '无法预览清理结果。',
- previewSummary: '{{count}} 个文件 · {{size}} 将被移至回收站',
- andMore: '…还有 {{count}} 个',
- warning: '文件将被软删除——在保留期结束前,您可以从回收站还原它们。',
- confirmCta: '将 {{count}} 个移至回收站',
- purging: '正在移至回收站…',
- toast: {
- success: '已将 {{count}} 个文件移至回收站。',
- failed: '无法清理文件。',
- },
- },
- libraryAutoPurge: {
- enableLabel: '自动清理旧文件',
- enableDescription: '每天执行一次管理员清理。文件会先进入回收站——不会立即删除。',
- ageLabel: '自动清理早于以下天数的文件',
- ageDescription: '最少 7 天,最多 10 年。使用与手动「清理旧文件」按钮相同的时间规则。',
- days: '天',
- includeNeverPrinted: '包括从未打印过的文件',
- saveFailed: '无法保存自动清理设置。',
- },
- archivePurge: {
- headerButton: 'Purge old',
- headerTooltip: 'Bulk-delete old archives',
- title: 'Purge old archives',
- description: 'Clear out old print history. Each archive is aged by its most recent print completion — reprinting an archive refreshes its age, so active work is never purged.',
- ageLabel: 'Delete archives not printed in the last',
- days: 'days',
- effectsTitle: 'What happens when you click Purge',
- effect1: 'Each matching archive is permanently removed from the database.',
- effect2: 'The 3MF, thumbnail, timelapse, source 3MF, F3D design file, and photo folder are all deleted from disk.',
- effect3: 'There is no trash bin for archives — deletion is immediate and cannot be undone.',
- effect4: 'Reprinting an archive refreshes its age clock, so archives you still use are safe.',
- previewLoading: 'Checking how many archives match…',
- previewFailed: 'Could not preview the purge.',
- previewSummary: '{{count}} archives · {{size}} would be deleted',
- andMore: '…and {{count}} more',
- warning: 'This is permanent. Download or favourite anything you want to keep before continuing.',
- confirmCta: 'Delete {{count}} archive(s)',
- purging: 'Deleting…',
- toast: {
- success: 'Deleted {{count}} archive(s).',
- failed: 'Could not purge archives.',
- },
- },
- archiveAutoPurge: {
- enableLabel: 'Auto-purge old archives',
- enableDescription: 'Once per day, permanently deletes archives that have not been printed within the threshold. Reprinting an archive resets the clock. No trash bin — deletion is immediate.',
- ageLabel: 'Auto-delete archives not printed in the last',
- ageDescription: 'Minimum 7 days, maximum 10 years. Based on the most recent print completion — reprinting an archive refreshes its age. Deletes the archive, 3MF, thumbnail, timelapse, and photos.',
- days: 'days',
- runNow: 'Purge archives now',
- saveFailed: 'Could not save auto-purge settings.',
- },
- cameraTokens: {
- title: 'Camera API Tokens',
- navTitle: 'Camera API tokens',
- description:
- '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.',
- loading: 'Loading…',
- confirmRevoke: {
- title: 'Revoke this token?',
- body: 'Any device using "{{name}}" will lose access immediately. This cannot be undone.',
- cancel: 'Cancel',
- confirm: 'Revoke',
- },
- create: {
- title: 'Create new token',
- nameLabel: 'Token name',
- namePlaceholder: 'e.g. Home Assistant',
- daysLabel: 'Days until expiry',
- submit: 'Create',
- hint:
- 'Maximum lifetime is 365 days. The token value is shown only once on creation — copy it now.',
- },
- created: {
- title: 'Token created — copy it now',
- warning:
- 'This is the only time this token will be visible. After you close this dialog you can never view it again.',
- copy: 'Copy',
- dismiss: "I've saved it",
- },
- list: {
- myTitle: 'My tokens',
- allTitle: 'All users (admin view)',
- empty: 'No tokens yet.',
- name: 'Name',
- owner: 'Owner',
- prefix: 'Prefix',
- created: 'Created',
- expires: 'Expires',
- lastUsed: 'Last used',
- revoke: 'Revoke',
- expired: 'Expired',
- },
- toast: {
- created: 'Token created',
- createFailed: 'Failed to create token',
- revoked: 'Token revoked',
- revokeFailed: 'Failed to revoke token',
- loadFailed: 'Failed to load tokens',
- copied: 'Copied to clipboard',
- copyFailed: 'Copy failed — select and copy manually',
- },
- },
- };
|