diff --git a/tuttle/i18n.py b/tuttle/i18n.py index a8b26796..e9aaacfd 100644 --- a/tuttle/i18n.py +++ b/tuttle/i18n.py @@ -23,7 +23,7 @@ # Region whose conventions format numbers, dates and money in a language. # Languages not listed use the language's own defaults. -_FORMAT_LOCALES = {"en": "en_US", "de": "de_DE", "es": "es_ES"} +_FORMAT_LOCALES = {"en": "en_US", "de": "de_DE", "es": "es_ES", "pt": "pt_PT"} _current: ContextVar[str] = ContextVar("language", default=SOURCE_LANGUAGE) diff --git a/tuttle/locales/pt/LC_MESSAGES/messages.po b/tuttle/locales/pt/LC_MESSAGES/messages.po new file mode 100644 index 00000000..741d1732 --- /dev/null +++ b/tuttle/locales/pt/LC_MESSAGES/messages.po @@ -0,0 +1,292 @@ +# Portuguese translations for Tuttle. +# Copyright (C) 2026 Tuttle contributors +# This file is distributed under the same license as the Tuttle project. +# FIRST AUTHOR , 2026. +# +msgid "" +msgstr "" +"Project-Id-Version: Tuttle VERSION\n" +"Report-Msgid-Bugs-To: https://github.com/tuttle-dev/tuttle/issues\n" +"POT-Creation-Date: 2026-10-11 12:02+0200\n" +"PO-Revision-Date: 2026-10-11 12:02+0200\n" +"Last-Translator: FULL NAME \n" +"Language: pt\n" +"Language-Team: pt \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +msgid "Deposit Invoice" +msgstr "Fatura de adiantamento" + +msgid "Final Invoice" +msgstr "Fatura final" + +msgid "Invoice No." +msgstr "Fatura n.º" + +msgid "In respect of" +msgstr "Referente a" + +msgid "Payment milestone" +msgstr "Parcela de pagamento" + +msgid "Contract total" +msgstr "Valor total do contrato" + +msgid "Gross" +msgstr "Bruto" + +msgid "less deposit per invoice no." +msgstr "menos adiantamento conforme fatura n.º" + +msgid "VAT included therein" +msgstr "IVA incluído" + +msgid "Remaining balance" +msgstr "Saldo restante" + +msgid "Deposit due" +msgstr "Adiantamento a pagar" + +msgid "Total Due" +msgstr "Total a pagar" + +msgid "Please settle the outstanding amount by the new due date." +msgstr "Solicitamos o pagamento do valor em aberto até à nova data de vencimento." + +msgid "This is a partial payment (deposit invoice) towards the contract total." +msgstr "" +"Trata-se de um pagamento parcial (fatura de adiantamento) sobre o valor " +"total do contrato." + +msgid "Thank you for your business." +msgstr "Obrigado pela colaboração." + +msgid "Billed to" +msgstr "Faturado a" + +msgid "Original Invoice" +msgstr "Fatura original" + +msgid "Document type" +msgstr "Tipo de documento" + +msgid "Date" +msgstr "Data" + +msgid "Due Date" +msgstr "Data de vencimento" + +msgid "Description" +msgstr "Descrição" + +msgid "Qty" +msgstr "Qtd." + +msgid "Unit" +msgstr "Unidade" + +msgid "Unit Price" +msgstr "Preço unitário" + +msgid "VAT" +msgstr "IVA" + +msgid "Subtotal" +msgstr "Subtotal" + +msgid "Payment" +msgstr "Pagamento" + +msgid "Account" +msgstr "Titular da conta" + +msgid "Payment QR code" +msgstr "Código QR de pagamento" + +msgid "Total fee" +msgstr "Honorários totais" + +msgid "Reminder Fee" +msgstr "Taxa de lembrete" + +msgid "" +"Not subject to German VAT — the place of supply is the recipient's " +"country (§ 3a (2) UStG / Art. 44 VAT Directive)." +msgstr "" +"Não sujeito ao IVA alemão — o local da prestação é o país do " +"destinatário (§ 3a (2) UStG / art. 44 da Diretiva IVA)." + +msgid "Tel." +msgstr "Tel." + +#, python-brace-format +msgid "Timesheet {title}" +msgstr "Folha de horas {title}" + +msgid "Client" +msgstr "Cliente" + +msgid "Prepared by" +msgstr "Elaborado por" + +msgid "Project" +msgstr "Projeto" + +msgid "Period" +msgstr "Período" + +msgid "Issued" +msgstr "Data de emissão" + +msgid "Time" +msgstr "Horário" + +msgid "Notes" +msgstr "Notas" + +msgid "Hours" +msgstr "Horas" + +msgid "Total" +msgstr "Total" + +#, python-brace-format +msgid "Item {n}" +msgstr "Item {n}" + +msgid "Not subject to VAT" +msgstr "Não sujeito a IVA" + +#, python-brace-format +msgid "Net {days} day" +msgid_plural "Net {days} days" +msgstr[0] "Pagamento a {days} dia" +msgstr[1] "Pagamento a {days} dias" + +#, python-brace-format +msgid "Invoice {number}" +msgstr "Fatura {number}" + +#, python-brace-format +msgid "" +"Dear {name},\n" +"\n" +"Please find attached the invoice for {project}.\n" +"\n" +"Best regards,\n" +"{sender}" +msgstr "" +"Prezado(a) {name},\n" +"\n" +"Segue em anexo a fatura referente ao projeto {project}.\n" +"\n" +"Com os melhores cumprimentos,\n" +"{sender}" + +#, python-brace-format +msgid "Payment Reminder: Invoice {number}" +msgstr "Lembrete de pagamento: fatura {number}" + +#, python-brace-format +msgid "" +"Dear {name},\n" +"\n" +"This is a reminder regarding the outstanding invoice {number} for " +"{project}.\n" +"\n" +"Please find attached the payment reminder.\n" +"\n" +"Best regards,\n" +"{sender}" +msgstr "" +"Prezado(a) {name},\n" +"\n" +"Esta é uma notificação referente à fatura {number} do projeto " +"{project}, ainda em aberto.\n" +"\n" +"Segue em anexo o lembrete de pagamento.\n" +"\n" +"Com os melhores cumprimentos,\n" +"{sender}" + +#, python-brace-format +msgid "" +"Dear {name},\n" +"\n" +"This is a 2nd reminder regarding the outstanding invoice {number} for " +"{project}.\n" +"\n" +"Please find attached the payment reminder.\n" +"\n" +"Best regards,\n" +"{sender}" +msgstr "" +"Prezado(a) {name},\n" +"\n" +"Esta é a segunda notificação referente à fatura {number} do projeto " +"{project}, ainda em aberto.\n" +"\n" +"Segue em anexo o lembrete de pagamento.\n" +"\n" +"Com os melhores cumprimentos,\n" +"{sender}" + +#, python-brace-format +msgid "" +"Dear {name},\n" +"\n" +"This is a 3rd reminder regarding the outstanding invoice {number} for " +"{project}.\n" +"\n" +"Please find attached the payment reminder.\n" +"\n" +"Best regards,\n" +"{sender}" +msgstr "" +"Prezado(a) {name},\n" +"\n" +"Esta é a terceira notificação referente à fatura {number} do projeto " +"{project}, ainda em aberto.\n" +"\n" +"Segue em anexo o lembrete de pagamento.\n" +"\n" +"Com os melhores cumprimentos,\n" +"{sender}" + +msgid "hour" +msgid_plural "hours" +msgstr[0] "hora" +msgstr[1] "horas" + +msgid "day" +msgid_plural "days" +msgstr[0] "dia" +msgstr[1] "dias" + +msgid "piece" +msgid_plural "pieces" +msgstr[0] "peça" +msgstr[1] "peças" + +msgid "flat" +msgstr "forfait" + +msgid "fixed price" +msgstr "preço fixo" + +#, python-brace-format +msgid "{n}. Payment Reminder" +msgstr "{n}.º lembrete de pagamento" + +msgid "VAT No." +msgstr "N.º de IVA" + +msgid "Tax No." +msgstr "NIF" + +msgid "All day" +msgstr "Dia inteiro"