From 34609b9e18c3ee59176a307d8eab7410b5fe4db0 Mon Sep 17 00:00:00 2001 From: Andre Andrade Date: Mon, 19 Oct 2026 23:17:00 -0300 Subject: [PATCH] Add Brazilian Portuguese (pt_BR) translations --- locales/pt_BR.mo | Bin 0 -> 7296 bytes locales/pt_BR.po | 319 ++++++++++++++++++ .../js/modules/ReservationQuestionWidget.js | 2 +- templates/reservation_question.html.twig | 1 + 4 files changed, 321 insertions(+), 1 deletion(-) create mode 100644 locales/pt_BR.mo create mode 100644 locales/pt_BR.po diff --git a/locales/pt_BR.mo b/locales/pt_BR.mo new file mode 100644 index 0000000000000000000000000000000000000000..43bdcf4fce85631a8ca696fafeb4882c778c1cd5 GIT binary patch literal 7296 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 literal 0 HcmV?d00001 diff --git a/locales/pt_BR.po b/locales/pt_BR.po new file mode 100644 index 0000000..916df51 --- /dev/null +++ b/locales/pt_BR.po @@ -0,0 +1,319 @@ +msgid "" +msgstr "" +"Project-Id-Version: advancedforms\n" +"PO-Revision-Date: 2026-09-29 08:30-0300\n" +"Last-Translator: andrefelipeufcg \n" +"Language-Team: pt_BR\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +msgid "This slot is no longer available." +msgstr "Este horário não está mais disponível." + +msgid "Advanced forms" +msgstr "Formulários avançados" + +msgid "Pre-reservation" +msgstr "Pré-reserva" + +msgid "Select a question..." +msgstr "Selecione uma pergunta..." + +msgid "The pre-reservation could not be created: no identifiable requester." +msgstr "A pré-reserva não pôde ser criada: solicitante não identificável." + +msgid "The pre-reservation could not be created: the selected item is not allowed." +msgstr "A pré-reserva não pôde ser criada: o item selecionado não é permitido." + +msgid "No pre-reservation" +msgstr "Nenhuma pré-reserva" + +msgid "Answer from a specific question" +msgstr "Resposta de uma pergunta específica" + +msgid "Answer to last \"Material reservation\" question" +msgstr "Resposta da última pergunta de \"Reserva de Material\"" + +msgid "All valid \"Material reservation\" answers" +msgstr "Todas as respostas válidas de \"Reserva de Material\"" + +msgid "New pre-reservation request" +msgstr "Nova solicitação de pré-reserva" + +msgid "Pre-reservation request approved" +msgstr "Solicitação de pré-reserva aprovada" + +msgid "Pre-reservation request refused" +msgstr "Solicitação de pré-reserva recusada" + +msgid "Reservation slot no longer available" +msgstr "O horário de reserva não está mais disponível" + +msgid "Notification reason" +msgstr "Motivo da notificação" + +msgid "Reservation start date" +msgstr "Data de início da reserva" + +msgid "Reservation end date" +msgstr "Data de término da reserva" + +msgid "Validation comment" +msgstr "Comentário de validação" + +msgid "Ticket title" +msgstr "Título do chamado" + +msgid "Ticket URL" +msgstr "URL do chamado" + +msgid "Advanced" +msgstr "Avançado" + +msgid "Hidden" +msgstr "Oculto" + +msgid "Hidden address question type" +msgstr "Tipo de pergunta oculta" + +msgid "This question type will insert some hidden data into the form." +msgstr "Este tipo de pergunta inserirá alguns dados ocultos no formulário." + +msgid "Hostname" +msgstr "Nome do host" + +msgid "Hostname question type" +msgstr "Tipo de pergunta de Nome do host" + +msgid "This question type will automatically register the user's hostname." +msgstr "Este tipo de pergunta registrará automaticamente o nome do host do usuário." + +msgid "Ip address" +msgstr "Endereço IP" + +msgid "IP address question type" +msgstr "Tipo de pergunta de Endereço IP" + +msgid "This question type will automatically register the user's ip address." +msgstr "Este tipo de pergunta registrará automaticamente o endereço IP do usuário." + +msgid "LDAP select" +msgstr "Seleção LDAP" + +msgid "LDAP select question type" +msgstr "Tipo de pergunta de seleção LDAP" + +msgid "Select some data from a LDAP directory." +msgstr "Selecione alguns dados de um diretório LDAP." + +msgid "Material reservation" +msgstr "Reserva de material" + +msgid "Select an item to reserve" +msgstr "Selecione um item para reservar" + +msgid "Show availability calendar" +msgstr "Exibir calendário de disponibilidade" + +msgid "Reserved" +msgstr "Reservado" + +msgid "Unexpected value" +msgstr "Valor inesperado" + +msgid "Please select an item and both a start and end date." +msgstr "Por favor, selecione um item e uma data de início e de término." + +msgid "The end date must be after the start date." +msgstr "A data de término deve ser após a data de início." + +msgid "The end date must be after the start date" +msgstr "A data de término deve ser após a data de início" + +msgid "Material reservation question type" +msgstr "Tipo de pergunta de Reserva de Material" + +msgid "Allow users to reserve equipment from a form." +msgstr "Permitir que os usuários reservem equipamentos de um formulário." + +msgid "the value is not valid" +msgstr "o valor não é válido" + +msgid "the value is not a number" +msgstr "o valor não é um número" + +msgid "Table" +msgstr "Tabela" + +msgid "Row %1\$s: the column \"%2\$s\" is required." +msgstr "Linha %1\$s: a coluna \"%2\$s\" é obrigatória." + +msgid "Row %1\$s: the column \"%2\$s\" is invalid: %3\$s" +msgstr "Linha %1\$s: a coluna \"%2\$s\" é inválida: %3\$s" + +msgid "Row %1\$s: the column \"%2\$s\" does not match the expected format." +msgstr "Linha %1\$s: a coluna \"%2\$s\" não corresponde ao formato esperado." + +msgid "Table question type" +msgstr "Tipo de pergunta de Tabela" + +msgid "Allow users to fill in tabular data with configurable columns." +msgstr "Permitir que os usuários preencham dados tabulares com colunas configuráveis." + +msgid "Tree Cascade Dropdown" +msgstr "Lista Suspensa em Cascata" + +msgid "Enable tree cascade dropdown question type (recursive dropdown for hierarchical data)" +msgstr "Ativar tipo de pergunta de lista suspensa em cascata" + +msgid "Advanced forms plugin configuration" +msgstr "Configuração do plugin Formulários Avançados" + +msgid "Require technician approval" +msgstr "Exigir aprovação de técnico" + +msgid "Data from LDAP directory" +msgstr "Dados do diretório LDAP" + +msgid "Allowed equipment types" +msgstr "Tipos de equipamentos permitidos" + +msgid "All reservable types" +msgstr "Todos os tipos reserváveis" + +msgid "Whether a technician must approve the reservation before it is confirmed is configured on the destination that uses this question, under" +msgstr "Se um técnico deve aprovar a reserva antes que ela seja confirmada é configurado no destino que usa esta pergunta, sob" + +msgid "Define columns below" +msgstr "Defina as colunas abaixo" + +msgid "Configure table columns" +msgstr "Configurar colunas da tabela" + +msgid "Columns" +msgstr "Colunas" + +msgid "Column name" +msgstr "Nome da coluna" + +msgid "Select a type" +msgstr "Selecione um tipo" + +msgid "Required column" +msgstr "Coluna obrigatória" + +msgid "Remove column" +msgstr "Remover coluna" + +msgid "Validation pattern" +msgstr "Padrão de validação" + +msgid "Add column" +msgstr "Adicionar coluna" + +msgid "Start date" +msgstr "Data de início" + +msgid "End date" +msgstr "Data de término" + +msgid "Please fill in all required columns." +msgstr "Por favor, preencha todas as colunas obrigatórias." + +msgid "This value does not match the expected format." +msgstr "Este valor não corresponde ao formato esperado." + +msgid "Select a value" +msgstr "Selecione um valor" + +msgid "Remove row" +msgstr "Remover linha" + +msgid "Add a row" +msgstr "Adicionar uma linha" + +msgid "Pending validation" +msgstr "Aguardando validação" + +msgid "Approved" +msgstr "Aprovado" + +msgid "Refused" +msgstr "Recusado" + +msgid "Canceled" +msgstr "Cancelado" + +msgid "Reservation confirmed automatically" +msgstr "Reserva confirmada automaticamente" + +msgid "This slot is no longer available. Please submit a new reservation request." +msgstr "Este horário não está mais disponível. Por favor, envie uma nova solicitação de reserva." + +msgid "Comment (optional)" +msgstr "Comentário (opcional)" + +msgid "Approve" +msgstr "Aprovar" + +msgid "Refuse" +msgstr "Recusar" + +msgid "This slot is no longer available." +msgstr "Este horário não está mais disponível." + +msgid "Pre-reservation" +msgstr "Pré-reserva" + +msgid "The pre-reservation could not be created: no identifiable requester." +msgstr "Não foi possível criar a pré-reserva: não foi possível identificar o solicitante." + +msgid "The pre-reservation could not be created: the selected item is not allowed." +msgstr "Não foi possível criar a pré-reserva: o item selecionado não é permitido." + +msgid "No pre-reservation" +msgstr "Sem pré-reserva" + +msgid "Answer from a specific question" +msgstr "Resposta de uma pergunta específica" + +msgid "Answer to last \"Material reservation\" question" +msgstr "Resposta à última pergunta de \"Reserva de material\"" + +msgid "All valid \"Material reservation\" answers" +msgstr "Todas as respostas válidas de \"Reserva de material\"" + +msgid "New pre-reservation request" +msgstr "Nova solicitação de pré-reserva" + +msgid "Pre-reservation request approved" +msgstr "Solicitação de pré-reserva aprovada" + +msgid "Pre-reservation request refused" +msgstr "Solicitação de pré-reserva recusada" + +msgid "Reservation slot no longer available" +msgstr "O horário da reserva não está mais disponível" + +msgid "Could not check availability, please try again" +msgstr "Não foi possível verificar a disponibilidade. Tente novamente" + +msgid "Existing reservations for this item" +msgstr "Reservas existentes para este item" + +msgid "This slot is available" +msgstr "Este horário está disponível" + +msgid "An error occurred" +msgstr "Ocorreu um erro" + +msgid "Row %1$s: the column \"%2$s\" is required." +msgstr "Linha %1$s: a coluna \"%2$s\" é obrigatória." + +msgid "Row %1$s: the column \"%2$s\" is invalid: %3$s" +msgstr "Linha %1$s: a coluna \"%2$s\" é inválida: %3$s" + +msgid "Row %1$s: the column \"%2$s\" does not match the expected format." +msgstr "Linha %1$s: a coluna \"%2$s\" não corresponde ao formato esperado." diff --git a/public/js/modules/ReservationQuestionWidget.js b/public/js/modules/ReservationQuestionWidget.js index 7409481..f838032 100644 --- a/public/js/modules/ReservationQuestionWidget.js +++ b/public/js/modules/ReservationQuestionWidget.js @@ -75,7 +75,7 @@ export class ReservationQuestionWidget { $select.select2({ width: '100%', allowClear: true, - placeholder: __('Select an item to reserve', 'advancedforms'), + placeholder: this.#root.dataset.itemPlaceholder || __('Select an item to reserve', 'advancedforms'), ajax: { url: `${this.#endpoint_url}/ReservableItems`, type: 'POST', diff --git a/templates/reservation_question.html.twig b/templates/reservation_question.html.twig index 933febd..17ce666 100644 --- a/templates/reservation_question.html.twig +++ b/templates/reservation_question.html.twig @@ -36,6 +36,7 @@ data-input-name="{{ input_name }}" data-allowed-itemtypes="{{ allowed_itemtypes|json_encode }}" {% if show_calendar %}data-calendar-css="{{ css_path('lib/fullcalendar.css') }}" data-now="{{ now }}"{% endif %} + data-item-placeholder="{{ __('Select an item to reserve', 'advancedforms')|e('html_attr') }}" >