From f45d7f2897b8029ac00ef7ec6291310355c46575 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 16 Aug 2022 09:39:12 +1000 Subject: [PATCH 1/5] Psalm cleanup --- app/Services/PdfMaker/Design.php | 2 -- app/Services/Quote/ConvertQuote.php | 1 - app/Services/Quote/QuoteService.php | 3 ++- app/Services/Subscription/SubscriptionService.php | 2 -- app/Transformers/CompanyUserTransformer.php | 4 ++-- app/Transformers/CreditTransformer.php | 1 - app/Transformers/RecurringInvoiceTransformer.php | 1 - psalm.xml | 10 ++++++++++ 8 files changed, 14 insertions(+), 10 deletions(-) diff --git a/app/Services/PdfMaker/Design.php b/app/Services/PdfMaker/Design.php index b3b196d00de4..dec4e6518dbf 100644 --- a/app/Services/PdfMaker/Design.php +++ b/app/Services/PdfMaker/Design.php @@ -50,10 +50,8 @@ class Design extends BaseDesign /** Construct options */ public $options; - /** @var Invoice[] */ public $invoices; - /** @var Payment[] */ public $payments; public $settings_object; diff --git a/app/Services/Quote/ConvertQuote.php b/app/Services/Quote/ConvertQuote.php index 7d8347e79f18..e3ee0ebab9c5 100644 --- a/app/Services/Quote/ConvertQuote.php +++ b/app/Services/Quote/ConvertQuote.php @@ -80,7 +80,6 @@ class ConvertQuote /** * Only create the invitations that are defined on the quote. * - * @return Invoice $invoice */ private function createConversionInvitations($invoice, $quote) { diff --git a/app/Services/Quote/QuoteService.php b/app/Services/Quote/QuoteService.php index 8a8174c3ea4c..3a069ee1c75f 100644 --- a/app/Services/Quote/QuoteService.php +++ b/app/Services/Quote/QuoteService.php @@ -129,7 +129,8 @@ class QuoteService /** * Sometimes we need to refresh the * PDF when it is updated etc. - * @return InvoiceService + * + * @return QuoteService */ public function touchPdf($force = false) { diff --git a/app/Services/Subscription/SubscriptionService.php b/app/Services/Subscription/SubscriptionService.php index c4f3ff7bc260..7f74fcb9be46 100644 --- a/app/Services/Subscription/SubscriptionService.php +++ b/app/Services/Subscription/SubscriptionService.php @@ -840,7 +840,6 @@ class SubscriptionService * Get the single charge products for the * subscription * - * @return ?Product Collection */ public function products() { @@ -859,7 +858,6 @@ class SubscriptionService * Get the recurring products for the * subscription * - * @return ?Product Collection */ public function recurring_products() { diff --git a/app/Transformers/CompanyUserTransformer.php b/app/Transformers/CompanyUserTransformer.php index 720a247f7e30..82295aa3ee83 100644 --- a/app/Transformers/CompanyUserTransformer.php +++ b/app/Transformers/CompanyUserTransformer.php @@ -42,8 +42,8 @@ class CompanyUserTransformer extends EntityTransformer return [ 'permissions' => $company_user->permissions ?: '', - 'notifications' => (object) $company_user->notifications ?: $blank_obj, - 'settings' => (object) $company_user->settings ?: $blank_obj, + 'notifications' => $company_user->notifications ? (object) $company_user->notifications : $blank_obj, + 'settings' => $company_user->settings ? (object) $company_user->settings : $blank_obj, 'is_owner' => (bool) $company_user->is_owner, 'is_admin' => (bool) $company_user->is_admin, 'is_locked' => (bool) $company_user->is_locked, diff --git a/app/Transformers/CreditTransformer.php b/app/Transformers/CreditTransformer.php index 42e247d1c35a..6dc1b4ee9c8f 100644 --- a/app/Transformers/CreditTransformer.php +++ b/app/Transformers/CreditTransformer.php @@ -80,7 +80,6 @@ class CreditTransformer extends EntityTransformer 'amount' => (float) $credit->amount, 'balance' => (float) $credit->balance, 'client_id' => (string) $this->encodePrimaryKey($credit->client_id), - 'vendor_id' => (string) $this->encodePrimaryKey($credit->vendor_id), 'status_id' => (string) ($credit->status_id ?: 1), 'design_id' => (string) $this->encodePrimaryKey($credit->design_id), 'created_at' => (int) $credit->created_at, diff --git a/app/Transformers/RecurringInvoiceTransformer.php b/app/Transformers/RecurringInvoiceTransformer.php index b5db046192a0..57350a213238 100644 --- a/app/Transformers/RecurringInvoiceTransformer.php +++ b/app/Transformers/RecurringInvoiceTransformer.php @@ -137,7 +137,6 @@ class RecurringInvoiceTransformer extends EntityTransformer 'due_date_days' => (string) $invoice->due_date_days ?: '', 'paid_to_date' => (float) $invoice->paid_to_date, 'subscription_id' => (string) $this->encodePrimaryKey($invoice->subscription_id), - 'recurring_dates' => (array) [], ]; if (request()->has('show_dates') && request()->query('show_dates') == 'true') { diff --git a/psalm.xml b/psalm.xml index 52f15a658480..629a6cb49156 100644 --- a/psalm.xml +++ b/psalm.xml @@ -57,6 +57,16 @@ + + + + + + + + + + From 0c5c4c11884cd16406f551f00660d2aed286f3c7 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 16 Aug 2022 17:13:56 +1000 Subject: [PATCH 2/5] Fixes for zoho imports --- app/Import/Transformer/BaseTransformer.php | 1 + app/Import/Transformer/Zoho/ClientTransformer.php | 6 ++++-- app/Import/Transformer/Zoho/InvoiceTransformer.php | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/Import/Transformer/BaseTransformer.php b/app/Import/Transformer/BaseTransformer.php index ee9c47b537de..6072feacbb09 100644 --- a/app/Import/Transformer/BaseTransformer.php +++ b/app/Import/Transformer/BaseTransformer.php @@ -65,6 +65,7 @@ class BaseTransformer public function getClient($client_name, $client_email) { + if (! empty($client_name)) { $client_id_search = $this->company ->clients() diff --git a/app/Import/Transformer/Zoho/ClientTransformer.php b/app/Import/Transformer/Zoho/ClientTransformer.php index 617048ef8712..ef423e54fd53 100644 --- a/app/Import/Transformer/Zoho/ClientTransformer.php +++ b/app/Import/Transformer/Zoho/ClientTransformer.php @@ -38,13 +38,15 @@ class ClientTransformer extends BaseTransformer $settings->payment_terms = $data['Payment Terms']; } + $client_id_proxy = array_key_exists('Customer ID', $data) ? 'Customer ID' : 'Primary Contact ID'; + return [ 'company_id' => $this->company->id, - 'name' => $this->getString($data, 'Company Name'), + 'name' => $this->getString($data, 'Display Name'), 'phone' => $this->getString($data, 'Phone'), 'private_notes' => $this->getString($data, 'Notes'), 'website' => $this->getString($data, 'Website'), - 'id_number' => $this->getString($data, 'Customer ID'), + 'id_number' => $this->getString($data, $client_id_proxy), 'address1' => $this->getString($data, 'Billing Address'), 'address2' => $this->getString($data, 'Billing Street2'), 'city' => $this->getString($data, 'Billing City'), diff --git a/app/Import/Transformer/Zoho/InvoiceTransformer.php b/app/Import/Transformer/Zoho/InvoiceTransformer.php index ea29d6c825c4..f1f45c976349 100644 --- a/app/Import/Transformer/Zoho/InvoiceTransformer.php +++ b/app/Import/Transformer/Zoho/InvoiceTransformer.php @@ -40,7 +40,7 @@ class InvoiceTransformer extends BaseTransformer $transformed = [ 'company_id' => $this->company->id, - 'client_id' => $this->getClient($this->getString($invoice_data, 'Customer ID'), null), + 'client_id' => $this->getClient($this->getString($invoice_data, 'Customer ID'), $this->getString($invoice_data, 'Primary Contact EmailID')), 'number' => $this->getString($invoice_data, 'Invoice Number'), 'date' => isset($invoice_data['Invoice Date']) ? date('Y-m-d', strtotime($invoice_data['Invoice Date'])) : null, 'due_date' => isset($invoice_data['Due Date']) ? date('Y-m-d', strtotime($invoice_data['Due Date'])) : null, From 724dcec2cc115ca049da908ceeff363925ca1946 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 17 Aug 2022 08:50:02 +1000 Subject: [PATCH 3/5] Improve zoho imports --- app/Import/Transformer/Zoho/InvoiceTransformer.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/Import/Transformer/Zoho/InvoiceTransformer.php b/app/Import/Transformer/Zoho/InvoiceTransformer.php index f1f45c976349..90f7f28c7bd5 100644 --- a/app/Import/Transformer/Zoho/InvoiceTransformer.php +++ b/app/Import/Transformer/Zoho/InvoiceTransformer.php @@ -51,14 +51,19 @@ class InvoiceTransformer extends BaseTransformer 'balance' => $this->getFloat($invoice_data, 'Balance'), 'status_id' => $invoiceStatusMap[$status = strtolower($this->getString($invoice_data, 'Invoice Status'))] ?? Invoice::STATUS_SENT, + 'terms' => $this->getString($invoice_data, 'Terms & Conditions'), + // 'viewed' => $status === 'viewed', ]; $line_items = []; foreach ($line_items_data as $record) { + + $item_notes_key = array_key_exists('Item Description', $record) ? 'Item Description' : 'Item Desc'; + $line_items[] = [ 'product_key' => $this->getString($record, 'Item Name'), - 'notes' => $this->getString($record, 'Item Description'), + 'notes' => $this->getString($record, $item_notes_key), 'cost' => round($this->getFloat($record, 'Item Price'), 2), 'quantity' => $this->getFloat($record, 'Quantity'), 'discount' => $this->getString($record, 'Discount Amount'), From 72ad8915e99344d7d85008c704491fecdbe8cbdd Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 17 Aug 2022 09:20:27 +1000 Subject: [PATCH 4/5] Portuguese translations updated --- app/Console/Commands/SendRemindersCron.php | 2 +- lang/en/texts.php | 37 + lang/pt_BR/texts.php | 100 +- lang/pt_PT/texts.php | 1078 +++++++++++--------- 4 files changed, 723 insertions(+), 494 deletions(-) diff --git a/app/Console/Commands/SendRemindersCron.php b/app/Console/Commands/SendRemindersCron.php index cdbdad6b37ab..81e20ec819b3 100644 --- a/app/Console/Commands/SendRemindersCron.php +++ b/app/Console/Commands/SendRemindersCron.php @@ -166,7 +166,7 @@ class SendRemindersCron extends Command $invoice_item = new InvoiceItem; $invoice_item->type_id = '5'; - $invoice_item->product_key = trans('texts.fee'); + $invoice_item->product_key = ctrans('texts.fee'); $invoice_item->notes = ctrans('texts.late_fee_added', ['date' => $this->translateDate(now()->startOfDay(), $invoice->client->date_format(), $invoice->client->locale())]); $invoice_item->quantity = 1; $invoice_item->cost = $fee; diff --git a/lang/en/texts.php b/lang/en/texts.php index 184dd7b7a385..52e3731eb41e 100644 --- a/lang/en/texts.php +++ b/lang/en/texts.php @@ -4730,6 +4730,43 @@ $LANG = array( 'converted_to_expenses' => 'Successfully converted to expenses', 'entity_removed' => 'This document has been removed, please contact the vendor for further information', 'entity_removed_title' => 'Document no longer available', + 'field' => 'Field', + 'period' => 'Period', + 'fields_per_row' => 'Fields Per Row', + 'total_active_invoices' => 'Active Invoices', + 'total_outstanding_invoices' => 'Outstanding Invoices', + 'total_completed_payments' => 'Completed Payments', + 'total_refunded_payments' => 'Refunded Payments', + 'total_active_quotes' => 'Active Quotes', + 'total_approved_quotes' => 'Approved Quotes', + 'total_unapproved_quotes' => 'Unapproved Quotes', + 'total_logged_tasks' => 'Logged Tasks', + 'total_invoiced_tasks' => 'Invoiced Tasks', + 'total_paid_tasks' => 'Paid Tasks', + 'total_logged_expenses' => 'Logged Expenses', + 'total_pending_expenses' => 'Pending Expenses', + 'total_invoiced_expenses' => 'Invoiced Expenses', + 'total_invoice_paid_expenses' => 'Invoice Paid Expenses', + 'vendor_portal' => 'Vendor Portal', + 'send_code' => 'Send Code', + 'save_to_upload_documents' => 'Save the record to upload documents', + 'expense_tax_rates' => 'Expense Tax Rates', + 'invoice_item_tax_rates' => 'Invoice Item Tax Rates', + 'verified_phone_number' => 'Successfully verified phone number', + 'code_was_sent' => 'A code has been sent via SMS', + 'resend' => 'Resend', + 'verify' => 'Verify', + 'enter_phone_number' => 'Please provide a phone number', + 'invalid_phone_number' => 'Invalid phone number', + 'verify_phone_number' => 'Verify Phone Number', + 'verify_phone_number_help' => 'Please verify your phone number to send emails', + 'merged_clients' => 'Successfully merged clients', + 'merge_into' => 'Merge Into', + 'php81_required' => 'Note: v5.5 requires PHP 8.1', + 'bulk_email_purchase_orders' => 'Email Purchase Orders', + 'bulk_email_invoices' => 'Email Invoices', + 'bulk_email_quotes' => 'Email Quotes', + 'bulk_email_credits' => 'Email Credits', ); return $LANG; diff --git a/lang/pt_BR/texts.php b/lang/pt_BR/texts.php index c62b4ae41eec..c86c1591b2f0 100644 --- a/lang/pt_BR/texts.php +++ b/lang/pt_BR/texts.php @@ -200,7 +200,7 @@ $LANG = array( 'removed_logo' => 'Logotipo removido com sucesso', 'sent_message' => 'Mensagem enviada com sucesso', 'invoice_error' => 'Assegure-se de selecionar um cliente e corrigir quaisquer erros', - 'limit_clients' => 'Desculpe, isto irá exceder o limite de :count clientes', + 'limit_clients' => 'Sorry, this will exceed the limit of :count clients. Please upgrade to a paid plan.', 'payment_error' => 'Ocorreu um erro ao processar seu pagamento. Por favor tente novamente mais tarde.', 'registration_required' => 'Favor cadastre-se para enviar uma fatura por email', 'confirmation_required' => 'Por favor confirme seu endereço de email, :link para re-enviar o email de confirmação.', @@ -2241,7 +2241,7 @@ Quando tiver as quantias, volte a esta página de formas de pagamento e clique " 'navigation_variables' => 'Variáveis de Navegação', 'custom_variables' => 'Variáveis Personalizadas', 'invalid_file' => 'Tipo de arquivo inválido', - 'add_documents_to_invoice' => 'Adicionar documentos à fatura', + 'add_documents_to_invoice' => 'Add Documents to Invoice', 'mark_expense_paid' => 'Marcar como pago', 'white_label_license_error' => 'Falha ao validar a licença, verifique storage/logs/laravel-error.log para mais detalhes.', 'plan_price' => 'Preço do Plano', @@ -4628,6 +4628,102 @@ Quando tiver as quantias, volte a esta página de formas de pagamento e clique " 'notification_purchase_order_accepted_subject' => 'Purchase Order :purchase_order was accepted by :vendor', 'notification_purchase_order_accepted' => 'The following vendor :vendor accepted Purchase Order :purchase_order for :amount.', 'amount_received' => 'Amount received', + 'purchase_order_already_expensed' => 'Already converted to an expense.', + 'convert_to_expense' => 'Convert to Expense', + 'add_to_inventory' => 'Add to Inventory', + 'added_purchase_order_to_inventory' => 'Successfully added purchase order to inventory', + 'added_purchase_orders_to_inventory' => 'Successfully added purchase orders to inventory', + 'client_document_upload' => 'Client Document Upload', + 'vendor_document_upload' => 'Vendor Document Upload', + 'vendor_document_upload_help' => 'Enable vendors to upload documents', + 'are_you_enjoying_the_app' => 'Are you enjoying the app?', + 'yes_its_great' => 'Yes, it"s great!', + 'not_so_much' => 'Not so much', + 'would_you_rate_it' => 'Great to hear! Would you like to rate it?', + 'would_you_tell_us_more' => 'Sorry to hear it! Would you like to tell us more?', + 'sure_happy_to' => 'Sure, happy to', + 'no_not_now' => 'No, not now', + 'add' => 'Add', + 'last_sent_template' => 'Last Sent Template', + 'enable_flexible_search' => 'Enable Flexible Search', + 'enable_flexible_search_help' => 'Match non-contiguous characters, ie. "ct" matches "cat"', + 'vendor_details' => 'Vendor Details', + 'purchase_order_details' => 'Purchase Order Details', + 'qr_iban' => 'QR IBAN', + 'besr_id' => 'BESR ID', + 'clone_to_purchase_order' => 'Clone to PO', + 'vendor_email_not_set' => 'Vendor does not have an email address set', + 'bulk_send_email' => 'Send Email', + 'marked_purchase_order_as_sent' => 'Successfully marked purchase order as sent', + 'marked_purchase_orders_as_sent' => 'Successfully marked purchase orders as sent', + 'accepted_purchase_order' => 'Successfully accepted purchase order', + 'accepted_purchase_orders' => 'Successfully accepted purchase orders', + 'cancelled_purchase_order' => 'Successfully cancelled purchase order', + 'cancelled_purchase_orders' => 'Successfully cancelled purchase orders', + 'please_select_a_vendor' => 'Please select a vendor', + 'purchase_order_total' => 'Purchase Order Total', + 'email_purchase_order' => 'Email Purchase Order', + 'bulk_email_purchase_order' => 'Email Purchase Order', + 'disconnected_email' => 'Successfully disconnected email', + 'connect_email' => 'Connect Email', + 'disconnect_email' => 'Disconnect Email', + 'use_web_app_to_connect_microsoft' => 'Please use the web app to connect to Microsoft', + 'email_provider' => 'Email Provider', + 'connect_microsoft' => 'Connect Microsoft', + 'disconnect_microsoft' => 'Disconnect Microsoft', + 'connected_microsoft' => 'Successfully connected Microsoft', + 'disconnected_microsoft' => 'Successfully disconnected Microsoft', + 'microsoft_sign_in' => 'Login with Microsoft', + 'microsoft_sign_up' => 'Sign up with Microsoft', + 'emailed_purchase_order' => 'Successfully queued purchase order to be sent', + 'emailed_purchase_orders' => 'Successfully queued purchase orders to be sent', + 'enable_react_app' => 'Change to the React web app', + 'purchase_order_design' => 'Purchase Order Design', + 'purchase_order_terms' => 'Purchase Order Terms', + 'purchase_order_footer' => 'Purchase Order Footer', + 'require_purchase_order_signature' => 'Purchase Order Signature', + 'require_purchase_order_signature_help' => 'Require vendor to provide their signature.', + 'new_purchase_order' => 'New Purchase Order', + 'edit_purchase_order' => 'Edit Purchase Order', + 'created_purchase_order' => 'Successfully created purchase order', + 'updated_purchase_order' => 'Successfully updated purchase order', + 'archived_purchase_order' => 'Successfully archived purchase order', + 'deleted_purchase_order' => 'Successfully deleted purchase order', + 'removed_purchase_order' => 'Successfully removed purchase order', + 'restored_purchase_order' => 'Successfully restored purchase order', + 'search_purchase_order' => 'Search Purchase Order', + 'search_purchase_orders' => 'Search Purchase Orders', + 'login_url' => 'Login URL', + 'enable_applying_payments' => 'Enable Applying Payments', + 'enable_applying_payments_help' => 'Support separately creating and applying payments', + 'stock_quantity' => 'Stock Quantity', + 'notification_threshold' => 'Notification Threshold', + 'track_inventory' => 'Track Inventory', + 'track_inventory_help' => 'Display a product stock field and update when invoices are sent', + 'stock_notifications' => 'Stock Notifications', + 'stock_notifications_help' => 'Send an email when the stock reaches the threshold', + 'vat' => 'VAT', + 'view_map' => 'View Map', + 'set_default_design' => 'Set Default Design', + 'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments', + 'purchase_order_issued_to' => 'Purchase Order issued to', + 'archive_task_status' => 'Archive Task Status', + 'delete_task_status' => 'Delete Task Status', + 'restore_task_status' => 'Restore Task Status', + 'lang_Hebrew' => 'Hebrew', + 'price_change_accepted' => 'Price change accepted', + 'price_change_failed' => 'Price change failed with code', + 'restore_purchases' => 'Restore Purchases', + 'activate' => 'Activate', + 'connect_apple' => 'Connect Apple', + 'disconnect_apple' => 'Disconnect Apple', + 'disconnected_apple' => 'Successfully disconnected Apple', + 'send_now' => 'Send Now', + 'received' => 'Received', + 'converted_to_expense' => 'Successfully converted to expense', + 'converted_to_expenses' => 'Successfully converted to expenses', + 'entity_removed' => 'This document has been removed, please contact the vendor for further information', + 'entity_removed_title' => 'Document no longer available', ); return $LANG; diff --git a/lang/pt_PT/texts.php b/lang/pt_PT/texts.php index 8bff5d9709f8..a5b9a9f07e44 100644 --- a/lang/pt_PT/texts.php +++ b/lang/pt_PT/texts.php @@ -21,7 +21,7 @@ $LANG = array( 'payment_terms' => 'Condições de Pagamento', 'currency_id' => 'Moeda', 'size_id' => 'Tamanho da empresa', - 'industry_id' => 'Indústria', + 'industry_id' => 'Atividade', 'private_notes' => 'Notas Privadas', 'invoice' => 'Nota Pagamento', 'client' => 'Cliente', @@ -35,18 +35,18 @@ $LANG = array( 'discount' => 'Desconto', 'taxes' => 'Impostos', 'tax' => 'Imposto', - 'item' => 'Item', + 'item' => 'Produto', 'description' => 'Descrição', - 'unit_cost' => 'Preço Unitário', + 'unit_cost' => 'Preço', 'quantity' => 'Quantidade', 'line_total' => 'Total', - 'subtotal' => 'Subtotal', - 'net_subtotal' => 'Net', + 'subtotal' => 'Total Ilíquido', + 'net_subtotal' => 'Líquido', 'paid_to_date' => 'Pago até à data', 'balance_due' => 'Valor', 'invoice_design_id' => 'Modelo', 'terms' => 'Condições', - 'your_invoice' => 'A sua Nota de Pagamento', + 'your_invoice' => 'A sua nota de pagamento', 'remove_contact' => 'Remover contacto', 'add_contact' => 'Adicionar contacto', 'create_new_client' => 'Criar novo cliente', @@ -58,18 +58,18 @@ $LANG = array( 'invoice_terms' => 'Condições da Nota de Pagamento', 'save_as_default_terms' => 'Guardar como condição padrão', 'download_pdf' => 'Transferir PDF', - 'pay_now' => 'Pagar agora', + 'pay_now' => 'Pagar Agora', 'save_invoice' => 'Guardar Nota Pagamento', - 'clone_invoice' => 'Duplicar para nota de pagamento', + 'clone_invoice' => 'Duplicar Para Nota de Pagamento', 'archive_invoice' => 'Arquivar Nota de Pagamento.', 'delete_invoice' => 'Apagar Nota de Pagamento.', 'email_invoice' => 'Enviar Nota de Pagamento.', 'enter_payment' => 'Introduzir Pag.', 'tax_rates' => 'Impostos', - 'rate' => 'Valor', + 'rate' => 'Taxa', 'settings' => 'Definições', 'enable_invoice_tax' => 'Permitir especificar o imposto da nota de pagamento', - 'enable_line_item_tax' => 'Permitir especificar os impostos por item', + 'enable_line_item_tax' => 'Permitir especificar os impostos por produto', 'dashboard' => 'Painel', 'dashboard_totals_in_all_currencies_help' => 'Nota: adicione um :link chamado ":name" para exibir os totais com base numa única moeda.', 'clients' => 'Clientes', @@ -87,15 +87,15 @@ $LANG = array( 'done' => 'Concluído', 'save' => 'Guardar', 'create' => 'Criar', - 'upload' => 'Upload', + 'upload' => 'Carregar', 'import' => 'Importar', 'download' => 'Transferir', 'cancel' => 'Cancelar', 'close' => 'Fechar', 'provide_email' => 'Por favor introduza um endereço de e-mail válido', 'powered_by' => 'Desenvolvido por', - 'no_items' => 'Sem itens', - 'recurring_invoices' => 'Nota de Pagamento Recorrentes', + 'no_items' => 'Sem produtos', + 'recurring_invoices' => 'Notas Pag. Recorrentes', 'recurring_help' => '

Enviar as mesmas notas de pagamento semanalmente, bimestralmente, mensalmente, trimestralmente ou anualmente para os clientes.

Utilize :MONTH, :QUARTER ou :YEAR para datas dinâmicas. Cálculos básicos são aplicáveis, como por exemplo :MONTH-1.

Exemplos de variáveis dinâmicas de faturas:

@@ -105,7 +105,7 @@ $LANG = array(
  • "Pagamento de retentor para :QUARTER+1" >> "Pagamento de retentor para 3T"
  • ', 'recurring_quotes' => 'Orçamentos Recorrentes', - 'in_total_revenue' => 'no total de faturação', + 'in_total_revenue' => 'receita total', 'billed_client' => 'Faturado ao cliente', 'billed_clients' => 'Clientes faturados', 'active_client' => 'Cliente ativo', @@ -140,11 +140,11 @@ $LANG = array( 'end_date' => 'Data Final', 'transaction_reference' => 'Referência da Transação', 'method' => 'Método', - 'payment_amount' => 'Valor do Pagamento', + 'payment_amount' => 'Total do Pagamento', 'payment_date' => 'Data do Pagamento', - 'credit_amount' => 'Valor do Nota de Crédito', - 'credit_balance' => 'Balanço do Nota de Crédito', - 'credit_date' => 'Data do Nota de Crédito', + 'credit_amount' => 'Total da Nota de Crédito', + 'credit_balance' => 'Balanço da Nota de Crédito', + 'credit_date' => 'Data da Nota de Crédito', 'empty_table' => 'Sem dados disponíveis', 'select' => 'Selecionar', 'edit_client' => 'Editar Cliente', @@ -160,8 +160,8 @@ $LANG = array( 'message' => 'Mensagem', 'adjustment' => 'Ajuste', 'are_you_sure' => 'Tem a certeza?', - 'payment_type_id' => 'Tipo de pagamento', - 'amount' => 'Valor', + 'payment_type_id' => 'Tipo de Pagamento', + 'amount' => 'Total', 'work_email' => 'E-mail', 'language_id' => 'Idioma', 'timezone_id' => 'Fuso Horário', @@ -178,9 +178,9 @@ $LANG = array( 'email_viewed' => 'Notificar-me por e-mail quando a nota de pagamento for visualizada', 'email_paid' => 'Notificar-me por e-mail quando a nota de pagamento for paga', 'site_updates' => 'Atualizações', - 'custom_messages' => 'Mensagens personalizadas', + 'custom_messages' => 'Mensagens Personalizadas', 'default_email_footer' => 'Definir assinatura de e-mail padrão', - 'select_file' => 'Por favor selecione um arquivo', + 'select_file' => 'Por favor selecione um ficheiro', 'first_row_headers' => 'Usar as primeiras linhas como cabeçalho', 'column' => 'Coluna', 'sample' => 'Exemplo', @@ -199,11 +199,11 @@ $LANG = array( 'updated_settings' => 'Definições atualizadas com sucesso', 'removed_logo' => 'Logótipo removido com sucesso', 'sent_message' => 'Mensagem enviada com sucesso', - 'invoice_error' => 'Verifique se selecionou um cliente e que não há nenhum outro erro', - 'limit_clients' => 'Desculpe, isto irá exceder o limite de :count clientes', + 'invoice_error' => 'Certifique-se de selecionar um cliente e corrigir quaisquer erros', + 'limit_clients' => 'Desculpe, isso excederá o limite de :count clientes. Por favor, atualize para um plano pago.', 'payment_error' => 'Ocorreu um erro ao processar o pagamento. Por favor tente novamente mais tarde.', 'registration_required' => 'Inicie sessão para enviar uma nota de pagamento por e-mail', - 'confirmation_required' => 'Por favor confirme o seu endereço de E-mail, :link para reenviar o E-mail de confirmação.', + 'confirmation_required' => 'Por favor confirme o seu e-mail, :link para reenviar o e-mail de confirmação.', 'updated_client' => 'Cliente atualizado com sucesso', 'archived_client' => 'Cliente arquivado com sucesso', 'archived_clients' => ':count clientes arquivados com sucesso', @@ -211,9 +211,9 @@ $LANG = array( 'deleted_clients' => ':count clientes removidos com sucesso', 'updated_invoice' => 'Nota de pagamento atualizada com sucesso', 'created_invoice' => 'Nota de pagamento criada com sucesso', - 'cloned_invoice' => 'Nota de pagamento clonada com sucesso', + 'cloned_invoice' => 'Nota de pagamento duplicada com sucesso', 'emailed_invoice' => 'Nota de pagamento enviada por e-mail com sucesso', - 'and_created_client' => 'e o cliente foi criado', + 'and_created_client' => 'e cliente criado', 'archived_invoice' => 'Nota de pagamento arquivada com sucesso', 'archived_invoices' => ':count notas de pagamento arquivadas com sucesso', 'deleted_invoice' => 'Notas de Pagamento apagadas com sucesso', @@ -239,37 +239,37 @@ $LANG = array( 'deleted_vendors' => ':count fornecedores removidos com sucesso', 'confirmation_subject' => 'Confirmação de Conta', 'confirmation_header' => 'Confirmação de Conta', - 'confirmation_message' => 'Por favor clique no endereço infra para confirmar a sua conta.', + 'confirmation_message' => 'Por favor clique no endereço para confirmar a sua conta.', 'invoice_subject' => 'Nova nota de pagamento :number de :account', - 'invoice_message' => 'Para visualizar a sua nota de pagamento de :amount, clique no link abaixo.', - 'payment_subject' => 'Pagamento recebido', - 'payment_message' => 'Obrigado, pagamento de :amount confirmado', - 'email_salutation' => 'Caro :name,', + 'invoice_message' => 'Para visualizar a sua nota de pagamento de :amount, clique no endereço.', + 'payment_subject' => 'Pagamento Recebido', + 'payment_message' => 'Obrigado, pagamento de :amount confirmado.', + 'email_salutation' => 'Sr(a) :name,', 'email_signature' => 'Cumprimentos,', - 'email_from' => 'Equipa InvoiceNinja', - 'invoice_link_message' => 'Para visualizar a nota de pagamento do seu cliente clique no endereço infra:', + 'email_from' => 'Equipa Invoice Ninja', + 'invoice_link_message' => 'Para visualizar a nota de pagamento do seu cliente clique no endereço:', 'notification_invoice_paid_subject' => 'Nota de pagamento :invoice foi paga por :client', - 'notification_invoice_sent_subject' => 'Nota de pagamento :invoice foi enviada por :client', + 'notification_invoice_sent_subject' => 'Nota de pagamento :invoice foi enviada para :client', 'notification_invoice_viewed_subject' => 'Nota de pagamento :invoice foi visualizada por :client', 'notification_invoice_paid' => 'Um pagamento de :amount foi realizado pelo cliente :client através da nota de pagamento :invoice.', 'notification_invoice_sent' => 'O cliente :client foi notificado por e-mail referente à nota de pagamento :invoice de :amount.', 'notification_invoice_viewed' => 'O cliente :client visualizou a nota de pagamento :invoice de :amount.', - 'reset_password' => 'Pode redefinir a sua palavra-passe clicando no seguinte endereço:', + 'reset_password' => 'Pode recuperar a sua senha no seguinte endereço:', 'secure_payment' => 'Pagamento Seguro', - 'card_number' => 'Número do cartão', - 'expiration_month' => 'Mês de expiração', - 'expiration_year' => 'Ano de expiração', + 'card_number' => 'Número do Cartão', + 'expiration_month' => 'Mês de Expiração', + 'expiration_year' => 'Ano de Expiração', 'cvv' => 'CVV', 'logout' => 'Sair', 'sign_up_to_save' => 'Inicie sessão para guardar o seu trabalho', - 'agree_to_terms' => 'Eu concordo com os :terms', + 'agree_to_terms' => 'Eu concordo com :terms', 'terms_of_service' => 'Condições do Serviço', 'email_taken' => 'O endereço de e-mail já se encontra registado', 'working' => 'A processar', 'success' => 'Sucesso', - 'success_message' => 'Registou-se com sucesso! Por favor verifique a sua caixa de E-mail para poder verificar a sua conta.', + 'success_message' => 'Registou-se com sucesso! Por favor verifique o seu e-mail para poder verificar a sua conta.', 'erase_data' => 'A sua conta não está registada, apagará todos os dados permanentemente.', - 'password' => 'Palavra-passe', + 'password' => 'Senha', 'pro_plan_product' => 'Plano Profissional', 'pro_plan_success' => 'Obrigado por escolher o Plano Profissional do Invoice Ninja!

     
    Próximos Passos

    Uma nota de pagamento foi enviada para o endereço de E-mail associado à sua conta. Para desbloquear todas as incríveis funcionalidades do Plano Profissional, por favor siga as instruções nessa mesma nota de pagamento para ativar a subscrição.

    @@ -288,9 +288,9 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'product' => 'Produto', 'products' => 'Produtos', 'fill_products' => 'Preencher automaticamente produtos', - 'fill_products_help' => 'Ao selecionar o produto descrição e preço serão preenchidos automaticamente', + 'fill_products_help' => 'Ao selecionar um produto a descrição e preço serão preenchidos automaticamente', 'update_products' => 'Atualização automática dos produtos', - 'update_products_help' => 'Ao atualizar a nota de pagamento o produto também será atualizado', + 'update_products_help' => 'Ao atualizar uma nota de pagamento o produto também será atualizado', 'create_product' => 'Criar Produto', 'edit_product' => 'Editar Produto', 'archive_product' => 'Arquivar Produto', @@ -300,7 +300,7 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'pro_plan_custom_fields' => ':link para ativar campos personalizados adquira o Plano Profissional', 'advanced_settings' => 'Definições Avançadas', 'pro_plan_advanced_settings' => ':link para ativar as definições avançadas adquira o Plano Profissional', - 'invoice_design' => 'Design das Notas de Pagamento', + 'invoice_design' => 'Modelo das Notas de Pagamento', 'specify_colors' => 'Definição de Cores', 'specify_colors_label' => 'Selecione as cores para a sua nota de pagamento', 'chart_builder' => 'Construtor de Gráficos', @@ -322,7 +322,7 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'delete_quote' => 'Apagar Orçamento', 'save_quote' => 'Guardar Oçamento', 'email_quote' => 'Enviar Orçamento', - 'clone_quote' => 'Duplicar para orçamento', + 'clone_quote' => 'Duplicar para Orçamento', 'convert_to_invoice' => 'Converter em Nota de Pagamento', 'view_invoice' => 'Visualizar Nota de Pagamento', 'view_client' => 'Visualizar Cliente', @@ -337,21 +337,21 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'deleted_quotes' => ':count orçamentos apagados com sucesso', 'converted_to_invoice' => 'Orçamento convertido em nota de pagamento', 'quote_subject' => 'Novo orçamento :number de :account', - 'quote_message' => 'Para visualizar o orçamento de :amount, aceda ao link abaixo.', - 'quote_link_message' => 'Para visualizar o orçamento aceda ao link abaixo', + 'quote_message' => 'Para visualizar o orçamento de :amount, clique no endereço abaixo.', + 'quote_link_message' => 'Para visualizar o orçamento clique no endereço abaixo:', 'notification_quote_sent_subject' => 'Orçamento :invoice enviado para :client', 'notification_quote_viewed_subject' => 'Orçamento :invoice visualizado por :client', - 'notification_quote_sent' => 'O cliente :client recebeu o Orçamento :invoice de:amount.', - 'notification_quote_viewed' => 'O cliente :client visualizou o Orçamento :invoice de :amount.', + 'notification_quote_sent' => 'O cliente :client recebeu o orçamento :invoice de :amount.', + 'notification_quote_viewed' => 'O cliente :client visualizou o orçamento :invoice de :amount.', 'session_expired' => 'A sessão expirou.', 'invoice_fields' => 'Campos da Nota de Pagamento', 'invoice_options' => 'Opções da Nota de Pagamento', - 'hide_paid_to_date' => 'Ocultar data de pagamento', - 'hide_paid_to_date_help' => 'Apenas mostrar a "Data de Pagamento" quanto o pagamento tiver sido efetuado.', + 'hide_paid_to_date' => 'Ocultar Data de Pagamento', + 'hide_paid_to_date_help' => 'Mostrar apenas a "Data de Pagamento" quanto o pagamento for efetuado.', 'charge_taxes' => 'Impostos', - 'user_management' => 'Gerir utilizadores', - 'add_user' => 'Adicionar utilizadores', - 'send_invite' => 'Enviar convite', + 'user_management' => 'Gerir Utilizadores', + 'add_user' => 'Adicionar Utilizadores', + 'send_invite' => 'Enviar Convite', 'sent_invite' => 'Convite enviado com sucesso', 'updated_user' => 'Utilizador atualizado com sucesso', 'invitation_message' => 'Recebeu um convite de :invitor. ', @@ -366,7 +366,7 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'confirm_email_quote' => 'Deseja enviar este orçamento?', 'confirm_recurring_email_invoice' => 'Deseja enviar esta nota de pagamento?', 'confirm_recurring_email_invoice_not_sent' => 'Tem a certeza que pretende começar a recorrência?', - 'cancel_account' => 'Cancelar Conta', + 'cancel_account' => 'Apagar Conta', 'cancel_account_message' => 'Aviso: Irá apagar permanentemente a sua conta.', 'go_back' => 'Voltar', 'data_visualizations' => 'Visualização de Dados', @@ -374,17 +374,17 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'hide' => 'Ocultar', 'new_version_available' => 'Uma nova versão :releases_link está disponível. A sua versão é v:user_version, a última versão é v:latest_version', 'invoice_settings' => 'Configuração das Notas de Pagamento', - 'invoice_number_prefix' => 'Prefixo na Numeração das Notas de Pagamento', + 'invoice_number_prefix' => 'Prefixo da Numeração nas Notas de Pagamento', 'invoice_number_counter' => 'Numeração das ', - 'quote_number_prefix' => 'Prefixo na Numeração dos Orçamentos', + 'quote_number_prefix' => 'Prefixo da Numeração nos Orçamentos', 'quote_number_counter' => 'Numeração dos Orçamentos', 'share_invoice_counter' => 'Usar numeração das notas de pagamento', 'invoice_issued_to' => 'Nota de pagamento emitida para', 'invalid_counter' => 'Para evitar conflitos defina prefixos de numeração para Nota de Pagamento e Orçamentos', - 'mark_sent' => 'Marcar como Enviada', + 'mark_sent' => 'Marcar Como Enviada', 'gateway_help_1' => ':link para registar Authorize.net.', 'gateway_help_2' => ':link para registar Authorize.net.', - 'gateway_help_17' => ':link para adquirir a sua "PayPal API signature".', + 'gateway_help_17' => ':link para adquirir a sua assinatura "PayPal API".', 'gateway_help_27' => ':link registe-se no 2Checkout.com. Para garantir o acompanhamento dos pagamentos configure o :complete_link como URL de redirecionamento em Account > Site Management no 2Checkout portal.', 'gateway_help_60' => ':link para criar uma conta WePay', 'more_designs' => 'Mais Modelos', @@ -402,17 +402,17 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'payment_footer1' => '*A morada de faturação deve ser igual à morada associada ao Cartão de Crédito.', 'payment_footer2' => '*Clique em "Pagar Agora" apenas uma vez - esta operação pode levar até 1 Minuto para ser processada.', 'id_number' => 'Número de Identificação', - 'white_label_link' => 'White Label', - 'white_label_header' => 'White Label', - 'bought_white_label' => 'Licença "white label" ativada', - 'white_labeled' => 'White labeled', + 'white_label_link' => 'Marca Branca', + 'white_label_header' => 'Marca Branca', + 'bought_white_label' => 'Licença de marca branca ativada', + 'white_labeled' => 'Marcado como Marca Branca', 'restore' => 'Restaurar', 'restore_invoice' => 'Restaurar Nota de Pagamento', - 'restore_quote' => 'Restaurar Fatura', + 'restore_quote' => 'Restaurar Orçamento', 'restore_client' => 'Restaurar Cliente', 'restore_credit' => 'Restaurar Nota de Crédito', 'restore_payment' => 'Restaurar Pagamento', - 'restored_invoice' => 'Nota de pagamento restaurada com sucesso', + 'restored_invoice' => 'Nota de pagamento restaurada', 'restored_quote' => 'Orçamento restaurado', 'restored_client' => 'Cliente restaurado', 'restored_payment' => 'Pagamento restaurado', @@ -435,13 +435,13 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'invoice_email' => 'E-mail para Nota de Pagamento', 'payment_email' => 'E-mail para Pagamentos', 'quote_email' => 'E-mail para Orçamentos', - 'reset_all' => 'Redifinir Todos', + 'reset_all' => 'Redefinir Todos', 'approve' => 'Aprovar', - 'token_billing_type_id' => 'Token de Cobrança', + 'token_billing_type_id' => 'Símbolo de Cobrança', 'token_billing_help' => 'Guardar detalhes de pagamento com WePay, Stripe, Braintree ou GoCardless', 'token_billing_1' => 'Desativado', - 'token_billing_2' => 'A checkbox de Opt-in está visível mas não seleccionada', - 'token_billing_3' => 'A caixa de seleção de Opt-out está visível e seleccionada', + 'token_billing_2' => 'A caixa de seleção Ativar está visível mas não seleccionada', + 'token_billing_3' => 'A caixa de seleção Excluir está visível e seleccionada', 'token_billing_4' => 'Sempre', 'token_billing_checkbox' => 'Guardar detalhes do cartão de crédito', 'view_in_gateway' => 'Ver em :gateway', @@ -453,23 +453,23 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'contact_information' => 'Informações de Contacto', '256_encryption' => 'Criptografia de 256-Bit', 'amount_due' => 'Valor em dívida', - 'billing_address' => 'Morada de faturação', - 'billing_method' => 'Tipo de pagamento', + 'billing_address' => 'Morada de Faturação', + 'billing_method' => 'Tipo de Pagamento', 'order_overview' => 'Geral', 'match_address' => '*A morada de faturação deve ser igual à morada associada ao Cartão de Crédito.', 'click_once' => '*Clique em "Pagar Agora" apenas uma vez - esta operação pode levar até 1 Minuto para processar.', 'invoice_footer' => 'Rodapé da Nota de Pagamento', 'save_as_default_footer' => 'Guardar como rodapé padrão', - 'token_management' => 'Gerir Token', - 'tokens' => 'Tokens', - 'add_token' => 'Adicionar Token', - 'show_deleted_tokens' => 'Mostrar tokents apagados', - 'deleted_token' => 'Token apagado', - 'created_token' => 'Token criado', - 'updated_token' => 'Token atualizado', - 'edit_token' => 'Editar Token', - 'delete_token' => 'Apagar Token', - 'token' => 'Token', + 'token_management' => 'Gerir Símbolo', + 'tokens' => 'Símbolos', + 'add_token' => 'Adicionar Símbolo', + 'show_deleted_tokens' => 'Mostrar símbolos apagados', + 'deleted_token' => 'Símbolo apagado', + 'created_token' => 'Símbolo criado', + 'updated_token' => 'Símbolo atualizado', + 'edit_token' => 'Editar Símbolo', + 'delete_token' => 'Apagar Símbolo', + 'token' => 'Símbolo', 'add_gateway' => 'Adicionar Terminal', 'delete_gateway' => 'Apagar Terminal', 'edit_gateway' => 'Editar Terminal', @@ -478,23 +478,23 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'deleted_gateway' => 'Terminal Apagado', 'pay_with_paypal' => 'PayPal', 'pay_with_card' => 'Cartão de Crédito', - 'change_password' => 'Alterar palavra-passe', - 'current_password' => 'Palavra-passe atual', - 'new_password' => 'Nova palavra-passe', - 'confirm_password' => 'Confirmar palavra-passe', - 'password_error_incorrect' => 'Palavra-passe atual incorreta.', - 'password_error_invalid' => 'Nova palavra-passe inválida.', - 'updated_password' => 'Palavra-passe atualizada', + 'change_password' => 'Alterar senha', + 'current_password' => 'Senha atual', + 'new_password' => 'Nova senha', + 'confirm_password' => 'Confirmar senha', + 'password_error_incorrect' => 'Senha atual incorreta.', + 'password_error_invalid' => 'Nova senha inválida.', + 'updated_password' => 'Senha atualizada', 'api_tokens' => 'API Tokens', 'users_and_tokens' => 'Utilizadores & Tokens', 'account_login' => 'Iniciar sessão', - 'recover_password' => 'Recuperar palavra-passe', - 'forgot_password' => 'Esqueceu-se da palavra-passe?', + 'recover_password' => 'Recuperar senha', + 'forgot_password' => 'Esqueceu-se da senha?', 'email_address' => 'E-mail', 'lets_go' => 'Vamos!', - 'password_recovery' => 'Recuperar palavra-passe', + 'password_recovery' => 'Recuperar senha', 'send_email' => 'Enviar email', - 'set_password' => 'Definir palavra-passe', + 'set_password' => 'Defenir senha', 'converted' => 'Convertido', 'email_approved' => 'Notificar-me por e-mail quando um orçamento for aprovado', 'notification_quote_approved_subject' => 'Orçamento :invoice foi aprovado por :client', @@ -518,10 +518,10 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'duplicate_post' => 'Atenção: a página anterior foi enviada duas vezes. A segunda vez foi ignorada.', 'view_documentation' => 'Ver Documentação', 'app_title' => 'Programa de Faturação Online Gratuito e Open-Source', - 'app_description' => 'Invoice Ninja é uma solução de faturação e pagamento gratuita e open-source. Com Invoice Ninja, consegue facilmente construir e enviar notas de pagamento apelativas a partir de qualquer dispositivo com acesso à internet. Os seus clientes podem imprimir as notas de pagamento, transferi-las como ficheiros PDF e ainda pagar através da internet desde esta solução.', + 'app_description' => 'Invoice Ninja é uma solução de faturação e pagamento gratuita e open-source. Com Invoice Ninja, consegue facilmente construir e enviar notas de pagamento apelativas a partir de qualquer dispositivo com acesso à internet. Os seus clientes podem imprimir as notas de pagamento, transferi-las como ficheiros PDF e ainda pagar através da internet.', 'rows' => 'linhas', 'www' => 'www', - 'logo' => 'Logo', + 'logo' => 'Logotipo', 'subdomain' => 'Subdomínio', 'provide_name_or_email' => 'Indique um nome ou email', 'charts_and_reports' => 'Gráficos & Relatórios', @@ -537,7 +537,7 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'documentation' => 'Documentação', 'zapier' => 'Zapier', 'recurring' => 'Recorrente', - 'last_invoice_sent' => 'Última cobrança enviada a :date', + 'last_invoice_sent' => 'Última nota de pagamento enviada a :date', 'processed_updates' => 'Atualização completa', 'tasks' => 'Tarefas', 'new_task' => 'Nova Tarefa', @@ -594,32 +594,32 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'pro_plan_feature1' => 'Sem Limite de Clientes', 'pro_plan_feature2' => '+10 Modelos de nota de pagamentos', 'pro_plan_feature3' => 'URLs personalizadas - "OSeuNome.InvoiceNinja.com"', - 'pro_plan_feature4' => 'Sem "Created by Invoice Ninja"', - 'pro_plan_feature5' => 'Múltiplos usuários & Histórico de Atividades', + 'pro_plan_feature4' => 'Remover "Created by Invoice Ninja"', + 'pro_plan_feature5' => 'Múltiplos Utilizadores & Histórico de Atividades', 'pro_plan_feature6' => 'Orçamentos & Pedidos', 'pro_plan_feature7' => 'Campos personalizados', - 'pro_plan_feature8' => 'Opção para anexar PDFs aos e-mails', + 'pro_plan_feature8' => 'Opção para anexar PDF aos e-mails', 'resume' => 'Retomar', 'break_duration' => 'Interromper', 'edit_details' => 'Editar Detalhes', 'work' => 'Trabalhar', 'timezone_unset' => 'Por favor :link defina o seu fuso horário', 'click_here' => 'clique aqui', - 'email_receipt' => 'E-mail para envio do recibo de pagamento', - 'created_payment_emailed_client' => 'Pagamento informado e notificado ao cliente por e-mail', + 'email_receipt' => 'Envio do comprovativo de pagamento por e-mail para o cliente', + 'created_payment_emailed_client' => 'Pagamento criado com sucesso e enviado por e-mail ao cliente', 'add_company' => 'Adicionar Empresa', 'untitled' => 'Sem Título', 'new_company' => 'Nova Empresa', - 'associated_accounts' => 'Contas vinculadas', - 'unlinked_account' => 'Contas desvinculadas', - 'login' => 'Iniciar sessão', + 'associated_accounts' => 'Contas ligadas com sucesso', + 'unlinked_account' => 'Contas desligadas com sucesso', + 'login' => 'Iniciar Sessão', 'or' => 'ou', 'email_error' => 'Houve um problema ao enviar o e-mail', 'confirm_recurring_timing' => 'Aviso: e-mails são enviados na hora de início.', 'confirm_recurring_timing_not_sent' => 'Nota: notas de pagamento são criadas no início da hora', - 'payment_terms_help' => 'Definir a data de vencimento padrão ', - 'unlink_account' => 'Desvincular Conta', - 'unlink' => 'Desvincular', + 'payment_terms_help' => 'Definir data de vencimento padrão ', + 'unlink_account' => 'Desligar Conta', + 'unlink' => 'Desligar', 'show_address' => 'Mostrar morada', 'show_address_help' => 'Solicitar morada de faturação ao cliente', 'update_address' => 'Atualizar Morada', @@ -627,7 +627,7 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'times' => 'Tempo', 'set_now' => 'Agora', 'dark_mode' => 'Modo Escuro', - 'dark_mode_help' => 'Utilizar fundo de tema escuro para as barras laterais', + 'dark_mode_help' => 'Utilizar o fundo do tema escuro para as barras laterais', 'add_to_invoice' => 'Adicionar na nota de pagamento :invoice', 'create_new_invoice' => 'Criar nota de pagamento', 'task_errors' => 'Corrija os tempos sobrepostos', @@ -650,21 +650,21 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'recent_payments' => 'Pagamentos Recentes', 'outstanding' => 'Em Aberto', 'manage_companies' => 'Gerir Empresas', - 'total_revenue' => 'Total faturado', + 'total_revenue' => 'Receita Total', 'current_user' => 'Utilizador', 'new_recurring_invoice' => 'Nova Nota de Pagamento Recorrente', 'recurring_invoice' => 'Nota de Pagamento Recorrente', 'new_recurring_quote' => 'Novo Orçamento Recorrente', 'recurring_quote' => 'Orçamento Recorrente', - 'recurring_too_soon' => 'Demasiado cedo para criar nova nota de pagamento recorrente, agendamento para :date', - 'created_by_invoice' => 'Criada a partir da Nota de Pagamento :invoice', + 'recurring_too_soon' => 'Demasiado cedo para criar nova nota de pagamento recorrente, está agendado para :date', + 'created_by_invoice' => 'Criada a partir da :invoice', 'primary_user' => 'Utilizador Principal', 'help' => 'Ajuda', - 'customize_help' => '

    We use :pdfmake_link to define the invoice designs declaratively. The pdfmake :playground_link provides a great way to see the library in action.

    -

    If you need help figuring something out post a question to our :forum_link with the design you\'re using.

    ', + 'customize_help' => '

    Usamos :pdfmake_link para defenir os estilos da nota de pagamento de forma declarativa. O pdfmake :playground_link oferece uma ótima forma de ver a biblioteca em ação.

    +

    Se você precisa de ajuda para descobrir alguma coisa, pergunte no nosso forum :forum_link com o estilo que está usando.

    ', 'playground' => 'rascunho', 'support_forum' => 'fórum de suporte', - 'invoice_due_date' => 'Data de vencimento', + 'invoice_due_date' => 'Data de Vencimento', 'quote_due_date' => 'Valido até', 'valid_until' => 'Válido até', 'reset_terms' => 'Redifinir Condições', @@ -673,60 +673,60 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'invoices_sent' => ':count notas de pag. enviadas', 'status_draft' => 'Rascunho', 'status_sent' => 'Enviado', - 'status_viewed' => 'Visualizado', + 'status_viewed' => 'Visto', 'status_partial' => 'Parcial', 'status_paid' => 'Pago', 'status_unpaid' => 'Não Pago', 'status_all' => 'Todos', - 'show_line_item_tax' => 'Exibir impostos dos itens', - 'iframe_url' => 'Website', + 'show_line_item_tax' => 'Exibir imposto dos produtos', + 'iframe_url' => 'Site', 'iframe_url_help1' => 'Copie o código abaixo para o seu site.', 'iframe_url_help2' => 'Pode testar ao clicar em \'Ver como destinatário\' numa nota de pagamento.', 'auto_bill' => 'Cobrança Automática', - 'military_time' => '24h', + 'military_time' => '24 Horas', 'last_sent' => 'Último Envio', - 'reminder_emails' => 'E-mails de Lembrete', - 'quote_reminder_emails' => 'E-mails de Lembrete de Orçamento', - 'templates_and_reminders' => 'Modelos & Lembretes', + 'reminder_emails' => 'E-mails de Aviso', + 'quote_reminder_emails' => 'E-mails de Avisode Orçamento', + 'templates_and_reminders' => 'Modelos & Avisos', 'subject' => 'Assunto', 'body' => 'Conteúdo', - 'first_reminder' => 'Primeiro Lembrete', - 'second_reminder' => 'Segundo Lembrete', - 'third_reminder' => 'Terceiro Lembrete', + 'first_reminder' => 'Primeiro Aviso', + 'second_reminder' => 'Segundo Aviso', + 'third_reminder' => 'Terceiro Aviso', 'num_days_reminder' => 'Dias após o vencimento', - 'reminder_subject' => 'Lembrente: Nota de Pagamento :invoice de :account', - 'reset' => 'Redefinir', + 'reminder_subject' => 'Aviso: Nota de Pagamento :invoice de :account', + 'reset' => 'Repor', 'invoice_not_found' => 'A nota de pagamento não está disponível', 'referral_program' => 'Programa de Indicação', 'referral_code' => 'Código de Indicação', 'last_sent_on' => 'Último envio em :date', - 'page_expire' => 'Esta página a expirar, :click_here para continuar a trabalhar', + 'page_expire' => 'Esta página vai expirar, :click_here para continuar a trabalhar', 'upcoming_quotes' => 'Próximos Orçamentos', 'expired_quotes' => 'Orçamentos Expirados', 'sign_up_using' => 'Aceder', - 'invalid_credentials' => 'Utilizador e/ou palavra-passe inválidos', + 'invalid_credentials' => 'Utilizador e/ou senha inválidos', 'show_all_options' => 'Mostrar todas as opções', 'user_details' => 'Detalhes do Utilizador', 'oneclick_login' => 'Contas ligadas', 'disable' => 'Desativar', - 'invoice_quote_number' => 'Nº de Notas de Pag. e Orçamentos', + 'invoice_quote_number' => 'Número das Notas de Pag. e Orçamentos', 'invoice_charges' => 'Sobretaxas da Nota de Pagamento', 'notification_invoice_bounced' => 'Não foi possível entregar a Nota de Pagamento :invoice a :contact.', 'notification_invoice_bounced_subject' => 'A Nota de Pagamento :invoice não foi entregue', 'notification_quote_bounced' => 'Não foi possível entregar o Orçamento :invoice a :contact.', 'notification_quote_bounced_subject' => 'O Orçamento :invoice não foi entregue', - 'custom_invoice_link' => 'Link de Faturas Personalizado', - 'total_invoiced' => 'Notas de Pagamento', + 'custom_invoice_link' => 'Ligação de Faturas Personalizado', + 'total_invoiced' => 'Total Faturado', 'open_balance' => 'Em Aberto', 'verify_email' => 'Um e-mail de verificação foi enviado para a sua caixa de entrada..', 'basic_settings' => 'Definições Básicas', 'pro' => 'Pro', - 'gateways' => 'Gateways de Pagamento', + 'gateways' => 'Entradas de Pagamento', 'next_send_on' => 'Próximo Envio: :date', 'no_longer_running' => 'Esta nota de pagamento não está agendada', 'general_settings' => 'Definições Gerais', 'customize' => 'Personalizar', - 'oneclick_login_help' => 'Crie uma conta para aceder sem palavra-passe.', + 'oneclick_login_help' => 'Crie uma conta para aceder sem senha.', 'referral_code_help' => 'Recomende o nosso sistema.', 'enable_with_stripe' => 'Ativar | Requer Stripe', 'tax_settings' => 'Definições de Impostos', @@ -757,7 +757,7 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'activity_7' => ':contact viu a nota de pagamento :invoice para :client', 'activity_8' => ':user arquivou a nota de pagamento :invoice', 'activity_9' => ':user removeu a nota de pagamento :invoice', - 'activity_10' => ':contact introduziu pagamento :payment para :payment_amount na nota de pagamento :invoice para :cliente', + 'activity_10' => ':contact introduziu o pagamento :payment para :payment_amount na nota de pagamento :invoice para :cliente', 'activity_11' => ':user atualizou o pagamento :payment', 'activity_12' => ':user arquivou o pagamento :payment', 'activity_13' => ':user removeu o pagamento :payment', @@ -767,7 +767,7 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'activity_17' => ':user removeu nota de crédito :credit', 'activity_18' => ':user adicionou o orçamento :quote', 'activity_19' => ':user atualizou o orçamento :quote', - 'activity_20' => ':user enviou orçamento :quote por E-mail para :client, :contact', + 'activity_20' => ':user enviou o orçamento :quote por e-mail para :client, :contact', 'activity_21' => ':contact visualizou o orçamento :quote', 'activity_22' => ':user arquivou o orçamento :quote', 'activity_23' => ':user removeu o orçamento :quote', @@ -791,35 +791,35 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'activity_45' => ':user apagou a tarefa :task', 'activity_46' => ':user restaurou a tarefa :task', 'activity_47' => ':user atualizou a despesa :expense', - 'activity_48' => ':user created user :user', - 'activity_49' => ':user updated user :user', - 'activity_50' => ':user archived user :user', - 'activity_51' => ':user deleted user :user', - 'activity_52' => ':user restored user :user', - 'activity_53' => ':user marked sent :invoice', + 'activity_48' => ':user criou o utilizador :user', + 'activity_49' => ':user atualizou o utilizador :user', + 'activity_50' => ':user arquivou o utilizador :user', + 'activity_51' => ':user apagou o utilizador :user', + 'activity_52' => ':user restaurou o utilizador :user', + 'activity_53' => ':user marcou como enviado :invoice', 'activity_54' => ':user reabriu o ticket :ticket', - 'activity_55' => ':contact respondeu ao ticket :ticket', - 'activity_56' => ':user visualizou o ticket :ticket', + 'activity_55' => ':contact respondeu ao bilhete :ticket', + 'activity_56' => ':user visualizou o bilhete :ticket', 'payment' => 'Pagamento', 'system' => 'Sistema', 'signature' => 'Assinatura do E-mail', 'default_messages' => 'Mensagens Padrões', 'quote_terms' => 'Condições do Orçamento', - 'default_quote_terms' => 'Condições Padrões dos Orçamentos', - 'default_invoice_terms' => 'Definir condições padrões da notas de pag.', - 'default_invoice_footer' => 'Definir padrão', + 'default_quote_terms' => 'Condições Padrão dos Orçamentos', + 'default_invoice_terms' => 'Defenir condições padrão da notas de pag.', + 'default_invoice_footer' => 'Defenir padrão', 'quote_footer' => 'Rodapé do Orçamento', 'free' => 'Grátis', 'quote_is_approved' => 'Aprovada com sucesso', 'apply_credit' => 'Aplicar Nota de Crédito', 'system_settings' => 'Definições do Sistema', - 'archive_token' => 'Arquivar Token', - 'archived_token' => 'Token arquivado', + 'archive_token' => 'Arquivar Símbolo', + 'archived_token' => 'Símbolo arquivado', 'archive_user' => 'Arquivar Utilizador', 'archived_user' => 'Utilizador arquivado', 'archive_account_gateway' => 'Apagar Terminal', - 'archived_account_gateway' => 'Gateway arquivado', + 'archived_account_gateway' => 'Terminal arquivado', 'archive_recurring_invoice' => 'Arquivar Nota de Pagamento Recorrente', 'archived_recurring_invoice' => 'Nota de Pagamento Recorrente arquivada', 'delete_recurring_invoice' => 'Remover Nota de Pagamento Recorrente', @@ -836,13 +836,13 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'untitled_account' => 'Empresa Sem Nome', 'before' => 'Antes', 'after' => 'Depois', - 'reset_terms_help' => 'Redefinir para as condições padrões', + 'reset_terms_help' => 'Redefinir para as condições padrão', 'reset_footer_help' => 'Redefinir para o rodapé padrão', 'export_data' => 'Exportar Dados', 'user' => 'Utilizador', 'country' => 'País', 'include' => 'Incluir', - 'logo_too_large' => 'O seu logo tem :size, para uma melhor performance sugerimos que este tamanho não ultrapasse 200KB', + 'logo_too_large' => 'O seu logotipo tem :size, para uma melhor execução sugerimos que este tamanho não ultrapasse 200KB', 'import_freshbooks' => 'Importar de FreshBooks', 'import_data' => 'Importar Dados', 'source' => 'Fonte', @@ -853,7 +853,7 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'no_mapper' => 'Mapeamento inválido', 'invalid_csv_header' => 'CSV com cabeçalho inválido', 'client_portal' => 'Portal do Cliente', - 'admin' => 'Admin', + 'admin' => 'Administrador', 'disabled' => 'Desativado', 'show_archived_users' => 'Mostrar utilizadores arquivados', 'notes' => 'Observações', @@ -863,14 +863,14 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'publishable_key' => 'Chave Publicável', 'secret_key' => 'Chave Secreta', 'missing_publishable_key' => 'Defina a sua chave publicável do Stripe para um melhor processo de pagamento', - 'email_design' => 'Template de E-mail', + 'email_design' => 'Modelo de E-mail', 'due_by' => 'Vencido a :date', 'enable_email_markup' => 'Ativar Marcação', - 'enable_email_markup_help' => 'Tornar mais fácil para os seus clientes efetuarem os pagamentos, acrescentando marcação schema.org a seus e-mails.', - 'template_help_title' => 'Ajuda de Templates', + 'enable_email_markup_help' => 'Para tornar mais fácil para os seus clientes efetuarem os pagamentos, acrescente marcação schema.org aos seus e-mails.', + 'template_help_title' => 'Ajuda de Modelos', 'template_help_1' => 'Variáveis disponíveis:', 'email_design_id' => 'Estilo de e-mails', - 'email_design_help' => 'Make your emails look more professional with HTML layouts.', + 'email_design_help' => 'Torne os seus e-mails mais profissionais com esquemas HTML.', 'plain' => 'Plano', 'light' => 'Claro', 'dark' => 'Escuro', @@ -884,11 +884,11 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'custom_invoice_fields_helps' => 'Adicionar um campo durante a criação de uma fatura e opcionalmente mostrar etiqueta e valor no PDF.', 'custom_invoice_charges_helps' => 'Adicionar uma entrada de texto na página Criar/Editar Nota de Pagamento e incluir nos subtotais da nota de pagamento.', 'token_expired' => 'Token de acesso expirado. Tente novamente!', - 'invoice_link' => 'Link da Nota de Pagamento', - 'button_confirmation_message' => 'Confirm your email.', + 'invoice_link' => 'Endereço da Nota de Pagamento', + 'button_confirmation_message' => 'Confirme o seu e-mail.', 'confirm' => 'Confirmar', - 'email_preferences' => 'Preferências de E-mails', - 'created_invoices' => ':count nota de pagamento(s) criadas com sucesso', + 'email_preferences' => 'Preferências de e-mail', + 'created_invoices' => ':count nota(s) de pagamento criada(s) com sucesso', 'next_invoice_number' => 'O número da próxima nota de pagamento será :number.', 'next_quote_number' => 'O número do próximo orçamento será :number.', 'days_before' => 'dias antes de', @@ -896,27 +896,27 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'field_due_date' => 'data de vencimento', 'field_invoice_date' => 'data da nota de pagamento', 'schedule' => 'Agendamento', - 'email_designs' => 'Design de E-mails', + 'email_designs' => 'Modelos de e-mail', 'assigned_when_sent' => 'Assinar quando enviar', - 'white_label_purchase_link' => 'Adquira uma licença white label', + 'white_label_purchase_link' => 'Adquira uma licença de marca branca', 'expense' => 'Despesa', 'expenses' => 'Despesas', 'new_expense' => 'Introduzir Despesa', - 'enter_expense' => 'Incluir Despesa', + 'enter_expense' => 'Introduzir Despesa', 'vendors' => 'Fornecedor', 'new_vendor' => 'Novo Fornecedor', - 'payment_terms_net' => 'Net', + 'payment_terms_net' => 'Ilíquido', 'vendor' => 'Fornecedor', 'edit_vendor' => 'Editar Fornecedor', 'archive_vendor' => 'Arquivar Fornecedor', 'delete_vendor' => 'Apagar Fornecedor', 'view_vendor' => 'Visualizar Fornecedor', - 'deleted_expense' => 'Despesa excluída com sucesso', + 'deleted_expense' => 'Despesa apagada com sucesso', 'archived_expense' => 'Despesa arquivada com sucesso', - 'deleted_expenses' => 'Despesas excluídas com sucesso', + 'deleted_expenses' => 'Despesas apagadas com sucesso', 'archived_expenses' => 'Despesas arquivadas com sucesso', 'expense_amount' => 'Total de Despesas', - 'expense_balance' => 'Saldo das Despesas', + 'expense_balance' => 'Total das Despesas', 'expense_date' => 'Data da Despesa', 'expense_should_be_invoiced' => 'Esta despesa deve ser faturada?', 'public_notes' => 'Notas Públicas', @@ -932,7 +932,7 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'view_expense_num' => 'Despesa # :expense', 'updated_expense' => 'Despesa atualizada com sucesso', 'created_expense' => 'Despesa criada com sucesso', - 'enter_expense' => 'Incluir Despesa', + 'enter_expense' => 'Introduzir Despesa', 'view' => 'Visualizar', 'restore_expense' => 'Restaurar Despesa', 'invoice_expense' => 'Nota de Pagamento da Despesa', @@ -969,7 +969,7 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'friday' => 'Sexta-Feira', 'saturday' => 'Sábado', 'header_font_id' => 'Fonte do Cabeçalho', - 'body_font_id' => 'Fonte dos Textos', + 'body_font_id' => 'Fonte do Corpo', 'color_font_help' => 'Nota: A cor primária também é utilizada no portal do cliente e no e-mail personalizado.', 'live_preview' => 'Pré-visualização', 'invalid_mail_config' => 'Falha ao enviar e-mail, verifique as definições.', @@ -989,8 +989,8 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'archived_bank_account' => 'Conta bancária arquivada com sucesso', 'created_bank_account' => 'Conta bancária criada com sucesso', 'validate_bank_account' => 'Validar Conta Bancária', - 'bank_password_help' => 'Nota: a sua palavra-passe é transferida de forma segura e não será armazenada em nossos servidores.', - 'bank_password_warning' => 'Atenção: a sua palavra-passe será transferida de forma não segura, considere habilitar HTTPS.', + 'bank_password_help' => 'Nota: a sua senha é transferida de forma segura e não será armazenada em nossos servidores.', + 'bank_password_warning' => 'Atenção: a sua senha será transferida de forma não segura, considere habilitar HTTPS.', 'username' => 'Utilizador', 'account_number' => 'Conta número', 'account_name' => 'Nome da Conta', @@ -998,18 +998,18 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'status_approved' => 'Aprovado', 'quote_settings' => 'Definições dos Orçamentos', 'auto_convert_quote' => 'Auto Conversão', - 'auto_convert_quote_help' => 'Converter automaticamente um orçamento quando for aprovado pelo cliente.', + 'auto_convert_quote_help' => 'Converter automaticamente um orçamento em nota de pagamento quando for aprovado pelo cliente.', 'validate' => 'Validado', - 'info' => 'Info', + 'info' => 'Informação', 'imported_expenses' => ':count_vendors fornecedor(s) e :count_expenses despesa(s) importadas com sucesso', 'iframe_url_help3' => 'Nota: se o seu plano aceita detalhes do cartão de crédito recomendamos que tenha HTTPS no seu site.', 'expense_error_multiple_currencies' => 'As despesas não podem ter diferentes moedas.', 'expense_error_mismatch_currencies' => 'As configurações de moeda do cliente não coincidem com a moeda nesta despesa.', 'trello_roadmap' => 'Trello Roadmap', 'header_footer' => 'Cabeçalho/Rodapé', - 'first_page' => 'primeira página', - 'all_pages' => 'todas as páginas', - 'last_page' => 'última página', + 'first_page' => 'Primeira página', + 'all_pages' => 'Todas as páginas', + 'last_page' => 'Última página', 'all_pages_header' => 'Mostrar cabeçalho ativo', 'all_pages_footer' => 'Mostrar rodapé ativo', 'invoice_currency' => 'Moeda da Nota de Pagamento', @@ -1025,9 +1025,9 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'overdue' => 'Vencido', - 'white_label_text' => 'Comprar UM ANO da licença de marca branca por $:price para remover o branding do Invoice Ninja das notas de pagamento e do portal do cliente.', + 'white_label_text' => 'Comprar UM ANO da licença de marca branca por $:price para remover a marca do Invoice Ninja das notas de pagamento e do portal do cliente.', 'user_email_footer' => 'Para ajustar as suas definições de notificações de e-mail aceda :link', - 'reset_password_footer' => 'Se não solicitou a redefinição da palavra-passe por favor envie um e-mail para o nosso suporte: :email', + 'reset_password_footer' => 'Se não solicitou a redefinição da senha por favor envie um e-mail para o nosso suporte: :email', 'limit_users' => 'Desculpe, isto irá exceder o limite de :limit utilizadores', 'more_designs_self_host_header' => 'Obtenha mais 6 modelos de nota de pagamento por apenas $:price', 'old_browser' => 'Por favor use um :link', @@ -1036,7 +1036,7 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'bank_accounts_help' => 'Ligue uma conta bancária para importar automaticamente despesas e criar fornecedores. Suporta American Express e :link.', 'us_banks' => '+400 bancos dos EUA', - 'pro_plan_remove_logo' => ':link para remover a logo do Invoice Ninja contratando o plano profissional', + 'pro_plan_remove_logo' => ':link para remover a logo do Invoice Ninja adquirindo o plano profissional', 'pro_plan_remove_logo_link' => 'Clique aqui', 'invitation_status_sent' => 'Enviado', 'invitation_status_opened' => 'Aberto', @@ -1066,16 +1066,16 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'new_product' => 'Novo Produto', 'new_tax_rate' => 'Novo Imposto', 'invoiced_amount' => 'Total da Nota de Pag.', - 'invoice_item_fields' => 'Campos de itens na Nota de Pagamento', + 'invoice_item_fields' => 'Campos de produtos na Nota de Pagamento', 'custom_invoice_item_fields_help' => 'Adicionar um campo ao adicionar um item e mostrar a etiqueta e valor no PDF.', - 'recurring_invoice_number' => 'Nº Recorrente', + 'recurring_invoice_number' => 'Número Recorrente', 'recurring_invoice_number_prefix_help' => 'Especifique um prefixo para ser adicionado ao número da fatura para faturas recorrentes.', // Client Passwords - 'enable_portal_password' => 'Proteger notas de pag. com palavra-passe', - 'enable_portal_password_help' => 'Permite definir uma palavra-passe para cada contacto. Se uma palavra-passe for definida, o contacto deverá introduzir a palavra-passe antes de visualizar a nota de pagamento.', + 'enable_portal_password' => 'Proteger notas de pag. com senha', + 'enable_portal_password_help' => 'Permite definir uma senha para cada contacto. Se uma senha for defenida, o contacto deverá introduzir a senha antes de visualizar a nota de pagamento.', 'send_portal_password' => 'Gerar Automaticamente', - 'send_portal_password_help' => 'Se não definir uma palavra-passe, será gerada uma automaticamente e enviada com a primeira nota de pagamento.', + 'send_portal_password_help' => 'Se não definir uma senha, será gerada uma automaticamente e enviada com a primeira nota de pagamento.', 'expired' => 'Expirada', 'invalid_card_number' => 'Cartão de crédito inválido.', @@ -1119,20 +1119,20 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e // Documents 'documents_header' => 'Documentos:', 'email_documents_header' => 'Documentos:', - 'email_documents_example_1' => 'Recibo de Widgets.pdf', - 'email_documents_example_2' => 'Ficheiros Finais.zip', + 'email_documents_example_1' => 'Ferramentas recibo.pdf', + 'email_documents_example_2' => 'Finais entregas.zip', 'quote_documents' => 'Documentos de Orçamentos', 'invoice_documents' => 'Documentos de Faturas', 'expense_documents' => 'Documentos de Despesas', - 'invoice_embed_documents' => 'Documentos Embutidos', + 'invoice_embed_documents' => 'Documentos Incorporados', 'invoice_embed_documents_help' => 'Incluir imagens anexadas na nota de pagamento.', 'document_email_attachment' => 'Anexar Documentos', 'ubl_email_attachment' => 'Anexar UBL', 'download_documents' => 'Transferir Documentos (:size)', 'documents_from_expenses' => 'De despesas:', 'dropzone_default_message' => 'Arrastar ficheiros para enviar', - 'dropzone_default_message_disabled' => 'Uploads desativados', - 'dropzone_fallback_message' => 'O seu browser não suporta envio de ficheiros através de drag\'n\'drop.', + 'dropzone_default_message_disabled' => 'Carregamentos desativados', + 'dropzone_fallback_message' => 'O seu browser não suporta envio de ficheiros através de arraste e solte.', 'dropzone_fallback_text' => 'Por favor utilize o formulário abaixo para enviar ficheiros em modo de compatibilidade.', 'dropzone_file_too_big' => 'Ficheiro demasiado grande ({{filesize}}MiB). Tamanho máximo: {{maxFilesize}}MiB.', 'dropzone_invalid_file_type' => 'Não pode enviar este tipo de ficheiros.', @@ -1146,14 +1146,14 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'enable_client_portal' => 'Portal do Cliente', 'enable_client_portal_help' => 'Mostrar/ocultar o portal do cliente.', - 'enable_client_portal_dashboard' => 'Dashboard', - 'enable_client_portal_dashboard_help' => 'Mostrar/ocultar o dashboard no portal do cliente.', + 'enable_client_portal_dashboard' => 'Painel', + 'enable_client_portal_dashboard_help' => 'Mostrar/ocultar o painel no portal do cliente.', // Plans 'account_management' => 'Gerir Conta', 'plan_status' => 'Estado do Plano', - 'plan_upgrade' => 'Upgrade', + 'plan_upgrade' => 'Atualizar', 'plan_change' => 'Alterar Plano', 'pending_change_to' => 'Altera Para', 'plan_changes_to' => ':plan em :date', @@ -1166,10 +1166,10 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'trial_expired' => ':plan Plano de Avaliação Terminou', 'never' => 'Nunca', 'plan_free' => 'Gratuíto', - 'plan_pro' => 'Pro', - 'plan_enterprise' => 'Enterprise', - 'plan_white_label' => 'Self Hosted (Marca Branca)', - 'plan_free_self_hosted' => 'Self Hosted (Gratuíto)', + 'plan_pro' => 'Profissional', + 'plan_enterprise' => 'Empresarial', + 'plan_white_label' => 'Servidor Pessoal (Marca Branca)', + 'plan_free_self_hosted' => 'Servidor Pessoal (Gratuíto)', 'plan_trial' => 'Avaliação', 'plan_term' => 'Período', 'plan_term_monthly' => 'Mensal', @@ -1179,31 +1179,31 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'plan_price_monthly' => '$:price/Mês', 'plan_price_yearly' => '$:price/Ano', 'updated_plan' => 'Definições do plano atualizadas', - 'plan_paid' => 'Iniciou o período', + 'plan_paid' => 'Iniciou o Período', 'plan_started' => 'Iniciou o Plano', 'plan_expires' => 'Plano Expira', 'white_label_button' => 'Marca Branca', - 'pro_plan_year_description' => 'Subscrição de um ano no plano Invoice Ninja Pro.', - 'pro_plan_month_description' => 'Um mês de subscrição no plano Invoice Ninja Pro.', - 'enterprise_plan_product' => 'Plano Enterprise', - 'enterprise_plan_year_description' => 'Um ano de subscrição no plano Invoice Ninja Enterprise.', - 'enterprise_plan_month_description' => 'Um mês de subscrição no plano Invoice Ninja Enterprise.', + 'pro_plan_year_description' => 'Subscrição de um ano no plano Invoice Ninja Profissional.', + 'pro_plan_month_description' => 'Um mês de subscrição no plano Invoice Ninja Profissional.', + 'enterprise_plan_product' => 'Plano Empresa', + 'enterprise_plan_year_description' => 'Um ano de subscrição no plano Invoice Ninja Empresa.', + 'enterprise_plan_month_description' => 'Um mês de subscrição no plano Invoice Ninja Empresa.', 'plan_credit_product' => 'Nota de Crédito', 'plan_credit_description' => 'Crédito pelo tempo não utilizado', 'plan_pending_monthly' => 'Vamos alterar para mensal em :date', - 'plan_refunded' => 'Foi realizada um reembolso.', + 'plan_refunded' => 'Foi realizado um reembolso.', 'live_preview' => 'Pré-visualização', 'page_size' => 'Tamanho da Página', 'live_preview_disabled' => 'Pré-visualização em tempo real desactivada para suportar o tipo de letra selecionado', - 'invoice_number_padding' => 'Padding', + 'invoice_number_padding' => 'Distância', 'preview' => 'Pré-visualizar', 'list_vendors' => 'Listar Fornecedores', - 'add_users_not_supported' => 'Altere para o plano Enterprise para adicionar utilizadores adicionais à sua conta.', - 'enterprise_plan_features' => 'O plano Enterprise adiciona suporte a multiplos utilizadores e anexos de ficheiros, :link para ver a lista completa de funcionalidades.', - 'return_to_app' => 'Voltar ao App', + 'add_users_not_supported' => 'Altere para o plano Empresarial para adicionar utilizadores adicionais à sua conta.', + 'enterprise_plan_features' => 'O plano Empresarial adiciona suporte a multiplos utilizadores e anexos de ficheiros, :link para ver a lista completa de funcionalidades.', + 'return_to_app' => 'Voltar à Aplicação', // Payment updates @@ -1241,13 +1241,13 @@ Não consegue encontrar a nota de pagamento? Precisa de ajuda? Ficamos felizes e 'payment_type_stripe' => 'Stripe', 'ach' => 'ACH', 'enable_ach' => 'Aceitar transferências de bancos dos EUA', - 'stripe_ach_help' => 'Suporte para ACH também tem de estar habilitado em :link.', - 'ach_disabled' => 'Existe outro gateway configurado para débito direto.', + 'stripe_ach_help' => 'Suporte para ACH também tem de ser permitido em :link.', + 'ach_disabled' => 'Existe outro acesso configurado para débito direto.', - 'plaid' => 'Plaid', - 'client_id' => 'Client Id', - 'secret' => 'Secret', - 'public_key' => 'Public Key', + 'plaid' => 'Pago', + 'client_id' => 'Identificação do Cliente', + 'secret' => 'Segredo', + 'public_key' => 'Chave Pública', 'plaid_optional' => '(opcional)', 'plaid_environment_help' => 'Quando uma chave de teste do Stripe é dada, o ambiente de desenvolvimento do Plaid (tartan) será utilizado.', 'other_providers' => 'Outros Provedores', @@ -1299,12 +1299,12 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'account_holder_type' => 'Tipo do Proprietário da Conta', 'ach_authorization' => 'Eu autorizo a :company a utilizar a minha conta bancária para pagamentos futuros e, se necessário, creditar electronicamente a minha conta para corrigir débitos incorrectos. Compreendo que posso revogar esta autorização a qualquer altura removendo o método de pagamento ou contactando :email.', 'ach_authorization_required' => 'Deverá permitir transacções ACH.', - 'off' => 'Off', - 'opt_in' => 'Aceitar (Opt-in)', - 'opt_out' => 'Negar (Opt-out)', + 'off' => 'Desligado', + 'opt_in' => 'Aceitar', + 'opt_out' => 'Negar', 'always' => 'Sempre', - 'opted_out' => 'Negou (Opted out)', - 'opted_in' => 'Aceitou (Opted in)', + 'opted_out' => 'Negou', + 'opted_in' => 'Aceitou', 'manage_auto_bill' => 'Gerir Pagamentos Automáticos', 'enabled' => 'Ativo', 'paypal' => 'PayPal', @@ -1326,7 +1326,7 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific // WePay 'wepay' => 'WePay', 'sign_up_with_wepay' => 'Registar com WePay', - 'use_another_provider' => 'Utilizar outro provedor', + 'use_another_provider' => 'Utilizar outro fornecedor', 'company_name' => 'Nome da Empresa', 'wepay_company_name_help' => 'Isto irá aparecer no registo do cartão de crédito do cliente.', 'wepay_description_help' => 'O objetivo desta conta.', @@ -1334,13 +1334,13 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'wepay_tos_link_text' => 'Termos de Serviço do WePay', 'resend_confirmation_email' => 'Reenviar Email de Confirmação', 'manage_account' => 'Gerir Conta', - 'action_required' => 'Acção Necessária', + 'action_required' => 'Ação Necessária', 'finish_setup' => 'Terminar Configuração', 'created_wepay_confirmation_required' => 'Por favor verifique o seu email e confirme o seu email com o WePay', 'switch_to_wepay' => 'Alterar para WePay', 'switch' => 'Alterar', - 'restore_account_gateway' => 'Restaurar Gateway', - 'restored_account_gateway' => 'Gateway restaurado com sucesso', + 'restore_account_gateway' => 'Restaurar Acesso', + 'restored_account_gateway' => 'Acesso restaurado com sucesso', 'united_states' => 'Estados Unidos', 'canada' => 'Canadá', 'accept_debit_cards' => 'Aceitar Cartão de Débito', @@ -1353,7 +1353,7 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'security' => 'Segurança', 'see_whats_new' => 'Veja as novidades na versão v:version', 'wait_for_upload' => 'Por favor aguardo pela conclusão do envio do documento', - 'upgrade_for_permissions' => 'Atualize para o nosso plano Enterprise para ativar as permissões.', + 'upgrade_for_permissions' => 'Atualize para o nosso plano Empresarial para ativar as permissões.', 'enable_second_tax_rate' => 'Permitir indicar um segundo imposto', 'payment_file' => 'Ficheiro de Pagamento', 'expense_file' => 'Ficheiro de Despesas', @@ -1363,12 +1363,12 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'product_key' => 'Produto', 'created_products' => ':count produto(s) criados/atualizados com sucesso', 'export_help' => 'Utilize JSON se planear importar os dados para o Invoice Ninja.
    O ficheiro incluí clientes, produtos, notas de pagamento, orçamentos e pagamentos.', - 'selfhost_export_help' => '
    Nós recomendamos utilizar mysqldump para criar um backup completo.', + 'selfhost_export_help' => '
    Nós recomendamos utilizar mysqldump para criar uma cópia de segurança completa.', 'JSON_file' => 'Ficheiro JSON', - 'view_dashboard' => 'Ver Dashboard', + 'view_dashboard' => 'Ver Painel', 'client_session_expired' => 'Sessão Expirada', - 'client_session_expired_message' => 'A sua sessão expirou. Por favor abra novamente o link no seu email.', + 'client_session_expired_message' => 'A sua sessão expirou. Por favor abra novamente o endereço no seu email.', 'auto_bill_notification' => 'Esta nota de pagamento será paga automaticamente a :due_data através do seu :payment_method.', 'auto_bill_payment_method_bank_transfer' => 'conta bancária', @@ -1387,21 +1387,21 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'wepay_payment_tos_agree' => 'Eu concordo com :terms e :privacy_policy da WePay.', 'privacy_policy' => 'Política de Privacidade', 'wepay_payment_tos_agree_required' => 'Deve concordar com os Termos de Serviço e Política de Privacidade da WePay.', - 'ach_email_prompt' => 'Por favor indique o seu email:', + 'ach_email_prompt' => 'Por favor indique o seu e-mail:', 'verification_pending' => 'Verificação Pendente', 'update_font_cache' => 'Por favor force a actualização da página para actualizar a cache dos tipos de letra.', 'more_options' => 'Mais opções', 'credit_card' => 'Cartão de Crédito', 'bank_transfer' => 'Transferência Bancária', - 'no_transaction_reference' => 'We did not receive a payment transaction reference from the gateway.', + 'no_transaction_reference' => 'Não recebemos uma transação de pagamento do portal.', 'use_bank_on_file' => 'Utilizar o Banco no Ficheiro', 'auto_bill_email_message' => 'Esta nota de pagamento será paga automaticamente na data de vencimento através do método de pagamento.', 'bitcoin' => 'Bitcoin', 'gocardless' => 'GoCardless', 'added_on' => 'Adicionado em :date', 'failed_remove_payment_method' => 'Erro ao remover o método de pagamento', - 'gateway_exists' => 'Este gateway já existe', + 'gateway_exists' => 'Este portal já existe', 'manual_entry' => 'Introdução manual', 'start_of_week' => 'Primeiro Dia da Semana', @@ -1409,7 +1409,7 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'freq_inactive' => 'Inativo', 'freq_daily' => 'Diário', 'freq_weekly' => 'Semanal', - 'freq_biweekly' => 'Bisemanal', + 'freq_biweekly' => 'Quinzenal', 'freq_two_weeks' => '2 semanas', 'freq_four_weeks' => '4 semanas', 'freq_monthly' => 'Mensal', @@ -1474,8 +1474,8 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'industry_Manufacturing' => 'Indústria', 'industry_Marketing' => 'Marketing', 'industry_Media' => 'Media', - 'industry_Nonprofit & Higher Ed' => 'Sem Finds Lucrativos & Educação', - 'industry_Pharmaceuticals' => 'Fermacêutica', + 'industry_Nonprofit & Higher Ed' => 'Sem Fins Lucrativos & Educação', + 'industry_Pharmaceuticals' => 'Farmacêutica', 'industry_Professional Services & Consulting' => 'Serviços Profissionais & Consultoria', 'industry_Real Estate' => 'Imobiliária', 'industry_Restaurant & Catering' => 'Restaurantes & Catering', @@ -1487,10 +1487,10 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'industry_Photography' => 'Fotografia', // Countries - 'country_Afghanistan' => 'Afghanistan', - 'country_Albania' => 'Albania', - 'country_Antarctica' => 'Antarctica', - 'country_Algeria' => 'Algeria', + 'country_Afghanistan' => 'Afeganistão', + 'country_Albania' => 'Albânia', + 'country_Antarctica' => 'Antártica', + 'country_Algeria' => 'Argélia', 'country_American Samoa' => 'American Samoa', 'country_Andorra' => 'Andorra', 'country_Angola' => 'Angola', @@ -1796,8 +1796,8 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'industry_Manufacturing' => 'Indústria', 'industry_Marketing' => 'Marketing', 'industry_Media' => 'Media', - 'industry_Nonprofit & Higher Ed' => 'Sem Finds Lucrativos & Educação', - 'industry_Pharmaceuticals' => 'Fermacêutica', + 'industry_Nonprofit & Higher Ed' => 'Sem Fins Lucrativos & Educação', + 'industry_Pharmaceuticals' => 'Farmacêutica', 'industry_Professional Services & Consulting' => 'Serviços Profissionais & Consultoria', 'industry_Real Estate' => 'Imobiliária', 'industry_Retail & Wholesale' => 'Retalho & Armazenistas', @@ -1807,9 +1807,9 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'industry_Other' => 'Outros', 'industry_Photography' => 'Fotografia', - 'view_client_portal' => 'View client portal', - 'view_portal' => 'View Portal', - 'vendor_contacts' => 'Vendor Contacts', + 'view_client_portal' => 'Ver portal do cliente', + 'view_portal' => 'Ver Portal', + 'vendor_contacts' => 'Contatos do Fornecedor', 'all' => 'Todos', 'selected' => 'Selecionados', 'category' => 'Categoria', @@ -1828,7 +1828,7 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'apply_taxes' => 'Aplicar impostos', 'min_to_max_users' => ':min a :max utilizadores', 'max_users_reached' => 'Atingiu o números máximo de utilizadores.', - 'buy_now_buttons' => 'Botões Comprar Agora', + 'buy_now_buttons' => 'Comprar Botões Agora', 'landing_page' => 'Página de Entrada', 'payment_type' => 'Tipo de Pagamento', 'form' => 'Formulário', @@ -1836,10 +1836,10 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'fields' => 'Campos', 'dwolla' => 'Dwolla', 'buy_now_buttons_warning' => 'Nota: o cliente e a nota de pagamento serão criados mesmo que a transacção não seja concluída.', - 'buy_now_buttons_disabled' => 'Esta funcionalidade requer que tenha um produto e um gateway de pagamento configurados.', + 'buy_now_buttons_disabled' => 'Esta funcionalidade requer que tenha um produto e um portal de pagamento configurados.', 'enable_buy_now_buttons_help' => 'Ativar suporte para botões "comprar agora"', 'changes_take_effect_immediately' => 'Nota: alterações terão efeito imediato', - 'wepay_account_description' => 'Gateway de pagamento para o Invoice Ninja', + 'wepay_account_description' => 'Portal de pagamento para o Invoice Ninja', 'payment_error_code' => 'Houve um erro a processar o seu pagamento [:code]. Por favor tente novamente mais tarde.', 'standard_fees_apply' => 'Taxa: 2.9%/1.2% [Cartão de Crédito/Transf. Bancária] + $0.30 (aprox. €0.25) por pagamento realizado.', @@ -1850,7 +1850,7 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'no_contact_selected' => 'Por favor selecione um contacto', 'no_client_selected' => 'Por favor selecione um cliente', - 'gateway_config_error' => 'Poderá ajudar a definir novas palavras-passe ou a gerar novas chaves API.', + 'gateway_config_error' => 'Poderá ajudar a definir novas senhas ou a gerar novas chaves API.', 'payment_type_on_file' => ':type guardado', 'invoice_for_client' => 'Nota de Pagamento :invoice para :client', 'intent_not_found' => 'Desculpe, não entendi o que está a perguntar.', @@ -1858,12 +1858,12 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'client_not_found' => 'Não consegui encontrar o cliente', 'not_allowed' => 'Desculpe, não tem as permissões necessárias.', 'bot_emailed_invoice' => 'A sua nota de pagamento foi enviada.', - 'bot_emailed_notify_viewed' => 'Irei enviar-lhe um email quando for visualidada.', - 'bot_emailed_notify_paid' => 'Irei enviar-lhe um email quando for paga.', + 'bot_emailed_notify_viewed' => 'Irei enviar-lhe um e-mail quando for visualidada.', + 'bot_emailed_notify_paid' => 'Irei enviar-lhe um e-mail quando for paga.', 'add_product_to_invoice' => 'Adicionar 1 :product', 'not_authorized' => 'Não está autorizado', 'bot_get_email' => 'Olá! (wave) Obrigado por experimentares o bot da Invoice Ninja.É necessário criar uma conta para poder utilizar este bot. Introduz o teu endereço de e-mail para começar.', - 'bot_get_code' => 'Obrigado! Vou enviar-lhe um email com o seu código de segurança.', + 'bot_get_code' => 'Obrigado! Vou enviar-lhe um e-mail com o seu código de segurança.', 'bot_welcome' => 'Feito, a sua conta está verificada.
    ', 'email_not_found' => 'Não fui capaz de encontrar uma conta para :email', 'invalid_code' => 'O código está incorrecto', @@ -1873,7 +1873,7 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'bot_help_message' => 'Atualmente suporto:
    • Criar/atualizar/enviar uma nota de pagamento
    • Listar produtos:
    Por exemplo:
    faturar o bob por 2 bilhetes, definir a data de vencimento para a próxima quinta-feira e o desconto para 10%
    ', 'list_products' => 'Listar Produtos', - 'include_item_taxes_inline' => 'Incluir impostos dos items no total da linha', + 'include_item_taxes_inline' => 'Incluir impostos dos produtos no total da linha', 'created_quotes' => ':count orçamento(s) criados com sucesso.', 'limited_gateways' => 'Nota: suportamos um terminal de cartão de crédito por empresa.', @@ -1898,7 +1898,7 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'account_fields' => 'Campos da Empresa', 'facebook_and_twitter' => 'Facebook e Twitter', 'facebook_and_twitter_help' => 'Siga os nossos feeds para nos ajudar a suportar o projecto', - 'reseller_text' => 'Nota: a licença de marca-branca é prevista para uso pessoal, por favor envie um email para :email se desejar revender a aplicação.', + 'reseller_text' => 'Nota: a licença de marca branca é prevista para uso pessoal, por favor envie um e-mail para :email se desejar revender a aplicação.', 'unnamed_client' => 'Cliente Sem Nome', 'day' => 'Dia', @@ -1922,13 +1922,13 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'max' => 'Max', 'limits_not_met' => 'Esta Nota de Pag. não cumpre os limites para este tipo de pagamento.', - 'date_range' => 'Interevalo de Datas', - 'raw' => 'Raw', + 'date_range' => 'Intervalo de Datas', + 'raw' => 'Não preparado', 'raw_html' => 'Código HTML', 'update' => 'Atualizar', 'invoice_fields_help' => 'Arraste os campos para alterar a sua ordem e localização', 'new_category' => 'Nova Categoria', - 'restore_product' => 'Restaurar Producto', + 'restore_product' => 'Restaurar Produto', 'blank' => 'Vazio', 'invoice_save_error' => 'Houve um erro ao guardar a nota de pagamento', 'enable_recurring' => 'Ativar Recorrência', @@ -1941,9 +1941,9 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'translate_app' => 'Ajude a melhorar as nossas traduções com :link', 'expense_category' => 'Categoria de Despesas', - 'go_ninja_pro' => 'Obtenha o Ninja Pro!', - 'go_enterprise' => 'Obtenha o Enterprise!', - 'upgrade_for_features' => 'Suba de Plano para Obter Mais Funcionalidades', + 'go_ninja_pro' => 'Obtenha o Ninja Profissional!', + 'go_enterprise' => 'Obtenha o Enpresarial!', + 'upgrade_for_features' => 'Atualize o Plano para Obter Mais Funcionalidades', 'pay_annually_discount' => 'Pague anualmente por 10 meses + 2 grátis!', 'pro_upgrade_title' => 'Ninja Pro', 'pro_upgrade_feature1' => 'ASuaMarca.InvoiceNinja.com', @@ -1957,19 +1957,19 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'currency_code' => 'Código', 'buy_license' => 'Comprar Licença', - 'apply_license' => 'Aplicar Linceça', - 'submit' => 'Submeter', + 'apply_license' => 'Aplicar Licença', + 'submit' => 'Enviar', 'white_label_license_key' => 'Chave de Licença', 'invalid_white_label_license' => 'A licença de marca branca é inválida', 'created_by' => 'Criado por :nome', 'modules' => 'Módulos', 'financial_year_start' => 'Primeiro Mês do Ano', 'authentication' => 'Autenticação', - 'checkbox' => 'Checkbox', + 'checkbox' => 'Caixa de Seleção', 'invoice_signature' => 'Assinatura', - 'show_accept_invoice_terms' => 'Checkbox para Termos da Nota de Pagamento', + 'show_accept_invoice_terms' => 'Caixa de seleção para Termos da Nota de Pagamento', 'show_accept_invoice_terms_help' => 'Requer que o cliente confirme que aceita os termos da nota de pagamento.', - 'show_accept_quote_terms' => 'Checkbox para Termos do Orçamento', + 'show_accept_quote_terms' => 'Caixa de seleção para Termos do Orçamento', 'show_accept_quote_terms_help' => 'Requer que o cliente confirme que aceita os termos do orçamento.', 'require_invoice_signature' => 'Assinatura da Nota de Pagamento', 'require_invoice_signature_help' => 'Requer que o cliente introduza a sua assinatura.', @@ -1983,7 +1983,7 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'vendor_name' => 'Fornecedor', 'entity_state' => 'Estado', 'client_created_at' => 'Data de Criação', - 'postmark_error' => 'Houve um problema ao enviar o email através do Postmark: :link', + 'postmark_error' => 'Houve um problema ao enviar o e-mail através do Postmark: :link', 'project' => 'Projeto', 'projects' => 'Projetos', 'new_project' => 'Novo Projeto', @@ -2002,15 +2002,15 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'delete_expense_category' => 'Apagar categoria', 'deleted_expense_category' => 'Categoria apagada com sucesso', 'delete_product' => 'Apagar Produto', - 'deleted_product' => 'Producto apagado com sucesso', + 'deleted_product' => 'Produto apagado com sucesso', 'deleted_products' => ':count produtos apagados com sucesso', 'restored_product' => 'Produto restaurado com sucesso', 'update_credit' => 'Atualizar Nota de Crédito', - 'updated_credit' => 'Nota de Crédito atualizado com sucesso', + 'updated_credit' => 'Nota de Crédito atualizada com sucesso', 'edit_credit' => 'Editar Nota de Crédito', 'realtime_preview' => 'Pré-visualização em Tempo Real', 'realtime_preview_help' => 'Atualização em tempo real da visualização do PDF na página da nota de pagamento ao editá-la.
    Desative esta funcionalidade para melhorar o desempenho ao editar as notas de pagamento.', - 'live_preview_help' => 'Mostrar uma pré-visualização ao vivo na página de fatura.', + 'live_preview_help' => 'Mostrar uma pré-visualização na página de fatura.', 'force_pdfjs_help' => 'Trocar o visualizador de PDF padrão em :chrome_link e :firefox_link.
    Ativar isto se o seu browser está a transferir o PDF automaticamente.', 'force_pdfjs' => 'Evitar Transferência', 'redirect_url' => 'Redirecionar URL', @@ -2024,7 +2024,7 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'created_at' => 'Data de Criação', 'contact_us' => 'Contacte-nos', 'user_guide' => 'Guia do Utilizador', - 'promo_message' => 'Atualizar antes de :expires para obter :amount de desconto no seu primeiro ano dos pacotes Pro e Enterprise.', + 'promo_message' => 'Atualizar antes de :expires para obter :amount de desconto no seu primeiro ano dos pacotes Profissional e Empresarial.', 'discount_message' => ':amount de desconte expira a :expires', 'mark_paid' => 'Marcar como Pago', 'marked_sent_invoice' => 'Nota de pagamento marcada como enviada com sucesso', @@ -2045,44 +2045,44 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'https' => 'HTTPS', 'require' => 'Requerer', 'license_expiring' => 'Nota: A sua licença expira em :count dias, :link para renovar.', - 'security_confirmation' => 'O seu email foi confirmado.', + 'security_confirmation' => 'O seu e-mail foi confirmado.', 'white_label_expired' => 'A sua licença de marca branca expirou, por favor consider renovar para suportar o nosso projecto.', 'renew_license' => 'Renovar Licença', 'iphone_app_message' => 'Considere transferir o nosso :link', 'iphone_app' => 'iPhone app', 'android_app' => 'Android app', - 'logged_in' => 'Sessão iniciada', + 'logged_in' => 'Sessão Iniciada', 'switch_to_primary' => 'Altere para a sua empresa primária (:name) para gerir o seu plano.', - 'inclusive' => 'Inclusive', - 'exclusive' => 'Exclusive', + 'inclusive' => 'Inclusivo', + 'exclusive' => 'Exclusivo', 'postal_city_state' => 'Código-Postal/Cidade/Distrito', 'phantomjs_help' => 'Em certos casos a aplicação utiliza :link_phantom para gerar os PDF, instale :link_docs para gerar os PDF localmente.', 'phantomjs_local' => 'Usar PhantomJS local', - 'client_number' => 'Nº Cliente', - 'client_number_help' => 'Especifique um prefixo ou utilize um padrão personalizado para definir dinamicamente o número do cliente.', + 'client_number' => 'Número Cliente', + 'client_number_help' => 'Especifique um prefixo ou utilize um padrão personalizado para definir dinâmicamente o número do cliente.', 'next_client_number' => 'O próximo cliente será o número :number.', 'generated_numbers' => 'Números gerados', - 'notes_reminder1' => 'Primeiro lembrete', - 'notes_reminder2' => 'Segundo lembrete', - 'notes_reminder3' => 'Terceiro Lembrete', - 'notes_reminder4' => 'Lembrete', + 'notes_reminder1' => 'Primeiro Aviso', + 'notes_reminder2' => 'Segundo Aviso', + 'notes_reminder3' => 'Terceiro Aviso', + 'notes_reminder4' => 'Aviso', 'bcc_email' => 'Email BCC', - 'tax_quote' => 'Imposto do orçamento', + 'tax_quote' => 'Imposto do Orçamento', 'tax_invoice' => 'Imposto da nota de pag.', 'emailed_invoices' => 'Notas de pag. enviadas com sucesso', 'emailed_quotes' => 'Orçamentos enviados com sucesso', - 'website_url' => 'Website URL', + 'website_url' => 'Site URL', 'domain' => 'Domínio', - 'domain_help' => 'Usado no portal do cliente e quando se enviam emails', - 'domain_help_website' => 'Usado quando se enviam emails.', + 'domain_help' => 'Usado no portal do cliente e quando se enviam e-mails', + 'domain_help_website' => 'Usado quando se enviam e-mails.', 'import_invoices' => 'Importar notas de pag.', - 'new_report' => 'Novo relatório', - 'edit_report' => 'Editar relatório', + 'new_report' => 'Novo Relatório', + 'edit_report' => 'Editar Relatório', 'columns' => 'Colunas', 'filters' => 'Filtros', - 'sort_by' => 'Ordenar por', + 'sort_by' => 'Ordenar Por', 'draft' => 'Rascunho', - 'unpaid' => 'Não pago', + 'unpaid' => 'Não Pago', 'aging' => 'Vencidas', 'age' => 'Idade', 'days' => 'Dias', @@ -2093,20 +2093,20 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'age_group_120' => '120+ Dias', 'invoice_details' => 'Detalhes da nota de pag.', 'qty' => 'Quantidade', - 'profit_and_loss' => 'Lucro e prejuízo', + 'profit_and_loss' => 'Lucros e Perdas', 'revenue' => 'Faturado', 'profit' => 'Lucro', 'group_when_sorted' => 'Ordenação em Grupo', - 'group_dates_by' => 'Agrupar datas por', + 'group_dates_by' => 'Agrupar Datas Por', 'year' => 'Ano', - 'view_statement' => 'Visualizar declaração', + 'view_statement' => 'Visualizar Declaração', 'statement' => 'Declaração', - 'statement_date' => 'Data da declaração', + 'statement_date' => 'Data da Declaração', 'mark_active' => 'Ativar', - 'send_automatically' => 'Enviar automaticamente', - 'initial_email' => 'Email inicial', + 'send_automatically' => 'Enviar Automaticamente', + 'initial_email' => 'Email Inicial', 'invoice_not_emailed' => 'Esta nota de pag. não foi enviada.', - 'quote_not_emailed' => 'Este orçamento não não foi enviado.', + 'quote_not_emailed' => 'Este orçamento não foi enviado.', 'sent_by' => 'Enviado por :user', 'recipients' => 'Destinatários', 'save_as_default' => 'Guardar como padrão', @@ -2118,18 +2118,18 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific // Updated login screen 'ninja_tagline' => 'Criar. Enviar. Ser Pago.', 'login_or_existing' => 'Ou iniciar sessão com uma conta ligada.', - 'sign_up_now' => 'Inicie sessão agora', + 'sign_up_now' => 'Inicie Sessão Agora', 'not_a_member_yet' => 'Ainda não é membro?', 'login_create_an_account' => 'Criar uma conta!', // New Client Portal styling 'invoice_from' => 'Notas de pag. From:', - 'email_alias_message' => 'Cada empresa deve ter um único email.
    Consider utilizar um alias. ex, email+label@example.com', - 'full_name' => 'Nome completo', + 'email_alias_message' => 'Cada empresa deve ter um único e-mail.
    Consider utilizar um pseudônimo. ex, email+label@example.com', + 'full_name' => 'Nome Completo', 'month_year' => 'MÊS/ANO', 'valid_thru' => 'Válido\npor', - 'product_fields' => 'Campos do produto', + 'product_fields' => 'Campos do Produto', 'custom_product_fields_help' => 'Adicionar um campo quando criar um produto ou nota de pag. e mostrar esse campo e valor no PDF.', 'freq_two_months' => 'Dois meses', 'freq_yearly' => 'Anualmente', @@ -2150,118 +2150,118 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'create_project' => 'Criar projeto', 'create_vendor' => 'Criar fornecedor', 'create_expense_category' => 'Criar categoria', - 'pro_plan_reports' => ':link para ativar relatórios aderindo ao plano Pro', - 'mark_ready' => 'Marcar concluido', + 'pro_plan_reports' => ':link para ativar relatórios aderindo ao plano Profissional', + 'mark_ready' => 'Marcar Concluido', 'limits' => 'Limites', 'fees' => 'Taxas', 'fee' => 'Taxa', - 'set_limits_fees' => 'Definir :gateway_type Limits/Fees', - 'fees_tax_help' => 'Ativar taxas do item para definir as taxas de imposto.', + 'set_limits_fees' => 'Definir :gateway_type Limites/Custos', + 'fees_tax_help' => 'Ativar taxas de produto para definir as taxas de imposto.', 'fees_sample' => 'A taxa para :amount nota de pag. deve ser :total.', 'discount_sample' => 'O desconto para :amount nota de pag. deve ser :total.', - 'no_fees' => 'Sem taxas', - 'gateway_fees_disclaimer' => 'Aviso: nem todos os estados/gateways de pagamento permitem adicionar taxas, por favor verifique a sua legislação/termos de serviço locais.', + 'no_fees' => 'Sem Taxas', + 'gateway_fees_disclaimer' => 'Aviso: nem todos os portais de pagamento permitem adicionar taxas, por favor verifique a sua legislação/termos de serviço locais.', 'percent' => 'Percentagem', 'location' => 'Localização', - 'line_item' => 'Item', - 'surcharge' => 'Sobretaxa', - 'location_first_surcharge' => 'Ativo - Primeira Sobretaxa', - 'location_second_surcharge' => 'Ativo - Segunda sobretaxa', - 'location_line_item' => 'Ativo - Item', + 'line_item' => 'Produto', + 'surcharge' => 'Taxa Extra', + 'location_first_surcharge' => 'Ativo - Primeira Taxa Extra', + 'location_second_surcharge' => 'Ativo - Segunda Taxa Extra', + 'location_line_item' => 'Ativo - Produto', 'online_payment_surcharge' => 'Taxa de Pagamento Online', - 'gateway_fees' => 'Taxas Gateway', + 'gateway_fees' => 'Taxas do Portal', 'fees_disabled' => 'Taxas estão desativadas', 'gateway_fees_help' => 'Automaticamente adicionar uma taxa/desconto ao pagamento online.', - 'gateway' => 'Gateway', + 'gateway' => 'Portal', 'gateway_fee_change_warning' => 'Se tiver notas de pag. não pagas terá que atualizar as taxas manualmente.', 'fees_surcharge_help' => 'Personalizar taxa :link.', - 'label_and_taxes' => 'etiquetas e impostos', + 'label_and_taxes' => 'legendas e impostos', 'billable' => 'Faturável', 'logo_warning_too_large' => 'A imagem é muito grande.', - 'logo_warning_fileinfo' => 'Aviso: Para suportar GIFSa extensão fileinfo PHP etem que estar ativa.', + 'logo_warning_fileinfo' => 'Aviso: Para suportar GIFS a extensão fileinfo PHP tem que estar ativa.', 'logo_warning_invalid' => 'Há um problemas a ler a imagem, por favor tente outro formato.', - 'error_refresh_page' => 'An error occurred, please refresh the page and try again.', + 'error_refresh_page' => 'Ocorreu um erro, atualize a página e tente novamente.', 'data' => 'Data', 'imported_settings' => 'Definições importadas com sucesso', - 'reset_counter' => 'Redefinir contador', - 'next_reset' => 'Próxima redefinição', - 'reset_counter_help' => 'Redefinir automaticamente os contadores das notas de pag. e dos orçamentos.', - 'auto_bill_failed' => 'Auto-faturar para a nota de pag. :invoice_number failed', + 'reset_counter' => 'Repor Contador', + 'next_reset' => 'Próxima Reposição', + 'reset_counter_help' => 'Repor automaticamente os contadores das notas de pag. e dos orçamentos.', + 'auto_bill_failed' => 'Faturamento automatico para a nota de pag. :invoice_number falhou', 'online_payment_discount' => 'Desconto de pagamento online', 'created_new_company' => 'Nova empresa criada com sucesso', - 'fees_disabled_for_gateway' => 'Taxas desativadas para este gateway.', - 'logout_and_delete' => 'Sair/Apagar conta', + 'fees_disabled_for_gateway' => 'Taxas desativadas para este portal.', + 'logout_and_delete' => 'Sair/Apagar Conta', 'tax_rate_type_help' => 'As taxas incluídas ajustam o custo da linha quando selecionadas.
    Apenas taxas exclusivas podem ser utilizadas como padrão.', 'invoice_footer_help' => 'Usar $pageNumber e $pageCount para mostrar a informação da página.', - 'credit_note' => 'Nota de crédito', + 'credit_note' => 'Nota de Crédito', 'credit_issued_to' => 'Crédito atribuido a', 'credit_to' => 'Crédito para', - 'your_credit' => 'A sua Nota de crédito', - 'credit_number' => 'Nota de rédito número', + 'your_credit' => 'A sua Nota de Crédito', + 'credit_number' => 'Nota de Crédito Número', 'create_credit_note' => 'Criar nota de crédito', 'menu' => 'Menu', - 'error_incorrect_gateway_ids' => 'Erro: A tabela de gateways tem ids incorretos.', - 'purge_data' => 'Purgar dados', - 'delete_data' => 'Apagar dados', + 'error_incorrect_gateway_ids' => 'Erro: A tabela do portal tem ids incorretos.', + 'purge_data' => 'Limpar Dados', + 'delete_data' => 'Apagar Dados', 'purge_data_help' => 'Excluir todos os dados permanentemente mas manter a conta e configurações.', 'cancel_account_help' => 'Apagar permanentemente a conta, todos os dados e as definições.', 'purge_successful' => 'Dados da empresa limpos com sucesso', 'forbidden' => 'Proibido', 'purge_data_message' => 'Aviso: apagará todos os seus dados.', - 'contact_phone' => 'Contato telefónico', + 'contact_phone' => 'Contato Telefónico', 'contact_email' => 'Email', 'reply_to_email' => 'Email de resposta', - 'reply_to_email_help' => 'Especificar o email de resposa para os clientes', - 'bcc_email_help' => 'Incluir este email com os emais do cliente.', + 'reply_to_email_help' => 'Especificar o e-mail de resposa para os clientes', + 'bcc_email_help' => 'Incluir este e-mail com os e-mais do cliente.', 'import_complete' => 'A importação está completa.', 'confirm_account_to_import' => 'Por favor confirme a sua conta para importar os dados.', 'import_started' => 'A importação começou, quando estiver completa receberá um email.', 'listening' => 'A ouvir...', - 'microphone_help' => 'Diga "nova nota de pag. para [cliente] ou "mostre-me o pagamentos arquivados de [cliente]"', + 'microphone_help' => 'Diga "nova nota de pag. para [cliente] ou "mostre-me os pagamentos arquivados do [cliente]"', 'voice_commands' => 'Comandos de voz', 'sample_commands' => 'Comandos de exemplo', - 'voice_commands_feedback' => 'Estamos a trabalhar para melhorar esta questão, se quiser por enviar-nos um email para :email.', + 'voice_commands_feedback' => 'Estamos a trabalhar para melhorar esta questão, se quiser pode enviar-nos um e-mail para :email.', 'payment_type_Venmo' => 'Venmo', - 'payment_type_Money Order' => 'Pedido com Dinheiro', + 'payment_type_Money Order' => 'Ordem de Pagamento', 'archived_products' => ':count Produtos arquivados com sucesso', 'recommend_on' => 'Recomendamos ativar esta definição.', 'recommend_off' => 'Recomendamos desativar esta definição.', - 'notes_auto_billed' => 'Auto-cobrado', - 'surcharge_label' => 'Etiqueta de Sobretaxa', - 'contact_fields' => 'Campos de contato', + 'notes_auto_billed' => 'Fatura Automática', + 'surcharge_label' => 'Etiqueta de taxa extra', + 'contact_fields' => 'Campos de Contato', 'custom_contact_fields_help' => 'Adicionar um campo na criação do contato e opcionalmente mostrar um rótulo e valor no PDF.', 'datatable_info' => 'A mostrar :start a :end de :total entradas', - 'credit_total' => 'Total em crédito', + 'credit_total' => 'Total em Crédito', 'mark_billable' => 'Marcar faturável', 'billed' => 'Faturado', - 'company_variables' => 'Variáveis da empresa', - 'client_variables' => 'Variáveis do cliente', - 'invoice_variables' => 'Variáveis da nota de pag.', - 'navigation_variables' => 'Variáveis de navegação', - 'custom_variables' => 'Variáveis personalizadas', + 'company_variables' => 'Variáveis da Empresa', + 'client_variables' => 'Variáveis do Cliente', + 'invoice_variables' => 'Variáveis da Nota de Pag.', + 'navigation_variables' => 'Variáveis de Navegação', + 'custom_variables' => 'Variáveis Personalizadas', 'invalid_file' => 'Tipo de ficheiro inválido', - 'add_documents_to_invoice' => 'Adicionar documento à nota de pag.', + 'add_documents_to_invoice' => 'Adicionar documentos à nota de pagamento', 'mark_expense_paid' => 'Marcar Pago', 'white_label_license_error' => 'Falhou a validar a licença, verifique storage/logs/laravel-error.log para mais detalhes.', - 'plan_price' => 'Plano de preço', + 'plan_price' => 'Preço do Plano', 'wrong_confirmation' => 'Código de confirmação incorreto', 'oauth_taken' => 'Esta conta já se encontra registada', - 'emailed_payment' => 'Pagamento enviado por email com sucesso', - 'email_payment' => 'Pagamento por Email', + 'emailed_payment' => 'Pagamento enviado por e-mail com sucesso', + 'email_payment' => 'Pagamento por E-mail', 'invoiceplane_import' => 'Utilize :link para migrar os seus dados do InvoicePlane.', 'duplicate_expense_warning' => 'Aviso: Este :link pode ser um duplicado', 'expense_link' => 'despesa', 'resume_task' => 'Continuar Tarefa', - 'resumed_task' => 'Tarefa continuada com sucesso', - 'quote_design' => 'Design do Orçamento', - 'default_design' => 'Design Padrão', - 'custom_design1' => 'Design Personalizado 1', - 'custom_design2' => 'Design Personalizado 2', - 'custom_design3' => 'Design Personalizado 3', + 'resumed_task' => 'Tarefa retomada com sucesso', + 'quote_design' => 'Modelo do Orçamento', + 'default_design' => 'Modelo Padrão', + 'custom_design1' => 'Modelo Personalizado 1', + 'custom_design2' => 'Modelo Personalizado 2', + 'custom_design3' => 'Modelo Personalizado 3', 'empty' => 'Vazio', - 'load_design' => 'Carregar Design', + 'load_design' => 'Carregar Modelo', 'accepted_card_logos' => 'Logótipos de Cartões Aceites', 'phantomjs_local_and_cloud' => 'A utilizar PhantomJS local, revertendo para phantomjscloud.com', 'google_analytics' => 'Google Analytics', @@ -2269,7 +2269,7 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'analytics_key_help' => 'Acompanhar pagamentos com :link', 'start_date_required' => 'A data de início é obrigatória', 'application_settings' => 'Configurações da Aplicação', - 'database_connection' => 'Ligação ao Banco de Dados', + 'database_connection' => 'Ligação à Base de Dados', 'driver' => 'Driver', 'host' => 'Servidor', 'database' => 'Base de Dados', @@ -2280,9 +2280,9 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'encryption' => 'Encriptação', 'mailgun_domain' => 'Domínio do Mailgun', 'mailgun_private_key' => 'Chave Privada do Mailgun', - 'send_test_email' => 'Enviar E-mail de teste', - 'select_label' => 'Selecione a Etiqueta', - 'label' => 'Etiqueta', + 'send_test_email' => 'Enviar e-mail de teste', + 'select_label' => 'Selecione a Legenda', + 'label' => 'Legenda', 'service' => 'Serviço', 'update_payment_details' => 'Atualizar dados de pagamento', 'updated_payment_details' => 'Dados de pagamento atualizados com sucesso', @@ -2298,7 +2298,7 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'archived_recurring_expense' => 'Despesa recorrente arquivada com sucesso', 'restore_recurring_expense' => 'Restaurar Despesa Recorrente', 'restored_recurring_expense' => 'Despesa recorrente restaurada com sucesso', - 'delete_recurring_expense' => 'Excluir Despesa Recorrente', + 'delete_recurring_expense' => 'Apagar Despesa Recorrente', 'deleted_recurring_expense' => 'Projeto apagado com sucesso', 'view_recurring_expense' => 'Visualizar Despesa Recorrente', 'taxes_and_fees' => 'Impostos e taxas', @@ -2318,18 +2318,18 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'late_fee_amount' => 'Quantia da Multa', 'late_fee_percent' => 'Percentagem da Multa', 'late_fee_added' => 'Multa por atraso adicionada em :date', - 'download_invoice' => 'Transferir nota de pagamento', + 'download_invoice' => 'Transferir Nota de Pagamento', 'download_quote' => 'Transferir Orçamento', 'invoices_are_attached' => 'As suas notas de pagamento em formato PDF estão anexadas', - 'downloaded_invoice' => 'Um E-mail será enviado com o ficheiro PDF da nota de pagamento', - 'downloaded_quote' => 'Um E-mail será enviado com o ficheiro PDF do orçamento', - 'downloaded_invoices' => 'Um E-mail será enviado com os ficheiros PDF das notas de pagamento', - 'downloaded_quotes' => 'Um E-mail será enviado com o ficheiros PDF dos orçamentos', - 'clone_expense' => 'Duplicar Despesas', + 'downloaded_invoice' => 'Um e-mail será enviado com o ficheiro PDF da nota de pagamento', + 'downloaded_quote' => 'Um e-mail será enviado com o ficheiro PDF do orçamento', + 'downloaded_invoices' => 'Um e-mail será enviado com os ficheiros PDF das notas de pagamento', + 'downloaded_quotes' => 'Um e-mail será enviado com o ficheiros PDF dos orçamentos', + 'clone_expense' => 'Duplicar Despesa', 'default_documents' => 'Documentos Pré-Definidos', - 'send_email_to_client' => 'Enviar E-mail para o cliente', + 'send_email_to_client' => 'Enviar e-mail para o cliente', 'refund_subject' => 'Reembolso Processado', - 'refund_body' => 'O reembolso do valor :amount da fatura :invoice_number foi processado.', + 'refund_body' => 'O reembolso de :amount da fatura :invoice_number foi processado.', 'currency_us_dollar' => 'Dólar dos EUA', 'currency_british_pound' => 'Libra Britânica', @@ -2450,7 +2450,7 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'use_english_version' => 'Assegure-se que usa as versões em Inglês dos arquivos.
    Utilizamos os cabeçalhos das colunas para referenciar os campos.', 'tax1' => 'Primeiro Imposto', 'tax2' => 'Segundo Imposto', - 'fee_help' => 'Taxas de terminal são os custos cobrados por aceder as redes financeiras que tratam do processamento de pagamentos online.', + 'fee_help' => 'Taxas de terminal são os custos cobrados por aceder às redes financeiras que tratam do processamento de pagamentos online.', 'format_export' => 'Formato de exportação', 'custom1' => 'Primeiro Personalizado', 'custom2' => 'Segundo Personalizado', @@ -2462,18 +2462,18 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'ofx_help' => 'Para investigar erros verifique os comentários em :ofxhome_link e teste com :ofxget_link.', 'comments' => 'comentários', - 'item_product' => 'Produto do Item', - 'item_notes' => 'Notas do Item', - 'item_cost' => 'Custo do Item', - 'item_quantity' => 'Quantidade do Item', - 'item_tax_rate' => 'Tarifa do Imposto do Item', - 'item_tax_name' => 'Nome do Imposto do Item', - 'item_tax1' => 'Imposto1 do Item', - 'item_tax2' => 'Imposto2 do Item', + 'item_product' => 'Detalhes do Produto', + 'item_notes' => 'Detalhes das Notas', + 'item_cost' => 'Detalhes do Custo', + 'item_quantity' => 'Detalhes da Quantidade', + 'item_tax_rate' => 'Detalhes da Taxa do Imposto', + 'item_tax_name' => 'Detalhes do Nome da Taxa', + 'item_tax1' => 'Detalhes do Imposto 1', + 'item_tax2' => 'Detalhes do Imposto 2', 'delete_company' => 'Apagar Empresa', 'delete_company_help' => 'Apagar permanentemente a empresa junto com todos seus dados e configurações.', - 'delete_company_message' => 'Aviso: Esta ação irá apagar permanentemente sua empresa, não há como desfazê-la.', + 'delete_company_message' => 'Aviso: Esta ação irá apagar permanentemente a sua empresa, não há como desfazê-la.', 'applied_discount' => 'O cupão foi aplicado, o preço do plano foi reduzido em :discount%.', 'applied_free_year' => 'O cupão foi aplicado, a sua conta foi atualizada para o plano Profissional por um ano.', @@ -2500,17 +2500,17 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'enable_sofort' => 'Aceitar Transferências Bancárias da UE', 'stripe_alipay_help' => 'Estes terminais também precisam ser ativados em :link.', 'calendar' => 'Calendário', - 'pro_plan_calendar' => ':link para habilitar o calendário juntando-se ao Plano Profissional', + 'pro_plan_calendar' => ':link para ativar o calendário juntando-se ao Plano Profissional', 'what_are_you_working_on' => 'No que está a trabalhar?', 'time_tracker' => 'Controlador de Tempo', 'refresh' => 'Atualizar', 'filter_sort' => 'Filtrar/Ordenar', 'no_description' => 'Sem Descrição', - 'time_tracker_login' => 'Login no Rastreador de Tempo', - 'save_or_discard' => 'Guarde ou descarte suas mudanças', - 'discard_changes' => 'Descartar Mudanças', - 'tasks_not_enabled' => 'As tarefas não estão habilitadas.', + 'time_tracker_login' => 'Login no Controlador de Tempo', + 'save_or_discard' => 'Guarde ou rejeite suas mudanças', + 'discard_changes' => 'Rejeitar Mudanças', + 'tasks_not_enabled' => 'As tarefas não estão ativadas.', 'started_task' => 'Tarefa iniciada com sucesso', 'create_client' => 'Criar Cliente', @@ -2523,7 +2523,7 @@ Quando tiver os valores dos depósitos, volte a esta página e conclua a verific 'descending' => 'Descendente', 'sort_field' => 'Ordenar por', 'sort_direction' => 'Direção', - 'discard' => 'Descartar', + 'discard' => 'Rejeitar', 'time_am' => 'AM', 'time_pm' => 'PM', 'time_mins' => 'min', @@ -2546,48 +2546,48 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'purchase' => 'Comprar', 'recover' => 'Recuperar', 'apply' => 'Aplicar', - 'recover_white_label_header' => 'Recuperar Licença White Label', - 'apply_white_label_header' => 'Aplicar Licença White Label', + 'recover_white_label_header' => 'Recuperar Licença Marca Branca', + 'apply_white_label_header' => 'Aplicar Licença Marca Branca', 'videos' => 'Vídeos', 'video' => 'Vídeo', - 'return_to_invoice' => 'Retornar à Fatura', + 'return_to_invoice' => 'Voltar à Fatura', 'gateway_help_13' => 'Para utilizar ITN deixe o campo Chave PDT em branco.', 'partial_due_date' => 'Data de Vencimento Parcial', 'task_fields' => 'Campos de Tarefas', 'product_fields_help' => 'Arraste e solte campos para mudar sua ordem', - 'custom_value1' => 'Valor personalizado', - 'custom_value2' => 'Valor personalizado', + 'custom_value1' => 'Valor Personalizado', + 'custom_value2' => 'Valor Personalizado', 'enable_two_factor' => 'Autenticação de Dois Fatores', 'enable_two_factor_help' => 'Utilize o seu telemóvel para confirmar a identidade ao iniciar sessão', 'two_factor_setup' => 'Configurar autenticação de dois fatores', 'two_factor_setup_help' => 'Ler o código de barras com uma :link aplicação compatível.', - 'one_time_password' => 'Palavra-passe descartável', - 'set_phone_for_two_factor' => 'Defina seu número de telemóvel como um backup para ativar.', + 'one_time_password' => 'Senha descartável', + 'set_phone_for_two_factor' => 'Defina seu número de telemóvel como uma cópia de segurança para ativar.', 'enabled_two_factor' => 'Autenticação de Dois Fatores ativada com sucesso', - 'add_product' => 'Adicionar produto', + 'add_product' => 'Adicionar Produto', 'email_will_be_sent_on' => 'Nota: o e-mail será enviado no dia :date.', 'invoice_product' => 'Faturar Produto', - 'self_host_login' => 'Login Auto-Hospedado', - 'set_self_hoat_url' => 'URL de Auto-Hospedado', + 'self_host_login' => 'Iniciar Sessão Servidor Pessoal', + 'set_self_hoat_url' => 'URL do Servidor Pessoal', 'local_storage_required' => 'Erro: armazenamento local não está disponível.', - 'your_password_reset_link' => 'Endereço para recuperação da palavra-passe', + 'your_password_reset_link' => 'Endereço para recuperação da senha', 'subdomain_taken' => 'Este subdomínio já está a ser utilizado', 'client_login' => 'Iniciar sessão como cliente', - 'converted_amount' => 'Valor convertido', - 'default' => 'Pré-definido', - 'shipping_address' => 'Endereço de envio', - 'bllling_address' => 'Endereço de faturação', + 'converted_amount' => 'Valor Convertido', + 'default' => 'Padrão', + 'shipping_address' => 'Endereço de Envio', + 'bllling_address' => 'Endereço da Faturação', 'billing_address1' => 'Rua de Faturação', - 'billing_address2' => 'Andar / Fração de Faturação', - 'billing_city' => 'Cidade de Faturação', - 'billing_state' => 'Distrito / Região de Faturação', - 'billing_postal_code' => 'Código postal de Faturação', + 'billing_address2' => 'Andar / Fração da Faturação', + 'billing_city' => 'Cidade da Faturação', + 'billing_state' => 'Distrito / Região da Faturação', + 'billing_postal_code' => 'Código Postal da Faturação', 'billing_country' => 'País de Faturação', 'shipping_address1' => 'Rua de Faturação', 'shipping_address2' => 'Andar / Fração de Envio', 'shipping_city' => 'Cidade de Envio', 'shipping_state' => 'Distrito / Região de Envio', - 'shipping_postal_code' => 'Código postal de Envio', + 'shipping_postal_code' => 'Código Postal de Envio', 'shipping_country' => 'País de Envio', 'classify' => 'Classificar', 'show_shipping_address_help' => 'Exigir que o cliente forneça seu endereço de envio', @@ -2599,9 +2599,9 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'scheduled_report_help' => 'Enviar o :report relatório em :format para :email', 'created_scheduled_report' => 'Relatório agendado com sucesso', 'deleted_scheduled_report' => 'Relatório agendado foi cancelado com sucesso', - 'scheduled_report_attached' => 'O relatório agendado de :type está anexo.', + 'scheduled_report_attached' => 'O relatório agendado de :type está anexado.', 'scheduled_report_error' => 'Falha ao criar relatório agendado', - 'invalid_one_time_password' => 'Palavra-passe descartável inválida', + 'invalid_one_time_password' => 'Senha descartável inválida', 'apple_pay' => 'Apple/Google Pay', 'enable_apple_pay' => 'Aceitar Apple Pay e Pay with Google', 'requires_subdomain' => 'Este tipo de pagamento requer um :link.', @@ -2639,34 +2639,34 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'subscriptions' => 'Subscrições', 'updated_subscription' => 'Subscrição atualizada com sucesso', 'created_subscription' => 'Subscrição criada com sucesso', - 'edit_subscription' => 'Editar subscrição', - 'archive_subscription' => 'Arquivar subscrição', + 'edit_subscription' => 'Editar Subscrição', + 'archive_subscription' => 'Arquivar Subscrição', 'archived_subscription' => 'Subscrição arquivada com sucesso', 'project_error_multiple_clients' => 'Os projetos não podem pertencer a clientes diferentes', 'invoice_project' => 'Faturar Projeto', - 'module_recurring_invoice' => 'Nota de Pagamento Recorrentes', + 'module_recurring_invoice' => 'Notas de Pagamento Recorrentes', 'module_credit' => 'Créditos', 'module_quote' => 'Orçamentos e Propostas', 'module_task' => 'Tarefas & Projetos', 'module_expense' => 'Despesas & Fornecedores', - 'module_ticket' => 'Tickets', - 'reminders' => 'Lembretes', - 'send_client_reminders' => 'Enviar lembretes por e-mail', + 'module_ticket' => 'Bilhete', + 'reminders' => 'Avisos', + 'send_client_reminders' => 'Enviar avisos por e-mail', 'can_view_tasks' => 'Tarefas são visíveis no portal', - 'is_not_sent_reminders' => 'Lembretes não são enviados', + 'is_not_sent_reminders' => 'Avisos não são enviados', 'promotion_footer' => 'A promoção expira brevemente, :link para atualizar agora.', 'unable_to_delete_primary' => 'Nota: para apagar esta empresa apague primeiro todas as empresas vinculadas.', 'please_register' => 'Por favor crie a sua conta', 'processing_request' => 'A processar pedido', - 'mcrypt_warning' => 'Aviso: O Mcrypt está obsoleto, execute :command para atualizar a sua cifra.', + 'mcrypt_warning' => 'Aviso: O Mcrypt está ultrapassado, execute :command para atualizar o seu código.', 'edit_times' => 'Editar Tempos', 'inclusive_taxes_help' => 'Incluir impostos no preço', 'inclusive_taxes_notice' => 'Esta configuração não pode ser modificada após a criação da nota de pagamento.', 'inclusive_taxes_warning' => 'Aviso: notas de pagamento existentes terão que ser guardadas novamente', 'copy_shipping' => 'Copiar Envio', - 'copy_billing' => 'Copiar Cobrança', + 'copy_billing' => 'Copiar Faturamento', 'quote_has_expired' => 'O orçamento expirou, por favor contate o vendedor.', - 'empty_table_footer' => 'A mostrar 0 de 0 no total de 0 registos', + 'empty_table_footer' => 'A mostrar 0 registos', 'do_not_trust' => 'Não lembrar deste dispositivo', 'trust_for_30_days' => 'Confiar por 30 dias', 'trust_forever' => 'Confiar sempre', @@ -2674,30 +2674,30 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'backlog' => 'Backlog', 'ready_to_do' => 'Preparado para', 'in_progress' => 'Em progresso', - 'add_status' => 'Adicionar estado', + 'add_status' => 'Adicionar Estado', 'archive_status' => 'Arquivar Estado', - 'new_status' => 'Novo estado', + 'new_status' => 'Novo Estado', 'convert_products' => 'Converter Produtos', 'convert_products_help' => 'Converter automaticamente preços de produtos para a moeda do cliente', - 'improve_client_portal_link' => 'Definir um subdomínio para diminuir o link do portal do cliente.', - 'budgeted_hours' => 'Horas Orçadas', + 'improve_client_portal_link' => 'Definir um subdomínio para diminuir o endereço do portal do cliente.', + 'budgeted_hours' => 'Horas de Orçamento', 'progress' => 'Progresso', 'view_project' => 'Visualizar Projeto', 'summary' => 'Sumário', - 'endless_reminder' => 'Lembrete contínuo', + 'endless_reminder' => 'Aviso Contínuo', 'signature_on_invoice_help' => 'Adicione o seguinte código para mostrar a assinatura do seu cliente no PDF.', 'signature_on_pdf' => 'Mostrar no PDF', 'signature_on_pdf_help' => 'Mostrar a assinatura do cliente no PDF da nota de pagamento/orçamento.', - 'expired_white_label' => 'A licença white-label expirou', + 'expired_white_label' => 'A licença de marca branca expirou', 'return_to_login' => 'Voltar ao Inicio de Sessão', 'convert_products_tip' => 'Nota: adicione um :link chamado ":name" para ver a taxa de câmbio', 'amount_greater_than_balance' => 'A quantia é maior que o balanço da fatura, um crédito será criado com a quantia restante.', - 'custom_fields_tip' => 'Utilize Rótulo|Opção1|Opção2 para exibir uma caixa de seleção.', + 'custom_fields_tip' => 'Utilize Legenda|Opção1|Opção2 para exibir uma caixa de seleção.', 'client_information' => 'Informação do Cliente', 'updated_client_details' => 'Detalhes do cliente atualizados com sucesso', - 'auto' => 'Auto', - 'tax_amount' => 'Quantia de Impostos', - 'tax_paid' => 'Impostos pagos', + 'auto' => 'Automático', + 'tax_amount' => 'Total de Impostos', + 'tax_paid' => 'Impostos Pagos', 'none' => 'Nenhum', 'proposal_message_button' => 'Para ver a sua proposta para :amount, clique no botão abaixo.', 'proposal' => 'Proposta', @@ -2731,7 +2731,7 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'deleted_proposal_snippets' => ':count Recortes arquivados com sucesso', 'restored_proposal_snippet' => 'Recorte restaurado com sucesso', 'restore_proposal_snippet' => 'Restaurar Recorte', - 'template' => 'Template', + 'template' => 'Modelo', 'templates' => 'Modelos', 'proposal_template' => 'Modelo', 'proposal_templates' => 'Modelos', @@ -2770,9 +2770,9 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'proposal_email' => 'E-mail de Proposta', 'proposal_subject' => 'Nova proposta :number de :account', 'proposal_message' => 'Para visualizar sua proposta para :amount, clique no link abaixo.', - 'emailed_proposal' => 'Proposta enviada por E-mail com sucesso', + 'emailed_proposal' => 'Proposta enviada por e-mail com sucesso', 'load_template' => 'Carregar Modelo', - 'no_assets' => 'Sem imagens, arraste para fazer upload', + 'no_assets' => 'Sem imagens, arraste para carregar', 'add_image' => 'Adicionar Imagem', 'select_image' => 'Selecionar Imagem', 'upgrade_to_upload_images' => 'Atualizar para o plano empresarial para enviar imagens', @@ -2784,17 +2784,17 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'change_requires_purge' => 'Alterar esta configuração requer :link para os dados da conta.', 'purging' => 'a limpar', 'warning_local_refund' => 'O reembolso será registado na aplicação mas NÃO será processado pelo terminal de pagamento.', - 'email_address_changed' => 'O endereço de E-mail foi alterado', + 'email_address_changed' => 'O endereço de e-mail foi alterado', 'email_address_changed_message' => 'O endereço de E-mail para sua conta foi alterado de :old_email to :new_email.', 'test' => 'Teste', 'beta' => 'Beta', 'gmp_required' => 'A exportação para ZIP requer a extensão GMP', - 'email_history' => 'Histórico de E-mails', + 'email_history' => 'Histórico de e-mails', 'loading' => 'A Carregar', 'no_messages_found' => 'Não foram encontradas mensagens', 'processing' => 'A Processar', 'reactivate' => 'Reativar', - 'reactivated_email' => 'O endereço de email foi reativado', + 'reactivated_email' => 'O endereço de e-mail foi reativado', 'emails' => 'E-mails', 'opened' => 'Aberto', 'bounced' => 'Devolvido', @@ -2803,7 +2803,7 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'total_bounced' => 'Total Devolvido', 'total_spam' => 'Total Spam', 'platforms' => 'Plataformas', - 'email_clients' => 'Clientes de E-mail', + 'email_clients' => 'E-mail dos Clientes', 'mobile' => 'Móvel', 'desktop' => 'Desktop', 'webmail' => 'Webmail', @@ -2854,19 +2854,19 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'vendor_field' => 'Campo do Fornecedor', 'company_field' => 'Campo da Empresa', 'invoice_field' => 'Campo da Nota de Pagamento', - 'invoice_surcharge' => 'Sobretaxa de Fatura', + 'invoice_surcharge' => 'Taxa Extra da Fatura', 'custom_task_fields_help' => 'Adicionar um campo na criação de uma tarefa.', 'custom_project_fields_help' => 'Adicionar um campo na criação de um projeto.', 'custom_expense_fields_help' => 'Adicionar um campo na criação de uma despesa.', 'custom_vendor_fields_help' => 'Adicionar um campo na criação de um fornecedor.', 'messages' => 'Mensagens', - 'unpaid_invoice' => 'Nota de Pagamento não Paga', + 'unpaid_invoice' => 'Nota de Pagamento Não Paga', 'paid_invoice' => 'Nota de Pagamento Paga', 'unapproved_quote' => 'Orçamento não Aprovado', 'unapproved_proposal' => 'Proposta não Aprovada', - 'autofills_city_state' => 'Auto-preencher cidade/distrito', + 'autofills_city_state' => 'Preencher automaticamente cidade/distrito', 'no_match_found' => 'Nenhum resultado encontrado', - 'password_strength' => 'Segurança da Palavra-passe', + 'password_strength' => 'Segurança da Senha', 'strength_weak' => 'Fraca', 'strength_good' => 'Boa', 'strength_strong' => 'Forte', @@ -2891,8 +2891,8 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'maximum' => 'Máximo', 'sort' => 'Ordenar', 'refresh_complete' => 'Recarregar Completo', - 'please_enter_your_email' => 'Por favor introduza o seu E-mail', - 'please_enter_your_password' => 'Por favor introduza a sua palavra-passe', + 'please_enter_your_email' => 'Por favor introduza o seu e-mail', + 'please_enter_your_password' => 'Por favor introduza a sua senha', 'please_enter_your_url' => 'Por favor introduza o seu URL', 'please_enter_a_product_key' => 'Por favor introduza uma chave de produto', 'an_error_occurred' => 'Ocorreu um erro', @@ -2902,14 +2902,14 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'could_not_launch' => 'Não foi possível iniciar', 'additional' => 'Adicional', 'ok' => 'Ok', - 'email_is_invalid' => 'Email é inválido', - 'items' => 'Itens', + 'email_is_invalid' => 'E-mail é inválido', + 'items' => 'Produtos', 'partial_deposit' => 'Depósito/Parcial', - 'add_item' => 'Adicionar Item', + 'add_item' => 'Adicionar Produto', 'total_amount' => 'Quantia Total', 'pdf' => 'PDF', 'invoice_status_id' => 'Estado da Nota de Pagamento', - 'click_plus_to_add_item' => 'Clique + para adicionar um item', + 'click_plus_to_add_item' => 'Clique + para adicionar um produto', 'count_selected' => ':count selecionados', 'dismiss' => 'Dispensar', 'please_select_a_date' => 'Por favor selecione uma data', @@ -2927,7 +2927,7 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'invoice_status_4' => 'Aprovado', 'invoice_status_5' => 'Parcial', 'invoice_status_6' => 'Pago', - 'marked_invoice_as_sent' => 'Sucesso! A nota de pagamento foi marcada como enviada.', + 'marked_invoice_as_sent' => 'A nota de pagamento foi marcada como enviada.', 'please_enter_a_client_or_contact_name' => 'Por favor introduza um cliente ou nome de contacto', 'restart_app_to_apply_change' => 'Reinicie a aplicação para aplicar a mudança', 'refresh_data' => 'Atualizar Dados', @@ -2935,14 +2935,14 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'no_records_found' => 'Nenhum registo encontrado', 'industry' => 'Indústria', 'size' => 'Tamanho', - 'net' => 'Net', - 'show_tasks' => 'Exibir tarefas', - 'email_reminders' => 'Lembretes de E-mail', - 'reminder1' => 'Primeiro Lembrete', - 'reminder2' => 'Segundo Lembrete', - 'reminder3' => 'Terceiro Lembrete', + 'net' => 'Líquido', + 'show_tasks' => 'Mostrar tarefas', + 'email_reminders' => 'Avisos de e-mail', + 'reminder1' => 'Primeiro Aviso', + 'reminder2' => 'Segundo Aviso', + 'reminder3' => 'Terceiro Aviso', 'send' => 'Enviar', - 'auto_billing' => 'Cobrança automática', + 'auto_billing' => 'Faturamento automática', 'button' => 'Botão', 'more' => 'Mais', 'edit_recurring_invoice' => 'Editar Fatura Recorrente', @@ -2961,19 +2961,19 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'refunded' => 'Reembolsado', 'marked_quote_as_sent' => 'Orçamento marcado como enviado com sucesso', 'custom_module_settings' => 'Configurações Personalizadas de Módulo', - 'ticket' => 'Ticket', - 'tickets' => 'Tickets', - 'ticket_number' => 'Ticket #', - 'new_ticket' => 'Novo Ticket', - 'edit_ticket' => 'Editar Ticket', - 'view_ticket' => 'Visualizar Ticket', - 'archive_ticket' => 'Arquivar Ticket', - 'restore_ticket' => 'Restaurar Ticket', - 'delete_ticket' => 'Apagar Ticket', - 'archived_ticket' => 'Ticket arquivado com sucesso', - 'archived_tickets' => 'Tickets arquivados com sucesso', - 'restored_ticket' => 'Ticket restaurado com sucesso', - 'deleted_ticket' => 'Ticket apagado com sucesso', + 'ticket' => 'Bilhete', + 'tickets' => 'Bilhetes', + 'ticket_number' => 'Bilhete #', + 'new_ticket' => 'Novo Bilhete', + 'edit_ticket' => 'Editar Bilhete', + 'view_ticket' => 'Visualizar Bilhete', + 'archive_ticket' => 'Arquivar Bilhete', + 'restore_ticket' => 'Restaurar Bilhete', + 'delete_ticket' => 'Apagar Bilhete', + 'archived_ticket' => 'Bilhete arquivado com sucesso', + 'archived_tickets' => 'Bilhetes arquivados com sucesso', + 'restored_ticket' => 'Bilhete restaurado com sucesso', + 'deleted_ticket' => 'Bilhete apagado com sucesso', 'open' => 'Aberto', 'new' => 'Novo', 'closed' => 'Fechado', @@ -2990,51 +2990,51 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'assigned_to' => 'Atribuído para', 'reply' => 'Responder', 'awaiting_reply' => 'Aguarda Resposta', - 'ticket_close' => 'Fechar Ticket', - 'ticket_reopen' => 'Reabrir Ticket', - 'ticket_open' => 'Abrir Ticket', - 'ticket_split' => 'Dividir Ticket', - 'ticket_merge' => 'Unir Ticket', - 'ticket_update' => 'Atualizar Ticket', - 'ticket_settings' => 'Configurações do Ticket', - 'updated_ticket' => 'Ticket Atualizado', + 'ticket_close' => 'Fechar Bilhete', + 'ticket_reopen' => 'Reabrir Bilhete', + 'ticket_open' => 'Abrir Bilhete', + 'ticket_split' => 'Dividir Bilhete', + 'ticket_merge' => 'Unir Bilhete', + 'ticket_update' => 'Atualizar Bilhete', + 'ticket_settings' => 'Configurações do Bilhete', + 'updated_ticket' => 'Bilhete Atualizado', 'mark_spam' => 'Marcar como Spam', 'local_part' => 'Parte Local', 'local_part_unavailable' => 'Nome indisponível', 'local_part_available' => 'Nome disponível', 'local_part_invalid' => 'Nome inválido (apenas alfanuméricos, sem espaços)', - 'local_part_help' => 'Personalizar a parte local de sua caixa de email de entrada. Ex: SEU_NOME@support.invoiceninja.com', + 'local_part_help' => 'Personalizar a parte local do seu e-mail da caixa de entrada. Ex: SEU_NOME@support.invoiceninja.com', 'from_name_help' => 'Nome do remetente é o texto disponibilizado para ser mostrado ao invés do endereço de email. Ex: Centro de Suporte', 'local_part_placeholder' => 'SEU_NOME', - 'from_name_placeholder' => 'Centro de Suporte', + 'from_name_placeholder' => 'Centro de Ajuda', 'attachments' => 'Anexos', - 'client_upload' => 'Uploads do Cliente', + 'client_upload' => 'Carregamentos do Cliente', 'enable_client_upload_help' => 'Permitir que clientes enviem documentos/anexos', - 'max_file_size_help' => 'O tamanho máximo de arquivo (KB) é limitado pelas suas variáveis post_max_size e upload_max_filesize definidos no ficheiro PHP.INI', + 'max_file_size_help' => 'O tamanho máximo do ficheiro (KB) é limitado pelas suas variáveis post_max_size e upload_max_filesize definidos no ficheiro PHP.INI', 'max_file_size' => 'Tamanho máximo do ficheiro', 'mime_types' => 'Tipos MIME', 'mime_types_placeholder' => '.pdf , .docx , .jpg', 'mime_types_help' => 'Lista separada por vírgulas de tipos MIME permitidos, deixe em branco para TODOS', - 'ticket_number_start_help' => 'O número do Ticket precisa ser maior que o número de ticket atual', - 'new_ticket_template_id' => 'Novo Ticket', - 'new_ticket_autoresponder_help' => 'Selecionar um modelo enviará uma resposta automática para um cliente/contato quando um novo Ticket for criado', - 'update_ticket_template_id' => 'Ticket atualizado', - 'update_ticket_autoresponder_help' => 'Selecionar um modelo enviará uma resposta automática para um cliente/contato quando um novo Ticket for atualizado', - 'close_ticket_template_id' => 'Ticket fechado', - 'close_ticket_autoresponder_help' => 'Selecionar um modelo enviará uma resposta automática para um cliente/contato quando um novo Ticket for fechado', + 'ticket_number_start_help' => 'O número do Bilhete precisa ser maior que o número de Bilhete atual', + 'new_ticket_template_id' => 'Novo Bilhete', + 'new_ticket_autoresponder_help' => 'Selecionar um modelo enviará uma resposta automática para um cliente/contato quando um novo bilhete for criado', + 'update_ticket_template_id' => 'Bilhete atualizado', + 'update_ticket_autoresponder_help' => 'Selecionar um modelo enviará uma resposta automática para um cliente/contato quando um novo Bilhete for atualizado', + 'close_ticket_template_id' => 'Bilhete fechado', + 'close_ticket_autoresponder_help' => 'Selecionar um modelo enviará uma resposta automática para um cliente/contato quando um novo Bilhete for fechado', 'default_priority' => 'Prioridade Padrão', 'alert_new_comment_id' => 'Novo comentário', 'alert_comment_ticket_help' => 'Selecionar um modelo enviará uma notificação (para um agente) quando um novo comentário for feito.', - 'alert_comment_ticket_email_help' => 'Emails separados por vírgulas para bcc após um novo comentário.', - 'new_ticket_notification_list' => 'Notificações adicionais de novo ticket', + 'alert_comment_ticket_email_help' => 'E-mails separados por vírgulas para bcc após um novo comentário.', + 'new_ticket_notification_list' => 'Notificações adicionais de novo bilhete', 'update_ticket_notification_list' => 'Notificações adicionais de novo comentário', 'comma_separated_values' => 'admin@example.com, supervisor@example.com', - 'alert_ticket_assign_agent_id' => 'Atribuição de Ticket', - 'alert_ticket_assign_agent_id_hel' => 'Selecionar um modelo enviará uma notificação (para um agente) quando um ticket for atribuído.', - 'alert_ticket_assign_agent_id_notifications' => 'Notificações adicionais de ticket atribuído', - 'alert_ticket_assign_agent_id_help' => 'Emails separados por vírgulas para bcc após atribuição de ticket.', - 'alert_ticket_transfer_email_help' => 'Emails separados por vírgulas para bcc após transferência de ticket.', - 'alert_ticket_overdue_agent_id' => 'Atraso de Ticket', + 'alert_ticket_assign_agent_id' => 'Atribuição de Bilhete', + 'alert_ticket_assign_agent_id_hel' => 'Selecionar um modelo enviará uma notificação (para um agente) quando um bilhete for atribuído.', + 'alert_ticket_assign_agent_id_notifications' => 'Notificações adicionais de bilhete atribuído', + 'alert_ticket_assign_agent_id_help' => 'E-mails separados por vírgulas para bcc após atribuição de bilhete.', + 'alert_ticket_transfer_email_help' => 'Emails separados por vírgulas para bcc após transferência de bilhete.', + 'alert_ticket_overdue_agent_id' => 'Atraso de Bilhete', 'alert_ticket_overdue_email' => 'Notificações adicionais de ticket atrasado', 'alert_ticket_overdue_email_help' => 'Emails separados por vírgulas para bcc após atraso de ticket. ', 'alert_ticket_overdue_agent_id_help' => 'Selecionar um modelo enviará uma notificação (para um agente) quando um ticket atrasar. ', @@ -3088,8 +3088,8 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'custom_client1' => ':VALUE', 'custom_client2' => ':VALUE', 'compare' => 'Comparar', - 'hosted_login' => 'Login Hospedado', - 'selfhost_login' => 'Login Auto-Hospedado', + 'hosted_login' => 'Login Alojado', + 'selfhost_login' => 'Login Servidor Pessoal', 'google_login' => 'Login via Google', 'thanks_for_patience' => 'Obrigado por sua paciência enquanto trabalhamos para implementar estas funcionalidades.\n\nEsperamos tê-las concluídas nos próximos meses.\n\nAté lá, continuaremos a dar suporte ao', 'legacy_mobile_app' => 'Aplicação Móvel legacy', @@ -3127,7 +3127,7 @@ debitar da sua conta de acordo com essas instruções. Está elegível a um reem 'please_enter_a_name' => 'Por favor introduza um nome', 'click_plus_to_add_time' => 'Clique + para adicionar tempo', 'design' => 'Modelo', - 'password_is_too_short' => 'A palavra-passe é muito curta', + 'password_is_too_short' => 'A senha é muito curta', 'failed_to_find_record' => 'Falha ao procurar registo', 'valid_until_days' => 'Válido até', 'valid_until_days_help' => 'Define automaticamente o valor Válido até nas cotações para muitos dias no futuro. Deixe em branco para desativar.', @@ -4436,7 +4436,7 @@ O envio de E-mails foi suspenso. Será retomado às 23:00 UTC.', 'end_all_sessions' => 'End All Sessions', 'count_session' => '1 Session', 'count_sessions' => ':count Sessions', - 'invoice_created' => 'Invoice Created', + 'invoice_created' => 'Nota De Pagamento Criada', 'quote_created' => 'Quote Created', 'credit_created' => 'Credit Created', 'enterprise' => 'Enterprise', @@ -4586,7 +4586,7 @@ O envio de E-mails foi suspenso. Será retomado às 23:00 UTC.', 'center' => 'Center', 'page_numbering' => 'Page Numbering', 'page_numbering_alignment' => 'Page Numbering Alignment', - 'invoice_sent_notification_label' => 'Invoice Sent', + 'invoice_sent_notification_label' => 'Nota de Pagamento Enviada', 'show_product_description' => 'Show Product Description', 'show_product_description_help' => 'Include the description in the product dropdown', 'invoice_items' => 'Invoice Items', @@ -4599,7 +4599,7 @@ O envio de E-mails foi suspenso. Será retomado às 23:00 UTC.', 'stop_on_unpaid_help' => 'Stop creating recurring invoices if the last invoice is unpaid.', 'use_quote_terms' => 'Use Quote Terms', 'use_quote_terms_help' => 'When converting a quote to an invoice', - 'add_country' => 'Add Country', + 'add_country' => 'Adicionar País', 'enable_tooltips' => 'Enable Tooltips', 'enable_tooltips_help' => 'Show tooltips when hovering the mouse', 'multiple_client_error' => 'Error: records belong to more than one client', @@ -4631,6 +4631,102 @@ O envio de E-mails foi suspenso. Será retomado às 23:00 UTC.', 'notification_purchase_order_accepted_subject' => 'Purchase Order :purchase_order was accepted by :vendor', 'notification_purchase_order_accepted' => 'The following vendor :vendor accepted Purchase Order :purchase_order for :amount.', 'amount_received' => 'Amount received', + 'purchase_order_already_expensed' => 'Already converted to an expense.', + 'convert_to_expense' => 'Convert to Expense', + 'add_to_inventory' => 'Add to Inventory', + 'added_purchase_order_to_inventory' => 'Successfully added purchase order to inventory', + 'added_purchase_orders_to_inventory' => 'Successfully added purchase orders to inventory', + 'client_document_upload' => 'Client Document Upload', + 'vendor_document_upload' => 'Vendor Document Upload', + 'vendor_document_upload_help' => 'Enable vendors to upload documents', + 'are_you_enjoying_the_app' => 'Are you enjoying the app?', + 'yes_its_great' => 'Yes, it"s great!', + 'not_so_much' => 'Not so much', + 'would_you_rate_it' => 'Great to hear! Would you like to rate it?', + 'would_you_tell_us_more' => 'Sorry to hear it! Would you like to tell us more?', + 'sure_happy_to' => 'Sure, happy to', + 'no_not_now' => 'No, not now', + 'add' => 'Add', + 'last_sent_template' => 'Last Sent Template', + 'enable_flexible_search' => 'Enable Flexible Search', + 'enable_flexible_search_help' => 'Match non-contiguous characters, ie. "ct" matches "cat"', + 'vendor_details' => 'Vendor Details', + 'purchase_order_details' => 'Purchase Order Details', + 'qr_iban' => 'QR IBAN', + 'besr_id' => 'BESR ID', + 'clone_to_purchase_order' => 'Clone to PO', + 'vendor_email_not_set' => 'Vendor does not have an email address set', + 'bulk_send_email' => 'Send Email', + 'marked_purchase_order_as_sent' => 'Successfully marked purchase order as sent', + 'marked_purchase_orders_as_sent' => 'Successfully marked purchase orders as sent', + 'accepted_purchase_order' => 'Successfully accepted purchase order', + 'accepted_purchase_orders' => 'Successfully accepted purchase orders', + 'cancelled_purchase_order' => 'Successfully cancelled purchase order', + 'cancelled_purchase_orders' => 'Successfully cancelled purchase orders', + 'please_select_a_vendor' => 'Please select a vendor', + 'purchase_order_total' => 'Purchase Order Total', + 'email_purchase_order' => 'Email Purchase Order', + 'bulk_email_purchase_order' => 'Email Purchase Order', + 'disconnected_email' => 'Successfully disconnected email', + 'connect_email' => 'Connect Email', + 'disconnect_email' => 'Disconnect Email', + 'use_web_app_to_connect_microsoft' => 'Please use the web app to connect to Microsoft', + 'email_provider' => 'Email Provider', + 'connect_microsoft' => 'Connect Microsoft', + 'disconnect_microsoft' => 'Disconnect Microsoft', + 'connected_microsoft' => 'Successfully connected Microsoft', + 'disconnected_microsoft' => 'Successfully disconnected Microsoft', + 'microsoft_sign_in' => 'Login with Microsoft', + 'microsoft_sign_up' => 'Sign up with Microsoft', + 'emailed_purchase_order' => 'Successfully queued purchase order to be sent', + 'emailed_purchase_orders' => 'Successfully queued purchase orders to be sent', + 'enable_react_app' => 'Change to the React web app', + 'purchase_order_design' => 'Purchase Order Design', + 'purchase_order_terms' => 'Purchase Order Terms', + 'purchase_order_footer' => 'Purchase Order Footer', + 'require_purchase_order_signature' => 'Purchase Order Signature', + 'require_purchase_order_signature_help' => 'Require vendor to provide their signature.', + 'new_purchase_order' => 'New Purchase Order', + 'edit_purchase_order' => 'Edit Purchase Order', + 'created_purchase_order' => 'Successfully created purchase order', + 'updated_purchase_order' => 'Successfully updated purchase order', + 'archived_purchase_order' => 'Successfully archived purchase order', + 'deleted_purchase_order' => 'Successfully deleted purchase order', + 'removed_purchase_order' => 'Successfully removed purchase order', + 'restored_purchase_order' => 'Successfully restored purchase order', + 'search_purchase_order' => 'Search Purchase Order', + 'search_purchase_orders' => 'Search Purchase Orders', + 'login_url' => 'Login URL', + 'enable_applying_payments' => 'Ativar a Aplicação de Pagamentos', + 'enable_applying_payments_help' => 'Ajuda à criação e aplicação de pagamentos separadamente', + 'stock_quantity' => 'Stock Quantity', + 'notification_threshold' => 'Notification Threshold', + 'track_inventory' => 'Track Inventory', + 'track_inventory_help' => 'Display a product stock field and update when invoices are sent', + 'stock_notifications' => 'Stock Notifications', + 'stock_notifications_help' => 'Send an email when the stock reaches the threshold', + 'vat' => 'VAT', + 'view_map' => 'View Map', + 'set_default_design' => 'Set Default Design', + 'add_gateway_help_message' => 'Add a payment gateway (ie. Stripe, WePay or PayPal) to accept online payments', + 'purchase_order_issued_to' => 'Purchase Order issued to', + 'archive_task_status' => 'Archive Task Status', + 'delete_task_status' => 'Delete Task Status', + 'restore_task_status' => 'Restore Task Status', + 'lang_Hebrew' => 'Hebrew', + 'price_change_accepted' => 'Price change accepted', + 'price_change_failed' => 'Price change failed with code', + 'restore_purchases' => 'Restore Purchases', + 'activate' => 'Activate', + 'connect_apple' => 'Connect Apple', + 'disconnect_apple' => 'Disconnect Apple', + 'disconnected_apple' => 'Successfully disconnected Apple', + 'send_now' => 'Send Now', + 'received' => 'Received', + 'converted_to_expense' => 'Successfully converted to expense', + 'converted_to_expenses' => 'Successfully converted to expenses', + 'entity_removed' => 'This document has been removed, please contact the vendor for further information', + 'entity_removed_title' => 'Document no longer available', ); return $LANG; From 30defb6170a64d1014e376b7ff3fa47096c8af0c Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 17 Aug 2022 17:18:30 +1000 Subject: [PATCH 5/5] Fixes for postmark delivery logging --- VERSION.txt | 2 +- app/Jobs/Mail/NinjaMailerJob.php | 11 ++++ app/Jobs/PostMark/ProcessPostmarkWebhook.php | 3 + app/Listeners/Mail/MailSentListener.php | 61 ++++++++++++++++---- app/Providers/EventServiceProvider.php | 6 +- config/ninja.php | 4 +- 6 files changed, 69 insertions(+), 18 deletions(-) diff --git a/VERSION.txt b/VERSION.txt index 184f305de134..9a532528f270 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -5.5.10 \ No newline at end of file +5.5.11 \ No newline at end of file diff --git a/app/Jobs/Mail/NinjaMailerJob.php b/app/Jobs/Mail/NinjaMailerJob.php index 598156ce711a..b157176b027c 100644 --- a/app/Jobs/Mail/NinjaMailerJob.php +++ b/app/Jobs/Mail/NinjaMailerJob.php @@ -102,6 +102,17 @@ class NinjaMailerJob implements ShouldQueue $this->nmo->mailable->tag($this->company->company_key); + if($this->nmo->invitation) + { + + $this->nmo + ->mailable + ->withSymfonyMessage(function ($message) { + $message->getHeaders()->addTextHeader('x-invitation', $this->nmo->invitation->key); + }); + + } + //send email try { nlog("trying to send to {$this->nmo->to_user->email} ". now()->toDateTimeString()); diff --git a/app/Jobs/PostMark/ProcessPostmarkWebhook.php b/app/Jobs/PostMark/ProcessPostmarkWebhook.php index 64b590ad0917..0dca3f00e727 100644 --- a/app/Jobs/PostMark/ProcessPostmarkWebhook.php +++ b/app/Jobs/PostMark/ProcessPostmarkWebhook.php @@ -26,6 +26,7 @@ use App\Models\Company; use App\Models\CreditInvitation; use App\Models\InvoiceInvitation; use App\Models\Payment; +use App\Models\PurchaseOrderInvitation; use App\Models\QuoteInvitation; use App\Models\RecurringInvoiceInvitation; use App\Models\SystemLog; @@ -283,6 +284,8 @@ class ProcessPostmarkWebhook implements ShouldQueue return $invitation; elseif($invitation = CreditInvitation::where('message_id', $message_id)->first()) return $invitation; + elseif($invitation = PurchaseOrderInvitation::where('message_id', $message_id)->first()) + return $invitation; else return $invitation; } diff --git a/app/Listeners/Mail/MailSentListener.php b/app/Listeners/Mail/MailSentListener.php index 7d52131bb551..e1a620c0e770 100644 --- a/app/Listeners/Mail/MailSentListener.php +++ b/app/Listeners/Mail/MailSentListener.php @@ -12,9 +12,15 @@ namespace App\Listeners\Mail; use App\Libraries\MultiDB; +use App\Models\CreditInvitation; +use App\Models\InvoiceInvitation; +use App\Models\PurchaseOrderInvitation; +use App\Models\QuoteInvitation; +use App\Models\RecurringInvoiceInvitation; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Events\MessageSent; use Illuminate\Support\Facades\Notification; +use Symfony\Component\Mime\MessageConverter; class MailSentListener implements ShouldQueue { @@ -35,19 +41,50 @@ class MailSentListener implements ShouldQueue */ public function handle(MessageSent $event) { - nlog("mail listener"); - nlog($event); - // if (property_exists($event->message, 'invitation') && $event->message->invitation) { - // MultiDB::setDb($event->sent->invitation->company->db); - // if ($event->message->getHeaders()->get('x-pm-message-id')) { - // $postmark_id = $event->sent->getHeaders()->get('x-pm-message-id')->getValue(); + $message_id = $event->sent->getMessageId(); + + $message = MessageConverter::toEmail($event->sent->getOriginalMessage()); + + $invitation_key = $message->getHeaders()->get('x-invitation')->getValue(); + + if($message_id && $invitation_key) + { + + $invitation = $this->discoverInvitation($invitation_key); + + if(!$invitation) + return; + + $invitation->message_id = $message_id; + $invitation->save(); + } - // // nlog($postmark_id); - // $invitation = $event->sent->invitation; - // $invitation->message_id = $postmark_id; - // $invitation->save(); - // } - // } } + + private function discoverInvitation($key) + { + + $invitation = false; + + foreach (MultiDB::$dbs as $db) + { + + if($invitation = InvoiceInvitation::on($db)->where('key', $key)->first()) + return $invitation; + elseif($invitation = QuoteInvitation::on($db)->where('key', $key)->first()) + return $invitation; + elseif($invitation = RecurringInvoiceInvitation::on($db)->where('key', $key)->first()) + return $invitation; + elseif($invitation = CreditInvitation::on($db)->where('key', $key)->first()) + return $invitation; + elseif($invitation = PurchaseOrderInvitation::on($db)->where('key', $key)->first()) + return $invitation; + + } + + return $invitation; + + } + } diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 495ebf41aadd..53bb69bbb4ca 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -271,9 +271,9 @@ class EventServiceProvider extends ServiceProvider ], MessageSending::class => [ ], - // MessageSent::class => [ - // MailSentListener::class, - // ], + MessageSent::class => [ + MailSentListener::class, + ], UserWasCreated::class => [ CreatedUserActivity::class, SendVerificationNotification::class, diff --git a/config/ninja.php b/config/ninja.php index 7db45a89e570..286bbdc05d9f 100644 --- a/config/ninja.php +++ b/config/ninja.php @@ -14,8 +14,8 @@ return [ 'require_https' => env('REQUIRE_HTTPS', true), 'app_url' => rtrim(env('APP_URL', ''), '/'), 'app_domain' => env('APP_DOMAIN', 'invoicing.co'), - 'app_version' => '5.5.10', - 'app_tag' => '5.5.10', + 'app_version' => '5.5.11', + 'app_tag' => '5.5.11', 'minimum_client_version' => '5.0.16', 'terms_version' => '1.0.1', 'api_secret' => env('API_SECRET', ''),