| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334 |
- export default {
- // Navigation
- nav: {
- printers: '印表機',
- archives: '歸檔',
- queue: '佇列',
- stats: '統計',
- profiles: '設定檔案',
- maintenance: '維護',
- projects: '專案',
- inventory: '耗材',
- files: '檔案管理器',
- makerworld: 'MakerWorld',
- notifications: '通知',
- settings: '設定',
- system: '系統',
- collapseSidebar: '收起側邊欄',
- expandSidebar: '展開側邊欄',
- update: '更新',
- updateAvailable: '有可用更新:v{{version}}',
- updateAvailableBanner: '版本 {{version}} 已發布!',
- viewUpdate: '檢視更新',
- viewOnGithub: '在 GitHub 上檢視',
- keyboardShortcuts: '鍵盤快捷鍵 (?)',
- switchToLight: '切換到淺色模式',
- switchToDark: '切換到深色模式',
- smartSwitches: '智慧開關',
- logout: '登出',
- },
- // Common
- common: {
- save: '儲存',
- saving: '儲存中...',
- cancel: '取消',
- delete: '刪除',
- edit: '編輯',
- add: '新增',
- close: '關閉',
- confirm: '確認',
- loading: '載入中...',
- error: '錯誤',
- success: '成功',
- warning: '警告',
- enabled: '已啟用',
- disabled: '已停用',
- yes: '是',
- no: '否',
- on: '開',
- off: '關',
- all: '全部',
- none: '無',
- search: '搜尋',
- filter: '篩選',
- sort: '排序',
- refresh: '重新整理',
- download: '下載',
- upload: '上傳',
- uploading: '上傳中...',
- uploadFailed: '上傳失敗',
- actions: '操作',
- status: '狀態',
- name: '名稱',
- description: '描述',
- date: '日期',
- time: '時間',
- hours: '小時',
- minutes: '分鐘',
- seconds: '秒',
- days: '天',
- enable: '啟用',
- disable: '停用',
- permissions: '權限',
- noPrinters: '未設定印表機',
- noData: '尚無資料',
- linkNotFound: '未找到連結',
- required: '必填',
- optional: '可選',
- dismiss: '關閉',
- apply: '套用',
- reset: '重設',
- export: '匯出',
- import: '匯入',
- clear: '清除',
- selectAll: '全選',
- deselectAll: '取消全選',
- noChange: '— 不更改 —',
- unchanged: '未更改',
- unassigned: '未分配',
- unknown: '未知',
- unknownError: '未知錯誤',
- today: '今天',
- tomorrow: '明天',
- asap: '儘快',
- overdue: '已逾期',
- now: '現在',
- collapse: '收起',
- expand: '展開',
- viewArchive: '檢視歸檔',
- viewInFileManager: '在檔案管理器中檢視',
- addedBy: '由 {{username}} 新增',
- prints: '次列印',
- more: '還有 {{count}} 個',
- ascending: '升序',
- descending: '降序',
- back: '返回',
- copy: '複製',
- copied: '已複製!',
- printer: '印表機',
- remove: '移除',
- type: '類型',
- print: '列印',
- rename: '重新命名',
- move: '移動',
- create: '建立',
- duplicate: '複製',
- left: '左',
- right: '右',
- },
- // Printers page
- printers: {
- title: '印表機',
- addPrinter: '新增印表機',
- editPrinter: '編輯印表機',
- deletePrinter: '刪除印表機',
- printerName: '印表機名稱',
- serialNumber: '序列號',
- ipAddress: 'IP 位址 / 主機名稱',
- accessCode: '存取碼',
- model: '型號',
- nozzleCount: '噴嘴數量',
- autoArchive: '自動歸檔',
- status: {
- available: '可用',
- idle: '空閒',
- printing: '列印中',
- paused: '已暫停',
- offline: '離線',
- problem: '故障',
- error: '錯誤',
- finished: '已完成',
- unknown: '未知',
- },
- temperatures: {
- nozzle: '噴嘴',
- bed: '熱床',
- chamber: '腔室',
- },
- progress: '{{percent}}% 完成',
- timeRemaining: '剩餘 {{time}}',
- deleteConfirm: '確定要刪除"{{name}}"嗎?',
- maintenanceOk: '維護正常',
- maintenanceWarning: '{{count}} 個警告',
- maintenanceWarning_plural: '{{count}} 個警告',
- maintenanceDue: '{{count}} 個到期',
- maintenanceDue_plural: '{{count}} 個到期',
- // Sort options
- sort: {
- name: '名稱',
- status: '狀態',
- model: '型號',
- location: '位置',
- ascending: '升序排列',
- descending: '降序排列',
- },
- // Card size
- cardSize: {
- small: '小卡片',
- medium: '中卡片',
- large: '大卡片',
- extraLarge: '超大卡片',
- },
- // Controls
- hideOffline: '隱藏離線',
- nextAvailable: '下一個可用',
- powerOn: '開機',
- offlinePrintersWithPlugs: '帶智慧插座的離線印表機',
- noPrintersConfigured: '尚未設定印表機',
- search: '搜尋印表機...',
- noSearchResults: '沒有印表機符合您的搜尋或篩選條件',
- filter: {
- allStatuses: '所有狀態',
- allLocations: '所有位置',
- },
- // Printer card
- readyToPrint: '準備列印',
- external: '外部',
- extL: '外接左',
- extR: '外接右',
- deleteArchives: '刪除列印歸檔',
- noLabel: '無標籤',
- printPreview: '列印預覽',
- width: '寬度',
- height: '高度',
- noObjectsFound: '未找到物件',
- objectsLoadedOnPrintStart: '物件在列印開始時載入',
- willBeSkipped: '將被跳過',
- name: '名稱',
- serialCannotBeChanged: '序列號無法更改',
- locationHelp: '用於分組印表機和篩選佇列任務',
- // WiFi signal strength
- wifiSignal: {
- veryWeak: '非常弱',
- weak: '弱',
- fair: '一般',
- good: '良好',
- excellent: '優秀',
- },
- // Maintenance
- maintenanceUpToDate: '所有維護均已完成 - 點選檢視',
- // Chamber light
- chamberLightOn: '開啟腔室燈',
- chamberLightOff: '關閉腔室燈',
- // Files
- files: '檔案',
- browseFiles: '瀏覽印表機檔案',
- // Smart plug
- autoOffAfterPrint: '列印後自動關機',
- autoOffExecuted: '已執行自動關機 - 開啟印表機以重設',
- // HMS errors
- hmsErrors: 'HMS 錯誤',
- viewHmsErrors: '檢視 {{count}} 個 HMS 錯誤',
- // Actions
- resume: '繼續',
- pause: '暫停',
- stop: '停止',
- camera: '攝影機',
- skipObject: '跳過物件',
- reconnect: '重新連線',
- forceRefresh: '強制重新整理',
- forceRefreshSuccess: '已請求重新整理',
- mqttDebug: 'MQTT 偵錯',
- printerInformation: '印表機資訊',
- copyToClipboard: '複製',
- copied: '已複製!',
- state: '狀態',
- wifiSignalLabel: '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: '新增印表機失敗',
- 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 重新讀取',
- },
- // 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',
- },
- bedJog: {
- title: '移動熱床',
- bed: '熱床',
- step: '步長 (mm)',
- up: '熱床上移',
- down: '熱床下移',
- disabledWhilePrinting: '列印中已停用',
- notHomedTitle: '印表機未歸零',
- notHomedMessage: '印表機自上次列印以來尚未歸零。請先執行自動歸零以確保安全定位(先停放噴頭,然後歸零 X、Y 和 Z),或者直接移動 — 軟限位將被繞過。',
- homeZ: '自動歸零',
- moveAnyway: '強制移動',
- homingStarted: '印表機自動歸零中…',
- },
- // Permissions
- permission: {
- noAdd: '您沒有新增印表機的權限',
- noEdit: '您沒有編輯印表機的權限',
- noDelete: '您沒有刪除印表機的權限',
- noControl: '您沒有控制印表機的權限',
- noFiles: '您沒有存取印表機檔案的權限',
- noAmsRfid: '您沒有重新讀取 AMS RFID 的權限',
- noSmartPlugControl: '您沒有控制智慧插座的權限',
- noCamera: '您沒有檢視攝影機的權限',
- },
- // Add/Edit modal
- modal: {
- addTitle: '新增印表機',
- editTitle: '編輯印表機',
- myPrinter: '我的印表機',
- selectModel: '選擇型號...',
- locationGroup: '位置 / 分組(可選)',
- locationPlaceholder: '例如:工作室、辦公室、地下室',
- autoArchiveLabel: '自動歸檔已完成的列印',
- fromPrinterSettings: '來自印表機設定',
- modelOptional: '型號(可選)',
- saveChanges: '儲存更改',
- },
- // Skip objects
- skipObjects: {
- tooltip: '跳過物件',
- onlyWhilePrinting: '跳過物件(僅在列印時)',
- requiresMultiple: '跳過物件(需要2個以上物件)',
- title: '跳過物件',
- matchIdsInfo: '將 ID 與印表機螢幕上的 ID 進行對照',
- printerShowsIds: '印表機螢幕上顯示列印板上物件的 ID',
- skipSelected: '跳過所選',
- skipping: '跳過中...',
- noObjectsSelected: '未選擇物件',
- selectObjectsToSkip: '選擇要從目前列印中跳過的物件',
- skipped: '已跳過',
- objectsSkipped: '物件已跳過',
- activeCount: '{{count}} 個活躍',
- waitForLayer: '等待第2層以上才能跳過物件(目前第 {{layer}} 層)',
- skip: '跳過',
- confirmTitle: '跳過物件?',
- confirmMessage: '確定要跳過"{{name}}"嗎?此操作無法復原。',
- },
- // Confirm modals
- confirm: {
- deleteTitle: '刪除印表機',
- deleteMessage: '確定要刪除"{{name}}"嗎?這將移除所有連線設定。',
- deleteArchivesNote: '此印表機的所有列印歷史將被永久刪除。',
- keepArchivesNote: '列印歷史將保留,但不再與此印表機連結。',
- stopTitle: '停止列印',
- stopMessage: '確定要停止"{{name}}"上的目前列印嗎?這將取消列印任務。',
- stopButton: '停止列印',
- pauseTitle: '暫停列印',
- pauseMessage: '確定要暫停"{{name}}"上的目前列印嗎?',
- pauseButton: '暫停列印',
- resumeTitle: '繼續列印',
- resumeMessage: '確定要繼續"{{name}}"上的列印嗎?',
- resumeButton: '繼續列印',
- powerOnTitle: '開啟印表機',
- powerOnMessage: '確定要開啟"{{name}}"的電源嗎?',
- powerOnButton: '開機',
- powerOffTitle: '關閉印表機',
- powerOffMessage: '確定要關閉"{{name}}"的電源嗎?',
- powerOffWarning: '警告:"{{name}}"正在列印中!確定要關閉電源嗎?這將中斷列印並可能損壞印表機。',
- powerOffButton: '關機',
- },
- // Bulk actions
- bulk: {
- select: '選擇',
- selectAll: '全選',
- selectByLocation: '按位置選擇',
- selected: '已選擇{{count}}臺',
- actions: {
- stop: '停止',
- pause: '暫停',
- resume: '繼續',
- clearPlate: '清除列印床',
- clearHMS: '清除通知',
- },
- confirm: {
- stopTitle: '停止{{count}}個列印任務',
- stopMessage: '這將取消{{count}}臺印表機上的活動列印任務。此操作無法復原。',
- stopButton: '全部停止',
- pauseTitle: '暫停{{count}}個列印任務',
- pauseMessage: '這將暫停{{count}}臺印表機上的活動列印任務。',
- pauseButton: '全部暫停',
- clearPlateTitle: '清除{{count}}個列印床',
- clearPlateMessage: '這將清除{{count}}臺印表機的列印床,可能會觸發佇列中的任務。',
- clearPlateButton: '全部清除',
- },
- success: '{{action}}已在{{count}}臺印表機上完成',
- partial: '{{succeeded}}成功,{{failed}}失敗',
- noneApplicable: '沒有選中的印表機處於適合此操作的狀態',
- selectByState: '按狀態選擇',
- },
- // Discovery
- discovery: {
- title: '發現印表機',
- searching: '搜尋中...',
- scanning: '掃描中...',
- scanProgress: '掃描中... {{scanned}}/{{total}}',
- foundPrinters: '發現 {{count}} 臺印表機',
- noPrintersFound: '未找到印表機',
- noPrintersFoundSubnet: '在指定子網中未找到印表機。',
- noPrintersFoundNetwork: '在網路上未找到印表機。',
- allConfigured: '所有發現的印表機已設定完畢。',
- alreadyAdded: '已新增',
- select: '選擇',
- manualEntry: '手動輸入',
- addFromCloud: '從雲端新增',
- subnetToScan: '要掃描的子網',
- dockerNote: '偵測到 Docker 環境。請以 CIDR 格式輸入印表機所在子網。需要在 docker-compose.yml 中設定 network_mode: host。',
- scanSubnet: '掃描子網查詢印表機',
- discoverNetwork: '在網路上發現印表機',
- scanningSubnet: '正在掃描子網查詢拓竹印表機...',
- scanningNetwork: '正在掃描網路...',
- serialRequired: '需要序列號',
- unknown: '未知',
- failedToStart: '啟動發現失敗',
- },
- // AMS Drying
- drying: {
- start: '開始乾燥',
- stop: '停止乾燥',
- temperature: '溫度',
- duration: '時長',
- hours: '小時',
- timeRemaining: '剩餘 {{time}}',
- active: '乾燥中',
- notSupported: '不支援乾燥',
- powerRequired: '連線AMS電源介面卡以啟用乾燥',
- startingDrying: '正在啟動乾燥...',
- stoppingDrying: '正在停止乾燥...',
- rotateTray: '乾燥時旋轉料盤',
- },
- // Filaments section
- filaments: '耗材',
- // Camera
- openCameraOverlay: '開啟攝影機疊加層',
- openCameraWindow: '在新視窗中開啟攝影機',
- // Firmware
- firmwareUpdateAvailable: '韌體更新可用:{{current}} → {{latest}}',
- firmwareUpToDate: '韌體 {{version}} — 已是最新',
- firmwareUpdateButton: '更新',
- // Plate detection
- plateDetection: {
- noPermission: '您沒有更新印表機的權限',
- enabledClick: '列印板檢查已啟用 - 點選停用',
- disabledClick: '列印板檢查已停用 - 點選啟用',
- manageCalibration: '管理列印板檢測校準',
- calibrationRequired: '需要校準',
- calibrationInstructions: '請確保列印板<strong>完全空置</strong>,然後點選校準。',
- calibrationDescription: '校準會拍攝空置列印板的參考影像。後續檢查將與此參考進行比較以檢測物體。',
- calibrationTip: '<strong>提示:</strong>您最多可以為不同的列印板儲存5個校準。系統會在檢查時自動使用最佳匹配。',
- plateEmpty: '列印板似乎是空的',
- objectsDetected: '在列印板上偵測到物體',
- confidence: '置信度',
- difference: '差異',
- analysisPreview: '分析預覽:',
- analysisLegend: '綠色框 = 檢測區域,紅色覆蓋 = 與校準的差異',
- savedReferences: '已儲存的參考 ({{count}}/{{max}})',
- deleteReference: '刪除參考',
- labelPlaceholder: '標籤...',
- clickToEdit: '{{label}} - 點選編輯',
- clickToAddLabel: '點選新增標籤',
- },
- // Speed
- speed: {
- title: '列印速度',
- silent: '靜音 (50%)',
- standard: '標準 (100%)',
- sport: '運動 (124%)',
- ludicrous: '瘋狂 (166%)',
- },
- airduct: {
- title: '風道模式',
- cooling: '製冷',
- heating: '加熱',
- },
- noSdCard: '無SD',
- door: {
- open: '開',
- closed: '關',
- },
- // Fans
- fans: {
- partCooling: '零件冷卻風扇',
- auxiliary: '輔助風扇',
- chamber: '腔室風扇',
- },
- // HMS errors
- clickToViewHmsErrors: '點選檢視 HMS 錯誤',
- estimatedCompletion: '預計完成時間',
- plateNumber: '板 {{number}}',
- slotOptions: '槽位選項',
- // AMS hover popup
- amsPopup: {
- friendlyName: 'AMS 名稱',
- friendlyNamePlaceholder: '例如 AMS 友好名稱',
- serialNumber: '序列號',
- firmwareVersion: '韌體',
- save: '儲存',
- clear: '清除',
- noEditPermission: '您沒有重新命名 AMS 單元的權限',
- },
- // Firmware modal
- firmwareModal: {
- title: '韌體更新',
- titleUpToDate: '韌體資訊',
- currentVersion: '目前版本:',
- latestVersion: '最新版本:',
- releaseNotes: '發布說明',
- checkingPrereqs: '正在檢查前提條件...',
- sdCardReady: 'SD 卡已就緒。點選下方上傳韌體。',
- uploadedSuccess: '韌體已上傳到 SD 卡!',
- applyInstructions: '在印表機上套用更新:',
- step1: '在印表機觸控式螢幕上,前往<strong>設定</strong>',
- step2: '導航到<strong>韌體</strong>',
- step3: '選擇<strong>從 SD 卡更新</strong>',
- step4: '更新將需要 10-20 分鐘',
- done: '完成',
- starting: '啟動中...',
- uploadFirmware: '上傳韌體',
- uploadFailed: '上傳啟動失敗:{{error}}',
- uploadedToast: '韌體已上傳!請在印表機螢幕上觸發更新。',
- availableVersions: '可用版本',
- usable: '可用',
- unavailable: '不可用',
- installed: '已安裝',
- newerBadge: '較新',
- olderBadge: '較舊',
- currentBadge: '目前',
- },
- accessCodePlaceholder: '留空以保持目前值',
- // ROI editor
- roi: {
- title: '檢測區域 (ROI)',
- xStart: 'X 起點',
- yStart: 'Y 起點',
- width: '寬度',
- height: '高度',
- instruction: '調整檢測區域以聚焦到列印板。預覽中的綠色框顯示目前區域。',
- },
- developerModeWarning: '以下印表機未啟用開發者區域網路模式:{{names}}。某些功能可能無法使用。',
- howToEnable: '如何啟用',
- incompatibleFile: '此檔案是為 {{slicedFor}} 切片的,但該印表機是 {{printerModel}}',
- dropNotPrintable: '只能列印 .gcode 和 .gcode.3mf 檔案',
- dropToPrint: '拖放以列印',
- cannotPrint: '印表機忙碌',
- },
- // Archives page
- archives: {
- title: '列印歸檔',
- searchPlaceholder: '搜尋歸檔...',
- filterByPrinter: '按印表機篩選',
- filterByStatus: '按狀態篩選',
- sortBy: '排序方式',
- sortNewest: '最新優先',
- sortOldest: '最舊優先',
- sortName: '名稱',
- sortDuration: '時長',
- sortLargest: '最大優先',
- sortSmallest: '最小優先',
- sortSize: '大小',
- noArchives: '未找到歸檔',
- noArchivesSearch: '沒有匹配搜尋的歸檔',
- originalPrintNotVisible: '原始列印不可見 - 請嘗試清除篩選條件',
- noArchivesYet: '尚無歸檔',
- prints: '條列印',
- pagination: {
- showing: '顯示',
- to: '至',
- of: '共',
- show: '每頁',
- page: '頁',
- all: '全部',
- },
- loadingArchives: '載入歸檔中...',
- releaseToUpload: '放開以上傳',
- showAll: '顯示全部',
- showFavoritesOnly: '僅顯示收藏',
- gridView: '網格檢視',
- listView: '列表檢視',
- calendarView: '日曆檢視',
- logView: '列印日誌',
- manageTags: '管理標籤',
- showFailedPrints: '顯示失敗的列印',
- hideFailedPrints: '隱藏失敗的列印',
- hideDuplicates: '隱藏重複項',
- viewOriginalPrint: '點選檢視原始列印 (#{{id}})',
- printTime: '列印時間',
- filamentUsed: '耗材用量',
- cost: '成本',
- reprint: '重新列印',
- preview: '預覽',
- deleteArchive: '刪除歸檔',
- deleteConfirm: '確定要刪除此歸檔嗎?',
- favorite: '收藏',
- unfavorite: '取消收藏',
- viewDetails: '檢視詳情',
- status: {
- completed: '已完成',
- failed: '失敗',
- stopped: '已停止',
- },
- toast: {
- source3mfAttached: '源 3MF 已附加:{{filename}}',
- failedUploadSource3mf: '上傳源 3MF 失敗',
- source3mfRemoved: '源 3MF 已移除',
- failedRemoveSource3mf: '移除源 3MF 失敗',
- f3dAttached: 'F3D 已附加:{{filename}}',
- failedUploadF3d: '上傳 F3D 失敗',
- f3dRemoved: 'F3D 已移除',
- failedRemoveF3d: '移除 F3D 失敗',
- timelapseAttached: '縮時攝影已附加:{{filename}}',
- timelapseAlreadyAttached: '縮時攝影已附加',
- noMatchingTimelapse: '未找到匹配的縮時攝影',
- failedScanTimelapse: '掃描縮時攝影失敗',
- failedAttachTimelapse: '附加縮時攝影失敗',
- timelapseRemoved: '縮時攝影已移除',
- failedRemoveTimelapse: '移除縮時攝影失敗',
- timelapseUploaded: '縮時攝影已上傳:{{filename}}',
- failedUploadTimelapse: '上傳縮時攝影失敗',
- archiveDeleted: '歸檔已刪除',
- failedDeleteArchive: '刪除歸檔失敗',
- addedToFavorites: '已新增到收藏',
- removedFromFavorites: '已從收藏中移除',
- projectUpdated: '專案已更新',
- failedUpdateProject: '更新項目失敗',
- linkCopied: '連結已複製到剪貼簿',
- failedCopyLink: '複製連結失敗',
- photoDeleted: '照片已刪除',
- failedDeletePhoto: '刪除照片失敗',
- failedDeleteArchives: '刪除歸檔失敗',
- failedUpdateFavorites: '更新收藏失敗',
- exportDownloaded: '匯出已下載',
- exportFailed: '匯出失敗',
- },
- menu: {
- print: '列印',
- schedule: '排程',
- openInBambuStudio: '在切片軟體中開啟',
- slice: '切片',
- externalLink: '外部連結',
- viewOnMakerWorld: '在 MakerWorld 上檢視',
- preview3d: '3D 預覽',
- viewTimelapse: '檢視縮時攝影',
- scanForTimelapse: '掃描縮時攝影',
- uploadTimelapse: '上傳縮時攝影',
- removeTimelapse: '移除縮時攝影',
- downloadSource3mf: '下載源 3MF',
- uploadSource3mf: '上傳源 3MF',
- replaceSource3mf: '替換源 3MF',
- removeSource3mf: '移除源 3MF',
- uploadF3d: '上傳 F3D',
- replaceF3d: '替換 F3D',
- downloadF3d: '下載 F3D',
- removeF3d: '移除 F3D',
- download: '下載',
- copyDownloadLink: '複製下載連結',
- qrCode: 'QR Code',
- viewPhotos: '檢視照片',
- viewPhotosCount: '檢視照片 ({{count}})',
- projectPage: '專案頁面',
- addToFavorites: '新增到收藏',
- removeFromFavorites: '從收藏中移除',
- edit: '編輯',
- goToProject: '前往專案:{{name}}',
- addToProject: '新增到專案',
- removeFromProject: '從專案中移除',
- loading: '載入中...',
- noProjectsAvailable: '無可用專案',
- select: '選擇',
- deselect: '取消選擇',
- delete: '刪除',
- },
- permission: {
- noReprint: '您沒有重新列印此歸檔的權限',
- noAddToQueue: '您沒有新增到佇列的權限',
- noUpdateArchives: '您沒有更新歸檔的權限',
- noUploadFiles: '您沒有上傳檔案的權限',
- noDownload: '您沒有下載歸檔的權限',
- noCopyLink: '您沒有複製下載連結的權限',
- noDelete: '您沒有刪除此歸檔的權限',
- noCreate: '您沒有建立歸檔的權限',
- },
- platePicker: {
- title: '選擇要預覽的列印板',
- hint: '此存檔包含多個列印板。選擇一個在 GCode 檢視器中開啟。',
- plateLabel: '列印板 {{index}}',
- objectCount: '{{count}} 個物件',
- objectCount_plural: '{{count}} 個物件',
- noGcode: '此存檔沒有可預覽的已切片 G 代碼。請先在 Bambu Studio 中開啟並切片。',
- },
- card: {
- previousPlate: '上一個板',
- nextPlate: '下一個板',
- plateNumber: '板 {{index}}',
- moreOptions: '右鍵檢視更多選項',
- addToFavorites: '新增到收藏',
- removeFromFavorites: '從收藏中移除',
- cancelled: '已取消',
- failed: '失敗',
- duplicate: '重複',
- duplicateTitle: '此模型之前已列印過',
- openSource3mf: '在 Bambu Studio 中開啟源 3MF(右鍵檢視更多選項)',
- downloadF3d: '下載 Fusion 360 設計檔案',
- viewTimelapse: '檢視縮時攝影',
- viewPhoto: '檢視 1 張照片',
- viewPhotos: '檢視 {{count}} 張照片',
- openFolder: '開啟資料夾:{{name}}',
- slicedFile: '已切片檔案 - 可以列印',
- sourceFile: '僅原始檔 - 無 AMS 對應可用',
- gcode: 'GCODE',
- source: '原始檔',
- project: '專案:{{name}}',
- estimated: '預計:{{time}}',
- actual: '實際:{{time}}',
- accuracy: '準確度:{{percent}}%',
- filament: '{{weight}}g',
- layer: '{{count}} 層',
- layers: '{{count}} 層',
- object: '{{count}} 個物件',
- objects: '{{count}} 個物件',
- slicedFor: '為 {{model}} 切片',
- uploadedBy: '上傳者',
- noPermissionReprint: '您沒有重新列印的權限',
- noFileForReprint: '無可用的 3MF 檔案 — 列印紀錄時無法從印表機下載該檔案',
- noPermissionEdit: '您沒有編輯歸檔的權限',
- noPermissionDelete: '您沒有刪除歸檔的權限',
- reprint: '重新列印',
- schedulePrint: '排程列印',
- schedule: '排程',
- openInBambuStudio: '在切片軟體中開啟',
- openInBambuStudioToSlice: '在切片軟體中開啟進行切片',
- slice: '切片',
- externalLink: '外部連結',
- makerWorld: 'MakerWorld:{{designer}}',
- viewProject: '檢視專案',
- noExternalLink: '無外部連結',
- preview3d: '3D 預覽',
- download: '下載',
- edit: '編輯',
- delete: '刪除',
- },
- modal: {
- deleteArchive: '刪除歸檔',
- deleteConfirm: '確定要刪除"{{name}}"嗎?此操作無法復原。',
- deleteButton: '刪除',
- removeSource3mf: '移除源 3MF',
- removeSource3mfConfirm: '確定要從"{{name}}"中移除源 3MF 檔案嗎?這將刪除原始切片專案檔案。',
- removeButton: '移除',
- removeF3d: '移除 F3D',
- removeF3dConfirm: '確定要從"{{name}}"中移除 Fusion 360 設計檔案嗎?',
- removeTimelapse: '移除縮時攝影',
- removeTimelapseConfirm: '確定要從"{{name}}"中移除縮時攝影影片嗎?',
- timelapse: '{{name}} - 縮時攝影',
- selectTimelapse: '選擇縮時攝影',
- selectTimelapseDesc: '未找到自動匹配。請選擇此列印的縮時攝影:',
- deleteArchives: '刪除歸檔',
- deleteArchivesConfirm: '確定要刪除 {{count}} 個歸檔嗎?此操作無法復原。',
- deleteCount: '刪除 {{count}} 個',
- },
- page: {
- title: '歸檔',
- printsCount: '{{filtered}} / {{total}} 次列印',
- dropFilesHere: '將 .3mf 檔案拖放到此處',
- releaseToUpload: '放開以上傳',
- only3mfSupported: '僅支援 .3mf 檔案',
- close: '關閉',
- selected: '已選擇 {{count}} 個',
- selectAll: '全選',
- tags: '標籤',
- project: '專案',
- favorite: '收藏',
- delete: '刪除',
- toggledFavorites: '已切換 {{count}} 個歸檔的收藏狀態',
- failedUpdateFavorites: '更新收藏失敗',
- archivesDeleted: '已刪除 {{count}} 個歸檔',
- failedDeleteArchives: '刪除歸檔失敗',
- photoDeleted: '照片已刪除',
- failedDeletePhoto: '刪除照片失敗',
- },
- list: {
- name: '名稱',
- printer: '印表機',
- date: '日期',
- size: '大小',
- actions: '操作',
- hasTimelapse: '有縮時攝影',
- },
- log: {
- date: '日期',
- printName: '列印名稱',
- printer: '印表機',
- user: '使用者',
- status: '狀態',
- duration: '時長',
- filament: '耗材',
- allPrinters: '所有印表機',
- allUsers: '所有使用者',
- allStatuses: '所有狀態',
- cancelled: '已取消',
- skipped: '已跳過',
- dateFrom: '從',
- dateTo: '到',
- noEntries: '未找到列印日誌條目',
- showing: '顯示 {{count}} / {{total}} 條',
- rowsPerPage: '行數',
- page: '頁',
- prev: '上一頁',
- next: '下一頁',
- clearLog: '清除日誌',
- clearLogTitle: '清除列印日誌',
- clearLogConfirm: '所有列印日誌條目將被永久刪除。歸檔和佇列項目不受影響。此操作無法復原。確定要繼續嗎?',
- clearLogButton: '全部清除',
- cleared: '已清除 {{count}} 條日誌',
- clearFailed: '清除列印日誌失敗',
- },
- },
- // Queue page
- queue: {
- title: '列印佇列',
- subtitle: '排程和管理您的列印任務',
- addToQueue: '新增到佇列',
- // Print modal
- print: '列印',
- reprint: '重新列印',
- schedulePrint: '排程列印',
- editQueueItem: '編輯佇列項目',
- printToPrinters: '列印到 {{count}} 臺印表機',
- queueToPrinters: '佇列到 {{count}} 臺印表機',
- queueSelectedPlates: '將 {{count}} 個熱床加入佇列',
- selectAllPlates: '選擇全部 {{count}} 個熱床',
- deselectAll: '取消全選',
- printQueued: '已加入列印佇列',
- itemsQueued: '{{count}} 個任務已加入佇列',
- sending: '傳送中...',
- sendingProgress: '傳送中 {{current}}/{{total}}...',
- adding: '新增中...',
- addingProgress: '新增中 {{current}}/{{total}}...',
- savingProgress: '儲存中 {{current}}/{{total}}...',
- clearQueue: '清空佇列',
- clearHistory: '清除歷史',
- emptyQueue: '佇列為空',
- position: '位置',
- scheduledTime: '排程時間',
- moveUp: '上移',
- moveDown: '下移',
- startNow: '立即開始',
- printingInProgress: '列印進行中...',
- viewArchive: '檢視歸檔',
- viewInFileManager: '在檔案管理器中檢視',
- itemCount: '{{count}} 個項目',
- itemCount_plural: '{{count}} 個項目',
- dragToReorder: '拖曳以重新排序(僅限盡快)',
- reorderHint: '位置僅影響"儘快"項目。排程項目按設定時間執行。',
- sjf: {
- label: 'SJF',
- tooltip: '最短任務優先 — 排程器優先處理較短的列印任務',
- },
- addedBy: '由 {{name}} 新增',
- nextInQueue: '佇列中的下一個',
- clearPlateSuccess: '列印板已清理 — 準備進行下一個列印',
- plateNumber: '板 {{index}}',
- // Batch / quantity
- quantity: '數量',
- quantityHint: '建立 {{count}} 個佇列項目',
- activeBatches: '活躍批次',
- batchProgress: '已完成 {{completed}}/{{total}}',
- cancelBatch: '取消剩餘',
- batchCancelled: '已取消剩餘批次項目',
- cancelBatchConfirmTitle: '取消批次',
- cancelBatchConfirmMessage: '取消此批次中所有剩餘的待處理項目?',
- batch: '批次',
- // Sections
- sections: {
- currentlyPrinting: '正在列印',
- queued: '佇列中',
- history: '歷史',
- },
- // Status
- status: {
- pending: '等待中',
- waiting: '等待中',
- printing: '列印中',
- paused: '已暫停',
- completed: '已完成',
- failed: '失敗',
- skipped: '已跳過',
- cancelled: '已取消',
- },
- // Summary cards
- summary: {
- printing: '列印中',
- queued: '佇列中',
- totalTime: '總佇列時間',
- totalWeight: '總佇列重量',
- history: '歷史',
- },
- // Filters
- filter: {
- allPrinters: '所有印表機',
- unassigned: '未分配',
- allStatus: '所有狀態',
- allLocations: '所有位置',
- any: '任意',
- },
- // Sort
- sort: {
- byPosition: '按位置排序',
- byName: '按名稱排序',
- byPrinter: '按印表機排序',
- bySchedule: '按排程排序',
- byDate: '按日期排序',
- ascendingOldest: '升序(最舊優先)',
- descendingNewest: '降序(最新優先)',
- },
- // Badges
- badges: {
- staged: '已暫存',
- requiresPrevious: '需要前一個成功',
- autoPowerOff: '自動關機',
- gcodeInjection: 'G-code',
- },
- // Empty state
- empty: {
- title: '沒有排程的列印',
- description: '從歸檔頁面使用右鍵選單中的"排程"選項來排程列印,或拖放檔案開始。',
- },
- // Time
- time: {
- asap: '儘快',
- overdue: '已逾期',
- now: '現在',
- lessThanMinute: '不到一分鐘',
- inMinutes: '{{count}} 分鐘後',
- inHours: '{{count}} 小時後',
- },
- // Actions
- actions: {
- stopPrint: '停止列印',
- startPrint: '開始列印',
- requeue: '重新佇列',
- },
- // Bulk edit
- bulkEdit: {
- title: '編輯 {{count}} 個項目',
- title_plural: '編輯 {{count}} 個項目',
- description: '僅更改的設定將套用於所選項目。',
- printer: '印表機',
- noChange: '— 不更改 —',
- queueOptions: '佇列選項',
- staged: '暫存(手動開始)',
- autoPowerOff: '列印後自動關機',
- requirePrevious: '要求前一個成功',
- printOptions: '列印選項',
- bedLevelling: '熱床調平',
- flowCalibration: '流量校準',
- vibrationCalibration: '振動校準',
- layerInspection: '首層檢查',
- timelapse: '縮時攝影',
- useAms: '使用 AMS',
- applyChanges: '套用更改',
- selectAll: '全選',
- deselectAll: '取消全選',
- selected: '已選擇 {{count}} 個',
- editSelected: '編輯所選',
- cancelSelected: '取消所選',
- },
- // Confirmations
- confirm: {
- cancelTitle: '取消排程列印',
- cancelMessage: '確定要取消"{{name}}"嗎?',
- stopTitle: '停止列印',
- stopMessage: '確定要停止目前列印"{{name}}"嗎?這將取消印表機上的列印任務。',
- removeTitle: '從歷史中移除',
- removeMessage: '確定要從佇列歷史中移除"{{name}}"嗎?',
- clearHistoryTitle: '清除歷史',
- clearHistoryMessage: '確定要從歷史中移除所有 {{count}} 個項目嗎?',
- cancelButton: '取消列印',
- stopButton: '停止列印',
- thisPrint: '此列印',
- thisItem: '此項目',
- },
- // Toast messages
- toast: {
- cancelled: '佇列項目已取消',
- cancelFailed: '取消項目失敗',
- removed: '佇列項目已移除',
- removeFailed: '移除項目失敗',
- stopped: '列印已停止',
- stopFailed: '停止列印失敗',
- released: '列印已加入佇列',
- startFailed: '開始列印失敗',
- reorderFailed: '重新排序佇列失敗',
- historyCleared: '已清除 {{count}} 條歷史紀錄',
- clearHistoryFailed: '清除歷史失敗',
- updateFailed: '更新項目失敗',
- bulkCancelled: '已取消 {{count}} 個項目',
- bulkCancelFailed: '批次取消項目失敗',
- },
- // Timeline view
- timeline: {
- listView: '列表',
- timelineView: '時間線',
- unassigned: '未分配',
- noData: '當天沒有計畫的列印任務',
- allDoneBy: '所有列印預計在 {{time}} 前完成',
- staged: '暫存',
- filterAll: '全部顯示',
- filterPrinting: '列印中',
- filterQueued: '佇列中',
- time: {
- anyMoment: '即將完成',
- minutesLeft: '剩餘{{minutes}} 分鐘',
- hoursLeft: '剩餘{{hours}}小時',
- hoursMinutesLeft: '剩餘{{hours}}小時{{minutes}} 分鐘',
- },
- day: {
- previous: '前一天',
- next: '後一天',
- today: '今天',
- },
- },
- // Permissions
- permissions: {
- noStopPrint: '您沒有停止列印的權限',
- noStartPrint: '您沒有開始列印的權限',
- noEdit: '您沒有編輯此佇列項目的權限',
- noCancel: '您沒有取消此佇列項目的權限',
- noRequeue: '您沒有重新佇列的權限',
- noRemove: '您沒有移除此佇列項目的權限',
- noClearHistory: '您沒有清除所有歷史的權限',
- noEditItems: '您沒有編輯佇列項目的權限',
- noCancelItems: '您沒有取消佇列項目的權限',
- },
- },
- backgroundDispatch: {
- unknownFile: '未知檔案',
- unknownPrinter: '未知印表機',
- startingPrints: '正在開始列印',
- progressSummary: '{{complete}}/{{total}} 完成 • 已分發:{{dispatched}} • 處理中:{{processing}}',
- expandDetails: '展開分發詳情',
- collapseDetails: '收起分發詳情',
- dismissToast: '關閉分發通知',
- cancelDispatchJob: '取消分發任務',
- cancel: '取消',
- cancelling: '取消中…',
- status: {
- dispatched: '已分發',
- processing: '處理中',
- completed: '已完成',
- failed: '失敗',
- cancelled: '已取消',
- },
- toast: {
- cancellingUpload: '取消上傳中...',
- cancelled: '分發已取消',
- cancelFailed: '取消分發失敗',
- completeWithFailures: '後台分發完成:{{completed}} 成功,{{failed}} 失敗',
- completeSuccess: '後台分發完成:{{completed}} 成功',
- printStartedRemaining: '{{completed}} 個列印已開始,{{remaining}} 個正在傳送...',
- },
- },
- // Statistics page
- stats: {
- title: '儀表板',
- subtitle: '拖曳小工具以重新排列。點選眼睛圖示隱藏。',
- overview: '概覽',
- totalPrints: '總列印次數',
- successRate: '成功率',
- totalPrintTime: '總列印時間',
- printTime: '列印時間',
- totalFilament: '總耗材用量',
- filamentUsed: '耗材用量',
- filamentCost: '耗材成本',
- totalCost: '總成本',
- energyUsed: '能耗',
- energyCost: '能源成本',
- energyWarmingUpTooltip: '能耗追蹤正在收集每小時快照。當所選範圍之前至少存在一個快照時,時間段合計將變得準確。早期數值可能偏低。',
- averagePrintTime: '平均列印時間',
- printsPerDay: '每日列印次數',
- byPrinter: '按印表機',
- printsByPrinter: '各印表機列印次數',
- byMaterial: '按材料',
- byMonth: '按月份',
- last7Days: '最近 7 天',
- last30Days: '最近 30 天',
- last90Days: '最近 90 天',
- allTime: '全部時間',
- // Widgets
- quickStats: '快速統計',
- printActivity: '列印活動',
- filamentTypes: '耗材類型',
- filamentTrends: '耗材趨勢',
- failureAnalysis: '失敗分析',
- timeAccuracy: '時間準確度',
- successful: '成功:',
- failed: '失敗:',
- perfectEstimate: '100% = 完美估計',
- noTimeAccuracyData: '尚無時間準確度資料',
- noFilamentData: '尚無耗材資料',
- noPrinterData: '尚無印表機資料',
- noPrintData: '尚無列印資料',
- noPrintDataLast30Days: '最近 30 天無列印資料',
- failureReasons: '失敗原因',
- topFailureReasons: '主要失敗原因',
- failedPrintsCount: '{{failed}} / {{total}} 次列印失敗',
- lastWeekRate: '上週:{{rate}}%',
- // Actions
- resetLayout: '重設佈局',
- recalculateCosts: '重新計算成本',
- recalculateCostsHint: '使用目前耗材價格重新計算所有歸檔成本',
- exportStats: '匯出統計',
- exportAsCsv: '匯出為 CSV',
- exportAsExcel: '匯出為 Excel',
- hiddenCount: '{{count}} 個已隱藏',
- // Toast
- exportDownloaded: '匯出已下載',
- exportFailed: '匯出失敗',
- layoutReset: '佈局已重設',
- recalculatedCosts: '已為 {{count}} 個歸檔重新計算成本',
- recalculateFailed: '重新計算成本失敗',
- // Loading
- loadingStats: '載入統計資料中...',
- // Permissions
- noPermissionResetLayout: '您沒有重設佈局的權限',
- noPermissionRecalculate: '您沒有重新計算成本的權限',
- noPrintDataInRange: '所選範圍內無列印資料',
- periodFilament: '期間耗材',
- periodCost: '期間成本',
- avgPerPrint: '每次列印平均',
- usageOverTime: '隨時間的使用量',
- filamentByWeight: '重量',
- printDuration: '列印時長',
- printerUtilization: '印表機利用率',
- filamentSuccess: '按材料成功率',
- printHabits: '列印習慣',
- printTimeOfDay: '列印時段',
- colorDistribution: '顏色分佈',
- noColorData: '尚無顏色資料',
- records: '紀錄',
- longestPrint: '最長列印',
- heaviestPrint: '最重列印',
- mostExpensivePrint: '最貴列印',
- busiestDay: '最忙碌的一天',
- successStreak: '連續成功',
- streakPrint: '連續列印',
- streakPrints: '{{count}} 次連續列印',
- printerStats: '印表機統計',
- hours: '小時',
- avgPrints: '平均列印',
- noArchiveData: '尚無列印資料',
- filamentByTime: '時間',
- avgWeight: '平均重量',
- avgTime: '平均時間',
- filamentByPrints: '列印次數',
- timeframe: {
- today: '今天',
- 'this-week': '本週',
- 'this-month': '本月',
- 'last-7': '最近 7 天',
- 'last-30': '最近 30 天',
- 'last-90': '最近 90 天',
- 'this-year': '今年',
- 'all-time': '全部時間',
- custom: '自訂範圍',
- from: '從',
- to: '到',
- },
- allUsers: '所有使用者',
- noUser: '無使用者(系統)',
- filterByUser: '按使用者篩選',
- },
- // Maintenance page
- maintenance: {
- title: '維護',
- overview: '概覽',
- allOk: '所有維護均已完成',
- dueCount: '{{count}} 項到期',
- dueCount_plural: '{{count}} 項到期',
- warningCount: '{{count}} 個警告',
- warningCount_plural: '{{count}} 個警告',
- totalPrintTime: '總列印時間',
- nextMaintenance: '下次維護',
- nothingDue: '無到期項目',
- tasks: '任務',
- lastPerformed: '上次執行',
- interval: '間隔',
- hoursRemaining: '剩餘 {{hours}} 小時',
- hoursOverdue: '逾期 {{hours}} 小時',
- markDone: '標記為完成',
- performMaintenance: '執行維護',
- history: '歷史',
- noHistory: '無維護歷史',
- editPrintHours: '編輯列印時間',
- currentHours: '目前小時數',
- // Tabs
- statusTab: '狀態',
- settingsTab: '設定',
- // Status
- overdueCount: '{{count}} 個逾期',
- dueSoonCount: '{{count}} 個即將到期',
- dueSoon: '即將到期',
- allGood: '一切正常',
- overdueBy: '逾期 {{duration}}',
- dueIn: '{{duration}} 後到期',
- timeLeft: '剩餘 {{duration}}',
- // Duration formats
- day: '1 天',
- days: '{{count}} 天',
- week: '1 週',
- weeks: '{{count}} 週',
- month: '1 個月',
- months: '{{count}} 個月',
- year: '1 年',
- // Settings
- maintenanceTypes: '維護類型',
- maintenanceTypesDescription: '系統類型和您的自訂維護任務',
- addCustomType: '新增自訂類型',
- restoreDefaults: '恢復預設任務',
- intervalType: '間隔類型',
- intervalValue: '間隔 ({{type}})',
- icon: '圖示',
- documentationLink: '說明文件連結(可選)',
- assignToPrinters: '分配給印表機',
- selectAtLeastOnePrinter: '至少選擇一臺印表機',
- addType: '新增類型',
- custom: '自訂',
- printHours: '列印小時數',
- calendarDays: '日曆天數',
- exampleName: '例如:更換 HEPA 過濾器',
- viewDocumentation: '檢視說明文件',
- timeBasedInterval: '基於時間的間隔',
- // Interval overrides
- intervalOverrides: '間隔覆蓋',
- intervalOverridesDescription: '為特定印表機自訂間隔',
- // Printer assignment
- assignedToPrinters: '已分配給印表機:',
- noPrintersAssigned: '未分配印表機',
- addPrinterShort: '新增:',
- printersAssignedClick: '已分配 {{count}} 臺印表機 - 點選管理',
- removeFromPrinter: '從此印表機移除',
- // Types
- types: {
- lubricateCarbonRods: '潤滑碳纖維杆',
- lubricateRails: '潤滑線性導軌',
- cleanNozzle: '清潔噴嘴/熱端',
- checkBelts: '檢查皮帶張力',
- cleanBuildPlate: '清潔列印板',
- checkExtruder: '檢查擠出機齒輪',
- checkCooling: '檢查冷卻風扇',
- generalInspection: '綜合檢查',
- cleanCarbonRods: '清潔碳纖維杆',
- lubricateSteelRods: '潤滑鋼杆',
- cleanSteelRods: '清潔鋼杆',
- cleanLinearRails: '清潔線性導軌',
- checkPtfeTube: '檢查 PTFE 管',
- replaceHepaFilter: '更換 HEPA 過濾器',
- replaceCarbonFilter: '更換活性炭過濾器',
- lubricateLeftNozzleRail: '潤滑左噴嘴導軌',
- },
- // Toast
- maintenanceComplete: '維護已標記為完成',
- typeUpdated: '維護類型已更新',
- typeDeleted: '維護類型已刪除',
- defaultsRestored: '已恢復 {{count}} 個預設任務',
- printHoursUpdated: '列印小時數已更新',
- printerAssigned: '印表機已分配',
- printerRemoved: '印表機已移除',
- // Confirmation
- deleteTypeConfirm: '刪除"{{name}}"?',
- deleteSystemTypeTitle: '刪除預設維護任務?',
- deleteSystemTypeMessage: '確定要刪除預設維護任務"{{name}}"嗎?',
- // Permissions
- noPermissionUpdate: '您沒有更新維護項目的權限',
- noPermissionPerform: '您沒有執行維護的權限',
- noPermissionEditTypes: '您沒有編輯維護類型的權限',
- noPermissionDeleteTypes: '您沒有刪除維護類型的權限',
- noPermissionEditHours: '您沒有編輯列印時間的權限',
- noPermissionRemovePrinter: '您沒有移除印表機分配的權限',
- noPermissionAssignPrinter: '您沒有分配印表機的權限',
- noPermissionEditIntervals: '您沒有編輯間隔的權限',
- // Configure link
- configureSettings: '設定維護類型和間隔',
- },
- // Settings page
- settings: {
- title: '設定',
- general: '通用',
- // Tab names
- tabs: {
- general: '通用',
- smartPlugs: '智慧插座',
- notifications: '通知',
- queue: '工作流程',
- filament: '耗材',
- network: '網路',
- apiKeys: 'API 金鑰',
- virtualPrinter: '虛擬印表機',
- spoolbuddy: 'SpoolBuddy',
- failureDetection: '故障檢測',
- users: '身份驗證',
- backup: '備份',
- emailAuth: '信箱認證',
- ldap: 'LDAP',
- twoFa: '雙因素認證',
- oidc: 'SSO / OIDC',
- },
- spoolbuddy: {
- infoTitle: 'SpoolBuddy 裝置',
- infoBody: 'SpoolBuddy kiosk 透過心跳自動註冊。如果裝置不再使用,或守護程式當機遺留了過時的重複項,可在此取消註冊。',
- duplicatesTitle: '已註冊 {{count}} 台裝置',
- duplicatesBody: 'kiosk 介面只使用最先註冊的裝置。如果其中有因當機遺留的過時重複項,請取消註冊它——線上裝置會在下次心跳時重新註冊自己。',
- empty: '尚未註冊任何 SpoolBuddy 裝置。',
- online: '線上',
- offline: '離線',
- unregister: '取消註冊',
- unregisterSuccess: '裝置已取消註冊',
- unregisterError: '取消註冊裝置失敗',
- confirmTitle: '取消註冊 SpoolBuddy 裝置?',
- confirmBody: '將從資料庫中移除 "{{hostname}}" ({{deviceId}})。如果裝置線上,會在下次心跳時重新註冊自己。',
- ipAddress: 'IP 位址',
- firmware: '韌體',
- lastSeen: '上次線上',
- daemonUptime: '守護程式執行時間',
- systemUptime: '系統執行時間',
- never: '從未',
- nfc: 'NFC',
- scale: '磅秤',
- cpuTemp: 'CPU 溫度',
- memory: '記憶體',
- disk: '磁碟',
- // Device actions
- update: '更新',
- updateConfirmTitle: '更新 SpoolBuddy 守護程式?',
- updateConfirmBody: '對 "{{hostname}}" 觸發軟體更新?更新完成後守護程式將重新啟動。',
- restartBrowser: '重新啟動瀏覽器',
- restartBrowserConfirmTitle: '重新啟動 kiosk 瀏覽器?',
- restartBrowserConfirmBody: '在 "{{hostname}}" 上重新啟動 kiosk 瀏覽器?顯示將短暫黑屏。',
- restartDaemon: '重新啟動守護程式',
- restartDaemonConfirmTitle: '重新啟動 SpoolBuddy 守護程式?',
- restartDaemonConfirmBody: '在 "{{hostname}}" 上重新啟動 SpoolBuddy 守護程式?裝置將離線幾秒鐘。',
- reboot: '重新開機',
- rebootConfirmTitle: '重新開機?',
- rebootConfirmBody: '重新開機 "{{hostname}}"?裝置將離線約一分鐘。',
- shutdown: '關機',
- shutdownConfirmTitle: '關閉裝置?',
- shutdownConfirmBody: '關閉 "{{hostname}}"?您需要實體存取才能重新開機。',
- commandConfirm: '確認',
- commandQueued: '命令已加入佇列',
- commandError: '傳送命令失敗',
- },
- ldap: {
- title: 'LDAP 認證',
- enabledDesc: 'LDAP 認證已啟用',
- disabledDesc: 'LDAP 認證已停用',
- disabledHint: '在下方設定並儲存 LDAP 設定,然後啟用。',
- enabled: 'LDAP 認證已啟用',
- disabled: 'LDAP 認證已停用',
- feature1: '使用者可以使用 LDAP 憑據登入',
- feature2: '本機管理員帳戶作為後備保留',
- feature3: '登入時 LDAP 群組對應到 BamBuddy 群組',
- serverConfig: 'LDAP 伺服器設定',
- serverUrl: '伺服器 URL',
- serverUrlHint: '使用 ldap:// 進行標準連線或 ldaps:// 進行 SSL 連線',
- security: '安全',
- securityHint: 'StartTLS 將普通連線升級為 TLS。LDAPS 從一開始就使用 TLS。',
- bindDn: '繫結 DN(服務帳戶)',
- bindPassword: '繫結密碼',
- searchBase: '搜尋基礎 DN',
- userFilter: '使用者搜尋過濾器',
- userFilterHint: '{username} 替換為登入使用者名稱。OpenLDAP 使用 (uid={username})。',
- autoProvision: '自動建立使用者',
- autoProvisionHint: '首次 LDAP 登入時自動建立 BamBuddy 帳戶',
- defaultGroup: '預設群組',
- defaultGroupNone: '— 無(無復原)—',
- defaultGroupHint: '當 LDAP 使用者透過身份驗證但不在任何已對應的 LDAP 群組中時分配的備援群組。留空以使未對應的使用者沒有權限。',
- groupMapping: '群組對應(JSON)',
- groupMappingHint: '將 LDAP 群組 DN 對應到 BamBuddy 群組。可用群組:',
- testConnection: '測試連線',
- settingsSaved: 'LDAP 設定已儲存',
- errors: {
- serverRequired: 'LDAP 伺服器 URL 為必填項',
- searchBaseRequired: '搜尋基礎 DN 為必填項',
- enableAuthFirst: '請先啟用認證',
- configureLdapFirst: '請先儲存 LDAP 設定',
- },
- },
- // Email settings
- email: {
- smtpSettings: 'SMTP 設定',
- smtpHost: 'SMTP 伺服器',
- smtpPort: 'SMTP 連接埠',
- security: '安全',
- authentication: '認證',
- username: '使用者名稱',
- password: '密碼',
- fromEmail: '寄件信箱',
- fromName: '寄件人名稱',
- testConnection: '測試 SMTP 連線',
- testRecipient: '測試收件信箱',
- sendTest: '傳送測試郵件',
- sending: '傳送中...',
- save: '儲存設定',
- saving: '儲存中...',
- advancedAuth: '進階認證',
- advancedAuthEnabled: '進階認證已啟用',
- advancedAuthEnabledDesc: '基於信箱的使用者管理功能已啟用。新使用者將透過郵件收到自動產生的密碼,使用者可以透過忘記密碼功能重設密碼。',
- advancedAuthDisabled: '進階認證已停用',
- advancedAuthDisabledDesc: '啟用進階認證以啟用基於信箱的使用者管理功能。',
- enable: '啟用',
- disable: '停用',
- feature1: '密碼自動產生並透過郵件傳送給新使用者',
- feature2: '使用者可以使用使用者名稱或信箱登入',
- feature3: '忘記密碼功能可用',
- feature4: '管理員可以透過郵件重設使用者密碼',
- // Error messages
- errors: {
- requiredFields: '請填寫所有必填欄位',
- usernameRequired: '啟用認證時需要使用者名稱',
- enterTestEmail: '請輸入測試信箱地址',
- smtpServerAndEmail: '測試前請填寫 SMTP 伺服器和寄件信箱',
- usernamePasswordRequired: '啟用認證時需要使用者名稱和密碼',
- configureSmtpFirst: '請先設定並測試 SMTP 設定',
- enableAuthFirst: '請先啟用身份驗證才能使用基於電子郵件的功能。',
- },
- // Success messages
- success: {
- settingsSaved: 'SMTP 設定儲存成功',
- },
- // Security options
- securityOptions: {
- starttls: 'STARTTLS(連接埠 587)',
- ssl: 'SSL/TLS(連接埠 465)',
- none: '無(連接埠 25)',
- },
- // Authentication options
- authOptions: {
- enabled: '已啟用',
- disabled: '已停用',
- },
- },
- appearance: '外觀',
- notifications: '通知',
- smartPlugs: '智慧插座',
- spoolman: 'Spoolman',
- updates: '更新',
- language: '語言',
- languageDescription: '選擇您的首選語言',
- theme: '主題',
- themeLight: '淺色',
- themeDark: '深色',
- themeSystem: '跟隨系統',
- defaultView: '預設檢視',
- defaultViewDescription: '開啟應用程式時顯示的頁面',
- checkForUpdates: '檢查更新',
- autoUpdate: '自動更新',
- currentVersion: '目前版本',
- latestVersion: '最新版本',
- upToDate: '已是最新版本',
- updateAvailable: '有可用更新',
- // Notifications
- notificationLanguage: '通知語言',
- notificationLanguageDescription: '推送通知的語言',
- bedCooledThreshold: '熱床冷卻閾值',
- bedCooledThresholdDescription: '列印後熱床被視為已冷卻的溫度',
- userNotificationsEnabled: '使用者通知',
- userNotificationsEnabledDescription: '啟用使用者通知選單和列印任務事件的郵件通知。需要進階身份驗證。',
- userNotificationsDisabledHint: '請啟用進階身份驗證以使用使用者通知。',
- notificationProviders: '通知提供者',
- addProvider: '新增提供者',
- editProvider: '編輯提供者',
- providerType: '提供者類型',
- testNotification: '測試通知',
- testSuccess: '測試通知傳送成功',
- testFailed: '傳送測試通知失敗',
- quietHours: '免打擾時間',
- quietHoursDescription: '在此時間段內不傳送通知',
- quietHoursStart: '開始',
- quietHoursEnd: '結束',
- events: {
- title: '通知事件',
- printStart: '列印開始',
- printComplete: '列印完成',
- printFailed: '列印失敗',
- printStopped: '列印停止',
- printProgress: '進度里程碑',
- printProgressDescription: '在 25%、50%、75% 時通知',
- printerOffline: '印表機離線',
- printerError: '印表機錯誤',
- filamentLow: '耗材不足',
- maintenanceDue: '維護到期',
- maintenanceDueDescription: '需要維護時通知',
- },
- // Smart Plugs
- smartPlug: {
- title: '智慧插座',
- add: '新增智慧插座',
- edit: '編輯智慧插座',
- name: '名稱',
- ipAddress: 'IP 位址',
- linkedPrinter: '連結印表機',
- autoOn: '自動開啟',
- autoOnDescription: '列印開始時開啟',
- autoOff: '自動關閉',
- autoOffDescription: '列印完成後關閉',
- offDelay: '關閉延遲',
- offDelayMinutes: '列印後分鐘數',
- offDelayTemp: '當噴嘴溫度低於',
- currentState: '目前狀態',
- turnOn: '開啟',
- turnOff: '關閉',
- },
- // Filament Tracking Mode
- filamentTracking: '耗材追蹤',
- filamentTrackingDesc: '選擇如何追蹤您的耗材。您可以使用內建庫存或連線外部 Spoolman 伺服器。',
- filamentChecks: '耗材檢查',
- disableFilamentWarnings: '停用耗材警告',
- disableFilamentWarningsDesc: '在列印或加入佇列時不顯示耗材不足警告',
- preferLowestFilament: '優先使用剩餘最少的耗材',
- preferLowestFilamentDesc: '當多個料盤匹配時,使用剩餘耗材最少的那個',
- trackingModeBuiltIn: '內建庫存',
- trackingModeBuiltInDesc: '包含 RFID 自動匹配和用量追蹤',
- trackingModeSpoolmanDesc: '外部耗材管理伺服器',
- builtInFeatureRfid: '自動檢測 AMS 中的拓竹 RFID 耗材',
- builtInFeatureUsage: '追蹤每次列印的耗材消耗',
- builtInFeatureCatalog: '管理耗材、顏色和 K 值設定檔案',
- builtInFeatureThirdParty: '第三方耗材可分配到庫存耗材',
- amsSyncButton: '從 AMS 同步重量',
- amsSyncTitle: '從 AMS 同步耗材重量',
- amsSyncMessage: '這將使用已連線印表機的目前 AMS 剩餘百分比值覆蓋所有庫存耗材重量。用於從損壞的重量資料中恢復。印表機必須線上。',
- amsSyncing: '同步中...',
- amsSyncSuccess: '已同步 {{synced}} 個耗材,跳過 {{skipped}} 個',
- amsSyncError: '從 AMS 同步重量失敗',
- // Spoolman settings
- spoolmanUrl: 'Spoolman URL',
- spoolmanUrlHint: 'Spoolman 伺服器的 URL(例如 http://localhost:7912)',
- spoolmanConnected: '已連線',
- spoolmanDisconnected: '未連線',
- status: '狀態',
- connect: '連線',
- disconnect: '斷開',
- howSyncWorks: '同步工作原理',
- syncInfoRfidOnly: '僅同步帶有 RFID 的官方拓竹耗材',
- syncInfoAutoCreate: '首次同步時自動在 Spoolman 中建立新耗材',
- syncInfoThirdPartySkipped: '非拓竹耗材(第三方、重新填充的)將被跳過',
- linkingExistingSpools: '連結現有耗材',
- linkingExistingSpoolsDesc: '要將現有的 Spoolman 耗材連結到您的 AMS,請將滑鼠懸停在 AMS 槽位上並點選"連結到 Spoolman"。',
- syncMode: '同步模式',
- syncModeAuto: '自動',
- syncModeManual: '僅手動',
- syncModeAutoDesc: '偵測到更改時自動同步 AMS 資料',
- syncModeManualDesc: '僅在手動觸發時同步',
- syncAmsData: '同步 AMS 資料',
- syncAmsDataDesc: '手動將印表機 AMS 資料同步到 Spoolman',
- allPrinters: '所有印表機',
- // Default printer
- noDefaultPrinter: '無預設(每次詢問)',
- // Sidebar
- sidebarOrder: '側邊欄順序',
- // Camera
- saveThumbnails: '儲存縮圖',
- captureFinishPhoto: '拍攝完成照片',
- noPrintersConfigured: '未設定印表機',
- // Archive settings
- archiveMode: {
- always: '始終建立歸檔條目',
- never: '從不建立歸檔條目',
- ask: '每次詢問',
- },
- // Updates
- checkForUpdatesLabel: '檢查更新',
- checkPrinterFirmware: '檢查印表機韌體',
- includeBetaUpdates: '包含測試版本',
- includeBetaUpdatesDesc: '檢查更新時通知測試版和預發布版本',
- // Queue
- enableRetry: '啟用重試',
- // Home Assistant
- homeAssistantDescription: '透過 Home Assistant 控制智慧插座',
- environmentManagedLabel: '(環境變數管理)',
- autoEnabledViaEnv: '透過環境變數自動啟用',
- urlFromEnvReadOnly: '值由 HA_URL 環境變數設定(只讀)',
- tokenFromEnvReadOnly: '值由 HA_TOKEN 環境變數設定(只讀)',
- // MQTT
- mqttConnectedTo: '已連線到',
- // Prometheus
- prometheusDescription: '以 Prometheus 格式暴露印表機資料',
- // Smart plugs empty state
- noSmartPlugsTitle: '未設定智慧插座',
- noSmartPlugsDescription: '新增基於 Tasmota 的智慧插座以追蹤能耗並自動化電源控制。',
- // Notifications empty state
- noProvidersTitle: '未設定提供者',
- noProvidersDescription: '新增提供者以接收警報。',
- noTemplatesAvailable: '無可用範本。重新啟動後端以載入預設範本。',
- // API permissions
- apiPermissionView: '檢視印表機狀態和佇列',
- apiPermissionEdit: '新增和移除列印佇列中的項目',
- // API keys
- apiKeysEmptyTitle: '無 API 金鑰',
- apiKeysEmptyDescription: '建立 API 金鑰以與外部服務整合。',
- // Users
- noUsersFound: '未找到使用者',
- noGroupsFound: '未找到群組',
- noGroupsAvailable: '無可用群組',
- passwordsDoNotMatch: '密碼不符',
- systemGroupWarning: '系統群組名稱不可更改',
- // Auth disabled
- authDisabledTitle: '身份驗證已停用',
- authDisabledFeature1: '需要登入才能存取系統',
- authDisabledFeature2: '建立多個使用者並基於群組的權限管理',
- authDisabledFeature3: '使用 50+ 個細粒度權限控制存取',
- // User deletion
- userHasCreated: '此使用者已建立:',
- userItemsQuestion: '您想如何處理這些項目?',
- deleteUserConfirm: '確定要刪除此使用者嗎?',
- actionCannotBeUndone: '此操作無法復原。',
- // Smart plugs
- addFirstSmartPlug: '新增您的第一個智慧插座',
- // Notifications
- providers: '提供者',
- log: '日誌',
- testAll: '全部測試',
- testResults: '測試結果',
- testPassedCount: '{{count}} 個透過',
- testFailedCount: '{{count}} 個失敗',
- messageTemplates: '訊息範本',
- messageTemplatesDescription: '自訂每個事件的通知訊息。',
- // API Keys section
- apiKeys: 'API 金鑰',
- apiKeysDescription: '建立 API 金鑰用於外部整合和 Webhook。',
- createKey: '建立金鑰',
- apiKeyCreated: 'API 金鑰建立成功',
- apiKeyCopyWarning: '請立即複製此金鑰 - 它不會再次顯示!',
- useInApiBrowser: '在 API 瀏覽器中使用',
- createNewApiKey: '建立新 API 金鑰',
- keyName: '金鑰名稱',
- keyNamePlaceholder: '例如:Home Assistant、OctoPrint',
- readStatus: '讀取狀態',
- readStatusDescription: '檢視印表機狀態和佇列',
- manageQueue: '管理佇列',
- manageQueueDescription: '新增和移除列印佇列中的項目',
- controlPrinter: '控制印表機',
- controlPrinterDescription: '暫停、繼續和停止列印',
- 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: '輸入密碼(至少 6 個字元)',
- confirmPassword: '確認密碼',
- confirmPasswordPlaceholder: '確認密碼',
- // Title tooltips
- viewReleaseOnGitHub: '在 GitHub 上檢視發布',
- turnAllPlugsOn: '開啟所有插座',
- turnAllPlugsOff: '關閉所有插座',
- // Modal: Clear logs
- clearNotificationLogs: '清除通知日誌',
- clearLogsMessage: '這將永久刪除所有 30 天前的通知日誌。此操作無法復原。',
- clearLogs: '清除日誌',
- // Modal: Reset UI
- resetUiPreferences: '重設 UI 偏好',
- resetUiPreferencesMessage: '這將重設所有 UI 偏好為預設值:側邊欄順序、主題、儀表板佈局、檢視模式和排序偏好。您的印表機、歸檔和伺服器設定不會受到影響。清除後頁面將重新載入。',
- resetPreferences: '重設偏好',
- // Modal: Delete group
- deleteGroupTitle: '刪除群組',
- deleteGroupMessage: '確定要刪除此群組嗎?此群組中的使用者將失去這些權限。',
- deleteGroup: '刪除群組',
- // Modal: Disable auth
- disableAuthenticationTitle: '停用身份驗證',
- disableAuthenticationMessage: '確定要停用身份驗證嗎?這將使您的 Bambuddy 實例無需登入即可存取。所有使用者將保留在資料庫中但身份驗證將被停用。',
- disableAuthentication: '停用身份驗證',
- // Additional settings
- configureBambuddy: '設定 Bambuddy',
- systemDefault: '系統預設',
- archiveSettings: '歸檔設定',
- newWindow: '新視窗',
- embeddedOverlay: '嵌入式疊加層',
- preferredSlicer: '首選切片軟體',
- preferredSlicerDescription: '選擇要用於開啟檔案的切片軟體',
- externalCameras: '外部攝影機',
- costTracking: '成本追蹤',
- printsOnly: '僅列印',
- totalConsumption: '總消耗',
- dataManagement: '資料管理',
- storageUsage: '儲存使用情況',
- storageUsageDescription: '按類別的資料使用情況明細',
- storageUsageTotal: '總計',
- storageUsageErrors: '錯誤',
- storageUsageOtherBreakdown: '其他(包括靜態資源、腳本和設定檔案)',
- storageUsageSystem: '系統',
- storageUsageData: '資料',
- storageUsageUnavailable: '儲存使用資訊不可用',
- clearNotificationLogsDescription: '刪除 30 天前的通知日誌',
- resetUiPreferencesDescription: '重設側邊欄順序、主題、檢視模式和佈局偏好。印表機、歸檔和設定不受影響。',
- enableHomeAssistant: '啟用 Home Assistant',
- enableMqtt: '啟用 MQTT',
- useTls: '使用 TLS',
- enableMetricsEndpoint: '啟用指標端點',
- availableMetrics: '可用指標',
- editUser: '編輯使用者',
- deleteUserTitle: '刪除使用者',
- groupName: '群組名稱',
- // Placeholders
- leaveEmptyForAnonymous: '留空為匿名',
- leaveEmptyForNoAuth: '留空為無認證',
- enterNewPassword: '輸入新密碼',
- confirmNewPassword: '確認新密碼',
- enterGroupName: '輸入群組名稱',
- enterDescriptionOptional: '輸入描述(可選)',
- enterCurrentPassword: '輸入目前密碼',
- enterNewPasswordMin6: '輸入新密碼(至少 6 個字元)',
- toast: {
- keyCopied: '金鑰已複製到剪貼簿',
- copyFailed: '複製金鑰失敗',
- keyAddedToBrowser: '金鑰已新增到 API 瀏覽器',
- clearLogsFailed: '清除日誌失敗',
- uiPreferencesReset: 'UI 偏好已重設。重新整理中...',
- authDisabled: '身份驗證已成功停用',
- authDisableFailed: '停用身份驗證失敗',
- apiKeyCreated: 'API 金鑰已建立',
- apiKeyDeleted: 'API 金鑰已刪除',
- userCreated: '使用者建立成功',
- userUpdated: '使用者更新成功',
- userDeleted: '使用者刪除成功',
- groupCreated: '群組建立成功',
- groupUpdated: '群組更新成功',
- groupDeleted: '群組刪除成功',
- fillRequiredFields: '請填寫所有必填欄位',
- passwordsDoNotMatch: '密碼不符',
- passwordTooShort: '密碼至少需要 6 個字元',
- enterGroupName: '請輸入群組名稱',
- settingsSaved: '設定已儲存',
- noPermissionUpdate: '您沒有權限變更設定',
- cameraSettingsSaved: '攝影機設定已儲存',
- enterCameraUrl: '請輸入攝影機 URL',
- passwordChanged: '密碼修改成功',
- connectionFailed: '連線失敗',
- testFailed: '測試失敗',
- cameraConnected: '攝影機已連線{{resolution}}',
- },
- testConnection: '測試連線',
- catalog: {
- spoolCatalog: '耗材目錄',
- spoolCatalogDescription: '按品牌/類型的空耗材重量。用於新增耗材時的自動重量查詢。',
- searchCatalog: '搜尋目錄...',
- addNewEntry: '新增新條目',
- namePlaceholder: '名稱(例如:Bambu Lab - 塑膠)',
- weight: '重量',
- type: '類型',
- default: '預設',
- custom: '自訂',
- noMatch: '沒有條目匹配您的搜尋',
- empty: '目錄中沒有條目',
- deleteEntry: '刪除條目',
- deleteConfirm: '確定要刪除"{{name}}"嗎?',
- resetCatalog: '重設目錄',
- resetConfirm: '重設目錄為預設值?這將移除所有自訂條目。',
- loadFailed: '載入耗材目錄失敗',
- nameWeightRequired: '名稱和重量為必填項',
- entryAdded: '條目已新增',
- addFailed: '新增條目失敗',
- entryUpdated: '條目已更新',
- updateFailed: '更新條目失敗',
- entryDeleted: '條目已刪除',
- deleteFailed: '刪除條目失敗',
- resetSuccess: '目錄已重設為預設值',
- resetFailed: '重設目錄失敗',
- exported: '已匯出 {{count}} 條',
- imported: '已匯入 {{added}} 條(跳過 {{skipped}} 條)',
- importFailed: '匯入失敗:無效的 JSON 格式',
- exportTooltip: '匯出目錄為 JSON',
- importTooltip: '從 JSON 匯入目錄',
- resetTooltip: '重設為預設值',
- selectedCount: '已選擇 {{count}} 項',
- deleteSelected: '刪除所選',
- bulkDeleteConfirm: '確定要刪除 {{count}} 個條目嗎?',
- bulkDeleted: '已刪除 {{count}} 個條目',
- bulkDeleteFailed: '刪除條目失敗',
- },
- colorCatalog: {
- title: '顏色目錄',
- description: '按製造商/材料的耗材顏色。用於新增耗材時的自動顏色查詢。',
- searchColors: '搜尋顏色...',
- allManufacturers: '所有製造商',
- addNewColor: '新增新顏色',
- manufacturer: '製造商',
- colorName: '顏色名稱',
- hex: '十六進位',
- materialOptional: '材料(可選)',
- showing: '顯示 {{filtered}} / {{total}} 種顏色',
- noMatch: '沒有顏色匹配您的搜尋',
- empty: '目錄中沒有顏色',
- deleteColor: '刪除顏色',
- deleteConfirm: '確定要刪除"{{name}}"嗎?',
- resetCatalog: '重設顏色目錄',
- resetConfirm: '重設目錄為預設值?這將移除所有自訂顏色。',
- sync: '同步',
- starting: '啟動中...',
- syncTooltip: '從 FilamentColors.xyz 同步(2000+ 種顏色,可能需要一分鐘)',
- loadFailed: '載入顏色目錄失敗',
- fieldsRequired: '製造商、顏色名稱和十六進位顏色為必填項',
- colorAdded: '顏色已新增',
- addFailed: '新增顏色失敗',
- colorUpdated: '顏色已更新',
- updateFailed: '更新顏色失敗',
- colorDeleted: '顏色已刪除',
- deleteFailed: '刪除顏色失敗',
- resetSuccess: '顏色目錄已重設為預設值',
- resetFailed: '重設目錄失敗',
- syncUpToDate: '已是最新(檢查了 {{count}} 種顏色)',
- syncComplete: '新增了 {{added}} 種新顏色({{skipped}} 種已存在)',
- syncError: '同步錯誤',
- syncFailed: '從 FilamentColors.xyz 同步失敗',
- exported: '已匯出 {{count}} 種顏色',
- imported: '已匯入 {{added}} 種顏色(跳過 {{skipped}} 種)',
- importFailed: '匯入失敗:無效的 JSON 格式',
- selectedCount: '已選擇 {{count}} 項',
- deleteSelected: '刪除所選',
- bulkDeleteConfirm: '確定要刪除 {{count}} 種顏色嗎?',
- bulkDeleted: '已刪除 {{count}} 種顏色',
- bulkDeleteFailed: '刪除顏色失敗',
- },
- dateFormat: '日期格式',
- dateFormatUs: '美式 (MM/DD/YYYY)',
- dateFormatEu: '歐式 (DD/MM/YYYY)',
- dateFormatIso: 'ISO (YYYY-MM-DD)',
- timeFormat: '時間格式',
- timeFormat12: '12小時制 (3:30 PM)',
- timeFormat24: '24小時制 (15:30)',
- defaultPrinter: '預設印表機',
- defaultPrinterDescription: '為上傳、重印和其他操作預選此印表機。',
- slicerBambuStudio: 'Bambu Studio',
- slicerOrcaSlicer: 'OrcaSlicer',
- sidebarOrderDescription: '拖曳側邊欄項目以重新排序。在此處重設為預設順序。',
- setDefault: '設為預設',
- sidebarOrderSetDefaultHint: '設為預設將目前選單順序套用於尚未自訂的使用者。',
- sidebarDefaultSet: '已設定預設選單順序。',
- sidebarDefaultCleared: '已清除預設選單順序。',
- sidebarDefaultFailed: '設定預設選單順序失敗。',
- reset: '重設',
- darkMode: '深色模式',
- lightMode: '淺色模式',
- active: '(目前)',
- background: '背景',
- accent: '強調色',
- style: '樣式',
- bgNeutral: '中性',
- bgWarm: '暖色',
- bgCool: '冷色',
- bgOled: 'OLED 純黑',
- bgSlate: '石板藍',
- bgForest: '森林綠',
- accentGreen: '綠色',
- accentTeal: '青色',
- accentBlue: '藍色',
- accentOrange: '橙色',
- accentPurple: '紫色',
- accentRed: '紅色',
- styleClassic: '經典',
- styleGlow: '發光',
- styleVibrant: '鮮豔',
- themeToggleHint: '使用側邊欄中的太陽/月亮圖示在深色和淺色模式之間切換。',
- autoArchivePrints: '自動歸檔列印',
- autoArchiveDescription: '列印完成時自動儲存3MF檔案',
- saveThumbnailsDescription: '從3MF檔案中提取並儲存預覽影像',
- captureFinishPhotoDescription: '列印完成時從印表機攝影機拍照',
- ffmpegNotInstalled: '未安裝ffmpeg',
- ffmpegRequired: '攝影機捕獲需要ffmpeg。透過 <brew>brew install ffmpeg</brew>(macOS)或 <apt>apt install ffmpeg</apt>(Linux)安裝。',
- camera: '攝影機',
- cameraViewMode: '攝影機檢視模式',
- cameraOverlayDescription: '攝影機在主螢幕上以可調大小的覆蓋層開啟',
- cameraWindowDescription: '攝影機在單獨的瀏覽器視窗中開啟',
- externalCamerasDescription: '設定外部攝影機以替換內建印表機攝影機。支援MJPEG流、RTSP、HTTP快照和USB攝影機(V4L2)。啟用後,外部攝影機將用於即時檢視和完成照片。',
- cameraPlaceholderUsb: '裝置路徑 (/dev/video0)',
- cameraPlaceholderUrl: '攝影機URL (rtsp://... 或 http://...)',
- cameraTypeMjpeg: 'MJPEG 流',
- cameraTypeRtsp: 'RTSP 流',
- cameraTypeSnapshot: 'HTTP 快照',
- cameraTypeUsb: 'USB 攝影機 (V4L2)',
- 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 更新:',
- 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: '提供者已刪除。',
- 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: 'email',
- requireEmailVerified: '要求電子郵件已驗證',
- requireEmailVerifiedDesc: '僅在提供商將電子郵件聲明標記為已驗證時才接受。',
- requireEmailVerifiedWarning: '警告:將在未經驗證的情況下接受電子郵件。僅對受信任的提供商使用。',
- requireEmailVerifiedAutoLink: '請先停用自動連結以變更此設定。',
- secretHint: '留空以保留目前',
- secretPlaceholder: '新金鑰',
- },
- },
- },
- // 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: '切換腔室燈',
- },
- // Groups management
- groups: {
- title: '群組管理',
- subtitle: '管理存取控制的權限群組',
- backToSettings: '返回設定',
- createGroup: '建立群組',
- noPermission: '您沒有存取此頁面的權限。',
- system: '系統',
- noDescription: '無描述',
- usersCount: '{{count}} 個使用者',
- permissionsCount: '{{count}} 個權限',
- edit: '編輯',
- delete: '刪除',
- toast: {
- created: '群組建立成功',
- updated: '群組更新成功',
- deleted: '群組刪除成功',
- enterGroupName: '請輸入群組名稱',
- },
- modal: {
- editGroup: '編輯群組',
- createGroup: '建立群組',
- cancel: '取消',
- saving: '儲存中...',
- creating: '建立中...',
- saveChanges: '儲存更改',
- },
- form: {
- groupName: '群組名稱',
- groupNamePlaceholder: '輸入群組名稱',
- systemGroupWarning: '系統群組名稱不可更改',
- description: '描述',
- descriptionPlaceholder: '輸入描述(可選)',
- permissions: '權限(已選 {{count}} 個)',
- },
- deleteModal: {
- title: '刪除群組',
- message: '確定要刪除此群組嗎?此群組中的使用者將失去這些權限。',
- confirm: '刪除群組',
- },
- editor: {
- title: '編輯群組',
- createTitle: '建立群組',
- search: '搜尋權限...',
- selectAll: '全選',
- clearAll: '清除全部',
- permissionsSelected: '已選 {{count}} 個',
- noResults: '沒有權限匹配您的搜尋',
- },
- },
- // Users management
- users: {
- title: '使用者管理',
- subtitle: '管理使用者及其對 Bambuddy 實例的存取',
- backToSettings: '返回設定',
- createUser: '建立使用者',
- noPermission: '您沒有存取此頁面的權限。',
- admin: '管理員',
- noGroups: '無群組',
- active: '活躍',
- inactive: '非活躍',
- edit: '編輯',
- delete: '刪除',
- system: '系統',
- noGroupsAvailable: '無可用群組',
- table: {
- username: '使用者名稱',
- groups: '群組',
- status: '狀態',
- actions: '操作',
- },
- toast: {
- created: '使用者建立成功',
- updated: '使用者更新成功',
- deleted: '使用者刪除成功',
- fillRequired: '請填寫所有必填欄位',
- passwordsDoNotMatch: '密碼不符',
- passwordTooShort: '密碼至少需要 6 個字元',
- },
- modal: {
- createUser: '建立使用者',
- editUser: '編輯使用者',
- cancel: '取消',
- creating: '建立中...',
- saving: '儲存中...',
- saveChanges: '儲存更改',
- advancedAuthSubtitle: '使用進階認證',
- },
- form: {
- username: '使用者名稱',
- usernamePlaceholder: '輸入使用者名稱',
- email: '信箱',
- emailPlaceholder: 'user@example.com',
- password: '密碼',
- passwordPlaceholder: '輸入密碼',
- confirmPassword: '確認密碼',
- confirmPasswordPlaceholder: '確認密碼',
- newPasswordPlaceholder: '輸入新密碼',
- confirmNewPasswordPlaceholder: '確認新密碼',
- leaveBlankToKeep: '留空以保持目前值',
- groups: '群組',
- optional: '可選',
- autoGeneratedPassword: '將自動產生安全密碼並透過郵件傳送給使用者。',
- passwordManagedByAdvancedAuth: '密碼由進階認證管理。使用"重設密碼"透過郵件向使用者傳送新密碼。',
- resetPassword: '重設密碼',
- resettingPassword: '重設密碼中...',
- },
- deleteModal: {
- title: '刪除使用者',
- message: '確定要刪除此使用者嗎?此操作無法復原。',
- confirm: '刪除使用者',
- },
- },
- // Stream overlay
- streamOverlay: {
- title: '流疊加層',
- invalidPrinterId: '無效的印表機 ID',
- cameraStream: '攝影機流',
- progress: '進度',
- eta: '預計完成時間',
- printerIdle: '印表機空閒',
- printerOffline: '印表機離線',
- status: {
- printing: '列印中',
- paused: '已暫停',
- finished: '已完成',
- failed: '失敗',
- idle: '空閒',
- unknown: '未知',
- },
- },
- // Profiles
- profiles: {
- title: '設定檔案',
- subtitle: '管理您的切片預設和壓力推進校準',
- tabs: {
- cloud: '雲端設定檔案',
- local: '本機設定檔案',
- kprofiles: 'K 值設定',
- },
- localProfiles: {
- title: '本機設定檔案',
- subtitle: '從 OrcaSlicer 匯入和管理切片預設',
- import: '匯入設定檔案',
- importDesc: '將 .bbscfg、.bbsflmt、.orca_filament、.zip 或 .json 檔案拖放到此處',
- importing: '匯入中...',
- search: '搜尋本機預設...',
- noPresets: '尚無本機預設',
- badge: '本機',
- edit: '編輯',
- delete: '刪除',
- cancel: '取消',
- deleteConfirmTitle: '刪除預設',
- deleteConfirm: '確定要刪除此預設嗎?此操作無法復原。',
- source: '來源',
- inheritsFrom: '繼承自',
- filamentType: '類型',
- vendor: '廠商',
- compatiblePrinters: '相容印表機',
- nozzleTemp: '噴嘴溫度',
- cost: '成本',
- density: '密度',
- pressureAdvance: '壓力推進',
- filament: '耗材',
- process: '工藝',
- printer: '印表機',
- toast: {
- importSuccess: '已匯入 {{count}} 個預設',
- importSkipped: '跳過 {{count}} 個預設(重複)',
- importError: '匯入時出現 {{count}} 個錯誤',
- deleted: '預設已刪除',
- updated: '預設已更新',
- },
- },
- connectedAs: '已連線為',
- logout: '登出',
- noLogoutPermission: '您沒有登出的權限',
- failedToLoad: '載入設定檔案失敗',
- retry: '重試',
- time: {
- justNow: '剛剛',
- minsAgo: '{{count}} 分鐘前',
- hoursAgo: '{{count}} 小時前',
- daysAgo: '{{count}} 天前',
- },
- toast: {
- loggedOut: '已登出',
- },
- login: {
- title: '連線到拓竹雲',
- subtitle: '跨裝置同步您的切片預設',
- email: '信箱',
- password: '密碼',
- region: '地區',
- regionGlobal: '全球',
- regionChina: '中國',
- verificationCode: '驗證碼',
- totpCode: '驗證器驗證碼',
- checkEmail: '檢查您的信箱 ({{email}}) 獲取 6 位驗證碼',
- enterTotpHint: '輸入驗證器 App 中的 6 位驗證碼',
- accessToken: '存取權杖',
- accessTokenHint: '貼上您的拓竹存取權杖(來自 Bambu Studio)',
- 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: '您沒有列印的權限',
- noPermissionAddToQueue: '您沒有新增到佇列的權限',
- noPermissionDownload: '您沒有下載檔案的權限',
- noPermissionRenameFile: '您沒有重新命名此檔案的權限',
- noPermissionGenerateThumbnail: '您沒有產生縮圖的權限',
- noPermissionDeleteFile: '您沒有刪除此檔案的權限',
- noPermissionCreateFolder: '您沒有建立資料夾的權限',
- noPermissionUpload: '您沒有上傳檔案的權限',
- noPermissionMoveFiles: '您沒有移動檔案的權限',
- noPermissionDeleteFiles: '您沒有刪除檔案的權限',
- // External folder
- linkExternal: '連結外部',
- linkExternalFolder: '連結外部資料夾',
- linkExternalFolderDescription: '將主機目錄(NAS、USB、網路共享)掛載到檔案管理器中。檔案不會被複制——直接從原始路徑存取。',
- externalFolderNamePlaceholder: '例如:NAS列印檔案',
- externalPath: '主機路徑',
- externalPathHelp: 'Docker主機上目錄的絕對路徑。必須以繫結掛載方式掛載到容器中。',
- readOnly: '只讀',
- readOnlyHelp: '防止上傳和刪除',
- showHiddenFiles: '顯示隱藏檔案(點檔案)',
- externalFolder: '外部資料夾',
- scanFolder: '掃描',
- toast: {
- folderCreated: '資料夾已建立',
- folderDeleted: '資料夾已刪除',
- fileDeleted: '檔案已刪除',
- filesDeleted: '已刪除 {{count}} 個檔案',
- filesMoved: '檔案已移動',
- folderLinked: '資料夾已連結',
- folderUnlinked: '資料夾已取消連結',
- externalFolderLinked: '外部資料夾已連結並掃描',
- folderScanned: '掃描完成:新增 {{added}} 個,移除 {{removed}} 個',
- addedToQueue: '已將 {{count}} 個檔案新增到佇列',
- addedToQueuePartial: '已新增 {{added}} 個檔案,{{failed}} 個失敗',
- failedToAddToQueue: '新增檔案失敗:{{error}}',
- fileRenamed: '檔案已重新命名',
- folderRenamed: '資料夾已重新命名',
- thumbnailsGenerated: '已產生 {{count}} 個縮圖',
- thumbnailsGeneratedPartial: '已產生 {{succeeded}} 個縮圖,{{failed}} 個失敗',
- noStlMissingThumbnails: '沒有缺少縮圖的 STL 檔案',
- failedToGenerateThumbnails: '產生縮圖失敗:{{error}}',
- thumbnailGenerated: '縮圖已產生',
- failedToGenerateThumbnail: '產生縮圖失敗:{{error}}',
- },
- },
- // Projects
- projects: {
- title: '專案',
- subtitle: '組織和追蹤您的 3D 列印專案',
- newProject: '新增專案',
- editProject: '編輯專案',
- deleteProject: '刪除專案',
- projectName: '專案名稱',
- description: '描述',
- noProjects: '尚無專案',
- noProjectsFiltered: '沒有{{status}}專案',
- noProjectsFilteredHelp: '您沒有任何{{status}}專案。當專案狀態更改時,它們將出現在這裡。',
- createFirst: '建立您的第一個項目以開始組織相關列印、追蹤進度和管理構建。',
- createFirstButton: '建立您的第一個項目',
- create: '建立',
- files: '檔案',
- prints: '列印',
- plates: '板',
- parts: '零件',
- lastModified: '最後修改',
- deleteConfirm: '確定要刪除此項目嗎?歸檔和佇列項目將被取消連結但不會被刪除。',
- addFiles: '新增檔案',
- removeFile: '移除檔案',
- viewDetails: '檢視詳情',
- // Modal fields
- namePlaceholder: '例如:Voron 2.4 構建',
- descriptionPlaceholder: '可選描述...',
- 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: '匯出到檔案',
- },
- // Spoolman
- spoolman: {
- title: 'Spoolman 整合',
- enabled: 'Spoolman 已啟用',
- url: 'Spoolman URL',
- connected: '已連線',
- disconnected: '未連線',
- testConnection: '測試連線',
- sync: '同步',
- syncing: '同步中...',
- lastSync: '上次同步',
- linkToSpoolman: '連結到 Spoolman',
- openInSpoolman: '在 Spoolman 中開啟',
- unlinkSpool: '取消連結耗材',
- unlinkConfirmTitle: '解開料盤?',
- unlinkConfirmMessage: '這將斷開卷軸與 Spoolman 的連線。Spoolman 中的卷軸資料將保持不變。',
- selectSpool: '選擇耗材',
- noUnlinkedSpools: '無未連結的耗材',
- linkSuccess: '耗材已成功連結到 Spoolman',
- linkFailed: '連結耗材失敗',
- unlinkSuccess: '已成功從 Spoolman 取消連結耗材',
- unlinkFailed: '取消連結耗材失敗',
- spoolId: '耗材 ID',
- fillSourceLabel: '(Spoolman)',
- weight: '重量',
- remaining: '剩餘',
- disableWeightSync: '停用 AMS 估計重量同步',
- disableWeightSyncDesc: '不從 AMS 估計值更新剩餘容量。如果您更喜歡 Spoolman 的用量追蹤而非 AMS 百分比估計,請使用此選項。新耗材仍將使用 AMS 估計值作為初始重量。',
- reportPartialUsage: '報告失敗列印的部分用量',
- reportPartialUsageDesc: '當列印失敗或被取消時,根據層進度報告估計的耗材使用量。',
- },
- // Inventory
- inventory: {
- title: '耗材庫存',
- spoolmanMixedContentTitle: 'Spoolman 無法透過 HTTPS 載入 — 瀏覽器已封鎖混合內容',
- spoolmanMixedContentBody: 'Bambuddy 透過您的反向代理以 HTTPS 提供服務,但您的 Spoolman 位址仍為 HTTP。基於安全考量,瀏覽器會封鎖混合內容,因此內嵌的 Spoolman 介面無法載入。Spoolman 也必須可透過 HTTPS 存取。',
- spoolmanMixedContentFixReverseProxy: '請將 Spoolman 置於與 Bambuddy 相同的反向代理(Traefik / Nginx / Caddy)之後並啟用 HTTPS,然後在設定中將 Spoolman URL 更新為新的 HTTPS 位址。',
- spoolmanMixedContentFixOpenNewTab: '作為替代方案,可在新分頁以 HTTP 開啟 Spoolman — 混合內容規則僅適用於內嵌框架,獨立分頁仍可正常運作。',
- spoolmanOpenInNewTab: '在新分頁開啟 Spoolman',
- addSpool: '新增耗材',
- editSpool: '編輯耗材',
- material: '材料',
- selectMaterial: '選擇材料...',
- subtype: '子類型',
- brand: '品牌',
- searchBrand: '搜尋品牌...',
- useCustomBrand: '使用"{{brand}}"',
- useCustomMaterial: '使用自訂材料:{{material}}',
- colorName: '顏色名稱',
- colorNamePlaceholder: '翡翠白、烈焰紅...',
- color: '顏色',
- hexColor: '十六進位顏色',
- pickColor: '選擇自訂顏色',
- labelWeight: '標籤重量',
- coreWeight: '空盤重量',
- searchSpoolWeight: '搜尋耗材重量...',
- weightUsed: '已使用',
- currentWeight: '剩餘重量',
- measuredWeight: '稱量重量',
- spoolName: '料盤',
- costPerKg: '每公斤成本',
- measuredWeightError: '稱量重量必須在 {{min}}g 到 {{max}}g 之間。',
- slicerFilament: '切片耗材',
- slicerFilamentName: '切片預設名稱',
- slicerPreset: '切片預設',
- searchPresets: '搜尋耗材預設...',
- selectedPreset: '已選擇',
- noPresetsFound: '未找到預設',
- tempOverrides: '溫度覆蓋',
- note: '備註',
- notePlaceholder: '關於此耗材的任何備註...',
- // Per-spool category + low-stock threshold override (#729)
- category: '類別',
- categoryPlaceholder: '例如:生產、原型、客戶A',
- categoryNone: '未分類',
- lowStockThresholdOverride: '低庫存閾值(此料盤)',
- lowStockThresholdOverrideHelp: '留空以使用全域閾值({{global}}%)。',
- clearRfid: '清除 RFID 標籤',
- rfidCleared: 'RFID 標籤已清除',
- archive: '歸檔',
- restore: '恢復',
- noSpools: '尚無耗材。新增您的第一個耗材開始使用。',
- noAvailableSpools: '沒有可用的耗材。請先向庫存中新增耗材,或從其他槽位取消指派一個耗材。',
- kProfiles: 'K 值設定',
- addKProfile: '新增 K 值設定',
- assignSpool: '分配耗材',
- unassignSpool: '取消分配',
- assignSuccess: '耗材已分配,AMS 槽位已設定',
- assignFailed: '分配耗材失敗',
- assignMismatchTitle: '材料不符',
- assignMismatchMessage: '所選料盤材料 "{{spoolMaterial}}" 與 {{location}} 的料槽材料 "{{trayMaterial}}" 不符。仍要分配嗎?',
- assignMismatchConfirm: '仍然分配',
- assignPartialMismatchMessage: '料盤材料 "{{spoolMaterial}}" 與 {{location}} 的 "{{trayMaterial}}" 相近但不完全一致。是否繼續?',
- assignProfileMismatchMessage: '料盤設定 "{{spoolProfile}}" 與 {{location}} 的料槽設定 "{{trayProfile}}" 不一致。是否繼續?',
- selectSpool: '選擇要分配到此槽位的耗材',
- assigned: '已分配',
- assigning: '分配中...',
- searchSpools: '搜尋耗材...',
- showAllSpools: '顯示所有耗材',
- allMaterials: '所有材料',
- filterByBrand: '按品牌篩選...',
- showArchived: '顯示已歸檔',
- quickAdd: '快速新增(庫存)',
- quantity: '數量',
- stock: '庫存',
- configured: '已設定',
- spoolsCreated: '已建立 {{count}} 個耗材',
- spoolCreated: '耗材已建立',
- spoolUpdated: '耗材已更新',
- spoolDeleted: '耗材已刪除',
- spoolArchived: '耗材已歸檔',
- spoolRestored: '耗材已恢復',
- deleteConfirm: '確定要刪除此耗材嗎?此操作無法復原。',
- archiveConfirm: '確定要歸檔此耗材嗎?',
- advancedSettings: '進階設定',
- // Tabs
- filamentInfoTab: '耗材資訊',
- paProfileTab: 'PA 設定',
- filamentInfo: '耗材',
- additional: '附加',
- // Cloud
- loadingPresets: '載入雲端預設中...',
- cloudConnected: '雲端已連線',
- cloudNotConnected: '雲端未連線(使用預設值)',
- // Colors
- recentColors: '最近',
- searchColors: '搜尋顏色...',
- searchResults: '搜尋結果',
- allColors: '所有顏色',
- commonColors: '常用顏色',
- showLess: '顯示更少',
- showAll: '顯示全部',
- noColorsFound: '沒有顏色匹配您的搜尋',
- noResults: '未找到匹配項',
- // PA Profiles
- selectMaterialFirst: '請先在耗材資訊分頁中選擇材料。',
- noPrintersConfigured: '未設定印表機。新增印表機以使用 PA 設定。',
- matchingFilter: '匹配',
- anyBrand: '任何品牌',
- anyVariant: '任何變體',
- autoSelect: '自動選擇',
- matches: '匹配',
- match: '匹配',
- noMatches: '無匹配',
- connected: '已連線',
- offline: '離線',
- printerOffline: '印表機離線。連線後檢視校準設定。',
- noKProfilesMatch: '沒有 K 值設定匹配所選耗材。',
- leftNozzle: '左噴嘴',
- rightNozzle: '右噴嘴',
- profilesSelected: '個校準設定已選擇',
- // Stats & enhanced table
- totalInventory: '總庫存',
- totalConsumed: '總消耗',
- byMaterial: '按材料',
- inPrinter: '在印表機中',
- lowStock: '庫存不足',
- sinceTracking: '自開始追蹤',
- loadedInAms: '已裝載到 AMS/外接',
- remaining: '剩餘',
- weightCheck: '重量檢查',
- lastWeighed: '上次稱量',
- neverWeighed: '從未稱量',
- search: '搜尋耗材...',
- showing: '顯示',
- to: '到',
- of: '共',
- show: '顯示',
- spools: '個耗材',
- spool: '個耗材',
- page: '頁',
- noSpoolsMatch: '未找到結果',
- noSpoolsMatchDesc: '嘗試調整您的搜尋或篩選條件。',
- active: '活躍',
- archived: '已歸檔',
- all: '全部',
- used: '已使用',
- new: '新的',
- clearFilters: '清除篩選',
- table: '表格',
- cards: '卡片',
- net: '淨重',
- // Grouping
- groupSimilar: '分組',
- groupedSpools: '{{count}} 個相同耗材',
- groupedRows: '行',
- // Column config
- columns: '列',
- configureColumns: '設定列',
- configureColumnsDesc: '拖曳以重新排序列或使用箭頭。使用眼睛圖示切換可見性。',
- visible: '可見',
- reset: '重設',
- cancel: '取消',
- applyChanges: '套用更改',
- moveUp: '上移',
- moveDown: '下移',
- hideColumn: '隱藏列',
- showColumn: '顯示列',
- // Tag linking
- linkToSpool: '連結到耗材',
- tagLinked: '標籤已連結到耗材',
- tagLinkFailed: '連結標籤失敗',
- tagAlreadyLinked: '標籤已連結到其他耗材',
- unknownTag: '偵測到未知 RFID 標籤',
- // Usage history
- usageHistory: '使用歷史',
- noUsageHistory: '尚無使用紀錄',
- printName: '列印名稱',
- weightConsumed: '消耗重量',
- clearHistory: '清除',
- historyCleared: '使用歷史已清除',
- fillSourceLabel: '(庫存)',
- lowStockThresholdError: '閾值必須在 0.1 到 99.9 之間',
- },
- // Timelapse
- timelapse: {
- title: '縮時攝影',
- create: '建立縮時攝影',
- download: '下載',
- delete: '刪除',
- preview: '預覽',
- frameRate: '幀率',
- quality: '品質',
- processing: '處理中...',
- noTimelapses: '無可用縮時攝影',
- },
- // AMS
- ams: {
- title: 'AMS',
- slot: '槽位',
- empty: '空',
- emptySlot: '空槽位',
- unknown: '未知',
- humidity: '濕度',
- temperature: '溫度',
- filamentType: '耗材類型',
- filamentColor: '顏色',
- remaining: '剩餘',
- history: 'AMS 歷史',
- noHistory: '無可用歷史',
- configureSlot: '設定槽位',
- externalSpool: '外接耗材',
- profile: '設定',
- kFactor: 'K 值',
- fill: '填充',
- configure: '設定',
- used: '已使用',
- remainingUnit: '剩餘',
- },
- // Print modal
- printModal: {
- title: '開始列印',
- selectPrinter: '選擇印表機',
- selectPlate: '選擇板',
- filamentMapping: '耗材對應',
- totalCost: '總成本:',
- slotRemainingShort: ' - 剩餘 {{grams}}g',
- printSettings: '列印設定',
- bedLeveling: '熱床調平',
- flowCalibration: '流量校準',
- vibrationCalibration: '振動校準',
- layerInspection: '首層檢查',
- timelapse: '縮時攝影',
- startPrint: '開始列印',
- addToQueue: '新增到佇列',
- cancel: '取消',
- noPrintersAvailable: '無可用印表機',
- printerBusy: '印表機忙碌',
- printerOffline: '印表機離線',
- sameTypeDifferentColor: '相同類型,不同顏色',
- filamentTypeNotLoaded: '耗材類型未裝載',
- openCalendar: '開啟日曆',
- leftNozzle: '左',
- rightNozzle: '右',
- leftNozzleTooltip: '左噴嘴',
- rightNozzleTooltip: '右噴嘴',
- filamentOverride: '耗材覆蓋',
- filamentOverrideHint: '可選覆蓋用於基於模型的耗材分配。排程器將使用您選擇的耗材而不是原始 3MF 值進行匹配。',
- originalFilament: '原始',
- overrideWith: '覆蓋為',
- resetToOriginal: '恢復為原始',
- insufficientFilamentTitle: '耗材不足',
- insufficientFilamentMessage: '部分已分配料盤的剩餘耗材少於本次列印所需:',
- insufficientFilamentLine: '{{printer}} - {{slot}}:需要 {{required}}g,剩餘 {{remaining}}g',
- printAnyway: '仍然列印',
- forceColorMatch: '強制顏色匹配',
- staggerPrinterStarts: '錯開印表機啟動',
- staggerGroupSize: '群組大小',
- staggerInterval: '間隔(分鐘)',
- staggerPreview: '{{printers}} 台印表機 → 分成 {{groups}} 組,每組 {{size}} 台,每 {{interval}} 分鐘啟動一組',
- staggerLastGroup: '最後一組:{{count}}',
- staggerTotal: '總計:{{minutes}} 分鐘',
- staggerToPrinters: '分批傳送到 {{count}} 臺印表機',
- gcodeInjection: '注入自動列印G-code',
- },
- // Backup
- backup: {
- title: '備份與恢復',
- createBackup: '建立備份',
- restoreBackup: '恢復備份',
- restoreDescription: '從備份檔案替換所有資料',
- downloadBackup: '下載備份',
- uploadBackup: '上傳備份',
- lastBackup: '上次備份',
- autoBackup: '自動備份',
- backupNow: '立即備份',
- restoreWarning: '警告:恢復備份將覆蓋所有目前資料。',
- includeArchives: '包含歸檔',
- includeSettings: '包含設定',
- includeProfiles: '包含設定檔案',
- backupSuccess: '備份建立成功',
- restoreSuccess: '備份恢復成功',
- backupFailed: '備份失敗',
- restoreFailed: '恢復失敗',
- restoreNote: '恢復期間虛擬印表機將停止',
- // GitHub Backup
- githubBackup: 'GitHub 備份',
- enabled: '已啟用',
- cloudLoginRequired: '需要登入 Bambu Cloud。請在 設定檔案 → 雲設定檔案 中登入以啟用 GitHub 備份。',
- cloudLoginRequiredShort: '需要雲端登入',
- githubDescription: '自動將您的設定檔案同步到私有 GitHub 倉庫以進行備份和版本歷史紀錄。',
- repositoryUrl: '倉庫 URL',
- personalAccessToken: '個人存取權杖',
- tokenSaved: '(已儲存)',
- enterNewToken: '輸入新權杖以更新',
- tokenHint: '具有內容讀寫權限的細粒度權杖',
- branch: '分支',
- 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: '新增到佇列時自動開始列印。關閉後,列印任務等待手動派發。',
- },
- tailscaleDisabled: {
- title: 'Tailscale 整合',
- description: '啟用後,使用 Tailscale 取得受信任的 TLS 憑證。停用則僅使用自簽憑證。',
- },
- setupRequired: {
- title: '需要設定',
- description: '虛擬印表機功能需要額外的系統設定才能工作。包括埠轉發、防火牆規則和平臺特定設定。',
- readGuide: '啟用前請閱讀設定指南',
- },
- 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: '更新設定失敗',
- tailscaleNotAvailable: '此主機上未安裝 Tailscale。請先安裝 Tailscale,然後重試。',
- copyFailed: '複製失敗 — 請手動選取文字',
- accessCodeRequired: '請先設定存取碼',
- targetPrinterRequired: '請先選擇目標印表機',
- bindIpRequired: '請先設定繫結 IP',
- accessCodeEmpty: '存取碼不能為空',
- accessCodeLength: '存取碼必須恰好 8 個字元',
- created: '虛擬印表機已建立',
- failedToCreate: '建立虛擬印表機失敗',
- deleted: '虛擬印表機已刪除',
- failedToDelete: '刪除虛擬印表機失敗',
- },
- list: {
- title: '虛擬印表機',
- add: '新增',
- addFirst: '新增虛擬印表機',
- empty: '未設定虛擬印表機。新增一個以開始使用。',
- },
- bindIp: {
- title: '繫結介面',
- placeholder: '選擇介面...',
- hint: '此虛擬印表機繫結的網路介面。每臺印表機必須唯一。',
- },
- proxy: {
- accessCodeHint: '在代理模式下,在切片軟體中使用目標印表機的存取碼。連線會透明轉發到真實印表機。',
- },
- addDialog: {
- title: '新增虛擬印表機',
- name: '名稱',
- hint: '建立後可以設定存取碼、目標印表機和其他設定。',
- create: '建立',
- },
- deleteConfirm: {
- title: '刪除虛擬印表機',
- message: '確定要刪除"{{name}}"嗎?這將停止此印表機的所有服務。',
- },
- },
- // Model Viewer
- modelViewer: {
- openInSlicer: '在切片軟體中開啟',
- tabs: {
- model: '3D 模型',
- gcode: 'G-code 預覽',
- },
- notAvailable: '不可用',
- notSliced: '未切片',
- plates: '板',
- allPlates: '所有板',
- plateNumber: '板 {{number}}',
- plateCount: '{{count}} 個板',
- plateCount_other: '{{count}} 個板',
- objectCount: '{{count}} 個物件',
- objectCount_other: '{{count}} 個物件',
- filamentCount: '{{count}} 種耗材',
- filamentCount_other: '{{count}} 種耗材',
- eta: '預計 {{minutes}} 分鐘',
- noPreview: '此檔案無可用預覽',
- pagination: {
- pageOf: '第 {{current}} / {{total}} 頁',
- prev: '上一頁',
- next: '下一頁',
- },
- errors: {
- failedToLoad: '載入檔案失敗',
- noMeshes: '3MF 檔案中未找到網格',
- unsupportedFormat: '不支援的檔案格式',
- },
- },
- // Maintenance type descriptions (built-in)
- maintenanceDescriptions: {
- lubricateCarbonRods: '在碳纖維杆上塗抹潤滑劑以確保順暢運動',
- lubricateRails: '在線性導軌上塗抹潤滑劑以確保順暢運動',
- cleanNozzle: '清潔熱端和噴嘴以防止堵塞',
- checkBelts: '檢查皮帶張力以確保列印精度',
- cleanBuildPlate: '清潔列印板以獲得更好的附著力',
- checkExtruder: '檢查擠出機齒輪磨損情況',
- checkCooling: '確保冷卻風扇正常工作',
- generalInspection: '印表機綜合檢查',
- cleanCarbonRods: '清潔碳纖維杆以減少摩擦',
- lubricateSteelRods: '在鋼杆上塗抹潤滑劑以確保順暢運動',
- cleanSteelRods: '清潔鋼杆以減少摩擦',
- cleanLinearRails: '擦拭線性導軌以清除灰塵和碎屑',
- checkPtfeTube: '檢查 PTFE 管的磨損或損壞',
- replaceHepaFilter: '更換 HEPA 過濾器以保證空氣品質',
- replaceCarbonFilter: '更換活性炭過濾器',
- lubricateLeftNozzleRail: '潤滑左噴嘴導軌(H2 系列)',
- },
- // Smart Plugs
- smartPlugs: {
- offline: '離線',
- admin: '管理',
- openPlugAdminPage: '開啟插座管理頁面',
- deleteSmartPlug: '刪除智慧插座',
- turnOnSmartPlug: '開啟智慧插座',
- turnOffSmartPlug: '關閉智慧插座',
- turnOn: '開啟',
- turnOff: '關閉',
- addSmartPlug: {
- scanningNetwork: '掃描網路中...',
- chooseEntity: '選擇實體...',
- connectionFailed: '連線失敗',
- searchEntities: '搜尋實體...',
- searchPowerSensors: '搜尋功率感測器...',
- searchEnergySensors: '搜尋能量感測器...',
- placeholders: {
- plugName: '客廳插座',
- mqttStateOnValue: 'ON、true、1',
- mqttSameAsPower: '與功率主題相同,或不同',
- },
- },
- // SmartPlugCard
- linkedTo: '連結到:',
- monitorOnly: '僅監控',
- alerts: '警報',
- scheduleOn: '開啟 {{time}}',
- scheduleOff: '關閉 {{time}}',
- on: '開啟',
- off: '關閉',
- power: '功率',
- kwhToday: '今日kWh',
- settings: '設定',
- automationSettings: '自動化設定',
- showInSwitchbar: '在開關欄顯示',
- quickAccessSidebar: '從側邊欄快速存取',
- enabled: '已啟用',
- enableAutomation: '為此插座啟用自動化',
- autoOn: '自動開啟',
- autoOnDescription: '列印開始時開啟',
- autoOff: '自動關閉',
- autoOffDescription: '列印完成時關閉(一次性)',
- autoOffPersistent: '保持啟用',
- autoOffPersistentDescription: '在列印之間保持啟用而非一次性',
- turnOffDelayMode: '關閉延遲模式',
- time: '時間',
- temp: '溫度',
- delayMinutes: '延遲(分鐘)',
- tempThreshold: '溫度閾值(°C)',
- tempThresholdDescription: '當噴嘴冷卻到此溫度以下時關閉',
- edit: '編輯',
- deleteConfirm: '確定要刪除"{{name}}"嗎?此操作無法復原。',
- turnOnConfirm: '確定要開啟"{{name}}"嗎?',
- turnOffConfirm: '確定要關閉"{{name}}"嗎?這將切斷連線裝置的電源。',
- failedToTurn: '無法{{action}}"{{name}}"',
- unknown: '未知',
- // AddSmartPlugModal
- addTitle: '新增智慧插座',
- editTitle: '編輯智慧插座',
- stopScanning: '停止掃描',
- discoverTasmota: '發現Tasmota裝置',
- foundDevices: '找到{{count}}個裝置 - 點選選擇:',
- noDevicesFound: '未在您的網路中找到Tasmota裝置',
- haNotConfigured: 'Home Assistant未設定。請在以下位置設定',
- haSettingsPath: '設定 → 網路 → Home Assistant',
- selectEntity: '選擇實體 *',
- ipAddress: 'IP 位址 *',
- nameLabel: '名稱 *',
- username: '使用者名稱',
- password: '密碼',
- authHint: '如果您的Tasmota裝置不需要認證,請留空',
- linkToPrinter: '連結印表機',
- noPrinter: '無印表機(僅手動控制)',
- linkingDescription: '連結後可在列印開始/完成時自動開關',
- powerAlerts: '功率警報',
- alertAbove: '高於時警報(W)',
- alertBelow: '低於時警報(W)',
- alertDescription: '當電力消耗超過這些閾值時收到通知。留空以停用該方向。',
- dailySchedule: '每日計畫',
- turnOnAt: '開啟時間',
- turnOffAt: '關閉時間',
- scheduleDescription: '每天在這些時間自動開關插座。留空以跳過該操作。',
- showOnPrinterCard: '在印表機卡片上顯示',
- displayOnPrinterCard: '在印表機卡片上顯示按鈕',
- connectedResult: '已連線!',
- deviceLabel: '裝置:{{name}} - ',
- stateLabel: '狀態:{{state}}',
- test: '測試',
- delete: '刪除',
- save: '儲存',
- add: '新增',
- cancel: '取消',
- failedToStartScan: '無法開始掃描',
- nameRequired: '名稱為必填項',
- entityRequired: 'Home Assistant插座需要實體',
- mqttTopicRequired: '必須為功率、能源或狀態監控設定至少一個MQTT主題',
- loadingEntities: '正在載入實體...',
- loading: '載入中...',
- failedToLoadEntities: '載入實體失敗:{{error}}',
- noEntitiesMatching: '未找到匹配"{{search}}"的實體',
- noEntitiesAvailable: '無可用實體',
- searchingEntities: '搜尋所有實體(找到{{count}}個)',
- showingEntities: '顯示 switch、light、input_boolean({{count}}個可用)',
- energyMonitoringOptional: '能源監控(可選)',
- energyMonitoringHint: '搜尋並選擇提供功率/能源資料的感測器。',
- powerSensorW: '功率感測器(W)',
- energyTodayKwh: '今日能源(kWh)',
- totalEnergyKwh: '總能源(kWh)',
- noMatchingSensors: '無匹配的感測器',
- none: '無',
- mqttNotConfigured: 'MQTT代理未設定。請在以下位置設定代理地址',
- mqttSettingsPath: '設定 → 網路 → MQTT發布',
- mqttNotConfiguredSuffix: '(您不需要啟用發布,只需填寫代理詳細資訊)。',
- mqttMonitorOnlyDescription: 'MQTT插座透過MQTT訂閱接收功率/能源資料。開關控制不可用 - 請使用您的MQTT代理或家庭自動化系統。',
- powerMonitoring: '功率監控',
- energyMonitoring: '能源監控',
- stateMonitoring: '狀態監控',
- optional: '可選',
- topic: '主題',
- jsonPath: 'JSON路徑',
- multiplier: '乘數',
- onValue: 'ON值',
- mqttPowerHint: 'JSON路徑從JSON負載中提取值(例如"power_l1")。如果主題發布原始數值,請留空。\n乘數:mW→W使用0.001,kW→W使用1000。',
- mqttEnergyHint: 'JSON路徑從JSON負載中提取值。原始值請留空。\n乘數:Wh→kWh使用0.001,MWh→kWh使用1000。',
- mqttStateHint: 'JSON路徑從JSON負載中提取值。原始值請留空。\nON值:表示"ON"的確切字串。留空以自動檢測(ON、true、1)。',
- // REST smart plug
- restControl: '控制',
- 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 溫度超過閾值',
- // 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: '設定槽位',
- },
- // GitHub Backup Settings
- githubBackup: {
- title: 'GitHub 備份',
- 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: '目前耗材',
- },
- modal: {
- spoolDetected: '偵測到耗材',
- assignToAms: '分配到 AMS',
- syncWeight: '同步重量',
- weightSynced: '已同步!',
- syncing: '同步中...',
- newTagDetected: '偵測到新標籤',
- addToInventory: '新增到庫存',
- assignToAmsTitle: '分配到 AMS',
- selectSlot: '選擇槽位',
- assign: '分配',
- assigning: '分配中...',
- assignSuccess: '已分配!',
- assignError: '分配耗材失敗。請重試。',
- noPrinterSelected: '選擇印表機...',
- noAmsDetected: '此印表機未偵測到 AMS',
- slot: '槽位',
- },
- weight: {
- noReading: '無讀數',
- stable: '穩定',
- measuring: '測量中...',
- tare: '去皮',
- calibrate: '校準',
- },
- spool: {
- remaining: '剩餘',
- material: '材料',
- brand: '品牌',
- color: '顏色',
- coreWeight: '軸心重',
- labelWeight: '標籤重',
- scaleWeight: '磅秤重',
- netWeight: '淨重',
- lastUsed: '上次使用',
- },
- ams: {
- noData: '未偵測到 AMS',
- connectAms: '連線 AMS 以檢視耗材槽位',
- noPrinter: '未選擇印表機',
- selectPrinter: '從頂部欄選擇印表機',
- printerDisconnected: '印表機已斷開',
- humidity: '濕度',
- level: '餘量',
- active: '活躍',
- slot: '槽位',
- empty: '空',
- },
- inventory: {
- search: '搜尋耗材...',
- empty: '庫存中沒有耗材',
- noResults: '沒有匹配的耗材',
- spools: '個耗材',
- addSpool: '新增耗材',
- },
- settings: {
- // Tabs
- tabDevice: '裝置',
- tabDisplay: '顯示',
- tabScale: '磅秤',
- tabUpdates: '更新',
- // Device tab
- nfcReader: 'NFC 讀卡器',
- type: '類型',
- connection: '連線',
- notConnected: '不適用',
- deviceInfo: '裝置資訊',
- hostname: '主機',
- uptime: '執行時間',
- systemConfig: '後端與認證',
- backendUrl: 'Bambuddy 後端 URL',
- apiToken: 'API 權杖',
- apiTokenPlaceholder: '輸入 API 權杖',
- saveConfig: '儲存設定',
- systemQueued: '設定已加入佇列。',
- nfcDiagnostic: 'NFC 診斷',
- scaleDiagnostic: '磅秤診斷',
- readTagDiagnostic: '讀取標籤診斷',
- testNfc: '測試讀卡器',
- testScale: '測試精度',
- testReadTag: '讀取標籤',
- systemFieldsRequired: '後端 URL 為必填項。',
- // Display tab
- brightness: '亮度',
- saved: '已儲存',
- noBacklight: '未偵測到 DSI 背光。亮度控制需要 DSI 螢幕。',
- screenBlank: '螢幕熄滅超時',
- screenBlankDesc: '不活動後螢幕關閉。觸控喚醒。',
- displayNote: '亮度作為軟體濾鏡套用。',
- // Scale tab
- scaleCalibration: '磅秤校準',
- currentWeight: '目前重量',
- tareOffset: '去皮',
- calFactor: '係數',
- knownWeight: '已知重量',
- calStep1: '移除磅秤上所有物品並按設定零點。',
- calStep2: '將已知重量放在磅秤上。',
- setZero: '設定零點',
- calibrateNow: '校準',
- calibrated: '已校準',
- tareSet: '去皮命令已傳送。等待裝置回應...',
- tareFailed: '傳送去皮命令失敗',
- zeroSet: '零點已設定。將已知重量放在磅秤上。',
- calibrationDone: '校準完成!',
- calibrationFailed: '校準失敗',
- lastCalibrated: '上次校準',
- stable: '穩定',
- settling: '穩定中...',
- firmware: '韌體',
- scale: '磅秤',
- noDevice: '未找到 SpoolBuddy 裝置',
- // Updates tab
- daemonVersion: '守護程式版本',
- currentVersion: '目前',
- versionPending: '等待守護程式...',
- checking: '檢查中...',
- checkUpdates: '檢查更新',
- updateAvailable: '有可用更新',
- updateInstructions: '透過 SSH 更新:執行 SpoolBuddy 安裝腳本進行升級。',
- upToDate: '已是最新',
- includeBeta: '包含測試版本',
- },
- writeTag: {
- tabExisting: '現有耗材',
- tabNew: '新耗材',
- tabReplace: '替換標籤',
- searchPlaceholder: '按材料、顏色、品牌搜尋...',
- noUntaggedSpools: '沒有無標籤的耗材',
- noTaggedSpools: '沒有有標籤的耗材',
- selectSpool: '選擇一個耗材,然後將空白 NTAG 放在讀卡器上',
- placeTag: '將 NTAG 放在讀卡器上',
- tagReady: '偵測到標籤 — 準備寫入',
- writeTag: '寫入標籤',
- replaceTag: '替換標籤',
- writing: '寫入標籤中...',
- waiting: '等待 SpoolBuddy...',
- writeSuccess: '標籤寫入成功!',
- writeFailed: '寫入失敗',
- queueFailed: '佇列寫入命令失敗',
- tryAgain: '重試',
- cancel: '取消',
- replaceWarning: '舊標籤將被取消連結。新標籤將替換它。',
- deviceOffline: 'SpoolBuddy 離線',
- material: '材料',
- colorName: '顏色名稱',
- color: '顏色',
- brand: '品牌',
- weight: '重量 (g)',
- createSpool: '建立耗材',
- creating: '建立中...',
- spoolCreated: '耗材已建立!準備寫入。',
- createFailed: '建立耗材失敗',
- },
- quickMenu: {
- printerPower: '印表機電源',
- systemControls: '系統',
- restartDaemon: '重新啟動守護程式',
- restartBrowser: '重新啟動瀏覽器',
- reboot: '重新開機',
- shutdown: '關機',
- swipeToClose: '向下滑動關閉',
- confirmTitle: '確認',
- confirmShutdown: '確定要關閉 SpoolBuddy 嗎?您需要實體存取才能重新開啟。',
- confirmReboot: '確定要重新開機 SpoolBuddy 嗎?',
- confirmRestartDaemon: '重新啟動 SpoolBuddy 守護程式?NFC 和磅秤將暫時不可用。',
- confirmRestartBrowser: '重新啟動kiosk瀏覽器?螢幕將短暫變黑。',
- confirm: '確認',
- confirmPlugOn: '開啟 {{name}}?',
- confirmPlugOff: '關閉 {{name}}?',
- turnOn: '開啟',
- turnOff: '關閉',
- },
- },
- bugReport: {
- title: '報告錯誤',
- description: '描述',
- descriptionPlaceholder: '出了什麼問題?請描述問題...',
- email: '信箱(可選)',
- emailPlaceholder: 'your@email.com',
- emailPrivacy: '如果提供,您的信箱將包含在GitHub Issue的摺疊部分中,以便維護者後續跟進。',
- screenshot: '截圖',
- uploadOrPaste: '上傳、貼上或拖曳圖片',
- dataCollectedSummary: '報告中包含哪些資料?',
- dataIncluded: '包含:',
- dataIncludedList: '應用程式版本、作業系統、架構、Python版本、資料庫統計(僅計數)、印表機型號、噴嘴數量、韌體版本、連線狀態、整合狀態(Spoolman、MQTT、HA)、非敏感設定、網路介面數量、Docker詳情、依賴版本。',
- dataNeverIncluded: '絕不包含:',
- dataNeverIncludedList: '印表機名稱、序列號、存取碼、密碼、IP 位址、信箱地址、API金鑰、權杖、Webhook URL、主機名稱或使用者名稱。',
- submit: '提交',
- startLogging: '開始偵錯日誌',
- stepEnableLogging: '偵錯日誌已啟用',
- stepReproduce: '請現在重現問題',
- stepStopLogging: '停止並提交報告',
- stopAndSubmit: '停止並提交',
- maxDuration: '{{minutes}} 分鐘後自動停止',
- stoppingLogs: '正在收集日誌並提交...',
- submitting: '正在提交錯誤報告...',
- submitSuccess: '錯誤報告提交成功!',
- submitFailed: '提交錯誤報告失敗',
- thankYou: '謝謝!',
- submitted: '您的錯誤報告已提交。',
- viewIssue: '檢視 Issue',
- unexpectedError: '發生了意外錯誤',
- },
- failureDetection: {
- title: 'AI 故障檢測',
- description: '透過自託管的 Obico ML API 監控列印,並對偵測到的故障自動採取行動。',
- mlUrl: 'Obico ML API 地址',
- mlUrlHint: '您自託管的 Obico ml_api 容器的基礎 URL(例如 http://192.168.1.10:3333)。',
- test: '測試',
- testSuccess: 'ML API 可存取且正常。',
- testFailed: '無法存取 ML API。',
- sensitivity: '靈敏度',
- sensitivityLow: '低(減少誤報)',
- sensitivityMedium: '中(平衡)',
- sensitivityHigh: '高(更早檢測,更多誤報)',
- sensitivityHint: '調整觸發警告和故障的置信度閾值。',
- action: '偵測到故障時的操作',
- actionNotify: '僅通知',
- actionPause: '暫停列印',
- actionPauseOff: '暫停並切斷電源',
- pollInterval: '檢查間隔(秒)',
- pollIntervalHint: '列印過程中每臺印表機的檢查頻率。最小 5 秒,最大 120 秒。',
- externalUrlMissing: '尚未設定外部 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',
- importToLibrary: '儲存',
- sliceIn: '儲存並在 {{slicer}} 中切片',
- disclaimer: 'MakerWorld 整合使用由社群記錄的 API 介面。Bambuddy 與 MakerWorld 或 Bambu Lab 無從屬或認可關係。',
- lastImportSuccess: '已匯入您的資料庫',
- lastImportAlreadyInLibrary: '已存在於您的資料庫中',
- viewInLibrary: '在檔案管理員中查看',
- openInBambuStudio: '在 Bambu Studio 中開啟',
- openInOrcaSlicer: '在 OrcaSlicer 中開啟',
- importTo: '匯入至檔案管理員',
- recentImportsHeader: '最近匯入',
- phaseResolving: '解析中',
- phaseDownloading: '下載中',
- folderAuto: 'MakerWorld (預設)',
- importAll: '全部匯入',
- importAllProgress: '正在匯入 {{current}}/{{total}}',
- openGallery: '開啟圖片庫',
- galleryPrev: '上一張',
- galleryNext: '下一張',
- deleteImport: '從資料庫中移除',
- importDeleting: '正在移除…',
- importDeleted: '已從資料庫中移除',
- confirmDelete: '從資料庫中移除 {{filename}}?本機檔案將被刪除,但可以從 MakerWorld 重新匯入。',
- errors: {
- resolveFailed: '無法解析該 MakerWorld 連結。',
- downloadFailed: '下載失敗。請重試。',
- deleteFailed: '無法從資料庫中移除檔案。',
- },
- },
- libraryTrash: {
- title: '資源回收筒',
- headerButton: '資源回收筒',
- headerTooltip: '檢視已移至資源回收筒的檔案',
- backToFiles: '返回檔案管理員',
- subtitleAdmin: '已刪除的檔案會在資源回收筒保留 {{days}} 天,之後自動刪除。此檢視顯示所有使用者的資源回收筒。',
- subtitleUser: '已刪除的檔案會在資源回收筒保留 {{days}} 天,之後自動刪除。',
- loading: '正在載入資源回收筒…',
- loadError: '無法載入資源回收筒。',
- empty: '資源回收筒是空的。',
- summary: '{{count}} 個檔案 · {{size}}',
- emptyTrash: '清空資源回收筒',
- restore: '還原',
- purgeNow: '立即刪除',
- autoPurgeIn: '將於 {{when}} 自動刪除',
- days: '天',
- retentionLabel: '自動刪除時間',
- selectAll: '全選',
- selectOne: '選擇 {{filename}}',
- selectionCount: '已選擇 {{count}} 項',
- bulkRestore: '還原所選',
- bulkPurge: '刪除所選',
- col: {
- filename: '檔案',
- folder: '資料夾',
- size: '大小',
- deleted: '移入資源回收筒',
- autoPurge: '自動刪除',
- owner: '擁有者',
- actions: '操作',
- },
- confirm: {
- purgeTitle: '永久刪除?',
- purgeBody: '{{filename}} 將從磁碟中刪除,無法還原。',
- emptyTitle: '清空資源回收筒?',
- emptyBody: '全部 {{count}} 個檔案將從磁碟中刪除。此操作無法復原。',
- bulkPurgeTitle: '永久刪除所選檔案?',
- bulkPurgeBody: '所選的 {{count}} 個檔案將從磁碟中刪除,無法還原。',
- cta: '永久刪除',
- },
- toast: {
- restored: '檔案已還原。',
- restoreFailed: '無法還原檔案。',
- purged: '檔案已永久刪除。',
- purgeFailed: '無法刪除檔案。',
- emptied: '已從資源回收筒刪除 {{count}} 個檔案。',
- emptyFailed: '無法清空資源回收筒。',
- retentionSaved: '自動刪除已設定為 {{days}} 天。',
- retentionFailed: '無法儲存保留設定。',
- bulkRestored: '已還原 {{count}} 個檔案。',
- bulkPurged: '已刪除 {{count}} 個檔案。',
- },
- },
- libraryPurge: {
- title: '清理舊檔案',
- headerButton: '清理舊檔案',
- headerTooltip: '批次將舊檔案移至資源回收筒',
- description: '早於所選時間的檔案將被移至資源回收筒。外部資料夾會被略過。在自動刪除之前,您可以從資源回收筒還原檔案。',
- ageLabel: '移動早於以下天數的檔案',
- days: '天',
- includeNeverPrinted: '包括從未列印過的檔案',
- effectsTitle: 'What happens when you click Purge',
- effect1: 'Matching files are moved to Trash — they are not deleted from disk yet.',
- effect2: 'You can restore them from Trash at any time until the retention window expires.',
- effect3: 'After retention, the trash sweeper permanently removes them from disk.',
- effect4: 'Files in external (linked) folders are skipped — Bambuddy never deletes bytes it does not own.', previewLoading: '正在檢查符合的檔案數量…',
- previewFailed: '無法預覽清理結果。',
- previewSummary: '{{count}} 個檔案 · {{size}} 將被移至資源回收筒',
- andMore: '…還有 {{count}} 個',
- warning: '檔案將被軟刪除——在保留期結束前,您可以從資源回收筒還原它們。',
- confirmCta: '將 {{count}} 個移至資源回收筒',
- purging: '正在移至資源回收筒…',
- toast: {
- success: '已將 {{count}} 個檔案移至資源回收筒。',
- failed: '無法清理檔案。',
- },
- },
- libraryAutoPurge: {
- enableLabel: '自動清理舊檔案',
- enableDescription: '每天執行一次管理員清理。檔案會先進入資源回收筒——不會立即刪除。',
- ageLabel: '自動清理早於以下天數的檔案',
- ageDescription: '最少 7 天,最多 10 年。使用與手動「清理舊檔案」按鈕相同的時間規則。',
- days: '天',
- includeNeverPrinted: '包括從未列印過的檔案',
- saveFailed: '無法儲存自動清理設定。',
- },
- archivePurge: {
- headerButton: 'Purge old',
- headerTooltip: 'Bulk-delete old archives',
- title: 'Purge old archives',
- description: 'Clear out old print history. Each archive is aged by its most recent print completion — reprinting an archive refreshes its age, so active work is never purged.',
- ageLabel: 'Delete archives not printed in the last',
- days: 'days',
- effectsTitle: 'What happens when you click Purge',
- effect1: 'Each matching archive is permanently removed from the database.',
- effect2: 'The 3MF, thumbnail, timelapse, source 3MF, F3D design file, and photo folder are all deleted from disk.',
- effect3: 'There is no trash bin for archives — deletion is immediate and cannot be undone.',
- effect4: 'Reprinting an archive refreshes its age clock, so archives you still use are safe.',
- previewLoading: 'Checking how many archives match…',
- previewFailed: 'Could not preview the purge.',
- previewSummary: '{{count}} archives · {{size}} would be deleted',
- andMore: '…and {{count}} more',
- warning: 'This is permanent. Download or favourite anything you want to keep before continuing.',
- confirmCta: 'Delete {{count}} archive(s)',
- purging: 'Deleting…',
- toast: {
- success: 'Deleted {{count}} archive(s).',
- failed: 'Could not purge archives.',
- },
- },
- archiveAutoPurge: {
- enableLabel: 'Auto-purge old archives',
- enableDescription: 'Once per day, permanently deletes archives that have not been printed within the threshold. Reprinting an archive resets the clock. No trash bin — deletion is immediate.',
- ageLabel: 'Auto-delete archives not printed in the last',
- ageDescription: 'Minimum 7 days, maximum 10 years. Based on the most recent print completion — reprinting an archive refreshes its age. Deletes the archive, 3MF, thumbnail, timelapse, and photos.',
- days: 'days',
- runNow: 'Purge archives now',
- saveFailed: 'Could not save auto-purge settings.',
- },
- cameraTokens: {
- title: 'Camera API Tokens',
- navTitle: 'Camera API tokens',
- description:
- 'Long-lived tokens for embedding the camera stream into Home Assistant, Frigate, kiosks, or any other tool that needs a stable URL. Each token is camera-stream-only and can be revoked at any time.',
- loading: 'Loading…',
- confirmRevoke: {
- title: 'Revoke this token?',
- body: 'Any device using "{{name}}" will lose access immediately. This cannot be undone.',
- cancel: 'Cancel',
- confirm: 'Revoke',
- },
- create: {
- title: 'Create new token',
- nameLabel: 'Token name',
- namePlaceholder: 'e.g. Home Assistant',
- daysLabel: 'Days until expiry',
- submit: 'Create',
- hint:
- 'Maximum lifetime is 365 days. The token value is shown only once on creation — copy it now.',
- },
- created: {
- title: 'Token created — copy it now',
- warning:
- 'This is the only time this token will be visible. After you close this dialog you can never view it again.',
- copy: 'Copy',
- dismiss: "I've saved it",
- },
- list: {
- myTitle: 'My tokens',
- allTitle: 'All users (admin view)',
- empty: 'No tokens yet.',
- name: 'Name',
- owner: 'Owner',
- prefix: 'Prefix',
- created: 'Created',
- expires: 'Expires',
- lastUsed: 'Last used',
- revoke: 'Revoke',
- expired: 'Expired',
- },
- toast: {
- created: 'Token created',
- createFailed: 'Failed to create token',
- revoked: 'Token revoked',
- revokeFailed: 'Failed to revoke token',
- loadFailed: 'Failed to load tokens',
- copied: 'Copied to clipboard',
- copyFailed: 'Copy failed — select and copy manually',
- },
- },
- };
|