pt-BR.ts 226 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254
  1. export default {
  2. // Navigation
  3. nav: {
  4. printers: 'Impressoras',
  5. archives: 'Arquivos',
  6. queue: 'Fila',
  7. stats: 'Estatísticas',
  8. profiles: 'Perfis',
  9. maintenance: 'Manutenção',
  10. projects: 'Projetos',
  11. inventory: 'Inventário',
  12. files: 'Gerenciador de Arquivos',
  13. makerworld: 'MakerWorld',
  14. notifications: 'Notificações',
  15. settings: 'Configurações',
  16. system: 'Sistema',
  17. collapseSidebar: 'Recolher barra lateral',
  18. expandSidebar: 'Expandir barra lateral',
  19. update: 'Atualizar',
  20. updateAvailable: 'Atualização disponível: v{{version}}',
  21. updateAvailableBanner: 'Versão {{version}} está disponível!',
  22. viewUpdate: 'Ver atualização',
  23. viewOnGithub: 'Ver no GitHub',
  24. keyboardShortcuts: 'Atalhos de teclado (?)',
  25. switchToLight: 'Mudar para modo claro',
  26. switchToDark: 'Mudar para modo escuro',
  27. smartSwitches: 'Interruptores inteligentes',
  28. logout: 'Sair',
  29. },
  30. // Common
  31. common: {
  32. save: 'Salvar',
  33. saving: 'Salvando...',
  34. cancel: 'Cancelar',
  35. delete: 'Excluir',
  36. edit: 'Editar',
  37. add: 'Adicionar',
  38. close: 'Fechar',
  39. confirm: 'Confirmar',
  40. loading: 'Carregando...',
  41. error: 'Erro',
  42. success: 'Sucesso',
  43. warning: 'Aviso',
  44. enabled: 'Ativado',
  45. disabled: 'Desativado',
  46. yes: 'Sim',
  47. no: 'Não',
  48. on: 'Ligado',
  49. off: 'Desligado',
  50. all: 'Todos',
  51. none: 'Nenhum',
  52. search: 'Pesquisar',
  53. filter: 'Filtrar',
  54. sort: 'Ordenar',
  55. refresh: 'Atualizar',
  56. download: 'Baixar',
  57. upload: 'Enviar',
  58. uploading: 'Enviando...',
  59. uploadFailed: 'Falha no envio',
  60. actions: 'Ações',
  61. status: 'Status',
  62. name: 'Nome',
  63. description: 'Descrição',
  64. date: 'Data',
  65. time: 'Hora',
  66. hours: 'Horas',
  67. minutes: 'Minutos',
  68. seconds: 'Segundos',
  69. days: 'Dias',
  70. enable: 'Ativar',
  71. disable: 'Desativar',
  72. permissions: 'Permissões',
  73. noPrinters: 'Nenhuma impressora configurada',
  74. noData: 'Nenhum dado disponível',
  75. linkNotFound: 'Link não encontrado',
  76. required: 'Obrigatório',
  77. optional: 'Opcional',
  78. dismiss: 'Dispensar',
  79. apply: 'Aplicar',
  80. reset: 'Redefinir',
  81. export: 'Exportar',
  82. import: 'Importar',
  83. clear: 'Limpar',
  84. selectAll: 'Selecionar tudo',
  85. deselectAll: 'Desmarcar tudo',
  86. noChange: '— Sem alterações —',
  87. unchanged: 'Inalterado',
  88. unassigned: 'Não atribuído',
  89. unknown: 'Desconhecido',
  90. unknownError: 'Erro desconhecido',
  91. today: 'Hoje',
  92. tomorrow: 'Amanhã',
  93. asap: 'O mais rápido possível',
  94. overdue: 'Atrasado',
  95. now: 'Agora',
  96. collapse: 'Recolher',
  97. expand: 'Expandir',
  98. viewArchive: 'Ver arquivo',
  99. viewInFileManager: 'Ver no Gerenciador de Arquivos',
  100. addedBy: 'Adicionado por {{username}}',
  101. prints: 'impressões',
  102. more: '+{{count}} mais',
  103. ascending: 'Crescente',
  104. descending: 'Decrescente',
  105. back: 'Voltar',
  106. copy: 'Copiar',
  107. copied: 'Copiado!',
  108. printer: 'Impressora',
  109. remove: 'Remover',
  110. type: 'Tipo',
  111. print: 'Imprimir',
  112. rename: 'Renomear',
  113. move: 'Mover',
  114. create: 'Criar',
  115. duplicate: 'Duplicar',
  116. left: 'Esquerda',
  117. right: 'Direita',
  118. },
  119. // Printers page
  120. printers: {
  121. title: 'Impressoras',
  122. addPrinter: 'Adicionar Impressora',
  123. editPrinter: 'Editar Impressora',
  124. deletePrinter: 'Excluir Impressora',
  125. printerName: 'Nome da Impressora',
  126. serialNumber: 'Número de Série',
  127. ipAddress: 'Endereço IP / Nome do Host',
  128. accessCode: 'Código de Acesso',
  129. model: 'Modelo',
  130. nozzleCount: 'Número de Bicos',
  131. autoArchive: 'Arquivamento Automático',
  132. status: {
  133. available: 'Disponível',
  134. idle: 'Ocioso',
  135. printing: 'Imprimindo',
  136. paused: 'Pausado',
  137. offline: 'Offline',
  138. problem: 'Problema',
  139. error: 'Erro',
  140. finished: 'Concluído',
  141. unknown: 'Desconhecido',
  142. },
  143. temperatures: {
  144. nozzle: 'Bico',
  145. bed: 'Cama',
  146. chamber: 'Câmara',
  147. },
  148. progress: '{{percent}}% concluído',
  149. timeRemaining: '{{time}} restante',
  150. deleteConfirm: 'Tem certeza de que deseja excluir "{{name}}"?',
  151. maintenanceOk: 'Manutenção OK',
  152. maintenanceWarning: '{{count}} aviso',
  153. maintenanceWarning_plural: '{{count}} avisos',
  154. maintenanceDue: '{{count}} devido',
  155. maintenanceDue_plural: '{{count}} devido',
  156. // Sort options
  157. sort: {
  158. name: 'Nome',
  159. status: 'Status',
  160. model: 'Modelo',
  161. location: 'Localização',
  162. ascending: 'Ordem crescente',
  163. descending: 'Ordem decrescente',
  164. },
  165. // Card size
  166. cardSize: {
  167. small: 'Cartões pequenos',
  168. medium: 'Cartões médios',
  169. large: 'Cartões grandes',
  170. extraLarge: 'Cartões extra grandes',
  171. },
  172. // Controls
  173. hideOffline: 'Ocultar offline',
  174. nextAvailable: 'Próximo disponível',
  175. powerOn: 'Ligar',
  176. offlinePrintersWithPlugs: 'Impressoras offline com tomadas inteligentes',
  177. noPrintersConfigured: 'Nenhuma impressora configurada ainda',
  178. search: 'Pesquisar impressoras...',
  179. noSearchResults: 'Nenhuma impressora corresponde à sua pesquisa ou filtros',
  180. filter: {
  181. allStatuses: 'Todos os status',
  182. allLocations: 'Todos os locais',
  183. },
  184. // Printer card
  185. readyToPrint: 'Pronto para imprimir',
  186. external: 'Externo',
  187. extL: 'Ext-L',
  188. extR: 'Ext-R',
  189. deleteArchives: 'Excluir arquivos de impressão',
  190. noLabel: 'Sem etiqueta',
  191. printPreview: 'Pré-visualização de impressão',
  192. width: 'Largura',
  193. height: 'Altura',
  194. noObjectsFound: 'Nenhum objeto encontrado',
  195. objectsLoadedOnPrintStart: 'Objetos são carregados quando uma impressão começa',
  196. willBeSkipped: 'Será ignorado',
  197. name: 'Nome',
  198. serialCannotBeChanged: 'Número de série não pode ser alterado',
  199. locationHelp: 'Usado para agrupar impressoras e filtrar trabalhos na fila',
  200. // WiFi signal strength
  201. wifiSignal: {
  202. veryWeak: 'Muito fraco',
  203. weak: 'Fraco',
  204. fair: 'Regular',
  205. good: 'Bom',
  206. excellent: 'Excelente',
  207. },
  208. // Maintenance
  209. maintenanceUpToDate: 'Toda a manutenção está em dia - Clique para ver',
  210. // Chamber light
  211. chamberLightOn: 'Ligar luz da câmara',
  212. chamberLightOff: 'Desligar luz da câmara',
  213. // Files
  214. files: 'Arquivos',
  215. browseFiles: 'Procurar arquivos da impressora',
  216. // Smart plug
  217. autoOffAfterPrint: 'Desligamento automático após impressão',
  218. autoOffExecuted: 'Desligamento automático executado - ligue a impressora para reiniciar',
  219. // HMS errors
  220. hmsErrors: 'Erros HMS',
  221. viewHmsErrors: 'Ver {{count}} erro(s) HMS',
  222. // Actions
  223. resume: 'Retomar',
  224. pause: 'Pausar',
  225. stop: 'Parar',
  226. camera: 'âmera',
  227. skipObject: 'Ignorar objeto',
  228. reconnect: 'Reconectar',
  229. forceRefresh: 'Forçar atualização',
  230. forceRefreshSuccess: 'Atualização solicitada',
  231. mqttDebug: 'Depuração MQTT',
  232. printerInformation: 'Informações da impressora',
  233. copyToClipboard: 'Copiar',
  234. copied: 'Copiado!',
  235. state: 'Estado',
  236. wifiSignalLabel: 'Sinal WiFi',
  237. developerMode: 'Modo desenvolvedor',
  238. enabled: 'Ativado',
  239. disabled: 'Desativado',
  240. addedOn: 'Adicionada em',
  241. sdCard: 'Cartão SD',
  242. inserted: 'Inserido',
  243. notInserted: 'Não inserido',
  244. totalPrintHours: 'Horas de impressão',
  245. activeNozzle: 'Ativo: {{nozzle}} bico',
  246. nozzleRack: 'Suporte de bicos',
  247. nozzleDocked: 'Acoplado',
  248. nozzleMounted: 'Montado',
  249. nozzleActive: 'Ativo',
  250. nozzleIdle: 'Ocioso',
  251. nozzleDiameter: 'Diâmetro',
  252. nozzleType: 'Tipo',
  253. nozzleStatus: 'Status',
  254. nozzleFilament: 'Filamento',
  255. nozzleWear: 'Desgaste',
  256. nozzleMaxTemp: 'Temp Máx',
  257. nozzleSerial: 'Serial',
  258. nozzleHardenedSteel: 'Aço Endurecido',
  259. nozzleStainlessSteel: 'Aço Inoxidável',
  260. nozzleTungstenCarbide: 'Carboneto de Tungstênio',
  261. nozzleFlow: 'Fluxo',
  262. nozzleHighFlow: 'Alto Fluxo',
  263. nozzleStandardFlow: 'Fluxo Padrão',
  264. // Firmware
  265. firmwareUpdate: 'Atualização de Firmware',
  266. firmwareInstructions: 'No visor da impressora, vá para',
  267. firmwareNav: 'Navegar para',
  268. settings: 'Configurações',
  269. firmware: 'Firmware',
  270. // Discovery
  271. discoverPrinters: 'Descobrir Impressoras',
  272. searching: 'Procurando...',
  273. manualEntry: 'Entrada Manual',
  274. addFromCloud: 'Adicionar da Nuvem',
  275. // Toast messages
  276. toast: {
  277. printerDeleted: 'Impressora excluída',
  278. missingSpoolAssignment: 'Impressão iniciada em {{printer}}. Atribuição de bobina ausente para: {{slots}}',
  279. printerAdded: 'Impressora adicionada',
  280. printerUpdated: 'Impressora atualizada',
  281. failedToDelete: 'Falha ao excluir impressora',
  282. failedToAdd: 'Falha ao adicionar impressora',
  283. failedToUpdate: 'Falha ao atualizar impressora',
  284. commandSent: 'Comando enviado',
  285. failedToSendCommand: 'Falha ao enviar comando',
  286. turnedOn: '{{name}} ligado',
  287. failedToPowerOn: 'Falha ao ligar {{name}}',
  288. scriptTriggered: 'Script acionado',
  289. printStopped: 'Impressão parada',
  290. printPaused: 'Impressão pausada',
  291. printResumed: 'Impressão retomada',
  292. referenceDeleted: 'Referência excluída',
  293. detectionAreaSaved: 'Área de detecção salva',
  294. failedToRunScript: 'Falha ao executar script',
  295. failedToStopPrint: 'Falha ao parar impressão',
  296. failedToPausePrint: 'Falha ao pausar impressão',
  297. failedToResumePrint: 'Falha ao retomar impressão',
  298. failedToControlChamberLight: 'Falha ao controlar a luz da câmara',
  299. failedToSetSpeed: 'Falha ao definir a velocidade de impressão',
  300. failedToUpdateSetting: 'Falha ao atualizar configuração',
  301. failedToSkipObjects: 'Falha ao ignorar objetos',
  302. failedToRereadRfid: 'Falha ao reler RFID',
  303. failedToCheckPlate: 'Falha ao verificar a placa',
  304. failedToUpdateLabel: 'Falha ao atualizar etiqueta',
  305. failedToDeleteReference: 'Falha ao excluir referência',
  306. failedToSaveDetectionArea: 'Falha ao salvar área de detecção',
  307. plateCheckEnabled: 'Verificação da placa ativada',
  308. plateCheckDisabled: 'Verificação da placa desativada',
  309. calibrationSaved: 'Calibração salva!',
  310. calibrationFailed: 'Falha na calibração',
  311. rfidRereadInitiated: 'Releitura de RFID iniciada',
  312. },
  313. // Connection status
  314. connection: {
  315. connected: 'Conectado',
  316. offline: 'Offline',
  317. },
  318. plateStatus: {
  319. markCleared: 'Marcar placa como liberada',
  320. cleared: 'Placa liberada',
  321. notCleared: 'Placa não liberada',
  322. inUse: 'Placa em uso',
  323. },
  324. // Queue info
  325. queue: {
  326. inQueue: '{{count}} impressão na fila',
  327. inQueue_plural: '{{count}} impressões na fila',
  328. },
  329. // Controls section
  330. controls: 'Controles',
  331. // RFID
  332. rfid: {
  333. reread: 'Releitura de RFID',
  334. },
  335. bedJog: {
  336. title: 'Mover a mesa de impressão',
  337. bed: 'Mesa',
  338. step: 'Passo (mm)',
  339. up: 'Mover mesa para cima',
  340. down: 'Mover mesa para baixo',
  341. disabledWhilePrinting: 'Desativado durante a impressão',
  342. notHomedTitle: 'Impressora não referenciada',
  343. notHomedMessage: 'A impressora não foi referenciada desde a última impressão. Execute a referência automática primeiro para um posicionamento seguro (estaciona o cabeçote, depois referencia X, Y e Z), ou mova assim mesmo — os fins de curso de software serão ignorados.',
  344. homeZ: 'Referência automática',
  345. moveAnyway: 'Mover assim mesmo',
  346. homingStarted: 'Referenciando impressora automaticamente…',
  347. },
  348. // Permissions
  349. permission: {
  350. noAdd: 'Você não tem permissão para adicionar impressoras',
  351. noEdit: 'Você não tem permissão para editar impressoras',
  352. noDelete: 'Você não tem permissão para excluir impressoras',
  353. noControl: 'Você não tem permissão para controlar impressoras',
  354. noFiles: 'Você não tem permissão para acessar arquivos de impressora',
  355. noAmsRfid: 'Você não tem permissão para reler RFID AMS',
  356. noSmartPlugControl: 'Você não tem permissão para controlar tomadas inteligentes',
  357. noCamera: 'Você não tem permissão para visualizar câmeras',
  358. },
  359. // Add/Edit modal
  360. modal: {
  361. addTitle: 'Adicionar Impressora',
  362. editTitle: 'Editar Impressora',
  363. myPrinter: 'Minha Impressora',
  364. selectModel: 'Selecionar modelo...',
  365. locationGroup: 'Localização / Grupo (opcional)',
  366. locationPlaceholder: 'ex.: Oficina, Escritório, Porão',
  367. autoArchiveLabel: 'Arquivar automaticamente impressões concluídas',
  368. fromPrinterSettings: 'A partir das configurações da impressora',
  369. modelOptional: 'Modelo (opcional)',
  370. saveChanges: 'Salvar alterações',
  371. },
  372. // Skip objects
  373. skipObjects: {
  374. tooltip: 'Ignorar objetos',
  375. onlyWhilePrinting: 'Ignorar objetos (apenas durante a impressão)',
  376. requiresMultiple: 'Ignorar objetos (requer 2+ objetos)',
  377. title: 'Ignorar Objetos',
  378. matchIdsInfo: 'Correspondência de IDs com o display da sua impressora',
  379. printerShowsIds: 'A tela da impressora mostra os IDs dos objetos na placa de construção',
  380. skipSelected: 'Ignorar Selecionados',
  381. skipping: 'Ignorando...',
  382. noObjectsSelected: 'Nenhum objeto selecionado',
  383. selectObjectsToSkip: 'Selecione os objetos que deseja ignorar na impressão atual',
  384. skipped: 'Ignorado',
  385. objectsSkipped: 'Objetos ignorados',
  386. activeCount: '{{count}} ativo',
  387. waitForLayer: 'Aguarde a camada 2+ para ignorar objetos (atualmente na camada {{layer}})',
  388. skip: 'Ignorar',
  389. confirmTitle: 'Ignorar Objeto?',
  390. confirmMessage: 'Tem certeza de que deseja ignorar "{{name}}"? Isso não pode ser desfeito.',
  391. },
  392. // Confirm modals
  393. confirm: {
  394. deleteTitle: 'Excluir Impressora',
  395. deleteMessage: 'Tem certeza de que deseja excluir "{{name}}"? Isso removerá todas as configurações de conexão.',
  396. deleteArchivesNote: 'Todo o histórico de impressão desta impressora será permanentemente excluído.',
  397. keepArchivesNote: 'O histórico de impressão será mantido, mas não estará mais associado a esta impressora.',
  398. stopTitle: 'Parar Impressão',
  399. stopMessage: 'Tem certeza de que deseja parar a impressão atual em "{{name}}"? Isso cancelará o trabalho de impressão.',
  400. stopButton: 'Parar Impressão',
  401. pauseTitle: 'Pausar Impressão',
  402. pauseMessage: 'Tem certeza de que deseja pausar a impressão atual em "{{name}}"?',
  403. pauseButton: 'Pausar Impressão',
  404. resumeTitle: 'Retomar Impressão',
  405. resumeMessage: 'Tem certeza de que deseja retomar a impressão em "{{name}}"?',
  406. resumeButton: 'Retomar Impressão',
  407. powerOnTitle: 'Ligar Impressora',
  408. powerOnMessage: 'Tem certeza de que deseja ligar a impressora "{{name}}"?',
  409. powerOnButton: 'Ligar',
  410. powerOffTitle: 'Desligar Impressora',
  411. powerOffMessage: 'Tem certeza de que deseja desligar a impressora "{{name}}"?',
  412. powerOffWarning: 'AVISO: "{{name}}" está imprimindo no momento! Tem certeza de que deseja desligar a impressora? Isso interromperá a impressão e pode danificar a impressora.',
  413. powerOffButton: 'Desligar',
  414. },
  415. // Bulk actions
  416. bulk: {
  417. select: 'Selecionar',
  418. selectAll: 'Selecionar tudo',
  419. selectByLocation: 'Selecionar por local',
  420. selected: '{{count}} selecionado(s)',
  421. actions: {
  422. stop: 'Parar',
  423. pause: 'Pausar',
  424. resume: 'Retomar',
  425. clearPlate: 'Limpar mesa',
  426. clearHMS: 'Limpar notificações',
  427. },
  428. confirm: {
  429. stopTitle: 'Parar {{count}} impressões',
  430. stopMessage: 'Isso cancelará as impressões ativas em {{count}} impressora(s). Esta ação não pode ser desfeita.',
  431. stopButton: 'Parar todas',
  432. pauseTitle: 'Pausar {{count}} impressões',
  433. pauseMessage: 'Isso pausará as impressões ativas em {{count}} impressora(s).',
  434. pauseButton: 'Pausar todas',
  435. clearPlateTitle: 'Limpar {{count}} mesas de impressão',
  436. clearPlateMessage: 'Isso limpará a mesa de impressão em {{count}} impressora(s) e pode iniciar trabalhos na fila.',
  437. clearPlateButton: 'Limpar todas',
  438. },
  439. success: '{{action}} concluído em {{count}} impressora(s)',
  440. partial: '{{succeeded}} bem-sucedido(s), {{failed}} falhou/falharam',
  441. noneApplicable: 'Nenhuma impressora selecionada está no estado correto para esta ação',
  442. selectByState: 'Selecionar por estado',
  443. },
  444. // Discovery
  445. discovery: {
  446. title: 'Descobrir Impressoras',
  447. searching: 'Procurando...',
  448. scanning: 'Escaneando...',
  449. scanProgress: 'Escaneando... {{scanned}}/{{total}}',
  450. foundPrinters: '{{count}} impressora(s) encontrada(s)',
  451. noPrintersFound: 'Nenhuma impressora encontrada',
  452. noPrintersFoundSubnet: 'Nenhuma impressora encontrada na sub-rede especificada.',
  453. noPrintersFoundNetwork: 'Nenhuma impressora encontrada na rede.',
  454. allConfigured: 'Todas as impressoras descobertas já estão configuradas.',
  455. alreadyAdded: 'Já adicionada',
  456. select: 'Selecionar',
  457. manualEntry: 'Entrada Manual',
  458. addFromCloud: 'Adicionar da Nuvem',
  459. subnetToScan: 'Sub-rede para escanear',
  460. dockerNote: 'Docker detectado. Insira a sub-rede da sua impressora em notação CIDR. Requer network_mode: host no docker-compose.yml.',
  461. scanSubnet: 'Escanear Sub-rede para Impressoras',
  462. discoverNetwork: 'Descobrir Impressoras na Rede',
  463. scanningSubnet: 'Escaneando sub-rede para impressoras Bambu...',
  464. scanningNetwork: 'Escaneando rede...',
  465. serialRequired: 'Serial necessário',
  466. unknown: 'Desconhecido',
  467. failedToStart: 'Falha ao iniciar a descoberta',
  468. },
  469. // AMS Drying
  470. drying: {
  471. start: 'Iniciar secagem',
  472. stop: 'Parar secagem',
  473. temperature: 'Temperatura',
  474. duration: 'Duração',
  475. hours: 'horas',
  476. timeRemaining: '{{time}} restante',
  477. active: 'Secagem',
  478. notSupported: 'Secagem não suportada',
  479. powerRequired: 'Conecte o adaptador de energia AMS para ativar a secagem',
  480. startingDrying: 'Iniciando secagem...',
  481. stoppingDrying: 'Parando secagem...',
  482. rotateTray: 'Girar o carretel durante a secagem',
  483. },
  484. // Filaments section
  485. filaments: 'Filamentos',
  486. // Camera
  487. openCameraOverlay: 'Abrir sobreposição da câmera',
  488. openCameraWindow: 'Abrir câmera em nova janela',
  489. // Firmware
  490. firmwareUpdateAvailable: 'Atualização de firmware disponível: {{current}} → {{latest}}',
  491. firmwareUpToDate: 'Firmware {{version}} — Atualizado',
  492. firmwareUpdateButton: 'Atualizar',
  493. // Plate detection
  494. plateDetection: {
  495. noPermission: 'Você não tem permissão para atualizar impressoras',
  496. enabledClick: 'Verificação da placa ativada - Clique para desativar',
  497. disabledClick: 'Verificação da placa desativada - Clique para ativar',
  498. manageCalibration: 'Gerenciar calibração da detecção da placa',
  499. calibrationRequired: 'Calibração necessária',
  500. calibrationInstructions: 'Certifique-se de que a placa de construção esteja <strong>completamente vazia</strong>, em seguida clique em Calibrar.',
  501. calibrationDescription: 'A calibração captura uma imagem de referência da placa vazia. Verificações futuras compararão com esta referência para detectar objetos.',
  502. calibrationTip: '<strong>Dica:</strong> Você pode armazenar até 5 calibrações para diferentes placas. O sistema usa automaticamente a melhor correspondência ao verificar.',
  503. plateEmpty: 'A placa parece vazia',
  504. objectsDetected: 'Objetos detectados na placa',
  505. confidence: 'Confiança',
  506. difference: 'Diferença',
  507. analysisPreview: 'Pré-visualização da análise:',
  508. analysisLegend: 'Caixa verde = área de detecção, Sobreposição vermelha = diferenças em relação à calibração',
  509. savedReferences: 'Referências salvas ({{count}}/{{max}})',
  510. deleteReference: 'Excluir referência',
  511. labelPlaceholder: 'Etiqueta...',
  512. clickToEdit: '{{label}} - Clique para editar',
  513. clickToAddLabel: 'Clique para adicionar etiqueta',
  514. },
  515. // Speed
  516. speed: {
  517. title: 'Velocidade de impressão',
  518. silent: 'Silencioso (50%)',
  519. standard: 'Padrão (100%)',
  520. sport: 'Sport (124%)',
  521. ludicrous: 'Ludicrous (166%)',
  522. },
  523. airduct: {
  524. title: 'Modo do duto de ar',
  525. cooling: 'Resfriamento',
  526. heating: 'Aquecimento',
  527. },
  528. noSdCard: 'Sem SD',
  529. door: {
  530. open: 'Aberta',
  531. closed: 'Fechada',
  532. },
  533. // Fans
  534. fans: {
  535. partCooling: 'Ventilador de resfriamento da peça',
  536. auxiliary: 'Ventilador auxiliar',
  537. chamber: 'Ventilador da câmara',
  538. },
  539. // HMS errors
  540. clickToViewHmsErrors: 'Clique para ver erros do HMS',
  541. estimatedCompletion: 'Tempo estimado de conclusão',
  542. plateNumber: 'Placa {{number}}',
  543. slotOptions: 'Opções de slot',
  544. // AMS hover popup
  545. amsPopup: {
  546. friendlyName: 'Nome do AMS',
  547. friendlyNamePlaceholder: 'ex.: Nome amigável do AMS',
  548. serialNumber: 'Número de série',
  549. firmwareVersion: 'Firmware',
  550. save: 'Salvar',
  551. clear: 'Limpar',
  552. noEditPermission: 'Você não tem permissão para renomear unidades AMS',
  553. },
  554. // Firmware modal
  555. firmwareModal: {
  556. title: 'Atualização de Firmware',
  557. titleUpToDate: 'Informações do Firmware',
  558. currentVersion: 'Atual:',
  559. latestVersion: 'Última:',
  560. releaseNotes: 'Notas de Lançamento',
  561. checkingPrereqs: 'Verificando pré-requisitos...',
  562. sdCardReady: 'Cartão SD pronto. Clique abaixo para enviar o firmware.',
  563. uploadedSuccess: 'Firmware enviado para o cartão SD!',
  564. applyInstructions: 'Para aplicar a atualização na sua impressora:',
  565. step1: 'Na tela sensível ao toque da impressora, vá para <strong>Configurações</strong>',
  566. step2: 'Navegue até <strong>Firmware</strong>',
  567. step3: 'Selecione <strong>Atualizar a partir do cartão SD</strong>',
  568. step4: 'A atualização levará de 10 a 20 minutos',
  569. done: 'Concluído',
  570. starting: 'Iniciando...',
  571. uploadFirmware: 'Enviar Firmware',
  572. uploadFailed: 'Falha ao iniciar o envio: {{error}}',
  573. uploadedToast: 'Firmware enviado! Inicie a atualização na tela da impressora.',
  574. },
  575. accessCodePlaceholder: 'Deixe vazio para manter o atual',
  576. // ROI editor
  577. roi: {
  578. title: 'Área de Detecção (ROI)',
  579. xStart: 'Início X',
  580. yStart: 'Início Y',
  581. width: 'Largura',
  582. height: 'Altura',
  583. instruction: 'Ajuste a área de detecção para focar na placa de construção. A caixa verde na pré-visualização mostra a área atual.',
  584. },
  585. developerModeWarning: 'O modo desenvolvedor LAN não está ativado em: {{names}}. Alguns recursos podem não funcionar.',
  586. howToEnable: 'Como ativar',
  587. incompatibleFile: 'Este arquivo foi fatiado para {{slicedFor}}, mas esta impressora é uma {{printerModel}}',
  588. dropNotPrintable: 'Apenas arquivos .gcode e .gcode.3mf podem ser impressos',
  589. dropToPrint: 'Solte para imprimir',
  590. cannotPrint: 'Impressora ocupada',
  591. },
  592. // Archives page
  593. archives: {
  594. title: 'Arquivos de Impressão',
  595. searchPlaceholder: 'Pesquisar arquivos...',
  596. filterByPrinter: 'Filtrar por impressora',
  597. filterByStatus: 'Filtrar por status',
  598. sortBy: 'Ordenar por',
  599. sortNewest: 'Mais recentes primeiro',
  600. sortOldest: 'Mais antigos primeiro',
  601. sortName: 'Nome',
  602. sortDuration: 'Duração',
  603. sortLargest: 'Maiores primeiro',
  604. sortSmallest: 'Menores primeiro',
  605. sortSize: 'Tamanho',
  606. noArchives: 'Nenhum arquivo encontrado',
  607. noArchivesSearch: 'Nenhum arquivo corresponde à sua pesquisa',
  608. originalPrintNotVisible: 'Impressão original não visível - tente limpar os filtros',
  609. noArchivesYet: 'Ainda não há arquivos',
  610. prints: 'impressões',
  611. pagination: {
  612. showing: 'Mostrando',
  613. to: 'a',
  614. of: 'de',
  615. show: 'Mostrar',
  616. page: 'Página',
  617. all: 'Todos',
  618. },
  619. loadingArchives: 'Carregando arquivos...',
  620. releaseToUpload: 'Solte para enviar',
  621. showAll: 'Mostrar todos',
  622. showFavoritesOnly: 'Mostrar apenas favoritos',
  623. gridView: 'Visualização em grade',
  624. listView: 'Visualização em lista',
  625. calendarView: 'Visualização em calendário',
  626. logView: 'Registro de impressão',
  627. manageTags: 'Gerenciar etiquetas',
  628. showFailedPrints: 'Mostrar impressões falhas',
  629. hideFailedPrints: 'Ocultar impressões falhas',
  630. hideDuplicates: 'Ocultar duplicados',
  631. viewOriginalPrint: 'Clique para visualizar a impressão original (#{{id}})',
  632. printTime: 'Tempo de impressão',
  633. filamentUsed: 'Filamento usado',
  634. cost: 'Custo',
  635. reprint: 'Reimprimir',
  636. preview: 'Pré-visualizar',
  637. deleteArchive: 'Excluir arquivo',
  638. deleteConfirm: 'Tem certeza de que deseja excluir este arquivo?',
  639. favorite: 'Favorito',
  640. unfavorite: 'Remover dos favoritos',
  641. viewDetails: 'Ver detalhes',
  642. status: {
  643. completed: 'Concluído',
  644. failed: 'Falhou',
  645. stopped: 'Parado',
  646. },
  647. toast: {
  648. source3mfAttached: 'Arquivo de origem 3MF anexado: {{filename}}',
  649. failedUploadSource3mf: 'Falha ao enviar arquivo de origem 3MF',
  650. source3mfRemoved: 'Arquivo de origem 3MF removido',
  651. failedRemoveSource3mf: 'Falha ao remover arquivo de origem 3MF',
  652. f3dAttached: 'F3D anexado: {{filename}}',
  653. failedUploadF3d: 'Falha ao enviar F3D',
  654. f3dRemoved: 'F3D removido',
  655. failedRemoveF3d: 'Falha ao remover F3D',
  656. timelapseAttached: 'Timelapse anexado: {{filename}}',
  657. timelapseAlreadyAttached: 'Timelapse já anexado',
  658. noMatchingTimelapse: 'Nenhum timelapse correspondente encontrado',
  659. failedScanTimelapse: 'Falha ao escanear timelapse',
  660. failedAttachTimelapse: 'Falha ao anexar timelapse',
  661. timelapseRemoved: 'Timelapse removido',
  662. failedRemoveTimelapse: 'Falha ao remover timelapse',
  663. timelapseUploaded: 'Timelapse enviado: {{filename}}',
  664. failedUploadTimelapse: 'Falha ao enviar timelapse',
  665. archiveDeleted: 'Arquivo excluído',
  666. failedDeleteArchive: 'Falha ao excluir arquivo',
  667. addedToFavorites: 'Adicionado aos favoritos',
  668. removedFromFavorites: 'Removido dos favoritos',
  669. projectUpdated: 'Projeto atualizado',
  670. failedUpdateProject: 'Falha ao atualizar projeto',
  671. linkCopied: 'Link copiado para a área de transferência',
  672. failedCopyLink: 'Falha ao copiar link',
  673. photoDeleted: 'Foto excluída',
  674. failedDeletePhoto: 'Falha ao excluir foto',
  675. failedDeleteArchives: 'Falha ao excluir arquivos',
  676. failedUpdateFavorites: 'Falha ao atualizar favoritos',
  677. exportDownloaded: 'Exportação baixada',
  678. exportFailed: 'Falha na exportação',
  679. },
  680. menu: {
  681. print: 'Imprimir',
  682. schedule: 'Agendar',
  683. openInBambuStudio: 'Abrir no Slicer',
  684. slice: 'Fatiar',
  685. externalLink: 'Link externo',
  686. viewOnMakerWorld: 'Ver no MakerWorld',
  687. preview3d: 'Pré-visualização 3D',
  688. viewTimelapse: 'Ver Timelapse',
  689. scanForTimelapse: 'Escanear Timelapse',
  690. uploadTimelapse: 'Enviar Timelapse',
  691. removeTimelapse: 'Remover Timelapse',
  692. downloadSource3mf: 'Baixar Source 3MF',
  693. uploadSource3mf: 'Enviar Source 3MF',
  694. replaceSource3mf: 'Substituir Source 3MF',
  695. removeSource3mf: 'Remover Source 3MF',
  696. uploadF3d: 'Enviar F3D',
  697. replaceF3d: 'Substituir F3D',
  698. downloadF3d: 'Baixar F3D',
  699. removeF3d: 'Remover F3D',
  700. download: 'Baixar',
  701. copyDownloadLink: 'Copiar link de download',
  702. qrCode: 'Qr Code',
  703. viewPhotos: 'Ver fotos',
  704. viewPhotosCount: 'Ver fotos ({{count}})',
  705. projectPage: 'Página do projeto',
  706. addToFavorites: 'Adicionar aos favoritos',
  707. removeFromFavorites: 'Remover dos favoritos',
  708. edit: 'Editar',
  709. goToProject: 'Ir para o projeto: {{name}}',
  710. addToProject: 'Adicionar ao projeto',
  711. removeFromProject: 'Remover do projeto',
  712. loading: 'Carregando...',
  713. noProjectsAvailable: 'Nenhum projeto disponível',
  714. select: 'Selecionar',
  715. deselect: 'Desmarcar',
  716. delete: 'Excluir',
  717. },
  718. permission: {
  719. noReprint: 'Você não tem permissão para reimprimir este arquivo',
  720. noAddToQueue: 'Você não tem permissão para adicionar à fila',
  721. noUpdateArchives: 'Você não tem permissão para atualizar arquivos',
  722. noUploadFiles: 'Você não tem permissão para enviar arquivos',
  723. noDownload: 'Você não tem permissão para baixar arquivos',
  724. noCopyLink: 'Você não tem permissão para copiar links de download',
  725. noDelete: 'Você não tem permissão para excluir este arquivo',
  726. noCreate: 'Você não tem permissão para criar arquivos',
  727. },
  728. platePicker: {
  729. title: 'Selecione a placa para visualizar',
  730. hint: 'Este arquivo contém várias placas. Escolha uma para abrir no visualizador GCode.',
  731. plateLabel: 'Placa {{index}}',
  732. objectCount: '{{count}} objeto',
  733. objectCount_plural: '{{count}} objetos',
  734. noGcode: 'Este arquivo não contém G-code fatiado para visualizar. Abra-o no Bambu Studio para fatiar primeiro.',
  735. },
  736. card: {
  737. previousPlate: 'Placa anterior',
  738. nextPlate: 'Próxima placa',
  739. plateNumber: 'Placa {{index}}',
  740. moreOptions: 'Clique com o botão direito para mais opções',
  741. addToFavorites: 'Adicionar aos favoritos',
  742. removeFromFavorites: 'Remover dos favoritos',
  743. cancelled: 'cancelado',
  744. failed: 'falha',
  745. duplicate: 'duplicado',
  746. duplicateTitle: 'Este modelo já foi impresso antes',
  747. openSource3mf: 'Abrir source 3MF no Bambu Studio (clique com o botão direito para mais opções)',
  748. downloadF3d: 'Baixar arquivo de design do Fusion 360',
  749. viewTimelapse: 'Ver timelapse',
  750. viewPhoto: 'Ver 1 foto',
  751. viewPhotos: 'Ver {{count}} fotos',
  752. openFolder: 'Abrir pasta: {{name}}',
  753. slicedFile: 'Arquivo fatiado - pronto para imprimir',
  754. sourceFile: 'Apenas arquivo fonte - nenhum mapeamento AMS disponível',
  755. gcode: 'GCODE',
  756. source: 'SOURCE',
  757. project: 'Projeto: {{name}}',
  758. estimated: 'Estimado: {{time}}',
  759. actual: 'Real: {{time}}',
  760. accuracy: 'Precisão: {{percent}}%',
  761. filament: '{{weight}}g',
  762. layer: '{{count}} camada',
  763. layers: '{{count}} camadas',
  764. object: '{{count}} objeto',
  765. objects: '{{count}} objetos',
  766. slicedFor: 'Fatiado para {{model}}',
  767. uploadedBy: 'Enviado por',
  768. noPermissionReprint: 'Você não tem permissão para reimprimir',
  769. noFileForReprint: 'Nenhum arquivo 3MF disponível — o arquivo não pôde ser baixado da impressora quando a impressão foi registrada',
  770. noPermissionEdit: 'Você não tem permissão para editar arquivos',
  771. noPermissionDelete: 'Você não tem permissão para excluir arquivos',
  772. reprint: 'Reimprimir',
  773. schedulePrint: 'Agendar impressão',
  774. schedule: 'Agendar',
  775. openInBambuStudio: 'Abrir no Bambu Studio',
  776. openInBambuStudioToSlice: 'Abrir no Bambu Studio para fatiar',
  777. slice: 'Fatiar',
  778. externalLink: 'Link externo',
  779. makerWorld: 'MakerWorld: {{designer}}',
  780. viewProject: 'Ver projeto',
  781. noExternalLink: 'Nenhum link externo',
  782. preview3d: 'Visualização 3D',
  783. download: 'Baixar',
  784. edit: 'Editar',
  785. delete: 'Excluir',
  786. },
  787. modal: {
  788. deleteArchive: 'Excluir Arquivo',
  789. deleteConfirm: 'Tem certeza de que deseja excluir "{{name}}"? Esta ação não pode ser desfeita.',
  790. deleteButton: 'Excluir',
  791. removeSource3mf: 'Remover Source 3MF',
  792. removeSource3mfConfirm: 'Tem certeza de que deseja remover o arquivo source 3MF de "{{name}}"? Isso excluirá o arquivo original do projeto do fatiador.',
  793. removeButton: 'Remover',
  794. removeF3d: 'Remover F3D',
  795. removeF3dConfirm: 'Tem certeza de que deseja remover o arquivo de design do Fusion 360 de "{{name}}"?',
  796. removeTimelapse: 'Remover Timelapse',
  797. removeTimelapseConfirm: 'Tem certeza de que deseja remover o vídeo timelapse de "{{name}}"?',
  798. timelapse: '{{name}} - Timelapse',
  799. selectTimelapse: 'Selecionar Timelapse',
  800. selectTimelapseDesc: 'Nenhuma correspondência automática encontrada. Selecione o timelapse para esta impressão:',
  801. deleteArchives: 'Excluir Arquivos',
  802. deleteArchivesConfirm: 'Tem certeza de que deseja excluir {{count}} arquivo(s)? Esta ação não pode ser desfeita.',
  803. deleteCount: 'Excluir {{count}}',
  804. },
  805. page: {
  806. title: 'Arquivos',
  807. printsCount: '{{filtered}} de {{total}} impressões',
  808. dropFilesHere: 'Solte arquivos .3mf aqui',
  809. releaseToUpload: 'Solte para enviar',
  810. only3mfSupported: 'Apenas arquivos .3mf são suportados',
  811. close: 'Fechar',
  812. selected: '{{count}} selecionado(s)',
  813. selectAll: 'Selecionar Todos',
  814. tags: 'Tags',
  815. project: 'Projeto',
  816. favorite: 'Favorito',
  817. delete: 'Excluir',
  818. toggledFavorites: 'Favoritos alternados para {{count}} arquivo(s)',
  819. failedUpdateFavorites: 'Falha ao atualizar favoritos',
  820. archivesDeleted: '{{count}} arquivo(s) excluído(s)',
  821. failedDeleteArchives: 'Falha ao excluir arquivos',
  822. photoDeleted: 'Foto excluída',
  823. failedDeletePhoto: 'Falha ao excluir foto',
  824. },
  825. list: {
  826. name: 'Nome',
  827. printer: 'Impressora',
  828. date: 'Data',
  829. size: 'Tamanho',
  830. actions: 'Ações',
  831. hasTimelapse: 'Possui timelapse',
  832. },
  833. log: {
  834. date: 'Data',
  835. printName: 'Nome da Impressão',
  836. printer: 'Impressora',
  837. user: 'Usuário',
  838. status: 'Status',
  839. duration: 'Duração',
  840. filament: 'Filamento',
  841. allPrinters: 'Todas as Impressoras',
  842. allUsers: 'Todos os Usuários',
  843. allStatuses: 'Todos os Status',
  844. cancelled: 'Cancelado',
  845. skipped: 'Ignorado',
  846. dateFrom: 'De',
  847. dateTo: 'Até',
  848. noEntries: 'Nenhuma entrada de registro de impressão encontrada',
  849. showing: 'Mostrando {{count}} de {{total}} entradas',
  850. rowsPerPage: 'Linhas',
  851. page: 'Página',
  852. prev: 'Anterior',
  853. next: 'Próxima',
  854. clearLog: 'Limpar Registro',
  855. clearLogTitle: 'Limpar Registro de Impressão',
  856. clearLogConfirm: 'Todas as entradas do registro de impressão serão permanentemente excluídas. Arquivos e itens da fila não serão afetados. Esta ação não pode ser desfeita. Tem certeza?',
  857. clearLogButton: 'Limpar Tudo',
  858. cleared: '{{count}} entradas do registro de impressão limpas',
  859. clearFailed: 'Falha ao limpar o registro de impressão',
  860. },
  861. },
  862. // Queue page
  863. queue: {
  864. title: 'Fila de Impressão',
  865. subtitle: 'Agende e gerencie seus trabalhos de impressão',
  866. addToQueue: 'Adicionar à Fila',
  867. // Print modal
  868. print: 'Imprimir',
  869. reprint: 'Reimprimir',
  870. schedulePrint: 'Agendar Impressão',
  871. editQueueItem: 'Editar Item da Fila',
  872. printToPrinters: 'Imprimir para {{count}} Impressoras',
  873. queueToPrinters: 'Adicionar à Fila para {{count}} Impressoras',
  874. queueSelectedPlates: 'Adicionar {{count}} placas à fila',
  875. selectAllPlates: 'Selecionar todas as {{count}} placas',
  876. deselectAll: 'Desmarcar tudo',
  877. printQueued: 'Impressão adicionada à fila',
  878. itemsQueued: '{{count}} itens adicionados à fila',
  879. sending: 'Enviando...',
  880. sendingProgress: 'Enviando {{current}}/{{total}}...',
  881. adding: 'Adicionando...',
  882. addingProgress: 'Adicionando {{current}}/{{total}}...',
  883. savingProgress: 'Salvando {{current}}/{{total}}...',
  884. clearQueue: 'Limpar Fila',
  885. clearHistory: 'Limpar Histórico',
  886. emptyQueue: 'Fila vazia',
  887. position: 'Posição',
  888. scheduledTime: 'Hora Agendada',
  889. moveUp: 'Mover para Cima',
  890. moveDown: 'Mover para Baixo',
  891. startNow: 'Iniciar Agora',
  892. printingInProgress: 'Impressão em andamento...',
  893. viewArchive: 'Ver Arquivo',
  894. viewInFileManager: 'Ver no Gerenciador de Arquivos',
  895. itemCount: '{{count}} item',
  896. itemCount_plural: '{{count}} itens',
  897. dragToReorder: 'Arraste para reordenar (apenas ASAP)',
  898. reorderHint: 'A posição afeta apenas itens ASAP. Itens agendados são executados no horário definido.',
  899. sjf: {
  900. label: 'SJF',
  901. tooltip: 'Trabalho mais curto primeiro — o agendador prioriza impressões mais curtas',
  902. },
  903. addedBy: 'Adicionado por {{name}}',
  904. nextInQueue: 'Próximo na fila',
  905. clearPlateSuccess: 'Placa limpa — pronta para a próxima impressão',
  906. plateNumber: 'Placa {{index}}',
  907. // Batch / quantity
  908. quantity: 'Quantidade',
  909. quantityHint: 'Cria {{count}} itens na fila',
  910. activeBatches: 'Lotes ativos',
  911. batchProgress: '{{completed}} de {{total}} concluídos',
  912. cancelBatch: 'Cancelar restantes',
  913. batchCancelled: 'Itens restantes do lote cancelados',
  914. cancelBatchConfirmTitle: 'Cancelar lote',
  915. cancelBatchConfirmMessage: 'Cancelar todos os itens pendentes restantes neste lote?',
  916. batch: 'Lote',
  917. // Sections
  918. sections: {
  919. currentlyPrinting: 'Imprimindo Atualmente',
  920. queued: 'Na Fila',
  921. history: 'Histórico',
  922. },
  923. // Status
  924. status: {
  925. pending: 'Pendente',
  926. waiting: 'Aguardando',
  927. printing: 'Imprimindo',
  928. paused: 'Pausado',
  929. completed: 'Concluído',
  930. failed: 'Falhou',
  931. skipped: 'Ignorado',
  932. cancelled: 'Cancelado',
  933. },
  934. // Summary cards
  935. summary: {
  936. printing: 'Imprimindo',
  937. queued: 'Na Fila',
  938. totalTime: 'Tempo Total da Fila',
  939. totalWeight: 'Peso Total da Fila',
  940. history: 'Histórico',
  941. },
  942. // Filters
  943. filter: {
  944. allPrinters: 'Todas as Impressoras',
  945. unassigned: 'Não Atribuído',
  946. allStatus: 'Todos os Status',
  947. allLocations: 'Todos os Locais',
  948. any: 'Qualquer',
  949. },
  950. // Sort
  951. sort: {
  952. byPosition: 'Ordenar por Posição',
  953. byName: 'Ordenar por Nome',
  954. byPrinter: 'Ordenar por Impressora',
  955. bySchedule: 'Ordenar por Agendamento',
  956. byDate: 'Ordenar por Data',
  957. ascendingOldest: 'Crescente (mais antigo primeiro)',
  958. descendingNewest: 'Decrescente (mais recente primeiro)',
  959. },
  960. // Badges
  961. badges: {
  962. staged: 'Preparado (início manual)',
  963. requiresPrevious: 'Requer sucesso anterior',
  964. autoPowerOff: 'Desligamento automático',
  965. gcodeInjection: 'G-code',
  966. },
  967. // Empty state
  968. empty: {
  969. title: 'Nenhuma impressão agendada',
  970. description: 'Agende uma impressão a partir da página de Arquivos usando a opção "Agendar" no menu de contexto, ou arraste e solte arquivos para começar.',
  971. },
  972. // Time
  973. time: {
  974. asap: 'ASAP',
  975. overdue: 'Atrasado',
  976. now: 'Agora',
  977. lessThanMinute: 'Em menos de um minuto',
  978. inMinutes: 'Em {{count}} min',
  979. inHours: 'Em {{count}} horas',
  980. },
  981. // Actions
  982. actions: {
  983. stopPrint: 'Parar Impressão',
  984. startPrint: 'Iniciar Impressão',
  985. requeue: 'Reenfileirar',
  986. },
  987. // Bulk edit
  988. bulkEdit: {
  989. title: 'Editar {{count}} Item',
  990. title_plural: 'Editar {{count}} Itens',
  991. description: 'Apenas as configurações alteradas serão aplicadas aos itens selecionados.',
  992. printer: 'Impressora',
  993. noChange: '— Sem alterações —',
  994. queueOptions: 'Opções de Fila',
  995. staged: 'Preparado (início manual)',
  996. autoPowerOff: 'Desligamento automático após impressão',
  997. requirePrevious: 'Requer sucesso anterior',
  998. printOptions: 'Opções de Impressão',
  999. bedLevelling: 'Nivelamento da Mesa',
  1000. flowCalibration: 'Calibração de Fluxo',
  1001. vibrationCalibration: 'Calibração de Vibração',
  1002. layerInspection: 'Inspeção da Primeira Camada',
  1003. timelapse: 'Timelapse',
  1004. useAms: 'Usar AMS',
  1005. applyChanges: 'Aplicar Alterações',
  1006. selectAll: 'Selecionar Todos',
  1007. deselectAll: 'Desmarcar Todos',
  1008. selected: '{{count}} selecionado(s)',
  1009. editSelected: 'Editar Selecionados',
  1010. cancelSelected: 'Cancelar Selecionados',
  1011. },
  1012. // Confirmations
  1013. confirm: {
  1014. cancelTitle: 'Cancelar Impressão Agendada',
  1015. cancelMessage: 'Tem certeza de que deseja cancelar "{{name}}"?',
  1016. stopTitle: 'Parar Impressão',
  1017. stopMessage: 'Tem certeza de que deseja parar a impressão atual "{{name}}"? Isso cancelará o trabalho de impressão na impressora.',
  1018. removeTitle: 'Remover do Histórico',
  1019. removeMessage: 'Tem certeza de que deseja remover "{{name}}" do histórico da fila?',
  1020. clearHistoryTitle: 'Limpar Histórico',
  1021. clearHistoryMessage: 'Tem certeza de que deseja remover todos os {{count}} itens do histórico?',
  1022. cancelButton: 'Cancelar Impressão',
  1023. stopButton: 'Parar Impressão',
  1024. thisPrint: 'esta impressão',
  1025. thisItem: 'este item',
  1026. },
  1027. // Toast messages
  1028. toast: {
  1029. cancelled: 'Item da fila cancelado',
  1030. cancelFailed: 'Falha ao cancelar item',
  1031. removed: 'Item da fila removido',
  1032. removeFailed: 'Falha ao remover item',
  1033. stopped: 'Impressão parada',
  1034. stopFailed: 'Falha ao parar impressão',
  1035. released: 'Impressão liberada para a fila',
  1036. startFailed: 'Falha ao iniciar impressão',
  1037. reorderFailed: 'Falha ao reordenar fila',
  1038. historyCleared: 'Limpar {{count}} item(s) do histórico',
  1039. clearHistoryFailed: 'Falha ao limpar histórico',
  1040. updateFailed: 'Falha ao atualizar itens',
  1041. bulkCancelled: 'Cancelado {{count}} item(s)',
  1042. bulkCancelFailed: 'Falha ao cancelar itens',
  1043. },
  1044. // Timeline view
  1045. timeline: {
  1046. listView: 'Lista',
  1047. timelineView: 'Linha do tempo',
  1048. unassigned: 'Não atribuído',
  1049. noData: 'Nenhuma impressão agendada para este dia',
  1050. allDoneBy: 'Todas as impressões concluídas até {{time}}',
  1051. staged: 'Preparado',
  1052. filterAll: 'Mostrar tudo',
  1053. filterPrinting: 'Imprimindo',
  1054. filterQueued: 'Na fila',
  1055. time: {
  1056. anyMoment: 'a qualquer momento',
  1057. minutesLeft: '{{minutes}}m restantes',
  1058. hoursLeft: '{{hours}}h restantes',
  1059. hoursMinutesLeft: '{{hours}}h {{minutes}}m restantes',
  1060. },
  1061. day: {
  1062. previous: 'Dia anterior',
  1063. next: 'Próximo dia',
  1064. today: 'Hoje',
  1065. },
  1066. },
  1067. // Permissions
  1068. permissions: {
  1069. noStopPrint: 'Você não tem permissão para parar impressões',
  1070. noStartPrint: 'Você não tem permissão para iniciar impressões',
  1071. noEdit: 'Você não tem permissão para editar este item da fila',
  1072. noCancel: 'Você não tem permissão para cancelar este item da fila',
  1073. noRequeue: 'Você não tem permissão para reenfileirar itens',
  1074. noRemove: 'Você não tem permissão para remover este item da fila',
  1075. noClearHistory: 'Você não tem permissão para limpar todo o histórico',
  1076. noEditItems: 'Você não tem permissão para editar itens da fila',
  1077. noCancelItems: 'Você não tem permissão para cancelar itens da fila',
  1078. },
  1079. },
  1080. backgroundDispatch: {
  1081. unknownFile: 'Unknown file',
  1082. unknownPrinter: 'Unknown printer',
  1083. startingPrints: 'Starting prints',
  1084. progressSummary: '{{complete}}/{{total}} complete • Dispatched: {{dispatched}} • Processing: {{processing}}',
  1085. expandDetails: 'Expand dispatch details',
  1086. collapseDetails: 'Collapse dispatch details',
  1087. dismissToast: 'Dismiss dispatch toast',
  1088. cancelDispatchJob: 'Cancel dispatch job',
  1089. cancel: 'Cancel',
  1090. cancelling: 'Cancelling…',
  1091. status: {
  1092. dispatched: 'Dispatched',
  1093. processing: 'Processing',
  1094. completed: 'Completed',
  1095. failed: 'Failed',
  1096. cancelled: 'Cancelled',
  1097. },
  1098. toast: {
  1099. cancellingUpload: 'Cancelling upload...',
  1100. cancelled: 'Dispatch cancelled',
  1101. cancelFailed: 'Failed to cancel dispatch',
  1102. completeWithFailures: 'Background dispatch complete: {{completed}} succeeded, {{failed}} failed',
  1103. completeSuccess: 'Background dispatch complete: {{completed}} succeeded',
  1104. printStartedRemaining: '{{completed}} impressão(ões) iniciada(s), {{remaining}} enviando...',
  1105. },
  1106. },
  1107. // Statistics page
  1108. stats: {
  1109. title: 'Dashboard',
  1110. subtitle: 'Arraste os widgets para reorganizar. Clique no ícone de olho para ocultar.',
  1111. overview: 'Visão Geral',
  1112. totalPrints: 'Total de Impressões',
  1113. successRate: 'Taxa de Sucesso',
  1114. totalPrintTime: 'Tempo Total de Impressão',
  1115. printTime: 'Tempo de Impressão',
  1116. totalFilament: 'Filamento Total Utilizado',
  1117. filamentUsed: 'Filamento Utilizado',
  1118. filamentCost: 'Custo do Filamento',
  1119. totalCost: 'Custo Total',
  1120. energyUsed: 'Energia Utilizada',
  1121. energyCost: 'Custo da Energia',
  1122. energyWarmingUpTooltip: 'O monitoramento de energia ainda está coletando snapshots por hora. Os totais por período ficarão precisos quando houver pelo menos um snapshot antes do intervalo selecionado. Valores iniciais podem ser subestimados.',
  1123. averagePrintTime: 'Tempo Médio de Impressão',
  1124. printsPerDay: 'Impressões por Dia',
  1125. byPrinter: 'Por Impressora',
  1126. printsByPrinter: 'Impressões por Impressora',
  1127. byMaterial: 'Por Material',
  1128. byMonth: 'Por Mês',
  1129. last7Days: 'Últimos 7 Dias',
  1130. last30Days: 'Últimos 30 Dias',
  1131. last90Days: 'Últimos 90 Dias',
  1132. allTime: 'Todo o Tempo',
  1133. // Widgets
  1134. quickStats: 'Estatísticas Rápidas',
  1135. printActivity: 'Atividade de Impressão',
  1136. filamentTypes: 'Tipos de Filamento',
  1137. filamentTrends: 'Tendências de Filamento',
  1138. failureAnalysis: 'Análise de Falhas',
  1139. timeAccuracy: 'Precisão do Tempo',
  1140. successful: 'Bem-sucedido:',
  1141. failed: 'Falhou:',
  1142. perfectEstimate: '100% = estimativa perfeita',
  1143. noTimeAccuracyData: 'Nenhum dado de precisão de tempo disponível',
  1144. noFilamentData: 'Nenhum dado de filamento disponível',
  1145. noPrinterData: 'Nenhum dado de impressora disponível',
  1146. noPrintData: 'Nenhum dado de impressão disponível',
  1147. noPrintDataLast30Days: 'Nenhum dado de impressão nos últimos 30 dias',
  1148. failureReasons: 'Razões de Falha',
  1149. topFailureReasons: 'Principais Razões de Falha',
  1150. failedPrintsCount: '{{failed}} / {{total}} impressões falharam',
  1151. lastWeekRate: 'Última semana: {{rate}}%',
  1152. // Actions
  1153. resetLayout: 'Redefinir Layout',
  1154. recalculateCosts: 'Recalcular Custos',
  1155. recalculateCostsHint: 'Recalcular todos os custos do arquivo usando os preços atuais do filamento',
  1156. exportStats: 'Exportar Estatísticas',
  1157. exportAsCsv: 'Exportar como CSV',
  1158. exportAsExcel: 'Exportar como Excel',
  1159. hiddenCount: '{{count}} Oculto',
  1160. // Toast
  1161. exportDownloaded: 'Exportação baixada',
  1162. exportFailed: 'Falha na exportação',
  1163. layoutReset: 'Layout redefinido',
  1164. recalculatedCosts: 'Custos recalculados para {{count}} arquivos',
  1165. recalculateFailed: 'Falha ao recalcular custos',
  1166. // Loading
  1167. loadingStats: 'Carregando estatísticas...',
  1168. // Permissions
  1169. noPermissionResetLayout: 'Você não tem permissão para redefinir o layout',
  1170. noPermissionRecalculate: 'Você não tem permissão para recalcular custos',
  1171. noPrintDataInRange: 'Sem dados no período selecionado',
  1172. periodFilament: 'Filamento usado',
  1173. periodCost: 'Custo',
  1174. avgPerPrint: 'Média por impressão',
  1175. usageOverTime: 'Uso ao longo do tempo',
  1176. filamentByWeight: 'Peso',
  1177. printDuration: 'Duração da impressão',
  1178. printerUtilization: 'Utilização da impressora',
  1179. filamentSuccess: 'Sucesso por material',
  1180. printHabits: 'Hábitos de impressão',
  1181. printTimeOfDay: 'Horário de impressão',
  1182. colorDistribution: 'Distribuição de cores',
  1183. noColorData: 'Nenhum dado de cor disponível',
  1184. records: 'Recordes',
  1185. longestPrint: 'Impressão mais longa',
  1186. heaviestPrint: 'Impressão mais pesada',
  1187. mostExpensivePrint: 'Mais cara',
  1188. busiestDay: 'Dia mais movimentado',
  1189. successStreak: 'Sequência de sucesso',
  1190. streakPrint: 'impressão consecutiva',
  1191. streakPrints: '{{count}} impressões consecutivas',
  1192. printerStats: 'Estatísticas da impressora',
  1193. hours: 'horas',
  1194. avgPrints: 'Méd. impressões',
  1195. noArchiveData: 'Nenhum dado de impressão disponível',
  1196. filamentByTime: 'Tempo',
  1197. avgWeight: 'Méd. peso',
  1198. avgTime: 'Méd. tempo',
  1199. filamentByPrints: 'Impressões',
  1200. timeframe: {
  1201. today: 'Hoje',
  1202. 'this-week': 'Esta semana',
  1203. 'this-month': 'Este mês',
  1204. 'last-7': 'Últimos 7 dias',
  1205. 'last-30': 'Últimos 30 dias',
  1206. 'last-90': 'Últimos 90 dias',
  1207. 'this-year': 'Este ano',
  1208. 'all-time': 'Todo o período',
  1209. custom: 'Personalizado',
  1210. from: 'De',
  1211. to: 'Até',
  1212. },
  1213. allUsers: 'Todos os Usuários',
  1214. noUser: 'Sem Usuário (Sistema)',
  1215. filterByUser: 'Filtrar por Usuário',
  1216. },
  1217. // Maintenance page
  1218. maintenance: {
  1219. title: 'Manutenção',
  1220. overview: 'Visão Geral',
  1221. allOk: 'Todas as manutenções estão em dia',
  1222. dueCount: '{{count}} item pendente',
  1223. dueCount_plural: '{{count}} itens pendentes',
  1224. warningCount: '{{count}} aviso',
  1225. warningCount_plural: '{{count}} avisos',
  1226. totalPrintTime: 'Tempo Total de Impressão',
  1227. nextMaintenance: 'Próxima Manutenção',
  1228. nothingDue: 'Nada pendente',
  1229. tasks: 'Tarefas',
  1230. lastPerformed: 'Última execução',
  1231. interval: 'Intervalo',
  1232. hoursRemaining: '{{hours}}h restantes',
  1233. hoursOverdue: '{{hours}}h atrasadas',
  1234. markDone: 'Marcar como Concluída',
  1235. performMaintenance: 'Realizar Manutenção',
  1236. history: 'Histórico',
  1237. noHistory: 'Nenhum histórico de manutenção',
  1238. editPrintHours: 'Editar Horas de Impressão',
  1239. currentHours: 'Horas Atuais',
  1240. // Tabs
  1241. statusTab: 'Status',
  1242. settingsTab: 'Configurações',
  1243. // Status
  1244. overdueCount: '{{count}} atrasado',
  1245. dueSoonCount: '{{count}} prestes a vencer',
  1246. dueSoon: 'Prestes a vencer',
  1247. allGood: 'Tudo certo',
  1248. overdueBy: 'Atrasado por {{duration}}',
  1249. dueIn: 'Vence em {{duration}}',
  1250. timeLeft: '{{duration}} restantes',
  1251. // Duration formats
  1252. day: '1 dia',
  1253. days: '{{count}} dias',
  1254. week: '1 semana',
  1255. weeks: '{{count}} semanas',
  1256. month: '1 mês',
  1257. months: '{{count}} meses',
  1258. year: '1 ano',
  1259. // Settings
  1260. maintenanceTypes: 'Tipos de Manutenção',
  1261. maintenanceTypesDescription: 'Tipos de sistema e suas tarefas de manutenção personalizadas',
  1262. addCustomType: 'Adicionar Tipo Personalizado',
  1263. restoreDefaults: 'Restaurar Tarefas Padrão',
  1264. intervalType: 'Tipo de Intervalo',
  1265. intervalValue: 'Intervalo ({{type}})',
  1266. icon: 'Icon',
  1267. documentationLink: 'Link da Documentação (opcional)',
  1268. assignToPrinters: 'Atribuir a Impressoras',
  1269. selectAtLeastOnePrinter: 'Selecione pelo menos uma impressora',
  1270. addType: 'Adicionar Tipo',
  1271. custom: 'Personalizado',
  1272. printHours: 'Horas de Impressão',
  1273. calendarDays: 'Dias de Calendário',
  1274. exampleName: 'ex., Substituir Filtro HEPA',
  1275. viewDocumentation: 'Ver documentação',
  1276. timeBasedInterval: 'Intervalo baseado em tempo',
  1277. // Interval overrides
  1278. intervalOverrides: 'Substituições de Intervalo',
  1279. intervalOverridesDescription: 'Personalize os intervalos para impressoras específicas',
  1280. // Printer assignment
  1281. assignedToPrinters: 'Atribuído a impressoras:',
  1282. noPrintersAssigned: 'Nenhuma impressora atribuída',
  1283. addPrinterShort: 'Adicionar:',
  1284. printersAssignedClick: '{{count}} impressora(s) atribuída(s) - clique para gerenciar',
  1285. removeFromPrinter: 'Remover desta impressora',
  1286. // Types
  1287. types: {
  1288. lubricateCarbonRods: 'Lubricar Barras de Carbono',
  1289. lubricateRails: 'Lubricar Trilhos Lineares',
  1290. cleanNozzle: 'Limpar Bico/Hotend',
  1291. checkBelts: 'Verificar Tensão das Correias',
  1292. cleanBuildPlate: 'Limpar Plataforma de Impressão',
  1293. checkExtruder: 'Verificar Engrenagens do Extrusor',
  1294. checkCooling: 'Verificar Ventiladores de Resfriamento',
  1295. generalInspection: 'Inspeção Geral',
  1296. cleanCarbonRods: 'Limpar Barras de Carbono',
  1297. lubricateSteelRods: 'Lubrificar Barras de Aço',
  1298. cleanSteelRods: 'Limpar Barras de Aço',
  1299. cleanLinearRails: 'Limpar Trilhos Lineares',
  1300. checkPtfeTube: 'Verificar Tubo PTFE',
  1301. replaceHepaFilter: 'Substituir Filtro HEPA',
  1302. replaceCarbonFilter: 'Substituir Filtro de Carbono',
  1303. lubricateLeftNozzleRail: 'Lubrificar Trilho do Bico Esquerdo',
  1304. },
  1305. // Toast
  1306. maintenanceComplete: 'Manutenção marcada como concluída',
  1307. typeUpdated: 'Tipo de manutenção atualizado',
  1308. typeDeleted: 'Tipo de manutenção excluído',
  1309. defaultsRestored: 'Restauradas {{count}} tarefa(s) padrão',
  1310. printHoursUpdated: 'Horas de impressão atualizadas',
  1311. printerAssigned: 'Impressora atribuída',
  1312. printerRemoved: 'Impressora removida',
  1313. // Confirmation
  1314. deleteTypeConfirm: 'Excluir "{{name}}"?',
  1315. deleteSystemTypeTitle: 'Excluir tarefa de manutenção padrão?',
  1316. deleteSystemTypeMessage: 'Tem certeza de que deseja excluir a tarefa de manutenção padrão "{{name}}"?',
  1317. // Permissions
  1318. noPermissionUpdate: 'Você não tem permissão para atualizar itens de manutenção',
  1319. noPermissionPerform: 'Você não tem permissão para realizar manutenção',
  1320. noPermissionEditTypes: 'Você não tem permissão para editar tipos de manutenção',
  1321. noPermissionDeleteTypes: 'Você não tem permissão para excluir tipos de manutenção',
  1322. noPermissionEditHours: 'Você não tem permissão para editar horas de impressão',
  1323. noPermissionRemovePrinter: 'Você não tem permissão para remover atribuições de impressora',
  1324. noPermissionAssignPrinter: 'Você não tem permissão para atribuir impressoras',
  1325. noPermissionEditIntervals: 'Você não tem permissão para editar intervalos',
  1326. // Configure link
  1327. configureSettings: 'Configure tipos de manutenção e intervalos',
  1328. },
  1329. // Settings page
  1330. settings: {
  1331. title: 'Configurações',
  1332. general: 'Geral',
  1333. // Tab names
  1334. tabs: {
  1335. general: 'Geral',
  1336. smartPlugs: 'Tomadas Inteligentes',
  1337. notifications: 'Notificações',
  1338. queue: 'Workflow',
  1339. filament: 'Filamento',
  1340. network: 'Rede',
  1341. apiKeys: 'Chaves API',
  1342. virtualPrinter: 'Impressora Virtual',
  1343. failureDetection: 'Detecção de Falhas',
  1344. users: 'Autenticação',
  1345. backup: 'Backup',
  1346. emailAuth: 'Autenticação por Email',
  1347. ldap: 'LDAP',
  1348. twoFa: 'Autenticação 2FA',
  1349. oidc: 'SSO / OIDC',
  1350. },
  1351. ldap: {
  1352. title: 'Autenticação LDAP',
  1353. enabledDesc: 'A autenticação LDAP está ativada',
  1354. disabledDesc: 'A autenticação LDAP está desativada',
  1355. disabledHint: 'Configure e salve as configurações LDAP abaixo, depois ative.',
  1356. enabled: 'Autenticação LDAP ativada',
  1357. disabled: 'Autenticação LDAP desativada',
  1358. feature1: 'Usuários podem fazer login com credenciais LDAP',
  1359. feature2: 'A conta de administrador local permanece como fallback',
  1360. feature3: 'Grupos LDAP são mapeados para grupos BamBuddy no login',
  1361. serverConfig: 'Configuração do Servidor LDAP',
  1362. serverUrl: 'URL do servidor',
  1363. serverUrlHint: 'Use ldap:// para padrão ou ldaps:// para conexões SSL',
  1364. security: 'Segurança',
  1365. securityHint: 'StartTLS atualiza uma conexão simples para TLS. LDAPS usa TLS desde o início.',
  1366. bindDn: 'Bind DN (conta de serviço)',
  1367. bindPassword: 'Senha Bind',
  1368. searchBase: 'Base DN de pesquisa',
  1369. userFilter: 'Filtro de pesquisa de usuário',
  1370. userFilterHint: '{username} é substituído pelo nome de usuário. Use (uid={username}) para OpenLDAP.',
  1371. autoProvision: 'Provisionamento automático de usuários',
  1372. autoProvisionHint: 'Criar automaticamente uma conta BamBuddy no primeiro login LDAP',
  1373. defaultGroup: 'Grupo padrão',
  1374. defaultGroupNone: '— Nenhum (sem fallback) —',
  1375. defaultGroupHint: 'Grupo de fallback atribuído quando um usuário LDAP se autentica mas não está em nenhum grupo LDAP mapeado. Deixe vazio para manter usuários não mapeados sem permissões.',
  1376. groupMapping: 'Mapeamento de grupos (JSON)',
  1377. groupMappingHint: 'Mapear DNs de grupos LDAP para grupos BamBuddy. Grupos disponíveis: ',
  1378. testConnection: 'Testar conexão',
  1379. settingsSaved: 'Configurações LDAP salvas',
  1380. errors: {
  1381. serverRequired: 'URL do servidor LDAP é obrigatória',
  1382. searchBaseRequired: 'Base DN de pesquisa é obrigatória',
  1383. enableAuthFirst: 'Ative a autenticação primeiro',
  1384. configureLdapFirst: 'Salve as configurações LDAP primeiro',
  1385. },
  1386. },
  1387. // Email settings
  1388. email: {
  1389. smtpSettings: 'Configuração SMTP',
  1390. smtpHost: 'Servidor SMTP',
  1391. smtpPort: 'Porta SMTP',
  1392. security: 'Segurança',
  1393. authentication: 'Autenticação',
  1394. username: 'Nome de Usuário',
  1395. password: 'Senha',
  1396. fromEmail: 'Email de Remetente',
  1397. fromName: 'Nome de Remetente',
  1398. testConnection: 'Testar Conexão SMTP',
  1399. testRecipient: 'Email de Teste',
  1400. sendTest: 'Enviar Email de Teste',
  1401. sending: 'Enviando...',
  1402. save: 'Salvar Configurações',
  1403. saving: 'Salvando...',
  1404. advancedAuth: 'Autenticação Avançada',
  1405. advancedAuthEnabled: 'Autenticação Avançada está habilitada',
  1406. advancedAuthEnabledDesc: 'Recursos de gerenciamento de usuários baseados em email estão ativos. Novos usuários receberão senhas geradas automaticamente por email, e os usuários podem redefinir suas senhas através do recurso de esqueci minha senha.',
  1407. advancedAuthDisabled: 'Autenticação Avançada está desabilitada',
  1408. advancedAuthDisabledDesc: 'Habilite a autenticação avançada para ativar recursos baseados em email para gerenciamento de usuários.',
  1409. enable: 'Habilitar',
  1410. disable: 'Desabilitar',
  1411. feature1: 'Senhas são geradas automaticamente e enviadas por email para novos usuários',
  1412. feature2: 'Usuários podem fazer login com nome de usuário ou email',
  1413. feature3: 'Recurso de esqueci minha senha está disponível',
  1414. feature4: 'Administradores podem redefinir senhas de usuários via email',
  1415. // Error messages
  1416. errors: {
  1417. requiredFields: 'Por favor, preencha todos os campos obrigatórios',
  1418. usernameRequired: 'Nome de usuário é obrigatório quando a autenticação está habilitada',
  1419. enterTestEmail: 'Por favor, insira um endereço de email de teste',
  1420. smtpServerAndEmail: 'Por favor, preencha o servidor SMTP e o email de remetente antes de testar',
  1421. usernamePasswordRequired: 'Nome de usuário e senha são obrigatórios quando a autenticação está habilitada',
  1422. configureSmtpFirst: 'Por favor, configure e teste as configurações SMTP primeiro',
  1423. enableAuthFirst: 'Por favor, habilite a autenticação primeiro para usar os recursos baseados em e-mail.',
  1424. },
  1425. // Success messages
  1426. success: {
  1427. settingsSaved: 'Configurações SMTP salvas com sucesso',
  1428. },
  1429. // Security options
  1430. securityOptions: {
  1431. starttls: 'STARTTLS (Porta 587)',
  1432. ssl: 'SSL/TLS (Porta 465)',
  1433. none: 'Nenhuma (Porta 25)',
  1434. },
  1435. // Authentication options
  1436. authOptions: {
  1437. enabled: 'Habilitado',
  1438. disabled: 'Desabilitado',
  1439. },
  1440. },
  1441. appearance: 'Aparência',
  1442. notifications: 'Notificações',
  1443. smartPlugs: 'Tomadas Inteligentes',
  1444. spoolman: 'Spoolman',
  1445. updates: 'Atualizações',
  1446. language: 'Idioma',
  1447. languageDescription: 'Selecione seu idioma preferido',
  1448. theme: 'Tema',
  1449. themeLight: 'Claro',
  1450. themeDark: 'Escuro',
  1451. themeSystem: 'Sistema',
  1452. defaultView: 'Visualização Padrão',
  1453. defaultViewDescription: 'Página a ser exibida ao abrir o aplicativo',
  1454. checkForUpdates: 'Verificar Atualizações',
  1455. autoUpdate: 'Atualização Automática',
  1456. currentVersion: 'Versão Atual',
  1457. latestVersion: 'Última Versão',
  1458. upToDate: 'Você está atualizado',
  1459. updateAvailable: 'Atualização disponível',
  1460. // Notifications
  1461. notificationLanguage: 'Idioma das Notificações',
  1462. notificationLanguageDescription: 'Idioma para notificações push',
  1463. bedCooledThreshold: 'Limite de Resfriamento da Cama',
  1464. bedCooledThresholdDescription: 'Temperatura abaixo da qual a cama é considerada resfriada após uma impressão',
  1465. userNotificationsEnabled: 'Notificações do Usuário',
  1466. userNotificationsEnabledDescription: 'Ativa o menu de notificações do usuário e notificações por e-mail para eventos de impressão. Requer Autenticação Avançada.',
  1467. userNotificationsDisabledHint: 'Ative a Autenticação Avançada para usar as notificações do usuário.',
  1468. notificationProviders: 'Provedores de Notificação',
  1469. addProvider: 'Adicionar Provedor',
  1470. editProvider: 'Editar Provedor',
  1471. providerType: 'Tipo de Provedor',
  1472. testNotification: 'Testar Notificação',
  1473. testSuccess: 'Notificação de teste enviada com sucesso',
  1474. testFailed: 'Falha ao enviar notificação de teste',
  1475. quietHours: 'Horas de Silêncio',
  1476. quietHoursDescription: 'Não perturbe durante essas horas',
  1477. quietHoursStart: 'Início',
  1478. quietHoursEnd: 'Fim',
  1479. events: {
  1480. title: 'Eventos de Notificação',
  1481. printStart: 'Impressão Iniciada',
  1482. printComplete: 'Impressão Concluída',
  1483. printFailed: 'Falha na Impressão',
  1484. printStopped: 'Impressão Interrompida',
  1485. printProgress: 'Marcos de Progresso',
  1486. printProgressDescription: 'Notificar em 25%, 50%, 75%',
  1487. printerOffline: 'Impressora Offline',
  1488. printerError: 'Erro na Impressora',
  1489. filamentLow: 'Filamento Baixo',
  1490. maintenanceDue: 'Manutenção Pendente',
  1491. maintenanceDueDescription: 'Notificar quando a manutenção for necessária',
  1492. },
  1493. // Smart Plugs
  1494. smartPlug: {
  1495. title: 'Tomadas Inteligentes',
  1496. add: 'Adicionar Tomada Inteligente',
  1497. edit: 'Editar Tomada Inteligente',
  1498. name: 'Nome',
  1499. ipAddress: 'Endereço IP',
  1500. linkedPrinter: 'Impressora Vinculada',
  1501. autoOn: 'Ligar Automaticamente',
  1502. autoOnDescription: 'Ligar quando a impressão começar',
  1503. autoOff: 'Desligar Automaticamente',
  1504. autoOffDescription: 'Desligar após a conclusão da impressão',
  1505. offDelay: 'Atraso para Desligar',
  1506. offDelayMinutes: 'Minutos após a impressão',
  1507. offDelayTemp: 'Quando o bico estiver abaixo da temperatura',
  1508. currentState: 'Estado Atual',
  1509. turnOn: 'Ligar',
  1510. turnOff: 'Desligar',
  1511. },
  1512. // Filament Tracking Mode
  1513. filamentTracking: 'Rastreamento de Filamento',
  1514. filamentTrackingDesc: 'Escolha como rastrear seus rolos de filamento. Você pode usar o inventário interno ou conectar a um servidor Spoolman externo.',
  1515. filamentChecks: 'Verificações de filamento',
  1516. disableFilamentWarnings: 'Desativar avisos de filamento',
  1517. disableFilamentWarningsDesc: 'Não mostrar avisos sobre filamento insuficiente ao imprimir ou adicionar à fila',
  1518. preferLowestFilament: 'Preferir filamento com menor resto',
  1519. preferLowestFilamentDesc: 'Quando vários carretéis correspondem, usar o com menos filamento restante',
  1520. trackingModeBuiltIn: 'Inventário Interno',
  1521. trackingModeBuiltInDesc: 'Correspondência automática de RFID e rastreamento de uso incluídos',
  1522. trackingModeSpoolmanDesc: 'Servidor de gerenciamento de filamento externo',
  1523. builtInFeatureRfid: 'Detecta automaticamente rolos RFID da Bambu Lab no AMS',
  1524. builtInFeatureUsage: 'Rastreia o consumo de filamento por impressão',
  1525. builtInFeatureCatalog: 'Gerencia rolos, cores e perfis de fator K',
  1526. builtInFeatureThirdParty: 'Rolos de terceiros podem ser atribuídos aos rolos do inventário',
  1527. amsSyncButton: 'Sincronizar Pesos do AMS',
  1528. amsSyncTitle: 'Sincronizar Pesos dos Rolos do AMS',
  1529. amsSyncMessage: 'Isso substituirá todos os pesos dos rolos do inventário pelos valores atuais de % restante do AMS das impressoras conectadas. Use isso para recuperar dados de peso corrompidos. As impressoras devem estar online.',
  1530. amsSyncing: 'Sincronizando...',
  1531. amsSyncSuccess: '{{synced}} rolo(s) sincronizado(s), {{skipped}} ignorado(s)',
  1532. amsSyncError: 'Falha ao sincronizar pesos do AMS',
  1533. // Spoolman settings
  1534. spoolmanUrl: 'Spoolman URL',
  1535. spoolmanUrlHint: 'URL do seu servidor Spoolman (por exemplo, http://localhost:7912)',
  1536. spoolmanConnected: 'Conectado',
  1537. spoolmanDisconnected: 'Desconectado',
  1538. status: 'Status',
  1539. connect: 'Conectar',
  1540. disconnect: 'Desconectar',
  1541. howSyncWorks: 'Como a Sincronização Funciona',
  1542. syncInfoRfidOnly: 'Apenas rolos oficiais da Bambu Lab com RFID são sincronizados',
  1543. syncInfoAutoCreate: 'Novos rolos são criados automaticamente no Spoolman na primeira sincronização',
  1544. syncInfoThirdPartySkipped: 'Rolos não oficiais da Bambu Lab (terceiros, reabastecidos) são ignorados',
  1545. linkingExistingSpools: 'Vinculando Rolos Existentes',
  1546. linkingExistingSpoolsDesc: 'Para vincular rolos existentes do Spoolman ao seu AMS, passe o mouse sobre um slot do AMS e clique em "Vincular ao Spoolman".',
  1547. syncMode: 'Modo de Sincronização',
  1548. syncModeAuto: 'Automático',
  1549. syncModeManual: 'Apenas Manual',
  1550. syncModeAutoDesc: 'Os dados do AMS são sincronizados automaticamente quando alterações são detectadas',
  1551. syncModeManualDesc: 'Somente sincronize quando acionado manualmente',
  1552. syncAmsData: 'Sincronizar Dados do AMS',
  1553. syncAmsDataDesc: 'Sincronize manualmente os dados do AMS da impressora com o Spoolman',
  1554. allPrinters: 'Todas as Impressoras',
  1555. // Default printer
  1556. noDefaultPrinter: 'Sem padrão (perguntar a cada vez)',
  1557. // Sidebar
  1558. sidebarOrder: 'Ordem da barra lateral',
  1559. // Camera
  1560. saveThumbnails: 'Salvar miniaturas',
  1561. captureFinishPhoto: 'Capturar foto de conclusão',
  1562. noPrintersConfigured: 'Nenhuma impressora configurada',
  1563. // Archive settings
  1564. archiveMode: {
  1565. always: 'Sempre criar entrada de arquivo',
  1566. never: 'Nunca criar entrada de arquivo',
  1567. ask: 'Perguntar a cada vez',
  1568. },
  1569. // Updates
  1570. checkForUpdatesLabel: 'Verificar atualizações',
  1571. checkPrinterFirmware: 'Verificar firmware da impressora',
  1572. includeBetaUpdates: 'Incluir versões beta',
  1573. includeBetaUpdatesDesc: 'Notificar sobre versões beta e pré-lançamento ao verificar atualizações',
  1574. // Queue
  1575. enableRetry: 'Habilitar tentativa',
  1576. // Home Assistant
  1577. homeAssistantDescription: 'Controlar tomadas inteligentes via Home Assistant',
  1578. environmentManagedLabel: '(Gerenciado pelo Ambiente)',
  1579. autoEnabledViaEnv: 'Habilitado automaticamente via variáveis de ambiente',
  1580. urlFromEnvReadOnly: 'Valor definido pela variável de ambiente HA_URL (somente leitura)',
  1581. tokenFromEnvReadOnly: 'Valor definido pela variável de ambiente HA_TOKEN (somente leitura)',
  1582. // MQTT
  1583. mqttConnectedTo: 'Conectado a',
  1584. // Prometheus
  1585. prometheusDescription: 'Expor dados da impressora no formato Prometheus',
  1586. // Smart plugs empty state
  1587. noSmartPlugsTitle: 'Nenhuma tomada inteligente configurada',
  1588. noSmartPlugsDescription: 'Adicione uma tomada inteligente baseada em Tasmota para monitorar o consumo de energia e automatizar o controle de energia.',
  1589. // Notifications empty state
  1590. noProvidersTitle: 'Nenhum provedor configurado',
  1591. noProvidersDescription: 'Adicione um provedor para receber alertas.',
  1592. noTemplatesAvailable: 'Nenhum modelo disponível. Reinicie o backend para gerar os modelos padrão.',
  1593. // API permissions
  1594. apiPermissionView: 'Visualizar status da impressora e fila',
  1595. apiPermissionEdit: 'Adicionar e remover itens da fila de impressão',
  1596. // API keys
  1597. apiKeysEmptyTitle: 'Nenhuma chave API',
  1598. apiKeysEmptyDescription: 'Crie uma chave API para integrar com serviços externos.',
  1599. // Users
  1600. noUsersFound: 'Nenhum usuário encontrado',
  1601. noGroupsFound: 'Nenhum grupo encontrado',
  1602. noGroupsAvailable: 'Nenhum grupo disponível',
  1603. passwordsDoNotMatch: 'As senhas não coincidem',
  1604. systemGroupWarning: 'Os nomes dos grupos do sistema não podem ser alterados',
  1605. // Auth disabled
  1606. authDisabledTitle: 'Autenticação Desativada',
  1607. authDisabledFeature1: 'Exigir login para acessar o sistema',
  1608. authDisabledFeature2: 'Criar múltiplos usuários com permissões baseadas em grupos',
  1609. authDisabledFeature3: 'Controlar acesso com mais de 50 permissões granulares',
  1610. // User deletion
  1611. userHasCreated: 'Este usuário criou:',
  1612. userItemsQuestion: 'O que você gostaria de fazer com esses itens?',
  1613. deleteUserConfirm: 'Tem certeza de que deseja excluir este usuário?',
  1614. actionCannotBeUndone: 'Esta ação não pode ser desfeita.',
  1615. // Smart plugs
  1616. addFirstSmartPlug: 'Adicione sua primeira tomada inteligente',
  1617. // Notifications
  1618. providers: 'Provedores',
  1619. log: 'Registro',
  1620. testAll: 'Testar tudo',
  1621. testResults: 'Resultados do teste',
  1622. testPassedCount: '{{count}} aprovado',
  1623. testFailedCount: '{{count}} falhou',
  1624. messageTemplates: 'Modelos de mensagem',
  1625. messageTemplatesDescription: 'Personalize as mensagens de notificação para cada evento.',
  1626. // API Keys section
  1627. apiKeys: 'Chaves API',
  1628. apiKeysDescription: 'Crie chaves API para integrações externas e webhooks.',
  1629. createKey: 'Criar Chave',
  1630. apiKeyCreated: 'Chave API criada com sucesso',
  1631. apiKeyCopyWarning: 'Copie esta chave agora - ela não será exibida novamente!',
  1632. useInApiBrowser: 'Usar no Navegador API',
  1633. createNewApiKey: 'Criar Nova Chave API',
  1634. keyName: 'Nome da Chave',
  1635. keyNamePlaceholder: 'e.g., Home Assistant, OctoPrint',
  1636. readStatus: 'Status de Leitura',
  1637. readStatusDescription: 'Visualizar status da impressora e fila',
  1638. manageQueue: 'Gerenciar Fila',
  1639. manageQueueDescription: 'Adicionar e remover itens da fila de impressão',
  1640. controlPrinter: 'Controlar Impressora',
  1641. controlPrinterDescription: 'Pausar, retomar e parar impressões',
  1642. unnamedKey: 'Chave Sem Nome',
  1643. lastUsed: 'Último uso',
  1644. read: 'Ler',
  1645. control: 'Controlar',
  1646. createFirstKey: 'Crie sua primeira chave',
  1647. webhookEndpoints: 'Endpoints de Webhook',
  1648. webhookApiKeyHint: 'Use sua chave API no cabeçalho X-API-Key.',
  1649. webhook: {
  1650. getAllStatus: 'Obter status de todas as impressoras',
  1651. getSpecificStatus: 'Obter status de uma impressora específica',
  1652. addToQueue: 'Adicionar à fila de impressão',
  1653. pausePrint: 'Pausar impressão',
  1654. resumePrint: 'Retomar impressão',
  1655. stopPrint: 'Parar impressão',
  1656. },
  1657. apiBrowser: 'Navegador API',
  1658. apiBrowserDescription: 'Explore e teste todos os endpoints de API disponíveis.',
  1659. apiKeyForTesting: 'Chave API para Teste',
  1660. apiKeyPlaceholder: 'Cole sua chave API aqui para testar endpoints autenticados...',
  1661. apiKeyHint: 'Esta chave será enviada como cabeçalho X-API-Key nas solicitações.',
  1662. deleteApiKeyTitle: 'Excluir Chave API',
  1663. deleteApiKeyMessage: 'Tem certeza de que deseja excluir esta chave API? Quaisquer integrações usando esta chave deixarão de funcionar.',
  1664. deleteKey: 'Excluir Chave',
  1665. // Filament tab
  1666. amsDisplayThresholds: 'Limiares de Exibição AMS',
  1667. amsThresholdsDescription: 'Configure os limiares de cores para os indicadores de umidade e temperatura do AMS.',
  1668. humidity: 'Umidade',
  1669. goodGreen: 'Bom (verde)',
  1670. fairOrange: 'Razoável (laranja)',
  1671. aboveFairBad: 'Acima do limiar razoável mostra como vermelho (ruim)',
  1672. fairAlsoDryingThreshold: 'Este limiar também é usado para acionar a secagem automática',
  1673. temperature: 'Temperatura',
  1674. goodBlue: 'Bom (azul)',
  1675. aboveFairHot: 'Acima do limiar razoável mostra como vermelho (quente)',
  1676. historyRetention: 'Retenção de Histórico',
  1677. keepSensorHistory: 'Manter histórico do sensor por',
  1678. historyRetentionDescription: 'Dados antigos de umidade e temperatura serão automaticamente excluídos',
  1679. defaultPrintOptions: 'Opções de impressão padrão',
  1680. defaultPrintOptionsDescription: 'Defina valores padrão para opções de impressão. Podem ser alterados no diálogo de impressão.',
  1681. defaultBedLevelling: 'Nivelamento da mesa',
  1682. defaultBedLevellingDesc: 'Nivelar automaticamente a mesa antes da impressão',
  1683. defaultFlowCali: 'Calibração de fluxo',
  1684. defaultFlowCaliDesc: 'Calibrar fluxo de extrusão',
  1685. defaultVibrationCali: 'Calibração de vibração',
  1686. defaultVibrationCaliDesc: 'Reduzir artefatos de ringing',
  1687. defaultLayerInspect: 'Inspeção da primeira camada',
  1688. defaultLayerInspectDesc: 'Inspeção IA da primeira camada',
  1689. defaultTimelapse: 'Timelapse',
  1690. defaultTimelapseDesc: 'Gravar vídeo timelapse',
  1691. staggeredStart: 'Staggered Start',
  1692. staggeredStartDescription: 'Default group size and interval when staggering multi-printer batch starts. Can be overridden per batch in the print modal.',
  1693. plateClear: 'Confirmação de placa livre',
  1694. requirePlateClear: 'Exigir confirmação de placa livre',
  1695. requirePlateClearDescription: 'Quando ativado, o agendador aguarda uma confirmação de placa livre por impressora antes de iniciar impressões na fila em impressoras com trabalhos concluídos. Desativar isso também oculta o indicador de status da placa e o botão "Marcar placa como liberada" nos cartões das impressoras.',
  1696. gcodeInjection: 'Injeção de G-code',
  1697. gcodeInjectionDescription: 'Configure G-code personalizado para injetar no início e/ou no final das impressões para sistemas de impressão automática como Farmloop, SwapMod, AutoClear e Printflow 3D. Os snippets são configurados por modelo de impressora e aplicados quando "Injetar G-code" está ativado em um item da fila.',
  1698. gcodeInjectionNoPrinters: 'Nenhuma impressora encontrada. Adicione impressoras para configurar snippets de G-code.',
  1699. gcodeStartLabel: 'G-code inicial',
  1700. gcodeEndLabel: 'G-code final',
  1701. gcodeStartPlaceholder: 'G-code inserido antes do início da impressão...',
  1702. gcodeEndPlaceholder: 'G-code adicionado após o término da impressão...',
  1703. staggerGroupSize: 'Group size',
  1704. staggerGroupSizeHelp: 'Printers to start simultaneously per group',
  1705. staggerInterval: 'Interval (minutes)',
  1706. staggerIntervalHelp: 'Delay between each group starting',
  1707. queueDrying: 'Secagem Automática',
  1708. queueDryingDescription: 'Secar automaticamente o filamento AMS quando a impressora estiver ociosa entre impressões na fila. Usa o limite de umidade acima.',
  1709. queueDryingEnabled: 'Ativar secagem automática',
  1710. queueDryingEnabledDescription: 'Iniciar secagem AMS automaticamente quando a impressora estiver ociosa e a umidade estiver acima do limite',
  1711. queueDryingBlock: 'Aguardar conclusão da secagem',
  1712. queueDryingBlockDescription: 'Bloquear a fila de impressão até a secagem terminar. Quando desativado, impressões têm prioridade.',
  1713. ambientDryingEnabled: 'Secagem ambiente',
  1714. ambientDryingEnabledDescription: 'Secar automaticamente o filamento em impressoras ociosas quando a umidade exceder o limite, mesmo sem impressões na fila.',
  1715. dryingPresets: 'Predefinições de secagem',
  1716. dryingPresetsDescription: 'Temperatura e duração por tipo de filamento. AMS 2 Pro usa temperaturas mais baixas, AMS-HT suporta temperaturas mais altas.',
  1717. dryingFilament: 'Filamento',
  1718. printModal: 'Modal de Impressão',
  1719. expandCustomMapping: 'Expandir mapeamento personalizado por padrão',
  1720. expandCustomMappingDescription: 'Ao imprimir em várias impressoras, mostrar o mapeamento AMS por impressora expandido',
  1721. // User management
  1722. authentication: 'Autenticação',
  1723. authEnabledDescription: 'Sua instância está protegida com autenticação de usuário',
  1724. authDisabledDescription: 'Ative para exigir login e gerenciar o acesso dos usuários',
  1725. authDisabledMessage: 'Ative a autenticação para criar contas de usuário, gerenciar permissões e proteger sua instância do Bambuddy.',
  1726. enableAuthentication: 'Ativar Autenticação',
  1727. currentUser: 'Usuário Atual',
  1728. changePassword: 'Alterar Senha',
  1729. admin: 'Administrador',
  1730. users: 'Usuários',
  1731. addUser: 'Adicionar Usuário',
  1732. groups: 'Grupos',
  1733. addGroup: 'Adicionar Grupo',
  1734. system: 'Sistema',
  1735. noDescription: 'Sem descrição',
  1736. userCount: '{{count}} usuários',
  1737. permissionCount: '{{count}} permissões',
  1738. createUser: 'Criar Usuário',
  1739. username: 'Nome de Usuário',
  1740. enterUsername: 'Digite o nome de usuário',
  1741. password: 'Senha',
  1742. enterPassword: 'Digite a senha (mínimo 6 caracteres)',
  1743. confirmPassword: 'Confirmar Senha',
  1744. confirmPasswordPlaceholder: 'Confirme a senha',
  1745. // Title tooltips
  1746. viewReleaseOnGitHub: 'Ver lançamento no GitHub',
  1747. turnAllPlugsOn: 'Ligar todas as tomadas',
  1748. turnAllPlugsOff: 'Desligar todas as tomadas',
  1749. // Modal: Clear logs
  1750. clearNotificationLogs: 'Limpar Logs de Notificação',
  1751. clearLogsMessage: 'Isso excluirá permanentemente todos os logs de notificação com mais de 30 dias. Esta ação não pode ser desfeita.',
  1752. clearLogs: 'Limpar Logs',
  1753. // Modal: Reset UI
  1754. resetUiPreferences: 'Redefinir Preferências de UI',
  1755. resetUiPreferencesMessage: 'Isso redefinirá todas as preferências de UI para os padrões: ordem da barra lateral, tema, layout do painel, modos de exibição e preferências de classificação. Suas impressoras, arquivos e configurações do servidor NÃO serão afetados. A página será recarregada após a limpeza.',
  1756. resetPreferences: 'Redefinir Preferências',
  1757. // Modal: Delete group
  1758. deleteGroupTitle: 'Excluir Grupo',
  1759. deleteGroupMessage: 'Tem certeza de que deseja excluir este grupo? Usuários neste grupo perderão essas permissões.',
  1760. deleteGroup: 'Excluir Grupo',
  1761. // Modal: Disable auth
  1762. disableAuthenticationTitle: 'Desativar Autenticação',
  1763. disableAuthenticationMessage: 'Tem certeza de que deseja desativar a autenticação? Isso tornará sua instância do Bambuddy acessível sem login. Todos os usuários permanecerão no banco de dados, mas a autenticação será desativada.',
  1764. disableAuthentication: 'Desativar Autenticação',
  1765. // Additional settings
  1766. configureBambuddy: 'Configurar Bambuddy',
  1767. systemDefault: 'Padrão do Sistema',
  1768. archiveSettings: 'Configurações de Arquivo',
  1769. newWindow: 'Nova Janela',
  1770. embeddedOverlay: 'Sobreposição Incorporada',
  1771. preferredSlicer: 'Fatiador Preferido',
  1772. preferredSlicerDescription: 'Escolha qual aplicativo de fatiamento abrirá os arquivos',
  1773. externalCameras: 'Câmeras Externas',
  1774. costTracking: 'Rastreamento de Custos',
  1775. printsOnly: 'Apenas Impressões',
  1776. totalConsumption: 'Consumo Total',
  1777. dataManagement: 'Gerenciamento de Dados',
  1778. storageUsage: 'Uso de Armazenamento',
  1779. storageUsageDescription: 'Detalhamento do uso de dados por categoria',
  1780. storageUsageTotal: 'Total',
  1781. storageUsageErrors: 'Erros',
  1782. storageUsageOtherBreakdown: 'Outros (inclui ativos estáticos, scripts e arquivos de configuração)',
  1783. storageUsageSystem: 'Sistema',
  1784. storageUsageData: 'Dados',
  1785. storageUsageUnavailable: 'Informações de uso de armazenamento indisponíveis',
  1786. clearNotificationLogsDescription: 'Excluir logs de notificação com mais de 30 dias',
  1787. resetUiPreferencesDescription: 'Redefinir ordem da barra lateral, tema, modos de exibição e preferências de layout. Impressoras, arquivos e configurações não são afetados.',
  1788. enableHomeAssistant: 'Ativar Home Assistant',
  1789. enableMqtt: 'Ativar MQTT',
  1790. useTls: 'Usar TLS',
  1791. enableMetricsEndpoint: 'Ativar Endpoint de Métricas',
  1792. availableMetrics: 'Métricas Disponíveis',
  1793. editUser: 'Editar Usuário',
  1794. deleteUserTitle: 'Excluir Usuário',
  1795. groupName: 'Nome do Grupo',
  1796. // Placeholders
  1797. leaveEmptyForAnonymous: 'Deixe vazio para anônimo',
  1798. leaveEmptyForNoAuth: 'Deixe vazio para sem autenticação',
  1799. enterNewPassword: 'Digite a nova senha',
  1800. confirmNewPassword: 'Confirme a nova senha',
  1801. enterGroupName: 'Digite o nome do grupo',
  1802. enterDescriptionOptional: 'Digite a descrição (opcional)',
  1803. enterCurrentPassword: 'Digite a senha atual',
  1804. enterNewPasswordMin6: 'Digite a nova senha (mínimo 6 caracteres)',
  1805. toast: {
  1806. keyCopied: 'Chave copiada para a área de transferência',
  1807. copyFailed: 'Falha ao copiar a chave',
  1808. keyAddedToBrowser: 'Chave adicionada ao Navegador de API',
  1809. clearLogsFailed: 'Falha ao limpar logs',
  1810. uiPreferencesReset: 'Preferências de UI redefinidas. Atualizando...',
  1811. authDisabled: 'Autenticação desativada com sucesso',
  1812. authDisableFailed: 'Falha ao desativar a autenticação',
  1813. apiKeyCreated: 'Chave de API criada',
  1814. apiKeyDeleted: 'Chave de API excluída',
  1815. userCreated: 'Usuário criado com sucesso',
  1816. userUpdated: 'Usuário atualizado com sucesso',
  1817. userDeleted: 'Usuário excluído com sucesso',
  1818. groupCreated: 'Grupo criado com sucesso',
  1819. groupUpdated: 'Grupo atualizado com sucesso',
  1820. groupDeleted: 'Grupo excluído com sucesso',
  1821. fillRequiredFields: 'Por favor, preencha todos os campos obrigatórios',
  1822. passwordsDoNotMatch: 'As senhas não coincidem',
  1823. passwordTooShort: 'A senha deve ter pelo menos 6 caracteres',
  1824. enterGroupName: 'Por favor, insira um nome de grupo',
  1825. settingsSaved: 'Configurações salvas',
  1826. noPermissionUpdate: 'Você não tem permissão para alterar as configurações',
  1827. cameraSettingsSaved: 'Configurações da câmera salvas',
  1828. enterCameraUrl: 'Por favor, insira a URL da câmera',
  1829. passwordChanged: 'Senha alterada com sucesso',
  1830. connectionFailed: 'Falha na conexão',
  1831. testFailed: 'Falha no teste',
  1832. cameraConnected: 'Câmera conectada{{resolution}}',
  1833. },
  1834. testConnection: 'Testar Conexão',
  1835. catalog: {
  1836. spoolCatalog: 'Catálogo de Carretéis',
  1837. spoolCatalogDescription: 'Pesos de carretéis vazios por marca/tipo. Usado para pesquisa automática de peso ao adicionar carretéis.',
  1838. searchCatalog: 'Pesquisar no catálogo...',
  1839. addNewEntry: 'Adicionar Nova Entrada',
  1840. namePlaceholder: 'Nome (ex.: Bambu Lab - Plástico)',
  1841. weight: 'Peso',
  1842. type: 'Tipo',
  1843. default: 'Padrão',
  1844. custom: 'Personalizado',
  1845. noMatch: 'Nenhuma entrada corresponde à sua pesquisa',
  1846. empty: 'Nenhuma entrada no catálogo',
  1847. deleteEntry: 'Excluir Entrada',
  1848. deleteConfirm: 'Tem certeza de que deseja excluir "{{name}}"?',
  1849. resetCatalog: 'Redefinir Catálogo',
  1850. resetConfirm: 'Redefinir catálogo para os padrões? Isso removerá todas as entradas personalizadas.',
  1851. loadFailed: 'Falha ao carregar o catálogo de carretéis',
  1852. nameWeightRequired: 'Nome e peso são obrigatórios',
  1853. entryAdded: 'Entrada adicionada',
  1854. addFailed: 'Falha ao adicionar entrada',
  1855. entryUpdated: 'Entrada atualizada',
  1856. updateFailed: 'Falha ao atualizar entrada',
  1857. entryDeleted: 'Entrada excluída',
  1858. deleteFailed: 'Falha ao excluir entrada',
  1859. resetSuccess: 'Catálogo redefinido para os padrões',
  1860. resetFailed: 'Falha ao redefinir catálogo',
  1861. exported: 'Exportadas {{count}} entradas',
  1862. imported: 'Importadas {{added}} entradas ({{skipped}} ignoradas)',
  1863. importFailed: 'Falha ao importar: formato JSON inválido',
  1864. exportTooltip: 'Exportar catálogo para JSON',
  1865. importTooltip: 'Importar catálogo de JSON',
  1866. resetTooltip: 'Redefinir para os padrões',
  1867. selectedCount: '{{count}} selecionados',
  1868. deleteSelected: 'Excluir Selecionados',
  1869. bulkDeleteConfirm: 'Tem certeza de que deseja excluir {{count}} entradas?',
  1870. bulkDeleted: '{{count}} entradas excluídas',
  1871. bulkDeleteFailed: 'Falha ao excluir entradas',
  1872. },
  1873. colorCatalog: {
  1874. title: 'Catálogo de Cores',
  1875. description: 'Cores de filamento por fabricante/material. Usado para pesquisa automática de cores ao adicionar carretéis.',
  1876. searchColors: 'Pesquisar cores...',
  1877. allManufacturers: 'Todos os fabricantes',
  1878. addNewColor: 'Adicionar Nova Cor',
  1879. manufacturer: 'Fabricante',
  1880. colorName: 'Nome da Cor',
  1881. hex: 'Hex',
  1882. materialOptional: 'Material (opcional)',
  1883. showing: 'Mostrando {{filtered}} de {{total}} cores',
  1884. noMatch: 'Nenhuma cor corresponde à sua pesquisa',
  1885. empty: 'Nenhuma cor no catálogo',
  1886. deleteColor: 'Excluir Cor',
  1887. deleteConfirm: 'Tem certeza de que deseja excluir "{{name}}"?',
  1888. resetCatalog: 'Redefinir Catálogo de Cores',
  1889. resetConfirm: 'Redefinir catálogo para os padrões? Isso removerá todas as cores personalizadas.',
  1890. sync: 'Sincronizar',
  1891. starting: 'Iniciando...',
  1892. syncTooltip: 'Sincronizar do FilamentColors.xyz (2000+ cores, pode levar um minuto)',
  1893. loadFailed: 'Falha ao carregar o catálogo de cores',
  1894. fieldsRequired: 'Fabricante, nome da cor e cor hex são obrigatórios',
  1895. colorAdded: 'Cor adicionada',
  1896. addFailed: 'Falha ao adicionar cor',
  1897. colorUpdated: 'Cor atualizada',
  1898. updateFailed: 'Falha ao atualizar cor',
  1899. colorDeleted: 'Cor excluída',
  1900. deleteFailed: 'Falha ao excluir cor',
  1901. resetSuccess: 'Catálogo de cores redefinido para os padrões',
  1902. resetFailed: 'Falha ao redefinir catálogo',
  1903. syncUpToDate: 'Já está atualizado ({{count}} cores verificadas)',
  1904. syncComplete: 'Adicionadas {{added}} novas cores ({{skipped}} já existiam)',
  1905. syncError: 'Erro de sincronização',
  1906. syncFailed: 'Falha ao sincronizar do FilamentColors.xyz',
  1907. exported: 'Exportadas {{count}} cores',
  1908. imported: 'Importadas {{added}} cores ({{skipped}} ignoradas)',
  1909. importFailed: 'Falha ao importar: formato JSON inválido',
  1910. selectedCount: '{{count}} selecionados',
  1911. deleteSelected: 'Excluir Selecionados',
  1912. bulkDeleteConfirm: 'Tem certeza de que deseja excluir {{count}} cores?',
  1913. bulkDeleted: '{{count}} cores excluídas',
  1914. bulkDeleteFailed: 'Falha ao excluir cores',
  1915. },
  1916. dateFormat: 'Formato de data',
  1917. dateFormatUs: 'US (MM/DD/AAAA)',
  1918. dateFormatEu: 'EU (DD/MM/AAAA)',
  1919. dateFormatIso: 'ISO (AAAA-MM-DD)',
  1920. timeFormat: 'Formato de hora',
  1921. timeFormat12: '12 horas (3:30 PM)',
  1922. timeFormat24: '24 horas (15:30)',
  1923. defaultPrinter: 'Impressora padrão',
  1924. defaultPrinterDescription: 'Pré-selecionar esta impressora para uploads, reimpressões e outras operações.',
  1925. slicerBambuStudio: 'Bambu Studio',
  1926. slicerOrcaSlicer: 'OrcaSlicer',
  1927. sidebarOrderDescription: 'Arraste itens na barra lateral para reordenar. Restaurar ordem padrão aqui.',
  1928. setDefault: 'Definir padrão',
  1929. sidebarOrderSetDefaultHint: 'Definir padrão aplica a ordem atual do menu aos usuários que ainda não personalizaram o seu.',
  1930. sidebarDefaultSet: 'Ordem padrão do menu foi definida.',
  1931. sidebarDefaultCleared: 'Ordem padrão do menu removida.',
  1932. sidebarDefaultFailed: 'Falha ao definir a ordem padrão do menu.',
  1933. reset: 'Redefinir',
  1934. darkMode: 'Modo escuro',
  1935. lightMode: 'Modo claro',
  1936. active: '(ativo)',
  1937. background: 'Fundo',
  1938. accent: 'Destaque',
  1939. style: 'Estilo',
  1940. bgNeutral: 'Neutro',
  1941. bgWarm: 'Quente',
  1942. bgCool: 'Frio',
  1943. bgOled: 'OLED Preto',
  1944. bgSlate: 'Azul ardósia',
  1945. bgForest: 'Verde floresta',
  1946. accentGreen: 'Verde',
  1947. accentTeal: 'Azul-petróleo',
  1948. accentBlue: 'Azul',
  1949. accentOrange: 'Laranja',
  1950. accentPurple: 'Roxo',
  1951. accentRed: 'Vermelho',
  1952. styleClassic: 'Clássico',
  1953. styleGlow: 'Brilhante',
  1954. styleVibrant: 'Vibrante',
  1955. themeToggleHint: 'Alternar entre modo escuro e claro usando o ícone de sol/lua na barra lateral.',
  1956. autoArchivePrints: 'Arquivar impressões automaticamente',
  1957. autoArchiveDescription: 'Salvar automaticamente arquivos 3MF quando impressões forem concluídas',
  1958. saveThumbnailsDescription: 'Extrair e salvar imagens de pré-visualização dos arquivos 3MF',
  1959. captureFinishPhotoDescription: 'Tirar foto da câmera da impressora quando a impressão for concluída',
  1960. ffmpegNotInstalled: 'ffmpeg não instalado',
  1961. ffmpegRequired: 'A captura de câmera requer ffmpeg. Instale via <brew>brew install ffmpeg</brew> (macOS) ou <apt>apt install ffmpeg</apt> (Linux).',
  1962. camera: 'Câmera',
  1963. cameraViewMode: 'Modo de visualização da câmera',
  1964. cameraOverlayDescription: 'A câmera abre em uma sobreposição redimensionável na tela principal',
  1965. cameraWindowDescription: 'A câmera abre em uma janela separada do navegador',
  1966. externalCamerasDescription: 'Configure câmeras externas para substituir a câmera integrada da impressora. Suporta streams MJPEG, RTSP, snapshots HTTP e câmeras USB (V4L2). Quando habilitada, a câmera externa é usada para visualização ao vivo e fotos de conclusão.',
  1967. cameraPlaceholderUsb: 'Caminho do dispositivo (/dev/video0)',
  1968. cameraPlaceholderUrl: 'URL da câmera (rtsp://... ou http://...)',
  1969. cameraTypeMjpeg: 'Stream MJPEG',
  1970. cameraTypeRtsp: 'Stream RTSP',
  1971. cameraTypeSnapshot: 'Snapshot HTTP',
  1972. cameraTypeUsb: 'Câmera USB (V4L2)',
  1973. cameraRotation: 'Rotação',
  1974. test: 'Testar',
  1975. connected: 'Conectado',
  1976. disconnected: 'Desconectado',
  1977. currency: 'Moeda',
  1978. defaultFilamentCost: 'Custo padrão do filamento (por kg)',
  1979. electricityCost: 'Custo da eletricidade por kWh',
  1980. energyDisplayMode: 'Modo de exibição de energia',
  1981. energyModePrintDescription: 'O painel mostra a soma da energia usada durante as impressões',
  1982. energyModeTotalDescription: 'O painel mostra a energia total dos plugues inteligentes',
  1983. fileManager: 'Gerenciador de arquivos',
  1984. createArchiveEntry: 'Criar entrada de arquivo ao imprimir',
  1985. createArchiveEntryDescription: 'Ao imprimir pelo gerenciador de arquivos, criar opcionalmente uma entrada de arquivo',
  1986. lowDiskSpaceWarning: 'Aviso de pouco espaço em disco',
  1987. lowDiskSpaceDescription: 'Mostrar aviso quando o espaço livre em disco ficar abaixo deste limite',
  1988. printerFirmware: 'Firmware da impressora',
  1989. checkFirmwareDescription: 'Verificar atualizações de firmware da Bambu Lab',
  1990. bambuddySoftware: 'Software Bambuddy',
  1991. autoCheckDescription: 'Verificar automaticamente novas versões ao iniciar',
  1992. checkNow: 'Verificar agora',
  1993. updateAvailableVersion: 'Atualização disponível: v{{version}}',
  1994. releaseNotes: 'Notas da versão',
  1995. updateViaDocker: 'Atualizar via Docker Compose:',
  1996. installUpdate: 'Instalar atualização',
  1997. latestVersionRunning: 'Você está usando a versão mais recente',
  1998. failedToCheckUpdates: 'Falha ao verificar atualizações: {{error}}',
  1999. backupRestore: 'Backup e Restauração',
  2000. backupRestoreDescription: 'Exportar/importar configurações e configurar backup do GitHub',
  2001. goToBackup: 'Ir para backup',
  2002. externalUrl: 'URL externa',
  2003. externalUrlDescription: 'A URL externa onde o Bambuddy está acessível. Usada para imagens de notificação e integrações externas.',
  2004. bambuddyUrl: 'URL do Bambuddy',
  2005. externalUrlHint: 'Inclua protocolo e porta (ex: http://192.168.1.100:8000)',
  2006. ftpRetry: 'Tentativa FTP',
  2007. ftpRetryDescription: 'Tentar novamente operações FTP quando o WiFi da impressora é instável. Aplica-se a downloads 3MF, uploads de impressão, downloads de timelapse e atualizações de firmware.',
  2008. autoRetryDescription: 'Tentar novamente automaticamente operações FTP que falharam',
  2009. retryAttempts: 'Tentativas de reenvio',
  2010. retryDelay: 'Atraso entre tentativas',
  2011. connectionTimeout: 'Tempo limite de conexão',
  2012. time_one: '{{count}} vez',
  2013. time_other: '{{count}} vezes',
  2014. second_one: '{{count}} segundo',
  2015. second_other: '{{count}} segundos',
  2016. nSeconds: '{{count}} segundos',
  2017. increaseForWeakWifi: 'Aumente para impressoras com WiFi fraco',
  2018. homeAssistant: 'Home Assistant',
  2019. homeAssistantFullDescription: 'Conecte ao Home Assistant para controlar plugues inteligentes via API REST do HA. Suporta entidades switch, light, input_boolean e script.',
  2020. homeAssistantUrl: 'URL do Home Assistant',
  2021. longLivedAccessToken: 'Token de acesso de longa duração',
  2022. haTokenHint: 'Crie um token no HA: Perfil → Tokens de acesso de longa duração → Criar token',
  2023. connectionSuccessful: 'Conexão bem-sucedida',
  2024. connectionFailed: 'Falha na conexão',
  2025. haConnectionSuccess: 'Conectado com sucesso ao Home Assistant.',
  2026. haConnectionFailed: 'Falha ao conectar ao Home Assistant.',
  2027. mqttPublishing: 'Publicação MQTT',
  2028. mqttDescription: 'Publique eventos do BamBuddy para um broker MQTT externo para integração com Node-RED, Home Assistant e outros sistemas de automação.',
  2029. mqttEnableDescription: 'Publicar eventos no broker MQTT externo',
  2030. brokerHostname: 'Hostname do broker',
  2031. port: 'Porta',
  2032. usernameOptional: 'Usuário (opcional)',
  2033. passwordOptional: 'Senha (opcional)',
  2034. topicPrefix: 'Prefixo do tópico',
  2035. topicPrefixHint: 'Os tópicos serão: {{prefix}}/printers/<serial>/status, etc.',
  2036. prometheusMetrics: 'Métricas Prometheus',
  2037. prometheusEndpointDescription: 'Expor métricas da impressora em <code>/api/v1/metrics</code> para monitoramento Prometheus/Grafana.',
  2038. bearerTokenOptional: 'Token Bearer (opcional)',
  2039. bearerTokenHint: 'Se definido, as requisições devem incluir <code>Authorization: Bearer <token></code>',
  2040. metricsConnectionStatus: 'Status da conexão',
  2041. metricsPrinterState: 'Estado da impressora (idle/printing/etc)',
  2042. metricsPrintProgress: 'Progresso da impressão 0-100%',
  2043. metricsBedTemp: 'Temperatura da mesa',
  2044. metricsNozzleTemp: 'Temperatura do bico',
  2045. metricsPrintsTotal: 'Total de impressões por resultado',
  2046. metricsMore: '...e mais (camadas, ventoinhas, fila, uso de filamento)',
  2047. smartPlugsDescription: 'Conecte plugues inteligentes (Tasmota ou Home Assistant) para automatizar o controle de energia e rastrear o consumo energético das suas impressoras.',
  2048. allOn: 'Ligar todos',
  2049. allOff: 'Desligar todos',
  2050. addSmartPlug: 'Adicionar plugue inteligente',
  2051. energySummary: 'Resumo de energia',
  2052. currentPower: 'Potência atual',
  2053. plugsOnline: '{{reachable}}/{{total}} plugues online',
  2054. today: 'Hoje',
  2055. yesterday: 'Ontem',
  2056. total: 'Total',
  2057. enablePlugsForSummary: 'Habilite os plugues para ver o resumo de energia',
  2058. addNotificationProvider: 'Adicionar',
  2059. systemBadge: '(Sistema)',
  2060. creating: 'Criando...',
  2061. changing: 'Alterando...',
  2062. deleteUserAndItems: 'Excluir usuário E seus itens',
  2063. deleteUserKeepItems: 'Excluir usuário, manter itens (ficarão sem dono)',
  2064. ok: 'OK',
  2065. // 2FA settings
  2066. twoFa: {
  2067. totpTitle: 'App Autenticador (TOTP)',
  2068. totpDesc: 'Use um app como Google Authenticator, Aegis ou Authy.',
  2069. emailOtpTitle: 'OTP por e-mail',
  2070. emailOtpDesc: 'Envie um código único para {{email}} ao fazer login.',
  2071. emailOtpNoEmail: 'Adicione um endereço de e-mail à sua conta para ativar este método.',
  2072. addEmailFirst: 'Sua conta não tem endereço de e-mail. Peça a um administrador para adicionar um.',
  2073. setupTotp: 'Configurar App Autenticador',
  2074. setupAuthApp: 'Configurar App Autenticador',
  2075. setupInstructions: 'Escaneie o código QR com seu app autenticador e confirme com um código.',
  2076. manualEntry: 'Não consegue escanear? Digite este segredo manualmente:',
  2077. scannedContinue: 'Código escaneado — continuar',
  2078. enterCodeToConfirm: 'Digite o código de 6 dígitos do seu app autenticador para confirmar.',
  2079. activate: 'Ativar',
  2080. disableTotp: 'Desativar Autenticador',
  2081. disableConfirmHint: 'Digite um código TOTP válido ou um código de backup para desativar o autenticador.',
  2082. totpDisabled: 'App autenticador desativado.',
  2083. emailOtpEnabled: 'OTP por e-mail ativado.',
  2084. emailOtpDisabled: 'OTP por e-mail desativado.',
  2085. smtpRequired: 'Por favor, configure e teste as configurações SMTP primeiro.',
  2086. invalidCode: 'Código inválido. Por favor, tente novamente.',
  2087. enableEmailOtp: 'Ativar OTP por e-mail',
  2088. disableEmailOtp: 'Desativar OTP por e-mail',
  2089. emailSetupEnterCode: 'Um código de verificação foi enviado para o seu endereço de e-mail. Digite-o abaixo para confirmar que você possui esta caixa de entrada.',
  2090. verifyAndEnable: 'Verificar e Ativar',
  2091. emailDisablePasswordHint: 'Digite a senha da sua conta para confirmar a desativação do OTP por e-mail.',
  2092. passwordPlaceholder: 'Digite sua senha',
  2093. backupCodesTitle: 'Salve seus códigos de backup',
  2094. backupCodesWarning: 'Guarde estes códigos em lugar seguro. Cada código só pode ser usado uma vez.',
  2095. backupCodesRemaining: '{{count}} códigos de backup restantes',
  2096. savedCodes: 'Códigos salvos',
  2097. regenBackup: 'Regenerar códigos de backup',
  2098. regenBackupHint: 'Digite seu código TOTP atual para gerar 10 novos códigos de backup.',
  2099. newBackupCodes: 'Novos códigos de backup',
  2100. linkedAccounts: 'Contas SSO vinculadas',
  2101. linkedAccountsDesc: 'Estes provedores de identidade externos estão vinculados à sua conta.',
  2102. oidcUnlinked: 'Conta desvinculada.',
  2103. },
  2104. // OIDC provider settings
  2105. oidc: {
  2106. title: 'Provedores SSO / OIDC',
  2107. desc: 'Configure provedores OpenID Connect para login único.',
  2108. addProvider: 'Adicionar provedor',
  2109. newProvider: 'Novo provedor',
  2110. empty: 'Nenhum provedor OIDC configurado ainda.',
  2111. created: 'Provedor criado.',
  2112. updated: 'Provedor atualizado.',
  2113. deleted: 'Provedor excluído.',
  2114. deleteTitle: 'Excluir provedor',
  2115. deleteMessage: 'Excluir "{{name}}"? Todas as contas vinculadas serão desconectadas.',
  2116. form: {
  2117. name: 'Nome de exibição',
  2118. issuerUrl: 'URL do emissor',
  2119. clientId: 'Client ID',
  2120. clientSecret: 'Client secret',
  2121. scopes: 'Escopos',
  2122. iconUrl: 'URL do ícone (opcional)',
  2123. enabled: 'Ativado',
  2124. autoCreate: 'Criar usuários automaticamente',
  2125. autoCreateDesc: 'Cria automaticamente uma conta local no primeiro login.',
  2126. autoLink: 'Vincular contas existentes automaticamente',
  2127. autoLinkDesc: 'Vincula contas locais existentes por e-mail no primeiro login.',
  2128. secretHint: 'deixe em branco para manter',
  2129. secretPlaceholder: 'novo segredo',
  2130. },
  2131. },
  2132. },
  2133. // Notifications (for push notifications)
  2134. notification: {
  2135. printStarted: {
  2136. title: 'Impressão Iniciada',
  2137. body: '{{printer}}: {{filename}} iniciou a impressão',
  2138. },
  2139. printCompleted: {
  2140. title: 'Impressão Concluída',
  2141. body: '{{printer}}: {{filename}} foi concluída com sucesso',
  2142. },
  2143. printFailed: {
  2144. title: 'Falha na Impressão',
  2145. body: '{{printer}}: {{filename}} falhou',
  2146. },
  2147. printStopped: {
  2148. title: 'Impressão Interrompida',
  2149. body: '{{printer}}: {{filename}} foi interrompida',
  2150. },
  2151. printProgress: {
  2152. title: 'Progresso da Impressão',
  2153. body: '{{printer}}: {{filename}} está {{percent}}% concluída',
  2154. },
  2155. printerOffline: {
  2156. title: 'Impressora Offline',
  2157. body: '{{printer}} está offline',
  2158. },
  2159. printerError: {
  2160. title: 'Erro na Impressora',
  2161. body: '{{printer}}: {{error}}',
  2162. },
  2163. filamentLow: {
  2164. title: 'Filamento Baixo',
  2165. body: '{{printer}}: O filamento está acabando',
  2166. },
  2167. maintenanceDue: {
  2168. title: 'Manutenção Pendente',
  2169. body: '{{printer}}: {{items}} precisam de atenção',
  2170. },
  2171. },
  2172. // Errors
  2173. errors: {
  2174. generic: 'Algo deu errado',
  2175. networkError: 'Erro de rede. Por favor, verifique sua conexão.',
  2176. notFound: 'Não encontrado',
  2177. unauthorized: 'Não autorizado',
  2178. serverError: 'Erro no servidor',
  2179. validationError: 'Por favor, verifique sua entrada',
  2180. printerConnectionFailed: 'Falha ao conectar à impressora',
  2181. saveFailed: 'Falha ao salvar alterações',
  2182. deleteFailed: 'Falha ao excluir',
  2183. loadFailed: 'Falha ao carregar dados',
  2184. },
  2185. // HMS Errors modal
  2186. hmsErrors: {
  2187. title: 'Erros - {{name}}',
  2188. noErrors: 'Nenhum erro',
  2189. viewOnWiki: 'Ver no Bambu Lab Wiki',
  2190. clearInstructions: 'Limpe os erros na impressora para descartá-los aqui.',
  2191. clearErrors: 'Limpar Erros',
  2192. clearSuccess: 'Erros HMS limpos',
  2193. clearFailed: 'Falha ao limpar erros HMS',
  2194. },
  2195. // MQTT Debug modal
  2196. mqttDebug: {
  2197. title: 'MQTT Log de Depuração',
  2198. searchPlaceholder: 'Pesquisar tópico ou payload...',
  2199. noMessages: 'Nenhuma mensagem registrada ainda',
  2200. startLoggingHint: 'Clique em "Iniciar Registro" para começar a capturar mensagens MQTT',
  2201. noMessagesMatch: 'Nenhuma mensagem corresponde ao seu filtro',
  2202. adjustFilterHint: 'Tente ajustar seus critérios de pesquisa ou filtro',
  2203. incoming: 'Entrada',
  2204. outgoing: 'Saída',
  2205. loggingStopped: 'Registro interrompido',
  2206. loggingActive: 'Registro ativo - as mensagens serão atualizadas automaticamente',
  2207. startLogging: 'Iniciar Registro',
  2208. stopLogging: 'Parar Registro',
  2209. clearLog: 'Limpar Registro',
  2210. topic: 'ópico',
  2211. timestamp: 'Carimbo de Data/Hora',
  2212. direction: 'Direção',
  2213. all: 'Todos',
  2214. },
  2215. // Printer File Manager modal (printer internal storage)
  2216. printerFiles: {
  2217. title: 'Gerenciador de Arquivos',
  2218. storageUsed: 'Usado:',
  2219. storageFree: 'Livre:',
  2220. filterPlaceholder: 'Filtrar arquivos...',
  2221. deleteButton: 'Excluir',
  2222. deleteFiles: 'Excluir {{count}} arquivos',
  2223. deleteFileConfirm: 'Excluir "{{name}}"? Isso não pode ser desfeito.',
  2224. deleteFilesConfirm: 'Excluir {{count}} arquivos selecionados? Isso não pode ser desfeito.',
  2225. noFiles: 'Nenhum arquivo na impressora',
  2226. loadingFiles: 'Carregando arquivos...',
  2227. failedToLoad: 'Falha ao carregar arquivos',
  2228. toast: {
  2229. filesDeleted: 'Arquivos excluídos: {{count}}',
  2230. deleteFailed: 'Falha ao excluir: {{error}}',
  2231. },
  2232. },
  2233. // Confirmations
  2234. confirm: {
  2235. delete: 'Tem certeza de que deseja excluir isso?',
  2236. unsavedChanges: 'Você tem alterações não salvas. Tem certeza de que deseja sair?',
  2237. clearQueue: 'Tem certeza de que deseja limpar a fila?',
  2238. },
  2239. // Login page
  2240. login: {
  2241. title: 'Bambuddy Login',
  2242. subtitle: 'Faça login na sua conta',
  2243. username: 'Nome de usuário',
  2244. usernamePlaceholder: 'Digite seu nome de usuário',
  2245. usernameOrEmail: 'Nome de usuário ou Email',
  2246. usernameOrEmailPlaceholder: 'Nome de usuário ou Email',
  2247. password: 'Senha',
  2248. passwordPlaceholder: 'Digite sua senha',
  2249. signIn: 'Entrar',
  2250. signingIn: 'Entrando...',
  2251. forgotPassword: 'Esqueceu sua senha?',
  2252. loginSuccess: 'Login realizado com sucesso',
  2253. loginFailed: 'Falha no login',
  2254. enterCredentials: 'Por favor, insira nome de usuário e senha',
  2255. enterEmail: 'Por favor, insira seu endereço de e-mail',
  2256. oidcLoginFailed: 'Falha no login OIDC',
  2257. oidcErrors: {
  2258. providerError: 'O provedor de identidade retornou um erro',
  2259. missingParameters: 'Parâmetros obrigatórios ausentes no callback OIDC',
  2260. invalidState: 'Estado OIDC inválido ou já utilizado',
  2261. stateExpired: 'Sessão OIDC expirada — tente novamente',
  2262. providerNotFound: 'Provedor OIDC não encontrado',
  2263. discoveryFailed: 'Falha ao obter o documento de descoberta OIDC',
  2264. invalidDiscovery: 'Documento de descoberta OIDC inválido',
  2265. networkError: 'Erro de rede durante a troca de token OIDC',
  2266. badResponse: 'Resposta inesperada durante a troca de token OIDC',
  2267. noIdToken: 'O provedor OIDC não retornou um token de ID',
  2268. validationFailed: 'Falha na validação do token OIDC',
  2269. nonceMismatch: 'Nonce OIDC não corresponde — possível ataque de replay',
  2270. missingSubClaim: 'Token OIDC sem claim sub',
  2271. noLinkedAccount: 'Nenhuma conta local vinculada a esta identidade OIDC',
  2272. accountInactive: 'Sua conta está inativa',
  2273. userResolutionFailed: 'Falha ao resolver sua conta',
  2274. internalError: 'Erro interno durante o login OIDC',
  2275. tokenExchangeFailed: 'Falha na troca de token OIDC',
  2276. },
  2277. forgotPasswordTitle: 'Esqueceu a Senha',
  2278. forgotPasswordMessage: 'Se você esqueceu sua senha, entre em contato com o administrador do sistema para redefini-la.',
  2279. forgotPasswordEmailMessage: 'Digite seu endereço de email e enviaremos uma nova senha.',
  2280. emailAddress: 'Endereço de Email',
  2281. emailPlaceholder: 'seu.email@exemplo.com',
  2282. cancel: 'Cancelar',
  2283. sending: 'Enviando...',
  2284. sendResetEmail: 'Enviar Email de Redefinição',
  2285. howToReset: 'Como redefinir sua senha:',
  2286. resetStep1: 'Entre em contato com o administrador do Bambuddy',
  2287. resetStep2: 'Peça para redefinir sua senha na Gestão de Usuários',
  2288. resetStep3: 'Eles podem definir uma nova senha temporária para você',
  2289. resetStep4: 'Faça login com a nova senha e altere-a nas Configurações',
  2290. gotIt: 'Entendi',
  2291. resetPassword: {
  2292. title: 'Definir nova senha',
  2293. subtitle: 'Digite e confirme sua nova senha abaixo.',
  2294. newPassword: 'Nova senha',
  2295. newPasswordPlaceholder: 'Pelo menos 8 caracteres',
  2296. confirmPassword: 'Confirmar senha',
  2297. confirmPasswordPlaceholder: 'Repetir nova senha',
  2298. saving: 'Salvando\u2026',
  2299. submit: 'Definir nova senha',
  2300. backToLogin: 'Voltar para o login',
  2301. passwordsDoNotMatch: 'As senhas não coincidem',
  2302. passwordTooShort: 'A senha deve ter pelo menos 8 caracteres',
  2303. resetFailed: 'Falha ao redefinir senha. O link pode ter expirado.',
  2304. },
  2305. twoFA: {
  2306. title: 'Autenticação em dois fatores',
  2307. subtitle: 'Sua conta está protegida com 2FA. Insira o código de verificação abaixo.',
  2308. methodAuthenticator: 'Aplicativo autenticador',
  2309. methodEmail: 'Código por e-mail',
  2310. methodBackup: 'Código de recuperação',
  2311. instructionsTotp: 'Abra seu aplicativo autenticador e insira o código de 6 dígitos gerado para o Bambuddy.',
  2312. instructionsEmail: 'Um código de 6 dígitos foi enviado para o seu e-mail. Ele é válido por 10 minutos.',
  2313. instructionsEmailNotSent: 'Clique no botão abaixo para receber um código de verificação por e-mail.',
  2314. instructionsBackup: 'Insira um dos seus códigos de recuperação de 8 caracteres. Cada código só pode ser utilizado uma vez.',
  2315. sendCodeButton: 'Enviar código por e-mail',
  2316. sendingCode: 'Enviando...',
  2317. resendCode: 'Reenviar código',
  2318. codeLabel: 'Código de verificação',
  2319. backupCodeLabel: 'Código de recuperação',
  2320. codePlaceholder: '000000',
  2321. backupCodePlaceholder: 'XXXXXXXX',
  2322. verifyButton: 'Verificar',
  2323. verifyingButton: 'Verificando...',
  2324. backToLogin: '← Voltar para o login',
  2325. orContinueWith: 'ou entrar com',
  2326. signInWith: 'Entrar com {{provider}}',
  2327. enterCode: 'Por favor, insira o código de verificação',
  2328. sendCodeFailed: 'Falha ao enviar o código de verificação',
  2329. invalidCode: 'Código inválido. Por favor, tente novamente.',
  2330. },
  2331. },
  2332. // Setup page
  2333. setup: {
  2334. title: 'Bambuddy Configuração',
  2335. subtitle: 'Configure a autenticação para sua instância do Bambuddy',
  2336. enableAuth: 'Ativar Autenticação',
  2337. adminAccount: 'Conta de Administrador',
  2338. adminAccountDesc: 'Se usuários administradores já existirem, a autenticação será ativada usando as contas de administrador existentes. Deixe os campos abaixo vazios para usar os administradores existentes ou insira novas credenciais para criar um novo usuário administrador.',
  2339. adminUsername: 'Nome de usuário do administrador',
  2340. adminPassword: 'Senha do administrador',
  2341. optionalIfAdminExists: '(opcional se usuários administradores existirem)',
  2342. adminUsernamePlaceholder: 'Digite o nome de usuário do administrador (opcional)',
  2343. adminPasswordPlaceholder: 'Digite a senha do administrador (opcional)',
  2344. confirmPassword: 'Confirmar Senha',
  2345. confirmPasswordPlaceholder: 'Confirme a senha do administrador',
  2346. settingUp: 'Configurando...',
  2347. completeSetup: 'Concluir Configuração',
  2348. toast: {
  2349. authEnabledAdminCreated: 'Autenticação ativada e usuário administrador criado',
  2350. authEnabledExistingAdmins: 'Autenticação ativada usando usuários administradores existentes',
  2351. setupCompleted: 'Configuração concluída',
  2352. enterBothCredentials: 'Por favor, insira o nome de usuário e a senha do administrador, ou deixe ambos vazios para usar os usuários administradores existentes',
  2353. passwordsDoNotMatch: 'As senhas não coincidem',
  2354. passwordTooShort: 'A senha deve ter pelo menos 6 caracteres',
  2355. },
  2356. },
  2357. // Password change
  2358. changePassword: {
  2359. title: 'Alterar Senha',
  2360. currentPassword: 'Senha Atual',
  2361. currentPasswordPlaceholder: 'Digite a senha atual',
  2362. newPassword: 'Nova Senha',
  2363. newPasswordPlaceholder: 'Digite a nova senha (mínimo 6 caracteres)',
  2364. confirmPassword: 'Confirmar Senha',
  2365. confirmPasswordPlaceholder: 'Confirme a nova senha',
  2366. passwordsDoNotMatch: 'As senhas não coincidem',
  2367. passwordTooShort: 'A senha deve ter pelo menos 6 caracteres',
  2368. changing: 'Alterando...',
  2369. success: 'Senha alterada com sucesso',
  2370. failed: 'Falha ao alterar a senha',
  2371. },
  2372. // Plate detection alert
  2373. plateAlert: {
  2374. title: 'Impressão Pausada!',
  2375. message: 'Objetos detectados na mesa de impressão. A impressão foi automaticamente pausada. Por favor, limpe a mesa e retome a impressão.',
  2376. understand: 'Entendi',
  2377. },
  2378. // Camera page
  2379. camera: {
  2380. title: 'Visualização da Câmera',
  2381. invalidPrinterId: 'ID da impressora inválido',
  2382. live: 'Ao Vivo',
  2383. snapshot: 'Captura',
  2384. restartStream: 'Reiniciar transmissão',
  2385. refreshSnapshot: 'Atualizar captura',
  2386. fullscreen: 'Tela Cheia',
  2387. exitFullscreen: 'Sair da Tela Cheia',
  2388. connectingToCamera: 'Conectando à câmera...',
  2389. capturingSnapshot: 'Capturando imagem...',
  2390. connectionLost: 'Conexão perdida',
  2391. connectionFailed: 'Falha na conexão com a câmera',
  2392. reconnecting: 'Reconectando em {{countdown}}s... (tentativa {{attempt}}/{{max}})',
  2393. reconnectNow: 'Reconectar agora',
  2394. cameraUnavailable: 'Câmera indisponível',
  2395. cameraUnavailableDesc: 'Certifique-se de que a impressora está ligada e conectada.',
  2396. noCamera: 'Nenhuma câmera disponível',
  2397. retry: 'Tentar novamente',
  2398. cameraStream: 'Transmissão da câmera',
  2399. zoomOut: 'Reduzir zoom',
  2400. zoomIn: 'Aumentar zoom',
  2401. resetZoom: 'Redefinir zoom',
  2402. recording: 'Gravando',
  2403. startRecording: 'Iniciar gravação',
  2404. stopRecording: 'Parar gravação',
  2405. chamberLight: 'Alternar luz da câmara',
  2406. },
  2407. // Groups management
  2408. groups: {
  2409. title: 'Gerenciamento de Grupos',
  2410. subtitle: 'Gerenciar grupos de permissão para controle de acesso',
  2411. backToSettings: 'Voltar para Configurações',
  2412. createGroup: 'Criar Grupo',
  2413. noPermission: 'Você não tem permissão para acessar esta página.',
  2414. system: 'Sistema',
  2415. noDescription: 'Sem descrição',
  2416. usersCount: '{{count}} usuários',
  2417. permissionsCount: '{{count}} permissões',
  2418. edit: 'Editar',
  2419. delete: 'Excluir',
  2420. toast: {
  2421. created: 'Grupo criado com sucesso',
  2422. updated: 'Grupo atualizado com sucesso',
  2423. deleted: 'Grupo excluído com sucesso',
  2424. enterGroupName: 'Por favor, insira um nome para o grupo',
  2425. },
  2426. modal: {
  2427. editGroup: 'Editar Grupo',
  2428. createGroup: 'Criar Grupo',
  2429. cancel: 'Cancelar',
  2430. saving: 'Salvando...',
  2431. creating: 'Criando...',
  2432. saveChanges: 'Salvar Alterações',
  2433. },
  2434. form: {
  2435. groupName: 'Nome do Grupo',
  2436. groupNamePlaceholder: 'Insira o nome do grupo',
  2437. systemGroupWarning: 'Os nomes dos grupos do sistema não podem ser alterados',
  2438. description: 'Descrição',
  2439. descriptionPlaceholder: 'Insira a descrição (opcional)',
  2440. permissions: 'Permissões ({{count}} selecionadas)',
  2441. },
  2442. deleteModal: {
  2443. title: 'Excluir Grupo',
  2444. message: 'Tem certeza de que deseja excluir este grupo? Os usuários deste grupo perderão essas permissões.',
  2445. confirm: 'Excluir Grupo',
  2446. },
  2447. editor: {
  2448. title: 'Editar Grupo',
  2449. createTitle: 'Criar Grupo',
  2450. search: 'Pesquisar permissões...',
  2451. selectAll: 'Selecionar Tudo',
  2452. clearAll: 'Limpar Tudo',
  2453. permissionsSelected: '{{count}} selecionada(s)',
  2454. noResults: 'Nenhuma permissão corresponde à sua pesquisa',
  2455. },
  2456. },
  2457. // Users management
  2458. users: {
  2459. title: 'Gerenciamento de Usuários',
  2460. subtitle: 'Gerenciar usuários e seu acesso à sua instância do Bambuddy',
  2461. backToSettings: 'Voltar para Configurações',
  2462. createUser: 'Criar Usuário',
  2463. noPermission: 'Você não tem permissão para acessar esta página.',
  2464. admin: 'Admin',
  2465. noGroups: 'Sem grupos',
  2466. active: 'Ativo',
  2467. inactive: 'Inativo',
  2468. edit: 'Editar',
  2469. delete: 'Excluir',
  2470. system: 'Sistema',
  2471. noGroupsAvailable: 'Nenhum grupo disponível',
  2472. table: {
  2473. username: 'Nome de Usuário',
  2474. groups: 'Grupos',
  2475. status: 'Status',
  2476. actions: 'Ações',
  2477. },
  2478. toast: {
  2479. created: 'Usuário criado com sucesso',
  2480. updated: 'Usuário atualizado com sucesso',
  2481. deleted: 'Usuário excluído com sucesso',
  2482. fillRequired: 'Por favor, preencha todos os campos obrigatórios',
  2483. passwordsDoNotMatch: 'As senhas não coincidem',
  2484. passwordTooShort: 'A senha deve ter pelo menos 6 caracteres',
  2485. },
  2486. modal: {
  2487. createUser: 'Criar Usuário',
  2488. editUser: 'Editar Usuário',
  2489. cancel: 'Cancelar',
  2490. creating: 'Criando...',
  2491. saving: 'Salvando...',
  2492. saveChanges: 'Salvar Alterações',
  2493. advancedAuthSubtitle: 'com Autenticação Avançada',
  2494. },
  2495. form: {
  2496. username: 'Nome de Usuário',
  2497. usernamePlaceholder: 'Insira o nome de usuário',
  2498. email: 'Email',
  2499. emailPlaceholder: 'user@example.com',
  2500. password: 'Senha',
  2501. passwordPlaceholder: 'Insira a senha',
  2502. confirmPassword: 'Confirmar Senha',
  2503. confirmPasswordPlaceholder: 'Confirme a senha',
  2504. newPasswordPlaceholder: 'Insira a nova senha',
  2505. confirmNewPasswordPlaceholder: 'Confirme a nova senha',
  2506. leaveBlankToKeep: 'deixe em branco para manter a atual',
  2507. groups: 'Grupos',
  2508. optional: 'opcional',
  2509. autoGeneratedPassword: 'Uma senha segura será gerada automaticamente e enviada por e-mail ao usuário.',
  2510. passwordManagedByAdvancedAuth: 'A senha é gerenciada pela Autenticação Avançada. Use "Redefinir Senha" para enviar uma nova senha ao usuário por e-mail.',
  2511. resetPassword: 'Redefinir Senha',
  2512. resettingPassword: 'Redefinindo Senha...',
  2513. },
  2514. deleteModal: {
  2515. title: 'Excluir Usuário',
  2516. message: 'Tem certeza de que deseja excluir este usuário? Esta ação não pode ser desfeita.',
  2517. confirm: 'Excluir Usuário',
  2518. },
  2519. },
  2520. // Stream overlay
  2521. streamOverlay: {
  2522. title: 'Stream Overlay',
  2523. invalidPrinterId: 'ID da impressora inválido',
  2524. cameraStream: 'Transmissão da câmera',
  2525. progress: 'Progresso da impressão',
  2526. eta: 'ETA',
  2527. printerIdle: 'Impressora ociosa',
  2528. printerOffline: 'Impressora offline',
  2529. status: {
  2530. printing: 'Imprimindo',
  2531. paused: 'Pausado',
  2532. finished: 'Concluído',
  2533. failed: 'Falhou',
  2534. idle: 'Ocioso',
  2535. unknown: 'Desconhecido',
  2536. },
  2537. },
  2538. // Profiles
  2539. profiles: {
  2540. title: 'Perfis',
  2541. subtitle: 'Gerencie seus presets de fatiador e calibrações de avanço de pressão',
  2542. tabs: {
  2543. cloud: 'Perfis na Nuvem',
  2544. local: 'Perfis Locais',
  2545. kprofiles: 'K-Perfis',
  2546. },
  2547. localProfiles: {
  2548. title: 'Perfis Locais',
  2549. subtitle: 'Importe e gerencie presets de fatiador do OrcaSlicer',
  2550. import: 'Importar Perfis',
  2551. importDesc: 'Solte arquivos .bbscfg, .bbsflmt, .orca_filament, .zip ou .json aqui',
  2552. importing: 'Importando...',
  2553. search: 'Pesquisar presets locais...',
  2554. noPresets: 'Nenhum preset local ainda',
  2555. badge: 'Local',
  2556. edit: 'Editar',
  2557. delete: 'Excluir',
  2558. cancel: 'Cancelar',
  2559. deleteConfirmTitle: 'Excluir Preset',
  2560. deleteConfirm: 'Tem certeza de que deseja excluir este preset? Esta ação não pode ser desfeita.',
  2561. source: 'Fonte',
  2562. inheritsFrom: 'Herdado de',
  2563. filamentType: 'Tipo',
  2564. vendor: 'Fornecedor',
  2565. compatiblePrinters: 'Impressoras Compatíveis',
  2566. nozzleTemp: 'Temperatura do Bico',
  2567. cost: 'Custo',
  2568. density: 'Densidade',
  2569. pressureAdvance: 'Avanço de Pressão',
  2570. filament: 'Filamento',
  2571. process: 'Processo',
  2572. printer: 'Impressora',
  2573. toast: {
  2574. importSuccess: '{{count}} preset(s) importada(s)',
  2575. importSkipped: '{{count}} preset(s) ignorada(s) (duplicadas)',
  2576. importError: '{{count}} erro(s) durante a importação',
  2577. deleted: 'Preset excluído',
  2578. updated: 'Preset atualizado',
  2579. },
  2580. },
  2581. connectedAs: 'Conectado como',
  2582. logout: 'Sair',
  2583. noLogoutPermission: 'Você não tem permissão para sair',
  2584. failedToLoad: 'Falha ao carregar perfis',
  2585. retry: 'Tentar novamente',
  2586. time: {
  2587. justNow: 'Agora mesmo',
  2588. minsAgo: 'há {{count}} minutos',
  2589. hoursAgo: 'há {{count}} horas',
  2590. daysAgo: 'há {{count}} dias',
  2591. },
  2592. toast: {
  2593. loggedOut: 'Desconectado',
  2594. },
  2595. login: {
  2596. title: 'Conectar ao Bambu Cloud',
  2597. subtitle: 'Sincronize seus presets de fatiador entre dispositivos',
  2598. email: 'Email',
  2599. password: 'Senha',
  2600. region: 'Região',
  2601. regionGlobal: 'Global',
  2602. regionChina: 'China',
  2603. verificationCode: 'Código de Verificação',
  2604. totpCode: 'Código do Autenticador',
  2605. checkEmail: 'Verifique seu email ({{email}}) para um código de 6 dígitos',
  2606. enterTotpHint: 'Digite o código de 6 dígitos do seu aplicativo autenticador',
  2607. accessToken: 'Token de Acesso',
  2608. accessTokenHint: 'Cole seu token de acesso Bambu Lab (do Bambu Studio)',
  2609. back: 'Voltar',
  2610. loginButton: 'Entrar',
  2611. verifyButton: 'Verificar',
  2612. setTokenButton: 'Definir Token',
  2613. useToken: 'Usar token de acesso em vez disso',
  2614. useEmail: 'Entrar com email em vez disso',
  2615. toast: {
  2616. loggedIn: 'Conectado com sucesso',
  2617. codeSent: 'Código de verificação enviado para seu email',
  2618. enterTotp: 'Digite o código do seu aplicativo autenticador',
  2619. tokenSet: 'Token definido com sucesso',
  2620. },
  2621. },
  2622. presets: {
  2623. myPreset: 'Meu preset (editável)',
  2624. duplicate: 'Duplicar',
  2625. editable: 'Editável',
  2626. failedToLoadDetails: 'Falha ao carregar detalhes do preset',
  2627. deleteConfirm: 'Excluir este preset?',
  2628. deleteWarning: 'Isso excluirá permanentemente "{{name}}" do Bambu Cloud. Esta ação não pode ser desfeita.',
  2629. noDuplicatePermission: 'Você não tem permissão para duplicar presets',
  2630. noEditPermission: 'Você não tem permissão para editar presets',
  2631. noDeletePermission: 'Você não tem permissão para excluir presets',
  2632. types: {
  2633. filament: 'Preset de filamento',
  2634. printer: 'Preset de impressora',
  2635. process: 'Preset de processo',
  2636. },
  2637. toast: {
  2638. deleted: 'Preset excluído',
  2639. created: 'Preset criado',
  2640. updated: 'Preset atualizado',
  2641. duplicated: 'Preset duplicado',
  2642. fieldAdded: 'Campo "{{key}}" adicionado',
  2643. exported: 'Preset exportado',
  2644. },
  2645. baseLabel: 'Base: {{name}}',
  2646. currentLabel: 'Atual: {{name}}',
  2647. newPreset: 'Novo Preset',
  2648. editPreset: 'Editar Preset',
  2649. duplicatePreset: 'Duplicar Preset',
  2650. createNewPreset: 'Criar Novo Preset',
  2651. customizeSettings: 'Personalizar configurações para seu novo preset',
  2652. compareWithBase: 'Comparar com o preset base',
  2653. compare: 'Comparar',
  2654. // CreatePresetModal - Basic Info
  2655. basePreset: 'Preset Base',
  2656. selectBasePreset: 'Selecionar preset base...',
  2657. presetName: 'Nome do Preset',
  2658. myCustomPreset: 'Meu preset personalizado',
  2659. inheritsFrom: 'Herdado de',
  2660. dropJsonToImport: 'Solte o arquivo JSON para importar',
  2661. // CreatePresetModal - Tabs
  2662. tabs: {
  2663. common: 'Comum',
  2664. allFields: 'Todos os Campos',
  2665. },
  2666. // CreatePresetModal - All Fields Tab
  2667. availableFields: 'Campos Disponíveis',
  2668. searchFieldsPlaceholder: 'Pesquisar campos...',
  2669. noMatchingFields: 'Nenhum campo correspondente',
  2670. allFieldsAdded: 'Todos os campos adicionados',
  2671. addCustomField: 'Adicionar campo personalizado',
  2672. yourOverrides: 'Suas Substituições',
  2673. noOverridesYet: 'Nenhuma substituição ainda',
  2674. clickFieldsToAdd: 'Clique nos campos à esquerda para adicioná-los',
  2675. saveAsTemplate: 'Salvar como modelo',
  2676. jsonTip: 'Dica: Arraste e solte um arquivo .json em qualquer lugar deste modal para importar configurações',
  2677. },
  2678. cloudView: {
  2679. searchPlaceholder: 'Pesquisar presets...',
  2680. templates: 'Modelos',
  2681. refresh: 'Atualizar',
  2682. newPreset: 'Novo Preset',
  2683. clearFilters: 'Limpar filtros',
  2684. // Compare mode
  2685. compareMode: 'Modo de Comparação',
  2686. selectAnotherPreset: 'Selecionar outro preset {{type}}',
  2687. clickTwoPresets: 'Clique em dois presets do mesmo tipo para comparar',
  2688. selectFirst: '1. Selecionar primeiro',
  2689. selectSecond: '2. Selecionar segundo',
  2690. compareNow: 'Comparar Agora',
  2691. // Status row
  2692. lastSynced: 'Última sincronização:',
  2693. showingCount: 'Mostrando {{showing}} de {{total}} presets',
  2694. noPresetsFound: 'Nenhum preset encontrado',
  2695. // Column headers
  2696. columns: {
  2697. filament: 'Filamento',
  2698. process: 'Processo',
  2699. printer: 'Impressora',
  2700. },
  2701. noFilamentPresets: 'Nenhum preset de filamento',
  2702. noProcessPresets: 'Nenhum preset de processo',
  2703. noPrinterPresets: 'Nenhum preset de impressora',
  2704. // Filters
  2705. filters: {
  2706. type: 'Tipo',
  2707. owner: 'Proprietário',
  2708. printer: 'Impressora',
  2709. nozzle: 'Bico',
  2710. filament: 'Filamento',
  2711. layer: 'Camada',
  2712. all: 'Todos',
  2713. myPresets: 'Meus Presets',
  2714. builtIn: 'Integrado',
  2715. process: 'Processo',
  2716. },
  2717. // Permissions
  2718. noTemplatesPermission: 'Você não tem permissão para gerenciar modelos',
  2719. noRefreshPermission: 'Você não tem permissão para atualizar perfis',
  2720. noCreatePermission: 'Você não tem permissão para criar presets',
  2721. },
  2722. templates: {
  2723. title: 'Modelos Rápidos',
  2724. noTemplates: 'Nenhum modelo ainda',
  2725. createFirst: 'Crie modelos a partir do editor de presets',
  2726. typeFilter: 'Tipo:',
  2727. deleteTitle: 'Excluir Modelo',
  2728. deleteWarning: 'Esta ação não pode ser desfeita',
  2729. deleteConfirm: 'Tem certeza de que deseja excluir "{{name}}"?',
  2730. namePlaceholder: 'Nome do modelo',
  2731. descriptionPlaceholder: 'Descrição',
  2732. settingsJson: 'Configurações (JSON)',
  2733. fieldsCount: '{{count}} campos',
  2734. shownInModals: 'Exibido em modais',
  2735. hiddenInModals: 'Oculto em modais',
  2736. apply: 'Aplicar',
  2737. toast: {
  2738. deleted: 'Modelo excluído',
  2739. updated: 'Modelo atualizado',
  2740. created: 'Modelo criado',
  2741. applied: 'Modelo aplicado',
  2742. },
  2743. },
  2744. },
  2745. // Support/Debug
  2746. support: {
  2747. debugLoggingActive: 'Registro de depuração ativo',
  2748. manageLogs: 'Gerenciar',
  2749. collectItem7: 'Conectividade da impressora e versões de firmware',
  2750. collectItem8: 'Status de integração (Spoolman, MQTT, HA)',
  2751. collectItem9: 'Interfaces de rede (somente sub-redes)',
  2752. collectItem10: 'Versões de pacotes Python',
  2753. collectItem11: 'Verificações de integridade do banco de dados',
  2754. collectItem12: 'Detalhes do ambiente Docker',
  2755. },
  2756. // File manager
  2757. fileManager: {
  2758. title: 'Gerenciador de Arquivos',
  2759. subtitle: 'Organize e gerencie seus arquivos de impressão',
  2760. uploadFiles: 'Enviar Arquivos',
  2761. newFolder: 'Nova Pasta',
  2762. folderName: 'Nome da Pasta',
  2763. folderNamePlaceholder: 'ex.: Peças Funcionais',
  2764. renameFile: 'Renomear Arquivo',
  2765. renameFolder: 'Renomear Pasta',
  2766. moveFiles: 'Mover {{count}} Arquivo(s)',
  2767. rootNoFolder: 'Raiz (Sem Pasta)',
  2768. current: 'Atual',
  2769. linkFolder: 'Vincular Pasta',
  2770. linkFolderDescription: 'Vincular "{{name}}" a um projeto ou arquivo para acesso rápido.',
  2771. project: 'Projeto',
  2772. archive: 'Arquivo',
  2773. noProjectsFound: 'Nenhum projeto encontrado',
  2774. noArchivesFound: 'Nenhum arquivo encontrado',
  2775. unlink: 'Desvincular',
  2776. link: 'Vincular',
  2777. dragDropFiles: 'Arraste e solte os arquivos aqui',
  2778. dropFilesHere: 'Solte os arquivos aqui',
  2779. orClickToBrowse: 'ou clique para procurar',
  2780. allFileTypesSupported: 'Todos os tipos de arquivos são suportados. Arquivos ZIP serão extraídos.',
  2781. zipFilesDetected: 'Arquivos ZIP detectados',
  2782. zipExtractOptions: 'Arquivos ZIP serão extraídos. Escolha como lidar com a estrutura de pastas:',
  2783. preserveZipStructure: 'Preservar estrutura de pastas do ZIP',
  2784. createFolderFromZip: 'Criar pasta a partir do nome do arquivo ZIP',
  2785. stlThumbnailGeneration: 'Geração de miniaturas STL',
  2786. zipMayContainStl: 'Arquivos ZIP podem conter arquivos STL. Miniaturas podem ser geradas durante a extração.',
  2787. thumbnailsCanBeGenerated: 'Miniaturas podem ser geradas para arquivos STL. Modelos grandes podem levar mais tempo para processar.',
  2788. generateThumbnailsForStl: 'Gerar miniaturas para arquivos STL',
  2789. threemfDetected: 'Arquivos 3MF detectados',
  2790. threemfExtractionInfo: 'Modelo da impressora, material, cor e configurações de impressão serão extraídos automaticamente dos arquivos 3MF.',
  2791. willBeExtracted: 'Será extraído',
  2792. filesExtracted: '{{count}} arquivos extraídos',
  2793. uploadComplete: 'Upload concluído: {{succeeded}} bem-sucedidos',
  2794. uploadFailed: 'Falha no envio',
  2795. zipFilesFailed: '{{count}} arquivos falharam',
  2796. uploading: 'Enviando...',
  2797. changeLink: 'Alterar link...',
  2798. linkTo: 'Vincular a...',
  2799. linkToProjectOrArchive: 'Vincular a projeto ou arquivo',
  2800. addToQueue: 'Adicionar à fila',
  2801. schedulePrint: 'Agendar impressão',
  2802. generateThumbnail: 'Gerar miniatura',
  2803. generateThumbnails: 'Gerar miniaturas',
  2804. generateThumbnailsForMissing: 'Gerar miniaturas para arquivos STL que não possuem',
  2805. gridView: 'Visualização em grade',
  2806. listView: 'Visualização em lista',
  2807. lowDiskSpaceWarning: 'Aviso de pouco espaço em disco',
  2808. lowDiskSpaceDetails: 'Apenas {{free}} livres de {{total}} no total. O limite está definido para {{threshold}} GB nas configurações.',
  2809. files: 'Arquivos',
  2810. folders: 'Pastas',
  2811. size: 'Tamanho',
  2812. free: 'Livre',
  2813. allFiles: 'Todos os arquivos',
  2814. wrap: 'Quebrar texto',
  2815. enableTextWrapping: 'Ativar quebra de texto',
  2816. disableTextWrapping: 'Desativar quebra de texto',
  2817. collapse: 'Recolher',
  2818. collapseFoldersByDefault: 'Recolher pastas por padrão',
  2819. expandFoldersByDefault: 'Expandir pastas por padrão',
  2820. dragToResizeTooltip: 'Arraste para redimensionar, clique duas vezes para redefinir',
  2821. searchFiles: 'Pesquisar arquivos...',
  2822. allTypes: 'Todos os tipos',
  2823. prints: 'Impressões',
  2824. ascending: 'Crescente',
  2825. descending: 'Decrescente',
  2826. resultsCount: '{{showing}} de {{total}} arquivos',
  2827. selectAll: 'Selecionar tudo',
  2828. deselectAll: 'Desmarcar tudo',
  2829. selected: '{{count}} selecionado(s)',
  2830. adding: 'Adicionando...',
  2831. loadingFiles: 'Carregando arquivos...',
  2832. folderIsEmpty: 'A pasta está vazia',
  2833. noFilesYet: 'Nenhum arquivo ainda',
  2834. folderEmptyDescription: 'Envie arquivos ou mova arquivos para esta pasta para começar.',
  2835. noFilesDescription: 'Envie arquivos para começar a organizar seus arquivos relacionados à impressão.',
  2836. noMatchingFiles: 'Nenhum arquivo correspondente',
  2837. noMatchingFilesDescription: 'Nenhum arquivo corresponde aos seus critérios de pesquisa ou filtro.',
  2838. clearFilters: 'Limpar filtros',
  2839. printedCount: 'Impresso {{count}}x',
  2840. uploadedBy: 'Enviado por',
  2841. deleteFolder: 'Excluir pasta',
  2842. deleteFile: 'Excluir arquivo',
  2843. deleteFilesCount: 'Excluir {{count}} arquivos',
  2844. deleteFolderConfirm: 'Tem certeza de que deseja excluir esta pasta? Todos os arquivos dentro também serão excluídos.',
  2845. deleteFileConfirm: 'Tem certeza de que deseja excluir este arquivo?',
  2846. deleteFilesConfirm: 'Tem certeza de que deseja excluir {{count}} arquivos selecionados? Esta ação não pode ser desfeita.',
  2847. deleting: 'Excluindo...',
  2848. noPermissionRenameFolder: 'Você não tem permissão para renomear pastas',
  2849. noPermissionLinkFolder: 'Você não tem permissão para vincular pastas',
  2850. noPermissionDeleteFolder: 'Você não tem permissão para excluir pastas',
  2851. noPermissionPrint: 'Você não tem permissão para imprimir',
  2852. noPermissionAddToQueue: 'Você não tem permissão para adicionar à fila',
  2853. noPermissionDownload: 'Você não tem permissão para baixar arquivos',
  2854. noPermissionRenameFile: 'Você não tem permissão para renomear este arquivo',
  2855. noPermissionGenerateThumbnail: 'Você não tem permissão para gerar miniaturas',
  2856. noPermissionDeleteFile: 'Você não tem permissão para excluir este arquivo',
  2857. noPermissionCreateFolder: 'Você não tem permissão para criar pastas',
  2858. noPermissionUpload: 'Você não tem permissão para enviar arquivos',
  2859. noPermissionMoveFiles: 'Você não tem permissão para mover arquivos',
  2860. noPermissionDeleteFiles: 'Você não tem permissão para excluir arquivos',
  2861. // External folder
  2862. linkExternal: 'Vincular externo',
  2863. linkExternalFolder: 'Vincular pasta externa',
  2864. linkExternalFolderDescription: 'Montar um diretório do host (NAS, USB, compartilhamento de rede) no Gerenciador de Arquivos. Os arquivos não são copiados — são acessados diretamente do caminho original.',
  2865. externalFolderNamePlaceholder: 'ex. Impressões NAS',
  2866. externalPath: 'Caminho do host',
  2867. externalPathHelp: 'Caminho absoluto do diretório no host Docker. Deve estar montado como bind no contêiner.',
  2868. readOnly: 'Somente leitura',
  2869. readOnlyHelp: 'impede uploads e exclusões',
  2870. showHiddenFiles: 'Mostrar arquivos ocultos (arquivos ponto)',
  2871. externalFolder: 'Pasta externa',
  2872. scanFolder: 'Escanear',
  2873. toast: {
  2874. folderCreated: 'Pasta criada',
  2875. folderDeleted: 'Pasta excluída',
  2876. fileDeleted: 'Arquivo excluído',
  2877. filesDeleted: 'Excluídos {{count}} arquivos',
  2878. filesMoved: 'Arquivos movidos',
  2879. folderLinked: 'Pasta vinculada',
  2880. folderUnlinked: 'Pasta desvinculada',
  2881. externalFolderLinked: 'Pasta externa vinculada e escaneada',
  2882. folderScanned: 'Escaneamento concluído: {{added}} adicionados, {{removed}} removidos',
  2883. addedToQueue: 'Adicionado {{count}} arquivo(s) à fila',
  2884. addedToQueuePartial: 'Adicionado {{added}} arquivo(s), {{failed}} falharam',
  2885. failedToAddToQueue: 'Falha ao adicionar arquivos: {{error}}',
  2886. fileRenamed: 'Arquivo renomeado',
  2887. folderRenamed: 'Pasta renomeada',
  2888. thumbnailsGenerated: 'Geradas {{count}} miniatura(s)',
  2889. thumbnailsGeneratedPartial: 'Geradas {{succeeded}} miniatura(s), {{failed}} falharam',
  2890. noStlMissingThumbnails: 'Nenhum arquivo STL sem miniatura',
  2891. failedToGenerateThumbnails: 'Falha ao gerar miniaturas: {{error}}',
  2892. thumbnailGenerated: 'Miniatura gerada',
  2893. failedToGenerateThumbnail: 'Falha ao gerar miniatura: {{error}}',
  2894. },
  2895. },
  2896. // Projects
  2897. projects: {
  2898. title: 'Projetos',
  2899. subtitle: 'Organize e acompanhe seus projetos de impressão 3D',
  2900. newProject: 'Novo Projeto',
  2901. editProject: 'Editar Projeto',
  2902. deleteProject: 'Excluir Projeto',
  2903. projectName: 'Nome do Projeto',
  2904. description: 'Descrição',
  2905. noProjects: 'Nenhum projeto ainda',
  2906. noProjectsFiltered: 'Nenhum projeto {{status}}',
  2907. noProjectsFilteredHelp: 'Você não tem nenhum projeto {{status}}. Os projetos aparecerão aqui quando seu status mudar.',
  2908. createFirst: 'Crie seu primeiro projeto para começar a organizar impressões relacionadas, acompanhar o progresso e gerenciar suas construções.',
  2909. createFirstButton: 'Crie Seu Primeiro Projeto',
  2910. create: 'Criar',
  2911. files: 'Arquivos',
  2912. prints: 'Impressões',
  2913. plates: 'Placas',
  2914. parts: 'Peças',
  2915. lastModified: 'Última Modificação',
  2916. deleteConfirm: 'Tem certeza de que deseja excluir este projeto? Arquivos e itens da fila serão desvinculados, mas não excluídos.',
  2917. addFiles: 'Adicionar Arquivos',
  2918. removeFile: 'Remover Arquivo',
  2919. viewDetails: 'Ver Detalhes',
  2920. // Modal fields
  2921. namePlaceholder: 'ex., Voron 2.4 Build',
  2922. descriptionPlaceholder: 'Descrição opcional...',
  2923. color: 'Cor',
  2924. targetPlates: 'Placas Alvo',
  2925. targetPlatesPlaceholder: 'ex., 25',
  2926. targetPlatesHelp: 'Número de trabalhos de impressão',
  2927. targetParts: 'Peças Alvo',
  2928. targetPartsPlaceholder: 'ex., 150',
  2929. targetPartsHelp: 'Total de objetos necessários',
  2930. tagsLabel: 'Tags (separadas por vírgula)',
  2931. tagsPlaceholder: 'ex., voron, funcional, presente',
  2932. dueDate: 'Data de Vencimento',
  2933. priority: 'Prioridade',
  2934. priorityLow: 'Baixa',
  2935. priorityNormal: 'Normal',
  2936. priorityHigh: 'Alta',
  2937. priorityUrgent: 'Urgente',
  2938. // Status
  2939. statusActive: 'Ativo',
  2940. statusCompleted: 'Concluído',
  2941. statusArchived: 'Arquivado',
  2942. done: 'Concluído',
  2943. completed: 'Concluído',
  2944. failed: 'Falhou',
  2945. inQueue: 'Na fila',
  2946. noPrintsYet: 'Nenhuma impressão ainda',
  2947. // Footer stats
  2948. printJobs: 'Trabalhos de impressão (placas)',
  2949. partsPrinted: 'Peças impressas',
  2950. failedParts: 'Peças falhadas',
  2951. // Actions
  2952. import: 'Importar',
  2953. export: 'Exportar',
  2954. importProject: 'Importar projeto',
  2955. exportAll: 'Exportar todos os projetos',
  2956. loading: 'Carregando projetos...',
  2957. // Permissions
  2958. noEditPermission: 'Você não tem permissão para editar projetos',
  2959. noDeletePermission: 'Você não tem permissão para excluir projetos',
  2960. noCreatePermission: 'Você não tem permissão para criar projetos',
  2961. noImportPermission: 'Você não tem permissão para importar projetos',
  2962. noExportPermission: 'Você não tem permissão para exportar projetos',
  2963. // Toast
  2964. toast: {
  2965. created: 'Projeto criado',
  2966. updated: 'Projeto atualizado',
  2967. deleted: 'Projeto excluído',
  2968. imported: 'Projeto importado',
  2969. multipleImported: '{{count}} projetos importados',
  2970. importFailed: 'Falha na importação',
  2971. exported: 'Projetos exportados (apenas metadados)',
  2972. },
  2973. },
  2974. // Project detail page
  2975. projectDetail: {
  2976. notFound: 'Projeto não encontrado',
  2977. backToProjects: 'Voltar para Projetos',
  2978. export: 'Exportar',
  2979. exportProject: 'Exportar projeto',
  2980. noExportPermission: 'Você não tem permissão para exportar projetos',
  2981. noEditPermission: 'Você não tem permissão para editar projetos',
  2982. partOf: 'Parte de:',
  2983. priorityLabel: 'Prioridade:',
  2984. noPrints: 'Nenhuma impressão neste projeto ainda',
  2985. status: {
  2986. active: 'Ativo',
  2987. completed: 'Concluído',
  2988. archived: 'Arquivado',
  2989. },
  2990. priority: {
  2991. low: 'Baixa',
  2992. normal: 'Normal',
  2993. high: 'Alta',
  2994. urgent: 'Urgente',
  2995. },
  2996. dueDate: {
  2997. overdue: 'Atrasado',
  2998. today: 'Vence hoje',
  2999. daysLeft: '{{count}} dias restantes',
  3000. },
  3001. progress: {
  3002. platesProgress: 'Progresso das Placas',
  3003. partsProgress: 'Progresso das Peças',
  3004. printJobs: 'Trabalhos de Impressão',
  3005. parts: 'Peças',
  3006. percentComplete: '{{percent}}% concluído',
  3007. remaining: '{{count}} restantes',
  3008. },
  3009. stats: {
  3010. printJobs: 'Trabalhos de Impressão',
  3011. total: 'total',
  3012. failed: '{{count}} falhou',
  3013. partsPrinted: '{{count}} peças impressas',
  3014. printTime: 'Tempo de Impressão',
  3015. filamentUsed: 'Filamento Usado',
  3016. },
  3017. cost: {
  3018. title: 'Rastreamento de Custos',
  3019. filamentCost: 'Custo do Filamento',
  3020. energy: 'Energia',
  3021. totalCost: 'Custo Total',
  3022. total: 'Total',
  3023. includesBom: 'incl. lista de materiais',
  3024. budget: 'Orçamento',
  3025. remaining: 'Restante',
  3026. },
  3027. subProjects: {
  3028. title: 'Sub-projetos ({{count}})',
  3029. },
  3030. notes: {
  3031. title: 'Notas',
  3032. noEditPermission: 'Você não tem permissão para editar notas',
  3033. placeholder: 'Adicione notas sobre este projeto...',
  3034. empty: 'Nenhuma nota ainda. Clique em Editar para adicionar notas.',
  3035. },
  3036. files: {
  3037. title: 'Arquivos',
  3038. linkFolders: 'Vincular pastas do Gerenciador de Arquivos',
  3039. forQuickAccess: 'a este projeto para acesso rápido.',
  3040. fileCount: '{{count}} arquivo(s)',
  3041. empty: 'Nenhuma pasta vinculada. Vá para o Gerenciador de Arquivos e vincule uma pasta a este projeto.',
  3042. noFiles: 'Nenhum arquivo nesta pasta.',
  3043. print: 'Imprimir agora',
  3044. addToQueue: 'Adicionar à fila',
  3045. },
  3046. bom: {
  3047. title: 'Lista de Materiais',
  3048. acquired: '{{completed}}/{{total}} adquiridos',
  3049. showAll: 'Mostrar todos',
  3050. hideDone: 'Ocultar concluídos',
  3051. addPart: 'Adicionar Peça',
  3052. noAddPermission: 'Você não tem permissão para adicionar peças',
  3053. partNamePlaceholder: 'Nome da peça (ex.: parafusos M3x8)',
  3054. partName: 'Nome da peça',
  3055. qty: 'Quantidade',
  3056. price: 'Preço ({{currency}})',
  3057. sourcingUrlPlaceholder: 'URL de fornecimento (opcional)',
  3058. remarksPlaceholder: 'Observações (opcional)',
  3059. deletePart: 'Excluir Peça',
  3060. deleteConfirm: 'Tem certeza de que deseja excluir "{{name}}"?',
  3061. noUpdatePermission: 'Você não tem permissão para atualizar peças',
  3062. noEditPermission: 'Você não tem permissão para editar peças',
  3063. noDeletePermission: 'Você não tem permissão para excluir peças',
  3064. totalCost: 'Custo total:',
  3065. empty: 'Nenhuma peça na lista de materiais. Adicione hardware, eletrônicos ou outros componentes para rastrear o que precisa ser adquirido.',
  3066. },
  3067. timeline: {
  3068. title: 'Linha do Tempo de Atividades',
  3069. empty: 'Nenhuma atividade ainda.',
  3070. },
  3071. template: {
  3072. saveAsTemplate: 'Salvar como Modelo',
  3073. noCreatePermission: 'Você não tem permissão para criar modelos',
  3074. },
  3075. queue: {
  3076. title: 'Fila',
  3077. viewAll: 'Ver todos',
  3078. printing: '{{count}} imprimindo',
  3079. queued: '{{count}} na fila',
  3080. },
  3081. prints: {
  3082. title: 'Impressões ({{count}})',
  3083. },
  3084. toast: {
  3085. projectUpdated: 'Projeto atualizado',
  3086. partAdded: 'Peça adicionada',
  3087. partRemoved: 'Peça removida',
  3088. exportFailed: 'Falha na exportação',
  3089. projectExported: 'Projeto exportado',
  3090. templateCreated: 'Modelo criado',
  3091. },
  3092. },
  3093. // System info
  3094. system: {
  3095. title: 'Informações do Sistema',
  3096. version: 'Versão',
  3097. uptime: 'Tempo de Atividade',
  3098. cpuUsage: 'Uso da CPU',
  3099. memoryUsage: 'Uso da Memória',
  3100. diskUsage: 'Uso do Disco',
  3101. networkInfo: 'Informações de Rede',
  3102. logs: 'Logs',
  3103. debugMode: 'Modo de Depuração',
  3104. enableDebug: 'Ativar Registro de Depuração',
  3105. disableDebug: 'Desativar Registro de Depuração',
  3106. downloadLogs: 'Baixar Logs',
  3107. clearLogs: 'Limpar Logs',
  3108. dockerInfo: 'Informações do Docker',
  3109. containerName: 'Nome do Contêiner',
  3110. imageName: 'Nome da Imagem',
  3111. platform: 'Plataforma',
  3112. architecture: 'Arquitetura',
  3113. },
  3114. // Library (K Profiles)
  3115. library: {
  3116. title: 'Biblioteca de Filamentos',
  3117. addFilament: 'Adicionar Filamento',
  3118. editFilament: 'Editar Filamento',
  3119. deleteFilament: 'Excluir Filamento',
  3120. vendor: 'Fornecedor',
  3121. material: 'Material',
  3122. color: 'Cor',
  3123. kFactor: 'Fator K',
  3124. temperature: 'Temperatura',
  3125. noFilaments: 'Nenhum filamento na biblioteca',
  3126. deleteConfirm: 'Tem certeza de que deseja excluir este filamento?',
  3127. importFromPrinter: 'Importar da Impressora',
  3128. exportToFile: 'Exportar para Arquivo',
  3129. },
  3130. // Spoolman
  3131. spoolman: {
  3132. title: 'Integração com Spoolman',
  3133. enabled: 'Spoolman Ativado',
  3134. url: 'URL do Spoolman',
  3135. connected: 'Conectado',
  3136. disconnected: 'Não Conectado',
  3137. testConnection: 'Testar Conexão',
  3138. sync: 'Sincronizar',
  3139. syncing: 'Sincronizando...',
  3140. lastSync: 'Última Sincronização',
  3141. linkToSpoolman: 'Vincular ao Spoolman',
  3142. openInSpoolman: 'Abrir no Spoolman',
  3143. unlinkSpool: 'Desvincular Carretel',
  3144. unlinkConfirmTitle: 'Desvincular carretel?',
  3145. unlinkConfirmMessage: 'Isso desconectará o carretel do Spoolman. Os dados do carretel no Spoolman permanecerão inalterados.',
  3146. selectSpool: 'Selecionar Carretel',
  3147. noUnlinkedSpools: 'Nenhum carretel desvinculado disponível',
  3148. linkSuccess: 'Carretel vinculado ao Spoolman com sucesso',
  3149. linkFailed: 'Falha ao vincular carretel',
  3150. unlinkSuccess: 'Carretel desvinculado do Spoolman com sucesso',
  3151. unlinkFailed: 'Falha ao desvincular carretel',
  3152. spoolId: 'Carretel ID (Spool ID)',
  3153. fillSourceLabel: '(Spoolman)',
  3154. weight: 'Peso',
  3155. remaining: 'Restante',
  3156. disableWeightSync: 'Desativar Sincronização de Peso Estimado do AMS',
  3157. disableWeightSyncDesc: 'Não atualize a capacidade restante a partir das estimativas do AMS. Use isso se preferir o rastreamento de uso do Spoolman em vez das estimativas baseadas em porcentagem do AMS. Novos carretéis ainda usarão a estimativa do AMS como seu peso inicial.',
  3158. reportPartialUsage: 'Relatar Uso Parcial para Impressões Falhadas',
  3159. reportPartialUsageDesc: 'Quando uma impressão falha ou é cancelada, relate o filamento estimado usado até aquele ponto com base no progresso das camadas.',
  3160. },
  3161. // Inventory
  3162. inventory: {
  3163. title: 'Inventário de Carretéis',
  3164. spoolmanMixedContentTitle: 'Spoolman não pode carregar em HTTPS — conteúdo misto bloqueado pelo navegador',
  3165. spoolmanMixedContentBody: 'O Bambuddy é servido via HTTPS (pelo seu reverse proxy), mas a URL do Spoolman ainda é HTTP. Os navegadores bloqueiam conteúdo misto por segurança, então a interface embutida do Spoolman não consegue carregar. O Spoolman também precisa estar acessível via HTTPS.',
  3166. spoolmanMixedContentFixReverseProxy: 'Coloque o Spoolman atrás do mesmo reverse proxy do Bambuddy (Traefik / Nginx / Caddy) com HTTPS e atualize a URL do Spoolman em Configurações com o novo endereço HTTPS.',
  3167. spoolmanMixedContentFixOpenNewTab: 'Como alternativa, abra o Spoolman em uma nova aba via HTTP — as regras de conteúdo misto só se aplicam a frames embutidos, uma aba independente funciona normalmente.',
  3168. spoolmanOpenInNewTab: 'Abrir Spoolman em nova aba',
  3169. addSpool: 'Adicionar Carretel',
  3170. editSpool: 'Editar Carretel',
  3171. material: 'Material',
  3172. selectMaterial: 'Selecionar material...',
  3173. subtype: 'Subtipo',
  3174. brand: 'Marca',
  3175. searchBrand: 'Pesquisar marca...',
  3176. useCustomBrand: 'Usar "{{brand}}"',
  3177. useCustomMaterial: 'Usar material personalizado: {{material}}',
  3178. colorName: 'Nome da Cor',
  3179. colorNamePlaceholder: 'Jade White, Fire Red...',
  3180. color: 'Cor',
  3181. hexColor: 'Cor Hexadecimal',
  3182. pickColor: 'Escolher cor personalizada',
  3183. labelWeight: 'Peso da Etiqueta',
  3184. coreWeight: 'Peso do Carretel Vazio',
  3185. searchSpoolWeight: 'Pesquisar peso do carretel...',
  3186. weightUsed: 'Usado',
  3187. currentWeight: 'Peso Restante',
  3188. measuredWeight: 'Peso Medido',
  3189. spoolName: 'Bobina',
  3190. costPerKg: 'Custo por kg',
  3191. measuredWeightError: 'O peso medido deve estar entre {{min}}g e {{max}}g.',
  3192. slicerFilament: 'Filamento do Fatiador',
  3193. slicerFilamentName: 'Nome do Predefinido do Fatiador',
  3194. slicerPreset: 'Predefinido do Fatiador',
  3195. searchPresets: 'Pesquisar predefinições de filamento...',
  3196. selectedPreset: 'Selecionado',
  3197. noPresetsFound: 'Nenhuma predefinição encontrada',
  3198. tempOverrides: 'Substituições de Temperatura',
  3199. note: 'Nota',
  3200. notePlaceholder: 'Quaisquer notas adicionais sobre este spool...',
  3201. archive: 'Arquivar',
  3202. restore: 'Restaurar',
  3203. noSpools: 'Nenhum carretel ainda. Adicione seu primeiro carretel para começar.',
  3204. noManualSpools: 'Nenhum carretel adicionado manualmente disponível. Adicione um carretel ao seu inventário primeiro.',
  3205. kProfiles: 'K-Perfis',
  3206. addKProfile: 'Adicionar K-Perfil',
  3207. assignSpool: 'Atribuir Carretel',
  3208. unassignSpool: 'Desatribuir',
  3209. assignSuccess: 'Carretel atribuído e slot AMS configurado',
  3210. assignFailed: 'Falha ao atribuir carretel',
  3211. selectSpool: 'Selecione um carretel para atribuir a este slot',
  3212. assigned: 'Atribuído',
  3213. assigning: 'Atribuindo...',
  3214. searchSpools: 'Pesquisar carretéis...',
  3215. showAllSpools: 'Mostrar todos os carretéis',
  3216. allMaterials: 'Todos os Materiais',
  3217. filterByBrand: 'Filtrar por marca...',
  3218. showArchived: 'Mostrar arquivados',
  3219. quickAdd: 'Adição rápida (Estoque)',
  3220. quantity: 'Quantidade',
  3221. stock: 'Estoque',
  3222. configured: 'Configurado',
  3223. spoolsCreated: '{{count}} carretéis criados',
  3224. spoolCreated: 'Carretel criado',
  3225. spoolUpdated: 'Carretel atualizado',
  3226. spoolDeleted: 'Carretel excluído',
  3227. spoolArchived: 'Carretel arquivado',
  3228. spoolRestored: 'Carretel restaurado',
  3229. deleteConfirm: 'Tem certeza de que deseja excluir este carretel? Esta ação não pode ser desfeita.',
  3230. archiveConfirm: 'Tem certeza de que deseja arquivar este carretel?',
  3231. advancedSettings: 'Configurações Avançadas',
  3232. // Tabs
  3233. filamentInfoTab: 'Informações do Filamento',
  3234. paProfileTab: 'Perfil PA',
  3235. filamentInfo: 'Filamento',
  3236. additional: 'Adicional',
  3237. // Cloud
  3238. loadingPresets: 'Carregando predefinições da nuvem...',
  3239. cloudConnected: 'Nuvem conectada',
  3240. cloudNotConnected: 'Nuvem não conectada (usando padrões)',
  3241. // Colors
  3242. recentColors: 'Recentes',
  3243. searchColors: 'Pesquisar cores...',
  3244. searchResults: 'Resultados da pesquisa',
  3245. allColors: 'Todas as cores',
  3246. commonColors: 'Cores comuns',
  3247. showLess: 'Mostrar menos',
  3248. showAll: 'Mostrar tudo',
  3249. noColorsFound: 'Nenhuma cor corresponde à sua pesquisa',
  3250. noResults: 'Nenhum resultado encontrado',
  3251. // PA Profiles
  3252. selectMaterialFirst: 'Por favor, selecione um material primeiro na aba Informações do Filamento.',
  3253. noPrintersConfigured: 'Nenhuma impressora configurada. Adicione impressoras para usar perfis PA.',
  3254. matchingFilter: 'Correspondente',
  3255. anyBrand: 'Qualquer marca',
  3256. anyVariant: 'Qualquer variante',
  3257. autoSelect: 'Seleção automática',
  3258. matches: 'correspondências',
  3259. match: 'correspondência',
  3260. noMatches: 'Nenhuma correspondência',
  3261. connected: 'Conectado',
  3262. offline: 'Offline',
  3263. printerOffline: 'A impressora está offline. Conecte-se para visualizar os perfis de calibração.',
  3264. noKProfilesMatch: 'Nenhum K-perfil corresponde ao filamento selecionado.',
  3265. leftNozzle: 'Bico Esquerdo',
  3266. rightNozzle: 'Bico Direito',
  3267. profilesSelected: 'perfil(is) de calibração selecionado(s)',
  3268. // Stats & enhanced table
  3269. totalInventory: 'Inventário Total',
  3270. totalConsumed: 'Total Consumido',
  3271. byMaterial: 'Por Material',
  3272. inPrinter: 'Na Impressora',
  3273. lowStock: 'Estoque Baixo',
  3274. sinceTracking: 'Desde o início do rastreamento',
  3275. loadedInAms: 'Carregado no AMS/Ext',
  3276. remaining: 'Restante',
  3277. weightCheck: 'Verificação de Peso',
  3278. lastWeighed: 'Última pesagem',
  3279. neverWeighed: 'Nunca pesado',
  3280. search: 'Pesquisar carretéis...',
  3281. showing: 'Mostrando',
  3282. to: 'até',
  3283. of: 'de',
  3284. show: 'Mostrar',
  3285. spools: 'carretéis',
  3286. spool: 'carretel',
  3287. page: 'Página',
  3288. noSpoolsMatch: 'Nenhum resultado encontrado',
  3289. noSpoolsMatchDesc: 'Tente ajustar sua pesquisa ou filtros para encontrar o que você está procurando.',
  3290. active: 'Ativo',
  3291. archived: 'Arquivado',
  3292. all: 'Todos',
  3293. used: 'Usado',
  3294. new: 'Novo',
  3295. clearFilters: 'Limpar filtros',
  3296. table: 'Tabela',
  3297. cards: 'Cartões',
  3298. net: 'Líquido',
  3299. // Grouping
  3300. groupSimilar: 'Agrupar',
  3301. groupedSpools: '{{count}} carretéis idênticos',
  3302. groupedRows: 'linhas',
  3303. // Column config
  3304. columns: 'Colunas',
  3305. configureColumns: 'Configurar Colunas',
  3306. configureColumnsDesc: 'Arraste para reordenar as colunas ou use as setas. Alterne a visibilidade com o ícone de olho.',
  3307. visible: 'Visível',
  3308. reset: 'Redefinir',
  3309. cancel: 'Cancelar',
  3310. applyChanges: 'Aplicar Alterações',
  3311. moveUp: 'Mover para cima',
  3312. moveDown: 'Mover para baixo',
  3313. hideColumn: 'Ocultar coluna',
  3314. showColumn: 'Mostrar coluna',
  3315. // Tag linking
  3316. linkToSpool: 'Vincular ao Carretel',
  3317. tagLinked: 'Tag vinculada ao carretel',
  3318. tagLinkFailed: 'Falha ao vincular tag',
  3319. tagAlreadyLinked: 'Tag já vinculada a outro carretel',
  3320. unknownTag: 'Tag RFID desconhecida detectada',
  3321. // Usage history
  3322. usageHistory: 'Histórico de Uso',
  3323. noUsageHistory: 'Nenhum uso registrado ainda',
  3324. printName: 'Nome da Impressão',
  3325. weightConsumed: 'Peso Consumido',
  3326. clearHistory: 'Limpar',
  3327. historyCleared: 'Histórico de uso limpo',
  3328. fillSourceLabel: '(Inv)',
  3329. lowStockThresholdError: 'O limite deve estar entre 0.1 e 99.9',
  3330. assignMismatchTitle: 'Incompatibilidade de material',
  3331. assignMismatchMessage: 'O material do carretel selecionado "{{spoolMaterial}}" não corresponde ao material da bandeja "{{trayMaterial}}" para {{location}}. Atribuir mesmo assim?',
  3332. assignMismatchConfirm: 'Atribuir mesmo assim',
  3333. assignPartialMismatchMessage: 'O material do carretel "{{spoolMaterial}}" é semelhante, mas não corresponde exatamente a "{{trayMaterial}}" em {{location}}. Deseja prosseguir?',
  3334. assignProfileMismatchMessage: 'O perfil do carretel "{{spoolProfile}}" não corresponde ao perfil da bandeja "{{trayProfile}}" em {{location}}. Deseja prosseguir?',
  3335. },
  3336. // Timelapse
  3337. timelapse: {
  3338. title: 'Timelapse',
  3339. create: 'Criar Timelapse',
  3340. download: 'Baixar',
  3341. delete: 'Excluir',
  3342. preview: 'Visualizar',
  3343. frameRate: 'Taxa de Quadros',
  3344. quality: 'Qualidade',
  3345. processing: 'Processando...',
  3346. noTimelapses: 'Nenhum timelapse disponível',
  3347. },
  3348. // AMS
  3349. ams: {
  3350. title: 'AMS',
  3351. slot: 'Slot',
  3352. empty: 'Vazio',
  3353. emptySlot: 'Slot vazio',
  3354. unknown: 'Desconhecido',
  3355. humidity: 'Umidade',
  3356. temperature: 'Temperatura',
  3357. filamentType: 'Tipo de Filamento',
  3358. filamentColor: 'Cor',
  3359. remaining: 'Restante',
  3360. history: 'Histórico do AMS',
  3361. noHistory: 'Nenhum histórico disponível',
  3362. configureSlot: 'Configurar Slot',
  3363. externalSpool: 'Carretel Externo',
  3364. profile: 'Perfil',
  3365. kFactor: 'Fator K',
  3366. fill: 'Preencher',
  3367. configure: 'Configurar',
  3368. used: 'usado',
  3369. remainingUnit: 'restante',
  3370. },
  3371. // Print modal
  3372. printModal: {
  3373. title: 'Iniciar Impressão',
  3374. selectPrinter: 'Selecionar Impressora',
  3375. selectPlate: 'Selecionar Placa',
  3376. filamentMapping: 'Mapeamento de Filamento',
  3377. totalCost: 'Custo total:',
  3378. slotRemainingShort: ' - {{grams}}g rest.',
  3379. printSettings: 'Configurações de Impressão',
  3380. bedLeveling: 'Nivelamento da Mesa',
  3381. flowCalibration: 'Calibração de Fluxo',
  3382. vibrationCalibration: 'Calibração de Vibração',
  3383. layerInspection: 'Inspeção da Primeira Camada',
  3384. timelapse: 'Timelapse',
  3385. startPrint: 'Iniciar Impressão',
  3386. addToQueue: 'Adicionar à Fila',
  3387. cancel: 'Cancelar',
  3388. noPrintersAvailable: 'Nenhuma impressora disponível',
  3389. printerBusy: 'Impressora ocupada',
  3390. printerOffline: 'Impressora offline',
  3391. sameTypeDifferentColor: 'Mesmo tipo, cor diferente',
  3392. filamentTypeNotLoaded: 'Tipo de filamento não carregado',
  3393. openCalendar: 'Abrir calendário',
  3394. leftNozzle: 'L',
  3395. rightNozzle: 'R',
  3396. leftNozzleTooltip: 'Bico esquerdo',
  3397. rightNozzleTooltip: 'Bico direito',
  3398. filamentOverride: 'Substituição de Filamento',
  3399. filamentOverrideHint: 'Substitua opcionalmente os filamentos para atribuição baseada em modelo. O agendador usará os filamentos selecionados em vez dos valores originais do 3MF.',
  3400. originalFilament: 'Original',
  3401. overrideWith: 'Substituir por',
  3402. resetToOriginal: 'Restaurar original',
  3403. insufficientFilamentTitle: 'Filamento insuficiente',
  3404. insufficientFilamentMessage: 'Alguns dos carretéis atribuídos têm menos filamento restante do que o necessário para esta impressão:',
  3405. insufficientFilamentLine: '{{printer}} - {{slot}}: necessário {{required}}g, restante {{remaining}}g',
  3406. printAnyway: 'Imprimir mesmo assim',
  3407. forceColorMatch: 'Forçar correspondência de cor',
  3408. staggerPrinterStarts: 'Stagger printer starts',
  3409. staggerGroupSize: 'Group size',
  3410. staggerInterval: 'Interval (min)',
  3411. staggerPreview: '{{printers}} printers → {{groups}} groups of {{size}}, starting every {{interval}} min',
  3412. staggerLastGroup: 'last group: {{count}}',
  3413. staggerTotal: 'total: {{minutes}} min',
  3414. staggerToPrinters: 'Escalonar para {{count}} impressoras',
  3415. gcodeInjection: 'Injetar G-code de auto-impressão',
  3416. },
  3417. // Backup
  3418. backup: {
  3419. title: 'Bakup e Restauração',
  3420. createBackup: 'Criar Backup',
  3421. restoreBackup: 'Restaurar Backup',
  3422. restoreDescription: 'Substituir todos os dados a partir de um arquivo de backup',
  3423. downloadBackup: 'Baixar Backup',
  3424. uploadBackup: 'Enviar Backup',
  3425. lastBackup: 'Último Backup',
  3426. autoBackup: 'Auto Backup',
  3427. backupNow: 'Fazer Backup Agora',
  3428. restoreWarning: 'Aviso: Restaurar um backup substituirá todos os dados atuais.',
  3429. includeArchives: 'Incluir Arquivos',
  3430. includeSettings: 'Incluir Configurações',
  3431. includeProfiles: 'Incluir Perfis',
  3432. backupSuccess: 'Backup criado com sucesso',
  3433. restoreSuccess: 'Backup restaurado com sucesso',
  3434. backupFailed: 'Falha ao criar backup',
  3435. restoreFailed: 'Falha ao restaurar backup',
  3436. restoreNote: 'A impressora virtual será parada durante a restauração',
  3437. // GitHub Backup
  3438. githubBackup: 'Backup GitHub',
  3439. enabled: 'Ativado',
  3440. cloudLoginRequired: 'Login no Bambu Cloud necessário. Entre em Perfis → Perfis Cloud para ativar o backup GitHub.',
  3441. cloudLoginRequiredShort: 'Login Cloud necessário',
  3442. githubDescription: 'Sincronize automaticamente seus perfis com um repositório GitHub privado para backup e histórico de versões.',
  3443. repositoryUrl: 'URL do repositório',
  3444. personalAccessToken: 'Token de acesso pessoal',
  3445. tokenSaved: '(salvo)',
  3446. enterNewToken: 'Digite um novo token para atualizar',
  3447. tokenHint: 'Token de granularidade fina com permissão de leitura/escrita de conteúdo',
  3448. branch: 'Branch',
  3449. manualOnly: 'Apenas manual',
  3450. hourly: 'A cada hora',
  3451. daily: 'Diário',
  3452. weekly: 'Semanal',
  3453. includeInBackup: 'Incluir no backup',
  3454. kProfiles: 'K-Perfis',
  3455. kProfilesDescription: 'Calibração de avanço de pressão das impressoras conectadas',
  3456. noPrintersConnected: 'Nenhuma impressora conectada',
  3457. printersConnected: '{{connected}}/{{total}} conectadas',
  3458. cloudProfiles: 'Perfis Cloud',
  3459. cloudProfilesDescription: 'Predefinições de filamento, impressora e processo do Bambu Cloud',
  3460. appSettings: 'Configurações do App',
  3461. appSettingsDescription: 'Configuração do Bambuddy (banco de dados completo)',
  3462. spoolInventory: 'Inventário de bobinas',
  3463. spoolInventoryDescription: 'Bobinas de filamento, histórico de uso e rastreamento de custos',
  3464. printArchives: 'Arquivos de impressão',
  3465. printArchivesDescription: 'Metadados do histórico de impressão (sem arquivos gcode/3MF)',
  3466. lastBackupAt: 'Último backup:',
  3467. noBackupsYet: 'Nenhum backup ainda',
  3468. next: 'Próximo:',
  3469. startingBackup: 'Iniciando backup...',
  3470. test: 'Testar',
  3471. enableBackup: 'Ativar backup',
  3472. testConnection: 'Testar conexão',
  3473. enterRepoUrl: 'Digite a URL do repositório',
  3474. enterRepoAndToken: 'Digite a URL do repositório e o token de acesso',
  3475. repoRequired: 'A URL do repositório é obrigatória',
  3476. tokenRequired: 'O token de acesso é obrigatório',
  3477. githubBackupEnabled: 'Backup GitHub ativado',
  3478. tokenUpdated: 'Token atualizado',
  3479. settingsSaved: 'Configurações salvas',
  3480. failedToSave: 'Falha ao salvar: {{message}}',
  3481. backupCompleteFiles: 'Backup concluído - {{count}} arquivos atualizados',
  3482. backupSkippedNoChanges: 'Backup ignorado - sem alterações',
  3483. backupFailed2: 'Falha no backup: {{message}}',
  3484. clearedLogs: '{{count}} logs removidos',
  3485. failedToClearLogs: 'Falha ao limpar logs: {{message}}',
  3486. // History
  3487. history: 'Histórico',
  3488. clear: 'Limpar',
  3489. date: 'Data',
  3490. status: 'Status',
  3491. commit: 'Commit',
  3492. // Local Backup
  3493. localBackup: 'Backup local',
  3494. localBackupDescription: 'Crie um backup completo dos seus dados do Bambuddy incluindo banco de dados, arquivos, uploads e todos os ficheiros.',
  3495. downloadBackupLabel: 'Baixar backup',
  3496. completeBackupZip: 'Backup completo: banco de dados + todos os arquivos (ZIP)',
  3497. download: 'Baixar',
  3498. preparingBackup: 'Preparando backup...',
  3499. creatingArchive: 'Criando arquivo de backup... Isso pode demorar para backups grandes.',
  3500. downloadingFile: 'Baixando arquivo de backup...',
  3501. backupDownloaded: 'Backup baixado com sucesso',
  3502. failedToCreateBackup: 'Falha ao criar backup: {{message}}',
  3503. restore: 'Restaurar',
  3504. restoreReplacesAll: 'A restauração substitui todos os dados.',
  3505. restoreReplacesAllDetail: 'Seu banco de dados e arquivos atuais serão completamente substituídos. É necessário reiniciar após a restauração.',
  3506. restoreConfirmTitle: 'Restaurar backup',
  3507. restoreConfirmMessage: 'Tem certeza de que deseja restaurar de "{{filename}}"? Isso substituirá completamente seu banco de dados e todos os arquivos. O aplicativo precisará ser reiniciado após a restauração.',
  3508. restoreConfirmButton: 'Restaurar backup',
  3509. uploadingFile: 'Enviando arquivo de backup...',
  3510. backupRestoredRestart: 'Backup restaurado. Por favor, reinicie o Bambuddy.',
  3511. failedToRestore: 'Falha ao restaurar backup. Verifique o formato do arquivo.',
  3512. reloadNow: 'Recarregar agora',
  3513. creatingBackup: 'Criando backup',
  3514. restoringBackup: 'Restaurando backup',
  3515. preparing: 'Preparando...',
  3516. processing: 'Processando...',
  3517. doNotClosePage: 'Por favor, não feche esta página nem navegue para outro lugar. Esta operação pode levar vários minutos para backups grandes.',
  3518. // RestoreModal
  3519. restoring: 'Restaurando...',
  3520. restoreComplete: 'Restauração concluída',
  3521. restoreFailed2: 'Falha na restauração',
  3522. importSettings: 'Importar configurações de um arquivo de backup',
  3523. pleaseWaitRestoring: 'Aguarde enquanto seus dados estão sendo restaurados',
  3524. selectBackupFile: 'Clique para selecionar um arquivo de backup (.json ou .zip)',
  3525. duplicateHandling: 'Como funciona o tratamento de duplicatas:',
  3526. matchPrinters: 'Impressoras',
  3527. matchPrintersBy: 'correspondência por número de série',
  3528. matchSmartPlugs: 'Smart Plugs',
  3529. matchSmartPlugsBy: 'correspondência por endereço IP',
  3530. matchNotificationProviders: 'Provedores de notificação',
  3531. matchNotificationProvidersBy: 'correspondência por nome',
  3532. matchFilaments: 'Filamentos',
  3533. matchFilamentsBy: 'correspondência por nome + tipo + marca',
  3534. matchArchives: 'Arquivos',
  3535. matchArchivesBy: 'correspondência por hash de conteúdo (sempre ignorado)',
  3536. matchPendingUploads: 'Uploads pendentes',
  3537. matchPendingUploadsBy: 'correspondência por nome do arquivo',
  3538. matchSettingsTemplates: 'Configurações e modelos',
  3539. matchSettingsTemplatesBy: 'sempre sobrescritos',
  3540. replaceExisting: 'Substituir dados existentes',
  3541. keepExisting: 'Manter dados existentes',
  3542. overwriteDescription: 'Sobrescrever itens que já existem com dados do backup',
  3543. keepDescription: 'Restaurar apenas itens que ainda não existem',
  3544. overwriteCaution: 'Cuidado:',
  3545. overwriteWarning: 'A sobrescrita substituirá suas configurações atuais pelos dados do backup. Códigos de acesso das impressoras nunca são sobrescritos por segurança.',
  3546. cancel: 'Cancelar',
  3547. processingBackup: 'Processando arquivo de backup...',
  3548. itemsRestored: 'Itens restaurados',
  3549. itemsSkipped: 'Itens ignorados',
  3550. restored: 'Restaurados',
  3551. skippedAlreadyExist: 'Ignorados (já existem)',
  3552. filesCategory: 'Arquivos (3MF, miniaturas, etc.)',
  3553. andMore: '...e mais {{count}}',
  3554. newApiKeysGenerated: 'Novas chaves API geradas',
  3555. keysShownOnce: 'Estas chaves são exibidas apenas uma vez. Copie-as agora!',
  3556. copy: 'Copiar',
  3557. noDataFound: 'Nenhum dado para restaurar foi encontrado no arquivo de backup.',
  3558. close: 'Fechar',
  3559. // Scheduled local backups (#884)
  3560. scheduledBackup: 'Scheduled Backups',
  3561. scheduledBackupDescription: 'Automatically create backup snapshots on a schedule. Output directory can be mounted to a NAS or external storage.',
  3562. frequency: 'Frequency',
  3563. backupTime: 'Time',
  3564. retention: 'Retention',
  3565. retentionDescription: 'Number of backups to keep',
  3566. outputPath: 'Output Path',
  3567. outputPathPlaceholder: 'Default: {{path}}',
  3568. outputPathDescription: 'Leave empty for default location',
  3569. runNow: 'Run Now',
  3570. backupFiles: 'Backup Files',
  3571. noScheduledBackups: 'No backups yet',
  3572. deleteBackup: 'Delete',
  3573. deleteBackupConfirm: 'Delete this backup file?',
  3574. backupRunning: 'Backup in progress...',
  3575. scheduledBackupComplete: 'Backup completed successfully',
  3576. scheduledBackupFailed: 'Backup failed',
  3577. nextBackup: 'Next backup',
  3578. backupSize: 'Size',
  3579. utc: 'UTC',
  3580. defaultPathLabel: 'Default:',
  3581. // Category labels
  3582. categories: {
  3583. settings: 'Configurações',
  3584. notification_providers: 'Provedores de notificação',
  3585. notification_templates: 'Modelos de notificação',
  3586. smart_plugs: 'Smart Plugs',
  3587. printers: 'Impressoras',
  3588. filaments: 'Filamentos',
  3589. maintenance_types: 'Tipos de manutenção',
  3590. archives: 'Arquivos',
  3591. projects: 'Projetos',
  3592. pending_uploads: 'Uploads pendentes',
  3593. external_links: 'Links externos',
  3594. api_keys: 'Chaves API',
  3595. },
  3596. },
  3597. // Tags
  3598. tags: {
  3599. title: 'Tags',
  3600. addTag: 'Adicionar Tag',
  3601. editTag: 'Editar Tag',
  3602. deleteTag: 'Excluir Tag',
  3603. tagName: 'Nome da Tag',
  3604. tagColor: 'Cor da Tag',
  3605. noTags: 'Nenhuma tag',
  3606. deleteConfirm: 'Tem certeza de que deseja excluir esta tag?',
  3607. manageTags: 'Gerenciar Tags',
  3608. },
  3609. // Upload modal (archives)
  3610. uploadModal: {
  3611. title: 'Upload Arquivos 3MF',
  3612. dragDrop: 'Arraste e solte arquivos .3mf aqui',
  3613. or: 'ou',
  3614. browseFiles: 'Procurar Arquivos',
  3615. extractionInfo: 'O modelo da impressora será extraído automaticamente dos metadados do arquivo 3MF.',
  3616. uploaded: 'enviado',
  3617. failed: 'falhou',
  3618. uploading: 'Enviando...',
  3619. upload: 'Enviar',
  3620. uploadFailed: 'Falha no envio',
  3621. },
  3622. // Edit archive modal
  3623. // Edit Archive Modal
  3624. editArchive: {
  3625. title: 'Editar Arquivo',
  3626. name: 'Nome',
  3627. namePlaceholder: 'Nome da impressão',
  3628. printer: 'Impressora',
  3629. noPrinter: 'Nenhuma impressora',
  3630. project: 'Projeto',
  3631. noProject: 'Nenhum projeto',
  3632. itemsPrinted: 'Itens Impressos',
  3633. itemsPrintedHelp: 'Número de itens produzidos neste trabalho de impressão',
  3634. notes: 'Notas',
  3635. notesPlaceholder: 'Adicione notas sobre esta impressão...',
  3636. externalLink: 'Link Externo',
  3637. externalLinkPlaceholder: 'https://printables.com/model/...',
  3638. externalLinkHelp: 'Link para Printables, Thingiverse ou outra fonte',
  3639. tags: 'Tags',
  3640. tagsPlaceholder: 'Adicionar tags...',
  3641. addMoreTags: 'Adicionar mais tags...',
  3642. matchingTags: 'Correspondendo "{{query}}"',
  3643. existingTags: 'Tags existentes',
  3644. clickToAdd: '(clique para adicionar)',
  3645. status: 'Status',
  3646. failureReason: 'Motivo da Falha',
  3647. selectReason: 'Selecione o motivo...',
  3648. photos: 'Fotos do Resultado da Impressão',
  3649. photosHelp: 'Clique em + para adicionar fotos do seu resultado impresso',
  3650. printResult: 'Resultado da Impressão',
  3651. saving: 'Salvando...',
  3652. // Failure reasons
  3653. failureReasons: {
  3654. adhesionFailure: 'Falha de adesão',
  3655. spaghettiDetached: 'Spaghetti / Destacado',
  3656. layerShift: 'Deslocamento de camada',
  3657. cloggedNozzle: 'Bico entupido',
  3658. filamentRunout: 'Fim do filamento',
  3659. warping: 'Warping',
  3660. stringing: 'Stringing',
  3661. underExtrusion: 'Under-extrusion',
  3662. powerFailure: 'Falha de energia',
  3663. userCancelled: 'Cancelado pelo usuário',
  3664. other: 'Outro',
  3665. },
  3666. // Archive statuses
  3667. statuses: {
  3668. completed: 'Concluído',
  3669. failed: 'Falhou',
  3670. aborted: 'Cancelado',
  3671. printing: 'Imprimindo',
  3672. },
  3673. },
  3674. // K-Profiles
  3675. kProfiles: {
  3676. title: 'K-Profiles',
  3677. noPrintersConfigured: 'Nenhuma impressora configurada',
  3678. addPrinterInSettings: 'Adicione uma impressora nas Configurações para gerenciar K-profiles',
  3679. noActivePrinters: 'Nenhuma impressora ativa',
  3680. enablePrinterConnection: 'Ative a conexão da impressora para visualizar seus K-profiles',
  3681. loadingProfiles: 'Carregando K-Profiles...',
  3682. printerOffline: 'Impressora Offline',
  3683. printerOfflineDesc: 'A impressora selecionada não está conectada. Ligue-a para visualizar os K-profiles.',
  3684. noMatchingProfiles: 'Nenhum Perfil Correspondente',
  3685. noMatchingProfilesDesc: 'Nenhum perfil corresponde aos seus critérios de pesquisa',
  3686. noKProfiles: 'Nenhum K-Profile',
  3687. noKProfilesDesc: 'Nenhum perfil de avanço de pressão encontrado para bico de {{diameter}}mm',
  3688. createFirstProfile: 'Criar Primeiro Perfil',
  3689. // Controls
  3690. printer: 'Impressora',
  3691. nozzle: 'Bico',
  3692. refresh: 'Atualizar',
  3693. addProfile: 'Adicionar Perfil',
  3694. export: 'Exportar',
  3695. import: 'Importar',
  3696. select: 'Selecionar',
  3697. selectAll: 'Selecionar Todos',
  3698. delete: 'Excluir',
  3699. // Filters
  3700. searchPlaceholder: 'Pesquisar por nome ou filamento...',
  3701. allExtruders: 'Todos os Extrusores',
  3702. leftOnly: 'Apenas Esquerdo',
  3703. rightOnly: 'Apenas Direito',
  3704. allFlow: 'Todo Fluxo',
  3705. hfOnly: 'Apenas HF',
  3706. sOnly: 'Apenas S',
  3707. sortName: 'Ordenar: Nome',
  3708. sortKValue: 'Ordenar: Valor K',
  3709. sortFilament: 'Ordenar: Filamento',
  3710. // Dual extruder labels
  3711. leftExtruder: 'Extrusor Esquerdo',
  3712. rightExtruder: 'Extrusor Direito',
  3713. // Modal
  3714. modal: {
  3715. addTitle: 'Adicionar K-Profile',
  3716. editTitle: 'Editar K-Profile',
  3717. profileName: 'Nome do Perfil',
  3718. profileNamePlaceholder: 'Meu Perfil PLA',
  3719. kValue: 'Valor K',
  3720. kValuePlaceholder: '0.020',
  3721. kValueHelp: 'Faixa típica: 0.01 - 0.06 para PLA, 0.02 - 0.10 para PETG',
  3722. filament: 'Filamento',
  3723. selectFilament: 'Selecionar filamento...',
  3724. noFilamentsHelp: 'Nenhum filamento encontrado. Crie um K-profile no Bambu Studio primeiro.',
  3725. flowType: 'Tipo de Fluxo',
  3726. highFlow: 'Alto Fluxo',
  3727. standard: 'Padrão',
  3728. nozzleSize: 'Tamanho do Bico',
  3729. extruder: 'Extrusor',
  3730. extruders: 'Extrusores',
  3731. left: 'Esquerdo',
  3732. right: 'Direito',
  3733. notes: 'Notas (armazenadas localmente)',
  3734. notesPlaceholder: 'Adicione notas sobre este perfil...',
  3735. notesHelp: 'As notas são salvas no Bambuddy, não na impressora',
  3736. syncing: 'Sincronizando com a impressora...',
  3737. savingExtruder: 'Salvando no extrusor {{current}}/{{total}}...',
  3738. pleaseWait: 'Por favor, aguarde',
  3739. },
  3740. // Delete confirmation
  3741. deleteConfirm: {
  3742. title: 'Excluir Perfil',
  3743. cannotUndo: 'Isso não pode ser desfeito',
  3744. message: 'Tem certeza de que deseja excluir "{{name}}" da impressora?',
  3745. },
  3746. // Bulk delete
  3747. bulkDelete: {
  3748. title: 'Excluir Perfis',
  3749. cannotUndo: 'Isso não pode ser desfeito',
  3750. message: 'Tem certeza de que deseja excluir {{count}} perfis selecionados da impressora?',
  3751. },
  3752. // Toast
  3753. toast: {
  3754. profileSaved: 'K-profile salvo',
  3755. profilesSaved: 'K-profile salvo em {{count}} extrusores',
  3756. selectAtLeastOneExtruder: 'Por favor, selecione pelo menos um extrusor',
  3757. profileDeleted: 'K-profile excluído',
  3758. profilesDeleted: '{{count}} perfis excluídos',
  3759. exportedProfiles: '{{count}} perfis exportados',
  3760. importedProfiles: '{{count}} de {{total}} perfis importados',
  3761. noProfilesToExport: 'Nenhum perfil para exportar',
  3762. invalidFileFormat: 'Formato de arquivo inválido',
  3763. failedToParseImport: 'Falha ao analisar o arquivo de importação',
  3764. failedToSaveBatch: 'Falha ao salvar K-profiles',
  3765. noteSaved: 'Nota salva',
  3766. failedToSaveNote: 'Falha ao salvar nota',
  3767. },
  3768. // Permissions
  3769. permission: {
  3770. noRead: 'Você não tem permissão para atualizar perfis',
  3771. noCreate: 'Você não tem permissão para adicionar perfis',
  3772. noUpdate: 'Você não tem permissão para atualizar K-profiles',
  3773. noDelete: 'Você não tem permissão para excluir K-profiles',
  3774. noExport: 'Você não tem permissão para exportar perfis',
  3775. noImport: 'Você não tem permissão para importar perfis',
  3776. },
  3777. },
  3778. // Virtual Printer
  3779. virtualPrinter: {
  3780. title: 'Impressora Virtual',
  3781. running: 'Em execução',
  3782. stopped: 'Parada',
  3783. description: {
  3784. default: 'Ative uma impressora virtual que aparece no Bambu Studio e no OrcaSlicer. Os arquivos enviados para esta impressora serão arquivados diretamente sem impressão.',
  3785. proxy: 'Ative um proxy que retransmite o tráfego do slicer para uma impressora real, permitindo impressão remota em qualquer rede.',
  3786. },
  3787. enable: {
  3788. title: 'Ativar Impressora Virtual',
  3789. visibleInSlicer: 'Visível como "Bambuddy" na descoberta do slicer',
  3790. proxyingTo: 'Proxy para {{name}}',
  3791. notActive: 'Não ativo',
  3792. },
  3793. model: {
  3794. title: 'Modelo da Impressora',
  3795. description: 'Selecione qual modelo de impressora emular.',
  3796. restartWarning: 'Alterar o modelo reiniciará a impressora virtual',
  3797. },
  3798. accessCode: {
  3799. title: 'Código de acesso',
  3800. isSet: 'O código de acesso está definido',
  3801. notSet: 'Nenhum código de acesso definido — necessário para ativar.',
  3802. placeholder: 'Digite um código de 8 caracteres',
  3803. placeholderChange: 'Digite um novo código para alterar',
  3804. hint: 'Deve ter exatamente 8 caracteres. Usado pelos slicers para autenticação.',
  3805. charCount: '({{count}}/8)',
  3806. },
  3807. targetPrinter: {
  3808. title: 'Impressora Alvo',
  3809. configured: 'Proxy alvo configurado',
  3810. notConfigured: 'Nenhuma impressora alvo selecionada - necessário para o modo proxy',
  3811. placeholder: 'Selecione uma impressora...',
  3812. hint: 'Selecione a impressora para a qual o tráfego do slicer será enviado. A impressora deve estar no modo LAN.',
  3813. noPrinters: 'Nenhuma impressora configurada. Adicione uma impressora primeiro para usar o modo proxy.',
  3814. },
  3815. remoteInterface: {
  3816. title: 'Substituição da Interface de Rede',
  3817. configured: 'Substituição da interface ativa',
  3818. optional: 'Opcional - use se o IP detectado automaticamente estiver errado (por exemplo, várias NICs, Docker, VPN)',
  3819. placeholder: 'Detecção automática (padrão)...',
  3820. hint: 'Substitua o endereço IP anunciado via SSDP e usado no certificado TLS. Útil quando o Bambuddy possui várias interfaces de rede.',
  3821. },
  3822. mode: {
  3823. title: 'Modo',
  3824. archive: 'Arquivar',
  3825. archiveDesc: 'Arquivar arquivos imediatamente',
  3826. review: 'Revisar',
  3827. reviewDesc: 'Revisar antes de arquivar',
  3828. queue: 'Fila',
  3829. queueDesc: 'Arquivar e adicionar à fila',
  3830. proxy: 'Proxy',
  3831. proxyDesc: 'Retransmitir para impressora real',
  3832. },
  3833. autoDispatch: {
  3834. title: 'Envio automático',
  3835. description: 'Iniciar impressões automaticamente quando adicionadas à fila. Quando desativado, as impressões aguardam envio manual.',
  3836. },
  3837. tailscaleDisabled: {
  3838. title: 'Integração Tailscale',
  3839. description: 'Quando ativado, usa Tailscale para certificados TLS confiáveis. Desative para usar apenas certificado autoassinado.',
  3840. },
  3841. setupRequired: {
  3842. title: 'Configuração Necessária',
  3843. description: 'O recurso de impressora virtual requer configuração adicional do sistema antes de funcionar. Isso inclui encaminhamento de portas, regras de firewall e configurações específicas da plataforma.',
  3844. readGuide: 'Leia o guia de configuração antes de ativar',
  3845. },
  3846. howItWorks: {
  3847. title: 'Como funciona',
  3848. step1: 'Complete o guia de configuração para sua plataforma',
  3849. step2: 'Ative a impressora virtual e defina um código de acesso',
  3850. step3: 'No Bambu Studio ou OrcaSlicer, vá para "Adicionar Impressora"',
  3851. },
  3852. status: {
  3853. title: 'Detalhes do Status',
  3854. printerName: 'Nome da Impressora',
  3855. model: 'Modelo',
  3856. serialNumber: 'Número de Série',
  3857. mode: 'Modo',
  3858. pendingFiles: 'Arquivos Pendentes',
  3859. targetPrinter: 'Impressora Alvo',
  3860. ftpPort: 'Porta FTP',
  3861. mqttPort: 'Porta MQTT',
  3862. ftpConnections: 'Conexões FTP',
  3863. mqttConnections: 'Conexões MQTT',
  3864. },
  3865. toast: {
  3866. updated: 'Configurações da impressora virtual atualizadas',
  3867. failedToUpdate: 'Falha ao atualizar as configurações',
  3868. tailscaleNotAvailable: 'Tailscale não está instalado neste host. Instale o Tailscale primeiro e tente novamente.',
  3869. copyFailed: 'Falha ao copiar — selecione o texto manualmente',
  3870. accessCodeRequired: 'Defina um código de acesso primeiro',
  3871. targetPrinterRequired: 'Selecione uma impressora alvo primeiro',
  3872. bindIpRequired: 'Defina um IP de ligação primeiro',
  3873. accessCodeEmpty: 'O código de acesso não pode estar vazio',
  3874. accessCodeLength: 'O código de acesso deve ter exatamente 8 caracteres',
  3875. created: 'Impressora virtual criada',
  3876. failedToCreate: 'Falha ao criar impressora virtual',
  3877. deleted: 'Impressora virtual excluída',
  3878. failedToDelete: 'Falha ao excluir impressora virtual',
  3879. },
  3880. list: {
  3881. title: 'Impressoras Virtuais',
  3882. add: 'Adicionar',
  3883. addFirst: 'Adicionar Impressora Virtual',
  3884. empty: 'Nenhuma impressora virtual configurada. Adicione uma para começar.',
  3885. },
  3886. bindIp: {
  3887. title: 'Interface de Rede',
  3888. placeholder: 'Selecionar interface...',
  3889. hint: 'Interface de rede para esta impressora virtual. Deve ser única por impressora.',
  3890. },
  3891. proxy: {
  3892. accessCodeHint: 'No modo proxy, use o código de acesso da impressora alvo no slicer. A conexão é encaminhada de forma transparente para a impressora real.',
  3893. },
  3894. addDialog: {
  3895. title: 'Adicionar Impressora Virtual',
  3896. name: 'Nome',
  3897. hint: 'Você pode configurar o código de acesso, impressora alvo e outras configurações após a criação.',
  3898. create: 'Criar',
  3899. },
  3900. deleteConfirm: {
  3901. title: 'Excluir Impressora Virtual',
  3902. message: 'Tem certeza que deseja excluir "{{name}}"? Isso irá parar todos os serviços desta impressora.',
  3903. },
  3904. },
  3905. // Model Viewer
  3906. modelViewer: {
  3907. openInSlicer: 'Abrir no Slicer',
  3908. tabs: {
  3909. model: 'Modelo 3D',
  3910. gcode: 'Pré-visualização G-code',
  3911. },
  3912. notAvailable: 'Não disponível',
  3913. notSliced: 'Não fatiado',
  3914. plates: 'Placas',
  3915. allPlates: 'Todas as Placas',
  3916. plateNumber: 'Placa {{number}}',
  3917. plateCount: '{{count}} placa',
  3918. plateCount_other: '{{count}} placas',
  3919. objectCount: '{{count}} objeto',
  3920. objectCount_other: '{{count}} objetos',
  3921. filamentCount: '{{count}} filamento',
  3922. filamentCount_other: '{{count}} filamentos',
  3923. eta: 'ETA {{minutes}} min',
  3924. noPreview: 'Pré-visualização não disponível para este arquivo',
  3925. pagination: {
  3926. pageOf: 'Página {{current}} de {{total}}',
  3927. prev: 'Anterior',
  3928. next: 'Próximo',
  3929. },
  3930. errors: {
  3931. failedToLoad: 'Falha ao carregar o arquivo',
  3932. noMeshes: 'Nenhuma malha encontrada no arquivo 3MF',
  3933. unsupportedFormat: 'Formato de arquivo não suportado',
  3934. },
  3935. },
  3936. // Maintenance type descriptions (built-in)
  3937. maintenanceDescriptions: {
  3938. lubricateCarbonRods: 'Aplique lubrificante nos eixos de carbono para um movimento suave',
  3939. lubricateRails: 'Aplique lubrificante nos trilhos lineares para um movimento suave',
  3940. cleanNozzle: 'Limpe o hotend e o bico para evitar entupimentos',
  3941. checkBelts: 'Verifique a tensão das correias para impressões precisas',
  3942. cleanBuildPlate: 'Limpe a placa de construção para melhor adesão',
  3943. checkExtruder: 'Verifique as engrenagens do extrusor quanto ao desgaste',
  3944. checkCooling: 'Verifique se os ventiladores de resfriamento estão funcionando corretamente',
  3945. generalInspection: 'Inspeção geral da impressora',
  3946. cleanCarbonRods: 'Limpe os eixos de carbono para reduzir o atrito',
  3947. lubricateSteelRods: 'Aplique lubrificante nas barras de aço para um movimento suave',
  3948. cleanSteelRods: 'Limpe as barras de aço para reduzir o atrito',
  3949. cleanLinearRails: 'Limpe os trilhos lineares para remover poeira e detritos',
  3950. checkPtfeTube: 'Verifique o tubo PTFE quanto ao desgaste ou danos',
  3951. replaceHepaFilter: 'Substitua o filtro HEPA para qualidade do ar',
  3952. replaceCarbonFilter: 'Substitua o filtro de carbono ativado',
  3953. lubricateLeftNozzleRail: 'Lubrifique o trilho do bico esquerdo (série H2)',
  3954. },
  3955. // Smart Plugs
  3956. smartPlugs: {
  3957. offline: 'Offline',
  3958. admin: 'Admin',
  3959. openPlugAdminPage: 'Abrir o painel de administração da tomada inteligente',
  3960. deleteSmartPlug: 'Excluir Tomada Inteligente',
  3961. turnOnSmartPlug: 'Ligar Tomada Inteligente',
  3962. turnOffSmartPlug: 'Desligar Tomada Inteligente',
  3963. turnOn: 'Ligar',
  3964. turnOff: 'Desligar',
  3965. addSmartPlug: {
  3966. scanningNetwork: 'Procurando na rede...',
  3967. chooseEntity: 'Escolha uma entidade...',
  3968. connectionFailed: 'Falha na conexão',
  3969. searchEntities: 'Pesquisar entidades...',
  3970. searchPowerSensors: 'Pesquisar sensores de energia...',
  3971. searchEnergySensors: 'Pesquisar sensores de energia...',
  3972. placeholders: {
  3973. plugName: 'Tomada da Sala',
  3974. mqttStateOnValue: 'ON, true, 1',
  3975. mqttSameAsPower: 'Mesmo que o tópico de energia, ou diferente',
  3976. },
  3977. },
  3978. // SmartPlugCard
  3979. linkedTo: 'Vinculado a:',
  3980. monitorOnly: 'Apenas monitoramento',
  3981. alerts: 'Alertas',
  3982. scheduleOn: 'Ligar {{time}}',
  3983. scheduleOff: 'Desligar {{time}}',
  3984. on: 'Ligado',
  3985. off: 'Desligado',
  3986. power: 'Potência',
  3987. kwhToday: 'kWh Hoje',
  3988. settings: 'Configurações',
  3989. automationSettings: 'Configurações de automação',
  3990. showInSwitchbar: 'Mostrar na barra de interruptores',
  3991. quickAccessSidebar: 'Acesso rápido pela barra lateral',
  3992. enabled: 'Ativado',
  3993. enableAutomation: 'Ativar automação para este plugue',
  3994. autoOn: 'Auto Ligar',
  3995. autoOnDescription: 'Ligar quando a impressão iniciar',
  3996. autoOff: 'Auto Desligar',
  3997. autoOffDescription: 'Desligar quando a impressão terminar (única vez)',
  3998. autoOffPersistent: 'Manter ativado',
  3999. autoOffPersistentDescription: 'Permanecer ativado entre impressões em vez de única vez',
  4000. turnOffDelayMode: 'Modo de atraso para desligar',
  4001. time: 'Tempo',
  4002. temp: 'Temp',
  4003. delayMinutes: 'Atraso (minutos)',
  4004. tempThreshold: 'Limite de temperatura (°C)',
  4005. tempThresholdDescription: 'Desliga quando o bico esfria abaixo desta temperatura',
  4006. edit: 'Editar',
  4007. deleteConfirm: 'Tem certeza que deseja excluir "{{name}}"? Esta ação não pode ser desfeita.',
  4008. turnOnConfirm: 'Tem certeza que deseja ligar "{{name}}"?',
  4009. turnOffConfirm: 'Tem certeza que deseja desligar "{{name}}"? Isso cortará a energia do dispositivo conectado.',
  4010. failedToTurn: 'Falha ao {{action}} "{{name}}"',
  4011. unknown: 'Desconhecido',
  4012. // AddSmartPlugModal
  4013. addTitle: 'Adicionar plugue inteligente',
  4014. editTitle: 'Editar plugue inteligente',
  4015. stopScanning: 'Parar varredura',
  4016. discoverTasmota: 'Descobrir dispositivos Tasmota',
  4017. foundDevices: '{{count}} dispositivo(s) encontrado(s) - clique para selecionar:',
  4018. noDevicesFound: 'Nenhum dispositivo Tasmota encontrado na sua rede',
  4019. haNotConfigured: 'Home Assistant não está configurado. Configure em',
  4020. haSettingsPath: 'Configurações → Rede → Home Assistant',
  4021. selectEntity: 'Selecionar entidade *',
  4022. ipAddress: 'Endereço IP *',
  4023. nameLabel: 'Nome *',
  4024. username: 'Usuário',
  4025. password: 'Senha',
  4026. authHint: 'Deixe vazio se seu dispositivo Tasmota não requer autenticação',
  4027. linkToPrinter: 'Vincular à impressora',
  4028. noPrinter: 'Sem impressora (apenas controle manual)',
  4029. linkingDescription: 'A vinculação permite ligar/desligar automaticamente ao iniciar/terminar impressão',
  4030. powerAlerts: 'Alertas de potência',
  4031. alertAbove: 'Alertar se acima (W)',
  4032. alertBelow: 'Alertar se abaixo (W)',
  4033. alertDescription: 'Receba notificações quando o consumo de energia ultrapassar estes limites. Deixe vazio para desativar essa direção.',
  4034. dailySchedule: 'Programação diária',
  4035. turnOnAt: 'Ligar às',
  4036. turnOffAt: 'Desligar às',
  4037. scheduleDescription: 'Ligar/desligar automaticamente o plugue nestes horários diariamente. Deixe vazio para pular essa ação.',
  4038. showOnPrinterCard: 'Mostrar no cartão da impressora',
  4039. displayOnPrinterCard: 'Exibir botão no cartão da impressora',
  4040. connectedResult: 'Conectado!',
  4041. deviceLabel: 'Dispositivo: {{name}} - ',
  4042. stateLabel: 'Estado: {{state}}',
  4043. test: 'Testar',
  4044. delete: 'Excluir',
  4045. save: 'Salvar',
  4046. add: 'Adicionar',
  4047. cancel: 'Cancelar',
  4048. failedToStartScan: 'Falha ao iniciar varredura',
  4049. nameRequired: 'Nome é obrigatório',
  4050. entityRequired: 'Entidade é obrigatória para plugues Home Assistant',
  4051. mqttTopicRequired: 'Pelo menos um tópico MQTT deve ser configurado para potência, energia ou monitoramento de estado',
  4052. loadingEntities: 'Carregando entidades...',
  4053. loading: 'Carregando...',
  4054. failedToLoadEntities: 'Falha ao carregar entidades: {{error}}',
  4055. noEntitiesMatching: 'Nenhuma entidade encontrada correspondente a "{{search}}"',
  4056. noEntitiesAvailable: 'Nenhuma entidade disponível',
  4057. searchingEntities: 'Buscando todas as entidades ({{count}} encontradas)',
  4058. showingEntities: 'Mostrando switch, light, input_boolean ({{count}} disponíveis)',
  4059. energyMonitoringOptional: 'Monitoramento de energia (Opcional)',
  4060. energyMonitoringHint: 'Pesquise e selecione sensores que fornecem dados de potência/energia.',
  4061. powerSensorW: 'Sensor de potência (W)',
  4062. energyTodayKwh: 'Energia hoje (kWh)',
  4063. totalEnergyKwh: 'Energia total (kWh)',
  4064. noMatchingSensors: 'Nenhum sensor correspondente',
  4065. none: 'Nenhum',
  4066. mqttNotConfigured: 'Broker MQTT não configurado. Defina o endereço do broker em',
  4067. mqttSettingsPath: 'Configurações → Rede → Publicação MQTT',
  4068. mqttNotConfiguredSuffix: '(você não precisa ativar a publicação, apenas preencha os detalhes do broker).',
  4069. mqttMonitorOnlyDescription: 'Plugues MQTT recebem dados de potência/energia via assinatura MQTT. O controle liga/desliga não está disponível - use seu broker MQTT ou sistema de automação residencial.',
  4070. powerMonitoring: 'Monitoramento de potência',
  4071. energyMonitoring: 'Monitoramento de energia',
  4072. stateMonitoring: 'Monitoramento de estado',
  4073. optional: 'opcional',
  4074. topic: 'Tópico',
  4075. jsonPath: 'Caminho JSON',
  4076. multiplier: 'Multiplicador',
  4077. onValue: 'Valor ON',
  4078. mqttPowerHint: 'O caminho JSON extrai o valor do payload JSON (ex: "power_l1"). Deixe vazio se o tópico publica valores numéricos brutos.\nUse multiplicador 0.001 para mW→W, 1000 para kW→W.',
  4079. mqttEnergyHint: 'O caminho JSON extrai o valor do payload JSON. Deixe vazio para valores brutos.\nUse multiplicador 0.001 para Wh→kWh, 1000 para MWh→kWh.',
  4080. mqttStateHint: 'O caminho JSON extrai o valor do payload JSON. Deixe vazio para valores brutos.\nValor ON: a string exata que significa "ON". Deixe vazio para detecção automática (ON, true, 1).',
  4081. // REST smart plug
  4082. restControl: 'Control',
  4083. restOnUrl: 'Turn ON URL',
  4084. restOffUrl: 'Turn OFF URL',
  4085. restOnBody: 'ON Request Body',
  4086. restOffBody: 'OFF Request Body',
  4087. restMethod: 'HTTP Method',
  4088. restHeaders: 'Custom Headers (JSON)',
  4089. restStatusUrl: 'Status URL',
  4090. restStatusPath: 'State JSON Path',
  4091. restStatusOnValue: 'ON Value',
  4092. restPowerUrl: 'URL de potência',
  4093. restPowerPath: 'Power JSON Path',
  4094. restPowerMultiplier: 'Multiplicador de potência',
  4095. restEnergyUrl: 'URL de energia',
  4096. restEnergyPath: 'Energy JSON Path',
  4097. restEnergyMultiplier: 'Multiplicador de energia',
  4098. restUrlRequired: 'At least one URL (ON or OFF) is required for REST plugs',
  4099. restHeadersHint: 'e.g. {"Authorization": "Bearer your-token"}',
  4100. restBodyHint: 'e.g. ON, {"state": "on"}',
  4101. restStatusHint: 'URL to poll for current state',
  4102. restPathHint: 'e.g. state or data.power.status',
  4103. restPowerUrlHint: 'URL separada para dados de potência (usa a URL de status se vazio)',
  4104. restEnergyUrlHint: 'URL separada para dados de energia (usa a URL de status se vazio)',
  4105. restEnergyHint: 'Cada valor pode usar sua própria URL ou recorrer à URL de status. Use multiplicadores para conversão de unidades (ex: 0.001 para converter Wh em kWh).',
  4106. testConnection: 'Test Connection',
  4107. connectionSuccess: 'Connection successful',
  4108. noSwitchesInSwitchbar: 'Nenhum interruptor na barra',
  4109. enableSwitchbarHint: 'Ative "Mostrar na barra de interruptores" em Configurações > Smart Plugs',
  4110. },
  4111. // Notifications
  4112. notifications: {
  4113. // Provider types
  4114. providerTypes: {
  4115. callmebot: 'CallMeBot/WhatsApp',
  4116. ntfy: 'ntfy',
  4117. pushover: 'Pushover',
  4118. telegram: 'Telegram',
  4119. email: 'E-mail',
  4120. discord: 'Discord',
  4121. webhook: 'Webhook',
  4122. homeassistant: 'Home Assistant',
  4123. },
  4124. // Provider descriptions
  4125. providerDescriptions: {
  4126. email: 'Notificações por e-mail SMTP',
  4127. telegram: 'Notificações via bot do Telegram',
  4128. discord: 'Enviar para canal do Discord via webhook',
  4129. ntfy: 'Notificações push gratuitas e auto-hospedáveis',
  4130. pushover: 'Notificações push simples e confiáveis',
  4131. callmebot: 'Notificações gratuitas via WhatsApp pelo CallMeBot',
  4132. webhook: 'POST HTTP genérico para qualquer URL',
  4133. homeassistant: 'Notificações persistentes no painel do Home Assistant',
  4134. },
  4135. // NotificationProviderCard
  4136. lastSuccess: 'Último: {{date}}',
  4137. error: 'Erro',
  4138. printer: 'Impressora:',
  4139. allPrinters: 'Todas as impressoras',
  4140. sendTestNotification: 'Enviar Notificação de Teste',
  4141. eventSettings: 'Configurações de Eventos',
  4142. enabled: 'Ativado',
  4143. sendFromProvider: 'Enviar notificações deste provedor',
  4144. // Event categories
  4145. printEvents: 'Eventos de Impressão',
  4146. printerStatus: 'Status da Impressora',
  4147. amsAlarms: 'Alarmes do AMS',
  4148. amsHtAlarms: 'Alarmes do AMS-HT',
  4149. printQueue: 'Fila de Impressão',
  4150. // Event tags (badges)
  4151. start: 'Início',
  4152. plateCheck: 'Verificação da Mesa',
  4153. complete: 'Concluído',
  4154. failed: 'Falhou',
  4155. stopped: 'Parado',
  4156. progress: 'Progresso',
  4157. offline: 'Offline',
  4158. lowFilament: 'Filamento Baixo',
  4159. maintenance: 'Manutenção',
  4160. amsHumidity: 'Umidade do AMS',
  4161. amsTemp: 'Temp. do AMS',
  4162. amsHtHumidity: 'Umidade do AMS-HT',
  4163. amsHtTemp: 'Temp. do AMS-HT',
  4164. bedCooled: 'Mesa Resfriada',
  4165. firstLayer: 'Primeira camada',
  4166. quiet: 'Silencioso',
  4167. digest: 'Resumo {{time}}',
  4168. // Event labels (expanded settings)
  4169. printStarted: 'Impressão Iniciada',
  4170. plateNotEmpty: 'Mesa Não Vazia',
  4171. plateNotEmptyDescription: 'Objetos detectados antes da impressão',
  4172. printCompleted: 'Impressão Concluída',
  4173. bedCooledLabel: 'Mesa Resfriada',
  4174. bedCooledDescription: 'Mesa resfriou abaixo do limite após a impressão',
  4175. firstLayerCompleteLabel: 'Primeira camada concluída',
  4176. firstLayerCompleteDescription: 'Notificar com foto quando a primeira camada terminar',
  4177. missingSpoolAssignmentLabel: 'Atribuição de bobina ausente',
  4178. missingSpoolAssignmentDescription: 'Notificar quando a impressão iniciar e bandejas necessárias não tiverem bobina atribuída',
  4179. printFailed: 'Impressão Falhou',
  4180. printStopped: 'Impressão Parada',
  4181. progressMilestones: 'Marcos de Progresso',
  4182. progressMilestonesDescription: 'Notificar em 25%, 50%, 75%',
  4183. printerOffline: 'Impressora Offline',
  4184. printerError: 'Erro da Impressora',
  4185. lowFilamentLabel: 'Filamento Baixo',
  4186. maintenanceDue: 'Manutenção Necessária',
  4187. maintenanceDueDescription: 'Notificar quando manutenção for necessária',
  4188. amsHumidityHigh: 'Umidade Alta do AMS',
  4189. amsHumidityHighDescription: 'Umidade do AMS regular excede o limite',
  4190. amsTemperatureHigh: 'Temperatura Alta do AMS',
  4191. amsTemperatureHighDescription: 'Temperatura do AMS regular excede o limite',
  4192. amsHtHumidityHigh: 'Umidade Alta do AMS-HT',
  4193. amsHtHumidityHighDescription: 'Umidade do AMS-HT excede o limite',
  4194. amsHtTemperatureHigh: 'Temperatura Alta do AMS-HT',
  4195. amsHtTemperatureHighDescription: 'Temperatura do AMS-HT excede o limite',
  4196. // Queue events
  4197. jobAdded: 'Trabalho Adicionado',
  4198. jobAddedDescription: 'Trabalho adicionado à fila',
  4199. jobAssigned: 'Trabalho Atribuído',
  4200. jobAssignedDescription: 'Trabalho baseado em modelo atribuído à impressora',
  4201. jobStarted: 'Trabalho Iniciado',
  4202. jobStartedDescription: 'Trabalho da fila começou a imprimir',
  4203. jobWaiting: 'Trabalho Aguardando',
  4204. jobWaitingDescription: 'Trabalho aguardando filamento ou impressora',
  4205. jobSkipped: 'Trabalho Pulado',
  4206. jobSkippedDescription: 'Trabalho pulado (anterior falhou)',
  4207. jobFailed: 'Trabalho Falhou',
  4208. jobFailedDescription: 'Trabalho falhou ao iniciar',
  4209. queueComplete: 'Fila Concluída',
  4210. queueCompleteDescription: 'Todos os trabalhos da fila finalizados',
  4211. // Quiet hours
  4212. quietHours: 'Horário de Silêncio',
  4213. noNotificationsDuring: 'Sem notificações durante essas horas',
  4214. editProviderToChangeQuietHours: 'Edite o provedor para alterar o horário de silêncio',
  4215. // Daily digest
  4216. dailyDigest: 'Resumo Diário',
  4217. batchNotifications: 'Agrupar notificações em um único resumo diário',
  4218. sendAt: 'Enviar às {{time}}',
  4219. editProviderToChangeDigestTime: 'Edite o provedor para alterar o horário do resumo',
  4220. // Actions
  4221. edit: 'Editar',
  4222. deleteProvider: 'Excluir Provedor de Notificação',
  4223. deleteConfirm: 'Tem certeza que deseja excluir "{{name}}"? Isso não pode ser desfeito.',
  4224. delete: 'Excluir',
  4225. // AddNotificationModal
  4226. addTitle: 'Adicionar Provedor de Notificação',
  4227. editTitle: 'Editar Provedor de Notificação',
  4228. nameLabel: 'Nome *',
  4229. namePlaceholder: 'Minhas Notificações',
  4230. providerTypeLabel: 'Tipo de Provedor *',
  4231. configuration: 'Configuração',
  4232. testConfiguration: 'Testar Configuração',
  4233. printerFilter: 'Filtro de Impressora',
  4234. onlyFromPrinter: 'Enviar notificações apenas para eventos desta impressora',
  4235. quietHoursDnd: 'Horário de Silêncio (Não Perturbe)',
  4236. quietStart: 'Início',
  4237. quietEnd: 'Fim',
  4238. dailyDigestLabel: 'Resumo Diário',
  4239. sendDigestAt: 'Enviar resumo às',
  4240. digestCollected: 'Os eventos serão coletados e enviados como um único resumo neste horário',
  4241. notificationEvents: 'Eventos de Notificação',
  4242. progressPercent: '(25%, 50%, 75%)',
  4243. bedCooledAfterPrint: '(após conclusão da impressão)',
  4244. // Per-event ntfy priority (#990)
  4245. eventPriority: {
  4246. sectionTitle: 'Prioridade ntfy',
  4247. helpNtfy: 'Escolha uma prioridade para cada evento habilitado. O ntfy usa isso para escalar alertas (som, visibilidade, comportamento push). Níveis não definidos aqui usam o padrão do servidor ntfy.',
  4248. min: 'Mín',
  4249. low: 'Baixa',
  4250. default: 'Padrão',
  4251. high: 'Alta',
  4252. urgent: 'Urgente',
  4253. },
  4254. cancel: 'Cancelar',
  4255. save: 'Salvar',
  4256. add: 'Adicionar',
  4257. nameRequired: 'Nome é obrigatório',
  4258. fieldRequired: '{{field}} é obrigatório',
  4259. // Config field labels
  4260. phoneNumber: 'Número de Telefone',
  4261. apiKey: 'Chave da API',
  4262. serverUrl: 'URL do Servidor',
  4263. topic: 'Tópico',
  4264. authToken: 'Token de Autenticação',
  4265. userKey: 'Chave do Usuário',
  4266. appToken: 'Token do Aplicativo',
  4267. priority: 'Prioridade',
  4268. botToken: 'Token do Bot',
  4269. chatId: 'ID do Chat',
  4270. smtpServer: 'Servidor SMTP',
  4271. smtpPort: 'Porta SMTP',
  4272. security: 'Segurança',
  4273. authentication: 'Autenticação',
  4274. username: 'Usuário',
  4275. password: 'Senha',
  4276. fromEmail: 'E-mail de Origem',
  4277. toEmail: 'E-mail de Destino',
  4278. webhookUrl: 'URL do Webhook',
  4279. payloadFormat: 'Formato do Payload',
  4280. authorization: 'Autorização',
  4281. titleFieldName: 'Nome do Campo de Título',
  4282. messageFieldName: 'Nome do Campo de Mensagem',
  4283. // NotificationTemplateEditor
  4284. editTemplate: 'Editar Modelo: {{name}}',
  4285. titleLabel: 'Título',
  4286. bodyLabel: 'Corpo',
  4287. titlePlaceholder: 'Título da notificação...',
  4288. bodyPlaceholder: 'Corpo da notificação...',
  4289. availableVariables: 'Variáveis Disponíveis',
  4290. clickToInsert: 'Clique para inserir na posição do cursor no corpo',
  4291. livePreview: 'Pré-visualização ao Vivo',
  4292. hide: 'Ocultar',
  4293. show: 'Mostrar',
  4294. loadingPreview: 'Carregando pré-visualização...',
  4295. enterTemplateContent: 'Insira o conteúdo do modelo para ver a pré-visualização',
  4296. titlePreview: 'Título:',
  4297. bodyPreview: 'Corpo:',
  4298. resetToDefault: 'Restaurar Padrão',
  4299. titleRequired: 'Título é obrigatório',
  4300. bodyRequired: 'Corpo é obrigatório',
  4301. // NotificationLogViewer
  4302. notificationLog: 'Registro de Notificações',
  4303. showFailedOnly: 'Apenas falhas',
  4304. last24Hours: 'Últimas 24 horas',
  4305. last7Days: 'Últimos 7 dias',
  4306. last30Days: 'Últimos 30 dias',
  4307. last90Days: 'Últimos 90 dias',
  4308. justNow: 'Agora mesmo',
  4309. noFailedNotifications: 'Nenhuma notificação com falha',
  4310. noNotificationsLogged: 'Nenhuma notificação registrada',
  4311. unknownProvider: 'Provedor Desconhecido',
  4312. logTitle: 'Título',
  4313. logMessage: 'Mensagem',
  4314. logError: 'Erro',
  4315. logProvider: 'Provedor: {{type}}',
  4316. logTime: 'Hora: {{time}}',
  4317. refresh: 'Atualizar',
  4318. clearOld: 'Limpar Antigos',
  4319. statsSummary: 'Últimos {{days}} dias:',
  4320. statsNotifications: 'notificações',
  4321. statsSent: '{{count}} enviadas',
  4322. statsFailed: '{{count}} com falha',
  4323. // Event type labels (for log viewer)
  4324. eventTypes: {
  4325. print_start: 'Impressão Iniciada',
  4326. print_complete: 'Impressão Concluída',
  4327. print_failed: 'Impressão Falhou',
  4328. print_stopped: 'Impressão Parada',
  4329. print_progress: 'Progresso',
  4330. printer_offline: 'Impressora Offline',
  4331. printer_error: 'Erro da Impressora',
  4332. filament_low: 'Filamento Baixo',
  4333. maintenance_due: 'Manutenção Necessária',
  4334. test: 'Teste',
  4335. },
  4336. // User email notification preferences
  4337. userEmail: {
  4338. title: 'Notificações',
  4339. emailNotifications: 'Notificações por E-mail',
  4340. emailNotificationsDesc: 'Receba notificações por e-mail para seus próprios trabalhos de impressão. Os e-mails são enviados usando as configurações SMTP definidas na Autenticação Avançada.',
  4341. sendingTo: 'As notificações serão enviadas para',
  4342. noEmailWarning: 'Sua conta não tem um endereço de e-mail. Entre em contato com um administrador para adicionar um.',
  4343. printJobNotifications: 'Notificações de Trabalhos de Impressão',
  4344. printJobNotificationsDesc: 'Escolha quais eventos acionam notificações por e-mail para os trabalhos de impressão que você envia.',
  4345. printJobStarts: 'Início do Trabalho de Impressão',
  4346. printJobStartsDesc: 'Ser notificado quando seu trabalho de impressão começar.',
  4347. printJobFinishes: 'Conclusão do Trabalho de Impressão',
  4348. printJobFinishesDesc: 'Ser notificado quando seu trabalho de impressão concluir com sucesso.',
  4349. printErrors: 'Erros de Impressão',
  4350. printErrorsDesc: 'Ser notificado quando seu trabalho de impressão falhar ou encontrar um erro.',
  4351. printJobStops: 'Trabalho de Impressão Parado',
  4352. printJobStopsDesc: 'Ser notificado quando seu trabalho de impressão for cancelado ou parado.',
  4353. saveSuccess: 'Preferências de notificação salvas.',
  4354. saveError: 'Falha ao salvar preferências de notificação.',
  4355. },
  4356. },
  4357. // Rich Text Editor
  4358. richTextEditor: {
  4359. bold: 'Negrito',
  4360. italic: 'Itálico',
  4361. underline: 'Sublinhado',
  4362. bulletList: 'Lista com marcadores',
  4363. numberedList: 'Lista numerada',
  4364. alignLeft: 'Alinhar à esquerda',
  4365. alignCenter: 'Centralizar',
  4366. alignRight: 'Alinhar à direita',
  4367. addLink: 'Adicionar link',
  4368. removeLink: 'Remover link',
  4369. },
  4370. // External Links
  4371. externalLinks: {
  4372. noLinksConfigured: 'Nenhum link externo configurado',
  4373. deleteLink: 'Excluir link',
  4374. removeCustomIcon: 'Remover ícone personalizado',
  4375. openInNewTab: 'Abrir em nova aba',
  4376. placeholders: {
  4377. linkName: 'Meu Link',
  4378. },
  4379. },
  4380. // Keyboard Shortcuts Modal
  4381. keyboardShortcuts: {
  4382. title: 'Atalhos de Teclado',
  4383. navigation: 'Navegação',
  4384. archivesSection: 'Arquivos',
  4385. kProfilesSection: 'K-Profiles',
  4386. generalSection: 'Geral',
  4387. shortcuts: {
  4388. goToPrinters: 'Ir para Impressoras',
  4389. goToArchives: 'Ir para Arquivos',
  4390. goToQueue: 'Ir para Fila',
  4391. goToStats: 'Ir para Estatísticas',
  4392. goToProfiles: 'Ir para Perfis na Nuvem',
  4393. goToSettings: 'Ir para Configurações',
  4394. focusSearch: 'Focar na pesquisa',
  4395. openUploadModal: 'Abrir modal de upload',
  4396. clearSelection: 'Limpar seleção / desfocar input',
  4397. contextMenu: 'Menu de contexto nos cartões',
  4398. refreshProfiles: 'Atualizar perfis',
  4399. newProfile: 'Novo perfil',
  4400. exitSelectionMode: 'Sair do modo de seleção',
  4401. showHelp: 'Mostrar esta ajuda',
  4402. },
  4403. footer: 'Pressione Esc ou clique fora para fechar',
  4404. },
  4405. // Notification Log
  4406. notificationLog: {
  4407. title: 'Registro de Notificações',
  4408. events: {
  4409. printStarted: 'Impressão Iniciada',
  4410. printComplete: 'Impressão Concluída',
  4411. printFailed: 'Impressão Falhou',
  4412. printStopped: 'Impressão Interrompida',
  4413. progress: 'Progresso',
  4414. printerOffline: 'Impressora Offline',
  4415. printerError: 'Erro na Impressora',
  4416. lowFilament: 'Filamento Baixo',
  4417. maintenanceDue: 'Manutenção Pendente',
  4418. test: 'Teste',
  4419. },
  4420. timeAgo: {
  4421. justNow: 'Agora mesmo',
  4422. minutesAgo: 'há {{minutes}} minutos',
  4423. hoursAgo: 'há {{hours}} horas',
  4424. },
  4425. },
  4426. // Restore/Backup Modal
  4427. restoreBackup: {
  4428. title: 'Restaurar Backup',
  4429. restoring: 'Restaurando...',
  4430. restoreComplete: 'Restauração Concluída',
  4431. restoreFailed: 'Falha na Restauração',
  4432. importSettings: 'Importar configurações de um arquivo de backup',
  4433. pleaseWait: 'Aguarde enquanto seus dados estão sendo restaurados',
  4434. clickToSelect: 'Clique para selecionar o arquivo de backup (.json ou .zip)',
  4435. howDuplicateHandling: 'Como funciona o tratamento de duplicatas:',
  4436. categories: {
  4437. printers: 'Impressoras',
  4438. smartPlugs: 'Tomadas Inteligentes',
  4439. notificationProviders: 'Provedores de Notificação',
  4440. filaments: 'Filamentos',
  4441. archives: 'Arquivos',
  4442. pendingUploads: 'Uploads Pendentes',
  4443. settingsTemplates: 'Configurações e Modelos',
  4444. },
  4445. matchingInfo: {
  4446. printers: 'correspondem pelo número de série',
  4447. smartPlugs: 'correspondem pelo endereço IP',
  4448. notificationProviders: 'correspondem pelo nome',
  4449. filaments: 'correspondem pelo nome + tipo + marca',
  4450. archives: 'correspondem pelo hash do conteúdo',
  4451. pendingUploads: 'correspondem pelo nome do arquivo',
  4452. settingsTemplates: 'sempre sobrescrito',
  4453. },
  4454. replaceExisting: 'Substituir dados existentes',
  4455. keepExisting: 'Manter dados existentes',
  4456. replaceDescription: 'Substituir itens que já existem com os dados do backup',
  4457. keepDescription: 'Restaurar apenas itens que não existem',
  4458. caution: 'Atenção:',
  4459. cautionText: 'Sobrescrever substituirá suas configurações atuais pelos dados do backup. Os códigos de acesso da impressora nunca são sobrescritos por segurança.',
  4460. itemsRestored: 'Itens Restaurados',
  4461. itemsSkipped: 'Itens Ignorados',
  4462. restored: 'Restaurado',
  4463. skipped: 'Ignorado (já existe)',
  4464. filesLabel: 'Arquivos (3MF, miniaturas, etc.)',
  4465. newApiKeysGenerated: 'Novas Chaves API Geradas',
  4466. newApiKeysWarning: 'Essas chaves são exibidas apenas uma vez. Copie-as agora!',
  4467. processingBackup: 'Processando arquivo de backup...',
  4468. noDataFound: 'Nenhum dado foi encontrado para restaurar no arquivo de backup.',
  4469. failedToRestore: 'Falha ao restaurar o backup. Verifique o formato do arquivo.',
  4470. },
  4471. // Backup Export Modal
  4472. backupExport: {
  4473. title: 'Exportar Backup',
  4474. selectData: 'Selecione os dados a incluir',
  4475. selectAll: 'Selecionar Todos',
  4476. selectNone: 'Selecionar Nenhum',
  4477. categoryDescriptions: {
  4478. settings: 'Idioma, tema, preferências de atualização',
  4479. notifications: 'ntfy, Pushover, Discord, etc.',
  4480. templates: 'Modelos de mensagens personalizadas',
  4481. smartPlugs: 'Configurações de tomadas Tasmota',
  4482. externalLinks: 'Links da barra lateral para serviços externos',
  4483. printers: 'Informações da impressora (códigos de acesso excluídos)',
  4484. plateDetection: 'Imagens de referência de placa vazia',
  4485. filaments: 'Tipos e custos de filamento',
  4486. maintenance: 'Cronogramas de manutenção personalizados',
  4487. archives: 'Todos os dados de impressão + arquivos (3MF, miniaturas, fotos)',
  4488. projects: 'Projetos, itens de BOM e anexos',
  4489. pendingUploads: 'Uploads de impressora virtual aguardando revisão',
  4490. apiKeys: 'Chaves API de webhook (novas chaves geradas na importação)',
  4491. },
  4492. requiresPrinters: 'Requer que as impressoras sejam selecionadas',
  4493. zipFileWarning: 'Um arquivo ZIP será criado.',
  4494. zipFileDescription: 'Inclui todos os arquivos 3MF, miniaturas, timelapses e fotos. Isso pode levar algum tempo e resultar em um arquivo grande.',
  4495. includeAccessCodes: 'Incluir Códigos de Acesso',
  4496. includeAccessCodesDescription: 'Para transferir para outra máquina',
  4497. includeAccessCodesWarning: 'Os códigos de acesso serão incluídos em texto simples. Mantenha este arquivo de backup seguro!',
  4498. categoriesSelected: '{{selectedCount}} categorias selecionadas',
  4499. },
  4500. // Pending Uploads Panel
  4501. pendingUploads: {
  4502. placeholders: {
  4503. notes: 'Adicione notas sobre esta impressão...',
  4504. },
  4505. discardUpload: 'Descartar Upload',
  4506. archiveAllUploads: 'Arquivar Todos os Uploads',
  4507. discardAllUploads: 'Descartar Todos os Uploads',
  4508. archive: 'Arquivar',
  4509. timeAgo: {
  4510. justNow: 'Agora mesmo',
  4511. minutesAgo: 'há {{minutes}} minutos',
  4512. hoursAgo: 'há {{hours}} horas',
  4513. daysAgo: 'há {{days}} dias',
  4514. },
  4515. },
  4516. // API Browser
  4517. apiBrowser: {
  4518. placeholders: {
  4519. requestBody: 'Corpo da requisição JSON...',
  4520. searchEndpoints: 'Pesquisar endpoints...',
  4521. },
  4522. },
  4523. // Configure AMS Slot Modal
  4524. configureAmsSlot: {
  4525. title: 'Configurar Slot AMS',
  4526. slotConfigured: 'Slot Configurado!',
  4527. configuringSlot: 'Configurando slot:',
  4528. slotLabel: '{{ams}} Slot {{slot}}',
  4529. searchPresets: 'Pesquisar predefinições...',
  4530. colorPlaceholder: 'Nome da cor ou hex (ex.: marrom, FF8800)',
  4531. clearCustomColor: 'Limpar cor personalizada',
  4532. noCloudPresets: 'Nenhuma predefinição na nuvem. Faça login no Bambu Cloud para sincronizar.',
  4533. noPresetsAvailable: 'Nenhuma predefinição disponível. Faça login no Bambu Cloud ou importe perfis locais.',
  4534. noMatchingPresets: 'Nenhuma predefinição correspondente encontrada.',
  4535. custom: 'Personalizado',
  4536. builtin: 'Integrado',
  4537. settingsSentToPrinter: 'Configurações enviadas para a impressora',
  4538. filamentProfile: 'Perfil de Filamento',
  4539. kProfileLabel: 'Perfil K (Avanço de Pressão)',
  4540. filteringFor: 'Filtrando por: {{material}}',
  4541. noKProfile: 'Nenhum perfil K (usar padrão 0.020)',
  4542. noMatchingKProfiles: 'Nenhum perfil K correspondente encontrado. O K padrão=0.020 será usado.',
  4543. selectFilamentFirst: 'Selecione um perfil de filamento primeiro',
  4544. kFromCalibration: 'K={{value}} da calibração da impressora',
  4545. customColorLabel: 'Cor Personalizada (opcional)',
  4546. presetColors: 'Cores de {{name}}:',
  4547. showLessColors: 'Mostrar menos cores',
  4548. showMoreColors: 'Mostrar mais cores',
  4549. clear: 'Limpar',
  4550. hexLabel: 'Hex: #{{hex}}',
  4551. resetting: 'Redefinindo...',
  4552. resetSlot: 'Redefinir Slot',
  4553. cancel: 'Cancelar',
  4554. configuring: 'Configurando...',
  4555. configureSlot: 'Configurar Slot',
  4556. },
  4557. // GitHub Backup Settings
  4558. githubBackup: {
  4559. title: 'Backup do GitHub',
  4560. history: 'Histórico',
  4561. downloadBackup: 'Baixar Backup',
  4562. restoreBackup: 'Restaurar Backup',
  4563. noBackupsYet: 'Nenhum backup ainda',
  4564. },
  4565. // Email Settings
  4566. emailSettings: {
  4567. placeholders: {
  4568. fromName: 'BamBuddy',
  4569. },
  4570. },
  4571. // Tag Management Modal
  4572. tagManagement: {
  4573. searchTags: 'Pesquisar tags...',
  4574. renameTag: 'Renomear tag',
  4575. deleteTag: 'Excluir tag',
  4576. },
  4577. // Notification Template Editor
  4578. notificationTemplates: {
  4579. placeholders: {
  4580. title: 'Título da notificação...',
  4581. body: 'Corpo da notificação...',
  4582. },
  4583. },
  4584. // Batch Tag Modal
  4585. batchTag: {
  4586. placeholders: {
  4587. newTag: 'Digite uma nova tag...',
  4588. },
  4589. },
  4590. // Photo Gallery Modal
  4591. photoGallery: {
  4592. deletePhoto: 'Excluir foto',
  4593. },
  4594. // Filament Hover Card
  4595. filamentHoverCard: {
  4596. copySpoolUuid: 'Copiar UUID do carretel',
  4597. },
  4598. // K Profiles View
  4599. kProfilesView: {
  4600. hasNote: 'Possui nota',
  4601. copyProfile: 'Copiar perfil',
  4602. },
  4603. // Layout/Navigation
  4604. layout: {
  4605. openMenu: 'Abrir menu',
  4606. noPermissionSystemInfo: 'Você não tem permissão para visualizar informações do sistema',
  4607. },
  4608. // Dashboard
  4609. dashboard: {
  4610. dragToReorder: 'Arrastar para reordenar',
  4611. hideWidget: 'Ocultar widget',
  4612. },
  4613. // Notification Provider Card
  4614. notificationProviderCard: {
  4615. deleteNotificationProvider: 'Excluir provedor de notificação',
  4616. },
  4617. // File Manager Modal
  4618. fileManagerModal: {
  4619. closeFileManager: 'Fechar gerenciador de arquivos',
  4620. sortFiles: 'Ordenar arquivos',
  4621. goToParentFolder: 'Ir para a pasta pai',
  4622. threeView: 'Visualização 3D',
  4623. },
  4624. // Embedded Camera Viewer
  4625. embeddedCameraViewer: {
  4626. refreshStream: 'Atualizar stream',
  4627. close: 'Fechar',
  4628. zoomOut: 'Reduzir zoom',
  4629. resetZoom: 'Redefinir zoom',
  4630. zoomIn: 'Aumentar zoom',
  4631. dragToResize: 'Arrastar para redimensionar',
  4632. },
  4633. // Timelapse Viewer
  4634. timelapseViewer: {
  4635. skipBack5s: 'Voltar 5s',
  4636. skipForward5s: 'Avançar 5s',
  4637. },
  4638. // Notification Providers
  4639. notificationProviders: {
  4640. descriptions: {
  4641. email: 'Notificações por email SMTP',
  4642. telegram: 'Notificações via bot do Telegram',
  4643. discord: 'Enviar para canal do Discord via webhook',
  4644. ntfy: 'Notificações push gratuitas e auto-hospedáveis',
  4645. pushover: 'Notificações push simples e confiáveis',
  4646. callmebot: 'Notificações gratuitas via WhatsApp pelo CallMeBot',
  4647. webhook: 'POST HTTP genérico para qualquer URL',
  4648. },
  4649. },
  4650. // Log Viewer
  4651. logViewer: {
  4652. searchPlaceholder: 'Pesquisar mensagem ou nome do logger...',
  4653. noLogEntries: 'Nenhuma entrada de log encontrada',
  4654. },
  4655. // Switchbar Popover
  4656. switchbarPopover: {
  4657. noSwitchesInSwitchbar: 'Nenhum switch na barra de switches',
  4658. },
  4659. // Project Page Modal
  4660. projectPageModal: {
  4661. placeholders: {
  4662. title: 'Título',
  4663. designer: 'Designer',
  4664. license: 'Licença',
  4665. description: 'Digite a descrição...',
  4666. profileTitle: 'Título do perfil',
  4667. profileDescription: 'Descrição do perfil...',
  4668. },
  4669. },
  4670. // Spoolman Settings
  4671. spoolmanSettings: {},
  4672. // Time
  4673. time: {
  4674. unknown: '-',
  4675. waiting: 'Aguardando',
  4676. justNow: 'Agora mesmo',
  4677. now: 'Agora',
  4678. minsAgo: '{{count}}min atrás',
  4679. inMins: 'em {{count}}min',
  4680. hoursAgo: '{{count}}h atrás',
  4681. inHours: 'em {{count}}h',
  4682. daysAgo: '{{count}}d atrás',
  4683. inDays: 'em {{count}}d',
  4684. },
  4685. // SpoolBuddy Kiosk
  4686. spoolbuddy: {
  4687. nav: {
  4688. dashboard: 'Painel',
  4689. ams: 'AMS',
  4690. inventory: 'Inventário',
  4691. writeTag: 'Escrever',
  4692. settings: 'Configurações',
  4693. },
  4694. status: {
  4695. nfcReady: 'NFC pronto',
  4696. nfcOff: 'NFC desligado',
  4697. offline: 'Offline',
  4698. online: 'Online',
  4699. noPrinters: 'Sem impressoras',
  4700. deviceOffline: 'Dispositivo offline',
  4701. waitingConnection: 'Aguardando conexão do dispositivo...',
  4702. systemReady: 'Sistema pronto',
  4703. status: 'Status',
  4704. },
  4705. dashboard: {
  4706. readyToScan: 'Pronto para escanear',
  4707. idleMessage: 'Coloque um carretel na balança para identificá-lo',
  4708. nfcHint: 'A tag NFC será lida automaticamente',
  4709. device: 'Dispositivo',
  4710. syncWeight: 'Sincronizar peso',
  4711. weightSynced: 'Sincronizado!',
  4712. unknownTag: 'Tag desconhecida',
  4713. newTag: 'Nova tag detectada',
  4714. onScale: 'na balança',
  4715. linkSpool: 'Vincular ao carretel',
  4716. linkTagTitle: 'Vincular tag ao carretel',
  4717. linkTag: 'Vincular tag',
  4718. selectSpool: 'Selecione um carretel para vincular a esta tag:',
  4719. noUntagged: 'Nenhum carretel sem tag encontrado',
  4720. tagDetected: 'Tag detectada',
  4721. noTag: 'Sem tag',
  4722. tagId: 'Tag',
  4723. grossWeight: 'Peso bruto',
  4724. spoolSize: 'Tamanho do carretel',
  4725. close: 'Fechar',
  4726. currentSpool: 'Carretel Atual',
  4727. },
  4728. modal: {
  4729. spoolDetected: 'Carretel Detectado',
  4730. assignToAms: 'Atribuir ao AMS',
  4731. syncWeight: 'Sincronizar Peso',
  4732. weightSynced: 'Sincronizado!',
  4733. syncing: 'Sincronizando...',
  4734. newTagDetected: 'Nova Tag Detectada',
  4735. addToInventory: 'Adicionar ao Inventário',
  4736. assignToAmsTitle: 'Atribuir ao AMS',
  4737. selectSlot: 'Selecionar um slot',
  4738. assign: 'Atribuir',
  4739. assigning: 'Atribuindo...',
  4740. assignSuccess: 'Atribuído!',
  4741. assignError: 'Falha ao atribuir carretel. Tente novamente.',
  4742. noPrinterSelected: 'Selecionar uma impressora...',
  4743. noAmsDetected: 'Nenhum AMS detectado nesta impressora',
  4744. slot: 'Slot',
  4745. },
  4746. weight: {
  4747. noReading: 'Sem leitura',
  4748. stable: 'Estável',
  4749. measuring: 'Medindo...',
  4750. tare: 'Tarar',
  4751. calibrate: 'Calibrar',
  4752. },
  4753. spool: {
  4754. remaining: 'Restante',
  4755. material: 'Material',
  4756. brand: 'Marca',
  4757. color: 'Cor',
  4758. coreWeight: 'Núcleo',
  4759. labelWeight: 'Rótulo',
  4760. scaleWeight: 'Balança',
  4761. netWeight: 'Líquido',
  4762. lastUsed: 'Último uso',
  4763. },
  4764. ams: {
  4765. noData: 'Nenhum AMS detectado',
  4766. connectAms: 'Conecte um AMS para ver os slots',
  4767. noPrinter: 'Nenhuma impressora selecionada',
  4768. selectPrinter: 'Selecione uma impressora na barra superior',
  4769. printerDisconnected: 'Impressora desconectada',
  4770. humidity: 'Umidade',
  4771. level: 'Nível',
  4772. active: 'Ativo',
  4773. slot: 'Slot',
  4774. empty: 'Vazio',
  4775. },
  4776. inventory: {
  4777. search: 'Buscar carretéis...',
  4778. empty: 'Nenhum carretel no inventário',
  4779. noResults: 'Nenhum carretel correspondente',
  4780. spools: 'carretéis',
  4781. addSpool: 'Adicionar carretel',
  4782. },
  4783. settings: {
  4784. // Tabs
  4785. tabDevice: 'Dispositivo',
  4786. tabDisplay: 'Tela',
  4787. tabScale: 'Balança',
  4788. tabUpdates: 'Atualizações',
  4789. // Device tab
  4790. nfcReader: 'Leitor NFC',
  4791. type: 'Tipo',
  4792. connection: 'Conexão',
  4793. notConnected: 'N/A',
  4794. deviceInfo: 'Info do dispositivo',
  4795. hostname: 'Host',
  4796. uptime: 'Tempo de atividade',
  4797. // Display tab
  4798. brightness: 'Brilho',
  4799. saved: 'Salvo',
  4800. noBacklight: 'Nenhuma retroiluminação DSI detectada. O controle de brilho requer uma tela DSI.',
  4801. screenBlank: 'Tempo para desligar tela',
  4802. screenBlankDesc: 'A tela desliga após inatividade. Toque para despertar.',
  4803. displayNote: 'O brilho é aplicado como filtro de software.',
  4804. // Scale tab
  4805. scaleCalibration: 'Calibração da balança',
  4806. currentWeight: 'Peso atual',
  4807. tareOffset: 'Tara',
  4808. calFactor: 'Fator',
  4809. knownWeight: 'Peso conhecido',
  4810. calStep1: 'Remova todos os itens da balança e pressione Definir zero.',
  4811. calStep2: 'Coloque o peso conhecido na balança.',
  4812. setZero: 'Definir zero',
  4813. calibrateNow: 'Calibrar',
  4814. calibrated: 'Calibrado',
  4815. tareSet: 'Comando de tara enviado. Aguardando dispositivo...',
  4816. tareFailed: 'Falha ao enviar comando de tara',
  4817. zeroSet: 'Ponto zero definido. Coloque o peso conhecido na balança.',
  4818. calibrationDone: 'Calibração concluída!',
  4819. calibrationFailed: 'Falha na calibração',
  4820. lastCalibrated: 'Última calibração',
  4821. stable: 'Estável',
  4822. settling: 'Estabilizando...',
  4823. firmware: 'Firmware',
  4824. scale: 'Balança',
  4825. noDevice: 'Nenhum dispositivo SpoolBuddy encontrado',
  4826. // Updates tab
  4827. daemonVersion: 'Versão do daemon',
  4828. currentVersion: 'Atual',
  4829. versionPending: 'Aguardando daemon...',
  4830. checking: 'Verificando...',
  4831. checkUpdates: 'Verificar atualizações',
  4832. updateAvailable: 'Atualização disponível',
  4833. updateInstructions: 'Atualize via SSH: execute o script de instalação do SpoolBuddy.',
  4834. upToDate: 'Atualizado',
  4835. includeBeta: 'Incluir versões beta',
  4836. },
  4837. writeTag: {
  4838. tabExisting: 'Bobina existente',
  4839. tabNew: 'Nova bobina',
  4840. tabReplace: 'Substituir tag',
  4841. searchPlaceholder: 'Buscar por material, cor, marca...',
  4842. noUntaggedSpools: 'Nenhuma bobina sem tag',
  4843. noTaggedSpools: 'Nenhuma bobina com tag',
  4844. selectSpool: 'Selecione uma bobina e coloque um NTAG no leitor',
  4845. placeTag: 'Coloque um NTAG no leitor',
  4846. tagReady: 'Tag detectado — pronto para gravar',
  4847. writeTag: 'Gravar Tag',
  4848. replaceTag: 'Substituir Tag',
  4849. writing: 'Gravando tag...',
  4850. waiting: 'Aguardando SpoolBuddy...',
  4851. writeSuccess: 'Tag gravado com sucesso!',
  4852. writeFailed: 'Falha na gravação',
  4853. queueFailed: 'Falha ao enfileirar comando de gravação',
  4854. tryAgain: 'Tentar novamente',
  4855. cancel: 'Cancelar',
  4856. replaceWarning: 'O tag antigo será desvinculado. O novo tag o substituirá.',
  4857. deviceOffline: 'SpoolBuddy está offline',
  4858. material: 'Material',
  4859. colorName: 'Nome da cor',
  4860. color: 'Cor',
  4861. brand: 'Marca',
  4862. weight: 'Peso (g)',
  4863. createSpool: 'Criar bobina',
  4864. creating: 'Criando...',
  4865. spoolCreated: 'Bobina criada! Pronto para gravar.',
  4866. createFailed: 'Falha ao criar bobina',
  4867. },
  4868. quickMenu: {
  4869. printerPower: 'Energia da impressora',
  4870. systemControls: 'Sistema',
  4871. restartDaemon: 'Reiniciar daemon',
  4872. restartBrowser: 'Reiniciar navegador',
  4873. reboot: 'Reiniciar',
  4874. shutdown: 'Desligar',
  4875. swipeToClose: 'Deslize para baixo para fechar',
  4876. confirmTitle: 'Confirmar',
  4877. confirmShutdown: 'Tem certeza de que deseja desligar o SpoolBuddy? Você precisará de acesso físico para ligá-lo novamente.',
  4878. confirmReboot: 'Tem certeza de que deseja reiniciar o SpoolBuddy?',
  4879. confirmRestartDaemon: 'Reiniciar o daemon do SpoolBuddy? NFC e balança ficarão temporariamente indisponíveis.',
  4880. confirmRestartBrowser: 'Reiniciar o navegador kiosk? A tela ficará brevemente preta.',
  4881. confirm: 'Confirmar',
  4882. confirmPlugOn: 'Ligar {{name}}?',
  4883. confirmPlugOff: 'Desligar {{name}}?',
  4884. turnOn: 'Ligar',
  4885. turnOff: 'Desligar',
  4886. },
  4887. },
  4888. bugReport: {
  4889. title: 'Reportar um bug',
  4890. description: 'Descrição',
  4891. descriptionPlaceholder: 'O que deu errado? Por favor, descreva o problema...',
  4892. email: 'Email (opcional)',
  4893. emailPlaceholder: 'seu@email.com.br',
  4894. emailPrivacy: 'Se fornecido, seu email será incluído em uma seção recolhida da issue no GitHub para que o mantenedor possa entrar em contato.',
  4895. screenshot: 'Captura de tela',
  4896. uploadOrPaste: 'Enviar, colar ou arrastar uma imagem',
  4897. dataCollectedSummary: 'Quais dados são incluídos no relatório?',
  4898. dataIncluded: 'Incluídos:',
  4899. dataIncludedList: 'Versão do app, SO, arquitetura, versão Python, estatísticas do banco de dados (apenas contagens), modelos de impressora, quantidade de bicos, versões de firmware, status de conexão, status de integrações (Spoolman, MQTT, HA), configurações não sensíveis, contagem de interfaces de rede, detalhes Docker, versões de dependências.',
  4900. dataNeverIncluded: 'Nunca incluídos:',
  4901. dataNeverIncludedList: 'Nomes de impressoras, números de série, códigos de acesso, senhas, endereços IP, endereços de email, chaves de API, tokens, URLs de webhook, nomes de host ou nomes de usuário.',
  4902. submit: 'Enviar',
  4903. startLogging: 'Iniciar log de depuração',
  4904. stepEnableLogging: 'Log de depuração ativado',
  4905. stepReproduce: 'Reproduza o problema agora',
  4906. stepStopLogging: 'Parar & enviar relatório',
  4907. stopAndSubmit: 'Parar & Enviar',
  4908. maxDuration: 'Para automaticamente após {{minutes}} min',
  4909. stoppingLogs: 'Coletando logs & enviando...',
  4910. submitting: 'Enviando relatório de bug...',
  4911. submitSuccess: 'Relatório de bug enviado com sucesso!',
  4912. submitFailed: 'Falha ao enviar relatório de bug',
  4913. thankYou: 'Obrigado!',
  4914. submitted: 'Seu relatório de bug foi enviado.',
  4915. viewIssue: 'Ver issue',
  4916. unexpectedError: 'Ocorreu um erro inesperado',
  4917. },
  4918. failureDetection: {
  4919. title: 'Detecção de Falhas por IA',
  4920. description: 'Monitora impressões via API ML do Obico auto-hospedada e age automaticamente em falhas detectadas.',
  4921. mlUrl: 'URL da API ML do Obico',
  4922. mlUrlHint: 'URL base do seu contêiner Obico ml_api auto-hospedado (ex.: http://192.168.1.10:3333).',
  4923. test: 'Testar',
  4924. testSuccess: 'API ML acessível e operacional.',
  4925. testFailed: 'Não foi possível acessar a API ML.',
  4926. sensitivity: 'Sensibilidade',
  4927. sensitivityLow: 'Baixa (menos falsos positivos)',
  4928. sensitivityMedium: 'Média (equilibrada)',
  4929. sensitivityHigh: 'Alta (detecção precoce, mais falsos positivos)',
  4930. sensitivityHint: 'Ajusta os limiares de confiança que disparam avisos e falhas.',
  4931. action: 'Ação em falha detectada',
  4932. actionNotify: 'Apenas notificar',
  4933. actionPause: 'Pausar impressão',
  4934. actionPauseOff: 'Pausar e cortar energia',
  4935. pollInterval: 'Intervalo de verificação (segundos)',
  4936. pollIntervalHint: 'Frequência de verificação de cada impressora durante a impressão. Mínimo 5s, máximo 120s.',
  4937. externalUrlMissing: 'External URL is not set.',
  4938. externalUrlHint: 'The ML API fetches the camera snapshot by URL. Set the External URL in General settings so the ML API container can reach Bambuddy.',
  4939. perPrinterTitle: 'Impressoras monitoradas',
  4940. perPrinterHint: 'Escolha quais impressoras o serviço de detecção monitora.',
  4941. monitorAll: 'Monitorar todas as impressoras conectadas',
  4942. statusTitle: 'Status',
  4943. serviceRunning: 'Serviço em execução',
  4944. thresholds: 'Limiares baixo / alto',
  4945. activePrinters: 'Impressões ativas',
  4946. noActivePrints: 'Nenhuma impressão em andamento.',
  4947. historyTitle: 'Detecções recentes',
  4948. noHistory: 'Nenhuma detecção ainda.',
  4949. },
  4950. makerworld: {
  4951. title: 'MakerWorld',
  4952. description: 'Cole uma URL de modelo do MakerWorld para importar e imprimir diretamente do Bambuddy — sem precisar abrir o app Bambu Handy.',
  4953. pasteUrlHeader: 'Importar do MakerWorld',
  4954. pasteUrlPlaceholder: 'https://makerworld.com/en/models/… ou cole qualquer link do MakerWorld',
  4955. resolveButton: 'Resolver',
  4956. signInRequiredTitle: 'Login no Bambu Cloud necessário para baixar',
  4957. signInRequiredBody: 'Você pode navegar pelos detalhes do modelo anonimamente, mas o MakerWorld exige uma conta Bambu Cloud para baixar arquivos 3MF.',
  4958. openCloudSettings: 'Abrir configurações do Cloud',
  4959. untitledModel: 'Modelo sem título',
  4960. byCreator: 'por {{name}}',
  4961. downloadsCount: '{{count}} downloads',
  4962. licensePrefix: 'Licença',
  4963. alreadyImported: 'Já na biblioteca',
  4964. openOnMakerworld: 'Abrir no MakerWorld',
  4965. alreadyInLibrary: 'Este modelo já está na sua biblioteca — encontre-o em Gerenciador de Arquivos → MakerWorld',
  4966. importSuccess: '{{filename}} importado — salvo em Gerenciador de Arquivos → MakerWorld',
  4967. platesHeader: 'Placas ({{count}})',
  4968. plateDefaultName: 'Placa {{n}}',
  4969. materialCount: '{{count}} filamentos',
  4970. amsRequired: 'AMS necessário',
  4971. importToLibrary: 'Salvar',
  4972. sliceIn: 'Salvar e fatiar no {{slicer}}',
  4973. disclaimer: 'A integração com o MakerWorld usa endpoints de API documentados pela comunidade. Bambuddy não é afiliado nem endossado pelo MakerWorld ou pela Bambu Lab.',
  4974. lastImportSuccess: 'Importado para sua biblioteca',
  4975. lastImportAlreadyInLibrary: 'Já na sua biblioteca',
  4976. viewInLibrary: 'Ver no Gerenciador de Arquivos',
  4977. openInBambuStudio: 'Abrir no Bambu Studio',
  4978. openInOrcaSlicer: 'Abrir no OrcaSlicer',
  4979. importTo: 'Importar para o Gerenciador de Arquivos',
  4980. recentImportsHeader: 'Importações recentes',
  4981. phaseResolving: 'Resolvendo',
  4982. phaseDownloading: 'Baixando',
  4983. folderAuto: 'MakerWorld (padrão)',
  4984. importAll: 'Importar tudo',
  4985. importAllProgress: 'Importando {{current}}/{{total}}',
  4986. openGallery: 'Abrir galeria de imagens',
  4987. galleryPrev: 'Imagem anterior',
  4988. galleryNext: 'Próxima imagem',
  4989. deleteImport: 'Remover da biblioteca',
  4990. importDeleting: 'Removendo…',
  4991. importDeleted: 'Removido da biblioteca',
  4992. confirmDelete: 'Remover {{filename}} da biblioteca? O arquivo local será excluído, mas a placa pode ser reimportada do MakerWorld.',
  4993. errors: {
  4994. resolveFailed: 'Não foi possível resolver essa URL do MakerWorld.',
  4995. downloadFailed: 'Falha no download. Tente novamente.',
  4996. deleteFailed: 'Não foi possível remover o arquivo da biblioteca.',
  4997. },
  4998. },
  4999. libraryTrash: {
  5000. title: 'Lixeira',
  5001. headerButton: 'Lixeira',
  5002. headerTooltip: 'Ver arquivos movidos para a lixeira',
  5003. backToFiles: 'Voltar ao gerenciador de arquivos',
  5004. subtitleAdmin: 'Arquivos excluídos ficam aqui por {{days}} dias e depois são removidos automaticamente. Esta visualização mostra a lixeira de todos os usuários.',
  5005. subtitleUser: 'Arquivos excluídos ficam aqui por {{days}} dias e depois são removidos automaticamente.',
  5006. loading: 'Carregando a lixeira…',
  5007. loadError: 'Não foi possível carregar a lixeira.',
  5008. empty: 'A lixeira está vazia.',
  5009. summary: '{{count}} arquivos · {{size}}',
  5010. emptyTrash: 'Esvaziar lixeira',
  5011. restore: 'Restaurar',
  5012. purgeNow: 'Excluir agora',
  5013. autoPurgeIn: 'Exclusão automática em {{when}}',
  5014. days: 'dias',
  5015. retentionLabel: 'Excluir automaticamente após',
  5016. selectAll: 'Selecionar todos',
  5017. selectOne: 'Selecionar {{filename}}',
  5018. selectionCount: '{{count}} selecionado(s)',
  5019. bulkRestore: 'Restaurar selecionados',
  5020. bulkPurge: 'Excluir selecionados',
  5021. col: {
  5022. filename: 'Arquivo',
  5023. folder: 'Pasta',
  5024. size: 'Tamanho',
  5025. deleted: 'Movido para a lixeira',
  5026. autoPurge: 'Exclusão auto.',
  5027. owner: 'Proprietário',
  5028. actions: 'Ações',
  5029. },
  5030. confirm: {
  5031. purgeTitle: 'Excluir permanentemente?',
  5032. purgeBody: '{{filename}} será excluído do disco e não poderá ser restaurado.',
  5033. emptyTitle: 'Esvaziar a lixeira?',
  5034. emptyBody: 'Todos os {{count}} arquivos serão excluídos do disco. Esta ação não pode ser desfeita.',
  5035. bulkPurgeTitle: 'Excluir permanentemente os arquivos selecionados?',
  5036. bulkPurgeBody: 'Os {{count}} arquivos selecionados serão excluídos do disco e não poderão ser restaurados.',
  5037. cta: 'Excluir permanentemente',
  5038. },
  5039. toast: {
  5040. restored: 'Arquivo restaurado.',
  5041. restoreFailed: 'Não foi possível restaurar o arquivo.',
  5042. purged: 'Arquivo excluído permanentemente.',
  5043. purgeFailed: 'Não foi possível excluir o arquivo.',
  5044. emptied: '{{count}} arquivo(s) excluído(s) da lixeira.',
  5045. emptyFailed: 'Não foi possível esvaziar a lixeira.',
  5046. retentionSaved: 'Exclusão automática definida para {{days}} dias.',
  5047. retentionFailed: 'Não foi possível salvar a configuração de retenção.',
  5048. bulkRestored: '{{count}} arquivo(s) restaurado(s).',
  5049. bulkPurged: '{{count}} arquivo(s) excluído(s).',
  5050. },
  5051. },
  5052. libraryPurge: {
  5053. title: 'Limpar arquivos antigos',
  5054. headerButton: 'Limpar antigos',
  5055. headerTooltip: 'Mover arquivos antigos em massa para a lixeira',
  5056. description: 'Arquivos mais antigos que o limite serão movidos para a lixeira. Pastas externas são ignoradas. Você pode restaurar da lixeira antes da exclusão automática.',
  5057. ageLabel: 'Mover arquivos mais antigos que',
  5058. days: 'dias',
  5059. includeNeverPrinted: 'Incluir arquivos que nunca foram impressos',
  5060. effectsTitle: 'What happens when you click Purge',
  5061. effect1: 'Matching files are moved to Trash — they are not deleted from disk yet.',
  5062. effect2: 'You can restore them from Trash at any time until the retention window expires.',
  5063. effect3: 'After retention, the trash sweeper permanently removes them from disk.',
  5064. effect4: 'Files in external (linked) folders are skipped — Bambuddy never deletes bytes it does not own.', previewLoading: 'Verificando quantos arquivos correspondem…',
  5065. previewFailed: 'Não foi possível pré-visualizar a limpeza.',
  5066. previewSummary: '{{count}} arquivos · {{size}} seriam movidos para a lixeira',
  5067. andMore: '…e mais {{count}}',
  5068. warning: 'Os arquivos são excluídos de forma suave — você pode restaurá-los da lixeira até o fim do período de retenção.',
  5069. confirmCta: 'Mover {{count}} para a lixeira',
  5070. purging: 'Movendo para a lixeira…',
  5071. toast: {
  5072. success: '{{count}} arquivo(s) movido(s) para a lixeira.',
  5073. failed: 'Não foi possível limpar os arquivos.',
  5074. },
  5075. },
  5076. libraryAutoPurge: {
  5077. enableLabel: 'Limpar arquivos antigos automaticamente',
  5078. enableDescription: 'Executa a limpeza administrativa uma vez por dia. Os arquivos vão primeiro para a lixeira — não são excluídos imediatamente.',
  5079. ageLabel: 'Limpar automaticamente arquivos mais antigos que',
  5080. ageDescription: 'Mínimo 7 dias, máximo 10 anos. Usa a mesma regra de idade do botão Limpar manual.',
  5081. days: 'dias',
  5082. includeNeverPrinted: 'Incluir arquivos que nunca foram impressos',
  5083. saveFailed: 'Não foi possível salvar as configurações de limpeza automática.',
  5084. },
  5085. archivePurge: {
  5086. headerButton: 'Purge old',
  5087. headerTooltip: 'Bulk-delete old archives',
  5088. title: 'Purge old archives',
  5089. 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.',
  5090. ageLabel: 'Delete archives not printed in the last',
  5091. days: 'days',
  5092. effectsTitle: 'What happens when you click Purge',
  5093. effect1: 'Each matching archive is permanently removed from the database.',
  5094. effect2: 'The 3MF, thumbnail, timelapse, source 3MF, F3D design file, and photo folder are all deleted from disk.',
  5095. effect3: 'There is no trash bin for archives — deletion is immediate and cannot be undone.',
  5096. effect4: 'Reprinting an archive refreshes its age clock, so archives you still use are safe.',
  5097. previewLoading: 'Checking how many archives match…',
  5098. previewFailed: 'Could not preview the purge.',
  5099. previewSummary: '{{count}} archives · {{size}} would be deleted',
  5100. andMore: '…and {{count}} more',
  5101. warning: 'This is permanent. Download or favourite anything you want to keep before continuing.',
  5102. confirmCta: 'Delete {{count}} archive(s)',
  5103. purging: 'Deleting…',
  5104. toast: {
  5105. success: 'Deleted {{count}} archive(s).',
  5106. failed: 'Could not purge archives.',
  5107. },
  5108. },
  5109. archiveAutoPurge: {
  5110. enableLabel: 'Auto-purge old archives',
  5111. 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.',
  5112. ageLabel: 'Auto-delete archives not printed in the last',
  5113. 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.',
  5114. days: 'days',
  5115. runNow: 'Purge archives now',
  5116. saveFailed: 'Could not save auto-purge settings.',
  5117. },
  5118. cameraTokens: {
  5119. title: 'Camera API Tokens',
  5120. navTitle: 'Camera API tokens',
  5121. description:
  5122. '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.',
  5123. loading: 'Loading…',
  5124. confirmRevoke: {
  5125. title: 'Revoke this token?',
  5126. body: 'Any device using "{{name}}" will lose access immediately. This cannot be undone.',
  5127. cancel: 'Cancel',
  5128. confirm: 'Revoke',
  5129. },
  5130. create: {
  5131. title: 'Create new token',
  5132. nameLabel: 'Token name',
  5133. namePlaceholder: 'e.g. Home Assistant',
  5134. daysLabel: 'Days until expiry',
  5135. submit: 'Create',
  5136. hint:
  5137. 'Maximum lifetime is 365 days. The token value is shown only once on creation — copy it now.',
  5138. },
  5139. created: {
  5140. title: 'Token created — copy it now',
  5141. warning:
  5142. 'This is the only time this token will be visible. After you close this dialog you can never view it again.',
  5143. copy: 'Copy',
  5144. dismiss: "I've saved it",
  5145. },
  5146. list: {
  5147. myTitle: 'My tokens',
  5148. allTitle: 'All users (admin view)',
  5149. empty: 'No tokens yet.',
  5150. name: 'Name',
  5151. owner: 'Owner',
  5152. prefix: 'Prefix',
  5153. created: 'Created',
  5154. expires: 'Expires',
  5155. lastUsed: 'Last used',
  5156. revoke: 'Revoke',
  5157. expired: 'Expired',
  5158. },
  5159. toast: {
  5160. created: 'Token created',
  5161. createFailed: 'Failed to create token',
  5162. revoked: 'Token revoked',
  5163. revokeFailed: 'Failed to revoke token',
  5164. loadFailed: 'Failed to load tokens',
  5165. copied: 'Copied to clipboard',
  5166. copyFailed: 'Copy failed — select and copy manually',
  5167. },
  5168. },
  5169. };