From 082577f5a28cc00bee129ffe6bbd7e868f48378b Mon Sep 17 00:00:00 2001 From: "Dr.-Ing. Amilcar do Carmo Lucas" Date: Fri, 1 Nov 2024 16:05:48 +0100 Subject: [PATCH] FEATURE: Add portuguese translation --- ...frontend_tkinter_parameter_editor_table.py | 2 +- MethodicConfigurator/internationalization.py | 11 +- .../locale/MethodicConfigurator.pot | 6 +- .../pt/LC_MESSAGES/MethodicConfigurator.mo | Bin 0 -> 56024 bytes .../pt/LC_MESSAGES/MethodicConfigurator.po | 1886 +++++++++++++++++ .../extract_missing_translations.py | 41 + .../pt/LC_MESSAGES/insert_translations.py | 45 + .../zh_CN/LC_MESSAGES/MethodicConfigurator.mo | Bin 646 -> 13046 bytes .../zh_CN/LC_MESSAGES/MethodicConfigurator.po | 4 +- windows/ardupilot_methodic_configurator.iss | 3 +- 10 files changed, 1988 insertions(+), 10 deletions(-) create mode 100644 MethodicConfigurator/locale/pt/LC_MESSAGES/MethodicConfigurator.mo create mode 100644 MethodicConfigurator/locale/pt/LC_MESSAGES/MethodicConfigurator.po create mode 100644 MethodicConfigurator/locale/pt/LC_MESSAGES/extract_missing_translations.py create mode 100644 MethodicConfigurator/locale/pt/LC_MESSAGES/insert_translations.py diff --git a/MethodicConfigurator/frontend_tkinter_parameter_editor_table.py b/MethodicConfigurator/frontend_tkinter_parameter_editor_table.py index c7f2687..6e51ba2 100644 --- a/MethodicConfigurator/frontend_tkinter_parameter_editor_table.py +++ b/MethodicConfigurator/frontend_tkinter_parameter_editor_table.py @@ -177,7 +177,7 @@ def rename_fc_connection(self, selected_file): self.local_filesystem.file_parameters[selected_file].pop(old_name) logging_info(_("Renaming parameter %s to %s"), old_name, new_name) info_msg = _("The parameter '{old_name}' was renamed to '{new_name}'.\n" - "to follow the flight controller connection defined in the component editor window.") + "to obey the flight controller connection defined in the component editor window.") messagebox.showinfo(_("Parameter Renamed"), info_msg.format(**locals())) def __update_table(self, params, fc_parameters): diff --git a/MethodicConfigurator/internationalization.py b/MethodicConfigurator/internationalization.py index b164278..317e940 100644 --- a/MethodicConfigurator/internationalization.py +++ b/MethodicConfigurator/internationalization.py @@ -11,11 +11,12 @@ import argparse import gettext from os import path as os_path +import builtins # Do not import nor use logging functions in this file. # Logging is not yet configured when these functions are called -LANGUAGE_CHOICES = ['en', 'zh_CN'] +LANGUAGE_CHOICES = ['en', 'zh_CN', 'pt'] def identity_function(s): @@ -39,6 +40,10 @@ def load_translation() -> callable: locale_dir = os_path.join(script_dir, 'locale') translation = gettext.translation('MethodicConfigurator', localedir=locale_dir, languages=[pre_args.language], fallback=False) + translation.install() + # Do not use logging functions here the logging system has not been configured yet + # Do not translate this message, the translation will not work here anyways + print("Loaded %s translation.", pre_args.language) return translation.gettext except FileNotFoundError: # Do not use logging functions here the logging system has not been configured yet @@ -48,5 +53,5 @@ def load_translation() -> callable: # Default to identity function if _ is not already defined -if '_' not in globals(): - _ = identity_function +if '_' not in globals() and '_' not in locals() and '_' not in builtins.__dict__: + _ = load_translation() diff --git a/MethodicConfigurator/locale/MethodicConfigurator.pot b/MethodicConfigurator/locale/MethodicConfigurator.pot index 3ac1d0e..3096e2d 100644 --- a/MethodicConfigurator/locale/MethodicConfigurator.pot +++ b/MethodicConfigurator/locale/MethodicConfigurator.pot @@ -1,5 +1,5 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR ORGANIZATION +# ArduPilot Methodic Configurator. +# Copyright (C) 2024 Amilcar Lucas, ArduPilot.org # FIRST AUTHOR , YEAR. # msgid "" @@ -1629,7 +1629,7 @@ msgstr "" #: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:179 msgid "" "The parameter '{old_name}' was renamed to '{new_name}'.\n" -"to follow the flight controller connection defined in the component editor window." +"to obey the flight controller connection defined in the component editor window." msgstr "" #: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:181 diff --git a/MethodicConfigurator/locale/pt/LC_MESSAGES/MethodicConfigurator.mo b/MethodicConfigurator/locale/pt/LC_MESSAGES/MethodicConfigurator.mo new file mode 100644 index 0000000000000000000000000000000000000000..22a05bd8ddbee1eb0123be9b4a6ebef2df3aac34 GIT binary patch literal 56024 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 literal 0 HcmV?d00001 diff --git a/MethodicConfigurator/locale/pt/LC_MESSAGES/MethodicConfigurator.po b/MethodicConfigurator/locale/pt/LC_MESSAGES/MethodicConfigurator.po new file mode 100644 index 0000000..d97e627 --- /dev/null +++ b/MethodicConfigurator/locale/pt/LC_MESSAGES/MethodicConfigurator.po @@ -0,0 +1,1886 @@ +# ArduPilot Methodic Configurator. +# Copyright (C) 2024 Amilcar Lucas, ArduPilot.org +# Amilcar Lucas , 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2024-11-01 12:46+0100\n" +"PO-Revision-Date: 2024-11-01 12:46+0100\n" +"Last-Translator: Amilcar Lucas \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" + + +#: MethodicConfigurator/ardupilot_methodic_configurator.py:51 +msgid "ArduPilot methodic configurator is a simple GUI with a table that lists parameters. The GUI reads intermediate parameter files from a directory and displays their parameters in a table. Each row displays the parameter name, its current value on the flight controller, its new value from the selected intermediate parameter file, and an \"Upload\" checkbox. The GUI includes \"Upload selected params to FC\" and \"Skip\" buttons at the bottom. When \"Upload Selected to FC\" is clicked, it uploads the selected parameters to the flight controller. When \"Skip\" is pressed, it skips to the next intermediate parameter file. The process gets repeated for each intermediate parameter file." +msgstr "O configurador metódico do ArduPilot é uma GUI simples com uma tabela que lista os parâmetros. A GUI lê arquivos de parâmetros intermediários de um diretório e exibe seus parâmetros em uma tabela. Cada linha exibe o nome do parâmetro, seu valor atual no controlador de voo, seu novo valor do arquivo de parâmetros intermediário selecionado, e um" + +#: MethodicConfigurator/ardupilot_methodic_configurator.py:73 +msgid "No serial ports found" +msgstr "Nenhuma porta serial encontrada" + +#: MethodicConfigurator/ardupilot_methodic_configurator.py:82 +msgid "Vehicle type not set explicitly, auto-detected %s." +msgstr "Tipo de veículo não definido explicitamente, auto-detectado %s." + +#: MethodicConfigurator/ardupilot_methodic_configurator.py:84 +msgid "Vehicle type explicitly set to %s." +msgstr "Tipo de veículo explicitamente definido como %s." + +#: MethodicConfigurator/ardupilot_methodic_configurator.py:115 +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:121 +msgid "Error in derived parameters" +msgstr "Erro nos parâmetros derivados" + +#: MethodicConfigurator/ardupilot_methodic_configurator.py:140 +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:186 +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:373 +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:394 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:421 +msgid "Fatal error reading parameter files" +msgstr "Erro fatal lendo arquivos de parâmetros" + +#: MethodicConfigurator/argparse_check_range.py:32 +msgid "either min or inf, but not both" +msgstr "ou min ou inf, mas não ambos" + +#: MethodicConfigurator/argparse_check_range.py:34 +msgid "either max or sup, but not both" +msgstr "ou max ou sup, mas não ambos" + +#: MethodicConfigurator/argparse_check_range.py:57 +msgid "valid range: {_lo}, {_up}" +msgstr "faixa válida: {_lo}, {_up}" + +#: MethodicConfigurator/backend_filesystem.py:116 +msgid "Could not detect vehicle type. Defaulting to %s." +msgstr "Não foi possível detectar o tipo de veículo. Usando %s como padrão." + +#: MethodicConfigurator/backend_filesystem.py:237 +msgid "Error: %s is not a directory." +msgstr "Erro: %s não é um diretório." + +#: MethodicConfigurator/backend_filesystem.py:424 +msgid "Intermediate parameter files and summary files zipped to %s" +msgstr "Arquivos de parâmetros intermediários e arquivos de resumo compactados em %s" + +#: MethodicConfigurator/backend_filesystem.py:469 +msgid "Parameter %s not found in the current parameter file" +msgstr "Parâmetro %s não encontrado no arquivo de parâmetros atual" + +#: MethodicConfigurator/backend_filesystem.py:477 +msgid "Error writing last uploaded filename: %s" +msgstr "Erro ao escrever o nome do último arquivo enviado: %s" + +#: MethodicConfigurator/backend_filesystem.py:484 +msgid "last_uploaded_filename.txt not found: %s" +msgstr "last_uploaded_filename.txt não encontrado: %s" + +#: MethodicConfigurator/backend_filesystem.py:486 +msgid "Error reading last uploaded filename: %s" +msgstr "Erro ao ler o nome do último arquivo enviado: %s" + +#: MethodicConfigurator/backend_filesystem.py:501 +msgid "Starting file index %s is out of range. Starting with file %s instead." +msgstr "Índice do arquivo inicial %s está fora de alcance. Começando com o arquivo %s em vez disso." + +#: MethodicConfigurator/backend_filesystem.py:507 +msgid "Starting with the first file." +msgstr "Começando com o primeiro arquivo." + +#: MethodicConfigurator/backend_filesystem.py:510 +msgid "Starting with the first non-tcal file." +msgstr "Começando com o primeiro arquivo não-tcal." + +#: MethodicConfigurator/backend_filesystem.py:514 +msgid "Last uploaded file was %s." +msgstr "Último arquivo enviado foi %s." + +#: MethodicConfigurator/backend_filesystem.py:516 +msgid "No last uploaded file found. %s." +msgstr "Nenhum arquivo enviado encontrado. %s." + +#: MethodicConfigurator/backend_filesystem.py:521 +msgid "Last uploaded file not found in the list of files. %s." +msgstr "Último arquivo enviado não encontrado na lista de arquivos. %s." + +#: MethodicConfigurator/backend_filesystem.py:530 +msgid "Last uploaded file is the last file in the list. Starting from there." +msgstr "Último arquivo enviado é o último arquivo na lista. Começando a partir daí." + +#: MethodicConfigurator/backend_filesystem.py:594 +msgid "URL or local filename not provided." +msgstr "URL ou nome de arquivo local não fornecido." + +#: MethodicConfigurator/backend_filesystem.py:596 +msgid "Downloading %s from %s" +msgstr "Baixando %s de %s" + +#: MethodicConfigurator/backend_filesystem.py:604 +msgid "Failed to download the file" +msgstr "Falha ao baixar o arquivo" + +#: MethodicConfigurator/backend_filesystem.py:612 +msgid "The type of the vehicle. Defaults to ArduCopter" +msgstr "O tipo do veículo. Padrão para ArduCopter" + +#: MethodicConfigurator/backend_filesystem.py:616 +msgid "Directory containing vehicle-specific intermediate parameter files. Defaults to the current working directory" +msgstr "Diretório contendo arquivos de parâmetros intermediários específicos do veículo. Padrão para o diretório de trabalho atual" + +#: MethodicConfigurator/backend_filesystem.py:621 +msgid "Start directly on the nth intermediate parameter file (skips previous files). Default is to start on the file next to the last that you wrote to the flight controller.If the file does not exist, it will start on the first file." +msgstr "Começar diretamente no enésimo arquivo de parâmetros intermediários (pula arquivos anteriores). O padrão é começar no arquivo ao lado do último que você escreveu para o controlador de voo. Se o arquivo não existir, começará no primeiro arquivo." + +#: MethodicConfigurator/backend_filesystem.py:626 +msgid "Allow opening and editing template files directly. Only for software developers that know what they are doing." +msgstr "Permitir a abertura e edição de arquivos de modelo diretamente. Apenas para desenvolvedores de software que sabem o que estão fazendo." + +#: MethodicConfigurator/backend_filesystem_configuration_steps.py:60 +msgid "Configuration steps '%s' loaded from %s (overwriting default configuration steps)." +msgstr "Passos de configuração '%s' carregados de %s (substituindo passos de configuração padrão)." + +#: MethodicConfigurator/backend_filesystem_configuration_steps.py:64 +msgid "Configuration steps '%s' loaded from %s." +msgstr "Passos de configuração '%s' carregados de %s." + +#: MethodicConfigurator/backend_filesystem_configuration_steps.py:70 +msgid "Error in file '%s': %s" +msgstr "Erro no arquivo '%s': %s" + +#: MethodicConfigurator/backend_filesystem_configuration_steps.py:77 +msgid "No configuration steps documentation and no forced and derived parameters will be available." +msgstr "Nenhuma documentação de passos de configuração disponível e nenhum parâmetro forçado ou derivado estará disponível." + +#: MethodicConfigurator/backend_filesystem_configuration_steps.py:89 +msgid "Error in file '%s': '%s' %s parameter is not a dictionary" +msgstr "Erro no arquivo '%s': '%s' %s parâmetro não é um dicionário" + +#: MethodicConfigurator/backend_filesystem_configuration_steps.py:94 +msgid "Error in file '%s': '%s' %s parameter '%s' 'New Value' attribute not found." +msgstr "Erro no arquivo '%s': '%s' %s parâmetro '%s' atributo 'Novo Valor' não encontrado." + +#: MethodicConfigurator/backend_filesystem_configuration_steps.py:98 +msgid "Error in file '%s': '%s' %s parameter '%s' 'Change Reason' attribute not found." +msgstr "Erro no arquivo '%s': '%s' %s parâmetro '%s' atributo 'Razão da Mudança' não encontrado." + +#: MethodicConfigurator/backend_filesystem_configuration_steps.py:116 +msgid "In file '{self.configuration_steps_filename}': '{filename}' {parameter_type} parameter '{parameter}' could not be computed: 'fc_parameters' not found, is an FC connected?" +msgstr "No arquivo '{self.configuration_steps_filename}': '{filename}' parâmetro '{parameter}' {parameter_type} não pôde ser computado: 'fc_parameters' não encontrado, um FC está conectado?" + +#: MethodicConfigurator/backend_filesystem_configuration_steps.py:141 +msgid "In file '{self.configuration_steps_filename}': '{filename}' {parameter_type} parameter '{parameter}' could not be computed: {_e}" +msgstr "No arquivo '{self.configuration_steps_filename}': '{filename}' parâmetro '{parameter}' {parameter_type} não pôde ser computado: {_e}" + +#: MethodicConfigurator/backend_filesystem_configuration_steps.py:164 +msgid "File '{self.configuration_steps_filename}' not found. No intermediate parameter configuration steps available" +msgstr "Arquivo '{self.configuration_steps_filename}' não encontrado. Nenhum passo de configuração de parâmetros intermediários disponível" + +#: MethodicConfigurator/backend_filesystem_configuration_steps.py:169 +msgid "No documentation available for {selected_file} in the {self.configuration_steps_filename} file" +msgstr "Nenhuma documentação disponível para {selected_file} no arquivo {self.configuration_steps_filename}" + +#: MethodicConfigurator/backend_filesystem_program_settings.py:58 +msgid "Directory already exists, choose a different one" +msgstr "Diretório já existe, escolha outro." + +#: MethodicConfigurator/backend_filesystem_program_settings.py:63 +msgid "Error creating new vehicle directory: %s" +msgstr "Erro ao criar novo diretório de veículo: %s" + +#: MethodicConfigurator/backend_filesystem_program_settings.py:92 +msgid "The user configuration directory '{user_config_directory}' does not exist." +msgstr "O diretório de configuração do usuário '{user_config_directory}' não existe." + +#: MethodicConfigurator/backend_filesystem_program_settings.py:95 +msgid "The path '{user_config_directory}' is not a directory." +msgstr "O caminho '{user_config_directory}' não é um diretório." + +#: MethodicConfigurator/backend_filesystem_program_settings.py:106 +msgid "The site configuration directory '{site_config_directory}' does not exist." +msgstr "O diretório de configuração do site '{site_config_directory}' não existe." + +#: MethodicConfigurator/backend_filesystem_program_settings.py:109 +msgid "The path '{site_config_directory}' is not a directory." +msgstr "O caminho '{site_config_directory}' não é um diretório." + +#: MethodicConfigurator/backend_filesystem_vehicle_components.py:50 +msgid "File '%s' not found in %s." +msgstr "Arquivo '%s' não encontrado em %s." + +#: MethodicConfigurator/backend_filesystem_vehicle_components.py:52 +msgid "Error decoding JSON data from file '%s'." +msgstr "Erro ao decodificar dados JSON do arquivo '%s'." + +#: MethodicConfigurator/backend_filesystem_vehicle_components.py:62 +msgid "Error saving JSON data to file '%s': %s" +msgstr "Erro ao salvar dados JSON no arquivo '%s': %s" + +#: MethodicConfigurator/backend_filesystem_vehicle_components.py:75 +msgid "Firmware type {fw_type} in {self.vehicle_components_json_filename} is not supported" +msgstr "Tipo de firmware {fw_type} em {self.vehicle_components_json_filename} não é suportado" + +#: MethodicConfigurator/backend_filesystem_vehicle_components.py:89 +msgid "FW version string {version_str} on {self.vehicle_components_json_filename} is invalid" +msgstr "String da versão FW {version_str} em {self.vehicle_components_json_filename} é inválido" + +#: MethodicConfigurator/backend_flightcontroller.py:90 +msgid "You should uninstall ModemManager as it conflicts with ArduPilot" +msgstr "Você deve desinstalar o ModemManager, pois ele conflita com o ArduPilot" + +#: MethodicConfigurator/backend_flightcontroller.py:106 +msgid "Available connection ports are:" +msgstr "Portas de conexão disponíveis são:" + +#: MethodicConfigurator/backend_flightcontroller.py:110 +msgid "Add another" +msgstr "Adicionar outro" + +#: MethodicConfigurator/backend_flightcontroller.py:130 +msgid "Added connection %s" +msgstr "Conexão %s adicionada" + +#: MethodicConfigurator/backend_flightcontroller.py:132 +msgid "Did not add duplicated connection %s" +msgstr "Não foi adicionada a conexão duplicada %s" + +#: MethodicConfigurator/backend_flightcontroller.py:134 +msgid "Did not add empty connection" +msgstr "Não foi adicionada a conexão vazia" + +#: MethodicConfigurator/backend_flightcontroller.py:168 +msgid "Auto-detected device %s" +msgstr "Dispositivo auto-detectado %s" + +#: MethodicConfigurator/backend_flightcontroller.py:174 +msgid "Resolved soft link %s to %s" +msgstr "Link simbólico resolvido %s para %s" + +#: MethodicConfigurator/backend_flightcontroller.py:182 +msgid "No serial ports found. Please connect a flight controller and try again." +msgstr "Nenhuma porta serial encontrada. Por favor, conecte um controlador de voo e tente novamente." + +#: MethodicConfigurator/backend_flightcontroller.py:241 +msgid "Will connect to %s" +msgstr "Conectando a %s" + +#: MethodicConfigurator/backend_flightcontroller.py:246 +msgid "Waiting for MAVLink heartbeat" +msgstr "Aguardando o sinal de batimento cardíaco MAVLink" + +#: MethodicConfigurator/backend_flightcontroller.py:249 +msgid "No MAVLink heartbeat received, connection failed." +msgstr "Nenhum batimento cardíaco MAVLink recebido, conexão falhou." + +#: MethodicConfigurator/backend_flightcontroller.py:251 +msgid "Connection established with systemID %d, componentID %d." +msgstr "Conexão estabelecida com systemID %d, componentID %d." + +#: MethodicConfigurator/backend_flightcontroller.py:257 +msgid "Autopilot type {self.info.autopilot}" +msgstr "Tipo de piloto automático {self.info.autopilot}" + +#: MethodicConfigurator/backend_flightcontroller.py:260 +msgid "Unsupported autopilot type {self.info.autopilot}" +msgstr "Tipo de piloto automático não suportado {self.info.autopilot}" + +#: MethodicConfigurator/backend_flightcontroller.py:264 +msgid "Vehicle type: {self.info.mav_type} running {self.info.vehicle_type} firmware" +msgstr "Tipo de veículo: {self.info.mav_type} rodando firmware {self.info.vehicle_type}" + +#: MethodicConfigurator/backend_flightcontroller.py:275 +msgid "Connection failed: %s" +msgstr "Conexão falhou: %s" + +#: MethodicConfigurator/backend_flightcontroller.py:276 +msgid "Failed to connect after %d attempts." +msgstr "Falha ao conectar após %d tentativas." + +#: MethodicConfigurator/backend_flightcontroller.py:281 +msgid "" +"No AUTOPILOT_VERSION MAVLink message received, connection failed.\n" +"Only ArduPilot versions newer than 4.3.8 are supported.\n" +"Make sure parameter SERIAL0_PROTOCOL is set to 2" +msgstr "" +"Nenhuma mensagem MAVLink AUTOPILOT_VERSION recebida, conexão falhou.\n" +"Apenas versões do ArduPilot mais recentes que 4.3.8 são suportadas.\n" +"Certifique-se de que o parâmetro SERIAL0_PROTOCOL está definido como 2." + +#: MethodicConfigurator/backend_flightcontroller.py:297 +msgid "ChibiOS version missmatch: %s (BANNER) != % s (AUTOPILOT_VERSION)" +msgstr "Incompatibilidade de versão do ChibiOS: %s (BANNER) != %s (AUTOPILOT_VERSION)" + +#: MethodicConfigurator/backend_flightcontroller.py:310 +msgid "FC product mismatch: %s (BANNER) != %s (AUTOPILOT_VERSION)" +msgstr "Incompatibilidade de produto FC: %s (BANNER) != %s (AUTOPILOT_VERSION)" + +#: MethodicConfigurator/backend_flightcontroller.py:325 +msgid "Testing active, will load all parameters from the %s file" +msgstr "Teste ativo, irá carregar todos os parâmetros do arquivo %s" + +#: MethodicConfigurator/backend_flightcontroller.py:334 +msgid "MAVFTP is supported by the %s flight controller" +msgstr "MAVFTP é suportado pelo controlador de voo %s" + +#: MethodicConfigurator/backend_flightcontroller.py:339 +msgid "MAVFTP is not supported by the %s flight controller, fallback to MAVLink" +msgstr "MAVFTP não é suportado pelo controlador de voo %s, retornando ao MAVLink" + +#: MethodicConfigurator/backend_flightcontroller.py:343 +msgid "Will fetch all parameters from the %s flight controller" +msgstr "Irá buscar todos os parâmetros do controlador de voo %s" + +#: MethodicConfigurator/backend_flightcontroller.py:362 +msgid "Received parameter: %s = %s" +msgstr "Parâmetro recebido: %s = %s" + +#: MethodicConfigurator/backend_flightcontroller.py:367 +msgid "Fetched %d parameter values from the %s flight controller" +msgstr "Buscou %d valores de parâmetros do controlador de voo %s" + +#: MethodicConfigurator/backend_flightcontroller.py:371 +msgid "Error: %s" +msgstr "Erro: %s" + +#: MethodicConfigurator/backend_flightcontroller.py:426 +msgid "Reset command sent to ArduPilot." +msgstr "Comando de redefinição enviado ao ArduPilot." + +#: MethodicConfigurator/backend_flightcontroller.py:537 +msgid "MAVLink connection string to the flight controller. If set to \"none\" no connection is made. Defaults to autodetection" +msgstr "String de conexão MAVLink ao controlador de voo. Se definido para" + +#: MethodicConfigurator/backend_flightcontroller.py:547 +msgid "Flight controller reboot time. Default is %(default)s" +msgstr "Tempo de reinicialização do controlador de voo. O padrão é %(default)s" + +#: MethodicConfigurator/common_arguments.py:21 +msgid "Logging level (default is %(default)s)." +msgstr "Nível de registro (o padrão é %(default)s)." + +#: MethodicConfigurator/common_arguments.py:25 +msgid "Display version information and exit." +msgstr "Exibir informações da versão e sair." + +#: MethodicConfigurator/common_arguments.py:30 +msgid "User interface language (default is %(default)s)." +msgstr "Linguagem da interface do usuário (o padrão é %(default)s)." + +#: MethodicConfigurator/frontend_tkinter_base.py:44 +msgid "" +"No intermediate parameter files found in the selected '{_dirname}' vehicle directory.\n" +"Please select and step inside a vehicle directory containing valid ArduPilot intermediate parameter files.\n" +"\n" +"Make sure to step inside the directory (double-click) and not just select it." +msgstr "" +"Não foram encontrados arquivos de parâmetros intermediários no diretório do veículo '{_dirname}' selecionado.\n" +"Por favor, selecione e entre em um diretório de veículo que contenha arquivos de parâmetros intermediários válidos do ArduPilot.\n" +"\n" +"Certifique-se de entrar no diretório (clique duas vezes) e não o selecione apenas." + +#: MethodicConfigurator/frontend_tkinter_base.py:47 +msgid "No Parameter Files Found" +msgstr "Nenhum Arquivo de Parâmetros Encontrado" + +#: MethodicConfigurator/frontend_tkinter_base.py:51 +msgid "" +"{_error_string}\n" +"\n" +"Please connect a flight controller to the PC,\n" +"wait at least 7 seconds and retry." +msgstr "" +"{_error_string}\n" +"\n" +"Por favor ligue um controlador de voo ao PC,\n" +"espere pelo menos 7 segundos e tente de novo." + +#: MethodicConfigurator/frontend_tkinter_base.py:53 +msgid "No Connection to the Flight Controller" +msgstr "Nenhuma Conexão com o Controlador de Voo" + +#: MethodicConfigurator/frontend_tkinter_base.py:111 +msgid "param_file combobox selected string '%s' not in list %s" +msgstr "Elemento selecionado do combobox de param_file '%s' não está na lista %s" + +#: MethodicConfigurator/frontend_tkinter_base.py:114 +msgid "No param_file combobox element selected" +msgstr "Nenhum elemento do combobox de param_file selecionado" + +#: MethodicConfigurator/frontend_tkinter_base.py:248 +msgid "Please be patient, {:.1f}% of {}% complete" +msgstr "Por favor, seja paciente, {:.1f}% de {}% concluído" + +#: MethodicConfigurator/frontend_tkinter_base.py:262 +msgid "Lifting window: {_e} on file {__file__}" +msgstr "Levantar janela: {_e} no arquivo {file}" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:50 +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:46 +msgid "A GUI for editing JSON files that contain vehicle component configurations. Not to be used directly, but through the main ArduPilot methodic configurator script." +msgstr "Uma GUI para edição de arquivos JSON que contêm configurações de componentes de veículos. Não deve ser usada diretamente, mas através do script principal do configurador metódico do ArduPilot." + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:271 +msgid "Length of values %u and fallbacks %u differ for %s" +msgstr "Comprimento dos valores %u e fallback %u diferem para %s" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:274 +#: MethodicConfigurator/frontend_tkinter_component_editor.py:453 +msgid "No values found for %s in the metadata" +msgstr "Nenhum valor encontrado para %s nos metadados" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:284 +msgid "Protocol %s does not match %s in %s metadata" +msgstr "Protocolo %s não corresponde a %s nos metadados %s" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:286 +msgid "Protocol %s not found in %s metadata" +msgstr "Protocolo %s não encontrado nos metadados de %s" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:307 +msgid "Invalid non-integer value for GPS_TYPE %f" +msgstr "Valor inválido não inteiro para GPS_TYPE %f" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:326 +msgid "Invalid CAN_Dx_PROTOCOL %s and CAN_Px_DRIVER %s for GNSS Receiver" +msgstr "CAN_Dx_PROTOCOL %s e CAN_Px_DRIVER %s inválidos para o receptor GNSS" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:358 +msgid "Invalid non-integer value for {serial}_PROTOCOL {serial_protocol_nr}" +msgstr "Valor inválido não inteiro para {serial}_PROTOCOL {serial_protocol_nr}" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:387 +msgid "Invalid non-integer value for MOT_PWM_TYPE %f" +msgstr "Valor inválido não inteiro para MOT_PWM_TYPE %f" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:456 +msgid "No fallback values found for %s" +msgstr "Nenhum valor de fallback encontrado para %s" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:561 +msgid "" +"Invalid value '{value}' for {_paths_str}\n" +"Allowed values are: {_allowed_str}" +msgstr "" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:562 +#: MethodicConfigurator/frontend_tkinter_component_editor.py:585 +#: MethodicConfigurator/frontend_tkinter_component_editor.py:596 +#: MethodicConfigurator/frontend_tkinter_component_editor.py:622 +#: MethodicConfigurator/frontend_tkinter_component_editor.py:629 +#: MethodicConfigurator/frontend_tkinter_component_editor.py:664 +#: MethodicConfigurator/frontend_tkinter_component_editor.py:680 +#: MethodicConfigurator/frontend_tkinter_component_editor.py:698 +#: MethodicConfigurator/frontend_tkinter_component_editor.py:703 +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:247 +msgid "Error" +msgstr "Erro" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:579 +msgid "{_name} must be a {data_type.__name__} between {limits[0]} and {limits[1]}" +msgstr "{_name} deve ser um {data_type.__name__} entre {limits[0]} e {limits[1]}" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:584 +msgid "" +"Invalid value '{value}' for {_paths_str}\n" +"{e}" +msgstr "" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:596 +msgid "Battery Chemistry not set. Will default to Lipo." +msgstr "Química da bateria não definida. Será adotado o padrão Lipo." + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:610 +msgid "is below the {chemistry} minimum limit of {volt_limit}" +msgstr "está abaixo do limite mínimo de {chemistry} de {volt_limit}" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:617 +msgid "is above the {chemistry} maximum limit of {volt_limit}" +msgstr "está acima do limite máximo de {chemistry} de {volt_limit}" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:621 +msgid "" +"Invalid value '{value}' for {_path_str}\n" +"{_e}" +msgstr "" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:628 +msgid "" +"Invalid value '{value}' for {_path_str}\n" +"{_e}\n" +"Will be set to the recommended value." +msgstr "" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:663 +msgid "" +"Invalid value '{value}' for {_path_str}\n" +"Allowed values are: {_values_str}" +msgstr "" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:679 +msgid "Duplicate FC connection type '{value}' for {_path_str}" +msgstr "Tipo de conexão FC duplicado '{value}' para {_path_str}" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:698 +msgid "Battery Cell Low voltage must be lower than max voltage" +msgstr "A tensão baixa da célula da bateria deve ser menor que a tensão máxima" + +#: MethodicConfigurator/frontend_tkinter_component_editor.py:703 +msgid "Battery Cell Crit voltage must be lower than low voltage" +msgstr "A tensão crítica da célula da bateria deve ser menor que a tensão baixa" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:65 +msgid " - Vehicle Component Editor" +msgstr "- Editor de Componentes do Veículo" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:65 +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:213 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:204 +msgid "Amilcar Lucas's - ArduPilot methodic configurator " +msgstr "Configurador metódico do ArduPilot por Amilcar Lucas" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:86 +msgid "" +"Please configure all vehicle component properties in this window.\n" +msgstr "" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:87 +msgid "" +"Scroll down and make sure you do not miss a property.\n" +msgstr "" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:88 +msgid "Saving the result will write to the vehicle_components.json file." +msgstr "Salvar o resultado irá escrever no arquivo vehicle_components.json." + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:97 +msgid "Replace the vehicle.jpg file in the vehicle directory to change the vehicle image." +msgstr "Substitua o arquivo vehicle.jpg no diretório do veículo para alterar a imagem do veículo." + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:99 +msgid "Add a 'vehicle.jpg' image file to the vehicle directory." +msgstr "Adicione um arquivo de imagem 'vehicle.jpg' ao diretório do veículo." + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:109 +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:135 +msgid "Save data and start configuration" +msgstr "Salvar dados e iniciar a configuração" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:110 +msgid "Save component data and start parameter value configuration and tuning." +msgstr "Salvar dados de componentes e iniciar a configuração e ajuste dos valores de parâmetros." + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:117 +msgid "How to use the component editor" +msgstr "Como usar o editor de componentes" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:125 +msgid "1. Describe " +msgstr "1. Descrever" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:126 +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:131 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:364 +msgid "all" +msgstr "tudo" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:127 +msgid "" +" vehicle component properties in the window below\n" +msgstr "" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:128 +msgid "2. Scroll " +msgstr "2. Role" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:129 +msgid "all the way down" +msgstr "tudo para baixo" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:130 +msgid " and make sure to edit " +msgstr "e certifique-se de editar" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:132 +msgid "" +" fields\n" +msgstr "" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:133 +msgid "" +"3. Do not be lazy, collect the required information and enter it\n" +msgstr "" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:134 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:376 +msgid "4. Press the " +msgstr "4. Pressione o" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:136 +msgid " only after all information is correct" +msgstr "somente após todas as informações estarem corretas" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:140 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:383 +msgid "Dismiss" +msgstr "Dispensar" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:215 +msgid "ArduPilot Methodic Configurator only operates correctly if all component properties are correct. ArduPilot parameter values depend on the components used and their connections. Have you used the scrollbar on the right side of the window and entered the correct values for all components?" +msgstr "O Configurador Metódico ArduPilot opera corretamente apenas se todas as propriedades dos componentes estiverem corretas. Os valores dos parâmetros do ArduPilot dependem dos componentes utilizados e suas conexões. Você usou a barra de rolagem no lado direito da janela e inseriu os valores corretos para todos os componentes?" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:219 +msgid "Confirm that all component properties are correct" +msgstr "Confirme que todas as propriedades dos componentes estão corretas" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:247 +msgid "Failed to save data to file. Is the destination write protected?" +msgstr "Falha ao salvar dados no arquivo. O destino está protegido contra gravação?" + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:249 +msgid "Vehicle component data saved successfully." +msgstr "Dados do componente do veículo salvos com sucesso." + +#: MethodicConfigurator/frontend_tkinter_component_editor_base.py:262 +msgid "Skip the component editor window. Only use this if all components have been configured. Default to false" +msgstr "Saltar a janela do editor de componentes. Use isso somente se todos os componentes tiverem sido configurados. Padrão para falso" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:57 +msgid "list_pair_tuple must be a tuple or a dictionary, not %s" +msgstr "list_pair_tuple deve ser uma tupla ou um dicionário, não %s" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:75 +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:79 +msgid "%s combobox selected string '%s' not in list %s" +msgstr "A string selecionada do combobox %s '%s' não está na lista %s" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:85 +msgid "No %s combobox element selected" +msgstr "Nenhum elemento do combobox %s selecionado" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:116 +msgid "flight controller connection:" +msgstr "conexão do controlador de voo:" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:126 +msgid "" +"Select the flight controller connection\n" +"You can add a custom connection to the existing ones" +msgstr "" +"Selecione a conexão do controlador de voo\n" +"Você pode adicionar uma conexão personalizada às existentes." + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:131 +msgid "Connection combobox changed to: {selected_connection}" +msgstr "Combobox de conexão alterado para: {selected_connection}" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:143 +msgid "Flight Controller Connection" +msgstr "Conexão do Controlador de Voo" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:144 +msgid "" +"Enter the connection string to the flight controller. Examples are:\n" +"\n" +"COM4 (on windows)\n" +"/dev/serial/by-id/usb-xxx (on linux)\n" +"tcp:127.0.0.1:5761\n" +"udp:127.0.0.1:14551" +msgstr "" +"Digite a string de conexão com o controlador de voo. Exemplos são:\n" +"\n" +"COM4 (no Windows)\n" +"/dev/serial/by-id/usb-xxx (no Linux)\n" +"tcp:127.0.0.1:5761\n" +"udp:127.0.0.1:14551" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:150 +msgid "Will add new connection: {selected_connection} if not duplicated" +msgstr "Adicionar nova conexão: {selected_connection} se não for duplicada" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:154 +msgid "Updated connection tuples: {connection_tuples} with selected connection: {selected_connection}" +msgstr "Tuplas de conexão atualizadas: {connection_tuples} com a conexão selecionada: {selected_connection}" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:159 +msgid "Add connection canceled or string empty {selected_connection}" +msgstr "Adicionar conexão cancelada ou string vazia {selected_connection}" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:164 +msgid "Connecting with the FC" +msgstr "Conectando com o FC" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:165 +msgid "Connection step {} of {}" +msgstr "Passo de conexão {} de {}" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:176 +msgid "download_flight_controller_parameters" +msgstr "download_flight_controller_parameters" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:191 +msgid "Flight controller connection" +msgstr "Conexão do controlador de voo" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:196 +msgid "No ArduPilot flight controller was auto-detected detected yet." +msgstr "Nenhum controlador de voo ArduPilot foi detectado automaticamente ainda." + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:203 +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:225 +msgid "" +"\n" +"Choose one of the following three options:" +msgstr "" +"\n" +"Escolha uma das três opções:" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:207 +msgid "Auto connection" +msgstr "Conexão automática" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:211 +msgid "" +"Connect a flight controller to the PC,\n" +"wait 7 seconds for it to fully boot and\n" +"press the Auto-connect button below to connect to it" +msgstr "" +"Ligue um controlador de voo ao PC,\n" +"espere 7 segundos para que arranque e\n" +"pressione o botão Conexão automática abaixo para se ligar" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:215 +msgid "Auto-connect" +msgstr "Conexão automática" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:217 +msgid "Auto-connect to a 'Mavlink'-talking serial device" +msgstr "Conectar automaticamente a um dispositivo serial que fala 'Mavlink'" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:220 +msgid "Manual connection" +msgstr "Conexão manual" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:224 +msgid "" +"Connect a flight controller to the PC,\n" +"wait 7 seconds for it to fully boot and\n" +"manually select the fight controller connection or add a new one" +msgstr "" +"Ligue um controlador de voo (FC) ao PC,\n" +"espere 7 segundos para que arranque e\n" +"selecione a ligação manualmente ou adicione uma nova" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:234 +msgid "No connection" +msgstr "Nenhuma conexão" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:245 +msgid "Skip FC connection, just edit the .param files on disk" +msgstr "Sem a conexão FC, apenas edite os arquivos .param no disco" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:250 +msgid "" +"No parameter values will be fetched from the FC, default parameter values from disk will be used\n" +"instead (if '00_default.param' file is present) and just edit the intermediate '.param' files on disk" +msgstr "" +"Não serão buscados valores de parâmetros do FC, serão utilizados os valores padrão dos parâmetros em disco\n" +"em vez disso (se o arquivo '00_default.param' estiver presente) e você pode apenas editar os arquivos intermediários '.param' no disco." + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:263 +msgid "Will proceed without FC connection. FC parameters will not be downloaded nor uploaded" +msgstr "Prosseguirá sem conexão FC. Os parâmetros do FC não serão baixados nem enviados" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:264 +msgid "Only the intermediate '.param' files on the PC disk will be edited" +msgstr "Apenas os arquivos intermediários '.param' no disco do PC serão editados" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:278 +msgid "This main is for testing and development only. Usually, the ConnectionSelectionWidgets is called from another script" +msgstr "Este main é apenas para teste e desenvolvimento. Normalmente, o ConnectionSelectionWidgets é chamado de outro script" + +#: MethodicConfigurator/frontend_tkinter_connection_selection.py:289 +msgid "This main is for testing and development only, usually the ConnectionSelectionWindow is called from another script" +msgstr "Este main é apenas para teste e desenvolvimento, normalmente o ConnectionSelectionWindow é chamado de outro script" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:95 +msgid "Selected template directory: %s" +msgstr "Diretório de modelo selecionado: %s" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:97 +msgid "Select {self.label_text}" +msgstr "Selecione {self.label_text}" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:156 +msgid "Vehicle configuration directory:" +msgstr "Diretório de configuração do veículo:" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:158 +msgid "" +"Vehicle-specific directory containing the intermediate\n" +"parameter files to be uploaded to the flight controller" +msgstr "" +"Diretório específico do veículo contendo os arquivos de\n" +"parâmetros intermediários a serem enviados para o controlador de voo." + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:160 +msgid "" +"Select the vehicle-specific configuration directory containing the\n" +"intermediate parameter files to be uploaded to the flight controller" +msgstr "" +"Selecione o diretório de configuração específico do veículo contendo os\n" +"arquivos de parâmetros intermediários a serem enviados para o controlador de voo." + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:171 +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:180 +msgid "Invalid Vehicle Directory Selected" +msgstr "Diretório do Veículo Selecionado Inválido" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:172 +msgid "" +"Please do not edit the files provided 'vehicle_templates' directory\n" +"as those are used as a template for new vehicles" +msgstr "" +"Por favor, não edite os arquivos fornecidos no diretório 'vehicle_templates'\n" +"pois esses são usados como modelo para novos veículos." + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:179 +msgid "Selected directory must contain files matching \\d\\d_*\\.param and a {_filename} file" +msgstr "O diretório selecionado deve conter arquivos correspondentes a \\d\\d_*\\.param e um arquivo {_filename}" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:214 +msgid " - Select vehicle configuration directory" +msgstr "- Selecione o diretório de configuração do veículo" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:221 +msgid "" +"No intermediate parameter files found\n" +"in current working directory." +msgstr "" +"Nenhum arquivo de parâmetro intermediário encontrado\n" +"no diretório de trabalho atual." + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:223 +msgid "" +"No intermediate parameter files found\n" +"in the --vehicle-dir specified directory." +msgstr "" +"Não foram encontrados arquivos de parâmetros intermediários\n" +"no diretório especificado --vehicle-dir." + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:230 +msgid "MyVehicleName" +msgstr "MeuNomeVeículo" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:244 +msgid "New" +msgstr "Novo" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:247 +msgid "" +"Existing vehicle template directory containing the intermediate\n" +"parameter files to be copied to the new vehicle configuration directory" +msgstr "" +"Diretório de modelos de veículos existente contendo os arquivos de\n" +"parâmetro intermediários a serem copiados para o novo diretório de configuração do veículo." + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:249 +msgid "" +"Select the existing vehicle template directory containing the intermediate\n" +"parameter files to be copied to the new vehicle configuration directory" +msgstr "" +"Selecione o diretório de modelos de veículos existente que contém os arquivos de\n" +"parâmetros intermediários a serem copiados para o novo diretório de configuração do veículo." + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:252 +msgid "Source Template directory:" +msgstr "Diretório de Template Fonte:" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:260 +msgid "Use parameter values from connected FC, not from template files" +msgstr "Use valores de parâmetros do FC conectado, não de arquivos de template" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:263 +msgid "" +"Use the parameter values from the connected flight controller instead of the\n" +"template files when creating a new vehicle configuration directory from a template.\n" +"This option is only available when a flight controller is connected" +msgstr "" +"Use os valores de parâmetros do controlador de voo conectado em vez dos\n" +"arquivos de modelo ao criar um novo diretório de configuração de veículo a partir de um modelo.\n" +"Esta opção só está disponível quando um controlador de voo está conectado." + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:270 +msgid "Existing directory where the new vehicle configuration directory will be created" +msgstr "Diretório existente onde o novo diretório de configuração do veículo será criado" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:271 +msgid "Select the directory where the new vehicle configuration directory will be created" +msgstr "Selecione o diretório onde o novo diretório de configuração do veículo será criado" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:273 +msgid "Destination base directory:" +msgstr "Diretório base de destino:" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:279 +msgid "A new vehicle configuration directory with this name will be created at the (destination) base directory" +msgstr "Um novo diretório de configuração do veículo com este nome será criado no diretório base (destino)" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:282 +msgid "Destination new vehicle name:" +msgstr "Nome do novo veículo de destino:" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:286 +msgid "Create vehicle configuration directory from template" +msgstr "Criar diretório de configuração do veículo a partir do template" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:291 +msgid "" +"Create a new vehicle configuration directory on the (destination) base directory,\n" +"copy the template files from the (source) template directory to it and\n" +"load the newly created files into the application" +msgstr "" +"Crie um novo diretório de configuração de veículo no diretório base (destino),\n" +"copie os arquivos de modelo do diretório de modelo (origem) para ele e\n" +"carregue os novos arquivos criados na aplicação." + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:297 +msgid "Open" +msgstr "Abrir" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:301 +msgid "" +"Use an existing vehicle configuration directory with\n" +"intermediate parameter files, apm.pdef.xml and vehicle_components.json" +msgstr "" +"Use um diretório de configuração de veículo existente com\n" +"arquivos de parâmetros intermediários, apm.pdef.xml e vehicle_components.json." + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:312 +msgid "Re-Open" +msgstr "Reabrir" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:317 +msgid "Last used vehicle configuration directory:" +msgstr "Último diretório de configuração de veículo usado:" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:319 +msgid "Last used vehicle configuration directory" +msgstr "Último diretório de configuração de veículo usado" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:328 +msgid "Open Last Used Vehicle Configuration Directory" +msgstr "Abrir o Último Diretório de Configuração de Veículo Usado" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:334 +msgid "Directly open the last used vehicle configuration directory for configuring and tuning the vehicle" +msgstr "Abrir diretamente o último diretório de configuração de veículo usado para configurar e ajustar o veículo" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:343 +msgid "Vehicle template directory cannot be empty" +msgstr "O diretório de template do veículo não pode estar vazio" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:343 +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:346 +msgid "Vehicle template directory" +msgstr "Diretório de template do veículo" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:346 +msgid "Vehicle template directory does not exist" +msgstr "O diretório de template do veículo não existe" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:350 +msgid "New vehicle name cannot be empty" +msgstr "O novo nome do veículo não pode estar vazio" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:350 +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:353 +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:359 +msgid "New vehicle directory" +msgstr "Novo diretório de veículo" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:353 +msgid "New vehicle name must not contain invalid characters" +msgstr "O novo nome do veículo não deve conter caracteres inválidos" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:364 +msgid "Copying template files" +msgstr "Copiando arquivos de template" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:407 +msgid "No Last Vehicle Directory Found" +msgstr "Nenhum Último Diretório de Veículo Encontrado" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:408 +msgid "" +"No last opened vehicle configuration directory was found.\n" +"Please select a directory manually." +msgstr "" +"Nenhum diretório de configuração de veículo aberto anteriormente foi encontrado.\n" +"Por favor, selecione um diretório manualmente." + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:420 +msgid "This main is for testing and development only. Usually, the VehicleDirectorySelectionWindow is called from another script" +msgstr "Este programa é apenas para testes e desenvolvimento. Geralmente, a VehicleDirectorySelectionWindow é chamada de outro script" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:431 +msgid "This main is for testing and development only, usually the VehicleDirectorySelectionWindow is called from another script" +msgstr "Este programa é apenas para testes e desenvolvimento, geralmente a VehicleDirectorySelectionWindow é chamada de outro script" + +#: MethodicConfigurator/frontend_tkinter_directory_selection.py:440 +msgid "No intermediate parameter files found in %s." +msgstr "Nenhum arquivo de parâmetro intermediário encontrado em %s." + +#: MethodicConfigurator/frontend_tkinter_entry_dynamic.py:40 +msgid "List_of_items can't be 'None'" +msgstr "List_of_items não pode ser 'None'" + +#: MethodicConfigurator/frontend_tkinter_flightcontroller_info.py:35 +msgid " - Flight Controller Info" +msgstr "- Informações do Controlador de Voo" + +#: MethodicConfigurator/frontend_tkinter_flightcontroller_info.py:35 +msgid "ArduPilot methodic configurator " +msgstr "Configurador metódico do ArduPilot" + +#: MethodicConfigurator/frontend_tkinter_flightcontroller_info.py:64 +msgid "Firmware Version: %s" +msgstr "Versão do Firmware: %s" + +#: MethodicConfigurator/frontend_tkinter_flightcontroller_info.py:65 +msgid "Firmware first 8 hex bytes of the FC git hash: %s" +msgstr "Primeiros 8 bytes hexadecimais do hash git do firmware do FC: %s" + +#: MethodicConfigurator/frontend_tkinter_flightcontroller_info.py:66 +msgid "Firmware first 8 hex bytes of the ChibiOS git hash: %s" +msgstr "Primeiros 8 bytes hexadecimais do hash git do ChibiOS: %s" + +#: MethodicConfigurator/frontend_tkinter_flightcontroller_info.py:67 +msgid "Flight Controller HW / board version: %s" +msgstr "Versão de HW / placa do Controlador de Voo: %s" + +#: MethodicConfigurator/frontend_tkinter_flightcontroller_info.py:68 +msgid "Flight Controller USB vendor ID: %s" +msgstr "ID do fornecedor USB do Controlador de Voo: %s" + +#: MethodicConfigurator/frontend_tkinter_flightcontroller_info.py:69 +msgid "Flight Controller USB product ID: %s" +msgstr "ID do produto USB do Controlador de Voo: %s" + +#: MethodicConfigurator/frontend_tkinter_flightcontroller_info.py:75 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:499 +msgid "Downloading FC parameters" +msgstr "Baixando parâmetros do FC" + +#: MethodicConfigurator/frontend_tkinter_flightcontroller_info.py:76 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:501 +msgid "Downloaded {} of {} parameters" +msgstr "Baixou {} de {} parâmetros" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:76 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:108 +msgid "Documentation" +msgstr "Documentação" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:83 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:112 +msgid "Forum Blog:" +msgstr "Blog do Fórum:" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:83 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:114 +msgid "Wiki:" +msgstr "Wiki:" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:83 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:117 +msgid "External tool:" +msgstr "Ferramenta externa:" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:83 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:120 +msgid "Mandatory:" +msgstr "Obrigatório:" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:84 +msgid "ArduPilot's forum Methodic configuration Blog post relevant for the current file" +msgstr "Postagem do Blog de Configuração Metódica do fórum do ArduPilot relevante para o arquivo atual" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:85 +msgid "ArduPilot's wiki page relevant for the current file" +msgstr "Página da wiki do ArduPilot relevante para o arquivo atual" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:86 +msgid "External tool or documentation relevant for the current file" +msgstr "Ferramenta externa ou documentação relevante para o arquivo atual" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:87 +msgid "" +"Mandatory level of the current file,\n" +" 100% you MUST use this file to configure the vehicle,\n" +" 0% you can ignore this file if it does not apply to your vehicle" +msgstr "" +"Nível obrigatório do arquivo atual,\n" +" 100% você DEVE usar este arquivo para configurar o veículo,\n" +" 0% você pode ignorar este arquivo se ele não se aplicar ao seu veículo." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:105 +msgid "{current_file} Documentation" +msgstr "Documentação de {current_file}" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:132 +msgid "Documentation URL not available" +msgstr "URL da documentação não disponível" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:138 +msgid "About" +msgstr "Sobre" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:145 +msgid "" +"ArduPilot Methodic Configurator Version: {_version}\n" +"\n" +"A clear configuration sequence for ArduPilot vehicles.\n" +"\n" +"Copyright © 2024 Amilcar do Carmo Lucas and ArduPilot.org\n" +"\n" +"Licensed under the GNU General Public License v3.0" +msgstr "" +"Configurador Metódico do ArduPilot Versão: {_version}\n" +"\n" +"Uma sequência de configuração clara para veículos ArduPilot.\n" +"\n" +"Copyright © 2024 Amilcar do Carmo Lucas e ArduPilot.org\n" +"\n" +"Licenciado sob a Licença Pública Geral GNU v3.0" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:153 +msgid "User Manual" +msgstr "Manual do Usuário" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:156 +msgid "Support Forum" +msgstr "Fórum de Suporte" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:159 +msgid "Report a Bug" +msgstr "Reportar um Bug" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:162 +msgid "Licenses" +msgstr "Licenças" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:165 +msgid "Source Code" +msgstr "Código Fonte" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:205 +msgid " - Parameter file editor and uploader" +msgstr "- Editor e carregador de arquivo de parâmetros" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:254 +msgid "Current intermediate parameter file:" +msgstr "Arquivo de parâmetro intermediário atual:" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:261 +msgid "" +"Select the intermediate parameter file from the list of available files in the selected vehicle directory\n" +"It will automatically advance to the next file once the current file is uploaded to the fight controller" +msgstr "" +"Selecione o arquivo de parâmetro intermediário na lista de arquivos disponíveis no diretório do veículo selecionado\n" +"Avançará automaticamente para o próximo arquivo assim que o arquivo atual for enviado para o controlador de voo." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:274 +msgid "User Manual, Support Forum, Report a Bug, Licenses, Source Code" +msgstr "Manual do Usuário, Fórum de Suporte, Reportar um Bug, Licenças, Código Fonte" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:279 +msgid "Legend" +msgstr "Legenda" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:282 +msgid "the meaning of the text background colors" +msgstr "o significado das cores de fundo do texto" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:286 +msgid "Normal parameter" +msgstr "Parâmetro normal" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:288 +msgid "Calibration param" +msgstr "Parâmetro de calibração" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:290 +msgid "Read-only param" +msgstr "Parâmetro somente leitura" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:294 +msgid "Default value" +msgstr "Valor padrão" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:296 +msgid "Not available" +msgstr "Não disponível" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:298 +msgid "Not editable" +msgstr "Não editável" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:321 +msgid "See only changed parameters" +msgstr "Veja apenas parâmetros alterados" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:325 +msgid "Toggle to show only parameters that will change if/when uploaded to the flight controller" +msgstr "Alternar para mostrar apenas parâmetros que mudarão se/quando enviados ao controlador de voo" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:328 +msgid "Annotate docs into .param files" +msgstr "Anotar documentos em arquivos .param" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:332 +msgid "" +"Annotate ArduPilot parameter documentation metadata into the intermediate parameter files\n" +"The files will be bigger, but all the existing parameter documentation will be included inside" +msgstr "" +"Anotar metadados de documentação de parâmetros do ArduPilot nos arquivos de parâmetros intermediários\n" +"Os arquivos serão maiores, mas toda a documentação de parâmetros existente estará incluída." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:337 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:377 +msgid "Upload selected params to FC, and advance to next param file" +msgstr "Enviar parâmetros selecionados ao FC e avançar para o próximo arquivo de parâmetros" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:342 +msgid "" +"Upload selected parameters to the flight controller and advance to the next intermediate parameter file\n" +"If changes have been made to the current file it will ask if you want to save them\n" +"It will reset the FC if necessary, re-download all parameters and validate their value" +msgstr "" +"Enviar parâmetros selecionados para o controlador de voo e avançar para o próximo arquivo de parâmetro intermediário\n" +"Se tiver havido alterações no arquivo atual, será perguntado se você deseja salvá-las\n" +"Irá reiniciar o controlador de voo, se necessário, re-baixar todos os parâmetros e validar seu valor." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:347 +msgid "Skip parameter file" +msgstr "Saltar arquivo de parâmetros" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:349 +msgid "" +"Skip to the next intermediate parameter file without uploading any changes to the flight controller\n" +"If changes have been made to the current file it will ask if you want to save them" +msgstr "" +"Salte para o próximo arquivo de parâmetro intermediário sem enviar alterações para o controlador de voo\n" +"Se tiver havido alterações no arquivo atual, será perguntado se você deseja salvá-las." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:355 +msgid "Welcome to the ArduPilot Methodic Configurator" +msgstr "Bem-vindo ao Configurador Metódico do ArduPilot" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:363 +msgid "1. Read " +msgstr "1. Leia" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:365 +msgid "" +" the documentation on top of the parameter table\n" +msgstr "" +" a documentação no topo da tabela de parâmetros\n" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:366 +msgid "2. Edit the parameter " +msgstr "2. Edite o parâmetro" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:367 +msgid "New Values" +msgstr "Novos Valores" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:368 +msgid " and" +msgstr " e" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:369 +msgid " their " +msgstr " seus " + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:370 +msgid "" +"Change Reason\n" +msgstr "" +"Razão da Mudança\n" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:371 +msgid "3. Use " +msgstr "3. Use" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:372 +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:230 +msgid "Del" +msgstr "Del" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:373 +msgid " and " +msgstr " e " + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:374 +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:209 +msgid "Add" +msgstr "Adicionar" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:375 +msgid "" +" buttons to delete and add parameters if necessary\n" +msgstr "" +" butoes para apagar e adicionar parâmetros se necessário\n" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:378 +msgid "" +" button\n" +msgstr "" +" botão\n" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:379 +msgid "5. Repeat from the top until the program automatically closes" +msgstr "5. Repita a partir do começo até que o programa feche automaticamente" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:402 +msgid "" +"If you proceed the {tempcal_imu_result_param_filename}\n" +"will be overwritten with the new calibration results.\n" +"Do you want to provide a .bin log file and\n" +"run the IMU temperature calibration using it?" +msgstr "" +"Se você prosseguir, o {tempcal_imu_result_param_filename}\n" +"será sobrescrito com os novos resultados de calibração.\n" +"Você deseja fornecer um arquivo de log .bin e\n" +"executar a calibração da temperatura da IMU usando-o?" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:406 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:410 +msgid "IMU temperature calibration" +msgstr "Calibração da temperatura do IMU" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:408 +msgid "ArduPilot binary log files" +msgstr "Arquivos de log binários do ArduPilot" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:410 +msgid "" +"Please wait, this can take a really long time and\n" +"the GUI will be unresponsive until it finishes." +msgstr "" +"Por favor, aguarde, isso pode levar um tempo realmente longo e\n" +"a interface gráfica ficará sem resposta até que termine." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:412 +msgid "Reading IMU calibration messages" +msgstr "Lendo mensagens de calibração do IMU" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:413 +msgid "Please wait, this can take a long time" +msgstr "Por favor, aguarde, isso pode levar um tempo" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:428 +msgid "" +"This configuration step should be performed outside this tool by\n" +"{auto_changed_by}\n" +"and that should have changed the parameters on the FC.\n" +"\n" +"Should the FC values now be copied to the {selected_file} file?" +msgstr "" +"Esse passo de configuração deve ser realizado fora desta ferramenta por\n" +"{auto_changed_by}\n" +"e isso deve ter alterado os parâmetros no controlador de voo.\n" +"\n" +"Os valores do controlador de voo devem agora ser copiados para o arquivo {selected_file}?" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:432 +msgid "Update file with values from FC?" +msgstr "Atualizar arquivo com valores do FC?" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:442 +msgid "Skip some steps?" +msgstr "Saltar algumas etapas?" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:452 +msgid "" +"Should the {local_filename} file be downloaded from the URL\n" +"{url}?" +msgstr "" +"O arquivo {local_filename} deve ser download do URL\n" +"{url}?" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:453 +msgid "Download file from URL" +msgstr "Download arquivo do URL" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:455 +msgid "Failed to download {local_filename} from {url}, please download it manually" +msgstr "Falha ao fazer download {local_filename} de {url}, por favor, faça o download manualmente" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:456 +msgid "Download failed" +msgstr "Download falhou" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:462 +msgid "Local file {local_filename} does not exist" +msgstr "Arquivo local {local_filename} não existe" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:463 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:477 +msgid "Will not upload any file" +msgstr "Não enviará nenhum arquivo" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:466 +msgid "Should the {local_filename} file be uploaded to the flight controller as {remote_filename}?" +msgstr "O arquivo {local_filename} deve ser enviado para o controlador de voo como {remote_filename}?" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:467 +msgid "Upload file to FC" +msgstr "Enviar arquivo para o FC" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:468 +msgid "Uploading file" +msgstr "Enviando arquivo" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:469 +msgid "Uploaded {} of {} %" +msgstr "Enviado {} de {} %" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:472 +msgid "Failed to upload {local_filename} to {remote_filename}, please upload it manually" +msgstr "Falha ao enviar {local_filename} para {remote_filename}, por favor, envie-o manualmente" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:473 +msgid "Upload failed" +msgstr "Envio falhou" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:476 +msgid "No flight controller connection, will not upload any file" +msgstr "Sem conexão com o controlador de voo, não será enviado nenhum arquivo" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:477 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:599 +msgid "No flight controller connection" +msgstr "Sem conexão com o controlador de voo" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:499 +msgid "Re-downloading FC parameters" +msgstr "Rebaixando parâmetros do FC" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:536 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:616 +msgid "Parameter %s set to %f" +msgstr "Parâmetro %s definido para %f" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:544 +msgid "Parameter %s changed from %f to %f, reset required" +msgstr "Parâmetro %s alterado de %f para %f, reinicialização necessária" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:547 +msgid "Parameter %s changed to %f, reset required" +msgstr "Parâmetro %s alterado para %f, reinicialização necessária" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:554 +msgid "Parameter %s changed from %f to %f, possible reset required" +msgstr "Parâmetro %s alterado de %f para %f, reinicialização possivelmente necessária" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:557 +msgid "Parameter %s changed to %f, possible reset required" +msgstr "Parâmetro %s alterado para %f, reinicialização possivelmente necessária" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:560 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:621 +msgid "Failed to set parameter {param_name}: {_e}" +msgstr "Falha ao definir o parâmetro {param_name}: {_e}" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:562 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:585 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:623 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:675 +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:138 +msgid "ArduPilot methodic configurator" +msgstr "Configurador metódico do ArduPilot" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:571 +msgid "" +"{_param_list_str} parameter(s) potentially require a reset\n" +"Do you want to reset the ArduPilot?" +msgstr "" +"{_param_list_str} parâmetro(s) pode(m) exigir um reset\n" +"Você deseja reiniciar o ArduPilot?" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:572 +msgid "Possible reset required" +msgstr "Reinicialização possivelmente necessária" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:575 +msgid "Resetting Flight Controller" +msgstr "Reiniciando Controlador de Voo" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:576 +msgid "Waiting for {} of {} seconds" +msgstr "Aguardando {} de {} segundos" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:597 +msgid "No parameters were yet downloaded from the flight controller, will not upload any parameter" +msgstr "Nenhum parâmetro foi baixado do controlador de voo, não será enviado nenhum parâmetro" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:599 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:602 +msgid "Will not upload any parameter" +msgstr "Nenhum parâmetro será enviado" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:601 +msgid "No parameter was selected for upload, will not upload any parameter" +msgstr "Nenhum parâmetro foi selecionado para envio, não será enviado nenhum parâmetro" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:602 +msgid "No parameter was selected for upload" +msgstr "Nenhum parâmetro foi selecionado para envio" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:608 +msgid "Uploading %d selected %s parameters to flight controller..." +msgstr "Enviando %d parâmetros %s selecionados para o controlador de voo..." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:628 +msgid "Re-download all parameters from the flight controller" +msgstr "Baixar novamente todos os parâmetros do controlador de voo" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:636 +msgid "Parameter %s upload to the flight controller failed. Expected: %f, Actual: %f" +msgstr "Falha ao enviar o parâmetro %s para o controlador de voo. Esperado: %f, Real: %f" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:640 +msgid "Parameter %s upload to the flight controller failed. Expected: %f, Actual: N/A" +msgstr "Falha ao enviar o parâmetro %s para o controlador de voo. Esperado: %f, Real: Indisponível" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:645 +msgid "Parameter upload error" +msgstr "Erro de envio de parâmetro" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:646 +msgid "" +"Failed to upload the following parameters to the flight controller:\n" +msgstr "" +"Falha ao enviar os seguintes parâmetros para o controlador de voo:\n" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:650 +msgid "All parameters uploaded to the flight controller successfully" +msgstr "Todos os parâmetros enviados para o controlador de voo com sucesso" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:675 +msgid "Current file not found in the list of files" +msgstr "Arquivo atual não encontrado na lista de arquivos" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:681 +msgid "Do you want to write the changes to the {self.current_file} file?" +msgstr "Você deseja gravar as alterações no arquivo {self.current_file}?" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:682 +msgid "One or more parameters have been edited" +msgstr "Um ou mais parâmetros foram editados" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:702 +msgid "" +"Methodic configuration of {nr_total_params} parameters complete:\n" +"\n" +"{_nr_unchanged_params} kept their default value\n" +"\n" +"{nr_non_default__read_only_params} non-default read-only parameters - ignore these, you can not change them\n" +"\n" +"{nr_non_default__writable_calibrations} non-default writable sensor-calibrations - non-reusable between vehicles\n" +"\n" +"{nr_non_default__writable_non_calibrations} non-default writable non-sensor-calibrations - these can be reused between similar vehicles" +msgstr "" +"Configuração metódica de {nr_total_params} parâmetros concluída:\n" +"\n" +"{_nr_unchanged_params} mantiveram seu valor padrão\n" +"\n" +"{nr_non_default__read_only_params} parâmetros de leitura não padrão - ignore estes, você não pode alterá-los\n" +"\n" +"{nr_non_default__writable_calibrations} calibrações de sensores graváveis não padrão - não reutilizáveis entre veículos\n" +"\n" +"{nr_non_default__writable_non_calibrations} não calibrações de sensores graváveis não padrão - estas podem ser reutilizadas entre veículos semelhantes" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:710 +msgid "Last parameter file processed" +msgstr "Último arquivo de parâmetro processado" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:730 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:741 +msgid "" +"{} file already exists.\n" +"Do you want to overwrite it?" +msgstr "" +"O arquivo {} já existe.\n" +"Você deseja sobrescrevê-lo?" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:731 +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:742 +msgid "Overwrite existing file" +msgstr "Sobrescrever arquivo existente" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:734 +msgid "Summary file %s written" +msgstr "Arquivo de resumo %s escrito" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:745 +msgid "" +"All relevant files have been zipped into the \n" +"{zip_file_path} file.\n" +"\n" +"You can now upload this file to the ArduPilot Methodic\n" +"Configuration Blog post on discuss.ardupilot.org." +msgstr "" +"Todos os arquivos relevantes foram compactados no arquivo \n" +"{zip_file_path}.\n" +"\n" +"Você pode agora enviar este arquivo para o post do Blog de Configuração Metódica do ArduPilot em discuss.ardupilot.org." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:748 +msgid "Parameter files zipped" +msgstr "Arquivos de parâmetro compactados" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:760 +msgid "Skip the welcome popup window. Only use this if you already know how to use the software. Default to false" +msgstr "Ignorar a janela pop-up de boas-vindas. Use isso apenas se você já souber como usar o software. Padrão falso" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor.py:774 +msgid "A GUI for editing ArduPilot param files. Not to be used directly, but through the main ArduPilot methodic configurator script." +msgstr "Uma interface gráfica para edição de arquivos de parâmetros do ArduPilot. Não deve ser usada diretamente, mas através do script principal do configurador metódico do ArduPilot." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:75 +msgid "Error in forced parameters" +msgstr "Erro em parâmetros forçados" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:98 +msgid "-/+" +msgstr "-/+" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:98 +msgid "Change Reason" +msgstr "Motivo da Alteração" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:98 +msgid "Current Value" +msgstr "Valor Atual" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:98 +msgid "New Value" +msgstr "Novo Valor" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:98 +msgid "Parameter" +msgstr "Parâmetro" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:98 +msgid "Unit" +msgstr "Unidade" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:98 +msgid "Upload" +msgstr "Enviar" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:99 +msgid "Delete or add a parameter" +msgstr "Excluir ou adicionar um parâmetro" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:100 +msgid "Parameter name must be ^[A-Z][A-Z_0-9]* and most 16 characters long" +msgstr "O nome do parâmetro deve ser ^[A-Z][A-Z_0-9]* e ter no máximo 16 caracteres" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:101 +msgid "Current value on the flight controller " +msgstr "Valor atual no controlador de voo" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:102 +msgid "New value from the above selected intermediate parameter file" +msgstr "Novo valor do arquivo de parâmetros intermediários selecionado acima" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:103 +msgid "Parameter Unit" +msgstr "Unidade do Parâmetro" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:104 +msgid "When selected, upload the new value to the flight controller" +msgstr "Quando selecionado, enviar o novo valor para o controlador de voo" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:105 +msgid "Reason why respective parameter changed" +msgstr "Motivo pelo qual o respectivo parâmetro mudou" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:136 +msgid "No different parameters found in {selected_file}. Skipping..." +msgstr "Nenhum parâmetro diferente encontrado em {selected_file}. Ignorando..." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:170 +msgid "Removing duplicate parameter %s" +msgstr "Removendo parâmetro duplicado %s" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:171 +msgid "The parameter '{old_name}' was removed due to duplication." +msgstr "O parâmetro '{old_name}' foi removido por ser duplicado." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:172 +msgid "Parameter Removed" +msgstr "Parâmetro Removido" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:178 +msgid "Renaming parameter %s to %s" +msgstr "Renomeando parâmetro %s para %s" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:179 +msgid "" +"The parameter '{old_name}' was renamed to '{new_name}'.\n" +"to obey the flight controller connection defined in the component editor window." +msgstr "" +"O parâmetro '{old_name}' foi renomeado para '{new_name}'.\n" +"Para obedecer à conexão do controlador de voo definida na janela do editor de componentes." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:181 +msgid "Parameter Renamed" +msgstr "Parâmetro Renomeado" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:189 +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:407 +msgid "No documentation available in apm.pdef.xml for this parameter" +msgstr "Nenhuma documentação disponível em apm.pdef.xml para este parâmetro" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:211 +msgid "Add a parameter to the {self.current_file} file" +msgstr "Adicionar um parâmetro ao arquivo {self.current_file}" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:217 +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:325 +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:545 +msgid "Parameter %s not found in the %s file: %s" +msgstr "Parâmetro %s não encontrado no arquivo %s: %s" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:232 +msgid "Delete {param_name} from the {self.current_file} file" +msgstr "Excluir {param_name} do arquivo {self.current_file}" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:257 +msgid "N/A" +msgstr "Indisponível" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:268 +msgid "Could not solve the selected {combobox_widget} key to a float value." +msgstr "Não foi possível resolver a chave {combobox_widget} selecionada para um valor decimal." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:363 +msgid "{_param_name} Value: {_new_decimal_value}" +msgstr "{_param_name} Valor: {_new_decimal_value}" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:373 +msgid "Select {param_name} Bitmask Options" +msgstr "Selecionar Opções de Bitmask para {param_name}" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:416 +msgid "When selected upload {param_name} new value to the flight controller" +msgstr "Quando selecionado, envie {param_name} novo valor para o controlador de voo" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:444 +msgid "Reason why {param_name} should change to {_value}" +msgstr "Motivo pelo qual {param_name} deve mudar para {_value}" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:449 +msgid "Are you sure you want to delete the {param_name} parameter?" +msgstr "Você tem certeza de que deseja excluir o parâmetro {param_name}?" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:464 +msgid "Add Parameter to " +msgstr "Adicionar Parâmetro a" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:477 +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:531 +msgid "Operation not possible" +msgstr "Operação não possível" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:478 +msgid "No apm.pdef.xml file and no FC connected. Not possible autocomplete parameter names." +msgstr "Nenhum arquivo apm.pdef.xml e nenhuma FC conectada. Não é possível completar automaticamente os nomes dos parâmetros." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:509 +msgid "Parameter name can not be empty." +msgstr "O nome do parâmetro não pode estar vazio." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:509 +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:512 +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:520 +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:529 +msgid "Invalid parameter name." +msgstr "Nome de parâmetro inválido." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:512 +msgid "Parameter already exists, edit it instead" +msgstr "O parâmetro já existe, edite-o em vez disso" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:520 +msgid "Parameter name not found in the flight controller." +msgstr "Nome do parâmetro não encontrado no controlador de voo." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:528 +msgid "'{param_name}' not found in the apm.pdef.xml file." +msgstr "'{param_name}' não encontrado no arquivo apm.pdef.xml." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:532 +msgid "Can not add parameter when no FC is connected and no apm.pdef.xml file exists." +msgstr "Não é possível adicionar parâmetro quando não há conexão com o FC e o arquivo apm.pdef.xml não existe." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:557 +msgid "" +"The value for {param_name} {p} should be greater than {p_min}\n" +msgstr "O valor de {param_name} {p} deve ser maior que {p_min}\n" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:558 +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:563 +msgid "Out-of-bounds Value" +msgstr "Valor fora dos limites" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:559 +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:564 +msgid "Use out-of-bounds value?" +msgstr "Usar valor fora dos limites?" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:562 +msgid "" +"The value for {param_name} {p} should be smaller than {p_max}\n" +msgstr "O valor de {param_name} {p} deve ser menor que {p_max}\n" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:568 +msgid "The value for {param_name} must be a valid float." +msgstr "O valor para {param_name} deve ser um float válido." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:569 +msgid "Invalid Value" +msgstr "Valor inválido" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:573 +msgid "Parameter %s changed, will later ask if change(s) should be saved to file." +msgstr "Parâmetro %s alterado, perguntará mais tarde se a(s) alteração(ões) devem ser salvas no arquivo." + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:589 +msgid "Parameter %s not found in the %s file %s: %s" +msgstr "Parâmetro %s não encontrado no arquivo %s %s: %s" + +#: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:593 +msgid "Parameter %s change reason changed from %s to %s, will later ask if change(s) should be saved to file." +msgstr "Motivo da alteração do parâmetro %s mudou de %s para %s, perguntará mais tarde se a(s) alteração(ões) devem ser salvas no arquivo." + +#: MethodicConfigurator/frontend_tkinter_template_overview.py:49 +msgid "Amilcar Lucas's - ArduPilot methodic configurator {} - Template Overview and selection" +msgstr "Configurador metódico do ArduPilot {} por Amilcar Lucas - Sumário de templates e seleção de modelos" + +#: MethodicConfigurator/frontend_tkinter_template_overview.py:53 +msgid "Please double-click the template below that most resembles your own vehicle components" +msgstr "Por favor, clique duas vezes no modelo abaixo que mais se assemelha aos componentes do seu próprio veículo" + +#: MethodicConfigurator/frontend_tkinter_template_overview.py:157 +msgid "ArduPilot methodic configurator is a GUI-based tool designed to simplify the management and visualization of ArduPilot parameters. It enables users to browse through various vehicle templates, edit parameter files, and apply changes directly to the flight controller. The tool is built to semi-automate the configuration process of ArduPilot for drones by providing a clear and intuitive interface for parameter management." +msgstr "O configurador metódico do ArduPilot é uma GUI projetada para simplificar o gerenciamento e a visualização dos parâmetros do ArduPilot. Ele permite aos usuários navegar por vários modelos de veículos, editar arquivos de parâmetros e aplicar alterações diretamente ao controlador de voo. A ferramenta foi construída para semi-automatizar o processo de configuração do ArduPilot para drones, fornecendo uma interface clara e intuitiva para gerenciamento de parâmetros." + diff --git a/MethodicConfigurator/locale/pt/LC_MESSAGES/extract_missing_translations.py b/MethodicConfigurator/locale/pt/LC_MESSAGES/extract_missing_translations.py new file mode 100644 index 0000000..04da9f9 --- /dev/null +++ b/MethodicConfigurator/locale/pt/LC_MESSAGES/extract_missing_translations.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 + +''' +This file is part of Ardupilot methodic configurator. https://github.com/ArduPilot/MethodicConfigurator + +SPDX-FileCopyrightText: 2024 Amilcar do Carmo Lucas + +SPDX-License-Identifier: GPL-3.0-or-later +''' + +import os +import gettext + +def extract_missing_translations(po_file, output_file): + # Set up the translation catalog + language = gettext.translation('messages', localedir=os.path.dirname(po_file), languages=['zh_CN'], fallback=True) + + # Read the .po file entries + with open(po_file, 'r', encoding='utf-8') as f: + lines = f.readlines() + + missing_translations = [] + + # Iterate through lines to find untranslated msgid + for i, line in enumerate(lines): + line = line.strip() + + if line.startswith('msgid'): + msgid = line.split('"')[1] # Get the msgid string + + # Check if the translation exists + if language.gettext(msgid) == msgid: # If translation is the same as msgid, it's missing + missing_translations.append((i, msgid)) + + # Write untranslated msgids along with their indices to the output file + with open(output_file, 'w', encoding='utf-8') as f: + for index, item in missing_translations: + f.write(f'{index}:{item}\n') + +if __name__ == "__main__": + extract_missing_translations('MethodicConfigurator.po', 'missing_translations.txt') diff --git a/MethodicConfigurator/locale/pt/LC_MESSAGES/insert_translations.py b/MethodicConfigurator/locale/pt/LC_MESSAGES/insert_translations.py new file mode 100644 index 0000000..e79dd76 --- /dev/null +++ b/MethodicConfigurator/locale/pt/LC_MESSAGES/insert_translations.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 + +''' +This file is part of Ardupilot methodic configurator. https://github.com/ArduPilot/MethodicConfigurator + +SPDX-FileCopyrightText: 2024 Amilcar do Carmo Lucas + +SPDX-License-Identifier: GPL-3.0-or-later +''' + +def insert_translations(po_file, translations_file, output_file): + with open(po_file, 'r', encoding='utf-8') as f: + lines = f.readlines() + + with open(translations_file, 'r', encoding='utf-8') as f: + translations_data = f.read().strip().split('\n') + + # Prepare to insert translations + translations = [] + for data in translations_data: + index, translation = data.split(':', 1) # Split the index and the translation + translations.append((int(index), translation.strip())) # Store index and translation as tuple + + insertion_offset = 0 # To track how many lines we've inserted + # To insert the translations correctly + for index, translation in translations: + # Adjust index accounting for previously inserted lines + adjusted_index = index + insertion_offset + + # Check if the next line is an empty msgstr + if (adjusted_index + 1 < len(lines) and + lines[adjusted_index + 1].strip() == 'msgstr ""'): + # Overwrite the empty msgstr line + lines[adjusted_index + 1] = f'msgstr "{translation}"\n' + else: + # Otherwise, insert a new msgstr line + lines.insert(adjusted_index + 1, f'msgstr "{translation}"\n') + insertion_offset += 1 # Increment the offset for each insertion + + # Writing back to a new output file + with open(output_file, 'w', encoding='utf-8') as f: + f.writelines(lines) + +if __name__ == "__main__": + insert_translations('MethodicConfigurator.po', 'translations.txt', 'updated_MethodicConfigurator.po') diff --git a/MethodicConfigurator/locale/zh_CN/LC_MESSAGES/MethodicConfigurator.mo b/MethodicConfigurator/locale/zh_CN/LC_MESSAGES/MethodicConfigurator.mo index de52eb101e6a370d9bf8481cb76d35e97ee03517..4d03f40b8f85d3611b24cf3e2bbf65d003b77b62 100644 GIT binary patch literal 13046 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 delta 175 zcmeyC+QwRcPl#nI0}!wPu?!H~05K~N#{e-16acX(5ElZm5)iiou@Mlj0%99R28O#p z8YC~p#K52kqz!, 2024. # msgid "" @@ -1645,7 +1645,7 @@ msgstr "将参数 %s 重命名为 %s" #: MethodicConfigurator/frontend_tkinter_parameter_editor_table.py:179 msgid "" "The parameter '{old_name}' was renamed to '{new_name}'.\n" -"to follow the flight controller connection defined in the component editor window." +"to obey the flight controller connection defined in the component editor window." msgstr "" "参数 '{old_name}' 已重命名为 '{new_name}'。\n" "以遵循组件编辑器窗口中定义的飞行控制器连接。" diff --git a/windows/ardupilot_methodic_configurator.iss b/windows/ardupilot_methodic_configurator.iss index 7dcb4f7..a40ae4d 100644 --- a/windows/ardupilot_methodic_configurator.iss +++ b/windows/ardupilot_methodic_configurator.iss @@ -51,6 +51,7 @@ Type: filesandordirs; Name: "{app}\_internal\MethodicConfigurator\ArduPlane_conf [Languages] Name: "en"; MessagesFile: "compiler:Default.isl" Name: "zh_CN"; MessagesFile: "compiler:Languages\ChineseSimplified.isl" +Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl" [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}" @@ -74,7 +75,7 @@ Name: "{userappdata}\.ardupilot_methodic_configurator\vehicles"; Flags: uninsnev [Icons] Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; WorkingDir: "{userappdata}\.ardupilot_methodic_configurator"; Tasks: desktopicon; IconFilename: "{app}\MethodicConfigurator.ico"; Languages: en -Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; WorkingDir: "{userappdata}\.ardupilot_methodic_configurator"; Tasks: desktopicon; IconFilename: "{app}\MethodicConfigurator.ico"; Parameters: "--language {language}"; Languages: zh_CN +Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; WorkingDir: "{userappdata}\.ardupilot_methodic_configurator"; Tasks: desktopicon; IconFilename: "{app}\MethodicConfigurator.ico"; Parameters: "--language {language}"; Languages: zh_CN pt Name: "{group}\Documentation"; Filename: "https://github.com/ArduPilot/MethodicConfigurator/blob/master/USERMANUAL.md" Name: "{group}\Vehicle Templates"; Filename: "{commonappdata}\.ardupilot_methodic_configurator\vehicle_templates" Name: "{group}\ArduPilot MethodicConfigurator Forum"; Filename: "https://discuss.ardupilot.org/t/new-ardupilot-methodic-configurator-gui/115038/"