From 88f76adbc241bc332999177e76b7fb20a2929daa Mon Sep 17 00:00:00 2001 From: DuBearte <130190089+DuBearte@users.noreply.github.com> Date: Fri, 16 Oct 2026 10:26:31 -0400 Subject: [PATCH] Add Brazilian Portuguese translation (#1688) (#1735) Thanks @DuBearte. --- ATTRIBUTION.md | 1 + assets/locales/pt-BR.json | 1460 ++++++++++++++++++++++++++++++++++++ crates/ui-egui/src/i18n.rs | 14 + docs/localization.md | 6 +- 4 files changed, 1478 insertions(+), 3 deletions(-) create mode 100644 assets/locales/pt-BR.json diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md index 6221864b..6ac919ab 100644 --- a/ATTRIBUTION.md +++ b/ATTRIBUTION.md @@ -99,6 +99,7 @@ Editable drawing code, native projects and shipped exports are collected under ` | assets/locales/ja.json | SolidCraft contributors | Original SolidCraft resource data or drawing code, collected without redesign | MIT OR Apache-2.0 | | assets/locales/ko.json | SolidCraft contributors | Original SolidCraft resource data or drawing code, collected without redesign | MIT OR Apache-2.0 | | assets/locales/ru.json | Alex Pro (del000) | Russian translation of the English catalog, contributed upstream | MIT OR Apache-2.0 | +| assets/locales/pt-BR.json | DuBearte | Brazilian Portuguese translation of the English catalog, contributed upstream | MIT OR Apache-2.0 | | assets/locales/tr.json | macrulz54 | Turkish translation of the English catalog, contributed upstream | MIT OR Apache-2.0 | | assets/locales/uk.json | Igor Bronovskyi (BrunIF) | Ukrainian translation of the English catalog, contributed upstream | MIT OR Apache-2.0 | | assets/locales/zh.json | SolidCraft contributors | Original SolidCraft resource data or drawing code, collected without redesign | MIT OR Apache-2.0 | diff --git a/assets/locales/pt-BR.json b/assets/locales/pt-BR.json new file mode 100644 index 00000000..c45e1a6a --- /dev/null +++ b/assets/locales/pt-BR.json @@ -0,0 +1,1460 @@ +{ + "0 turns it off": "0 desativa", + "1. Open GitHub draft below, then paste the report copied to your clipboard.": "1. Abra o rascunho do GitHub abaixo e cole o relatório copiado para a área de transferência.", + "1. Open GitHub draft below. Your title and report will be filled in.": "1. Abra o rascunho do GitHub abaixo. O título e o relatório serão preenchidos.", + "2. Attach your screenshot: copy and paste it, or save and upload the PNG.": "2. Anexe a captura de tela: copie e cole, ou salve e envie o PNG.", + "3. Click Submit new issue on GitHub to send your report.": "3. Clique em Submit new issue no GitHub para enviar o relatório.", + "A new configuration, a copy of the active one": "Uma nova configuração, cópia da ativa", + "AI": "IA", + "About SolidCraft": "Sobre o SolidCraft", + "Active": "Ativo", + "Active rule": "Regra ativa", + "Add": "Adicionar", + "Add Key": "Adicionar chave", + "Add Mid Radius": "Adicionar raio intermediário", + "Add Row": "Adicionar linha", + "Add condition": "Adicionar condição", + "Alignment": "Alinhamento", + "All Sketch Points": "Todos os pontos do esboço", + "All open designs": "Todos os projetos abertos", + "Allowed expressions, separated by semicolons": "Expressões permitidas, separadas por ponto e vírgula", + "Also deletes": "Também exclui", + "Angle 2": "Ângulo 2", + "Animate": "Animar", + "Appearance name": "Nome da aparência", + "Applied Radius": "Raio aplicado", + "Apply To": "Aplicar a", + "Apply to selection": "Aplicar à seleção", + "Arc length": "Comprimento do arco", + "Area": "Área", + "Attachment": "Fixação", + "BROWSER": "NAVEGADOR", + "Bend Line Position": "Posição da linha de dobra", + "Bend Position": "Posição da dobra", + "Bend Radius": "Raio de dobra", + "Bends": "Dobras", + "Body": "Corpo", + "Boundary": "Contorno", + "Bounding box": "Caixa delimitadora", + "CSV or JSON: updates existing parameters, adds new ones": "CSV ou JSON: atualiza parâmetros existentes e adiciona novos", + "Capture All Positions": "Capturar todas as posições", + "Catch Direction": "Direção do encaixe", + "Cells": "Células", + "Center X": "Centro X", + "Center Y": "Centro Y", + "Center of mass": "Centro de massa", + "Centre to centre": "Centro a centro", + "Chamfer Type": "Tipo de chanfro", + "Check collisions": "Verificar colisões", + "Checked": "Marcado", + "Choose a new plane. Sketch geometry and dimensions stay unchanged in its two-dimensional coordinates.": "Escolha um novo plano. A geometria e as cotas do esboço permanecem inalteradas em suas coordenadas bidimensionais.", + "Circumference": "Circunferência", + "Close draft": "Fechar rascunho", + "Collisions": "Colisões", + "Colour": "Cor", + "Component1": "Componente1", + "Configuration": "Configuração", + "Configuration rules": "Regras de configuração", + "Construction": "Construção", + "Contact": "Contato", + "Continuity": "Continuidade", + "Copy Error Message": "Copiar mensagem de erro", + "Copy Warning Message": "Copiar mensagem de aviso", + "Copy all licences": "Copiar todas as licenças", + "Copy diagnostic information": "Copiar informações de diagnóstico", + "Copy report": "Copiar relatório", + "Copy screenshot": "Copiar captura de tela", + "Corner Relief": "Alívio de canto", + "Corner Relief Shape": "Forma do alívio de canto", + "Counterbore depth": "Profundidade do rebaixo", + "Countersink angle": "Ângulo do escareado", + "Create Issue — review draft": "Criar issue — revisar rascunho", + "Cube": "Cubo", + "Current orthographic view (1:1 mm)": "Vista ortográfica atual (1:1 mm)", + "Current perspective view": "Vista em perspectiva atual", + "Curvature (G2)": "Curvatura (G2)", + "Customize Toolbar": "Personalizar barra de ferramentas", + "Delete all": "Excluir tudo", + "Delete rule": "Excluir regra", + "Delete the row": "Excluir a linha", + "Delete the set": "Excluir o conjunto", + "Delete this parameter": "Excluir este parâmetro", + "Density": "Densidade", + "Designs you open or save appear here.": "Os projetos que você abrir ou salvar aparecem aqui.", + "Determined by To Object. Choose Angle to edit the angular extent.": "Determinado por Até o objeto. Escolha Ângulo para editar a extensão angular.", + "Discard": "Descartar", + "Do not export hidden edges": "Não exportar arestas ocultas", + "Double-click to rename": "Clique duas vezes para renomear", + "Double-clicking the middle button in the view: Home (the home view, framing what is shown), Fit (frame what is shown, keeping the orientation) or nothing": "Clique duplo com o botão do meio na vista: Início (a vista inicial, enquadrando o que é mostrado), Ajustar (enquadra o que é mostrado, mantendo a orientação) ou nada", + "Drive Joint": "Acionar junta", + "Edges": "Arestas", + "Edit Profile Sketch": "Editar esboço do perfil", + "Enable rule": "Ativar regra", + "Enabled": "Ativado", + "Explode": "Explodir", + "Export Animation…": "Exportar animação…", + "Export Current View as DXF": "Exportar vista atual como DXF", + "Export Current View as DXF…": "Exportar vista atual como DXF…", + "Export DXF…": "Exportar DXF…", + "Export hidden edges as dashed lines": "Exportar arestas ocultas como linhas tracejadas", + "Extents": "Extensões", + "Face": "Face", + "Face attachment lost": "Fixação à face perdida", + "Faces": "Faces", + "Faces / edges / vertices": "Faces / arestas / vértices", + "Favourite": "Favorito", + "Files from many CAD programs have Y up, so they open lying on their back here (Z up).": "Arquivos de muitos programas CAD usam Y para cima, então abrem deitados aqui (Z para cima).", + "Filter": "Filtro", + "Find in Browser": "Localizar no navegador", + "Flat": "Plano", + "Flat size": "Tamanho planificado", + "Follow camera (Look At sketches)": "Seguir a câmera (Olhar para os esboços)", + "Follow the camera (Look At sketches)": "Seguir a câmera (Olhar para os esboços)", + "Font": "Fonte", + "Full Length": "Comprimento total", + "Gap": "Folga", + "Grid": "Grade", + "Height": "Altura", + "Hidden edges": "Arestas ocultas", + "Holes": "Furos", + "Holes (edges on them)": "Furos (arestas neles)", + "Home view": "Vista inicial", + "In This Design": "Neste projeto", + "In place (surfaces)": "No lugar (superfícies)", + "Inside": "Dentro", + "Interferes": "Interfere", + "Issue title": "Título da issue", + "Joint Origin1": "Origem da junta1", + "Keep Tools": "Manter ferramentas", + "Later": "Depois", + "Leave it": "Deixar assim", + "Legacy face attachment. Rebinding to a certified face creates an exact attachment.": "Fixação de face antiga. Vincular novamente a uma face certificada cria uma fixação exata.", + "Length": "Comprimento", + "Length units": "Unidades de comprimento", + "Letter Spacing": "Espaçamento entre letras", + "Library": "Biblioteca", + "Line Spacing": "Espaçamento entre linhas", + "Loop": "Laço", + "Margin": "Margem", + "Mass": "Massa", + "Material": "Material", + "Max": "Máx.", + "Mid Radius": "Raio intermediário", + "Middle double-click": "Clique duplo do meio", + "Min": "Mín.", + "Mitre": "Meia-esquadria", + "Modeled": "Modelado", + "More toolbar panels": "Mais painéis da barra de ferramentas", + "Motion": "Movimento", + "Move Type": "Tipo de movimento", + "Move earlier": "Mover para antes", + "Move later": "Mover para depois", + "Name": "Nome", + "No crash reports.": "Nenhum relatório de falha.", + "No matching appearances": "Nenhuma aparência correspondente", + "No visible bodies to export.": "Nenhum corpo visível para exportar.", + "None": "Nenhum", + "Not available yet": "Ainda não disponível", + "Notch": "Entalhe", + "Opacity": "Opacidade", + "Open GitHub draft": "Abrir rascunho no GitHub", + "Open-source parametric 3D CAD in Rust. Licensed MIT OR Apache-2.0.": "CAD 3D paramétrico de código aberto em Rust. Licenciado sob MIT OU Apache-2.0.", + "Other side": "Outro lado", + "Outside": "Fora", + "Overall length": "Comprimento total", + "Parameter values": "Valores dos parâmetros", + "Pass through": "Atravessar", + "Path": "Caminho", + "Per Edge": "Por aresta", + "Pick the tool bodies": "Selecione os corpos de ferramenta", + "Picked": "Selecionado", + "Place at the origin instead": "Colocar na origem", + "Playback": "Reprodução", + "Position": "Posição", + "Position (0 to 1)": "Posição (0 a 1)", + "Position (G0)": "Posição (G0)", + "Position along the edge, 0 at the start end, 1 at the other": "Posição ao longo da aresta: 0 na extremidade inicial, 1 na outra", + "Preview Row": "Visualizar linha", + "Preview leaves the current design unchanged.": "A visualização não altera o projeto atual.", + "Profiles/Curves": "Perfis/Curvas", + "Projection": "Projeção", + "RECENT": "RECENTES", + "RULED SURFACE": "SUPERFÍCIE REGRADA", + "Radius Fit": "Ajuste de raio", + "Ratio": "Razão", + "Reattach selected face": "Fixar novamente na face selecionada", + "Recover": "Recuperar", + "Recover unsaved design?": "Recuperar projeto não salvo?", + "Rectangular": "Retangular", + "Reference face": "Face de referência", + "Remove Tools": "Remover ferramentas", + "Remove from list": "Remover da lista", + "Remove override": "Remover substituição", + "Remove private design details or paths before sharing.": "Remova detalhes privados do projeto ou caminhos antes de compartilhar.", + "Remove screenshot": "Remover captura de tela", + "Remove the column": "Remover a coluna", + "Remove the track": "Remover a trilha", + "Remove this point": "Remover este ponto", + "Report a bug — review a screenshot and open a GitHub draft": "Relatar um bug — revise uma captura de tela e abra um rascunho no GitHub", + "Reset Toolbar": "Redefinir barra de ferramentas", + "Restore outer boundary": "Restaurar contorno externo", + "Restore the inherited component or physical material appearance": "Restaurar a aparência herdada do componente ou do material físico", + "Result": "Resultado", + "Retake screenshot": "Refazer captura de tela", + "Reverse": "Inverter", + "Reverse Direction": "Inverter direção", + "Revert": "Reverter", + "Revert All Positions": "Reverter todas as posições", + "Revert Position": "Reverter posição", + "Review the report and screenshot before opening GitHub.": "Revise o relatório e a captura de tela antes de abrir o GitHub.", + "Rim Edge": "Aresta da borda", + "Roll History Marker Here": "Mover o marcador do histórico para cá", + "Round": "Arredondado", + "Rule": "Regra", + "Save Rule": "Salvar regra", + "Save the study as an animated GIF, seen as the viewport shows it": "Salvar o estudo como GIF animado, como a janela de visualização o mostra", + "Saved preview. Geometry is being checked before editing.": "Visualização salva. A geometria está sendo verificada antes da edição.", + "Scale factor": "Fator de escala", + "Search": "Pesquisar", + "Search commands": "Pesquisar comandos", + "Select Other: hold the left button still on the model (or right-click › Select Other…) to list everything under the cursor; click again on the same spot to select the next thing there. Double-click the middle button to go Home (Preferences › Navigation).": "Selecionar outro: mantenha o botão esquerdo parado sobre o modelo (ou clique com o botão direito › Selecionar outro…) para listar tudo sob o cursor; clique de novo no mesmo ponto para selecionar o próximo item ali. Clique duas vezes com o botão do meio para ir ao Início (Preferências › Navegação).", + "Select bodies (a face picks its body)": "Selecione corpos (uma face seleciona seu corpo)", + "Select bodies or faces instead": "Selecionar corpos ou faces em vez disso", + "Selection filter": "Filtro de seleção", + "Semantic faces share their appearance across instances.": "Faces semânticas compartilham a aparência entre instâncias.", + "Send your report on GitHub": "Envie seu relatório no GitHub", + "Shape": "Forma", + "Show Agent Cursor": "Mostrar cursor do agente", + "Show in folder": "Mostrar na pasta", + "Show the pointer an AI agent moves (#35)": "Mostrar o ponteiro que um agente de IA move (#35)", + "Signed axes": "Eixos com sinal", + "Size": "Tamanho", + "Sketch constraints": "Restrições do esboço", + "Sketch curves": "Curvas do esboço", + "Sketch dimensions": "Cotas do esboço", + "Sketch geometry and profiles": "Geometria e perfis do esboço", + "Sketch plane has no body-face attachment.": "O plano do esboço não está fixado a uma face de corpo.", + "Sketch points": "Pontos do esboço", + "Slot width": "Largura do rasgo", + "SolidCraft closed before these designs were saved. Their last autosave can be opened.": "O SolidCraft fechou antes de estes projetos serem salvos. O último salvamento automático deles pode ser aberto.", + "Speed": "Velocidade", + "Stand it up": "Colocar em pé", + "Stand it up: a quarter turn about X, as one Move feature you can undo.": "Colocar em pé: um quarto de volta em torno de X, como um recurso Mover que pode ser desfeito.", + "Stand this part up?": "Colocar esta peça em pé?", + "Step": "Passo", + "Steps": "Passos", + "Style": "Estilo", + "Suppressed": "Suprimido", + "Swap Ends": "Trocar extremidades", + "Tangent (G1)": "Tangente (G1)", + "Tangent Chain": "Cadeia tangente", + "Tear": "Rasgo", + "The dashed sketch is a saved plane guide. Select a new face to repair the attachment.": "O esboço tracejado é uma guia de plano salva. Selecione uma nova face para reparar a fixação.", + "The saved author occurrence is missing. Select a valid author placement before rebinding.": "A ocorrência de autoria salva não existe mais. Selecione um posicionamento de autoria válido antes de vincular novamente.", + "Then": "Então", + "These features will be deleted:": "Estes recursos serão excluídos:", + "These features will fail:": "Estes recursos vão falhar:", + "Thickness Outside": "Espessura para fora", + "Thin": "Fino", + "Thin Extrude": "Extrusão fina", + "This child is shared. Deleting it removes it from every copy of its parent.": "Este filho é compartilhado. Excluí-lo o remove de todas as cópias do pai.", + "This child is shared. Position changes apply to every copy of its parent.": "Este filho é compartilhado. Mudanças de posição se aplicam a todas as cópias do pai.", + "This face cannot provide a durable attachment. Choose another face or explicitly use a fixed plane.": "Esta face não pode fornecer uma fixação duradoura. Escolha outra face ou use explicitamente um plano fixo.", + "To Offset": "Deslocamento final", + "Tolerance": "Tolerância", + "Turn off section analysis before exporting the view.": "Desative a análise de seção antes de exportar a vista.", + "Type": "Tipo", + "UNTRIM": "DESAPARAR", + "Updating the preview": "Atualizando a visualização", + "Use active author placement": "Usar o posicionamento de autoria ativo", + "Use fixed plane": "Usar plano fixo", + "Use saved fixed plane": "Usar o plano fixo salvo", + "Use selected face as fixed plane": "Usar a face selecionada como plano fixo", + "VIEW": "VISTA", + "Value": "Valor", + "Vertices": "Vértices", + "View navigator": "Navegador de vistas", + "Visible bodies only. Curves use line segments (0.01 mm tolerance).": "Somente corpos visíveis. As curvas usam segmentos de reta (tolerância de 0,01 mm).", + "Volume": "Volume", + "Wall": "Parede", + "Wall Location": "Posição da parede", + "Wall Thickness": "Espessura da parede", + "When": "Quando", + "Width": "Largura", + "Will fail": "Vai falhar", + "angle, height": "ângulo, altura", + "appearance.dielectric_ior": "IOR dielétrico", + "appearance.metallic": "Metálico", + "appearance.pbr_help": "Veja esta superfície em Renderizar ou em um PNG de produto. Sem refração nem transmissão.", + "appearance.pbr_opaque": "PBR opaco", + "appearance.roughness": "Rugosidade", + "appearance.surface_response": "Resposta da superfície", + "browser.body_name": "Corpo{number}", + "browser.component_name": "Componente{number}", + "browser.parameters": "Parâmetros ({count})", + "browser.precision": "Precisão: {precision}", + "browser.sketch_name": "Esboço{number}", + "browser.units": "Unidades: {units}", + "cmd.appearance_assign": "Aparência", + "cmd.appearance_library": "Biblioteca de aparências", + "cmd.appearance_list": "Listar aparências", + "cmd.body_rename": "Renomear corpo", + "cmd.browser_group": "Novo grupo", + "cmd.browser_move": "Mover itens do navegador", + "cmd.browser_order": "Ordenar itens do navegador", + "cmd.browser_rename_group": "Renomear grupo", + "cmd.browser_ungroup": "Desagrupar", + "cmd.browser_visibility": "Mostrar/Ocultar", + "cmd.canvas_calibrate": "Calibrar tela de referência", + "cmd.canvas_decal": "Decalque", + "cmd.canvas_delete": "Excluir tela de referência", + "cmd.canvas_edit": "Editar tela de referência", + "cmd.canvas_insert": "Tela de referência", + "cmd.component_activate": "Ativar componente", + "cmd.component_break_link": "Quebrar vínculo", + "cmd.component_capture_position": "Capturar posição", + "cmd.component_create": "Novo componente", + "cmd.component_delete": "Excluir componente", + "cmd.component_from_bodies": "Criar componentes a partir de corpos", + "cmd.component_insert_design": "Inserir projeto", + "cmd.component_links": "Listar vínculos", + "cmd.component_list": "Listar componentes", + "cmd.component_move_bodies": "Mover corpos para o componente", + "cmd.component_move_sketches": "Mover esboços para o componente", + "cmd.component_paste_new": "Colar novo", + "cmd.component_properties": "Propriedades físicas do componente", + "cmd.component_rename": "Renomear componente", + "cmd.component_revert_position": "Reverter posição", + "cmd.component_unlock": "Desbloquear conteúdo", + "cmd.component_update_links": "Atualizar vínculos", + "cmd.config_activate": "Ativar configuração", + "cmd.config_column": "Coluna de configuração", + "cmd.config_configure": "Configurar", + "cmd.config_preview": "Visualizar configuração", + "cmd.config_row": "Linha de configuração", + "cmd.config_rule": "Regra de configuração", + "cmd.config_rules": "Regras de configuração", + "cmd.config_table": "Exibir tabela de configurações", + "cmd.construct_axis_edge": "Eixo pela aresta", + "cmd.construct_axis_normal_to_face": "Eixo perpendicular à face", + "cmd.construct_axis_through_cylinder": "Eixo pelo cilindro/cone/toro", + "cmd.construct_axis_two_planes": "Eixo por dois planos", + "cmd.construct_axis_two_points": "Eixo por dois pontos", + "cmd.construct_plane_along_path": "Plano ao longo do caminho", + "cmd.construct_plane_midplane": "Plano médio", + "cmd.construct_plane_perpendicular": "Plano perpendicular", + "cmd.construct_plane_tangent": "Plano tangente", + "cmd.construct_plane_three_points": "Plano por três pontos", + "cmd.construct_plane_two_edges": "Plano por duas arestas", + "cmd.construct_point_along_path": "Ponto ao longo do caminho", + "cmd.construct_point_center": "Ponto no centro do círculo/esfera/toro", + "cmd.construct_point_edge_plane": "Ponto na aresta e no plano", + "cmd.construct_point_three_planes": "Ponto por três planos", + "cmd.construct_point_two_edges": "Ponto por duas arestas", + "cmd.construct_point_vertex": "Ponto no vértice", + "cmd.contact_check": "Verificar contato", + "cmd.contact_create": "Novo conjunto de contato", + "cmd.contact_disable_all": "Desativar contato", + "cmd.contact_edit": "Editar conjunto de contato", + "cmd.contact_enable_all": "Ativar todo o contato", + "cmd.contact_enable_sets": "Ativar conjuntos de contato", + "cmd.contact_list": "Listar conjuntos de contato", + "cmd.diagnostics_crash_report": "Relatório de falha", + "cmd.diagnostics_crash_reports": "Relatórios de falha", + "cmd.diagnostics_crash_reports_clear": "Excluir relatórios de falha", + "cmd.diagnostics_crash_test": "Teste de falha", + "cmd.doc_recover": "Recuperar projeto", + "cmd.doc_recovery_discard": "Descartar projeto recuperado", + "cmd.doc_recovery_list": "Projetos recuperáveis", + "cmd.document_inspect": "Inspecionar projeto", + "cmd.document_metadata": "Propriedades do projeto", + "cmd.document_metadata_remove": "Remover propriedade do projeto", + "cmd.document_metadata_set": "Alterar propriedades do projeto", + "cmd.document_units": "Alterar unidades do projeto", + "cmd.edit_checkpoint": "Ponto de restauração", + "cmd.edit_restore_checkpoint": "Restaurar ponto de restauração", + "cmd.engine_commands": "Listar comandos", + "cmd.explode_create": "Vista explodida", + "cmd.explode_delete": "Excluir vista explodida", + "cmd.explode_list": "Listar vistas explodidas", + "cmd.explode_show": "Mostrar vista explodida", + "cmd.expr_evaluate": "Avaliar expressão", + "cmd.face_delete": "Excluir face", + "cmd.file_export": "Exportar", + "cmd.file_insert_mesh": "Inserir malha", + "cmd.file_insert_step": "Inserir STEP", + "cmd.file_save_mesh": "Salvar como malha", + "cmd.file_slicers": "Fatiadores instalados", + "cmd.inspect_accessibility": "Análise de acessibilidade", + "cmd.inspect_center_of_mass": "Centro de massa", + "cmd.inspect_compare": "Comparar corpos", + "cmd.inspect_continuity": "Análise de continuidade", + "cmd.inspect_curvature_comb": "Análise de pente de curvatura", + "cmd.inspect_curvature_map": "Análise de mapa de curvatura", + "cmd.inspect_draft": "Análise de ângulo de saída", + "cmd.inspect_environment_map": "Análise de mapa de ambiente", + "cmd.inspect_interference": "Interferência", + "cmd.inspect_isocurve": "Análise de isocurvas", + "cmd.inspect_minimum_radius": "Análise de raio mínimo", + "cmd.inspect_zebra": "Análise zebra", + "cmd.joint_as_built": "Junta como construída", + "cmd.joint_create": "Junta", + "cmd.joint_delete": "Excluir junta", + "cmd.joint_drive": "Acionar juntas", + "cmd.joint_edit": "Editar junta", + "cmd.joint_gear": "Engrenagem", + "cmd.joint_limits": "Limites da junta", + "cmd.joint_list": "Listar juntas", + "cmd.joint_motion_link": "Vínculo de movimento", + "cmd.joint_origin": "Origem da junta", + "cmd.joint_rack_pinion": "Cremalheira e pinhão", + "cmd.joint_reach": "Alcançar ponto", + "cmd.joint_rigid_group": "Grupo rígido", + "cmd.joint_screw": "Parafuso", + "cmd.joint_solve": "Resolver juntas", + "cmd.library_apply": "Aplicar entrada da biblioteca local", + "cmd.library_export": "Exportar biblioteca do projeto", + "cmd.library_inspect": "Inspecionar biblioteca local", + "cmd.material_assign": "Material físico", + "cmd.material_create": "Novo material físico", + "cmd.material_delete": "Excluir material físico", + "cmd.material_edit": "Editar material físico", + "cmd.material_list": "Listar materiais", + "cmd.material_properties_directional": "Módulo de elasticidade direcional", + "cmd.material_properties_validate": "Validar dados do material físico", + "cmd.mesh_convert": "Converter malha", + "cmd.model_edges": "Listar arestas", + "cmd.model_faces": "Listar faces", + "cmd.model_threads": "Listar roscas", + "cmd.motion_delete": "Excluir estudo de movimento", + "cmd.motion_export": "Exportar estudo de movimento", + "cmd.motion_export_animation": "Exportar animação de movimento", + "cmd.motion_list": "Listar estudos de movimento", + "cmd.motion_play": "Reproduzir estudo de movimento", + "cmd.motion_study": "Estudo de movimento", + "cmd.motion_trace": "Traçado de movimento", + "cmd.motion_trace_keep": "Manter traçado de movimento", + "cmd.occurrence_copy": "Colar (instância)", + "cmd.occurrence_ground": "Fixar no solo", + "cmd.occurrence_move": "Mover ocorrência", + "cmd.occurrence_properties": "Propriedades físicas da ocorrência", + "cmd.parameters_add": "Adicionar parâmetro do usuário", + "cmd.parameters_change": "Alterar parâmetros", + "cmd.parameters_comment": "Comentar parâmetro", + "cmd.parameters_complete": "Completar expressão", + "cmd.parameters_delete": "Excluir parâmetro", + "cmd.parameters_export": "Exportar parâmetros", + "cmd.parameters_favorite": "Favoritar parâmetro", + "cmd.parameters_graph": "Grafo de parâmetros", + "cmd.parameters_import": "Importar parâmetros", + "cmd.parameters_list": "Listar parâmetros", + "cmd.parameters_move": "Mover parâmetro", + "cmd.parameters_rename": "Renomear parâmetro", + "cmd.parameters_users": "Usuários do parâmetro", + "cmd.parts_fastener": "Inserir fixador", + "cmd.parts_insert": "Inserir peça", + "cmd.parts_library": "Peças padrão", + "cmd.parts_resize": "Alterar tamanho da peça", + "cmd.plastic_assign_rule": "Atribuir regra de plástico", + "cmd.plastic_boss": "Ressalto", + "cmd.plastic_lip": "Lábio", + "cmd.plastic_manage_rules": "Gerenciar regras de plástico", + "cmd.plastic_rest": "Apoio", + "cmd.plastic_rules": "Listar regras de plástico", + "cmd.plastic_snap_fit": "Encaixe por pressão", + "cmd.render_backends": "Backends de renderização", + "cmd.render_cancel": "Cancelar renderização", + "cmd.render_export": "Exportar imagem renderizada", + "cmd.render_preflight": "Verificar pedido de renderização", + "cmd.render_scene": "Inspecionar cena de renderização", + "cmd.render_settings_apply": "Aplicar câmera de renderização", + "cmd.render_settings_get": "Configurações de renderização", + "cmd.render_settings_set": "Salvar configurações de renderização", + "cmd.render_start": "Renderizar imagem", + "cmd.render_status": "Progresso da renderização", + "cmd.select_clear": "Limpar seleção", + "cmd.sheet_convert": "Converter em chapa metálica", + "cmd.sheet_export_bend_table": "Exportar tabela de dobras", + "cmd.sheet_export_dxf": "Exportar planificação como DXF", + "cmd.sheet_flange": "Flange", + "cmd.sheet_flat_pattern": "Criar planificação", + "cmd.sheet_fold": "Dobrar", + "cmd.sheet_hem": "Bainha", + "cmd.sheet_manage_rules": "Regras de chapa metálica", + "cmd.sheet_perforate": "Perfurar", + "cmd.sheet_refold": "Redobrar", + "cmd.sheet_rules": "Listar regras de chapa metálica", + "cmd.sheet_unfold": "Desdobrar", + "cmd.sketch_arc_center_point": "Arco por ponto central", + "cmd.sketch_arc_tangent": "Arco tangente", + "cmd.sketch_arc_three_point": "Arco por 3 pontos", + "cmd.sketch_auto_constrain": "Restrição automática", + "cmd.sketch_auto_constrain_from_datum": "Restrição automática a partir da referência", + "cmd.sketch_auto_project": "Projetar arestas automaticamente na referência", + "cmd.sketch_blend_curve": "Curva de concordância", + "cmd.sketch_chain": "Cadeia", + "cmd.sketch_chamfer_distance_angle": "Chanfro por distância e ângulo", + "cmd.sketch_chamfer_equal_distance": "Chanfro de distâncias iguais", + "cmd.sketch_chamfer_two_distance": "Chanfro de duas distâncias", + "cmd.sketch_circle_center": "Círculo por centro e diâmetro", + "cmd.sketch_circle_three_point": "Círculo por 3 pontos", + "cmd.sketch_circle_three_tangent": "Círculo tangente a 3", + "cmd.sketch_circle_two_point": "Círculo por 2 pontos", + "cmd.sketch_circle_two_tangent": "Círculo tangente a 2", + "cmd.sketch_constrainer": "Restringidor de esboço", + "cmd.sketch_constraint_fix": "Fixar/Liberar", + "cmd.sketch_constraint_midpoint": "Ponto médio", + "cmd.sketch_construction": "Normal/Construção", + "cmd.sketch_copy": "Copiar entidades do esboço", + "cmd.sketch_cut": "Recortar entidades do esboço", + "cmd.sketch_delete": "Excluir entidades do esboço", + "cmd.sketch_dimension_text": "Mover texto da cota", + "cmd.sketch_drag": "Arrastar geometria do esboço", + "cmd.sketch_drag_end": "Terminar arrasto do esboço", + "cmd.sketch_draw_dimensioned": "Desenhar geometria cotada", + "cmd.sketch_edit": "Editar esboço", + "cmd.sketch_edit_text": "Editar texto", + "cmd.sketch_export_dxf": "Salvar como DXF", + "cmd.sketch_finish_auto_constrain": "Concluir com restrição automática", + "cmd.sketch_fit_curves_to_section": "Ajustar curvas à seção da malha", + "cmd.sketch_glyphs": "Símbolos de restrição", + "cmd.sketch_include_3d": "Incluir geometria 3D", + "cmd.sketch_infinite": "Linha infinita", + "cmd.sketch_insert_dxf": "Inserir DXF", + "cmd.sketch_insert_svg": "Inserir SVG", + "cmd.sketch_inspect": "Inspecionar esboço", + "cmd.sketch_intersection_curve": "Curva de interseção", + "cmd.sketch_isoparametric_curve": "Curva isoparamétrica", + "cmd.sketch_line3d": "Linha 3D", + "cmd.sketch_line_midpoint": "Linha pelo ponto médio", + "cmd.sketch_move": "Mover/Copiar entidades do esboço", + "cmd.sketch_move3d": "Mover ponto 3D", + "cmd.sketch_move_point": "Arrastar ponto do esboço", + "cmd.sketch_offset_break": "Quebrar associação de deslocamento", + "cmd.sketch_options": "Opções da paleta de esboço", + "cmd.sketch_paste": "Colar entidades do esboço", + "cmd.sketch_point3d": "Ponto 3D", + "cmd.sketch_polygon_circumscribed": "Polígono circunscrito", + "cmd.sketch_polygon_edge": "Polígono por aresta", + "cmd.sketch_polygon_inscribed": "Polígono inscrito", + "cmd.sketch_project_to_surface": "Projetar na superfície", + "cmd.sketch_rectangle_center": "Retângulo pelo centro", + "cmd.sketch_rectangle_rounded": "Retângulo arredondado", + "cmd.sketch_rectangle_three_point": "Retângulo por 3 pontos", + "cmd.sketch_rectangle_two_point": "Retângulo por 2 pontos", + "cmd.sketch_redefine": "Redefinir plano do esboço", + "cmd.sketch_slot_arc_center": "Rasgo em arco por ponto central", + "cmd.sketch_slot_arc_three_point": "Rasgo em arco por três pontos", + "cmd.sketch_slot_center_point": "Rasgo por ponto central", + "cmd.sketch_slot_center_to_center": "Rasgo de centro a centro", + "cmd.sketch_slot_overall": "Rasgo pelo comprimento total", + "cmd.sketch_snap": "Inferência de encaixe", + "cmd.sketch_solve": "Resolver esboço", + "cmd.sketch_spline3d": "Spline 3D", + "cmd.sketch_spline_control_point": "Spline por pontos de controle", + "cmd.sketch_spline_control_point_5": "Spline por pontos de controle (grau 5)", + "cmd.sketch_spline_fit_point": "Spline por pontos de ajuste", + "cmd.sketch_spun_profile": "Perfil de revolução", + "cmd.sketch_toggle_driven": "Alternar cota conduzida", + "cmd.solid_align": "Alinhar", + "cmd.solid_boundary_fill": "Preenchimento de contorno", + "cmd.solid_bounding_solid": "Sólido envolvente", + "cmd.solid_emboss": "Gravar em relevo", + "cmd.solid_move": "Mover/Copiar", + "cmd.solid_offset_face": "Deslocar face", + "cmd.solid_press_pull": "Empurrar/Puxar", + "cmd.solid_remove": "Remover", + "cmd.solid_replace_face": "Substituir face", + "cmd.solid_rib": "Nervura", + "cmd.solid_split_face": "Dividir face", + "cmd.solid_web": "Alma", + "cmd.surface_blend": "Superfície de concordância", + "cmd.surface_boundary": "Superfície de contorno", + "cmd.surface_extrude": "Extrusão de superfície", + "cmd.surface_fair": "Suavizar superfície", + "cmd.surface_fillet": "Concordância de superfície", + "cmd.surface_loft": "Loft de superfície", + "cmd.surface_match": "Casar superfície", + "cmd.surface_offset": "Deslocar superfície", + "cmd.surface_patch": "Remendo", + "cmd.surface_reverse_normal": "Inverter normal", + "cmd.surface_revolve": "Revolução de superfície", + "cmd.surface_ruled": "Superfície regrada", + "cmd.surface_stitch": "Costurar", + "cmd.surface_sweep": "Varredura de superfície", + "cmd.surface_thicken": "Espessar", + "cmd.surface_unstitch": "Descosturar", + "cmd.surface_untrim": "Desaparar", + "cmd.timeline_add": "Adicionar recurso gravado", + "cmd.timeline_compute_all": "Calcular tudo", + "cmd.timeline_copy": "Copiar recursos", + "cmd.timeline_dependents": "Dependentes do recurso", + "cmd.timeline_export_script": "Exportar script de comandos", + "cmd.timeline_inspect": "Inspecionar recurso", + "cmd.timeline_paste": "Colar recursos", + "cmd.timeline_redefine": "Editar recurso", + "cmd.timeline_rename": "Renomear", + "cmd.timeline_reorder": "Reordenar recurso", + "cmd.timeline_roll_to": "Mover marcador do histórico", + "cmd.timeline_rollback": "Mover marcador da linha do tempo", + "cmd.timeline_suppress": "Suprimir recurso", + "cmd.view_apply": "Restaurar vista nomeada", + "cmd.view_delete": "Excluir vista nomeada", + "cmd.view_list": "Listar vistas nomeadas", + "cmd.view_navigate": "Navegar na vista", + "cmd.view_rename": "Renomear vista nomeada", + "cmd.view_save": "Nova vista nomeada", + "command name": "nome do comando", + "coupling.gear_1": "Engrenagem 1", + "coupling.gear_1_pick": "Engrenagem 1 (opcional)", + "coupling.gear_2": "Engrenagem 2", + "coupling.gear_2_pick": "Engrenagem 2 (opcional)", + "coupling.internal": "Engrenagem interna", + "coupling.needs_turn_and_slide": "precisa de uma junta que gire e outra que deslize", + "coupling.needs_turns": "precisa de duas juntas que girem", + "coupling.not_round": "não é uma face circular", + "coupling.nut": "Porca", + "coupling.picked": "selecionado", + "coupling.pinion": "Pinhão", + "coupling.pinion_pick": "Pinhão (opcional)", + "coupling.pitch": "Passo", + "coupling.rack": "Cremalheira", + "coupling.radius_1": "Raio 1", + "coupling.radius_2": "Raio 2", + "dialog.computing": "Calculando… {seconds} s", + "dialog.custom_axis": "↖ Eixo personalizado", + "dialog.edit_title": "EDITAR {title}", + "dialog.select": "↖ Selecionar", + "dialog.selected_count": "↖ {count} selecionados", + "dialog.selection_guidance": "Selecione uma entrada para alterá-la. Clique nos objetos selecionados para removê-los; Ctrl/Cmd-clique também os alterna. Revise a visualização e pressione OK.", + "dialog.selection_step": "{step} de {total}: selecione {input}", + "dialog.step": "Passo", + "document.save_changes": "Salvar as alterações em {name}?", + "document.unsaved_changes": "{name} tem alterações não salvas. Se você não salvar, elas serão perdidas.", + "drive.stopped_by_contact": "Parado em {value}: {a} atravessaria {b}", + "drive.stopped_by_loop": "Parado em {value}: o laço por {joint} não pode fechar mais", + "drive.unconnected": "Não move nada: {part} não está conectado a nada fixo", + "expression, e.g. 25 mm": "expressão, p. ex. 25 mm", + "fits the face, e.g. M8": "se ajusta à face, p. ex. M8", + "from the rule": "da regra", + "home.documentation": "Documentação", + "home.in_this_browser": "neste navegador", + "home.missing": "ausente", + "home.open": "Abrir…", + "home.opened_days_ago": "Aberto há {count} dias", + "home.opened_hours_ago": "Aberto há {count} h", + "home.opened_just_now": "Aberto agora mesmo", + "home.opened_minutes_ago": "Aberto há {count} min", + "home.opening": "abrindo…", + "home.recent": "Recentes", + "home.report_issue": "Relatar um problema", + "home.samples": "Exemplos", + "home.whats_new": "Novidades", + "install.button_tip": "Instale o SolidCraft como aplicativo: ele abre em sua própria janela e funciona offline", + "install.dock_1": "Escolha Arquivo › Adicionar ao Dock.", + "install.dock_2": "Clique em Adicionar.", + "install.dock_after": "O SolidCraft passa a abrir em sua própria janela pelo Dock e funciona offline.", + "install.done": "Concluído", + "install.home_screen_1": "Toque em Compartilhar (no menu … se não estiver na barra de ferramentas).", + "install.home_screen_2": "Escolha Adicionar à Tela de Início.", + "install.home_screen_3": "Toque em Adicionar.", + "install.home_screen_after": "O SolidCraft passa a abrir pelo ícone na Tela de Início, sem as barras do Safari, e funciona offline.", + "install.menu": "Instalar aplicativo…", + "install.steps_intro": "O Safari instala aplicativos web pelos próprios menus:", + "install.title": "Instalar o SolidCraft", + "joint.from_bodies_hint": "Cada corpo selecionado vai para um novo componente próprio e permanece onde está.", + "joint.one_body": "As duas seleções estão em {body}. Selecione a segunda em outra peça.", + "joint.one_component": "Estas peças são corpos de um mesmo componente: {bodies}. Uma junta move um componente em relação a outro, então cada peça precisa de seu próprio componente.", + "nav.touchpad.help": "Segure Shift e mova o ponteiro para deslocar; segure Alt/Option e mova para orbitar. Não é preciso botão do mouse. A rolagem vertical aplica zoom.", + "nav.touchpad.label": "Touchpad", + "nav.touchpad.orbit": "Orbitar (segure Alt/Option e mova; sem botão do mouse)", + "nav.touchpad.pan": "Deslocar (segure Shift e mova; sem botão do mouse)", + "nav.touchpad.scroll": "O touchpad usa a rolagem vertical para zoom. Sua configuração de deslocamento com dois dedos é mantida para as outras predefinições.", + "nav.touchpad.zoom": "Zoom (rolagem vertical ou pinça)", + "needs two joints": "precisa de duas juntas", + "new configuration": "nova configuração", + "new name": "novo nome", + "new parameter": "novo parâmetro", + "no interference": "sem interferência", + "no joint that moves yet": "ainda não há junta que se mova", + "no picture": "sem imagem", + "pattern.alignment_2": "Alinhamento 2", + "pattern.alignment_hint": "As contagens incluem o original. Centralizar equilibra as cópias; Inverter escolhe o lado extra para totais pares.", + "pattern.direction_1": "Direção 1", + "pattern.direction_2": "Direção 2", + "pattern.flip_direction": "Inverter direção", + "pick a hole to seat it, or OK places it at the origin": "selecione um furo para assentá-la, ou OK a coloca na origem", + "pick one or two vertices, edges or faces": "selecione um ou dois vértices, arestas ou faces", + "render.background": "Fundo da cena", + "render.fit": "Enquadrar produto", + "render.image_cancel": "Cancelar renderização", + "render.image_cancelled": "Renderização cancelada", + "render.image_cancelling": "Cancelando", + "render.image_check": "Verificar pedido de renderização", + "render.image_completed": "Imagem pronta para exportar", + "render.image_encoding": "Codificando PNG", + "render.image_export": "Exportar PNG", + "render.image_failed": "Falha na renderização", + "render.image_height": "Altura", + "render.image_help": "Imagem de pré-visualização por CPU · PNG · transparência aproximada", + "render.image_overwrite": "Substituir arquivo existente", + "render.image_preparing": "Preparando imagem", + "render.image_queued": "Aguardando para renderizar", + "render.image_reduce": "Tente uma imagem menor ou uma cena mais simples.", + "render.image_running": "Renderizando imagem", + "render.image_stale": "Esta imagem usa a cena capturada antes das alterações seguintes.", + "render.image_start": "Iniciar renderização", + "render.image_supported": "O pedido de renderização é suportado; a fila e o pool de memória são verificados de novo no início.", + "render.image_title": "Renderizar imagem", + "render.image_too_large": "Acima do limite de imagem: 4096 pixels por lado e 4.194.304 pixels no total.", + "render.image_transparent": "Fundo transparente", + "render.image_unknown": "Estado da renderização indisponível", + "render.image_use_largest": "Usar o maior tamanho nesta proporção:", + "render.image_width": "Largura", + "render.navigation_help": "A câmera se move como em Projeto (Preferências › Navegação). Salvar configuração grava a câmera atual.", + "render.opaque_image_summary": "PNG de pré-visualização · PBR opaco · transparência mesclada", + "render.opaque_preview_help": "PBR opaco e cores simples; transparência mesclada. Refração, HDRI e renderização final ainda não estão disponíveis.", + "render.perspective": "Câmera em perspectiva", + "render.preview": "Pré-visualização integrada", + "render.preview_help": "Sombreamento rasterizado e transparência mesclada. Refração, HDRI e renderização final ainda não estão disponíveis.", + "render.reload_settings": "Recarregar configurações salvas", + "render.restore_camera": "Restaurar câmera salva", + "render.return_design": "Voltar ao projeto", + "render.save_setup": "Salvar configuração", + "render.setup_name": "Nome da configuração", + "render.unavailable_preview": "Esta configuração pede um perfil de pré-visualização indisponível.", + "render.unsaved": "Alterações de pré-visualização não salvas", + "render.use_preview": "Usar pré-visualização integrada", + "sample.bracket.about": "Flange base com flanges de aresta e uma bainha, com regra de 2 mm", + "sample.bracket.name": "Suporte de chapa metálica", + "sample.enclosure.about": "Caixa oca com lábio, ressaltos de parafuso, apoio e encaixe por pressão", + "sample.enclosure.name": "Gabinete plástico", + "sample.flange.about": "Cubo e flange com padrão circular controlado por um parâmetro", + "sample.flange.name": "Flange aparafusado", + "sample.hinge.about": "Dois componentes e uma junta de revolução, acionada até 60°", + "sample.hinge.name": "Montagem de dobradiça", + "sample.plate.about": "Placa paramétrica com concordâncias, furos e um ressalto furado", + "sample.plate.name": "Placa de exemplo", + "sample.vents.about": "Rasgos em padrão retangular: linhas, colunas e passo são parâmetros", + "sample.vents.name": "Placa de ventilação", + "settings.display_quality_note": "Níveis mais finos desenham faces e arestas curvas mais suaves e demoram mais para gerar a malha. Só a janela de visualização muda, nunca o projeto ou as exportações.", + "settings.frame_rate_note": "Mostra quadros por segundo no canto inferior direito da vista. Enquanto estiver ativo, a vista é redesenhada continuamente.", + "settings.measure_axis_distances": "Mostrar distâncias X/Y/Z", + "settings.measure_axis_distances_help": "Mostrar as componentes nos eixos do mundo junto com a distância total enquanto Medir está aberto.", + "settings.msaa_applies_on_restart": "O antisserrilhamento vale na próxima vez que o SolidCraft iniciar", + "settings.msaa_reset": "{setting}: {requested}× não é suportado por este dispositivo gráfico; agora é {reset}× (suportados: {supported}).", + "settings.msaa_unsupported": "Não suportado por este dispositivo gráfico", + "settings.reset_intro": "Estas configurações não funcionam neste computador e impediriam o SolidCraft de iniciar, por isso foram alteradas:", + "settings.reset_title": "As configurações foram alteradas", + "settings.supersampling_note": "Desenha a vista em resolução maior e a filtra para baixo: arestas, linhas e grade mais suaves em telas abaixo de 4K. Custa tempo de GPU: cerca de 2,25× os pixels em 1,5× e 4× em 2×.", + "sketch.degrees_of_freedom": "{count} graus de liberdade", + "sketch.draw_curves": "Desenhar como {linetype}", + "sketch.make_selection": "Converter a seleção em {linetype}", + "sketch_text.align_center": "Centro", + "sketch_text.align_left": "Esquerda", + "sketch_text.align_right": "Direita", + "sketch_text.bold": "Negrito", + "sketch_text.builtin_font": "{family} (incorporada)", + "sketch_text.font_search": "Pesquisar fontes", + "sketch_text.italic": "Itálico", + "sketch_text.loading_fonts": "Procurando fontes instaladas…", + "sketch_text.on_path": "O texto segue seu caminho: a curva o posiciona", + "sketch_text.path_clear": "Tirar o texto da curva", + "sketch_text.path_hint": "Uma curva do esboço que o texto segue: clique aqui e depois na curva", + "sketch_text.use_font_file": "Usar o arquivo de fonte {path}", + "the parts library is not available": "a biblioteca de peças não está disponível", + "timeline.group": "Nova pasta de recursos", + "timeline.move_many": "Mover itens da linha do tempo", + "timeline.move_to_group": "Mover recursos para a pasta", + "timeline.rename_group": "Renomear pasta de recursos", + "timeline.reorder_many": "Reordenar recursos", + "timeline.ungroup": "Remover pastas de recursos", + "to the next face": "até a próxima face", + "toolbar.image": "IMAGEM", + "toolbar.render": "RENDERIZAR", + "toolbar.render_scene": "CENA", + "trace.points": "{count} pontos ao longo do caminho", + "trace.stopped_by_contact": "Termina na amostra {sample}: {a} atravessaria {b}", + "trace.stopped_by_loop": "Termina na amostra {sample}: o laço por {joint} não pode fechar mais", + "ui.1_degree_of_freedom": "1 grau de liberdade", + "ui.3d_mouse_speed": "Velocidade do mouse 3D", + "ui.3d_mouse_windows": "Mouse 3D", + "ui.3d_sketch": "Esboço 3D", + "ui.about": "Sobre", + "ui.activate": "Ativar", + "ui.active_component": "Componente ativo", + "ui.agent_chat": "Chat com agente", + "ui.agent_chat_allow": "Permitir", + "ui.agent_chat_allowed": "Permitido", + "ui.agent_chat_answered": "Resposta: {option}", + "ui.agent_chat_approval": "Permitir que o agente faça isto?", + "ui.agent_chat_attach_view": "Anexar vista", + "ui.agent_chat_attach_view_tip": "Enviar uma imagem da vista atual com a mensagem", + "ui.agent_chat_auth_agent": "Entrar com {name}", + "ui.agent_chat_auth_env": "Defina {vars} no seu ambiente e reinicie o SolidCraft.", + "ui.agent_chat_auth_needed": "O agente pede que você entre. Você entra no próprio agente; o SolidCraft nunca vê sua senha ou chaves.", + "ui.agent_chat_auth_none": "O agente não oferece forma de entrar aqui: entre do jeito descrito na documentação dele.", + "ui.agent_chat_auth_retry": "Já entrei: conectar de novo", + "ui.agent_chat_auth_terminal": "Execute isto em um terminal e depois pressione Conectar de novo:", + "ui.agent_chat_auth_title": "Entrar no agente", + "ui.agent_chat_cancel": "Cancelar", + "ui.agent_chat_changes": "Alterações: {n}, um passo de desfazer", + "ui.agent_chat_changes_of": "{n}/{limit} alterações", + "ui.agent_chat_close": "Fechar", + "ui.agent_chat_command": "Comando do agente", + "ui.agent_chat_connect": "Conectar", + "ui.agent_chat_copy": "Copiar", + "ui.agent_chat_custom_hint": "Qualquer programa que fale o Agent Client Protocol por stdin e stdout. Nenhum shell o executa.", + "ui.agent_chat_denied": "Negado", + "ui.agent_chat_deny": "Negar", + "ui.agent_chat_desktop_only": "O chat com agente precisa do aplicativo para desktop.", + "ui.agent_chat_detecting": "Procurando agentes…", + "ui.agent_chat_dock_left": "Encaixar à esquerda", + "ui.agent_chat_dock_right": "Encaixar à direita", + "ui.agent_chat_edit": "Editar", + "ui.agent_chat_exited": "O agente parou.", + "ui.agent_chat_failed_start": "O agente não pôde iniciar: {error}", + "ui.agent_chat_intro": "Converse com um agente de programação que você já usa, ou com um endpoint de modelo que você escolher. Ele trabalha no projeto aberto pelas ferramentas do SolidCraft: as alterações aparecem conforme são feitas e se desfazem em um passo por mensagem. O que ele pode fazer sem perguntar é definido em Preferências > IA.", + "ui.agent_chat_key_in_env": "chave definida", + "ui.agent_chat_left": "Esquerda", + "ui.agent_chat_limit": "O agente atingiu o limite de {limit} alterações por mensagem. Envie outra mensagem para que ele continue.", + "ui.agent_chat_minimize": "Minimizar para uma faixa", + "ui.agent_chat_model_tip": "O modelo que o agente usa. Sua escolha é lembrada para este agente.", + "ui.agent_chat_new": "Novo chat", + "ui.agent_chat_new_confirm": "Começar um novo chat? O atual será apagado.", + "ui.agent_chat_new_yes": "Novo chat", + "ui.agent_chat_no_cli": "O solidcraft-cli não foi encontrado junto ao aplicativo, então o agente não consegue acessar o projeto.", + "ui.agent_chat_no_control": "O endpoint do chat com agente não iniciou, então o agente não consegue acessar o projeto.", + "ui.agent_chat_no_images": "Este agente não aceita imagens", + "ui.agent_chat_none_found": "Nenhum agente de programação encontrado. Instale um destes e pressione Atualizar:", + "ui.agent_chat_none_found_short": "Nenhum agente encontrado", + "ui.agent_chat_not_installed": "Não instalado", + "ui.agent_chat_not_signed_in": "não conectado", + "ui.agent_chat_permission": "O agente pede para executar: {title}", + "ui.agent_chat_pick": "Agente", + "ui.agent_chat_placeholder": "Peça ao agente para alterar o projeto…", + "ui.agent_chat_placeholder_busy": "Enfileirar uma mensagem para quando o agente terminar (Ctrl+Enter: enviar agora)", + "ui.agent_chat_privacy": "Nada vai para lugar algum além do agente que você executa, na sua própria conta.", + "ui.agent_chat_privacy_note": "O SolidCraft não envia nada a lugar nenhum: o agente que você executa fala com o próprio serviço, na sua própria conta. O SolidCraft nunca vê nem guarda chaves ou senhas.", + "ui.agent_chat_queue": "Fila", + "ui.agent_chat_queue_full": "Há mensagens demais esperando: remova uma ou aguarde o agente.", + "ui.agent_chat_queued": "Na fila", + "ui.agent_chat_queued_stopped": "Na fila (parado, não enviado)", + "ui.agent_chat_refresh": "Atualizar", + "ui.agent_chat_refused": "Não permitido para o agente: {reason}", + "ui.agent_chat_remove": "Remover da fila", + "ui.agent_chat_right": "Direita", + "ui.agent_chat_save": "Salvar", + "ui.agent_chat_send": "Enviar", + "ui.agent_chat_send_now": "Enviar agora", + "ui.agent_chat_send_now_tip": "Parar o passo atual do agente e enviar esta em seguida (Ctrl+Enter)", + "ui.agent_chat_side": "Lado do chat com agente", + "ui.agent_chat_signed_in": "conectado", + "ui.agent_chat_state_auth": "É preciso entrar", + "ui.agent_chat_state_busy": "Trabalhando…", + "ui.agent_chat_state_exited": "Agente parado", + "ui.agent_chat_state_off": "Não conectado", + "ui.agent_chat_state_ready": "Pronto", + "ui.agent_chat_state_starting": "Iniciando…", + "ui.agent_chat_stop": "Parar", + "ui.agent_chat_stop_tip": "Parar o agente e tudo o que ele iniciou", + "ui.agent_chat_stop_turn_tip": "Parar o agente (Esc). As mensagens na fila continuam na fila.", + "ui.agent_chat_turn_limit": "Alterações por mensagem", + "ui.agent_chat_undo_changes": "Desfazer estas alterações", + "ui.agent_chat_undo_label": "Chat com agente: {message}", + "ui.agent_chat_undone": "(desfeito)", + "ui.agent_chat_view_attached": "Vista anexada", + "ui.agent_cursor": "Cursor do agente", + "ui.agent_cursor_speed": "Velocidade do cursor do agente", + "ui.ai_add": "Adicionar", + "ui.ai_add_agent": "Adicionar agente…", + "ui.ai_add_agent_title": "Adicionar agente", + "ui.ai_add_api": "API compatível com OpenAI", + "ui.ai_add_custom": "Comando personalizado", + "ui.ai_add_installed": "Agente instalado", + "ui.ai_add_installed_note": "Uma entrada própria para um agente instalado, por exemplo com outros argumentos. Os agentes instalados são listados por si mesmos.", + "ui.ai_added": "adicionado", + "ui.ai_agent_mode_tip": "O modo do próprio agente: as ferramentas dele (shell, edição de arquivos) o seguem. As ferramentas do SolidCraft seguem as permissões em Preferências > IA.", + "ui.ai_agents": "Agentes", + "ui.ai_always_allow": "Sempre permitir", + "ui.ai_always_allow_tip": "Permitir {tool} para este agente daqui em diante, sem perguntar", + "ui.ai_always_allowed": "Sempre permitidos", + "ui.ai_always_allowed_none": "Nada é sempre permitido ainda. As respostas \"Sempre permitir\" que você der no chat aparecem aqui.", + "ui.ai_auto_allowed": "Permitido automaticamente: {title} ({why})", + "ui.ai_auto_mode": "sua configuração de permissão", + "ui.ai_auto_ours": "o SolidCraft verifica as próprias ferramentas", + "ui.ai_auto_remembered": "você escolheu Sempre permitir", + "ui.ai_bad_url": "Digite uma URL que comece com http:// ou https://", + "ui.ai_base_url": "URL base", + "ui.ai_button": "IA", + "ui.ai_copy_suffix": "cópia", + "ui.ai_custom_url": "URL personalizada", + "ui.ai_default": "Padrão", + "ui.ai_http_busy": "o endpoint está ocupado ou acima do limite; tente de novo mais tarde", + "ui.ai_http_key": "o endpoint recusou a chave: verifique-a em Preferências > IA", + "ui.ai_http_not_found": "endpoint ou modelo inexistente: verifique a URL base e o nome do modelo", + "ui.ai_key": "Chave de API", + "ui.ai_key_hint": "opcional; guardada no chaveiro do sistema", + "ui.ai_key_needs_https": "Uma chave só é enviada por HTTPS ou para este computador.", + "ui.ai_key_note": "Guardada no chaveiro do sistema, nunca nas configurações do SolidCraft. Deixe em branco para um servidor local.", + "ui.ai_keychain_error": "O chaveiro do sistema recusou: {error}", + "ui.ai_mode_all": "Permitir tudo", + "ui.ai_mode_all_note": "Nada pergunta antes. Os relatórios de falha continuam fora de alcance e os limites de pasta ainda valem.", + "ui.ai_mode_all_warning": "O agente pode salvar, sobrescrever, exportar e substituir seu projeto sem perguntar. Use isto só com um agente em que você confie e em projetos que você já salvou.", + "ui.ai_mode_ask": "Perguntar sempre", + "ui.ai_mode_ask_note": "Cada alteração no projeto e cada ação com arquivos aguarda o seu Permitir.", + "ui.ai_mode_edits": "Permitir edições do modelo automaticamente", + "ui.ai_mode_edits_note": "Comandos de modelagem rodam sem perguntar; salvar, abrir, exportar e outras ações com arquivos ou destrutivas ainda perguntam.", + "ui.ai_mode_global": "Como definido acima", + "ui.ai_model": "Modelo", + "ui.ai_modes_scope": "Estas configurações valem para as ferramentas do SolidCraft. As ferramentas do próprio agente (shell, edição de arquivos) seguem o modo do agente, que você escolhe no cabeçalho do painel de chat quando o agente tem modos.", + "ui.ai_name": "Nome", + "ui.ai_need_command": "Digite o comando que inicia o agente", + "ui.ai_need_model": "Digite o nome do modelo", + "ui.ai_no_answer": "O agente não respondeu a tempo", + "ui.ai_no_http": "Esta versão não consegue acessar endpoints de API", + "ui.ai_no_keychain": "O chaveiro do sistema não está disponível, então não é possível guardar uma chave. Um servidor local sem chave ainda funciona.", + "ui.ai_panel": "Painel", + "ui.ai_permissions": "Permissões", + "ui.ai_preset": "Predefinição", + "ui.ai_remove": "Remover", + "ui.ai_request_limit": "parou após 24 requisições para uma mensagem; envie outra mensagem para continuar", + "ui.ai_reset": "Redefinir", + "ui.ai_settings": "Configurações de IA…", + "ui.ai_show_features": "Mostrar recursos de IA", + "ui.ai_show_features_note": "O chat com agente: um painel onde um agente de programação que você já usa, ou um endpoint de modelo que você escolher, trabalha no projeto aberto. Desativado: sem botão de IA, atalho, item de menu ou painel, e nada é procurado nem iniciado.", + "ui.ai_switch_tip": "Trocar o agente desta conversa", + "ui.ai_test": "Testar", + "ui.ai_test_acp_ok": "Responde: {agent}", + "ui.ai_test_acp_tip": "Inicia o agente por um instante e pede uma sessão; depois o encerra", + "ui.ai_test_api_tip": "Pede ao endpoint a lista de modelos", + "ui.ai_test_no_model": "Acessado: {count} modelos, mas não {model}", + "ui.ai_test_ok": "Acessado: {count} modelos", + "ui.ai_testing": "Testando…", + "ui.ai_tool_done": "concluído", + "ui.ai_tool_failed": "falhou", + "ui.ai_tool_running": "executando", + "ui.ai_tool_unfold": "Clique para ver o que retornou", + "ui.ai_tool_waiting": "aguardando", + "ui.ai_toolbar_button": "Mostrar botão na barra de ferramentas", + "ui.ai_toolbar_button_note": "O botão de IA no fim direito da barra de ferramentas. Ctrl+Shift+A e o menu Exibir ainda abrem o painel.", + "ui.ai_undo_tip": "Desfazer tudo o que o agente alterou nesta mensagem, em um passo", + "ui.all": "Tudo", + "ui.analysis": "Análise", + "ui.angle": "Ângulo", + "ui.angle_decimals": "Casas decimais de ângulo", + "ui.animateJoint": "Animar junta", + "ui.animate_view_changes": "Animar mudanças de vista", + "ui.animation": "Animação", + "ui.animation_speed": "Velocidade da animação", + "ui.anti_aliasing": "Antisserrilhamento", + "ui.apply": "Aplicar", + "ui.arc": "Arco", + "ui.assemble": "Montar", + "ui.autosave_every": "Salvar automaticamente a cada", + "ui.axes": "Eixos", + "ui.axis": "Eixo", + "ui.base_point": "Ponto base", + "ui.blocked": "Bloqueado", + "ui.bodies": "Corpos", + "ui.box": "Caixa", + "ui.break": "Quebrar", + "ui.calibrate": "Calibrar", + "ui.cancel": "Cancelar", + "ui.canvases": "Telas de referência", + "ui.center": "Centro", + "ui.centerline": "Linha de centro", + "ui.chain": "Cadeia", + "ui.chamfer": "Chanfro", + "ui.chamfer_type": "Tipo de chanfro", + "ui.change_workspace": "Mudar espaço de trabalho", + "ui.chord_length": "Comprimento da corda", + "ui.circle": "Círculo", + "ui.circular_pattern": "Padrão circular", + "ui.clear": "Limpar", + "ui.clear_recent": "Limpar recentes", + "ui.clear_the_selection": "Limpar a seleção", + "ui.click_selects_whole_bodies": "O clique seleciona corpos inteiros", + "ui.click_then_press_key": "Clique e depois pressione a nova tecla", + "ui.close": "Fechar", + "ui.coil": "Espiral", + "ui.coincident": "Coincidente", + "ui.collapse": "Recolher", + "ui.collinear": "Colinear", + "ui.colour_vision": "Visão de cores", + "ui.colour_vision_deutan": "Deutan", + "ui.colour_vision_deutan_tip": "Para percepção do verde fraca ou ausente", + "ui.colour_vision_failed": "Falhou", + "ui.colour_vision_fixed": "Fixo", + "ui.colour_vision_mode": "Modo", + "ui.colour_vision_note": "Muda as cores que carregam significado: estados do esboço, eixos, dobras, análises e ícones. Se você usa filtros de cor do Windows, deixe isto desativado.", + "ui.colour_vision_off": "Desativado", + "ui.colour_vision_off_tip": "As cores do próprio tema", + "ui.colour_vision_projected": "Projetado", + "ui.colour_vision_protan": "Protan", + "ui.colour_vision_protan_tip": "Para percepção do vermelho fraca ou ausente", + "ui.colour_vision_sample": "Amostra", + "ui.colour_vision_tritan": "Tritan", + "ui.colour_vision_tritan_tip": "Para percepção do azul fraca ou ausente", + "ui.combine": "Combinar", + "ui.coming_later": "em breve", + "ui.command_done": "{command} concluído", + "ui.command_palette_hint": "Digite um comando, p. ex. {example} — ou pressione S para pesquisar", + "ui.concentric": "Concêntrico", + "ui.configurations": "Configurações", + "ui.conic_curve": "Curva cônica", + "ui.constant": "Constante", + "ui.constraints_conflict": "Restrições em conflito", + "ui.construct": "Construir", + "ui.construction": "Construção", + "ui.context_menu": "Menu de contexto", + "ui.copy": "Copiar", + "ui.corner": "Canto", + "ui.corners": "Cantos", + "ui.counterbore": "Rebaixo", + "ui.countersink": "Escareado", + "ui.create": "Criar", + "ui.create_copy": "Criar cópia", + "ui.create_sketch": "Criar esboço", + "ui.current": "atual", + "ui.curvature": "Curvatura", + "ui.curvature_g2": "Curvatura (G2)", + "ui.curves": "Curvas", + "ui.custom_program": "Personalizado…", + "ui.custom_program_tip": "Escolha um programa fatiador para adicionar à lista", + "ui.customizeToolbar": "Personalizar barra de ferramentas…", + "ui.cut": "Recortar", + "ui.cylinder": "Cilindro", + "ui.dark": "Escuro", + "ui.default_modelling_orientation": "Orientação padrão de modelagem", + "ui.degrees_of_freedom": "graus de liberdade", + "ui.delete": "Excluir", + "ui.depth": "Profundidade", + "ui.design": "Projeto", + "ui.design_properties.author": "Autor", + "ui.design_properties.description": "Descrição", + "ui.design_properties.exports": "As exportações STEP, IGES e 3MF levam estes dados onde o formato tem lugar para eles.", + "ui.design_properties.license": "Licença", + "ui.design_properties.not_text": "Salvo como algo diferente de texto; digitar aqui o substitui.", + "ui.design_properties.organization": "Organização", + "ui.design_properties.others": "Dados de outras ferramentas", + "ui.design_properties.others_note": "Mantidos no projeto como estão e nunca exportados.", + "ui.design_properties.part_number": "Número da peça", + "ui.design_properties.project": "Projeto", + "ui.design_properties.revision": "Revisão", + "ui.diameter": "Diâmetro", + "ui.dimension": "Cota", + "ui.direction": "Direção", + "ui.display_quality": "Qualidade de exibição", + "ui.display_quality_coarse": "Grosseira", + "ui.display_quality_fine": "Fina", + "ui.display_quality_normal": "Normal", + "ui.display_quality_ultra": "Ultra", + "ui.distance": "Distância", + "ui.distance_1": "Distância 1", + "ui.distance_2": "Distância 2", + "ui.document_settings": "Configurações do documento", + "ui.don_t_save": "Não salvar", + "ui.draft": "Ângulo de saída", + "ui.drawing": "Desenho", + "ui.drill_point": "Ponta de broca", + "ui.edit": "Editar", + "ui.editJointLimits": "Editar limites da junta", + "ui.edit_section_analysis": "Editar análise de seção", + "ui.ellipse": "Elipse", + "ui.end_radius": "Raio final", + "ui.end_scale": "Escala final", + "ui.entities": "Entidades", + "ui.equal": "Igual", + "ui.equivalent_radius": "Raio equivalente", + "ui.expand": "Expandir", + "ui.exportDxf": "Exportar DXF…", + "ui.export_ellipsis": "Exportar...", + "ui.export_ellipsis_keymap": "Exportar…", + "ui.export_keymap_tip": "Teclas, favoritos da caixa S e a barra de ferramentas, como um arquivo", + "ui.extend": "Estender", + "ui.extent_type": "Tipo de extensão", + "ui.extrude": "Extrudar", + "ui.factor": "Fator", + "ui.feature_history": "Histórico de recursos", + "ui.feature_options": "Opções do recurso", + "ui.features": "Recursos", + "ui.file": "Arquivo", + "ui.fillet": "Concordância", + "ui.filter_commands_or_keys": "Filtrar comandos ou teclas", + "ui.findInTimeline": "Localizar na linha do tempo", + "ui.findInWindow": "Localizar na janela", + "ui.finish_sketch": "Concluir esboço", + "ui.fit": "Ajustar", + "ui.fix_unfix": "Fixar/Liberar", + "ui.flat": "Plano", + "ui.flip": "Inverter", + "ui.format": "Formato", + "ui.frame_rate": "Taxa de quadros", + "ui.front": "Frente", + "ui.fully_constrained": "Totalmente restrito", + "ui.general": "Geral", + "ui.graphics": "Gráficos", + "ui.ground_shadow": "Sombra no chão", + "ui.groupSelected": "Agrupar seleção", + "ui.heading_add_ins": "COMPLEMENTOS", + "ui.heading_assemble": "MONTAR", + "ui.heading_box": "CAIXA", + "ui.heading_chamfer": "CHANFRO", + "ui.heading_circular_pattern": "PADRÃO CIRCULAR", + "ui.heading_coil": "ESPIRAL", + "ui.heading_combine": "COMBINAR", + "ui.heading_configure": "CONFIGURAR", + "ui.heading_constraints": "RESTRIÇÕES", + "ui.heading_construct": "CONSTRUIR", + "ui.heading_create": "CRIAR", + "ui.heading_create_sketch": "CRIAR ESBOÇO", + "ui.heading_cylinder": "CILINDRO", + "ui.heading_design": "PROJETO", + "ui.heading_draft": "ÂNGULO DE SAÍDA", + "ui.heading_edit": "EDITAR", + "ui.heading_extrude": "EXTRUDAR", + "ui.heading_fillet": "CONCORDÂNCIA", + "ui.heading_finish_sketch": "CONCLUIR ESBOÇO", + "ui.heading_front": "FRENTE", + "ui.heading_hole": "FURO", + "ui.heading_home": "INÍCIO", + "ui.heading_insert": "INSERIR", + "ui.heading_inspect": "INSPECIONAR", + "ui.heading_loft": "LOFT", + "ui.heading_make": "FABRICAR", + "ui.heading_measure": "MEDIR", + "ui.heading_mesh": "MALHA", + "ui.heading_mirror": "ESPELHAR", + "ui.heading_modify": "MODIFICAR", + "ui.heading_move": "MOVER", + "ui.heading_move_copy": "MOVER/COPIAR", + "ui.heading_offset": "DESLOCAMENTO", + "ui.heading_offset_plane": "PLANO DESLOCADO", + "ui.heading_ok": "OK", + "ui.heading_parameters": "PARÂMETROS", + "ui.heading_pattern": "PADRÃO", + "ui.heading_pattern_on_path": "PADRÃO NO CAMINHO", + "ui.heading_pipe": "TUBO", + "ui.heading_plane_at_angle": "PLANO EM ÂNGULO", + "ui.heading_plastic": "PLÁSTICO", + "ui.heading_position": "POSIÇÃO", + "ui.heading_prepare": "PREPARAR", + "ui.heading_rectangular_pattern": "PADRÃO RETANGULAR", + "ui.heading_revolve": "REVOLUÇÃO", + "ui.heading_right": "DIREITA", + "ui.heading_save_mesh": "SALVAR COMO MALHA", + "ui.heading_scale": "ESCALA", + "ui.heading_section_analysis": "ANÁLISE DE SEÇÃO", + "ui.heading_select": "SELECIONAR", + "ui.heading_setup": "CONFIGURAÇÃO", + "ui.heading_sheet_metal": "CHAPA METÁLICA", + "ui.heading_shell": "CASCA", + "ui.heading_sketch": "ESBOÇO", + "ui.heading_sketch_palette": "PALETA DE ESBOÇO", + "ui.heading_sketch_scale": "ESCALA DO ESBOÇO", + "ui.heading_solid": "SÓLIDO", + "ui.heading_sphere": "ESFERA", + "ui.heading_split_body": "DIVIDIR CORPO", + "ui.heading_surface": "SUPERFÍCIE", + "ui.heading_sweep": "VARREDURA", + "ui.heading_thread": "ROSCA", + "ui.heading_top": "TOPO", + "ui.heading_torus": "TORO", + "ui.heading_utilities": "UTILITÁRIOS", + "ui.heading_utility": "UTILITÁRIO", + "ui.help": "Ajuda", + "ui.hide": "Ocultar", + "ui.hideAxes": "Ocultar eixos", + "ui.hideDimension": "Ocultar cota", + "ui.hideOrigin": "Ocultar origem", + "ui.hidePlanes": "Ocultar planos", + "ui.hideProfile": "Ocultar perfil", + "ui.hole": "Furo", + "ui.hole_tap_type": "Tipo de rosca do furo", + "ui.hole_type": "Tipo de furo", + "ui.home": "Início", + "ui.homeView": "Vista inicial", + "ui.horizontal_vertical": "Horizontal/Vertical", + "ui.import_ellipsis": "Importar…", + "ui.infinite": "Infinita", + "ui.insert": "Inserir", + "ui.inspect": "Inspecionar", + "ui.intersect": "Interseção", + "ui.isolate": "Isolar", + "ui.join": "Unir", + "ui.joints": "Juntas", + "ui.keyboard_shortcuts": "Atalhos de teclado", + "ui.language": "Idioma", + "ui.length_decimals": "Casas decimais de comprimento", + "ui.light": "Claro", + "ui.line": "Linha", + "ui.linetype": "Tipo de linha", + "ui.lock": "Bloquear", + "ui.loft": "Loft", + "ui.look_at": "Olhar para", + "ui.look_at_anim_desc": "Vista do eixo, Olhar para, Início e Ajustar", + "ui.manufacture": "Fabricação", + "ui.material_review.axes": "Eixos locais do material; nenhuma orientação de corpo é atribuída.", + "ui.material_review.claims": "Fontes e licenças são declarações não verificadas. Valores ausentes continuam desconhecidos.", + "ui.material_review.compressive_strength": "Resistência à compressão", + "ui.material_review.conditions": "Condições declaradas", + "ui.material_review.density": "Densidade", + "ui.material_review.derived": "Módulos isotrópicos derivados", + "ui.material_review.elasticity": "Elasticidade", + "ui.material_review.input": "Cole um cartão de material schema-1 (JSON)", + "ui.material_review.limit": "O cartão excede o limite de entrada de 256 KiB.", + "ui.material_review.moisture_unit": "kg de água / kg de material seco", + "ui.material_review.properties": "Propriedades", + "ui.material_review.review": "Revisar cartão", + "ui.material_review.scope": "Apenas candidato: não é atribuído nem salvo. Validação numérica não é certificação de engenharia.", + "ui.material_review.shear_strength": "Resistência ao cisalhamento", + "ui.material_review.source": "Fonte", + "ui.material_review.specific_heat": "Calor específico", + "ui.material_review.tensile_strength": "Resistência à tração", + "ui.material_review.thermal_conductivity": "Condutividade térmica", + "ui.material_review.thermal_expansion": "Dilatação térmica", + "ui.material_review.title": "Revisar dados do material físico", + "ui.material_review.unknown": "Desconhecido", + "ui.material_review.yield_strength": "Limite de escoamento", + "ui.measure": "Medir", + "ui.mesh_format_3mf": "3MF", + "ui.mesh_format_3mf_tagged": "3MF com marcação de faces", + "ui.mesh_format_stl": "STL", + "ui.midpoint": "Ponto médio", + "ui.mirror": "Espelhar", + "ui.mirror_line": "Linha de espelho", + "ui.modify": "Modificar", + "ui.move": "Mover", + "ui.multiple": "Múltiplo", + "ui.named_views": "Vistas nomeadas", + "ui.navigation": "Navegação", + "ui.needs_design": "{command}: abra um projeto primeiro", + "ui.newSketchGroup": "Novo grupo de esboços", + "ui.new_body": "Novo corpo", + "ui.new_design": "Novo projeto", + "ui.no_slicer_found": "Nenhum fatiador encontrado", + "ui.normal": "Normal", + "ui.normalConstruction": "Normal / Construção", + "ui.not_a_program": "{path} não é um programa que possa ser iniciado", + "ui.object_type": "Tipo de objeto", + "ui.objects": "Objetos", + "ui.offer_to_stand_up_y_up_files": "Oferecer colocar em pé arquivos com Y para cima", + "ui.offset": "Deslocamento", + "ui.offset_plane": "Plano deslocado", + "ui.one_side": "Um lado", + "ui.open": "Abrir", + "ui.open_ellipsis": "Abrir...", + "ui.open_preferences": "Abrir preferências", + "ui.open_recent": "Abrir recente", + "ui.operation": "Operação", + "ui.options": "Opções", + "ui.orbit": "Orbitar", + "ui.orbit_around": "Orbitar em torno de", + "ui.orientation": "Orientação", + "ui.origin": "Origem", + "ui.palette_points": "Pontos", + "ui.palette_profile": "Perfil", + "ui.pan": "Deslocar", + "ui.pan_zoom_orbit": "Deslocar, zoom, orbitar", + "ui.parallel": "Paralelo", + "ui.parameters": "Parâmetros", + "ui.paste": "Colar", + "ui.path": "Caminho", + "ui.pattern_on_path": "Padrão no caminho", + "ui.perpendicular": "Perpendicular", + "ui.perspective_view": "Vista em perspectiva", + "ui.pinToShortcuts": "Fixar nos atalhos", + "ui.pinToToolbar": "Fixar na barra de ferramentas", + "ui.pipe": "Tubo", + "ui.placement": "Posicionamento", + "ui.plane": "Plano", + "ui.plane_at_angle": "Plano em ângulo", + "ui.point": "Ponto", + "ui.point_under_the_cursor": "Ponto sob o cursor", + "ui.points": "Pontos", + "ui.polygon": "Polígono", + "ui.preferences": "Preferências", + "ui.press_a_key": "pressione uma tecla…", + "ui.profile": "Perfil", + "ui.profile_plane": "Plano do perfil", + "ui.profiles": "Perfis", + "ui.project": "Projetar", + "ui.project_face_edges_sketch": "Projetar arestas da face em novos esboços", + "ui.properties": "Propriedades", + "ui.pull_direction": "Direção de extração", + "ui.quantity": "Quantidade", + "ui.quantity_2": "Quantidade 2", + "ui.quit": "Sair", + "ui.radial_context_menu": "Menu de contexto radial", + "ui.radius": "Raio", + "ui.radius_type": "Tipo de raio", + "ui.reachable": "Alcançável", + "ui.rectangle": "Retângulo", + "ui.rectangular_pattern": "Padrão retangular", + "ui.redo": "Refazer", + "ui.removeFromToolbar": "Remover da barra de ferramentas", + "ui.removeSection": "Remover seção", + "ui.render": "Renderizar", + "ui.renderer": "Renderizador", + "ui.repeat": "Repetir", + "ui.report_a_bug": "Relatar um bug", + "ui.reset": "Redefinir", + "ui.reset_all": "Redefinir tudo", + "ui.reset_the_settings_on_this_page": "Redefinir as configurações desta página", + "ui.restore": "Restaurar", + "ui.restore_defaults": "Restaurar padrões", + "ui.reverse_zoom_direction": "Inverter direção do zoom", + "ui.revolve": "Revolução", + "ui.right": "Direita", + "ui.save": "Salvar", + "ui.save_as": "Salvar como", + "ui.save_as_ellipsis": "Salvar como...", + "ui.save_mesh_no_slicer": "Nenhum fatiador encontrado: escolha Personalizado… e selecione seu programa fatiador, ou desative Enviar ao fatiador", + "ui.save_mesh_pick_bodies": "Selecione os corpos a salvar", + "ui.save_mesh_temp_failed": "Não foi possível criar {folder}: {error}", + "ui.saved_to": "Salvo {path}", + "ui.scale": "Escala", + "ui.section_analysis": "Análise de seção", + "ui.select": "Selecionar", + "ui.selectOther": "Selecionar outro…", + "ui.selectTangentChain": "Selecionar cadeia tangente", + "ui.select_other_hint": "Selecionar outro: mantenha o botão esquerdo parado sobre o modelo (ou clique com o botão direito › Selecionar outro…) para listar tudo sob o cursor; clique de novo no mesmo ponto para selecionar o próximo item ali.", + "ui.selection": "Seleção", + "ui.send": "Enviar", + "ui.send_to_slicer": "Enviar ao fatiador", + "ui.sent_to_slicer": "Enviado para {slicer}", + "ui.shell": "Casca", + "ui.show": "Mostrar", + "ui.showAll": "Mostrar tudo", + "ui.showAllBodies": "Mostrar todos os corpos", + "ui.showAxes": "Mostrar eixos", + "ui.showDimension": "Mostrar cota", + "ui.showOrigin": "Mostrar origem", + "ui.showPlanes": "Mostrar planos", + "ui.show_constraints": "Restrições", + "ui.show_construction_geometries": "Geometrias de construção", + "ui.show_dimensions": "Cotas", + "ui.show_points": "Mostrar pontos", + "ui.show_profile": "Mostrar perfil", + "ui.show_projected_geometries": "Geometrias projetadas", + "ui.simple": "Simples", + "ui.simulation": "Simulação", + "ui.single": "Único", + "ui.sketch": "Esboço", + "ui.sketch_dimension": "Cota do esboço", + "ui.sketch_grid": "Grade do esboço", + "ui.sketch_scale": "Escala do esboço", + "ui.sketch_status": "Estado do esboço", + "ui.sketches": "Esboços", + "ui.slice": "Fatiar", + "ui.slicer": "Fatiador", + "ui.slicer_delete_tip": "{program}\nPressione Delete para removê-lo da lista", + "ui.slot": "Rasgo", + "ui.smooth": "Suave", + "ui.smooth_wheel_zoom": "Zoom suave com a roda", + "ui.smooth_wheel_zoom_tip": "Desative para aplicar cada evento da roda na hora, sem rastro de suavização", + "ui.snap": "Encaixe", + "ui.space_mouse_hint": "Move e gira a vista juntos; esboços usam apenas deslocamento e zoom.", + "ui.space_mouse_navigate": "Navegar com SpaceNavigator / SpaceMouse", + "ui.spacing": "Espaçamento", + "ui.spacing_2": "Espaçamento 2", + "ui.sphere": "Esfera", + "ui.spline": "Spline", + "ui.split_body": "Dividir corpo", + "ui.stand_up_tip": "Depois que um arquivo STEP ou IGES abrir com Z para cima, oferecer um quarto de volta em torno de X", + "ui.start": "Início", + "ui.start_radius": "Raio inicial", + "ui.supersampling": "Supersampling (SSAA)", + "ui.supersampling_adaptive": "Só quando a vista está parada", + "ui.supersampling_off": "Desativado (1×)", + "ui.suppress": "Suprimir", + "ui.sweep": "Varredura", + "ui.sweep_follow_direction": "Seguir direção", + "ui.sweep_keep_as_drawn": "Manter como desenhado", + "ui.sweep_turn_with_path": "Girar com o caminho", + "ui.symmetric": "Simétrico", + "ui.symmetry": "Simetria", + "ui.system": "Sistema", + "ui.tangent": "Tangente", + "ui.taper_angle": "Ângulo de inclinação", + "ui.tapped": "Roscado", + "ui.text": "Texto", + "ui.theme": "Tema", + "ui.thickness": "Espessura", + "ui.thread": "Rosca", + "ui.timeline_bottom": "Linha do tempo inferior", + "ui.timeline_left_note": "O layout à esquerda mostra a barra de retrocesso acima do navegador de peças e cena.", + "ui.timeline_left_sidebar": "Barra lateral esquerda", + "ui.tip_angle": "Ângulo da ponta", + "ui.to_object": "Até o objeto", + "ui.tool_direction": "Direção da ferramenta", + "ui.top": "Topo", + "ui.torus": "Toro", + "ui.total_angle": "Ângulo total", + "ui.trackpad_pan_tip": "Gestos do trackpad deslocam (desativado: dão zoom como a roda); a roda do mouse dá zoom, a roda do polegar desloca para os lados, a pinça sempre dá zoom", + "ui.trim": "Aparar", + "ui.twist": "Torção", + "ui.two_finger_scroll_pans": "Rolagem com dois dedos desloca", + "ui.two_sides": "Dois lados", + "ui.ui_scale": "Escala da interface", + "ui.undo": "Desfazer", + "ui.unground": "Liberar do solo", + "ui.unisolate": "Desfazer isolamento", + "ui.units": "Unidades", + "ui.units_of_new_designs": "Unidades de novos projetos", + "ui.unlock": "Desbloquear", + "ui.unsuppress": "Reativar", + "ui.untitled": "Sem título", + "ui.up_axis_note": "Qual eixo aponta para cima nas vistas (vista do eixo, Início, Olhar para). Os projetos não mudam.", + "ui.updateToCurrentView": "Atualizar para a vista atual", + "ui.variable": "Variável", + "ui.view_centre": "Centro da vista", + "ui.visual_shaded_hidden_edges": "Sombreado com arestas ocultas", + "ui.visual_shaded_with_edges": "Sombreado com arestas", + "ui.visual_style": "Estilo visual", + "ui.visual_wireframe": "Aramado", + "ui.workspace": "espaço de trabalho", + "ui.x_distance": "Distância X", + "ui.y_distance": "Distância Y", + "ui.y_up": "Y para cima", + "ui.z_up": "Z para cima", + "ui.zoom": "Zoom", + "ui.zoom_to_cursor_tip": "A roda dá zoom em direção ao ponto sob o cursor (desativado: em direção ao centro da vista)", + "ui.zoom_to_the_cursor": "Zoom em direção ao cursor", + "update.available": "O SolidCraft {version} está disponível", + "update.button": "Atualizar", + "update.button_tip": "O SolidCraft {version} está disponível", + "update.button_version": "Atualizar para {version}", + "update.check_automatically": "Verificar atualizações automaticamente", + "update.check_now": "Verificar agora", + "update.checking": "Verificando…", + "update.copy": "Copiar", + "update.dmg_opened": "A imagem de disco está aberta e verificada: arraste o SolidCraft para Aplicativos, substituindo a cópia antiga, e reinicie o SolidCraft.", + "update.download": "Baixar", + "update.download_open": "Baixar e abrir", + "update.downloading": "Baixando e verificando… {done} de {total} MB", + "update.failed": "Não foi possível verificar: {error}", + "update.file": "Baixar obtém {file}.", + "update.install_failed": "A atualização não foi instalada: {error}. Nada foi alterado; Baixar obtém o pacote em vez disso.", + "update.install_msi": "Instalar (fecha o SolidCraft)", + "update.installed": "O SolidCraft {version} está instalado. Reinicie para usá-lo.", + "update.installer_started": "O instalador começa quando o SolidCraft fechar.", + "update.later": "Lembrar mais tarde", + "update.no_notes": "Esta versão não tem notas.", + "update.package_hint": "Esta cópia veio de um {kind}. Baixe o novo pacote e instale-o com:", + "update.prefs_dev": "Esta é uma versão de desenvolvimento ({version}): ela não verifica atualizações.", + "update.prefs_flatpak": "O Flatpak atualiza esta cópia ({version}): execute {command} ou use sua central de programas. O SolidCraft não verifica.", + "update.prefs_label": "Atualizações", + "update.prefs_note": "Este é o SolidCraft {version} ({kind}). Uma verificação pergunta ao GitHub pela versão mais recente e não envia mais nada.", + "update.release_page": "Abrir página da versão", + "update.restart": "Reiniciar agora", + "update.restart_later": "Depois", + "update.show": "Mostrar a atualização para {version}", + "update.skip": "Pular esta versão", + "update.system_hint": "Esta cópia é um {kind}. Atualize-a com:", + "update.title": "Atualização disponível", + "update.up_to_date": "O SolidCraft está atualizado.", + "update.update_now": "Atualizar agora", + "update.you_have": "Você tem a {version}." +} diff --git a/crates/ui-egui/src/i18n.rs b/crates/ui-egui/src/i18n.rs index ff8ac778..5b359b69 100644 --- a/crates/ui-egui/src/i18n.rs +++ b/crates/ui-egui/src/i18n.rs @@ -36,6 +36,8 @@ static GERMAN: Catalog = Catalog::new("de", "Deutsch", include_str!(concat!(env! static FRENCH: Catalog = Catalog::new("fr", "Français", include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/../../assets/locales/fr.json"))); static JAPANESE: Catalog = Catalog::new("ja", "日本語", include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/../../assets/locales/ja.json"))); static KOREAN: Catalog = Catalog::new("ko", "한국어", include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/../../assets/locales/ko.json"))); +static PORTUGUESE_BR: Catalog = + Catalog::new("pt-BR", "Português (Brasil)", include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/../../assets/locales/pt-BR.json"))); static RUSSIAN: Catalog = Catalog::new("ru", "Русский", include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/../../assets/locales/ru.json"))); static TURKISH: Catalog = Catalog::new("tr", "Türkçe", include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/../../assets/locales/tr.json"))); static UKRAINIAN: Catalog = Catalog::new("uk", "Українська", include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/../../assets/locales/uk.json"))); @@ -49,6 +51,7 @@ pub const LOCALES: &[&Catalog] = &[ &FRENCH, &JAPANESE, &KOREAN, + &PORTUGUESE_BR, &RUSSIAN, &TURKISH, &UKRAINIAN, @@ -542,6 +545,17 @@ mod tests { assert_eq!(tr.label("NonExistentKey"), "NonExistentKey"); } + #[test] + fn brazilian_portuguese_catalog_is_registered_and_translates_keys() { + let pt = Locale::for_language("pt-BR"); + assert_eq!(pt.name(), "Português (Brasil)"); + assert!(is_supported("pt-BR")); + assert_eq!(pt.text("ui.preferences"), "Preferências"); + assert_eq!(pt.format("document.save_changes", &[("name", "My {design}")]), "Salvar as alterações em My {design}?"); + assert_eq!(pt.format("dialog.selected_count", &[("count", "2")]), "↖ 2 selecionados"); + assert_eq!(pt.label("NonExistentKey"), "NonExistentKey"); + } + #[test] fn ukrainian_catalog_translates_keys_labels_and_browser_patterns() { let uk = Locale::for_language("uk"); diff --git a/docs/localization.md b/docs/localization.md index 16c0f14b..f2bea3b5 100644 --- a/docs/localization.md +++ b/docs/localization.md @@ -1,7 +1,7 @@ # UI localization SolidCraft embeds its translations and works offline. English, Japanese, German, French, Korean, -Russian, Ukrainian, Turkish and Chinese are currently registered in `crates/ui-egui/src/i18n.rs`. Adding a language requires an +Brazilian Portuguese, Russian, Ukrainian, Turkish and Chinese are currently registered in `crates/ui-egui/src/i18n.rs`. Adding a language requires an embedded catalog and one registration there; the preferences selector and validation use the same registry. @@ -31,8 +31,8 @@ that looks untranslated. Two guards catch that in the build: - `every_complete_catalog_carries_every_english_message` — adding a key to `en.json` without giving it to a complete catalog fails the tests. English is the source catalog, - Japanese and Chinese are delivered complete; German, Korean, Russian, French, Ukrainian and Turkish are - partial — their gaps fall back to English and are reported by `cargo xtask i18n` without + Japanese and Chinese are delivered complete; German, Korean, Brazilian Portuguese, Russian, French, Ukrainian and + Turkish are partial — their gaps fall back to English and are reported by `cargo xtask i18n` without failing the build. A new label needs en, ja, zh, de and ko; Russian, French and Ukrainian may follow later. - `every_toolbar_tab_and_panel_is_in_the_english_catalog` — tabs and panels reach the UI as bare