| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441 |
- 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',
- },
- },
- // 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',
- 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',
- 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: {},
- };
|