| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452 |
- export default {
- // Navigation
- nav: {
- printers: 'Impressoras',
- archives: 'Arquivos',
- queue: 'Fila',
- stats: 'Estatísticas',
- profiles: 'Perfis',
- maintenance: 'Manutenção',
- projects: 'Projetos',
- inventory: 'Inventário',
- files: 'Gerenciador de Arquivos',
- settings: 'Configurações',
- system: 'Sistema',
- collapseSidebar: 'Recolher barra lateral',
- expandSidebar: 'Expandir barra lateral',
- update: 'Atualizar',
- updateAvailable: 'Atualização disponível: v{{version}}',
- updateAvailableBanner: 'Versão {{version}} está disponível!',
- viewUpdate: 'Ver atualização',
- viewOnGithub: 'Ver no GitHub',
- keyboardShortcuts: 'Atalhos de teclado (?)',
- switchToLight: 'Mudar para modo claro',
- switchToDark: 'Mudar para modo escuro',
- smartSwitches: 'Interruptores inteligentes',
- logout: 'Sair',
- },
- // Common
- common: {
- save: 'Salvar',
- saving: 'Salvando...',
- cancel: 'Cancelar',
- delete: 'Excluir',
- edit: 'Editar',
- add: 'Adicionar',
- close: 'Fechar',
- confirm: 'Confirmar',
- loading: 'Carregando...',
- error: 'Erro',
- success: 'Sucesso',
- warning: 'Aviso',
- enabled: 'Ativado',
- disabled: 'Desativado',
- yes: 'Sim',
- no: 'Não',
- on: 'Ligado',
- off: 'Desligado',
- all: 'Todos',
- none: 'Nenhum',
- search: 'Pesquisar',
- filter: 'Filtrar',
- sort: 'Ordenar',
- refresh: 'Atualizar',
- download: 'Baixar',
- upload: 'Enviar',
- actions: 'Ações',
- status: 'Status',
- name: 'Nome',
- description: 'Descrição',
- date: 'Data',
- time: 'Hora',
- hours: 'Horas',
- minutes: 'Minutos',
- seconds: 'Segundos',
- days: 'Dias',
- enable: 'Ativar',
- disable: 'Desativar',
- permissions: 'Permissões',
- noPrinters: 'Nenhuma impressora configurada',
- noData: 'Nenhum dado disponível',
- linkNotFound: 'Link não encontrado',
- required: 'Obrigatório',
- optional: 'Opcional',
- dismiss: 'Dispensar',
- apply: 'Aplicar',
- reset: 'Redefinir',
- export: 'Exportar',
- import: 'Importar',
- clear: 'Limpar',
- selectAll: 'Selecionar tudo',
- deselectAll: 'Desmarcar tudo',
- noChange: '— Sem alterações —',
- unchanged: 'Inalterado',
- unassigned: 'Não atribuído',
- unknown: 'Desconhecido',
- unknownError: 'Erro desconhecido',
- today: 'Hoje',
- tomorrow: 'Amanhã',
- asap: 'O mais rápido possível',
- overdue: 'Atrasado',
- now: 'Agora',
- collapse: 'Recolher',
- expand: 'Expandir',
- viewArchive: 'Ver arquivo',
- viewInFileManager: 'Ver no Gerenciador de Arquivos',
- addedBy: 'Adicionado por {{username}}',
- prints: 'impressões',
- more: '+{{count}} mais',
- ascending: 'Crescente',
- descending: 'Decrescente',
- printer: 'Impressora',
- remove: 'Remover',
- type: 'Tipo',
- print: 'Imprimir',
- rename: 'Renomear',
- move: 'Mover',
- create: 'Criar',
- duplicate: 'Duplicar',
- left: 'Esquerda',
- right: 'Direita',
- },
- // Printers page
- printers: {
- title: 'Impressoras',
- addPrinter: 'Adicionar Impressora',
- editPrinter: 'Editar Impressora',
- deletePrinter: 'Excluir Impressora',
- printerName: 'Nome da Impressora',
- serialNumber: 'Número de Série',
- ipAddress: 'Endereço IP / Nome do Host',
- accessCode: 'Código de Acesso',
- model: 'Modelo',
- nozzleCount: 'Número de Bicos',
- autoArchive: 'Arquivamento Automático',
- status: {
- available: 'Disponível',
- idle: 'Ocioso',
- printing: 'Imprimindo',
- paused: 'Pausado',
- offline: 'Offline',
- error: 'Erro',
- finished: 'Concluído',
- unknown: 'Desconhecido',
- },
- temperatures: {
- nozzle: 'Bico',
- bed: 'Cama',
- chamber: 'Câmara',
- },
- progress: '{{percent}}% concluído',
- timeRemaining: '{{time}} restante',
- deleteConfirm: 'Tem certeza de que deseja excluir "{{name}}"?',
- maintenanceOk: 'Manutenção OK',
- maintenanceWarning: '{{count}} aviso',
- maintenanceWarning_plural: '{{count}} avisos',
- maintenanceDue: '{{count}} devido',
- maintenanceDue_plural: '{{count}} devido',
- // Sort options
- sort: {
- name: 'Nome',
- status: 'Status',
- model: 'Modelo',
- location: 'Localização',
- ascending: 'Ordem crescente',
- descending: 'Ordem decrescente',
- },
- // Card size
- cardSize: {
- small: 'Cartões pequenos',
- medium: 'Cartões médios',
- large: 'Cartões grandes',
- extraLarge: 'Cartões extra grandes',
- },
- // Controls
- hideOffline: 'Ocultar offline',
- nextAvailable: 'Próximo disponível',
- powerOn: 'Ligar',
- offlinePrintersWithPlugs: 'Impressoras offline com tomadas inteligentes',
- noPrintersConfigured: 'Nenhuma impressora configurada ainda',
- // Printer card
- readyToPrint: 'Pronto para imprimir',
- external: 'Externo',
- extL: 'Ext-L',
- extR: 'Ext-R',
- deleteArchives: 'Excluir arquivos de impressão',
- noLabel: 'Sem etiqueta',
- printPreview: 'Pré-visualização de impressão',
- width: 'Largura',
- height: 'Altura',
- noObjectsFound: 'Nenhum objeto encontrado',
- objectsLoadedOnPrintStart: 'Objetos são carregados quando uma impressão começa',
- willBeSkipped: 'Será ignorado',
- name: 'Nome',
- serialCannotBeChanged: 'Número de série não pode ser alterado',
- locationHelp: 'Usado para agrupar impressoras e filtrar trabalhos na fila',
- // WiFi signal strength
- wifiSignal: {
- veryWeak: 'Muito fraco',
- weak: 'Fraco',
- fair: 'Regular',
- good: 'Bom',
- excellent: 'Excelente',
- },
- // Maintenance
- maintenanceUpToDate: 'Toda a manutenção está em dia - Clique para ver',
- // Chamber light
- chamberLightOn: 'Ligar luz da câmara',
- chamberLightOff: 'Desligar luz da câmara',
- // Files
- browseFiles: 'Procurar arquivos da impressora',
- // Smart plug
- autoOffAfterPrint: 'Desligamento automático após impressão',
- autoOffExecuted: 'Desligamento automático executado - ligue a impressora para reiniciar',
- // HMS errors
- hmsErrors: 'Erros HMS',
- viewHmsErrors: 'Ver {{count}} erro(s) HMS',
- // Actions
- resume: 'Retomar',
- pause: 'Pausar',
- stop: 'Parar',
- camera: 'âmera',
- skipObject: 'Ignorar objeto',
- reconnect: 'Reconectar',
- mqttDebug: 'Depuração MQTT',
- activeNozzle: 'Ativo: {{nozzle}} bico',
- nozzleRack: 'Suporte de bicos',
- nozzleDocked: 'Acoplado',
- nozzleMounted: 'Montado',
- nozzleActive: 'Ativo',
- nozzleIdle: 'Ocioso',
- nozzleDiameter: 'Diâmetro',
- nozzleType: 'Tipo',
- nozzleStatus: 'Status',
- nozzleFilament: 'Filamento',
- nozzleWear: 'Desgaste',
- nozzleMaxTemp: 'Temp Máx',
- nozzleSerial: 'Serial',
- nozzleHardenedSteel: 'Aço Endurecido',
- nozzleStainlessSteel: 'Aço Inoxidável',
- nozzleTungstenCarbide: 'Carboneto de Tungstênio',
- nozzleFlow: 'Fluxo',
- nozzleHighFlow: 'Alto Fluxo',
- nozzleStandardFlow: 'Fluxo Padrão',
- // Firmware
- firmwareUpdate: 'Atualização de Firmware',
- firmwareInstructions: 'No visor da impressora, vá para',
- firmwareNav: 'Navegar para',
- settings: 'Configurações',
- firmware: 'Firmware',
- // Discovery
- discoverPrinters: 'Descobrir Impressoras',
- searching: 'Procurando...',
- manualEntry: 'Entrada Manual',
- addFromCloud: 'Adicionar da Nuvem',
- // Toast messages
- toast: {
- printerDeleted: 'Impressora excluída',
- printerAdded: 'Impressora adicionada',
- printerUpdated: 'Impressora atualizada',
- failedToDelete: 'Falha ao excluir impressora',
- failedToAdd: 'Falha ao adicionar impressora',
- failedToUpdate: 'Falha ao atualizar impressora',
- commandSent: 'Comando enviado',
- failedToSendCommand: 'Falha ao enviar comando',
- turnedOn: '{{name}} ligado',
- failedToPowerOn: 'Falha ao ligar {{name}}',
- scriptTriggered: 'Script acionado',
- printStopped: 'Impressão parada',
- printPaused: 'Impressão pausada',
- printResumed: 'Impressão retomada',
- referenceDeleted: 'Referência excluída',
- detectionAreaSaved: 'Área de detecção salva',
- failedToRunScript: 'Falha ao executar script',
- failedToStopPrint: 'Falha ao parar impressão',
- failedToPausePrint: 'Falha ao pausar impressão',
- failedToResumePrint: 'Falha ao retomar impressão',
- failedToControlChamberLight: 'Falha ao controlar a luz da câmara',
- failedToUpdateSetting: 'Falha ao atualizar configuração',
- failedToSkipObjects: 'Falha ao ignorar objetos',
- failedToRereadRfid: 'Falha ao reler RFID',
- failedToCheckPlate: 'Falha ao verificar a placa',
- failedToUpdateLabel: 'Falha ao atualizar etiqueta',
- failedToDeleteReference: 'Falha ao excluir referência',
- failedToSaveDetectionArea: 'Falha ao salvar área de detecção',
- plateCheckEnabled: 'Verificação da placa ativada',
- plateCheckDisabled: 'Verificação da placa desativada',
- calibrationSaved: 'Calibração salva!',
- calibrationFailed: 'Falha na calibração',
- rfidRereadInitiated: 'Releitura de RFID iniciada',
- },
- // Connection status
- connection: {
- connected: 'Conectado',
- offline: 'Offline',
- },
- // Queue info
- queue: {
- inQueue: '{{count}} impressão na fila',
- inQueue_plural: '{{count}} impressões na fila',
- },
- // Controls section
- controls: 'Controles',
- // RFID
- rfid: {
- reread: 'Releitura de RFID',
- },
- // Permissions
- permission: {
- noAdd: 'Você não tem permissão para adicionar impressoras',
- noEdit: 'Você não tem permissão para editar impressoras',
- noDelete: 'Você não tem permissão para excluir impressoras',
- noControl: 'Você não tem permissão para controlar impressoras',
- noFiles: 'Você não tem permissão para acessar arquivos de impressora',
- noAmsRfid: 'Você não tem permissão para reler RFID AMS',
- noSmartPlugControl: 'Você não tem permissão para controlar tomadas inteligentes',
- },
- // Add/Edit modal
- modal: {
- addTitle: 'Adicionar Impressora',
- editTitle: 'Editar Impressora',
- myPrinter: 'Minha Impressora',
- selectModel: 'Selecionar modelo...',
- locationGroup: 'Localização / Grupo (opcional)',
- locationPlaceholder: 'ex.: Oficina, Escritório, Porão',
- autoArchiveLabel: 'Arquivar automaticamente impressões concluídas',
- fromPrinterSettings: 'A partir das configurações da impressora',
- modelOptional: 'Modelo (opcional)',
- saveChanges: 'Salvar alterações',
- },
- // Skip objects
- skipObjects: {
- tooltip: 'Ignorar objetos',
- onlyWhilePrinting: 'Ignorar objetos (apenas durante a impressão)',
- requiresMultiple: 'Ignorar objetos (requer 2+ objetos)',
- title: 'Ignorar Objetos',
- matchIdsInfo: 'Correspondência de IDs com o display da sua impressora',
- printerShowsIds: 'A tela da impressora mostra os IDs dos objetos na placa de construção',
- skipSelected: 'Ignorar Selecionados',
- skipping: 'Ignorando...',
- noObjectsSelected: 'Nenhum objeto selecionado',
- selectObjectsToSkip: 'Selecione os objetos que deseja ignorar na impressão atual',
- skipped: 'Ignorado',
- objectsSkipped: 'Objetos ignorados',
- activeCount: '{{count}} ativo',
- waitForLayer: 'Aguarde a camada 2+ para ignorar objetos (atualmente na camada {{layer}})',
- skip: 'Ignorar',
- confirmTitle: 'Ignorar Objeto?',
- confirmMessage: 'Tem certeza de que deseja ignorar "{{name}}"? Isso não pode ser desfeito.',
- },
- // Confirm modals
- confirm: {
- deleteTitle: 'Excluir Impressora',
- deleteMessage: 'Tem certeza de que deseja excluir "{{name}}"? Isso removerá todas as configurações de conexão.',
- deleteArchivesNote: 'Todo o histórico de impressão desta impressora será permanentemente excluído.',
- keepArchivesNote: 'O histórico de impressão será mantido, mas não estará mais associado a esta impressora.',
- stopTitle: 'Parar Impressão',
- stopMessage: 'Tem certeza de que deseja parar a impressão atual em "{{name}}"? Isso cancelará o trabalho de impressão.',
- stopButton: 'Parar Impressão',
- pauseTitle: 'Pausar Impressão',
- pauseMessage: 'Tem certeza de que deseja pausar a impressão atual em "{{name}}"?',
- pauseButton: 'Pausar Impressão',
- resumeTitle: 'Retomar Impressão',
- resumeMessage: 'Tem certeza de que deseja retomar a impressão em "{{name}}"?',
- resumeButton: 'Retomar Impressão',
- powerOnTitle: 'Ligar Impressora',
- powerOnMessage: 'Tem certeza de que deseja ligar a impressora "{{name}}"?',
- powerOnButton: 'Ligar',
- powerOffTitle: 'Desligar Impressora',
- powerOffMessage: 'Tem certeza de que deseja desligar a impressora "{{name}}"?',
- 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.',
- powerOffButton: 'Desligar',
- },
- // Discovery
- discovery: {
- title: 'Descobrir Impressoras',
- searching: 'Procurando...',
- scanning: 'Escaneando...',
- scanProgress: 'Escaneando... {{scanned}}/{{total}}',
- foundPrinters: '{{count}} impressora(s) encontrada(s)',
- noPrintersFound: 'Nenhuma impressora encontrada',
- noPrintersFoundSubnet: 'Nenhuma impressora encontrada na sub-rede especificada.',
- noPrintersFoundNetwork: 'Nenhuma impressora encontrada na rede.',
- allConfigured: 'Todas as impressoras descobertas já estão configuradas.',
- alreadyAdded: 'Já adicionada',
- select: 'Selecionar',
- manualEntry: 'Entrada Manual',
- addFromCloud: 'Adicionar da Nuvem',
- subnetToScan: 'Sub-rede para escanear',
- dockerNote: 'Docker detectado. Insira a sub-rede da sua impressora em notação CIDR. Requer network_mode: host no docker-compose.yml.',
- scanSubnet: 'Escanear Sub-rede para Impressoras',
- discoverNetwork: 'Descobrir Impressoras na Rede',
- scanningSubnet: 'Escaneando sub-rede para impressoras Bambu...',
- scanningNetwork: 'Escaneando rede...',
- serialRequired: 'Serial necessário',
- unknown: 'Desconhecido',
- failedToStart: 'Falha ao iniciar a descoberta',
- },
- // Filaments section
- filaments: 'Filamentos',
- // Camera
- openCameraOverlay: 'Abrir sobreposição da câmera',
- openCameraWindow: 'Abrir câmera em nova janela',
- // Firmware
- firmwareUpdateAvailable: 'Atualização de firmware disponível: {{current}} → {{latest}}',
- firmwareUpToDate: 'Firmware {{version}} — Atualizado',
- firmwareUpdateButton: 'Atualizar',
- // Plate detection
- plateDetection: {
- noPermission: 'Você não tem permissão para atualizar impressoras',
- enabledClick: 'Verificação da placa ativada - Clique para desativar',
- disabledClick: 'Verificação da placa desativada - Clique para ativar',
- manageCalibration: 'Gerenciar calibração da detecção da placa',
- calibrationRequired: 'Calibração necessária',
- calibrationInstructions: 'Certifique-se de que a placa de construção esteja <strong>completamente vazia</strong>, em seguida clique em Calibrar.',
- 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.',
- calibrationTip: '<strong>Dica:</strong> Você pode armazenar até 5 calibrações para diferentes placas. O sistema usa automaticamente a melhor correspondência ao verificar.',
- plateEmpty: 'A placa parece vazia',
- objectsDetected: 'Objetos detectados na placa',
- confidence: 'Confiança',
- difference: 'Diferença',
- analysisPreview: 'Pré-visualização da análise:',
- analysisLegend: 'Caixa verde = área de detecção, Sobreposição vermelha = diferenças em relação à calibração',
- savedReferences: 'Referências salvas ({{count}}/{{max}})',
- deleteReference: 'Excluir referência',
- labelPlaceholder: 'Etiqueta...',
- clickToEdit: '{{label}} - Clique para editar',
- clickToAddLabel: 'Clique para adicionar etiqueta',
- },
- // Fans
- fans: {
- partCooling: 'Ventilador de resfriamento da peça',
- auxiliary: 'Ventilador auxiliar',
- chamber: 'Ventilador da câmara',
- },
- // HMS errors
- clickToViewHmsErrors: 'Clique para ver erros do HMS',
- estimatedCompletion: 'Tempo estimado de conclusão',
- slotOptions: 'Opções de slot',
- // Firmware modal
- firmwareModal: {
- title: 'Atualização de Firmware',
- titleUpToDate: 'Informações do Firmware',
- currentVersion: 'Atual:',
- latestVersion: 'Última:',
- releaseNotes: 'Notas de Lançamento',
- checkingPrereqs: 'Verificando pré-requisitos...',
- sdCardReady: 'Cartão SD pronto. Clique abaixo para enviar o firmware.',
- uploadedSuccess: 'Firmware enviado para o cartão SD!',
- applyInstructions: 'Para aplicar a atualização na sua impressora:',
- step1: 'Na tela sensível ao toque da impressora, vá para <strong>Configurações</strong>',
- step2: 'Navegue até <strong>Firmware</strong>',
- step3: 'Selecione <strong>Atualizar a partir do cartão SD</strong>',
- step4: 'A atualização levará de 10 a 20 minutos',
- done: 'Concluído',
- starting: 'Iniciando...',
- uploadFirmware: 'Enviar Firmware',
- uploadFailed: 'Falha ao iniciar o envio: {{error}}',
- uploadedToast: 'Firmware enviado! Inicie a atualização na tela da impressora.',
- },
- accessCodePlaceholder: 'Deixe vazio para manter o atual',
- // ROI editor
- roi: {
- title: 'Área de Detecção (ROI)',
- xStart: 'Início X',
- yStart: 'Início Y',
- width: 'Largura',
- height: 'Altura',
- 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.',
- },
- },
- // Archives page
- archives: {
- title: 'Arquivos de Impressão',
- searchPlaceholder: 'Pesquisar arquivos...',
- filterByPrinter: 'Filtrar por impressora',
- filterByStatus: 'Filtrar por status',
- sortBy: 'Ordenar por',
- sortNewest: 'Mais recentes primeiro',
- sortOldest: 'Mais antigos primeiro',
- sortName: 'Nome',
- sortDuration: 'Duração',
- sortLargest: 'Maiores primeiro',
- sortSmallest: 'Menores primeiro',
- sortSize: 'Tamanho',
- noArchives: 'Nenhum arquivo encontrado',
- noArchivesSearch: 'Nenhum arquivo corresponde à sua pesquisa',
- noArchivesYet: 'Ainda não há arquivos',
- loadingArchives: 'Carregando arquivos...',
- releaseToUpload: 'Solte para enviar',
- showAll: 'Mostrar todos',
- showFavoritesOnly: 'Mostrar apenas favoritos',
- gridView: 'Visualização em grade',
- listView: 'Visualização em lista',
- calendarView: 'Visualização em calendário',
- logView: 'Registro de impressão',
- manageTags: 'Gerenciar etiquetas',
- showFailedPrints: 'Mostrar impressões falhas',
- hideFailedPrints: 'Ocultar impressões falhas',
- printTime: 'Tempo de impressão',
- filamentUsed: 'Filamento usado',
- cost: 'Custo',
- reprint: 'Reimprimir',
- preview: 'Pré-visualizar',
- deleteArchive: 'Excluir arquivo',
- deleteConfirm: 'Tem certeza de que deseja excluir este arquivo?',
- favorite: 'Favorito',
- unfavorite: 'Remover dos favoritos',
- viewDetails: 'Ver detalhes',
- status: {
- completed: 'Concluído',
- failed: 'Falhou',
- stopped: 'Parado',
- },
- toast: {
- source3mfAttached: 'Arquivo de origem 3MF anexado: {{filename}}',
- failedUploadSource3mf: 'Falha ao enviar arquivo de origem 3MF',
- source3mfRemoved: 'Arquivo de origem 3MF removido',
- failedRemoveSource3mf: 'Falha ao remover arquivo de origem 3MF',
- f3dAttached: 'F3D anexado: {{filename}}',
- failedUploadF3d: 'Falha ao enviar F3D',
- f3dRemoved: 'F3D removido',
- failedRemoveF3d: 'Falha ao remover F3D',
- timelapseAttached: 'Timelapse anexado: {{filename}}',
- timelapseAlreadyAttached: 'Timelapse já anexado',
- noMatchingTimelapse: 'Nenhum timelapse correspondente encontrado',
- failedScanTimelapse: 'Falha ao escanear timelapse',
- failedAttachTimelapse: 'Falha ao anexar timelapse',
- timelapseRemoved: 'Timelapse removido',
- failedRemoveTimelapse: 'Falha ao remover timelapse',
- timelapseUploaded: 'Timelapse enviado: {{filename}}',
- failedUploadTimelapse: 'Falha ao enviar timelapse',
- archiveDeleted: 'Arquivo excluído',
- failedDeleteArchive: 'Falha ao excluir arquivo',
- addedToFavorites: 'Adicionado aos favoritos',
- removedFromFavorites: 'Removido dos favoritos',
- projectUpdated: 'Projeto atualizado',
- failedUpdateProject: 'Falha ao atualizar projeto',
- linkCopied: 'Link copiado para a área de transferência',
- failedCopyLink: 'Falha ao copiar link',
- photoDeleted: 'Foto excluída',
- failedDeletePhoto: 'Falha ao excluir foto',
- failedDeleteArchives: 'Falha ao excluir arquivos',
- failedUpdateFavorites: 'Falha ao atualizar favoritos',
- exportDownloaded: 'Exportação baixada',
- exportFailed: 'Falha na exportação',
- },
- menu: {
- print: 'Imprimir',
- schedule: 'Agendar',
- openInBambuStudio: 'Abrir no Slicer',
- slice: 'Fatiar',
- externalLink: 'Link externo',
- viewOnMakerWorld: 'Ver no MakerWorld',
- preview3d: 'Pré-visualização 3D',
- viewTimelapse: 'Ver Timelapse',
- scanForTimelapse: 'Escanear Timelapse',
- uploadTimelapse: 'Enviar Timelapse',
- removeTimelapse: 'Remover Timelapse',
- downloadSource3mf: 'Baixar Source 3MF',
- uploadSource3mf: 'Enviar Source 3MF',
- replaceSource3mf: 'Substituir Source 3MF',
- removeSource3mf: 'Remover Source 3MF',
- uploadF3d: 'Enviar F3D',
- replaceF3d: 'Substituir F3D',
- downloadF3d: 'Baixar F3D',
- removeF3d: 'Remover F3D',
- download: 'Baixar',
- copyDownloadLink: 'Copiar link de download',
- qrCode: 'Qr Code',
- viewPhotos: 'Ver fotos',
- viewPhotosCount: 'Ver fotos ({{count}})',
- projectPage: 'Página do projeto',
- addToFavorites: 'Adicionar aos favoritos',
- removeFromFavorites: 'Remover dos favoritos',
- edit: 'Editar',
- goToProject: 'Ir para o projeto: {{name}}',
- addToProject: 'Adicionar ao projeto',
- removeFromProject: 'Remover do projeto',
- loading: 'Carregando...',
- noProjectsAvailable: 'Nenhum projeto disponível',
- select: 'Selecionar',
- deselect: 'Desmarcar',
- delete: 'Excluir',
- },
- permission: {
- noReprint: 'Você não tem permissão para reimprimir este arquivo',
- noAddToQueue: 'Você não tem permissão para adicionar à fila',
- noUpdateArchives: 'Você não tem permissão para atualizar arquivos',
- noUploadFiles: 'Você não tem permissão para enviar arquivos',
- noDownload: 'Você não tem permissão para baixar arquivos',
- noCopyLink: 'Você não tem permissão para copiar links de download',
- noDelete: 'Você não tem permissão para excluir este arquivo',
- noCreate: 'Você não tem permissão para criar arquivos',
- },
- card: {
- previousPlate: 'Placa anterior',
- nextPlate: 'Próxima placa',
- plateNumber: 'Placa {{index}}',
- moreOptions: 'Clique com o botão direito para mais opções',
- addToFavorites: 'Adicionar aos favoritos',
- removeFromFavorites: 'Remover dos favoritos',
- cancelled: 'cancelado',
- failed: 'falha',
- duplicate: 'duplicado',
- duplicateTitle: 'Este modelo já foi impresso antes',
- openSource3mf: 'Abrir source 3MF no Bambu Studio (clique com o botão direito para mais opções)',
- downloadF3d: 'Baixar arquivo de design do Fusion 360',
- viewTimelapse: 'Ver timelapse',
- viewPhoto: 'Ver 1 foto',
- viewPhotos: 'Ver {{count}} fotos',
- openFolder: 'Abrir pasta: {{name}}',
- slicedFile: 'Arquivo fatiado - pronto para imprimir',
- sourceFile: 'Apenas arquivo fonte - nenhum mapeamento AMS disponível',
- gcode: 'GCODE',
- source: 'SOURCE',
- project: 'Projeto: {{name}}',
- estimated: 'Estimado: {{time}}',
- actual: 'Real: {{time}}',
- accuracy: 'Precisão: {{percent}}%',
- filament: '{{weight}}g',
- layer: '{{count}} camada',
- layers: '{{count}} camadas',
- object: '{{count}} objeto',
- objects: '{{count}} objetos',
- slicedFor: 'Fatiado para {{model}}',
- uploadedBy: 'Enviado por',
- noPermissionReprint: 'Você não tem permissão para reimprimir',
- noFileForReprint: 'Nenhum arquivo 3MF disponível — o arquivo não pôde ser baixado da impressora quando a impressão foi registrada',
- noPermissionEdit: 'Você não tem permissão para editar arquivos',
- noPermissionDelete: 'Você não tem permissão para excluir arquivos',
- reprint: 'Reimprimir',
- schedulePrint: 'Agendar impressão',
- schedule: 'Agendar',
- openInBambuStudio: 'Abrir no Bambu Studio',
- openInBambuStudioToSlice: 'Abrir no Bambu Studio para fatiar',
- slice: 'Fatiar',
- externalLink: 'Link externo',
- makerWorld: 'MakerWorld: {{designer}}',
- viewProject: 'Ver projeto',
- noExternalLink: 'Nenhum link externo',
- preview3d: 'Visualização 3D',
- download: 'Baixar',
- edit: 'Editar',
- delete: 'Excluir',
- },
- modal: {
- deleteArchive: 'Excluir Arquivo',
- deleteConfirm: 'Tem certeza de que deseja excluir "{{name}}"? Esta ação não pode ser desfeita.',
- deleteButton: 'Excluir',
- removeSource3mf: 'Remover Source 3MF',
- removeSource3mfConfirm: 'Tem certeza de que deseja remover o arquivo source 3MF de "{{name}}"? Isso excluirá o arquivo original do projeto do fatiador.',
- removeButton: 'Remover',
- removeF3d: 'Remover F3D',
- removeF3dConfirm: 'Tem certeza de que deseja remover o arquivo de design do Fusion 360 de "{{name}}"?',
- removeTimelapse: 'Remover Timelapse',
- removeTimelapseConfirm: 'Tem certeza de que deseja remover o vídeo timelapse de "{{name}}"?',
- timelapse: '{{name}} - Timelapse',
- selectTimelapse: 'Selecionar Timelapse',
- selectTimelapseDesc: 'Nenhuma correspondência automática encontrada. Selecione o timelapse para esta impressão:',
- deleteArchives: 'Excluir Arquivos',
- deleteArchivesConfirm: 'Tem certeza de que deseja excluir {{count}} arquivo(s)? Esta ação não pode ser desfeita.',
- deleteCount: 'Excluir {{count}}',
- },
- page: {
- title: 'Arquivos',
- printsCount: '{{filtered}} de {{total}} impressões',
- dropFilesHere: 'Solte arquivos .3mf aqui',
- releaseToUpload: 'Solte para enviar',
- only3mfSupported: 'Apenas arquivos .3mf são suportados',
- close: 'Fechar',
- selected: '{{count}} selecionado(s)',
- selectAll: 'Selecionar Todos',
- tags: 'Tags',
- project: 'Projeto',
- favorite: 'Favorito',
- delete: 'Excluir',
- toggledFavorites: 'Favoritos alternados para {{count}} arquivo(s)',
- failedUpdateFavorites: 'Falha ao atualizar favoritos',
- archivesDeleted: '{{count}} arquivo(s) excluído(s)',
- failedDeleteArchives: 'Falha ao excluir arquivos',
- photoDeleted: 'Foto excluída',
- failedDeletePhoto: 'Falha ao excluir foto',
- },
- list: {
- name: 'Nome',
- printer: 'Impressora',
- date: 'Data',
- size: 'Tamanho',
- actions: 'Ações',
- hasTimelapse: 'Possui timelapse',
- },
- log: {
- date: 'Data',
- printName: 'Nome da Impressão',
- printer: 'Impressora',
- user: 'Usuário',
- status: 'Status',
- duration: 'Duração',
- filament: 'Filamento',
- allPrinters: 'Todas as Impressoras',
- allUsers: 'Todos os Usuários',
- allStatuses: 'Todos os Status',
- cancelled: 'Cancelado',
- skipped: 'Ignorado',
- dateFrom: 'De',
- dateTo: 'Até',
- noEntries: 'Nenhuma entrada de registro de impressão encontrada',
- showing: 'Mostrando {{count}} de {{total}} entradas',
- rowsPerPage: 'Linhas',
- page: 'Página',
- prev: 'Anterior',
- next: 'Próxima',
- clearLog: 'Limpar Registro',
- clearLogTitle: 'Limpar Registro de Impressão',
- 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?',
- clearLogButton: 'Limpar Tudo',
- cleared: '{{count}} entradas do registro de impressão limpas',
- clearFailed: 'Falha ao limpar o registro de impressão',
- },
- },
- // Queue page
- queue: {
- title: 'Fila de Impressão',
- subtitle: 'Agende e gerencie seus trabalhos de impressão',
- addToQueue: 'Adicionar à Fila',
- // Print modal
- print: 'Imprimir',
- reprint: 'Reimprimir',
- schedulePrint: 'Agendar Impressão',
- editQueueItem: 'Editar Item da Fila',
- printToPrinters: 'Imprimir para {{count}} Impressoras',
- queueToPrinters: 'Adicionar à Fila para {{count}} Impressoras',
- sending: 'Enviando...',
- sendingProgress: 'Enviando {{current}}/{{total}}...',
- adding: 'Adicionando...',
- addingProgress: 'Adicionando {{current}}/{{total}}...',
- savingProgress: 'Salvando {{current}}/{{total}}...',
- clearQueue: 'Limpar Fila',
- clearHistory: 'Limpar Histórico',
- emptyQueue: 'Fila vazia',
- position: 'Posição',
- scheduledTime: 'Hora Agendada',
- moveUp: 'Mover para Cima',
- moveDown: 'Mover para Baixo',
- startNow: 'Iniciar Agora',
- printingInProgress: 'Impressão em andamento...',
- viewArchive: 'Ver Arquivo',
- viewInFileManager: 'Ver no Gerenciador de Arquivos',
- itemCount: '{{count}} item',
- itemCount_plural: '{{count}} itens',
- dragToReorder: 'Arraste para reordenar (apenas ASAP)',
- reorderHint: 'A posição afeta apenas itens ASAP. Itens agendados são executados no horário definido.',
- addedBy: 'Adicionado por {{name}}',
- nextInQueue: 'Próximo na fila',
- clearPlate: 'Limpar Placa e Iniciar Próximo',
- clearPlateSuccess: 'Placa limpa — pronta para a próxima impressão',
- plateReady: 'Placa limpa — pronta para a próxima impressão',
- plateNumber: 'Placa {{index}}',
- // Sections
- sections: {
- currentlyPrinting: 'Imprimindo Atualmente',
- queued: 'Na Fila',
- history: 'Histórico',
- },
- // Status
- status: {
- pending: 'Pendente',
- waiting: 'Aguardando',
- printing: 'Imprimindo',
- paused: 'Pausado',
- completed: 'Concluído',
- failed: 'Falhou',
- skipped: 'Ignorado',
- cancelled: 'Cancelado',
- },
- // Summary cards
- summary: {
- printing: 'Imprimindo',
- queued: 'Na Fila',
- totalTime: 'Tempo Total da Fila',
- totalWeight: 'Peso Total da Fila',
- history: 'Histórico',
- },
- // Filters
- filter: {
- allPrinters: 'Todas as Impressoras',
- unassigned: 'Não Atribuído',
- allStatus: 'Todos os Status',
- allLocations: 'Todos os Locais',
- any: 'Qualquer',
- },
- // Sort
- sort: {
- byPosition: 'Ordenar por Posição',
- byName: 'Ordenar por Nome',
- byPrinter: 'Ordenar por Impressora',
- bySchedule: 'Ordenar por Agendamento',
- byDate: 'Ordenar por Data',
- ascendingOldest: 'Crescente (mais antigo primeiro)',
- descendingNewest: 'Decrescente (mais recente primeiro)',
- },
- // Badges
- badges: {
- staged: 'Preparado (início manual)',
- requiresPrevious: 'Requer sucesso anterior',
- autoPowerOff: 'Desligamento automático',
- },
- // Empty state
- empty: {
- title: 'Nenhuma impressão agendada',
- 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.',
- },
- // Time
- time: {
- asap: 'ASAP',
- overdue: 'Atrasado',
- now: 'Agora',
- lessThanMinute: 'Em menos de um minuto',
- inMinutes: 'Em {{count}} min',
- inHours: 'Em {{count}} horas',
- },
- // Actions
- actions: {
- stopPrint: 'Parar Impressão',
- startPrint: 'Iniciar Impressão',
- requeue: 'Reenfileirar',
- },
- // Bulk edit
- bulkEdit: {
- title: 'Editar {{count}} Item',
- title_plural: 'Editar {{count}} Itens',
- description: 'Apenas as configurações alteradas serão aplicadas aos itens selecionados.',
- printer: 'Impressora',
- noChange: '— Sem alterações —',
- queueOptions: 'Opções de Fila',
- staged: 'Preparado (início manual)',
- autoPowerOff: 'Desligamento automático após impressão',
- requirePrevious: 'Requer sucesso anterior',
- printOptions: 'Opções de Impressão',
- bedLevelling: 'Nivelamento da Mesa',
- flowCalibration: 'Calibração de Fluxo',
- vibrationCalibration: 'Calibração de Vibração',
- layerInspection: 'Inspeção da Primeira Camada',
- timelapse: 'Timelapse',
- useAms: 'Usar AMS',
- applyChanges: 'Aplicar Alterações',
- selectAll: 'Selecionar Todos',
- deselectAll: 'Desmarcar Todos',
- selected: '{{count}} selecionado(s)',
- editSelected: 'Editar Selecionados',
- cancelSelected: 'Cancelar Selecionados',
- },
- // Confirmations
- confirm: {
- cancelTitle: 'Cancelar Impressão Agendada',
- cancelMessage: 'Tem certeza de que deseja cancelar "{{name}}"?',
- stopTitle: 'Parar Impressão',
- stopMessage: 'Tem certeza de que deseja parar a impressão atual "{{name}}"? Isso cancelará o trabalho de impressão na impressora.',
- removeTitle: 'Remover do Histórico',
- removeMessage: 'Tem certeza de que deseja remover "{{name}}" do histórico da fila?',
- clearHistoryTitle: 'Limpar Histórico',
- clearHistoryMessage: 'Tem certeza de que deseja remover todos os {{count}} itens do histórico?',
- cancelButton: 'Cancelar Impressão',
- stopButton: 'Parar Impressão',
- thisPrint: 'esta impressão',
- thisItem: 'este item',
- },
- // Toast messages
- toast: {
- cancelled: 'Item da fila cancelado',
- cancelFailed: 'Falha ao cancelar item',
- removed: 'Item da fila removido',
- removeFailed: 'Falha ao remover item',
- stopped: 'Impressão parada',
- stopFailed: 'Falha ao parar impressão',
- released: 'Impressão liberada para a fila',
- startFailed: 'Falha ao iniciar impressão',
- reorderFailed: 'Falha ao reordenar fila',
- historyCleared: 'Limpar {{count}} item(s) do histórico',
- clearHistoryFailed: 'Falha ao limpar histórico',
- updateFailed: 'Falha ao atualizar itens',
- bulkCancelled: 'Cancelado {{count}} item(s)',
- bulkCancelFailed: 'Falha ao cancelar itens',
- },
- // Permissions
- permissions: {
- noStopPrint: 'Você não tem permissão para parar impressões',
- noStartPrint: 'Você não tem permissão para iniciar impressões',
- noEdit: 'Você não tem permissão para editar este item da fila',
- noCancel: 'Você não tem permissão para cancelar este item da fila',
- noRequeue: 'Você não tem permissão para reenfileirar itens',
- noRemove: 'Você não tem permissão para remover este item da fila',
- noClearHistory: 'Você não tem permissão para limpar todo o histórico',
- noEditItems: 'Você não tem permissão para editar itens da fila',
- noCancelItems: 'Você não tem permissão para cancelar itens da fila',
- },
- },
- // Statistics page
- stats: {
- title: 'Dashboard',
- subtitle: 'Arraste os widgets para reorganizar. Clique no ícone de olho para ocultar.',
- overview: 'Visão Geral',
- totalPrints: 'Total de Impressões',
- successRate: 'Taxa de Sucesso',
- totalPrintTime: 'Tempo Total de Impressão',
- printTime: 'Tempo de Impressão',
- totalFilament: 'Filamento Total Utilizado',
- filamentUsed: 'Filamento Utilizado',
- filamentCost: 'Custo do Filamento',
- totalCost: 'Custo Total',
- energyUsed: 'Energia Utilizada',
- energyCost: 'Custo da Energia',
- averagePrintTime: 'Tempo Médio de Impressão',
- printsPerDay: 'Impressões por Dia',
- byPrinter: 'Por Impressora',
- printsByPrinter: 'Impressões por Impressora',
- byMaterial: 'Por Material',
- byMonth: 'Por Mês',
- last7Days: 'Últimos 7 Dias',
- last30Days: 'Últimos 30 Dias',
- last90Days: 'Últimos 90 Dias',
- allTime: 'Todo o Tempo',
- // Widgets
- quickStats: 'Estatísticas Rápidas',
- printActivity: 'Atividade de Impressão',
- filamentTypes: 'Tipos de Filamento',
- filamentTrends: 'Tendências de Filamento',
- failureAnalysis: 'Análise de Falhas',
- timeAccuracy: 'Precisão do Tempo',
- successful: 'Bem-sucedido:',
- failed: 'Falhou:',
- perfectEstimate: '100% = estimativa perfeita',
- noTimeAccuracyData: 'Nenhum dado de precisão de tempo disponível',
- noFilamentData: 'Nenhum dado de filamento disponível',
- noPrinterData: 'Nenhum dado de impressora disponível',
- noPrintData: 'Nenhum dado de impressão disponível',
- noPrintDataLast30Days: 'Nenhum dado de impressão nos últimos 30 dias',
- failureReasons: 'Razões de Falha',
- topFailureReasons: 'Principais Razões de Falha',
- failedPrintsCount: '{{failed}} / {{total}} impressões falharam',
- lastWeekRate: 'Última semana: {{rate}}%',
- // Actions
- resetLayout: 'Redefinir Layout',
- recalculateCosts: 'Recalcular Custos',
- recalculateCostsHint: 'Recalcular todos os custos do arquivo usando os preços atuais do filamento',
- exportStats: 'Exportar Estatísticas',
- exportAsCsv: 'Exportar como CSV',
- exportAsExcel: 'Exportar como Excel',
- hiddenCount: '{{count}} Oculto',
- // Toast
- exportDownloaded: 'Exportação baixada',
- exportFailed: 'Falha na exportação',
- layoutReset: 'Layout redefinido',
- recalculatedCosts: 'Custos recalculados para {{count}} arquivos',
- recalculateFailed: 'Falha ao recalcular custos',
- // Loading
- loadingStats: 'Carregando estatísticas...',
- // Permissions
- noPermissionResetLayout: 'Você não tem permissão para redefinir o layout',
- noPermissionRecalculate: 'Você não tem permissão para recalcular custos',
- },
- // Maintenance page
- maintenance: {
- title: 'Manutenção',
- overview: 'Visão Geral',
- allOk: 'Todas as manutenções estão em dia',
- dueCount: '{{count}} item pendente',
- dueCount_plural: '{{count}} itens pendentes',
- warningCount: '{{count}} aviso',
- warningCount_plural: '{{count}} avisos',
- totalPrintTime: 'Tempo Total de Impressão',
- nextMaintenance: 'Próxima Manutenção',
- nothingDue: 'Nada pendente',
- tasks: 'Tarefas',
- lastPerformed: 'Última execução',
- interval: 'Intervalo',
- hoursRemaining: '{{hours}}h restantes',
- hoursOverdue: '{{hours}}h atrasadas',
- markDone: 'Marcar como Concluída',
- performMaintenance: 'Realizar Manutenção',
- history: 'Histórico',
- noHistory: 'Nenhum histórico de manutenção',
- editPrintHours: 'Editar Horas de Impressão',
- currentHours: 'Horas Atuais',
- // Tabs
- statusTab: 'Status',
- settingsTab: 'Configurações',
- // Status
- overdueCount: '{{count}} atrasado',
- dueSoonCount: '{{count}} prestes a vencer',
- dueSoon: 'Prestes a vencer',
- allGood: 'Tudo certo',
- overdueBy: 'Atrasado por {{duration}}',
- dueIn: 'Vence em {{duration}}',
- timeLeft: '{{duration}} restantes',
- // Duration formats
- day: '1 dia',
- days: '{{count}} dias',
- week: '1 semana',
- weeks: '{{count}} semanas',
- month: '1 mês',
- months: '{{count}} meses',
- year: '1 ano',
- // Settings
- maintenanceTypes: 'Tipos de Manutenção',
- maintenanceTypesDescription: 'Tipos de sistema e suas tarefas de manutenção personalizadas',
- addCustomType: 'Adicionar Tipo Personalizado',
- restoreDefaults: 'Restaurar Tarefas Padrão',
- intervalType: 'Tipo de Intervalo',
- intervalValue: 'Intervalo ({{type}})',
- icon: 'Icon',
- documentationLink: 'Link da Documentação (opcional)',
- assignToPrinters: 'Atribuir a Impressoras',
- selectAtLeastOnePrinter: 'Selecione pelo menos uma impressora',
- addType: 'Adicionar Tipo',
- custom: 'Personalizado',
- printHours: 'Horas de Impressão',
- calendarDays: 'Dias de Calendário',
- exampleName: 'ex., Substituir Filtro HEPA',
- viewDocumentation: 'Ver documentação',
- timeBasedInterval: 'Intervalo baseado em tempo',
- // Interval overrides
- intervalOverrides: 'Substituições de Intervalo',
- intervalOverridesDescription: 'Personalize os intervalos para impressoras específicas',
- // Printer assignment
- assignedToPrinters: 'Atribuído a impressoras:',
- noPrintersAssigned: 'Nenhuma impressora atribuída',
- addPrinterShort: 'Adicionar:',
- printersAssignedClick: '{{count}} impressora(s) atribuída(s) - clique para gerenciar',
- removeFromPrinter: 'Remover desta impressora',
- // Types
- types: {
- lubricateCarbonRods: 'Lubricar Barras de Carbono',
- lubricateRails: 'Lubricar Trilhos Lineares',
- cleanNozzle: 'Limpar Bico/Hotend',
- checkBelts: 'Verificar Tensão das Correias',
- cleanBuildPlate: 'Limpar Plataforma de Impressão',
- checkExtruder: 'Verificar Engrenagens do Extrusor',
- checkCooling: 'Verificar Ventiladores de Resfriamento',
- generalInspection: 'Inspeção Geral',
- cleanCarbonRods: 'Limpar Barras de Carbono',
- cleanLinearRails: 'Limpar Trilhos Lineares',
- checkPtfeTube: 'Verificar Tubo PTFE',
- replaceHepaFilter: 'Substituir Filtro HEPA',
- replaceCarbonFilter: 'Substituir Filtro de Carbono',
- lubricateLeftNozzleRail: 'Lubrificar Trilho do Bico Esquerdo',
- },
- // Toast
- maintenanceComplete: 'Manutenção marcada como concluída',
- typeUpdated: 'Tipo de manutenção atualizado',
- typeDeleted: 'Tipo de manutenção excluído',
- defaultsRestored: 'Restauradas {{count}} tarefa(s) padrão',
- printHoursUpdated: 'Horas de impressão atualizadas',
- printerAssigned: 'Impressora atribuída',
- printerRemoved: 'Impressora removida',
- // Confirmation
- deleteTypeConfirm: 'Excluir "{{name}}"?',
- deleteSystemTypeTitle: 'Excluir tarefa de manutenção padrão?',
- deleteSystemTypeMessage: 'Tem certeza de que deseja excluir a tarefa de manutenção padrão "{{name}}"?',
- // Permissions
- noPermissionUpdate: 'Você não tem permissão para atualizar itens de manutenção',
- noPermissionPerform: 'Você não tem permissão para realizar manutenção',
- noPermissionEditTypes: 'Você não tem permissão para editar tipos de manutenção',
- noPermissionDeleteTypes: 'Você não tem permissão para excluir tipos de manutenção',
- noPermissionEditHours: 'Você não tem permissão para editar horas de impressão',
- noPermissionRemovePrinter: 'Você não tem permissão para remover atribuições de impressora',
- noPermissionAssignPrinter: 'Você não tem permissão para atribuir impressoras',
- noPermissionEditIntervals: 'Você não tem permissão para editar intervalos',
- // Configure link
- configureSettings: 'Configure tipos de manutenção e intervalos',
- },
- // Settings page
- settings: {
- title: 'Configurações',
- general: 'Geral',
- // Tab names
- tabs: {
- general: 'Geral',
- smartPlugs: 'Tomadas Inteligentes',
- notifications: 'Notificações',
- filament: 'Filamento',
- network: 'Rede',
- apiKeys: 'Chaves API',
- virtualPrinter: 'Impressora Virtual',
- users: 'Autenticação',
- backup: 'Backup',
- emailAuth: 'Autenticação por Email',
- },
- // Email settings
- email: {
- smtpSettings: 'Configuração SMTP',
- smtpHost: 'Servidor SMTP',
- smtpPort: 'Porta SMTP',
- security: 'Segurança',
- authentication: 'Autenticação',
- username: 'Nome de Usuário',
- password: 'Senha',
- fromEmail: 'Email de Remetente',
- fromName: 'Nome de Remetente',
- testConnection: 'Testar Conexão SMTP',
- testRecipient: 'Email de Teste',
- sendTest: 'Enviar Email de Teste',
- sending: 'Enviando...',
- save: 'Salvar Configurações',
- saving: 'Salvando...',
- advancedAuth: 'Autenticação Avançada',
- advancedAuthEnabled: 'Autenticação Avançada está habilitada',
- 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.',
- advancedAuthDisabled: 'Autenticação Avançada está desabilitada',
- advancedAuthDisabledDesc: 'Habilite a autenticação avançada para ativar recursos baseados em email para gerenciamento de usuários.',
- enable: 'Habilitar',
- disable: 'Desabilitar',
- feature1: 'Senhas são geradas automaticamente e enviadas por email para novos usuários',
- feature2: 'Usuários podem fazer login com nome de usuário ou email',
- feature3: 'Recurso de esqueci minha senha está disponível',
- feature4: 'Administradores podem redefinir senhas de usuários via email',
- // Error messages
- errors: {
- requiredFields: 'Por favor, preencha todos os campos obrigatórios',
- usernameRequired: 'Nome de usuário é obrigatório quando a autenticação está habilitada',
- enterTestEmail: 'Por favor, insira um endereço de email de teste',
- smtpServerAndEmail: 'Por favor, preencha o servidor SMTP e o email de remetente antes de testar',
- usernamePasswordRequired: 'Nome de usuário e senha são obrigatórios quando a autenticação está habilitada',
- configureSmtpFirst: 'Por favor, configure e teste as configurações SMTP primeiro',
- },
- // Success messages
- success: {
- settingsSaved: 'Configurações SMTP salvas com sucesso',
- },
- // Security options
- securityOptions: {
- starttls: 'STARTTLS (Porta 587)',
- ssl: 'SSL/TLS (Porta 465)',
- none: 'Nenhuma (Porta 25)',
- },
- // Authentication options
- authOptions: {
- enabled: 'Habilitado',
- disabled: 'Desabilitado',
- },
- },
- appearance: 'Aparência',
- notifications: 'Notificações',
- smartPlugs: 'Tomadas Inteligentes',
- spoolman: 'Spoolman',
- updates: 'Atualizações',
- language: 'Idioma',
- languageDescription: 'Selecione seu idioma preferido',
- theme: 'Tema',
- themeLight: 'Claro',
- themeDark: 'Escuro',
- themeSystem: 'Sistema',
- defaultView: 'Visualização Padrão',
- defaultViewDescription: 'Página a ser exibida ao abrir o aplicativo',
- checkForUpdates: 'Verificar Atualizações',
- autoUpdate: 'Atualização Automática',
- currentVersion: 'Versão Atual',
- latestVersion: 'Última Versão',
- upToDate: 'Você está atualizado',
- updateAvailable: 'Atualização disponível',
- // Notifications
- notificationLanguage: 'Idioma das Notificações',
- notificationLanguageDescription: 'Idioma para notificações push',
- bedCooledThreshold: 'Limite de Resfriamento da Cama',
- bedCooledThresholdDescription: 'Temperatura abaixo da qual a cama é considerada resfriada após uma impressão',
- notificationProviders: 'Provedores de Notificação',
- addProvider: 'Adicionar Provedor',
- editProvider: 'Editar Provedor',
- providerType: 'Tipo de Provedor',
- testNotification: 'Testar Notificação',
- testSuccess: 'Notificação de teste enviada com sucesso',
- testFailed: 'Falha ao enviar notificação de teste',
- quietHours: 'Horas de Silêncio',
- quietHoursDescription: 'Não perturbe durante essas horas',
- quietHoursStart: 'Início',
- quietHoursEnd: 'Fim',
- events: {
- title: 'Eventos de Notificação',
- printStart: 'Impressão Iniciada',
- printComplete: 'Impressão Concluída',
- printFailed: 'Falha na Impressão',
- printStopped: 'Impressão Interrompida',
- printProgress: 'Marcos de Progresso',
- printProgressDescription: 'Notificar em 25%, 50%, 75%',
- printerOffline: 'Impressora Offline',
- printerError: 'Erro na Impressora',
- filamentLow: 'Filamento Baixo',
- maintenanceDue: 'Manutenção Pendente',
- maintenanceDueDescription: 'Notificar quando a manutenção for necessária',
- },
- // Smart Plugs
- smartPlug: {
- title: 'Tomadas Inteligentes',
- add: 'Adicionar Tomada Inteligente',
- edit: 'Editar Tomada Inteligente',
- name: 'Nome',
- ipAddress: 'Endereço IP',
- linkedPrinter: 'Impressora Vinculada',
- autoOn: 'Ligar Automaticamente',
- autoOnDescription: 'Ligar quando a impressão começar',
- autoOff: 'Desligar Automaticamente',
- autoOffDescription: 'Desligar após a conclusão da impressão',
- offDelay: 'Atraso para Desligar',
- offDelayMinutes: 'Minutos após a impressão',
- offDelayTemp: 'Quando o bico estiver abaixo da temperatura',
- currentState: 'Estado Atual',
- turnOn: 'Ligar',
- turnOff: 'Desligar',
- },
- // Filament Tracking Mode
- filamentTracking: 'Rastreamento de Filamento',
- filamentTrackingDesc: 'Escolha como rastrear seus rolos de filamento. Você pode usar o inventário interno ou conectar a um servidor Spoolman externo.',
- trackingModeBuiltIn: 'Inventário Interno',
- trackingModeBuiltInDesc: 'Correspondência automática de RFID e rastreamento de uso incluídos',
- trackingModeSpoolmanDesc: 'Servidor de gerenciamento de filamento externo',
- builtInFeatureRfid: 'Detecta automaticamente rolos RFID da Bambu Lab no AMS',
- builtInFeatureUsage: 'Rastreia o consumo de filamento por impressão',
- builtInFeatureCatalog: 'Gerencia rolos, cores e perfis de fator K',
- builtInFeatureThirdParty: 'Rolos de terceiros podem ser atribuídos aos rolos do inventário',
- amsSyncButton: 'Sincronizar Pesos do AMS',
- amsSyncTitle: 'Sincronizar Pesos dos Rolos do AMS',
- 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.',
- amsSyncing: 'Sincronizando...',
- amsSyncSuccess: '{{synced}} rolo(s) sincronizado(s), {{skipped}} ignorado(s)',
- amsSyncError: 'Falha ao sincronizar pesos do AMS',
- // Spoolman settings
- spoolmanUrl: 'Spoolman URL',
- spoolmanUrlHint: 'URL do seu servidor Spoolman (por exemplo, http://localhost:7912)',
- spoolmanConnected: 'Conectado',
- spoolmanDisconnected: 'Desconectado',
- status: 'Status',
- connect: 'Conectar',
- disconnect: 'Desconectar',
- howSyncWorks: 'Como a Sincronização Funciona',
- syncInfoRfidOnly: 'Apenas rolos oficiais da Bambu Lab com RFID são sincronizados',
- syncInfoAutoCreate: 'Novos rolos são criados automaticamente no Spoolman na primeira sincronização',
- syncInfoThirdPartySkipped: 'Rolos não oficiais da Bambu Lab (terceiros, reabastecidos) são ignorados',
- linkingExistingSpools: 'Vinculando Rolos Existentes',
- linkingExistingSpoolsDesc: 'Para vincular rolos existentes do Spoolman ao seu AMS, passe o mouse sobre um slot do AMS e clique em "Vincular ao Spoolman".',
- syncMode: 'Modo de Sincronização',
- syncModeAuto: 'Automático',
- syncModeManual: 'Apenas Manual',
- syncModeAutoDesc: 'Os dados do AMS são sincronizados automaticamente quando alterações são detectadas',
- syncModeManualDesc: 'Somente sincronize quando acionado manualmente',
- syncAmsData: 'Sincronizar Dados do AMS',
- syncAmsDataDesc: 'Sincronize manualmente os dados do AMS da impressora com o Spoolman',
- allPrinters: 'Todas as Impressoras',
- // Default printer
- noDefaultPrinter: 'Sem padrão (perguntar a cada vez)',
- // Sidebar
- sidebarOrder: 'Ordem da barra lateral',
- // Camera
- saveThumbnails: 'Salvar miniaturas',
- captureFinishPhoto: 'Capturar foto de conclusão',
- noPrintersConfigured: 'Nenhuma impressora configurada',
- // Archive settings
- archiveMode: {
- always: 'Sempre criar entrada de arquivo',
- never: 'Nunca criar entrada de arquivo',
- ask: 'Perguntar a cada vez',
- },
- // Updates
- checkForUpdatesLabel: 'Verificar atualizações',
- checkPrinterFirmware: 'Verificar firmware da impressora',
- // Queue
- enableRetry: 'Habilitar tentativa',
- // Home Assistant
- homeAssistantDescription: 'Controlar tomadas inteligentes via Home Assistant',
- environmentManagedLabel: '(Gerenciado pelo Ambiente)',
- autoEnabledViaEnv: 'Habilitado automaticamente via variáveis de ambiente',
- urlFromEnvReadOnly: 'Valor definido pela variável de ambiente HA_URL (somente leitura)',
- tokenFromEnvReadOnly: 'Valor definido pela variável de ambiente HA_TOKEN (somente leitura)',
- // MQTT
- mqttConnectedTo: 'Conectado a',
- // Prometheus
- prometheusDescription: 'Expor dados da impressora no formato Prometheus',
- // Smart plugs empty state
- noSmartPlugsTitle: 'Nenhuma tomada inteligente configurada',
- noSmartPlugsDescription: 'Adicione uma tomada inteligente baseada em Tasmota para monitorar o consumo de energia e automatizar o controle de energia.',
- // Notifications empty state
- noProvidersTitle: 'Nenhum provedor configurado',
- noProvidersDescription: 'Adicione um provedor para receber alertas.',
- noTemplatesAvailable: 'Nenhum modelo disponível. Reinicie o backend para gerar os modelos padrão.',
- // API permissions
- apiPermissionView: 'Visualizar status da impressora e fila',
- apiPermissionEdit: 'Adicionar e remover itens da fila de impressão',
- // API keys
- apiKeysEmptyTitle: 'Nenhuma chave API',
- apiKeysEmptyDescription: 'Crie uma chave API para integrar com serviços externos.',
- // Users
- noUsersFound: 'Nenhum usuário encontrado',
- noGroupsFound: 'Nenhum grupo encontrado',
- noGroupsAvailable: 'Nenhum grupo disponível',
- passwordsDoNotMatch: 'As senhas não coincidem',
- systemGroupWarning: 'Os nomes dos grupos do sistema não podem ser alterados',
- // Auth disabled
- authDisabledTitle: 'Autenticação Desativada',
- authDisabledFeature1: 'Exigir login para acessar o sistema',
- authDisabledFeature2: 'Criar múltiplos usuários com permissões baseadas em grupos',
- authDisabledFeature3: 'Controlar acesso com mais de 50 permissões granulares',
- // User deletion
- userHasCreated: 'Este usuário criou:',
- userItemsQuestion: 'O que você gostaria de fazer com esses itens?',
- deleteUserConfirm: 'Tem certeza de que deseja excluir este usuário?',
- actionCannotBeUndone: 'Esta ação não pode ser desfeita.',
- // Smart plugs
- addFirstSmartPlug: 'Adicione sua primeira tomada inteligente',
- // Notifications
- providers: 'Provedores',
- log: 'Registro',
- testAll: 'Testar tudo',
- testResults: 'Resultados do teste',
- testPassedCount: '{{count}} aprovado',
- testFailedCount: '{{count}} falhou',
- messageTemplates: 'Modelos de mensagem',
- messageTemplatesDescription: 'Personalize as mensagens de notificação para cada evento.',
- // API Keys section
- apiKeys: 'Chaves API',
- apiKeysDescription: 'Crie chaves API para integrações externas e webhooks.',
- createKey: 'Criar Chave',
- apiKeyCreated: 'Chave API criada com sucesso',
- apiKeyCopyWarning: "Copie esta chave agora - ela não será exibida novamente!",
- useInApiBrowser: 'Usar no Navegador API',
- createNewApiKey: 'Criar Nova Chave API',
- keyName: 'Nome da Chave',
- keyNamePlaceholder: 'e.g., Home Assistant, OctoPrint',
- readStatus: 'Status de Leitura',
- readStatusDescription: 'Visualizar status da impressora e fila',
- manageQueue: 'Gerenciar Fila',
- manageQueueDescription: 'Adicionar e remover itens da fila de impressão',
- controlPrinter: 'Controlar Impressora',
- controlPrinterDescription: 'Pausar, retomar e parar impressões',
- unnamedKey: 'Chave Sem Nome',
- lastUsed: 'Último uso',
- read: 'Ler',
- control: 'Controlar',
- createFirstKey: 'Crie sua primeira chave',
- webhookEndpoints: 'Endpoints de Webhook',
- webhookApiKeyHint: 'Use sua chave API no cabeçalho X-API-Key.',
- webhook: {
- getAllStatus: 'Obter status de todas as impressoras',
- getSpecificStatus: 'Obter status de uma impressora específica',
- addToQueue: 'Adicionar à fila de impressão',
- pausePrint: 'Pausar impressão',
- resumePrint: 'Retomar impressão',
- stopPrint: 'Parar impressão',
- },
- apiBrowser: 'Navegador API',
- apiBrowserDescription: 'Explore e teste todos os endpoints de API disponíveis.',
- apiKeyForTesting: 'Chave API para Teste',
- apiKeyPlaceholder: 'Cole sua chave API aqui para testar endpoints autenticados...',
- apiKeyHint: 'Esta chave será enviada como cabeçalho X-API-Key nas solicitações.',
- deleteApiKeyTitle: 'Excluir Chave API',
- deleteApiKeyMessage: 'Tem certeza de que deseja excluir esta chave API? Quaisquer integrações usando esta chave deixarão de funcionar.',
- deleteKey: 'Excluir Chave',
- // Filament tab
- amsDisplayThresholds: 'Limiares de Exibição AMS',
- amsThresholdsDescription: 'Configure os limiares de cores para os indicadores de umidade e temperatura do AMS.',
- humidity: 'Umidade',
- goodGreen: 'Bom (verde)',
- fairOrange: 'Razoável (laranja)',
- aboveFairBad: 'Acima do limiar razoável mostra como vermelho (ruim)',
- temperature: 'Temperatura',
- goodBlue: 'Bom (azul)',
- aboveFairHot: 'Acima do limiar razoável mostra como vermelho (quente)',
- historyRetention: 'Retenção de Histórico',
- keepSensorHistory: 'Manter histórico do sensor por',
- historyRetentionDescription: 'Dados antigos de umidade e temperatura serão automaticamente excluídos',
- printModal: 'Modal de Impressão',
- expandCustomMapping: 'Expandir mapeamento personalizado por padrão',
- expandCustomMappingDescription: 'Ao imprimir em várias impressoras, mostrar o mapeamento AMS por impressora expandido',
- // User management
- authentication: 'Autenticação',
- authEnabledDescription: 'Sua instância está protegida com autenticação de usuário',
- authDisabledDescription: 'Ative para exigir login e gerenciar o acesso dos usuários',
- authDisabledMessage: 'Ative a autenticação para criar contas de usuário, gerenciar permissões e proteger sua instância do Bambuddy.',
- enableAuthentication: 'Ativar Autenticação',
- currentUser: 'Usuário Atual',
- changePassword: 'Alterar Senha',
- admin: 'Administrador',
- users: 'Usuários',
- addUser: 'Adicionar Usuário',
- groups: 'Grupos',
- addGroup: 'Adicionar Grupo',
- system: 'Sistema',
- noDescription: 'Sem descrição',
- userCount: '{{count}} usuários',
- permissionCount: '{{count}} permissões',
- createUser: 'Criar Usuário',
- username: 'Nome de Usuário',
- enterUsername: 'Digite o nome de usuário',
- password: 'Senha',
- enterPassword: 'Digite a senha (mínimo 6 caracteres)',
- confirmPassword: 'Confirmar Senha',
- confirmPasswordPlaceholder: 'Confirme a senha',
- // Title tooltips
- viewReleaseOnGitHub: 'Ver lançamento no GitHub',
- turnAllPlugsOn: 'Ligar todas as tomadas',
- turnAllPlugsOff: 'Desligar todas as tomadas',
- // Modal: Clear logs
- clearNotificationLogs: 'Limpar Logs de Notificação',
- clearLogsMessage: 'Isso excluirá permanentemente todos os logs de notificação com mais de 30 dias. Esta ação não pode ser desfeita.',
- clearLogs: 'Limpar Logs',
- // Modal: Reset UI
- resetUiPreferences: 'Redefinir Preferências de UI',
- 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.',
- resetPreferences: 'Redefinir Preferências',
- // Modal: Delete group
- deleteGroupTitle: 'Excluir Grupo',
- deleteGroupMessage: 'Tem certeza de que deseja excluir este grupo? Usuários neste grupo perderão essas permissões.',
- deleteGroup: 'Excluir Grupo',
- // Modal: Disable auth
- disableAuthenticationTitle: 'Desativar Autenticação',
- 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.',
- disableAuthentication: 'Desativar Autenticação',
- // Additional settings
- configureBambuddy: 'Configurar Bambuddy',
- systemDefault: 'Padrão do Sistema',
- archiveSettings: 'Configurações de Arquivo',
- newWindow: 'Nova Janela',
- embeddedOverlay: 'Sobreposição Incorporada',
- preferredSlicer: 'Fatiador Preferido',
- preferredSlicerDescription: 'Escolha qual aplicativo de fatiamento abrirá os arquivos',
- externalCameras: 'Câmeras Externas',
- costTracking: 'Rastreamento de Custos',
- printsOnly: 'Apenas Impressões',
- totalConsumption: 'Consumo Total',
- dataManagement: 'Gerenciamento de Dados',
- storageUsage: 'Uso de Armazenamento',
- storageUsageDescription: 'Detalhamento do uso de dados por categoria',
- storageUsageTotal: 'Total',
- storageUsageErrors: 'Erros',
- storageUsageOtherBreakdown: 'Outros (inclui ativos estáticos, scripts e arquivos de configuração)',
- storageUsageSystem: 'Sistema',
- storageUsageData: 'Dados',
- storageUsageUnavailable: 'Informações de uso de armazenamento indisponíveis',
- clearNotificationLogsDescription: 'Excluir logs de notificação com mais de 30 dias',
- 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.',
- enableHomeAssistant: 'Ativar Home Assistant',
- enableMqtt: 'Ativar MQTT',
- useTls: 'Usar TLS',
- enableMetricsEndpoint: 'Ativar Endpoint de Métricas',
- availableMetrics: 'Métricas Disponíveis',
- editUser: 'Editar Usuário',
- deleteUserTitle: 'Excluir Usuário',
- groupName: 'Nome do Grupo',
- // Placeholders
- leaveEmptyForAnonymous: 'Deixe vazio para anônimo',
- leaveEmptyForNoAuth: 'Deixe vazio para sem autenticação',
- enterNewPassword: 'Digite a nova senha',
- confirmNewPassword: 'Confirme a nova senha',
- enterGroupName: 'Digite o nome do grupo',
- enterDescriptionOptional: 'Digite a descrição (opcional)',
- enterCurrentPassword: 'Digite a senha atual',
- enterNewPasswordMin6: 'Digite a nova senha (mínimo 6 caracteres)',
- toast: {
- keyCopied: 'Chave copiada para a área de transferência',
- copyFailed: 'Falha ao copiar a chave',
- keyAddedToBrowser: 'Chave adicionada ao Navegador de API',
- clearLogsFailed: 'Falha ao limpar logs',
- uiPreferencesReset: 'Preferências de UI redefinidas. Atualizando...',
- authDisabled: 'Autenticação desativada com sucesso',
- authDisableFailed: 'Falha ao desativar a autenticação',
- apiKeyCreated: 'Chave de API criada',
- apiKeyDeleted: 'Chave de API excluída',
- userCreated: 'Usuário criado com sucesso',
- userUpdated: 'Usuário atualizado com sucesso',
- userDeleted: 'Usuário excluído com sucesso',
- groupCreated: 'Grupo criado com sucesso',
- groupUpdated: 'Grupo atualizado com sucesso',
- groupDeleted: 'Grupo excluído com sucesso',
- fillRequiredFields: 'Por favor, preencha todos os campos obrigatórios',
- passwordsDoNotMatch: 'As senhas não coincidem',
- passwordTooShort: 'A senha deve ter pelo menos 6 caracteres',
- enterGroupName: 'Por favor, insira um nome de grupo',
- settingsSaved: 'Configurações salvas',
- cameraSettingsSaved: 'Configurações da câmera salvas',
- enterCameraUrl: 'Por favor, insira a URL da câmera',
- passwordChanged: 'Senha alterada com sucesso',
- connectionFailed: 'Falha na conexão',
- testFailed: 'Falha no teste',
- cameraConnected: 'Câmera conectada{{resolution}}',
- },
- testConnection: 'Testar Conexão',
- catalog: {
- spoolCatalog: 'Catálogo de Carretéis',
- spoolCatalogDescription: 'Pesos de carretéis vazios por marca/tipo. Usado para pesquisa automática de peso ao adicionar carretéis.',
- searchCatalog: 'Pesquisar no catálogo...',
- addNewEntry: 'Adicionar Nova Entrada',
- namePlaceholder: 'Nome (ex.: Bambu Lab - Plástico)',
- weight: 'Peso',
- type: 'Tipo',
- default: 'Padrão',
- custom: 'Personalizado',
- noMatch: 'Nenhuma entrada corresponde à sua pesquisa',
- empty: 'Nenhuma entrada no catálogo',
- deleteEntry: 'Excluir Entrada',
- deleteConfirm: 'Tem certeza de que deseja excluir "{{name}}"?',
- resetCatalog: 'Redefinir Catálogo',
- resetConfirm: 'Redefinir catálogo para os padrões? Isso removerá todas as entradas personalizadas.',
- loadFailed: 'Falha ao carregar o catálogo de carretéis',
- nameWeightRequired: 'Nome e peso são obrigatórios',
- entryAdded: 'Entrada adicionada',
- addFailed: 'Falha ao adicionar entrada',
- entryUpdated: 'Entrada atualizada',
- updateFailed: 'Falha ao atualizar entrada',
- entryDeleted: 'Entrada excluída',
- deleteFailed: 'Falha ao excluir entrada',
- resetSuccess: 'Catálogo redefinido para os padrões',
- resetFailed: 'Falha ao redefinir catálogo',
- exported: 'Exportadas {{count}} entradas',
- imported: 'Importadas {{added}} entradas ({{skipped}} ignoradas)',
- importFailed: 'Falha ao importar: formato JSON inválido',
- exportTooltip: 'Exportar catálogo para JSON',
- importTooltip: 'Importar catálogo de JSON',
- resetTooltip: 'Redefinir para os padrões',
- },
- colorCatalog: {
- title: 'Catálogo de Cores',
- description: 'Cores de filamento por fabricante/material. Usado para pesquisa automática de cores ao adicionar carretéis.',
- searchColors: 'Pesquisar cores...',
- allManufacturers: 'Todos os fabricantes',
- addNewColor: 'Adicionar Nova Cor',
- manufacturer: 'Fabricante',
- colorName: 'Nome da Cor',
- hex: 'Hex',
- materialOptional: 'Material (opcional)',
- showing: 'Mostrando {{filtered}} de {{total}} cores',
- noMatch: 'Nenhuma cor corresponde à sua pesquisa',
- empty: 'Nenhuma cor no catálogo',
- deleteColor: 'Excluir Cor',
- deleteConfirm: 'Tem certeza de que deseja excluir "{{name}}"?',
- resetCatalog: 'Redefinir Catálogo de Cores',
- resetConfirm: 'Redefinir catálogo para os padrões? Isso removerá todas as cores personalizadas.',
- sync: 'Sincronizar',
- starting: 'Iniciando...',
- syncTooltip: 'Sincronizar do FilamentColors.xyz (2000+ cores, pode levar um minuto)',
- loadFailed: 'Falha ao carregar o catálogo de cores',
- fieldsRequired: 'Fabricante, nome da cor e cor hex são obrigatórios',
- colorAdded: 'Cor adicionada',
- addFailed: 'Falha ao adicionar cor',
- colorUpdated: 'Cor atualizada',
- updateFailed: 'Falha ao atualizar cor',
- colorDeleted: 'Cor excluída',
- deleteFailed: 'Falha ao excluir cor',
- resetSuccess: 'Catálogo de cores redefinido para os padrões',
- resetFailed: 'Falha ao redefinir catálogo',
- syncUpToDate: 'Já está atualizado ({{count}} cores verificadas)',
- syncComplete: 'Adicionadas {{added}} novas cores ({{skipped}} já existiam)',
- syncError: 'Erro de sincronização',
- syncFailed: 'Falha ao sincronizar do FilamentColors.xyz',
- exported: 'Exportadas {{count}} cores',
- imported: 'Importadas {{added}} cores ({{skipped}} ignoradas)',
- importFailed: 'Falha ao importar: formato JSON inválido',
- },
- },
- // Notifications (for push notifications)
- notification: {
- printStarted: {
- title: 'Impressão Iniciada',
- body: '{{printer}}: {{filename}} iniciou a impressão',
- },
- printCompleted: {
- title: 'Impressão Concluída',
- body: '{{printer}}: {{filename}} foi concluída com sucesso',
- },
- printFailed: {
- title: 'Falha na Impressão',
- body: '{{printer}}: {{filename}} falhou',
- },
- printStopped: {
- title: 'Impressão Interrompida',
- body: '{{printer}}: {{filename}} foi interrompida',
- },
- printProgress: {
- title: 'Progresso da Impressão',
- body: '{{printer}}: {{filename}} está {{percent}}% concluída',
- },
- printerOffline: {
- title: 'Impressora Offline',
- body: '{{printer}} está offline',
- },
- printerError: {
- title: 'Erro na Impressora',
- body: '{{printer}}: {{error}}',
- },
- filamentLow: {
- title: 'Filamento Baixo',
- body: '{{printer}}: O filamento está acabando',
- },
- maintenanceDue: {
- title: 'Manutenção Pendente',
- body: '{{printer}}: {{items}} precisam de atenção',
- },
- },
- // Errors
- errors: {
- generic: 'Algo deu errado',
- networkError: 'Erro de rede. Por favor, verifique sua conexão.',
- notFound: 'Não encontrado',
- unauthorized: 'Não autorizado',
- serverError: 'Erro no servidor',
- validationError: 'Por favor, verifique sua entrada',
- printerConnectionFailed: 'Falha ao conectar à impressora',
- saveFailed: 'Falha ao salvar alterações',
- deleteFailed: 'Falha ao excluir',
- loadFailed: 'Falha ao carregar dados',
- },
- // HMS Errors modal
- hmsErrors: {
- title: 'Erros - {{name}}',
- noErrors: 'Nenhum erro',
- viewOnWiki: 'Ver no Bambu Lab Wiki',
- clearInstructions: 'Limpe os erros na impressora para descartá-los aqui.',
- clearErrors: 'Limpar Erros',
- clearSuccess: 'Erros HMS limpos',
- clearFailed: 'Falha ao limpar erros HMS',
- },
- // MQTT Debug modal
- mqttDebug: {
- title: 'MQTT Log de Depuração',
- searchPlaceholder: 'Pesquisar tópico ou payload...',
- noMessages: 'Nenhuma mensagem registrada ainda',
- startLoggingHint: 'Clique em "Iniciar Registro" para começar a capturar mensagens MQTT',
- noMessagesMatch: 'Nenhuma mensagem corresponde ao seu filtro',
- adjustFilterHint: 'Tente ajustar seus critérios de pesquisa ou filtro',
- incoming: 'Entrada',
- outgoing: 'Saída',
- loggingStopped: 'Registro interrompido',
- loggingActive: 'Registro ativo - as mensagens serão atualizadas automaticamente',
- startLogging: 'Iniciar Registro',
- stopLogging: 'Parar Registro',
- clearLog: 'Limpar Registro',
- topic: 'ópico',
- timestamp: 'Carimbo de Data/Hora',
- direction: 'Direção',
- all: 'Todos',
- },
- // Printer File Manager modal (printer internal storage)
- printerFiles: {
- title: 'Gerenciador de Arquivos',
- storageUsed: 'Usado:',
- storageFree: 'Livre:',
- filterPlaceholder: 'Filtrar arquivos...',
- deleteButton: 'Excluir',
- deleteFiles: 'Excluir {{count}} arquivos',
- deleteFileConfirm: 'Excluir "{{name}}"? Isso não pode ser desfeito.',
- deleteFilesConfirm: 'Excluir {{count}} arquivos selecionados? Isso não pode ser desfeito.',
- noFiles: 'Nenhum arquivo na impressora',
- loadingFiles: 'Carregando arquivos...',
- failedToLoad: 'Falha ao carregar arquivos',
- toast: {
- filesDeleted: 'Arquivos excluídos: {{count}}',
- deleteFailed: 'Falha ao excluir: {{error}}',
- },
- },
- // Confirmations
- confirm: {
- delete: 'Tem certeza de que deseja excluir isso?',
- unsavedChanges: 'Você tem alterações não salvas. Tem certeza de que deseja sair?',
- clearQueue: 'Tem certeza de que deseja limpar a fila?',
- },
- // Login page
- login: {
- title: 'Bambuddy Login',
- subtitle: 'Faça login na sua conta',
- username: 'Nome de usuário',
- usernamePlaceholder: 'Digite seu nome de usuário',
- usernameOrEmail: 'Nome de usuário ou Email',
- usernameOrEmailPlaceholder: 'Nome de usuário ou Email',
- password: 'Senha',
- passwordPlaceholder: 'Digite sua senha',
- signIn: 'Entrar',
- signingIn: 'Entrando...',
- forgotPassword: 'Esqueceu sua senha?',
- loginSuccess: 'Login realizado com sucesso',
- loginFailed: 'Falha no login',
- enterCredentials: 'Por favor, insira nome de usuário e senha',
- forgotPasswordTitle: 'Esqueceu a Senha',
- forgotPasswordMessage: "Se você esqueceu sua senha, entre em contato com o administrador do sistema para redefini-la.",
- forgotPasswordEmailMessage: "Digite seu endereço de email e enviaremos uma nova senha.",
- emailAddress: 'Endereço de Email',
- emailPlaceholder: 'seu.email@exemplo.com',
- cancel: 'Cancelar',
- sending: 'Enviando...',
- sendResetEmail: 'Enviar Email de Redefinição',
- howToReset: 'Como redefinir sua senha:',
- resetStep1: 'Entre em contato com o administrador do Bambuddy',
- resetStep2: 'Peça para redefinir sua senha na Gestão de Usuários',
- resetStep3: 'Eles podem definir uma nova senha temporária para você',
- resetStep4: 'Faça login com a nova senha e altere-a nas Configurações',
- gotIt: 'Entendi',
- },
- // Setup page
- setup: {
- title: 'Bambuddy Configuração',
- subtitle: 'Configure a autenticação para sua instância do Bambuddy',
- enableAuth: 'Ativar Autenticação',
- adminAccount: 'Conta de Administrador',
- 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.',
- adminUsername: 'Nome de usuário do administrador',
- adminPassword: 'Senha do administrador',
- optionalIfAdminExists: '(opcional se usuários administradores existirem)',
- adminUsernamePlaceholder: 'Digite o nome de usuário do administrador (opcional)',
- adminPasswordPlaceholder: 'Digite a senha do administrador (opcional)',
- confirmPassword: 'Confirmar Senha',
- confirmPasswordPlaceholder: 'Confirme a senha do administrador',
- settingUp: 'Configurando...',
- completeSetup: 'Concluir Configuração',
- toast: {
- authEnabledAdminCreated: 'Autenticação ativada e usuário administrador criado',
- authEnabledExistingAdmins: 'Autenticação ativada usando usuários administradores existentes',
- setupCompleted: 'Configuração concluída',
- 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',
- passwordsDoNotMatch: 'As senhas não coincidem',
- passwordTooShort: 'A senha deve ter pelo menos 6 caracteres',
- },
- },
- // Password change
- changePassword: {
- title: 'Alterar Senha',
- currentPassword: 'Senha Atual',
- currentPasswordPlaceholder: 'Digite a senha atual',
- newPassword: 'Nova Senha',
- newPasswordPlaceholder: 'Digite a nova senha (mínimo 6 caracteres)',
- confirmPassword: 'Confirmar Senha',
- confirmPasswordPlaceholder: 'Confirme a nova senha',
- passwordsDoNotMatch: 'As senhas não coincidem',
- passwordTooShort: 'A senha deve ter pelo menos 6 caracteres',
- changing: 'Alterando...',
- success: 'Senha alterada com sucesso',
- failed: 'Falha ao alterar a senha',
- },
- // Plate detection alert
- plateAlert: {
- title: 'Impressão Pausada!',
- message: 'Objetos detectados na mesa de impressão. A impressão foi automaticamente pausada. Por favor, limpe a mesa e retome a impressão.',
- understand: 'Entendi',
- },
- // Camera page
- camera: {
- title: 'Visualização da Câmera',
- invalidPrinterId: 'ID da impressora inválido',
- live: 'Ao Vivo',
- snapshot: 'Captura',
- restartStream: 'Reiniciar transmissão',
- refreshSnapshot: 'Atualizar captura',
- fullscreen: 'Tela Cheia',
- exitFullscreen: 'Sair da Tela Cheia',
- connectingToCamera: 'Conectando à câmera...',
- capturingSnapshot: 'Capturando imagem...',
- connectionLost: 'Conexão perdida',
- connectionFailed: 'Falha na conexão com a câmera',
- reconnecting: 'Reconectando em {{countdown}}s... (tentativa {{attempt}}/{{max}})',
- reconnectNow: 'Reconectar agora',
- cameraUnavailable: 'Câmera indisponível',
- cameraUnavailableDesc: 'Certifique-se de que a impressora está ligada e conectada.',
- noCamera: 'Nenhuma câmera disponível',
- retry: 'Tentar novamente',
- cameraStream: 'Transmissão da câmera',
- zoomOut: 'Reduzir zoom',
- zoomIn: 'Aumentar zoom',
- resetZoom: 'Redefinir zoom',
- recording: 'Gravando',
- startRecording: 'Iniciar gravação',
- stopRecording: 'Parar gravação',
- chamberLight: 'Alternar luz da câmara',
- },
- // Groups management
- groups: {
- title: 'Gerenciamento de Grupos',
- subtitle: 'Gerenciar grupos de permissão para controle de acesso',
- backToSettings: 'Voltar para Configurações',
- createGroup: 'Criar Grupo',
- noPermission: 'Você não tem permissão para acessar esta página.',
- system: 'Sistema',
- noDescription: 'Sem descrição',
- usersCount: '{{count}} usuários',
- permissionsCount: '{{count}} permissões',
- edit: 'Editar',
- delete: 'Excluir',
- toast: {
- created: 'Grupo criado com sucesso',
- updated: 'Grupo atualizado com sucesso',
- deleted: 'Grupo excluído com sucesso',
- enterGroupName: 'Por favor, insira um nome para o grupo',
- },
- modal: {
- editGroup: 'Editar Grupo',
- createGroup: 'Criar Grupo',
- cancel: 'Cancelar',
- saving: 'Salvando...',
- creating: 'Criando...',
- saveChanges: 'Salvar Alterações',
- },
- form: {
- groupName: 'Nome do Grupo',
- groupNamePlaceholder: 'Insira o nome do grupo',
- systemGroupWarning: 'Os nomes dos grupos do sistema não podem ser alterados',
- description: 'Descrição',
- descriptionPlaceholder: 'Insira a descrição (opcional)',
- permissions: 'Permissões ({{count}} selecionadas)',
- },
- deleteModal: {
- title: 'Excluir Grupo',
- message: 'Tem certeza de que deseja excluir este grupo? Os usuários deste grupo perderão essas permissões.',
- confirm: 'Excluir Grupo',
- },
- editor: {
- title: 'Editar Grupo',
- createTitle: 'Criar Grupo',
- search: 'Pesquisar permissões...',
- selectAll: 'Selecionar Tudo',
- clearAll: 'Limpar Tudo',
- permissionsSelected: '{{count}} selecionada(s)',
- noResults: 'Nenhuma permissão corresponde à sua pesquisa',
- },
- },
- // Users management
- users: {
- title: 'Gerenciamento de Usuários',
- subtitle: 'Gerenciar usuários e seu acesso à sua instância do Bambuddy',
- backToSettings: 'Voltar para Configurações',
- createUser: 'Criar Usuário',
- noPermission: 'Você não tem permissão para acessar esta página.',
- admin: 'Admin',
- noGroups: 'Sem grupos',
- active: 'Ativo',
- inactive: 'Inativo',
- edit: 'Editar',
- delete: 'Excluir',
- system: 'Sistema',
- noGroupsAvailable: 'Nenhum grupo disponível',
- table: {
- username: 'Nome de Usuário',
- groups: 'Grupos',
- status: 'Status',
- actions: 'Ações',
- },
- toast: {
- created: 'Usuário criado com sucesso',
- updated: 'Usuário atualizado com sucesso',
- deleted: 'Usuário excluído com sucesso',
- fillRequired: 'Por favor, preencha todos os campos obrigatórios',
- passwordsDoNotMatch: 'As senhas não coincidem',
- passwordTooShort: 'A senha deve ter pelo menos 6 caracteres',
- },
- modal: {
- createUser: 'Criar Usuário',
- editUser: 'Editar Usuário',
- cancel: 'Cancelar',
- creating: 'Criando...',
- saving: 'Salvando...',
- saveChanges: 'Salvar Alterações',
- advancedAuthSubtitle: 'com Autenticação Avançada',
- },
- form: {
- username: 'Nome de Usuário',
- usernamePlaceholder: 'Insira o nome de usuário',
- email: 'Email',
- emailPlaceholder: 'user@example.com',
- password: 'Senha',
- passwordPlaceholder: 'Insira a senha',
- confirmPassword: 'Confirmar Senha',
- confirmPasswordPlaceholder: 'Confirme a senha',
- newPasswordPlaceholder: 'Insira a nova senha',
- confirmNewPasswordPlaceholder: 'Confirme a nova senha',
- leaveBlankToKeep: 'deixe em branco para manter a atual',
- groups: 'Grupos',
- optional: 'opcional',
- autoGeneratedPassword: 'Uma senha segura será gerada automaticamente e enviada por e-mail ao usuário.',
- passwordManagedByAdvancedAuth: 'A senha é gerenciada pela Autenticação Avançada. Use "Redefinir Senha" para enviar uma nova senha ao usuário por e-mail.',
- resetPassword: 'Redefinir Senha',
- resettingPassword: 'Redefinindo Senha...',
- },
- deleteModal: {
- title: 'Excluir Usuário',
- message: 'Tem certeza de que deseja excluir este usuário? Esta ação não pode ser desfeita.',
- confirm: 'Excluir Usuário',
- },
- },
- // Stream overlay
- streamOverlay: {
- title: 'Stream Overlay',
- invalidPrinterId: 'ID da impressora inválido',
- cameraStream: 'Transmissão da câmera',
- progress: 'Progresso da impressão',
- eta: 'ETA',
- printerIdle: 'Impressora ociosa',
- printerOffline: 'Impressora offline',
- status: {
- printing: 'Imprimindo',
- paused: 'Pausado',
- finished: 'Concluído',
- failed: 'Falhou',
- idle: 'Ocioso',
- unknown: 'Desconhecido',
- },
- },
- // Profiles
- profiles: {
- title: 'Perfis',
- subtitle: 'Gerencie seus presets de fatiador e calibrações de avanço de pressão',
- tabs: {
- cloud: 'Perfis na Nuvem',
- local: 'Perfis Locais',
- kprofiles: 'K-Perfis',
- },
- localProfiles: {
- title: 'Perfis Locais',
- subtitle: 'Importe e gerencie presets de fatiador do OrcaSlicer',
- import: 'Importar Perfis',
- importDesc: 'Solte arquivos .bbscfg, .bbsflmt, .orca_filament, .zip ou .json aqui',
- importing: 'Importando...',
- search: 'Pesquisar presets locais...',
- noPresets: 'Nenhum preset local ainda',
- badge: 'Local',
- edit: 'Editar',
- delete: 'Excluir',
- cancel: 'Cancelar',
- deleteConfirmTitle: 'Excluir Preset',
- deleteConfirm: 'Tem certeza de que deseja excluir este preset? Esta ação não pode ser desfeita.',
- source: 'Fonte',
- inheritsFrom: 'Herdado de',
- filamentType: 'Tipo',
- vendor: 'Fornecedor',
- compatiblePrinters: 'Impressoras Compatíveis',
- nozzleTemp: 'Temperatura do Bico',
- cost: 'Custo',
- density: 'Densidade',
- pressureAdvance: 'Avanço de Pressão',
- filament: 'Filamento',
- process: 'Processo',
- printer: 'Impressora',
- toast: {
- importSuccess: '{{count}} preset(s) importada(s)',
- importSkipped: '{{count}} preset(s) ignorada(s) (duplicadas)',
- importError: '{{count}} erro(s) durante a importação',
- deleted: 'Preset excluído',
- updated: 'Preset atualizado',
- },
- },
- connectedAs: 'Conectado como',
- logout: 'Sair',
- noLogoutPermission: 'Você não tem permissão para sair',
- failedToLoad: 'Falha ao carregar perfis',
- retry: 'Tentar novamente',
- time: {
- justNow: 'Agora mesmo',
- minsAgo: 'há {{count}} minutos',
- hoursAgo: 'há {{count}} horas',
- daysAgo: 'há {{count}} dias',
- },
- toast: {
- loggedOut: 'Desconectado',
- },
- login: {
- title: 'Conectar ao Bambu Cloud',
- subtitle: 'Sincronize seus presets de fatiador entre dispositivos',
- email: 'Email',
- password: 'Senha',
- region: 'Região',
- regionGlobal: 'Global',
- regionChina: 'China',
- verificationCode: 'Código de Verificação',
- totpCode: 'Código do Autenticador',
- checkEmail: 'Verifique seu email ({{email}}) para um código de 6 dígitos',
- enterTotpHint: 'Digite o código de 6 dígitos do seu aplicativo autenticador',
- accessToken: 'Token de Acesso',
- accessTokenHint: 'Cole seu token de acesso Bambu Lab (do Bambu Studio)',
- back: 'Voltar',
- loginButton: 'Entrar',
- verifyButton: 'Verificar',
- setTokenButton: 'Definir Token',
- useToken: 'Usar token de acesso em vez disso',
- useEmail: 'Entrar com email em vez disso',
- toast: {
- loggedIn: 'Conectado com sucesso',
- codeSent: 'Código de verificação enviado para seu email',
- enterTotp: 'Digite o código do seu aplicativo autenticador',
- tokenSet: 'Token definido com sucesso',
- },
- },
- presets: {
- myPreset: 'Meu preset (editável)',
- duplicate: 'Duplicar',
- editable: 'Editável',
- failedToLoadDetails: 'Falha ao carregar detalhes do preset',
- deleteConfirm: 'Excluir este preset?',
- deleteWarning: 'Isso excluirá permanentemente "{{name}}" do Bambu Cloud. Esta ação não pode ser desfeita.',
- noDuplicatePermission: 'Você não tem permissão para duplicar presets',
- noEditPermission: 'Você não tem permissão para editar presets',
- noDeletePermission: 'Você não tem permissão para excluir presets',
- types: {
- filament: 'Preset de filamento',
- printer: 'Preset de impressora',
- process: 'Preset de processo',
- },
- toast: {
- deleted: 'Preset excluído',
- created: 'Preset criado',
- updated: 'Preset atualizado',
- duplicated: 'Preset duplicado',
- fieldAdded: 'Campo "{{key}}" adicionado',
- exported: 'Preset exportado',
- },
- baseLabel: 'Base: {{name}}',
- currentLabel: 'Atual: {{name}}',
- newPreset: 'Novo Preset',
- editPreset: 'Editar Preset',
- duplicatePreset: 'Duplicar Preset',
- createNewPreset: 'Criar Novo Preset',
- customizeSettings: 'Personalizar configurações para seu novo preset',
- compareWithBase: 'Comparar com o preset base',
- compare: 'Comparar',
- // CreatePresetModal - Basic Info
- basePreset: 'Preset Base',
- selectBasePreset: 'Selecionar preset base...',
- presetName: 'Nome do Preset',
- myCustomPreset: 'Meu preset personalizado',
- inheritsFrom: 'Herdado de',
- dropJsonToImport: 'Solte o arquivo JSON para importar',
- // CreatePresetModal - Tabs
- tabs: {
- common: 'Comum',
- allFields: 'Todos os Campos',
- },
- // CreatePresetModal - All Fields Tab
- availableFields: 'Campos Disponíveis',
- searchFieldsPlaceholder: 'Pesquisar campos...',
- noMatchingFields: 'Nenhum campo correspondente',
- allFieldsAdded: 'Todos os campos adicionados',
- addCustomField: 'Adicionar campo personalizado',
- yourOverrides: 'Suas Substituições',
- noOverridesYet: 'Nenhuma substituição ainda',
- clickFieldsToAdd: 'Clique nos campos à esquerda para adicioná-los',
- saveAsTemplate: 'Salvar como modelo',
- jsonTip: 'Dica: Arraste e solte um arquivo .json em qualquer lugar deste modal para importar configurações',
- },
- cloudView: {
- searchPlaceholder: 'Pesquisar presets...',
- templates: 'Modelos',
- refresh: 'Atualizar',
- newPreset: 'Novo Preset',
- clearFilters: 'Limpar filtros',
- // Compare mode
- compareMode: 'Modo de Comparação',
- selectAnotherPreset: 'Selecionar outro preset {{type}}',
- clickTwoPresets: 'Clique em dois presets do mesmo tipo para comparar',
- selectFirst: '1. Selecionar primeiro',
- selectSecond: '2. Selecionar segundo',
- compareNow: 'Comparar Agora',
- // Status row
- lastSynced: 'Última sincronização:',
- showingCount: 'Mostrando {{showing}} de {{total}} presets',
- noPresetsFound: 'Nenhum preset encontrado',
- // Column headers
- columns: {
- filament: 'Filamento',
- process: 'Processo',
- printer: 'Impressora',
- },
- noFilamentPresets: 'Nenhum preset de filamento',
- noProcessPresets: 'Nenhum preset de processo',
- noPrinterPresets: 'Nenhum preset de impressora',
- // Filters
- filters: {
- type: 'Tipo',
- owner: 'Proprietário',
- printer: 'Impressora',
- nozzle: 'Bico',
- filament: 'Filamento',
- layer: 'Camada',
- all: 'Todos',
- myPresets: 'Meus Presets',
- builtIn: 'Integrado',
- process: 'Processo',
- },
- // Permissions
- noTemplatesPermission: 'Você não tem permissão para gerenciar modelos',
- noRefreshPermission: 'Você não tem permissão para atualizar perfis',
- noCreatePermission: 'Você não tem permissão para criar presets',
- },
- templates: {
- title: 'Modelos Rápidos',
- noTemplates: 'Nenhum modelo ainda',
- createFirst: 'Crie modelos a partir do editor de presets',
- typeFilter: 'Tipo:',
- deleteTitle: 'Excluir Modelo',
- deleteWarning: 'Esta ação não pode ser desfeita',
- deleteConfirm: 'Tem certeza de que deseja excluir "{{name}}"?',
- namePlaceholder: 'Nome do modelo',
- descriptionPlaceholder: 'Descrição',
- settingsJson: 'Configurações (JSON)',
- fieldsCount: '{{count}} campos',
- shownInModals: 'Exibido em modais',
- hiddenInModals: 'Oculto em modais',
- apply: 'Aplicar',
- toast: {
- deleted: 'Modelo excluído',
- updated: 'Modelo atualizado',
- created: 'Modelo criado',
- applied: 'Modelo aplicado',
- },
- },
- },
- // Support/Debug
- support: {
- debugLoggingActive: 'Registro de depuração ativo',
- manageLogs: 'Gerenciar',
- collectItem7: 'Conectividade da impressora e versões de firmware',
- collectItem8: 'Status de integração (Spoolman, MQTT, HA)',
- collectItem9: 'Interfaces de rede (somente sub-redes)',
- collectItem10: 'Versões de pacotes Python',
- collectItem11: 'Verificações de integridade do banco de dados',
- collectItem12: 'Detalhes do ambiente Docker',
- },
- // File manager
- fileManager: {
- title: 'Gerenciador de Arquivos',
- subtitle: 'Organize e gerencie seus arquivos de impressão',
- uploadFiles: 'Enviar Arquivos',
- newFolder: 'Nova Pasta',
- folderName: 'Nome da Pasta',
- folderNamePlaceholder: 'ex.: Peças Funcionais',
- renameFile: 'Renomear Arquivo',
- renameFolder: 'Renomear Pasta',
- moveFiles: 'Mover {{count}} Arquivo(s)',
- rootNoFolder: 'Raiz (Sem Pasta)',
- current: 'Atual',
- linkFolder: 'Vincular Pasta',
- linkFolderDescription: 'Vincular "{{name}}" a um projeto ou arquivo para acesso rápido.',
- project: 'Projeto',
- archive: 'Arquivo',
- noProjectsFound: 'Nenhum projeto encontrado',
- noArchivesFound: 'Nenhum arquivo encontrado',
- unlink: 'Desvincular',
- link: 'Vincular',
- dragDropFiles: 'Arraste e solte os arquivos aqui',
- dropFilesHere: 'Solte os arquivos aqui',
- orClickToBrowse: 'ou clique para procurar',
- allFileTypesSupported: 'Todos os tipos de arquivos são suportados. Arquivos ZIP serão extraídos.',
- zipFilesDetected: 'Arquivos ZIP detectados',
- zipExtractOptions: 'Arquivos ZIP serão extraídos. Escolha como lidar com a estrutura de pastas:',
- preserveZipStructure: 'Preservar estrutura de pastas do ZIP',
- createFolderFromZip: 'Criar pasta a partir do nome do arquivo ZIP',
- stlThumbnailGeneration: 'Geração de miniaturas STL',
- zipMayContainStl: 'Arquivos ZIP podem conter arquivos STL. Miniaturas podem ser geradas durante a extração.',
- thumbnailsCanBeGenerated: 'Miniaturas podem ser geradas para arquivos STL. Modelos grandes podem levar mais tempo para processar.',
- generateThumbnailsForStl: 'Gerar miniaturas para arquivos STL',
- threemfDetected: 'Arquivos 3MF detectados',
- threemfExtractionInfo: 'Modelo da impressora, material, cor e configurações de impressão serão extraídos automaticamente dos arquivos 3MF.',
- willBeExtracted: 'Será extraído',
- filesExtracted: '{{count}} arquivos extraídos',
- uploadComplete: 'Upload concluído: {{succeeded}} bem-sucedidos',
- uploadFailed: '{{count}} falhou',
- uploading: 'Enviando...',
- changeLink: 'Alterar link...',
- linkTo: 'Vincular a...',
- linkToProjectOrArchive: 'Vincular a projeto ou arquivo',
- addToQueue: 'Adicionar à fila',
- schedulePrint: 'Agendar impressão',
- generateThumbnail: 'Gerar miniatura',
- generateThumbnails: 'Gerar miniaturas',
- generateThumbnailsForMissing: 'Gerar miniaturas para arquivos STL que não possuem',
- gridView: 'Visualização em grade',
- listView: 'Visualização em lista',
- lowDiskSpaceWarning: 'Aviso de pouco espaço em disco',
- lowDiskSpaceDetails: 'Apenas {{free}} livres de {{total}} no total. O limite está definido para {{threshold}} GB nas configurações.',
- files: 'Arquivos',
- folders: 'Pastas',
- size: 'Tamanho',
- free: 'Livre',
- allFiles: 'Todos os arquivos',
- wrap: 'Quebrar texto',
- enableTextWrapping: 'Ativar quebra de texto',
- disableTextWrapping: 'Desativar quebra de texto',
- dragToResizeTooltip: 'Arraste para redimensionar, clique duas vezes para redefinir',
- searchFiles: 'Pesquisar arquivos...',
- allTypes: 'Todos os tipos',
- prints: 'Impressões',
- ascending: 'Crescente',
- descending: 'Decrescente',
- resultsCount: '{{showing}} de {{total}} arquivos',
- selectAll: 'Selecionar tudo',
- deselectAll: 'Desmarcar tudo',
- selected: '{{count}} selecionado(s)',
- adding: 'Adicionando...',
- loadingFiles: 'Carregando arquivos...',
- folderIsEmpty: 'A pasta está vazia',
- noFilesYet: 'Nenhum arquivo ainda',
- folderEmptyDescription: 'Envie arquivos ou mova arquivos para esta pasta para começar.',
- noFilesDescription: 'Envie arquivos para começar a organizar seus arquivos relacionados à impressão.',
- noMatchingFiles: 'Nenhum arquivo correspondente',
- noMatchingFilesDescription: 'Nenhum arquivo corresponde aos seus critérios de pesquisa ou filtro.',
- clearFilters: 'Limpar filtros',
- printedCount: 'Impresso {{count}}x',
- uploadedBy: 'Enviado por',
- deleteFolder: 'Excluir pasta',
- deleteFile: 'Excluir arquivo',
- deleteFilesCount: 'Excluir {{count}} arquivos',
- deleteFolderConfirm: 'Tem certeza de que deseja excluir esta pasta? Todos os arquivos dentro também serão excluídos.',
- deleteFileConfirm: 'Tem certeza de que deseja excluir este arquivo?',
- deleteFilesConfirm: 'Tem certeza de que deseja excluir {{count}} arquivos selecionados? Esta ação não pode ser desfeita.',
- deleting: 'Excluindo...',
- noPermissionRenameFolder: 'Você não tem permissão para renomear pastas',
- noPermissionLinkFolder: 'Você não tem permissão para vincular pastas',
- noPermissionDeleteFolder: 'Você não tem permissão para excluir pastas',
- noPermissionPrint: 'Você não tem permissão para imprimir',
- noPermissionAddToQueue: 'Você não tem permissão para adicionar à fila',
- noPermissionDownload: 'Você não tem permissão para baixar arquivos',
- noPermissionRenameFile: 'Você não tem permissão para renomear este arquivo',
- noPermissionGenerateThumbnail: 'Você não tem permissão para gerar miniaturas',
- noPermissionDeleteFile: 'Você não tem permissão para excluir este arquivo',
- noPermissionCreateFolder: 'Você não tem permissão para criar pastas',
- noPermissionUpload: 'Você não tem permissão para enviar arquivos',
- noPermissionMoveFiles: 'Você não tem permissão para mover arquivos',
- noPermissionDeleteFiles: 'Você não tem permissão para excluir arquivos',
- toast: {
- folderCreated: 'Pasta criada',
- folderDeleted: 'Pasta excluída',
- fileDeleted: 'Arquivo excluído',
- filesDeleted: 'Excluídos {{count}} arquivos',
- filesMoved: 'Arquivos movidos',
- folderLinked: 'Pasta vinculada',
- folderUnlinked: 'Pasta desvinculada',
- addedToQueue: 'Adicionado {{count}} arquivo(s) à fila',
- addedToQueuePartial: 'Adicionado {{added}} arquivo(s), {{failed}} falharam',
- failedToAddToQueue: 'Falha ao adicionar arquivos: {{error}}',
- fileRenamed: 'Arquivo renomeado',
- folderRenamed: 'Pasta renomeada',
- thumbnailsGenerated: 'Geradas {{count}} miniatura(s)',
- thumbnailsGeneratedPartial: 'Geradas {{succeeded}} miniatura(s), {{failed}} falharam',
- noStlMissingThumbnails: 'Nenhum arquivo STL sem miniatura',
- failedToGenerateThumbnails: 'Falha ao gerar miniaturas: {{error}}',
- thumbnailGenerated: 'Miniatura gerada',
- failedToGenerateThumbnail: 'Falha ao gerar miniatura: {{error}}',
- },
- },
- // Projects
- projects: {
- title: 'Projetos',
- subtitle: 'Organize e acompanhe seus projetos de impressão 3D',
- newProject: 'Novo Projeto',
- editProject: 'Editar Projeto',
- deleteProject: 'Excluir Projeto',
- projectName: 'Nome do Projeto',
- description: 'Descrição',
- noProjects: 'Nenhum projeto ainda',
- noProjectsFiltered: 'Nenhum projeto {{status}}',
- noProjectsFilteredHelp: "Você não tem nenhum projeto {{status}}. Os projetos aparecerão aqui quando seu status mudar.",
- createFirst: 'Crie seu primeiro projeto para começar a organizar impressões relacionadas, acompanhar o progresso e gerenciar suas construções.',
- createFirstButton: 'Crie Seu Primeiro Projeto',
- create: 'Criar',
- files: 'Arquivos',
- prints: 'Impressões',
- plates: 'Placas',
- parts: 'Peças',
- lastModified: 'Última Modificação',
- deleteConfirm: 'Tem certeza de que deseja excluir este projeto? Arquivos e itens da fila serão desvinculados, mas não excluídos.',
- addFiles: 'Adicionar Arquivos',
- removeFile: 'Remover Arquivo',
- viewDetails: 'Ver Detalhes',
- // Modal fields
- namePlaceholder: 'ex., Voron 2.4 Build',
- descriptionPlaceholder: 'Descrição opcional...',
- color: 'Cor',
- targetPlates: 'Placas Alvo',
- targetPlatesPlaceholder: 'ex., 25',
- targetPlatesHelp: 'Número de trabalhos de impressão',
- targetParts: 'Peças Alvo',
- targetPartsPlaceholder: 'ex., 150',
- targetPartsHelp: 'Total de objetos necessários',
- tagsLabel: 'Tags (separadas por vírgula)',
- tagsPlaceholder: 'ex., voron, funcional, presente',
- dueDate: 'Data de Vencimento',
- priority: 'Prioridade',
- priorityLow: 'Baixa',
- priorityNormal: 'Normal',
- priorityHigh: 'Alta',
- priorityUrgent: 'Urgente',
- // Status
- statusActive: 'Ativo',
- statusCompleted: 'Concluído',
- statusArchived: 'Arquivado',
- done: 'Concluído',
- completed: 'Concluído',
- failed: 'Falhou',
- inQueue: 'Na fila',
- noPrintsYet: 'Nenhuma impressão ainda',
- // Footer stats
- printJobs: 'Trabalhos de impressão (placas)',
- partsPrinted: 'Peças impressas',
- failedParts: 'Peças falhadas',
- // Actions
- import: 'Importar',
- export: 'Exportar',
- importProject: 'Importar projeto',
- exportAll: 'Exportar todos os projetos',
- loading: 'Carregando projetos...',
- // Permissions
- noEditPermission: 'Você não tem permissão para editar projetos',
- noDeletePermission: 'Você não tem permissão para excluir projetos',
- noCreatePermission: 'Você não tem permissão para criar projetos',
- noImportPermission: 'Você não tem permissão para importar projetos',
- noExportPermission: 'Você não tem permissão para exportar projetos',
- // Toast
- toast: {
- created: 'Projeto criado',
- updated: 'Projeto atualizado',
- deleted: 'Projeto excluído',
- imported: 'Projeto importado',
- multipleImported: '{{count}} projetos importados',
- importFailed: 'Falha na importação',
- exported: 'Projetos exportados (apenas metadados)',
- },
- },
- // Project detail page
- projectDetail: {
- notFound: 'Projeto não encontrado',
- backToProjects: 'Voltar para Projetos',
- export: 'Exportar',
- exportProject: 'Exportar projeto',
- noExportPermission: 'Você não tem permissão para exportar projetos',
- noEditPermission: 'Você não tem permissão para editar projetos',
- partOf: 'Parte de:',
- priorityLabel: 'Prioridade:',
- noPrints: 'Nenhuma impressão neste projeto ainda',
- status: {
- active: 'Ativo',
- completed: 'Concluído',
- archived: 'Arquivado',
- },
- priority: {
- low: 'Baixa',
- normal: 'Normal',
- high: 'Alta',
- urgent: 'Urgente',
- },
- dueDate: {
- overdue: 'Atrasado',
- today: 'Vence hoje',
- daysLeft: '{{count}} dias restantes',
- },
- progress: {
- platesProgress: 'Progresso das Placas',
- partsProgress: 'Progresso das Peças',
- printJobs: 'Trabalhos de Impressão',
- parts: 'Peças',
- percentComplete: '{{percent}}% concluído',
- remaining: '{{count}} restantes',
- },
- stats: {
- printJobs: 'Trabalhos de Impressão',
- total: 'total',
- failed: '{{count}} falhou',
- partsPrinted: '{{count}} peças impressas',
- printTime: 'Tempo de Impressão',
- filamentUsed: 'Filamento Usado',
- },
- cost: {
- title: 'Rastreamento de Custos',
- filamentCost: 'Custo do Filamento',
- energy: 'Energia',
- budget: 'Orçamento',
- remaining: 'Restante',
- },
- subProjects: {
- title: 'Sub-projetos ({{count}})',
- },
- notes: {
- title: 'Notas',
- noEditPermission: 'Você não tem permissão para editar notas',
- placeholder: 'Adicione notas sobre este projeto...',
- empty: 'Nenhuma nota ainda. Clique em Editar para adicionar notas.',
- },
- files: {
- title: 'Arquivos',
- linkFolders: 'Vincular pastas do Gerenciador de Arquivos',
- forQuickAccess: 'a este projeto para acesso rápido.',
- fileCount: '{{count}} arquivo(s)',
- empty: 'Nenhuma pasta vinculada. Vá para o Gerenciador de Arquivos e vincule uma pasta a este projeto.',
- },
- bom: {
- title: 'Lista de Materiais',
- acquired: '{{completed}}/{{total}} adquiridos',
- showAll: 'Mostrar todos',
- hideDone: 'Ocultar concluídos',
- addPart: 'Adicionar Peça',
- noAddPermission: 'Você não tem permissão para adicionar peças',
- partNamePlaceholder: 'Nome da peça (ex.: parafusos M3x8)',
- partName: 'Nome da peça',
- qty: 'Quantidade',
- price: 'Preço ({{currency}})',
- sourcingUrlPlaceholder: 'URL de fornecimento (opcional)',
- remarksPlaceholder: 'Observações (opcional)',
- deletePart: 'Excluir Peça',
- deleteConfirm: 'Tem certeza de que deseja excluir "{{name}}"?',
- noUpdatePermission: 'Você não tem permissão para atualizar peças',
- noEditPermission: 'Você não tem permissão para editar peças',
- noDeletePermission: 'Você não tem permissão para excluir peças',
- totalCost: 'Custo total:',
- empty: 'Nenhuma peça na lista de materiais. Adicione hardware, eletrônicos ou outros componentes para rastrear o que precisa ser adquirido.',
- },
- timeline: {
- title: 'Linha do Tempo de Atividades',
- empty: 'Nenhuma atividade ainda.',
- },
- template: {
- saveAsTemplate: 'Salvar como Modelo',
- noCreatePermission: 'Você não tem permissão para criar modelos',
- },
- queue: {
- title: 'Fila',
- viewAll: 'Ver todos',
- printing: '{{count}} imprimindo',
- queued: '{{count}} na fila',
- },
- prints: {
- title: 'Impressões ({{count}})',
- },
- toast: {
- projectUpdated: 'Projeto atualizado',
- partAdded: 'Peça adicionada',
- partRemoved: 'Peça removida',
- exportFailed: 'Falha na exportação',
- projectExported: 'Projeto exportado',
- templateCreated: 'Modelo criado',
- },
- },
- // System info
- system: {
- title: 'Informações do Sistema',
- version: 'Versão',
- uptime: 'Tempo de Atividade',
- cpuUsage: 'Uso da CPU',
- memoryUsage: 'Uso da Memória',
- diskUsage: 'Uso do Disco',
- networkInfo: 'Informações de Rede',
- logs: 'Logs',
- debugMode: 'Modo de Depuração',
- enableDebug: 'Ativar Registro de Depuração',
- disableDebug: 'Desativar Registro de Depuração',
- downloadLogs: 'Baixar Logs',
- clearLogs: 'Limpar Logs',
- dockerInfo: 'Informações do Docker',
- containerName: 'Nome do Contêiner',
- imageName: 'Nome da Imagem',
- platform: 'Plataforma',
- architecture: 'Arquitetura',
- },
- // Library (K Profiles)
- library: {
- title: 'Biblioteca de Filamentos',
- addFilament: 'Adicionar Filamento',
- editFilament: 'Editar Filamento',
- deleteFilament: 'Excluir Filamento',
- vendor: 'Fornecedor',
- material: 'Material',
- color: 'Cor',
- kFactor: 'Fator K',
- temperature: 'Temperatura',
- noFilaments: 'Nenhum filamento na biblioteca',
- deleteConfirm: 'Tem certeza de que deseja excluir este filamento?',
- importFromPrinter: 'Importar da Impressora',
- exportToFile: 'Exportar para Arquivo',
- },
- // Spoolman
- spoolman: {
- title: 'Integração com Spoolman',
- enabled: 'Spoolman Ativado',
- url: 'URL do Spoolman',
- connected: 'Conectado',
- disconnected: 'Não Conectado',
- testConnection: 'Testar Conexão',
- sync: 'Sincronizar',
- syncing: 'Sincronizando...',
- lastSync: 'Última Sincronização',
- linkToSpoolman: 'Vincular ao Spoolman',
- openInSpoolman: 'Abrir no Spoolman',
- unlinkSpool: 'Desvincular Carretel',
- selectSpool: 'Selecionar Carretel',
- noUnlinkedSpools: 'Nenhum carretel desvinculado disponível',
- linkSuccess: 'Carretel vinculado ao Spoolman com sucesso',
- linkFailed: 'Falha ao vincular carretel',
- spoolId: 'Carretel ID (Spool ID)',
- fillSourceLabel: '(Spoolman)',
- weight: 'Peso',
- remaining: 'Restante',
- disableWeightSync: 'Desativar Sincronização de Peso Estimado do AMS',
- 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.",
- reportPartialUsage: 'Relatar Uso Parcial para Impressões Falhadas',
- reportPartialUsageDesc: 'Quando uma impressão falha ou é cancelada, relate o filamento estimado usado até aquele ponto com base no progresso das camadas.',
- },
- // Inventory
- inventory: {
- title: 'Inventário de Carretéis',
- addSpool: 'Adicionar Carretel',
- editSpool: 'Editar Carretel',
- material: 'Material',
- selectMaterial: 'Selecionar material...',
- subtype: 'Subtipo',
- brand: 'Marca',
- searchBrand: 'Pesquisar marca...',
- useCustomBrand: 'Usar "{{brand}}"',
- colorName: 'Nome da Cor',
- colorNamePlaceholder: 'Jade White, Fire Red...',
- color: 'Cor',
- hexColor: 'Cor Hexadecimal',
- pickColor: 'Escolher cor personalizada',
- labelWeight: 'Peso da Etiqueta',
- coreWeight: 'Peso do Carretel Vazio',
- searchSpoolWeight: 'Pesquisar peso do carretel...',
- weightUsed: 'Usado',
- currentWeight: 'Peso Restante',
- measuredWeight: 'Peso Medido',
- costPerKg: 'Custo por kg',
- measuredWeightError: 'O peso medido deve estar entre {{min}}g e {{max}}g.',
- slicerFilament: 'Filamento do Fatiador',
- slicerFilamentName: 'Nome do Predefinido do Fatiador',
- slicerPreset: 'Predefinido do Fatiador',
- searchPresets: 'Pesquisar predefinições de filamento...',
- selectedPreset: 'Selecionado',
- noPresetsFound: 'Nenhuma predefinição encontrada',
- tempOverrides: 'Substituições de Temperatura',
- note: 'Nota',
- notePlaceholder: 'Quaisquer notas adicionais sobre este spool...',
- archive: 'Arquivar',
- restore: 'Restaurar',
- noSpools: 'Nenhum carretel ainda. Adicione seu primeiro carretel para começar.',
- noManualSpools: 'Nenhum carretel adicionado manualmente disponível. Adicione um carretel ao seu inventário primeiro.',
- kProfiles: 'K-Perfis',
- addKProfile: 'Adicionar K-Perfil',
- assignSpool: 'Atribuir Carretel',
- unassignSpool: 'Desatribuir',
- assignSuccess: 'Carretel atribuído e slot AMS configurado',
- assignFailed: 'Falha ao atribuir carretel',
- selectSpool: 'Selecione um carretel para atribuir a este slot',
- assigned: 'Atribuído',
- assigning: 'Atribuindo...',
- searchSpools: 'Pesquisar carretéis...',
- allMaterials: 'Todos os Materiais',
- filterByBrand: 'Filtrar por marca...',
- showArchived: 'Mostrar arquivados',
- spoolCreated: 'Carretel criado',
- spoolUpdated: 'Carretel atualizado',
- spoolDeleted: 'Carretel excluído',
- spoolArchived: 'Carretel arquivado',
- spoolRestored: 'Carretel restaurado',
- deleteConfirm: 'Tem certeza de que deseja excluir este carretel? Esta ação não pode ser desfeita.',
- archiveConfirm: 'Tem certeza de que deseja arquivar este carretel?',
- advancedSettings: 'Configurações Avançadas',
- // Tabs
- filamentInfoTab: 'Informações do Filamento',
- paProfileTab: 'Perfil PA',
- filamentInfo: 'Filamento',
- additional: 'Adicional',
- // Cloud
- loadingPresets: 'Carregando predefinições da nuvem...',
- cloudConnected: 'Nuvem conectada',
- cloudNotConnected: 'Nuvem não conectada (usando padrões)',
- // Colors
- recentColors: 'Recentes',
- searchColors: 'Pesquisar cores...',
- searchResults: 'Resultados da pesquisa',
- allColors: 'Todas as cores',
- commonColors: 'Cores comuns',
- showLess: 'Mostrar menos',
- showAll: 'Mostrar tudo',
- noColorsFound: 'Nenhuma cor corresponde à sua pesquisa',
- noResults: 'Nenhum resultado encontrado',
- // PA Profiles
- selectMaterialFirst: 'Por favor, selecione um material primeiro na aba Informações do Filamento.',
- noPrintersConfigured: 'Nenhuma impressora configurada. Adicione impressoras para usar perfis PA.',
- matchingFilter: 'Correspondente',
- anyBrand: 'Qualquer marca',
- anyVariant: 'Qualquer variante',
- autoSelect: 'Seleção automática',
- matches: 'correspondências',
- match: 'correspondência',
- noMatches: 'Nenhuma correspondência',
- connected: 'Conectado',
- offline: 'Offline',
- printerOffline: 'A impressora está offline. Conecte-se para visualizar os perfis de calibração.',
- noKProfilesMatch: 'Nenhum K-perfil corresponde ao filamento selecionado.',
- leftNozzle: 'Bico Esquerdo',
- rightNozzle: 'Bico Direito',
- profilesSelected: 'perfil(is) de calibração selecionado(s)',
- // Stats & enhanced table
- totalInventory: 'Inventário Total',
- totalConsumed: 'Total Consumido',
- byMaterial: 'Por Material',
- inPrinter: 'Na Impressora',
- lowStock: 'Estoque Baixo',
- sinceTracking: 'Desde o início do rastreamento',
- loadedInAms: 'Carregado no AMS/Ext',
- remaining: 'Restante',
- lowStockThreshold: '<20% restante',
- search: 'Pesquisar carretéis...',
- showing: 'Mostrando',
- to: 'até',
- of: 'de',
- show: 'Mostrar',
- spools: 'carretéis',
- spool: 'carretel',
- page: 'Página',
- noSpoolsMatch: 'Nenhum resultado encontrado',
- noSpoolsMatchDesc: 'Tente ajustar sua pesquisa ou filtros para encontrar o que você está procurando.',
- active: 'Ativo',
- archived: 'Arquivado',
- all: 'Todos',
- used: 'Usado',
- new: 'Novo',
- clearFilters: 'Limpar filtros',
- table: 'Tabela',
- cards: 'Cartões',
- net: 'Líquido',
- // Column config
- columns: 'Colunas',
- configureColumns: 'Configurar Colunas',
- configureColumnsDesc: 'Arraste para reordenar as colunas ou use as setas. Alterne a visibilidade com o ícone de olho.',
- visible: 'Visível',
- reset: 'Redefinir',
- cancel: 'Cancelar',
- applyChanges: 'Aplicar Alterações',
- moveUp: 'Mover para cima',
- moveDown: 'Mover para baixo',
- hideColumn: 'Ocultar coluna',
- showColumn: 'Mostrar coluna',
- // Tag linking
- linkToSpool: 'Vincular ao Carretel',
- tagLinked: 'Tag vinculada ao carretel',
- tagLinkFailed: 'Falha ao vincular tag',
- tagAlreadyLinked: 'Tag já vinculada a outro carretel',
- unknownTag: 'Tag RFID desconhecida detectada',
- // Usage history
- usageHistory: 'Histórico de Uso',
- noUsageHistory: 'Nenhum uso registrado ainda',
- printName: 'Nome da Impressão',
- weightConsumed: 'Peso Consumido',
- clearHistory: 'Limpar',
- historyCleared: 'Histórico de uso limpo',
- fillSourceLabel: '(Inv)',
- },
- // Timelapse
- timelapse: {
- title: 'Timelapse',
- create: 'Criar Timelapse',
- download: 'Baixar',
- delete: 'Excluir',
- preview: 'Visualizar',
- frameRate: 'Taxa de Quadros',
- quality: 'Qualidade',
- processing: 'Processando...',
- noTimelapses: 'Nenhum timelapse disponível',
- },
- // AMS
- ams: {
- title: 'AMS',
- slot: 'Slot',
- empty: 'Vazio',
- emptySlot: 'Slot vazio',
- unknown: 'Desconhecido',
- humidity: 'Umidade',
- temperature: 'Temperatura',
- filamentType: 'Tipo de Filamento',
- filamentColor: 'Cor',
- remaining: 'Restante',
- history: 'Histórico do AMS',
- noHistory: 'Nenhum histórico disponível',
- configureSlot: 'Configurar Slot',
- externalSpool: 'Carretel Externo',
- profile: 'Perfil',
- kFactor: 'Fator K',
- fill: 'Preencher',
- configure: 'Configurar',
- },
- // Print modal
- printModal: {
- title: 'Iniciar Impressão',
- selectPrinter: 'Selecionar Impressora',
- selectPlate: 'Selecionar Placa',
- filamentMapping: 'Mapeamento de Filamento',
- totalCost: 'Custo total:',
- printSettings: 'Configurações de Impressão',
- bedLeveling: 'Nivelamento da Mesa',
- flowCalibration: 'Calibração de Fluxo',
- vibrationCalibration: 'Calibração de Vibração',
- layerInspection: 'Inspeção da Primeira Camada',
- timelapse: 'Timelapse',
- startPrint: 'Iniciar Impressão',
- addToQueue: 'Adicionar à Fila',
- cancel: 'Cancelar',
- noPrintersAvailable: 'Nenhuma impressora disponível',
- printerBusy: 'Impressora ocupada',
- printerOffline: 'Impressora offline',
- sameTypeDifferentColor: 'Mesmo tipo, cor diferente',
- filamentTypeNotLoaded: 'Tipo de filamento não carregado',
- openCalendar: 'Abrir calendário',
- leftNozzle: 'L',
- rightNozzle: 'R',
- leftNozzleTooltip: 'Bico esquerdo',
- rightNozzleTooltip: 'Bico direito',
- },
- // Backup
- backup: {
- title: 'Bakup e Restauração',
- createBackup: 'Criar Backup',
- restoreBackup: 'Restaurar Backup',
- restoreDescription: 'Substituir todos os dados a partir de um arquivo de backup',
- downloadBackup: 'Baixar Backup',
- uploadBackup: 'Enviar Backup',
- lastBackup: 'Último Backup',
- autoBackup: 'Auto Backup',
- backupNow: 'Fazer Backup Agora',
- restoreWarning: 'Aviso: Restaurar um backup substituirá todos os dados atuais.',
- includeArchives: 'Incluir Arquivos',
- includeSettings: 'Incluir Configurações',
- includeProfiles: 'Incluir Perfis',
- backupSuccess: 'Backup criado com sucesso',
- restoreSuccess: 'Backup restaurado com sucesso',
- backupFailed: 'Falha ao criar backup',
- restoreFailed: 'Falha ao restaurar backup',
- restoreNote: 'A impressora virtual será parada durante a restauração',
- },
- // Tags
- tags: {
- title: 'Tags',
- addTag: 'Adicionar Tag',
- editTag: 'Editar Tag',
- deleteTag: 'Excluir Tag',
- tagName: 'Nome da Tag',
- tagColor: 'Cor da Tag',
- noTags: 'Nenhuma tag',
- deleteConfirm: 'Tem certeza de que deseja excluir esta tag?',
- manageTags: 'Gerenciar Tags',
- },
- // Upload modal (archives)
- uploadModal: {
- title: 'Upload Arquivos 3MF',
- dragDrop: 'Arraste e solte arquivos .3mf aqui',
- or: 'ou',
- browseFiles: 'Procurar Arquivos',
- extractionInfo: 'O modelo da impressora será extraído automaticamente dos metadados do arquivo 3MF.',
- uploaded: 'enviado',
- failed: 'falhou',
- uploading: 'Enviando...',
- upload: 'Enviar',
- uploadFailed: 'Falha no envio',
- },
- // Edit archive modal
- // Edit Archive Modal
- editArchive: {
- title: 'Editar Arquivo',
- name: 'Nome',
- namePlaceholder: 'Nome da impressão',
- printer: 'Impressora',
- noPrinter: 'Nenhuma impressora',
- project: 'Projeto',
- noProject: 'Nenhum projeto',
- itemsPrinted: 'Itens Impressos',
- itemsPrintedHelp: 'Número de itens produzidos neste trabalho de impressão',
- notes: 'Notas',
- notesPlaceholder: 'Adicione notas sobre esta impressão...',
- externalLink: 'Link Externo',
- externalLinkPlaceholder: 'https://printables.com/model/...',
- externalLinkHelp: 'Link para Printables, Thingiverse ou outra fonte',
- tags: 'Tags',
- tagsPlaceholder: 'Adicionar tags...',
- addMoreTags: 'Adicionar mais tags...',
- matchingTags: 'Correspondendo "{{query}}"',
- existingTags: 'Tags existentes',
- clickToAdd: '(clique para adicionar)',
- status: 'Status',
- failureReason: 'Motivo da Falha',
- selectReason: 'Selecione o motivo...',
- photos: 'Fotos do Resultado da Impressão',
- photosHelp: 'Clique em + para adicionar fotos do seu resultado impresso',
- printResult: 'Resultado da Impressão',
- saving: 'Salvando...',
- // Failure reasons
- failureReasons: {
- adhesionFailure: 'Falha de adesão',
- spaghettiDetached: 'Spaghetti / Destacado',
- layerShift: 'Deslocamento de camada',
- cloggedNozzle: 'Bico entupido',
- filamentRunout: 'Fim do filamento',
- warping: 'Warping',
- stringing: 'Stringing',
- underExtrusion: 'Under-extrusion',
- powerFailure: 'Falha de energia',
- userCancelled: 'Cancelado pelo usuário',
- other: 'Outro',
- },
- // Archive statuses
- statuses: {
- completed: 'Concluído',
- failed: 'Falhou',
- aborted: 'Cancelado',
- printing: 'Imprimindo',
- },
- },
- // K-Profiles
- kProfiles: {
- title: 'K-Profiles',
- noPrintersConfigured: 'Nenhuma impressora configurada',
- addPrinterInSettings: 'Adicione uma impressora nas Configurações para gerenciar K-profiles',
- noActivePrinters: 'Nenhuma impressora ativa',
- enablePrinterConnection: 'Ative a conexão da impressora para visualizar seus K-profiles',
- loadingProfiles: 'Carregando K-Profiles...',
- printerOffline: 'Impressora Offline',
- printerOfflineDesc: 'A impressora selecionada não está conectada. Ligue-a para visualizar os K-profiles.',
- noMatchingProfiles: 'Nenhum Perfil Correspondente',
- noMatchingProfilesDesc: 'Nenhum perfil corresponde aos seus critérios de pesquisa',
- noKProfiles: 'Nenhum K-Profile',
- noKProfilesDesc: 'Nenhum perfil de avanço de pressão encontrado para bico de {{diameter}}mm',
- createFirstProfile: 'Criar Primeiro Perfil',
- // Controls
- printer: 'Impressora',
- nozzle: 'Bico',
- refresh: 'Atualizar',
- addProfile: 'Adicionar Perfil',
- export: 'Exportar',
- import: 'Importar',
- select: 'Selecionar',
- selectAll: 'Selecionar Todos',
- delete: 'Excluir',
- // Filters
- searchPlaceholder: 'Pesquisar por nome ou filamento...',
- allExtruders: 'Todos os Extrusores',
- leftOnly: 'Apenas Esquerdo',
- rightOnly: 'Apenas Direito',
- allFlow: 'Todo Fluxo',
- hfOnly: 'Apenas HF',
- sOnly: 'Apenas S',
- sortName: 'Ordenar: Nome',
- sortKValue: 'Ordenar: Valor K',
- sortFilament: 'Ordenar: Filamento',
- // Dual extruder labels
- leftExtruder: 'Extrusor Esquerdo',
- rightExtruder: 'Extrusor Direito',
- // Modal
- modal: {
- addTitle: 'Adicionar K-Profile',
- editTitle: 'Editar K-Profile',
- profileName: 'Nome do Perfil',
- profileNamePlaceholder: 'Meu Perfil PLA',
- kValue: 'Valor K',
- kValuePlaceholder: '0.020',
- kValueHelp: 'Faixa típica: 0.01 - 0.06 para PLA, 0.02 - 0.10 para PETG',
- filament: 'Filamento',
- selectFilament: 'Selecionar filamento...',
- noFilamentsHelp: 'Nenhum filamento encontrado. Crie um K-profile no Bambu Studio primeiro.',
- flowType: 'Tipo de Fluxo',
- highFlow: 'Alto Fluxo',
- standard: 'Padrão',
- nozzleSize: 'Tamanho do Bico',
- extruder: 'Extrusor',
- extruders: 'Extrusores',
- left: 'Esquerdo',
- right: 'Direito',
- notes: 'Notas (armazenadas localmente)',
- notesPlaceholder: 'Adicione notas sobre este perfil...',
- notesHelp: 'As notas são salvas no Bambuddy, não na impressora',
- syncing: 'Sincronizando com a impressora...',
- savingExtruder: 'Salvando no extrusor {{current}}/{{total}}...',
- pleaseWait: 'Por favor, aguarde',
- },
- // Delete confirmation
- deleteConfirm: {
- title: 'Excluir Perfil',
- cannotUndo: 'Isso não pode ser desfeito',
- message: 'Tem certeza de que deseja excluir "{{name}}" da impressora?',
- },
- // Bulk delete
- bulkDelete: {
- title: 'Excluir Perfis',
- cannotUndo: 'Isso não pode ser desfeito',
- message: 'Tem certeza de que deseja excluir {{count}} perfis selecionados da impressora?',
- },
- // Toast
- toast: {
- profileSaved: 'K-profile salvo',
- profilesSaved: 'K-profile salvo em {{count}} extrusores',
- selectAtLeastOneExtruder: 'Por favor, selecione pelo menos um extrusor',
- profileDeleted: 'K-profile excluído',
- profilesDeleted: '{{count}} perfis excluídos',
- exportedProfiles: '{{count}} perfis exportados',
- importedProfiles: '{{count}} de {{total}} perfis importados',
- noProfilesToExport: 'Nenhum perfil para exportar',
- invalidFileFormat: 'Formato de arquivo inválido',
- failedToParseImport: 'Falha ao analisar o arquivo de importação',
- failedToSaveBatch: 'Falha ao salvar K-profiles',
- noteSaved: 'Nota salva',
- failedToSaveNote: 'Falha ao salvar nota',
- },
- // Permissions
- permission: {
- noRead: 'Você não tem permissão para atualizar perfis',
- noCreate: 'Você não tem permissão para adicionar perfis',
- noUpdate: 'Você não tem permissão para atualizar K-profiles',
- noDelete: 'Você não tem permissão para excluir K-profiles',
- noExport: 'Você não tem permissão para exportar perfis',
- noImport: 'Você não tem permissão para importar perfis',
- },
- },
- // Virtual Printer
- virtualPrinter: {
- title: 'Impressora Virtual',
- running: 'Em execução',
- stopped: 'Parada',
- description: {
- 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.',
- proxy: 'Ative um proxy que retransmite o tráfego do slicer para uma impressora real, permitindo impressão remota em qualquer rede.',
- },
- enable: {
- title: 'Ativar Impressora Virtual',
- visibleInSlicer: 'Visível como "Bambuddy" na descoberta do slicer',
- proxyingTo: 'Proxy para {{name}}',
- notActive: 'Não ativo',
- },
- model: {
- title: 'Modelo da Impressora',
- description: 'Selecione qual modelo de impressora emular.',
- restartWarning: 'Alterar o modelo reiniciará a impressora virtual',
- },
- accessCode: {
- title: 'Código de acesso',
- isSet: 'O código de acesso está definido',
- notSet: 'Nenhum código de acesso definido — necessário para ativar.',
- placeholder: 'Digite um código de 8 caracteres',
- placeholderChange: 'Digite um novo código para alterar',
- hint: 'Deve ter exatamente 8 caracteres. Usado pelos slicers para autenticação.',
- charCount: '({{count}}/8)',
- },
- targetPrinter: {
- title: 'Impressora Alvo',
- configured: 'Proxy alvo configurado',
- notConfigured: 'Nenhuma impressora alvo selecionada - necessário para o modo proxy',
- placeholder: 'Selecione uma impressora...',
- hint: 'Selecione a impressora para a qual o tráfego do slicer será enviado. A impressora deve estar no modo LAN.',
- noPrinters: 'Nenhuma impressora configurada. Adicione uma impressora primeiro para usar o modo proxy.',
- },
- remoteInterface: {
- title: 'Substituição da Interface de Rede',
- configured: 'Substituição da interface ativa',
- optional: 'Opcional - use se o IP detectado automaticamente estiver errado (por exemplo, várias NICs, Docker, VPN)',
- placeholder: 'Detecção automática (padrão)...',
- hint: 'Substitua o endereço IP anunciado via SSDP e usado no certificado TLS. Útil quando o Bambuddy possui várias interfaces de rede.',
- },
- mode: {
- title: 'Modo',
- archive: 'Arquivar',
- archiveDesc: 'Arquivar arquivos imediatamente',
- review: 'Revisar',
- reviewDesc: 'Revisar antes de arquivar',
- queue: 'Fila',
- queueDesc: 'Arquivar e adicionar à fila',
- proxy: 'Proxy',
- proxyDesc: 'Retransmitir para impressora real',
- },
- setupRequired: {
- title: 'Configuração Necessária',
- 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.',
- readGuide: 'Leia o guia de configuração antes de ativar',
- },
- howItWorks: {
- title: 'Como funciona',
- titleProxy: 'Como funciona (Modo Proxy)',
- step1: 'Complete o guia de configuração para sua plataforma',
- step2: 'Ative a impressora virtual e defina um código de acesso',
- step3: 'No Bambu Studio ou OrcaSlicer, vá para "Adicionar Impressora"',
- step4: 'A impressora "Bambuddy" deve aparecer na lista de descoberta',
- step5: 'Conecte-se usando o código de acesso que você definiu',
- step6: 'Quando você "imprimir" para o Bambuddy, o arquivo 3MF será arquivado em vez disso',
- proxyStep1: 'Selecione a impressora alvo (deve estar no modo LAN)',
- proxyStep2: 'Para rede cruzada: selecione a interface de rede do slicer',
- proxyStep3: 'Ative o proxy - a impressora aparece na descoberta do slicer via SSDP',
- proxyStep4: 'Conecte-se usando o código de acesso da impressora',
- proxyStep5: 'Imprima normalmente - o tráfego é retransmitido pelo Bambuddy',
- proxyStep6: 'O streaming da câmera requer NAT/encaminhamento de IP (veja a documentação)',
- },
- status: {
- title: 'Detalhes do Status',
- printerName: 'Nome da Impressora',
- model: 'Modelo',
- serialNumber: 'Número de Série',
- mode: 'Modo',
- pendingFiles: 'Arquivos Pendentes',
- targetPrinter: 'Impressora Alvo',
- ftpPort: 'Porta FTP',
- mqttPort: 'Porta MQTT',
- ftpConnections: 'Conexões FTP',
- mqttConnections: 'Conexões MQTT',
- },
- toast: {
- updated: 'Configurações da impressora virtual atualizadas',
- failedToUpdate: 'Falha ao atualizar as configurações',
- accessCodeRequired: 'Defina um código de acesso primeiro',
- targetPrinterRequired: 'Selecione uma impressora alvo primeiro',
- accessCodeEmpty: 'O código de acesso não pode estar vazio',
- accessCodeLength: 'O código de acesso deve ter exatamente 8 caracteres',
- },
- },
- // Model Viewer
- modelViewer: {
- openInSlicer: 'Abrir no Slicer',
- tabs: {
- model: 'Modelo 3D',
- gcode: 'Pré-visualização G-code',
- },
- notAvailable: 'Não disponível',
- notSliced: 'Não fatiado',
- plates: 'Placas',
- allPlates: 'Todas as Placas',
- plateNumber: 'Placa {{number}}',
- plateCount: '{{count}} placa',
- plateCount_other: '{{count}} placas',
- objectCount: '{{count}} objeto',
- objectCount_other: '{{count}} objetos',
- filamentCount: '{{count}} filamento',
- filamentCount_other: '{{count}} filamentos',
- eta: 'ETA {{minutes}} min',
- noPreview: 'Pré-visualização não disponível para este arquivo',
- pagination: {
- pageOf: 'Página {{current}} de {{total}}',
- prev: 'Anterior',
- next: 'Próximo',
- },
- errors: {
- failedToLoad: 'Falha ao carregar o arquivo',
- noMeshes: 'Nenhuma malha encontrada no arquivo 3MF',
- unsupportedFormat: 'Formato de arquivo não suportado',
- },
- },
- // Maintenance type descriptions (built-in)
- maintenanceDescriptions: {
- lubricateCarbonRods: 'Aplique lubrificante nos eixos de carbono para um movimento suave',
- lubricateRails: 'Aplique lubrificante nos trilhos lineares para um movimento suave',
- cleanNozzle: 'Limpe o hotend e o bico para evitar entupimentos',
- checkBelts: 'Verifique a tensão das correias para impressões precisas',
- cleanBuildPlate: 'Limpe a placa de construção para melhor adesão',
- checkExtruder: 'Verifique as engrenagens do extrusor quanto ao desgaste',
- checkCooling: 'Verifique se os ventiladores de resfriamento estão funcionando corretamente',
- generalInspection: 'Inspeção geral da impressora',
- cleanCarbonRods: 'Limpe os eixos de carbono para reduzir o atrito',
- cleanLinearRails: 'Limpe os trilhos lineares para remover poeira e detritos',
- checkPtfeTube: 'Verifique o tubo PTFE quanto ao desgaste ou danos',
- replaceHepaFilter: 'Substitua o filtro HEPA para qualidade do ar',
- replaceCarbonFilter: 'Substitua o filtro de carbono ativado',
- lubricateLeftNozzleRail: 'Lubrifique o trilho do bico esquerdo (série H2)',
- },
- // Smart Plugs
- smartPlugs: {
- offline: 'Offline',
- admin: 'Admin',
- openPlugAdminPage: 'Abrir o painel de administração da tomada inteligente',
- deleteSmartPlug: 'Excluir Tomada Inteligente',
- turnOnSmartPlug: 'Ligar Tomada Inteligente',
- turnOffSmartPlug: 'Desligar Tomada Inteligente',
- turnOn: 'Ligar',
- turnOff: 'Desligar',
- addSmartPlug: {
- scanningNetwork: 'Procurando na rede...',
- chooseEntity: 'Escolha uma entidade...',
- connectionFailed: 'Falha na conexão',
- searchEntities: 'Pesquisar entidades...',
- searchPowerSensors: 'Pesquisar sensores de energia...',
- searchEnergySensors: 'Pesquisar sensores de energia...',
- placeholders: {
- plugName: 'Tomada da Sala',
- mqttStateOnValue: 'ON, true, 1',
- mqttSameAsPower: 'Mesmo que o tópico de energia, ou diferente',
- },
- },
- },
- // Rich Text Editor
- richTextEditor: {
- bold: 'Negrito',
- italic: 'Itálico',
- underline: 'Sublinhado',
- bulletList: 'Lista com marcadores',
- numberedList: 'Lista numerada',
- alignLeft: 'Alinhar à esquerda',
- alignCenter: 'Centralizar',
- alignRight: 'Alinhar à direita',
- addLink: 'Adicionar link',
- removeLink: 'Remover link',
- },
- // External Links
- externalLinks: {
- noLinksConfigured: 'Nenhum link externo configurado',
- deleteLink: 'Excluir link',
- removeCustomIcon: 'Remover ícone personalizado',
- openInNewTab: 'Abrir em nova aba',
- placeholders: {
- linkName: 'Meu Link',
- },
- },
- // Keyboard Shortcuts Modal
- keyboardShortcuts: {
- title: 'Atalhos de Teclado',
- navigation: 'Navegação',
- archivesSection: 'Arquivos',
- kProfilesSection: 'K-Profiles',
- generalSection: 'Geral',
- shortcuts: {
- goToPrinters: 'Ir para Impressoras',
- goToArchives: 'Ir para Arquivos',
- goToQueue: 'Ir para Fila',
- goToStats: 'Ir para Estatísticas',
- goToProfiles: 'Ir para Perfis na Nuvem',
- goToSettings: 'Ir para Configurações',
- focusSearch: 'Focar na pesquisa',
- openUploadModal: 'Abrir modal de upload',
- clearSelection: 'Limpar seleção / desfocar input',
- contextMenu: 'Menu de contexto nos cartões',
- refreshProfiles: 'Atualizar perfis',
- newProfile: 'Novo perfil',
- exitSelectionMode: 'Sair do modo de seleção',
- showHelp: 'Mostrar esta ajuda',
- },
- footer: 'Pressione Esc ou clique fora para fechar',
- },
- // Notification Log
- notificationLog: {
- title: 'Registro de Notificações',
- events: {
- printStarted: 'Impressão Iniciada',
- printComplete: 'Impressão Concluída',
- printFailed: 'Impressão Falhou',
- printStopped: 'Impressão Interrompida',
- progress: 'Progresso',
- printerOffline: 'Impressora Offline',
- printerError: 'Erro na Impressora',
- lowFilament: 'Filamento Baixo',
- maintenanceDue: 'Manutenção Pendente',
- test: 'Teste',
- },
- timeAgo: {
- justNow: 'Agora mesmo',
- minutesAgo: 'há {{minutes}} minutos',
- hoursAgo: 'há {{hours}} horas',
- },
- },
- // Restore/Backup Modal
- restoreBackup: {
- title: 'Restaurar Backup',
- restoring: 'Restaurando...',
- restoreComplete: 'Restauração Concluída',
- restoreFailed: 'Falha na Restauração',
- importSettings: 'Importar configurações de um arquivo de backup',
- pleaseWait: 'Aguarde enquanto seus dados estão sendo restaurados',
- clickToSelect: 'Clique para selecionar o arquivo de backup (.json ou .zip)',
- howDuplicateHandling: 'Como funciona o tratamento de duplicatas:',
- categories: {
- printers: 'Impressoras',
- smartPlugs: 'Tomadas Inteligentes',
- notificationProviders: 'Provedores de Notificação',
- filaments: 'Filamentos',
- archives: 'Arquivos',
- pendingUploads: 'Uploads Pendentes',
- settingsTemplates: 'Configurações e Modelos',
- },
- matchingInfo: {
- printers: 'correspondem pelo número de série',
- smartPlugs: 'correspondem pelo endereço IP',
- notificationProviders: 'correspondem pelo nome',
- filaments: 'correspondem pelo nome + tipo + marca',
- archives: 'correspondem pelo hash do conteúdo',
- pendingUploads: 'correspondem pelo nome do arquivo',
- settingsTemplates: 'sempre sobrescrito',
- },
- replaceExisting: 'Substituir dados existentes',
- keepExisting: 'Manter dados existentes',
- replaceDescription: 'Substituir itens que já existem com os dados do backup',
- keepDescription: 'Restaurar apenas itens que não existem',
- caution: 'Atenção:',
- 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.',
- itemsRestored: 'Itens Restaurados',
- itemsSkipped: 'Itens Ignorados',
- restored: 'Restaurado',
- skipped: 'Ignorado (já existe)',
- filesLabel: 'Arquivos (3MF, miniaturas, etc.)',
- newApiKeysGenerated: 'Novas Chaves API Geradas',
- newApiKeysWarning: 'Essas chaves são exibidas apenas uma vez. Copie-as agora!',
- processingBackup: 'Processando arquivo de backup...',
- noDataFound: 'Nenhum dado foi encontrado para restaurar no arquivo de backup.',
- failedToRestore: 'Falha ao restaurar o backup. Verifique o formato do arquivo.',
- },
- // Backup Export Modal
- backupExport: {
- title: 'Exportar Backup',
- selectData: 'Selecione os dados a incluir',
- selectAll: 'Selecionar Todos',
- selectNone: 'Selecionar Nenhum',
- categoryDescriptions: {
- settings: 'Idioma, tema, preferências de atualização',
- notifications: 'ntfy, Pushover, Discord, etc.',
- templates: 'Modelos de mensagens personalizadas',
- smartPlugs: 'Configurações de tomadas Tasmota',
- externalLinks: 'Links da barra lateral para serviços externos',
- printers: 'Informações da impressora (códigos de acesso excluídos)',
- plateDetection: 'Imagens de referência de placa vazia',
- filaments: 'Tipos e custos de filamento',
- maintenance: 'Cronogramas de manutenção personalizados',
- archives: 'Todos os dados de impressão + arquivos (3MF, miniaturas, fotos)',
- projects: 'Projetos, itens de BOM e anexos',
- pendingUploads: 'Uploads de impressora virtual aguardando revisão',
- apiKeys: 'Chaves API de webhook (novas chaves geradas na importação)',
- },
- requiresPrinters: 'Requer que as impressoras sejam selecionadas',
- zipFileWarning: 'Um arquivo ZIP será criado.',
- zipFileDescription: 'Inclui todos os arquivos 3MF, miniaturas, timelapses e fotos. Isso pode levar algum tempo e resultar em um arquivo grande.',
- includeAccessCodes: 'Incluir Códigos de Acesso',
- includeAccessCodesDescription: 'Para transferir para outra máquina',
- includeAccessCodesWarning: 'Os códigos de acesso serão incluídos em texto simples. Mantenha este arquivo de backup seguro!',
- categoriesSelected: '{{selectedCount}} categorias selecionadas',
- },
- // Pending Uploads Panel
- pendingUploads: {
- placeholders: {
- notes: 'Adicione notas sobre esta impressão...',
- },
- discardUpload: 'Descartar Upload',
- archiveAllUploads: 'Arquivar Todos os Uploads',
- discardAllUploads: 'Descartar Todos os Uploads',
- archive: 'Arquivar',
- timeAgo: {
- justNow: 'Agora mesmo',
- minutesAgo: 'há {{minutes}} minutos',
- hoursAgo: 'há {{hours}} horas',
- daysAgo: 'há {{days}} dias',
- },
- },
- // API Browser
- apiBrowser: {
- placeholders: {
- requestBody: 'Corpo da requisição JSON...',
- searchEndpoints: 'Pesquisar endpoints...',
- },
- },
- // Configure AMS Slot Modal
- configureAmsSlot: {
- title: 'Configurar Slot AMS',
- slotConfigured: 'Slot Configurado!',
- configuringSlot: 'Configurando slot:',
- slotLabel: '{{ams}} Slot {{slot}}',
- searchPresets: 'Pesquisar predefinições...',
- colorPlaceholder: 'Nome da cor ou hex (ex.: marrom, FF8800)',
- clearCustomColor: 'Limpar cor personalizada',
- noCloudPresets: 'Nenhuma predefinição na nuvem. Faça login no Bambu Cloud para sincronizar.',
- noPresetsAvailable: 'Nenhuma predefinição disponível. Faça login no Bambu Cloud ou importe perfis locais.',
- noMatchingPresets: 'Nenhuma predefinição correspondente encontrada.',
- custom: 'Personalizado',
- builtin: 'Integrado',
- settingsSentToPrinter: 'Configurações enviadas para a impressora',
- filamentProfile: 'Perfil de Filamento',
- kProfileLabel: 'Perfil K (Avanço de Pressão)',
- filteringFor: 'Filtrando por: {{material}}',
- noKProfile: 'Nenhum perfil K (usar padrão 0.020)',
- noMatchingKProfiles: 'Nenhum perfil K correspondente encontrado. O K padrão=0.020 será usado.',
- selectFilamentFirst: 'Selecione um perfil de filamento primeiro',
- kFromCalibration: 'K={{value}} da calibração da impressora',
- customColorLabel: 'Cor Personalizada (opcional)',
- presetColors: 'Cores de {{name}}:',
- showLessColors: 'Mostrar menos cores',
- showMoreColors: 'Mostrar mais cores',
- clear: 'Limpar',
- hexLabel: 'Hex: #{{hex}}',
- resetting: 'Redefinindo...',
- resetSlot: 'Redefinir Slot',
- cancel: 'Cancelar',
- configuring: 'Configurando...',
- configureSlot: 'Configurar Slot',
- },
- // GitHub Backup Settings
- githubBackup: {
- title: 'Backup do GitHub',
- history: 'Histórico',
- downloadBackup: 'Baixar Backup',
- restoreBackup: 'Restaurar Backup',
- noBackupsYet: 'Nenhum backup ainda',
- },
- // Email Settings
- emailSettings: {
- placeholders: {
- fromName: 'BamBuddy',
- },
- },
- // Tag Management Modal
- tagManagement: {
- searchTags: 'Pesquisar tags...',
- renameTag: 'Renomear tag',
- deleteTag: 'Excluir tag',
- },
- // Notification Template Editor
- notificationTemplates: {
- placeholders: {
- title: 'Título da notificação...',
- body: 'Corpo da notificação...',
- },
- },
- // Batch Tag Modal
- batchTag: {
- placeholders: {
- newTag: 'Digite uma nova tag...',
- },
- },
- // Photo Gallery Modal
- photoGallery: {
- deletePhoto: 'Excluir foto',
- },
- // Filament Hover Card
- filamentHoverCard: {
- copySpoolUuid: 'Copiar UUID do carretel',
- },
- // K Profiles View
- kProfilesView: {
- hasNote: 'Possui nota',
- copyProfile: 'Copiar perfil',
- },
- // Layout/Navigation
- layout: {
- openMenu: 'Abrir menu',
- noPermissionSystemInfo: 'Você não tem permissão para visualizar informações do sistema',
- },
- // Dashboard
- dashboard: {
- dragToReorder: 'Arrastar para reordenar',
- hideWidget: 'Ocultar widget',
- },
- // Notification Provider Card
- notificationProviderCard: {
- deleteNotificationProvider: 'Excluir provedor de notificação',
- },
- // File Manager Modal
- fileManagerModal: {
- closeFileManager: 'Fechar gerenciador de arquivos',
- sortFiles: 'Ordenar arquivos',
- goToParentFolder: 'Ir para a pasta pai',
- threeView: 'Visualização 3D',
- },
- // Embedded Camera Viewer
- embeddedCameraViewer: {
- refreshStream: 'Atualizar stream',
- close: 'Fechar',
- zoomOut: 'Reduzir zoom',
- resetZoom: 'Redefinir zoom',
- zoomIn: 'Aumentar zoom',
- dragToResize: 'Arrastar para redimensionar',
- },
- // Timelapse Viewer
- timelapseViewer: {
- skipBack5s: 'Voltar 5s',
- skipForward5s: 'Avançar 5s',
- },
- // Notification Providers
- notificationProviders: {
- descriptions: {
- email: 'Notificações por email SMTP',
- telegram: 'Notificações via bot do Telegram',
- discord: 'Enviar para canal do Discord via webhook',
- ntfy: 'Notificações push gratuitas e auto-hospedáveis',
- pushover: 'Notificações push simples e confiáveis',
- callmebot: 'Notificações gratuitas via WhatsApp pelo CallMeBot',
- webhook: 'POST HTTP genérico para qualquer URL',
- },
- },
- // Log Viewer
- logViewer: {
- searchPlaceholder: 'Pesquisar mensagem ou nome do logger...',
- noLogEntries: 'Nenhuma entrada de log encontrada',
- },
- // Switchbar Popover
- switchbarPopover: {
- noSwitchesInSwitchbar: 'Nenhum switch na barra de switches',
- },
- // Project Page Modal
- projectPageModal: {
- placeholders: {
- title: 'Título',
- designer: 'Designer',
- license: 'Licença',
- description: 'Digite a descrição...',
- profileTitle: 'Título do perfil',
- profileDescription: 'Descrição do perfil...',
- },
- },
- // Spoolman Settings
- spoolmanSettings: {},
- };
|