| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857 |
- 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: '錯誤',
- errorLoading: '載入錯誤',
- retry: '重試',
- 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: '所有位置',
- },
- toolbar: {
- filters: '篩選',
- view: '檢視',
- actions: '操作',
- },
- // 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: 'Wi-Fi 訊號',
- 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: '新增印表機失敗',
- connectionFailedNotAdded: '無法連線到印表機。請檢查 IP 位址、序號和存取碼,並確認已啟用僅區域網路(LAN-only)模式。該印表機未被新增。',
- 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: '載入耗材中…',
- unloadInitiated: '卸載耗材中…',
- failedToLoad: '載入耗材失敗',
- failedToUnload: '卸載耗材失敗',
- },
- // 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: '載入',
- 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: '關機',
- haToggleTitle: '切換"{{name}}"',
- haToggleMessage: '切換 Home Assistant 實體 {{entity}}?如果目前為開啟狀態,可能會關閉電源。',
- haToggleWarning: '警告:"{{name}}"正在列印中!切換 {{entity}} 可能會切斷電源並中斷列印。是否繼續?',
- haToggleButton: '切換',
- },
- // 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: 'QR 碼',
- viewPhotos: '檢視照片',
- viewPhotosCount: '檢視照片 ({{count}})',
- projectPage: '專案頁面',
- addToFavorites: '新增到收藏',
- removeFromFavorites: '從收藏中移除',
- edit: '編輯',
- printLog: '列印記錄',
- goToProject: '前往專案:{{name}}',
- addToProject: '新增到專案',
- removeFromProject: '從專案中移除',
- loading: '載入中...',
- noProjectsAvailable: '無可用專案',
- searchProjects: '搜尋專案…',
- 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}}',
- runsBadge: '{{count}} 次列印',
- runsBadgeTitle: '共 {{count}} 次列印 — 成功 {{successful}} 次,失敗 {{failed}} 次。點擊查看完整列印記錄。',
- estimated: '預計:{{time}}',
- actual: '實際:{{time}}',
- accuracy: '準確度:{{percent}}%',
- filament: '{{weight}} 克',
- 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: '刪除',
- },
- runLog: {
- title: '列印記錄',
- modalTitle: '列印記錄 — {{name}}',
- modalTitleFallback: '此歸檔',
- empty: '此歸檔尚未記錄任何列印事件。',
- col: {
- date: '日期',
- status: '狀態',
- duration: '時長',
- filament: '耗材',
- cost: '成本',
- },
- status: {
- completed: '已完成',
- failed: '失敗',
- cancelled: '已取消',
- stopped: '已停止',
- skipped: '已略過',
- printing: '列印中',
- },
- },
- modal: {
- deleteArchive: '刪除歸檔',
- deleteConfirm: '確定要刪除"{{name}}"嗎?此操作無法復原。',
- deleteButton: '刪除',
- deletePurgeStats: '同時從快速統計中刪除此列印(耗材、時間、成本、能耗)',
- 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',
- security: '安全',
- },
- 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})。',
- advanced: '進階',
- 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 同步重量失敗',
- spoolmanAmsSyncButton: '從 AMS 同步 Spoolman 重量',
- spoolmanAmsSyncTitle: '從 AMS 同步 Spoolman 耗材重量',
- spoolmanAmsSyncMessage: '這將根據已連線印表機的目前 AMS 剩餘百分比值更新所有 Spoolman 耗材重量。印表機必須線上。',
- spoolmanAmsSyncing: '同步中...',
- spoolmanAmsSyncSuccess: '已同步 {{synced}} 個 Spoolman 耗材,跳過 {{skipped}} 個',
- spoolmanAmsSyncError: '從 AMS 同步 Spoolman 重量失敗',
- spoolmanAmsSyncErrorUnreachable: '同步失敗(Spoolman 無法存取)',
- spoolmanAmsSyncErrorNotConfigured: '同步失敗(Spoolman 未設定)',
- spoolmanNotConfigured: 'Spoolman 未設定',
- // Spoolman filament catalog section in spool catalog settings
- spoolmanFilamentCatalogTitle: 'Spoolman 耗材目錄',
- spoolmanFilamentCatalogDesc: '來自 Spoolman 的耗材名稱和皮重。名稱和線軸重量可在此處編輯;其他屬性請直接在 Spoolman 中管理。',
- // 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: '允許雲端存取',
- cloudAccessDescription: '代表您讀取 Bambu Cloud 預設和耗材。需要登入 Bambu Cloud。',
- cloudBadge: '雲端',
- updateEnergyCost: '更新電價',
- updateEnergyCostDescription: '允許此金鑰向 /settings/electricity-price POST 新的每千瓦時電價。適用於 Home Assistant 動態電價自動化(Tibber、Octopus 等)。這是唯一可透過 API 金鑰寫入的設定欄位。',
- energyCostBadge: '能耗',
- legacyKey: '舊版',
- legacyKeyTooltip: '在按使用者所有權之前建立;需重建以使用雲端存取',
- 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: '錯開啟動',
- staggeredStartDescription: '多台印表機批次啟動時的預設群組大小與間隔。可在列印對話框中逐批覆寫。',
- 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: '群組大小',
- staggerGroupSizeHelp: '每個群組要同時啟動的印表機數量',
- staggerInterval: '間隔(分鐘)',
- staggerIntervalHelp: '每個群組啟動之間的延遲',
- 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: '輸入密碼',
- passwordRequirements: '至少 8 個字元,包含一個大寫、一個小寫、一個數字和一個特殊字元。',
- 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 存在已知 CLI 錯誤,無法切片許多 Bambu 建立的 3MF — 見上游 issue #12426(繪製的多擠出機檔案 segfault)和 #13386(參數範圍嚴格驗證拒絕)。在上游修復發布之前,推薦使用 Bambu Studio。',
- useSlicerApi: '使用切片器 API',
- useSlicerApiDescription: '開啟時,「切片」操作開啟應用程式內切片器對話框並呼叫 slicer-API sidecar。關閉時(預設),透過 URI 方案交給桌面切片器。',
- slicerCard: '切片器',
- orcaslicerApiUrl: 'OrcaSlicer sidecar URL',
- bambuStudioApiUrl: 'Bambu Studio sidecar URL',
- slicerApiUrlDescription: 'slicer-API sidecar 容器的 URL。留空以使用 SLICER_API_URL / BAMBU_STUDIO_API_URL 環境變數預設值。',
- slicerBundles: {
- title: '切片器捆綁包',
- description: '匯入從 BambuStudio 匯出的 Printer Preset Bundle (.bbscfg)(檔案 → 匯出 → 匯出預設捆綁包 → "Printer preset bundle")。匯入後,切片請求可以按名稱從捆綁包中選擇預設,無需重新上傳 JSON 設定三元組。',
- uploadButton: '上傳捆綁包',
- uploading: '上傳中…',
- loading: '載入捆綁包中…',
- empty: '尚未匯入捆綁包。',
- summary: '{{processCount}} 個製程 · {{filamentCount}} 個耗材預設',
- delete: '刪除',
- uploadSuccess: '已匯入 {{name}}',
- uploadError: '上傳捆綁包失敗:{{message}}',
- deleteSuccess: '捆綁包已移除',
- deleteError: '刪除捆綁包失敗:{{message}}',
- confirmDeleteTitle: '移除此捆綁包?',
- confirmDeleteMessage: '引用「{{name}}」的切片請求將失敗,直到捆綁包重新匯入。',
- },
- 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: '密碼至少需要 8 個字元',
- passwordNeedsUppercase: '密碼必須至少包含一個大寫字母',
- passwordNeedsLowercase: '密碼必須至少包含一個小寫字母',
- passwordNeedsDigit: '密碼必須至少包含一個數字',
- passwordNeedsSpecial: '密碼必須至少包含一個特殊字元',
- 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: '刪除條目失敗',
- material: '材料',
- spoolWeight: '線軸重量',
- color: '顏色',
- updateSpoolWeight: '更新線軸重量',
- filamentUpdated: '耗材已更新',
- filamentUpdateFailed: '更新耗材失敗',
- filamentUpdateInvalid: '耗材資料無效',
- keepExistingSpoolWeight: '保留現有線軸的舊重量',
- keepExistingSpoolWeightDesc: '已使用此耗材類型建立的線軸保留舊的皮重。新線軸使用更新後的值。',
- applyToAllSpools: '套用至所有線軸',
- applyToAllSpoolsDesc: '此耗材類型的所有重量計算立即使用新的皮重。',
- },
- 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: '快照 URL(選用)',
- cameraSnapshotUrlPlaceholder: 'http://192.168.1.61:1984/api/frame.jpeg?src=printer',
- cameraSnapshotUrlHelp: '用於通知縮圖、完成照片、層縮時攝影影格和列印板偵測的單一影格 URL。縮時攝影和列印板偵測各自需要自己的每印表機切換 — 此 URL 只是它們啟用時拉取的影像來源。留空以從上方即時串流擷取。適用於 go2rtc(/api/frame.jpeg)和具有專用快照端點的 IP 攝影機。',
- 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: '當印表機Wi-Fi 不穩定時重試FTP操作。適用於3MF下載、列印上傳、縮時攝影下載和韌體更新。',
- autoRetryDescription: '自動重試失敗的FTP操作',
- retryAttempts: '重試次數',
- retryDelay: '重試延遲',
- connectionTimeout: '連線超時',
- time_one: '{{count}} 次',
- time_other: '{{count}} 次',
- second_one: '{{count}} 秒',
- second_other: '{{count}} 秒',
- nSeconds: '{{count}} 秒',
- increaseForWeakWifi: '對Wi-Fi 訊號弱的印表機增加此值',
- 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: '身份驗證器 App (TOTP)',
- totpDesc: '使用 Google Authenticator、Aegis 或 Authy 等 App。',
- emailOtpTitle: '郵件 OTP',
- emailOtpDesc: '登入時向 {{email}} 傳送一次性驗證碼。',
- emailOtpNoEmail: '請先為帳戶新增信箱地址以啟用此方式。',
- addEmailFirst: '您的帳戶沒有信箱地址,請聯絡管理員新增。',
- setupTotp: '設定身份驗證器 App',
- setupAuthApp: '設定身份驗證器 App',
- setupInstructions: '使用身份驗證器 App 掃描QR Code,然後輸入驗證碼確認。',
- manualEntry: '無法掃描?請手動輸入此金鑰:',
- scannedContinue: '已掃描 — 繼續',
- enterCodeToConfirm: '請輸入身份驗證器 App 中的6位驗證碼以確認設定。',
- activate: '啟用',
- disableTotp: '停用身份驗證器',
- disableConfirmHint: '請輸入有效的 TOTP 碼或備用碼來停用身份驗證器。',
- totpDisabled: '身份驗證器 App 已停用。',
- 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: '提供者已刪除。',
- refreshIcon: '重新整理圖示',
- removeIcon: '移除圖示',
- iconRefreshed: '圖示已重新整理。',
- iconRemoved: '圖示已移除。',
- iconFetchFailed: '無法從提供者 URL 取得圖示。',
- deleteTitle: '刪除提供者',
- deleteMessage: '刪除"{{name}}"?所有連結帳戶將斷開連線。',
- form: {
- name: '顯示名稱',
- issuerUrl: '頒發者 URL',
- clientId: '客戶端 ID',
- clientSecret: '客戶端金鑰',
- scopes: '作用域',
- iconUrl: '圖示 URL(可選)',
- enabled: '已啟用',
- autoCreate: '自動建立使用者',
- autoCreateDesc: '首次登入時自動建立本機帳戶。',
- autoLink: '自動連結已有帳戶',
- autoLinkDesc: '首次登入時透過信箱匹配現有本機帳戶並自動連結。',
- emailClaim: '電子郵件聲明',
- emailClaimDesc: "用作電子郵件身份的 JWT 聲明。Azure Entra ID 請使用 'preferred_username' 或 'upn'(不發送 email_verified)。僅使用可信的聲明名稱。",
- emailClaimPlaceholder: '電子郵件',
- emailClaimCustomClaimAutoLinkWarning: '自訂宣告僅在值由租用戶管理時(例如 Azure Entra ID 的 upn / preferred_username)對自動關聯安全。如果您的 IdP 允許使用者自我宣告此宣告,請勿啟用自動關聯。',
- requireEmailVerified: '要求電子郵件已驗證',
- requireEmailVerifiedDesc: '僅在提供商將電子郵件聲明標記為已驗證時才接受。',
- requireEmailVerifiedWarning: '警告:將在未經驗證的情況下接受電子郵件。僅對受信任的提供商使用。',
- requireEmailVerifiedAutoLink: '請先停用自動連結以變更此設定。',
- secretHint: '留空以保留目前',
- secretPlaceholder: '新金鑰',
- defaultGroup: '預設群組',
- defaultGroupDesc: '自動建立使用者時分配的群組。未設定時回退到 Viewers。',
- defaultGroupViewersFallback: 'Viewers(預設)',
- },
- },
- // TODO: translate encryption keys
- encryption: {
- title: 'MFA 加密狀態',
- enabledFromEnv: '已啟用靜態加密(金鑰來自 MFA_ENCRYPTION_KEY 環境變數)',
- enabledFromFile: '已啟用靜態加密(金鑰從資料目錄載入)',
- enabledGenerated: '使用自動產生的金鑰啟用靜態加密',
- notConfigured: '未設定靜態加密',
- notConfiguredDesc: 'TOTP 機密和 OIDC client_secrets 以明文儲存。請設定 MFA_ENCRYPTION_KEY 或使用可寫資料目錄重新啟動 Bambuddy 以自動產生。',
- allEncrypted: '所有 MFA 機密皆已靜態加密。',
- legacyRowsLabel: '舊版明文列',
- encryptedRowsLabel: '已加密列',
- legacyRowsWarning: '偵測到 {{count}} 個舊版明文列。請重新儲存 OIDC 供應商或重新註冊使用者的身份驗證器應用程式,以遷移到加密儲存。',
- backupHint: '自動產生的金鑰儲存在 DATA_DIR/.mfa_encryption_key 中,並包含在本機備份 ZIP 中。請保護備份安全或顯式設定 MFA_ENCRYPTION_KEY。',
- decryptionBrokenTitle: '加密金鑰遺失',
- decryptionBrokenError: '無法解密 {{count}} 條加密記錄,因為加密金鑰不再可用。請還原先前的 MFA_ENCRYPTION_KEY 或 DATA_DIR/.mfa_encryption_key 以恢復存取。',
- migrationErrorWarning: '{{count}} 行舊資料在啟動時未能重新加密。請檢查伺服器日誌並重新啟動 Bambuddy 以重試。',
- },
- },
- // 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: '身份驗證器 App',
- methodEmail: '信箱驗證碼',
- methodBackup: '備用恢復碼',
- instructionsTotp: '請開啟您的身份驗證器 App,輸入 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: '切換腔室燈',
- unavailable: '攝影機無法使用',
- diagnose: {
- button: '診斷',
- modalTitle: '攝影機診斷',
- running: '正在執行診斷...',
- runFailed: '無法執行診斷: {{error}}',
- retry: '重新執行',
- stage: {
- tcp_reachable: '網路可達性',
- first_frame: '畫面擷取',
- live_stream_active: '直播串流進行中',
- },
- summary: {
- all_ok: '攝影機運作正常。診斷已成功完成所有階段。',
- live_stream_active_healthy: '攝影機正在傳輸最新畫面 — 無需測試。',
- printer_unreachable: '無法存取印表機。請檢查 IP 位址、網路連線以及印表機是否已開機。',
- camera_port_closed: '印表機可存取,但攝影機連接埠已關閉。請確認印表機設定中已啟用僅 LAN 模式與開發者模式。',
- no_frame: '已連線到攝影機,但未收到畫面。請重試或檢查印表機設定中攝影機是否已啟用。',
- unknown_failure: '攝影機診斷因不明原因失敗。請查看支援日誌了解詳情。',
- },
- meta: {
- protocol: '協定',
- port: '連接埠',
- profile: '設定檔',
- },
- },
- },
- // 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 個字元',
- ldapProvisioned: '已建立 LDAP 使用者「{{username}}」',
- },
- modal: {
- createUser: '建立使用者',
- editUser: '編輯使用者',
- cancel: '取消',
- creating: '建立中...',
- saving: '儲存中...',
- saveChanges: '儲存更改',
- advancedAuthSubtitle: '使用進階認證',
- // Manual LDAP provisioning (#1298) — English fallbacks
- tabsAriaLabel: '使用者來源',
- localTab: '本機',
- ldapTab: 'LDAP',
- ldapSearchLabel: '搜尋目錄',
- ldapSearchPlaceholder: '輸入使用者名稱、姓名或電子郵件...',
- ldapMinChars: '輸入至少 2 個字元以搜尋',
- ldapTypeToSearch: '開始輸入以搜尋 LDAP 目錄',
- ldapSearching: '搜尋目錄中...',
- ldapNoResults: '目錄中沒有符合的使用者',
- ldapSearchError: '目錄搜尋失敗。請檢查 LDAP 伺服器狀態。',
- ldapAlreadyProvisioned: '已建立',
- ldapSelectedLabel: '已選',
- ldapProvision: '建立使用者',
- ldapProvisioning: '建立中...',
- ldapErrorProvision: '建立失敗。請檢查 LDAP 伺服器狀態後重試。',
- },
- 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: '輸入驗證器 App 中的 6 位驗證碼',
- accessToken: '存取權杖',
- accessTokenHint: '貼上您的拓竹雲端存取權杖。中國大陸帳號(綁定手機號碼、無 Email 登入)僅能使用此方式登入。可從 MakerWorld 瀏覽器 Cookie 取得權杖,詳見 Wiki。',
- back: '返回',
- loginButton: '登入',
- verifyButton: '驗證',
- setTokenButton: '設定權杖',
- useToken: '改用存取權杖',
- useEmail: '改用信箱登入',
- toast: {
- loggedIn: '登入成功',
- codeSent: '驗證碼已傳送到您的信箱',
- enterTotp: '輸入驗證器 App 中的程式碼',
- 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: '您沒有切片檔案的權限',
- 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 構建',
- urlLabel: '網址',
- urlPlaceholder: 'https://makerworld.com/...',
- urlInvalid: '網址必須以 http:// 或 https:// 開頭',
- openExternalUrl: '開啟專案網址',
- coverImageLabel: '封面圖片',
- coverImageAlt: '專案封面圖片',
- coverImageUpload: '上傳',
- coverImageReplace: '替換',
- coverImageRemove: '移除',
- descriptionPlaceholder: '可選描述...',
- 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: '切片模型',
- action: '切片',
- slicing: '切片中…',
- printer: '印表機設定檔',
- process: '製程設定檔',
- filament: '耗材設定檔',
- filamentSlot: '耗材 {{index}}({{type}})',
- selectPreset: '— 選擇預設 —',
- loadingPresets: '載入預設中…',
- analyzingPlateFilaments: '分析列印板耗材中…',
- analyzingPlateFilamentsHint: '正在執行預覽切片以發現此列印板使用的 AMS 插槽。之後會快取 — 重新開啟是即時的。',
- previewToast: '分析 {{name}} — {{elapsed}}',
- previewWithProgress: '分析 {{name}} — {{stage}} ({{percent}}%) — {{elapsed}}',
- notUsedByPlate: '— 此列印板未使用',
- printerMismatch: '此 3MF 是為 {{source}} 切片的,但您選擇了 {{target}}。切片器 CLI 無法為不同的印表機重新切片 3MF — 請在 Bambu Studio 中開啟原始檔案,變更印表機並重新匯出。',
- noPresetsForSlot: '無可用預設',
- presetsLoadFailed: '載入預設失敗。請先開啟設定 → 設定檔以匯入。',
- allPresetsRequired: '必須選擇所有預設',
- enqueuing: '提交切片任務中…',
- queued: '已排隊…',
- failed: '切片失敗。請檢查切片器 sidecar 日誌。',
- startedToast: '在背景切片 {{name}}…',
- queuedToast: '已排隊:{{name}} — {{elapsed}}',
- runningToast: '切片 {{name}} — {{elapsed}}',
- runningWithProgress: '{{name}} – {{stage}} ({{percent}}%) – {{elapsed}}',
- completedToast: '已切片 {{name}}',
- failedToast: '切片 {{name}} 失敗:{{detail}}',
- tier: {
- local: '已匯入',
- cloud: '雲端',
- standard: '標準',
- },
- cloud: {
- notAuthenticated: '登入 Bambu Cloud(設定 → 設定檔 → 雲端)以查看雲端預設。',
- expired: 'Bambu Cloud 工作階段已過期 — 請重新登入以重新整理雲端預設。',
- unreachable: '目前無法存取 Bambu Cloud。本機和標準預設仍可使用。',
- },
- bedType: {
- label: '列印板',
- auto: '自動(使用製程預設)',
- coolPlate: '冷板',
- coolPlateSuperTack: 'Cool Plate SuperTack',
- engineering: 'Engineering Plate',
- highTemp: 'High Temp Plate',
- texturedPEI: 'Textured PEI Plate',
- smoothPEI: 'Smooth PEI Plate',
- },
- },
- // Spoolman
- spoolman: {
- title: 'Spoolman 整合',
- enabled: 'Spoolman 已啟用',
- url: 'Spoolman URL',
- connected: '已連線',
- disconnected: '未連線',
- testConnection: '測試連線',
- sync: '同步',
- syncing: '同步中...',
- lastSync: '上次同步',
- linkToSpoolman: '連結到 Spoolman',
- openInSpoolman: '在 Spoolman 中開啟',
- unlinkSpool: '取消連結耗材',
- unlinkConfirmTitle: '取消指派料盤?',
- unlinkConfirmMessage: '這將從此插槽中移除料盤。料盤本身的資料將保持不變。',
- selectSpool: '選擇耗材',
- noUnlinkedSpools: '無未指派的料盤',
- linkSuccess: '料盤指派成功',
- linkFailed: '料盤指派失敗',
- unlinkSuccess: '料盤取消指派成功',
- unlinkFailed: '料盤取消指派失敗',
- linkedSpool: '已指派料盤',
- spoolId: '耗材 ID',
- fillSourceLabel: '(Spoolman)',
- weight: '重量',
- remaining: '剩餘',
- disableWeightSync: '停用 AMS 估計重量同步',
- disableWeightSyncDesc: '不從 AMS 估計值更新剩餘容量。如果您更喜歡 Spoolman 的用量追蹤而非 AMS 百分比估計,請使用此選項。新耗材仍將使用 AMS 估計值作為初始重量。',
- reportPartialUsage: '報告失敗列印的部分用量',
- reportPartialUsageDesc: '當列印失敗或被取消時,根據層進度報告估計的耗材使用量。',
- },
- // Inventory
- inventory: {
- title: '耗材庫存',
- subtitle: '管理您的料盤',
- 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',
- labels: {
- title: '列印線材標籤',
- selectedCount: '已選 {{count}} 項',
- pickSpools: '選擇要列印標籤的線材:',
- searchPlaceholder: '按名稱、品牌或 #ID 搜尋',
- filterByMaterial: '材料:',
- allMaterials: '全部',
- selectVisible: '選擇所有可見 ({{count}})',
- deselectVisible: '取消選擇可見',
- clearAll: '全部清除',
- noSpoolsToShow: '沒有要顯示的線材。請調整篩選條件後重試。',
- noMatches: '沒有線材符合目前搜尋或篩選。',
- printOne: '列印此線材的標籤',
- printLabels: '列印標籤…',
- bulkTitle: '從目前顯示的 {{count}} 個線材中選擇要列印標籤的',
- noSpoolsTitle: '沒有要貼標籤的線材',
- error: '無法產生標籤:{{msg}}',
- sortBy: {
- label: '排序:',
- id: '按 ID',
- color: '按顏色',
- },
- templates: {
- ams: {
- label: 'AMS holder (30 × 15 mm)',
- hint: '每頁一個標籤;適用於熱門的 AMS 耗材標籤托架。',
- },
- box40x30: {
- label: '盒標籤 (40 × 30 mm)',
- hint: '每頁一張;常見的 DK/Brother 捲尺寸,適合用於耗材袋與儲物盒標籤。',
- },
- box: {
- label: 'Box label (62 × 29 mm)',
- hint: '每頁一個標籤;適配 Brother PT/QL 和 Dymo 小標籤。',
- },
- averyL7160: {
- label: 'Avery L7160 — A4 sheet (38.1 × 63.5 mm × 21)',
- hint: '歐洲規格紙張;每張 A4 頁 21 個標籤。',
- },
- avery5160: {
- label: 'Avery 5160 — US Letter sheet (25.4 × 66.7 mm × 30)',
- hint: '美國規格紙張;每張 Letter 頁 30 個標籤。',
- },
- },
- },
- addSpool: '新增耗材',
- editSpool: '編輯耗材',
- copySpool: '複製耗材',
- material: '材料',
- selectMaterial: '選擇材料...',
- subtype: '子類型',
- brand: '品牌',
- searchBrand: '搜尋品牌...',
- useCustomBrand: '使用"{{brand}}"',
- useCustomMaterial: '使用自訂材料:{{material}}',
- colorName: '顏色名稱',
- colorNamePlaceholder: '翡翠白、烈焰紅...',
- color: '顏色',
- hexColor: '十六進位顏色',
- pickColor: '選擇自訂顏色',
- labelWeight: '標籤重量',
- coreWeight: '空盤重量',
- searchSpoolWeight: '搜尋耗材重量...',
- weightUsed: '已使用',
- currentWeight: '剩餘重量',
- measuredWeight: '稱量重量',
- spoolName: '料盤',
- costPerKg: '每公斤成本',
- storageLocation: '存放位置',
- storageLocationPlaceholder: '例如:貨架A,抽屜1',
- openInInventory: '在庫存中查看',
- 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: '未分類',
- storageLocationNone: '未設定位置',
- 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: '顯示所有耗材',
- spoolmanSpools: 'Spoolman 線軸',
- allMaterials: '所有材料',
- filterByBrand: '按品牌篩選...',
- showArchived: '顯示已歸檔',
- quickAdd: '快速新增(庫存)',
- quantity: '數量',
- stock: '庫存',
- configured: '已設定',
- spoolsCreated: '已建立 {{count}} 個耗材',
- spoolsPartiallyCreated: '已建立 {{created}} / {{total}} 個耗材(部分失敗)',
- spoolCreated: '耗材已建立',
- spoolUpdated: '耗材已更新',
- spoolDeleted: '耗材已刪除',
- deepLinkSpoolNotFound: '找不到耗材',
- deepLinkFetchFailed: '無法載入耗材 — 請重試',
- spoolArchived: '耗材已歸檔',
- spoolRestored: '耗材已恢復',
- kProfileSaveFailed: 'K值設定檔設定無法儲存',
- syncWeightSpoolNotFound: '找不到耗材 — 可能已被刪除',
- syncWeightSpoolmanUnreachable: 'Spoolman 無法存取 — 請稍後再試',
- syncWeightFailed: '重量同步失敗',
- spoolmanUnreachable: 'Spoolman 無法存取 — 請稍後再試',
- deleteSpoolNotFound: '找不到耗材 — 可能已被刪除',
- deleteFailed: '刪除耗材失敗',
- archiveSpoolNotFound: '找不到耗材 — 可能已被刪除',
- archiveFailed: '歸檔耗材失敗',
- restoreSpoolNotFound: '找不到耗材 — 可能已被刪除',
- restoreFailed: '恢復耗材失敗',
- saveFailed: '儲存變更失敗',
- tagClearFailed: '清除標籤失敗',
- 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: '自開始追蹤',
- resetUsage: '將用量重置為 0',
- resetUsageTooltip: '將此料盤的已消耗克數計數器歸零',
- resetUsageConfirm: '將此料盤的已消耗克數計數器重置為 0?後續列印將從零開始計算。料盤本身、剩餘重量計算與您的設定均不會變更。',
- resetAllUsage: '重置所有料盤的用量',
- resetAllUsageTooltip: '將每個料盤的已消耗克數計數器歸零',
- resetAllUsageConfirm: '將全部 {{count}} 個料盤(含已封存)的已消耗克數計數器重置為 0?這將清空「累計消耗」統計值,後續列印從零開始計算。料盤與剩餘重量不會變更。',
- usageReset: '料盤用量已重置為 0',
- allUsageReset: '已重置 {{count}} 個料盤',
- resetUsageFailed: '重置料盤用量失敗',
- 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 之間',
- // Spoolman filament catalog picker
- spoolmanFilamentCatalog: 'Spoolman 耗材目錄',
- pickFromSpoolmanCatalog: '從 Spoolman 目錄選擇…',
- spoolmanFilamentSelected: '已從 Spoolman 目錄選擇耗材',
- spoolmanFilamentUnlinked: '已解除耗材目錄關聯',
- noSpoolmanFilaments: 'Spoolman 目錄中未找到耗材',
- spoolmanFilamentColorSwatch: '耗材顏色',
- spoolWeightManagedBySpoolman: '空線軸重量在 Spoolman 中按耗材類型管理',
- spoolmanCatalogLoadFailed: '無法載入 Spoolman 耗材目錄',
- },
- // 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: '錯開印表機啟動',
- staggerGroupSize: '群組大小',
- staggerInterval: '間隔(分鐘)',
- staggerPreview: '{{printers}} 台印表機 → 分成 {{groups}} 組,每組 {{size}} 台,每 {{interval}} 分鐘啟動一組',
- staggerLastGroup: '最後一組:{{count}}',
- staggerTotal: '總計:{{minutes}} 分鐘',
- staggerToPrinters: '分批傳送到 {{count}} 臺印表機',
- gcodeInjection: '注入自動列印G-code',
- },
- // Backup
- backup: {
- includesEncryptionKey: '本機備份包含 MFA 加密金鑰檔案(DATA_DIR/.mfa_encryption_key),因此備份 ZIP 是自包含的。請將 ZIP 視為敏感檔案 — 任何擁有該檔案的人都可以解密內部儲存的 OIDC 用戶端機密和 TOTP 機密。',
- 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: '需要雲端登入',
- githubDescription: '自動將您的設定檔案同步到私有 GitHub 倉庫以進行備份和版本歷史紀錄。',
- repoIsPrivate: '儲存庫為私有 — 可安全備份。',
- repoIsPublicWarning: '儲存庫為公開(PUBLIC)。Bambuddy 備份包含 MQTT 認證、Home Assistant 權杖、Prometheus 權杖、您的 Bambu Cloud 電子郵件,以及透過 K-profile 暴露的印表機存取碼。在您於服務商設定中將儲存庫改為私有之前,儲存將被阻擋。',
- repoVisibilityUnknown: '無法確認儲存庫的可見性。Bambuddy 拒絕向任何未確認為私有的目標進行備份;儲存將被阻擋。',
- 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 供應商',
- 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: '排程備份',
- scheduledBackupDescription: '依排程自動建立備份快照。輸出目錄可掛載到 NAS 或外部儲存。',
- frequency: '頻率',
- backupTime: '時間',
- retention: '保留',
- retentionDescription: '保留的備份數量',
- outputPath: '輸出路徑',
- outputPathPlaceholder: '預設:{{path}}',
- outputPathDescription: '留空以使用預設位置',
- runNow: '立即執行',
- backupFiles: '備份檔案',
- noScheduledBackups: '尚無備份',
- deleteBackup: '刪除',
- deleteBackupConfirm: '要刪除此備份檔案嗎?',
- backupRunning: '備份進行中…',
- scheduledBackupComplete: '備份已成功完成',
- scheduledBackupFailed: '備份失敗',
- nextBackup: '下次備份',
- backupSize: '大小',
- utc: 'UTC',
- defaultPathLabel: '預設:',
- // 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: '強制顏色匹配',
- description: '拒絕派發到沒有完全相同耗材類型和顏色的印表機。預設關閉 — 不啟用時,佇列僅按型號匹配,可能選到顏色錯誤的印表機。',
- },
- tailscaleDisabled: {
- title: 'Tailscale 整合',
- description: '啟用以將此 VP 標記為透過 Tailscale 公開。顯示主機的 Tailscale 位址,以便您知道要貼上到切片器中的 IP。CA 匯入步驟保持不變 — 此切換對憑證無影響。',
- },
- 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: '在列印之間保持啟用而非一次性',
- autoOffAfterDrying: '乾燥完成後自動關閉',
- autoOffAfterDryingDescription: 'AMS 乾燥完成後關閉',
- delayAfterDryingMinutes: '乾燥後延遲(分鐘)',
- 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: '控制',
- restOnUrl: '開啟 URL',
- restOffUrl: '關閉 URL',
- restOnBody: '開啟請求內容',
- restOffBody: '關閉請求內容',
- restMethod: 'HTTP 方法',
- restHeaders: '自訂標頭(JSON)',
- restStatusUrl: '狀態 URL',
- restStatusPath: '狀態 JSON 路徑',
- restStatusOnValue: 'ON 值',
- restPowerUrl: '功率URL',
- restPowerPath: '功率 JSON 路徑',
- restPowerMultiplier: '功率乘數',
- restEnergyUrl: '能耗URL',
- restEnergyPath: '能耗 JSON 路徑',
- restEnergyMultiplier: '能耗乘數',
- restUrlRequired: 'REST 插座至少需要一個 URL(ON 或 OFF)',
- restHeadersHint: '例如:{"Authorization": "Bearer your-token"}',
- restBodyHint: '例如:ON、{"state": "on"}',
- restStatusHint: '用於輪詢目前狀態的 URL',
- restPathHint: '例如:state 或 data.power.status',
- restPowerUrlHint: '功率資料的獨立URL(留空則使用狀態URL)',
- restEnergyUrlHint: '能耗資料的獨立URL(留空則使用狀態URL)',
- restEnergyHint: '每個值可以使用獨立的URL,或回退到狀態 URL。使用乘數進行單位轉換(例如:0.001 將 Wh 轉換為 kWh)。',
- testConnection: '測試連線',
- connectionSuccess: '連線成功',
- 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 溫度超過閾值',
- // Inventory stock alert events
- inventoryAlerts: '庫存警報',
- stockReorderAlert: '補貨警報',
- stockReorderAlertDescription: 'SKU 已達到補貨點',
- stockBreakAlert: '斷貨警報',
- stockBreakAlertDescription: '庫存將在補貨到達前耗盡',
- // 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: '建立耗材失敗',
- incompleteDataWarning: '已使用不完整的Spoolman資料寫入標籤',
- },
- 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: '尚未設定外部 URL。',
- externalUrlHint: 'ML API 透過 URL 擷取攝影機快照。請在一般設定中設定外部 URL,讓 ML API 容器可以連線到 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: '為 {{printer}} 切片',
- alsoCompatible: '還標記為相容:{{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: '無法從資料庫中移除檔案。',
- },
- },
- gcodeViewer: {
- back: '返回',
- backToArchives: '返回列印歸檔',
- backToFiles: '返回檔案管理器',
- },
- 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: '點擊清除時會發生什麼',
- effect1: '符合的檔案移至回收筒 — 尚未從磁碟刪除。',
- effect2: '在保留期到期之前,您可以隨時從回收筒復原。',
- effect3: '保留期滿後,回收筒清理器將它們從磁碟永久刪除。',
- effect4: '外部(連結)資料夾中的檔案將被略過 — Bambuddy 從不刪除不屬於自己的位元組。', 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: '清除舊條目',
- headerTooltip: '批次刪除舊歸檔',
- title: '清除舊歸檔',
- description: '清除舊的列印歷史。每個歸檔按其最近一次列印完成時間老化 — 重新列印歸檔會重新整理其年齡,因此活躍工作永遠不會被清除。',
- ageLabel: '刪除最近未列印的歸檔:',
- days: '天',
- effectsTitle: '點擊清除時會發生什麼',
- effect1: '每個符合的歸檔將從清單中隱藏,其磁碟檔案(3MF、縮圖、縮時攝影、原始 3MF、F3D、照片)也會被刪除。',
- effect2: '資料庫中的歸檔記錄會保留,因此 Quick Stats 仍可計入耗材、時間、成本與能耗的貢獻 — 與單筆刪除的預設行為一致。',
- effect3: '勾選下方「同時從統計中移除」,可一併清除 Quick Stats 中的貢獻(等同單筆刪除選項)。此操作無法復原。',
- effect4: '重新列印歸檔會重新整理其使用計時器,因此仍在使用的歸檔不會被清除。',
- purgeStatsLabel: '同時從統計中移除',
- purgeStatsHint: '從 Quick Stats(耗材、時間、成本、能耗)中移除符合的歸檔。未勾選時,Quick Stats 會保留所有貢獻,僅檔案從磁碟刪除。',
- previewLoading: '檢查符合的歸檔數量…',
- previewFailed: '無法預覽清除。',
- previewSummary: '將移除 {{count}} 個歸檔 · {{size}}',
- andMore: '…還有 {{count}} 個',
- warning: '檔案會從磁碟刪除且無法復原。繼續前請下載或收藏您想保留的內容。',
- confirmCta: '移除 {{count}} 個歸檔',
- purging: '移除中…',
- toast: {
- success: '已移除 {{count}} 個歸檔。',
- failed: '無法清除歸檔。',
- },
- },
- archiveAutoPurge: {
- enableLabel: '自動清除舊歸檔',
- enableDescription: '每天一次,將閾值內未列印的歸檔從清單中隱藏,並從磁碟中刪除其檔案。重新列印會重設計時器。',
- ageLabel: '自動刪除最近未列印的歸檔:',
- ageDescription: '最少 7 天,最多 10 年。基於最近一次列印完成 — 重新列印會重新整理年齡。刪除 3MF、縮圖、縮時攝影、原始 3MF、F3D 與照片。',
- days: '天',
- purgeStatsLabel: '同時從統計中移除',
- purgeStatsDescription: '啟用後,每日清理任務還會將每個被清除的歸檔從 Quick Stats(耗材、時間、成本、能耗)中移除。預設關閉 — Quick Stats 會保留貢獻,僅檔案從磁碟刪除。',
- runNow: '立即清除歸檔',
- saveFailed: '無法儲存自動清除設定。',
- },
- cameraTokens: {
- title: '攝影機 API 權杖',
- navTitle: '攝影機 API 權杖',
- description:
- '長期權杖,用於將攝影機串流嵌入 Home Assistant、Frigate、資訊站或其他需要穩定 URL 的工具。每個權杖僅限攝影機串流,可隨時撤銷。',
- loading: '載入中…',
- confirmRevoke: {
- title: '撤銷此權杖?',
- body: '使用「{{name}}」的任何裝置將立即失去存取權限。此操作無法復原。',
- cancel: '取消',
- confirm: '撤銷',
- },
- create: {
- title: '建立新權杖',
- nameLabel: '權杖名稱',
- namePlaceholder: '例如 Home Assistant',
- daysLabel: '到期天數',
- submit: '建立',
- hint:
- '最大有效期 365 天。權杖值僅在建立時顯示一次 — 請立即複製。',
- },
- created: {
- title: '權杖已建立 — 立即複製',
- warning:
- '這是此權杖唯一一次可見。關閉此對話框後您將無法再次查看。',
- copy: '複製',
- dismiss: '我已儲存',
- },
- list: {
- myTitle: '我的權杖',
- allTitle: '所有使用者(管理員視圖)',
- empty: '尚無權杖。',
- name: '名稱',
- owner: '擁有者',
- prefix: '前綴',
- created: '建立時間',
- expires: '到期時間',
- lastUsed: '最近使用',
- revoke: '撤銷',
- expired: '已過期',
- },
- toast: {
- created: '權杖已建立',
- createFailed: '建立權杖失敗',
- revoked: '權杖已撤銷',
- revokeFailed: '撤銷權杖失敗',
- loadFailed: '載入權杖失敗',
- copied: '已複製到剪貼簿',
- copyFailed: '複製失敗 — 手動選擇並複製',
- },
- },
- // Forecast & Inventory Intelligence
- forecast: {
- title: '庫存預測',
- noSpools: '未找到活躍的料卷。請將料卷新增至庫存以查看預測資料。',
- noUsageData: '無可用使用資料 — 無法預測庫存時間線。',
- sku: 'SKU',
- // Table headers
- material: '材料',
- stock: '庫存',
- dailyRate: '消耗率',
- daysLeft: '剩餘天數',
- emptyBy: '耗盡日期',
- reorderBy: '補貨截止日',
- actions: '操作',
- // Rate tier badges
- trend: '趨勢',
- estimated: '估算',
- noData: '無資料',
- // Timeframe
- timeframe: '時間範圍',
- // Chart
- chartTitle: '庫存預測 — 前5種材料',
- dashedLinesROP: '虛線 = 再訂貨點',
- stockLevel: '庫存量',
- reorderPoint: '再訂購點',
- safetyMargin: '安全餘量',
- trendLegend: '趨勢(基於歷史,95%服務水準)',
- estimatedLegend: '估算(重量差值)',
- noDataLegend: '無資料',
- ropLabel: '再訂貨點',
- ssLabel: '安全庫存',
- safetyStockLegend: '安全庫存',
- stockArrivalLegend: '到貨',
- stockoutLegend: '斷貨',
- // Alerts toolbar
- alertCount_one: '{{count}}條警告',
- alertCount_other: '{{count}}條警告',
- order: '訂購',
- // Settings
- globalLeadTime: '全域交貨期',
- globalLeadTimeHint: '全域交貨期下限 — 用於所有 SKU 的再訂購點計算',
- save: '儲存',
- cancel: '取消',
- settingsSaved: '設定已儲存',
- failedSaveSettings: '儲存設定失敗',
- globalLeadTimeSaved: '全域提前期已儲存',
- skuLeadTimeOverride: 'SKU 交貨期覆蓋',
- skuLeadTimeHint: '0 = 使用全域交貨期。設定 >0 以覆蓋此 SKU。',
- safetyMarginLabel: '安全餘量',
- effectiveLeadTime: '有效交貨期',
- effectiveLeadTimeHint: 'max(全域 {{global}}天, SKU {{sku}}天)',
- reorderPointHint: 'd̄ × LT + safety margin — 當庫存降至此水準時下單',
- safetyMarginHint: '統計安全庫存 (z=1.65 × σ × √LT) + 使用者自訂緩衝',
- safetyMarginHintDays: '在統計安全庫存基礎上額外增加的緩衝。{{approx}}',
- safetyMarginHintDaysApprox: ' ≈ 按當前速率 {{g}}g。',
- safetyMarginHintG: '在統計安全庫存基礎上增加的固定重量緩衝。{{approx}}',
- safetyMarginHintGApprox: ' ≈ 按當前速率 {{days}}天。',
- individualSpools: '單個料卷',
- labelWeight: '標示重量',
- spoolCount_one: '{{count}}個線軸',
- spoolCount_other: '{{count}}個線軸',
- // Alerts
- stockBreakRisk: '斷貨風險',
- stockBreakBefore: '補貨前庫存斷檔',
- stockBreakDetail: '剩餘 {{days}} 天,交貨期 {{lt}} 天。',
- reorderNow: '立即補貨',
- reorderTriggerPassed: '觸發日期 {{date}} 已過。',
- // Shopping list
- shoppingList: '購物清單',
- shoppingListItems_one: '({{count}}項)',
- shoppingListItems_other: '({{count}}項)',
- shoppingListEmpty: '購物清單為空。點擊任意列的購物車圖示以新增商品。',
- addToCart: '新增至購物清單',
- alertsSnoozed: '靜音此SKU的提醒',
- alertsEnabled: '啟用此SKU的提醒',
- addedToCart: '已新增至購物清單',
- failedAddItem: '新增項目失敗',
- listView: '列表',
- logisticsView: '物流',
- qty: '數量',
- weight: '重量',
- leadTime: '交貨期',
- expectedRestock: '預計補貨日期',
- status: '狀態',
- note: '備註',
- pending: '待處理',
- purchased: '已購買',
- received: '已收貨',
- markPurchased: '標記為已購買',
- markReceived: '標記為已收貨 — 將料卷新增至庫存',
- resetToPending: '重置為待處理',
- remove: '移除',
- clearAll: '清空',
- downloadCsv: 'CSV',
- // Add to cart modal
- addToCartTitle: '新增至購物清單',
- byQuantity: '依數量',
- byDuration: '依時長',
- numberOfSpools: '線軸數量',
- lastHowManyDays: '需要持續多少天?',
- noUsageQty: '無使用資料 — 數量已設為1。',
- noteOptional: '備註(選填)',
- notePlaceholder: '例如:用於專案X,緊急…',
- addNSpools_one: '新增{{count}}個線軸',
- addNSpools_other: '新增{{count}}個線軸',
- // Cart logistics
- onArrival: '到貨時',
- stockBreakIn: '{{days}} 天後斷貨。',
- stockRunsOutBefore: '庫存在 {{lt}} 天交貨期結束前耗盡。',
- atRate: '按 {{rate}}g/天的速度,您需要',
- moreSpools_one: '再{{count}}個線軸',
- moreSpools_other: '再{{count}}個線軸',
- bridgeGap: '來彌補缺口。',
- // Permissions
- noReadAccess: '您沒有查看庫存預測的權限。',
- noWriteAccess: '您沒有修改預測設定的權限。',
- },
- };
|