diff --git a/.env.example b/.env.example index 41ce2039f7..fc27ba048e 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,6 @@ APP_ENV=production APP_DEBUG=false APP_URL=http://ninja.dev -APP_CIPHER=rijndael-128 APP_KEY=SomeRandomString DB_TYPE=mysql @@ -20,6 +19,9 @@ MAIL_FROM_ADDRESS MAIL_FROM_NAME MAIL_PASSWORD +MAILGUN_DOMAIN= +MAILGUN_SECRET= + #POSTMARK_API_TOKEN= PHANTOMJS_CLOUD_KEY='a-demo-key-with-low-quota-per-ip-address' @@ -60,11 +62,21 @@ API_SECRET=password # If this is set to anything, the URL secret will be set the next # time a file is downloaded through the client portal. # Only set this temporarily, as it slows things down. -#RACKSPACE_TEMP_URL_SECRET_SET= +#RACKSPACE_TEMP_URL_SECRET_SET= #DOCUMENT_FILESYSTEM= #MAX_DOCUMENT_SIZE # KB #MAX_EMAIL_DOCUMENTS_SIZE # Total KB #MAX_ZIP_DOCUMENTS_SIZE # Total KB (uncompressed) -#DOCUMENT_PREVIEW_SIZE # Pixels \ No newline at end of file +#DOCUMENT_PREVIEW_SIZE # Pixels + +WEPAY_CLIENT_ID= +WEPAY_CLIENT_SECRET= +WEPAY_ENVIRONMENT=production # production or stage +WEPAY_AUTO_UPDATE=true # Requires permission from WePay +WEPAY_ENABLE_CANADA=true +WEPAY_FEE_PAYER=payee +WEPAY_APP_FEE_MULTIPLIER=0.002 +WEPAY_APP_FEE_FIXED=0 +WEPAY_THEME='{"name":"Invoice Ninja","primary_color":"0b4d78","secondary_color":"0b4d78","background_color":"f8f8f8","button_color":"33b753"}' # See https://www.wepay.com/developer/reference/structures#theme diff --git a/.gitignore b/.gitignore index 5a86589d7a..09e1dfee7b 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,4 @@ tests/_bootstrap.php # composer stuff /c3.php -_ide_helper.php \ No newline at end of file +_ide_helper.php diff --git a/.styleci.yml b/.styleci.yml new file mode 100644 index 0000000000..6a307ad3c9 --- /dev/null +++ b/.styleci.yml @@ -0,0 +1,18 @@ +preset: laravel + +risky: false + +enabled: + - no_useless_else + - phpdoc_align + - phpdoc_no_empty_return + - phpdoc_order + - phpdoc_separation + +finder: + exclude: + - "resources" + - "storage" + - "tests" + not-path: + - "bootstrap/cache" diff --git a/.travis.yml b/.travis.yml index b27c9d02af..21fb9cb965 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,9 +3,10 @@ language: php sudo: true php: - - 5.5.9 +# - 5.5.9 # - 5.6 -# - 7.0 +# - 5.6 + - 7.0 # - hhvm addons: @@ -27,13 +28,14 @@ before_install: # set GitHub token and update composer - if [ -n "$GH_TOKEN" ]; then composer config github-oauth.github.com ${GH_TOKEN}; fi; - composer self-update && composer -V +# - export USE_ZEND_ALLOC=0 install: # install Composer dependencies - - rm composer.lock + # - rm composer.lock # these providers require referencing git commit's which cause Travis to fail - - sed -i '/mollie/d' composer.json - - sed -i '/2checkout/d' composer.json + # - sed -i '/mollie/d' composer.json + # - sed -i '/2checkout/d' composer.json - travis_retry composer install --prefer-dist; before_script: @@ -66,17 +68,17 @@ before_script: script: - php ./vendor/codeception/codeception/codecept run --debug acceptance AllPagesCept.php - php ./vendor/codeception/codeception/codecept run --debug acceptance APICest.php - #- php ./vendor/codeception/codeception/codecept run --debug acceptance CheckBalanceCest.php - #- php ./vendor/codeception/codeception/codecept run --debug acceptance ClientCest.php - #- php ./vendor/codeception/codeception/codecept run --debug acceptance ExpenseCest.php - #- php ./vendor/codeception/codeception/codecept run --debug acceptance CreditCest.php - #- php ./vendor/codeception/codeception/codecept run --debug acceptance InvoiceCest.php - #- php ./vendor/codeception/codeception/codecept run --debug acceptance QuoteCest.php - #- php ./vendor/codeception/codeception/codecept run --debug acceptance InvoiceDesignCest.php - #- php ./vendor/codeception/codeception/codecept run acceptance OnlinePaymentCest.php - #- php ./vendor/codeception/codeception/codecept run --debug acceptance PaymentCest.php - #- php ./vendor/codeception/codeception/codecept run --debug acceptance TaskCest.php - #- php ./vendor/codeception/codeception/codecept run --debug acceptance TaxRatesCest.php + - php ./vendor/codeception/codeception/codecept run --debug acceptance TaxRatesCest.php + - php ./vendor/codeception/codeception/codecept run --debug acceptance CheckBalanceCest.php + - php ./vendor/codeception/codeception/codecept run --debug acceptance ClientCest.php + - php ./vendor/codeception/codeception/codecept run --debug acceptance ExpenseCest.php + - php ./vendor/codeception/codeception/codecept run --debug acceptance CreditCest.php + - php ./vendor/codeception/codeception/codecept run --debug acceptance InvoiceCest.php + - php ./vendor/codeception/codeception/codecept run --debug acceptance QuoteCest.php + - php ./vendor/codeception/codeception/codecept run --debug acceptance InvoiceDesignCest.php + - php ./vendor/codeception/codeception/codecept run --debug acceptance OnlinePaymentCest.php + - php ./vendor/codeception/codeception/codecept run --debug acceptance PaymentCest.php + - php ./vendor/codeception/codeception/codecept run --debug acceptance TaskCest.php #- sed -i 's/NINJA_DEV=true/NINJA_PROD=true/g' .env #- php ./vendor/codeception/codeception/codecept run acceptance GoProCest.php @@ -90,6 +92,7 @@ after_script: - mysql -u root -e 'select * from invoice_items;' ninja - mysql -u root -e 'select * from payments;' ninja - mysql -u root -e 'select * from credits;' ninja + - mysql -u root -e 'select * from expenses;' ninja - cat storage/logs/laravel-error.log - cat storage/logs/laravel-info.log - FILES=$(find tests/_output -type f -name '*.png') diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000..50c1739ad6 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,19 @@ +# Changelog +All notable changes to this project will be documented in this file. +This project adheres to [Semantic Versioning](http://semver.org/). + +## [2.6] - 2016-07-08 + +### Added +- Configuration for first day of the week #950 +- StyleCI configuration #929 +- Added expense category + +### Changed +- Removed `invoiceninja.komodoproject` from Git #932 +- `APP_CIPHER` changed from `rinjdael-128` to `AES-256-CBC` #898 +- Improved options when exporting data + +### Fixed +- "Manual entry" untranslatable #562 +- Using a database table prefix breaks the dashboard #203 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1e26492d5d..c7bc7ddd71 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,9 +1,45 @@ # Contributing to Invoice Ninja -We welcome contributions! We'll improve this guide over time... +Thanks for your contributions! -*Please note: although our application is open-source we run a for-profit hosted service at [invoiceninja.com](https://www.invoiceninja.com).* +## Submit bug reports or feature requests -Guidelines -- Please try to follow [PSR-2 guidlines](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md) -- Add translations in our [Transifex](https://www.transifex.com/invoice-ninja/) project +### Submit pull requests + * [Fork](https://github.com/invoiceninja/invoiceninja#fork-destination-box) the [Invoice Ninja repository](https://github.com/invoiceninja/invoiceninja) + * Create a new branch with the name `#issue_number-Short-description` + * _Example:_ `#100-Add-GoogleAnalytics` + * Make your changes and commit + * Check if your branch is still in sync with the repositorys **`develop`** branch + * _Read:_ [Syncing a fork](https://help.github.com/articles/syncing-a-fork/) + * _Also read:_ [How to rebase a pull request](https://github.com/edx/edx-platform/wiki/How-to-Rebase-a-Pull-Request) + * Push your branch and create a PR against the Invoice Ninja **`develop`** branch + * Update the [Changelog](CHANGELOG.md) + +### Some rules +To make the contribution process nice and easy for anyone, please follow some rules: + * Each contribution(bug or feature) should have an [issue on Github](https://github.com/invoiceninja/invoiceninja/issues) +to give a more detailed explanation. + * Only one feature/bugfix per issue. If you want to submit more, create multiple issues. + * Only one feature/bugfix per PR(pull request). Split more changes into multiple PRs. + +#### Coding Style +Try to follow the [PSR-2 guidlines](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md) + +_Example styling:_ +```php +/** + * Gets a preview of the email + * + * @param TemplateService $templateService + * + * @return \Illuminate\Http\Response + */ +public function previewEmail(TemplateService $templateService) +{ + // +} +``` + + +## Translations +For helping us with translating Invoice Ninja, please use [Transifex](https://www.transifex.com/invoice-ninja/invoice-ninja/). diff --git a/README.md b/README.md index 79024cd8c1..d6adf78804 100644 --- a/README.md +++ b/README.md @@ -3,16 +3,17 @@
# Invoice Ninja -### [http://www.invoiceninja.org](http://www.invoiceninja.org) [![Build Status](https://travis-ci.org/invoiceninja/invoiceninja.svg?branch=master)](https://travis-ci.org/invoiceninja/invoiceninja) [![Join the chat at https://gitter.im/hillelcoren/invoice-ninja](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/hillelcoren/invoice-ninja?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -We're often asked to recommend PHP developers to help setup our app and make small adjustments, email us at contact@invoiceninja.com if you're interested in taking on the work. +## [Hosted](https://www.invoiceninja.com) | [Self-hosted](https://invoiceninja.org) -### Affiliates Programs +We're often asked to recommend Laravel/PHP developers to help setup our app and make small adjustments, email us at contact@invoiceninja.com if you're interested in taking on the work. + +## Affiliates Programs * Referral program (we pay you): $100 per signup paid over 3 years - [Learn more](https://www.invoiceninja.com/referral-program/) -* White-label reseller (you pay us): 10% of revenue with a $100 sign up fee +* White-label reseller (you pay us): 10% of revenue with a $500 sign up fee ### Installation Options * [Self-Host Zip](https://www.invoiceninja.com/knowledgebase/self-host/) - Free @@ -20,23 +21,24 @@ We're often asked to recommend PHP developers to help setup our app and make sma * [Bitnami](https://bitnami.com/stack/invoice-ninja) - Free * [Softaculous](https://www.softaculous.com/apps/ecommerce/Invoice_Ninja) - $30 -### Requirements +## Requirements * PHP >= 5.5.9 * MCrypt PHP Extension * MySQL -### Recommended Providers +## Recommended Providers * [Stripe](https://stripe.com/) * [Postmark](https://postmarkapp.com/) -### Features +## Features * Built using Laravel 5.2 * Live PDF generation using [pdfmake](http://pdfmake.org/) -* Integrates with 50+ payment providers with [OmniPay](https://github.com/thephpleague/omnipay) +* Integrates with 50+ payment providers with [Omnipay](https://github.com/thephpleague/omnipay) * Recurring invoices with auto-billing * Expenses and vendors * Tasks with time-tracking +* File Attachments * Multi-user/multi-company support * Tax rates and payment terms * Reminder emails @@ -45,7 +47,7 @@ We're often asked to recommend PHP developers to help setup our app and make sma * Custom email templates * [D3.js](http://d3js.org/) visualizations -### Documentation +## Documentation * [Ubuntu and Apache](http://blog.technerdservices.com/index.php/2015/04/techpop-how-to-install-invoice-ninja-on-ubuntu-14-04/) * [Debian and Nginx](https://www.rosehosting.com/blog/install-invoice-ninja-on-a-debian-7-vps/) * [User Guide](https://www.invoiceninja.com/app-user-guide/) @@ -54,51 +56,22 @@ We're often asked to recommend PHP developers to help setup our app and make sma * [Support Forum](https://www.invoiceninja.com/forums/forum/support/) * [Feature Roadmap](https://trello.com/b/63BbiVVe/) -### Pull Requests -We're using the [Git-Flow](http://nvie.com/posts/a-successful-git-branching-model/) model of branching and releasing, **please create pull requests against the develop branch**. +## Contributing +All contributors are welcome! +For information on how contribute to Invoice Ninja, please see our [contributing guide](CONTRIBUTING.md). -### Contributors +## Credits +* [Hillel Coren](https://github.com/hillelcoren) +* [All contributors](https://github.com/invoiceninja/invoiceninja/graphs/contributors) + +**Special thanks to:** * [Troels Liebe Bentsen](https://github.com/tlbdk) * [Jeramy Simpson](https://github.com/JeramyMywork) - [MyWork](https://www.mywork.com.au) * [Sigitas Limontas](https://lt.linkedin.com/in/sigitaslimontas) * [Joshua Dwire](https://github.com/joshuadwire) - [Some Techie](https://www.sometechie.com) +* [Holger Lösken](https://github.com/codedge) - [codedge](http://codedge.de/) -### Frameworks/Libraries -* [laravel/laravel](https://github.com/laravel/laravel) - A PHP Framework For Web Artisans -* [twbs/bootstrap](https://github.com/twbs/bootstrap) - Sleek, intuitive, and powerful front-end framework for faster and easier web development. -* [jquery/jquery](https://github.com/jquery/jquery) - jQuery JavaScript Library -* [jquery/jquery-ui](https://github.com/jquery/jquery-ui) - The official jQuery user interface library -* [patricktalmadge/bootstrapper](https://github.com/patricktalmadge/bootstrapper) - Laravel Twitter Bootstrap Bundle -* [danielfarrell/bootstrap-combobox](https://github.com/danielfarrell/bootstrap-combobox) - A combobox plugin -* [eternicode/bootstrap-datepicker](https://github.com/eternicode/bootstrap-datepicker) - A datepicker for @twitter bootstrap -* [twitter/typeahead.js](https://github.com/twitter/typeahead.js) - a fast and fully-featured autocomplete library -* [krisk/Fuse](https://github.com/krisk/Fuse) - Lightweight fuzzy-search, in JavaScript -* [knockout/knockout](https://github.com/knockout/knockout) - Knockout makes it easier to create rich, responsive UIs with JavaScript -* [rniemeyer/knockout-sortable](https://github.com/rniemeyer/knockout-sortable) - A Knockout.js binding to connect observableArrays with jQuery UI sortable functionality -* [bpampuch/pdfmake](https://github.com/bpampuch/pdfmake) - Client/server side PDF printing in pure JavaScript -* [FortAwesome/Font-Awesome](https://github.com/FortAwesome/Font-Awesome) - The iconic font designed for Bootstrap that works with twitter bootstrap -* [Anahkiasen/former](https://github.com/Anahkiasen/former) - A powerful form builder, for Laravel and other frameworks (stand-alone too) -* [barryvdh/laravel-debugbar](https://github.com/barryvdh/laravel-debugbar) - Laravel debugbar -* [DataTables/DataTables](https://github.com/DataTables/DataTables) - Tables plug-in for jQuery -* [Chumper/Datatable](https://github.com/Chumper/Datatable) - This is a laravel 4 package for the server and client side of datatables -* [omnipay/omnipay](https://github.com/omnipay/omnipay) - A framework agnostic, multi-gateway payment processing library for PHP 5.3+ -* [Intervention/image](https://github.com/Intervention/image) - PHP Image Manipulation -* [webpatser/laravel-countries](https://github.com/webpatser/laravel-countries) - Almost ISO 3166_2, 3166_3, currency, Capital and more for all countries -* [briannesbitt/Carbon](https://github.com/briannesbitt/Carbon) - A simple API extension for DateTime with PHP 5.3+ -* [thomaspark/bootswatch](https://github.com/thomaspark/bootswatch) - Themes for Bootstrap -* [mozilla/pdf.js](https://github.com/mozilla/pdf.js) - PDF Reader in JavaScript -* [nnnick/Chart.js](https://github.com/nnnick/Chart.js) - Simple HTML5 Charts using the canvas tag -* [josscrowcroft/accounting.js](https://github.com/josscrowcroft/accounting.js) - A lightweight JavaScript library for number, money and currency formatting -* [jashkenas/underscore](https://github.com/jashkenas/underscore) - JavaScript's utility _ belt -* [caouecs/Laravel4-long](https://github.com/caouecs/Laravel4-lang) - List of languages for Laravel4 -* [bgrins/spectrum](https://github.com/bgrins/spectrum) - The No Hassle JavaScript Colorpicker -* [lokesh/lightbox2](https://github.com/lokesh/lightbox2/) - The original lightbox script -* [josdejong/jsoneditor](https://github.com/josdejong/jsoneditor/) - A web-based tool to view, edit and format JSON -* [simshaun/recurr](https://github.com/simshaun/recurr) - PHP library for working with recurrence rules -* [quilljs/quill](https://github.com/quilljs/quill/) - A cross browser rich text editor with an API -* [Maatwebsite/Laravel-Excel](https://github.com/Maatwebsite/Laravel-Excel) - An eloquent way of importing and exporting Excel and CSV files for Laravel -* [thephpleague/fractal](https://github.com/thephpleague/fractal) - Output complex, flexible, AJAX/RESTful data structures -* [ezyang/htmlpurifier](https://github.com/ezyang/htmlpurifier) - Standards compliant HTML filter written in PHP -* [cerdic/css-tidy](https://github.com/Cerdic/CSSTidy) - CSSTidy is a CSS minifier -* [asgrim/ofxparser](https://github.com/asgrim/ofxparser) - OFX File Parser -* [stacktracejs/stacktrace.js](https://github.com/stacktracejs/stacktrace.js) - Framework-agnostic, micro-library for getting stack traces in all web browsers + +## License +Invoice Ninja is released under the Attribution Assurance License. +See [LICENSE](LICENSE) for details. diff --git a/app/Console/Commands/ChargeRenewalInvoices.php b/app/Console/Commands/ChargeRenewalInvoices.php index 39d63ee44c..4773f53c43 100644 --- a/app/Console/Commands/ChargeRenewalInvoices.php +++ b/app/Console/Commands/ChargeRenewalInvoices.php @@ -1,22 +1,47 @@ info('Done'); } + /** + * @return array + */ protected function getArguments() { - return array( - //array('example', InputArgument::REQUIRED, 'An example argument.'), - ); + return []; } + /** + * @return array + */ protected function getOptions() { - return array( - //array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null), - ); + return []; } } diff --git a/app/Console/Commands/CheckData.php b/app/Console/Commands/CheckData.php index 5c644c5b4b..567c697248 100644 --- a/app/Console/Commands/CheckData.php +++ b/app/Console/Commands/CheckData.php @@ -1,11 +1,9 @@ where("{$table}.account_id", '!=', DB::raw("{$entityType}s.account_id")) - ->get(["{$table}.id", "clients.account_id", "clients.user_id"]); + ->get(["{$table}.id", 'clients.account_id', 'clients.user_id']); if (count($records)) { $this->info(count($records) . " {$table} records with incorrect {$entityType} account id"); @@ -154,7 +162,7 @@ class CheckData extends Command { $clients->where('clients.id', '=', $this->option('client_id')); } else { $clients->where('invoices.is_deleted', '=', 0) - ->where('invoices.is_quote', '=', 0) + ->where('invoices.invoice_type_id', '=', INVOICE_TYPE_STANDARD) ->where('invoices.is_recurring', '=', 0) ->havingRaw('abs(clients.balance - sum(invoices.balance)) > .01 and clients.balance != 999999999.9999'); } @@ -184,7 +192,7 @@ class CheckData extends Command { if ($activity->invoice_id) { $invoice = DB::table('invoices') ->where('id', '=', $activity->invoice_id) - ->first(['invoices.amount', 'invoices.is_recurring', 'invoices.is_quote', 'invoices.deleted_at', 'invoices.id', 'invoices.is_deleted']); + ->first(['invoices.amount', 'invoices.is_recurring', 'invoices.invoice_type_id', 'invoices.deleted_at', 'invoices.id', 'invoices.is_deleted']); // Check if this invoice was once set as recurring invoice if ($invoice && !$invoice->is_recurring && DB::table('invoices') @@ -221,14 +229,14 @@ class CheckData extends Command { && $invoice->amount > 0; // **Fix for allowing converting a recurring invoice to a normal one without updating the balance** - if ($noAdjustment && !$invoice->is_quote && !$invoice->is_recurring) { - $this->info("No adjustment for new invoice:{$activity->invoice_id} amount:{$invoice->amount} isQuote:{$invoice->is_quote} isRecurring:{$invoice->is_recurring}"); + if ($noAdjustment && $invoice->invoice_type_id == INVOICE_TYPE_STANDARD && !$invoice->is_recurring) { + $this->info("No adjustment for new invoice:{$activity->invoice_id} amount:{$invoice->amount} invoiceTypeId:{$invoice->invoice_type_id} isRecurring:{$invoice->is_recurring}"); $foundProblem = true; $clientFix += $invoice->amount; $activityFix = $invoice->amount; // **Fix for updating balance when creating a quote or recurring invoice** - } elseif ($activity->adjustment != 0 && ($invoice->is_quote || $invoice->is_recurring)) { - $this->info("Incorrect adjustment for new invoice:{$activity->invoice_id} adjustment:{$activity->adjustment} isQuote:{$invoice->is_quote} isRecurring:{$invoice->is_recurring}"); + } elseif ($activity->adjustment != 0 && ($invoice->invoice_type_id == INVOICE_TYPE_QUOTE || $invoice->is_recurring)) { + $this->info("Incorrect adjustment for new invoice:{$activity->invoice_id} adjustment:{$activity->adjustment} invoiceTypeId:{$invoice->invoice_type_id} isRecurring:{$invoice->is_recurring}"); $foundProblem = true; $clientFix -= $activity->adjustment; $activityFix = 0; @@ -327,19 +335,23 @@ class CheckData extends Command { } } + /** + * @return array + */ protected function getArguments() { - return array( - //array('example', InputArgument::REQUIRED, 'An example argument.'), - ); + return []; } + /** + * @return array + */ protected function getOptions() { - return array( - array('fix', null, InputOption::VALUE_OPTIONAL, 'Fix data', null), - array('client_id', null, InputOption::VALUE_OPTIONAL, 'Client id', null), - ); + return [ + ['fix', null, InputOption::VALUE_OPTIONAL, 'Fix data', null], + ['client_id', null, InputOption::VALUE_OPTIONAL, 'Client id', null], + ]; } } \ No newline at end of file diff --git a/app/Console/Commands/CreateTestData.php b/app/Console/Commands/CreateTestData.php index 6a0643e46c..a75922635f 100644 --- a/app/Console/Commands/CreateTestData.php +++ b/app/Console/Commands/CreateTestData.php @@ -1,28 +1,43 @@ expenseRepo = $expenseRepo; } + /** + * @return bool + */ public function fire() { if (Utils::isNinjaProd()) { @@ -83,6 +101,9 @@ class CreateTestData extends Command } } + /** + * @param $client + */ private function createInvoices($client) { for ($i=0; $i<$this->count; $i++) { @@ -102,7 +123,11 @@ class CreateTestData extends Command $this->createPayment($client, $invoice); } } - + + /** + * @param $client + * @param $invoice + */ private function createPayment($client, $invoice) { $data = [ @@ -115,7 +140,7 @@ class CreateTestData extends Command $this->info('Payment: ' . $payment->amount); } - + private function createVendors() { for ($i=0; $i<$this->count; $i++) { @@ -140,7 +165,10 @@ class CreateTestData extends Command $this->createExpense($vendor); } } - + + /** + * @param $vendor + */ private function createExpense($vendor) { for ($i=0; $i<$this->count; $i++) { @@ -156,17 +184,19 @@ class CreateTestData extends Command } } + /** + * @return array + */ protected function getArguments() { - return array( - //array('example', InputArgument::REQUIRED, 'An example argument.'), - ); + return []; } + /** + * @return array + */ protected function getOptions() { - return array( - //array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null), - ); + return []; } } diff --git a/app/Console/Commands/GenerateResources.php b/app/Console/Commands/GenerateResources.php index e7139c85be..9826f3c70b 100644 --- a/app/Console/Commands/GenerateResources.php +++ b/app/Console/Commands/GenerateResources.php @@ -3,15 +3,22 @@ use File; use Illuminate\Console\Command; +/** + * Class GenerateResources + */ class GenerateResources extends Command { + /** + * @var string + */ protected $name = 'ninja:generate-resources'; + /** + * @var string + */ protected $description = 'Generate Resouces'; /** * Create a new command instance. - * - * @return void */ public function __construct() { @@ -25,22 +32,6 @@ class GenerateResources extends Command */ public function fire() { - $langs = [ - 'da', - 'de', - 'en', - 'es', - 'es_ES', - 'fr', - 'fr_CA', - 'it', - 'lt', - 'nb_NO', - 'nl', - 'pt_BR', - 'sv' - ]; - $texts = File::getRequire(base_path() . '/resources/lang/en/texts.php'); foreach ($texts as $key => $value) { @@ -52,17 +43,19 @@ class GenerateResources extends Command } } + /** + * @return array + */ protected function getArguments() { - return array( - //array('example', InputArgument::REQUIRED, 'An example argument.'), - ); + return []; } + /** + * @return array + */ protected function getOptions() { - return array( - //array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null), - ); + return []; } } diff --git a/app/Console/Commands/Inspire.php b/app/Console/Commands/Inspire.php index 65c265a258..8909799ec7 100644 --- a/app/Console/Commands/Inspire.php +++ b/app/Console/Commands/Inspire.php @@ -3,6 +3,9 @@ use Illuminate\Console\Command; use Illuminate\Foundation\Inspiring; +/** + * Class Inspire + */ class Inspire extends Command { /** diff --git a/app/Console/Commands/PruneData.php b/app/Console/Commands/PruneData.php index 8970376424..1c04e1ab5f 100644 --- a/app/Console/Commands/PruneData.php +++ b/app/Console/Commands/PruneData.php @@ -3,9 +3,19 @@ use DB; use Illuminate\Console\Command; +/** + * Class PruneData + */ class PruneData extends Command { + /** + * @var string + */ protected $name = 'ninja:prune-data'; + + /** + * @var string + */ protected $description = 'Delete inactive accounts'; public function fire() @@ -41,17 +51,19 @@ class PruneData extends Command $this->info('Done'); } + /** + * @return array + */ protected function getArguments() { - return array( - //array('example', InputArgument::REQUIRED, 'An example argument.'), - ); + return []; } + /** + * @return array + */ protected function getOptions() { - return array( - //array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null), - ); + return []; } } diff --git a/app/Console/Commands/RemoveOrphanedDocuments.php b/app/Console/Commands/RemoveOrphanedDocuments.php index 3c7fe1bb53..edcb864564 100644 --- a/app/Console/Commands/RemoveOrphanedDocuments.php +++ b/app/Console/Commands/RemoveOrphanedDocuments.php @@ -4,16 +4,25 @@ use DateTime; use App\Models\Document; use Illuminate\Console\Command; +/** + * Class RemoveOrphanedDocuments + */ class RemoveOrphanedDocuments extends Command { + /** + * @var string + */ protected $name = 'ninja:remove-orphaned-documents'; + /** + * @var string + */ protected $description = 'Removes old documents not associated with an expense or invoice'; public function fire() { $this->info(date('Y-m-d').' Running RemoveOrphanedDocuments...'); - $documents = Document::whereRaw('invoice_id IS NULL AND expense_id IS NULL AND updated_at <= ?', array(new DateTime('-1 hour'))) + $documents = Document::whereRaw('invoice_id IS NULL AND expense_id IS NULL AND updated_at <= ?', [new DateTime('-1 hour')]) ->get(); $this->info(count($documents).' orphaned document(s) found'); @@ -25,17 +34,19 @@ class RemoveOrphanedDocuments extends Command $this->info('Done'); } + /** + * @return array + */ protected function getArguments() { - return array( - //array('example', InputArgument::REQUIRED, 'An example argument.'), - ); + return []; } + /** + * @return array + */ protected function getOptions() { - return array( - //array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null), - ); + return []; } } diff --git a/app/Console/Commands/ResetData.php b/app/Console/Commands/ResetData.php index a027600347..2ab706fa1d 100644 --- a/app/Console/Commands/ResetData.php +++ b/app/Console/Commands/ResetData.php @@ -1,24 +1,35 @@ info(date('Y-m-d') . ' Running ResetData...'); + public function fire() + { + $this->info(date('Y-m-d') . ' Running ResetData...'); - if (!Utils::isNinjaDev()) { - return; + if (!Utils::isNinjaDev()) { + return; + } + + Artisan::call('migrate:reset'); + Artisan::call('migrate'); + Artisan::call('db:seed'); } - - Artisan::call('migrate:reset'); - Artisan::call('migrate'); - Artisan::call('db:seed'); - } } \ No newline at end of file diff --git a/app/Console/Commands/SendRecurringInvoices.php b/app/Console/Commands/SendRecurringInvoices.php index abf493d1ca..38f8b1afdc 100644 --- a/app/Console/Commands/SendRecurringInvoices.php +++ b/app/Console/Commands/SendRecurringInvoices.php @@ -1,30 +1,55 @@ mailer = $mailer; $this->invoiceRepo = $invoiceRepo; + $this->paymentService = $paymentService; } public function fire() @@ -33,18 +58,20 @@ class SendRecurringInvoices extends Command $today = new DateTime(); $invoices = Invoice::with('account.timezone', 'invoice_items', 'client', 'user') - ->whereRaw('is_deleted IS FALSE AND deleted_at IS NULL AND is_recurring IS TRUE AND frequency_id > 0 AND start_date <= ? AND (end_date IS NULL OR end_date >= ?)', array($today, $today)) + ->whereRaw('is_deleted IS FALSE AND deleted_at IS NULL AND is_recurring IS TRUE AND frequency_id > 0 AND start_date <= ? AND (end_date IS NULL OR end_date >= ?)', [$today, $today]) ->orderBy('id', 'asc') ->get(); $this->info(count($invoices).' recurring invoice(s) found'); foreach ($invoices as $recurInvoice) { - if (!$recurInvoice->user->confirmed) { + $shouldSendToday = $recurInvoice->shouldSendToday(); + $this->info('Processing Invoice '.$recurInvoice->id.' - Should send '.($shouldSendToday ? 'YES' : 'NO')); + + if ( ! $shouldSendToday) { continue; } - + $recurInvoice->account->loadLocalizationSettings($recurInvoice->client); - $this->info('Processing Invoice '.$recurInvoice->id.' - Should send '.($recurInvoice->shouldSendToday() ? 'YES' : 'NO')); $invoice = $this->invoiceRepo->createRecurringInvoice($recurInvoice); if ($invoice && !$invoice->isPaid()) { @@ -53,20 +80,42 @@ class SendRecurringInvoices extends Command } } + $delayedAutoBillInvoices = Invoice::with('account.timezone', 'recurring_invoice', 'invoice_items', 'client', 'user') + ->whereRaw('is_deleted IS FALSE AND deleted_at IS NULL AND is_recurring IS FALSE + AND balance > 0 AND due_date = ? AND recurring_invoice_id IS NOT NULL', + [$today->format('Y-m-d')]) + ->orderBy('invoices.id', 'asc') + ->get(); + $this->info(count($delayedAutoBillInvoices).' due recurring invoice instance(s) found'); + + /** @var Invoice $invoice */ + foreach ($delayedAutoBillInvoices as $invoice) { + if ($invoice->isPaid()) { + continue; + } + + if ($invoice->getAutoBillEnabled() && $invoice->client->autoBillLater()) { + $this->info('Processing Invoice '.$invoice->id.' - Should bill '.($billNow ? 'YES' : 'NO')); + $this->paymentService->autoBillInvoice($invoice); + } + } + $this->info('Done'); } + /** + * @return array + */ protected function getArguments() { - return array( - //array('example', InputArgument::REQUIRED, 'An example argument.'), - ); + return []; } + /** + * @return array + */ protected function getOptions() { - return array( - //array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null), - ); + return []; } } diff --git a/app/Console/Commands/SendReminders.php b/app/Console/Commands/SendReminders.php index 58c38a7d81..bdb239deff 100644 --- a/app/Console/Commands/SendReminders.php +++ b/app/Console/Commands/SendReminders.php @@ -1,23 +1,47 @@ info(date('Y-m-d').' Running SendReminders...'); - $today = new DateTime(); + $this->info(date('Y-m-d') . ' Running SendReminders...'); $accounts = $this->accountRepo->findWithReminders(); - $this->info(count($accounts).' accounts found'); + $this->info(count($accounts) . ' accounts found'); + /** @var \App\Models\Account $account */ foreach ($accounts as $account) { if (!$account->hasFeature(FEATURE_EMAIL_TEMPLATES_REMINDERS)) { continue; } $invoices = $this->invoiceRepo->findNeedingReminding($account); - $this->info($account->name . ': ' . count($invoices).' invoices found'); + $this->info($account->name . ': ' . count($invoices) . ' invoices found'); + /** @var Invoice $invoice */ foreach ($invoices as $invoice) { if ($reminder = $account->getInvoiceReminder($invoice)) { $this->info('Send to ' . $invoice->id); @@ -54,17 +79,19 @@ class SendReminders extends Command $this->info('Done'); } + /** + * @return array + */ protected function getArguments() { - return array( - //array('example', InputArgument::REQUIRED, 'An example argument.'), - ); + return []; } + /** + * @return array + */ protected function getOptions() { - return array( - //array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null), - ); + return []; } } diff --git a/app/Console/Commands/SendRenewalInvoices.php b/app/Console/Commands/SendRenewalInvoices.php index 87a840aed2..1c46f50680 100644 --- a/app/Console/Commands/SendRenewalInvoices.php +++ b/app/Console/Commands/SendRenewalInvoices.php @@ -1,21 +1,42 @@ info(date('Y-m-d').' Running SendRenewalInvoices...'); - $today = new DateTime(); - $sentTo = []; // get all accounts with plans expiring in 10 days $companies = Company::whereRaw('datediff(plan_expires, curdate()) = 10') @@ -40,28 +59,36 @@ class SendRenewalInvoices extends Command if (!count($company->accounts)) { continue; } - + $account = $company->accounts->sortBy('id')->first(); - $plan = $company->plan; - $term = $company->plan_term; - + $plan = []; + $plan['plan'] = $company->plan; + $plan['term'] = $company->plan_term; + $plan['num_users'] = $company->num_users; + $plan['price'] = min($company->plan_price, Utils::getPlanPrice($plan)); + if ($company->pending_plan) { - $plan = $company->pending_plan; - $term = $company->pending_term; + $plan['plan'] = $company->pending_plan; + $plan['term'] = $company->pending_term; + $plan['num_users'] = $company->pending_num_users; + $plan['price'] = min($company->pending_plan_price, Utils::getPlanPrice($plan)); } - - if ($plan == PLAN_FREE || !$plan || !$term ){ + + if ($plan['plan'] == PLAN_FREE || !$plan['plan'] || !$plan['term'] || !$plan['price']){ continue; } - + $client = $this->accountRepo->getNinjaClient($account); - $invitation = $this->accountRepo->createNinjaInvoice($client, $account, $plan, $term); + $invitation = $this->accountRepo->createNinjaInvoice($client, $account, $plan, 0, false); // set the due date to 10 days from now $invoice = $invitation->invoice; $invoice->due_date = date('Y-m-d', strtotime('+ 10 days')); $invoice->save(); + $term = $plan['term']; + $plan = $plan['plan']; + if ($term == PLAN_TERM_YEARLY) { $this->mailer->sendInvoice($invoice); $this->info("Sent {$term}ly {$plan} invoice to {$client->getDisplayName()}"); @@ -73,17 +100,19 @@ class SendRenewalInvoices extends Command $this->info('Done'); } + /** + * @return array + */ protected function getArguments() { - return array( - //array('example', InputArgument::REQUIRED, 'An example argument.'), - ); + return []; } + /** + * @return array + */ protected function getOptions() { - return array( - //array('example', null, InputOption::VALUE_OPTIONAL, 'An example option.', null), - ); + return []; } } diff --git a/app/Console/Commands/TestOFX.php b/app/Console/Commands/TestOFX.php index f7eb2b748b..d21518cba7 100644 --- a/app/Console/Commands/TestOFX.php +++ b/app/Console/Commands/TestOFX.php @@ -3,11 +3,31 @@ use Illuminate\Console\Command; use App\Services\BankAccountService; +/** + * Class TestOFX + */ class TestOFX extends Command { + /** + * @var string + */ protected $name = 'ninja:test-ofx'; + + /** + * @var string + */ protected $description = 'Test OFX'; + /** + * @var BankAccountService + */ + protected $bankAccountService; + + /** + * TestOFX constructor. + * + * @param BankAccountService $bankAccountService + */ public function __construct(BankAccountService $bankAccountService) { parent::__construct(); @@ -18,15 +38,5 @@ class TestOFX extends Command public function fire() { $this->info(date('Y-m-d').' Running TestOFX...'); - - /* - $bankId = env('TEST_BANK_ID'); - $username = env('TEST_BANK_USERNAME'); - $password = env('TEST_BANK_PASSWORD'); - - $data = $this->bankAccountService->loadBankAccounts($bankId, $username, $password, false); - - echo json_encode($data); - */ } } \ No newline at end of file diff --git a/app/Events/ClientWasArchived.php b/app/Events/ClientWasArchived.php index 03ebdc09cd..176376d2b6 100644 --- a/app/Events/ClientWasArchived.php +++ b/app/Events/ClientWasArchived.php @@ -1,20 +1,26 @@ client = $client; } diff --git a/app/Events/ClientWasCreated.php b/app/Events/ClientWasCreated.php index 5c2d370017..eed24343fb 100644 --- a/app/Events/ClientWasCreated.php +++ b/app/Events/ClientWasCreated.php @@ -1,20 +1,26 @@ client = $client; } diff --git a/app/Events/ClientWasDeleted.php b/app/Events/ClientWasDeleted.php index b87063c497..f6d27b92d9 100644 --- a/app/Events/ClientWasDeleted.php +++ b/app/Events/ClientWasDeleted.php @@ -1,20 +1,26 @@ client = $client; } diff --git a/app/Events/ClientWasRestored.php b/app/Events/ClientWasRestored.php index 385a0472ab..16fb6b9616 100644 --- a/app/Events/ClientWasRestored.php +++ b/app/Events/ClientWasRestored.php @@ -1,20 +1,26 @@ client = $client; } diff --git a/app/Events/ClientWasUpdated.php b/app/Events/ClientWasUpdated.php index 7e4790da68..1f863d6c01 100644 --- a/app/Events/ClientWasUpdated.php +++ b/app/Events/ClientWasUpdated.php @@ -1,20 +1,26 @@ client = $client; } diff --git a/app/Events/CreditWasArchived.php b/app/Events/CreditWasArchived.php index 2c680905b3..b9dd495ddd 100644 --- a/app/Events/CreditWasArchived.php +++ b/app/Events/CreditWasArchived.php @@ -1,23 +1,30 @@ credit = $credit; - } + /** + * Create a new event instance. + * + * @param Client $credit + */ + public function __construct(Client $credit) + { + $this->credit = $credit; + } } diff --git a/app/Events/CreditWasCreated.php b/app/Events/CreditWasCreated.php index bc20b312dc..81ba63c450 100644 --- a/app/Events/CreditWasCreated.php +++ b/app/Events/CreditWasCreated.php @@ -1,21 +1,24 @@ credit = $credit; } diff --git a/app/Events/CreditWasDeleted.php b/app/Events/CreditWasDeleted.php index e26a5d3ab0..c5f585fcf3 100644 --- a/app/Events/CreditWasDeleted.php +++ b/app/Events/CreditWasDeleted.php @@ -1,21 +1,26 @@ credit = $credit; } diff --git a/app/Events/CreditWasRestored.php b/app/Events/CreditWasRestored.php index 8d17d961e7..a80c9e729b 100644 --- a/app/Events/CreditWasRestored.php +++ b/app/Events/CreditWasRestored.php @@ -1,21 +1,27 @@ credit = $credit; } diff --git a/app/Events/Event.php b/app/Events/Event.php index d59f7690f8..76e730a4b8 100644 --- a/app/Events/Event.php +++ b/app/Events/Event.php @@ -1,7 +1,5 @@ expense = $expense; - } + /** + * Create a new event instance. + * + * @param Expense $expense + */ + public function __construct(Expense $expense) + { + $this->expense = $expense; + } } diff --git a/app/Events/ExpenseWasCreated.php b/app/Events/ExpenseWasCreated.php index ab462fe602..edaca9c00a 100644 --- a/app/Events/ExpenseWasCreated.php +++ b/app/Events/ExpenseWasCreated.php @@ -1,20 +1,26 @@ expense = $expense; } diff --git a/app/Events/ExpenseWasDeleted.php b/app/Events/ExpenseWasDeleted.php index 1549b483b4..bb2b6e4dbd 100644 --- a/app/Events/ExpenseWasDeleted.php +++ b/app/Events/ExpenseWasDeleted.php @@ -1,21 +1,26 @@ expense = $expense; } diff --git a/app/Events/ExpenseWasRestored.php b/app/Events/ExpenseWasRestored.php index b52a2d119a..142f41d7e9 100644 --- a/app/Events/ExpenseWasRestored.php +++ b/app/Events/ExpenseWasRestored.php @@ -1,21 +1,27 @@ expense = $expense; } diff --git a/app/Events/ExpenseWasUpdated.php b/app/Events/ExpenseWasUpdated.php index 1066d90de4..469a258ba1 100644 --- a/app/Events/ExpenseWasUpdated.php +++ b/app/Events/ExpenseWasUpdated.php @@ -1,20 +1,26 @@ expense = $expense; } diff --git a/app/Events/InvoiceInvitationWasEmailed.php b/app/Events/InvoiceInvitationWasEmailed.php index da00312492..b51e8af0c1 100644 --- a/app/Events/InvoiceInvitationWasEmailed.php +++ b/app/Events/InvoiceInvitationWasEmailed.php @@ -1,21 +1,28 @@ invitation = $invitation; } diff --git a/app/Events/InvoiceInvitationWasViewed.php b/app/Events/InvoiceInvitationWasViewed.php index bbf7e23c33..0897895a7a 100644 --- a/app/Events/InvoiceInvitationWasViewed.php +++ b/app/Events/InvoiceInvitationWasViewed.php @@ -1,25 +1,35 @@ invoice = $invoice; $this->invitation = $invitation; } - } diff --git a/app/Events/InvoiceWasArchived.php b/app/Events/InvoiceWasArchived.php index 7587c071a6..0de212661a 100644 --- a/app/Events/InvoiceWasArchived.php +++ b/app/Events/InvoiceWasArchived.php @@ -1,20 +1,26 @@ invoice = $invoice; } diff --git a/app/Events/InvoiceWasCreated.php b/app/Events/InvoiceWasCreated.php index cfd943bcff..b78d7f769f 100644 --- a/app/Events/InvoiceWasCreated.php +++ b/app/Events/InvoiceWasCreated.php @@ -1,20 +1,26 @@ invoice = $invoice; } diff --git a/app/Events/InvoiceWasDeleted.php b/app/Events/InvoiceWasDeleted.php index 316b1b5c50..792e693eb4 100644 --- a/app/Events/InvoiceWasDeleted.php +++ b/app/Events/InvoiceWasDeleted.php @@ -1,22 +1,27 @@ invoice = $invoice; } - } diff --git a/app/Events/InvoiceWasEmailed.php b/app/Events/InvoiceWasEmailed.php index dc30f6a558..a83035818c 100644 --- a/app/Events/InvoiceWasEmailed.php +++ b/app/Events/InvoiceWasEmailed.php @@ -1,22 +1,27 @@ invoice = $invoice; } - } diff --git a/app/Events/InvoiceWasRestored.php b/app/Events/InvoiceWasRestored.php index 5d75b4b246..e935f5b9e8 100644 --- a/app/Events/InvoiceWasRestored.php +++ b/app/Events/InvoiceWasRestored.php @@ -1,22 +1,30 @@ invoice = $invoice; $this->fromDeleted = $fromDeleted; diff --git a/app/Events/InvoiceWasUpdated.php b/app/Events/InvoiceWasUpdated.php index 87a0f8f201..f929b3d5be 100644 --- a/app/Events/InvoiceWasUpdated.php +++ b/app/Events/InvoiceWasUpdated.php @@ -1,22 +1,27 @@ invoice = $invoice; - } - + /** + * Create a new event instance. + * + * @param Invoice $invoice + */ + public function __construct(Invoice $invoice) + { + $this->invoice = $invoice; + } } diff --git a/app/Events/PaymentCompleted.php b/app/Events/PaymentCompleted.php new file mode 100644 index 0000000000..4d78fb923e --- /dev/null +++ b/app/Events/PaymentCompleted.php @@ -0,0 +1,28 @@ +payment = $payment; + } + +} diff --git a/app/Events/PaymentFailed.php b/app/Events/PaymentFailed.php new file mode 100644 index 0000000000..445b8ba5be --- /dev/null +++ b/app/Events/PaymentFailed.php @@ -0,0 +1,27 @@ +payment = $payment; + } +} diff --git a/app/Events/PaymentWasArchived.php b/app/Events/PaymentWasArchived.php index b8bb693dfc..4bf7eb8ff7 100644 --- a/app/Events/PaymentWasArchived.php +++ b/app/Events/PaymentWasArchived.php @@ -1,22 +1,28 @@ payment = $payment; - } + /** + * Create a new event instance. + * + * @param Payment $payment + */ + public function __construct(Payment $payment) + { + $this->payment = $payment; + } } diff --git a/app/Events/PaymentWasCreated.php b/app/Events/PaymentWasCreated.php index 619d33e958..98e95ae43a 100644 --- a/app/Events/PaymentWasCreated.php +++ b/app/Events/PaymentWasCreated.php @@ -1,22 +1,27 @@ payment = $payment; } - } diff --git a/app/Events/PaymentWasDeleted.php b/app/Events/PaymentWasDeleted.php index e12647c860..e7b62fe74c 100644 --- a/app/Events/PaymentWasDeleted.php +++ b/app/Events/PaymentWasDeleted.php @@ -1,22 +1,29 @@ -payment = $payment; } - } diff --git a/app/Events/PaymentWasRefunded.php b/app/Events/PaymentWasRefunded.php new file mode 100644 index 0000000000..55ca280ba8 --- /dev/null +++ b/app/Events/PaymentWasRefunded.php @@ -0,0 +1,31 @@ +payment = $payment; + $this->refundAmount = $refundAmount; + } +} diff --git a/app/Events/PaymentWasRestored.php b/app/Events/PaymentWasRestored.php index 711bdbb67f..1179d1896e 100644 --- a/app/Events/PaymentWasRestored.php +++ b/app/Events/PaymentWasRestored.php @@ -1,25 +1,30 @@ payment = $payment; $this->fromDeleted = $fromDeleted; } - } diff --git a/app/Events/PaymentWasVoided.php b/app/Events/PaymentWasVoided.php new file mode 100644 index 0000000000..e2d4f50133 --- /dev/null +++ b/app/Events/PaymentWasVoided.php @@ -0,0 +1,27 @@ +payment = $payment; + } +} diff --git a/app/Events/QuoteInvitationWasApproved.php b/app/Events/QuoteInvitationWasApproved.php index 5e69fe9c78..e5532352e1 100644 --- a/app/Events/QuoteInvitationWasApproved.php +++ b/app/Events/QuoteInvitationWasApproved.php @@ -1,27 +1,37 @@ quote = $quote; $this->invoice = $invoice; $this->invitation = $invitation; } - } diff --git a/app/Events/QuoteInvitationWasEmailed.php b/app/Events/QuoteInvitationWasEmailed.php index 5ce1c68602..54481ab9e7 100644 --- a/app/Events/QuoteInvitationWasEmailed.php +++ b/app/Events/QuoteInvitationWasEmailed.php @@ -1,21 +1,26 @@ invitation = $invitation; } diff --git a/app/Events/QuoteInvitationWasViewed.php b/app/Events/QuoteInvitationWasViewed.php index 3cd84b0e11..87f5da2a0b 100644 --- a/app/Events/QuoteInvitationWasViewed.php +++ b/app/Events/QuoteInvitationWasViewed.php @@ -1,25 +1,31 @@ quote = $quote; $this->invitation = $invitation; } - } diff --git a/app/Events/QuoteWasArchived.php b/app/Events/QuoteWasArchived.php index 285a61250c..4e78026b24 100644 --- a/app/Events/QuoteWasArchived.php +++ b/app/Events/QuoteWasArchived.php @@ -1,22 +1,20 @@ quote = $quote; - } + /** + * Create a new event instance. + * + * @param $quote + */ + public function __construct($quote) + { + $this->quote = $quote; + } } diff --git a/app/Events/QuoteWasCreated.php b/app/Events/QuoteWasCreated.php index d17ef9c131..8077ea6716 100644 --- a/app/Events/QuoteWasCreated.php +++ b/app/Events/QuoteWasCreated.php @@ -1,22 +1,22 @@ quote = $quote; } - } diff --git a/app/Events/QuoteWasDeleted.php b/app/Events/QuoteWasDeleted.php index ce3685d7a2..c338042e8d 100644 --- a/app/Events/QuoteWasDeleted.php +++ b/app/Events/QuoteWasDeleted.php @@ -1,22 +1,22 @@ quote = $quote; } - } diff --git a/app/Events/QuoteWasEmailed.php b/app/Events/QuoteWasEmailed.php index 19b1ec12d6..e41cfebb2c 100644 --- a/app/Events/QuoteWasEmailed.php +++ b/app/Events/QuoteWasEmailed.php @@ -1,22 +1,22 @@ quote = $quote; } - } diff --git a/app/Events/QuoteWasRestored.php b/app/Events/QuoteWasRestored.php index 0f13a65b43..4733991f69 100644 --- a/app/Events/QuoteWasRestored.php +++ b/app/Events/QuoteWasRestored.php @@ -1,22 +1,22 @@ quote = $quote; } - } diff --git a/app/Events/QuoteWasUpdated.php b/app/Events/QuoteWasUpdated.php index f01b982260..b3559a85b1 100644 --- a/app/Events/QuoteWasUpdated.php +++ b/app/Events/QuoteWasUpdated.php @@ -1,22 +1,23 @@ quote = $quote; - } + /** + * Create a new event instance. + * + * @param $quote + */ + public function __construct($quote) + { + $this->quote = $quote; + } } diff --git a/app/Events/TaskWasCreated.php b/app/Events/TaskWasCreated.php new file mode 100644 index 0000000000..af1fc5c27d --- /dev/null +++ b/app/Events/TaskWasCreated.php @@ -0,0 +1,28 @@ +task = $task; + } +} diff --git a/app/Events/TaskWasUpdated.php b/app/Events/TaskWasUpdated.php new file mode 100644 index 0000000000..608f57ea7c --- /dev/null +++ b/app/Events/TaskWasUpdated.php @@ -0,0 +1,28 @@ +task = $task; + } +} diff --git a/app/Events/UserLoggedIn.php b/app/Events/UserLoggedIn.php index 1f4af5e86a..3127d38247 100644 --- a/app/Events/UserLoggedIn.php +++ b/app/Events/UserLoggedIn.php @@ -1,21 +1,18 @@ user = $user; - } - + } } diff --git a/app/Events/UserSignedUp.php b/app/Events/UserSignedUp.php index 99e8b22456..fcef6296cd 100644 --- a/app/Events/UserSignedUp.php +++ b/app/Events/UserSignedUp.php @@ -1,21 +1,18 @@ vendor = $vendor; } diff --git a/app/Events/VendorWasCreated.php b/app/Events/VendorWasCreated.php index b2d7e81c93..dcd86a1548 100644 --- a/app/Events/VendorWasCreated.php +++ b/app/Events/VendorWasCreated.php @@ -1,21 +1,26 @@ vendor = $vendor; } diff --git a/app/Events/VendorWasDeleted.php b/app/Events/VendorWasDeleted.php index 553bece3cc..c53a8c2123 100644 --- a/app/Events/VendorWasDeleted.php +++ b/app/Events/VendorWasDeleted.php @@ -1,21 +1,26 @@ vendor = $vendor; } diff --git a/app/Events/VendorWasRestored.php b/app/Events/VendorWasRestored.php index 88c24693e6..0b62f5a27e 100644 --- a/app/Events/VendorWasRestored.php +++ b/app/Events/VendorWasRestored.php @@ -1,21 +1,26 @@ vendor = $vendor; } diff --git a/app/Events/VendorWasUpdated.php b/app/Events/VendorWasUpdated.php index eb90a68f46..17f4a56c7f 100644 --- a/app/Events/VendorWasUpdated.php +++ b/app/Events/VendorWasUpdated.php @@ -1,20 +1,26 @@ vendor = $vendor; } diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 2a8b0d3052..0eecaba698 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -4,13 +4,17 @@ use Redirect; use Utils; use Exception; use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler; -use Illuminate\Http\Exception\HttpResponseException; +use Illuminate\Http\Exception\HttpResponseException; use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Database\Eloquent\ModelNotFoundException; use Symfony\Component\HttpKernel\Exception\HttpException; -use Illuminate\Foundation\Validation\ValidationException; +use Illuminate\Validation\ValidationException; -class Handler extends ExceptionHandler { +/** + * Class Handler + */ +class Handler extends ExceptionHandler +{ /** * A list of the exception types that should not be reported. @@ -24,14 +28,14 @@ class Handler extends ExceptionHandler { ValidationException::class, ]; - /** - * Report or log an exception. - * - * This is a great spot to send exceptions to Sentry, Bugsnag, etc. - * - * @param \Exception $e - * @return void - */ + /** + * Report or log an exception. + * + * This is a great spot to send exceptions to Sentry, Bugsnag, etc. + * + * @param \Exception $e + * @return bool|void + */ public function report(Exception $e) { // don't show these errors in the logs diff --git a/app/Http/Controllers/AccountApiController.php b/app/Http/Controllers/AccountApiController.php index 65175cdd5b..1034bdf254 100644 --- a/app/Http/Controllers/AccountApiController.php +++ b/app/Http/Controllers/AccountApiController.php @@ -3,22 +3,12 @@ use Auth; use Utils; use Response; -use Input; -use Validator; use Cache; -use App\Models\Client; use App\Models\Account; -use App\Models\AccountToken; use App\Ninja\Repositories\AccountRepository; use Illuminate\Http\Request; -use League\Fractal; -use League\Fractal\Manager; -use App\Ninja\Serializers\ArraySerializer; use App\Ninja\Transformers\AccountTransformer; use App\Ninja\Transformers\UserAccountTransformer; -use App\Http\Controllers\BaseAPIController; -use Swagger\Annotations as SWG; - use App\Events\UserSignedUp; use App\Http\Requests\RegisterRequest; use App\Http\Requests\UpdateAccountRequest; @@ -183,8 +173,6 @@ class AccountApiController extends BaseAPIController 'notify_paid' => $request->notify_paid, ]; - //unset($devices[$x]); - $devices[$x] = $newDevice; $account->devices = json_encode($devices); $account->save(); diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index 57f581e3df..dac7c171b2 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -1,5 +1,7 @@ accountRepo = $accountRepo; $this->userMailer = $userMailer; $this->contactMailer = $contactMailer; @@ -54,6 +90,9 @@ class AccountController extends BaseController $this->paymentService = $paymentService; } + /** + * @return \Illuminate\Http\RedirectResponse + */ public function demo() { $demoAccountId = Utils::getDemoAccountId(); @@ -70,6 +109,9 @@ class AccountController extends BaseController return Redirect::to('invoices/create'); } + /** + * @return \Illuminate\Http\RedirectResponse + */ public function getStarted() { $user = false; @@ -112,17 +154,9 @@ class AccountController extends BaseController return Redirect::to($redirectTo)->with('sign_up', Input::get('sign_up')); } - public function enableProPlan() - { - if (Auth::user()->isPro() && ! Auth::user()->isTrial()) { - return false; - } - - $invitation = $this->accountRepo->enablePlan(); - - return $invitation->invitation_key; - } - + /** + * @return \Illuminate\Http\RedirectResponse + */ public function changePlan() { $user = Auth::user(); $account = $user->account; @@ -142,22 +176,23 @@ class AccountController extends BaseController $term = PLAN_TERM_YEARLY; } - $new_plan = array( + $new_plan = [ 'plan' => PLAN_ENTERPRISE, 'term' => $term, - ); + ]; } elseif ($planDetails['plan'] == $plan) { // Term switch if ($planDetails['term'] == PLAN_TERM_YEARLY && $term == PLAN_TERM_MONTHLY) { - $pending_change = array( + $pending_change = [ 'plan' => $plan, 'term' => $term - ); - } elseif ($planDetails['term'] == PLAN_TERM_MONTHLY && $term == PLAN_TERM_YEARLY) { - $new_plan = array( + ]; + } elseif ($planDetails['term'] == PLAN_TERM_MONTHLY && $term == PLAN_TERM_YEARLY + || $planDetails['num_users'] != Input::get('num_users')) { + $new_plan = [ 'plan' => $plan, 'term' => $term, - ); + ]; } else { // Cancel the pending change $account->company->pending_plan = null; @@ -180,16 +215,10 @@ class AccountController extends BaseController $account->company->pending_plan = null; $account->company->pending_term = null; - if ($account->company->payment) { - $payment = $account->company->payment; - - $gateway = $this->paymentService->createGateway($payment->account_gateway); - $refund = $gateway->refund(array( - 'transactionReference' => $payment->transaction_reference, - 'amount' => $payment->amount - )); - $refund->send(); - $payment->delete(); + if ($payment = $account->company->payment) { + $ninjaAccount = $this->accountRepo->getNinjaAccount(); + $paymentDriver = $ninjaAccount->paymentDriver(); + $paymentDriver->refundPayment($payment); Session::flash('message', trans('texts.plan_refunded')); \Log::info("Refunded Plan Payment: {$account->name} - {$user->email}"); } else { @@ -199,10 +228,10 @@ class AccountController extends BaseController $account->company->save(); } else { - $pending_change = array( + $pending_change = [ 'plan' => $plan, 'term' => $plan == PLAN_FREE ? null : $term, - ); + ]; } } @@ -218,32 +247,44 @@ class AccountController extends BaseController $days_total = $planDetails['paid']->diff($planDetails['expires'])->days; $percent_used = $days_used / $days_total; - $old_plan_price = Account::$plan_prices[$planDetails['plan']][$planDetails['term']]; - $credit = $old_plan_price * (1 - $percent_used); + $credit = $planDetails['plan_price'] * (1 - $percent_used); } } else { - $new_plan = array( + $new_plan = [ 'plan' => $plan, 'term' => $term, - ); + ]; } if (!empty($pending_change) && empty($new_plan)) { + $pending_change['num_users'] = Input::get('num_users'); $account->company->pending_plan = $pending_change['plan']; $account->company->pending_term = $pending_change['term']; + $account->company->pending_num_users = $pending_change['num_users']; + $account->company->pending_plan_price = Utils::getPlanPrice($pending_change); $account->company->save(); Session::flash('message', trans('texts.updated_plan')); } - if (!empty($new_plan)) { - $invitation = $this->accountRepo->enablePlan($new_plan['plan'], $new_plan['term'], $credit, !empty($pending_monthly)); + if (!empty($new_plan) && $new_plan['plan'] != PLAN_FREE) { + $new_plan['num_users'] = 1; + if ($new_plan['plan'] == PLAN_ENTERPRISE) { + $new_plan['num_users'] = Input::get('num_users'); + } + $new_plan['price'] = Utils::getPlanPrice($new_plan); + $invitation = $this->accountRepo->enablePlan($new_plan, $credit, !empty($pending_monthly)); return Redirect::to('view/'.$invitation->invitation_key); } return Redirect::to('/settings/'.ACCOUNT_MANAGEMENT, 301); } + /** + * @param $entityType + * @param $visible + * @return mixed + */ public function setTrashVisible($entityType, $visible) { Session::put("show_trash:{$entityType}", $visible == 'true'); @@ -251,6 +292,9 @@ class AccountController extends BaseController return RESULT_SUCCESS; } + /** + * @return \Illuminate\Http\JsonResponse + */ public function getSearchData() { $data = $this->accountRepo->getSearchData(Auth::user()); @@ -258,6 +302,10 @@ class AccountController extends BaseController return Response::json($data); } + /** + * @param bool $section + * @return \Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse + */ public function showSection($section = false) { if (!$section) { @@ -303,6 +351,9 @@ class AccountController extends BaseController } } + /** + * @return \Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse + */ private function showSystemSettings() { if (Utils::isNinjaProd()) { @@ -311,13 +362,16 @@ class AccountController extends BaseController $data = [ 'account' => Account::with('users')->findOrFail(Auth::user()->account_id), - 'title' => trans("texts.system_settings"), + 'title' => trans('texts.system_settings'), 'section' => ACCOUNT_SYSTEM_SETTINGS, ]; - return View::make("accounts.system_settings", $data); + return View::make('accounts.system_settings', $data); } + /** + * @return \Illuminate\Contracts\View\View + */ private function showInvoiceSettings() { $account = Auth::user()->account; @@ -334,14 +388,17 @@ class AccountController extends BaseController $data = [ 'account' => Account::with('users')->findOrFail(Auth::user()->account_id), - 'title' => trans("texts.invoice_settings"), + 'title' => trans('texts.invoice_settings'), 'section' => ACCOUNT_INVOICE_SETTINGS, 'recurringHours' => $recurringHours, ]; - return View::make("accounts.invoice_settings", $data); + return View::make('accounts.invoice_settings', $data); } + /** + * @return \Illuminate\Contracts\View\View + */ private function showCompanyDetails() { // check that logo is less than the max file size @@ -352,15 +409,16 @@ class AccountController extends BaseController $data = [ 'account' => Account::with('users')->findOrFail(Auth::user()->account_id), - 'countries' => Cache::get('countries'), 'sizes' => Cache::get('sizes'), - 'industries' => Cache::get('industries'), 'title' => trans('texts.company_details'), ]; return View::make('accounts.details', $data); } + /** + * @return \Illuminate\Contracts\View\View + */ private function showAccountManagement() { $account = Auth::user()->account; @@ -373,6 +431,9 @@ class AccountController extends BaseController return View::make('accounts.management', $data); } + /** + * @return \Illuminate\Contracts\View\View + */ public function showUserDetails() { $oauthLoginUrls = []; @@ -392,6 +453,9 @@ class AccountController extends BaseController return View::make('accounts.user_details', $data); } + /** + * @return \Illuminate\Contracts\View\View + */ private function showLocalization() { $data = [ @@ -400,33 +464,33 @@ class AccountController extends BaseController 'dateFormats' => Cache::get('dateFormats'), 'datetimeFormats' => Cache::get('datetimeFormats'), 'currencies' => Cache::get('currencies'), - 'languages' => Cache::get('languages'), 'title' => trans('texts.localization'), + 'weekdays' => Utils::getTranslatedWeekdayNames(), ]; return View::make('accounts.localization', $data); } + /** + * @return \Illuminate\Contracts\View\View + */ private function showBankAccounts() { - $account = Auth::user()->account; - $account->load('bank_accounts'); - $count = count($account->bank_accounts); - - if ($count == 0) { - return Redirect::to('bank_accounts/create'); - } else { - return View::make('accounts.banks', [ - 'title' => trans('texts.bank_accounts') - ]); - } + return View::make('accounts.banks', [ + 'title' => trans('texts.bank_accounts'), + 'advanced' => ! Auth::user()->hasFeature(FEATURE_EXPENSES), + ]); } + /** + * @return \Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse + */ private function showOnlinePayments() { $account = Auth::user()->account; $account->load('account_gateways'); $count = count($account->account_gateways); + $trashedCount = AccountGateway::scope($account->id)->withTrashed()->count(); if ($accountGateway = $account->getGatewayConfig(GATEWAY_STRIPE)) { if (! $accountGateway->getPublishableStripeKey()) { @@ -434,16 +498,26 @@ class AccountController extends BaseController } } - if ($count == 0) { + if ($trashedCount == 0) { return Redirect::to('gateways/create'); } else { + $tokenBillingOptions = []; + for ($i=1; $i<=4; $i++) { + $tokenBillingOptions[$i] = trans("texts.token_billing_{$i}"); + } + return View::make('accounts.payments', [ - 'showAdd' => $count < count(Gateway::$paymentTypes), - 'title' => trans('texts.online_payments') + 'showAdd' => $count < count(Gateway::$alternate) + 1, + 'title' => trans('texts.online_payments'), + 'tokenBillingOptions' => $tokenBillingOptions, + 'account' => $account, ]); } } + /** + * @return \Illuminate\Contracts\View\View + */ private function showProducts() { $columns = ['product', 'description', 'unit_cost']; @@ -461,6 +535,9 @@ class AccountController extends BaseController return View::make('accounts.products', $data); } + /** + * @return \Illuminate\Contracts\View\View + */ private function showTaxRates() { $data = [ @@ -472,6 +549,9 @@ class AccountController extends BaseController return View::make('accounts.tax_rates', $data); } + /** + * @return \Illuminate\Contracts\View\View + */ private function showPaymentTerms() { $data = [ @@ -483,6 +563,10 @@ class AccountController extends BaseController return View::make('accounts.payment_terms', $data); } + /** + * @param $section + * @return \Illuminate\Contracts\View\View + */ private function showInvoiceDesign($section) { $account = Auth::user()->account->load('country'); @@ -596,8 +680,8 @@ class AccountController extends BaseController // sample invoice to help determine variables $invoice = Invoice::scope() + ->invoiceType(INVOICE_TYPE_STANDARD) ->with('client', 'account') - ->where('is_quote', '=', false) ->where('is_recurring', '=', false) ->first(); @@ -613,6 +697,9 @@ class AccountController extends BaseController return View::make("accounts.{$section}", $data); } + /** + * @return \Illuminate\Contracts\View\View + */ private function showClientPortal() { $account = Auth::user()->account->load('country'); @@ -621,8 +708,8 @@ class AccountController extends BaseController if (Utils::isNinja() && $css) { // Unescape the CSS for display purposes $css = str_replace( - array('\3C ', '\3E ', '\26 '), - array('<', '>', '&'), + ['\3C ', '\3E ', '\26 '], + ['<', '>', '&'], $css ); } @@ -631,14 +718,17 @@ class AccountController extends BaseController 'client_view_css' => $css, 'enable_portal_password' => $account->enable_portal_password, 'send_portal_password' => $account->send_portal_password, - 'title' => trans("texts.client_portal"), + 'title' => trans('texts.client_portal'), 'section' => ACCOUNT_CLIENT_PORTAL, 'account' => $account, ]; - return View::make("accounts.client_portal", $data); + return View::make('accounts.client_portal', $data); } + /** + * @return \Illuminate\Contracts\View\View + */ private function showTemplates() { $account = Auth::user()->account->load('country'); @@ -661,12 +751,18 @@ class AccountController extends BaseController return View::make('accounts.templates_and_reminders', $data); } + /** + * @param $section + * @return \Illuminate\Http\RedirectResponse + */ public function doSection($section = ACCOUNT_COMPANY_DETAILS) { if ($section === ACCOUNT_COMPANY_DETAILS) { return AccountController::saveDetails(); } elseif ($section === ACCOUNT_LOCALIZATION) { return AccountController::saveLocalization(); + } elseif ($section == ACCOUNT_PAYMENTS) { + return self::saveOnlinePayments(); } elseif ($section === ACCOUNT_NOTIFICATIONS) { return AccountController::saveNotifications(); } elseif ($section === ACCOUNT_EXPORT) { @@ -692,6 +788,9 @@ class AccountController extends BaseController } } + /** + * @return \Illuminate\Http\RedirectResponse + */ private function saveCustomizeDesign() { if (Auth::user()->account->hasFeature(FEATURE_CUSTOMIZE_INVOICE_DESIGN)) { @@ -706,6 +805,9 @@ class AccountController extends BaseController return Redirect::to('settings/'.ACCOUNT_CUSTOMIZE_DESIGN); } + /** + * @return \Illuminate\Http\RedirectResponse + */ private function saveClientPortal() { $account = Auth::user()->account; @@ -759,6 +861,9 @@ class AccountController extends BaseController return Redirect::to('settings/'.ACCOUNT_CLIENT_PORTAL); } + /** + * @return \Illuminate\Http\RedirectResponse + */ private function saveEmailTemplates() { if (Auth::user()->account->hasFeature(FEATURE_EMAIL_TEMPLATES_REMINDERS)) { @@ -793,14 +898,13 @@ class AccountController extends BaseController return Redirect::to('settings/'.ACCOUNT_TEMPLATES_AND_REMINDERS); } + /** + * @return \Illuminate\Http\RedirectResponse + */ private function saveTaxRates() { $account = Auth::user()->account; - - $account->invoice_taxes = Input::get('invoice_taxes') ? true : false; - $account->invoice_item_taxes = Input::get('invoice_item_taxes') ? true : false; - $account->show_item_taxes = Input::get('show_item_taxes') ? true : false; - $account->default_tax_rate_id = Input::get('default_tax_rate_id'); + $account->fill(Input::all()); $account->save(); Session::flash('message', trans('texts.updated_settings')); @@ -808,6 +912,9 @@ class AccountController extends BaseController return Redirect::to('settings/'.ACCOUNT_TAX_RATES); } + /** + * @return \Illuminate\Http\RedirectResponse + */ private function saveProducts() { $account = Auth::user()->account; @@ -821,21 +928,24 @@ class AccountController extends BaseController return Redirect::to('settings/'.ACCOUNT_PRODUCTS); } + /** + * @return $this|\Illuminate\Http\RedirectResponse + */ private function saveEmailSettings() { if (Auth::user()->account->hasFeature(FEATURE_CUSTOM_EMAILS)) { - $rules = []; $user = Auth::user(); - $iframeURL = preg_replace('/[^a-zA-Z0-9_\-\:\/\.]/', '', substr(strtolower(Input::get('iframe_url')), 0, MAX_IFRAME_URL_LENGTH)); - $iframeURL = rtrim($iframeURL, "/"); + $subdomain = null; + $iframeURL = null; + $rules = []; - $subdomain = preg_replace('/[^a-zA-Z0-9_\-\.]/', '', substr(strtolower(Input::get('subdomain')), 0, MAX_SUBDOMAIN_LENGTH)); - if ($iframeURL) { - $subdomain = null; - } - if ($subdomain) { + if (Input::get('custom_link') == 'subdomain') { + $subdomain = preg_replace('/[^a-zA-Z0-9_\-\.]/', '', substr(strtolower(Input::get('subdomain')), 0, MAX_SUBDOMAIN_LENGTH)); $exclude = ['www', 'app', 'mail', 'admin', 'blog', 'user', 'contact', 'payment', 'payments', 'billing', 'invoice', 'business', 'owner', 'info', 'ninja']; $rules['subdomain'] = "unique:accounts,subdomain,{$user->account_id},id|not_in:" . implode(',', $exclude); + } else { + $iframeURL = preg_replace('/[^a-zA-Z0-9_\-\:\/\.]/', '', substr(strtolower(Input::get('iframe_url')), 0, MAX_IFRAME_URL_LENGTH)); + $iframeURL = rtrim($iframeURL, '/'); } $validator = Validator::make(Input::all(), $rules); @@ -864,6 +974,9 @@ class AccountController extends BaseController return Redirect::to('settings/'.ACCOUNT_EMAIL_SETTINGS); } + /** + * @return $this|\Illuminate\Http\RedirectResponse + */ private function saveInvoiceSettings() { if (Auth::user()->account->hasFeature(FEATURE_INVOICE_SETTINGS)) { @@ -945,6 +1058,9 @@ class AccountController extends BaseController return Redirect::to('settings/'.ACCOUNT_INVOICE_SETTINGS); } + /** + * @return \Illuminate\Http\RedirectResponse + */ private function saveInvoiceDesign() { if (Auth::user()->account->hasFeature(FEATURE_CUSTOMIZE_INVOICE_DESIGN)) { @@ -976,7 +1092,7 @@ class AccountController extends BaseController } $labels = []; - foreach (['item', 'description', 'unit_cost', 'quantity', 'line_total', 'terms', 'balance_due', 'partial_due'] as $field) { + foreach (['item', 'description', 'unit_cost', 'quantity', 'line_total', 'terms', 'balance_due', 'partial_due', 'subtotal', 'paid_to_date', 'discount'] as $field) { $labels[$field] = Input::get("labels_{$field}"); } $account->invoice_labels = json_encode($labels); @@ -989,6 +1105,9 @@ class AccountController extends BaseController return Redirect::to('settings/'.ACCOUNT_INVOICE_DESIGN); } + /** + * @return \Illuminate\Http\RedirectResponse + */ private function saveNotifications() { $user = Auth::user(); @@ -1003,6 +1122,10 @@ class AccountController extends BaseController return Redirect::to('settings/'.ACCOUNT_NOTIFICATIONS); } + /** + * @param UpdateAccountRequest $request + * @return \Illuminate\Http\RedirectResponse + */ public function updateDetails(UpdateAccountRequest $request) { $account = Auth::user()->account; @@ -1025,7 +1148,7 @@ class AccountController extends BaseController $documentType = $extension; } - if(!in_array($documentType, array('jpeg', 'png', 'gif'))){ + if(!in_array($documentType, ['jpeg', 'png', 'gif'])){ Session::flash('warning', 'Unsupported file type'); } else { $documentTypeData = Document::$types[$documentType]; @@ -1089,8 +1212,12 @@ class AccountController extends BaseController return Redirect::to('settings/'.ACCOUNT_COMPANY_DETAILS); } + /** + * @return $this|\Illuminate\Http\RedirectResponse + */ public function saveUserDetails() { + /** @var \App\Models\User $user */ $user = Auth::user(); $rules = ['email' => 'email|required|unique:users,email,'.$user->id.',id']; $validator = Validator::make(Input::all(), $rules); @@ -1124,9 +1251,14 @@ class AccountController extends BaseController } } + /** + * @return \Illuminate\Http\RedirectResponse + */ private function saveLocalization() { + /** @var \App\Models\Account $account */ $account = Auth::user()->account; + $account->timezone_id = Input::get('timezone_id') ? Input::get('timezone_id') : null; $account->date_format_id = Input::get('date_format_id') ? Input::get('date_format_id') : null; $account->datetime_format_id = Input::get('datetime_format_id') ? Input::get('datetime_format_id') : null; @@ -1134,6 +1266,7 @@ class AccountController extends BaseController $account->language_id = Input::get('language_id') ? Input::get('language_id') : 1; // English $account->military_time = Input::get('military_time') ? true : false; $account->show_currency_code = Input::get('show_currency_code') ? true : false; + $account->start_of_week = Input::get('start_of_week') ? Input::get('start_of_week') : 0; $account->save(); event(new UserSettingsChanged()); @@ -1143,6 +1276,26 @@ class AccountController extends BaseController return Redirect::to('settings/'.ACCOUNT_LOCALIZATION); } + /** + * @return \Illuminate\Http\RedirectResponse + */ + private function saveOnlinePayments() + { + $account = Auth::user()->account; + $account->token_billing_type_id = Input::get('token_billing_type_id'); + $account->auto_bill_on_due_date = boolval(Input::get('auto_bill_on_due_date')); + $account->save(); + + event(new UserSettingsChanged()); + + Session::flash('message', trans('texts.updated_settings')); + + return Redirect::to('settings/'.ACCOUNT_PAYMENTS); + } + + /** + * @return \Illuminate\Http\RedirectResponse + */ public function removeLogo() { $account = Auth::user()->account; @@ -1161,25 +1314,33 @@ class AccountController extends BaseController return Redirect::to('settings/'.ACCOUNT_COMPANY_DETAILS); } + /** + * @return string + */ public function checkEmail() { - $email = User::withTrashed()->where('email', '=', Input::get('email'))->where('id', '<>', Auth::user()->id)->first(); + $email = User::withTrashed()->where('email', '=', Input::get('email')) + ->where('id', '<>', Auth::user()->id) + ->first(); if ($email) { - return "taken"; + return 'taken'; } else { - return "available"; + return 'available'; } } + /** + * @return string + */ public function submitSignup() { - $rules = array( + $rules = [ 'new_first_name' => 'required', 'new_last_name' => 'required', 'new_password' => 'required|min:6', 'new_email' => 'email|required|unique:users,email,'.Auth::user()->id.',id', - ); + ]; $validator = Validator::make(Input::all(), $rules); @@ -1187,6 +1348,7 @@ class AccountController extends BaseController return ''; } + /** @var \App\Models\User $user */ $user = Auth::user(); $user->first_name = trim(Input::get('new_first_name')); $user->last_name = trim(Input::get('new_last_name')); @@ -1205,6 +1367,9 @@ class AccountController extends BaseController return "{$user->first_name} {$user->last_name}"; } + /** + * @return mixed + */ public function doRegister() { $affiliate = Affiliate::where('affiliate_key', '=', SELF_HOST_AFFILIATE_KEY)->first(); @@ -1228,6 +1393,9 @@ class AccountController extends BaseController return RESULT_SUCCESS; } + /** + * @return \Illuminate\Http\RedirectResponse + */ public function cancelAccount() { if ($reason = trim(Input::get('reason'))) { @@ -1268,16 +1436,25 @@ class AccountController extends BaseController return Redirect::to('/')->with('clearGuestKey', true); } + /** + * @return \Illuminate\Http\RedirectResponse + */ public function resendConfirmation() { + /** @var \App\Models\User $user */ $user = Auth::user(); $this->userMailer->sendConfirmation($user); return Redirect::to('/settings/'.ACCOUNT_USER_DETAILS)->with('message', trans('texts.confirmation_resent')); } + /** + * @param $plan + * @return \Illuminate\Http\RedirectResponse + */ public function startTrial($plan) { + /** @var \App\Models\User $user */ $user = Auth::user(); if ($user->isEligibleForTrial($plan)) { @@ -1287,6 +1464,11 @@ class AccountController extends BaseController return Redirect::back()->with('message', trans('texts.trial_success')); } + /** + * @param $section + * @param bool $subSection + * @return \Illuminate\Http\RedirectResponse + */ public function redirectLegacy($section, $subSection = false) { if ($section === 'details') { @@ -1307,7 +1489,11 @@ class AccountController extends BaseController return Redirect::to("/settings/$section/", 301); } - public function previewEmail(\App\Services\TemplateService $templateService) + /** + * @param TemplateService $templateService + * @return \Illuminate\Http\Response + */ + public function previewEmail(TemplateService $templateService) { $template = Input::get('template'); $invoice = Invoice::scope() diff --git a/app/Http/Controllers/AccountGatewayController.php b/app/Http/Controllers/AccountGatewayController.php index 968fac50e6..fc6af8a66e 100644 --- a/app/Http/Controllers/AccountGatewayController.php +++ b/app/Http/Controllers/AccountGatewayController.php @@ -1,8 +1,6 @@ gateway->name; $data['config'] = $config; $data['hiddenFields'] = Gateway::$hiddenFields; - $data['paymentTypeId'] = $accountGateway->getPaymentType(); $data['selectGateways'] = Gateway::where('id', '=', $accountGateway->gateway_id)->get(); - return View::make('accounts.account_gateway', $data); } @@ -84,43 +79,40 @@ class AccountGatewayController extends BaseController */ public function create() { - $data = self::getViewModel(); - $data['url'] = 'gateways'; - $data['method'] = 'POST'; - $data['title'] = trans('texts.add_gateway'); - $data['selectGateways'] = Gateway::where('payment_library_id', '=', 1) - ->where('id', '!=', GATEWAY_PAYPAL_EXPRESS) - ->where('id', '!=', GATEWAY_BITPAY) - ->where('id', '!=', GATEWAY_GOCARDLESS) - ->where('id', '!=', GATEWAY_DWOLLA) - ->orderBy('name')->get(); - $data['hiddenFields'] = Gateway::$hiddenFields; - if ( ! \Request::secure() && ! Utils::isNinjaDev()) { Session::flash('warning', trans('texts.enable_https')); } - return View::make('accounts.account_gateway', $data); + $account = Auth::user()->account; + $accountGatewaysIds = $account->gatewayIds(); + $otherProviders = Input::get('other_providers'); + + if ( ! Utils::isNinja() || Gateway::hasStandardGateway($accountGatewaysIds)) { + $otherProviders = true; + } + + $data = self::getViewModel(); + $data['url'] = 'gateways'; + $data['method'] = 'POST'; + $data['title'] = trans('texts.add_gateway'); + + if ($otherProviders) { + $availableGatewaysIds = $account->availableGatewaysIds(); + $data['primaryGateways'] = Gateway::primary($availableGatewaysIds)->orderBy('name', 'desc')->get(); + $data['secondaryGateways'] = Gateway::secondary($availableGatewaysIds)->orderBy('name')->get(); + $data['hiddenFields'] = Gateway::$hiddenFields; + + return View::make('accounts.account_gateway', $data); + } else { + return View::make('accounts.account_gateway_wepay', $data); + } } private function getViewModel($accountGateway = false) { $selectedCards = $accountGateway ? $accountGateway->accepted_credit_cards : 0; - $account = Auth::user()->account; - - $paymentTypes = []; - foreach (Gateway::$paymentTypes as $type) { - if ($accountGateway || !$account->getGatewayByType($type)) { - $paymentTypes[$type] = trans('texts.'.strtolower($type)); - - if ($type == PAYMENT_TYPE_BITCOIN) { - $paymentTypes[$type] .= ' - BitPay'; - } - if ($type == PAYMENT_TYPE_DIRECT_DEBIT) { - $paymentTypes[$type] .= ' - GoCardless'; - } - } - } + $user = Auth::user(); + $account =$user->account; $creditCardsArray = unserialize(CREDIT_CARDS); $creditCards = []; @@ -139,25 +131,19 @@ class AccountGatewayController extends BaseController foreach ($gateways as $gateway) { $fields = $gateway->getFields(); asort($fields); - $gateway->fields = $fields; + $gateway->fields = $gateway->id == GATEWAY_WEPAY ? [] : $fields; if ($accountGateway && $accountGateway->gateway_id == $gateway->id) { $accountGateway->fields = $gateway->fields; } } - $tokenBillingOptions = []; - for ($i=1; $i<=4; $i++) { - $tokenBillingOptions[$i] = trans("texts.token_billing_{$i}"); - } - return [ - 'paymentTypes' => $paymentTypes, 'account' => $account, + 'user' => $user, 'accountGateway' => $accountGateway, 'config' => false, 'gateways' => $gateways, 'creditCardTypes' => $creditCards, - 'tokenBillingOptions' => $tokenBillingOptions, 'countGateways' => count($currentGateways) ]; } @@ -169,7 +155,7 @@ class AccountGatewayController extends BaseController $ids = Input::get('bulk_public_id'); $count = $this->accountGatewayService->bulk($ids, $action); - Session::flash('message', trans('texts.archived_account_gateway')); + Session::flash('message', trans("texts.{$action}d_account_gateway")); return Redirect::to('settings/' . ACCOUNT_PAYMENTS); } @@ -180,27 +166,10 @@ class AccountGatewayController extends BaseController */ public function save($accountGatewayPublicId = false) { - $rules = array(); - $paymentType = Input::get('payment_type_id'); - $gatewayId = Input::get('gateway_id'); - - if ($paymentType == PAYMENT_TYPE_PAYPAL) { - $gatewayId = GATEWAY_PAYPAL_EXPRESS; - } elseif ($paymentType == PAYMENT_TYPE_BITCOIN) { - $gatewayId = GATEWAY_BITPAY; - } elseif ($paymentType == PAYMENT_TYPE_DIRECT_DEBIT) { - $gatewayId = GATEWAY_GOCARDLESS; - } elseif ($paymentType == PAYMENT_TYPE_DWOLLA) { - $gatewayId = GATEWAY_DWOLLA; - } - - if (!$gatewayId) { - Session::flash('error', trans('validation.required', ['attribute' => 'gateway'])); - return Redirect::to('gateways/create') - ->withInput(); - } - + $gatewayId = Input::get('primary_gateway_id') ?: Input::get('secondary_gateway_id'); $gateway = Gateway::findOrFail($gatewayId); + + $rules = []; $fields = $gateway->getFields(); $optional = array_merge(Gateway::$hiddenFields, Gateway::$optionalFields); @@ -211,17 +180,20 @@ class AccountGatewayController extends BaseController // do nothing - we're unable to acceptance test with StripeJS } else { $rules['publishable_key'] = 'required'; + $rules['enable_ach'] = 'boolean'; } } - foreach ($fields as $field => $details) { - if (!in_array($field, $optional)) { - if (strtolower($gateway->name) == 'beanstream') { - if (in_array($field, ['merchant_id', 'passCode'])) { - $rules[$gateway->id.'_'.$field] = 'required'; + if ($gatewayId != GATEWAY_WEPAY) { + foreach ($fields as $field => $details) { + if (!in_array($field, $optional)) { + if (strtolower($gateway->name) == 'beanstream') { + if (in_array($field, ['merchant_id', 'passCode'])) { + $rules[$gateway->id . '_' . $field] = 'required'; + } + } else { + $rules[$gateway->id . '_' . $field] = 'required'; } - } else { - $rules[$gateway->id.'_'.$field] = 'required'; } } } @@ -241,22 +213,44 @@ class AccountGatewayController extends BaseController $accountGateway = AccountGateway::scope($accountGatewayPublicId)->firstOrFail(); $oldConfig = $accountGateway->getConfig(); } else { + // check they don't already have an active gateway for this provider + // TODO complete this + $accountGateway = AccountGateway::scope() + ->whereGatewayId($gatewayId) + ->first(); + if ($accountGateway) { + Session::flash('error', trans('texts.gateway_exists')); + return Redirect::to("gateways/{$accountGateway->public_id}/edit"); + } + $accountGateway = AccountGateway::createNew(); $accountGateway->gateway_id = $gatewayId; + + if ($gatewayId == GATEWAY_WEPAY) { + if(!$this->setupWePay($accountGateway, $wepayResponse)) { + return $wepayResponse; + } + $oldConfig = $accountGateway->getConfig(); + } } $config = new stdClass(); - foreach ($fields as $field => $details) { - $value = trim(Input::get($gateway->id.'_'.$field)); - // if the new value is masked use the original value - if ($oldConfig && $value && $value === str_repeat('*', strlen($value))) { - $value = $oldConfig->$field; - } - if (!$value && ($field == 'testMode' || $field == 'developerMode')) { - // do nothing - } else { - $config->$field = $value; + + if ($gatewayId != GATEWAY_WEPAY) { + foreach ($fields as $field => $details) { + $value = trim(Input::get($gateway->id . '_' . $field)); + // if the new value is masked use the original value + if ($oldConfig && $value && $value === str_repeat('*', strlen($value))) { + $value = $oldConfig->$field; + } + if (!$value && ($field == 'testMode' || $field == 'developerMode')) { + // do nothing + } else { + $config->$field = $value; + } } + } elseif($oldConfig) { + $config = clone $oldConfig; } $publishableKey = Input::get('publishable_key'); @@ -266,6 +260,35 @@ class AccountGatewayController extends BaseController $config->publishableKey = $oldConfig->publishableKey; } + $plaidClientId = Input::get('plaid_client_id'); + if ($plaidClientId = str_replace('*', '', $plaidClientId)) { + $config->plaidClientId = $plaidClientId; + } elseif ($oldConfig && property_exists($oldConfig, 'plaidClientId')) { + $config->plaidClientId = $oldConfig->plaidClientId; + } + + $plaidSecret = Input::get('plaid_secret'); + if ($plaidSecret = str_replace('*', '', $plaidSecret)) { + $config->plaidSecret = $plaidSecret; + } elseif ($oldConfig && property_exists($oldConfig, 'plaidSecret')) { + $config->plaidSecret = $oldConfig->plaidSecret; + } + + $plaidPublicKey = Input::get('plaid_public_key'); + if ($plaidPublicKey = str_replace('*', '', $plaidPublicKey)) { + $config->plaidPublicKey = $plaidPublicKey; + } elseif ($oldConfig && property_exists($oldConfig, 'plaidPublicKey')) { + $config->plaidPublicKey = $oldConfig->plaidPublicKey; + } + + if ($gatewayId == GATEWAY_STRIPE || $gatewayId == GATEWAY_WEPAY) { + $config->enableAch = boolval(Input::get('enable_ach')); + } + + if ($gatewayId == GATEWAY_BRAINTREE) { + $config->enablePayPal = boolval(Input::get('enable_paypal')); + } + $cardCount = 0; if ($creditcards) { foreach ($creditcards as $card => $value) { @@ -284,21 +307,167 @@ class AccountGatewayController extends BaseController $account->account_gateways()->save($accountGateway); } - if (Input::get('token_billing_type_id')) { - $account->token_billing_type_id = Input::get('token_billing_type_id'); - $account->save(); - } - - if ($accountGatewayPublicId) { - $message = trans('texts.updated_gateway'); + if(isset($wepayResponse)) { + return $wepayResponse; } else { - $message = trans('texts.created_gateway'); + if ($accountGatewayPublicId) { + $message = trans('texts.updated_gateway'); + } else { + $message = trans('texts.created_gateway'); + } + + Session::flash('message', $message); + return Redirect::to("gateways/{$accountGateway->public_id}/edit"); } - - Session::flash('message', $message); - - return Redirect::to("gateways/{$accountGateway->public_id}/edit"); } } + protected function getWePayUpdateUri($accountGateway) + { + if ($accountGateway->gateway_id != GATEWAY_WEPAY) { + return null; + } + + $wepay = Utils::setupWePay($accountGateway); + + $update_uri_data = $wepay->request('account/get_update_uri', [ + 'account_id' => $accountGateway->getConfig()->accountId, + 'mode' => 'iframe', + 'redirect_uri' => URL::to('/gateways'), + ]); + + return $update_uri_data->uri; + } + + protected function setupWePay($accountGateway, &$response) + { + $user = Auth::user(); + $account = $user->account; + + $rules = [ + 'company_name' => 'required', + 'description' => 'required', + 'tos_agree' => 'required', + 'first_name' => 'required', + 'last_name' => 'required', + 'email' => 'required', + ]; + + if (WEPAY_ENABLE_CANADA) { + $rules['country'] = 'required|in:US,CA'; + } + + $validator = Validator::make(Input::all(), $rules); + + if ($validator->fails()) { + return Redirect::to('gateways/create') + ->withErrors($validator) + ->withInput(); + } + + try{ + $wepay = Utils::setupWePay(); + + $userDetails = [ + 'client_id' => WEPAY_CLIENT_ID, + 'client_secret' => WEPAY_CLIENT_SECRET, + 'email' => Input::get('email'), + 'first_name' => Input::get('first_name'), + 'last_name' => Input::get('last_name'), + 'original_ip' => \Request::getClientIp(true), + 'original_device' => \Request::server('HTTP_USER_AGENT'), + 'tos_acceptance_time' => time(), + 'redirect_uri' => URL::to('gateways'), + 'scope' => 'manage_accounts,collect_payments,view_user,preapprove_payments,send_money', + ]; + + $wepayUser = $wepay->request('user/register/', $userDetails); + + $accessToken = $wepayUser->access_token; + $accessTokenExpires = $wepayUser->expires_in ? (time() + $wepayUser->expires_in) : null; + + $wepay = new WePay($accessToken); + + $accountDetails = [ + 'name' => Input::get('company_name'), + 'description' => Input::get('description'), + 'theme_object' => json_decode(WEPAY_THEME), + 'callback_uri' => $accountGateway->getWebhookUrl(), + ]; + + if (WEPAY_ENABLE_CANADA) { + $accountDetails['country'] = Input::get('country'); + + if (Input::get('country') == 'CA') { + $accountDetails['currencies'] = ['CAD']; + $accountDetails['country_options'] = ['debit_opt_in' => boolval(Input::get('debit_cards'))]; + } + } + + $wepayAccount = $wepay->request('account/create/', $accountDetails); + + try { + $wepay->request('user/send_confirmation/', []); + $confirmationRequired = true; + } catch(\WePayException $ex){ + if ($ex->getMessage() == 'This access_token is already approved.') { + $confirmationRequired = false; + } else { + throw $ex; + } + } + + $accountGateway->gateway_id = GATEWAY_WEPAY; + $accountGateway->setConfig([ + 'userId' => $wepayUser->user_id, + 'accessToken' => $accessToken, + 'tokenType' => $wepayUser->token_type, + 'tokenExpires' => $accessTokenExpires, + 'accountId' => $wepayAccount->account_id, + 'state' => $wepayAccount->state, + 'testMode' => WEPAY_ENVIRONMENT == WEPAY_STAGE, + 'country' => WEPAY_ENABLE_CANADA ? Input::get('country') : 'US', + ]); + + if ($confirmationRequired) { + Session::flash('message', trans('texts.created_wepay_confirmation_required')); + } else { + $updateUri = $wepay->request('/account/get_update_uri', [ + 'account_id' => $wepayAccount->account_id, + 'redirect_uri' => URL::to('gateways'), + ]); + + $response = Redirect::to($updateUri->uri); + return true; + } + + $response = Redirect::to("gateways/{$accountGateway->public_id}/edit"); + return true; + } catch (\WePayException $e) { + Session::flash('error', $e->getMessage()); + $response = Redirect::to('gateways/create') + ->withInput(); + return false; + } + } + + + public function resendConfirmation($publicId = false) + { + $accountGateway = AccountGateway::scope($publicId)->firstOrFail(); + + if ($accountGateway->gateway_id == GATEWAY_WEPAY) { + try { + $wepay = Utils::setupWePay($accountGateway); + $wepay->request('user/send_confirmation', []); + + Session::flash('message', trans('texts.resent_confirmation_email')); + } catch (\WePayException $e) { + Session::flash('error', $e->getMessage()); + } + } + + return Redirect::to("gateways/{$accountGateway->public_id}/edit"); + } + } diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php index 897e1d2a97..bd84d3ff9a 100644 --- a/app/Http/Controllers/ActivityController.php +++ b/app/Http/Controllers/ActivityController.php @@ -1,12 +1,5 @@ $val) { @@ -114,18 +114,18 @@ class AppController extends BaseController // Write Config Settings - $fp = fopen(base_path()."/.env", 'w'); + $fp = fopen(base_path().'/.env', 'w'); fwrite($fp, $config); fclose($fp); // == DB Migrate & Seed == // // Artisan::call('migrate:rollback', array('--force' => true)); // Debug Purposes - Artisan::call('migrate', array('--force' => true)); + Artisan::call('migrate', ['--force' => true]); if (Industry::count() == 0) { - Artisan::call('db:seed', array('--force' => true)); + Artisan::call('db:seed', ['--force' => true]); } Cache::flush(); - Artisan::call('optimize', array('--force' => true)); + Artisan::call('optimize', ['--force' => true]); $firstName = trim(Input::get('first_name')); $lastName = trim(Input::get('last_name')); @@ -147,7 +147,7 @@ class AppController extends BaseController return Redirect::to('/'); } - if ( ! $canUpdateEnv = @fopen(base_path()."/.env", 'w')) { + if ( ! $canUpdateEnv = @fopen(base_path().'/.env', 'w')) { Session::flash('error', 'Warning: Permission denied to write to .env config file, try runningsudo chown www-data:www-data /path/to/ninja/.env
');
return Redirect::to('/settings/system_settings');
}
@@ -174,6 +174,8 @@ class AppController extends BaseController
$_ENV['MAIL_FROM_NAME'] = $mail['from']['name'];
$_ENV['MAIL_PASSWORD'] = $mail['password'];
$_ENV['MAIL_FROM_ADDRESS'] = $mail['username'];
+ $_ENV['MAILGUN_DOMAIN'] = $mail['mailgun_domain'];
+ $_ENV['MAILGUN_SECRET'] = $mail['mailgun_secret'];
}
$config = '';
@@ -187,7 +189,7 @@ class AppController extends BaseController
$config .= "{$key}={$val}\n";
}
- $fp = fopen(base_path()."/.env", 'w');
+ $fp = fopen(base_path().'/.env', 'w');
fwrite($fp, $config);
fclose($fp);
@@ -243,11 +245,11 @@ class AppController extends BaseController
if (!Utils::isNinjaProd() && !Utils::isDatabaseSetup()) {
try {
set_time_limit(60 * 5); // shouldn't take this long but just in case
- Artisan::call('migrate', array('--force' => true));
+ Artisan::call('migrate', ['--force' => true]);
if (Industry::count() == 0) {
- Artisan::call('db:seed', array('--force' => true));
+ Artisan::call('db:seed', ['--force' => true]);
}
- Artisan::call('optimize', array('--force' => true));
+ Artisan::call('optimize', ['--force' => true]);
} catch (Exception $e) {
Utils::logError($e);
return Response::make($e->getMessage(), 500);
@@ -268,13 +270,18 @@ class AppController extends BaseController
Artisan::call('route:clear');
Artisan::call('view:clear');
Artisan::call('config:clear');
- Artisan::call('optimize', array('--force' => true));
+ Artisan::call('optimize', ['--force' => true]);
Cache::flush();
Session::flush();
- Artisan::call('migrate', array('--force' => true));
- Artisan::call('db:seed', array('--force' => true, '--class' => "UpdateSeeder"));
+ Artisan::call('migrate', ['--force' => true]);
+ Artisan::call('db:seed', ['--force' => true, '--class' => 'UpdateSeeder']);
Event::fire(new UserSettingsChanged());
- Session::flash('message', trans('texts.processed_updates'));
+
+ // show message with link to Trello board
+ $message = trans('texts.see_whats_new', ['version' => NINJA_VERSION]);
+ $message = link_to(RELEASES_URL, $message, ['target' => '_blank']);
+ $message = sprintf('%s - %s', trans('texts.processed_updates'), $message);
+ Session::flash('warning', $message);
} catch (Exception $e) {
Utils::logError($e);
return Response::make($e->getMessage(), 500);
diff --git a/app/Http/Controllers/Auth/AuthController.php b/app/Http/Controllers/Auth/AuthController.php
index e599890c6a..0824f4d44e 100644
--- a/app/Http/Controllers/Auth/AuthController.php
+++ b/app/Http/Controllers/Auth/AuthController.php
@@ -12,40 +12,55 @@ use App\Ninja\Repositories\AccountRepository;
use App\Services\AuthService;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
-class AuthController extends Controller {
+class AuthController extends Controller
+{
- /*
- |--------------------------------------------------------------------------
- | Registration & Login Controller
- |--------------------------------------------------------------------------
- |
- | This controller handles the registration of new users, as well as the
- | authentication of existing users. By default, this controller uses
- | a simple trait to add these behaviors. Why don't you explore it?
- |
- */
+ /*
+ |--------------------------------------------------------------------------
+ | Registration & Login Controller
+ |--------------------------------------------------------------------------
+ |
+ | This controller handles the registration of new users, as well as the
+ | authentication of existing users. By default, this controller uses
+ | a simple trait to add these behaviors. Why don't you explore it?
+ |
+ */
- use AuthenticatesAndRegistersUsers;
+ use AuthenticatesAndRegistersUsers;
+ /**
+ * @var string
+ */
protected $redirectTo = '/dashboard';
+
+ /**
+ * @var AuthService
+ */
protected $authService;
+
+ /**
+ * @var AccountRepository
+ */
protected $accountRepo;
- /**
- * Create a new authentication controller instance.
- *
- * @param \Illuminate\Contracts\Auth\Guard $auth
- * @param \Illuminate\Contracts\Auth\Registrar $registrar
- * @return void
- */
- public function __construct(AccountRepository $repo, AuthService $authService)
- {
+ /**
+ * Create a new authentication controller instance.
+ *
+ * @param AccountRepository $repo
+ * @param AuthService $authService
+ * @internal param \Illuminate\Contracts\Auth\Guard $auth
+ * @internal param \Illuminate\Contracts\Auth\Registrar $registrar
+ */
+ public function __construct(AccountRepository $repo, AuthService $authService)
+ {
$this->accountRepo = $repo;
$this->authService = $authService;
+ }
- //$this->middleware('guest', ['except' => 'getLogout']);
- }
-
+ /**
+ * @param array $data
+ * @return mixed
+ */
public function validator(array $data)
{
return Validator::make($data, [
@@ -58,7 +73,8 @@ class AuthController extends Controller {
/**
* Create a new user instance after a valid registration.
*
- * @param array $data
+ * @param array $data
+ *
* @return User
*/
public function create(array $data)
@@ -70,11 +86,20 @@ class AuthController extends Controller {
]);
}
+ /**
+ * @param $provider
+ * @param Request $request
+ *
+ * @return \Illuminate\Http\RedirectResponse
+ */
public function authLogin($provider, Request $request)
{
return $this->authService->execute($provider, $request->has('code'));
}
+ /**
+ * @return \Illuminate\Http\RedirectResponse
+ */
public function authUnlink()
{
$this->accountRepo->unlinkUserFromOauth(Auth::user());
@@ -83,6 +108,9 @@ class AuthController extends Controller {
return redirect()->to('/settings/' . ACCOUNT_USER_DETAILS);
}
+ /**
+ * @return \Illuminate\Http\Response
+ */
public function getLoginWrapper()
{
if (!Utils::isNinja() && !User::count()) {
@@ -92,6 +120,11 @@ class AuthController extends Controller {
return self::getLogin();
}
+ /**
+ * @param Request $request
+ *
+ * @return \Illuminate\Http\Response
+ */
public function postLoginWrapper(Request $request)
{
@@ -113,7 +146,7 @@ class AuthController extends Controller {
if ($request->link_accounts && $userId && Auth::user()->id != $userId) {
$users = $this->accountRepo->associateAccounts($userId, Auth::user()->id);
Session::flash('message', trans('texts.associated_accounts'));
- // check if other accounts are linked
+ // check if other accounts are linked
} else {
$users = $this->accountRepo->loadAccounts(Auth::user()->id);
}
@@ -127,14 +160,16 @@ class AuthController extends Controller {
return $response;
}
-
+ /**
+ * @return \Illuminate\Http\Response
+ */
public function getLogoutWrapper()
{
if (Auth::check() && !Auth::user()->registered) {
$account = Auth::user()->account;
$this->accountRepo->unlinkAccount($account);
if ($account->company->accounts->count() == 1) {
- $account->company->forceDelete();
+ $account->company->forceDelete();
}
$account->forceDelete();
}
diff --git a/app/Http/Controllers/Auth/PasswordController.php b/app/Http/Controllers/Auth/PasswordController.php
index bd7d0bb0ef..e26ca7bc1f 100644
--- a/app/Http/Controllers/Auth/PasswordController.php
+++ b/app/Http/Controllers/Auth/PasswordController.php
@@ -3,33 +3,36 @@
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
-class PasswordController extends Controller {
+class PasswordController extends Controller
+{
- /*
- |--------------------------------------------------------------------------
- | Password Reset Controller
- |--------------------------------------------------------------------------
- |
- | This controller is responsible for handling password reset requests
- | and uses a simple trait to include this behavior. You're free to
- | explore this trait and override any methods you wish to tweak.
- |
- */
+ /*
+ |--------------------------------------------------------------------------
+ | Password Reset Controller
+ |--------------------------------------------------------------------------
+ |
+ | This controller is responsible for handling password reset requests
+ | and uses a simple trait to include this behavior. You're free to
+ | explore this trait and override any methods you wish to tweak.
+ |
+ */
- use ResetsPasswords;
+ use ResetsPasswords;
+ /**
+ * @var string
+ */
protected $redirectTo = '/dashboard';
-
- /**
- * Create a new password controller instance.
- *
- * @param \Illuminate\Contracts\Auth\Guard $auth
- * @param \Illuminate\Contracts\Auth\PasswordBroker $passwords
- * @return void
- */
- public function __construct()
- {
- $this->middleware('guest');
- }
+
+ /**
+ * Create a new password controller instance.
+ *
+ * @internal param \Illuminate\Contracts\Auth\Guard $auth
+ * @internal param \Illuminate\Contracts\Auth\PasswordBroker $passwords
+ */
+ public function __construct()
+ {
+ $this->middleware('guest');
+ }
}
diff --git a/app/Http/Controllers/BankAccountController.php b/app/Http/Controllers/BankAccountController.php
index bce86bce42..338894c692 100644
--- a/app/Http/Controllers/BankAccountController.php
+++ b/app/Http/Controllers/BankAccountController.php
@@ -2,23 +2,18 @@
use Cache;
use Auth;
-use Datatable;
-use DB;
use Input;
use Redirect;
use Session;
use View;
-use Validator;
-use stdClass;
use Crypt;
-use URL;
-use Utils;
-use App\Models\Gateway;
+use File;
use App\Models\Account;
use App\Models\BankAccount;
use App\Ninja\Repositories\BankAccountRepository;
use App\Services\BankAccountService;
use App\Http\Requests\CreateBankAccountRequest;
+use Illuminate\Http\Request;
class BankAccountController extends BaseController
{
@@ -122,4 +117,28 @@ class BankAccountController extends BaseController
return $this->bankAccountService->importExpenses($bankId, Input::all());
}
+ public function showImportOFX()
+ {
+ return view('accounts.import_ofx');
+ }
+
+ public function doImportOFX(Request $request)
+ {
+ $file = File::get($request->file('ofx_file'));
+
+ try {
+ $data = $this->bankAccountService->parseOFX($file);
+ } catch (\Exception $e) {
+ Session::flash('error', trans('texts.ofx_parse_failed'));
+ return view('accounts.import_ofx');
+ }
+
+ $data = [
+ 'banks' => null,
+ 'bankAccount' => null,
+ 'transactions' => json_encode([$data])
+ ];
+
+ return View::make('accounts.bank_account', $data);
+ }
}
diff --git a/app/Http/Controllers/BaseAPIController.php b/app/Http/Controllers/BaseAPIController.php
index 4531afc252..05ea89f89a 100644
--- a/app/Http/Controllers/BaseAPIController.php
+++ b/app/Http/Controllers/BaseAPIController.php
@@ -1,13 +1,10 @@
manager->setSerializer(new ArraySerializer());
}
-
- if (Utils::isNinjaDev()) {
- \DB::enableQueryLog();
- }
}
protected function handleAction($request)
@@ -166,12 +158,6 @@ class BaseAPIController extends Controller
protected function response($response)
{
- if (Utils::isNinjaDev()) {
- $count = count(\DB::getQueryLog());
- Log::info(Request::method() . ' - ' . Request::url() . ": $count queries");
- Log::info(json_encode(\DB::getQueryLog()));
- }
-
$index = Request::get('index') ?: 'data';
if ($index == 'none') {
diff --git a/app/Http/Controllers/BaseController.php b/app/Http/Controllers/BaseController.php
index 2ce7a633f1..c120661db7 100644
--- a/app/Http/Controllers/BaseController.php
+++ b/app/Http/Controllers/BaseController.php
@@ -1,16 +1,12 @@
first();
- if ($invitation && !$invitation->is_deleted) {
- $invoice = $invitation->invoice;
- $client = $invoice->client;
- $account = $client->account;
-
- $data['hideLogo'] = $account->hasFeature(FEATURE_WHITE_LABEL);
- $data['clientViewCSS'] = $account->clientViewCSS();
+ $contactKey = session('contact_key');
+ if ($contactKey) {
+ $contact = Contact::where('contact_key', '=', $contactKey)->first();
+ if ($contact && !$contact->is_deleted) {
+ $account = $contact->account;
+
+ $data['account'] = $account;
$data['clientFontUrl'] = $account->getFontsUrl();
}
}
-
- return view('clientauth.login')->with($data);
- }
- /**
+ return view('clientauth.login')->with($data);
+ }
+
+ /**
* Get the needed authorization credentials from the request.
*
- * @param \Illuminate\Http\Request $request
+ * @param \Illuminate\Http\Request $request
+ *
* @return array
*/
protected function getCredentials(Request $request)
{
$credentials = $request->only('password');
$credentials['id'] = null;
-
- $invitation_key = session('invitation_key');
- if($invitation_key){
- $invitation = Invitation::where('invitation_key', '=', $invitation_key)->first();
- if ($invitation && !$invitation->is_deleted) {
- $credentials['id'] = $invitation->contact_id;
+
+ $contactKey = session('contact_key');
+ if ($contactKey) {
+ $contact = Contact::where('contact_key', '=', $contactKey)->first();
+ if ($contact && !$contact->is_deleted) {
+ $credentials['id'] = $contact->id;
}
}
-
+
return $credentials;
}
-
- /**
+
+ /**
* Validate the user login request.
*
- * @param \Illuminate\Http\Request $request
+ * @param \Illuminate\Http\Request $request
+ *
* @return void
*/
protected function validateLogin(Request $request)
@@ -76,4 +78,12 @@ class AuthController extends Controller {
'password' => 'required',
]);
}
+
+ /**
+ * @return mixed
+ */
+ public function getSessionExpired()
+ {
+ return view('clientauth.sessionexpired');
+ }
}
diff --git a/app/Http/Controllers/ClientAuth/PasswordController.php b/app/Http/Controllers/ClientAuth/PasswordController.php
index 35576b47ae..a7957cacf5 100644
--- a/app/Http/Controllers/ClientAuth/PasswordController.php
+++ b/app/Http/Controllers/ClientAuth/PasswordController.php
@@ -6,79 +6,84 @@ use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\Request;
use Illuminate\Mail\Message;
use Illuminate\Support\Facades\Password;
+use App\Models\Contact;
use App\Models\Invitation;
+class PasswordController extends Controller
+{
-class PasswordController extends Controller {
+ /*
+ |--------------------------------------------------------------------------
+ | Password Reset Controller
+ |--------------------------------------------------------------------------
+ |
+ | This controller is responsible for handling password reset requests
+ | and uses a simple trait to include this behavior. You're free to
+ | explore this trait and override any methods you wish to tweak.
+ |
+ */
- /*
- |--------------------------------------------------------------------------
- | Password Reset Controller
- |--------------------------------------------------------------------------
- |
- | This controller is responsible for handling password reset requests
- | and uses a simple trait to include this behavior. You're free to
- | explore this trait and override any methods you wish to tweak.
- |
- */
-
- use ResetsPasswords;
+ use ResetsPasswords;
+ /**
+ * @var string
+ */
protected $redirectTo = '/client/dashboard';
-
- /**
- * Create a new password controller instance.
- *
- * @param \Illuminate\Contracts\Auth\Guard $auth
- * @param \Illuminate\Contracts\Auth\PasswordBroker $passwords
- * @return void
- */
- public function __construct()
- {
- $this->middleware('guest');
- Config::set("auth.defaults.passwords","client");
- }
- public function showLinkRequestForm()
- {
- $data = array();
- $invitation_key = session('invitation_key');
- if($invitation_key){
- $invitation = Invitation::where('invitation_key', '=', $invitation_key)->first();
- if ($invitation && !$invitation->is_deleted) {
- $invoice = $invitation->invoice;
- $client = $invoice->client;
- $account = $client->account;
-
- $data['hideLogo'] = $account->hasFeature(FEATURE_WHITE_LABEL);
- $data['clientViewCSS'] = $account->clientViewCSS();
+ /**
+ * Create a new password controller instance.
+ *
+ * @internal param \Illuminate\Contracts\Auth\Guard $auth
+ * @internal param \Illuminate\Contracts\Auth\PasswordBroker $passwords
+ */
+ public function __construct()
+ {
+ $this->middleware('guest');
+ Config::set('auth.defaults.passwords', 'client');
+ }
+
+ /**
+ * @return \Illuminate\Http\RedirectResponse
+ */
+ public function showLinkRequestForm()
+ {
+ $data = [];
+ $contactKey = session('contact_key');
+ if ($contactKey) {
+ $contact = Contact::where('contact_key', '=', $contactKey)->first();
+ if ($contact && !$contact->is_deleted) {
+ $account = $contact->account;
+ $data['account'] = $account;
$data['clientFontUrl'] = $account->getFontsUrl();
}
+ } else {
+ return \Redirect::to('/client/sessionexpired');
}
-
- return view('clientauth.password')->with($data);
- }
-
- /**
+
+ return view('clientauth.password')->with($data);
+ }
+
+ /**
* Send a reset link to the given user.
*
- * @param \Illuminate\Http\Request $request
+ * @param \Illuminate\Http\Request $request
+ *
* @return \Illuminate\Http\Response
*/
public function sendResetLinkEmail(Request $request)
{
$broker = $this->getBroker();
- $contact_id = null;
- $invitation_key = session('invitation_key');
- if($invitation_key){
- $invitation = Invitation::where('invitation_key', '=', $invitation_key)->first();
- if ($invitation && !$invitation->is_deleted) {
- $contact_id = $invitation->contact_id;
+ $contactId = null;
+ $contactKey = session('contact_key');
+ if ($contactKey) {
+ $contact = Contact::where('contact_key', '=', $contactKey)->first();
+ if ($contact && !$contact->is_deleted) {
+ $contactId = $contact->id;
}
}
-
- $response = Password::broker($broker)->sendResetLink(array('id'=>$contact_id), function (Message $message) {
+
+ $response = Password::broker($broker)->sendResetLink(['id' => $contactId], function (Message $message) {
$message->subject($this->getEmailSubject());
});
@@ -91,62 +96,69 @@ class PasswordController extends Controller {
return $this->getSendResetLinkEmailFailureResponse($response);
}
}
-
+
/**
* Display the password reset view for the given token.
*
* If no token is present, display the link request form.
*
- * @param \Illuminate\Http\Request $request
- * @param string|null $invitation_key
- * @param string|null $token
+ * @param \Illuminate\Http\Request $request
+ * @param string|null $key
+ * @param string|null $token
* @return \Illuminate\Http\Response
*/
- public function showResetForm(Request $request, $invitation_key = null, $token = null)
+ public function showResetForm(Request $request, $key = null, $token = null)
{
if (is_null($token)) {
return $this->getEmail();
}
-
- $data = compact('token', 'invitation_key');
- $invitation_key = session('invitation_key');
- if($invitation_key){
- $invitation = Invitation::where('invitation_key', '=', $invitation_key)->first();
- if ($invitation && !$invitation->is_deleted) {
- $invoice = $invitation->invoice;
- $client = $invoice->client;
- $account = $client->account;
-
- $data['hideLogo'] = $account->hasFeature(FEATURE_WHITE_LABEL);
- $data['clientViewCSS'] = $account->clientViewCSS();
+
+ $data = compact('token');
+ if ($key) {
+ $contact = Contact::where('contact_key', '=', $key)->first();
+ if ($contact && !$contact->is_deleted) {
+ $account = $contact->account;
+ $data['contact_key'] = $contact->contact_key;
+ } else {
+ // Maybe it's an invitation key
+ $invitation = Invitation::where('invitation_key', '=', $key)->first();
+ if ($invitation && !$invitation->is_deleted) {
+ $account = $invitation->account;
+ $data['contact_key'] = $invitation->contact->contact_key;
+ }
+ }
+
+ if (!empty($account)) {
+ $data['account'] = $account;
$data['clientFontUrl'] = $account->getFontsUrl();
+ } else {
+ return \Redirect::to('/client/sessionexpired');
}
}
return view('clientauth.reset')->with($data);
}
-
-
+
/**
* Display the password reset view for the given token.
*
* If no token is present, display the link request form.
*
- * @param \Illuminate\Http\Request $request
- * @param string|null $invitation_key
- * @param string|null $token
+ * @param \Illuminate\Http\Request $request
+ * @param string|null $key
+ * @param string|null $token
* @return \Illuminate\Http\Response
*/
- public function getReset(Request $request, $invitation_key = null, $token = null)
+ public function getReset(Request $request, $key = null, $token = null)
{
- return $this->showResetForm($request, $invitation_key, $token);
+ return $this->showResetForm($request, $key, $token);
}
-
+
/**
* Reset the given user's password.
*
- * @param \Illuminate\Http\Request $request
+ * @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function reset(Request $request)
@@ -156,14 +168,14 @@ class PasswordController extends Controller {
$credentials = $request->only(
'password', 'password_confirmation', 'token'
);
-
+
$credentials['id'] = null;
-
- $invitation_key = $request->input('invitation_key');
- if($invitation_key){
- $invitation = Invitation::where('invitation_key', '=', $invitation_key)->first();
- if ($invitation && !$invitation->is_deleted) {
- $credentials['id'] = $invitation->contact_id;
+
+ $contactKey = session('contact_key');
+ if ($contactKey) {
+ $contact = Contact::where('contact_key', '=', $contactKey)->first();
+ if ($contact && !$contact->is_deleted) {
+ $credentials['id'] = $contact->id;
}
}
@@ -181,7 +193,7 @@ class PasswordController extends Controller {
return $this->getResetFailureResponse($request, $response);
}
}
-
+
/**
* Get the password reset validation rules.
*
diff --git a/app/Http/Controllers/ClientController.php b/app/Http/Controllers/ClientController.php
index 90aedfb897..79e309c76d 100644
--- a/app/Http/Controllers/ClientController.php
+++ b/app/Http/Controllers/ClientController.php
@@ -1,33 +1,21 @@
ENTITY_CLIENT,
'title' => trans('texts.clients'),
'sortCol' => '4',
@@ -67,12 +55,15 @@ class ClientController extends BaseController
'balance',
''
]),
- ));
+ ]);
}
public function getDatatable()
{
- return $this->clientService->getDatatable(Input::get('sSearch'));
+ $search = Input::get('sSearch');
+ $userId = Auth::user()->filterId();
+
+ return $this->clientService->getDatatable($search, $userId);
}
/**
@@ -97,8 +88,8 @@ class ClientController extends BaseController
*/
public function show(ClientRequest $request)
{
- $client = $request->entity();
-
+ $client = $request->entity();
+
$user = Auth::user();
Utils::trackViewed($client->getDisplayName(), ENTITY_CLIENT);
@@ -109,34 +100,37 @@ class ClientController extends BaseController
if (Utils::hasFeature(FEATURE_QUOTES) && $user->can('create', ENTITY_INVOICE)) {
$actionLinks[] = ['label' => trans('texts.new_quote'), 'url' => URL::to('/quotes/create/'.$client->public_id)];
}
-
+
if(!empty($actionLinks)){
$actionLinks[] = \DropdownButton::DIVIDER;
}
-
+
if($user->can('create', ENTITY_PAYMENT)){
$actionLinks[] = ['label' => trans('texts.enter_payment'), 'url' => URL::to('/payments/create/'.$client->public_id)];
}
-
+
if($user->can('create', ENTITY_CREDIT)){
$actionLinks[] = ['label' => trans('texts.enter_credit'), 'url' => URL::to('/credits/create/'.$client->public_id)];
}
-
+
if($user->can('create', ENTITY_EXPENSE)){
$actionLinks[] = ['label' => trans('texts.enter_expense'), 'url' => URL::to('/expenses/create/0/'.$client->public_id)];
}
- $data = array(
+ $token = $client->getGatewayToken();
+
+ $data = [
'actionLinks' => $actionLinks,
'showBreadcrumbs' => false,
'client' => $client,
'credit' => $client->getTotalCredit(),
'title' => trans('texts.view_client'),
'hasRecurringInvoices' => Invoice::scope()->where('is_recurring', '=', true)->whereClientId($client->id)->count() > 0,
- 'hasQuotes' => Invoice::scope()->where('is_quote', '=', true)->whereClientId($client->id)->count() > 0,
+ 'hasQuotes' => Invoice::scope()->invoiceType(INVOICE_TYPE_QUOTE)->whereClientId($client->id)->count() > 0,
'hasTasks' => Task::scope()->whereClientId($client->id)->count() > 0,
- 'gatewayLink' => $client->getGatewayLink(),
- );
+ 'gatewayLink' => $token ? $token->gatewayLink() : false,
+ 'gatewayName' => $token ? $token->gatewayName() : false,
+ ];
return View::make('clients.show', $data);
}
@@ -149,7 +143,7 @@ class ClientController extends BaseController
public function create(ClientRequest $request)
{
if (Client::scope()->withTrashed()->count() > Auth::user()->getMaxNumClients()) {
- return View::make('error', ['hideHeader' => true, 'error' => "Sorry, you've exceeded the limit of ".Auth::user()->getMaxNumClients()." clients"]);
+ return View::make('error', ['hideHeader' => true, 'error' => "Sorry, you've exceeded the limit of ".Auth::user()->getMaxNumClients().' clients']);
}
$data = [
@@ -173,7 +167,7 @@ class ClientController extends BaseController
public function edit(ClientRequest $request)
{
$client = $request->entity();
-
+
$data = [
'client' => $client,
'method' => 'PUT',
@@ -199,10 +193,7 @@ class ClientController extends BaseController
'account' => Auth::user()->account,
'sizes' => Cache::get('sizes'),
'paymentTerms' => Cache::get('paymentTerms'),
- 'industries' => Cache::get('industries'),
'currencies' => Cache::get('currencies'),
- 'languages' => Cache::get('languages'),
- 'countries' => Cache::get('countries'),
'customLabel1' => Auth::user()->account->custom_client_label1,
'customLabel2' => Auth::user()->account->custom_client_label2,
];
diff --git a/app/Http/Controllers/PublicClientController.php b/app/Http/Controllers/ClientPortalController.php
similarity index 53%
rename from app/Http/Controllers/PublicClientController.php
rename to app/Http/Controllers/ClientPortalController.php
index 32d6d53c38..fa396a6824 100644
--- a/app/Http/Controllers/PublicClientController.php
+++ b/app/Http/Controllers/ClientPortalController.php
@@ -2,7 +2,6 @@
use Auth;
use View;
-use DB;
use URL;
use Input;
use Utils;
@@ -10,9 +9,15 @@ use Request;
use Response;
use Session;
use Datatable;
+use Validator;
+use Cache;
+use Redirect;
+use Exception;
use App\Models\Gateway;
use App\Models\Invitation;
use App\Models\Document;
+use App\Models\PaymentMethod;
+use App\Models\Contact;
use App\Ninja\Repositories\InvoiceRepository;
use App\Ninja\Repositories\PaymentRepository;
use App\Ninja\Repositories\ActivityRepository;
@@ -22,7 +27,7 @@ use App\Events\QuoteInvitationWasViewed;
use App\Services\PaymentService;
use Barracuda\ArchiveStream\ZipArchive;
-class PublicClientController extends BaseController
+class ClientPortalController extends BaseController
{
private $invoiceRepo;
private $paymentRepo;
@@ -56,9 +61,9 @@ class PublicClientController extends BaseController
]);
}
- if (!Input::has('phantomjs') && !Input::has('silent') && !Session::has($invitationKey)
+ if (!Input::has('phantomjs') && !Input::has('silent') && !Session::has($invitationKey)
&& (!Auth::check() || Auth::user()->account_id != $invoice->account_id)) {
- if ($invoice->is_quote) {
+ if ($invoice->isType(INVOICE_TYPE_QUOTE)) {
event(new QuoteInvitationWasViewed($invoice, $invitation));
} else {
event(new InvoiceInvitationWasViewed($invoice, $invitation));
@@ -66,10 +71,10 @@ class PublicClientController extends BaseController
}
Session::put($invitationKey, true); // track this invitation has been seen
- Session::put('invitation_key', $invitationKey); // track current invitation
+ Session::put('contact_key', $invitation->contact->contact_key);// track current contact
$account->loadLocalizationSettings($client);
-
+
$invoice->invoice_date = Utils::fromSqlDate($invoice->invoice_date);
$invoice->due_date = Utils::fromSqlDate($invoice->due_date);
$invoice->features = [
@@ -78,7 +83,7 @@ class PublicClientController extends BaseController
'invoice_settings' => $account->hasFeature(FEATURE_INVOICE_SETTINGS),
];
$invoice->invoice_fonts = $account->getFontsData();
-
+
if ($invoice->invoice_design_id == CUSTOM_DESIGN) {
$invoice->invoice_design->javascript = $account->custom_design;
} else {
@@ -92,15 +97,20 @@ class PublicClientController extends BaseController
'phone',
]);
- $paymentTypes = $this->getPaymentTypes($client, $invitation);
+ $data = [];
+ $paymentTypes = $this->getPaymentTypes($account, $client, $invitation);
$paymentURL = '';
- if (count($paymentTypes)) {
+ if (count($paymentTypes) == 1) {
$paymentURL = $paymentTypes[0]['url'];
if (!$account->isGatewayConfigured(GATEWAY_PAYPAL_EXPRESS)) {
$paymentURL = URL::to($paymentURL);
}
}
+ if ($wepayGateway = $account->getGatewayConfig(GATEWAY_WEPAY)){
+ $data['enableWePayACH'] = $wepayGateway->getAchEnabled();
+ }
+
$showApprove = $invoice->quote_invoice_id ? false : true;
if ($invoice->due_date) {
$showApprove = time() < strtotime($invoice->due_date);
@@ -109,28 +119,10 @@ class PublicClientController extends BaseController
$showApprove = false;
}
- // Checkout.com requires first getting a payment token
- $checkoutComToken = false;
- $checkoutComKey = false;
- $checkoutComDebug = false;
- if ($accountGateway = $account->getGatewayConfig(GATEWAY_CHECKOUT_COM)) {
- $checkoutComDebug = $accountGateway->getConfigField('testMode');
- if ($checkoutComToken = $this->paymentService->getCheckoutComToken($invitation)) {
- $checkoutComKey = $accountGateway->getConfigField('publicApiKey');
- $invitation->transaction_reference = $checkoutComToken;
- $invitation->save();
- }
- }
-
- $data = array(
+ $data += [
'account' => $account,
'showApprove' => $showApprove,
'showBreadcrumbs' => false,
- 'hideLogo' => $account->hasFeature(FEATURE_WHITE_LABEL),
- 'hideHeader' => $account->isNinjaAccount() || !$account->enable_client_portal,
- 'hideDashboard' => !$account->enable_client_portal_dashboard,
- 'showDocuments' => $account->hasFeature(FEATURE_DOCUMENTS),
- 'clientViewCSS' => $account->clientViewCSS(),
'clientFontUrl' => $account->getFontsUrl(),
'invoice' => $invoice->hidePrivateFields(),
'invitation' => $invitation,
@@ -138,15 +130,22 @@ class PublicClientController extends BaseController
'contact' => $contact,
'paymentTypes' => $paymentTypes,
'paymentURL' => $paymentURL,
- 'checkoutComToken' => $checkoutComToken,
- 'checkoutComKey' => $checkoutComKey,
- 'checkoutComDebug' => $checkoutComDebug,
'phantomjs' => Input::has('phantomjs'),
- );
-
+ ];
+
+ if ($paymentDriver = $account->paymentDriver($invitation, GATEWAY_TYPE_CREDIT_CARD)) {
+ $data += [
+ 'transactionToken' => $paymentDriver->createTransactionToken(),
+ 'partialView' => $paymentDriver->partialView(),
+ 'accountGateway' => $paymentDriver->accountGateway,
+ ];
+ }
+
+
+
if($account->hasFeature(FEATURE_DOCUMENTS) && $this->canCreateZip()){
$zipDocs = $this->getInvoiceZipDocuments($invoice, $size);
-
+
if(count($zipDocs) > 1){
$data['documentsZipURL'] = URL::to("client/documents/{$invitation->invitation_key}");
$data['documentsZipSize'] = $size;
@@ -156,32 +155,29 @@ class PublicClientController extends BaseController
return View::make('invoices.view', $data);
}
- private function getPaymentTypes($client, $invitation)
+ public function contactIndex($contactKey) {
+ if (!$contact = Contact::where('contact_key', '=', $contactKey)->first()) {
+ return $this->returnError();
+ }
+
+ $client = $contact->client;
+
+ Session::put('contact_key', $contactKey);// track current contact
+
+ return redirect()->to($client->account->enable_client_portal_dashboard?'/client/dashboard':'/client/invoices/');
+ }
+
+ private function getPaymentTypes($account, $client, $invitation)
{
- $paymentTypes = [];
- $account = $client->account;
+ $links = [];
- if ($client->getGatewayToken()) {
- $paymentTypes[] = [
- 'url' => URL::to("payment/{$invitation->invitation_key}/token"), 'label' => trans('texts.use_card_on_file')
- ];
- }
- foreach(Gateway::$paymentTypes as $type) {
- if ($account->getGatewayByType($type)) {
- $typeLink = strtolower(str_replace('PAYMENT_TYPE_', '', $type));
- $url = URL::to("/payment/{$invitation->invitation_key}/{$typeLink}");
-
- // PayPal doesn't allow being run in an iframe so we need to open in new tab
- if ($type === PAYMENT_TYPE_PAYPAL && $account->iframe_url) {
- $url = 'javascript:window.open("'.$url.'", "_blank")';
- }
- $paymentTypes[] = [
- 'url' => $url, 'label' => trans('texts.'.strtolower($type))
- ];
- }
+ foreach ($account->account_gateways as $accountGateway) {
+ $paymentDriver = $accountGateway->paymentDriver($invitation);
+ $links = array_merge($links, $paymentDriver->tokenLinks());
+ $links = array_merge($links, $paymentDriver->paymentLinks());
}
- return $paymentTypes;
+ return $links;
}
public function download($invitationKey)
@@ -207,40 +203,46 @@ class PublicClientController extends BaseController
public function dashboard()
{
- if (!$invitation = $this->getInvitation()) {
+ if (!$contact = $this->getContact()) {
return $this->returnError();
}
- $account = $invitation->account;
- $invoice = $invitation->invoice;
- $client = $invoice->client;
+ $client = $contact->client;
+ $account = $client->account;
$color = $account->primary_color ? $account->primary_color : '#0b4d78';
+ $customer = false;
if (!$account->enable_client_portal || !$account->enable_client_portal_dashboard) {
return $this->returnError();
}
+ if ($paymentDriver = $account->paymentDriver(false, GATEWAY_TYPE_TOKEN)) {
+ $customer = $paymentDriver->customer($client->id);
+ }
+
$data = [
'color' => $color,
+ 'contact' => $contact,
'account' => $account,
'client' => $client,
- 'hideLogo' => $account->hasFeature(FEATURE_WHITE_LABEL),
- 'showDocuments' => $account->hasFeature(FEATURE_DOCUMENTS),
- 'clientViewCSS' => $account->clientViewCSS(),
'clientFontUrl' => $account->getFontsUrl(),
+ 'gateway' => $account->getTokenGateway(),
+ 'paymentMethods' => $customer ? $customer->payment_methods : false,
+ 'transactionToken' => $paymentDriver ? $paymentDriver->createTransactionToken() : false,
];
-
+
return response()->view('invited.dashboard', $data);
}
public function activityDatatable()
{
- if (!$invitation = $this->getInvitation()) {
- return false;
+ if (!$contact = $this->getContact()) {
+ return $this->returnError();
}
- $invoice = $invitation->invoice;
- $query = $this->activityRepo->findByClientId($invoice->client_id);
+ $client = $contact->client;
+
+ $query = $this->activityRepo->findByClientId($client->id);
$query->where('activities.adjustment', '!=', 0);
return Datatable::query($query)
@@ -248,10 +250,13 @@ class PublicClientController extends BaseController
->addColumn('activity_type_id', function ($model) {
$data = [
'client' => Utils::getClientDisplayName($model),
- 'user' => $model->is_system ? ('' . trans('texts.system') . '') : ($model->user_first_name . ' ' . $model->user_last_name),
- 'invoice' => trans('texts.invoice') . ' ' . $model->invoice,
+ 'user' => $model->is_system ? ('' . trans('texts.system') . '') : ($model->account_name),
+ 'invoice' => $model->invoice,
'contact' => Utils::getClientDisplayName($model),
- 'payment' => trans('texts.payment') . ($model->payment ? ' ' . $model->payment : ''),
+ 'payment' => $model->payment ? ' ' . $model->payment : '',
+ 'credit' => $model->payment_amount ? Utils::formatMoney($model->credit, $model->currency_id, $model->country_id) : '',
+ 'payment_amount' => $model->payment_amount ? Utils::formatMoney($model->payment_amount, $model->currency_id, $model->country_id) : null,
+ 'adjustment' => $model->adjustment ? Utils::formatMoney($model->adjustment, $model->currency_id, $model->country_id) : null,
];
return trans("texts.activity_{$model->activity_type_id}", $data);
@@ -261,26 +266,51 @@ class PublicClientController extends BaseController
->make();
}
- public function invoiceIndex()
+ public function recurringInvoiceIndex()
{
- if (!$invitation = $this->getInvitation()) {
+ if (!$contact = $this->getContact()) {
return $this->returnError();
}
- $account = $invitation->account;
+ $account = $contact->account;
if (!$account->enable_client_portal) {
return $this->returnError();
}
$color = $account->primary_color ? $account->primary_color : '#0b4d78';
-
+
$data = [
'color' => $color,
- 'hideLogo' => $account->hasFeature(FEATURE_WHITE_LABEL),
- 'hideDashboard' => !$account->enable_client_portal_dashboard,
- 'showDocuments' => $account->hasFeature(FEATURE_DOCUMENTS),
- 'clientViewCSS' => $account->clientViewCSS(),
+ 'account' => $account,
+ 'client' => $contact->client,
+ 'clientFontUrl' => $account->getFontsUrl(),
+ 'title' => trans('texts.recurring_invoices'),
+ 'entityType' => ENTITY_RECURRING_INVOICE,
+ 'columns' => Utils::trans(['frequency', 'start_date', 'end_date', 'invoice_total', 'auto_bill']),
+ ];
+
+ return response()->view('public_list', $data);
+ }
+
+ public function invoiceIndex()
+ {
+ if (!$contact = $this->getContact()) {
+ return $this->returnError();
+ }
+
+ $account = $contact->account;
+
+ if (!$account->enable_client_portal) {
+ return $this->returnError();
+ }
+
+ $color = $account->primary_color ? $account->primary_color : '#0b4d78';
+
+ $data = [
+ 'color' => $color,
+ 'account' => $account,
+ 'client' => $contact->client,
'clientFontUrl' => $account->getFontsUrl(),
'title' => trans('texts.invoices'),
'entityType' => ENTITY_INVOICE,
@@ -292,36 +322,43 @@ class PublicClientController extends BaseController
public function invoiceDatatable()
{
- if (!$invitation = $this->getInvitation()) {
+ if (!$contact = $this->getContact()) {
return '';
}
- return $this->invoiceRepo->getClientDatatable($invitation->contact_id, ENTITY_INVOICE, Input::get('sSearch'));
+ return $this->invoiceRepo->getClientDatatable($contact->id, ENTITY_INVOICE, Input::get('sSearch'));
+ }
+
+ public function recurringInvoiceDatatable()
+ {
+ if (!$contact = $this->getContact()) {
+ return '';
+ }
+
+ return $this->invoiceRepo->getClientRecurringDatatable($contact->id);
}
public function paymentIndex()
{
- if (!$invitation = $this->getInvitation()) {
+ if (!$contact = $this->getContact()) {
return $this->returnError();
}
- $account = $invitation->account;
+
+ $account = $contact->account;
if (!$account->enable_client_portal) {
return $this->returnError();
}
- $color = $account->primary_color ? $account->primary_color : '#0b4d78';
+ $color = $account->primary_color ? $account->primary_color : '#0b4d78';
$data = [
'color' => $color,
- 'hideLogo' => $account->hasFeature(FEATURE_WHITE_LABEL),
- 'hideDashboard' => !$account->enable_client_portal_dashboard,
- 'showDocuments' => $account->hasFeature(FEATURE_DOCUMENTS),
- 'clientViewCSS' => $account->clientViewCSS(),
+ 'account' => $account,
'clientFontUrl' => $account->getFontsUrl(),
'entityType' => ENTITY_PAYMENT,
'title' => trans('texts.payments'),
- 'columns' => Utils::trans(['invoice', 'transaction_reference', 'method', 'payment_amount', 'payment_date'])
+ 'columns' => Utils::trans(['invoice', 'transaction_reference', 'method', 'payment_amount', 'payment_date', 'status'])
];
return response()->view('public_list', $data);
@@ -329,27 +366,56 @@ class PublicClientController extends BaseController
public function paymentDatatable()
{
- if (!$invitation = $this->getInvitation()) {
- return false;
+ if (!$contact = $this->getContact()) {
+ return $this->returnError();
}
- $payments = $this->paymentRepo->findForContact($invitation->contact->id, Input::get('sSearch'));
+ $payments = $this->paymentRepo->findForContact($contact->id, Input::get('sSearch'));
return Datatable::query($payments)
->addColumn('invoice_number', function ($model) { return $model->invitation_key ? link_to('/view/'.$model->invitation_key, $model->invoice_number)->toHtml() : $model->invoice_number; })
- ->addColumn('transaction_reference', function ($model) { return $model->transaction_reference ? $model->transaction_reference : 'Manual entry'; })
- ->addColumn('payment_type', function ($model) { return $model->payment_type ? $model->payment_type : ($model->account_gateway_id ? 'Online payment' : ''); })
+ ->addColumn('transaction_reference', function ($model) { return $model->transaction_reference ? $model->transaction_reference : ''.trans('texts.manual_entry').''; })
+ ->addColumn('payment_type', function ($model) { return ($model->payment_type && !$model->last4) ? $model->payment_type : ($model->account_gateway_id ? 'Online payment' : ''); })
->addColumn('amount', function ($model) { return Utils::formatMoney($model->amount, $model->currency_id, $model->country_id); })
->addColumn('payment_date', function ($model) { return Utils::dateToString($model->payment_date); })
+ ->addColumn('status', function ($model) { return $this->getPaymentStatusLabel($model); })
+ ->orderColumns( 'invoice_number', 'transaction_reference', 'payment_type', 'amount', 'payment_date')
->make();
}
+ private function getPaymentStatusLabel($model)
+ {
+ $label = trans('texts.status_' . strtolower($model->payment_status_name));
+ $class = 'default';
+ switch ($model->payment_status_id) {
+ case PAYMENT_STATUS_PENDING:
+ $class = 'info';
+ break;
+ case PAYMENT_STATUS_COMPLETED:
+ $class = 'success';
+ break;
+ case PAYMENT_STATUS_FAILED:
+ $class = 'danger';
+ break;
+ case PAYMENT_STATUS_PARTIALLY_REFUNDED:
+ $label = trans('texts.status_partially_refunded_amount', [
+ 'amount' => Utils::formatMoney($model->refunded, $model->currency_id, $model->country_id),
+ ]);
+ $class = 'primary';
+ break;
+ case PAYMENT_STATUS_REFUNDED:
+ $class = 'default';
+ break;
+ }
+ return "'.trans('texts.password').': '.$data['password'].'
':false; $documentsHTML = ''; @@ -28,7 +39,7 @@ class TemplateService } $documentsHTML .= ''; } - + $variables = [ '$footer' => $account->getEmailFooter(), '$client' => $client->getDisplayName(), @@ -51,18 +62,20 @@ class TemplateService '$customInvoice1' => $account->custom_invoice_text_label1, '$customInvoice2' => $account->custom_invoice_text_label2, '$documents' => $documentsHTML, + '$autoBill' => empty($data['autobill'])?'':$data['autobill'], + '$portalLink' => $invitation->contact->link, + '$portalButton' => Form::emailViewButton($invitation->contact->link, 'portal'), ]; // Add variables for available payment types - foreach (Gateway::$paymentTypes as $type) { - $camelType = Gateway::getPaymentTypeName($type); - $type = Utils::toSnakeCase($camelType); + foreach (Gateway::$gatewayTypes as $type) { + $camelType = Utils::toCamelCase($type); $variables["\${$camelType}Link"] = $invitation->getLink('payment') . "/{$type}"; $variables["\${$camelType}Button"] = Form::emailPaymentButton($invitation->getLink('payment') . "/{$type}"); } - + $includesPasswordPlaceholder = strpos($template, '$password') !== false; - + $str = str_replace(array_keys($variables), array_values($variables), $template); if (!$includesPasswordPlaceholder && $passwordHTML) { @@ -71,10 +84,10 @@ class TemplateService { $str = substr_replace($str, $passwordHTML, $pos, 9/* length of "$password" */); } - } + } $str = str_replace('$password', '', $str); $str = autolink($str, 100); - + return $str; - } -} \ No newline at end of file + } +} diff --git a/app/Services/TokenService.php b/app/Services/TokenService.php index 092f3995d3..c090235901 100644 --- a/app/Services/TokenService.php +++ b/app/Services/TokenService.php @@ -1,67 +1,52 @@ tokenRepo = $tokenRepo; $this->datatableService = $datatableService; } + /** + * @return TokenRepository + */ protected function getRepo() { return $this->tokenRepo; } - /* - public function save() - { - return null; - } - */ - + /** + * @param $userId + * @return \Illuminate\Http\JsonResponse + */ public function getDatatable($userId) { + $datatable = new TokenDatatable(false); $query = $this->tokenRepo->find($userId); - return $this->createDatatable(ENTITY_TOKEN, $query, false); + return $this->datatableService->createDatatable($datatable, $query); } - - protected function getDatatableColumns($entityType, $hideClient) - { - return [ - [ - 'name', - function ($model) { - return link_to("tokens/{$model->public_id}/edit", $model->name)->toHtml(); - } - ], - [ - 'token', - function ($model) { - return $model->token; - } - ] - ]; - } - - protected function getDatatableActions($entityType) - { - return [ - [ - uctrans('texts.edit_token'), - function ($model) { - return URL::to("tokens/{$model->public_id}/edit"); - } - ] - ]; - } - -} \ No newline at end of file +} diff --git a/app/Services/UserService.php b/app/Services/UserService.php index 8e31b4c30d..f01764510a 100644 --- a/app/Services/UserService.php +++ b/app/Services/UserService.php @@ -1,121 +1,52 @@ userRepo = $userRepo; $this->datatableService = $datatableService; } + /** + * @return UserRepository + */ protected function getRepo() { return $this->userRepo; } - /* - public function save() - { - return null; - } - */ - + /** + * @param $accountId + * @return \Illuminate\Http\JsonResponse + */ public function getDatatable($accountId) { + $datatable = new UserDatatable(false); $query = $this->userRepo->find($accountId); - return $this->createDatatable(ENTITY_USER, $query, false); + return $this->datatableService->createDatatable($datatable, $query); } - - protected function getDatatableColumns($entityType, $hideClient) - { - return [ - [ - 'first_name', - function ($model) { - return $model->public_id ? link_to('users/'.$model->public_id.'/edit', $model->first_name.' '.$model->last_name)->toHtml() : ($model->first_name.' '.$model->last_name); - } - ], - [ - 'email', - function ($model) { - return $model->email; - } - ], - [ - 'confirmed', - function ($model) { - if (!$model->public_id) { - return self::getStatusLabel(USER_STATE_OWNER); - } elseif ($model->deleted_at) { - return self::getStatusLabel(USER_STATE_DISABLED); - } elseif ($model->confirmed) { - if($model->is_admin){ - return self::getStatusLabel(USER_STATE_ADMIN); - } else { - return self::getStatusLabel(USER_STATE_ACTIVE); - } - } else { - return self::getStatusLabel(USER_STATE_PENDING); - } - } - ], - ]; - } - - protected function getDatatableActions($entityType) - { - return [ - [ - uctrans('texts.edit_user'), - function ($model) { - return URL::to("users/{$model->public_id}/edit"); - }, - function ($model) { - return $model->public_id; - } - ], - [ - uctrans('texts.send_invite'), - function ($model) { - return URL::to("send_confirmation/{$model->public_id}"); - }, - function ($model) { - return $model->public_id && ! $model->confirmed; - } - ] - ]; - } - - private function getStatusLabel($state) - { - $label = trans("texts.{$state}"); - $class = 'default'; - switch ($state) { - case USER_STATE_PENDING: - $class = 'default'; - break; - case USER_STATE_ACTIVE: - $class = 'info'; - break; - case USER_STATE_DISABLED: - $class = 'warning'; - break; - case USER_STATE_OWNER: - $class = 'success'; - break; - case USER_STATE_ADMIN: - $class = 'primary'; - break; - } - return "
Automatically send clients the same invoices weekly, bi-monthly, monthly, quarterly or annually.
+Use :MONTH, :QUARTER or :YEAR for dynamic dates. Basic math works as well, for example :MONTH-1.
+Examples of dynamic invoice variables:
+We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
+You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', + 'invoice_due_date' => 'Due Date', + 'quote_due_date' => 'Valid Until', + 'valid_until' => 'Valid Until', + 'reset_terms' => 'Reset terms', + 'reset_footer' => 'Reset footer', + 'invoices_sent' => ':count invoice sent|:count invoices sent', + 'status_draft' => 'Draft', + 'status_sent' => 'Sent', + 'status_viewed' => 'Viewed', + 'status_partial' => 'Partial', + 'status_paid' => 'Paid', + 'show_line_item_tax' => 'Display line item taxes inline', + 'iframe_url' => 'Website', + 'iframe_url_help1' => 'Copy the following code to a page on your site.', + 'iframe_url_help2' => 'You can test the feature by clicking \'View as recipient\' for an invoice.', + 'auto_bill' => 'Auto Bill', + 'military_time' => '24 Hour Time', + 'last_sent' => 'Last Sent', + 'reminder_emails' => 'Reminder Emails', + 'templates_and_reminders' => 'Templates & Reminders', + 'subject' => 'Subject', + 'body' => 'Body', + 'first_reminder' => 'First Reminder', + 'second_reminder' => 'Second Reminder', + 'third_reminder' => 'Third Reminder', + 'num_days_reminder' => 'Days after due date', + 'reminder_subject' => 'Reminder: Invoice :invoice from :account', + 'reset' => 'Reset', + 'invoice_not_found' => 'The requested invoice is not available', + 'referral_program' => 'Referral Program', + 'referral_code' => 'Referral URL', + 'last_sent_on' => 'Sent Last: :date', + 'page_expire' => 'This page will expire soon, :click_here to keep working', + 'upcoming_quotes' => 'Upcoming Quotes', + 'expired_quotes' => 'Expired Quotes', + 'sign_up_using' => 'Sign up using', + 'invalid_credentials' => 'These credentials do not match our records', + 'show_all_options' => 'Show all options', + 'user_details' => 'User Details', + 'oneclick_login' => 'One-Click Login', + 'disable' => 'Disable', + 'invoice_quote_number' => 'Invoice and Quote Numbers', + 'invoice_charges' => 'Invoice Charges', + 'notification_invoice_bounced' => 'We were unable to deliver Invoice :invoice to :contact.', + 'notification_invoice_bounced_subject' => 'Unable to deliver Invoice :invoice', + 'notification_quote_bounced' => 'We were unable to deliver Quote :invoice to :contact.', + 'notification_quote_bounced_subject' => 'Unable to deliver Quote :invoice', + 'custom_invoice_link' => 'Custom Invoice Link', + 'total_invoiced' => 'Total Invoiced', + 'open_balance' => 'Open Balance', + 'verify_email' => 'Please visit the link in the account confirmation email to verify your email address.', + 'basic_settings' => 'Basic Settings', + 'pro' => 'Pro', + 'gateways' => 'Payment Gateways', + 'next_send_on' => 'Send Next: :date', + 'no_longer_running' => 'This invoice is not scheduled to run', + 'general_settings' => 'General Settings', + 'customize' => 'Customize', + 'oneclick_login_help' => 'Connect an account to login without a password', + 'referral_code_help' => 'Earn money by sharing our app online', + 'enable_with_stripe' => 'Enable | Requires Stripe', + 'tax_settings' => 'Tax Settings', + 'create_tax_rate' => 'Add Tax Rate', + 'updated_tax_rate' => 'Successfully updated tax rate', + 'created_tax_rate' => 'Successfully created tax rate', + 'edit_tax_rate' => 'Edit tax rate', + 'archive_tax_rate' => 'Archive Tax Rate', + 'archived_tax_rate' => 'Successfully archived the tax rate', + 'default_tax_rate_id' => 'Default Tax Rate', + 'tax_rate' => 'Tax Rate', + 'recurring_hour' => 'Recurring Hour', + 'pattern' => 'Pattern', + 'pattern_help_title' => 'Pattern Help', + 'pattern_help_1' => 'Create custom invoice and quote numbers by specifying a pattern', + 'pattern_help_2' => 'Available variables:', + 'pattern_help_3' => 'For example, :example would be converted to :value', + 'see_options' => 'See options', + 'invoice_counter' => 'Invoice Counter', + 'quote_counter' => 'Quote Counter', + 'type' => 'Type', + 'activity_1' => ':user created client :client', + 'activity_2' => ':user archived client :client', + 'activity_3' => ':user deleted client :client', + 'activity_4' => ':user created invoice :invoice', + 'activity_5' => ':user updated invoice :invoice', + 'activity_6' => ':user emailed invoice :invoice to :contact', + 'activity_7' => ':contact viewed invoice :invoice', + 'activity_8' => ':user archived invoice :invoice', + 'activity_9' => ':user deleted invoice :invoice', + 'activity_10' => ':contact entered payment :payment for :invoice', + 'activity_11' => ':user updated payment :payment', + 'activity_12' => ':user archived payment :payment', + 'activity_13' => ':user deleted payment :payment', + 'activity_14' => ':user entered :credit credit', + 'activity_15' => ':user updated :credit credit', + 'activity_16' => ':user archived :credit credit', + 'activity_17' => ':user deleted :credit credit', + 'activity_18' => ':user created quote :quote', + 'activity_19' => ':user updated quote :quote', + 'activity_20' => ':user emailed quote :quote to :contact', + 'activity_21' => ':contact viewed quote :quote', + 'activity_22' => ':user archived quote :quote', + 'activity_23' => ':user deleted quote :quote', + 'activity_24' => ':user restored quote :quote', + 'activity_25' => ':user restored invoice :invoice', + 'activity_26' => ':user restored client :client', + 'activity_27' => ':user restored payment :payment', + 'activity_28' => ':user restored :credit credit', + 'activity_29' => ':contact approved quote :quote', + 'activity_30' => ':user created :vendor', + 'activity_31' => ':user created :vendor', + 'activity_32' => ':user created :vendor', + 'activity_33' => ':user created :vendor', + 'activity_34' => ':user created expense :expense', + 'activity_35' => ':user created :vendor', + 'activity_36' => ':user created :vendor', + 'activity_37' => ':user created :vendor', + 'payment' => 'Payment', + 'system' => 'System', + 'signature' => 'Email Signature', + 'default_messages' => 'Default Messages', + 'quote_terms' => 'Quote Terms', + 'default_quote_terms' => 'Default Quote Terms', + 'default_invoice_terms' => 'Default Invoice Terms', + 'default_invoice_footer' => 'Default Invoice Footer', + 'quote_footer' => 'Quote Footer', + 'free' => 'Free', + 'quote_is_approved' => 'This quote is approved', + 'apply_credit' => 'Apply Credit', + 'system_settings' => 'System Settings', + 'archive_token' => 'Archive Token', + 'archived_token' => 'Successfully archived token', + 'archive_user' => 'Archive User', + 'archived_user' => 'Successfully archived user', + 'archive_account_gateway' => 'Archive Gateway', + 'archived_account_gateway' => 'Successfully archived gateway', + 'archive_recurring_invoice' => 'Archive Recurring Invoice', + 'archived_recurring_invoice' => 'Successfully archived recurring invoice', + 'delete_recurring_invoice' => 'Delete Recurring Invoice', + 'deleted_recurring_invoice' => 'Successfully deleted recurring invoice', + 'restore_recurring_invoice' => 'Restore Recurring Invoice', + 'restored_recurring_invoice' => 'Successfully restored recurring invoice', + 'archived' => 'Archived', + 'untitled_account' => 'Untitled Company', + 'before' => 'Before', + 'after' => 'After', + 'reset_terms_help' => 'Reset to the default account terms', + 'reset_footer_help' => 'Reset to the default account footer', + 'export_data' => 'Export Data', + 'user' => 'User', + 'country' => 'Country', + 'include' => 'Include', + 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', + 'import_freshbooks' => 'Import From FreshBooks', + 'import_data' => 'Import Data', + 'source' => 'Source', + 'csv' => 'CSV', + 'client_file' => 'Client File', + 'invoice_file' => 'Invoice File', + 'task_file' => 'Task File', + 'no_mapper' => 'No valid mapping for file', + 'invalid_csv_header' => 'Invalid CSV Header', + 'client_portal' => 'Client Portal', + 'admin' => 'Admin', + 'disabled' => 'Disabled', + 'show_archived_users' => 'Show archived users', + 'notes' => 'Notes', + 'invoice_will_create' => 'client will be created', + 'invoices_will_create' => 'invoices will be created', + 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', + 'publishable_key' => 'Publishable Key', + 'secret_key' => 'Secret Key', + 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', + 'email_design' => 'Email Design', + 'due_by' => 'Due by :date', + 'enable_email_markup' => 'Enable Markup', + 'enable_email_markup_help' => 'Make it easier for your clients to pay you by adding schema.org markup to your emails.', + 'template_help_title' => 'Templates Help', + 'template_help_1' => 'Available variables:', + 'email_design_id' => 'Email Style', + 'email_design_help' => 'Make your emails look more professional with HTML layouts', + 'plain' => 'Plain', + 'light' => 'Light', + 'dark' => 'Dark', + 'industry_help' => 'Used to provide comparisons against the averages of companies of similar size and industry.', + 'subdomain_help' => 'Customize the invoice link subdomain or display the invoice on your own website.', + 'invoice_number_help' => 'Specify a prefix or use a custom pattern to dynamically set the invoice number.', + 'quote_number_help' => 'Specify a prefix or use a custom pattern to dynamically set the quote number.', + 'custom_client_fields_helps' => 'Add a field when creating a client and display the label and value on the PDF.', + 'custom_account_fields_helps' => 'Add a label and value to the company details section of the PDF.', + 'custom_invoice_fields_helps' => 'Add a field when creating an invoice and display the label and value on the PDF.', + 'custom_invoice_charges_helps' => 'Add a field when creating an invoice and include the charge in the invoice subtotals.', + 'token_expired' => 'Validation token was expired. Please try again.', + 'invoice_link' => 'Invoice Link', + 'button_confirmation_message' => 'Click to confirm your email address.', + 'confirm' => 'Confirm', + 'email_preferences' => 'Email Preferences', + 'created_invoices' => 'Successfully created :count invoice(s)', + 'next_invoice_number' => 'The next invoice number is :number.', + 'next_quote_number' => 'The next quote number is :number.', + 'days_before' => 'days before', + 'days_after' => 'days after', + 'field_due_date' => 'due date', + 'field_invoice_date' => 'invoice date', + 'schedule' => 'Schedule', + 'email_designs' => 'Email Designs', + 'assigned_when_sent' => 'Assigned when sent', + 'white_label_purchase_link' => 'Purchase a white label license', + 'expense' => 'Expense', + 'expenses' => 'Expenses', + 'new_expense' => 'New Expense', + 'enter_expense' => 'Enter Expense', + 'vendors' => 'Vendors', + 'new_vendor' => 'New Vendor', + 'payment_terms_net' => 'Net', + 'vendor' => 'Vendor', + 'edit_vendor' => 'Edit Vendor', + 'archive_vendor' => 'Archive Vendor', + 'delete_vendor' => 'Delete Vendor', + 'view_vendor' => 'View Vendor', + 'deleted_expense' => 'Successfully deleted expense', + 'archived_expense' => 'Successfully archived expense', + 'deleted_expenses' => 'Successfully deleted expenses', + 'archived_expenses' => 'Successfully archived expenses', + 'expense_amount' => 'Expense Amount', + 'expense_balance' => 'Expense Balance', + 'expense_date' => 'Expense Date', + 'expense_should_be_invoiced' => 'Should this expense be invoiced?', + 'public_notes' => 'Public Notes', + 'invoice_amount' => 'Invoice Amount', + 'exchange_rate' => 'Exchange Rate', + 'yes' => 'Yes', + 'no' => 'No', + 'should_be_invoiced' => 'Should be invoiced', + 'view_expense' => 'View expense # :expense', + 'edit_expense' => 'Edit Expense', + 'archive_expense' => 'Archive Expense', + 'delete_expense' => 'Delete Expense', + 'view_expense_num' => 'Expense # :expense', + 'updated_expense' => 'Successfully updated expense', + 'created_expense' => 'Successfully created expense', + 'enter_expense' => 'Enter Expense', + 'view' => 'View', + 'restore_expense' => 'Restore Expense', + 'invoice_expense' => 'Invoice Expense', + 'expense_error_multiple_clients' => 'The expenses can\'t belong to different clients', + 'expense_error_invoiced' => 'Expense has already been invoiced', + 'convert_currency' => 'Convert currency', + 'num_days' => 'Number of days', + 'create_payment_term' => 'Create Payment Term', + 'edit_payment_terms' => 'Edit Payment Term', + 'edit_payment_term' => 'Edit Payment Term', + 'archive_payment_term' => 'Archive Payment Term', + 'recurring_due_dates' => 'Recurring Invoice Due Dates', + 'recurring_due_date_help' => 'Automatically sets a due date for the invoice.
+Invoices on a monthly or yearly cycle set to be due on or before the day they are created will be due the next month. Invoices set to be due on the 29th or 30th in months that don\'t have that day will be due the last day of the month.
+Invoices on a weekly cycle set to be due on the day of the week they are created will be due the next week.
+For example:
+Používáme pdfmake pro definování vzhledu faktur. Pdfmake zkušebna poskytuje skvělou cestu jak knihovnu vidět v akci
-Pro přístup k podřízené položce se používá tečkové konvence. Například zobrazit pro zobrazení jména klienta použijte $client.name
.
Pokud potřebujete s něčím pomoci - pošlete dotaz na náš fórum podpory.
', + 'customize_help' => 'We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
+You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', 'invoice_due_date' => 'Datum splatnosti', 'quote_due_date' => 'Platí do', 'valid_until' => 'Platí do', @@ -899,7 +898,7 @@ $LANG = array( 'view_expense_num' => 'Náklad # :expense', 'updated_expense' => 'Náklad úspěšně změněn', 'created_expense' => 'Náklad úspěšně vytvořen', - 'enter_expense' => 'Zadat náklady', + 'enter_expense' => 'Zadat náklad', 'view' => 'Zobrazit', 'restore_expense' => 'Obnovit náklady', 'invoice_expense' => 'Fakturovat náklady', @@ -913,7 +912,7 @@ $LANG = array( 'archive_payment_term' => 'Archivovat platební podmínky', 'recurring_due_dates' => 'Datumy splatnosti pravidelných faktur', 'recurring_due_date_help' => 'Automaticky nastavit datum splatnosti na fakturách
-U faktury s měsíčním nebo ročním cyklem bude nastavena měsíční splatnost v dalším měsíci. Invoices on a monthly or yearly cycle set to be due on or before the day they are created will be due the next month. +
U faktury s měsíčním nebo ročním cyklem bude nastavena měsíční splatnost v dalším měsíci. Invoices on a monthly or yearly cycle set to be due on or before the day they are created will be due the next month. Faktury se splatností k 29. nebo 30 v měsících, které tyto dny nemají se splatnost nastaví k poslednímu dni v měsíci.
Faktury s týdenním cyklem mají jako výchozí týdenní splatnost.
Například:
@@ -995,40 +994,26 @@ $LANG = array( 'overdue' => 'Po termínu', - 'white_label_text' => 'Objednejte si white label licenci na JEDEN ROK $'.WHITE_LABEL_PRICE.' pro odstranění značky Invoice Ninja z klientského portálu a stránek podpory.', - 'user_email_footer' => 'Pro úpravu emailových notifikací prosím navštivte '.SITE_URL.'/settings/notifications', - 'reset_password_footer' => 'Pokud jste nepožádali o resetování hesla, prosím kontaktujte naši podporu na: '.CONTACT_EMAIL, - 'limit_users' => 'Omlouváme se, to už přesáhlo limit '.MAX_NUM_USERS.' uživatelů', - 'more_designs_self_host_header' => 'Získejte 6 dalších vzhledů faktur jen za $'.INVOICE_DESIGNS_PRICE, - 'old_browser' => 'Prosím použijte novější prohlížeč', - 'white_label_custom_css' => ':link za $'.WHITE_LABEL_PRICE.' získáte volitelné úpravy a pomůžete podpoře našeho projektu.', - 'bank_accounts_help' => 'Připojte si bankovní účet pro automatický import nákladů a tvorbu dodavatelů. K dispozici pro American Express přes 400 amerických bank.', - 'security' => [ - 'too_many_attempts' => 'Mnoho přístupů. Zkuste to prosím za několik minut.', - 'wrong_credentials' => 'Neplatný email nebo heslo.', - 'confirmation' => 'Váš účet byl potvrzen!', - 'wrong_confirmation' => 'Chybný potvrzovací kód.', - 'password_forgot' => 'Informace týkající se resetování hesla byla odeslána na Váš email.', - 'password_reset' => 'Heslo bylo změněno úspěšně.', - 'wrong_password_reset' => 'Neplatné heslo. Zkuste znovu', - ], - 'pro_plan' => [ - 'remove_logo' => ':link pro odstranění loga Invoice Ninja připojením se k profi plánu', - 'remove_logo_link' => 'Klikněte zde', - ], - 'invitation_status' => [ - 'sent' => 'Email odeslán', - 'opened' => 'Email otevřen', - 'viewed' => 'Faktura zobrazena', - ], - 'email_errors' => [ - 'inactive_client' => 'Emaily nemohou být odeslány neaktivním klientům', - 'inactive_contact' => 'Emaily nemohou být odeslány neaktivním kontaktům', - 'inactive_invoice' => 'Emaily nemohou být odeslány k neaktivním fakturám', - 'user_unregistered' => 'Pro odesílání emailů si prosím zaregistrujte účet', - 'user_unconfirmed' => 'Pro posílání emailů potvrďte prosím Váš účet.', - 'invalid_contact_email' => 'Neplatný kontaktní email', - ], + 'white_label_text' => 'Objednejte si white label licenci na JEDEN ROK $:price pro odstranění značky Invoice Ninja z klientského portálu a stránek podpory.', + 'user_email_footer' => 'Pro úpravu emailových notifikací prosím navštivte :link', + 'reset_password_footer' => 'Pokud jste nepožádali o resetování hesla, prosím kontaktujte naši podporu na: :email', + 'limit_users' => 'Omlouváme se, to už přesáhlo limit :limit uživatelů', + 'more_designs_self_host_header' => 'Získejte 6 dalších vzhledů faktur jen za $:price', + 'old_browser' => 'Prosím použijte novější prohlížeč', + 'white_label_custom_css' => ':link za $:price získáte volitelné úpravy a pomůžete podpoře našeho projektu.', + 'bank_accounts_help' => 'Připojte si bankovní účet pro automatický import nákladů a tvorbu dodavatelů. K dispozici pro American Express přes 400 amerických bank.', + + 'pro_plan_remove_logo' => ':link pro odstranění loga Invoice Ninja připojením se k profi plánu', + 'pro_plan_remove_logo_link' => 'Klikněte zde', + 'invitation_status_sent' => 'Email odeslán', + 'invitation_status_opened' => 'Email otevřen', + 'invitation_status_viewed' => 'Faktura zobrazena', + 'email_error_inactive_client' => 'Emaily nemohou být odeslány neaktivním klientům', + 'email_error_inactive_contact' => 'Emaily nemohou být odeslány neaktivním kontaktům', + 'email_error_inactive_invoice' => 'Emaily nemohou být odeslány k neaktivním fakturám', + 'email_error_user_unregistered' => 'Pro odesílání emailů si prosím zaregistrujte účet', + 'email_error_user_unconfirmed' => 'Pro posílání emailů potvrďte prosím Váš účet.', + 'email_error_invalid_contact_email' => 'Neplatný kontaktní email', 'navigation' => 'Navigace', 'list_invoices' => 'Seznam faktur', @@ -1051,22 +1036,20 @@ $LANG = array( 'custom_invoice_item_fields_help' => 'Během vytváření faktury si přidejte pole a zobrazte si jeho popis a hodnotu v PDF.', 'recurring_invoice_number' => 'Číslo pravidelné faktury', 'recurring_invoice_number_prefix_help' => 'Určete prefix, který se přidá k číslu pravidelných faktur. Výchozí hodnota je \'R\'.', - 'enable_client_portal' => 'Dashboard', - 'enable_client_portal_help' => 'Skrýt/zobrazit dashboard v klientském portálu.', // Client Passwords 'enable_portal_password'=>'Faktury chráněné heslem', 'enable_portal_password_help'=>'Umožní Vám nastavit heslo pro každý kontakt. Pokud heslo nastavíte, tak kontakt ho bude pro zobrazení faktury vždy použít.', 'send_portal_password'=>'Generovat heslo automaticky', 'send_portal_password_help'=>'Pokud heslo není nastaveno, bude vygenerováno a zasláno spolu s první fakturou.', - + 'expired' => 'Expirované', 'invalid_card_number' => 'Číslo platební karty není platné.', 'invalid_expiry' => 'Datum expirace není platné.', 'invalid_cvv' => 'CVV není platné.', 'cost' => 'Cena', 'create_invoice_for_sample' => 'Poznámka: vytvořte si první fakturu a zde si ji prohlédněte.', - + // User Permissions 'owner' => 'Vlastník', 'administrator' => 'Administrátor', @@ -1084,8 +1067,8 @@ $LANG = array( 'create_all_help' => 'Povolit uživatelům měnit záznamy', 'view_all_help' => 'Povolit uživatelům zobrazit záznamy, které nevytvořili', 'edit_all_help' => 'Povolit uživatelům měnit záznamy, které nevytvořili', - 'view_payment' => 'Zobrazit platbu', - + 'view_payment' => 'Zobrazit platbu', + 'january' => 'Leden', 'february' => 'Únor', 'march' => 'Březen', @@ -1098,7 +1081,7 @@ $LANG = array( 'october' => 'Říjen', 'november' => 'Listopad', 'december' => 'Prosinec', - + // Documents 'documents_header' => 'Documents:', 'email_documents_header' => 'Documents:', @@ -1111,30 +1094,28 @@ $LANG = array( 'document_email_attachment' => 'Attach Documents', 'download_documents' => 'Download Documents (:size)', 'documents_from_expenses' => 'From Expenses:', - 'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage - 'DefaultMessage' => 'Drop files or click to upload', - 'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.', - 'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.', - 'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', - 'InvalidFileType' => 'You can\'t upload files of this type.', - 'ResponseError' => 'Server responded with {{statusCode}} code.', - 'CancelUpload' => 'Cancel upload', - 'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?', - 'RemoveFile' => 'Remove file', - ), + 'dropzone_default_message' => 'Drop files or click to upload', + 'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.', + 'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.', + 'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', + 'dropzone_invalid_file_type' => 'You can\'t upload files of this type.', + 'dropzone_response_error' => 'Server responded with {{statusCode}} code.', + 'dropzone_cancel_upload' => 'Cancel upload', + 'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?', + 'dropzone_remove_file' => 'Remove file', 'documents' => 'Documents', 'document_date' => 'Document Date', 'document_size' => 'Size', - 'enable_client_portal' => 'Client Portal', - 'enable_client_portal_help' => 'Show/hide the client portal.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Skrýt/zobrazit dashboard v klientském portálu.', 'enable_client_portal_dashboard' => 'Dashboard', 'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.', - + // Plans 'account_management' => 'Account Management', 'plan_status' => 'Plan Status', - + 'plan_upgrade' => 'Upgrade', 'plan_change' => 'Change Plan', 'pending_change_to' => 'Changes To', @@ -1164,9 +1145,9 @@ $LANG = array( 'plan_paid' => 'Term Started', 'plan_started' => 'Plan Started', 'plan_expires' => 'Plan Expires', - + 'white_label_button' => 'White Label', - + 'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', 'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.', 'enterprise_plan_product' => 'Enterprise Plan', @@ -1177,18 +1158,214 @@ $LANG = array( 'plan_pending_monthly' => 'Will switch to monthly on :date', 'plan_refunded' => 'A refund has been issued.', - 'live_preview' => 'Live Preview', + 'live_preview' => 'Náhled', 'page_size' => 'Page Size', 'live_preview_disabled' => 'Live preview has been disabled to support selected font', 'invoice_number_padding' => 'Padding', 'preview' => 'Preview', 'list_vendors' => 'List Vendors', 'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.', - 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.', + 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments, :link to see the full list of features.', 'return_to_app' => 'Return to app', - + + + // Payment updates + 'refund_payment' => 'Refund Payment', + 'refund_max' => 'Max:', + 'refund' => 'Refund', + 'are_you_sure_refund' => 'Refund selected payments?', + 'status_pending' => 'Pending', + 'status_completed' => 'Completed', + 'status_failed' => 'Failed', + 'status_partially_refunded' => 'Partially Refunded', + 'status_partially_refunded_amount' => ':amount Refunded', + 'status_refunded' => 'Refunded', + 'status_voided' => 'Cancelled', + 'refunded_payment' => 'Refunded Payment', + 'activity_39' => ':user cancelled a :payment_amount payment (:payment)', + 'activity_40' => ':user refunded :adjustment of a :payment_amount payment (:payment)', + 'card_expiration' => 'Exp: :expires', + + 'card_creditcardother' => 'Unknown', + 'card_americanexpress' => 'American Express', + 'card_carteblanche' => 'Carte Blanche', + 'card_unionpay' => 'UnionPay', + 'card_diners' => 'Diners Club', + 'card_discover' => 'Discover', + 'card_jcb' => 'JCB', + 'card_laser' => 'Laser', + 'card_maestro' => 'Maestro', + 'card_mastercard' => 'MasterCard', + 'card_solo' => 'Solo', + 'card_switch' => 'Switch', + 'card_visacard' => 'Visa', + 'card_ach' => 'ACH', + + 'payment_type_stripe' => 'Stripe', + 'ach' => 'ACH', + 'enable_ach' => 'Enable ACH', + 'stripe_ach_help' => 'ACH support must also be enabled at Stripe.', + 'ach_disabled' => 'Another gateway is already configured for direct debit.', + + 'plaid' => 'Plaid', + 'client_id' => 'Client Id', + 'secret' => 'Secret', + 'public_key' => 'Public Key', + 'plaid_optional' => '(optional)', + 'plaid_environment_help' => 'When a Stripe test key is given, Plaid\'s development environement (tartan) will be used.', + 'other_providers' => 'Other Providers', + 'country_not_supported' => 'That country is not supported.', + 'invalid_routing_number' => 'The routing number is not valid.', + 'invalid_account_number' => 'The account number is not valid.', + 'account_number_mismatch' => 'The account numbers do not match.', + 'missing_account_holder_type' => 'Please select an individual or company account.', + 'missing_account_holder_name' => 'Please enter the account holder\'s name.', + 'routing_number' => 'Routing Number', + 'confirm_account_number' => 'Confirm Account Number', + 'individual_account' => 'Individual Account', + 'company_account' => 'Company Account', + 'account_holder_name' => 'Account Holder Name', + 'add_account' => 'Add Account', + 'payment_methods' => 'Payment Methods', + 'complete_verification' => 'Complete Verification', + 'verification_amount1' => 'Amount 1', + 'verification_amount2' => 'Amount 2', + 'payment_method_verified' => 'Verification completed successfully', + 'verification_failed' => 'Verification Failed', + 'remove_payment_method' => 'Remove Payment Method', + 'confirm_remove_payment_method' => 'Are you sure you want to remove this payment method?', + 'remove' => 'Remove', + 'payment_method_removed' => 'Removed payment method.', + 'bank_account_verification_help' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. Please enter the amounts below.', + 'bank_account_verification_next_steps' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. + Once you have the amounts, come back to this payment methods page and click "Complete Verification" next to the account.', + 'unknown_bank' => 'Unknown Bank', + 'ach_verification_delay_help' => 'You will be able to use the account after completing verification. Verification usually takes 1-2 business days.', + 'add_credit_card' => 'Add Credit Card', + 'payment_method_added' => 'Added payment method.', + 'use_for_auto_bill' => 'Use For Autobill', + 'used_for_auto_bill' => 'Autobill Payment Method', + 'payment_method_set_as_default' => 'Set Autobill payment method.', + 'activity_41' => ':payment_amount payment (:payment) failed', + 'webhook_url' => 'Webhook URL', + 'stripe_webhook_help' => 'You must :link.', + 'stripe_webhook_help_link_text' => 'add this URL as an endpoint at Stripe', + 'payment_method_error' => 'There was an error adding your payment methd. Please try again later.', + 'notification_invoice_payment_failed_subject' => 'Payment failed for Invoice :invoice', + 'notification_invoice_payment_failed' => 'A payment made by client :client towards Invoice :invoice failed. The payment has been marked as failed and :amount has been added to the client\'s balance.', + 'link_with_plaid' => 'Link Account Instantly with Plaid', + 'link_manually' => 'Link Manually', + 'secured_by_plaid' => 'Secured by Plaid', + 'plaid_linked_status' => 'Your bank account at :bank', + 'add_payment_method' => 'Add Payment Method', + 'account_holder_type' => 'Account Holder Type', + 'ach_authorization' => 'I authorize :company to use my bank account for future payments and, if necessary, electronically credit my account to correct erroneous debits. I understand that I may cancel this authorization at any time by removing the payment method or by contacting :email.', + 'ach_authorization_required' => 'You must consent to ACH transactions.', + 'off' => 'Off', + 'opt_in' => 'Opt-in', + 'opt_out' => 'Opt-out', + 'always' => 'Always', + 'opted_out' => 'Opted out', + 'opted_in' => 'Opted in', + 'manage_auto_bill' => 'Manage Auto-bill', + 'enabled' => 'Enabled', + 'paypal' => 'PayPal', + 'braintree_enable_paypal' => 'Enable PayPal payments through BrainTree', + 'braintree_paypal_disabled_help' => 'The PayPal gateway is processing PayPal payments', + 'braintree_paypal_help' => 'You must also :link.', + 'braintree_paypal_help_link_text' => 'link PayPal to your BrainTree account', + 'token_billing_braintree_paypal' => 'Save payment details', + 'add_paypal_account' => 'Add PayPal Account', + + + 'no_payment_method_specified' => 'No payment method specified', + 'chart_type' => 'Chart Type', + 'format' => 'Format', + 'import_ofx' => 'Import OFX', + 'ofx_file' => 'OFX File', + 'ofx_parse_failed' => 'Failed to parse OFX file', + + // WePay + 'wepay' => 'WePay', + 'sign_up_with_wepay' => 'Sign up with WePay', + 'use_another_provider' => 'Use another provider', + 'company_name' => 'Company Name', + 'wepay_company_name_help' => 'This will appear on client\'s credit card statements.', + 'wepay_description_help' => 'The purpose of this account.', + 'wepay_tos_agree' => 'I agree to the :link.', + 'wepay_tos_link_text' => 'WePay Terms of Service', + 'resend_confirmation_email' => 'Resend Confirmation Email', + 'manage_wepay_account' => 'Manage WePay Account', + 'action_required' => 'Action Required', + 'finish_setup' => 'Finish Setup', + 'created_wepay_confirmation_required' => 'Please check your email and confirm your email address with WePay.', + 'switch_to_wepay' => 'Switch to WePay', + 'switch' => 'Switch', + 'restore_account_gateway' => 'Restore Gateway', + 'restored_account_gateway' => 'Successfully restored gateway', + 'united_states' => 'United States', + 'canada' => 'Canada', + 'accept_debit_cards' => 'Accept Debit Cards', + 'debit_cards' => 'Debit Cards', + + 'warn_start_date_changed' => 'The next invoice will be sent on the new start date.', + 'original_start_date' => 'Original start date', + 'new_start_date' => 'New start date', + 'security' => 'Security', + 'see_whats_new' => 'See what\'s new in v:version', + 'wait_for_upload' => 'Please wait for the document upload to complete.', + 'upgrade_for_permissions' => 'Upgrade to our Enterprise plan to enable permissions.', + 'enable_second_tax_rate' => 'Enable specifying a second tax rate', + 'payment_file' => 'Payment File', + 'expense_file' => 'Expense File', + 'product_file' => 'Product File', + 'import_products' => 'Import Products', + 'products_will_create' => 'products will be created.', + 'product_key' => 'Product', + 'created_products' => 'Successfully created :count product(s)', + 'export_help' => 'Use JSON if you plan to import the data into Invoice Ninja.', + 'JSON_file' => 'JSON File', + + 'view_dashboard' => 'View Dashboard', + 'client_session_expired' => 'Session Expired', + 'client_session_expired_message' => 'Your session has expired. Please click the link in your email again.', + + 'auto_bill_notification' => 'This invoice will automatically be billed to your :payment_method on file on :due_date.', + 'auto_bill_payment_method_bank_transfer' => 'bank account', + 'auto_bill_payment_method_credit_card' => 'credit card', + 'auto_bill_payment_method_paypal' => 'PayPal account', + 'auto_bill_notification_placeholder' => 'This invoice will automatically be billed to your credit card on file on the due date.', + 'payment_settings' => 'Payment Settings', + + 'on_send_date' => 'On send date', + 'on_due_date' => 'On due date', + 'auto_bill_ach_date_help' => 'ACH auto bill will always happen on the due date', + 'warn_change_auto_bill' => 'Due to NACHA rules, changes to this invoice may prevent ACH auto bill.', + + 'bank_account' => 'Bank Account', + 'payment_processed_through_wepay' => 'ACH payments will be processed using WePay.', + 'wepay_payment_tos_agree' => 'I agree to the WePay :terms and :privacy_policy.', + 'privacy_policy' => 'Privacy Policy', + 'wepay_payment_tos_agree_required' => 'You must agree to the WePay Terms of Service and Privacy Policy.', + 'payment_settings_supported_gateways' => 'These options are supported by the WePay, Stripe, and Braintree gateways.', + 'ach_email_prompt' => 'Please enter your email address:', + 'verification_pending' => 'Verification Pending', + + 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', + 'credit_card' => 'Credit Card', + 'bank_transfer' => 'Bank Transfer', + 'no_transaction_reference' => 'We did not recieve a payment transaction reference from the gateway.', + 'use_bank_on_file' => 'Use Bank on File', + 'auto_bill_email_message' => 'This invoice will automatically be billed to the payment method on file on the due date.', + 'bitcoin' => 'Bitcoin', + 'added_on' => 'Added :date', + 'failed_remove_payment_method' => 'Failed to remove the payment method', + 'gateway_exists' => 'This gateway already exists', + 'manual_entry' => 'Manual entry', + ); return $LANG; -?>. +?> diff --git a/resources/lang/da/texts.php b/resources/lang/da/texts.php index af939b8f7a..60405977e5 100644 --- a/resources/lang/da/texts.php +++ b/resources/lang/da/texts.php @@ -1,8 +1,6 @@ 'Organisation', 'name' => 'Navn', 'website' => 'Webside', @@ -25,8 +23,6 @@ return array( 'size_id' => 'Størrelse', 'industry_id' => 'Sektor', 'private_notes' => 'Private notater', - - // invoice 'invoice' => 'Faktura', 'client' => 'Klient', 'invoice_date' => 'Faktureringsdato', @@ -50,7 +46,6 @@ return array( 'invoice_design_id' => 'Design', 'terms' => 'Vilkår', 'your_invoice' => 'Din faktura', - 'remove_contact' => 'Fjern kontakt', 'add_contact' => 'Tilføj kontakt', 'create_new_client' => 'Opret ny klient', @@ -74,8 +69,6 @@ return array( 'settings' => 'Indstillinger', 'enable_invoice_tax' => 'Aktiver for at specificere en faktura skat', 'enable_line_item_tax' => 'Aktiver for at specificere per linjefaktura skat', - - // navigation 'dashboard' => 'Oversigt', 'clients' => 'Klienter', 'invoices' => 'Fakturaer', @@ -100,8 +93,6 @@ return array( 'provide_email' => 'Opgiv venligst en gyldig e-mail', 'powered_by' => 'Drevet af', 'no_items' => 'Ingen elementer', - - // recurring invoices 'recurring_invoices' => 'Gentagende fakturaer', 'recurring_help' => 'Send automatisk klienter de samme fakturaer ugentligt, bi-månedligt, månedligt, kvartalsvis eller årligt.
Brug :MONTH, :QUARTER eller :YEAR for dynamiske datoer. Grundliggende matematik fungerer også, for eksempel :MONTH-1.
@@ -111,8 +102,6 @@ return array(Vi bruger pdfmake til at definere faktura design felter. pdfmake legeplads giver en god mulighed for at se biblioteket i aktion.
-For at tilgå under indstillingerne ved hjælp af dot notation. For eksempel kan man for at vise klient navnet bruge $client.name
.
Hvis du mangler svar på nogen spørgsmål så post et spørgsmål i vores support forum.
', - + 'customize_help' => 'We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
+You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', 'invoice_due_date' => 'Due Date', 'quote_due_date' => 'Valid Until', 'valid_until' => 'Valid Until', @@ -762,15 +668,12 @@ return array( 'status_partial' => 'Partial', 'status_paid' => 'Paid', 'show_line_item_tax' => 'Display line item taxes inline', - 'iframe_url' => 'Website', 'iframe_url_help1' => 'Copy the following code to a page on your site.', 'iframe_url_help2' => 'You can test the feature by clicking \'View as recipient\' for an invoice.', - 'auto_bill' => 'Auto Bill', 'military_time' => '24 Hour Time', 'last_sent' => 'Last Sent', - 'reminder_emails' => 'Reminder Emails', 'templates_and_reminders' => 'Templates & Reminders', 'subject' => 'Subject', @@ -782,15 +685,12 @@ return array( 'reminder_subject' => 'Reminder: Invoice :invoice from :account', 'reset' => 'Reset', 'invoice_not_found' => 'The requested invoice is not available', - 'referral_program' => 'Referral Program', 'referral_code' => 'Referral Code', 'last_sent_on' => 'Last sent on :date', - 'page_expire' => 'This page will expire soon, :click_here to keep working', 'upcoming_quotes' => 'Upcoming Quotes', 'expired_quotes' => 'Expired Quotes', - 'sign_up_using' => 'Sign up using', 'invalid_credentials' => 'These credentials do not match our records', 'show_all_options' => 'Show all options', @@ -799,17 +699,10 @@ return array( 'disable' => 'Disable', 'invoice_quote_number' => 'Invoice and Quote Numbers', 'invoice_charges' => 'Invoice Charges', - - 'invitation_status' => [ - 'sent' => 'Email Sent', - 'opened' => 'Email Openend', - 'viewed' => 'Invoice Viewed', - ], 'notification_invoice_bounced' => 'We were unable to deliver Invoice :invoice to :contact.', 'notification_invoice_bounced_subject' => 'Unable to deliver Invoice :invoice', 'notification_quote_bounced' => 'We were unable to deliver Quote :invoice to :contact.', 'notification_quote_bounced_subject' => 'Unable to deliver Quote :invoice', - 'custom_invoice_link' => 'Custom Invoice Link', 'total_invoiced' => 'Total Invoiced', 'open_balance' => 'Open Balance', @@ -817,15 +710,12 @@ return array( 'basic_settings' => 'Basic Settings', 'pro' => 'Pro', 'gateways' => 'Payment Gateways', - 'recurring_too_soon' => 'Det er for tidligt at generere den næste faktura, it\'s scheduled for :date', - 'next_send_on' => 'Send Next: :date', 'no_longer_running' => 'This invoice is not scheduled to run', 'general_settings' => 'General Settings', 'customize' => 'Customize', 'oneclick_login_help' => 'Connect an account to login without a password', 'referral_code_help' => 'Earn money by sharing our app online', - 'enable_with_stripe' => 'Enable | Requires Stripe', 'tax_settings' => 'Tax Settings', 'create_tax_rate' => 'Add Tax Rate', @@ -846,7 +736,6 @@ return array( 'invoice_counter' => 'Invoice Counter', 'quote_counter' => 'Quote Counter', 'type' => 'Type', - 'activity_1' => ':user created client :client', 'activity_2' => ':user archived client :client', 'activity_3' => ':user deleted client :client', @@ -876,18 +765,24 @@ return array( 'activity_27' => ':user restored payment :payment', 'activity_28' => ':user restored :credit credit', 'activity_29' => ':contact approved quote :quote', - + 'activity_30' => ':user created :vendor', + 'activity_31' => ':user created :vendor', + 'activity_32' => ':user created :vendor', + 'activity_33' => ':user created :vendor', + 'activity_34' => ':user created expense :expense', + 'activity_35' => ':user created :vendor', + 'activity_36' => ':user created :vendor', + 'activity_37' => ':user created :vendor', 'payment' => 'Payment', 'system' => 'System', 'signature' => 'Email Signature', 'default_messages' => 'Default Messages', 'quote_terms' => 'Quote Terms', 'default_quote_terms' => 'Default Quote Terms', - 'default_invoice_terms' => 'Default Invoice Terms', - 'default_invoice_footer' => 'Default Invoice Footer', + 'default_invoice_terms' => 'Sæt standard fakturavilkår', + 'default_invoice_footer' => 'Sæt standard faktura fodnoter', 'quote_footer' => 'Quote Footer', 'free' => 'Free', - 'quote_is_approved' => 'This quote is approved', 'apply_credit' => 'Apply Credit', 'system_settings' => 'System Settings', @@ -905,7 +800,6 @@ return array( 'restored_recurring_invoice' => 'Successfully restored recurring invoice', 'archived' => 'Archived', 'untitled_account' => 'Untitled Company', - 'before' => 'Before', 'after' => 'After', 'reset_terms_help' => 'Reset to the default account terms', @@ -914,7 +808,6 @@ return array( 'user' => 'User', 'country' => 'Country', 'include' => 'Include', - 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', 'import_freshbooks' => 'Import From FreshBooks', 'import_data' => 'Import Data', @@ -925,16 +818,6 @@ return array( 'task_file' => 'Task File', 'no_mapper' => 'No valid mapping for file', 'invalid_csv_header' => 'Invalid CSV Header', - - 'email_errors' => [ - 'inactive_client' => 'Emails can not be sent to inactive clients', - 'inactive_contact' => 'Emails can not be sent to inactive contacts', - 'inactive_invoice' => 'Emails can not be sent to inactive invoices', - 'user_unregistered' => 'Please register your account to send emails', - 'user_unconfirmed' => 'Please confirm your account to send emails', - 'invalid_contact_email' => 'Invalid contact email', - ], - 'client_portal' => 'Client Portal', 'admin' => 'Admin', 'disabled' => 'Disabled', @@ -943,11 +826,9 @@ return array( 'invoice_will_create' => 'client will be created', 'invoices_will_create' => 'invoices will be created', 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', - 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', - 'email_design' => 'Email Design', 'due_by' => 'Due by :date', 'enable_email_markup' => 'Enable Markup', @@ -959,7 +840,6 @@ return array( 'plain' => 'Plain', 'light' => 'Light', 'dark' => 'Dark', - 'industry_help' => 'Used to provide comparisons against the averages of companies of similar size and industry.', 'subdomain_help' => 'Customize the invoice link subdomain or display the invoice on your own website.', 'invoice_number_help' => 'Specify a prefix or use a custom pattern to dynamically set the invoice number.', @@ -968,8 +848,6 @@ return array( 'custom_account_fields_helps' => 'Add a label and value to the company details section of the PDF.', 'custom_invoice_fields_helps' => 'Add a text input to the invoice create/edit page and display the label and value on the PDF.', 'custom_invoice_charges_helps' => 'Add a text input to the invoice create/edit page and include the charge in the invoice subtotals.', - 'color_help' => 'Note: the primary color is also used in the client portal and custom email designs.', - 'token_expired' => 'Validation token was expired. Please try again.', 'invoice_link' => 'Invoice Link', 'button_confirmation_message' => 'Click to confirm your email address.', @@ -978,7 +856,6 @@ return array( 'created_invoices' => 'Successfully created :count invoice(s)', 'next_invoice_number' => 'The next invoice number is :number.', 'next_quote_number' => 'The next quote number is :number.', - 'days_before' => 'days before', 'days_after' => 'days after', 'field_due_date' => 'due date', @@ -986,11 +863,7 @@ return array( 'schedule' => 'Schedule', 'email_designs' => 'Email Designs', 'assigned_when_sent' => 'Assigned when sent', - - 'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.', 'white_label_purchase_link' => 'Purchase a white label license', - - // Expense / vendor 'expense' => 'Expense', 'expenses' => 'Expenses', 'new_expense' => 'Enter Expense', @@ -1007,8 +880,6 @@ return array( 'archived_expense' => 'Successfully archived expense', 'deleted_expenses' => 'Successfully deleted expenses', 'archived_expenses' => 'Successfully archived expenses', - - // Expenses 'expense_amount' => 'Expense Amount', 'expense_balance' => 'Expense Balance', 'expense_date' => 'Expense Date', @@ -1030,18 +901,14 @@ return array( 'view' => 'View', 'restore_expense' => 'Restore Expense', 'invoice_expense' => 'Invoice Expense', - 'expense_error_multiple_clients' =>'The expenses can\'t belong to different clients', + 'expense_error_multiple_clients' => 'The expenses can\'t belong to different clients', 'expense_error_invoiced' => 'Expense has already been invoiced', 'convert_currency' => 'Convert currency', - - // Payment terms 'num_days' => 'Number of days', 'create_payment_term' => 'Create Payment Term', 'edit_payment_terms' => 'Edit Payment Term', 'edit_payment_term' => 'Edit Payment Term', 'archive_payment_term' => 'Archive Payment Term', - - // recurring due dates 'recurring_due_dates' => 'Recurring Invoice Due Dates', 'recurring_due_date_help' => 'Automatically sets a due date for the invoice.
Invoices on a monthly or yearly cycle set to be due on or before the day they are created will be due the next month. Invoices set to be due on the 29th or 30th in months that don\'t have that day will be due the last day of the month.
@@ -1069,15 +936,11 @@ return array( 'thursday' => 'Thursday', 'friday' => 'Friday', 'saturday' => 'Saturday', - - // Fonts 'header_font_id' => 'Header Font', 'body_font_id' => 'Body Font', 'color_font_help' => 'Note: the primary color and fonts are also used in the client portal and custom email designs.', - 'live_preview' => 'Live Preview', 'invalid_mail_config' => 'Unable to send email, please check that the mail settings are correct.', - 'invoice_message_button' => 'To view your invoice for :amount, click the button below.', 'quote_message_button' => 'To view your quote for :amount, click the button below.', 'payment_message_button' => 'Thank you for your payment of :amount.', @@ -1094,7 +957,6 @@ return array( 'archived_bank_account' => 'Successfully archived bank account', 'created_bank_account' => 'Successfully created bank account', 'validate_bank_account' => 'Validate Bank Account', - 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', 'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.', 'bank_password_warning' => 'Warning: your password may be transmitted in plain text, consider enabling HTTPS.', 'username' => 'Username', @@ -1108,7 +970,6 @@ return array( 'validate' => 'Validate', 'info' => 'Info', 'imported_expenses' => 'Successfully created :count_vendors vendor(s) and :count_expenses expense(s)', - 'iframe_url_help3' => 'Note: if you plan on accepting credit cards details we strongly recommend enabling HTTPS on your site.', 'expense_error_multiple_currencies' => 'The expenses can\'t have different currencies.', 'expense_error_mismatch_currencies' => 'The client\'s currency does not match the expense currency.', @@ -1129,7 +990,28 @@ return array( 'trial_call_to_action' => 'Start Free Trial', 'trial_success' => 'Successfully enabled two week free pro plan trial', 'overdue' => 'Overdue', - 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + + + 'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.', + 'user_email_footer' => 'For at justere varslings indstillingene besøg venligst :link', + 'reset_password_footer' => 'Hvis du ikke bad om at få nulstillet din adgangskode kontakt venligst kundeservice: :email', + 'limit_users' => 'Desværre, dette vil overstige grænsen på :limit brugere', + 'more_designs_self_host_header' => 'Få 6 flere faktura designs for kun $:price', + 'old_browser' => 'Din browser er registreret som værende af ældre dato og den vil ikke kunne bruges, skift til en nyere version browser', + 'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.', + 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', + + 'pro_plan_remove_logo' => ':link for at fjerne Invoice Ninja-logoet, opgrader til en Pro Plan', + 'pro_plan_remove_logo_link' => 'Klik her', + 'invitation_status_sent' => 'Email Sent', + 'invitation_status_opened' => 'Email Openend', + 'invitation_status_viewed' => 'Invoice Viewed', + 'email_error_inactive_client' => 'Emails can not be sent to inactive clients', + 'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts', + 'email_error_inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'email_error_user_unregistered' => 'Please register your account to send emails', + 'email_error_user_unconfirmed' => 'Please confirm your account to send emails', + 'email_error_invalid_contact_email' => 'Invalid contact email', 'navigation' => 'Navigation', 'list_invoices' => 'List Invoices', @@ -1152,22 +1034,20 @@ return array( 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', 'recurring_invoice_number' => 'Recurring Invoice Number', 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', - 'enable_client_portal' => 'Dashboard', - 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', // Client Passwords 'enable_portal_password'=>'Password protect invoices', 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', 'send_portal_password'=>'Generate password automatically', 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', - + 'expired' => 'Expired', 'invalid_card_number' => 'The credit card number is not valid.', 'invalid_expiry' => 'The expiration date is not valid.', 'invalid_cvv' => 'The CVV is not valid.', 'cost' => 'Cost', 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', - + // User Permissions 'owner' => 'Owner', 'administrator' => 'Administrator', @@ -1185,8 +1065,8 @@ return array( 'create_all_help' => 'Allow user to create and modify records', 'view_all_help' => 'Allow user to view records they didn\'t create', 'edit_all_help' => 'Allow user to modify records they didn\'t create', - 'view_payment' => 'View Payment', - + 'view_payment' => 'View Payment', + 'january' => 'January', 'february' => 'February', 'march' => 'March', @@ -1212,30 +1092,28 @@ return array( 'document_email_attachment' => 'Attach Documents', 'download_documents' => 'Download Documents (:size)', 'documents_from_expenses' => 'From Expenses:', - 'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage - 'DefaultMessage' => 'Drop files or click to upload', - 'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.', - 'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.', - 'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', - 'InvalidFileType' => 'You can\'t upload files of this type.', - 'ResponseError' => 'Server responded with {{statusCode}} code.', - 'CancelUpload' => 'Cancel upload', - 'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?', - 'RemoveFile' => 'Remove file', - ), + 'dropzone_default_message' => 'Drop files or click to upload', + 'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.', + 'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.', + 'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', + 'dropzone_invalid_file_type' => 'You can\'t upload files of this type.', + 'dropzone_response_error' => 'Server responded with {{statusCode}} code.', + 'dropzone_cancel_upload' => 'Cancel upload', + 'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?', + 'dropzone_remove_file' => 'Remove file', 'documents' => 'Documents', 'document_date' => 'Document Date', 'document_size' => 'Size', - 'enable_client_portal' => 'Client Portal', - 'enable_client_portal_help' => 'Show/hide the client portal.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', 'enable_client_portal_dashboard' => 'Dashboard', 'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.', - + // Plans 'account_management' => 'Account Management', 'plan_status' => 'Plan Status', - + 'plan_upgrade' => 'Upgrade', 'plan_change' => 'Change Plan', 'pending_change_to' => 'Changes To', @@ -1265,9 +1143,9 @@ return array( 'plan_paid' => 'Term Started', 'plan_started' => 'Plan Started', 'plan_expires' => 'Plan Expires', - + 'white_label_button' => 'White Label', - + 'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', 'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.', 'enterprise_plan_product' => 'Enterprise Plan', @@ -1285,7 +1163,207 @@ return array( 'preview' => 'Preview', 'list_vendors' => 'List Vendors', 'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.', - 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.', + 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments, :link to see the full list of features.', 'return_to_app' => 'Return to app', - -); \ No newline at end of file + + + // Payment updates + 'refund_payment' => 'Refund Payment', + 'refund_max' => 'Max:', + 'refund' => 'Refund', + 'are_you_sure_refund' => 'Refund selected payments?', + 'status_pending' => 'Pending', + 'status_completed' => 'Completed', + 'status_failed' => 'Failed', + 'status_partially_refunded' => 'Partially Refunded', + 'status_partially_refunded_amount' => ':amount Refunded', + 'status_refunded' => 'Refunded', + 'status_voided' => 'Cancelled', + 'refunded_payment' => 'Refunded Payment', + 'activity_39' => ':user cancelled a :payment_amount payment (:payment)', + 'activity_40' => ':user refunded :adjustment of a :payment_amount payment (:payment)', + 'card_expiration' => 'Exp: :expires', + + 'card_creditcardother' => 'Unknown', + 'card_americanexpress' => 'American Express', + 'card_carteblanche' => 'Carte Blanche', + 'card_unionpay' => 'UnionPay', + 'card_diners' => 'Diners Club', + 'card_discover' => 'Discover', + 'card_jcb' => 'JCB', + 'card_laser' => 'Laser', + 'card_maestro' => 'Maestro', + 'card_mastercard' => 'MasterCard', + 'card_solo' => 'Solo', + 'card_switch' => 'Switch', + 'card_visacard' => 'Visa', + 'card_ach' => 'ACH', + + 'payment_type_stripe' => 'Stripe', + 'ach' => 'ACH', + 'enable_ach' => 'Enable ACH', + 'stripe_ach_help' => 'ACH support must also be enabled at Stripe.', + 'ach_disabled' => 'Another gateway is already configured for direct debit.', + + 'plaid' => 'Plaid', + 'client_id' => 'Client Id', + 'secret' => 'Secret', + 'public_key' => 'Public Key', + 'plaid_optional' => '(optional)', + 'plaid_environment_help' => 'When a Stripe test key is given, Plaid\'s development environement (tartan) will be used.', + 'other_providers' => 'Other Providers', + 'country_not_supported' => 'That country is not supported.', + 'invalid_routing_number' => 'The routing number is not valid.', + 'invalid_account_number' => 'The account number is not valid.', + 'account_number_mismatch' => 'The account numbers do not match.', + 'missing_account_holder_type' => 'Please select an individual or company account.', + 'missing_account_holder_name' => 'Please enter the account holder\'s name.', + 'routing_number' => 'Routing Number', + 'confirm_account_number' => 'Confirm Account Number', + 'individual_account' => 'Individual Account', + 'company_account' => 'Company Account', + 'account_holder_name' => 'Account Holder Name', + 'add_account' => 'Tilføj konto', + 'payment_methods' => 'Payment Methods', + 'complete_verification' => 'Complete Verification', + 'verification_amount1' => 'Amount 1', + 'verification_amount2' => 'Amount 2', + 'payment_method_verified' => 'Verification completed successfully', + 'verification_failed' => 'Verification Failed', + 'remove_payment_method' => 'Remove Payment Method', + 'confirm_remove_payment_method' => 'Are you sure you want to remove this payment method?', + 'remove' => 'Remove', + 'payment_method_removed' => 'Removed payment method.', + 'bank_account_verification_help' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. Please enter the amounts below.', + 'bank_account_verification_next_steps' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. + Once you have the amounts, come back to this payment methods page and click "Complete Verification" next to the account.', + 'unknown_bank' => 'Unknown Bank', + 'ach_verification_delay_help' => 'You will be able to use the account after completing verification. Verification usually takes 1-2 business days.', + 'add_credit_card' => 'Add Credit Card', + 'payment_method_added' => 'Added payment method.', + 'use_for_auto_bill' => 'Use For Autobill', + 'used_for_auto_bill' => 'Autobill Payment Method', + 'payment_method_set_as_default' => 'Set Autobill payment method.', + 'activity_41' => ':payment_amount payment (:payment) failed', + 'webhook_url' => 'Webhook URL', + 'stripe_webhook_help' => 'You must :link.', + 'stripe_webhook_help_link_text' => 'add this URL as an endpoint at Stripe', + 'payment_method_error' => 'There was an error adding your payment methd. Please try again later.', + 'notification_invoice_payment_failed_subject' => 'Payment failed for Invoice :invoice', + 'notification_invoice_payment_failed' => 'A payment made by client :client towards Invoice :invoice failed. The payment has been marked as failed and :amount has been added to the client\'s balance.', + 'link_with_plaid' => 'Link Account Instantly with Plaid', + 'link_manually' => 'Link Manually', + 'secured_by_plaid' => 'Secured by Plaid', + 'plaid_linked_status' => 'Your bank account at :bank', + 'add_payment_method' => 'Add Payment Method', + 'account_holder_type' => 'Account Holder Type', + 'ach_authorization' => 'I authorize :company to use my bank account for future payments and, if necessary, electronically credit my account to correct erroneous debits. I understand that I may cancel this authorization at any time by removing the payment method or by contacting :email.', + 'ach_authorization_required' => 'You must consent to ACH transactions.', + 'off' => 'Off', + 'opt_in' => 'Opt-in', + 'opt_out' => 'Opt-out', + 'always' => 'Always', + 'opted_out' => 'Opted out', + 'opted_in' => 'Opted in', + 'manage_auto_bill' => 'Manage Auto-bill', + 'enabled' => 'Enabled', + 'paypal' => 'PayPal', + 'braintree_enable_paypal' => 'Enable PayPal payments through BrainTree', + 'braintree_paypal_disabled_help' => 'The PayPal gateway is processing PayPal payments', + 'braintree_paypal_help' => 'You must also :link.', + 'braintree_paypal_help_link_text' => 'link PayPal to your BrainTree account', + 'token_billing_braintree_paypal' => 'Save payment details', + 'add_paypal_account' => 'Add PayPal Account', + + + 'no_payment_method_specified' => 'No payment method specified', + 'chart_type' => 'Chart Type', + 'format' => 'Format', + 'import_ofx' => 'Import OFX', + 'ofx_file' => 'OFX File', + 'ofx_parse_failed' => 'Failed to parse OFX file', + + // WePay + 'wepay' => 'WePay', + 'sign_up_with_wepay' => 'Sign up with WePay', + 'use_another_provider' => 'Use another provider', + 'company_name' => 'Company Name', + 'wepay_company_name_help' => 'This will appear on client\'s credit card statements.', + 'wepay_description_help' => 'The purpose of this account.', + 'wepay_tos_agree' => 'I agree to the :link.', + 'wepay_tos_link_text' => 'WePay Terms of Service', + 'resend_confirmation_email' => 'Resend Confirmation Email', + 'manage_wepay_account' => 'Manage WePay Account', + 'action_required' => 'Action Required', + 'finish_setup' => 'Finish Setup', + 'created_wepay_confirmation_required' => 'Please check your email and confirm your email address with WePay.', + 'switch_to_wepay' => 'Switch to WePay', + 'switch' => 'Switch', + 'restore_account_gateway' => 'Restore Gateway', + 'restored_account_gateway' => 'Successfully restored gateway', + 'united_states' => 'United States', + 'canada' => 'Canada', + 'accept_debit_cards' => 'Accept Debit Cards', + 'debit_cards' => 'Debit Cards', + + 'warn_start_date_changed' => 'The next invoice will be sent on the new start date.', + 'original_start_date' => 'Original start date', + 'new_start_date' => 'New start date', + 'security' => 'Security', + 'see_whats_new' => 'See what\'s new in v:version', + 'wait_for_upload' => 'Please wait for the document upload to complete.', + 'upgrade_for_permissions' => 'Upgrade to our Enterprise plan to enable permissions.', + 'enable_second_tax_rate' => 'Enable specifying a second tax rate', + 'payment_file' => 'Payment File', + 'expense_file' => 'Expense File', + 'product_file' => 'Product File', + 'import_products' => 'Import Products', + 'products_will_create' => 'products will be created.', + 'product_key' => 'Product', + 'created_products' => 'Successfully created :count product(s)', + 'export_help' => 'Use JSON if you plan to import the data into Invoice Ninja.', + 'JSON_file' => 'JSON File', + + 'view_dashboard' => 'View Dashboard', + 'client_session_expired' => 'Session Expired', + 'client_session_expired_message' => 'Your session has expired. Please click the link in your email again.', + + 'auto_bill_notification' => 'This invoice will automatically be billed to your :payment_method on file on :due_date.', + 'auto_bill_payment_method_bank_transfer' => 'bank account', + 'auto_bill_payment_method_credit_card' => 'credit card', + 'auto_bill_payment_method_paypal' => 'PayPal account', + 'auto_bill_notification_placeholder' => 'This invoice will automatically be billed to your credit card on file on the due date.', + 'payment_settings' => 'Payment Settings', + + 'on_send_date' => 'On send date', + 'on_due_date' => 'On due date', + 'auto_bill_ach_date_help' => 'ACH auto bill will always happen on the due date', + 'warn_change_auto_bill' => 'Due to NACHA rules, changes to this invoice may prevent ACH auto bill.', + + 'bank_account' => 'Bank Account', + 'payment_processed_through_wepay' => 'ACH payments will be processed using WePay.', + 'wepay_payment_tos_agree' => 'I agree to the WePay :terms and :privacy_policy.', + 'privacy_policy' => 'Privacy Policy', + 'wepay_payment_tos_agree_required' => 'You must agree to the WePay Terms of Service and Privacy Policy.', + 'payment_settings_supported_gateways' => 'These options are supported by the WePay, Stripe, and Braintree gateways.', + 'ach_email_prompt' => 'Please enter your email address:', + 'verification_pending' => 'Verification Pending', + + 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', + 'credit_card' => 'Credit Card', + 'bank_transfer' => 'Bank Transfer', + 'no_transaction_reference' => 'We did not recieve a payment transaction reference from the gateway.', + 'use_bank_on_file' => 'Use Bank on File', + 'auto_bill_email_message' => 'This invoice will automatically be billed to the payment method on file on the due date.', + 'bitcoin' => 'Bitcoin', + 'added_on' => 'Added :date', + 'failed_remove_payment_method' => 'Failed to remove the payment method', + 'gateway_exists' => 'This gateway already exists', + 'manual_entry' => 'Manual entry', + +); + +return $LANG; + +?> diff --git a/resources/lang/de/texts.php b/resources/lang/de/texts.php index 64c2222bab..d585ebe7ae 100644 --- a/resources/lang/de/texts.php +++ b/resources/lang/de/texts.php @@ -1,6 +1,6 @@ 'Organisation', @@ -25,8 +25,6 @@ return array( 'size_id' => 'Firmengröße', 'industry_id' => 'Kategorie', 'private_notes' => 'Notizen', - - // invoice 'invoice' => 'Rechnung', 'client' => 'Kunde', 'invoice_date' => 'Rechnungsdatum', @@ -50,7 +48,6 @@ return array( 'invoice_design_id' => 'Design', 'terms' => 'Bedingungen', 'your_invoice' => 'Ihre Rechnung', - 'remove_contact' => 'Kontakt löschen', 'add_contact' => 'Kontakt hinzufügen', 'create_new_client' => 'Einen neuen Kunden erstellen', @@ -74,8 +71,6 @@ return array( 'settings' => 'Einstellungen', 'enable_invoice_tax' => 'Ermögliche das Bestimmen einer Rechnungssteuer', 'enable_line_item_tax' => 'Ermögliche das Bestimmen von Steuern für Belegpositionen', - - // navigation 'dashboard' => 'Dashboard', 'clients' => 'Kunden', 'invoices' => 'Rechnungen', @@ -100,8 +95,6 @@ return array( 'provide_email' => 'Bitte gib eine gültige E-Mail-Adresse an', 'powered_by' => 'Powered by', 'no_items' => 'Keine Objekte', - - // recurring invoices 'recurring_invoices' => 'Wiederkehrende Rechnungen', 'recurring_help' => 'Sende deinem Kunden wöchentlich, zwei mal im Monat, monatlich, vierteljährlich oder jährlich automatisch die gleiche Rechnung.
Benutze :MONTH, :QUARTER oder :YEAR für ein dynamisches Datum. Grundlegende Mathematik funktioniert genauso gut, zum Beispiel :MONTH-1.
@@ -111,8 +104,6 @@ return array(Wir benutzen zur deklarativen Definition der Rechnungsdesigns pdfmake. Der pdfmake playground bietet Gelegenheit die Bibliothek in Aktion zu sehen.
-Mit der dot notation kann auf Kind-Eigenschaften zugegriffen werden. Für den Kundennamen kann man zum Beispiel $client.name
benutzen.
Wenn du Hilfe brauchst schreibe uns gern im Support Forum (Englisch).
', - + 'customize_help' => 'We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
+You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', 'invoice_due_date' => 'Fällig am', 'quote_due_date' => 'Gültig bis', 'valid_until' => 'Gültig bis', @@ -762,15 +670,12 @@ return array( 'status_partial' => 'Teilweise', 'status_paid' => 'Bezahlt', 'show_line_item_tax' => 'Steuern für Belegpositionen in der jeweiligen Zeile anzeigen', - 'iframe_url' => 'Webseite', 'iframe_url_help1' => 'Kopiere den folgenden Code in eine Seite auf deiner Website.', 'iframe_url_help2' => 'Du kannst diese Funktion testen, in dem du für eine Rechnung \'Als Empfänger betrachten\'. anklickst.', - 'auto_bill' => 'Auto-Rechnung', 'military_time' => '24-Stunden-Zeit', 'last_sent' => 'Zuletzt versendet', - 'reminder_emails' => 'Erinnerungs-Emails', 'templates_and_reminders' => 'Vorlagen & Erinnerungen', 'subject' => 'Betreff', @@ -782,15 +687,12 @@ return array( 'reminder_subject' => 'Erinnerung: Rechnung :invoice von :account', 'reset' => 'Zurücksetzen', 'invoice_not_found' => 'Die gewünschte Rechnung ist nicht verfügbar', - 'referral_program' => 'Referral Program', 'referral_code' => 'Referral Code', 'last_sent_on' => 'Zuletzt versendet am :date', - 'page_expire' => 'Diese Seite wird bald ablaufen, :click_here um weiter zu arbeiten', 'upcoming_quotes' => 'Kommende Angebote', 'expired_quotes' => 'Abgelaufene Angebote', - 'sign_up_using' => 'Anmelden mit', 'invalid_credentials' => 'Diese Zugangsdaten können wir nicht finden.', 'show_all_options' => 'Zeige alle Optionen', @@ -799,17 +701,10 @@ return array( 'disable' => 'Deaktivieren', 'invoice_quote_number' => 'Rechnungs- und Angebotsnummern', 'invoice_charges' => 'Rechnungsgebühren', - - 'invitation_status' => [ - 'sent' => 'E-Mail versendet', - 'opened' => 'E-Mail geöffnet', - 'viewed' => 'Rechnung angesehen', - ], 'notification_invoice_bounced' => 'Die Rechnung :invoice an :contact konnte nicht zugestellt werden.', 'notification_invoice_bounced_subject' => 'Rechnung :invoice nicht zugestellt.', 'notification_quote_bounced' => 'Das Angebot :invoice an :contact konnte nicht zugestellt werden.', 'notification_quote_bounced_subject' => 'Angebot :invoice wurde nicht zugestellt.', - 'custom_invoice_link' => 'Manueller Rechnungs-Link', 'total_invoiced' => 'Rechnungs-Betrag', 'open_balance' => 'Offener Betrag', @@ -817,15 +712,12 @@ return array( 'basic_settings' => 'Allgemeine Einstellungen', 'pro' => 'Pro', 'gateways' => 'Zahlungs-Gateways', - 'next_send_on' => 'Nächster Versand: :date', 'no_longer_running' => 'Diese Rechnung wird momentan nicht automatisch erstellt.', 'general_settings' => 'Allgemeine Einstellungen', 'customize' => 'Anpassen', - 'oneclick_login_help' => 'Verbinde ein Benutzerkonto, um dich ohne Passwort anzumelden', 'referral_code_help' => 'Verdiene Geld, wenn du unsere App online teilst', - 'enable_with_stripe' => 'Enable | Requires Stripe', 'tax_settings' => 'Steuer-Einstellungen', 'create_tax_rate' => 'Neuer Steuersatz', @@ -836,7 +728,6 @@ return array( 'archived_tax_rate' => 'Steuersatz archiviert', 'default_tax_rate_id' => 'Standard-Steuersatz', 'tax_rate' => 'Steuersatz', - 'recurring_hour' => 'Wiederholende Stunde', 'pattern' => 'Schema', 'pattern_help_title' => 'Schema-Hilfe', @@ -847,7 +738,6 @@ return array( 'invoice_counter' => 'Rechnungszähler', 'quote_counter' => 'Angebotszähler', 'type' => 'Typ', - 'activity_1' => ':user erstellte Kunde :client', 'activity_2' => ':user archivierte Kunde :client', 'activity_3' => ':user löschte Kunde :client', @@ -877,7 +767,16 @@ return array( 'activity_27' => ':user stellte Zahlung :payment wieder her', 'activity_28' => ':user stellte Guthaben :credit wieder her', 'activity_29' => ':contact akzeptierte Angebot :quote', - + 'activity_30' => ':user created :vendor', + 'activity_31' => ':user created :vendor', + 'activity_32' => ':user created :vendor', + 'activity_33' => ':user created :vendor', + 'activity_34' => ':user created expense :expense', + 'activity_35' => ':user created :vendor', + 'activity_36' => ':user created :vendor', + 'activity_37' => ':user created :vendor', + 'activity_42' => ':user erstellte Aufgabe ":task"', + 'activity_43' => ':user aktualisierte Aufgabe ":task"', 'payment' => 'Zahlung', 'system' => 'System', 'signature' => 'Email-Signatur', @@ -885,10 +784,9 @@ return array( 'quote_terms' => 'Angebotsbedingungen', 'default_quote_terms' => 'Standard-Angebotsbedingungen', 'default_invoice_terms' => 'Standard-Rechnungsbedingungen', - 'default_invoice_footer' => 'Standard-Rechnungsfußzeile', + 'default_invoice_footer' => 'Standard-Fußzeile festlegen', 'quote_footer' => 'Angebots-Fußzeile', 'free' => 'Free', - 'quote_is_approved' => 'Dieses Angebot ist angenommen', 'apply_credit' => 'Guthaben anwenden', 'system_settings' => 'Systemeinstellungen', @@ -906,7 +804,6 @@ return array( 'restored_recurring_invoice' => 'Wiederkehrende Rechnung erfolgreich wiederhergestellt', 'archived' => 'Archiviert', 'untitled_account' => 'Unbenannte Firma', - 'before' => 'Vor', 'after' => 'Nach', 'reset_terms_help' => 'Auf die Standardzahlungsbedingungen des Kontos zurücksetzen', @@ -915,7 +812,6 @@ return array( 'user' => 'Benutzer', 'country' => 'Land', 'include' => 'Hinzufügen', - 'logo_too_large' => 'Ihr Logo ist nur :size. Um eine bessere Darstellung im PDF Dokument zu erhalten, empfehlen wir ein Bild größer als 200KB', 'import_freshbooks' => 'Importiere von FreshBooks', 'import_data' => 'Importiere Daten', @@ -926,16 +822,6 @@ return array( 'task_file' => 'Task File', 'no_mapper' => 'Kein gültiges Mapping für die Datei', 'invalid_csv_header' => 'Ungültiger CSV Header', - - 'email_errors' => [ - 'inactive_client' => 'Emails können nicht zu inaktiven Kunden gesendet werden', - 'inactive_contact' => 'Emails können nicht zu inaktiven Kontakten gesendet werden', - 'inactive_invoice' => 'Emails können nicht zu inaktiven Rechnungen gesendet werden', - 'user_unregistered' => 'Bitte registrieren Sie sich um Emails zu versenden', - 'user_unconfirmed' => 'Bitte bestätigen Sie Ihr Konto um Emails zu senden', - 'invalid_contact_email' => 'Ungültige Kontakt Email Adresse', - ], - 'client_portal' => 'Kunden-Portal', 'admin' => 'Admin', 'disabled' => 'Disabled', @@ -944,11 +830,9 @@ return array( 'invoice_will_create' => 'Kunde wird erstellt', 'invoices_will_create' => 'Rechnung wird erstellt', 'failed_to_import' => 'Die folgenden Daten konnten nicht importiert werden. Entweder sind diese bereits vorhanden oder es fehlen benötigte Felder.', - 'publishable_key' => 'Öffentlicher Schlüssel', 'secret_key' => 'Geheimer Schlüssel', 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', - 'email_design' => 'Email Design', 'due_by' => 'Fällig am :date', 'enable_email_markup' => 'Enable Markup', @@ -960,7 +844,6 @@ return array( 'plain' => 'Einfach', 'light' => 'Hell', 'dark' => 'Dunkel', - 'industry_help' => 'Used to provide comparisons against the averages of companies of similar size and industry.', 'subdomain_help' => 'Customize the invoice link subdomain or display the invoice on your own website.', 'invoice_number_help' => 'Specify a prefix or use a custom pattern to dynamically set the invoice number.', @@ -969,8 +852,6 @@ return array( 'custom_account_fields_helps' => 'Add a label and value to the company details section of the PDF.', 'custom_invoice_fields_helps' => 'Add a text input to the invoice create/edit page and display the label and value on the PDF.', 'custom_invoice_charges_helps' => 'Add a text input to the invoice create/edit page and include the charge in the invoice subtotals.', - 'color_help' => 'Note: the primary color is also used in the client portal and custom email designs.', - 'token_expired' => 'Validation token was expired. Please try again.', 'invoice_link' => 'Link zur Rechnung', 'button_confirmation_message' => 'Bitte klicken um Ihre Email-Adresse zu bestätigen.', @@ -979,7 +860,6 @@ return array( 'created_invoices' => ':count Rechnung(en) erfolgreich erstellt', 'next_invoice_number' => 'Die nächste Rechnungsnummer ist :number.', 'next_quote_number' => 'Die nächste Angebotsnummer ist :number.', - 'days_before' => 'Tage vorher', 'days_after' => 'Tage danach', 'field_due_date' => 'Fälligkeitsdatum', @@ -987,11 +867,7 @@ return array( 'schedule' => 'Zeitgesteuert', 'email_designs' => 'Email Designs', 'assigned_when_sent' => 'Assigned when sent', - - 'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.', 'white_label_purchase_link' => 'Purchase a white label license', - - // Expense / vendor 'expense' => 'Ausgabe', 'expenses' => 'Ausgaben', 'new_expense' => 'Neue Ausgabe', @@ -1008,10 +884,8 @@ return array( 'archived_expense' => 'Ausgabe erfolgreich archiviert', 'deleted_expenses' => ' Ausgaben erfolgreich gelöscht', 'archived_expenses' => 'Ausgaben erfolgreich archiviert', - - // Expenses 'expense_amount' => 'Ausgabensumme', - 'expense_balance' => 'Ausgabendifferenz', // don't know if this is a good translation. + 'expense_balance' => 'Ausgabendifferenz', 'expense_date' => 'Ausgabendatum', 'expense_should_be_invoiced' => 'Soll diese Ausgabe in Rechnung gestellt werden?', 'public_notes' => 'Öffentliche Notizen', @@ -1019,7 +893,7 @@ return array( 'exchange_rate' => 'Wechselkurs', 'yes' => 'Ja', 'no' => 'Nein', - 'should_be_invoiced' => 'Should be invoiced', //??? + 'should_be_invoiced' => 'Should be invoiced', 'view_expense' => 'Ausgabe # :expense ansehen', 'edit_expense' => 'Ausgabe Bearbeiten', 'archive_expense' => 'Ausgabe Archivieren', @@ -1027,22 +901,18 @@ return array( 'view_expense_num' => 'Ausgabe # :expense', 'updated_expense' => 'Ausgabe erfolgreich aktualisiert', 'created_expense' => 'Ausgabe erfolgreich erstellt', - 'enter_expense' => 'Ausgabe Eingeben', + 'enter_expense' => 'Ausgabe eingeben', 'view' => 'View', 'restore_expense' => 'Ausgabe Wiederherstellen', 'invoice_expense' => 'Ausgabe in Rechnung stellen', 'expense_error_multiple_clients' => 'Die Ausgaben können nicht zu unterschiedlichen Kunden gehören', 'expense_error_invoiced' => 'Ausgabe wurde bereits in Rechnung gestellt', 'convert_currency' => 'Währung umrechnen', - - // Payment terms 'num_days' => 'Anzahl Tage', 'create_payment_term' => 'Create Payment Term', 'edit_payment_terms' => 'Edit Payment Term', 'edit_payment_term' => 'Edit Payment Term', 'archive_payment_term' => 'Archive Payment Term', - - // recurring due dates 'recurring_due_dates' => 'Recurring Invoice Due Dates', 'recurring_due_date_help' => 'Automatically sets a due date for the invoice.
Invoices on a monthly or yearly cycle set to be due on or before the day they are created will be due the next month. Invoices set to be due on the 29th or 30th in months that don\'t have that day will be due the last day of the month.
@@ -1070,22 +940,18 @@ return array( 'thursday' => 'Donnerstag', 'friday' => 'Freitag', 'saturday' => 'Samstag', - - // Fonts 'header_font_id' => 'Header-Schriftart', 'body_font_id' => 'Body-Schriftart', 'color_font_help' => 'Info: Die primäre Farbe und Schriftarten werden auch im Kundenportal und im individuellen Mail-Design verwendet.', - 'live_preview' => 'Live-Voransicht', 'invalid_mail_config' => 'Unable to send email, please check that the mail settings are correct.', - 'invoice_message_button' => 'Um Ihre Rechnung über :amount zu sehen, klicken Sie die Schaltfläche unten.', 'quote_message_button' => 'Um Ihr Angebot über :amount zu sehen, klicken Sie die Schaltfläche unten.', 'payment_message_button' => 'Vielen Dank für Ihre Zahlung von :amount.', 'payment_type_direct_debit' => 'Einzugsermächtigung', 'bank_accounts' => 'Bankverbindungen', 'add_bank_account' => 'Bankverbindung hinzufügen', - 'setup_account' => 'Account einrichten', // I hope here is not meant "bank account". I translated "Account". + 'setup_account' => 'Account einrichten', 'import_expenses' => 'Ausgaben importieren', 'bank_id' => 'bank', 'integration_type' => 'Integrations-Typ', @@ -1095,12 +961,11 @@ return array( 'archived_bank_account' => 'Bankverbindung erfolgreich archiviert', 'created_bank_account' => 'Bankverbindung erfolgreich erstellt', 'validate_bank_account' => 'Bankverbindung bestätigen', - 'bank_accounts_help' => 'Fügen Sie eine Bankverbindung hinzu, um Ausgaben automatisch zu importieren und Lieferanten zu erstellen. Unterstützt American Express und 400+ US-Banken.', 'bank_password_help' => 'Info: Ihr Passwort wird sicher übertragen und zu keiner Zeit auf unseren Servern gespeichert.', 'bank_password_warning' => 'Warnung: Ihr Passwort könnte in Klartext übertragen werden, wir empfehlen Ihnen HTTPS zu verwenden.', 'username' => 'Benutzername', - 'account_number' => 'Account Number', // bank account?? - 'account_name' => 'Account Name', // bank account?? + 'account_number' => 'Account Number', + 'account_name' => 'Account Name', 'bank_account_error' => 'Failed to retreive account details, please check your credentials.', 'status_approved' => 'Approved', 'quote_settings' => 'Quote Settings', @@ -1109,7 +974,6 @@ return array( 'validate' => 'Validate', 'info' => 'Info', 'imported_expenses' => 'Successfully created :count_vendors vendor(s) and :count_expenses expense(s)', - 'iframe_url_help3' => 'Note: if you plan on accepting credit cards details we strongly recommend enabling HTTPS on your site.', 'expense_error_multiple_currencies' => 'The expenses can\'t have different currencies.', 'expense_error_mismatch_currencies' => 'The client\'s currency does not match the expense currency.', @@ -1130,7 +994,28 @@ return array( 'trial_call_to_action' => 'Kostenlose Probezeit starten', 'trial_success' => 'Erfolgreich eine 2-Wochen Testversion aktiviert', 'overdue' => 'Überfällig', - 'white_label_text' => 'Kaufen Sie eine 1 Jahres Whitelabel Lizenz zum Preis von $'.WHITE_LABEL_PRICE.' um das Invoice Ninja Branding vom Kundenportal zu entfernen und unser Projekt zu unterstützen.', + + + 'white_label_text' => 'Kaufen Sie eine 1 Jahres Whitelabel Lizenz zum Preis von $:price um das Invoice Ninja Branding vom Kundenportal zu entfernen und unser Projekt zu unterstützen.', + 'user_email_footer' => 'Um deine E-Mail-Benachrichtigungen anzupassen besuche bitte :link', + 'reset_password_footer' => 'Wenn du das Zurücksetzen des Passworts nicht beantragt hast, benachrichtige bitte unseren Support: :email', + 'limit_users' => 'Entschuldige, das würde das Limit von :limit Benutzern überschreiten', + 'more_designs_self_host_header' => 'Erhalte 6 zusätzliche Rechnungsdesigns für nur $:price', + 'old_browser' => 'Bitte verwenden Sie einen neueren Browser', + 'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.', + 'bank_accounts_help' => 'Fügen Sie eine Bankverbindung hinzu, um Ausgaben automatisch zu importieren und Lieferanten zu erstellen. Unterstützt American Express und 400+ US-Banken.', + + 'pro_plan_remove_logo' => ':link, um das InvoiceNinja-Logo zu entfernen, indem du dem Pro Plan beitrittst', + 'pro_plan_remove_logo_link' => 'Klicke hier', + 'invitation_status_sent' => 'E-Mail versendet', + 'invitation_status_opened' => 'E-Mail geöffnet', + 'invitation_status_viewed' => 'Rechnung angesehen', + 'email_error_inactive_client' => 'Emails können nicht zu inaktiven Kunden gesendet werden', + 'email_error_inactive_contact' => 'Emails können nicht zu inaktiven Kontakten gesendet werden', + 'email_error_inactive_invoice' => 'Emails können nicht zu inaktiven Rechnungen gesendet werden', + 'email_error_user_unregistered' => 'Bitte registrieren Sie sich um Emails zu versenden', + 'email_error_user_unconfirmed' => 'Bitte bestätigen Sie Ihr Konto um Emails zu senden', + 'email_error_invalid_contact_email' => 'Ungültige Kontakt Email Adresse', 'navigation' => 'Navigation', 'list_invoices' => 'Liste Rechnungen', @@ -1149,26 +1034,24 @@ return array( 'new_product' => 'Neues Produkt', 'new_tax_rate' => 'Neuer Steuersatz', 'invoiced_amount' => 'Rechnungsbetrag', - 'invoice_item_fields' => 'Rechnungspositions Feld', + 'invoice_item_fields' => 'Rechnungspositionsfeld', 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', 'recurring_invoice_number' => 'Wiederkehrende Rechnungsnummer', 'recurring_invoice_number_prefix_help' => 'Geben Sie einen Präfix für wiederkehrende Rechnungen an. Standard ist \'R\'.', - 'enable_client_portal' => 'Dashboard', - 'enable_client_portal_help' => 'Zeige das Dashboard im Kundenportal.', // Client Passwords 'enable_portal_password'=>'Passwortgeschützte Rechnungen', 'enable_portal_password_help'=>'Erlaubt Ihnen ein Passwort für jeden Kontakt zu erstellen. Wenn ein Passwort erstellt wurde, muss der Kunde dieses eingeben, bevor er eine Rechnung ansehen darf.', 'send_portal_password'=>'Erstelle das Passwort automatisch', 'send_portal_password_help'=>'Wenn kein Passwort gesetzt wurde, wird eins generiert und mit der ersten Rechnung verschickt.', - + 'expired' => 'Abgelaufen', 'invalid_card_number' => 'Die Kreditkartennummer ist nicht gültig.', 'invalid_expiry' => 'Das Ablaufdatum ist nicht gültig.', 'invalid_cvv' => 'Der CVV Code ist nicht gültig.', 'cost' => 'Kosten', 'create_invoice_for_sample' => 'Hinweis: Erstellen Sie Ihre erste Rechnung um hier eine Vorschau zu sehen.', - + // User Permissions 'owner' => 'Eigentümer', 'administrator' => 'Administrator', @@ -1186,8 +1069,8 @@ return array( 'create_all_help' => 'Allow user to create and modify records', 'view_all_help' => 'Allow user to view records they didn\'t create', 'edit_all_help' => 'Allow user to modify records they didn\'t create', - 'view_payment' => 'Zahlung zeigen', - + 'view_payment' => 'Zahlung zeigen', + 'january' => 'Januar', 'february' => 'Februar', 'march' => 'März', @@ -1202,41 +1085,39 @@ return array( 'december' => 'Dezember', // Documents - 'documents_header' => 'Documents:', - 'email_documents_header' => 'Documents:', + 'documents_header' => 'Dokumente:', + 'email_documents_header' => 'Dokumente:', 'email_documents_example_1' => 'Widgets Receipt.pdf', 'email_documents_example_2' => 'Final Deliverable.zip', - 'invoice_documents' => 'Documents', - 'expense_documents' => 'Attached Documents', - 'invoice_embed_documents' => 'Embed Documents', + 'invoice_documents' => 'Dokumente', + 'expense_documents' => 'Angehängte Dokumente', + 'invoice_embed_documents' => 'Dokumente einbetten', 'invoice_embed_documents_help' => 'Include attached images in the invoice.', - 'document_email_attachment' => 'Attach Documents', - 'download_documents' => 'Download Documents (:size)', + 'document_email_attachment' => 'Dokumente anhängen', + 'download_documents' => 'Dokumente herunterladen (:size)', 'documents_from_expenses' => 'From Expenses:', - 'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage - 'DefaultMessage' => 'Drop files or click to upload', - 'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.', - 'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.', - 'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', - 'InvalidFileType' => 'You can\'t upload files of this type.', - 'ResponseError' => 'Server responded with {{statusCode}} code.', - 'CancelUpload' => 'Cancel upload', - 'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?', - 'RemoveFile' => 'Remove file', - ), - 'documents' => 'Documents', + 'dropzone_default_message' => 'Drop files or click to upload', + 'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.', + 'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.', + 'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', + 'dropzone_invalid_file_type' => 'You can\'t upload files of this type.', + 'dropzone_response_error' => 'Server responded with {{statusCode}} code.', + 'dropzone_cancel_upload' => 'Cancel upload', + 'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?', + 'dropzone_remove_file' => 'Remove file', + 'documents' => 'Dokumente', 'document_date' => 'Document Date', 'document_size' => 'Size', - 'enable_client_portal' => 'Client Portal', - 'enable_client_portal_help' => 'Show/hide the client portal.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Zeige das Dashboard im Kundenportal.', 'enable_client_portal_dashboard' => 'Dashboard', 'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.', - + // Plans 'account_management' => 'Account Management', 'plan_status' => 'Plan Status', - + 'plan_upgrade' => 'Upgrade', 'plan_change' => 'Change Plan', 'pending_change_to' => 'Changes To', @@ -1266,9 +1147,9 @@ return array( 'plan_paid' => 'Term Started', 'plan_started' => 'Plan Started', 'plan_expires' => 'Plan Expires', - + 'white_label_button' => 'White Label', - + 'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', 'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.', 'enterprise_plan_product' => 'Enterprise Plan', @@ -1279,14 +1160,543 @@ return array( 'plan_pending_monthly' => 'Will switch to monthly on :date', 'plan_refunded' => 'A refund has been issued.', - 'live_preview' => 'Live Preview', + 'live_preview' => 'Live-Voransicht', 'page_size' => 'Page Size', 'live_preview_disabled' => 'Live preview has been disabled to support selected font', 'invoice_number_padding' => 'Padding', 'preview' => 'Preview', 'list_vendors' => 'List Vendors', 'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.', - 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.', + 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments, :link to see the full list of features.', 'return_to_app' => 'Return to app', - + + // Payment updates + 'refund_payment' => 'Zahlung erstatten', + 'refund_max' => 'Max:', + 'refund' => 'Erstattung', + 'are_you_sure_refund' => 'Ausgewählte Zahlungen erstatten?', + 'status_pending' => 'Ausstehend', + 'status_completed' => 'Abgeschlossen', + 'status_failed' => 'Fehlgeschlagen', + 'status_partially_refunded' => 'Teilweise erstattet', + 'status_partially_refunded_amount' => ':amount erstattet', + 'status_refunded' => 'Erstattet', + 'status_voided' => 'Abgebrochen', + 'refunded_payment' => 'Zahlung erstattet', + 'activity_39' => ':user cancelled a :payment_amount payment (:payment)', + 'activity_40' => ':user refunded :adjustment of a :payment_amount payment (:payment)', + 'card_expiration' => 'Exp: :expires', + + 'card_creditcardother' => 'Unbekannt', + 'card_americanexpress' => 'American Express', + 'card_carteblanche' => 'Carte Blanche', + 'card_unionpay' => 'UnionPay', + 'card_diners' => 'Diners Club', + 'card_discover' => 'Discover', + 'card_jcb' => 'JCB', + 'card_laser' => 'Laser', + 'card_maestro' => 'Maestro', + 'card_mastercard' => 'MasterCard', + 'card_solo' => 'Solo', + 'card_switch' => 'Switch', + 'card_visacard' => 'Visa', + 'card_ach' => 'ACH', + + 'payment_type_stripe' => 'Stripe', + 'ach' => 'ACH', + 'enable_ach' => 'Enable ACH', + 'stripe_ach_help' => 'ACH support must also be enabled at Stripe.', + 'ach_disabled' => 'Another gateway is already configured for direct debit.', + + 'plaid' => 'Plaid', + 'client_id' => 'Kundennummer', + 'secret' => 'Passwort', + 'public_key' => 'Öffentlicher Schlüssel', + 'plaid_optional' => '(optional)', + 'plaid_environment_help' => 'When a Stripe test key is given, Plaid\'s development environement (tartan) will be used.', + 'other_providers' => 'Andere Anbieter', + 'country_not_supported' => 'Dieses Land wird nicht unterstützt.', + 'invalid_routing_number' => 'Die Bankleitzahl ist nicht gültig.', + 'invalid_account_number' => 'Die Kontonummer ist nicht gültig.', + 'account_number_mismatch' => 'Die Kontonummern stimmen nicht überein.', + 'missing_account_holder_type' => 'Bitte wählen Sie ein Einzel- oder Firmenkonto aus.', + 'missing_account_holder_name' => 'Bitten geben Sie den Namen des Kontoinhabers ein.', + 'routing_number' => 'Bankleitzahl', + 'confirm_account_number' => 'Kontonummer bestätigen', + 'individual_account' => 'Einzelkonto', + 'company_account' => 'Firmenkonto', + 'account_holder_name' => 'Name des Kontoinhabers', + 'add_account' => 'Konto hinzufügen', + 'payment_methods' => 'Zahlungsarten', + 'complete_verification' => 'Überprüfung abschließen', + 'verification_amount1' => 'Betrag 1', + 'verification_amount2' => 'Betrag 2', + 'payment_method_verified' => 'Überprüfung erfolgreich abgeschlossen', + 'verification_failed' => 'Überprüfung fehlgeschlagen', + 'remove_payment_method' => 'Zahlungsart entfernen', + 'confirm_remove_payment_method' => 'Wollen Sie diese Zahlungart wirklich entfernen?', + 'remove' => 'Entfernen', + 'payment_method_removed' => 'Zahlungsart entfernt.', + 'bank_account_verification_help' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. Please enter the amounts below.', + 'bank_account_verification_next_steps' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. + Once you have the amounts, come back to this payment methods page and click "Complete Verification" next to the account.', + 'unknown_bank' => 'Bank unbekannt', + 'ach_verification_delay_help' => 'Nach der Überprüfung können Sie das Konto sofort benutzen. Die Überprüfung dauert in der Regel 1-2 Arbeitstage.', + 'add_credit_card' => 'Kreditkarte hinzufügen', + 'payment_method_added' => 'Zahlungsart hinzugefügt.', + 'use_for_auto_bill' => 'Use For Autobill', + 'used_for_auto_bill' => 'Autobill Payment Method', + 'payment_method_set_as_default' => 'Set Autobill payment method.', + 'activity_41' => ':payment_amount payment (:payment) failed', + 'webhook_url' => 'Webhook URL', + 'stripe_webhook_help' => 'Sie müssen :link', + 'stripe_webhook_help_link_text' => 'add this URL as an endpoint at Stripe', + 'payment_method_error' => 'There was an error adding your payment methd. Please try again later.', + 'notification_invoice_payment_failed_subject' => 'Zahlung für Rechnung :invoice fehlgeschlagen', + 'notification_invoice_payment_failed' => 'A payment made by client :client towards Invoice :invoice failed. The payment has been marked as failed and :amount has been added to the client\'s balance.', + 'link_with_plaid' => 'Konto sofort mit Plaid verknüpfen', + 'link_manually' => 'Manuel verbinden', + 'secured_by_plaid' => 'Secured by Plaid', + 'plaid_linked_status' => 'Ihr Konto bei :bank', + 'add_payment_method' => 'Zahlungsart hinzufügen', + 'account_holder_type' => 'Art des Kontoinhabers', + 'ach_authorization' => 'I authorize :company to use my bank account for future payments and, if necessary, electronically credit my account to correct erroneous debits. I understand that I may cancel this authorization at any time by removing the payment method or by contacting :email.', + 'ach_authorization_required' => 'You must consent to ACH transactions.', + 'off' => 'Aus', + 'opt_in' => 'Anmelden', + 'opt_out' => 'Abmelden', + 'always' => 'Immer', + 'opted_out' => 'Abgemeldet', + 'opted_in' => 'Angemeldet', + 'manage_auto_bill' => 'Manage Auto-bill', + 'enabled' => 'Aktiviert', + 'paypal' => 'PayPal', + 'braintree_enable_paypal' => 'PayPal Zahlungen mittels BrainTree aktivieren', + 'braintree_paypal_disabled_help' => 'The PayPal gateway is processing PayPal payments', + 'braintree_paypal_help' => 'Sie müssen auch :link', + 'braintree_paypal_help_link_text' => 'PayPal Konto mit BrainTree verknüpfen', + 'token_billing_braintree_paypal' => 'Zahlungsdetails speichern', + 'add_paypal_account' => 'PayPal Konto hinzufügen', + + + 'no_payment_method_specified' => 'Keine Zahlungsart angegeben', + 'chart_type' => 'Diagrammtyp', + 'format' => 'Format', + 'import_ofx' => 'OFX importieren', + 'ofx_file' => 'OFX Datei', + 'ofx_parse_failed' => 'Einlesen der OFX Datei fehlgeschlagen', + + // WePay + 'wepay' => 'WePay', + 'sign_up_with_wepay' => 'Mit WePay anmelden', + 'use_another_provider' => 'Anderen Anbieter verwenden', + 'company_name' => 'Firmenname', + 'wepay_company_name_help' => 'Das erscheint auf den Kontoauszügen des Kunden.', + 'wepay_description_help' => 'Zweck des Kontos.', + 'wepay_tos_agree' => 'I agree to the :link.', + 'wepay_tos_link_text' => 'WePay Servicebedingungen', + 'resend_confirmation_email' => 'Bestätigungsemail nochmal senden', + 'manage_wepay_account' => 'WePay Konto verwalten', + 'action_required' => 'Handeln erforderlich', + 'finish_setup' => 'Setup abschließen', + 'created_wepay_confirmation_required' => 'Bitte prüfen Sie Ihr E-Mail Konto und bestätigen Sie Ihre E-Mail Adresse bei WePay.', + 'switch_to_wepay' => 'Wechsel zu WePay', + 'switch' => 'Switch', + 'restore_account_gateway' => 'Restore Gateway', + 'restored_account_gateway' => 'Successfully restored gateway', + 'united_states' => 'Vereinigte Staaten von Amerika', + 'canada' => 'Kanada', + 'accept_debit_cards' => 'Debitkarten aktzeptieren', + 'debit_cards' => 'Debitkarten', + + 'warn_start_date_changed' => 'The next invoice will be sent on the new start date.', + 'original_start_date' => 'Original start date', + 'new_start_date' => 'New start date', + 'security' => 'Security', + 'see_whats_new' => 'See what\'s new in v:version', + 'wait_for_upload' => 'Please wait for the document upload to complete.', + 'upgrade_for_permissions' => 'Upgrade to our Enterprise plan to enable permissions.', + 'enable_second_tax_rate' => 'Enable specifying a second tax rate', + 'payment_file' => 'Payment File', + 'expense_file' => 'Expense File', + 'product_file' => 'Product File', + 'import_products' => 'Import Products', + 'products_will_create' => 'products will be created.', + 'product_key' => 'Product', + 'created_products' => 'Successfully created :count product(s)', + 'export_help' => 'Use JSON if you plan to import the data into Invoice Ninja.', + 'JSON_file' => 'JSON File', + + 'view_dashboard' => 'View Dashboard', + 'client_session_expired' => 'Session Expired', + 'client_session_expired_message' => 'Your session has expired. Please click the link in your email again.', + + 'auto_bill_notification' => 'This invoice will automatically be billed to your :payment_method on file on :due_date.', + 'auto_bill_payment_method_bank_transfer' => 'bank account', + 'auto_bill_payment_method_credit_card' => 'credit card', + 'auto_bill_payment_method_paypal' => 'PayPal account', + 'auto_bill_notification_placeholder' => 'This invoice will automatically be billed to your credit card on file on the due date.', + 'payment_settings' => 'Payment Settings', + + 'on_send_date' => 'On send date', + 'on_due_date' => 'On due date', + 'auto_bill_ach_date_help' => 'ACH auto bill will always happen on the due date', + 'warn_change_auto_bill' => 'Due to NACHA rules, changes to this invoice may prevent ACH auto bill.', + + 'bank_account' => 'Bank Account', + 'payment_processed_through_wepay' => 'ACH payments will be processed using WePay.', + 'wepay_payment_tos_agree' => 'I agree to the WePay :terms and :privacy_policy.', + 'privacy_policy' => 'Privacy Policy', + 'wepay_payment_tos_agree_required' => 'You must agree to the WePay Terms of Service and Privacy Policy.', + 'payment_settings_supported_gateways' => 'These options are supported by the WePay, Stripe, and Braintree gateways.', + 'ach_email_prompt' => 'Please enter your email address:', + 'verification_pending' => 'Verification Pending', + + 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', + 'credit_card' => 'Credit Card', + 'bank_transfer' => 'Bank Transfer', + 'no_transaction_reference' => 'We did not recieve a payment transaction reference from the gateway.', + 'use_bank_on_file' => 'Use Bank on File', + 'auto_bill_email_message' => 'This invoice will automatically be billed to the payment method on file on the due date.', + 'bitcoin' => 'Bitcoin', + 'added_on' => 'Added :date', + 'failed_remove_payment_method' => 'Failed to remove the payment method', + 'gateway_exists' => 'This gateway already exists', + 'manual_entry' => 'Manual entry', + 'start_of_week' => 'Erster Tag der Woche', + + // Frequencies + 'freq_weekly' => 'wöchentlich', + 'freq_two_weeks' => 'zweiwöchentlich', + 'freq_four_weeks' => 'vierwöchentlich', + 'freq_monthly' => 'monatlich', + 'freq_three_months' => 'dreimonatlich', + 'freq_six_months' => 'halbjährlich', + 'freq_annually' => 'jährlich', + + // Payment types + 'payment_type_Apply Credit' => 'Kredit', + 'payment_type_Bank Transfer' => 'Überweisung', + 'payment_type_Cash' => 'Bar', + 'payment_type_Debit' => 'Guthaben', + 'payment_type_ACH' => 'ACH', + 'payment_type_Visa Card' => 'VISA', + 'payment_type_MasterCard' => 'MasterCard', + 'payment_type_American Express' => 'American Express', + 'payment_type_Discover Card' => 'Discover Card', + 'payment_type_Diners Card' => 'Diners Card', + 'payment_type_EuroCard' => 'EuroCard', + 'payment_type_Nova' => 'Nova', + 'payment_type_Credit Card Other' => 'Andere Kreditkarte', + 'payment_type_PayPal' => 'PayPal', + 'payment_type_Google Wallet' => 'Google Wallet', + 'payment_type_Check' => 'Scheck', + + // Industries + 'industry_Accounting & Legal' => 'Buchhaltung & Rechnungswesen', + 'industry_Advertising' => 'Werbung', + 'industry_Aerospace' => 'Luft- und Raumfahrt', + 'industry_Agriculture' => 'Landwirtschaft', + 'industry_Automotive' => 'Automobilbau', + 'industry_Banking & Finance' => 'Bank- und Finanzwesen', + 'industry_Biotechnology' => 'Biotechnologie', + 'industry_Broadcasting' => 'Rundfunk', + 'industry_Business Services' => 'Dienstleistungen', + 'industry_Commodities & Chemicals' => 'Handelsgüter und Chemikalien', + 'industry_Communications' => 'Kommunikation', + 'industry_Computers & Hightech' => 'Computer und Hochtechnologie', + 'industry_Defense' => 'Verteidigungsbereich', + 'industry_Energy' => 'Energie', + 'industry_Entertainment' => 'Unterhaltung', + 'industry_Government' => 'Regierungsbereich', + 'industry_Healthcare & Life Sciences' => 'Gesundheitswesen und Biowissenschaften', + 'industry_Insurance' => 'Versicherung', + 'industry_Manufacturing' => 'Herstellung', + 'industry_Marketing' => 'Marketing', + 'industry_Media' => 'Medien', + 'industry_Nonprofit & Higher Ed' => 'Nonprofit-Bereich', + 'industry_Pharmaceuticals' => 'Pharmazeutika', + 'industry_Professional Services & Consulting' => 'Unternehmensberatung', + 'industry_Real Estate' => 'Immobilien', + 'industry_Retail & Wholesale' => 'Einzel- und Großhandel', + 'industry_Sports' => 'Sport', + 'industry_Transportation' => 'Transport', + 'industry_Travel & Luxury' => 'Reisen und Luxus', + 'industry_Other' => 'Andere', + 'industry_Photography' => 'Fotografie', + + // Countries + 'country_Afghanistan' => '', + 'country_Albania' => 'Albanien', + 'country_Antarctica' => '', + 'country_Algeria' => 'Algerien', + 'country_American Samoa' => '', + 'country_Andorra' => '', + 'country_Angola' => '', + 'country_Antigua and Barbuda' => '', + 'country_Azerbaijan' => '', + 'country_Argentina' => 'Argentinien', + 'country_Australia' => '', + 'country_Austria' => '', + 'country_Bahamas' => '', + 'country_Bahrain' => '', + 'country_Bangladesh' => '', + 'country_Armenia' => '', + 'country_Barbados' => '', + 'country_Belgium' => '', + 'country_Bermuda' => '', + 'country_Bhutan' => '', + 'country_Bolivia, Plurinational State of' => '', + 'country_Bosnia and Herzegovina' => '', + 'country_Botswana' => '', + 'country_Bouvet Island' => '', + 'country_Brazil' => '', + 'country_Belize' => '', + 'country_British Indian Ocean Territory' => '', + 'country_Solomon Islands' => '', + 'country_Virgin Islands, British' => '', + 'country_Brunei Darussalam' => '', + 'country_Bulgaria' => '', + 'country_Myanmar' => '', + 'country_Burundi' => '', + 'country_Belarus' => '', + 'country_Cambodia' => '', + 'country_Cameroon' => '', + 'country_Canada' => '', + 'country_Cape Verde' => '', + 'country_Cayman Islands' => '', + 'country_Central African Republic' => '', + 'country_Sri Lanka' => '', + 'country_Chad' => '', + 'country_Chile' => '', + 'country_China' => '', + 'country_Taiwan, Province of China' => '', + 'country_Christmas Island' => '', + 'country_Cocos (Keeling) Islands' => '', + 'country_Colombia' => '', + 'country_Comoros' => '', + 'country_Mayotte' => '', + 'country_Congo' => '', + 'country_Congo, the Democratic Republic of the' => '', + 'country_Cook Islands' => '', + 'country_Costa Rica' => '', + 'country_Croatia' => '', + 'country_Cuba' => '', + 'country_Cyprus' => '', + 'country_Czech Republic' => '', + 'country_Benin' => '', + 'country_Denmark' => '', + 'country_Dominica' => '', + 'country_Dominican Republic' => '', + 'country_Ecuador' => '', + 'country_El Salvador' => '', + 'country_Equatorial Guinea' => '', + 'country_Ethiopia' => '', + 'country_Eritrea' => '', + 'country_Estonia' => '', + 'country_Faroe Islands' => '', + 'country_Falkland Islands (Malvinas)' => '', + 'country_South Georgia and the South Sandwich Islands' => '', + 'country_Fiji' => '', + 'country_Finland' => '', + 'country_Åland Islands' => '', + 'country_France' => 'Frankreich', + 'country_French Guiana' => '', + 'country_French Polynesia' => '', + 'country_French Southern Territories' => '', + 'country_Djibouti' => '', + 'country_Gabon' => '', + 'country_Georgia' => '', + 'country_Gambia' => '', + 'country_Palestinian Territory, Occupied' => '', + 'country_Germany' => 'Deutschland', + 'country_Ghana' => '', + 'country_Gibraltar' => '', + 'country_Kiribati' => '', + 'country_Greece' => '', + 'country_Greenland' => '', + 'country_Grenada' => '', + 'country_Guadeloupe' => '', + 'country_Guam' => '', + 'country_Guatemala' => '', + 'country_Guinea' => '', + 'country_Guyana' => '', + 'country_Haiti' => '', + 'country_Heard Island and McDonald Islands' => '', + 'country_Holy See (Vatican City State)' => '', + 'country_Honduras' => '', + 'country_Hong Kong' => '', + 'country_Hungary' => '', + 'country_Iceland' => '', + 'country_India' => '', + 'country_Indonesia' => '', + 'country_Iran, Islamic Republic of' => '', + 'country_Iraq' => '', + 'country_Ireland' => '', + 'country_Israel' => '', + 'country_Italy' => '', + 'country_Côte d\'Ivoire' => '', + 'country_Jamaica' => '', + 'country_Japan' => '', + 'country_Kazakhstan' => '', + 'country_Jordan' => '', + 'country_Kenya' => '', + 'country_Korea, Democratic People\'s Republic of' => '', + 'country_Korea, Republic of' => '', + 'country_Kuwait' => '', + 'country_Kyrgyzstan' => '', + 'country_Lao People\'s Democratic Republic' => '', + 'country_Lebanon' => '', + 'country_Lesotho' => '', + 'country_Latvia' => '', + 'country_Liberia' => '', + 'country_Libya' => '', + 'country_Liechtenstein' => '', + 'country_Lithuania' => '', + 'country_Luxembourg' => '', + 'country_Macao' => '', + 'country_Madagascar' => '', + 'country_Malawi' => '', + 'country_Malaysia' => '', + 'country_Maldives' => '', + 'country_Mali' => '', + 'country_Malta' => '', + 'country_Martinique' => '', + 'country_Mauritania' => '', + 'country_Mauritius' => '', + 'country_Mexico' => '', + 'country_Monaco' => '', + 'country_Mongolia' => '', + 'country_Moldova, Republic of' => '', + 'country_Montenegro' => '', + 'country_Montserrat' => '', + 'country_Morocco' => '', + 'country_Mozambique' => '', + 'country_Oman' => '', + 'country_Namibia' => '', + 'country_Nauru' => '', + 'country_Nepal' => '', + 'country_Netherlands' => '', + 'country_Curaçao' => '', + 'country_Aruba' => '', + 'country_Sint Maarten (Dutch part)' => '', + 'country_Bonaire, Sint Eustatius and Saba' => '', + 'country_New Caledonia' => '', + 'country_Vanuatu' => '', + 'country_New Zealand' => '', + 'country_Nicaragua' => '', + 'country_Niger' => '', + 'country_Nigeria' => '', + 'country_Niue' => '', + 'country_Norfolk Island' => '', + 'country_Norway' => '', + 'country_Northern Mariana Islands' => '', + 'country_United States Minor Outlying Islands' => '', + 'country_Micronesia, Federated States of' => '', + 'country_Marshall Islands' => '', + 'country_Palau' => '', + 'country_Pakistan' => '', + 'country_Panama' => '', + 'country_Papua New Guinea' => '', + 'country_Paraguay' => '', + 'country_Peru' => '', + 'country_Philippines' => '', + 'country_Pitcairn' => '', + 'country_Poland' => '', + 'country_Portugal' => '', + 'country_Guinea-Bissau' => '', + 'country_Timor-Leste' => '', + 'country_Puerto Rico' => '', + 'country_Qatar' => '', + 'country_Réunion' => '', + 'country_Romania' => '', + 'country_Russian Federation' => '', + 'country_Rwanda' => '', + 'country_Saint Barthélemy' => '', + 'country_Saint Helena, Ascension and Tristan da Cunha' => '', + 'country_Saint Kitts and Nevis' => '', + 'country_Anguilla' => '', + 'country_Saint Lucia' => '', + 'country_Saint Martin (French part)' => '', + 'country_Saint Pierre and Miquelon' => '', + 'country_Saint Vincent and the Grenadines' => '', + 'country_San Marino' => '', + 'country_Sao Tome and Principe' => '', + 'country_Saudi Arabia' => '', + 'country_Senegal' => '', + 'country_Serbia' => '', + 'country_Seychelles' => '', + 'country_Sierra Leone' => '', + 'country_Singapore' => '', + 'country_Slovakia' => '', + 'country_Viet Nam' => '', + 'country_Slovenia' => '', + 'country_Somalia' => '', + 'country_South Africa' => '', + 'country_Zimbabwe' => '', + 'country_Spain' => '', + 'country_South Sudan' => '', + 'country_Sudan' => '', + 'country_Western Sahara' => '', + 'country_Suriname' => '', + 'country_Svalbard and Jan Mayen' => '', + 'country_Swaziland' => '', + 'country_Sweden' => '', + 'country_Switzerland' => '', + 'country_Syrian Arab Republic' => '', + 'country_Tajikistan' => '', + 'country_Thailand' => '', + 'country_Togo' => '', + 'country_Tokelau' => '', + 'country_Tonga' => '', + 'country_Trinidad and Tobago' => '', + 'country_United Arab Emirates' => '', + 'country_Tunisia' => '', + 'country_Turkey' => '', + 'country_Turkmenistan' => '', + 'country_Turks and Caicos Islands' => '', + 'country_Tuvalu' => '', + 'country_Uganda' => '', + 'country_Ukraine' => '', + 'country_Macedonia, the former Yugoslav Republic of' => '', + 'country_Egypt' => '', + 'country_United Kingdom' => '', + 'country_Guernsey' => '', + 'country_Jersey' => '', + 'country_Isle of Man' => '', + 'country_Tanzania, United Republic of' => '', + 'country_United States' => '', + 'country_Virgin Islands, U.S.' => '', + 'country_Burkina Faso' => '', + 'country_Uruguay' => '', + 'country_Uzbekistan' => '', + 'country_Venezuela, Bolivarian Republic of' => '', + 'country_Wallis and Futuna' => '', + 'country_Samoa' => '', + 'country_Yemen' => '', + 'country_Zambi' => '', + + // Languages + 'lang_Brazilian Portuguese' => 'Brazilian Portuguese', + 'lang_Croatian' => 'Kroatisch', + 'lang_Czech' => 'Tschechisch', + 'lang_Danish' => 'Dänisch', + 'lang_Dutch' => 'Niederländisch', + 'lang_English' => 'Englisch', + 'lang_French' => 'Französisch', + 'lang_French - Canada' => 'French - Canada', + 'lang_German' => 'Deutsch', + 'lang_Italian' => 'Italian', + 'lang_Japanese' => 'Japanese', + 'lang_Lithuanian' => 'Lithuanian', + 'lang_Norwegian' => 'Norwegian', + 'lang_Polish' => 'Polish', + 'lang_Spanish' => 'Spanish', + 'lang_Spanish - Spain' => 'Spanish - Spain', + 'lang_Swedish' => 'Swedish', ); + +return $LANG; + +?> \ No newline at end of file diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index a6532a6eb9..4038ee96a2 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -1,6 +1,7 @@ 'Organization', 'name' => 'Name', 'website' => 'Website', @@ -386,7 +387,7 @@ $LANG = array( 'gateway_help_1' => ':link to sign up for Authorize.net.', 'gateway_help_2' => ':link to sign up for Authorize.net.', 'gateway_help_17' => ':link to get your PayPal API signature.', - 'gateway_help_27' => ':link to sign up for TwoCheckout.', + 'gateway_help_27' => ':link to sign up for 2Checkout.com. To ensure payments are tracked set :complete_link as the redirect URL under Account > Site Management in the 2Checkout portal.', 'more_designs' => 'More designs', 'more_designs_title' => 'Additional Invoice Designs', 'more_designs_cloud_header' => 'Go Pro for more invoice designs', @@ -444,11 +445,11 @@ $LANG = array( 'token_billing_3' => 'Opt-out - checkbox is shown and selected', 'token_billing_4' => 'Always', 'token_billing_checkbox' => 'Store credit card details', - 'view_in_stripe' => 'View in Stripe', - 'use_card_on_file' => 'Use card on file', + 'view_in_gateway' => 'View in :gateway', + 'use_card_on_file' => 'Use Card on File', 'edit_payment_details' => 'Edit payment details', 'token_billing' => 'Save card details', - 'token_billing_secure' => 'The data is stored securely by :stripe_link', + 'token_billing_secure' => 'The data is stored securely by :link', 'support' => 'Support', 'contact_information' => 'Contact Information', '256_encryption' => '256-Bit Encryption', @@ -654,8 +655,8 @@ $LANG = array( 'primary_user' => 'Primary User', 'help' => 'Help', 'customize_help' => 'We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
-To access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum.
', +You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', 'invoice_due_date' => 'Due Date', 'quote_due_date' => 'Valid Until', 'valid_until' => 'Valid Until', @@ -773,6 +774,8 @@ $LANG = array( 'activity_35' => ':user created :vendor', 'activity_36' => ':user created :vendor', 'activity_37' => ':user created :vendor', + 'activity_42' => ':user created task ":task"', + 'activity_43' => ':user updated task ":task"', 'payment' => 'Payment', 'system' => 'System', 'signature' => 'Email Signature', @@ -978,8 +981,8 @@ $LANG = array( 'first_page' => 'First page', 'all_pages' => 'All pages', 'last_page' => 'Last page', - 'all_pages_header' => 'Show header on', - 'all_pages_footer' => 'Show footer on', + 'all_pages_header' => 'Show Header on', + 'all_pages_footer' => 'Show Footer on', 'invoice_currency' => 'Invoice Currency', 'enable_https' => 'We strongly recommend using HTTPS to accept credit card details online.', 'quote_issued_to' => 'Quote issued to', @@ -992,40 +995,26 @@ $LANG = array( 'overdue' => 'Overdue', - 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', - 'user_email_footer' => 'To adjust your email notification settings please visit '.SITE_URL.'/settings/notifications', - 'reset_password_footer' => 'If you did not request this password reset please email our support: '.CONTACT_EMAIL, - 'limit_users' => 'Sorry, this will exceed the limit of '.MAX_NUM_USERS.' users', - 'more_designs_self_host_header' => 'Get 6 more invoice designs for just $'.INVOICE_DESIGNS_PRICE, - 'old_browser' => 'Please use a newer browser', - 'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.', - 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', - 'security' => [ - 'too_many_attempts' => 'Too many attempts. Try again in few minutes.', - 'wrong_credentials' => 'Incorrect email or password.', - 'confirmation' => 'Your account has been confirmed!', - 'wrong_confirmation' => 'Wrong confirmation code.', - 'password_forgot' => 'The information regarding password reset was sent to your email.', - 'password_reset' => 'Your password has been changed successfully.', - 'wrong_password_reset' => 'Invalid password. Try again', - ], - 'pro_plan' => [ - 'remove_logo' => ':link to remove the Invoice Ninja logo by joining the Pro Plan', - 'remove_logo_link' => 'Click here', - ], - 'invitation_status' => [ - 'sent' => 'Email Sent', - 'opened' => 'Email Openend', - 'viewed' => 'Invoice Viewed', - ], - 'email_errors' => [ - 'inactive_client' => 'Emails can not be sent to inactive clients', - 'inactive_contact' => 'Emails can not be sent to inactive contacts', - 'inactive_invoice' => 'Emails can not be sent to inactive invoices', - 'user_unregistered' => 'Please register your account to send emails', - 'user_unconfirmed' => 'Please confirm your account to send emails', - 'invalid_contact_email' => 'Invalid contact email', - ], + 'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding and help support our project.', + 'user_email_footer' => 'To adjust your email notification settings please visit :link', + 'reset_password_footer' => 'If you did not request this password reset please email our support: :email', + 'limit_users' => 'Sorry, this will exceed the limit of :limit users', + 'more_designs_self_host_header' => 'Get 6 more invoice designs for just $:price', + 'old_browser' => 'Please use a newer browser', + 'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.', + 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', + + 'pro_plan_remove_logo' => ':link to remove the Invoice Ninja logo by joining the Pro Plan', + 'pro_plan_remove_logo_link' => 'Click here', + 'invitation_status_sent' => 'Email Sent', + 'invitation_status_opened' => 'Email Openend', + 'invitation_status_viewed' => 'Invoice Viewed', + 'email_error_inactive_client' => 'Emails can not be sent to inactive clients', + 'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts', + 'email_error_inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'email_error_user_unregistered' => 'Please register your account to send emails', + 'email_error_user_unconfirmed' => 'Please confirm your account to send emails', + 'email_error_invalid_contact_email' => 'Invalid contact email', 'navigation' => 'Navigation', 'list_invoices' => 'List Invoices', @@ -1106,17 +1095,15 @@ $LANG = array( 'document_email_attachment' => 'Attach Documents', 'download_documents' => 'Download Documents (:size)', 'documents_from_expenses' => 'From Expenses:', - 'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage - 'DefaultMessage' => 'Drop files or click to upload', - 'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.', - 'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.', - 'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', - 'InvalidFileType' => 'You can\'t upload files of this type.', - 'ResponseError' => 'Server responded with {{statusCode}} code.', - 'CancelUpload' => 'Cancel upload', - 'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?', - 'RemoveFile' => 'Remove file', - ), + 'dropzone_default_message' => 'Drop files or click to upload', + 'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.', + 'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.', + 'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', + 'dropzone_invalid_file_type' => 'You can\'t upload files of this type.', + 'dropzone_response_error' => 'Server responded with {{statusCode}} code.', + 'dropzone_cancel_upload' => 'Cancel upload', + 'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?', + 'dropzone_remove_file' => 'Remove file', 'documents' => 'Documents', 'document_date' => 'Document Date', 'document_size' => 'Size', @@ -1182,10 +1169,868 @@ $LANG = array( 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments, :link to see the full list of features.', 'return_to_app' => 'Return to app', + + // Payment updates + 'refund_payment' => 'Refund Payment', + 'refund_max' => 'Max:', + 'refund' => 'Refund', + 'are_you_sure_refund' => 'Refund selected payments?', + 'status_pending' => 'Pending', + 'status_completed' => 'Completed', + 'status_failed' => 'Failed', + 'status_partially_refunded' => 'Partially Refunded', + 'status_partially_refunded_amount' => ':amount Refunded', + 'status_refunded' => 'Refunded', + 'status_voided' => 'Cancelled', + 'refunded_payment' => 'Refunded Payment', + 'activity_39' => ':user cancelled a :payment_amount payment (:payment)', + 'activity_40' => ':user refunded :adjustment of a :payment_amount payment (:payment)', + 'card_expiration' => 'Exp: :expires', + + 'card_creditcardother' => 'Unknown', + 'card_americanexpress' => 'American Express', + 'card_carteblanche' => 'Carte Blanche', + 'card_unionpay' => 'UnionPay', + 'card_diners' => 'Diners Club', + 'card_discover' => 'Discover', + 'card_jcb' => 'JCB', + 'card_laser' => 'Laser', + 'card_maestro' => 'Maestro', + 'card_mastercard' => 'MasterCard', + 'card_solo' => 'Solo', + 'card_switch' => 'Switch', + 'card_visacard' => 'Visa', + 'card_ach' => 'ACH', + + 'payment_type_stripe' => 'Stripe', + 'ach' => 'ACH', + 'enable_ach' => 'Enable ACH', + 'stripe_ach_help' => 'ACH support must also be enabled at Stripe.', + 'ach_disabled' => 'Another gateway is already configured for direct debit.', + + 'plaid' => 'Plaid', + 'client_id' => 'Client Id', + 'secret' => 'Secret', + 'public_key' => 'Public Key', + 'plaid_optional' => '(optional)', + 'plaid_environment_help' => 'When a Stripe test key is given, Plaid\'s development environement (tartan) will be used.', + 'other_providers' => 'Other Providers', + 'country_not_supported' => 'That country is not supported.', + 'invalid_routing_number' => 'The routing number is not valid.', + 'invalid_account_number' => 'The account number is not valid.', + 'account_number_mismatch' => 'The account numbers do not match.', + 'missing_account_holder_type' => 'Please select an individual or company account.', + 'missing_account_holder_name' => 'Please enter the account holder\'s name.', + 'routing_number' => 'Routing Number', + 'confirm_account_number' => 'Confirm Account Number', + 'individual_account' => 'Individual Account', + 'company_account' => 'Company Account', + 'account_holder_name' => 'Account Holder Name', + 'add_account' => 'Add Account', + 'payment_methods' => 'Payment Methods', + 'complete_verification' => 'Complete Verification', + 'verification_amount1' => 'Amount 1', + 'verification_amount2' => 'Amount 2', + 'payment_method_verified' => 'Verification completed successfully', + 'verification_failed' => 'Verification Failed', + 'remove_payment_method' => 'Remove Payment Method', + 'confirm_remove_payment_method' => 'Are you sure you want to remove this payment method?', + 'remove' => 'Remove', + 'payment_method_removed' => 'Removed payment method.', + 'bank_account_verification_help' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. Please enter the amounts below.', + 'bank_account_verification_next_steps' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. + Once you have the amounts, come back to this payment methods page and click "Complete Verification" next to the account.', + 'unknown_bank' => 'Unknown Bank', + 'ach_verification_delay_help' => 'You will be able to use the account after completing verification. Verification usually takes 1-2 business days.', + 'add_credit_card' => 'Add Credit Card', + 'payment_method_added' => 'Added payment method.', + 'use_for_auto_bill' => 'Use For Autobill', + 'used_for_auto_bill' => 'Autobill Payment Method', + 'payment_method_set_as_default' => 'Set Autobill payment method.', + 'activity_41' => ':payment_amount payment (:payment) failed', + 'webhook_url' => 'Webhook URL', + 'stripe_webhook_help' => 'You must :link.', + 'stripe_webhook_help_link_text' => 'add this URL as an endpoint at Stripe', + 'payment_method_error' => 'There was an error adding your payment methd. Please try again later.', + 'notification_invoice_payment_failed_subject' => 'Payment failed for Invoice :invoice', + 'notification_invoice_payment_failed' => 'A payment made by client :client towards Invoice :invoice failed. The payment has been marked as failed and :amount has been added to the client\'s balance.', + 'link_with_plaid' => 'Link Account Instantly with Plaid', + 'link_manually' => 'Link Manually', + 'secured_by_plaid' => 'Secured by Plaid', + 'plaid_linked_status' => 'Your bank account at :bank', + 'add_payment_method' => 'Add Payment Method', + 'account_holder_type' => 'Account Holder Type', + 'ach_authorization' => 'I authorize :company to use my bank account for future payments and, if necessary, electronically credit my account to correct erroneous debits. I understand that I may cancel this authorization at any time by removing the payment method or by contacting :email.', + 'ach_authorization_required' => 'You must consent to ACH transactions.', + 'off' => 'Off', + 'opt_in' => 'Opt-in', + 'opt_out' => 'Opt-out', + 'always' => 'Always', + 'opted_out' => 'Opted out', + 'opted_in' => 'Opted in', + 'manage_auto_bill' => 'Manage Auto-bill', + 'enabled' => 'Enabled', + 'paypal' => 'PayPal', + 'braintree_enable_paypal' => 'Enable PayPal payments through BrainTree', + 'braintree_paypal_disabled_help' => 'The PayPal gateway is processing PayPal payments', + 'braintree_paypal_help' => 'You must also :link.', + 'braintree_paypal_help_link_text' => 'link PayPal to your BrainTree account', + 'token_billing_braintree_paypal' => 'Save payment details', + 'add_paypal_account' => 'Add PayPal Account', + + + 'no_payment_method_specified' => 'No payment method specified', + 'chart_type' => 'Chart Type', + 'format' => 'Format', + 'import_ofx' => 'Import OFX', + 'ofx_file' => 'OFX File', + 'ofx_parse_failed' => 'Failed to parse OFX file', + + // WePay + 'wepay' => 'WePay', + 'sign_up_with_wepay' => 'Sign up with WePay', + 'use_another_provider' => 'Use another provider', + 'company_name' => 'Company Name', + 'wepay_company_name_help' => 'This will appear on client\'s credit card statements.', + 'wepay_description_help' => 'The purpose of this account.', + 'wepay_tos_agree' => 'I agree to the :link.', + 'wepay_tos_link_text' => 'WePay Terms of Service', + 'resend_confirmation_email' => 'Resend Confirmation Email', + 'manage_wepay_account' => 'Manage WePay Account', + 'action_required' => 'Action Required', + 'finish_setup' => 'Finish Setup', + 'created_wepay_confirmation_required' => 'Please check your email and confirm your email address with WePay.', + 'switch_to_wepay' => 'Switch to WePay', + 'switch' => 'Switch', + 'restore_account_gateway' => 'Restore Gateway', + 'restored_account_gateway' => 'Successfully restored gateway', + 'united_states' => 'United States', + 'canada' => 'Canada', + 'accept_debit_cards' => 'Accept Debit Cards', + 'debit_cards' => 'Debit Cards', + + 'warn_start_date_changed' => 'The next invoice will be sent on the new start date.', + 'original_start_date' => 'Original start date', + 'new_start_date' => 'New start date', + 'security' => 'Security', + 'see_whats_new' => 'See what\'s new in v:version', + 'wait_for_upload' => 'Please wait for the document upload to complete.', + 'upgrade_for_permissions' => 'Upgrade to our Enterprise plan to enable permissions.', + 'enable_second_tax_rate' => 'Enable specifying a second tax rate', + 'payment_file' => 'Payment File', + 'expense_file' => 'Expense File', + 'product_file' => 'Product File', + 'import_products' => 'Import Products', + 'products_will_create' => 'products will be created.', + 'product_key' => 'Product', + 'created_products' => 'Successfully created :count product(s)', + 'export_help' => 'Use JSON if you plan to import the data into Invoice Ninja.', + 'JSON_file' => 'JSON File', + + 'view_dashboard' => 'View Dashboard', + 'client_session_expired' => 'Session Expired', + 'client_session_expired_message' => 'Your session has expired. Please click the link in your email again.', + + 'auto_bill_notification' => 'This invoice will automatically be billed to your :payment_method on file on :due_date.', + 'auto_bill_payment_method_bank_transfer' => 'bank account', + 'auto_bill_payment_method_credit_card' => 'credit card', + 'auto_bill_payment_method_paypal' => 'PayPal account', + 'auto_bill_notification_placeholder' => 'This invoice will automatically be billed to your credit card on file on the due date.', + 'payment_settings' => 'Payment Settings', + + 'on_send_date' => 'On send date', + 'on_due_date' => 'On due date', + 'auto_bill_ach_date_help' => 'ACH auto bill will always happen on the due date', + 'warn_change_auto_bill' => 'Due to NACHA rules, changes to this invoice may prevent ACH auto bill.', + + 'bank_account' => 'Bank Account', + 'payment_processed_through_wepay' => 'ACH payments will be processed using WePay.', + 'wepay_payment_tos_agree' => 'I agree to the WePay :terms and :privacy_policy.', + 'privacy_policy' => 'Privacy Policy', + 'wepay_payment_tos_agree_required' => 'You must agree to the WePay Terms of Service and Privacy Policy.', + 'payment_settings_supported_gateways' => 'These options are supported by the WePay, Stripe, and Braintree gateways.', + 'ach_email_prompt' => 'Please enter your email address:', + 'verification_pending' => 'Verification Pending', + 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', + 'credit_card' => 'Credit Card', + 'bank_transfer' => 'Bank Transfer', + 'no_transaction_reference' => 'We did not recieve a payment transaction reference from the gateway.', + 'use_bank_on_file' => 'Use Bank on File', + 'auto_bill_email_message' => 'This invoice will automatically be billed to the payment method on file on the due date.', + 'bitcoin' => 'Bitcoin', + 'added_on' => 'Added :date', + 'failed_remove_payment_method' => 'Failed to remove the payment method', + 'gateway_exists' => 'This gateway already exists', + 'manual_entry' => 'Manual entry', + 'start_of_week' => 'First day of the week', + + // Frequencies + 'freq_weekly' => 'Weekly', + 'freq_two_weeks' => 'Two weeks', + 'freq_four_weeks' => 'Four weeks', + 'freq_monthly' => 'Monthly', + 'freq_three_months' => 'Three months', + 'freq_six_months' => 'Six months', + 'freq_annually' => 'Annually', + + // Payment types + 'payment_type_Apply Credit' => 'Apply Credit', + 'payment_type_Bank Transfer' => 'Bank Transfer', + 'payment_type_Cash' => 'Cash', + 'payment_type_Debit' => 'Debit', + 'payment_type_ACH' => 'ACH', + 'payment_type_Visa Card' => 'Visa Card', + 'payment_type_MasterCard' => 'MasterCard', + 'payment_type_American Express' => 'American Express', + 'payment_type_Discover Card' => 'Discover Card', + 'payment_type_Diners Card' => 'Diners Card', + 'payment_type_EuroCard' => 'EuroCard', + 'payment_type_Nova' => 'Nova', + 'payment_type_Credit Card Other' => 'Credit Card Other', + 'payment_type_PayPal' => 'PayPal', + 'payment_type_Google Wallet' => 'Google Wallet', + 'payment_type_Check' => 'Check', + + // Industries + 'industry_Accounting & Legal' => 'Accounting & Legal', + 'industry_Advertising' => 'Advertising', + 'industry_Aerospace' => 'Aerospace', + 'industry_Agriculture' => 'Agriculture', + 'industry_Automotive' => 'Automotive', + 'industry_Banking & Finance' => 'Banking & Finance', + 'industry_Biotechnology' => 'Biotechnology', + 'industry_Broadcasting' => 'Broadcasting', + 'industry_Business Services' => 'Business Services', + 'industry_Commodities & Chemicals' => 'Commodities & Chemicals', + 'industry_Communications' => 'Communications', + 'industry_Computers & Hightech' => 'Computers & Hightech', + 'industry_Defense' => 'Defense', + 'industry_Energy' => 'Energy', + 'industry_Entertainment' => 'Entertainment', + 'industry_Government' => 'Government', + 'industry_Healthcare & Life Sciences' => 'Healthcare & Life Sciences', + 'industry_Insurance' => 'Insurance', + 'industry_Manufacturing' => 'Manufacturing', + 'industry_Marketing' => 'Marketing', + 'industry_Media' => 'Media', + 'industry_Nonprofit & Higher Ed' => 'Nonprofit & Higher Ed', + 'industry_Pharmaceuticals' => 'Pharmaceuticals', + 'industry_Professional Services & Consulting' => 'Professional Services & Consulting', + 'industry_Real Estate' => 'Real Estate', + 'industry_Retail & Wholesale' => 'Retail & Wholesale', + 'industry_Sports' => 'Sports', + 'industry_Transportation' => 'Transportation', + 'industry_Travel & Luxury' => 'Travel & Luxury', + 'industry_Other' => 'Other', + 'industry_Photography' =>'Photography', + + // Countries + 'country_Afghanistan' => 'Afghanistan', + 'country_Albania' => 'Albania', + 'country_Antarctica' => 'Antarctica', + 'country_Algeria' => 'Algeria', + 'country_American Samoa' => 'American Samoa', + 'country_Andorra' => 'Andorra', + 'country_Angola' => 'Angola', + 'country_Antigua and Barbuda' => 'Antigua and Barbuda', + 'country_Azerbaijan' => 'Azerbaijan', + 'country_Argentina' => 'Argentina', + 'country_Australia' => 'Australia', + 'country_Austria' => 'Austria', + 'country_Bahamas' => 'Bahamas', + 'country_Bahrain' => 'Bahrain', + 'country_Bangladesh' => 'Bangladesh', + 'country_Armenia' => 'Armenia', + 'country_Barbados' => 'Barbados', + 'country_Belgium' => 'Belgium', + 'country_Bermuda' => 'Bermuda', + 'country_Bhutan' => 'Bhutan', + 'country_Bolivia, Plurinational State of' => 'Bolivia, Plurinational State of', + 'country_Bosnia and Herzegovina' => 'Bosnia and Herzegovina', + 'country_Botswana' => 'Botswana', + 'country_Bouvet Island' => 'Bouvet Island', + 'country_Brazil' => 'Brazil', + 'country_Belize' => 'Belize', + 'country_British Indian Ocean Territory' => 'British Indian Ocean Territory', + 'country_Solomon Islands' => 'Solomon Islands', + 'country_Virgin Islands, British' => 'Virgin Islands, British', + 'country_Brunei Darussalam' => 'Brunei Darussalam', + 'country_Bulgaria' => 'Bulgaria', + 'country_Myanmar' => 'Myanmar', + 'country_Burundi' => 'Burundi', + 'country_Belarus' => 'Belarus', + 'country_Cambodia' => 'Cambodia', + 'country_Cameroon' => 'Cameroon', + 'country_Canada' => 'Canada', + 'country_Cape Verde' => 'Cape Verde', + 'country_Cayman Islands' => 'Cayman Islands', + 'country_Central African Republic' => 'Central African Republic', + 'country_Sri Lanka' => 'Sri Lanka', + 'country_Chad' => 'Chad', + 'country_Chile' => 'Chile', + 'country_China' => 'China', + 'country_Taiwan, Province of China' => 'Taiwan, Province of China', + 'country_Christmas Island' => 'Christmas Island', + 'country_Cocos (Keeling) Islands' => 'Cocos (Keeling) Islands', + 'country_Colombia' => 'Colombia', + 'country_Comoros' => 'Comoros', + 'country_Mayotte' => 'Mayotte', + 'country_Congo' => 'Congo', + 'country_Congo, the Democratic Republic of the' => 'Congo, the Democratic Republic of the', + 'country_Cook Islands' => 'Cook Islands', + 'country_Costa Rica' => 'Costa Rica', + 'country_Croatia' => 'Croatia', + 'country_Cuba' => 'Cuba', + 'country_Cyprus' => 'Cyprus', + 'country_Czech Republic' => 'Czech Republic', + 'country_Benin' => 'Benin', + 'country_Denmark' => 'Denmark', + 'country_Dominica' => 'Dominica', + 'country_Dominican Republic' => 'Dominican Republic', + 'country_Ecuador' => 'Ecuador', + 'country_El Salvador' => 'El Salvador', + 'country_Equatorial Guinea' => 'Equatorial Guinea', + 'country_Ethiopia' => 'Ethiopia', + 'country_Eritrea' => 'Eritrea', + 'country_Estonia' => 'Estonia', + 'country_Faroe Islands' => 'Faroe Islands', + 'country_Falkland Islands (Malvinas)' => 'Falkland Islands (Malvinas)', + 'country_South Georgia and the South Sandwich Islands' => 'South Georgia and the South Sandwich Islands', + 'country_Fiji' => 'Fiji', + 'country_Finland' => 'Finland', + 'country_Åland Islands' => 'Åland Islands', + 'country_France' => 'France', + 'country_French Guiana' => 'French Guiana', + 'country_French Polynesia' => 'French Polynesia', + 'country_French Southern Territories' => 'French Southern Territories', + 'country_Djibouti' => 'Djibouti', + 'country_Gabon' => 'Gabon', + 'country_Georgia' => 'Georgia', + 'country_Gambia' => 'Gambia', + 'country_Palestinian Territory, Occupied' => 'Palestinian Territory, Occupied', + 'country_Germany' => 'Germany', + 'country_Ghana' => 'Ghana', + 'country_Gibraltar' => 'Gibraltar', + 'country_Kiribati' => 'Kiribati', + 'country_Greece' => 'Greece', + 'country_Greenland' => 'Greenland', + 'country_Grenada' => 'Grenada', + 'country_Guadeloupe' => 'Guadeloupe', + 'country_Guam' => 'Guam', + 'country_Guatemala' => 'Guatemala', + 'country_Guinea' => 'Guinea', + 'country_Guyana' => 'Guyana', + 'country_Haiti' => 'Haiti', + 'country_Heard Island and McDonald Islands' => 'Heard Island and McDonald Islands', + 'country_Holy See (Vatican City State)' => 'Holy See (Vatican City State)', + 'country_Honduras' => 'Honduras', + 'country_Hong Kong' => 'Hong Kong', + 'country_Hungary' => 'Hungary', + 'country_Iceland' => 'Iceland', + 'country_India' => 'India', + 'country_Indonesia' => 'Indonesia', + 'country_Iran, Islamic Republic of' => 'Iran, Islamic Republic of', + 'country_Iraq' => 'Iraq', + 'country_Ireland' => 'Ireland', + 'country_Israel' => 'Israel', + 'country_Italy' => 'Italy', + 'country_Côte d\'Ivoire' => 'Côte d\'Ivoire', + 'country_Jamaica' => 'Jamaica', + 'country_Japan' => 'Japan', + 'country_Kazakhstan' => 'Kazakhstan', + 'country_Jordan' => 'Jordan', + 'country_Kenya' => 'Kenya', + 'country_Korea, Democratic People\'s Republic of' => 'Korea, Democratic People\'s Republic of', + 'country_Korea, Republic of' => 'Korea, Republic of', + 'country_Kuwait' => 'Kuwait', + 'country_Kyrgyzstan' => 'Kyrgyzstan', + 'country_Lao People\'s Democratic Republic' => 'Lao People\'s Democratic Republic', + 'country_Lebanon' => 'Lebanon', + 'country_Lesotho' => 'Lesotho', + 'country_Latvia' => 'Latvia', + 'country_Liberia' => 'Liberia', + 'country_Libya' => 'Libya', + 'country_Liechtenstein' => 'Liechtenstein', + 'country_Lithuania' => 'Lithuania', + 'country_Luxembourg' => 'Luxembourg', + 'country_Macao' => 'Macao', + 'country_Madagascar' => 'Madagascar', + 'country_Malawi' => 'Malawi', + 'country_Malaysia' => 'Malaysia', + 'country_Maldives' => 'Maldives', + 'country_Mali' => 'Mali', + 'country_Malta' => 'Malta', + 'country_Martinique' => 'Martinique', + 'country_Mauritania' => 'Mauritania', + 'country_Mauritius' => 'Mauritius', + 'country_Mexico' => 'Mexico', + 'country_Monaco' => 'Monaco', + 'country_Mongolia' => 'Mongolia', + 'country_Moldova, Republic of' => 'Moldova, Republic of', + 'country_Montenegro' => 'Montenegro', + 'country_Montserrat' => 'Montserrat', + 'country_Morocco' => 'Morocco', + 'country_Mozambique' => 'Mozambique', + 'country_Oman' => 'Oman', + 'country_Namibia' => 'Namibia', + 'country_Nauru' => 'Nauru', + 'country_Nepal' => 'Nepal', + 'country_Netherlands' => 'Netherlands', + 'country_Curaçao' => 'Curaçao', + 'country_Aruba' => 'Aruba', + 'country_Sint Maarten (Dutch part)' => 'Sint Maarten (Dutch part)', + 'country_Bonaire, Sint Eustatius and Saba' => 'Bonaire, Sint Eustatius and Saba', + 'country_New Caledonia' => 'New Caledonia', + 'country_Vanuatu' => 'Vanuatu', + 'country_New Zealand' => 'New Zealand', + 'country_Nicaragua' => 'Nicaragua', + 'country_Niger' => 'Niger', + 'country_Nigeria' => 'Nigeria', + 'country_Niue' => 'Niue', + 'country_Norfolk Island' => 'Norfolk Island', + 'country_Norway' => 'Norway', + 'country_Northern Mariana Islands' => 'Northern Mariana Islands', + 'country_United States Minor Outlying Islands' => 'United States Minor Outlying Islands', + 'country_Micronesia, Federated States of' => 'Micronesia, Federated States of', + 'country_Marshall Islands' => 'Marshall Islands', + 'country_Palau' => 'Palau', + 'country_Pakistan' => 'Pakistan', + 'country_Panama' => 'Panama', + 'country_Papua New Guinea' => 'Papua New Guinea', + 'country_Paraguay' => 'Paraguay', + 'country_Peru' => 'Peru', + 'country_Philippines' => 'Philippines', + 'country_Pitcairn' => 'Pitcairn', + 'country_Poland' => 'Poland', + 'country_Portugal' => 'Portugal', + 'country_Guinea-Bissau' => 'Guinea-Bissau', + 'country_Timor-Leste' => 'Timor-Leste', + 'country_Puerto Rico' => 'Puerto Rico', + 'country_Qatar' => 'Qatar', + 'country_Réunion' => 'Réunion', + 'country_Romania' => 'Romania', + 'country_Russian Federation' => 'Russian Federation', + 'country_Rwanda' => 'Rwanda', + 'country_Saint Barthélemy' => 'Saint Barthélemy', + 'country_Saint Helena, Ascension and Tristan da Cunha' => 'Saint Helena, Ascension and Tristan da Cunha', + 'country_Saint Kitts and Nevis' => 'Saint Kitts and Nevis', + 'country_Anguilla' => 'Anguilla', + 'country_Saint Lucia' => 'Saint Lucia', + 'country_Saint Martin (French part)' => 'Saint Martin (French part)', + 'country_Saint Pierre and Miquelon' => 'Saint Pierre and Miquelon', + 'country_Saint Vincent and the Grenadines' => 'Saint Vincent and the Grenadines', + 'country_San Marino' => 'San Marino', + 'country_Sao Tome and Principe' => 'Sao Tome and Principe', + 'country_Saudi Arabia' => 'Saudi Arabia', + 'country_Senegal' => 'Senegal', + 'country_Serbia' => 'Serbia', + 'country_Seychelles' => 'Seychelles', + 'country_Sierra Leone' => 'Sierra Leone', + 'country_Singapore' => 'Singapore', + 'country_Slovakia' => 'Slovakia', + 'country_Viet Nam' => 'Viet Nam', + 'country_Slovenia' => 'Slovenia', + 'country_Somalia' => 'Somalia', + 'country_South Africa' => 'South Africa', + 'country_Zimbabwe' => 'Zimbabwe', + 'country_Spain' => 'Spain', + 'country_South Sudan' => 'South Sudan', + 'country_Sudan' => 'Sudan', + 'country_Western Sahara' => 'Western Sahara', + 'country_Suriname' => 'Suriname', + 'country_Svalbard and Jan Mayen' => 'Svalbard and Jan Mayen', + 'country_Swaziland' => 'Swaziland', + 'country_Sweden' => 'Sweden', + 'country_Switzerland' => 'Switzerland', + 'country_Syrian Arab Republic' => 'Syrian Arab Republic', + 'country_Tajikistan' => 'Tajikistan', + 'country_Thailand' => 'Thailand', + 'country_Togo' => 'Togo', + 'country_Tokelau' => 'Tokelau', + 'country_Tonga' => 'Tonga', + 'country_Trinidad and Tobago' => 'Trinidad and Tobago', + 'country_United Arab Emirates' => 'United Arab Emirates', + 'country_Tunisia' => 'Tunisia', + 'country_Turkey' => 'Turkey', + 'country_Turkmenistan' => 'Turkmenistan', + 'country_Turks and Caicos Islands' => 'Turks and Caicos Islands', + 'country_Tuvalu' => 'Tuvalu', + 'country_Uganda' => 'Uganda', + 'country_Ukraine' => 'Ukraine', + 'country_Macedonia, the former Yugoslav Republic of' => 'Macedonia, the former Yugoslav Republic of', + 'country_Egypt' => 'Egypt', + 'country_United Kingdom' => 'United Kingdom', + 'country_Guernsey' => 'Guernsey', + 'country_Jersey' => 'Jersey', + 'country_Isle of Man' => 'Isle of Man', + 'country_Tanzania, United Republic of' => 'Tanzania, United Republic of', + 'country_United States' => 'United States', + 'country_Virgin Islands, U.S.' => 'Virgin Islands, U.S.', + 'country_Burkina Faso' => 'Burkina Faso', + 'country_Uruguay' => 'Uruguay', + 'country_Uzbekistan' => 'Uzbekistan', + 'country_Venezuela, Bolivarian Republic of' => 'Venezuela, Bolivarian Republic of', + 'country_Wallis and Futuna' => 'Wallis and Futuna', + 'country_Samoa' => 'Samoa', + 'country_Yemen' => 'Yemen', + 'country_Zambi' => 'Zambi', + + // Languages + 'lang_Brazilian Portuguese' => 'Brazilian Portuguese', + 'lang_Croatian' => 'Croatian', + 'lang_Czech' => 'Czech', + 'lang_Danish' => 'Danish', + 'lang_Dutch' => 'Dutch', + 'lang_English' => 'English', + 'lang_French' => 'French', + 'lang_French - Canada' => 'French - Canada', + 'lang_German' => 'German', + 'lang_Italian' => 'Italian', + 'lang_Japanese' => 'Japanese', + 'lang_Lithuanian' => 'Lithuanian', + 'lang_Norwegian' => 'Norwegian', + 'lang_Polish' => 'Polish', + 'lang_Spanish' => 'Spanish', + 'lang_Spanish - Spain' => 'Spanish - Spain', + 'lang_Swedish' => 'Swedish', + + // Frequencies + 'freq_weekly' => 'Weekly', + 'freq_two_weeks' => 'Two weeks', + 'freq_four_weeks' => 'Four weeks', + 'freq_monthly' => 'Monthly', + 'freq_three_months' => 'Three months', + 'freq_six_months' => 'Six months', + 'freq_annually' => 'Annually', + + // Payment types + 'payment_type_Apply Credit' => 'Apply Credit', + 'payment_type_Bank Transfer' => 'Bank Transfer', + 'payment_type_Cash' => 'Cash', + 'payment_type_Debit' => 'Debit', + 'payment_type_ACH' => 'ACH', + 'payment_type_Visa Card' => 'Visa Card', + 'payment_type_MasterCard' => 'MasterCard', + 'payment_type_American Express' => 'American Express', + 'payment_type_Discover Card' => 'Discover Card', + 'payment_type_Diners Card' => 'Diners Card', + 'payment_type_EuroCard' => 'EuroCard', + 'payment_type_Nova' => 'Nova', + 'payment_type_Credit Card Other' => 'Credit Card Other', + 'payment_type_PayPal' => 'PayPal', + 'payment_type_Google Wallet' => 'Google Wallet', + 'payment_type_Check' => 'Check', + + // Industries + 'industry_Accounting & Legal' => 'Accounting & Legal', + 'industry_Advertising' => 'Advertising', + 'industry_Aerospace' => 'Aerospace', + 'industry_Agriculture' => 'Agriculture', + 'industry_Automotive' => 'Automotive', + 'industry_Banking & Finance' => 'Banking & Finance', + 'industry_Biotechnology' => 'Biotechnology', + 'industry_Broadcasting' => 'Broadcasting', + 'industry_Business Services' => 'Business Services', + 'industry_Commodities & Chemicals' => 'Commodities & Chemicals', + 'industry_Communications' => 'Communications', + 'industry_Computers & Hightech' => 'Computers & Hightech', + 'industry_Defense' => 'Defense', + 'industry_Energy' => 'Energy', + 'industry_Entertainment' => 'Entertainment', + 'industry_Government' => 'Government', + 'industry_Healthcare & Life Sciences' => 'Healthcare & Life Sciences', + 'industry_Insurance' => 'Insurance', + 'industry_Manufacturing' => 'Manufacturing', + 'industry_Marketing' => 'Marketing', + 'industry_Media' => 'Media', + 'industry_Nonprofit & Higher Ed' => 'Nonprofit & Higher Ed', + 'industry_Pharmaceuticals' => 'Pharmaceuticals', + 'industry_Professional Services & Consulting' => 'Professional Services & Consulting', + 'industry_Real Estate' => 'Real Estate', + 'industry_Retail & Wholesale' => 'Retail & Wholesale', + 'industry_Sports' => 'Sports', + 'industry_Transportation' => 'Transportation', + 'industry_Travel & Luxury' => 'Travel & Luxury', + 'industry_Other' => 'Other', + 'industry_Photography' =>'Photography', + + // Countries + 'country_Afghanistan' => 'Afghanistan', + 'country_Albania' => 'Albania', + 'country_Antarctica' => 'Antarctica', + 'country_Algeria' => 'Algeria', + 'country_American Samoa' => 'American Samoa', + 'country_Andorra' => 'Andorra', + 'country_Angola' => 'Angola', + 'country_Antigua and Barbuda' => 'Antigua and Barbuda', + 'country_Azerbaijan' => 'Azerbaijan', + 'country_Argentina' => 'Argentina', + 'country_Australia' => 'Australia', + 'country_Austria' => 'Austria', + 'country_Bahamas' => 'Bahamas', + 'country_Bahrain' => 'Bahrain', + 'country_Bangladesh' => 'Bangladesh', + 'country_Armenia' => 'Armenia', + 'country_Barbados' => 'Barbados', + 'country_Belgium' => 'Belgium', + 'country_Bermuda' => 'Bermuda', + 'country_Bhutan' => 'Bhutan', + 'country_Bolivia, Plurinational State of' => 'Bolivia, Plurinational State of', + 'country_Bosnia and Herzegovina' => 'Bosnia and Herzegovina', + 'country_Botswana' => 'Botswana', + 'country_Bouvet Island' => 'Bouvet Island', + 'country_Brazil' => 'Brazil', + 'country_Belize' => 'Belize', + 'country_British Indian Ocean Territory' => 'British Indian Ocean Territory', + 'country_Solomon Islands' => 'Solomon Islands', + 'country_Virgin Islands, British' => 'Virgin Islands, British', + 'country_Brunei Darussalam' => 'Brunei Darussalam', + 'country_Bulgaria' => 'Bulgaria', + 'country_Myanmar' => 'Myanmar', + 'country_Burundi' => 'Burundi', + 'country_Belarus' => 'Belarus', + 'country_Cambodia' => 'Cambodia', + 'country_Cameroon' => 'Cameroon', + 'country_Canada' => 'Canada', + 'country_Cape Verde' => 'Cape Verde', + 'country_Cayman Islands' => 'Cayman Islands', + 'country_Central African Republic' => 'Central African Republic', + 'country_Sri Lanka' => 'Sri Lanka', + 'country_Chad' => 'Chad', + 'country_Chile' => 'Chile', + 'country_China' => 'China', + 'country_Taiwan, Province of China' => 'Taiwan, Province of China', + 'country_Christmas Island' => 'Christmas Island', + 'country_Cocos (Keeling) Islands' => 'Cocos (Keeling) Islands', + 'country_Colombia' => 'Colombia', + 'country_Comoros' => 'Comoros', + 'country_Mayotte' => 'Mayotte', + 'country_Congo' => 'Congo', + 'country_Congo, the Democratic Republic of the' => 'Congo, the Democratic Republic of the', + 'country_Cook Islands' => 'Cook Islands', + 'country_Costa Rica' => 'Costa Rica', + 'country_Croatia' => 'Croatia', + 'country_Cuba' => 'Cuba', + 'country_Cyprus' => 'Cyprus', + 'country_Czech Republic' => 'Czech Republic', + 'country_Benin' => 'Benin', + 'country_Denmark' => 'Denmark', + 'country_Dominica' => 'Dominica', + 'country_Dominican Republic' => 'Dominican Republic', + 'country_Ecuador' => 'Ecuador', + 'country_El Salvador' => 'El Salvador', + 'country_Equatorial Guinea' => 'Equatorial Guinea', + 'country_Ethiopia' => 'Ethiopia', + 'country_Eritrea' => 'Eritrea', + 'country_Estonia' => 'Estonia', + 'country_Faroe Islands' => 'Faroe Islands', + 'country_Falkland Islands (Malvinas)' => 'Falkland Islands (Malvinas)', + 'country_South Georgia and the South Sandwich Islands' => 'South Georgia and the South Sandwich Islands', + 'country_Fiji' => 'Fiji', + 'country_Finland' => 'Finland', + 'country_Åland Islands' => 'Åland Islands', + 'country_France' => 'France', + 'country_French Guiana' => 'French Guiana', + 'country_French Polynesia' => 'French Polynesia', + 'country_French Southern Territories' => 'French Southern Territories', + 'country_Djibouti' => 'Djibouti', + 'country_Gabon' => 'Gabon', + 'country_Georgia' => 'Georgia', + 'country_Gambia' => 'Gambia', + 'country_Palestinian Territory, Occupied' => 'Palestinian Territory, Occupied', + 'country_Germany' => 'Germany', + 'country_Ghana' => 'Ghana', + 'country_Gibraltar' => 'Gibraltar', + 'country_Kiribati' => 'Kiribati', + 'country_Greece' => 'Greece', + 'country_Greenland' => 'Greenland', + 'country_Grenada' => 'Grenada', + 'country_Guadeloupe' => 'Guadeloupe', + 'country_Guam' => 'Guam', + 'country_Guatemala' => 'Guatemala', + 'country_Guinea' => 'Guinea', + 'country_Guyana' => 'Guyana', + 'country_Haiti' => 'Haiti', + 'country_Heard Island and McDonald Islands' => 'Heard Island and McDonald Islands', + 'country_Holy See (Vatican City State)' => 'Holy See (Vatican City State)', + 'country_Honduras' => 'Honduras', + 'country_Hong Kong' => 'Hong Kong', + 'country_Hungary' => 'Hungary', + 'country_Iceland' => 'Iceland', + 'country_India' => 'India', + 'country_Indonesia' => 'Indonesia', + 'country_Iran, Islamic Republic of' => 'Iran, Islamic Republic of', + 'country_Iraq' => 'Iraq', + 'country_Ireland' => 'Ireland', + 'country_Israel' => 'Israel', + 'country_Italy' => 'Italy', + 'country_Côte d\'Ivoire' => 'Côte d\'Ivoire', + 'country_Jamaica' => 'Jamaica', + 'country_Japan' => 'Japan', + 'country_Kazakhstan' => 'Kazakhstan', + 'country_Jordan' => 'Jordan', + 'country_Kenya' => 'Kenya', + 'country_Korea, Democratic People\'s Republic of' => 'Korea, Democratic People\'s Republic of', + 'country_Korea, Republic of' => 'Korea, Republic of', + 'country_Kuwait' => 'Kuwait', + 'country_Kyrgyzstan' => 'Kyrgyzstan', + 'country_Lao People\'s Democratic Republic' => 'Lao People\'s Democratic Republic', + 'country_Lebanon' => 'Lebanon', + 'country_Lesotho' => 'Lesotho', + 'country_Latvia' => 'Latvia', + 'country_Liberia' => 'Liberia', + 'country_Libya' => 'Libya', + 'country_Liechtenstein' => 'Liechtenstein', + 'country_Lithuania' => 'Lithuania', + 'country_Luxembourg' => 'Luxembourg', + 'country_Macao' => 'Macao', + 'country_Madagascar' => 'Madagascar', + 'country_Malawi' => 'Malawi', + 'country_Malaysia' => 'Malaysia', + 'country_Maldives' => 'Maldives', + 'country_Mali' => 'Mali', + 'country_Malta' => 'Malta', + 'country_Martinique' => 'Martinique', + 'country_Mauritania' => 'Mauritania', + 'country_Mauritius' => 'Mauritius', + 'country_Mexico' => 'Mexico', + 'country_Monaco' => 'Monaco', + 'country_Mongolia' => 'Mongolia', + 'country_Moldova, Republic of' => 'Moldova, Republic of', + 'country_Montenegro' => 'Montenegro', + 'country_Montserrat' => 'Montserrat', + 'country_Morocco' => 'Morocco', + 'country_Mozambique' => 'Mozambique', + 'country_Oman' => 'Oman', + 'country_Namibia' => 'Namibia', + 'country_Nauru' => 'Nauru', + 'country_Nepal' => 'Nepal', + 'country_Netherlands' => 'Netherlands', + 'country_Curaçao' => 'Curaçao', + 'country_Aruba' => 'Aruba', + 'country_Sint Maarten (Dutch part)' => 'Sint Maarten (Dutch part)', + 'country_Bonaire, Sint Eustatius and Saba' => 'Bonaire, Sint Eustatius and Saba', + 'country_New Caledonia' => 'New Caledonia', + 'country_Vanuatu' => 'Vanuatu', + 'country_New Zealand' => 'New Zealand', + 'country_Nicaragua' => 'Nicaragua', + 'country_Niger' => 'Niger', + 'country_Nigeria' => 'Nigeria', + 'country_Niue' => 'Niue', + 'country_Norfolk Island' => 'Norfolk Island', + 'country_Norway' => 'Norway', + 'country_Northern Mariana Islands' => 'Northern Mariana Islands', + 'country_United States Minor Outlying Islands' => 'United States Minor Outlying Islands', + 'country_Micronesia, Federated States of' => 'Micronesia, Federated States of', + 'country_Marshall Islands' => 'Marshall Islands', + 'country_Palau' => 'Palau', + 'country_Pakistan' => 'Pakistan', + 'country_Panama' => 'Panama', + 'country_Papua New Guinea' => 'Papua New Guinea', + 'country_Paraguay' => 'Paraguay', + 'country_Peru' => 'Peru', + 'country_Philippines' => 'Philippines', + 'country_Pitcairn' => 'Pitcairn', + 'country_Poland' => 'Poland', + 'country_Portugal' => 'Portugal', + 'country_Guinea-Bissau' => 'Guinea-Bissau', + 'country_Timor-Leste' => 'Timor-Leste', + 'country_Puerto Rico' => 'Puerto Rico', + 'country_Qatar' => 'Qatar', + 'country_Réunion' => 'Réunion', + 'country_Romania' => 'Romania', + 'country_Russian Federation' => 'Russian Federation', + 'country_Rwanda' => 'Rwanda', + 'country_Saint Barthélemy' => 'Saint Barthélemy', + 'country_Saint Helena, Ascension and Tristan da Cunha' => 'Saint Helena, Ascension and Tristan da Cunha', + 'country_Saint Kitts and Nevis' => 'Saint Kitts and Nevis', + 'country_Anguilla' => 'Anguilla', + 'country_Saint Lucia' => 'Saint Lucia', + 'country_Saint Martin (French part)' => 'Saint Martin (French part)', + 'country_Saint Pierre and Miquelon' => 'Saint Pierre and Miquelon', + 'country_Saint Vincent and the Grenadines' => 'Saint Vincent and the Grenadines', + 'country_San Marino' => 'San Marino', + 'country_Sao Tome and Principe' => 'Sao Tome and Principe', + 'country_Saudi Arabia' => 'Saudi Arabia', + 'country_Senegal' => 'Senegal', + 'country_Serbia' => 'Serbia', + 'country_Seychelles' => 'Seychelles', + 'country_Sierra Leone' => 'Sierra Leone', + 'country_Singapore' => 'Singapore', + 'country_Slovakia' => 'Slovakia', + 'country_Viet Nam' => 'Viet Nam', + 'country_Slovenia' => 'Slovenia', + 'country_Somalia' => 'Somalia', + 'country_South Africa' => 'South Africa', + 'country_Zimbabwe' => 'Zimbabwe', + 'country_Spain' => 'Spain', + 'country_South Sudan' => 'South Sudan', + 'country_Sudan' => 'Sudan', + 'country_Western Sahara' => 'Western Sahara', + 'country_Suriname' => 'Suriname', + 'country_Svalbard and Jan Mayen' => 'Svalbard and Jan Mayen', + 'country_Swaziland' => 'Swaziland', + 'country_Sweden' => 'Sweden', + 'country_Switzerland' => 'Switzerland', + 'country_Syrian Arab Republic' => 'Syrian Arab Republic', + 'country_Tajikistan' => 'Tajikistan', + 'country_Thailand' => 'Thailand', + 'country_Togo' => 'Togo', + 'country_Tokelau' => 'Tokelau', + 'country_Tonga' => 'Tonga', + 'country_Trinidad and Tobago' => 'Trinidad and Tobago', + 'country_United Arab Emirates' => 'United Arab Emirates', + 'country_Tunisia' => 'Tunisia', + 'country_Turkey' => 'Turkey', + 'country_Turkmenistan' => 'Turkmenistan', + 'country_Turks and Caicos Islands' => 'Turks and Caicos Islands', + 'country_Tuvalu' => 'Tuvalu', + 'country_Uganda' => 'Uganda', + 'country_Ukraine' => 'Ukraine', + 'country_Macedonia, the former Yugoslav Republic of' => 'Macedonia, the former Yugoslav Republic of', + 'country_Egypt' => 'Egypt', + 'country_United Kingdom' => 'United Kingdom', + 'country_Guernsey' => 'Guernsey', + 'country_Jersey' => 'Jersey', + 'country_Isle of Man' => 'Isle of Man', + 'country_Tanzania, United Republic of' => 'Tanzania, United Republic of', + 'country_United States' => 'United States', + 'country_Virgin Islands, U.S.' => 'Virgin Islands, U.S.', + 'country_Burkina Faso' => 'Burkina Faso', + 'country_Uruguay' => 'Uruguay', + 'country_Uzbekistan' => 'Uzbekistan', + 'country_Venezuela, Bolivarian Republic of' => 'Venezuela, Bolivarian Republic of', + 'country_Wallis and Futuna' => 'Wallis and Futuna', + 'country_Samoa' => 'Samoa', + 'country_Yemen' => 'Yemen', + 'country_Zambi' => 'Zambi', + + 'view_client_portal' => 'View client portal', + 'view_portal' => 'View Portal', + 'vendor_contacts' => 'Vendor Contacts', + 'all' => 'All', + 'selected' => 'Selected', + 'category' => 'Category', + 'categories' => 'Categories', + 'new_expense_category' => 'New Expense Category', + 'edit_category' => 'Edit Category', + 'archive_expense_category' => 'Archive Category', + 'expense_categories' => 'Expense Categories', + 'list_expense_categories' => 'List Expense Categories', + 'updated_expense_category' => 'Successfully updated expense category', + 'created_expense_category' => 'Successfully created expense category', + 'archived_expense_category' => 'Successfully archived expense category', + 'archived_expense_categories' => 'Successfully archived :count expense category', + 'restore_expense_category' => 'Restore expense category', + 'restored_expense_category' => 'Successfully restored expense category', + 'apply_taxes' => 'Apply taxes', + 'min_to_max_users' => ':min to :max users', + 'max_users_reached' => 'The maximum number of users has been reached.' ); return $LANG; -?>. +?> diff --git a/resources/lang/es/texts.php b/resources/lang/es/texts.php index eccabaf4a6..9dad0dd9af 100644 --- a/resources/lang/es/texts.php +++ b/resources/lang/es/texts.php @@ -1,17 +1,15 @@ 'Empresa', - 'name' => 'Nombre', //Razon social-Colombia, + 'name' => 'Nombre', 'website' => 'Sitio Web', 'work_phone' => 'Teléfono', 'address' => 'Dirección', 'address1' => 'Calle', 'address2' => 'Bloq/Pta', 'city' => 'Ciudad', - 'state' => 'Región/Provincia', //Departamento-Colombia, Comarca-Panama + 'state' => 'Región/Provincia', 'postal_code' => 'Código Postal', 'country_id' => 'País', 'contacts' => 'Contactos', @@ -20,14 +18,12 @@ return array( 'phone' => 'Teléfono', 'email' => 'Correo Electrónico', 'additional_info' => 'Información adicional', - 'payment_terms' => 'Plazos de pago', // + 'payment_terms' => 'Plazos de pago', 'currency_id' => 'Divisa', 'size_id' => 'Tamaño de la Empresa', 'industry_id' => 'Industria', 'private_notes' => 'Notas Privadas', - - // invoice - 'invoice' => 'Factura de venta', //Factura de Venta-Colombia + 'invoice' => 'Factura de venta', 'client' => 'Cliente', 'invoice_date' => 'Fecha de factura', 'due_date' => 'Fecha de pago', @@ -38,7 +34,7 @@ return array( 'frequency_id' => 'Frecuencia', 'discount' => 'Descuento', 'taxes' => 'Impuestos', - 'tax' => 'Impuesto', //IVA for almost all latinamerica, ISV-Honduras, ITBMS-Panama, IV-Costa Rica, ITBIS- Republica Dominicana, IVU-Puerto Rico + 'tax' => 'Impuesto', 'item' => 'Concepto', 'description' => 'Descripción', 'unit_cost' => 'Coste unitario', @@ -73,8 +69,6 @@ return array( 'settings' => 'Configuración', 'enable_invoice_tax' => 'Activar impuesto para la factura', 'enable_line_item_tax' => 'Activar impuesto por concepto', - - // navigation 'dashboard' => 'Inicio', 'clients' => 'Clientes', 'invoices' => 'Facturas', @@ -99,8 +93,6 @@ return array( 'provide_email' => 'Por favor facilita una dirección de correo electrónico válida.', 'powered_by' => 'Plataforma por ', 'no_items' => 'No hay data', - - // recurring invoices 'recurring_invoices' => 'Facturas recurrentes', 'recurring_help' => 'Enviar facturas automáticamente a clientes semanalmente, bi-mensualmente, mensualmente, trimestral o anualmente.
Uso :MONTH, :QUARTER or :YEAR para fechas dinámicas. Matemáticas básicas también funcionan bien. Por ejemplo: :MONTH-1.
@@ -110,8 +102,6 @@ return array(Nosotros usamos pdfmake para definir los diseños de las facturas de manera declarativa. El playground de pdfmake es una excelente manera de ver a la librería en acción.
-Para acceder a una propiedad hija usando notación de punto.Por ejemplo, para mostrar el nombre de un cliente se puede usar $client.name
.
Si necesitas ayuda entendiendo algo puede preguntar en nuestro foro de soporte.
', - + 'customize_help' => 'We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
+You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', 'invoice_due_date' => 'Fecha de Vencimiento', 'quote_due_date' => 'Válida Hasta', 'valid_until' => 'Válida Hasta', @@ -740,15 +662,12 @@ return array( 'status_partial' => 'Parcial', 'status_paid' => 'Pagado', 'show_line_item_tax' => ' Mostrar impuestos por cada ítem en línea.', - 'iframe_url' => 'Sitio Web', 'iframe_url_help1' => 'Copia el siguiente código en una página de tu sitio web.', 'iframe_url_help2' => 'Puedes probar esta funcionalidad haciendo clic en \'Ver como el destinitario\' de una factura.', - 'auto_bill' => 'Cobro Automático', 'military_time' => 'Tiempo 24 Horas', 'last_sent' => 'Último Enviado', - 'reminder_emails' => 'Correos de Recordatorio', 'templates_and_reminders' => 'Plantillas & Recordatorios', 'subject' => 'Asunto', @@ -760,15 +679,12 @@ return array( 'reminder_subject' => 'Recordatorio: Factura :invoice de :account', 'reset' => 'Reiniciar', 'invoice_not_found' => 'La factura solicitada no está disponible', - 'referral_program' => 'Programa de Referidos', 'referral_code' => 'Código de Referidos', 'last_sent_on' => 'ültimo enviado en :date', - 'page_expire' => 'Esta página expirará pronto, :click_here para que siga funcionando', 'upcoming_quotes' => 'Próximas Cotizaciones', 'expired_quotes' => 'Cotizaciones Vencidas', - 'sign_up_using' => 'Ingrese usando', 'invalid_credentials' => 'Estas credenciales no concuerdan con nuestros registros', 'show_all_options' => 'Mostrar todas las opciones', @@ -777,17 +693,10 @@ return array( 'disable' => 'Deshabilitar', 'invoice_quote_number' => 'Números de Cotización y Factura', 'invoice_charges' => 'Cargos de Factura', - - 'invitation_status' => [ - 'sent' => 'Correo enviado', - 'opened' => 'Correo Abierto', - 'viewed' => 'Factura Vista', - ], 'notification_invoice_bounced' => 'No nos fue posible entregar la Factura :invoice a :contact.', 'notification_invoice_bounced_subject' => 'No fue posible entregar la Factura :invoice', 'notification_quote_bounced' => 'No nos fue posible entregar la Cotización :invoice a :contact.', 'notification_quote_bounced_subject' => 'No nos fue posible entregar la Cotización :invoice', - 'custom_invoice_link' => 'Link Personalizado de Factura', 'total_invoiced' => 'Total Facturado', 'open_balance' => 'Abrir Balance', @@ -795,15 +704,12 @@ return array( 'basic_settings' => 'Configuración Básica', 'pro' => 'Pro', 'gateways' => 'Pasarelas de Pago', - 'recurring_too_soon' => 'Es my pronto para crear la siguiente factura recurrente, it\'s scheduled for :date', - 'next_send_on' => 'Enviar Siguiente: :date', 'no_longer_running' => 'La ejecución de esta factura no está programada', 'general_settings' => 'Configuración General', 'customize' => 'Personalizar', 'oneclick_login_help' => 'Conecta una cuenta para ingresar sin contraseña', 'referral_code_help' => 'Gana dinero compartiendo nuestra app en linea', - 'enable_with_stripe' => 'Habilitar | Requiere Stripe', 'tax_settings' => 'Configuración de Impuestos', 'create_tax_rate' => 'Agregar Tasa de Impuesto', @@ -824,7 +730,6 @@ return array( 'invoice_counter' => 'Contador de Facturas', 'quote_counter' => 'Contador de Cotizaciones', 'type' => 'Tipo', - 'activity_1' => ':user creó el cliente :client', 'activity_2' => ':user archivó el cliente :client', 'activity_3' => ':user eliminó el cliente :client', @@ -854,18 +759,24 @@ return array( 'activity_27' => ':user restauró el pago :payment', 'activity_28' => ':user restauró :credit créditos', 'activity_29' => ':contact aprovó la cotización :quote', - + 'activity_30' => ':user created :vendor', + 'activity_31' => ':user created :vendor', + 'activity_32' => ':user created :vendor', + 'activity_33' => ':user created :vendor', + 'activity_34' => ':user created expense :expense', + 'activity_35' => ':user created :vendor', + 'activity_36' => ':user created :vendor', + 'activity_37' => ':user created :vendor', 'payment' => 'pago', 'system' => 'Sistema', 'signature' => 'Email Signature', 'default_messages' => 'Default Messages', 'quote_terms' => 'Quote Terms', 'default_quote_terms' => 'Default Quote Terms', - 'default_invoice_terms' => 'Default Invoice Terms', - 'default_invoice_footer' => 'Default Invoice Footer', + 'default_invoice_terms' => 'Configurar términos de factura por defecto', + 'default_invoice_footer' => 'Asignar pié de página por defecto para la factura', 'quote_footer' => 'Quote Footer', 'free' => 'Free', - 'quote_is_approved' => 'This quote is approved', 'apply_credit' => 'Apply Credit', 'system_settings' => 'System Settings', @@ -883,7 +794,6 @@ return array( 'restored_recurring_invoice' => 'Successfully restored recurring invoice', 'archived' => 'Archived', 'untitled_account' => 'Untitled Company', - 'before' => 'Before', 'after' => 'After', 'reset_terms_help' => 'Reset to the default account terms', @@ -892,7 +802,6 @@ return array( 'user' => 'User', 'country' => 'Country', 'include' => 'Include', - 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', 'import_freshbooks' => 'Import From FreshBooks', 'import_data' => 'Import Data', @@ -903,16 +812,6 @@ return array( 'task_file' => 'Task File', 'no_mapper' => 'No valid mapping for file', 'invalid_csv_header' => 'Invalid CSV Header', - - 'email_errors' => [ - 'inactive_client' => 'Emails can not be sent to inactive clients', - 'inactive_contact' => 'Emails can not be sent to inactive contacts', - 'inactive_invoice' => 'Emails can not be sent to inactive invoices', - 'user_unregistered' => 'Please register your account to send emails', - 'user_unconfirmed' => 'Please confirm your account to send emails', - 'invalid_contact_email' => 'Invalid contact email', - ], - 'client_portal' => 'Client Portal', 'admin' => 'Admin', 'disabled' => 'Disabled', @@ -921,11 +820,9 @@ return array( 'invoice_will_create' => 'client will be created', 'invoices_will_create' => 'invoices will be created', 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', - 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', - 'email_design' => 'Email Design', 'due_by' => 'Due by :date', 'enable_email_markup' => 'Enable Markup', @@ -937,7 +834,6 @@ return array( 'plain' => 'Plain', 'light' => 'Light', 'dark' => 'Dark', - 'industry_help' => 'Used to provide comparisons against the averages of companies of similar size and industry.', 'subdomain_help' => 'Customize the invoice link subdomain or display the invoice on your own website.', 'invoice_number_help' => 'Specify a prefix or use a custom pattern to dynamically set the invoice number.', @@ -946,8 +842,6 @@ return array( 'custom_account_fields_helps' => 'Add a label and value to the company details section of the PDF.', 'custom_invoice_fields_helps' => 'Add a text input to the invoice create/edit page and display the label and value on the PDF.', 'custom_invoice_charges_helps' => 'Add a text input to the invoice create/edit page and include the charge in the invoice subtotals.', - 'color_help' => 'Note: the primary color is also used in the client portal and custom email designs.', - 'token_expired' => 'Validation token was expired. Please try again.', 'invoice_link' => 'Invoice Link', 'button_confirmation_message' => 'Click to confirm your email address.', @@ -956,7 +850,6 @@ return array( 'created_invoices' => 'Successfully created :count invoice(s)', 'next_invoice_number' => 'The next invoice number is :number.', 'next_quote_number' => 'The next quote number is :number.', - 'days_before' => 'days before', 'days_after' => 'days after', 'field_due_date' => 'due date', @@ -964,10 +857,7 @@ return array( 'schedule' => 'Schedule', 'email_designs' => 'Email Designs', 'assigned_when_sent' => 'Assigned when sent', - 'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.', 'white_label_purchase_link' => 'Purchase a white label license', - - // Expense / vendor 'expense' => 'Expense', 'expenses' => 'Expenses', 'new_expense' => 'Enter Expense', @@ -984,8 +874,6 @@ return array( 'archived_expense' => 'Successfully archived expense', 'deleted_expenses' => 'Successfully deleted expenses', 'archived_expenses' => 'Successfully archived expenses', - - // Expenses 'expense_amount' => 'Expense Amount', 'expense_balance' => 'Expense Balance', 'expense_date' => 'Expense Date', @@ -1010,15 +898,11 @@ return array( 'expense_error_multiple_clients' => 'The expenses can\'t belong to different clients', 'expense_error_invoiced' => 'Expense has already been invoiced', 'convert_currency' => 'Convert currency', - - // Payment terms 'num_days' => 'Number of days', 'create_payment_term' => 'Create Payment Term', 'edit_payment_terms' => 'Edit Payment Term', 'edit_payment_term' => 'Edit Payment Term', 'archive_payment_term' => 'Archive Payment Term', - - // recurring due dates 'recurring_due_dates' => 'Recurring Invoice Due Dates', 'recurring_due_date_help' => 'Automatically sets a due date for the invoice.
Invoices on a monthly or yearly cycle set to be due on or before the day they are created will be due the next month. Invoices set to be due on the 29th or 30th in months that don\'t have that day will be due the last day of the month.
@@ -1046,15 +930,11 @@ return array( 'thursday' => 'Thursday', 'friday' => 'Friday', 'saturday' => 'Saturday', - - // Fonts 'header_font_id' => 'Header Font', 'body_font_id' => 'Body Font', 'color_font_help' => 'Note: the primary color and fonts are also used in the client portal and custom email designs.', - 'live_preview' => 'Live Preview', 'invalid_mail_config' => 'Unable to send email, please check that the mail settings are correct.', - 'invoice_message_button' => 'To view your invoice for :amount, click the button below.', 'quote_message_button' => 'To view your quote for :amount, click the button below.', 'payment_message_button' => 'Thank you for your payment of :amount.', @@ -1071,7 +951,6 @@ return array( 'archived_bank_account' => 'Successfully archived bank account', 'created_bank_account' => 'Successfully created bank account', 'validate_bank_account' => 'Validate Bank Account', - 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', 'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.', 'bank_password_warning' => 'Warning: your password may be transmitted in plain text, consider enabling HTTPS.', 'username' => 'Username', @@ -1085,7 +964,6 @@ return array( 'validate' => 'Validate', 'info' => 'Info', 'imported_expenses' => 'Successfully created :count_vendors vendor(s) and :count_expenses expense(s)', - 'iframe_url_help3' => 'Note: if you plan on accepting credit cards details we strongly recommend enabling HTTPS on your site.', 'expense_error_multiple_currencies' => 'The expenses can\'t have different currencies.', 'expense_error_mismatch_currencies' => 'The client\'s currency does not match the expense currency.', @@ -1106,7 +984,28 @@ return array( 'trial_call_to_action' => 'Start Free Trial', 'trial_success' => 'Successfully enabled two week free pro plan trial', 'overdue' => 'Overdue', - 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + + + 'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.', + 'user_email_footer' => 'Para ajustar la configuración de las notificaciones de tu correo, visita :link', + 'reset_password_footer' => 'Si no has solicitado un cambio de contraseña, por favor contactate con nosostros: :email', + 'limit_users' => 'Lo sentimos, esta acción excederá el límite de :limit usarios', + 'more_designs_self_host_header' => 'Adquiera 6 diseños adicionales de facturas por solo $:price', + 'old_browser' => 'Por favor utiliza más reciente', + 'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.', + 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', + + 'pro_plan_remove_logo' => ':link haz click para eliminar el logo de Invoice Ninja', + 'pro_plan_remove_logo_link' => 'Haz clic aquí', + 'invitation_status_sent' => 'Correo enviado', + 'invitation_status_opened' => 'Correo Abierto', + 'invitation_status_viewed' => 'Factura Vista', + 'email_error_inactive_client' => 'Emails can not be sent to inactive clients', + 'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts', + 'email_error_inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'email_error_user_unregistered' => 'Please register your account to send emails', + 'email_error_user_unconfirmed' => 'Please confirm your account to send emails', + 'email_error_invalid_contact_email' => 'Invalid contact email', 'navigation' => 'Navigation', 'list_invoices' => 'List Invoices', @@ -1129,22 +1028,20 @@ return array( 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', 'recurring_invoice_number' => 'Recurring Invoice Number', 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', - 'enable_client_portal' => 'Dashboard', - 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', // Client Passwords 'enable_portal_password'=>'Password protect invoices', 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', 'send_portal_password'=>'Generate password automatically', 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', - + 'expired' => 'Expired', 'invalid_card_number' => 'The credit card number is not valid.', 'invalid_expiry' => 'The expiration date is not valid.', 'invalid_cvv' => 'The CVV is not valid.', 'cost' => 'Cost', 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', - + // User Permissions 'owner' => 'Owner', 'administrator' => 'Administrator', @@ -1162,8 +1059,8 @@ return array( 'create_all_help' => 'Allow user to create and modify records', 'view_all_help' => 'Allow user to view records they didn\'t create', 'edit_all_help' => 'Allow user to modify records they didn\'t create', - 'view_payment' => 'View Payment', - + 'view_payment' => 'View Payment', + 'january' => 'January', 'february' => 'February', 'march' => 'March', @@ -1189,30 +1086,28 @@ return array( 'document_email_attachment' => 'Attach Documents', 'download_documents' => 'Download Documents (:size)', 'documents_from_expenses' => 'From Expenses:', - 'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage - 'DefaultMessage' => 'Drop files or click to upload', - 'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.', - 'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.', - 'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', - 'InvalidFileType' => 'You can\'t upload files of this type.', - 'ResponseError' => 'Server responded with {{statusCode}} code.', - 'CancelUpload' => 'Cancel upload', - 'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?', - 'RemoveFile' => 'Remove file', - ), + 'dropzone_default_message' => 'Drop files or click to upload', + 'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.', + 'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.', + 'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', + 'dropzone_invalid_file_type' => 'You can\'t upload files of this type.', + 'dropzone_response_error' => 'Server responded with {{statusCode}} code.', + 'dropzone_cancel_upload' => 'Cancel upload', + 'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?', + 'dropzone_remove_file' => 'Remove file', 'documents' => 'Documents', 'document_date' => 'Document Date', 'document_size' => 'Size', - 'enable_client_portal' => 'Client Portal', - 'enable_client_portal_help' => 'Show/hide the client portal.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', 'enable_client_portal_dashboard' => 'Dashboard', 'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.', - + // Plans 'account_management' => 'Account Management', 'plan_status' => 'Plan Status', - + 'plan_upgrade' => 'Upgrade', 'plan_change' => 'Change Plan', 'pending_change_to' => 'Changes To', @@ -1242,9 +1137,9 @@ return array( 'plan_paid' => 'Term Started', 'plan_started' => 'Plan Started', 'plan_expires' => 'Plan Expires', - + 'white_label_button' => 'White Label', - + 'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', 'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.', 'enterprise_plan_product' => 'Enterprise Plan', @@ -1262,7 +1157,207 @@ return array( 'preview' => 'Preview', 'list_vendors' => 'List Vendors', 'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.', - 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.', + 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments, :link to see the full list of features.', 'return_to_app' => 'Return to app', - + + + // Payment updates + 'refund_payment' => 'Refund Payment', + 'refund_max' => 'Max:', + 'refund' => 'Refund', + 'are_you_sure_refund' => 'Refund selected payments?', + 'status_pending' => 'Pending', + 'status_completed' => 'Completed', + 'status_failed' => 'Failed', + 'status_partially_refunded' => 'Partially Refunded', + 'status_partially_refunded_amount' => ':amount Refunded', + 'status_refunded' => 'Refunded', + 'status_voided' => 'Cancelled', + 'refunded_payment' => 'Refunded Payment', + 'activity_39' => ':user cancelled a :payment_amount payment (:payment)', + 'activity_40' => ':user refunded :adjustment of a :payment_amount payment (:payment)', + 'card_expiration' => 'Exp: :expires', + + 'card_creditcardother' => 'Unknown', + 'card_americanexpress' => 'American Express', + 'card_carteblanche' => 'Carte Blanche', + 'card_unionpay' => 'UnionPay', + 'card_diners' => 'Diners Club', + 'card_discover' => 'Discover', + 'card_jcb' => 'JCB', + 'card_laser' => 'Laser', + 'card_maestro' => 'Maestro', + 'card_mastercard' => 'MasterCard', + 'card_solo' => 'Solo', + 'card_switch' => 'Switch', + 'card_visacard' => 'Visa', + 'card_ach' => 'ACH', + + 'payment_type_stripe' => 'Stripe', + 'ach' => 'ACH', + 'enable_ach' => 'Enable ACH', + 'stripe_ach_help' => 'ACH support must also be enabled at Stripe.', + 'ach_disabled' => 'Another gateway is already configured for direct debit.', + + 'plaid' => 'Plaid', + 'client_id' => 'Client Id', + 'secret' => 'Secret', + 'public_key' => 'Public Key', + 'plaid_optional' => '(optional)', + 'plaid_environment_help' => 'When a Stripe test key is given, Plaid\'s development environement (tartan) will be used.', + 'other_providers' => 'Other Providers', + 'country_not_supported' => 'That country is not supported.', + 'invalid_routing_number' => 'The routing number is not valid.', + 'invalid_account_number' => 'The account number is not valid.', + 'account_number_mismatch' => 'The account numbers do not match.', + 'missing_account_holder_type' => 'Please select an individual or company account.', + 'missing_account_holder_name' => 'Please enter the account holder\'s name.', + 'routing_number' => 'Routing Number', + 'confirm_account_number' => 'Confirm Account Number', + 'individual_account' => 'Individual Account', + 'company_account' => 'Company Account', + 'account_holder_name' => 'Account Holder Name', + 'add_account' => 'Add Account', + 'payment_methods' => 'Payment Methods', + 'complete_verification' => 'Complete Verification', + 'verification_amount1' => 'Amount 1', + 'verification_amount2' => 'Amount 2', + 'payment_method_verified' => 'Verification completed successfully', + 'verification_failed' => 'Verification Failed', + 'remove_payment_method' => 'Remove Payment Method', + 'confirm_remove_payment_method' => 'Are you sure you want to remove this payment method?', + 'remove' => 'Remove', + 'payment_method_removed' => 'Removed payment method.', + 'bank_account_verification_help' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. Please enter the amounts below.', + 'bank_account_verification_next_steps' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. + Once you have the amounts, come back to this payment methods page and click "Complete Verification" next to the account.', + 'unknown_bank' => 'Unknown Bank', + 'ach_verification_delay_help' => 'You will be able to use the account after completing verification. Verification usually takes 1-2 business days.', + 'add_credit_card' => 'Add Credit Card', + 'payment_method_added' => 'Added payment method.', + 'use_for_auto_bill' => 'Use For Autobill', + 'used_for_auto_bill' => 'Autobill Payment Method', + 'payment_method_set_as_default' => 'Set Autobill payment method.', + 'activity_41' => ':payment_amount payment (:payment) failed', + 'webhook_url' => 'Webhook URL', + 'stripe_webhook_help' => 'You must :link.', + 'stripe_webhook_help_link_text' => 'add this URL as an endpoint at Stripe', + 'payment_method_error' => 'There was an error adding your payment methd. Please try again later.', + 'notification_invoice_payment_failed_subject' => 'Payment failed for Invoice :invoice', + 'notification_invoice_payment_failed' => 'A payment made by client :client towards Invoice :invoice failed. The payment has been marked as failed and :amount has been added to the client\'s balance.', + 'link_with_plaid' => 'Link Account Instantly with Plaid', + 'link_manually' => 'Link Manually', + 'secured_by_plaid' => 'Secured by Plaid', + 'plaid_linked_status' => 'Your bank account at :bank', + 'add_payment_method' => 'Add Payment Method', + 'account_holder_type' => 'Account Holder Type', + 'ach_authorization' => 'I authorize :company to use my bank account for future payments and, if necessary, electronically credit my account to correct erroneous debits. I understand that I may cancel this authorization at any time by removing the payment method or by contacting :email.', + 'ach_authorization_required' => 'You must consent to ACH transactions.', + 'off' => 'Off', + 'opt_in' => 'Opt-in', + 'opt_out' => 'Opt-out', + 'always' => 'Always', + 'opted_out' => 'Opted out', + 'opted_in' => 'Opted in', + 'manage_auto_bill' => 'Manage Auto-bill', + 'enabled' => 'Enabled', + 'paypal' => 'PayPal', + 'braintree_enable_paypal' => 'Enable PayPal payments through BrainTree', + 'braintree_paypal_disabled_help' => 'The PayPal gateway is processing PayPal payments', + 'braintree_paypal_help' => 'You must also :link.', + 'braintree_paypal_help_link_text' => 'link PayPal to your BrainTree account', + 'token_billing_braintree_paypal' => 'Save payment details', + 'add_paypal_account' => 'Add PayPal Account', + + + 'no_payment_method_specified' => 'No payment method specified', + 'chart_type' => 'Chart Type', + 'format' => 'Format', + 'import_ofx' => 'Import OFX', + 'ofx_file' => 'OFX File', + 'ofx_parse_failed' => 'Failed to parse OFX file', + + // WePay + 'wepay' => 'WePay', + 'sign_up_with_wepay' => 'Sign up with WePay', + 'use_another_provider' => 'Use another provider', + 'company_name' => 'Company Name', + 'wepay_company_name_help' => 'This will appear on client\'s credit card statements.', + 'wepay_description_help' => 'The purpose of this account.', + 'wepay_tos_agree' => 'I agree to the :link.', + 'wepay_tos_link_text' => 'WePay Terms of Service', + 'resend_confirmation_email' => 'Resend Confirmation Email', + 'manage_wepay_account' => 'Manage WePay Account', + 'action_required' => 'Action Required', + 'finish_setup' => 'Finish Setup', + 'created_wepay_confirmation_required' => 'Please check your email and confirm your email address with WePay.', + 'switch_to_wepay' => 'Switch to WePay', + 'switch' => 'Switch', + 'restore_account_gateway' => 'Restore Gateway', + 'restored_account_gateway' => 'Successfully restored gateway', + 'united_states' => 'United States', + 'canada' => 'Canada', + 'accept_debit_cards' => 'Accept Debit Cards', + 'debit_cards' => 'Debit Cards', + + 'warn_start_date_changed' => 'The next invoice will be sent on the new start date.', + 'original_start_date' => 'Original start date', + 'new_start_date' => 'New start date', + 'security' => 'Security', + 'see_whats_new' => 'See what\'s new in v:version', + 'wait_for_upload' => 'Please wait for the document upload to complete.', + 'upgrade_for_permissions' => 'Upgrade to our Enterprise plan to enable permissions.', + 'enable_second_tax_rate' => 'Enable specifying a second tax rate', + 'payment_file' => 'Payment File', + 'expense_file' => 'Expense File', + 'product_file' => 'Product File', + 'import_products' => 'Import Products', + 'products_will_create' => 'products will be created.', + 'product_key' => 'Product', + 'created_products' => 'Successfully created :count product(s)', + 'export_help' => 'Use JSON if you plan to import the data into Invoice Ninja.', + 'JSON_file' => 'JSON File', + + 'view_dashboard' => 'View Dashboard', + 'client_session_expired' => 'Session Expired', + 'client_session_expired_message' => 'Your session has expired. Please click the link in your email again.', + + 'auto_bill_notification' => 'This invoice will automatically be billed to your :payment_method on file on :due_date.', + 'auto_bill_payment_method_bank_transfer' => 'bank account', + 'auto_bill_payment_method_credit_card' => 'credit card', + 'auto_bill_payment_method_paypal' => 'PayPal account', + 'auto_bill_notification_placeholder' => 'This invoice will automatically be billed to your credit card on file on the due date.', + 'payment_settings' => 'Payment Settings', + + 'on_send_date' => 'On send date', + 'on_due_date' => 'On due date', + 'auto_bill_ach_date_help' => 'ACH auto bill will always happen on the due date', + 'warn_change_auto_bill' => 'Due to NACHA rules, changes to this invoice may prevent ACH auto bill.', + + 'bank_account' => 'Bank Account', + 'payment_processed_through_wepay' => 'ACH payments will be processed using WePay.', + 'wepay_payment_tos_agree' => 'I agree to the WePay :terms and :privacy_policy.', + 'privacy_policy' => 'Privacy Policy', + 'wepay_payment_tos_agree_required' => 'You must agree to the WePay Terms of Service and Privacy Policy.', + 'payment_settings_supported_gateways' => 'These options are supported by the WePay, Stripe, and Braintree gateways.', + 'ach_email_prompt' => 'Please enter your email address:', + 'verification_pending' => 'Verification Pending', + + 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', + 'credit_card' => 'Credit Card', + 'bank_transfer' => 'Bank Transfer', + 'no_transaction_reference' => 'We did not recieve a payment transaction reference from the gateway.', + 'use_bank_on_file' => 'Use Bank on File', + 'auto_bill_email_message' => 'This invoice will automatically be billed to the payment method on file on the due date.', + 'bitcoin' => 'Bitcoin', + 'added_on' => 'Added :date', + 'failed_remove_payment_method' => 'Failed to remove the payment method', + 'gateway_exists' => 'This gateway already exists', + 'manual_entry' => 'Manual entry', + ); + +return $LANG; + +?> diff --git a/resources/lang/es_ES/texts.php b/resources/lang/es_ES/texts.php index d6aa9f0aa6..275b21a4e4 100644 --- a/resources/lang/es_ES/texts.php +++ b/resources/lang/es_ES/texts.php @@ -1,8 +1,6 @@ 'Empresa', 'name' => 'Nombre', 'website' => 'Sitio Web', @@ -20,13 +18,11 @@ return array( 'phone' => 'Teléfono', 'email' => 'Email', 'additional_info' => 'Información adicional', - 'payment_terms' => 'Plazos de pago', // + 'payment_terms' => 'Plazos de pago', 'currency_id' => 'Divisa', 'size_id' => 'Tamaño', 'industry_id' => 'Industria', 'private_notes' => 'Notas Privadas', - - // invoice 'invoice' => 'Factura', 'client' => 'Cliente', 'invoice_date' => 'Fecha de factura', @@ -73,8 +69,6 @@ return array( 'settings' => 'Configuración', 'enable_invoice_tax' => 'Activar Impuesto para el Total de la Factura', 'enable_line_item_tax' => 'Activar Impuesto para cada Concepto de la Factura', - - // navigation 'dashboard' => 'Inicio', 'clients' => 'Clientes', 'invoices' => 'Facturas', @@ -99,8 +93,6 @@ return array( 'provide_email' => 'Por favor facilita una dirección de correo válida.', 'powered_by' => 'Creado por', 'no_items' => 'No hay datos', - - // recurring invoices 'recurring_invoices' => 'Facturas periódicas', 'recurring_help' => 'Enviar facturas automáticamente a clientes semanalmente, bi-mensualmente, mensualmente, trimestral o anualmente.
Usando :MONTH, :QUARTER or :YEAR para fechas dinámicas. Y utilizando tambien Matemáticas básicas. Por ejemplo: :MONTH-1.
@@ -110,8 +102,6 @@ return array(We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
-To access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum.
', - +You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', 'invoice_due_date' => 'Fecha de Pago', 'quote_due_date' => 'Válido hasta', 'valid_until' => 'Válido hasta', @@ -761,15 +662,12 @@ return array( 'status_partial' => 'Parcial', 'status_paid' => 'Pagada', 'show_line_item_tax' => 'Mostrar importe por concepto en la linea de concepto', - 'iframe_url' => 'Website', 'iframe_url_help1' => 'Copia el siguiente codigo para una pagina de si sitio web.', 'iframe_url_help2' => 'Puedes probar esta caracteristica pulsando \'Ver como destinatario\' para una Factura.', - 'auto_bill' => 'Facturación automática', 'military_time' => '24 Horas', 'last_sent' => 'Última enviada', - 'reminder_emails' => 'Correos recordatorio', 'templates_and_reminders' => 'Plantillas & Recordatorios', 'subject' => 'Asunto', @@ -781,15 +679,12 @@ return array( 'reminder_subject' => 'Recordatorio: Factura :invoice de :account', 'reset' => 'Reiniciar', 'invoice_not_found' => 'La Factura solicitara no está disponible', - 'referral_program' => 'Programa de Recomendaciones', 'referral_code' => 'Codigo de Recomendacion', 'last_sent_on' => 'Enviado la ultima vez en :date', - 'page_expire' => 'Esta página expirará en breve, :click_here para seguir trabajando', 'upcoming_quotes' => 'Próximos Presupuestos', 'expired_quotes' => 'Presupuestos Expirados', - 'sign_up_using' => 'Registrarse usando', 'invalid_credentials' => 'Las credenciales no coinciden con nuestros registros', 'show_all_options' => 'Mostrar todas las opciones', @@ -798,17 +693,10 @@ return array( 'disable' => 'Deshabilitado', 'invoice_quote_number' => 'Números de Factura y Presupuesto', 'invoice_charges' => 'Cargos de factura', - - 'invitation_status' => [ - 'sent' => 'Correo Enviado', - 'opened' => 'Correo abierto', - 'viewed' => 'Factura vista', - ], 'notification_invoice_bounced' => 'No podemos entregar la factura :invoice a :contact.', 'notification_invoice_bounced_subject' => 'No se puede entregar la factura :invoice', 'notification_quote_bounced' => 'No podemos entregar el presupuesto :invoice a :contact.', 'notification_quote_bounced_subject' => 'No se puede entregar el presupuesto :invoice', - 'custom_invoice_link' => 'Enlace a factura personalizado', 'total_invoiced' => 'Total facturado', 'open_balance' => 'Saldo abierto', @@ -816,14 +704,12 @@ return array( 'basic_settings' => 'Configuraciones Básicas', 'pro' => 'Pro', 'gateways' => 'Pasarelas de Pago', - 'next_send_on' => 'Próximo envío: :date', 'no_longer_running' => 'Esta factura no esta programada para su ejecución', 'general_settings' => 'Configuraciones Generales', 'customize' => 'Personalizar', 'oneclick_login_help' => 'Conectar una cuenta a un login sin password', 'referral_code_help' => 'Gana dinero compartiendo nuestras aplicacion online', - 'enable_with_stripe' => 'Habilitado | Requiere Stripe', 'tax_settings' => 'Configuraciones de Impuestos', 'create_tax_rate' => 'Añadir Tipo Impositivo', @@ -844,7 +730,6 @@ return array( 'invoice_counter' => 'Contador de Factura', 'quote_counter' => 'Contador de Presupuesto', 'type' => 'Tipo', - 'activity_1' => ':user creó el cliente :client', 'activity_2' => ':user archivó el cliente :client', 'activity_3' => ':user borró el cliente :client', @@ -874,18 +759,24 @@ return array( 'activity_27' => ':user restauró el pago :payment', 'activity_28' => ':user restauró :credit credito', 'activity_29' => ':contact approved presupuesto :quote', - + 'activity_30' => ':user created :vendor', + 'activity_31' => ':user created :vendor', + 'activity_32' => ':user created :vendor', + 'activity_33' => ':user created :vendor', + 'activity_34' => ':user created expense :expense', + 'activity_35' => ':user created :vendor', + 'activity_36' => ':user created :vendor', + 'activity_37' => ':user created :vendor', 'payment' => 'Pago', 'system' => 'Sistema', 'signature' => 'Firma del correo', 'default_messages' => 'Mensajes por defecto', 'quote_terms' => 'Terminos del presupuesto', 'default_quote_terms' => 'Terminos del presupuesto por defecto', - 'default_invoice_terms' => 'Terminos de la factura por defecto', - 'default_invoice_footer' => 'Pie de la factura por defecto', + 'default_invoice_terms' => 'Configurar términos de factura por defecto', + 'default_invoice_footer' => 'Establecer pie de página por defecto en factura', 'quote_footer' => 'Pie del presupuesto', 'free' => 'Gratis', - 'quote_is_approved' => 'Este presupuesto esta aprovado', 'apply_credit' => 'Aplicar Crédito', 'system_settings' => 'Configuración del Sistema', @@ -903,7 +794,6 @@ return array( 'restored_recurring_invoice' => 'Factura periódica restaurada', 'archived' => 'Archivado', 'untitled_account' => 'Compañía sin Nombre', - 'before' => 'Antes', 'after' => 'Despues', 'reset_terms_help' => 'Reset to the default account terms', @@ -912,7 +802,6 @@ return array( 'user' => 'Usuario', 'country' => 'Pais', 'include' => 'Incluir', - 'logo_too_large' => 'El logo es :size, para un buen rendimiento del PDF, sugerimos cargar una imagen de menos de 200KB', 'import_freshbooks' => 'Importar desde FreshBooks', 'import_data' => 'Importar datos', @@ -923,16 +812,6 @@ return array( 'task_file' => 'Fichero de Tareas', 'no_mapper' => 'Mapeo no válido para el fichero', 'invalid_csv_header' => 'Cabecera CSV no Válida', - - 'email_errors' => [ - 'inactive_client' => 'No se pueden enviar correos a Clientes inactivos', - 'inactive_contact' => 'No se pueden enviar correos a Contactos inactivos', - 'inactive_invoice' => 'No se pueden enviar correos de Facturas inactivas', - 'user_unregistered' => 'Por favor registra tu cuenta para enviar correos', - 'user_unconfirmed' => 'Por favor confirma tu cuenta para enviar correos', - 'invalid_contact_email' => 'Correo de contacto no válido', - ], - 'client_portal' => 'Portal Cliente', 'admin' => 'Admin.', 'disabled' => 'Deshabilitado', @@ -941,11 +820,9 @@ return array( 'invoice_will_create' => 'cliente será creado', 'invoices_will_create' => 'facturas seran creadas', 'failed_to_import' => 'Los siguientes registros fallaron al importar', - 'publishable_key' => 'Clave pública', 'secret_key' => 'Clave Privada', 'missing_publishable_key' => 'Establece tu clacve publica de Stripe para mejorar el proceso de checkout', - 'email_design' => 'Diseño de Correo', 'due_by' => 'Pagado en :date', 'enable_email_markup' => 'Habilitar Markup', @@ -957,7 +834,6 @@ return array( 'plain' => 'Plano', 'light' => 'Claro', 'dark' => 'Oscuro', - 'industry_help' => 'Usado para proporcionar comparaciones de las medias de las empresas de tamaño y industria similar.', 'subdomain_help' => 'Personaliza el subdominio para el enlace de la factura o mostrar la factura en su propio sitio web.', 'invoice_number_help' => 'Especifique un prefijo o utilice un patrón a medida para establecer dinámicamente el número de factura.', @@ -966,8 +842,6 @@ return array( 'custom_account_fields_helps' => 'Añadir una etiqueta y valor a la sección de detalles de la empresa del PDF.', 'custom_invoice_fields_helps' => 'Agregar una entrada de texto a la pagina de crear/editar factura y mostrar la etiqueta y el valor en el PDF.', 'custom_invoice_charges_helps' => 'gregar una entrada de texto a la pagina de crear/editar factura y mostrar la carga en los subtotales de la factura.', - 'color_help' => 'Nota: el color primario también se utiliza en el portal del cliente y los diseños de correo electrónico personalizado.', - 'token_expired' => 'Token de validación ha caducado. Por favor, vuelva a intentarlo.', 'invoice_link' => 'Enlace a Factura', 'button_confirmation_message' => 'Pulse aqui para confirmar su dirección de correo.', @@ -976,7 +850,6 @@ return array( 'created_invoices' => ':count factura(s) creada(s) correctamente', 'next_invoice_number' => 'El próximo número de factura es :number.', 'next_quote_number' => 'El próximo número de presupuesto es :number.', - 'days_before' => 'dias antes', 'days_after' => 'dias despues', 'field_due_date' => 'fecha de pago', @@ -984,11 +857,7 @@ return array( 'schedule' => 'Programar', 'email_designs' => 'Diseños de correo', 'assigned_when_sent' => 'Asignado al enviar', - - 'white_label_custom_css' => ':link para $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.', 'white_label_purchase_link' => 'Comprar licencia de marca blanca', - - // Expense / vendor 'expense' => 'Gasto', 'expenses' => 'Gastos', 'new_expense' => 'Nuevo Gasto', @@ -1005,8 +874,6 @@ return array( 'archived_expense' => 'Gasto archivado correctamente', 'deleted_expenses' => 'Gastos borrados correctamente', 'archived_expenses' => 'Gastos archivados correctamente', - - // Expenses 'expense_amount' => 'Importe del Gasto', 'expense_balance' => 'Saldo del Gasto', 'expense_date' => 'Fecha del Gasto', @@ -1031,15 +898,11 @@ return array( 'expense_error_multiple_clients' => 'Los gastos no pertenecen a diferentes clientes', 'expense_error_invoiced' => 'El gasto ya ha sido Facturado', 'convert_currency' => 'Convertir moneda', - - // Payment terms 'num_days' => 'Número de días', 'create_payment_term' => 'Crear Término de Pago', 'edit_payment_terms' => 'Editar los Términos de Pago', 'edit_payment_term' => 'Editar el Término de Pago', 'archive_payment_term' => 'Archivar Término de Pago', - - // recurring due dates 'recurring_due_dates' => 'Fecha de Vencimiento de Factura Periodica', 'recurring_due_date_help' => 'Define automáticamente una fecha de vencimiento de la factura..
Facturas en un ciclo mensual o anual preparadas para vencer el día que se crearon o antes, vencerán al siguiente mes. Facturas preparadas para vencer el 29 o el 30, en los meses que no tienen ese día, vencerán el último día del mes
@@ -1066,15 +929,11 @@ return array( 'thursday' => 'Jueves', 'friday' => 'Viernes', 'saturday' => 'Sabado', - - // Fonts 'header_font_id' => 'Tipo de letra de la cabecera', 'body_font_id' => 'Tipo de letra del cuerpo', 'color_font_help' => 'Nota: el color primario y las fuentes también se utilizan en el portal del cliente y los diseños de correo electrónico personalizados.', - 'live_preview' => 'Live Preview', 'invalid_mail_config' => 'Imposible enviar el correo, por favor, comprobar que la configuración de correo es correcta..', - 'invoice_message_button' => 'Para ver su factura con importe :amount, pulse el siguiente botón.', 'quote_message_button' => 'Para ver su presupuesto con importe :amount, pulse el siguiente botón.', 'payment_message_button' => 'Gracias por su pago de :amount.', @@ -1091,7 +950,6 @@ return array( 'archived_bank_account' => 'Cuenta Bancaria archivada correctamente', 'created_bank_account' => 'Cuenta Bancaria creada correctamente', 'validate_bank_account' => 'Validar Cuenta Bancaria', - 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', 'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.', 'bank_password_warning' => 'Warning: your password may be transmitted in plain text, consider enabling HTTPS.', 'username' => 'Usuario', @@ -1105,7 +963,6 @@ return array( 'validate' => 'Validar', 'info' => 'Info', 'imported_expenses' => ' :count_vendors proveedor(es) and :count_expenses gasto(s) importados correctamente', - 'iframe_url_help3' => 'Nota: Si piensas aceptar tarjetas de credito recomendamos tener habilitado HTTPS.', 'expense_error_multiple_currencies' => 'The expenses can\'t have different currencies.', 'expense_error_mismatch_currencies' => 'The client\'s currency does not match the expense currency.', @@ -1126,7 +983,28 @@ return array( 'trial_call_to_action' => 'Start Free Trial', 'trial_success' => 'Successfully enabled two week free pro plan trial', 'overdue' => 'Overdue', - 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + + + 'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.', + 'user_email_footer' => 'Para ajustar la configuración de las notificaciones de tu email, visita :link', + 'reset_password_footer' => 'Si no has solicitado un cambio de contraseña, por favor contactate con nosostros: :email', + 'limit_users' => 'Lo sentimos, esta acción excederá el límite de :limit usarios', + 'more_designs_self_host_header' => 'Obtenga 6 diseños más para facturas por sólo $:price', + 'old_browser' => 'Por favor use un navegador mas actual', + 'white_label_custom_css' => ':link para $:price to enable custom styling and help support our project.', + 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', + + 'pro_plan_remove_logo' => ':link haz click para eliminar el logo de Invoice Ninja', + 'pro_plan_remove_logo_link' => 'Haz click aquí', + 'invitation_status_sent' => 'Correo Enviado', + 'invitation_status_opened' => 'Correo abierto', + 'invitation_status_viewed' => 'Factura vista', + 'email_error_inactive_client' => 'No se pueden enviar correos a Clientes inactivos', + 'email_error_inactive_contact' => 'No se pueden enviar correos a Contactos inactivos', + 'email_error_inactive_invoice' => 'No se pueden enviar correos de Facturas inactivas', + 'email_error_user_unregistered' => 'Por favor registra tu cuenta para enviar correos', + 'email_error_user_unconfirmed' => 'Por favor confirma tu cuenta para enviar correos', + 'email_error_invalid_contact_email' => 'Correo de contacto no válido', 'navigation' => 'Navigation', 'list_invoices' => 'List Invoices', @@ -1149,22 +1027,20 @@ return array( 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', 'recurring_invoice_number' => 'Recurring Invoice Number', 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', - 'enable_client_portal' => 'Dashboard', - 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', // Client Passwords 'enable_portal_password'=>'Password protect invoices', 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', 'send_portal_password'=>'Generate password automatically', 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', - + 'expired' => 'Expired', 'invalid_card_number' => 'The credit card number is not valid.', 'invalid_expiry' => 'The expiration date is not valid.', 'invalid_cvv' => 'The CVV is not valid.', 'cost' => 'Cost', 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', - + // User Permissions 'owner' => 'Owner', 'administrator' => 'Administrator', @@ -1182,8 +1058,8 @@ return array( 'create_all_help' => 'Allow user to create and modify records', 'view_all_help' => 'Allow user to view records they didn\'t create', 'edit_all_help' => 'Allow user to modify records they didn\'t create', - 'view_payment' => 'View Payment', - + 'view_payment' => 'View Payment', + 'january' => 'January', 'february' => 'February', 'march' => 'March', @@ -1209,30 +1085,28 @@ return array( 'document_email_attachment' => 'Attach Documents', 'download_documents' => 'Download Documents (:size)', 'documents_from_expenses' => 'From Expenses:', - 'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage - 'DefaultMessage' => 'Drop files or click to upload', - 'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.', - 'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.', - 'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', - 'InvalidFileType' => 'You can\'t upload files of this type.', - 'ResponseError' => 'Server responded with {{statusCode}} code.', - 'CancelUpload' => 'Cancel upload', - 'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?', - 'RemoveFile' => 'Remove file', - ), + 'dropzone_default_message' => 'Drop files or click to upload', + 'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.', + 'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.', + 'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', + 'dropzone_invalid_file_type' => 'You can\'t upload files of this type.', + 'dropzone_response_error' => 'Server responded with {{statusCode}} code.', + 'dropzone_cancel_upload' => 'Cancel upload', + 'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?', + 'dropzone_remove_file' => 'Remove file', 'documents' => 'Documents', 'document_date' => 'Document Date', 'document_size' => 'Size', - 'enable_client_portal' => 'Client Portal', - 'enable_client_portal_help' => 'Show/hide the client portal.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', 'enable_client_portal_dashboard' => 'Dashboard', 'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.', - + // Plans 'account_management' => 'Account Management', 'plan_status' => 'Plan Status', - + 'plan_upgrade' => 'Upgrade', 'plan_change' => 'Change Plan', 'pending_change_to' => 'Changes To', @@ -1262,9 +1136,9 @@ return array( 'plan_paid' => 'Term Started', 'plan_started' => 'Plan Started', 'plan_expires' => 'Plan Expires', - + 'white_label_button' => 'White Label', - + 'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', 'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.', 'enterprise_plan_product' => 'Enterprise Plan', @@ -1282,7 +1156,207 @@ return array( 'preview' => 'Preview', 'list_vendors' => 'List Vendors', 'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.', - 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.', + 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments, :link to see the full list of features.', 'return_to_app' => 'Return to app', - + + + // Payment updates + 'refund_payment' => 'Refund Payment', + 'refund_max' => 'Max:', + 'refund' => 'Refund', + 'are_you_sure_refund' => 'Refund selected payments?', + 'status_pending' => 'Pending', + 'status_completed' => 'Completed', + 'status_failed' => 'Failed', + 'status_partially_refunded' => 'Partially Refunded', + 'status_partially_refunded_amount' => ':amount Refunded', + 'status_refunded' => 'Refunded', + 'status_voided' => 'Cancelled', + 'refunded_payment' => 'Refunded Payment', + 'activity_39' => ':user cancelled a :payment_amount payment (:payment)', + 'activity_40' => ':user refunded :adjustment of a :payment_amount payment (:payment)', + 'card_expiration' => 'Exp: :expires', + + 'card_creditcardother' => 'Unknown', + 'card_americanexpress' => 'American Express', + 'card_carteblanche' => 'Carte Blanche', + 'card_unionpay' => 'UnionPay', + 'card_diners' => 'Diners Club', + 'card_discover' => 'Discover', + 'card_jcb' => 'JCB', + 'card_laser' => 'Laser', + 'card_maestro' => 'Maestro', + 'card_mastercard' => 'MasterCard', + 'card_solo' => 'Solo', + 'card_switch' => 'Switch', + 'card_visacard' => 'Visa', + 'card_ach' => 'ACH', + + 'payment_type_stripe' => 'Stripe', + 'ach' => 'ACH', + 'enable_ach' => 'Enable ACH', + 'stripe_ach_help' => 'ACH support must also be enabled at Stripe.', + 'ach_disabled' => 'Another gateway is already configured for direct debit.', + + 'plaid' => 'Plaid', + 'client_id' => 'Client Id', + 'secret' => 'Secret', + 'public_key' => 'Public Key', + 'plaid_optional' => '(optional)', + 'plaid_environment_help' => 'When a Stripe test key is given, Plaid\'s development environement (tartan) will be used.', + 'other_providers' => 'Other Providers', + 'country_not_supported' => 'That country is not supported.', + 'invalid_routing_number' => 'The routing number is not valid.', + 'invalid_account_number' => 'The account number is not valid.', + 'account_number_mismatch' => 'The account numbers do not match.', + 'missing_account_holder_type' => 'Please select an individual or company account.', + 'missing_account_holder_name' => 'Please enter the account holder\'s name.', + 'routing_number' => 'Routing Number', + 'confirm_account_number' => 'Confirm Account Number', + 'individual_account' => 'Individual Account', + 'company_account' => 'Company Account', + 'account_holder_name' => 'Account Holder Name', + 'add_account' => 'Add Account', + 'payment_methods' => 'Payment Methods', + 'complete_verification' => 'Complete Verification', + 'verification_amount1' => 'Amount 1', + 'verification_amount2' => 'Amount 2', + 'payment_method_verified' => 'Verification completed successfully', + 'verification_failed' => 'Verification Failed', + 'remove_payment_method' => 'Remove Payment Method', + 'confirm_remove_payment_method' => 'Are you sure you want to remove this payment method?', + 'remove' => 'Remove', + 'payment_method_removed' => 'Removed payment method.', + 'bank_account_verification_help' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. Please enter the amounts below.', + 'bank_account_verification_next_steps' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. + Once you have the amounts, come back to this payment methods page and click "Complete Verification" next to the account.', + 'unknown_bank' => 'Unknown Bank', + 'ach_verification_delay_help' => 'You will be able to use the account after completing verification. Verification usually takes 1-2 business days.', + 'add_credit_card' => 'Add Credit Card', + 'payment_method_added' => 'Added payment method.', + 'use_for_auto_bill' => 'Use For Autobill', + 'used_for_auto_bill' => 'Autobill Payment Method', + 'payment_method_set_as_default' => 'Set Autobill payment method.', + 'activity_41' => ':payment_amount payment (:payment) failed', + 'webhook_url' => 'Webhook URL', + 'stripe_webhook_help' => 'You must :link.', + 'stripe_webhook_help_link_text' => 'add this URL as an endpoint at Stripe', + 'payment_method_error' => 'There was an error adding your payment methd. Please try again later.', + 'notification_invoice_payment_failed_subject' => 'Payment failed for Invoice :invoice', + 'notification_invoice_payment_failed' => 'A payment made by client :client towards Invoice :invoice failed. The payment has been marked as failed and :amount has been added to the client\'s balance.', + 'link_with_plaid' => 'Link Account Instantly with Plaid', + 'link_manually' => 'Link Manually', + 'secured_by_plaid' => 'Secured by Plaid', + 'plaid_linked_status' => 'Your bank account at :bank', + 'add_payment_method' => 'Add Payment Method', + 'account_holder_type' => 'Account Holder Type', + 'ach_authorization' => 'I authorize :company to use my bank account for future payments and, if necessary, electronically credit my account to correct erroneous debits. I understand that I may cancel this authorization at any time by removing the payment method or by contacting :email.', + 'ach_authorization_required' => 'You must consent to ACH transactions.', + 'off' => 'Off', + 'opt_in' => 'Opt-in', + 'opt_out' => 'Opt-out', + 'always' => 'Always', + 'opted_out' => 'Opted out', + 'opted_in' => 'Opted in', + 'manage_auto_bill' => 'Manage Auto-bill', + 'enabled' => 'Enabled', + 'paypal' => 'PayPal', + 'braintree_enable_paypal' => 'Enable PayPal payments through BrainTree', + 'braintree_paypal_disabled_help' => 'The PayPal gateway is processing PayPal payments', + 'braintree_paypal_help' => 'You must also :link.', + 'braintree_paypal_help_link_text' => 'link PayPal to your BrainTree account', + 'token_billing_braintree_paypal' => 'Save payment details', + 'add_paypal_account' => 'Add PayPal Account', + + + 'no_payment_method_specified' => 'No payment method specified', + 'chart_type' => 'Chart Type', + 'format' => 'Format', + 'import_ofx' => 'Import OFX', + 'ofx_file' => 'OFX File', + 'ofx_parse_failed' => 'Failed to parse OFX file', + + // WePay + 'wepay' => 'WePay', + 'sign_up_with_wepay' => 'Sign up with WePay', + 'use_another_provider' => 'Use another provider', + 'company_name' => 'Company Name', + 'wepay_company_name_help' => 'This will appear on client\'s credit card statements.', + 'wepay_description_help' => 'The purpose of this account.', + 'wepay_tos_agree' => 'I agree to the :link.', + 'wepay_tos_link_text' => 'WePay Terms of Service', + 'resend_confirmation_email' => 'Resend Confirmation Email', + 'manage_wepay_account' => 'Manage WePay Account', + 'action_required' => 'Action Required', + 'finish_setup' => 'Finish Setup', + 'created_wepay_confirmation_required' => 'Please check your email and confirm your email address with WePay.', + 'switch_to_wepay' => 'Switch to WePay', + 'switch' => 'Switch', + 'restore_account_gateway' => 'Restore Gateway', + 'restored_account_gateway' => 'Successfully restored gateway', + 'united_states' => 'United States', + 'canada' => 'Canada', + 'accept_debit_cards' => 'Accept Debit Cards', + 'debit_cards' => 'Debit Cards', + + 'warn_start_date_changed' => 'The next invoice will be sent on the new start date.', + 'original_start_date' => 'Original start date', + 'new_start_date' => 'New start date', + 'security' => 'Security', + 'see_whats_new' => 'See what\'s new in v:version', + 'wait_for_upload' => 'Please wait for the document upload to complete.', + 'upgrade_for_permissions' => 'Upgrade to our Enterprise plan to enable permissions.', + 'enable_second_tax_rate' => 'Enable specifying a second tax rate', + 'payment_file' => 'Payment File', + 'expense_file' => 'Expense File', + 'product_file' => 'Product File', + 'import_products' => 'Import Products', + 'products_will_create' => 'products will be created.', + 'product_key' => 'Product', + 'created_products' => 'Successfully created :count product(s)', + 'export_help' => 'Use JSON if you plan to import the data into Invoice Ninja.', + 'JSON_file' => 'JSON File', + + 'view_dashboard' => 'View Dashboard', + 'client_session_expired' => 'Session Expired', + 'client_session_expired_message' => 'Your session has expired. Please click the link in your email again.', + + 'auto_bill_notification' => 'This invoice will automatically be billed to your :payment_method on file on :due_date.', + 'auto_bill_payment_method_bank_transfer' => 'bank account', + 'auto_bill_payment_method_credit_card' => 'credit card', + 'auto_bill_payment_method_paypal' => 'PayPal account', + 'auto_bill_notification_placeholder' => 'This invoice will automatically be billed to your credit card on file on the due date.', + 'payment_settings' => 'Payment Settings', + + 'on_send_date' => 'On send date', + 'on_due_date' => 'On due date', + 'auto_bill_ach_date_help' => 'ACH auto bill will always happen on the due date', + 'warn_change_auto_bill' => 'Due to NACHA rules, changes to this invoice may prevent ACH auto bill.', + + 'bank_account' => 'Bank Account', + 'payment_processed_through_wepay' => 'ACH payments will be processed using WePay.', + 'wepay_payment_tos_agree' => 'I agree to the WePay :terms and :privacy_policy.', + 'privacy_policy' => 'Privacy Policy', + 'wepay_payment_tos_agree_required' => 'You must agree to the WePay Terms of Service and Privacy Policy.', + 'payment_settings_supported_gateways' => 'These options are supported by the WePay, Stripe, and Braintree gateways.', + 'ach_email_prompt' => 'Please enter your email address:', + 'verification_pending' => 'Verification Pending', + + 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', + 'credit_card' => 'Credit Card', + 'bank_transfer' => 'Bank Transfer', + 'no_transaction_reference' => 'We did not recieve a payment transaction reference from the gateway.', + 'use_bank_on_file' => 'Use Bank on File', + 'auto_bill_email_message' => 'This invoice will automatically be billed to the payment method on file on the due date.', + 'bitcoin' => 'Bitcoin', + 'added_on' => 'Added :date', + 'failed_remove_payment_method' => 'Failed to remove the payment method', + 'gateway_exists' => 'This gateway already exists', + 'manual_entry' => 'Manual entry', + ); + +return $LANG; + +?> diff --git a/resources/lang/fr/texts.php b/resources/lang/fr/texts.php index 10d994d8d8..75a2be95a4 100644 --- a/resources/lang/fr/texts.php +++ b/resources/lang/fr/texts.php @@ -1,8 +1,6 @@ 'Entreprise', 'name' => 'Nom', 'website' => 'Site web', @@ -25,8 +23,6 @@ return array( 'size_id' => 'Taille', 'industry_id' => 'Secteur', 'private_notes' => 'Note personnelle', - - // invoice 'invoice' => 'Facture', 'client' => 'Client', 'invoice_date' => 'Date de la facture', @@ -50,7 +46,6 @@ return array( 'invoice_design_id' => 'Design', 'terms' => 'Conditions', 'your_invoice' => 'Votre facture', - 'remove_contact' => 'Supprimer un contact', 'add_contact' => 'Ajouter un contact', 'create_new_client' => 'Ajouter un nouveau client', @@ -74,8 +69,6 @@ return array( 'settings' => 'Paramètres', 'enable_invoice_tax' => 'Spécifier uneEnvoyer automatiquement la même facture à vos clients de façon hebdomadaire, bimensuelle, mensuelle, trimestrielle ou annuelle.
Utiliser :MONTH, :QUARTER ou :YEAR pour des dates dynamiques. Les opérations simples fonctionnent également, par exemple :MONTH-1.
@@ -111,8 +102,6 @@ return array(Nous utilisons pdfmake pour définir le design des factures. Le bac à sable de pdfmake est une bonne façon de voir cette bibliothèque en action.
-Pour accéder à une propriété héritée avec la notation par point. Par exemple pour montrer le nom du client vous pouvez utiliser $client.name
.
Si vous avez besoin d\'aide pour comprendre quelque chose envoyez une question à notre forum de support.
', - + 'customize_help' => 'We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
+You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', 'invoice_due_date' => 'Date limite', 'quote_due_date' => 'Date limite', 'valid_until' => 'Valide jusqu\'au', @@ -753,15 +662,12 @@ return array( 'status_partial' => 'Partiel', 'status_paid' => 'Payé', 'show_line_item_tax' => 'Display line item taxes inline', - 'iframe_url' => 'Site internet', 'iframe_url_help1' => 'Copiez le code suivant sur une page de votre site.', 'iframe_url_help2' => 'Vous pouvez tester la fonctionnalité en cliquant sur \'Voir en tant que destinataire\' pour une facture.', - 'auto_bill' => 'Facturation automatique', 'military_time' => '24H', 'last_sent' => 'Dernier envoi', - 'reminder_emails' => 'Emails de rappel', 'templates_and_reminders' => 'Templates & Rappels', 'subject' => 'Sujet', @@ -773,15 +679,12 @@ return array( 'reminder_subject' => 'Rappel: Facture :invoice de :account', 'reset' => 'Remettre à zéro', 'invoice_not_found' => 'La facture demandée n\'est pas disponible', - 'referral_program' => 'Programme de parrainage', 'referral_code' => 'Code de Parrainage', 'last_sent_on' => 'Dernier envoi le :date', - 'page_expire' => 'Cette page va bientôt expirer, :click_here pour continuer à travailler', 'upcoming_quotes' => 'Devis à venir', 'expired_quotes' => 'Devis expirés', - 'sign_up_using' => 'Connexion avec', 'invalid_credentials' => 'Ces informations de connexion sont invalides', 'show_all_options' => 'Voir toutes les options', @@ -790,17 +693,10 @@ return array( 'disable' => 'Désactiver', 'invoice_quote_number' => 'Numéro des devis & factures', 'invoice_charges' => 'Charges de facturation', - - 'invitation_status' => [ - 'sent' => 'Email envoyé', - 'opened' => 'Email ouvert', - 'viewed' => 'Facture vue', - ], 'notification_invoice_bounced' => 'We were unable to deliver Invoice :invoice to :contact.', 'notification_invoice_bounced_subject' => 'Unable to deliver Invoice :invoice', 'notification_quote_bounced' => 'We were unable to deliver Quote :invoice to :contact.', 'notification_quote_bounced_subject' => 'Unable to deliver Quote :invoice', - 'custom_invoice_link' => 'Personnaliser le lien de la facture', 'total_invoiced' => 'Total facturé', 'open_balance' => 'Open Balance', @@ -808,16 +704,12 @@ return array( 'basic_settings' => 'Paramètres généraux', 'pro' => 'Pro', 'gateways' => 'Passerelles de paiement', - 'recurring_too_soon' => 'Il est trop tôt pour créer la prochaine facture récurrente, prévue pour le :date', - 'next_send_on' => 'Envoi suivant: :date', 'no_longer_running' => 'This invoice is not scheduled to run', 'general_settings' => 'Réglages généraux', 'customize' => 'Personnaliser', - 'oneclick_login_help' => 'Connectez un compte pour vous connecter sans votre mot de passe', 'referral_code_help' => 'Gagnez de l\'argent en partagent notre outil en ligne', - 'enable_with_stripe' => 'Activer | Stripe est requis', 'tax_settings' => 'Réglages des taxes', 'create_tax_rate' => 'Ajouter un taux de taxe.', @@ -838,7 +730,6 @@ return array( 'invoice_counter' => 'Compteur de factures', 'quote_counter' => 'Compteur de devis', 'type' => 'Type', - 'activity_1' => ':user a crée le client :client', 'activity_2' => ':user a archivé le client :client', 'activity_3' => ':user a supprimé le client :client', @@ -868,18 +759,24 @@ return array( 'activity_27' => ':user a restauré le paiement :payment', 'activity_28' => ':user a restauré le crédit :credit', 'activity_29' => ':contact a approuvé le devis :quote', - + 'activity_30' => ':user created :vendor', + 'activity_31' => ':user created :vendor', + 'activity_32' => ':user created :vendor', + 'activity_33' => ':user created :vendor', + 'activity_34' => ':user created expense :expense', + 'activity_35' => ':user created :vendor', + 'activity_36' => ':user created :vendor', + 'activity_37' => ':user created :vendor', 'payment' => 'Paiement', 'system' => 'Système', 'signature' => 'Signature email', 'default_messages' => 'Messages par défaut', 'quote_terms' => 'Conditions des devis', 'default_quote_terms' => 'Conditions des devis par défaut', - 'default_invoice_terms' => 'Conditions des factures par défaut', - 'default_invoice_footer' => 'Pied de page des factures par défaut', + 'default_invoice_terms' => 'Définir comme les conditions par défaut', + 'default_invoice_footer' => 'Définir par défaut', 'quote_footer' => 'Pied de page des devis', 'free' => 'Gratuit', - 'quote_is_approved' => 'Ce devis est approuvé', 'apply_credit' => 'Appliquer crédit', 'system_settings' => 'Paramètres système', @@ -897,7 +794,6 @@ return array( 'restored_recurring_invoice' => 'Facture récurrente restaurée avec succès', 'archived' => 'Archivé', 'untitled_account' => 'Société sans nom', - 'before' => 'Avant', 'after' => 'Après', 'reset_terms_help' => 'Remettre les conditions par défaut', @@ -906,7 +802,6 @@ return array( 'user' => 'Utilisateur', 'country' => 'Pays', 'include' => 'Inclure', - 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', 'import_freshbooks' => 'Importer depuis FreshBooks', 'import_data' => 'Importer des données', @@ -917,16 +812,6 @@ return array( 'task_file' => 'Fichier de tâches', 'no_mapper' => 'Mappage invalide pour ce fichier', 'invalid_csv_header' => 'En-tête du fichier CSV invalide', - - 'email_errors' => [ - 'inactive_client' => 'Les mails ne peuvent être envoyés aux clients inactifs', - 'inactive_contact' => 'Les mails ne peuvent être envoyés aux contacts inactifs', - 'inactive_invoice' => 'Les mails ne peuvent être envoyés aux factures inactives', - 'user_unregistered' => 'Veuillez vous inscrire afin d\'envoyer des mails', - 'user_unconfirmed' => 'Veuillez confirmer votre compte afin de permettre l\'envoi de mail', - 'invalid_contact_email' => 'Adresse mail du contact invalide', - ], - 'client_portal' => 'Portail client', 'admin' => 'Admin', 'disabled' => 'Désactivé', @@ -935,11 +820,9 @@ return array( 'invoice_will_create' => 'client will be created', 'invoices_will_create' => 'invoices will be created', 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', - 'publishable_key' => 'Clé publique', 'secret_key' => 'Clé secrète', 'missing_publishable_key' => 'Saisissez votre clé publique Stripe pour un processus de commande amélioré', - 'email_design' => 'Email Design', 'due_by' => 'A échéanche du :date', 'enable_email_markup' => 'Enable Markup', @@ -951,7 +834,6 @@ return array( 'plain' => 'Brut', 'light' => 'Clair', 'dark' => 'Sombre', - 'industry_help' => 'Utilisé dans le but de fournir des statistiques la taille et le secteur de l\'entreprise.', 'subdomain_help' => 'Customize the invoice link subdomain or display the invoice on your own website.', 'invoice_number_help' => 'Specify a prefix or use a custom pattern to dynamically set the invoice number.', @@ -960,8 +842,6 @@ return array( 'custom_account_fields_helps' => 'Add a label and value to the company details section of the PDF.', 'custom_invoice_fields_helps' => 'Add a text input to the invoice create/edit page and display the label and value on the PDF.', 'custom_invoice_charges_helps' => 'Add a text input to the invoice create/edit page and include the charge in the invoice subtotals.', - 'color_help' => 'Note: the primary color is also used in the client portal and custom email designs.', - 'token_expired' => 'Validation jeton expiré. Veuillez réessayer.', 'invoice_link' => 'Lien vers la facture', 'button_confirmation_message' => 'Cliquez pour confirmer votre adresse e-mail.', @@ -970,7 +850,6 @@ return array( 'created_invoices' => ':count factures(s) créées avec succès', 'next_invoice_number' => 'Le prochain numéro de facture est :number.', 'next_quote_number' => 'Le prochain numéro de devis est :number.', - 'days_before' => 'days before', 'days_after' => 'days after', 'field_due_date' => 'date d\'échéance', @@ -978,11 +857,7 @@ return array( 'schedule' => 'Schedule', 'email_designs' => 'Email Designs', 'assigned_when_sent' => 'Assigned when sent', - - 'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.', 'white_label_purchase_link' => 'Acheter une licence marque blanche', - - // Expense / vendor 'expense' => 'Dépense', 'expenses' => 'Dépenses', 'new_expense' => 'Enter Expense', @@ -999,8 +874,6 @@ return array( 'archived_expense' => 'Successfully archived expense', 'deleted_expenses' => 'Successfully deleted expenses', 'archived_expenses' => 'Successfully archived expenses', - - // Expenses 'expense_amount' => 'Montant de la dépense', 'expense_balance' => 'Expense Balance', 'expense_date' => 'Date de la dépense', @@ -1018,22 +891,18 @@ return array( 'view_expense_num' => 'Dépense # :expense', 'updated_expense' => 'Successfully updated expense', 'created_expense' => 'Successfully created expense', - 'enter_expense' => 'Entrer la dépense', + 'enter_expense' => 'Enter Expense', 'view' => 'Voir', 'restore_expense' => 'Restorer la dépense', 'invoice_expense' => 'Invoice Expense', 'expense_error_multiple_clients' => 'The expenses can\'t belong to different clients', 'expense_error_invoiced' => 'Expense has already been invoiced', 'convert_currency' => 'Convert currency', - - // Payment terms 'num_days' => 'Nombre de jours', 'create_payment_term' => 'Créer une condition de paiement', 'edit_payment_terms' => 'Editer condition de paiement', 'edit_payment_term' => 'Editer la condition de paiement', 'archive_payment_term' => 'Archiver la condition de paiement', - - // recurring due dates 'recurring_due_dates' => 'Recurring Invoice Due Dates', 'recurring_due_date_help' => 'Automatically sets a due date for the invoice.
Invoices on a monthly or yearly cycle set to be due on or before the day they are created will be due the next month. Invoices set to be due on the 29th or 30th in months that don\'t have that day will be due the last day of the month.
@@ -1061,15 +930,11 @@ return array( 'thursday' => 'Jeudi', 'friday' => 'Vendredi', 'saturday' => 'Samedi', - - // Fonts 'header_font_id' => 'Header Font', 'body_font_id' => 'Body Font', 'color_font_help' => 'Note: the primary color and fonts are also used in the client portal and custom email designs.', - 'live_preview' => 'Aperçu', 'invalid_mail_config' => 'Impossible d\'envoyer le mail, veuillez vérifier que les paramètres de messagerie sont corrects.', - 'invoice_message_button' => 'Pour visionner votre facture de :amount, cliquer sur le lien ci-dessous', 'quote_message_button' => 'Pour visionner votre devis de :amount, cliquer sur le lien ci-dessous', 'payment_message_button' => 'Merci pour votre paiement de :amount.', @@ -1086,7 +951,6 @@ return array( 'archived_bank_account' => 'Compte bancaire archivé', 'created_bank_account' => 'Compte bancaire créé', 'validate_bank_account' => 'Valider le compte bancaire', - 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', 'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.', 'bank_password_warning' => 'Attention: votre mot de passe peut être transmis en clair, pensez à activer HTTPS.', 'username' => 'Nom d\'utilisateur', @@ -1100,7 +964,6 @@ return array( 'validate' => 'Valider', 'info' => 'Info', 'imported_expenses' => 'Successfully created :count_vendors vendor(s) and :count_expenses expense(s)', - 'iframe_url_help3' => 'Note: if you plan on accepting credit cards details we strongly recommend enabling HTTPS on your site.', 'expense_error_multiple_currencies' => 'The expenses can\'t have different currencies.', 'expense_error_mismatch_currencies' => 'The client\'s currency does not match the expense currency.', @@ -1121,7 +984,28 @@ return array( 'trial_call_to_action' => 'Commencer l\'essai gratuit', 'trial_success' => 'Successfully enabled two week free pro plan trial', 'overdue' => 'Impayé', - 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + + + 'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.', + 'user_email_footer' => 'Pour modifier vos paramètres de notification par courriel, veuillez visiter :link', + 'reset_password_footer' => 'Si vous n\'avez pas effectué de demande de réinitalisation de mot de passe veuillez contacter notre support : :email', + 'limit_users' => 'Désolé, ceci excédera la limite de :limit utilisateurs', + 'more_designs_self_host_header' => 'Obtenez 6 modèles de factures additionnels pour seulement $:price', + 'old_browser' => 'Merci d\'utiliser un navigateur plus récent', + 'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.', + 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', + + 'pro_plan_remove_logo' => ':link pour supprimer le logo Invoice Ninja en souscrivant au Plan Pro', + 'pro_plan_remove_logo_link' => 'Cliquez ici', + 'invitation_status_sent' => 'Email envoyé', + 'invitation_status_opened' => 'Email ouvert', + 'invitation_status_viewed' => 'Facture vue', + 'email_error_inactive_client' => 'Les mails ne peuvent être envoyés aux clients inactifs', + 'email_error_inactive_contact' => 'Les mails ne peuvent être envoyés aux contacts inactifs', + 'email_error_inactive_invoice' => 'Les mails ne peuvent être envoyés aux factures inactives', + 'email_error_user_unregistered' => 'Veuillez vous inscrire afin d\'envoyer des mails', + 'email_error_user_unconfirmed' => 'Veuillez confirmer votre compte afin de permettre l\'envoi de mail', + 'email_error_invalid_contact_email' => 'Adresse mail du contact invalide', 'navigation' => 'Navigation', 'list_invoices' => 'Liste des factures', @@ -1144,22 +1028,20 @@ return array( 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', 'recurring_invoice_number' => 'Recurring Invoice Number', 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', - 'enable_client_portal' => 'Tableau de bord', - 'enable_client_portal_help' => 'Afficher / masquer le tableau de bord sur le portail client.', // Client Passwords 'enable_portal_password'=>'Protéger les factures avec un mot de passe', 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', 'send_portal_password'=>'Générer un mot de passe automatiquement', 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', - + 'expired' => 'Expiré', 'invalid_card_number' => 'Le numéro de carte bancaire est invalide.', 'invalid_expiry' => 'La date d\'expiration est invalide.', 'invalid_cvv' => 'Le code de sécurité est incorrect.', 'cost' => 'Coût', 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', - + // User Permissions 'owner' => 'Propriétaire', 'administrator' => 'Administrateur', @@ -1177,8 +1059,8 @@ return array( 'create_all_help' => 'Autoriser l\'utilisateur à créer et éditer tous les enregistrements', 'view_all_help' => 'Allow user to view records they didn\'t create', 'edit_all_help' => 'Allow user to modify records they didn\'t create', - 'view_payment' => 'Voir le paiement', - + 'view_payment' => 'Voir le paiement', + 'january' => 'Janvier', 'february' => 'Février', 'march' => 'Mars', @@ -1204,30 +1086,28 @@ return array( 'document_email_attachment' => 'Attach Documents', 'download_documents' => 'Download Documents (:size)', 'documents_from_expenses' => 'From Expenses:', - 'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage - 'DefaultMessage' => 'Drop files or click to upload', - 'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.', - 'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.', - 'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', - 'InvalidFileType' => 'You can\'t upload files of this type.', - 'ResponseError' => 'Server responded with {{statusCode}} code.', - 'CancelUpload' => 'Cancel upload', - 'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?', - 'RemoveFile' => 'Remove file', - ), + 'dropzone_default_message' => 'Drop files or click to upload', + 'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.', + 'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.', + 'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', + 'dropzone_invalid_file_type' => 'You can\'t upload files of this type.', + 'dropzone_response_error' => 'Server responded with {{statusCode}} code.', + 'dropzone_cancel_upload' => 'Cancel upload', + 'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?', + 'dropzone_remove_file' => 'Remove file', 'documents' => 'Documents', 'document_date' => 'Document Date', 'document_size' => 'Size', - 'enable_client_portal' => 'Client Portal', - 'enable_client_portal_help' => 'Show/hide the client portal.', + 'enable_client_portal' => 'Tableau de bord', + 'enable_client_portal_help' => 'Afficher / masquer le tableau de bord sur le portail client.', 'enable_client_portal_dashboard' => 'Dashboard', 'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.', - + // Plans 'account_management' => 'Account Management', 'plan_status' => 'Plan Status', - + 'plan_upgrade' => 'Upgrade', 'plan_change' => 'Change Plan', 'pending_change_to' => 'Changes To', @@ -1257,9 +1137,9 @@ return array( 'plan_paid' => 'Term Started', 'plan_started' => 'Plan Started', 'plan_expires' => 'Plan Expires', - + 'white_label_button' => 'White Label', - + 'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', 'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.', 'enterprise_plan_product' => 'Enterprise Plan', @@ -1270,14 +1150,214 @@ return array( 'plan_pending_monthly' => 'Will switch to monthly on :date', 'plan_refunded' => 'A refund has been issued.', - 'live_preview' => 'Live Preview', + 'live_preview' => 'Aperçu', 'page_size' => 'Page Size', 'live_preview_disabled' => 'Live preview has been disabled to support selected font', 'invoice_number_padding' => 'Padding', 'preview' => 'Preview', 'list_vendors' => 'List Vendors', 'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.', - 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.', + 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments, :link to see the full list of features.', 'return_to_app' => 'Return to app', - + + + // Payment updates + 'refund_payment' => 'Refund Payment', + 'refund_max' => 'Max:', + 'refund' => 'Refund', + 'are_you_sure_refund' => 'Refund selected payments?', + 'status_pending' => 'Pending', + 'status_completed' => 'Completed', + 'status_failed' => 'Failed', + 'status_partially_refunded' => 'Partially Refunded', + 'status_partially_refunded_amount' => ':amount Refunded', + 'status_refunded' => 'Refunded', + 'status_voided' => 'Cancelled', + 'refunded_payment' => 'Refunded Payment', + 'activity_39' => ':user cancelled a :payment_amount payment (:payment)', + 'activity_40' => ':user refunded :adjustment of a :payment_amount payment (:payment)', + 'card_expiration' => 'Exp: :expires', + + 'card_creditcardother' => 'Unknown', + 'card_americanexpress' => 'American Express', + 'card_carteblanche' => 'Carte Blanche', + 'card_unionpay' => 'UnionPay', + 'card_diners' => 'Diners Club', + 'card_discover' => 'Discover', + 'card_jcb' => 'JCB', + 'card_laser' => 'Laser', + 'card_maestro' => 'Maestro', + 'card_mastercard' => 'MasterCard', + 'card_solo' => 'Solo', + 'card_switch' => 'Switch', + 'card_visacard' => 'Visa', + 'card_ach' => 'ACH', + + 'payment_type_stripe' => 'Stripe', + 'ach' => 'ACH', + 'enable_ach' => 'Enable ACH', + 'stripe_ach_help' => 'ACH support must also be enabled at Stripe.', + 'ach_disabled' => 'Another gateway is already configured for direct debit.', + + 'plaid' => 'Plaid', + 'client_id' => 'Client Id', + 'secret' => 'Secret', + 'public_key' => 'Public Key', + 'plaid_optional' => '(optional)', + 'plaid_environment_help' => 'When a Stripe test key is given, Plaid\'s development environement (tartan) will be used.', + 'other_providers' => 'Other Providers', + 'country_not_supported' => 'That country is not supported.', + 'invalid_routing_number' => 'The routing number is not valid.', + 'invalid_account_number' => 'The account number is not valid.', + 'account_number_mismatch' => 'The account numbers do not match.', + 'missing_account_holder_type' => 'Please select an individual or company account.', + 'missing_account_holder_name' => 'Please enter the account holder\'s name.', + 'routing_number' => 'Routing Number', + 'confirm_account_number' => 'Confirm Account Number', + 'individual_account' => 'Individual Account', + 'company_account' => 'Company Account', + 'account_holder_name' => 'Account Holder Name', + 'add_account' => 'Add Account', + 'payment_methods' => 'Payment Methods', + 'complete_verification' => 'Complete Verification', + 'verification_amount1' => 'Amount 1', + 'verification_amount2' => 'Amount 2', + 'payment_method_verified' => 'Verification completed successfully', + 'verification_failed' => 'Verification Failed', + 'remove_payment_method' => 'Remove Payment Method', + 'confirm_remove_payment_method' => 'Are you sure you want to remove this payment method?', + 'remove' => 'Remove', + 'payment_method_removed' => 'Removed payment method.', + 'bank_account_verification_help' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. Please enter the amounts below.', + 'bank_account_verification_next_steps' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. + Once you have the amounts, come back to this payment methods page and click "Complete Verification" next to the account.', + 'unknown_bank' => 'Unknown Bank', + 'ach_verification_delay_help' => 'You will be able to use the account after completing verification. Verification usually takes 1-2 business days.', + 'add_credit_card' => 'Add Credit Card', + 'payment_method_added' => 'Added payment method.', + 'use_for_auto_bill' => 'Use For Autobill', + 'used_for_auto_bill' => 'Autobill Payment Method', + 'payment_method_set_as_default' => 'Set Autobill payment method.', + 'activity_41' => ':payment_amount payment (:payment) failed', + 'webhook_url' => 'Webhook URL', + 'stripe_webhook_help' => 'You must :link.', + 'stripe_webhook_help_link_text' => 'add this URL as an endpoint at Stripe', + 'payment_method_error' => 'There was an error adding your payment methd. Please try again later.', + 'notification_invoice_payment_failed_subject' => 'Payment failed for Invoice :invoice', + 'notification_invoice_payment_failed' => 'A payment made by client :client towards Invoice :invoice failed. The payment has been marked as failed and :amount has been added to the client\'s balance.', + 'link_with_plaid' => 'Link Account Instantly with Plaid', + 'link_manually' => 'Link Manually', + 'secured_by_plaid' => 'Secured by Plaid', + 'plaid_linked_status' => 'Your bank account at :bank', + 'add_payment_method' => 'Add Payment Method', + 'account_holder_type' => 'Account Holder Type', + 'ach_authorization' => 'I authorize :company to use my bank account for future payments and, if necessary, electronically credit my account to correct erroneous debits. I understand that I may cancel this authorization at any time by removing the payment method or by contacting :email.', + 'ach_authorization_required' => 'You must consent to ACH transactions.', + 'off' => 'Off', + 'opt_in' => 'Opt-in', + 'opt_out' => 'Opt-out', + 'always' => 'Always', + 'opted_out' => 'Opted out', + 'opted_in' => 'Opted in', + 'manage_auto_bill' => 'Manage Auto-bill', + 'enabled' => 'Enabled', + 'paypal' => 'PayPal', + 'braintree_enable_paypal' => 'Enable PayPal payments through BrainTree', + 'braintree_paypal_disabled_help' => 'The PayPal gateway is processing PayPal payments', + 'braintree_paypal_help' => 'You must also :link.', + 'braintree_paypal_help_link_text' => 'link PayPal to your BrainTree account', + 'token_billing_braintree_paypal' => 'Save payment details', + 'add_paypal_account' => 'Add PayPal Account', + + + 'no_payment_method_specified' => 'No payment method specified', + 'chart_type' => 'Chart Type', + 'format' => 'Format', + 'import_ofx' => 'Import OFX', + 'ofx_file' => 'OFX File', + 'ofx_parse_failed' => 'Failed to parse OFX file', + + // WePay + 'wepay' => 'WePay', + 'sign_up_with_wepay' => 'Sign up with WePay', + 'use_another_provider' => 'Use another provider', + 'company_name' => 'Company Name', + 'wepay_company_name_help' => 'This will appear on client\'s credit card statements.', + 'wepay_description_help' => 'The purpose of this account.', + 'wepay_tos_agree' => 'I agree to the :link.', + 'wepay_tos_link_text' => 'WePay Terms of Service', + 'resend_confirmation_email' => 'Resend Confirmation Email', + 'manage_wepay_account' => 'Manage WePay Account', + 'action_required' => 'Action Required', + 'finish_setup' => 'Finish Setup', + 'created_wepay_confirmation_required' => 'Please check your email and confirm your email address with WePay.', + 'switch_to_wepay' => 'Switch to WePay', + 'switch' => 'Switch', + 'restore_account_gateway' => 'Restore Gateway', + 'restored_account_gateway' => 'Successfully restored gateway', + 'united_states' => 'United States', + 'canada' => 'Canada', + 'accept_debit_cards' => 'Accept Debit Cards', + 'debit_cards' => 'Debit Cards', + + 'warn_start_date_changed' => 'The next invoice will be sent on the new start date.', + 'original_start_date' => 'Original start date', + 'new_start_date' => 'New start date', + 'security' => 'Security', + 'see_whats_new' => 'See what\'s new in v:version', + 'wait_for_upload' => 'Please wait for the document upload to complete.', + 'upgrade_for_permissions' => 'Upgrade to our Enterprise plan to enable permissions.', + 'enable_second_tax_rate' => 'Enable specifying a second tax rate', + 'payment_file' => 'Payment File', + 'expense_file' => 'Expense File', + 'product_file' => 'Product File', + 'import_products' => 'Import Products', + 'products_will_create' => 'products will be created.', + 'product_key' => 'Product', + 'created_products' => 'Successfully created :count product(s)', + 'export_help' => 'Use JSON if you plan to import the data into Invoice Ninja.', + 'JSON_file' => 'JSON File', + + 'view_dashboard' => 'View Dashboard', + 'client_session_expired' => 'Session Expired', + 'client_session_expired_message' => 'Your session has expired. Please click the link in your email again.', + + 'auto_bill_notification' => 'This invoice will automatically be billed to your :payment_method on file on :due_date.', + 'auto_bill_payment_method_bank_transfer' => 'bank account', + 'auto_bill_payment_method_credit_card' => 'credit card', + 'auto_bill_payment_method_paypal' => 'PayPal account', + 'auto_bill_notification_placeholder' => 'This invoice will automatically be billed to your credit card on file on the due date.', + 'payment_settings' => 'Payment Settings', + + 'on_send_date' => 'On send date', + 'on_due_date' => 'On due date', + 'auto_bill_ach_date_help' => 'ACH auto bill will always happen on the due date', + 'warn_change_auto_bill' => 'Due to NACHA rules, changes to this invoice may prevent ACH auto bill.', + + 'bank_account' => 'Bank Account', + 'payment_processed_through_wepay' => 'ACH payments will be processed using WePay.', + 'wepay_payment_tos_agree' => 'I agree to the WePay :terms and :privacy_policy.', + 'privacy_policy' => 'Privacy Policy', + 'wepay_payment_tos_agree_required' => 'You must agree to the WePay Terms of Service and Privacy Policy.', + 'payment_settings_supported_gateways' => 'These options are supported by the WePay, Stripe, and Braintree gateways.', + 'ach_email_prompt' => 'Please enter your email address:', + 'verification_pending' => 'Verification Pending', + + 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', + 'credit_card' => 'Credit Card', + 'bank_transfer' => 'Bank Transfer', + 'no_transaction_reference' => 'We did not recieve a payment transaction reference from the gateway.', + 'use_bank_on_file' => 'Use Bank on File', + 'auto_bill_email_message' => 'This invoice will automatically be billed to the payment method on file on the due date.', + 'bitcoin' => 'Bitcoin', + 'added_on' => 'Added :date', + 'failed_remove_payment_method' => 'Failed to remove the payment method', + 'gateway_exists' => 'This gateway already exists', + 'manual_entry' => 'Manual entry', + ); + +return $LANG; + +?> diff --git a/resources/lang/fr_CA/texts.php b/resources/lang/fr_CA/texts.php index 3661ad15b1..ed3e4c8456 100644 --- a/resources/lang/fr_CA/texts.php +++ b/resources/lang/fr_CA/texts.php @@ -1,8 +1,6 @@ 'Entreprise', 'name' => 'Nom', 'website' => 'Site web', @@ -12,7 +10,7 @@ return array( 'address2' => 'Adresse 2', 'city' => 'Ville', 'state' => 'Province', - 'postal_code' => 'Code Postal', + 'postal_code' => 'Code postal', 'country_id' => 'Pays', 'contacts' => 'Contact', 'first_name' => 'Prénom', @@ -24,9 +22,7 @@ return array( 'currency_id' => 'Devise', 'size_id' => 'Taille de l\'entreprise', 'industry_id' => 'Secteur d\'activité', - 'private_notes' => 'Note personnelle', - - // invoice + 'private_notes' => 'Notes personnelle', 'invoice' => 'Facture', 'client' => 'Client', 'invoice_date' => 'Date', @@ -44,19 +40,18 @@ return array( 'unit_cost' => 'Coût unitaire', 'quantity' => 'Quantité', 'line_total' => 'Total', - 'subtotal' => 'Total', + 'subtotal' => 'Sous total', 'paid_to_date' => 'Montant reçu', 'balance_due' => 'Montant total', 'invoice_design_id' => 'Modèle', 'terms' => 'Termes', 'your_invoice' => 'Votre Facture', - 'remove_contact' => 'Supprimer un contact', 'add_contact' => 'Ajouter un contact', 'create_new_client' => 'Ajouter un nouveau client', 'edit_client_details' => 'Modifier les informations du client', 'enable' => 'Autoriser', - 'learn_more' => 'En savoir +', + 'learn_more' => 'En savoir plus', 'manage_rates' => 'Gérer les taux', 'note_to_client' => 'Commentaire pour le client', 'invoice_terms' => 'Conditions de facturation', @@ -74,8 +69,6 @@ return array( 'settings' => 'Paramètres', 'enable_invoice_tax' => 'Spécifier une taxe pour la facture', 'enable_line_item_tax' => 'Spécifier une taxe pour chaque ligne', - - // navigation 'dashboard' => 'Tableau de bord', 'clients' => 'Clients', 'invoices' => 'Factures', @@ -100,8 +93,6 @@ return array( 'provide_email' => 'Veuillez renseigner une adresse courriel valide', 'powered_by' => 'Propulsé par', 'no_items' => 'Aucun élément', - - // recurring invoices 'recurring_invoices' => 'Factures récurrentes', 'recurring_help' => 'Envoyer automatiquement la même facture à vos clients de façon hebdomadaire, bimensuelle, mensuelle, trimestrielle ou annuelle.
Utiliser :MONTH, :QUARTER ou :YEAR pour des dates dynamiques. Les opérations simples fonctionnent également, par exemple :MONTH-1.
@@ -111,8 +102,6 @@ return array(Nous utilisons pdfmake pour définir le design des factures de façon déclarative. L\'environnement pdfmake permet de voir la librairie en action.
-Pour accéder à une propriété enfant en utilisant la notation par point. Par exemple $client.name
affiche le nom du client.
Si vous avez besoin d\'aide à cet effet, n\'hésitez pas à publier une question sur notre forum d\'aide (en anglais).
', - + 'customize_help' => 'We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
+You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', 'invoice_due_date' => 'Échéance', 'quote_due_date' => 'Échéance', 'valid_until' => 'Échéance', @@ -756,15 +662,12 @@ return array( 'status_partial' => 'Partiel', 'status_paid' => 'Payée', 'show_line_item_tax' => 'Afficher la taxe sur la même ligne', - 'iframe_url' => 'Site web', 'iframe_url_help1' => 'Copier ce code sur une page de votre site.', 'iframe_url_help2' => 'Vous pouvez tester cette fonctionnalité en cliquant \'Visualiser en tant que destinataire\' pour uen facture.', - 'auto_bill' => 'Facturation automatique', 'military_time' => 'Format d\'heure 24 h', 'last_sent' => 'Dernier envoi', - 'reminder_emails' => 'Courriels de rappel', 'templates_and_reminders' => 'Modèles et rappels', 'subject' => 'Sujet', @@ -776,15 +679,12 @@ return array( 'reminder_subject' => 'Rappel: facture :invoice de :account', 'reset' => 'Remise à zéro', 'invoice_not_found' => 'La facture demandée n\'est pas disponible', - 'referral_program' => 'Programme de référencement', 'referral_code' => 'Code de référencement', 'last_sent_on' => 'Dernier envoi le :date', - 'page_expire' => 'Cette page va expirer bientôt, :click_here popur continuer', 'upcoming_quotes' => 'Soumissions à venir', 'expired_quotes' => 'Soumissions expirées', - 'sign_up_using' => 'Connectez-vous avec', 'invalid_credentials' => 'Ces informations ne correspondent pas', 'show_all_options' => 'Afficher toutes les options', @@ -793,17 +693,10 @@ return array( 'disable' => 'Desactiver', 'invoice_quote_number' => 'Numéros de factures et de soumissions', 'invoice_charges' => 'Frais de facturation', - - 'invitation_status' => [ - 'sent' => 'Courriel envoyé', - 'opened' => 'Courriel ouvert', - 'viewed' => 'Facture consultée', - ], 'notification_invoice_bounced' => 'Impossible d\'envoyer la facture :invoice à :contact.', 'notification_invoice_bounced_subject' => 'Impossible d\'envoyer la facture :invoice', 'notification_quote_bounced' => 'Impossible d\'envoyer la soumission :invoice à :contact.', 'notification_quote_bounced_subject' => 'Impossible d\'envoyer la soumission :invoice', - 'custom_invoice_link' => 'Lien de facture personnalisé', 'total_invoiced' => 'Total facturé', 'open_balance' => 'Solde', @@ -811,14 +704,12 @@ return array( 'basic_settings' => 'Paramètres généraux', 'pro' => 'Pro', 'gateways' => 'Passerelles de paiements', - 'next_send_on' => 'Prochain envoi: :date', 'no_longer_running' => 'Cette facture n\'est pas planifié pour un envoi', 'general_settings' => 'Paramètres généraux', 'customize' => 'Personnalisation', 'oneclick_login_help' => 'Connectez-vous à un compte pour une connexion sans mot de passe', 'referral_code_help' => 'Gagnes de l\'argent en faisnat connaître notre application', - 'enable_with_stripe' => 'Activer | Requiert Stripe', 'tax_settings' => 'Paramètres de taxe', 'create_tax_rate' => 'Ajouter un taux de taxe', @@ -839,7 +730,6 @@ return array( 'invoice_counter' => 'Numéros de factures', 'quote_counter' => 'Numéros de soumissions', 'type' => 'Type', - 'activity_1' => ':user a créé le client :client', 'activity_2' => ':user a archivé le client :client', 'activity_3' => ':user a supprimé le client :client', @@ -869,18 +759,24 @@ return array( 'activity_27' => ':user a restauré le paiement :payment', 'activity_28' => ':user a restauré le crédit :credit', 'activity_29' => ':contact accepté la soumission :quote', - + 'activity_30' => ':user a créé :vendor', + 'activity_31' => ':user a créé :vendor', + 'activity_32' => ':user a créé :vendor', + 'activity_33' => ':user a créé :vendor', + 'activity_34' => ':user a créé la dépense :expense', + 'activity_35' => ':user a créé :vendor', + 'activity_36' => ':user a créé :vendor', + 'activity_37' => ':user a créé :vendor', 'payment' => 'Paiement', 'system' => 'Système', 'signature' => 'Signature de courriel', 'default_messages' => 'Message par défaut', 'quote_terms' => 'Conditions de soumission', 'default_quote_terms' => 'Conditions par défaut pour les soumissions', - 'default_invoice_terms' => 'Conditions par défaut pour les factures', - 'default_invoice_footer' => 'Pied de facture par défaut', + 'default_invoice_terms' => 'Définir comme les conditions par défaut', + 'default_invoice_footer' => 'Définir le pied de facture par défaut', 'quote_footer' => 'Pied de soumission par défaut', 'free' => 'Gratuit', - 'quote_is_approved' => 'Cette soumission a été acceptée', 'apply_credit' => 'Appliquer le crédit', 'system_settings' => 'Paramètres système', @@ -898,7 +794,6 @@ return array( 'restored_recurring_invoice' => 'La facture récurrente a été restaurée', 'archived' => 'Archivée', 'untitled_account' => 'Entreprise sans nom', - 'before' => 'Avant', 'after' => 'Après', 'reset_terms_help' => 'Remise à zéro', @@ -907,7 +802,6 @@ return array( 'user' => 'Utilisateur', 'country' => 'Pays', 'include' => 'Inclus', - 'logo_too_large' => 'Votre logo est :size, pour de meilleures performances PDF, veuillez charger une image de moins de 200KB', 'import_freshbooks' => 'Importer de FreshBooks', 'import_data' => 'Importer les données', @@ -918,16 +812,6 @@ return array( 'task_file' => 'Fichier des tâches', 'no_mapper' => 'Aucun liens de champs valides pour ce fichier', 'invalid_csv_header' => 'Entête CSV invalide', - - 'email_errors' => [ - 'inactive_client' => 'Aucun courriel ne peut être envoyé à un client inactif', - 'inactive_contact' => 'Aucun courriel ne peut être envoyé à un contact inactif', - 'inactive_invoice' => 'Aucun courriel ne peut être envoyé à une facture inactive', - 'user_unregistered' => 'Veuillez vous créer un compte pour envoyer des courriels', - 'user_unconfirmed' => 'Veuillez confirmer votre compte pour pouvoir envoyer des courriels', - 'invalid_contact_email' => 'Ce courriel est invalide', - ], - 'client_portal' => 'Portail client', 'admin' => 'Admin', 'disabled' => 'Désactivé', @@ -936,11 +820,9 @@ return array( 'invoice_will_create' => 'Le client sera créé', 'invoices_will_create' => 'Les factures seront créées', 'failed_to_import' => 'Cet enregistrement n\'a pu être importé', - 'publishable_key' => 'Clé publique', 'secret_key' => 'Clé secrète', 'missing_publishable_key' => 'Entrez votre lcé publique de Stripe pour une meilleur expérience de paiement', - 'email_design' => 'Modèle de courriel', 'due_by' => 'Due pour :date', 'enable_email_markup' => 'Autoriser le marquage', @@ -952,7 +834,6 @@ return array( 'plain' => 'Ordinaire', 'light' => 'Clair', 'dark' => 'Foncé', - 'industry_help' => 'Pour des fins de comparaison entre des entreprises de même taille et du même secteur d\'activité.', 'subdomain_help' => 'Personnalisez le lien de sous-domaine de la facture ou en affichant la facture sur votre site web.', 'invoice_number_help' => 'Spécifiez un préfixe ou utilisez un modèle personnalisé pour la création du numéro de facture.', @@ -961,8 +842,6 @@ return array( 'custom_account_fields_helps' => 'Ajoutez un titre et une valeur à la section des informations de l\'entreprise dans le fichier PDF.', 'custom_invoice_fields_helps' => 'Ajoutez un champ personnalisé à la page de création/édition de facture et affichez le titre et la valeur dans le fichier PDF.', 'custom_invoice_charges_helps' => 'Ajoutez un champ personnalisé à la page de création/édition de facture pour inclure les frais au sous-totaux de la facture.', - 'color_help' => 'Note: la couleur principale est également utilisée dans le portail du client et les modèles personnalisés de courriels.', - 'token_expired' => 'Le jeton de validation a expiré. Veuillez réessayer.', 'invoice_link' => 'Lien de facture', 'button_confirmation_message' => 'Veuillez confirmer votre courriel.', @@ -971,7 +850,6 @@ return array( 'created_invoices' => ':count factures ont été créées', 'next_invoice_number' => 'Le prochain numéro de facture est :number.', 'next_quote_number' => 'Le prochain numéro de soumission est :number.', - 'days_before' => 'jours avant', 'days_after' => 'jours après', 'field_due_date' => 'Échéance', @@ -979,16 +857,12 @@ return array( 'schedule' => 'Calendrier', 'email_designs' => 'Modèles de courriel', 'assigned_when_sent' => 'Assignée lors de l\'envoi', - - 'white_label_custom_css' => ':link à $'.WHITE_LABEL_PRICE.' pour activer les styles personnalisés et supporter notre projet.', 'white_label_purchase_link' => 'Achetez une licence sans pub', - - // Expense / vendor 'expense' => 'Dépense', 'expenses' => 'Dépenses', 'new_expense' => 'Nouvelle dépense', 'enter_expense' => 'Nouvelle dépense', - 'vendors' => 'Fournisseurs', // et non pas Vendeurs, ce qui n'a pas la même signification + 'vendors' => 'Fournisseurs', 'new_vendor' => 'Nouveau fournisseur', 'payment_terms_net' => 'Net', 'vendor' => 'Fournisseur', @@ -1000,8 +874,6 @@ return array( 'archived_expense' => 'La dépense a été archivée', 'deleted_expenses' => 'Les dépenses ont été supprimées', 'archived_expenses' => 'Les dépenses ont été archivées', - - // Expenses 'expense_amount' => 'Montant de la dépense', 'expense_balance' => 'Solde de la dépense', 'expense_date' => 'Date de la dépense', @@ -1026,15 +898,11 @@ return array( 'expense_error_multiple_clients' => 'Les dépenses ne peuvent pas appartenir à plusieus clients', 'expense_error_invoiced' => 'Ces dépenses ont déjà été facturées', 'convert_currency' => 'Conversion de devise', - - // Payment terms 'num_days' => 'Nombre de jours', 'create_payment_term' => 'Nouveau terme de paiement', 'edit_payment_terms' => 'Editer les termes de paiement', 'edit_payment_term' => 'Editer le terme de paiement', 'archive_payment_term' => 'Archiver le terme de paiement', - - // recurring due dates 'recurring_due_dates' => 'Dates d\'échéances des factures récurrentes', 'recurring_due_date_help' => 'Définissez automatiquement une date d\'échéance pour la facture.
Les factures de type mensuel ou annuel dont la date d\'échéance est définie le jour même ou le jour précédent de leur création seront dues pour le prochain mois. Les factures dont la date d\'échéance est définie le 29 ou le 30 des mois qui n\'ont pas ces jours seront dues le dernier jour de ce mois.
@@ -1059,15 +927,11 @@ return array( 'thursday' => 'Jeudi', 'friday' => 'Vendredi', 'saturday' => 'Samedi', - - // Fonts 'header_font_id' => 'Police de l\'entête', 'body_font_id' => 'Police du message', 'color_font_help' => 'Note: la couleur principale et les polices sont aussi utilisées dans le portail client et dans les modèles de courriels personnalisés.', - 'live_preview' => 'Prévisualisation', 'invalid_mail_config' => 'impossible d\'envoyer le courriel, veuillez vérifier vos paramètres courriel.', - 'invoice_message_button' => 'Pour voir la facture de :amount, cliquez sur le bouton ci-dessous.', 'quote_message_button' => 'Pour voir la soumission de :amount, cliquez sur le bouton ci-dessous.', 'payment_message_button' => 'Merci pour votre paiement de :amount.', @@ -1084,7 +948,6 @@ return array( 'archived_bank_account' => 'Le compte bancaire a été archivé', 'created_bank_account' => 'Le compte bancaire a été créé', 'validate_bank_account' => 'Valider le compte bancaire', - 'bank_accounts_help' => 'Veuillez vous connecter à un compte bancaire pour importer automatiquement les dépenses et créer les fournisseurs. Supporte American Express et plus de 400 banques américaines.', 'bank_password_help' => 'Note: votre mot de passe est transmis de façon sécuritaire et n\'est jamais enregistré sur nos serveurs.', 'bank_password_warning' => 'Avertissement: votre mot de passe pourrait être transmis sans cryptage, pensez à activer HTTPS.', 'username' => 'Nom d\'utilisateur', @@ -1098,7 +961,6 @@ return array( 'validate' => 'Valider', 'info' => 'Info', 'imported_expenses' => ':count_vendors fournisseur(s) et :count_expenses dépense(s) ont été créés', - 'iframe_url_help3' => 'Note: si vous pensez accepter le paiement par carte de crédit, Nous vous recommandons fortement d\'activer le HTTPS.', 'expense_error_multiple_currencies' => 'La dépense ne peut pas utiliser des devises différentes.', 'expense_error_mismatch_currencies' => 'La devise du client ne correspond par à la devise de la dépense.', @@ -1119,164 +981,380 @@ return array( 'trial_call_to_action' => 'Démarrez votre essai gratuit', 'trial_success' => 'Le Plan Pro, version d\'essai gratuit pour 2 semaines a été activé', 'overdue' => 'En souffrance', - 'white_label_text' => 'Achetez une licence sans pub d\'un an à $'.WHITE_LABEL_PRICE.' pour retirer le logo de Invoice Ninja du portail client et supporter notre projet.', + + + 'white_label_text' => 'Achetez une licence sans pub d\'un an à $:price pour retirer le logo de Invoice Ninja du portail client et supporter notre projet.', + 'user_email_footer' => 'Pour modifier vos paramètres de notification par courriel, veuillez visiter :link', + 'reset_password_footer' => 'Si vous n\'avez pas effectué de demande de réinitalisation de mot de passe veuillez contacter notre support : :email', + 'limit_users' => 'Désolé, ceci excédera la limite de :limit utilisateurs', + 'more_designs_self_host_header' => 'Obtenez 6 modèles de factures additionnels pour seulement $:price', + 'old_browser' => 'Veuillez utiliser un navigateur plus récent', + 'white_label_custom_css' => ':link à $:price pour activer les styles personnalisés et supporter notre projet.', + 'bank_accounts_help' => 'Veuillez vous connecter à un compte bancaire pour importer automatiquement les dépenses et créer les fournisseurs. Supporte American Express et plus de 400 banques américaines.', + + 'pro_plan_remove_logo' => ':link pour supprimer le logo Invoice Ninja en souscrivant au plan pro', + 'pro_plan_remove_logo_link' => 'Cliquez ici', + 'invitation_status_sent' => 'Courriel envoyé', + 'invitation_status_opened' => 'Courriel ouvert', + 'invitation_status_viewed' => 'Facture consultée', + 'email_error_inactive_client' => 'Aucun courriel ne peut être envoyé à un client inactif', + 'email_error_inactive_contact' => 'Aucun courriel ne peut être envoyé à un contact inactif', + 'email_error_inactive_invoice' => 'Aucun courriel ne peut être envoyé à une facture inactive', + 'email_error_user_unregistered' => 'Veuillez vous créer un compte pour envoyer des courriels', + 'email_error_user_unconfirmed' => 'Veuillez confirmer votre compte pour pouvoir envoyer des courriels', + 'email_error_invalid_contact_email' => 'Ce courriel est invalide', 'navigation' => 'Navigation', - 'list_invoices' => 'List Invoices', - 'list_clients' => 'List Clients', - 'list_quotes' => 'List Quotes', - 'list_tasks' => 'List Tasks', - 'list_expenses' => 'List Expenses', - 'list_recurring_invoices' => 'List Recurring Invoices', - 'list_payments' => 'List Payments', - 'list_credits' => 'List Credits', - 'tax_name' => 'Tax Name', - 'report_settings' => 'Report Settings', - 'search_hotkey' => 'shortcut is /', + 'list_invoices' => 'Liste des factures', + 'list_clients' => 'Liste des clients', + 'list_quotes' => 'Liste des soumissions', + 'list_tasks' => 'Liste des tâches', + 'list_expenses' => 'Liste des factures récurrentes', + 'list_recurring_invoices' => 'Liste des factures récurrentes', + 'list_payments' => 'Liste des paiements', + 'list_credits' => 'Liste des crédits', + 'tax_name' => 'Nom de la taxe', + 'report_settings' => 'Paramètres des rapports', + 'search_hotkey' => 'raccourci /', - 'new_user' => 'New User', - 'new_product' => 'New Product', - 'new_tax_rate' => 'New Tax Rate', - 'invoiced_amount' => 'Invoiced Amount', - 'invoice_item_fields' => 'Invoice Item Fields', - 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', - 'recurring_invoice_number' => 'Recurring Invoice Number', - 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', - 'enable_client_portal' => 'Dashboard', - 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', + 'new_user' => 'Nouvel utilisateur', + 'new_product' => 'Nouveau produit', + 'new_tax_rate' => 'Nouveau taux de taxe', + 'invoiced_amount' => 'Montant facturé', + 'invoice_item_fields' => 'Champs d\'items de facture', + 'custom_invoice_item_fields_help' => 'Ajoutez un champ lors de la création d\'une facture pour afficher le libellé et la valeur du champ sur le PDF.', + 'recurring_invoice_number' => 'Numéro de facture récurrente', + 'recurring_invoice_number_prefix_help' => 'Spécifiez un préfixe qui sera ajouté au numéro de la facture récurrente. La valeur par défaut est \'R\'.', // Client Passwords - 'enable_portal_password'=>'Password protect invoices', - 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', - 'send_portal_password'=>'Generate password automatically', - 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', - - 'expired' => 'Expired', - 'invalid_card_number' => 'The credit card number is not valid.', - 'invalid_expiry' => 'The expiration date is not valid.', - 'invalid_cvv' => 'The CVV is not valid.', - 'cost' => 'Cost', - 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', - + 'enable_portal_password'=>'Factures protégées', + 'enable_portal_password_help'=>'Permet de spécifier un mot de passe pour chaque contact. Si un mot de passe est spécifié, le contact devra saisir ce mot de passe pour visualiser ses factures.', + 'send_portal_password'=>'Génère automatiquement un mot de passe', + 'send_portal_password_help'=>'Si aucun mot de passe n\\'est spécifié, le client recevra un mot de passe autogénéré lors de l\'envoi de la première facture.', + + 'expired' => 'Expiré', + 'invalid_card_number' => 'Le numéro de carte de crédit n\'est pas valide.', + 'invalid_expiry' => 'La date d\'expiration n\'est pas valide.', + 'invalid_cvv' => 'Le CVV n\'est pas valide.', + 'cost' => 'Coût', + 'create_invoice_for_sample' => 'Note: créez votre première facture pour la visualiser ici.', + // User Permissions - 'owner' => 'Owner', - 'administrator' => 'Administrator', - 'administrator_help' => 'Allow user to manage users, change settings and modify all records', - 'user_create_all' => 'Create clients, invoices, etc.', - 'user_view_all' => 'View all clients, invoices, etc.', - 'user_edit_all' => 'Edit all clients, invoices, etc.', - 'gateway_help_20' => ':link to sign up for Sage Pay.', - 'gateway_help_21' => ':link to sign up for Sage Pay.', - 'partial_due' => 'Partial Due', - 'restore_vendor' => 'Restore Vendor', - 'restored_vendor' => 'Successfully restored vendor', - 'restored_expense' => 'Successfully restored expense', + 'owner' => 'Propriétaire', + 'administrator' => 'Administrateur', + 'administrator_help' => 'Permet à un utilisateur de gérer d\'autres utilisateurs, modifier les paramètres et tous les enregistrements.', + 'user_create_all' => 'Créer des clients, factures, etc.', + 'user_view_all' => 'Visualiser tous les clients, factures, etc.', + 'user_edit_all' => 'Éditer tous les clients, factures, etc.', + 'gateway_help_20' => ':link pour s\'inscrire à Sage Pay.', + 'gateway_help_21' => ':link pour s\'inscrire à Sage Pay.', + 'partial_due' => 'Montant partiel du', + 'restore_vendor' => 'Restaurer un vendeur', + 'restored_vendor' => 'Le vendeur a été restauré', + 'restored_expense' => 'La dépense a été restaurée', 'permissions' => 'Permissions', - 'create_all_help' => 'Allow user to create and modify records', - 'view_all_help' => 'Allow user to view records they didn\'t create', - 'edit_all_help' => 'Allow user to modify records they didn\'t create', - 'view_payment' => 'View Payment', - - 'january' => 'January', - 'february' => 'February', - 'march' => 'March', - 'april' => 'April', - 'may' => 'May', - 'june' => 'June', - 'july' => 'July', - 'august' => 'August', - 'september' => 'September', - 'october' => 'October', - 'november' => 'November', - 'december' => 'December', + 'create_all_help' => 'Autoriser un utilisateur à créer et modifier ses enregistrements', + 'view_all_help' => 'Autoriser un utilisateur à visualiser des enregistrements d\'autres utilisateurs', + 'edit_all_help' => 'Autoriser un utilisateur à modifier des enregistrements d\'autres utilisateurs', + 'view_payment' => 'Visualiser un paiement', + + 'january' => 'Janvier', + 'february' => 'Février', + 'march' => 'Mars', + 'april' => 'Avril', + 'may' => 'Mai', + 'june' => 'Juin', + 'july' => 'Juillet', + 'august' => 'Août', + 'september' => 'Septembre', + 'october' => 'Octobre', + 'november' => 'Novembre', + 'december' => 'Décembre', // Documents 'documents_header' => 'Documents:', 'email_documents_header' => 'Documents:', - 'email_documents_example_1' => 'Widgets Receipt.pdf', - 'email_documents_example_2' => 'Final Deliverable.zip', + 'email_documents_example_1' => 'Recu du widget.pdf', + 'email_documents_example_2' => 'Livraison finale.zip', 'invoice_documents' => 'Documents', - 'expense_documents' => 'Attached Documents', - 'invoice_embed_documents' => 'Embed Documents', - 'invoice_embed_documents_help' => 'Include attached images in the invoice.', - 'document_email_attachment' => 'Attach Documents', - 'download_documents' => 'Download Documents (:size)', - 'documents_from_expenses' => 'From Expenses:', - 'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage - 'DefaultMessage' => 'Drop files or click to upload', - 'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.', - 'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.', - 'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', - 'InvalidFileType' => 'You can\'t upload files of this type.', - 'ResponseError' => 'Server responded with {{statusCode}} code.', - 'CancelUpload' => 'Cancel upload', - 'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?', - 'RemoveFile' => 'Remove file', - ), + 'expense_documents' => 'Documents joints', + 'invoice_embed_documents' => 'Documents intégrés', + 'invoice_embed_documents_help' => 'Inclure les images jointes dans la facture.', + 'document_email_attachment' => 'Documents joints', + 'download_documents' => 'Télécharger les documents (:size)', + 'documents_from_expenses' => 'Des dépenses:', + 'dropzone_default_message' => 'Glissez-déposez des fichiers ou parcourez pour charger des fichiers', + 'dropzone_fallback_message' => 'Votre navigateur ne supporte pas le glisser-déposer de documents pour le chargement.', + 'dropzone_fallback_text' => 'Veuillez utiliser le formulaire ci-dessous pour charger vos fichiers à la veille façon.', + 'dropzone_file_too_big' => 'Le fichier est tros lourd ({{filesize}}MiB). Taille maximale: {{maxFilesize}}MiB.', + 'dropzone_invalid_file_type' => 'Vous ne pouvez pas charger des fichiers de ce type.', + 'dropzone_response_error' => 'Le serveur a répondu avec le code {{statusCode}}.', + 'dropzone_cancel_upload' => 'Chargement annulé', + 'dropzone_cancel_upload_confirmation' => 'Souhaitez-vous vraiment annuler ce chargement ?', + 'dropzone_remove_file' => 'Retirer le fichier', 'documents' => 'Documents', - 'document_date' => 'Document Date', - 'document_size' => 'Size', + 'document_date' => 'Date du document', + 'document_size' => 'Taille', + + 'enable_client_portal' => 'Portail client', + 'enable_client_portal_help' => 'Afficher/masquer le portail client.', + 'enable_client_portal_dashboard' => 'Tableau de bord', + 'enable_client_portal_dashboard_help' => 'Afficher/masquer la page du tableau de bord dans le portail client.', - 'enable_client_portal' => 'Client Portal', - 'enable_client_portal_help' => 'Show/hide the client portal.', - 'enable_client_portal_dashboard' => 'Dashboard', - 'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.', - // Plans - 'account_management' => 'Account Management', - 'plan_status' => 'Plan Status', - - 'plan_upgrade' => 'Upgrade', - 'plan_change' => 'Change Plan', - 'pending_change_to' => 'Changes To', - 'plan_changes_to' => ':plan on :date', - 'plan_term_changes_to' => ':plan (:term) on :date', - 'cancel_plan_change' => 'Cancel Change', + 'account_management' => 'Gestion du compte', + 'plan_status' => 'État du plan', + + 'plan_upgrade' => 'Mise à jour', + 'plan_change' => 'Changer de plan', + 'pending_change_to' => 'Changer pour', + 'plan_changes_to' => ':plan le :date', + 'plan_term_changes_to' => ':plan (:term) le :date', + 'cancel_plan_change' => 'Annuler', 'plan' => 'Plan', - 'expires' => 'Expires', - 'renews' => 'Renews', - 'plan_expired' => ':plan Plan Expired', - 'trial_expired' => ':plan Plan Trial Ended', - 'never' => 'Never', - 'plan_free' => 'Free', + 'expires' => 'Expiration', + 'renews' => 'Renouvellement', + 'plan_expired' => 'Le plan :plan est expiré', + 'trial_expired' => 'L\'essai du plan :plan est terminé', + 'never' => 'Jamais', + 'plan_free' => 'Gratuit', 'plan_pro' => 'Pro', 'plan_enterprise' => 'Enterprise', - 'plan_white_label' => 'Self Hosted (White labeled)', - 'plan_free_self_hosted' => 'Self Hosted (Free)', - 'plan_trial' => 'Trial', - 'plan_term' => 'Term', - 'plan_term_monthly' => 'Monthly', - 'plan_term_yearly' => 'Yearly', - 'plan_term_month' => 'Month', - 'plan_term_year' => 'Year', - 'plan_price_monthly' => '$:price/Month', - 'plan_price_yearly' => '$:price/Year', - 'updated_plan' => 'Updated plan settings', - 'plan_paid' => 'Term Started', - 'plan_started' => 'Plan Started', - 'plan_expires' => 'Plan Expires', - - 'white_label_button' => 'White Label', - - 'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', - 'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.', - 'enterprise_plan_product' => 'Enterprise Plan', - 'enterprise_plan_year_description' => 'One year enrollment in the Invoice Ninja Enterprise Plan.', - 'enterprise_plan_month_description' => 'One month enrollment in the Invoice Ninja Enterprise Plan.', - 'plan_credit_product' => 'Credit', - 'plan_credit_description' => 'Credit for unused time', - 'plan_pending_monthly' => 'Will switch to monthly on :date', - 'plan_refunded' => 'A refund has been issued.', + 'plan_white_label' => 'Autohébergé (sans pub)', + 'plan_free_self_hosted' => 'Autohébergé (gratuit)', + 'plan_trial' => 'Essai', + 'plan_term' => 'Terme', + 'plan_term_monthly' => 'Mensuel', + 'plan_term_yearly' => 'Annuel', + 'plan_term_month' => 'Mois', + 'plan_term_year' => 'Année', + 'plan_price_monthly' => '$:price/mois', + 'plan_price_yearly' => '$:price/année', + 'updated_plan' => 'Paramètres de mise à jour du plan', + 'plan_paid' => 'Terme depuis le', + 'plan_started' => 'Plan depuis le', + 'plan_expires' => 'Plan expire le', - 'live_preview' => 'Live Preview', - 'page_size' => 'Page Size', - 'live_preview_disabled' => 'Live preview has been disabled to support selected font', - 'invoice_number_padding' => 'Padding', - 'preview' => 'Preview', - 'list_vendors' => 'List Vendors', - 'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.', - 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.', - 'return_to_app' => 'Return to app', - - -); \ No newline at end of file + 'white_label_button' => 'Sans pub', + + 'pro_plan_year_description' => 'Abonnement à une année du plan Invoice Ninja Pro.', + 'pro_plan_month_description' => 'Abonnement à un mois du plan Invoice Ninja Pro.', + 'enterprise_plan_product' => 'Plan Enterprise', + 'enterprise_plan_year_description' => 'Abonnement à une année du plan Invoice Ninja Enterprise.', + 'enterprise_plan_month_description' => 'Abonnement à une année du plan Invoice Ninja Enterprise.', + 'plan_credit_product' => 'Crédit', + 'plan_credit_description' => 'Crédit inutilisé', + 'plan_pending_monthly' => 'Passer au plan mensuel le :date', + 'plan_refunded' => 'Un remboursement vous a été émis.', + + 'live_preview' => 'Prévisualisation', + 'page_size' => 'Taille de page', + 'live_preview_disabled' => 'La prévisualisation en direct a été désactivée pour cette police', + 'invoice_number_padding' => 'Remplissage (padding)', + 'preview' => 'Prévisualistation', + 'list_vendors' => 'Liste des vendeurs', + 'add_users_not_supported' => 'Mettre à jour vers le plan Enterprise plan pour ajouter des utilisateurs à votre compte.', + 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments, :link to see the full list of features.', + 'return_to_app' => 'Retour à l\'application', + + + // Payment updates + 'refund_payment' => 'Remboursement', + 'refund_max' => 'Max:', + 'refund' => 'Rembousement', + 'are_you_sure_refund' => 'Rembourser les paiements sélectionnés?', + 'status_pending' => 'En attente', + 'status_completed' => 'Terminée', + 'status_failed' => 'Échouée', + 'status_partially_refunded' => 'Remboursement partiel', + 'status_partially_refunded_amount' => ':amount remboursé', + 'status_refunded' => 'Remboursé', + 'status_voided' => 'Annulé', + 'refunded_payment' => 'Paiement remboursé', + 'activity_39' => ':user a annulé le paiement de :payment_amount (:payment)', + 'activity_40' => ':user a remboursé :adjustment du paiement de :payment_amount (:payment)', + 'card_expiration' => 'Exp: :expire', + + 'card_creditcardother' => 'Inconnu', + 'card_americanexpress' => 'American Express', + 'card_carteblanche' => 'Carte Blanche', + 'card_unionpay' => 'UnionPay', + 'card_diners' => 'Diners Club', + 'card_discover' => 'Discover', + 'card_jcb' => 'JCB', + 'card_laser' => 'Laser', + 'card_maestro' => 'Maestro', + 'card_mastercard' => 'MasterCard', + 'card_solo' => 'Solo', + 'card_switch' => 'Switch', + 'card_visacard' => 'Visa', + 'card_ach' => 'ACH', + + 'payment_type_stripe' => 'Stripe', + 'ach' => 'ACH', + 'enable_ach' => 'Activer ACH', + 'stripe_ach_help' => 'Les fonctionnalités de ACH requiert d\'être aussi activées pour Stripe.', + 'ach_disabled' => 'Another gateway is already configured for direct debit.', + + 'plaid' => 'Plaid', + 'client_id' => 'ID du client', + 'secret' => 'Secret', + 'public_key' => 'Clé publique', + 'plaid_optional' => '(optionel)', + 'plaid_environment_help' => 'Lorsque une clé de test est fournie, l’environnement de test Plaid (tartan) sera utilisé.', + 'other_providers' => 'Autres fournisseurs', + 'country_not_supported' => 'Ce pays n\'est pas supporté', + 'invalid_routing_number' => 'Le numéro de routage n\'est pas valide', + 'invalid_account_number' => 'Le numéro de compte n\'est pas valide', + 'account_number_mismatch' => 'Les numéros de compte ne correspondent pas', + 'missing_account_holder_type' => 'Veuillez sélectionner le type de compte (personnel / entreprise)', + 'missing_account_holder_name' => 'Veuillez entrer le nom du détenteur du compte', + 'routing_number' => 'Numéro de routage', + 'confirm_account_number' => 'Veuillez confirmer le numéro de compte', + 'individual_account' => 'Compte personnel', + 'company_account' => 'Compte d\'entreprise', + 'account_holder_name' => 'Nom du détenteur', + 'add_account' => 'Ajouter un compte', + 'payment_methods' => 'Méthodes de paiement', + 'complete_verification' => 'Compléter la vérification', + 'verification_amount1' => 'Montant 1', + 'verification_amount2' => 'Montant 2', + 'payment_method_verified' => 'La vérification a été complétée', + 'verification_failed' => 'La vérification a échoué', + 'remove_payment_method' => 'Retirer la méthode de paiement', + 'confirm_remove_payment_method' => 'Souhaitez-vous vraiment retirer cette méthode de paiement?', + 'remove' => 'Retirer', + 'payment_method_removed' => 'Méthode de paiement retirée', + 'bank_account_verification_help' => 'Nous avons fait deux dépôts dans votre compte avec la description "VERIFICATION". Ces dépôts prendront 1-2 jours ouvrables pour apparaître sur le relevé. Veuillez entrer les montants ci-dessous.', + 'bank_account_verification_next_steps' => 'Nous avons fait deux dépôts dans votre compte avec la description "VERIFICATION". Ces dépôts prendront 1-2 jours ouvrables pour apparaître sur votre relevé. +Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette page et cliquez sur "Compléter la vérification" à côté du compte.', + 'unknown_bank' => 'Banque inconnue', + 'ach_verification_delay_help' => 'Vous serez en mesure d\'utiliser le compte après avoir terminé la vérification. La vérification prend habituellement 1-2 jours ouvrables.', + 'add_credit_card' => 'Ajouter une carte de crédit', + 'payment_method_added' => 'Ajouter une méthode de paiement', + 'use_for_auto_bill' => 'Utiliser pour les factures automatiques', + 'used_for_auto_bill' => 'Méthode de paiement de factures automatiques', + 'payment_method_set_as_default' => 'Configurer la méthode de paiement des factures automatiques.', + 'activity_41' => 'Le paiement de :payment_amount a échoué (:payment)', + 'webhook_url' => 'URL Webhook', + 'stripe_webhook_help' => 'Vous devez :link.', + 'stripe_webhook_help_link_text' => 'ajouter cette URL comme un terminal avec Stripe', + 'payment_method_error' => 'Une erreur s\'est produite en ajoutant votre méthode de paiement. Veuillez réessayer plus tard.', + 'notification_invoice_payment_failed_subject' => 'Le paiement a échoué pour la facture :invoice', + 'notification_invoice_payment_failed' => 'Un paiement fait par le client :client pour la facture :invoice à échoué. Le paiement a été marqué comme échoué et :amount a été ajouté au solde du client.', + 'link_with_plaid' => 'Lier le compte instantanément avec Plaid', + 'link_manually' => 'Lier manuellement', + 'secured_by_plaid' => 'Sécurisé par Plaid', + 'plaid_linked_status' => 'Votre compte de banque à :bank', + 'add_payment_method' => 'Ajouter une méthode de paiement', + 'account_holder_type' => 'Type de compte du détenteur', + 'ach_authorization' => 'I authorize :company to use my bank account for future payments and, if necessary, electronically credit my account to correct erroneous debits. I understand that I may cancel this authorization at any time by removing the payment method or by contacting :email.', + 'ach_authorization_required' => 'Vous devez consentir aux transactions ACH.', + 'off' => 'Fermé', + 'opt_in' => 'Activer', + 'opt_out' => 'Désactiver', + 'always' => 'Toujours', + 'opted_out' => 'Désactivé', + 'opted_in' => 'Activé', + 'manage_auto_bill' => 'Gérer les factures automatiques', + 'enabled' => 'Activé', + 'paypal' => 'PayPal', + 'braintree_enable_paypal' => 'Activer les paiements PayPal via BrainTree', + 'braintree_paypal_disabled_help' => 'La passerelle PayPal traite les paiements PayPal', + 'braintree_paypal_help' => 'Vous devez aussi :link.', + 'braintree_paypal_help_link_text' => 'lier PayPal à votre compte BrainTree', + 'token_billing_braintree_paypal' => 'Sauvegarder les détails du paiement', + 'add_paypal_account' => 'Ajouter un compte PayPal', + + + 'no_payment_method_specified' => 'Aucune méthode de paiement spécifiée', + 'chart_type' => 'Type de graphique', + 'format' => 'Format', + 'import_ofx' => 'Importer OFX', + 'ofx_file' => 'Fichier OFX', + 'ofx_parse_failed' => 'Le traitement du fichier OFX a échoué', + + // WePay + 'wepay' => 'WePay', + 'sign_up_with_wepay' => 'S\'enregistrer avec WePay', + 'use_another_provider' => 'Utiliser un autre fournisseur', + 'company_name' => 'Nom de l\'entreprise', + 'wepay_company_name_help' => 'Ceci apparaitra sur le relevé de carte de crédit du client', + 'wepay_description_help' => 'Le but de ce compte.', + 'wepay_tos_agree' => 'J\'accepte les :link.', + 'wepay_tos_link_text' => 'Conditions d\'utilisation de WePay', + 'resend_confirmation_email' => 'Renvoyer le courriel de confirmation', + 'manage_wepay_account' => 'Gérer le compte WePay', + 'action_required' => 'Action requise', + 'finish_setup' => 'Terminer la configuration', + 'created_wepay_confirmation_required' => 'Veuillez vérifier vos courriel et confirmer votre adresse courriel avec WePay.', + 'switch_to_wepay' => 'Changer pour WePay', + 'switch' => 'Changer', + 'restore_account_gateway' => 'Restaurer la passerelle de paiement', + 'restored_account_gateway' => 'La passerelle de paiement a été restaurée', + 'united_states' => 'États-Unis', + 'canada' => 'Canada', + 'accept_debit_cards' => 'Accepter les cartes de débit', + 'debit_cards' => 'Cartes de débit', + + 'warn_start_date_changed' => 'The next invoice will be sent on the new start date.', + 'original_start_date' => 'Original start date', + 'new_start_date' => 'New start date', + 'security' => 'Security', + 'see_whats_new' => 'See what\'s new in v:version', + 'wait_for_upload' => 'Please wait for the document upload to complete.', + 'upgrade_for_permissions' => 'Upgrade to our Enterprise plan to enable permissions.', + 'enable_second_tax_rate' => 'Enable specifying a second tax rate', + 'payment_file' => 'Payment File', + 'expense_file' => 'Expense File', + 'product_file' => 'Product File', + 'import_products' => 'Import Products', + 'products_will_create' => 'products will be created.', + 'product_key' => 'Product', + 'created_products' => 'Successfully created :count product(s)', + 'export_help' => 'Use JSON if you plan to import the data into Invoice Ninja.', + 'JSON_file' => 'JSON File', + + 'view_dashboard' => 'View Dashboard', + 'client_session_expired' => 'Session Expired', + 'client_session_expired_message' => 'Your session has expired. Please click the link in your email again.', + + 'auto_bill_notification' => 'This invoice will automatically be billed to your :payment_method on file on :due_date.', + 'auto_bill_payment_method_bank_transfer' => 'bank account', + 'auto_bill_payment_method_credit_card' => 'credit card', + 'auto_bill_payment_method_paypal' => 'PayPal account', + 'auto_bill_notification_placeholder' => 'This invoice will automatically be billed to your credit card on file on the due date.', + 'payment_settings' => 'Payment Settings', + + 'on_send_date' => 'On send date', + 'on_due_date' => 'On due date', + 'auto_bill_ach_date_help' => 'ACH auto bill will always happen on the due date', + 'warn_change_auto_bill' => 'Due to NACHA rules, changes to this invoice may prevent ACH auto bill.', + + 'bank_account' => 'Bank Account', + 'payment_processed_through_wepay' => 'ACH payments will be processed using WePay.', + 'wepay_payment_tos_agree' => 'I agree to the WePay :terms and :privacy_policy.', + 'privacy_policy' => 'Privacy Policy', + 'wepay_payment_tos_agree_required' => 'You must agree to the WePay Terms of Service and Privacy Policy.', + 'payment_settings_supported_gateways' => 'These options are supported by the WePay, Stripe, and Braintree gateways.', + 'ach_email_prompt' => 'Please enter your email address:', + 'verification_pending' => 'Verification Pending', + + 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', + 'credit_card' => 'Credit Card', + 'bank_transfer' => 'Bank Transfer', + 'no_transaction_reference' => 'We did not recieve a payment transaction reference from the gateway.', + 'use_bank_on_file' => 'Use Bank on File', + 'auto_bill_email_message' => 'This invoice will automatically be billed to the payment method on file on the due date.', + 'bitcoin' => 'Bitcoin', + 'added_on' => 'Added :date', + 'failed_remove_payment_method' => 'Failed to remove the payment method', + 'gateway_exists' => 'This gateway already exists', + 'manual_entry' => 'Manual entry', + +); + +return $LANG; + +?> diff --git a/resources/lang/hr/auth.php b/resources/lang/hr/auth.php new file mode 100644 index 0000000000..2142a42f94 --- /dev/null +++ b/resources/lang/hr/auth.php @@ -0,0 +1,19 @@ + 'Ovi podaci ne odgovaraju našima.', + 'throttle' => 'Previše pokušaja prijave. Molim Vas pokušajte ponovno za :seconds sekundi.', + +]; diff --git a/resources/lang/hr/pagination.php b/resources/lang/hr/pagination.php new file mode 100644 index 0000000000..e0bed173da --- /dev/null +++ b/resources/lang/hr/pagination.php @@ -0,0 +1,19 @@ + '« Prethodna', + 'next' => 'Sljedeća »', + +]; diff --git a/resources/lang/hr/passwords.php b/resources/lang/hr/passwords.php new file mode 100644 index 0000000000..59f39af3fe --- /dev/null +++ b/resources/lang/hr/passwords.php @@ -0,0 +1,22 @@ + 'Lozinke moraju biti duge barem 6 znakova i moraju odgovarati potvrdi.', + 'reset' => 'Lozinka je postavljena!', + 'sent' => 'Poveznica za ponovono postavljanje lozinke je poslana!', + 'token' => 'Oznaka za ponovno postavljanje lozinke više nije važeća.', + 'user' => 'Korisnik nije pronađen.', + +]; diff --git a/resources/lang/hr/texts.php b/resources/lang/hr/texts.php new file mode 100644 index 0000000000..18170932bd --- /dev/null +++ b/resources/lang/hr/texts.php @@ -0,0 +1,1369 @@ + 'Organizacija', + 'name' => 'Ime', + 'website' => 'Web mjesto', + 'work_phone' => 'Telefon', + 'address' => 'Adresa', + 'address1' => 'Ulica', + 'address2' => 'Kat/soba', + 'city' => 'Grad', + 'state' => 'Županija', + 'postal_code' => 'Poštanski broj', + 'country_id' => 'Zemlja', + 'contacts' => 'Kontakti', + 'first_name' => 'Ime', + 'last_name' => 'Prezime', + 'phone' => 'Telefon', + 'email' => 'E-pošta', + 'additional_info' => 'Dodatne informacije', + 'payment_terms' => 'Uvjeti plaćanja', + 'currency_id' => 'Valuta', + 'size_id' => 'Veličina poduzeća', + 'industry_id' => 'Djelatnost', + 'private_notes' => 'Privatne bilješke', + 'invoice' => 'Račun', + 'client' => 'Klijent', + 'invoice_date' => 'Datum računa', + 'due_date' => 'Datum dospijeća', + 'invoice_number' => 'Broj računa', + 'invoice_number_short' => 'Račun #', + 'po_number' => 'Broj narudžbe', + 'po_number_short' => 'NN #', + 'frequency_id' => 'Koliko često', + 'discount' => 'Popust', + 'taxes' => 'Porezi', + 'tax' => 'Porez', + 'item' => 'Stavka', + 'description' => 'Opis', + 'unit_cost' => 'Jedinična cijena', + 'quantity' => 'Količina', + 'line_total' => 'Ukupno', + 'subtotal' => 'Sveukupno', + 'paid_to_date' => 'Plaćeno na vrijeme', + 'balance_due' => 'Stanje duga', + 'invoice_design_id' => 'Dizajn', + 'terms' => 'Uvjeti', + 'your_invoice' => 'Vaš račun', + 'remove_contact' => 'Ukloni kontakt', + 'add_contact' => 'Dodaj kontakt', + 'create_new_client' => 'Kreiraj novog klijenta', + 'edit_client_details' => 'Uredi detalje klijenta', + 'enable' => 'Omogući', + 'learn_more' => 'Više informacija', + 'manage_rates' => 'Upravljanje ratam', + 'note_to_client' => 'Bilješka klijentu', + 'invoice_terms' => 'Uvjeti računa', + 'save_as_default_terms' => 'Pohrani kao zadane uvjete', + 'download_pdf' => 'Preuzmi PDF', + 'pay_now' => 'Plati odmah', + 'save_invoice' => 'Pohrani račun', + 'clone_invoice' => 'Kloniraj račun', + 'archive_invoice' => 'Arhiviraj račun', + 'delete_invoice' => 'Obriši račun', + 'email_invoice' => 'Pošalji e-poštom', + 'enter_payment' => 'Unesi uplatu', + 'tax_rates' => 'Porezne stope', + 'rate' => 'Stopa', + 'settings' => 'Postavke', + 'enable_invoice_tax' => 'Omogući specificiranje poreza na računu', + 'enable_line_item_tax' => 'Omogući specifikaciju poreza na stavci', + 'dashboard' => 'Kontrolna ploča', + 'clients' => 'Klijenti', + 'invoices' => 'Računi', + 'payments' => 'Uplate', + 'credits' => 'Krediti', + 'history' => 'Povijest', + 'search' => 'Pretraga', + 'sign_up' => 'Prijava', + 'guest' => 'Gost', + 'company_details' => 'Detalji poduzeća', + 'online_payments' => 'Online uplate', + 'notifications' => 'Obavijesti e-poštom', + 'import_export' => 'Import | Export', + 'done' => 'Dovršeno', + 'save' => 'Pohrani', + 'create' => 'Kreiraj', + 'upload' => 'Otpremi', + 'import' => 'Uvoz', + 'download' => 'Preuzmi', + 'cancel' => 'Odustani', + 'close' => 'Zatvori', + 'provide_email' => 'Molim, osigurajte ispravnu adresu e-pošte', + 'powered_by' => 'Powered by', + 'no_items' => 'Nema stavki', + 'recurring_invoices' => 'Redovni računi', + 'recurring_help' => 'Automatski šalje klijentu istovjetan račun tjedno, dvotjedno, mjesečno, kvartalno ili godišnje.
+Koristite :MONTH, :QUARTER ili :YEAR za dinamičke datume. Osnovna operacije također rade, npr. :MONTH-1.
+Primjeri dinamičkih varijabli računa:
+We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
+You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', + 'invoice_due_date' => 'Datum valute', + 'quote_due_date' => 'Vrijedi do', + 'valid_until' => 'Vrijedi do', + 'reset_terms' => 'Resetiraj uvjete', + 'reset_footer' => 'Resetiraj podnožje', + 'invoices_sent' => ':count invoice sent|:count invoices sent', + 'status_draft' => 'Nacrt', + 'status_sent' => 'Poslano', + 'status_viewed' => 'Pregledano', + 'status_partial' => 'Parcijalno', + 'status_paid' => 'Plaćeno', + 'show_line_item_tax' => 'Prikaži poreze u liniji stavke', + 'iframe_url' => 'Web mjesto', + 'iframe_url_help1' => 'Kopiraj slijedeći kod na stranicu svog web mjesta.', + 'iframe_url_help2' => 'Možete testirati mogućnost klikom na \'Pogledaj kao primatelj\' za račun.', + 'auto_bill' => 'Auto račun', + 'military_time' => '24 satno vrijeme', + 'last_sent' => 'Zadnje poslano', + 'reminder_emails' => 'E-pošta podsjetnik', + 'templates_and_reminders' => 'Predlošci & podsjetnici', + 'subject' => 'Naslov', + 'body' => 'Tijelo', + 'first_reminder' => 'Prvi podsjetnik', + 'second_reminder' => 'Drugi podsjetnik', + 'third_reminder' => 'Treći podsjetnik', + 'num_days_reminder' => 'Dana nakon isteka valute', + 'reminder_subject' => 'Podsjetnik: Račun :invoice od :account', + 'reset' => 'Resetiraj', + 'invoice_not_found' => 'Traženi račun nije dostupan', + 'referral_program' => 'Referentni progam', + 'referral_code' => 'Referentni URL', + 'last_sent_on' => 'Zadnje poslano :date', + 'page_expire' => 'Ova stranica će uskoro isteći, :click_here za nastavak rada', + 'upcoming_quotes' => 'Nadolazeće ponude', + 'expired_quotes' => 'Istekle ponude', + 'sign_up_using' => 'Prijavi se koristeći', + 'invalid_credentials' => 'Ove vjerodajnice se ne odgovaraju našim zapisima', + 'show_all_options' => 'Prkaži sve opcije', + 'user_details' => 'Detalji korisnika', + 'oneclick_login' => 'Prijava jednim klikom', + 'disable' => 'Onemogući', + 'invoice_quote_number' => 'Brojevi računa i ponuda', + 'invoice_charges' => 'Troškovi računa', + 'notification_invoice_bounced' => 'Nismo mogli dostaviti račun :invoice prema :contact.', + 'notification_invoice_bounced_subject' => 'Nije moguće dostaviti :invoice', + 'notification_quote_bounced' => 'Nismo mogli dostaviti ponudu :invoice prema :contact', + 'notification_quote_bounced_subject' => 'Nije moguće dostaviti ponudu :invoice', + 'custom_invoice_link' => 'Prilagođena poveznica računa', + 'total_invoiced' => 'Ukupno fakturirano', + 'open_balance' => 'Otvoreno stanje', + 'verify_email' => 'Molimo posjetite poveznicu unutar potvrdne e-pošte računa kako bi potvrdili svoju adresu e-pošte.', + 'basic_settings' => 'Osnovne postavke', + 'pro' => 'Pro', + 'gateways' => 'Platni usmjernici', + 'next_send_on' => 'Pošalji slijedeći: :date', + 'no_longer_running' => 'Ovaj račun nije zakazan za slanje', + 'general_settings' => 'Opće postavke', + 'customize' => 'Prilagodi', + 'oneclick_login_help' => 'Spoji se na račun za prijavu bez zaporke', + 'referral_code_help' => 'Zaradite novac dijeleći našu aplikaciju online', + 'enable_with_stripe' => 'Omogući | Zahtijeva Stripe', + 'tax_settings' => 'Postavke poreza', + 'create_tax_rate' => 'Dodaj poreznu stopu', + 'updated_tax_rate' => 'Uspješno ažurirana porezna stopa', + 'created_tax_rate' => 'Uspješno kreirana porezna stopa', + 'edit_tax_rate' => 'Uredi poreznu stopu', + 'archive_tax_rate' => 'Arhiviraj poreznu stopu', + 'archived_tax_rate' => 'Uspješno arhivirana porezna stopa', + 'default_tax_rate_id' => 'Zadana porezna stopa', + 'tax_rate' => 'Porezna stopa', + 'recurring_hour' => 'Ponavljajući sat', + 'pattern' => 'Uzorak', + 'pattern_help_title' => 'Pomoć za uzorke', + 'pattern_help_1' => 'Kreirajte prilagođene brojeve računa i ponuda specifikacijom uzorka', + 'pattern_help_2' => 'Dostupne varijable:', + 'pattern_help_3' => 'Na primjer, :example bi bilo pretvoreno u :value', + 'see_options' => 'Pogledaj opcije', + 'invoice_counter' => 'Brojač računa', + 'quote_counter' => 'Brojač ponuda', + 'type' => 'Tip', + 'activity_1' => ':user kreirao klijenta :client', + 'activity_2' => ':user arhivirao klijenta :client', + 'activity_3' => ':user obrisao klijenta :client', + 'activity_4' => ':user kreirao račun :invoice', + 'activity_5' => ':user ažurirao račun :invoice', + 'activity_6' => ':user poslao e-poštom račun :invoice za :contact', + 'activity_7' => ':contact pregledao račun :invoice', + 'activity_8' => ':user arhivirao račun :invoice', + 'activity_9' => ':user obrisao račun :invoce', + 'activity_10' => ':contact upisao uplatu :payment za :invoice', + 'activity_11' => ':user ažurirao uplatu :payment', + 'activity_12' => ':user ahivirao uplatu :payment', + 'activity_13' => ':user obrisao uplatu :payment', + 'activity_14' => ':user upisao :credit kredit', + 'activity_15' => ':user ažurirao :credit kredit', + 'activity_16' => ':user arhivirao :credit kredit', + 'activity_17' => ':user obrisao :credit kredit', + 'activity_18' => ':user kreirao ponudu :quote', + 'activity_19' => ':user ažurirao ponudu :quote', + 'activity_20' => ':user poslao e-poštom ponudu :quote za :contact', + 'activity_21' => ':contact pregledao ponudu :quote', + 'activity_22' => ':user arhivirao ponudu :quote', + 'activity_23' => ':user obrisao ponudu :quote', + 'activity_24' => ':user obnovio ponudu :quote', + 'activity_25' => ':user obnovio račun :invoice', + 'activity_26' => ':user obnovio klijenta :client', + 'activity_27' => ':user obnovio uplatu :payment', + 'activity_28' => ':user obnovio :credit kredit', + 'activity_29' => ':contact odobrio ponudu :quote', + 'activity_30' => ':user kreirao :vendor', + 'activity_31' => ':user kreirao :vendor', + 'activity_32' => ':user kreirao :vendor:', + 'activity_33' => ':user kreirao :vendor', + 'activity_34' => ':user kreirao trošak :expense', + 'activity_35' => ':user kreirao :vendor', + 'activity_36' => ':user kreirao :vendor', + 'activity_37' => ':user kreirao :vendor', + 'payment' => 'Uplata', + 'system' => 'Sustav', + 'signature' => 'Potpis e-pošte', + 'default_messages' => 'Zadane poruke', + 'quote_terms' => 'Uvjeti ponude', + 'default_quote_terms' => 'Zadani uvjeti ponude', + 'default_invoice_terms' => 'Zadani uvjeti računa', + 'default_invoice_footer' => 'Zadano podnožje računa', + 'quote_footer' => 'Podnožje ponude', + 'free' => 'Slobodan', + 'quote_is_approved' => 'Ova ponuda je odobrena', + 'apply_credit' => 'Primjeni kredit', + 'system_settings' => 'Postavke sustava', + 'archive_token' => 'Arhiviraj token', + 'archived_token' => 'Uspješno arhiviran token', + 'archive_user' => 'Arhiviraj korisnika', + 'archived_user' => 'Uspješno arhiviran korisnik', + 'archive_account_gateway' => 'Arhiviraj usmjernik', + 'archived_account_gateway' => 'Uspješno arhiviran usmjernik', + 'archive_recurring_invoice' => 'Arhiviraj redoviti račun', + 'archived_recurring_invoice' => 'Uspješno arhiviran redoviti račun', + 'delete_recurring_invoice' => 'Obriši redoviti račun', + 'deleted_recurring_invoice' => 'Uspješno obrisan redoviti račun', + 'restore_recurring_invoice' => 'Obnovi redoviti račun', + 'restored_recurring_invoice' => 'Uspješno obnovljen redoviti račun', + 'archived' => 'Arhivirano', + 'untitled_account' => 'Neimenovano poduzeće', + 'before' => 'Prije', + 'after' => 'Poslije', + 'reset_terms_help' => 'Resetiraj na zadane postavke računa', + 'reset_footer_help' => 'Resetiraj na zadane postavke podnožja', + 'export_data' => 'Izvezi podatke', + 'user' => 'Korisnik', + 'country' => 'Zemlja', + 'include' => 'Uključi', + 'logo_too_large' => 'Vaš logo je :size, za bolju PDF izvedbu preporučujemo otpremu slikovne datoteke manje od 200KB', + 'import_freshbooks' => 'Uvezi iz FreshBooks', + 'import_data' => 'Uvezi podatke', + 'source' => 'Izvor', + 'csv' => 'CSV', + 'client_file' => 'Klijentska datoteka', + 'invoice_file' => 'Datoteka računa', + 'task_file' => 'Datoteka zadataka', + 'no_mapper' => 'Nema ispravnog mapiranja za datoteku', + 'invalid_csv_header' => 'Neispravno CSV zaglavlje', + 'client_portal' => 'Klijentski portal', + 'admin' => 'Administracija', + 'disabled' => 'Onemogućeno', + 'show_archived_users' => 'Prikaži arhivirane korisnike', + 'notes' => 'Bilješke', + 'invoice_will_create' => 'klijent će biti kreiran', + 'invoices_will_create' => 'računi će biti kreirani', + 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', + 'publishable_key' => 'Objavljivi ključ', + 'secret_key' => 'Tajni ključ', + 'missing_publishable_key' => 'Postavite vap Stripe objavljivi ključ za poboljšani proces odjave', + 'email_design' => 'Dizajn e-pošte', + 'due_by' => 'Valuta do :date', + 'enable_email_markup' => 'Omogući markup', + 'enable_email_markup_help' => 'Olakšajte svojim klijentima plaćanje dodavanjem schema.org markupa vašoj e-pošti.', + 'template_help_title' => 'Pomoć za predloške', + 'template_help_1' => 'Dostupne varijable:', + 'email_design_id' => 'Stil e-pošte', + 'email_design_help' => 'Napravite svoju e-poštu profesionalnijom pomoću HTML postave', + 'plain' => 'Obično', + 'light' => 'Svijetlo', + 'dark' => 'Tamno', + 'industry_help' => 'Koristi se za usporedbe između prosjeka poduzeća sličnih veličina i djelatnosti.', + 'subdomain_help' => 'Prilagodite poveznicu poddomene na računu ili prikažite račun na vlastitom web mjestu.', + 'invoice_number_help' => 'Odredite prefiks ili koristite prilagođeni uzorak za dinamično postavljanje brojeva računa.', + 'quote_number_help' => 'Odredite prefiks ili koristite prilagođeni uzorak za dinamično postavljanje brojeva ponuda.', + 'custom_client_fields_helps' => 'Add a field when creating a client and display the label and value on the PDF.', + 'custom_account_fields_helps' => 'Dodajte oznaku i vrijednost na sekciju sa detaljima poduzeža na PDFu.', + 'custom_invoice_fields_helps' => 'Add a field when creating an invoice and display the label and value on the PDF.', + 'custom_invoice_charges_helps' => 'Add a field when creating an invoice and include the charge in the invoice subtotals.', + 'token_expired' => 'Validacijski token je istekao. Molimo pokušajte ponovo.', + 'invoice_link' => 'Poveznica računa', + 'button_confirmation_message' => 'Kliknite za potvrdu vaše adrese e-pošte.', + 'confirm' => 'Odobri', + 'email_preferences' => 'Postavke e-pošte', + 'created_invoices' => 'Uspješno kreirano :count računa', + 'next_invoice_number' => 'Slijedeći broj računa je :number.', + 'next_quote_number' => 'Slijedeći broj ponude je :number.', + 'days_before' => 'dana prije', + 'days_after' => 'dana poslije', + 'field_due_date' => 'datum valute', + 'field_invoice_date' => 'datum računa', + 'schedule' => 'Raspored', + 'email_designs' => 'Dizajn e-pošte', + 'assigned_when_sent' => 'Dodijeljeno pri slanju', + 'white_label_purchase_link' => 'Kupite licencu bijele oznake', + 'expense' => 'Trošak', + 'expenses' => 'Troškovi', + 'new_expense' => 'New Expense', + 'enter_expense' => 'Unesi trošak', + 'vendors' => 'Dobavljači', + 'new_vendor' => 'Novi dobavljač', + 'payment_terms_net' => 'čisto', + 'vendor' => 'Dobavljač', + 'edit_vendor' => 'Uredi dobavljača', + 'archive_vendor' => 'Arhiviraj dobavljača', + 'delete_vendor' => 'Obriši dobavljača', + 'view_vendor' => 'Pregledaj dobavljača', + 'deleted_expense' => 'Uspješno obrisan trošak', + 'archived_expense' => 'Uspješno arhiviran trošak', + 'deleted_expenses' => 'Uspješno obrisan trošak', + 'archived_expenses' => 'Uspješno arhivirani troškovi', + 'expense_amount' => 'Iznos troškova', + 'expense_balance' => 'Stanje troškova', + 'expense_date' => 'Datum troška', + 'expense_should_be_invoiced' => 'Treba li fakturirati ovaj trošak?', + 'public_notes' => 'Javne bilješke', + 'invoice_amount' => 'Iznos računa', + 'exchange_rate' => 'Tečaj', + 'yes' => 'Da', + 'no' => 'Ne', + 'should_be_invoiced' => 'Treba biti fakturiran', + 'view_expense' => 'Pregled troškova # :expense', + 'edit_expense' => 'Uredi trošak', + 'archive_expense' => 'Arhiviraj trošak', + 'delete_expense' => 'Obriši trošak', + 'view_expense_num' => 'Trošak # :expense', + 'updated_expense' => 'Uspješno ažuriran trošak', + 'created_expense' => 'Uspješno kreiran trošak', + 'enter_expense' => 'Unesi trošak', + 'view' => 'Pregled', + 'restore_expense' => 'Obnovi trošak', + 'invoice_expense' => 'Trošak računa', + 'expense_error_multiple_clients' => 'Troškovi ne mogu pripadati različitim klijentima', + 'expense_error_invoiced' => 'Trošak je već fakturiran', + 'convert_currency' => 'Konvertiraj valutu', + 'num_days' => 'Broj dana', + 'create_payment_term' => 'Kreiraj uvjete plaćanja', + 'edit_payment_terms' => 'Uredi uvjet plaćanja', + 'edit_payment_term' => 'Uredi uvjete plaćanja', + 'archive_payment_term' => 'Arhiviraj uvjet plaćanje', + 'recurring_due_dates' => 'Datumi dospjeća redovnih računa', + 'recurring_due_date_help' => 'Automatski postavlja datume dospjeća za račune.
+Računi unutar mjesečnog ili godišnjeg ciklusa postavljeni da dospijevaju na dan ili prije dana na koji su kreirani biti će dospjeli slijedeći mjesec. Računi postavljeni da dospjevaju na 29. ili 30. u mjesecu a koji nemaju taj dan biti će dospjeli zadnji dan u mjesecu.
+Računi unutar tjednog ciklusa postavljeni da dospjevaju na dan u tjednu kada su kreirani dospijevati će slijedeći tjedan.
+Na primjer:
+Invia automaticamente al cliente le stesse fatture settimanalmente, bimestralmente, mensilmente, trimestralmente o annualmente.
Usa :MONTH, :QUARTER o :YEAR per date dinamiche. Funziona anche con la matematica di base, ad esempio :MONTH-1.
@@ -110,19 +101,15 @@ return array(We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
-To access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum.
', - +You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', 'invoice_due_date' => 'Scadenza fattura', 'quote_due_date' => 'Validità preventivo', 'valid_until' => 'Valido fino a', @@ -758,15 +662,12 @@ return array( 'status_partial' => 'Parziale', 'status_paid' => 'Pagato', 'show_line_item_tax' => 'Display line item taxes inline', - 'iframe_url' => 'Website', 'iframe_url_help1' => 'Copy the following code to a page on your site.', 'iframe_url_help2' => 'You can test the feature by clicking \'View as recipient\' for an invoice.', - 'auto_bill' => 'Auto Bill', 'military_time' => '24 Hour Time', 'last_sent' => 'Last Sent', - 'reminder_emails' => 'Reminder Emails', 'templates_and_reminders' => 'Templates & Reminders', 'subject' => 'Subject', @@ -778,15 +679,12 @@ return array( 'reminder_subject' => 'Reminder: Invoice :invoice from :account', 'reset' => 'Reset', 'invoice_not_found' => 'The requested invoice is not available', - 'referral_program' => 'Referral Program', 'referral_code' => 'Referral Code', 'last_sent_on' => 'Last sent on :date', - 'page_expire' => 'This page will expire soon, :click_here to keep working', 'upcoming_quotes' => 'Preventivi in scadenza', 'expired_quotes' => 'Preventivi Scaduti', - 'sign_up_using' => 'Sign up using', 'invalid_credentials' => 'Queste credenziali non corrispondono alle nostre registrazioni', 'show_all_options' => 'Mostra tutte le opzioni', @@ -795,17 +693,10 @@ return array( 'disable' => 'Disabilita', 'invoice_quote_number' => 'Numerazione Fatture e Preventivi', 'invoice_charges' => 'Invoice Charges', - - 'invitation_status' => [ - 'sent' => 'Email Sent', - 'opened' => 'Email Openend', - 'viewed' => 'Invoice Viewed', - ], 'notification_invoice_bounced' => 'We were unable to deliver Invoice :invoice to :contact.', 'notification_invoice_bounced_subject' => 'Unable to deliver Invoice :invoice', 'notification_quote_bounced' => 'We were unable to deliver Quote :invoice to :contact.', 'notification_quote_bounced_subject' => 'Unable to deliver Quote :invoice', - 'custom_invoice_link' => 'Custom Invoice Link', 'total_invoiced' => 'Fatturato totale', 'open_balance' => 'Da saldare', @@ -813,14 +704,12 @@ return array( 'basic_settings' => 'Impostazioni Base', 'pro' => 'Pro', 'gateways' => 'Payment Gateways', - 'next_send_on' => 'Send Next: :date', 'no_longer_running' => 'This invoice is not scheduled to run', 'general_settings' => 'General Settings', 'customize' => 'Customize', 'oneclick_login_help' => 'Connect an account to login without a password', 'referral_code_help' => 'Earn money by sharing our app online', - 'enable_with_stripe' => 'Abilita | Richiede Stripe', 'tax_settings' => 'Tax Settings', 'create_tax_rate' => 'Add Tax Rate', @@ -841,7 +730,6 @@ return array( 'invoice_counter' => 'Invoice Counter', 'quote_counter' => 'Quote Counter', 'type' => 'Type', - 'activity_1' => ':user ha creato il cliente :client', 'activity_2' => ':user ha archiviato il cliente :client', 'activity_3' => ':user deleted client :client', @@ -871,18 +759,24 @@ return array( 'activity_27' => ':user restored payment :payment', 'activity_28' => ':user restored :credit credit', 'activity_29' => ':contact ha approvato la fattura :quote', - + 'activity_30' => ':user created :vendor', + 'activity_31' => ':user created :vendor', + 'activity_32' => ':user created :vendor', + 'activity_33' => ':user created :vendor', + 'activity_34' => ':user created expense :expense', + 'activity_35' => ':user created :vendor', + 'activity_36' => ':user created :vendor', + 'activity_37' => ':user created :vendor', 'payment' => 'Payment', 'system' => 'System', 'signature' => 'Email Signature', 'default_messages' => 'Default Messages', 'quote_terms' => 'Quote Terms', 'default_quote_terms' => 'Default Quote Terms', - 'default_invoice_terms' => 'Default Invoice Terms', - 'default_invoice_footer' => 'Default Invoice Footer', + 'default_invoice_terms' => 'Salva termini come predefiniti', + 'default_invoice_footer' => 'Set default invoice footer', 'quote_footer' => 'Quote Footer', 'free' => 'Free', - 'quote_is_approved' => 'Questo preventivo è stato approvato.', 'apply_credit' => 'Apply Credit', 'system_settings' => 'System Settings', @@ -900,7 +794,6 @@ return array( 'restored_recurring_invoice' => 'Successfully restored recurring invoice', 'archived' => 'Archived', 'untitled_account' => 'Untitled Company', - 'before' => 'Before', 'after' => 'After', 'reset_terms_help' => 'Reset to the default account terms', @@ -909,7 +802,6 @@ return array( 'user' => 'User', 'country' => 'Country', 'include' => 'Include', - 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', 'import_freshbooks' => 'Import From FreshBooks', 'import_data' => 'Import Data', @@ -920,16 +812,6 @@ return array( 'task_file' => 'Task File', 'no_mapper' => 'No valid mapping for file', 'invalid_csv_header' => 'Invalid CSV Header', - - 'email_errors' => [ - 'inactive_client' => 'Emails can not be sent to inactive clients', - 'inactive_contact' => 'Emails can not be sent to inactive contacts', - 'inactive_invoice' => 'Emails can not be sent to inactive invoices', - 'user_unregistered' => 'Please register your account to send emails', - 'user_unconfirmed' => 'Please confirm your account to send emails', - 'invalid_contact_email' => 'Invalid contact email', - ], - 'client_portal' => 'Client Portal', 'admin' => 'Admin', 'disabled' => 'Disabled', @@ -938,11 +820,9 @@ return array( 'invoice_will_create' => 'client will be created', 'invoices_will_create' => 'invoices will be created', 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', - 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', - 'email_design' => 'Email Design', 'due_by' => 'Scadenza :date', 'enable_email_markup' => 'Enable Markup', @@ -954,7 +834,6 @@ return array( 'plain' => 'Plain', 'light' => 'Light', 'dark' => 'Dark', - 'industry_help' => 'Used to provide comparisons against the averages of companies of similar size and industry.', 'subdomain_help' => 'Customize the invoice link subdomain or display the invoice on your own website.', 'invoice_number_help' => 'Specify a prefix or use a custom pattern to dynamically set the invoice number.', @@ -963,8 +842,6 @@ return array( 'custom_account_fields_helps' => 'Add a label and value to the company details section of the PDF.', 'custom_invoice_fields_helps' => 'Add a text input to the invoice create/edit page and display the label and value on the PDF.', 'custom_invoice_charges_helps' => 'Add a text input to the invoice create/edit page and include the charge in the invoice subtotals.', - 'color_help' => 'Note: the primary color is also used in the client portal and custom email designs.', - 'token_expired' => 'Validation token was expired. Please try again.', 'invoice_link' => 'Invoice Link', 'button_confirmation_message' => 'Click to confirm your email address.', @@ -973,7 +850,6 @@ return array( 'created_invoices' => 'Successfully created :count invoice(s)', 'next_invoice_number' => 'The next invoice number is :number.', 'next_quote_number' => 'The next quote number is :number.', - 'days_before' => 'days before', 'days_after' => 'days after', 'field_due_date' => 'due date', @@ -981,11 +857,7 @@ return array( 'schedule' => 'Schedule', 'email_designs' => 'Email Designs', 'assigned_when_sent' => 'Assigned when sent', - - 'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.', 'white_label_purchase_link' => 'Purchase a white label license', - - // Expense / vendor 'expense' => 'Spesa', 'expenses' => 'Spese', 'new_expense' => 'Inserisci Spesa', @@ -1002,8 +874,6 @@ return array( 'archived_expense' => 'Successfully archived expense', 'deleted_expenses' => 'Successfully deleted expenses', 'archived_expenses' => 'Successfully archived expenses', - - // Expenses 'expense_amount' => 'Importo Spesa', 'expense_balance' => 'Bilancio Spesa', 'expense_date' => 'Data Spesa', @@ -1025,18 +895,14 @@ return array( 'view' => 'Vedi', 'restore_expense' => 'Ripristina Spesa', 'invoice_expense' => 'Fattura Spesa', - 'expense_error_multiple_clients' =>'Le spese non possono appartenere a clienti differenti', + 'expense_error_multiple_clients' => 'Le spese non possono appartenere a clienti differenti', 'expense_error_invoiced' => 'La spesa è stata già fatturata', 'convert_currency' => 'Converti valuta', - - // Payment terms 'num_days' => 'Numero di giorni', 'create_payment_term' => 'Create Payment Term', 'edit_payment_terms' => 'Edit Payment Term', 'edit_payment_term' => 'Edit Payment Term', 'archive_payment_term' => 'Archive Payment Term', - - // recurring due dates 'recurring_due_dates' => 'Recurring Invoice Due Dates', 'recurring_due_date_help' => 'Automatically sets a due date for the invoice.
Invoices on a monthly or yearly cycle set to be due on or before the day they are created will be due the next month. Invoices set to be due on the 29th or 30th in months that don\'t have that day will be due the last day of the month.
@@ -1064,15 +930,11 @@ return array( 'thursday' => 'Giovedì', 'friday' => 'Venerdì', 'saturday' => 'Sabato', - - // Fonts 'header_font_id' => 'Header Font', 'body_font_id' => 'Body Font', 'color_font_help' => 'Note: the primary color and fonts are also used in the client portal and custom email designs.', - 'live_preview' => 'Live Preview', 'invalid_mail_config' => 'Unable to send email, please check that the mail settings are correct.', - 'invoice_message_button' => 'To view your invoice for :amount, click the button below.', 'quote_message_button' => 'To view your quote for :amount, click the button below.', 'payment_message_button' => 'Thank you for your payment of :amount.', @@ -1089,7 +951,6 @@ return array( 'archived_bank_account' => 'Successfully archived bank account', 'created_bank_account' => 'Successfully created bank account', 'validate_bank_account' => 'Validate Bank Account', - 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', 'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.', 'bank_password_warning' => 'Warning: your password may be transmitted in plain text, consider enabling HTTPS.', 'username' => 'Username', @@ -1103,7 +964,6 @@ return array( 'validate' => 'Validate', 'info' => 'Info', 'imported_expenses' => 'Successfully created :count_vendors vendor(s) and :count_expenses expense(s)', - 'iframe_url_help3' => 'Note: if you plan on accepting credit cards details we strongly recommend enabling HTTPS on your site.', 'expense_error_multiple_currencies' => 'The expenses can\'t have different currencies.', 'expense_error_mismatch_currencies' => 'The client\'s currency does not match the expense currency.', @@ -1124,7 +984,28 @@ return array( 'trial_call_to_action' => 'Start Free Trial', 'trial_success' => 'Successfully enabled two week free pro plan trial', 'overdue' => 'Overdue', - 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + + + 'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.', + 'user_email_footer' => 'Per modificare le impostazioni di notifiche via email per favore accedi a: :link', + 'reset_password_footer' => 'Se non sei stato tu a voler resettare la password per favore invia un\'email di assistenza a: :email', + 'limit_users' => 'Sorry, this will exceed the limit of :limit users', + 'more_designs_self_host_header' => 'Get 6 more invoice designs for just $:price', + 'old_browser' => 'Please use a newer browser', + 'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.', + 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', + + 'pro_plan_remove_logo' => ':link per rimuovere il logo di Invoice Ninja aderendo al programma pro', + 'pro_plan_remove_logo_link' => 'Clicca qui', + 'invitation_status_sent' => 'Email Sent', + 'invitation_status_opened' => 'Email Openend', + 'invitation_status_viewed' => 'Invoice Viewed', + 'email_error_inactive_client' => 'Emails can not be sent to inactive clients', + 'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts', + 'email_error_inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'email_error_user_unregistered' => 'Please register your account to send emails', + 'email_error_user_unconfirmed' => 'Please confirm your account to send emails', + 'email_error_invalid_contact_email' => 'Invalid contact email', 'navigation' => 'Navigation', 'list_invoices' => 'List Invoices', @@ -1147,22 +1028,20 @@ return array( 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', 'recurring_invoice_number' => 'Recurring Invoice Number', 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', - 'enable_client_portal' => 'Dashboard', - 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', // Client Passwords 'enable_portal_password'=>'Password protect invoices', 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', 'send_portal_password'=>'Generate password automatically', 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', - + 'expired' => 'Expired', 'invalid_card_number' => 'The credit card number is not valid.', 'invalid_expiry' => 'The expiration date is not valid.', 'invalid_cvv' => 'The CVV is not valid.', 'cost' => 'Cost', 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', - + // User Permissions 'owner' => 'Owner', 'administrator' => 'Administrator', @@ -1180,8 +1059,8 @@ return array( 'create_all_help' => 'Allow user to create and modify records', 'view_all_help' => 'Allow user to view records they didn\'t create', 'edit_all_help' => 'Allow user to modify records they didn\'t create', - 'view_payment' => 'View Payment', - + 'view_payment' => 'View Payment', + 'january' => 'Gennaio', 'february' => 'Febbraio', 'march' => 'Marzo', @@ -1207,30 +1086,28 @@ return array( 'document_email_attachment' => 'Attach Documents', 'download_documents' => 'Download Documents (:size)', 'documents_from_expenses' => 'From Expenses:', - 'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage - 'DefaultMessage' => 'Drop files or click to upload', - 'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.', - 'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.', - 'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', - 'InvalidFileType' => 'You can\'t upload files of this type.', - 'ResponseError' => 'Server responded with {{statusCode}} code.', - 'CancelUpload' => 'Cancel upload', - 'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?', - 'RemoveFile' => 'Remove file', - ), + 'dropzone_default_message' => 'Drop files or click to upload', + 'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.', + 'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.', + 'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', + 'dropzone_invalid_file_type' => 'You can\'t upload files of this type.', + 'dropzone_response_error' => 'Server responded with {{statusCode}} code.', + 'dropzone_cancel_upload' => 'Cancel upload', + 'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?', + 'dropzone_remove_file' => 'Remove file', 'documents' => 'Documents', 'document_date' => 'Document Date', 'document_size' => 'Size', - 'enable_client_portal' => 'Client Portal', - 'enable_client_portal_help' => 'Show/hide the client portal.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', 'enable_client_portal_dashboard' => 'Dashboard', 'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.', - + // Plans 'account_management' => 'Account Management', 'plan_status' => 'Plan Status', - + 'plan_upgrade' => 'Upgrade', 'plan_change' => 'Change Plan', 'pending_change_to' => 'Changes To', @@ -1260,9 +1137,9 @@ return array( 'plan_paid' => 'Term Started', 'plan_started' => 'Plan Started', 'plan_expires' => 'Plan Expires', - + 'white_label_button' => 'White Label', - + 'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', 'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.', 'enterprise_plan_product' => 'Enterprise Plan', @@ -1280,7 +1157,207 @@ return array( 'preview' => 'Preview', 'list_vendors' => 'List Vendors', 'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.', - 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.', + 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments, :link to see the full list of features.', 'return_to_app' => 'Return to app', - + + + // Payment updates + 'refund_payment' => 'Refund Payment', + 'refund_max' => 'Max:', + 'refund' => 'Refund', + 'are_you_sure_refund' => 'Refund selected payments?', + 'status_pending' => 'Pending', + 'status_completed' => 'Completed', + 'status_failed' => 'Failed', + 'status_partially_refunded' => 'Partially Refunded', + 'status_partially_refunded_amount' => ':amount Refunded', + 'status_refunded' => 'Refunded', + 'status_voided' => 'Cancelled', + 'refunded_payment' => 'Refunded Payment', + 'activity_39' => ':user cancelled a :payment_amount payment (:payment)', + 'activity_40' => ':user refunded :adjustment of a :payment_amount payment (:payment)', + 'card_expiration' => 'Exp: :expires', + + 'card_creditcardother' => 'Unknown', + 'card_americanexpress' => 'American Express', + 'card_carteblanche' => 'Carte Blanche', + 'card_unionpay' => 'UnionPay', + 'card_diners' => 'Diners Club', + 'card_discover' => 'Discover', + 'card_jcb' => 'JCB', + 'card_laser' => 'Laser', + 'card_maestro' => 'Maestro', + 'card_mastercard' => 'MasterCard', + 'card_solo' => 'Solo', + 'card_switch' => 'Switch', + 'card_visacard' => 'Visa', + 'card_ach' => 'ACH', + + 'payment_type_stripe' => 'Stripe', + 'ach' => 'ACH', + 'enable_ach' => 'Enable ACH', + 'stripe_ach_help' => 'ACH support must also be enabled at Stripe.', + 'ach_disabled' => 'Another gateway is already configured for direct debit.', + + 'plaid' => 'Plaid', + 'client_id' => 'Client Id', + 'secret' => 'Secret', + 'public_key' => 'Public Key', + 'plaid_optional' => '(optional)', + 'plaid_environment_help' => 'When a Stripe test key is given, Plaid\'s development environement (tartan) will be used.', + 'other_providers' => 'Other Providers', + 'country_not_supported' => 'That country is not supported.', + 'invalid_routing_number' => 'The routing number is not valid.', + 'invalid_account_number' => 'The account number is not valid.', + 'account_number_mismatch' => 'The account numbers do not match.', + 'missing_account_holder_type' => 'Please select an individual or company account.', + 'missing_account_holder_name' => 'Please enter the account holder\'s name.', + 'routing_number' => 'Routing Number', + 'confirm_account_number' => 'Confirm Account Number', + 'individual_account' => 'Individual Account', + 'company_account' => 'Company Account', + 'account_holder_name' => 'Account Holder Name', + 'add_account' => 'Add Account', + 'payment_methods' => 'Payment Methods', + 'complete_verification' => 'Complete Verification', + 'verification_amount1' => 'Amount 1', + 'verification_amount2' => 'Amount 2', + 'payment_method_verified' => 'Verification completed successfully', + 'verification_failed' => 'Verification Failed', + 'remove_payment_method' => 'Remove Payment Method', + 'confirm_remove_payment_method' => 'Are you sure you want to remove this payment method?', + 'remove' => 'Remove', + 'payment_method_removed' => 'Removed payment method.', + 'bank_account_verification_help' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. Please enter the amounts below.', + 'bank_account_verification_next_steps' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. + Once you have the amounts, come back to this payment methods page and click "Complete Verification" next to the account.', + 'unknown_bank' => 'Unknown Bank', + 'ach_verification_delay_help' => 'You will be able to use the account after completing verification. Verification usually takes 1-2 business days.', + 'add_credit_card' => 'Add Credit Card', + 'payment_method_added' => 'Added payment method.', + 'use_for_auto_bill' => 'Use For Autobill', + 'used_for_auto_bill' => 'Autobill Payment Method', + 'payment_method_set_as_default' => 'Set Autobill payment method.', + 'activity_41' => ':payment_amount payment (:payment) failed', + 'webhook_url' => 'Webhook URL', + 'stripe_webhook_help' => 'You must :link.', + 'stripe_webhook_help_link_text' => 'add this URL as an endpoint at Stripe', + 'payment_method_error' => 'There was an error adding your payment methd. Please try again later.', + 'notification_invoice_payment_failed_subject' => 'Payment failed for Invoice :invoice', + 'notification_invoice_payment_failed' => 'A payment made by client :client towards Invoice :invoice failed. The payment has been marked as failed and :amount has been added to the client\'s balance.', + 'link_with_plaid' => 'Link Account Instantly with Plaid', + 'link_manually' => 'Link Manually', + 'secured_by_plaid' => 'Secured by Plaid', + 'plaid_linked_status' => 'Your bank account at :bank', + 'add_payment_method' => 'Add Payment Method', + 'account_holder_type' => 'Account Holder Type', + 'ach_authorization' => 'I authorize :company to use my bank account for future payments and, if necessary, electronically credit my account to correct erroneous debits. I understand that I may cancel this authorization at any time by removing the payment method or by contacting :email.', + 'ach_authorization_required' => 'You must consent to ACH transactions.', + 'off' => 'Off', + 'opt_in' => 'Opt-in', + 'opt_out' => 'Opt-out', + 'always' => 'Always', + 'opted_out' => 'Opted out', + 'opted_in' => 'Opted in', + 'manage_auto_bill' => 'Manage Auto-bill', + 'enabled' => 'Enabled', + 'paypal' => 'PayPal', + 'braintree_enable_paypal' => 'Enable PayPal payments through BrainTree', + 'braintree_paypal_disabled_help' => 'The PayPal gateway is processing PayPal payments', + 'braintree_paypal_help' => 'You must also :link.', + 'braintree_paypal_help_link_text' => 'link PayPal to your BrainTree account', + 'token_billing_braintree_paypal' => 'Save payment details', + 'add_paypal_account' => 'Add PayPal Account', + + + 'no_payment_method_specified' => 'No payment method specified', + 'chart_type' => 'Chart Type', + 'format' => 'Format', + 'import_ofx' => 'Import OFX', + 'ofx_file' => 'OFX File', + 'ofx_parse_failed' => 'Failed to parse OFX file', + + // WePay + 'wepay' => 'WePay', + 'sign_up_with_wepay' => 'Sign up with WePay', + 'use_another_provider' => 'Use another provider', + 'company_name' => 'Company Name', + 'wepay_company_name_help' => 'This will appear on client\'s credit card statements.', + 'wepay_description_help' => 'The purpose of this account.', + 'wepay_tos_agree' => 'I agree to the :link.', + 'wepay_tos_link_text' => 'WePay Terms of Service', + 'resend_confirmation_email' => 'Resend Confirmation Email', + 'manage_wepay_account' => 'Manage WePay Account', + 'action_required' => 'Action Required', + 'finish_setup' => 'Finish Setup', + 'created_wepay_confirmation_required' => 'Please check your email and confirm your email address with WePay.', + 'switch_to_wepay' => 'Switch to WePay', + 'switch' => 'Switch', + 'restore_account_gateway' => 'Restore Gateway', + 'restored_account_gateway' => 'Successfully restored gateway', + 'united_states' => 'United States', + 'canada' => 'Canada', + 'accept_debit_cards' => 'Accept Debit Cards', + 'debit_cards' => 'Debit Cards', + + 'warn_start_date_changed' => 'The next invoice will be sent on the new start date.', + 'original_start_date' => 'Original start date', + 'new_start_date' => 'New start date', + 'security' => 'Security', + 'see_whats_new' => 'See what\'s new in v:version', + 'wait_for_upload' => 'Please wait for the document upload to complete.', + 'upgrade_for_permissions' => 'Upgrade to our Enterprise plan to enable permissions.', + 'enable_second_tax_rate' => 'Enable specifying a second tax rate', + 'payment_file' => 'Payment File', + 'expense_file' => 'Expense File', + 'product_file' => 'Product File', + 'import_products' => 'Import Products', + 'products_will_create' => 'products will be created.', + 'product_key' => 'Product', + 'created_products' => 'Successfully created :count product(s)', + 'export_help' => 'Use JSON if you plan to import the data into Invoice Ninja.', + 'JSON_file' => 'JSON File', + + 'view_dashboard' => 'View Dashboard', + 'client_session_expired' => 'Session Expired', + 'client_session_expired_message' => 'Your session has expired. Please click the link in your email again.', + + 'auto_bill_notification' => 'This invoice will automatically be billed to your :payment_method on file on :due_date.', + 'auto_bill_payment_method_bank_transfer' => 'bank account', + 'auto_bill_payment_method_credit_card' => 'credit card', + 'auto_bill_payment_method_paypal' => 'PayPal account', + 'auto_bill_notification_placeholder' => 'This invoice will automatically be billed to your credit card on file on the due date.', + 'payment_settings' => 'Payment Settings', + + 'on_send_date' => 'On send date', + 'on_due_date' => 'On due date', + 'auto_bill_ach_date_help' => 'ACH auto bill will always happen on the due date', + 'warn_change_auto_bill' => 'Due to NACHA rules, changes to this invoice may prevent ACH auto bill.', + + 'bank_account' => 'Bank Account', + 'payment_processed_through_wepay' => 'ACH payments will be processed using WePay.', + 'wepay_payment_tos_agree' => 'I agree to the WePay :terms and :privacy_policy.', + 'privacy_policy' => 'Privacy Policy', + 'wepay_payment_tos_agree_required' => 'You must agree to the WePay Terms of Service and Privacy Policy.', + 'payment_settings_supported_gateways' => 'These options are supported by the WePay, Stripe, and Braintree gateways.', + 'ach_email_prompt' => 'Please enter your email address:', + 'verification_pending' => 'Verification Pending', + + 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', + 'credit_card' => 'Credit Card', + 'bank_transfer' => 'Bank Transfer', + 'no_transaction_reference' => 'We did not recieve a payment transaction reference from the gateway.', + 'use_bank_on_file' => 'Use Bank on File', + 'auto_bill_email_message' => 'This invoice will automatically be billed to the payment method on file on the due date.', + 'bitcoin' => 'Bitcoin', + 'added_on' => 'Added :date', + 'failed_remove_payment_method' => 'Failed to remove the payment method', + 'gateway_exists' => 'This gateway already exists', + 'manual_entry' => 'Manual entry', + ); + +return $LANG; + +?> diff --git a/resources/lang/ja/texts.php b/resources/lang/ja/texts.php index 3875de2435..ef8f48fd3b 100644 --- a/resources/lang/ja/texts.php +++ b/resources/lang/ja/texts.php @@ -5,8 +5,8 @@ $LANG = array( 'name' => '名前', 'website' => 'WEBサイト', 'work_phone' => '電話番号', - 'address' => "住所", - 'address1' => "番地", + 'address' => '住所', + 'address1' => '番地', 'address2' => '建物', 'city' => '市区町村', 'state' => '都道府県', @@ -268,7 +268,6 @@ $LANG = array( 'erase_data' => 'あなたのデータを完全に削除します。', 'password' => 'パスワード', 'pro_plan_product' => 'プロ・プラン', - 'pro_plan_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', 'pro_plan_success' => 'Thanks for choosing Invoice Ninja\'s Pro plan!We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
-To access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum.
', +You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', 'invoice_due_date' => '支払期日', 'quote_due_date' => 'Valid Until', 'valid_until' => 'Valid Until', @@ -993,40 +992,26 @@ $LANG = array( 'overdue' => 'Overdue', - 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', - 'user_email_footer' => 'To adjust your email notification settings please visit '.SITE_URL.'/settings/notifications', - 'reset_password_footer' => 'If you did not request this password reset please email our support: '.CONTACT_EMAIL, - 'limit_users' => 'Sorry, this will exceed the limit of '.MAX_NUM_USERS.' users', - 'more_designs_self_host_header' => 'Get 6 more invoice designs for just $'.INVOICE_DESIGNS_PRICE, - 'old_browser' => 'Please use a newer browser', - 'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.', - 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', - 'security' => [ - 'too_many_attempts' => 'Too many attempts. Try again in few minutes.', - 'wrong_credentials' => 'メールアドレスもしくはパスワードが正しくありません。', - 'confirmation' => 'アカウントが確認されました!', - 'wrong_confirmation' => '確認コードが違っています。', - 'password_forgot' => 'The information regarding password reset was sent to your email.', - 'password_reset' => 'パスワードが変更されました。', - 'wrong_password_reset' => 'パスワードが正しくありません。もう一度入力してください。', - ], - 'pro_plan' => [ - 'remove_logo' => 'プロプランに加入して、Invoice Ninjaのロゴを消す。 :link', - 'remove_logo_link' => 'こちらをクリック', - ], - 'invitation_status' => [ - 'sent' => 'メール送付済', - 'opened' => 'メール開封済', - 'viewed' => '請求書閲覧済', - ], - 'email_errors' => [ - 'inactive_client' => 'Emails can not be sent to inactive clients', - 'inactive_contact' => 'Emails can not be sent to inactive contacts', - 'inactive_invoice' => 'Emails can not be sent to inactive invoices', - 'user_unregistered' => 'Please register your account to send emails', - 'user_unconfirmed' => 'Please confirm your account to send emails', - 'invalid_contact_email' => 'Invalid contact email', - ], + 'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.', + 'user_email_footer' => 'To adjust your email notification settings please visit :link', + 'reset_password_footer' => 'If you did not request this password reset please email our support: :email', + 'limit_users' => 'Sorry, this will exceed the limit of :limit users', + 'more_designs_self_host_header' => 'Get 6 more invoice designs for just $:price', + 'old_browser' => 'Please use a newer browser', + 'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.', + 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', + + 'pro_plan_remove_logo' => 'プロプランに加入して、Invoice Ninjaのロゴを消す。 :link', + 'pro_plan_remove_logo_link' => 'こちらをクリック', + 'invitation_status_sent' => 'メール送付済', + 'invitation_status_opened' => 'メール開封済', + 'invitation_status_viewed' => '請求書閲覧済', + 'email_error_inactive_client' => 'Emails can not be sent to inactive clients', + 'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts', + 'email_error_inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'email_error_user_unregistered' => 'Please register your account to send emails', + 'email_error_user_unconfirmed' => 'Please confirm your account to send emails', + 'email_error_invalid_contact_email' => 'Invalid contact email', 'navigation' => 'ナビゲーション', 'list_invoices' => '請求書一覧', @@ -1049,22 +1034,20 @@ $LANG = array( 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', 'recurring_invoice_number' => 'Recurring Invoice Number', 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', - 'enable_client_portal' => 'ダッシュボード', - 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', // Client Passwords 'enable_portal_password'=>'Password protect invoices', 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', 'send_portal_password'=>'Generate password automatically', 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', - + 'expired' => 'Expired', 'invalid_card_number' => 'The credit card number is not valid.', 'invalid_expiry' => 'The expiration date is not valid.', 'invalid_cvv' => 'The CVV is not valid.', 'cost' => 'Cost', 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', - + // User Permissions 'owner' => 'Owner', 'administrator' => 'Administrator', @@ -1082,8 +1065,8 @@ $LANG = array( 'create_all_help' => 'Allow user to create and modify records', 'view_all_help' => 'Allow user to view records they didn\'t create', 'edit_all_help' => 'Allow user to modify records they didn\'t create', - 'view_payment' => 'View Payment', - + 'view_payment' => 'View Payment', + 'january' => 'January', 'february' => 'February', 'march' => 'March', @@ -1109,30 +1092,28 @@ $LANG = array( 'document_email_attachment' => 'Attach Documents', 'download_documents' => 'Download Documents (:size)', 'documents_from_expenses' => 'From Expenses:', - 'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage - 'DefaultMessage' => 'Drop files or click to upload', - 'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.', - 'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.', - 'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', - 'InvalidFileType' => 'You can\'t upload files of this type.', - 'ResponseError' => 'Server responded with {{statusCode}} code.', - 'CancelUpload' => 'Cancel upload', - 'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?', - 'RemoveFile' => 'Remove file', - ), + 'dropzone_default_message' => 'Drop files or click to upload', + 'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.', + 'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.', + 'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', + 'dropzone_invalid_file_type' => 'You can\'t upload files of this type.', + 'dropzone_response_error' => 'Server responded with {{statusCode}} code.', + 'dropzone_cancel_upload' => 'Cancel upload', + 'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?', + 'dropzone_remove_file' => 'Remove file', 'documents' => 'Documents', 'document_date' => 'Document Date', 'document_size' => 'Size', - 'enable_client_portal' => 'Client Portal', - 'enable_client_portal_help' => 'Show/hide the client portal.', + 'enable_client_portal' => 'ダッシュボード', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', 'enable_client_portal_dashboard' => 'Dashboard', 'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.', - + // Plans 'account_management' => 'Account Management', 'plan_status' => 'Plan Status', - + 'plan_upgrade' => 'Upgrade', 'plan_change' => 'Change Plan', 'pending_change_to' => 'Changes To', @@ -1162,9 +1143,9 @@ $LANG = array( 'plan_paid' => 'Term Started', 'plan_started' => 'Plan Started', 'plan_expires' => 'Plan Expires', - + 'white_label_button' => 'White Label', - + 'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', 'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.', 'enterprise_plan_product' => 'Enterprise Plan', @@ -1175,19 +1156,214 @@ $LANG = array( 'plan_pending_monthly' => 'Will switch to monthly on :date', 'plan_refunded' => 'A refund has been issued.', - 'live_preview' => 'Live Preview', + 'live_preview' => 'ライブ・プレビュー', 'page_size' => 'Page Size', 'live_preview_disabled' => 'Live preview has been disabled to support selected font', 'invoice_number_padding' => 'Padding', 'preview' => 'Preview', 'list_vendors' => 'List Vendors', 'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.', - 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.', + 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments, :link to see the full list of features.', 'return_to_app' => 'Return to app', - - + + + // Payment updates + 'refund_payment' => 'Refund Payment', + 'refund_max' => 'Max:', + 'refund' => 'Refund', + 'are_you_sure_refund' => 'Refund selected payments?', + 'status_pending' => 'Pending', + 'status_completed' => 'Completed', + 'status_failed' => 'Failed', + 'status_partially_refunded' => 'Partially Refunded', + 'status_partially_refunded_amount' => ':amount Refunded', + 'status_refunded' => 'Refunded', + 'status_voided' => 'Cancelled', + 'refunded_payment' => 'Refunded Payment', + 'activity_39' => ':user cancelled a :payment_amount payment (:payment)', + 'activity_40' => ':user refunded :adjustment of a :payment_amount payment (:payment)', + 'card_expiration' => 'Exp: :expires', + + 'card_creditcardother' => 'Unknown', + 'card_americanexpress' => 'American Express', + 'card_carteblanche' => 'Carte Blanche', + 'card_unionpay' => 'UnionPay', + 'card_diners' => 'Diners Club', + 'card_discover' => 'Discover', + 'card_jcb' => 'JCB', + 'card_laser' => 'Laser', + 'card_maestro' => 'Maestro', + 'card_mastercard' => 'MasterCard', + 'card_solo' => 'Solo', + 'card_switch' => 'Switch', + 'card_visacard' => 'Visa', + 'card_ach' => 'ACH', + + 'payment_type_stripe' => 'Stripe', + 'ach' => 'ACH', + 'enable_ach' => 'Enable ACH', + 'stripe_ach_help' => 'ACH support must also be enabled at Stripe.', + 'ach_disabled' => 'Another gateway is already configured for direct debit.', + + 'plaid' => 'Plaid', + 'client_id' => 'Client Id', + 'secret' => 'Secret', + 'public_key' => 'Public Key', + 'plaid_optional' => '(optional)', + 'plaid_environment_help' => 'When a Stripe test key is given, Plaid\'s development environement (tartan) will be used.', + 'other_providers' => 'Other Providers', + 'country_not_supported' => 'That country is not supported.', + 'invalid_routing_number' => 'The routing number is not valid.', + 'invalid_account_number' => 'The account number is not valid.', + 'account_number_mismatch' => 'The account numbers do not match.', + 'missing_account_holder_type' => 'Please select an individual or company account.', + 'missing_account_holder_name' => 'Please enter the account holder\'s name.', + 'routing_number' => 'Routing Number', + 'confirm_account_number' => 'Confirm Account Number', + 'individual_account' => 'Individual Account', + 'company_account' => 'Company Account', + 'account_holder_name' => 'Account Holder Name', + 'add_account' => 'Add Account', + 'payment_methods' => 'Payment Methods', + 'complete_verification' => 'Complete Verification', + 'verification_amount1' => 'Amount 1', + 'verification_amount2' => 'Amount 2', + 'payment_method_verified' => 'Verification completed successfully', + 'verification_failed' => 'Verification Failed', + 'remove_payment_method' => 'Remove Payment Method', + 'confirm_remove_payment_method' => 'Are you sure you want to remove this payment method?', + 'remove' => 'Remove', + 'payment_method_removed' => 'Removed payment method.', + 'bank_account_verification_help' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. Please enter the amounts below.', + 'bank_account_verification_next_steps' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. + Once you have the amounts, come back to this payment methods page and click "Complete Verification" next to the account.', + 'unknown_bank' => 'Unknown Bank', + 'ach_verification_delay_help' => 'You will be able to use the account after completing verification. Verification usually takes 1-2 business days.', + 'add_credit_card' => 'Add Credit Card', + 'payment_method_added' => 'Added payment method.', + 'use_for_auto_bill' => 'Use For Autobill', + 'used_for_auto_bill' => 'Autobill Payment Method', + 'payment_method_set_as_default' => 'Set Autobill payment method.', + 'activity_41' => ':payment_amount payment (:payment) failed', + 'webhook_url' => 'Webhook URL', + 'stripe_webhook_help' => 'You must :link.', + 'stripe_webhook_help_link_text' => 'add this URL as an endpoint at Stripe', + 'payment_method_error' => 'There was an error adding your payment methd. Please try again later.', + 'notification_invoice_payment_failed_subject' => 'Payment failed for Invoice :invoice', + 'notification_invoice_payment_failed' => 'A payment made by client :client towards Invoice :invoice failed. The payment has been marked as failed and :amount has been added to the client\'s balance.', + 'link_with_plaid' => 'Link Account Instantly with Plaid', + 'link_manually' => 'Link Manually', + 'secured_by_plaid' => 'Secured by Plaid', + 'plaid_linked_status' => 'Your bank account at :bank', + 'add_payment_method' => 'Add Payment Method', + 'account_holder_type' => 'Account Holder Type', + 'ach_authorization' => 'I authorize :company to use my bank account for future payments and, if necessary, electronically credit my account to correct erroneous debits. I understand that I may cancel this authorization at any time by removing the payment method or by contacting :email.', + 'ach_authorization_required' => 'You must consent to ACH transactions.', + 'off' => 'Off', + 'opt_in' => 'Opt-in', + 'opt_out' => 'Opt-out', + 'always' => 'Always', + 'opted_out' => 'Opted out', + 'opted_in' => 'Opted in', + 'manage_auto_bill' => 'Manage Auto-bill', + 'enabled' => 'Enabled', + 'paypal' => 'PayPal', + 'braintree_enable_paypal' => 'Enable PayPal payments through BrainTree', + 'braintree_paypal_disabled_help' => 'The PayPal gateway is processing PayPal payments', + 'braintree_paypal_help' => 'You must also :link.', + 'braintree_paypal_help_link_text' => 'link PayPal to your BrainTree account', + 'token_billing_braintree_paypal' => 'Save payment details', + 'add_paypal_account' => 'Add PayPal Account', + + + 'no_payment_method_specified' => 'No payment method specified', + 'chart_type' => 'Chart Type', + 'format' => 'Format', + 'import_ofx' => 'Import OFX', + 'ofx_file' => 'OFX File', + 'ofx_parse_failed' => 'Failed to parse OFX file', + + // WePay + 'wepay' => 'WePay', + 'sign_up_with_wepay' => 'Sign up with WePay', + 'use_another_provider' => 'Use another provider', + 'company_name' => 'Company Name', + 'wepay_company_name_help' => 'This will appear on client\'s credit card statements.', + 'wepay_description_help' => 'The purpose of this account.', + 'wepay_tos_agree' => 'I agree to the :link.', + 'wepay_tos_link_text' => 'WePay Terms of Service', + 'resend_confirmation_email' => 'Resend Confirmation Email', + 'manage_wepay_account' => 'Manage WePay Account', + 'action_required' => 'Action Required', + 'finish_setup' => 'Finish Setup', + 'created_wepay_confirmation_required' => 'Please check your email and confirm your email address with WePay.', + 'switch_to_wepay' => 'Switch to WePay', + 'switch' => 'Switch', + 'restore_account_gateway' => 'Restore Gateway', + 'restored_account_gateway' => 'Successfully restored gateway', + 'united_states' => 'United States', + 'canada' => 'Canada', + 'accept_debit_cards' => 'Accept Debit Cards', + 'debit_cards' => 'Debit Cards', + + 'warn_start_date_changed' => 'The next invoice will be sent on the new start date.', + 'original_start_date' => 'Original start date', + 'new_start_date' => 'New start date', + 'security' => 'Security', + 'see_whats_new' => 'See what\'s new in v:version', + 'wait_for_upload' => 'Please wait for the document upload to complete.', + 'upgrade_for_permissions' => 'Upgrade to our Enterprise plan to enable permissions.', + 'enable_second_tax_rate' => 'Enable specifying a second tax rate', + 'payment_file' => 'Payment File', + 'expense_file' => 'Expense File', + 'product_file' => 'Product File', + 'import_products' => 'Import Products', + 'products_will_create' => 'products will be created.', + 'product_key' => 'Product', + 'created_products' => 'Successfully created :count product(s)', + 'export_help' => 'Use JSON if you plan to import the data into Invoice Ninja.', + 'JSON_file' => 'JSON File', + + 'view_dashboard' => 'View Dashboard', + 'client_session_expired' => 'Session Expired', + 'client_session_expired_message' => 'Your session has expired. Please click the link in your email again.', + + 'auto_bill_notification' => 'This invoice will automatically be billed to your :payment_method on file on :due_date.', + 'auto_bill_payment_method_bank_transfer' => 'bank account', + 'auto_bill_payment_method_credit_card' => 'credit card', + 'auto_bill_payment_method_paypal' => 'PayPal account', + 'auto_bill_notification_placeholder' => 'This invoice will automatically be billed to your credit card on file on the due date.', + 'payment_settings' => 'Payment Settings', + + 'on_send_date' => 'On send date', + 'on_due_date' => 'On due date', + 'auto_bill_ach_date_help' => 'ACH auto bill will always happen on the due date', + 'warn_change_auto_bill' => 'Due to NACHA rules, changes to this invoice may prevent ACH auto bill.', + + 'bank_account' => 'Bank Account', + 'payment_processed_through_wepay' => 'ACH payments will be processed using WePay.', + 'wepay_payment_tos_agree' => 'I agree to the WePay :terms and :privacy_policy.', + 'privacy_policy' => 'Privacy Policy', + 'wepay_payment_tos_agree_required' => 'You must agree to the WePay Terms of Service and Privacy Policy.', + 'payment_settings_supported_gateways' => 'These options are supported by the WePay, Stripe, and Braintree gateways.', + 'ach_email_prompt' => 'Please enter your email address:', + 'verification_pending' => 'Verification Pending', + + 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', + 'credit_card' => 'Credit Card', + 'bank_transfer' => 'Bank Transfer', + 'no_transaction_reference' => 'We did not recieve a payment transaction reference from the gateway.', + 'use_bank_on_file' => 'Use Bank on File', + 'auto_bill_email_message' => 'This invoice will automatically be billed to the payment method on file on the due date.', + 'bitcoin' => 'Bitcoin', + 'added_on' => 'Added :date', + 'failed_remove_payment_method' => 'Failed to remove the payment method', + 'gateway_exists' => 'This gateway already exists', + 'manual_entry' => 'Manual entry', + ); return $LANG; -?>. \ No newline at end of file +?> diff --git a/resources/lang/lt/texts.php b/resources/lang/lt/texts.php index 75cb494ca9..3db70f9eab 100644 --- a/resources/lang/lt/texts.php +++ b/resources/lang/lt/texts.php @@ -1,15 +1,13 @@ - 'Įmonė', - 'name' => 'Vardas', + 'name' => 'Pavadinimas', 'website' => 'Internetinis puslapis', 'work_phone' => 'Telefonas', 'address' => 'Adresas', - 'address1' => 'Gatvė', - 'address2' => 'Kabinetas', + 'address1' => 'Adresas', + 'address2' => 'Adresas2', 'city' => 'Miestas', 'state' => 'Valstija', 'postal_code' => 'Pašto kodas', @@ -19,38 +17,35 @@ return array( 'last_name' => 'Pavardė', 'phone' => 'Telefonas', 'email' => 'El. paštas', - 'additional_info' => 'Papidoma Info', - 'payment_terms' => 'Apmokėjimo sąlygos', + 'additional_info' => 'Papildoma informacija', + 'payment_terms' => 'Atsiskaitymo sąlygos', 'currency_id' => 'Valiuta', 'size_id' => 'Dydis', 'industry_id' => 'Veiklos sritis', 'private_notes' => 'Privatūs užrašai', - - // invoice 'invoice' => 'Sąkaita faktūra', 'client' => 'Klientas', 'invoice_date' => 'Išrašymo data', - 'due_date' => 'Apmokėjimo Data', + 'due_date' => 'Mokėjimo diena', 'invoice_number' => 'Serija ir Nr.', 'invoice_number_short' => 'Nr.', - 'po_number' => 'PO Numeris', - 'po_number_short' => 'PO Nr.', + 'po_number' => 'Čekio numeris', + 'po_number_short' => 'Čekio Nr.', 'frequency_id' => 'Kaip dažnai', 'discount' => 'Nuolaida', 'taxes' => 'Mokesčiai', 'tax' => 'PVM', - 'item' => 'Prekė', + 'item' => 'Prekė/Paslauga', 'description' => 'Aprašymas', 'unit_cost' => 'Vnt. kaina', 'quantity' => 'Kiekis', 'line_total' => 'Suma', 'subtotal' => 'Suma viso', 'paid_to_date' => 'Apmokėta', - 'balance_due' => 'Apmokėti', + 'balance_due' => 'Mokėti', 'invoice_design_id' => 'Dizainas', 'terms' => 'Sąlygos', 'your_invoice' => 'Tavo sąskaitos', - 'remove_contact' => 'Pašalinti kontaktą', 'add_contact' => 'Pridėti kontaktą', 'create_new_client' => 'Sukurti naują klientą', @@ -74,8 +69,6 @@ return array( 'settings' => 'Nustatymai', 'enable_invoice_tax' => 'Įjungti PVM mokesčius', 'enable_line_item_tax' => 'Įjungti PVM mokesčius sumai', - - // navigation 'dashboard' => 'Darbastalis', 'clients' => 'Klientai', 'invoices' => 'Sąskaitos', @@ -98,11 +91,9 @@ return array( 'cancel' => 'Atšaukti', 'close' => 'Uždaryti', 'provide_email' => 'Prašome pateikti galiojantį el. pašto adresą', - 'powered_by' => 'Energija teikia', + 'powered_by' => 'Sukurta', 'no_items' => 'Įrašų nėra', - - // recurring invoices - 'recurring_invoices' => 'Recurring Invoices', + 'recurring_invoices' => 'Debeto sąskaitos', 'recurring_help' => 'Automatically send clients the same invoices weekly, bi-monthly, monthly, quarterly or annually.
Use :MONTH, :QUARTER or :YEAR for dynamic dates. Basic math works as well, for example :MONTH-1.
Examples of dynamic invoice variables:
@@ -111,80 +102,70 @@ return array(We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
-To access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum.
', - - 'invoice_due_date' => 'Due Date', - 'quote_due_date' => 'Valid Until', - 'valid_until' => 'Valid Until', - 'reset_terms' => 'Reset terms', +You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', + 'invoice_due_date' => 'Terminas', + 'quote_due_date' => 'Galioja iki', + 'valid_until' => 'Galioja iki', + 'reset_terms' => 'Naujos sąlygos', 'reset_footer' => 'Reset footer', - 'invoices_sent' => ':count invoice sent|:count invoices sent', - 'status_draft' => 'Draft', - 'status_sent' => 'Sent', - 'status_viewed' => 'Viewed', - 'status_partial' => 'Partial', - 'status_paid' => 'Paid', + 'invoices_sent' => ':count sąskaita išsiųsta|:count sąskaitos išsiųstos', + 'status_draft' => 'Juodraštis', + 'status_sent' => 'Išsiųsta', + 'status_viewed' => 'Parodyta', + 'status_partial' => 'Dalinis', + 'status_paid' => 'Apmokėta', 'show_line_item_tax' => 'Display line item taxes inline', - - 'iframe_url' => 'Website', + 'iframe_url' => 'Tinklapis', 'iframe_url_help1' => 'Copy the following code to a page on your site.', 'iframe_url_help2' => 'You can test the feature by clicking \'View as recipient\' for an invoice.', - - 'auto_bill' => 'Auto Bill', - 'military_time' => '24 Hour Time', + 'auto_bill' => 'Automatinis mokėjimas', + 'military_time' => '24 val. formatas', 'last_sent' => 'Last Sent', - 'reminder_emails' => 'Reminder Emails', 'templates_and_reminders' => 'Templates & Reminders', - 'subject' => 'Subject', - 'body' => 'Body', + 'subject' => 'Tema', + 'body' => 'Žinutė', 'first_reminder' => 'First Reminder', 'second_reminder' => 'Second Reminder', 'third_reminder' => 'Third Reminder', 'num_days_reminder' => 'Days after due date', 'reminder_subject' => 'Reminder: Invoice :invoice from :account', - 'reset' => 'Reset', + 'reset' => 'Iš naujo', 'invoice_not_found' => 'The requested invoice is not available', - 'referral_program' => 'Referral Program', 'referral_code' => 'Referral Code', 'last_sent_on' => 'Last sent on :date', - 'page_expire' => 'This page will expire soon, :click_here to keep working', 'upcoming_quotes' => 'Upcoming Quotes', 'expired_quotes' => 'Expired Quotes', - 'sign_up_using' => 'Sign up using', 'invalid_credentials' => 'These credentials do not match our records', 'show_all_options' => 'Show all options', @@ -802,17 +699,10 @@ return array( 'disable' => 'Disable', 'invoice_quote_number' => 'Invoice and Quote Numbers', 'invoice_charges' => 'Invoice Charges', - - 'invitation_status' => [ - 'sent' => 'Email Sent', - 'opened' => 'Email Openend', - 'viewed' => 'Invoice Viewed', - ], 'notification_invoice_bounced' => 'We were unable to deliver Invoice :invoice to :contact.', 'notification_invoice_bounced_subject' => 'Unable to deliver Invoice :invoice', 'notification_quote_bounced' => 'We were unable to deliver Quote :invoice to :contact.', 'notification_quote_bounced_subject' => 'Unable to deliver Quote :invoice', - 'custom_invoice_link' => 'Custom Invoice Link', 'total_invoiced' => 'Total Invoiced', 'open_balance' => 'Open Balance', @@ -820,14 +710,12 @@ return array( 'basic_settings' => 'Basic Settings', 'pro' => 'Pro', 'gateways' => 'Payment Gateways', - - 'next_send_on' => 'Send Next: :date', + 'next_send_on' => 'Siųsti kitą: :date', 'no_longer_running' => 'This invoice is not scheduled to run', 'general_settings' => 'General Settings', 'customize' => 'Customize', 'oneclick_login_help' => 'Connect an account to login without a password', 'referral_code_help' => 'Earn money by sharing our app online', - 'enable_with_stripe' => 'Enable | Requires Stripe', 'tax_settings' => 'Tax Settings', 'create_tax_rate' => 'Add Tax Rate', @@ -848,18 +736,17 @@ return array( 'invoice_counter' => 'Invoice Counter', 'quote_counter' => 'Quote Counter', 'type' => 'Type', - - 'activity_1' => ':user created client :client', + 'activity_1' => ':user sukūrė klientą :client', 'activity_2' => ':user archived client :client', 'activity_3' => ':user deleted client :client', - 'activity_4' => ':user created invoice :invoice', + 'activity_4' => ':user sukurta sąskaita :invoice', 'activity_5' => ':user updated invoice :invoice', - 'activity_6' => ':user emailed invoice :invoice to :contact', + 'activity_6' => ':user išsiuntė sąskaitą :invoice - :contact', 'activity_7' => ':contact viewed invoice :invoice', 'activity_8' => ':user archived invoice :invoice', 'activity_9' => ':user deleted invoice :invoice', 'activity_10' => ':contact entered payment :payment for :invoice', - 'activity_11' => ':user updated payment :payment', + 'activity_11' => ':user atnaujino mokėjimą :payment', 'activity_12' => ':user archived payment :payment', 'activity_13' => ':user deleted payment :payment', 'activity_14' => ':user entered :credit credit', @@ -878,18 +765,24 @@ return array( 'activity_27' => ':user restored payment :payment', 'activity_28' => ':user restored :credit credit', 'activity_29' => ':contact approved quote :quote', - + 'activity_30' => ':user sukurtas :vendor', + 'activity_31' => ':user sukurtas :vendor', + 'activity_32' => ':user sukurtas :vendor', + 'activity_33' => ':user sukurtas :vendor', + 'activity_34' => ':user sukurta sąskaita :expense', + 'activity_35' => ':user sukurtas :vendor', + 'activity_36' => ':user sukurtas :vendor', + 'activity_37' => ':user sukurtas :vendor', 'payment' => 'Payment', 'system' => 'System', 'signature' => 'Email Signature', 'default_messages' => 'Default Messages', 'quote_terms' => 'Quote Terms', 'default_quote_terms' => 'Default Quote Terms', - 'default_invoice_terms' => 'Default Invoice Terms', - 'default_invoice_footer' => 'Default Invoice Footer', + 'default_invoice_terms' => 'Set default invoice terms', + 'default_invoice_footer' => 'Set default invoice footer', 'quote_footer' => 'Quote Footer', 'free' => 'Free', - 'quote_is_approved' => 'This quote is approved', 'apply_credit' => 'Apply Credit', 'system_settings' => 'System Settings', @@ -907,7 +800,6 @@ return array( 'restored_recurring_invoice' => 'Successfully restored recurring invoice', 'archived' => 'Archived', 'untitled_account' => 'Untitled Company', - 'before' => 'Before', 'after' => 'After', 'reset_terms_help' => 'Reset to the default account terms', @@ -916,7 +808,6 @@ return array( 'user' => 'User', 'country' => 'Country', 'include' => 'Include', - 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', 'import_freshbooks' => 'Import From FreshBooks', 'import_data' => 'Import Data', @@ -927,29 +818,17 @@ return array( 'task_file' => 'Task File', 'no_mapper' => 'No valid mapping for file', 'invalid_csv_header' => 'Invalid CSV Header', - - 'email_errors' => [ - 'inactive_client' => 'Emails can not be sent to inactive clients', - 'inactive_contact' => 'Emails can not be sent to inactive contacts', - 'inactive_invoice' => 'Emails can not be sent to inactive invoices', - 'user_unregistered' => 'Please register your account to send emails', - 'user_unconfirmed' => 'Please confirm your account to send emails', - 'invalid_contact_email' => 'Invalid contact email', - ], - 'client_portal' => 'Client Portal', 'admin' => 'Admin', 'disabled' => 'Disabled', 'show_archived_users' => 'Show archived users', 'notes' => 'Notes', - 'invoice_will_create' => 'client will be created', + 'invoice_will_create' => 'klientas bus sukurtas', 'invoices_will_create' => 'invoices will be created', 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', - 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', - 'email_design' => 'Email Design', 'due_by' => 'Due by :date', 'enable_email_markup' => 'Enable Markup', @@ -961,7 +840,6 @@ return array( 'plain' => 'Plain', 'light' => 'Light', 'dark' => 'Dark', - 'industry_help' => 'Used to provide comparisons against the averages of companies of similar size and industry.', 'subdomain_help' => 'Customize the invoice link subdomain or display the invoice on your own website.', 'invoice_number_help' => 'Specify a prefix or use a custom pattern to dynamically set the invoice number.', @@ -970,57 +848,48 @@ return array( 'custom_account_fields_helps' => 'Add a label and value to the company details section of the PDF.', 'custom_invoice_fields_helps' => 'Add a text input to the invoice create/edit page and display the label and value on the PDF.', 'custom_invoice_charges_helps' => 'Add a text input to the invoice create/edit page and include the charge in the invoice subtotals.', - 'color_help' => 'Note: the primary color is also used in the client portal and custom email designs.', - - 'token_expired' => 'Validation token was expired. Please try again.', - 'invoice_link' => 'Invoice Link', - 'button_confirmation_message' => 'Click to confirm your email address.', - 'confirm' => 'Confirm', - 'email_preferences' => 'Email Preferences', + 'token_expired' => 'Patvirtinimo raktas negalioja. Prašau, pabandykite dar kartą.', + 'invoice_link' => 'Sąskaitos nuoroda', + 'button_confirmation_message' => 'Spustelėkite norėdami patvirtinti savo el. pašto adresą.', + 'confirm' => 'Patvirtinti', + 'email_preferences' => 'Pranešimų nustatymai', 'created_invoices' => 'Successfully created :count invoice(s)', 'next_invoice_number' => 'The next invoice number is :number.', 'next_quote_number' => 'The next quote number is :number.', - - 'days_before' => 'days before', - 'days_after' => 'days after', + 'days_before' => 'prieš dienas', + 'days_after' => 'po dienų', 'field_due_date' => 'due date', - 'field_invoice_date' => 'invoice date', - 'schedule' => 'Schedule', + 'field_invoice_date' => 'sąskaitos data', + 'schedule' => 'Grafikas', 'email_designs' => 'Email Designs', - 'assigned_when_sent' => 'Assigned when sent', - - 'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.', + 'assigned_when_sent' => 'Bus sugeneruota', 'white_label_purchase_link' => 'Purchase a white label license', - - // Expense / vendor - 'expense' => 'Expense', - 'expenses' => 'Expenses', - 'new_expense' => 'Enter Expense', - 'enter_expense' => 'Enter Expense', - 'vendors' => 'Vendors', - 'new_vendor' => 'New Vendor', + 'expense' => 'Išlaidos', + 'expenses' => 'Išlaidos', + 'new_expense' => 'Naujos išlaidos', + 'enter_expense' => 'Įveskite išlaidas', + 'vendors' => 'Tiekėjai', + 'new_vendor' => 'Naujas tiekėjas', 'payment_terms_net' => 'Net', - 'vendor' => 'Vendor', - 'edit_vendor' => 'Edit Vendor', - 'archive_vendor' => 'Archive Vendor', - 'delete_vendor' => 'Delete Vendor', - 'view_vendor' => 'View Vendor', + 'vendor' => 'Tiekėjas', + 'edit_vendor' => 'Keisti', + 'archive_vendor' => 'Archyvuoti', + 'delete_vendor' => 'Trinti', + 'view_vendor' => 'Rodyti', 'deleted_expense' => 'Successfully deleted expense', 'archived_expense' => 'Successfully archived expense', 'deleted_expenses' => 'Successfully deleted expenses', 'archived_expenses' => 'Successfully archived expenses', - - // Expenses 'expense_amount' => 'Expense Amount', 'expense_balance' => 'Expense Balance', 'expense_date' => 'Expense Date', 'expense_should_be_invoiced' => 'Should this expense be invoiced?', - 'public_notes' => 'Public Notes', - 'invoice_amount' => 'Invoice Amount', - 'exchange_rate' => 'Exchange Rate', - 'yes' => 'Yes', - 'no' => 'No', - 'should_be_invoiced' => 'Should be invoiced', + 'public_notes' => 'Viešos pastabos', + 'invoice_amount' => 'Sąskaitos suma', + 'exchange_rate' => 'Valiutos kursas', + 'yes' => 'Taip', + 'no' => 'Ne', + 'should_be_invoiced' => 'Būtina sąskaita faktūra', 'view_expense' => 'View expense # :expense', 'edit_expense' => 'Edit Expense', 'archive_expense' => 'Archive Expense', @@ -1028,22 +897,18 @@ return array( 'view_expense_num' => 'Expense # :expense', 'updated_expense' => 'Successfully updated expense', 'created_expense' => 'Successfully created expense', - 'enter_expense' => 'Enter Expense', + 'enter_expense' => 'Įveskite išlaidas', 'view' => 'View', 'restore_expense' => 'Restore Expense', 'invoice_expense' => 'Invoice Expense', - 'expense_error_multiple_clients' =>'The expenses can\'t belong to different clients', + 'expense_error_multiple_clients' => 'The expenses can\'t belong to different clients', 'expense_error_invoiced' => 'Expense has already been invoiced', - 'convert_currency' => 'Convert currency', - - // Payment terms - 'num_days' => 'Number of days', + 'convert_currency' => 'Konvertuoti valiutą', + 'num_days' => 'Dienų skaičius', 'create_payment_term' => 'Create Payment Term', 'edit_payment_terms' => 'Edit Payment Term', 'edit_payment_term' => 'Edit Payment Term', 'archive_payment_term' => 'Archive Payment Term', - - // recurring due dates 'recurring_due_dates' => 'Recurring Invoice Due Dates', 'recurring_due_date_help' => 'Automatically sets a due date for the invoice.
Invoices on a monthly or yearly cycle set to be due on or before the day they are created will be due the next month. Invoices set to be due on the 29th or 30th in months that don\'t have that day will be due the last day of the month.
@@ -1059,27 +924,23 @@ return array( ', 'due' => 'Due', - 'next_due_on' => 'Due Next: :date', - 'use_client_terms' => 'Use client terms', + 'next_due_on' => 'Sekantis mokėjimas: :date', + 'use_client_terms' => 'Naudokite klientui terminus', 'day_of_month' => ':ordinal day of month', - 'last_day_of_month' => 'Last day of month', - 'day_of_week_after' => ':ordinal :day after', - 'sunday' => 'Sunday', - 'monday' => 'Monday', - 'tuesday' => 'Tuesday', - 'wednesday' => 'Wednesday', - 'thursday' => 'Thursday', - 'friday' => 'Friday', - 'saturday' => 'Saturday', - - // Fonts + 'last_day_of_month' => 'Paskutinė mėnesio diena', + 'day_of_week_after' => ':ordinal po :day', + 'sunday' => 'Sekmadienis', + 'monday' => 'Pirmadienis', + 'tuesday' => 'Antradienis', + 'wednesday' => 'Trečiadienis', + 'thursday' => 'Ketvirtadienis', + 'friday' => 'Penktadienis', + 'saturday' => 'Šeštadienis', 'header_font_id' => 'Header Font', 'body_font_id' => 'Body Font', 'color_font_help' => 'Note: the primary color and fonts are also used in the client portal and custom email designs.', - 'live_preview' => 'Live Preview', 'invalid_mail_config' => 'Unable to send email, please check that the mail settings are correct.', - 'invoice_message_button' => 'To view your invoice for :amount, click the button below.', 'quote_message_button' => 'To view your quote for :amount, click the button below.', 'payment_message_button' => 'Thank you for your payment of :amount.', @@ -1096,7 +957,6 @@ return array( 'archived_bank_account' => 'Successfully archived bank account', 'created_bank_account' => 'Successfully created bank account', 'validate_bank_account' => 'Validate Bank Account', - 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', 'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.', 'bank_password_warning' => 'Warning: your password may be transmitted in plain text, consider enabling HTTPS.', 'username' => 'Username', @@ -1110,7 +970,6 @@ return array( 'validate' => 'Validate', 'info' => 'Info', 'imported_expenses' => 'Successfully created :count_vendors vendor(s) and :count_expenses expense(s)', - 'iframe_url_help3' => 'Note: if you plan on accepting credit cards details we strongly recommend enabling HTTPS on your site.', 'expense_error_multiple_currencies' => 'The expenses can\'t have different currencies.', 'expense_error_mismatch_currencies' => 'The client\'s currency does not match the expense currency.', @@ -1121,17 +980,38 @@ return array( 'last_page' => 'last page', 'all_pages_header' => 'Show header on', 'all_pages_footer' => 'Show footer on', - 'invoice_currency' => 'Invoice Currency', + 'invoice_currency' => 'Sąskaitos valiuta', 'enable_https' => 'We strongly recommend using HTTPS to accept credit card details online.', 'quote_issued_to' => 'Quote issued to', - 'show_currency_code' => 'Currency Code', + 'show_currency_code' => 'Valiutos kodas', 'trial_message' => 'Your account will receive a free two week trial of our pro plan.', 'trial_footer' => 'Your free trial lasts :count more days, :link to upgrade now.', 'trial_footer_last_day' => 'This is the last day of your free trial, :link to upgrade now.', 'trial_call_to_action' => 'Start Free Trial', 'trial_success' => 'Successfully enabled two week free pro plan trial', 'overdue' => 'Overdue', - 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + + + 'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.', + 'user_email_footer' => 'To adjust your email notification settings please visit :link', + 'reset_password_footer' => 'If you did not request this password reset please email our support: :email', + 'limit_users' => 'Sorry, this will exceed the limit of :limit users', + 'more_designs_self_host_header' => 'Get 6 more invoice designs for just $:price', + 'old_browser' => 'Please use a newer browser', + 'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.', + 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', + + 'pro_plan_remove_logo' => ':link to remove the Invoice Ninja logo by joining the Pro Plan', + 'pro_plan_remove_logo_link' => 'Click here', + 'invitation_status_sent' => 'Email Sent', + 'invitation_status_opened' => 'Email Openend', + 'invitation_status_viewed' => 'Invoice Viewed', + 'email_error_inactive_client' => 'Emails can not be sent to inactive clients', + 'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts', + 'email_error_inactive_invoice' => 'Neaktyvioms sąskaitoms faktūroms el. pašto siųsti negalima', + 'email_error_user_unregistered' => 'Please register your account to send emails', + 'email_error_user_unconfirmed' => 'Please confirm your account to send emails', + 'email_error_invalid_contact_email' => 'Invalid contact email', 'navigation' => 'Navigation', 'list_invoices' => 'List Invoices', @@ -1154,32 +1034,30 @@ return array( 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', 'recurring_invoice_number' => 'Recurring Invoice Number', 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', - 'enable_client_portal' => 'Dashboard', - 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', // Client Passwords 'enable_portal_password'=>'Password protect invoices', 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', 'send_portal_password'=>'Generate password automatically', 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', - + 'expired' => 'Expired', 'invalid_card_number' => 'The credit card number is not valid.', 'invalid_expiry' => 'The expiration date is not valid.', 'invalid_cvv' => 'The CVV is not valid.', 'cost' => 'Cost', 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', - + // User Permissions - 'owner' => 'Owner', - 'administrator' => 'Administrator', + 'owner' => 'Valdytojas', + 'administrator' => 'Administratorius', 'administrator_help' => 'Allow user to manage users, change settings and modify all records', 'user_create_all' => 'Create clients, invoices, etc.', 'user_view_all' => 'View all clients, invoices, etc.', 'user_edit_all' => 'Edit all clients, invoices, etc.', 'gateway_help_20' => ':link to sign up for Sage Pay.', 'gateway_help_21' => ':link to sign up for Sage Pay.', - 'partial_due' => 'Partial Due', + 'partial_due' => 'Dalinis', 'restore_vendor' => 'Restore Vendor', 'restored_vendor' => 'Successfully restored vendor', 'restored_expense' => 'Successfully restored expense', @@ -1187,57 +1065,55 @@ return array( 'create_all_help' => 'Allow user to create and modify records', 'view_all_help' => 'Allow user to view records they didn\'t create', 'edit_all_help' => 'Allow user to modify records they didn\'t create', - 'view_payment' => 'View Payment', - - 'january' => 'January', - 'february' => 'February', - 'march' => 'March', - 'april' => 'April', - 'may' => 'May', - 'june' => 'June', - 'july' => 'July', - 'august' => 'August', - 'september' => 'September', - 'october' => 'October', - 'november' => 'November', - 'december' => 'December', + 'view_payment' => 'View Payment', + + 'january' => 'Sausis', + 'february' => 'Vasaris', + 'march' => 'Kovas', + 'april' => 'Balandis', + 'may' => 'Gegužė', + 'june' => 'Birželis', + 'july' => 'Liepa', + 'august' => 'Rugpjūtis', + 'september' => 'Rugsėjis', + 'october' => 'Spalis', + 'november' => 'Lapkritis', + 'december' => 'Gruodis', // Documents - 'documents_header' => 'Documents:', - 'email_documents_header' => 'Documents:', + 'documents_header' => 'Dokumentai:', + 'email_documents_header' => 'Dokumentai:', 'email_documents_example_1' => 'Widgets Receipt.pdf', 'email_documents_example_2' => 'Final Deliverable.zip', - 'invoice_documents' => 'Documents', - 'expense_documents' => 'Attached Documents', - 'invoice_embed_documents' => 'Embed Documents', + 'invoice_documents' => 'Dokumentai', + 'expense_documents' => 'Pridėti dokumentą', + 'invoice_embed_documents' => 'Įkelti dokumentai', 'invoice_embed_documents_help' => 'Include attached images in the invoice.', 'document_email_attachment' => 'Attach Documents', 'download_documents' => 'Download Documents (:size)', - 'documents_from_expenses' => 'From Expenses:', - 'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage - 'DefaultMessage' => 'Drop files or click to upload', - 'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.', - 'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.', - 'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', - 'InvalidFileType' => 'You can\'t upload files of this type.', - 'ResponseError' => 'Server responded with {{statusCode}} code.', - 'CancelUpload' => 'Cancel upload', - 'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?', - 'RemoveFile' => 'Remove file', - ), - 'documents' => 'Documents', - 'document_date' => 'Document Date', - 'document_size' => 'Size', + 'documents_from_expenses' => 'Iš išlaidų:', + 'dropzone_default_message' => 'Įkelkite dokumentus arba spustelėkite, kad įkelti', + 'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.', + 'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.', + 'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', + 'dropzone_invalid_file_type' => 'You can\'t upload files of this type.', + 'dropzone_response_error' => 'Server responded with {{statusCode}} code.', + 'dropzone_cancel_upload' => 'Atšaukti', + 'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?', + 'dropzone_remove_file' => 'Trinti dokumentus', + 'documents' => 'Dokumentai', + 'document_date' => 'Dokumentų data', + 'document_size' => 'Dydis', - 'enable_client_portal' => 'Client Portal', - 'enable_client_portal_help' => 'Show/hide the client portal.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', 'enable_client_portal_dashboard' => 'Dashboard', 'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.', - + // Plans 'account_management' => 'Account Management', 'plan_status' => 'Plan Status', - + 'plan_upgrade' => 'Upgrade', 'plan_change' => 'Change Plan', 'pending_change_to' => 'Changes To', @@ -1267,9 +1143,9 @@ return array( 'plan_paid' => 'Term Started', 'plan_started' => 'Plan Started', 'plan_expires' => 'Plan Expires', - + 'white_label_button' => 'White Label', - + 'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', 'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.', 'enterprise_plan_product' => 'Enterprise Plan', @@ -1287,7 +1163,207 @@ return array( 'preview' => 'Preview', 'list_vendors' => 'List Vendors', 'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.', - 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.', + 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments, :link to see the full list of features.', 'return_to_app' => 'Return to app', - -); \ No newline at end of file + + + // Payment updates + 'refund_payment' => 'Grąžinti', + 'refund_max' => 'Maks.:', + 'refund' => 'Pinigų grąžinimas', + 'are_you_sure_refund' => 'Grąžinti pinigus pasirinktam mokėjimui?', + 'status_pending' => 'Laukia', + 'status_completed' => 'Apmokėta', + 'status_failed' => 'Nepavyko', + 'status_partially_refunded' => 'Dalinis grąžinimas', + 'status_partially_refunded_amount' => ':amount grąžinta', + 'status_refunded' => 'Grąžinta', + 'status_voided' => 'Atšaukta', + 'refunded_payment' => 'Grąžinti mokėjimai', + 'activity_39' => ':user atšaukė a :payment_amount payment (:payment)', + 'activity_40' => ':user grąžino :adjustment - :payment_amount payment (:payment)', + 'card_expiration' => 'Exp: :expires', + + 'card_creditcardother' => 'Nežininomas', + 'card_americanexpress' => 'American Express', + 'card_carteblanche' => 'Carte Blanche', + 'card_unionpay' => 'UnionPay', + 'card_diners' => 'Diners Club', + 'card_discover' => 'Discover', + 'card_jcb' => 'JCB', + 'card_laser' => 'Laser', + 'card_maestro' => 'Maestro', + 'card_mastercard' => 'MasterCard', + 'card_solo' => 'Solo', + 'card_switch' => 'Switch', + 'card_visacard' => 'Visa', + 'card_ach' => 'ACH', + + 'payment_type_stripe' => 'Stripe', + 'ach' => 'ACH', + 'enable_ach' => 'Įjungti ACH', + 'stripe_ach_help' => 'ACH palaikymas taip pat turi būti įjungtas Stripe.', + 'ach_disabled' => 'Another gateway is already configured for direct debit.', + + 'plaid' => 'Plaid', + 'client_id' => 'Kliento Id', + 'secret' => 'Slaptas žodis', + 'public_key' => 'Viešas raktas', + 'plaid_optional' => '(nebūtina)', + 'plaid_environment_help' => 'When a Stripe test key is given, Plaid\'s development environement (tartan) will be used.', + 'other_providers' => 'Kiti tiekėjai', + 'country_not_supported' => 'Šiai šaliai negalima.', + 'invalid_routing_number' => 'Neteisingas identifikacijos kodas.', + 'invalid_account_number' => 'Paskyros numeris neteisingas.', + 'account_number_mismatch' => 'Ne atitinka paskyros numeris.', + 'missing_account_holder_type' => 'Prašome pasirinkti privačią arba įmonės sąskaitą.', + 'missing_account_holder_name' => 'Prašome įrašyti paskyros valdytojo vardą.', + 'routing_number' => 'Identifikacijos kodas ', + 'confirm_account_number' => 'Patvirtinkite sąskaitos numerį', + 'individual_account' => 'Asmens paskyra', + 'company_account' => 'Įmonės paskyra', + 'account_holder_name' => 'Paskyros savininko vardas', + 'add_account' => 'Nauja paskyra', + 'payment_methods' => 'Mokėjimo būdai', + 'complete_verification' => 'Užbaigti patikrą', + 'verification_amount1' => 'Suma 1', + 'verification_amount2' => 'Suma 2', + 'payment_method_verified' => 'Patikrinimas pavyko', + 'verification_failed' => 'Patikrinimas nepavyko', + 'remove_payment_method' => 'Pašalinti mokėjimo būdą', + 'confirm_remove_payment_method' => 'Ar tikrai trinti šį mokėjimo būdą?', + 'remove' => 'Trinti', + 'payment_method_removed' => 'Pašalinti mokėjimo būdai.', + 'bank_account_verification_help' => 'Mes padarėme du indėlius į Jūsų sąskaitą su aprašymu "VERIFICATION". Šie indėliai bus 1-2 darbo dienas rodomi ataskaitoje. Prašome įrašyti žemiau esančias sumas.', + 'bank_account_verification_next_steps' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. + Once you have the amounts, come back to this payment methods page and click "Complete Verification" next to the account.', + 'unknown_bank' => 'Nežinomas bankas', + 'ach_verification_delay_help' => 'Galėsite naudotis sąskaita po patikrinimo. Patikrinimas paprastai trunka 1-2 darbo dienas.', + 'add_credit_card' => 'Nauja kreditinė kortelė', + 'payment_method_added' => 'Naujas mokėjimo būdas.', + 'use_for_auto_bill' => 'Naudoti debetiniam mokėjimui', + 'used_for_auto_bill' => 'Debetinis mokėjimo būdas', + 'payment_method_set_as_default' => 'Nustatykite debetini mokėjimo būdą.', + 'activity_41' => ':payment_amount mokėjimas (:payment) nepavyko', + 'webhook_url' => 'Webhook URL', + 'stripe_webhook_help' => 'Jus privalote :link.', + 'stripe_webhook_help_link_text' => 'nurodyti ši URL Stripe', + 'payment_method_error' => 'Įvyko klaida pridedant mokėjimo būdą. Pabandykite dar kartą vėliau.', + 'notification_invoice_payment_failed_subject' => 'Mokėjimas nepavyko sąskaitai faktūrai :invoice', + 'notification_invoice_payment_failed' => 'Kliento :client atliktas mokėjimas pagal į sąskaitą faktūrą :invoice napavyko. Mokėjimas pažymėtas kaip nepavykęs ir suma :amount įkeltas į kliento balansą.', + 'link_with_plaid' => 'Priskirti sąskaitą su Plaid', + 'link_manually' => 'Nuoroda rankiniu būdu', + 'secured_by_plaid' => 'Apsaugota su Plaid', + 'plaid_linked_status' => 'Jūsų banko sąskaitą :bank', + 'add_payment_method' => 'Naujas mokėjimo būdas', + 'account_holder_type' => 'Sąskaitos savininko tipas', + 'ach_authorization' => 'I authorize :company to use my bank account for future payments and, if necessary, electronically credit my account to correct erroneous debits. I understand that I may cancel this authorization at any time by removing the payment method or by contacting :email.', + 'ach_authorization_required' => 'Turite sutikti su ACH sandoriais.', + 'off' => 'Išj.', + 'opt_in' => 'Įtraukti', + 'opt_out' => 'Pašalinti', + 'always' => 'Visada', + 'opted_out' => 'Pašalinta', + 'opted_in' => 'Įtraukta', + 'manage_auto_bill' => 'Valdyti periodinius mokėjimus', + 'enabled' => 'Įjungti', + 'paypal' => 'Paypal', + 'braintree_enable_paypal' => 'Įjungti PayPal mokėjimą su BrainTree', + 'braintree_paypal_disabled_help' => 'PayPal jungtis apdoroja PayPal mokėjimus', + 'braintree_paypal_help' => 'Jūs taip pat privalote :link.', + 'braintree_paypal_help_link_text' => 'susieti PayPal su Braintree sąskaita', + 'token_billing_braintree_paypal' => 'Išsaugoti mokėjimo duomenis', + 'add_paypal_account' => 'Nauja Paypal sąskaita', + + + 'no_payment_method_specified' => 'Nėra nurodyta mokėjimo būdo', + 'chart_type' => 'Diagramos tipas', + 'format' => 'Formatas', + 'import_ofx' => 'Importuoti OFX', + 'ofx_file' => 'OFX byla', + 'ofx_parse_failed' => 'Nepavyko nuskaityti OFX bylos', + + // WePay + 'wepay' => 'WePay', + 'sign_up_with_wepay' => 'Užsiregistruoti su WePay', + 'use_another_provider' => 'Pasirinkti kitą tiekėją', + 'company_name' => 'Įmonės pavadinimas', + 'wepay_company_name_help' => 'Tai pasirodys kliento kreditinės kortelės ataskaitose.', + 'wepay_description_help' => 'Šios sąskaitos tikslas.', + 'wepay_tos_agree' => 'Sutinku :link.', + 'wepay_tos_link_text' => 'WePay paslaugų teikimo sąlygos', + 'resend_confirmation_email' => 'Persiųsti patvirtinimo laišką', + 'manage_wepay_account' => 'Valdyti WePay paskyrą', + 'action_required' => 'Reikalingas veiksmas', + 'finish_setup' => 'Baigti nustatymus', + 'created_wepay_confirmation_required' => 'Prašome patikrinti savo el. paštą ir patvirtinkite el. pašto adresą WePay.', + 'switch_to_wepay' => 'Persijungti į WePay', + 'switch' => 'Perjungti', + 'restore_account_gateway' => 'Atkurti mokėjimo sąsają', + 'restored_account_gateway' => 'Sėkmingai atkurta sąsaja', + 'united_states' => 'JAV', + 'canada' => 'Kanada', + 'accept_debit_cards' => 'Leisti debetines korteles', + 'debit_cards' => 'Debetinė kortelė', + + 'warn_start_date_changed' => 'The next invoice will be sent on the new start date.', + 'original_start_date' => 'Original start date', + 'new_start_date' => 'New start date', + 'security' => 'Security', + 'see_whats_new' => 'See what\'s new in v:version', + 'wait_for_upload' => 'Please wait for the document upload to complete.', + 'upgrade_for_permissions' => 'Upgrade to our Enterprise plan to enable permissions.', + 'enable_second_tax_rate' => 'Enable specifying a second tax rate', + 'payment_file' => 'Payment File', + 'expense_file' => 'Expense File', + 'product_file' => 'Product File', + 'import_products' => 'Import Products', + 'products_will_create' => 'products will be created.', + 'product_key' => 'Product', + 'created_products' => 'Successfully created :count product(s)', + 'export_help' => 'Use JSON if you plan to import the data into Invoice Ninja.', + 'JSON_file' => 'JSON File', + + 'view_dashboard' => 'View Dashboard', + 'client_session_expired' => 'Session Expired', + 'client_session_expired_message' => 'Your session has expired. Please click the link in your email again.', + + 'auto_bill_notification' => 'This invoice will automatically be billed to your :payment_method on file on :due_date.', + 'auto_bill_payment_method_bank_transfer' => 'bank account', + 'auto_bill_payment_method_credit_card' => 'credit card', + 'auto_bill_payment_method_paypal' => 'PayPal account', + 'auto_bill_notification_placeholder' => 'This invoice will automatically be billed to your credit card on file on the due date.', + 'payment_settings' => 'Payment Settings', + + 'on_send_date' => 'On send date', + 'on_due_date' => 'On due date', + 'auto_bill_ach_date_help' => 'ACH auto bill will always happen on the due date', + 'warn_change_auto_bill' => 'Due to NACHA rules, changes to this invoice may prevent ACH auto bill.', + + 'bank_account' => 'Bank Account', + 'payment_processed_through_wepay' => 'ACH payments will be processed using WePay.', + 'wepay_payment_tos_agree' => 'I agree to the WePay :terms and :privacy_policy.', + 'privacy_policy' => 'Privacy Policy', + 'wepay_payment_tos_agree_required' => 'You must agree to the WePay Terms of Service and Privacy Policy.', + 'payment_settings_supported_gateways' => 'These options are supported by the WePay, Stripe, and Braintree gateways.', + 'ach_email_prompt' => 'Please enter your email address:', + 'verification_pending' => 'Verification Pending', + + 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', + 'credit_card' => 'Credit Card', + 'bank_transfer' => 'Bank Transfer', + 'no_transaction_reference' => 'We did not recieve a payment transaction reference from the gateway.', + 'use_bank_on_file' => 'Use Bank on File', + 'auto_bill_email_message' => 'This invoice will automatically be billed to the payment method on file on the due date.', + 'bitcoin' => 'Bitcoin', + 'added_on' => 'Added :date', + 'failed_remove_payment_method' => 'Failed to remove the payment method', + 'gateway_exists' => 'This gateway already exists', + 'manual_entry' => 'Manual entry', + +); + +return $LANG; + +?> diff --git a/resources/lang/nb_NO/texts.php b/resources/lang/nb_NO/texts.php index a06e7c60d6..ce0e88a226 100644 --- a/resources/lang/nb_NO/texts.php +++ b/resources/lang/nb_NO/texts.php @@ -1,8 +1,6 @@ - 'Organisasjon', 'name' => 'Navn', 'website' => 'Nettside', @@ -25,8 +23,6 @@ return array( 'size_id' => 'Størrelse', 'industry_id' => 'Sektor', 'private_notes' => 'Private notater', - - // invoice 'invoice' => 'Faktura', 'client' => 'Klient', 'invoice_date' => 'Faktureringsdato', @@ -50,7 +46,6 @@ return array( 'invoice_design_id' => 'Design', 'terms' => 'Vilkår', 'your_invoice' => 'Din faktura', - 'remove_contact' => 'Fjern kontakt', 'add_contact' => 'Legg til kontakt', 'create_new_client' => 'Opprett ny klient', @@ -74,8 +69,6 @@ return array( 'settings' => 'Innstillinger', 'enable_invoice_tax' => 'Aktiver for å spesifisere en faktura skatt', 'enable_line_item_tax' => 'Aktiver for å spesifisere artikkel skatt', - - // navigation 'dashboard' => 'Skrivebord', 'clients' => 'Klienter', 'invoices' => 'Fakturaer', @@ -100,8 +93,6 @@ return array( 'provide_email' => 'Vennligst oppgi en gyldig e-postadresse', 'powered_by' => 'Drevet av', 'no_items' => 'Ingen elementer', - - // recurring invoices 'recurring_invoices' => 'Gjentakende Fakturaer', 'recurring_help' => 'Automatisk send klienter de samme fakturaene ukentlig, bi-månedlig, månedlig, kvartalsvis eller årlig.
Bruk :MONTH, :QUARTER eller :YEAR for dynamiske datoer. Grunnleggende matematikk fungerer også, for eksempel :MONTH-1.
@@ -111,18 +102,14 @@ return array(Vi bruker pdfmake for å definere faktura designene deklarativt. Pdfmake playground gir en flott måte å se biblioteket i aksjon.
-For å få tilgang til et underelementet ved bruk av prikk notasjon. For eksempel for å vise klientens navn, kan du bruke $client.name
.
Om du trenger hjelp til å finne ut noe, poster et spørsmål til vårt brukerforum.
', - + 'customize_help' => 'We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
+You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', 'invoice_due_date' => 'Tidsfrist', 'quote_due_date' => 'Gyldig til', 'valid_until' => 'Gyldig til', @@ -761,15 +668,12 @@ return array( 'status_partial' => 'Delvis', 'status_paid' => 'Betalt', 'show_line_item_tax' => 'Vis linje element skatter på linje', - 'iframe_url' => 'Nettside', 'iframe_url_help1' => 'Kopier følgende kode til en side på din nettside.', 'iframe_url_help2' => 'Du kan teste funksjonen ved å klikke \'Vis som mottager\' for en faktura.', - 'auto_bill' => 'Auto Fakturer', 'military_time' => '24 Timers Tid', 'last_sent' => 'Sist Sendt', - 'reminder_emails' => 'Påminnelses E-poster', 'templates_and_reminders' => 'Design & Påminnelser', 'subject' => 'Emne', @@ -781,15 +685,12 @@ return array( 'reminder_subject' => 'Påminnelse: Faktura :invoice fra :account', 'reset' => 'Nullstill', 'invoice_not_found' => 'Ønsket faktura er ikke tilgjengelig', - 'referral_program' => 'Henvisningsprogram', 'referral_code' => 'Henvisnings Kode', 'last_sent_on' => 'Sendt Sist: :date', - 'page_expire' => 'Denne siden vil utløpe snart, :click_here for å fortsette å arbeide', 'upcoming_quotes' => 'Oppkommende Tilbud', 'expired_quotes' => 'Utløpte Tilbud', - 'sign_up_using' => 'Meld deg på ved å bruke', 'invalid_credentials' => 'Disse kredentialene samsvarer ikke med våre opplysninger', 'show_all_options' => 'Vis alle alternativene', @@ -798,18 +699,10 @@ return array( 'disable' => 'Deaktiver', 'invoice_quote_number' => 'Faktura og Tilbuds Nummer', 'invoice_charges' => 'Faktura Kostnader', - - 'invitation_status' => [ - 'sent' => 'E-post Sendt', - 'opened' => 'E-post Åpnet', - 'viewed' => 'Faktura Vist', - ], - 'notification_invoice_bounced' => 'Vi klarte ikke å levere Faktura :invoice til :contact.', 'notification_invoice_bounced_subject' => 'Klarte ikke å levere Faktura :invoice', 'notification_quote_bounced' => 'Vi klarte ikke å levere Tilbud :invoice til :contact.', 'notification_quote_bounced_subject' => 'Klarte ikke å levere Tilbud :invoice', - 'custom_invoice_link' => 'Tilpasset Faktura Lenke', 'total_invoiced' => 'Totalt Fakturert', 'open_balance' => 'Åpen Balanse', @@ -817,15 +710,12 @@ return array( 'basic_settings' => 'Grunnleggende Innstillinger', 'pro' => 'Pro', 'gateways' => 'Betalings Tilbydere', - 'next_send_on' => 'Send Neste: :date', 'no_longer_running' => 'Denne fakturaen er ikke planlagt for kjøring', 'general_settings' => 'Systeminnstillinger', 'customize' => 'Tilpass', - 'oneclick_login_help' => 'Koble til en konto for å logge inn uten et passord', 'referral_code_help' => 'Tjen penger ved å dele appen vår på internett', - 'enable_with_stripe' => 'Aktiver | Krever Stripe', 'tax_settings' => 'Skatteinnstillinger', 'create_tax_rate' => 'Legg Til Skattesats', @@ -846,7 +736,6 @@ return array( 'invoice_counter' => 'Faktura Teller', 'quote_counter' => 'Tilbuds Teller', 'type' => 'Type', - 'activity_1' => ':user opprettet klient :client', 'activity_2' => ':user arkiverte klient :client', 'activity_3' => ':user slettet klient :client', @@ -876,7 +765,14 @@ return array( 'activity_27' => ':user gjenopprettet betaling :payment', 'activity_28' => ':user gjenopprettet :credit kreditt', 'activity_29' => ':contact godkjente tilbud :quote', - + 'activity_30' => ':user created :vendor', + 'activity_31' => ':user created :vendor', + 'activity_32' => ':user created :vendor', + 'activity_33' => ':user created :vendor', + 'activity_34' => ':user created expense :expense', + 'activity_35' => ':user created :vendor', + 'activity_36' => ':user created :vendor', + 'activity_37' => ':user created :vendor', 'payment' => 'Betaling', 'system' => 'System', 'signature' => 'E-post Signatur', @@ -887,7 +783,6 @@ return array( 'default_invoice_footer' => 'Standard Faktura Bunntekst', 'quote_footer' => 'Tilbud Bunntekst', 'free' => 'Gratis', - 'quote_is_approved' => 'Dette tilbudet er godkjent', 'apply_credit' => 'Bruk Kreditt', 'system_settings' => 'Systeminnstillinger', @@ -905,7 +800,6 @@ return array( 'restored_recurring_invoice' => 'Suksessfullt gjenopprettet gjentakende faktura', 'archived' => 'Arkivert', 'untitled_account' => 'Selskap Uten Navn', - 'before' => 'Before', 'after' => 'After', 'reset_terms_help' => 'Reset to the default account terms', @@ -914,7 +808,6 @@ return array( 'user' => 'User', 'country' => 'Country', 'include' => 'Include', - 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', 'import_freshbooks' => 'Import From FreshBooks', 'import_data' => 'Import Data', @@ -925,16 +818,6 @@ return array( 'task_file' => 'Task File', 'no_mapper' => 'No valid mapping for file', 'invalid_csv_header' => 'Invalid CSV Header', - - 'email_errors' => [ - 'inactive_client' => 'Emails can not be sent to inactive clients', - 'inactive_contact' => 'Emails can not be sent to inactive contacts', - 'inactive_invoice' => 'Emails can not be sent to inactive invoices', - 'user_unregistered' => 'Please register your account to send emails', - 'user_unconfirmed' => 'Please confirm your account to send emails', - 'invalid_contact_email' => 'Invalid contact email', - ], - 'client_portal' => 'Client Portal', 'admin' => 'Admin', 'disabled' => 'Disabled', @@ -943,11 +826,9 @@ return array( 'invoice_will_create' => 'client will be created', 'invoices_will_create' => 'invoices will be created', 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', - 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', - 'email_design' => 'Email Design', 'due_by' => 'Due by :date', 'enable_email_markup' => 'Enable Markup', @@ -959,7 +840,6 @@ return array( 'plain' => 'Plain', 'light' => 'Light', 'dark' => 'Dark', - 'industry_help' => 'Used to provide comparisons against the averages of companies of similar size and industry.', 'subdomain_help' => 'Customize the invoice link subdomain or display the invoice on your own website.', 'invoice_number_help' => 'Specify a prefix or use a custom pattern to dynamically set the invoice number.', @@ -968,8 +848,6 @@ return array( 'custom_account_fields_helps' => 'Add a label and value to the company details section of the PDF.', 'custom_invoice_fields_helps' => 'Add a text input to the invoice create/edit page and display the label and value on the PDF.', 'custom_invoice_charges_helps' => 'Add a text input to the invoice create/edit page and include the charge in the invoice subtotals.', - 'color_help' => 'Note: the primary color is also used in the client portal and custom email designs.', - 'token_expired' => 'Validation token was expired. Please try again.', 'invoice_link' => 'Invoice Link', 'button_confirmation_message' => 'Click to confirm your email address.', @@ -978,7 +856,6 @@ return array( 'created_invoices' => 'Successfully created :count invoice(s)', 'next_invoice_number' => 'The next invoice number is :number.', 'next_quote_number' => 'The next quote number is :number.', - 'days_before' => 'days before', 'days_after' => 'days after', 'field_due_date' => 'due date', @@ -986,11 +863,7 @@ return array( 'schedule' => 'Schedule', 'email_designs' => 'Email Designs', 'assigned_when_sent' => 'Assigned when sent', - - 'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.', 'white_label_purchase_link' => 'Purchase a white label license', - - // Expense / vendor 'expense' => 'Expense', 'expenses' => 'Expenses', 'new_expense' => 'Enter Expense', @@ -1007,8 +880,6 @@ return array( 'archived_expense' => 'Successfully archived expense', 'deleted_expenses' => 'Successfully deleted expenses', 'archived_expenses' => 'Successfully archived expenses', - - // Expenses 'expense_amount' => 'Expense Amount', 'expense_balance' => 'Expense Balance', 'expense_date' => 'Expense Date', @@ -1030,18 +901,14 @@ return array( 'view' => 'View', 'restore_expense' => 'Restore Expense', 'invoice_expense' => 'Invoice Expense', - 'expense_error_multiple_clients' =>'The expenses can\'t belong to different clients', + 'expense_error_multiple_clients' => 'The expenses can\'t belong to different clients', 'expense_error_invoiced' => 'Expense has already been invoiced', 'convert_currency' => 'Convert currency', - - // Payment terms 'num_days' => 'Number of days', 'create_payment_term' => 'Create Payment Term', 'edit_payment_terms' => 'Edit Payment Term', 'edit_payment_term' => 'Edit Payment Term', 'archive_payment_term' => 'Archive Payment Term', - - // recurring due dates 'recurring_due_dates' => 'Recurring Invoice Due Dates', 'recurring_due_date_help' => 'Automatically sets a due date for the invoice.
Invoices on a monthly or yearly cycle set to be due on or before the day they are created will be due the next month. Invoices set to be due on the 29th or 30th in months that don\'t have that day will be due the last day of the month.
@@ -1069,15 +936,11 @@ return array( 'thursday' => 'Thursday', 'friday' => 'Friday', 'saturday' => 'Saturday', - - // Fonts 'header_font_id' => 'Header Font', 'body_font_id' => 'Body Font', 'color_font_help' => 'Note: the primary color and fonts are also used in the client portal and custom email designs.', - 'live_preview' => 'Live Preview', 'invalid_mail_config' => 'Unable to send email, please check that the mail settings are correct.', - 'invoice_message_button' => 'To view your invoice for :amount, click the button below.', 'quote_message_button' => 'To view your quote for :amount, click the button below.', 'payment_message_button' => 'Thank you for your payment of :amount.', @@ -1094,7 +957,6 @@ return array( 'archived_bank_account' => 'Successfully archived bank account', 'created_bank_account' => 'Successfully created bank account', 'validate_bank_account' => 'Validate Bank Account', - 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', 'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.', 'bank_password_warning' => 'Warning: your password may be transmitted in plain text, consider enabling HTTPS.', 'username' => 'Username', @@ -1108,7 +970,6 @@ return array( 'validate' => 'Validate', 'info' => 'Info', 'imported_expenses' => 'Successfully created :count_vendors vendor(s) and :count_expenses expense(s)', - 'iframe_url_help3' => 'Note: if you plan on accepting credit cards details we strongly recommend enabling HTTPS on your site.', 'expense_error_multiple_currencies' => 'The expenses can\'t have different currencies.', 'expense_error_mismatch_currencies' => 'The client\'s currency does not match the expense currency.', @@ -1129,7 +990,28 @@ return array( 'trial_call_to_action' => 'Start Free Trial', 'trial_success' => 'Successfully enabled two week free pro plan trial', 'overdue' => 'Overdue', - 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + + + 'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.', + 'user_email_footer' => 'For å justere varslingsinnstillingene vennligst besøk :link', + 'reset_password_footer' => 'Hvis du ikke ba om å få nullstillt ditt passord, vennligst kontakt kundeservice: :email', + 'limit_users' => 'Dessverre, vil dette overstige grensen på :limit brukere', + 'more_designs_self_host_header' => 'Få 6 flere design for bare $:price', + 'old_browser' => 'Vennligst bruk en nyere nettleser', + 'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.', + 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', + + 'pro_plan_remove_logo' => ':link for å fjerne Invoice Ninja-logoen, oppgrader til en Pro Plan', + 'pro_plan_remove_logo_link' => 'Klikk her', + 'invitation_status_sent' => 'E-post Sendt', + 'invitation_status_opened' => 'E-post Åpnet', + 'invitation_status_viewed' => 'Faktura Vist', + 'email_error_inactive_client' => 'Emails can not be sent to inactive clients', + 'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts', + 'email_error_inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'email_error_user_unregistered' => 'Please register your account to send emails', + 'email_error_user_unconfirmed' => 'Please confirm your account to send emails', + 'email_error_invalid_contact_email' => 'Invalid contact email', 'navigation' => 'Navigation', 'list_invoices' => 'List Invoices', @@ -1152,22 +1034,20 @@ return array( 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', 'recurring_invoice_number' => 'Recurring Invoice Number', 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', - 'enable_client_portal' => 'Dashboard', - 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', // Client Passwords 'enable_portal_password'=>'Password protect invoices', 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', 'send_portal_password'=>'Generate password automatically', 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', - + 'expired' => 'Expired', 'invalid_card_number' => 'The credit card number is not valid.', 'invalid_expiry' => 'The expiration date is not valid.', 'invalid_cvv' => 'The CVV is not valid.', 'cost' => 'Cost', 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', - + // User Permissions 'owner' => 'Owner', 'administrator' => 'Administrator', @@ -1185,8 +1065,8 @@ return array( 'create_all_help' => 'Allow user to create and modify records', 'view_all_help' => 'Allow user to view records they didn\'t create', 'edit_all_help' => 'Allow user to modify records they didn\'t create', - 'view_payment' => 'View Payment', - + 'view_payment' => 'View Payment', + 'january' => 'January', 'february' => 'February', 'march' => 'March', @@ -1212,30 +1092,28 @@ return array( 'document_email_attachment' => 'Attach Documents', 'download_documents' => 'Download Documents (:size)', 'documents_from_expenses' => 'From Expenses:', - 'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage - 'DefaultMessage' => 'Drop files or click to upload', - 'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.', - 'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.', - 'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', - 'InvalidFileType' => 'You can\'t upload files of this type.', - 'ResponseError' => 'Server responded with {{statusCode}} code.', - 'CancelUpload' => 'Cancel upload', - 'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?', - 'RemoveFile' => 'Remove file', - ), + 'dropzone_default_message' => 'Drop files or click to upload', + 'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.', + 'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.', + 'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', + 'dropzone_invalid_file_type' => 'You can\'t upload files of this type.', + 'dropzone_response_error' => 'Server responded with {{statusCode}} code.', + 'dropzone_cancel_upload' => 'Cancel upload', + 'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?', + 'dropzone_remove_file' => 'Remove file', 'documents' => 'Documents', 'document_date' => 'Document Date', 'document_size' => 'Size', - 'enable_client_portal' => 'Client Portal', - 'enable_client_portal_help' => 'Show/hide the client portal.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', 'enable_client_portal_dashboard' => 'Dashboard', 'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.', - + // Plans 'account_management' => 'Account Management', 'plan_status' => 'Plan Status', - + 'plan_upgrade' => 'Upgrade', 'plan_change' => 'Change Plan', 'pending_change_to' => 'Changes To', @@ -1265,9 +1143,9 @@ return array( 'plan_paid' => 'Term Started', 'plan_started' => 'Plan Started', 'plan_expires' => 'Plan Expires', - + 'white_label_button' => 'White Label', - + 'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', 'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.', 'enterprise_plan_product' => 'Enterprise Plan', @@ -1285,7 +1163,207 @@ return array( 'preview' => 'Preview', 'list_vendors' => 'List Vendors', 'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.', - 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.', + 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments, :link to see the full list of features.', 'return_to_app' => 'Return to app', - -); \ No newline at end of file + + + // Payment updates + 'refund_payment' => 'Refund Payment', + 'refund_max' => 'Max:', + 'refund' => 'Refund', + 'are_you_sure_refund' => 'Refund selected payments?', + 'status_pending' => 'Pending', + 'status_completed' => 'Completed', + 'status_failed' => 'Failed', + 'status_partially_refunded' => 'Partially Refunded', + 'status_partially_refunded_amount' => ':amount Refunded', + 'status_refunded' => 'Refunded', + 'status_voided' => 'Cancelled', + 'refunded_payment' => 'Refunded Payment', + 'activity_39' => ':user cancelled a :payment_amount payment (:payment)', + 'activity_40' => ':user refunded :adjustment of a :payment_amount payment (:payment)', + 'card_expiration' => 'Exp: :expires', + + 'card_creditcardother' => 'Unknown', + 'card_americanexpress' => 'American Express', + 'card_carteblanche' => 'Carte Blanche', + 'card_unionpay' => 'UnionPay', + 'card_diners' => 'Diners Club', + 'card_discover' => 'Discover', + 'card_jcb' => 'JCB', + 'card_laser' => 'Laser', + 'card_maestro' => 'Maestro', + 'card_mastercard' => 'MasterCard', + 'card_solo' => 'Solo', + 'card_switch' => 'Switch', + 'card_visacard' => 'Visa', + 'card_ach' => 'ACH', + + 'payment_type_stripe' => 'Stripe', + 'ach' => 'ACH', + 'enable_ach' => 'Enable ACH', + 'stripe_ach_help' => 'ACH support must also be enabled at Stripe.', + 'ach_disabled' => 'Another gateway is already configured for direct debit.', + + 'plaid' => 'Plaid', + 'client_id' => 'Client Id', + 'secret' => 'Secret', + 'public_key' => 'Public Key', + 'plaid_optional' => '(optional)', + 'plaid_environment_help' => 'When a Stripe test key is given, Plaid\'s development environement (tartan) will be used.', + 'other_providers' => 'Other Providers', + 'country_not_supported' => 'That country is not supported.', + 'invalid_routing_number' => 'The routing number is not valid.', + 'invalid_account_number' => 'The account number is not valid.', + 'account_number_mismatch' => 'The account numbers do not match.', + 'missing_account_holder_type' => 'Please select an individual or company account.', + 'missing_account_holder_name' => 'Please enter the account holder\'s name.', + 'routing_number' => 'Routing Number', + 'confirm_account_number' => 'Confirm Account Number', + 'individual_account' => 'Individual Account', + 'company_account' => 'Company Account', + 'account_holder_name' => 'Account Holder Name', + 'add_account' => 'Add Account', + 'payment_methods' => 'Payment Methods', + 'complete_verification' => 'Complete Verification', + 'verification_amount1' => 'Amount 1', + 'verification_amount2' => 'Amount 2', + 'payment_method_verified' => 'Verification completed successfully', + 'verification_failed' => 'Verification Failed', + 'remove_payment_method' => 'Remove Payment Method', + 'confirm_remove_payment_method' => 'Are you sure you want to remove this payment method?', + 'remove' => 'Remove', + 'payment_method_removed' => 'Removed payment method.', + 'bank_account_verification_help' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. Please enter the amounts below.', + 'bank_account_verification_next_steps' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. + Once you have the amounts, come back to this payment methods page and click "Complete Verification" next to the account.', + 'unknown_bank' => 'Unknown Bank', + 'ach_verification_delay_help' => 'You will be able to use the account after completing verification. Verification usually takes 1-2 business days.', + 'add_credit_card' => 'Add Credit Card', + 'payment_method_added' => 'Added payment method.', + 'use_for_auto_bill' => 'Use For Autobill', + 'used_for_auto_bill' => 'Autobill Payment Method', + 'payment_method_set_as_default' => 'Set Autobill payment method.', + 'activity_41' => ':payment_amount payment (:payment) failed', + 'webhook_url' => 'Webhook URL', + 'stripe_webhook_help' => 'You must :link.', + 'stripe_webhook_help_link_text' => 'add this URL as an endpoint at Stripe', + 'payment_method_error' => 'There was an error adding your payment methd. Please try again later.', + 'notification_invoice_payment_failed_subject' => 'Payment failed for Invoice :invoice', + 'notification_invoice_payment_failed' => 'A payment made by client :client towards Invoice :invoice failed. The payment has been marked as failed and :amount has been added to the client\'s balance.', + 'link_with_plaid' => 'Link Account Instantly with Plaid', + 'link_manually' => 'Link Manually', + 'secured_by_plaid' => 'Secured by Plaid', + 'plaid_linked_status' => 'Your bank account at :bank', + 'add_payment_method' => 'Add Payment Method', + 'account_holder_type' => 'Account Holder Type', + 'ach_authorization' => 'I authorize :company to use my bank account for future payments and, if necessary, electronically credit my account to correct erroneous debits. I understand that I may cancel this authorization at any time by removing the payment method or by contacting :email.', + 'ach_authorization_required' => 'You must consent to ACH transactions.', + 'off' => 'Off', + 'opt_in' => 'Opt-in', + 'opt_out' => 'Opt-out', + 'always' => 'Always', + 'opted_out' => 'Opted out', + 'opted_in' => 'Opted in', + 'manage_auto_bill' => 'Manage Auto-bill', + 'enabled' => 'Enabled', + 'paypal' => 'PayPal', + 'braintree_enable_paypal' => 'Enable PayPal payments through BrainTree', + 'braintree_paypal_disabled_help' => 'The PayPal gateway is processing PayPal payments', + 'braintree_paypal_help' => 'You must also :link.', + 'braintree_paypal_help_link_text' => 'link PayPal to your BrainTree account', + 'token_billing_braintree_paypal' => 'Save payment details', + 'add_paypal_account' => 'Add PayPal Account', + + + 'no_payment_method_specified' => 'No payment method specified', + 'chart_type' => 'Chart Type', + 'format' => 'Format', + 'import_ofx' => 'Import OFX', + 'ofx_file' => 'OFX File', + 'ofx_parse_failed' => 'Failed to parse OFX file', + + // WePay + 'wepay' => 'WePay', + 'sign_up_with_wepay' => 'Sign up with WePay', + 'use_another_provider' => 'Use another provider', + 'company_name' => 'Company Name', + 'wepay_company_name_help' => 'This will appear on client\'s credit card statements.', + 'wepay_description_help' => 'The purpose of this account.', + 'wepay_tos_agree' => 'I agree to the :link.', + 'wepay_tos_link_text' => 'WePay Terms of Service', + 'resend_confirmation_email' => 'Resend Confirmation Email', + 'manage_wepay_account' => 'Manage WePay Account', + 'action_required' => 'Action Required', + 'finish_setup' => 'Finish Setup', + 'created_wepay_confirmation_required' => 'Please check your email and confirm your email address with WePay.', + 'switch_to_wepay' => 'Switch to WePay', + 'switch' => 'Switch', + 'restore_account_gateway' => 'Restore Gateway', + 'restored_account_gateway' => 'Successfully restored gateway', + 'united_states' => 'United States', + 'canada' => 'Canada', + 'accept_debit_cards' => 'Accept Debit Cards', + 'debit_cards' => 'Debit Cards', + + 'warn_start_date_changed' => 'The next invoice will be sent on the new start date.', + 'original_start_date' => 'Original start date', + 'new_start_date' => 'New start date', + 'security' => 'Security', + 'see_whats_new' => 'See what\'s new in v:version', + 'wait_for_upload' => 'Please wait for the document upload to complete.', + 'upgrade_for_permissions' => 'Upgrade to our Enterprise plan to enable permissions.', + 'enable_second_tax_rate' => 'Enable specifying a second tax rate', + 'payment_file' => 'Payment File', + 'expense_file' => 'Expense File', + 'product_file' => 'Product File', + 'import_products' => 'Import Products', + 'products_will_create' => 'products will be created.', + 'product_key' => 'Product', + 'created_products' => 'Successfully created :count product(s)', + 'export_help' => 'Use JSON if you plan to import the data into Invoice Ninja.', + 'JSON_file' => 'JSON File', + + 'view_dashboard' => 'View Dashboard', + 'client_session_expired' => 'Session Expired', + 'client_session_expired_message' => 'Your session has expired. Please click the link in your email again.', + + 'auto_bill_notification' => 'This invoice will automatically be billed to your :payment_method on file on :due_date.', + 'auto_bill_payment_method_bank_transfer' => 'bank account', + 'auto_bill_payment_method_credit_card' => 'credit card', + 'auto_bill_payment_method_paypal' => 'PayPal account', + 'auto_bill_notification_placeholder' => 'This invoice will automatically be billed to your credit card on file on the due date.', + 'payment_settings' => 'Payment Settings', + + 'on_send_date' => 'On send date', + 'on_due_date' => 'On due date', + 'auto_bill_ach_date_help' => 'ACH auto bill will always happen on the due date', + 'warn_change_auto_bill' => 'Due to NACHA rules, changes to this invoice may prevent ACH auto bill.', + + 'bank_account' => 'Bank Account', + 'payment_processed_through_wepay' => 'ACH payments will be processed using WePay.', + 'wepay_payment_tos_agree' => 'I agree to the WePay :terms and :privacy_policy.', + 'privacy_policy' => 'Privacy Policy', + 'wepay_payment_tos_agree_required' => 'You must agree to the WePay Terms of Service and Privacy Policy.', + 'payment_settings_supported_gateways' => 'These options are supported by the WePay, Stripe, and Braintree gateways.', + 'ach_email_prompt' => 'Please enter your email address:', + 'verification_pending' => 'Verification Pending', + + 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', + 'credit_card' => 'Credit Card', + 'bank_transfer' => 'Bank Transfer', + 'no_transaction_reference' => 'We did not recieve a payment transaction reference from the gateway.', + 'use_bank_on_file' => 'Use Bank on File', + 'auto_bill_email_message' => 'This invoice will automatically be billed to the payment method on file on the due date.', + 'bitcoin' => 'Bitcoin', + 'added_on' => 'Added :date', + 'failed_remove_payment_method' => 'Failed to remove the payment method', + 'gateway_exists' => 'This gateway already exists', + 'manual_entry' => 'Manual entry', + +); + +return $LANG; + +?> diff --git a/resources/lang/nl/texts.php b/resources/lang/nl/texts.php index 6d19485ff8..5d6e89e771 100644 --- a/resources/lang/nl/texts.php +++ b/resources/lang/nl/texts.php @@ -1,8 +1,6 @@ 'Organisatie', 'name' => 'Naam', 'website' => 'Website', @@ -25,8 +23,6 @@ return array( 'size_id' => 'Grootte', 'industry_id' => 'Industrie', 'private_notes' => 'Notitie (privé)', - - // invoice 'invoice' => 'Factuur', 'client' => 'Klant', 'invoice_date' => 'Factuurdatum', @@ -50,7 +46,6 @@ return array( 'invoice_design_id' => 'Ontwerp', 'terms' => 'Voorwaarden', 'your_invoice' => 'Jouw factuur', - 'remove_contact' => 'Verwijder contact', 'add_contact' => 'Contact toevoegen', 'create_new_client' => 'Maak nieuwe klant', @@ -69,13 +64,11 @@ return array( 'delete_invoice' => 'Verwijder factuur', 'email_invoice' => 'E-mail factuur', 'enter_payment' => 'Betaling invoeren', - 'tax_rates' => 'BTW-tarief', + 'tax_rates' => 'BTW-tarieven', 'rate' => 'Tarief', 'settings' => 'Instellingen', 'enable_invoice_tax' => 'Activeer instelling van BTW op volledige factuur', 'enable_line_item_tax' => 'Activeer instelling van BTW per lijn', - - // navigation 'dashboard' => 'Dashboard', 'clients' => 'Klanten', 'invoices' => 'Facturen', @@ -96,11 +89,10 @@ return array( 'import' => 'Importeer', 'download' => 'Downloaden', 'cancel' => 'Annuleren', + 'close' => 'Sluiten', 'provide_email' => 'Geef een geldig e-mailadres aub.', 'powered_by' => 'Factuur gemaakt via', 'no_items' => 'Geen artikelen', - - // recurring invoices 'recurring_invoices' => 'Terugkerende facturen', 'recurring_help' => 'Zend klanten automatisch wekelijks, twee keer per maand, maandelijks, per kwartaal of jaarlijks dezelfde facturen.
Gebruik :MONTH, :QUARTER of :YEAR voor dynamische datums. Eenvoudige wiskunde werkt ook, bijvoorbeeld :MONTH-1.
@@ -110,8 +102,6 @@ return array(We gebruiken pdfmake om de factuurontwerpen declaratief te definieren. De pdfmake playground is een interessante manier om de library in actie te zien.
-Gebruik puntnotatie om een "dochter eigenschap" te gebruiken. Bijvoorbeeld: om de naam van een klant te tonen gebruik je $client.name
.
Als je ergens hulp bij nodig hebt, stel dan een vraag op ons support forum.
', - + 'customize_help' => 'We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
+You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', 'invoice_due_date' => 'Vervaldatum', 'quote_due_date' => 'Geldig tot', 'valid_until' => 'Geldig tot', @@ -753,19 +659,15 @@ return array( 'status_draft' => 'Concept', 'status_sent' => 'Verstuurd', 'status_viewed' => 'Bekeken', - 'status_approved' => 'Goedgekeurd', 'status_partial' => 'Gedeeltelijk', 'status_paid' => 'Betaald', 'show_line_item_tax' => 'BTW-tarieven per regel tonen', - 'iframe_url' => 'Website', 'iframe_url_help1' => 'Kopieer de volgende code naar een pagina op uw site.', 'iframe_url_help2' => 'U kunt de functionaliteit testen door te klikken op \'Bekijk als ontvanger\' bij een factuur.', - 'auto_bill' => 'Automatische incasso', 'military_time' => '24-uurs klok', 'last_sent' => 'Laatst verstuurd', - 'reminder_emails' => 'Herinnerings-e-mails', 'templates_and_reminders' => 'Sjablonen en herinneringen', 'subject' => 'Onderwerp', @@ -777,15 +679,12 @@ return array( 'reminder_subject' => 'Herinnering: Factuur :invoice van :account', 'reset' => 'Reset', 'invoice_not_found' => 'De opgevraagde factuur is niet beschikbaar', - 'referral_program' => 'Referral Program', 'referral_code' => 'Referral Code', 'last_sent_on' => 'Laatst verstuurd op :date', - 'page_expire' => 'Deze pagina verloopt binnenkort, :click_here om verder te kunnen werken', 'upcoming_quotes' => 'Eersvolgende offertes', 'expired_quotes' => 'Verlopen offertes', - 'sign_up_using' => 'Meld u aan met', 'invalid_credentials' => 'Deze inloggegevens zijn niet bij ons bekend', 'show_all_options' => 'Alle opties tonen', @@ -794,17 +693,10 @@ return array( 'disable' => 'Uitzetten', 'invoice_quote_number' => 'Factuur- en offertenummers', 'invoice_charges' => 'Facturatiekosten', - - 'invitation_status' => [ - 'sent' => 'E-mail verstuurd', - 'opened' => 'E-mail geopend', - 'viewed' => 'Factuur bekeken', - ], 'notification_invoice_bounced' => 'We konden factuur :invoice niet afleveren bij :contact.', 'notification_invoice_bounced_subject' => 'Factuur :invoice kon niet worden afgeleverd', 'notification_quote_bounced' => 'We konden offerte :invoice niet afleveren bij :contact.', 'notification_quote_bounced_subject' => 'Offerte :invoice kon niet worden afgeleverd', - 'custom_invoice_link' => 'Eigen factuurlink', 'total_invoiced' => 'Totaal gefactureerd', 'open_balance' => 'Openstaand bedrag', @@ -812,15 +704,12 @@ return array( 'basic_settings' => 'Basisinstellingen', 'pro' => 'Pro', 'gateways' => 'Betalingsverwerkers', - 'recurring_too_soon' => 'Het is te vroeg om de volgende terugkerende factuur aan te maken, dit is gepland voor :date', - 'next_send_on' => 'Verstuur volgende: :date', 'no_longer_running' => 'Deze factuur is niet ingepland', 'general_settings' => 'Algemene instellingen', 'customize' => 'Aanpassen', 'oneclick_login_help' => 'Verbind een account om zonder wachtwoord in te kunnen loggen', 'referral_code_help' => 'Verdien geld door onze applicatie online te delen', - 'enable_with_stripe' => 'Aanzetten | Vereist Stripe', 'tax_settings' => 'BTW-instellingen', 'create_tax_rate' => 'Voeg een tarief toe', @@ -841,7 +730,6 @@ return array( 'invoice_counter' => 'Factuurteller', 'quote_counter' => 'Offerteteller', 'type' => 'Type', - 'activity_1' => ':user heeft klant :client aangemaakt', 'activity_2' => ':user heeft klant :client gearchiveerd', 'activity_3' => ':user heeft klant :client verwijderd', @@ -871,18 +759,24 @@ return array( 'activity_27' => ':user heeft betaling :payment hersteld', 'activity_28' => ':user heeft :credit krediet hersteld', 'activity_29' => ':contact heeft offerte :quote goedgekeurd', - + 'activity_30' => ':user heeft leverancier :vendor aangemaakt', + 'activity_31' => ':user heeft leverancier :vendor aangemaakt', + 'activity_32' => ':user heeft leverancier :vendor aangemaakt', + 'activity_33' => ':user heeft leverancier :vendor aangemaakt', + 'activity_34' => ':user heeft uitgave :expense aangemaakt', + 'activity_35' => ':user heeft leverancier :vendor aangemaakt', + 'activity_36' => ':user heeft leverancier :vendor aangemaakt', + 'activity_37' => ':user heeft leverancier :vendor aangemaakt', 'payment' => 'Betaling', 'system' => 'Systeem', 'signature' => 'E-mailhandtekening', 'default_messages' => 'Standaardberichten', 'quote_terms' => 'Offertevoorwaarden', 'default_quote_terms' => 'Standaard offertevoorwaarden', - 'default_invoice_terms' => 'Standaard factuurvoorwaarden', - 'default_invoice_footer' => 'Standaard factuurfooter', + 'default_invoice_terms' => 'Stel standaard factuurvoorwaarden in', + 'default_invoice_footer' => 'Stel standaard factuurfooter in', 'quote_footer' => 'Offertefooter', 'free' => 'Gratis', - 'quote_is_approved' => 'Deze offerte is geaccordeerd', 'apply_credit' => 'Krediet gebruiken', 'system_settings' => 'Systeeminstellingen', @@ -900,7 +794,6 @@ return array( 'restored_recurring_invoice' => 'Terugkerende factuur succesvol hersteld', 'archived' => 'Gearchiveerd', 'untitled_account' => 'Naamloos bedrijf', - 'before' => 'Voor', 'after' => 'Na', 'reset_terms_help' => 'Herstel de standaardvoorwaarden', @@ -909,7 +802,6 @@ return array( 'user' => 'Gebruiker', 'country' => 'Land', 'include' => 'Voeg in', - 'logo_too_large' => 'Je logo is :size groot, voor betere PDF prestaties raden we je aan om een afbeelding kleiner dan 200KB te uploaden.', 'import_freshbooks' => 'Importeren van FreshBooks', 'import_data' => 'Importeer data', @@ -920,16 +812,6 @@ return array( 'task_file' => 'Urenbestand', 'no_mapper' => 'Geen geldige mapping voor bestand', 'invalid_csv_header' => 'Ongeldige CSV kop', - - 'email_errors' => [ - 'inactive_client' => 'E-mails kunnen niet worden verstuurd naar inactieve klanten', - 'inactive_contact' => 'E-mails kunnen niet worden verstuurd naar inactieve contactpersonen', - 'inactive_invoice' => 'E-mails kunnen niet worden verstuurd naar inactieve facturen', - 'user_unregistered' => 'Registreer een account om e-mails te kunnen versturen', - 'user_unconfirmed' => 'Bevestig uw account om e-mails te kunnen versturen', - 'invalid_contact_email' => 'Ongeldig e-mailadres van contactpersoon', - ], - 'client_portal' => 'Klantenportaal', 'admin' => 'Admin', 'disabled' => 'Uitgeschakeld', @@ -938,11 +820,9 @@ return array( 'invoice_will_create' => 'klant zal worden aangemaakt', 'invoices_will_create' => 'factuur zal worden aangemaakt', 'failed_to_import' => 'De volgende regels konden niet worden geïmporteerd, ze bestaan al of missen verplichte velden.', - 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', - 'email_design' => 'E-mail Ontwerp', 'due_by' => 'Vervaldatum :date', 'enable_email_markup' => 'Opmaak inschakelen', @@ -954,7 +834,6 @@ return array( 'plain' => 'Platte tekst', 'light' => 'Licht', 'dark' => 'Donker', - 'industry_help' => 'Wordt gebruikt om een vergelijking te kunnen maken met de gemiddelden van andere bedrijven uit dezelfde sector en van dezelfde grootte.', 'subdomain_help' => 'Pas het factuur link subdomein aan of toon de factuur op uw eigen website.', 'invoice_number_help' => 'Kies een voorvoegsel of gebruik een patroon om het factuurnummer dynamisch te genereren.', @@ -963,17 +842,14 @@ return array( 'custom_account_fields_helps' => 'Plaatst een tekstveld op de bedrijven aanmaak-/bewerkpagina en toont het gekozen label op de PDF.', 'custom_invoice_fields_helps' => 'Plaatst een tekstveld op de factuur aanmaak-/bewerkpagina en toont het gekozen label op de PDF.', 'custom_invoice_charges_helps' => 'Plaatst een tekstveld op de factuur aanmaak-/bewerkpagina en verwerkt de facturatiekosten in het subtotaal.', - 'color_help' => 'Opmerking: de primaire kleur wordt ook gebruikt in het klantenportaal en in aangepaste e-mailontwerpen.', - 'token_expired' => 'De validatie token is verlopen. Probeer het opnieuw.', 'invoice_link' => 'Factuur Link', 'button_confirmation_message' => 'Klik om uw e-mailadres te bevestigen.', 'confirm' => 'Bevestigen', 'email_preferences' => 'E-mailvoorkeuren', - 'created_invoices' => ':count facturen succesvol aangemaakt', //TODO: Implement pluralization? + 'created_invoices' => ':count facturen succesvol aangemaakt', 'next_invoice_number' => 'Het volgende factuurnummer is :number.', 'next_quote_number' => 'Het volgende offertenummer is :number.', - 'days_before' => 'dagen voor', 'days_after' => 'dagen na', 'field_due_date' => 'vervaldatum', @@ -981,29 +857,23 @@ return array( 'schedule' => 'Schema', 'email_designs' => 'E-mail Ontwerpen', 'assigned_when_sent' => 'Toegwezen zodra verzonden', - - 'white_label_custom_css' => ':link voor $'.WHITE_LABEL_PRICE.' om eigen opmaak te gebruiken en ons project te ondersteunen.', 'white_label_purchase_link' => 'Koop een whitelabel licentie', - - // Expense / vendor 'expense' => 'Uitgave', 'expenses' => 'Uitgaven', 'new_expense' => 'Nieuwe uitgave', 'enter_expense' => 'Uitgave invoeren', - 'vendors' => 'Verkopers', - 'new_vendor' => 'Nieuwe verkoper', + 'vendors' => 'Leveranciers', + 'new_vendor' => 'Nieuwe leverancier', 'payment_terms_net' => 'Betaaltermijn', - 'vendor' => 'Verkoper', - 'edit_vendor' => 'Bewerk verkoper', - 'archive_vendor' => 'Archiveer verkoper', - 'delete_vendor' => 'Verwijder verkoper', - 'view_vendor' => 'Bekijk verkoper', + 'vendor' => 'Leverancier', + 'edit_vendor' => 'Bewerk leverancier', + 'archive_vendor' => 'Archiveer leverancier', + 'delete_vendor' => 'Verwijder leverancier', + 'view_vendor' => 'Bekijk leverancier', 'deleted_expense' => 'Uitgave succesvol verwijderd', 'archived_expense' => 'Uitgave succesvol gearchiveerd', 'deleted_expenses' => 'Uitgaven succesvol verwijderd', 'archived_expenses' => 'Uitgaven succesvol gearchiveerd', - - // Expenses 'expense_amount' => 'Uitgave bedrag', 'expense_balance' => 'Uitgave saldo', 'expense_date' => 'Uitgave datum', @@ -1028,15 +898,11 @@ return array( 'expense_error_multiple_clients' => 'De uitgaven kunnen niet bij verschillende klanten horen', 'expense_error_invoiced' => 'Uitgave is al gefactureerd', 'convert_currency' => 'Valuta omrekenen', - - // Payment terms 'num_days' => 'Aantal dagen', 'create_payment_term' => 'Betalingstermijn aanmaken', 'edit_payment_terms' => 'Bewerk betalingstermijnen', 'edit_payment_term' => 'Bewerk betalingstermijn', 'archive_payment_term' => 'Archiveer betalingstermijn', - - // recurring due dates 'recurring_due_dates' => 'Vervaldatums van terugkerende facturen', 'recurring_due_date_help' => 'Stelt automatisch een vervaldatum in voor de factuur.
Facturen die maandelijks of jaarlijks terugkeren en ingesteld zijn om te vervallen op of voor de datum waarop ze gemaakt zijn zullen de volgende maand vervallen. Facturen die ingesteld zijn te vervallen op de 29e of 30e van een maand die deze dag niet heeft zullen vervallen op de laatste dag van die maand.
@@ -1061,15 +927,11 @@ return array( 'thursday' => 'Donderdag', 'friday' => 'Vrijdag', 'saturday' => 'Zaterdag', - - // Fonts 'header_font_id' => 'Header lettertype', 'body_font_id' => 'Body lettertype', 'color_font_help' => 'Opmerking: de primaire kleuren en lettertypen wordt ook gebruikt in het klantenportaal en in aangepaste e-mailontwerpen.', - 'live_preview' => 'Live Voorbeeld', 'invalid_mail_config' => 'Kon de e-mail niet verzenden, controleer of de e-mailinstellingen kloppen.', - 'invoice_message_button' => 'Klik op de onderstaande link om uw factuur van :amount te bekijken.', 'quote_message_button' => 'Klik op de onderstaande link om uw offerte van :amount te bekijken.', 'payment_message_button' => 'Bedankt voor uw betaling van :amount.', @@ -1086,7 +948,6 @@ return array( 'archived_bank_account' => 'Bankrekening succesvol gearchiveerd', 'created_bank_account' => 'Bankrekening succesvol toegevoegd', 'validate_bank_account' => 'Bankrekening valideren', - 'bank_accounts_help' => 'Koppel een bankrekening om automatisch uitgaven en leveranciers te importeren. Ondersteund American Express en 400+ banken uit de VS.', 'bank_password_help' => 'Opmerking: uw wachtwoord wordt beveiligd verstuurd en wordt nooit op onze servers opgeslagen.', 'bank_password_warning' => 'Waarschuwing: uw wachtwoord wordt mogelijk als leesbare tekst verzonden, overweeg HTTPS in te schakelen.', 'username' => 'Gebruikersnaam', @@ -1095,12 +956,11 @@ return array( 'bank_account_error' => 'Het ophalen van rekeninggegevens is mislukt, controleer uw inloggegevens.', 'status_approved' => 'Goedgekeurd', 'quote_settings' => 'Offerte instellingen', - 'auto_convert_quote' => 'Offerte automatisch omzetten', + 'auto_convert_quote' => 'Offerte automatisch omzetten in factuur als deze goed gekeurd wordt', 'auto_convert_quote_help' => 'Zet een offerte automatisch om in een factuur zodra deze door een klant wordt goedgekeurd.', 'validate' => 'Valideren', 'info' => 'Informatie', 'imported_expenses' => 'Er zijn succesvol :count_vendors leverancier(s) en :count_expenses uitgaven aangemaakt.', - 'iframe_url_help3' => 'Opmerking: als u van plan bent om creditcard betalingen te accepteren raden wij u dringend aan om HTTPS in te schakelen op uw website.', 'expense_error_multiple_currencies' => 'De uitgaven kunnen geen verschillende munteenheden hebben.', 'expense_error_mismatch_currencies' => 'De munteenheid van de klant komt niet overeen met de munteenheid van de uitgave.', @@ -1121,7 +981,28 @@ return array( 'trial_call_to_action' => 'Start gratis probeerversie', 'trial_success' => 'De gratis twee weken durende probeerversie van het pro plan is succesvol geactiveerd.', 'overdue' => 'Verlopen', - 'white_label_text' => 'Koop een één jaar geldige white label licentie van $'.WHITE_LABEL_PRICE.' om de Invoice Ninja logo\'s in het klantenportaal te verbergen en ons project te ondersteunen.', + + + 'white_label_text' => 'Koop een één jaar geldige white label licentie van $:price om de Invoice Ninja logo\'s in het klantenportaal te verbergen en ons project te ondersteunen.', + 'user_email_footer' => 'Ga alstublieft naar :link om uw e-mail notificatie instellingen aan te passen', + 'reset_password_footer' => 'Neem a.u.b. contact op met onze helpdesk indien u deze wachtwoordreset niet heeft aangevraagd. Het e-mailadres van de helpdesk is :email', + 'limit_users' => 'Sorry, dit zou de limiet van :limit gebruikers overschrijden', + 'more_designs_self_host_header' => 'Krijg 6 extra factuurontwerpen voor maar $:price', + 'old_browser' => 'Gebruik a.u.b. een moderne browser', + 'white_label_custom_css' => ':link voor $:price om eigen opmaak te gebruiken en ons project te ondersteunen.', + 'bank_accounts_help' => 'Koppel een bankrekening om automatisch uitgaven en leveranciers te importeren. Ondersteund American Express en 400+ banken uit de VS.', + + 'pro_plan_remove_logo' => ':link om het InvoiceNinja logo te verwijderen door het pro plan te nemen', + 'pro_plan_remove_logo_link' => 'Klik hier', + 'invitation_status_sent' => 'E-mail verstuurd', + 'invitation_status_opened' => 'E-mail geopend', + 'invitation_status_viewed' => 'Factuur bekeken', + 'email_error_inactive_client' => 'E-mails kunnen niet worden verstuurd naar inactieve klanten', + 'email_error_inactive_contact' => 'E-mails kunnen niet worden verstuurd naar inactieve contactpersonen', + 'email_error_inactive_invoice' => 'E-mails kunnen niet worden verstuurd naar inactieve facturen', + 'email_error_user_unregistered' => 'Registreer een account om e-mails te kunnen versturen', + 'email_error_user_unconfirmed' => 'Bevestig uw account om e-mails te kunnen versturen', + 'email_error_invalid_contact_email' => 'Ongeldig e-mailadres van contactpersoon', 'navigation' => 'Navigatie', 'list_invoices' => 'Toon Facturen', @@ -1144,22 +1025,20 @@ return array( 'custom_invoice_item_fields_help' => 'Voeg een veld toe bij het aanmaken van een factuurregel en toon het label met de waarde op de PDF.', 'recurring_invoice_number' => 'Nummer terugkerende factuur', 'recurring_invoice_number_prefix_help' => 'Kies een voorvoegsel voor het factuurnummer van terugkerende facturen. De standaard is: \'R\'.', - 'enable_client_portal' => 'Dashboard', - 'enable_client_portal_help' => 'Toon/verberg de dashboard pagina in het klantenportaal.', // Client Passwords 'enable_portal_password'=>'Facturen beveiligen met een wachtwoord', 'enable_portal_password_help'=>'Geeft u de mogelijkheid om een wachtwoord in te stellen voor elke contactpersoon. Als er een wachtwoord is ingesteld moet de contactpersoon het wachtwoord invoeren voordat deze facturen kan bekijken.', 'send_portal_password'=>'Wachtwoord automatisch genereren', 'send_portal_password_help'=>'Als er geen wachtwoord is ingesteld zal deze automatisch worden gegenereerd en verzonden bij de eerste factuur.', - + 'expired' => 'Verlopen', 'invalid_card_number' => 'Het creditcardnummer is niet geldig.', 'invalid_expiry' => 'De verloopdatum is niet geldig.', 'invalid_cvv' => 'Het CVV-nummer is niet geldig.', 'cost' => 'Kosten', 'create_invoice_for_sample' => 'Opmerking: maak uw eerste factuur om hier een voorbeeld te zien.', - + // User Permissions 'owner' => 'Eigenaar', 'administrator' => 'Beheerder', @@ -1178,7 +1057,7 @@ return array( 'view_all_help' => 'Gebruiker toestemming geven om regels te bekijken die hij niet heeft gemaakt', 'edit_all_help' => 'Gebruiker toestemming geven om regels te bewerken die hij niet heeft gemaakt', 'view_payment' => 'Betaling bekijken', - + 'january' => 'januari', 'february' => 'februari', 'march' => 'maart', @@ -1193,91 +1072,289 @@ return array( 'december' => 'december', // Documents - 'documents_header' => 'Documents:', - 'email_documents_header' => 'Documents:', - 'email_documents_example_1' => 'Widgets Receipt.pdf', - 'email_documents_example_2' => 'Final Deliverable.zip', - 'invoice_documents' => 'Documents', - 'expense_documents' => 'Attached Documents', - 'invoice_embed_documents' => 'Embed Documents', - 'invoice_embed_documents_help' => 'Include attached images in the invoice.', - 'document_email_attachment' => 'Attach Documents', - 'download_documents' => 'Download Documents (:size)', - 'documents_from_expenses' => 'From Expenses:', - 'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage - 'DefaultMessage' => 'Drop files or click to upload', - 'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.', - 'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.', - 'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', - 'InvalidFileType' => 'You can\'t upload files of this type.', - 'ResponseError' => 'Server responded with {{statusCode}} code.', - 'CancelUpload' => 'Cancel upload', - 'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?', - 'RemoveFile' => 'Remove file', - ), - 'documents' => 'Documents', - 'document_date' => 'Document Date', - 'document_size' => 'Size', + 'documents_header' => 'Documenten:', + 'email_documents_header' => 'Documenten:', + 'email_documents_example_1' => 'Widgets Kwitantie.pdf', + 'email_documents_example_2' => 'Definitieve Levering.zip', + 'invoice_documents' => 'Documenten', + 'expense_documents' => 'Bijgevoegde documenten', + 'invoice_embed_documents' => 'Documenten invoegen', + 'invoice_embed_documents_help' => 'Bijgevoegde afbeeldingen weergeven in de factuur.', + 'document_email_attachment' => 'Documenten bijvoegen', + 'download_documents' => 'Documenten downloaden (:size)', + 'documents_from_expenses' => 'Van uitgaven:', + 'dropzone_default_message' => 'Sleep bestanden hierheen of klik om te uploaden', + 'dropzone_fallback_message' => 'Je browser ondersteunt het slepen van bestanden niet.', + 'dropzone_fallback_text' => 'Gebruik de onderstaande optie om je bestanden te uploaden.', + 'dropzone_file_too_big' => 'Het bestand is te groot ({{filesize}}MiB). Maximale grootte: {{maxFilesize}}MiB.', + 'dropzone_invalid_file_type' => 'Je kan geen bestanden van dit type uploaden.', + 'dropzone_response_error' => 'De server gaf foutcode {{statusCode}} terug.', + 'dropzone_cancel_upload' => 'Upload annuleren', + 'dropzone_cancel_upload_confirmation' => 'Weet je zeker dat je deze upload wilt annuleren?', + 'dropzone_remove_file' => 'Bestand verwijderen', + 'documents' => 'Documenten', + 'document_date' => 'Documentdatum', + 'document_size' => 'Grootte', - 'enable_client_portal' => 'Client Portal', - 'enable_client_portal_help' => 'Show/hide the client portal.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Toon/verberg het klantenportaal.', 'enable_client_portal_dashboard' => 'Dashboard', - 'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.', - - // Plans - 'account_management' => 'Account Management', - 'plan_status' => 'Plan Status', - - 'plan_upgrade' => 'Upgrade', - 'plan_change' => 'Change Plan', - 'pending_change_to' => 'Changes To', - 'plan_changes_to' => ':plan on :date', - 'plan_term_changes_to' => ':plan (:term) on :date', - 'cancel_plan_change' => 'Cancel Change', - 'plan' => 'Plan', - 'expires' => 'Expires', - 'renews' => 'Renews', - 'plan_expired' => ':plan Plan Expired', - 'trial_expired' => ':plan Plan Trial Ended', - 'never' => 'Never', - 'plan_free' => 'Free', - 'plan_pro' => 'Pro', - 'plan_enterprise' => 'Enterprise', - 'plan_white_label' => 'Self Hosted (White labeled)', - 'plan_free_self_hosted' => 'Self Hosted (Free)', - 'plan_trial' => 'Trial', - 'plan_term' => 'Term', - 'plan_term_monthly' => 'Monthly', - 'plan_term_yearly' => 'Yearly', - 'plan_term_month' => 'Month', - 'plan_term_year' => 'Year', - 'plan_price_monthly' => '$:price/Month', - 'plan_price_yearly' => '$:price/Year', - 'updated_plan' => 'Updated plan settings', - 'plan_paid' => 'Term Started', - 'plan_started' => 'Plan Started', - 'plan_expires' => 'Plan Expires', - - 'white_label_button' => 'White Label', - - 'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', - 'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.', - 'enterprise_plan_product' => 'Enterprise Plan', - 'enterprise_plan_year_description' => 'One year enrollment in the Invoice Ninja Enterprise Plan.', - 'enterprise_plan_month_description' => 'One month enrollment in the Invoice Ninja Enterprise Plan.', - 'plan_credit_product' => 'Credit', - 'plan_credit_description' => 'Credit for unused time', - 'plan_pending_monthly' => 'Will switch to monthly on :date', - 'plan_refunded' => 'A refund has been issued.', + 'enable_client_portal_dashboard_help' => 'Toon/verberg de dashboard pagina in het klantenportaal.', - 'live_preview' => 'Live Preview', - 'page_size' => 'Page Size', - 'live_preview_disabled' => 'Live preview has been disabled to support selected font', - 'invoice_number_padding' => 'Padding', - 'preview' => 'Preview', - 'list_vendors' => 'List Vendors', - 'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.', - 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.', - 'return_to_app' => 'Return to app', - -); \ No newline at end of file + // Plans + 'account_management' => 'Accountbeheer', + 'plan_status' => 'Status abonnement', + + 'plan_upgrade' => 'Upgraden', + 'plan_change' => 'Abonnement wijzigen', + 'pending_change_to' => 'Veranderd naar', + 'plan_changes_to' => ':plan op :date', + 'plan_term_changes_to' => ':plan (:term) op :date', + 'cancel_plan_change' => 'Wijziging annuleren', + 'plan' => 'Abonnement', + 'expires' => 'Verloopt', + 'renews' => 'Verlengt', + 'plan_expired' => ':plan abonnement verlopen', + 'trial_expired' => ':plan proefabonnement afgelopen', + 'never' => 'Nooit', + 'plan_free' => 'Gratis', + 'plan_pro' => 'Pro', + 'plan_enterprise' => 'Zakelijk', + 'plan_white_label' => 'Zelf gehost (White label)', + 'plan_free_self_hosted' => 'Zelf gehost (Gratis)', + 'plan_trial' => 'Proefabonnement', + 'plan_term' => 'Duur', + 'plan_term_monthly' => 'Maandelijks', + 'plan_term_yearly' => 'Jaarlijks', + 'plan_term_month' => 'Maand', + 'plan_term_year' => 'Jaar', + 'plan_price_monthly' => '$:price/maand', + 'plan_price_yearly' => '$:price/jaar', + 'updated_plan' => 'Bijgewerkte abonnement instellingen', + 'plan_paid' => 'Termijn gestart', + 'plan_started' => 'Abonnement gestart', + 'plan_expires' => 'Abonnement verloopt', + + 'white_label_button' => 'White Label', + + 'pro_plan_year_description' => 'Jaarabonnement op Invoice Ninja Pro.', + 'pro_plan_month_description' => 'Maandabonnement op Invoice Ninja Pro.', + 'enterprise_plan_product' => 'Zakelijk abonnement', + 'enterprise_plan_year_description' => 'Jaarabonnement op Invoice Ninja zakelijk.', + 'enterprise_plan_month_description' => 'Maandabonnement op Invoice Ninja zakelijk.', + 'plan_credit_product' => 'Krediet', + 'plan_credit_description' => 'Krediet voor ongebruikte tijd', + 'plan_pending_monthly' => 'Zal omgezet wordt in maandelijks op :date', + 'plan_refunded' => 'Een terugbetaling is toegekend.', + + 'live_preview' => 'Live Voorbeeld', + 'page_size' => 'Paginagrootte', + 'live_preview_disabled' => 'Live voorbeeld weergave is uitgeschakeld om het geselecteerde lettertype te ondersteunen.', + 'invoice_number_padding' => 'Marge', + 'preview' => 'Voorbeeld', + 'list_vendors' => 'Toon leveranciers', + 'add_users_not_supported' => 'Upgrade naar het zakelijke abonnement om extra gebruikers toe te voegen aan uw account.', + 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments, :link to see the full list of features.', + 'return_to_app' => 'Terug naar app', + + + // Payment updates + 'refund_payment' => 'Terugbetalen', + 'refund_max' => 'Max:', + 'refund' => 'Terugbetaling', + 'are_you_sure_refund' => 'Geselecteerde betalingen terugbetalen?', + 'status_pending' => 'In afwachting', + 'status_completed' => 'Voltooid', + 'status_failed' => 'Mislukt', + 'status_partially_refunded' => 'Deels terugbetaald', + 'status_partially_refunded_amount' => ':amount terugbetaald', + 'status_refunded' => 'Gecrediteerd', + 'status_voided' => 'Geannuleerd', + 'refunded_payment' => 'Gecrediteerde betaling', + 'activity_39' => ':user heeft een betaling van :payment_amount geannuleerd (:payment)', + 'activity_40' => ':user heeft een bedrag van :adjustment gecrediteerd op :payment_amount (:payment)', + 'card_expiration' => 'Verloopt:', + + 'card_creditcardother' => 'Onbekend', + 'card_americanexpress' => 'American Express', + 'card_carteblanche' => 'Carte Blanche', + 'card_unionpay' => 'UnionPay', + 'card_diners' => 'Diners Club', + 'card_discover' => 'Discover', + 'card_jcb' => 'JCB', + 'card_laser' => 'Laser', + 'card_maestro' => 'Maestro', + 'card_mastercard' => 'MasterCard', + 'card_solo' => 'Solo', + 'card_switch' => 'Switch', + 'card_visacard' => 'Visa', + 'card_ach' => 'ACH', + + 'payment_type_stripe' => 'Stripe', + 'ach' => 'ACH', + 'enable_ach' => 'ACH inschakelen', + 'stripe_ach_help' => 'ACH ondersteuning moet ook ingeschakeld worden bij Stripe.', + 'ach_disabled' => 'Another gateway is already configured for direct debit.', + + 'plaid' => 'Plaid', + 'client_id' => 'Klantnummer', + 'secret' => 'Secret', + 'public_key' => 'Public Key', + 'plaid_optional' => '(optioneel)', + 'plaid_environment_help' => 'Als er een Stripe test key is ingevoerd zal Plaid\'s ontwikkelomgeving (tartan) gebruikt worden.', + 'other_providers' => 'Andere leveranciers', + 'country_not_supported' => 'Dat land wordt niet ondersteund.', + 'invalid_routing_number' => 'Het banknummer is niet juist.', + 'invalid_account_number' => 'Het rekeningnummer is niet juist.', + 'account_number_mismatch' => 'De rekeningnummers komen niet overeen.', + 'missing_account_holder_type' => 'Kies alstublieft een persoonlijke rekening of een bedrijfsrekening.', + 'missing_account_holder_name' => 'Voer alstublieft de rekeninghouder in.', + 'routing_number' => 'Banknummer', + 'confirm_account_number' => 'Bevestig rekeningnummer', + 'individual_account' => 'Persoonlijke rekening', + 'company_account' => 'Bedrijfsrekening', + 'account_holder_name' => 'Rekeninghouder', + 'add_account' => 'Rekening toevoegen', + 'payment_methods' => 'Betalingsmethode', + 'complete_verification' => 'Verificatie voltooien', + 'verification_amount1' => 'Bedrag 1', + 'verification_amount2' => 'Bedrag 2', + 'payment_method_verified' => 'Verificatie succesvol voltooid', + 'verification_failed' => 'Verificatie mislukt', + 'remove_payment_method' => 'Betalingsmethode verwijderen', + 'confirm_remove_payment_method' => 'Weet u zeker dat u deze betalingsmethode wilt verwijderen?', + 'remove' => 'Verwijderen', + 'payment_method_removed' => 'Betalingsmethode verwijderd.', + 'bank_account_verification_help' => 'We hebben twee bedragen met de omschrijving "VERIFICATION" overgeboekt naar uw rekening. Het duurt 1 à 2 werkdagen voordat deze overschrijvingen zichtbaar zijn op uw afschriften. Voer de bedragen hieronder in.', + 'bank_account_verification_next_steps' => 'We hebben twee bedragen met de omschrijving "VERIFICATION" overgeboekt naar uw rekening. Het duurt 1 à 2 werkdagen voordat deze overschrijvingen zichtbaar zijn op uw afschriften. +Kom terug naar deze betalingsmethode pagina zodra u de bedragen heeft ontvangen en klik op "Verificatie voltooien" direct naast de rekening.', + 'unknown_bank' => 'Onbekende bank', + 'ach_verification_delay_help' => 'U kunt de rekening gebruiken na het voltooien van de verificatie. Verificatie duurt doorgaans 1 à 2 werkdagen.', + 'add_credit_card' => 'Creditcard toevoegen', + 'payment_method_added' => 'Betalingsmethode toegevoegd.', + 'use_for_auto_bill' => 'Gebruiken voor Autobill', + 'used_for_auto_bill' => 'Autobill betalingsmethode', + 'payment_method_set_as_default' => 'Autobill betalingsmethode instellen.', + 'activity_41' => 'Betaling van :payment_amount mislukt (:payment)', + 'webhook_url' => 'Webhook URL', + 'stripe_webhook_help' => 'U moet :link.', + 'stripe_webhook_help_link_text' => 'deze URL toevoegen als een endpoint in Stripe', + 'payment_method_error' => 'Er is een fout opgetreden bij het toevoegen van de betalingsmethode. Probeer het later opnieuw.', + 'notification_invoice_payment_failed_subject' => 'Betaling mislukt voor factuur :invoice', + 'notification_invoice_payment_failed' => 'Een betaling van :client voor factuur :invoice is mislukt. De betaling is gemarkeerd als mislukt en het :amount is toegevoegd aan het krediet van de klant.', + 'link_with_plaid' => 'Rekening direct koppelen met Plaid', + 'link_manually' => 'Handmatig koppelen', + 'secured_by_plaid' => 'Beveiligd met Plaid', + 'plaid_linked_status' => 'Uw bankrekening bij :bank', + 'add_payment_method' => 'Betalingsmethode toevoegen', + 'account_holder_type' => 'Type rekeninghouder', + 'ach_authorization' => 'I authorize :company to use my bank account for future payments and, if necessary, electronically credit my account to correct erroneous debits. I understand that I may cancel this authorization at any time by removing the payment method or by contacting :email.', + 'ach_authorization_required' => 'U moet toestemming geven voor ACH overschrijvingen.', + 'off' => 'Uit', + 'opt_in' => 'Meedoen', + 'opt_out' => 'Terugtrekken', + 'always' => 'Altijd', + 'opted_out' => 'Teruggetrokken', + 'opted_in' => 'Meegedaan', + 'manage_auto_bill' => 'Beheer Autobill', + 'enabled' => 'Ingeschakeld', + 'paypal' => 'PayPal', + 'braintree_enable_paypal' => 'PayPal betalingen via BrainTree inschakelen', + 'braintree_paypal_disabled_help' => 'De PayPal gateway verwerkt PayPal betalingen', + 'braintree_paypal_help' => 'U moet ook :link.', + 'braintree_paypal_help_link_text' => 'PayPal koppelen aan uw BrainTree account', + 'token_billing_braintree_paypal' => 'Betalingsgegevens opslaan', + 'add_paypal_account' => 'PayPal rekening toevoegen', + + + 'no_payment_method_specified' => 'Geen betalingsmethode gespecificeerd', + 'chart_type' => 'Grafiektype', + 'format' => 'Formaat', + 'import_ofx' => 'OFX importeren', + 'ofx_file' => 'OFX-bestand', + 'ofx_parse_failed' => 'OFX-bestand kon niet worden verwerkt', + + // WePay + 'wepay' => 'WePay', + 'sign_up_with_wepay' => 'Aanmelden met WePay', + 'use_another_provider' => 'Gebruik een andere leverancier', + 'company_name' => 'Bedrijfsnaam', + 'wepay_company_name_help' => 'Dit wordt zichtbaar op de creditcard afschriften van de klant.', + 'wepay_description_help' => 'De reden van deze account.', + 'wepay_tos_agree' => 'Ik ga akkoord met de :link.', + 'wepay_tos_link_text' => 'WePay servicevoorwaarden', + 'resend_confirmation_email' => 'Bevestigings-e-mail opnieuw versturen', + 'manage_wepay_account' => 'WePay account beheren', + 'action_required' => 'Actie vereist', + 'finish_setup' => 'Installatie voltooien', + 'created_wepay_confirmation_required' => 'Controleer uw e-mail en bevestig uw e-mailadres met WePay.', + 'switch_to_wepay' => 'Overschakelen naar WePay', + 'switch' => 'Overschakelen', + 'restore_account_gateway' => 'Gateway herstellen', + 'restored_account_gateway' => 'Gateway succesvol hersteld', + 'united_states' => 'Verenigde Staten', + 'canada' => 'Canada', + 'accept_debit_cards' => 'Accepteer betaalkaart', + 'debit_cards' => 'Betaalkaarten', + + 'warn_start_date_changed' => 'The next invoice will be sent on the new start date.', + 'original_start_date' => 'Original start date', + 'new_start_date' => 'New start date', + 'security' => 'Security', + 'see_whats_new' => 'See what\'s new in v:version', + 'wait_for_upload' => 'Please wait for the document upload to complete.', + 'upgrade_for_permissions' => 'Upgrade to our Enterprise plan to enable permissions.', + 'enable_second_tax_rate' => 'Enable specifying a second tax rate', + 'payment_file' => 'Payment File', + 'expense_file' => 'Expense File', + 'product_file' => 'Product File', + 'import_products' => 'Import Products', + 'products_will_create' => 'products will be created.', + 'product_key' => 'Product', + 'created_products' => 'Successfully created :count product(s)', + 'export_help' => 'Use JSON if you plan to import the data into Invoice Ninja.', + 'JSON_file' => 'JSON File', + + 'view_dashboard' => 'View Dashboard', + 'client_session_expired' => 'Session Expired', + 'client_session_expired_message' => 'Your session has expired. Please click the link in your email again.', + + 'auto_bill_notification' => 'This invoice will automatically be billed to your :payment_method on file on :due_date.', + 'auto_bill_payment_method_bank_transfer' => 'bank account', + 'auto_bill_payment_method_credit_card' => 'credit card', + 'auto_bill_payment_method_paypal' => 'PayPal account', + 'auto_bill_notification_placeholder' => 'This invoice will automatically be billed to your credit card on file on the due date.', + 'payment_settings' => 'Payment Settings', + + 'on_send_date' => 'On send date', + 'on_due_date' => 'On due date', + 'auto_bill_ach_date_help' => 'ACH auto bill will always happen on the due date', + 'warn_change_auto_bill' => 'Due to NACHA rules, changes to this invoice may prevent ACH auto bill.', + + 'bank_account' => 'Bank Account', + 'payment_processed_through_wepay' => 'ACH payments will be processed using WePay.', + 'wepay_payment_tos_agree' => 'I agree to the WePay :terms and :privacy_policy.', + 'privacy_policy' => 'Privacy Policy', + 'wepay_payment_tos_agree_required' => 'You must agree to the WePay Terms of Service and Privacy Policy.', + 'payment_settings_supported_gateways' => 'These options are supported by the WePay, Stripe, and Braintree gateways.', + 'ach_email_prompt' => 'Please enter your email address:', + 'verification_pending' => 'Verification Pending', + + 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', + 'credit_card' => 'Credit Card', + 'bank_transfer' => 'Bank Transfer', + 'no_transaction_reference' => 'We did not recieve a payment transaction reference from the gateway.', + 'use_bank_on_file' => 'Use Bank on File', + 'auto_bill_email_message' => 'This invoice will automatically be billed to the payment method on file on the due date.', + 'bitcoin' => 'Bitcoin', + 'added_on' => 'Added :date', + 'failed_remove_payment_method' => 'Failed to remove the payment method', + 'gateway_exists' => 'This gateway already exists', + 'manual_entry' => 'Manual entry', + +); + +return $LANG; + +?> diff --git a/resources/lang/pl/texts.php b/resources/lang/pl/texts.php index 9b91d00cfd..97eb20ac77 100644 --- a/resources/lang/pl/texts.php +++ b/resources/lang/pl/texts.php @@ -39,11 +39,11 @@ $LANG = array( 'description' => 'Opis', 'unit_cost' => 'Cena jednostkowa', 'quantity' => 'Ilość', - 'line_total' => 'Wartość całkowita', + 'line_total' => 'Suma', 'subtotal' => 'Suma częściowa', 'paid_to_date' => 'Wypłacono do tej pory', 'balance_due' => 'Balance Due', - 'invoice_design_id' => 'Szablon', + 'invoice_design_id' => 'Motyw', 'terms' => 'Warunki', 'your_invoice' => 'Twoja faktura', 'remove_contact' => 'Usuń kontakt', @@ -185,69 +185,69 @@ $LANG = array( 'clients_will_create' => 'klienci będą utworzeni', 'email_settings' => 'Ustawienia e-mail', 'client_view_styling' => 'Client View Styling', - 'pdf_email_attachment' => 'Attach PDFs', + 'pdf_email_attachment' => 'Dodaj PDF', 'custom_css' => 'Custom CSS', - 'import_clients' => 'Import Client Data', - 'csv_file' => 'CSV file', - 'export_clients' => 'Export Client Data', - 'created_client' => 'Successfully created client', + 'import_clients' => 'Importuj dane klienta', + 'csv_file' => 'Plik CSV', + 'export_clients' => 'Eksportuj dane klienta', + 'created_client' => 'Klient został utworzony', 'created_clients' => 'Successfully created :count client(s)', - 'updated_settings' => 'Successfully updated settings', - 'removed_logo' => 'Successfully removed logo', - 'sent_message' => 'Successfully sent message', - 'invoice_error' => 'Please make sure to select a client and correct any errors', + 'updated_settings' => 'Ustawienia zostały zaktualizowane', + 'removed_logo' => 'Logo zostało usunięte', + 'sent_message' => 'Wiadomość została wysłana', + 'invoice_error' => 'Pamiętaj aby wybrać klienta i poprawidź błędy', 'limit_clients' => 'Sorry, this will exceed the limit of :count clients', 'payment_error' => 'There was an error processing your payment. Please try again later.', 'registration_required' => 'Please sign up to email an invoice', - 'confirmation_required' => 'Please confirm your email address', - 'updated_client' => 'Successfully updated client', - 'created_client' => 'Successfully created client', - 'archived_client' => 'Successfully archived client', - 'archived_clients' => 'Successfully archived :count clients', - 'deleted_client' => 'Successfully deleted client', - 'deleted_clients' => 'Successfully deleted :count clients', - 'updated_invoice' => 'Successfully updated invoice', - 'created_invoice' => 'Successfully created invoice', - 'cloned_invoice' => 'Successfully cloned invoice', - 'emailed_invoice' => 'Successfully emailed invoice', - 'and_created_client' => 'and created client', - 'archived_invoice' => 'Successfully archived invoice', - 'archived_invoices' => 'Successfully archived :count invoices', - 'deleted_invoice' => 'Successfully deleted invoice', - 'deleted_invoices' => 'Successfully deleted :count invoices', - 'created_payment' => 'Successfully created payment', - 'created_payments' => 'Successfully created :count payment(s)', - 'archived_payment' => 'Successfully archived payment', - 'archived_payments' => 'Successfully archived :count payments', - 'deleted_payment' => 'Successfully deleted payment', - 'deleted_payments' => 'Successfully deleted :count payments', - 'applied_payment' => 'Successfully applied payment', - 'created_credit' => 'Successfully created credit', - 'archived_credit' => 'Successfully archived credit', - 'archived_credits' => 'Successfully archived :count credits', - 'deleted_credit' => 'Successfully deleted credit', - 'deleted_credits' => 'Successfully deleted :count credits', - 'imported_file' => 'Successfully imported file', - 'updated_vendor' => 'Successfully updated vendor', - 'created_vendor' => 'Successfully created vendor', - 'archived_vendor' => 'Successfully archived vendor', - 'archived_vendors' => 'Successfully archived :count vendors', - 'deleted_vendor' => 'Successfully deleted vendor', - 'deleted_vendors' => 'Successfully deleted :count vendors', - 'confirmation_subject' => 'Invoice Ninja Account Confirmation', - 'confirmation_header' => 'Account Confirmation', + 'confirmation_required' => 'Proszę potwierdzić adres email', + 'updated_client' => 'Klient został zaktualizowany', + 'created_client' => 'Klient został utworzony', + 'archived_client' => 'Klient został zarchiwizowany', + 'archived_clients' => 'Zarchiwizowano :count klientów', + 'deleted_client' => 'Klient został usunięty', + 'deleted_clients' => 'Usunięto :count klientów', + 'updated_invoice' => 'Faktura została zaktualizowana', + 'created_invoice' => 'Faktura została utworzona', + 'cloned_invoice' => 'Faktura została sklonowana', + 'emailed_invoice' => 'Faktura została wysłana', + 'and_created_client' => 'i utworzono klienta', + 'archived_invoice' => 'Faktura została zarchiwizowana', + 'archived_invoices' => 'Zarchiwizowano :count faktury', + 'deleted_invoice' => 'Faktura została usunięta', + 'deleted_invoices' => 'Usunięto :count faktury', + 'created_payment' => 'Płatność została utworzona', + 'created_payments' => 'Utworzono :count płatność/płatności', + 'archived_payment' => 'Płatność zostałą zarchiwizowana', + 'archived_payments' => 'Zarchiwizowano :count płatności', + 'deleted_payment' => 'Płatność została usunięta', + 'deleted_payments' => 'Usunięto :count płatności', + 'applied_payment' => 'Zastosowano płatność', + 'created_credit' => 'Kredyt został utworzony', + 'archived_credit' => 'Kredyt zarchiwizowano', + 'archived_credits' => 'Zarchiwizowano :count kredyty', + 'deleted_credit' => 'Kredyt został usunięty', + 'deleted_credits' => 'Usunięto :count kredyty', + 'imported_file' => 'Plik został zaimportowany', + 'updated_vendor' => 'Zaktualizowano sprzedawcę', + 'created_vendor' => 'Sprzedawca został utworzony', + 'archived_vendor' => 'Sprzedawca został zarchiwizowany', + 'archived_vendors' => 'Zarchiwizowano :count sprzedawców', + 'deleted_vendor' => 'Sprzedawca usunięty', + 'deleted_vendors' => 'Usunięto :count sprzedawców', + 'confirmation_subject' => 'Potwierdzenie konta Invoice Ninja', + 'confirmation_header' => 'Potwierdzenie konta', 'confirmation_message' => 'Please access the link below to confirm your account.', - 'invoice_subject' => 'New invoice :invoice from :account', - 'invoice_message' => 'To view your invoice for :amount, click the link below.', - 'payment_subject' => 'Payment Received', + 'invoice_subject' => 'Nowa faktura :invoice z :account', + 'invoice_message' => 'Aby wyświetlić fakturę za :amount, kliknij link poniżej.', + 'payment_subject' => 'Otrzymano płatność', 'payment_message' => 'Thank you for your payment of :amount.', 'email_salutation' => 'Drogi :name,', 'email_signature' => 'Pozdrowienia,', 'email_from' => 'Zespół The Invoice Ninja', - 'invoice_link_message' => 'To view the invoice click the link below:', - 'notification_invoice_paid_subject' => 'Invoice :invoice was paid by :client', - 'notification_invoice_sent_subject' => 'Invoice :invoice was sent to :client', - 'notification_invoice_viewed_subject' => 'Invoice :invoice was viewed by :client', + 'invoice_link_message' => 'Aby wyświetlić fakturę kliknij link poniżej:', + 'notification_invoice_paid_subject' => 'Faktura :invoice zapłacona przez :client', + 'notification_invoice_sent_subject' => 'Faktura :invoice wysłana do :client', + 'notification_invoice_viewed_subject' => 'Faktura :invoice wyświetlona przez :client', 'notification_invoice_paid' => 'A payment of :amount was made by client :client towards Invoice :invoice.', 'notification_invoice_sent' => 'The following client :client was emailed Invoice :invoice for :amount.', 'notification_invoice_viewed' => 'The following client :client viewed Invoice :invoice for :amount.', @@ -260,14 +260,14 @@ $LANG = array( 'logout' => 'Wyloguj się', 'sign_up_to_save' => 'Sign up to save your work', 'agree_to_terms' => 'I agree to the Invoice Ninja :terms', - 'terms_of_service' => 'Terms of Service', - 'email_taken' => 'The email address is already registered', - 'working' => 'Working', - 'success' => 'Success', + 'terms_of_service' => 'Warunki korzystania z Serwisu', + 'email_taken' => 'Podany adres email już istnieje', + 'working' => 'Pracuję', + 'success' => 'Sukces', 'success_message' => 'You have successfully registered! Please visit the link in the account confirmation email to verify your email address.', 'erase_data' => 'This will permanently erase your data.', 'password' => 'Hasło', - 'pro_plan_product' => 'Pro Plan', + 'pro_plan_product' => 'Plan Pro', 'pro_plan_success' => 'Thanks for choosing Invoice Ninja\'s Pro plan!We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
-To access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum.
', +You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', 'invoice_due_date' => 'Termin', - 'quote_due_date' => 'Valid Until', - 'valid_until' => 'Valid Until', + 'quote_due_date' => 'Ważny do', + 'valid_until' => 'Ważny do', 'reset_terms' => 'Resetuj warunki', 'reset_footer' => 'Resetuj stópkę', 'invoices_sent' => ':count faktura wysłana|:count faktury wysłane', 'status_draft' => 'Wersja robocza', 'status_sent' => 'Wysłane', 'status_viewed' => 'Przeglądnięte', - 'status_partial' => 'Częściowo', + 'status_partial' => 'Zaliczka', 'status_paid' => 'Zapłacone', 'show_line_item_tax' => 'Wyświetl podatki pozycji w tej samej linii', - 'iframe_url' => 'Website', + 'iframe_url' => 'Strona internetowa', 'iframe_url_help1' => 'Copy the following code to a page on your site.', 'iframe_url_help2' => 'You can test the feature by clicking \'View as recipient\' for an invoice.', 'auto_bill' => 'Automatyczny Rachunek', @@ -710,10 +710,10 @@ $LANG = array( 'basic_settings' => 'Ustawienia podstawowe', 'pro' => 'Pro', 'gateways' => 'Payment Gateways', - 'next_send_on' => 'Send Next: :date', + 'next_send_on' => 'Wyślij ponownie: :date', 'no_longer_running' => 'This invoice is not scheduled to run', - 'general_settings' => 'General Settings', - 'customize' => 'Customize', + 'general_settings' => 'Ustawienia ogólne', + 'customize' => 'Dostosuj', 'oneclick_login_help' => 'Connect an account to login without a password', 'referral_code_help' => 'Earn money by sharing our app online', 'enable_with_stripe' => 'Aktywuj | Wymaga Stripe', @@ -721,21 +721,21 @@ $LANG = array( 'create_tax_rate' => 'Dodaj stawkę podatkową', 'updated_tax_rate' => 'Successfully updated tax rate', 'created_tax_rate' => 'Successfully created tax rate', - 'edit_tax_rate' => 'Edit tax rate', - 'archive_tax_rate' => 'Archive Tax Rate', - 'archived_tax_rate' => 'Successfully archived the tax rate', + 'edit_tax_rate' => 'Edytuj stawkę podatkową', + 'archive_tax_rate' => 'Archiwizuj stawkę podatkową', + 'archived_tax_rate' => 'Zarchiwizowano stawkę podatkową', 'default_tax_rate_id' => 'Domyśłna stawka podatkowa', 'tax_rate' => 'Stawka podatkowa', 'recurring_hour' => 'Okresowa godzina', - 'pattern' => 'Pattern', - 'pattern_help_title' => 'Pattern Help', + 'pattern' => 'Wzór', + 'pattern_help_title' => 'Wzór pomoc', 'pattern_help_1' => 'Create custom invoice and quote numbers by specifying a pattern', - 'pattern_help_2' => 'Available variables:', - 'pattern_help_3' => 'For example, :example would be converted to :value', - 'see_options' => 'See options', - 'invoice_counter' => 'Invoice Counter', - 'quote_counter' => 'Quote Counter', - 'type' => 'Type', + 'pattern_help_2' => 'Dostępne zmienne:', + 'pattern_help_3' => 'Na przykład, :example będzie skonwertowane do :value', + 'see_options' => 'Zobacz opcje', + 'invoice_counter' => 'Licznik faktur', + 'quote_counter' => 'Licznik ofert', + 'type' => 'Typ', 'activity_1' => ':user created client :client', 'activity_2' => ':user archived client :client', 'activity_3' => ':user deleted client :client', @@ -782,14 +782,14 @@ $LANG = array( 'default_invoice_terms' => 'Domyślne warunki faktury', 'default_invoice_footer' => 'Domyślna stopka faktury', 'quote_footer' => 'Quote Footer', - 'free' => 'Free', + 'free' => 'Darmowe', 'quote_is_approved' => 'This quote is approved', - 'apply_credit' => 'Apply Credit', - 'system_settings' => 'System Settings', - 'archive_token' => 'Archive Token', - 'archived_token' => 'Successfully archived token', - 'archive_user' => 'Archive User', - 'archived_user' => 'Successfully archived user', + 'apply_credit' => 'Zastosuj kredyt', + 'system_settings' => 'Ustawienia systemowe', + 'archive_token' => 'Archiwizuj token', + 'archived_token' => 'Token został zarchiwizowany', + 'archive_user' => 'Archiwizuj użytkownika', + 'archived_user' => 'Użytkownik został zarchiwizowany', 'archive_account_gateway' => 'Archive Gateway', 'archived_account_gateway' => 'Successfully archived gateway', 'archive_recurring_invoice' => 'Archiwizuj okresową fakturę', @@ -807,39 +807,39 @@ $LANG = array( 'export_data' => 'Exportuj dane', 'user' => 'Użytkownik', 'country' => 'Kraj', - 'include' => 'Include', + 'include' => 'Dołącz', 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', 'import_freshbooks' => 'Import From FreshBooks', - 'import_data' => 'Import Data', + 'import_data' => 'Importuj dane', 'source' => 'Źródło', 'csv' => 'CSV', 'client_file' => 'Plik klienta', 'invoice_file' => 'Plik faktury', 'task_file' => 'Plik zadania', 'no_mapper' => 'No valid mapping for file', - 'invalid_csv_header' => 'Invalid CSV Header', + 'invalid_csv_header' => 'Nieprawidłowy nagłówek CSV', 'client_portal' => 'Portal klienta', 'admin' => 'Administrator', 'disabled' => 'Wyłączony', 'show_archived_users' => 'Pokaż zarchiwizowanych użytkowników', 'notes' => 'Notatki', - 'invoice_will_create' => 'client will be created', - 'invoices_will_create' => 'invoices will be created', + 'invoice_will_create' => 'klient zostanie utworzony', + 'invoices_will_create' => 'faktury zostaną utworzone', 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', 'publishable_key' => 'Publishable Key', 'secret_key' => 'Sekretny klucz', 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', - 'email_design' => 'Email Design', + 'email_design' => 'Motyw email', 'due_by' => 'Płatny do :date', - 'enable_email_markup' => 'Enable Markup', + 'enable_email_markup' => 'Aktywuj Markup', 'enable_email_markup_help' => 'Make it easier for your clients to pay you by adding schema.org markup to your emails.', - 'template_help_title' => 'Templates Help', - 'template_help_1' => 'Available variables:', - 'email_design_id' => 'Email Style', + 'template_help_title' => 'Szablony Pomoc', + 'template_help_1' => 'Dostępne zmienne:', + 'email_design_id' => 'Motyw email', 'email_design_help' => 'Make your emails look more professional with HTML layouts', - 'plain' => 'Plain', - 'light' => 'Light', - 'dark' => 'Dark', + 'plain' => 'Zwykły', + 'light' => 'Jasny', + 'dark' => 'Ciemny', 'industry_help' => 'Used to provide comparisons against the averages of companies of similar size and industry.', 'subdomain_help' => 'Customize the invoice link subdomain or display the invoice on your own website.', 'invoice_number_help' => 'Specify a prefix or use a custom pattern to dynamically set the invoice number.', @@ -849,61 +849,61 @@ $LANG = array( 'custom_invoice_fields_helps' => 'Add a field when creating an invoice and display the label and value on the PDF.', 'custom_invoice_charges_helps' => 'Add a field when creating an invoice and include the charge in the invoice subtotals.', 'token_expired' => 'Validation token was expired. Please try again.', - 'invoice_link' => 'Invoice Link', + 'invoice_link' => 'Link faktury', 'button_confirmation_message' => 'Click to confirm your email address.', - 'confirm' => 'Confirm', - 'email_preferences' => 'Email Preferences', + 'confirm' => 'Potwierdź', + 'email_preferences' => 'Preferencje email', 'created_invoices' => 'Successfully created :count invoice(s)', - 'next_invoice_number' => 'The next invoice number is :number.', - 'next_quote_number' => 'The next quote number is :number.', - 'days_before' => 'days before', - 'days_after' => 'days after', + 'next_invoice_number' => 'Następny numer faktury jest :number.', + 'next_quote_number' => 'Następny numer oferty jest :number.', + 'days_before' => 'dni przed', + 'days_after' => 'dni po', 'field_due_date' => 'termin', - 'field_invoice_date' => 'invoice date', - 'schedule' => 'Schedule', - 'email_designs' => 'Email Designs', + 'field_invoice_date' => 'data faktury', + 'schedule' => 'Zaplanuj', + 'email_designs' => 'Motyw email', 'assigned_when_sent' => 'Assigned when sent', 'white_label_purchase_link' => 'Purchase a white label license', 'expense' => 'Wydatek', 'expenses' => 'Wydatki', 'new_expense' => 'Nowy wydatek', 'enter_expense' => 'Dodaj wydatek', - 'vendors' => 'Vendors', - 'new_vendor' => 'New Vendor', + 'vendors' => 'Sprzedawcy', + 'new_vendor' => 'Nowy sprzedawca', 'payment_terms_net' => 'Net', - 'vendor' => 'Vendor', - 'edit_vendor' => 'Edit Vendor', - 'archive_vendor' => 'Archive Vendor', - 'delete_vendor' => 'Delete Vendor', - 'view_vendor' => 'View Vendor', - 'deleted_expense' => 'Successfully deleted expense', - 'archived_expense' => 'Successfully archived expense', - 'deleted_expenses' => 'Successfully deleted expenses', - 'archived_expenses' => 'Successfully archived expenses', - 'expense_amount' => 'Expense Amount', - 'expense_balance' => 'Expense Balance', - 'expense_date' => 'Expense Date', - 'expense_should_be_invoiced' => 'Should this expense be invoiced?', - 'public_notes' => 'Public Notes', - 'invoice_amount' => 'Invoice Amount', - 'exchange_rate' => 'Exchange Rate', - 'yes' => 'Yes', - 'no' => 'No', - 'should_be_invoiced' => 'Should be invoiced', - 'view_expense' => 'View expense # :expense', - 'edit_expense' => 'Edit Expense', - 'archive_expense' => 'Archive Expense', - 'delete_expense' => 'Delete Expense', - 'view_expense_num' => 'Expense # :expense', - 'updated_expense' => 'Successfully updated expense', - 'created_expense' => 'Successfully created expense', + 'vendor' => 'Sprzedawca', + 'edit_vendor' => 'Edytuj sprzedawcę', + 'archive_vendor' => 'Archiwizuj sprzedawcę', + 'delete_vendor' => 'Usuń sprzedawcę', + 'view_vendor' => 'Zobacz sprzedawcę', + 'deleted_expense' => 'Wydatki zostały usunięte', + 'archived_expense' => 'Wydatki zostały zarchiwizowane', + 'deleted_expenses' => 'Wydatki zostały usunięte', + 'archived_expenses' => 'Wydatki zostały zarchiwizowane', + 'expense_amount' => 'Wartość wydatków', + 'expense_balance' => 'Saldo wydatków', + 'expense_date' => 'Data obciążenia', + 'expense_should_be_invoiced' => 'Utwórz fakturę dla poniesionego kosztu?', + 'public_notes' => 'Notatki publiczne', + 'invoice_amount' => 'Kwota faktury', + 'exchange_rate' => 'Kurs wymiany', + 'yes' => 'Tak', + 'no' => 'Nie', + 'should_be_invoiced' => 'Utwórz fakturę', + 'view_expense' => 'Zobacz wydatek # :expense', + 'edit_expense' => 'Edytuj wydatek', + 'archive_expense' => 'Archiwizuj wydatek', + 'delete_expense' => 'Usuń wydatek', + 'view_expense_num' => 'Wydatek # :expense', + 'updated_expense' => 'Wydatek został zaktualizowany', + 'created_expense' => 'Wydatek został utworzony', 'enter_expense' => 'Dodaj wydatek', - 'view' => 'View', + 'view' => 'Podgląd', 'restore_expense' => 'Przywróć wydatek', 'invoice_expense' => 'Faktura na wydatek', - 'expense_error_multiple_clients' => 'The expenses can\'t belong to different clients', - 'expense_error_invoiced' => 'Expense has already been invoiced', - 'convert_currency' => 'Konwersja waluty', + 'expense_error_multiple_clients' => 'Wydatek nie może należeć do innych klientów', + 'expense_error_invoiced' => 'Faktura do wydatku została już utworzona', + 'convert_currency' => 'Konwertuj walutę', 'num_days' => 'Liczba dni', 'create_payment_term' => 'Utwórz warunki płatności', 'edit_payment_terms' => 'Edytuj warunki płatności', @@ -913,7 +913,7 @@ $LANG = array( 'recurring_due_date_help' => 'Automatycznie ustawia termin faktury.
Invoices on a monthly or yearly cycle set to be due on or before the day they are created will be due the next month. Invoices set to be due on the 29th or 30th in months that don\'t have that day will be due the last day of the month.
Invoices on a weekly cycle set to be due on the day of the week they are created will be due the next week.
-For example:
+Na przykład:
Enviar automaticamente aos clientes as mesmas faturas semanalmente, mensalmente, bimenstralmente, trimestralmente ou anualmente.
Use :MONTH, :QUARTER ou :YEAR para datas dinâmicas. Operadores matemáticos também funcionam, por exemplo :MONTH-1.
@@ -109,8 +102,6 @@ return array(We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
-To access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum.
', - +You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', 'invoice_due_date' => 'Data de vencimento', 'quote_due_date' => 'Valido até', 'valid_until' => 'Válido até', @@ -754,15 +662,12 @@ return array( 'status_partial' => 'Parcial', 'status_paid' => 'Pago', 'show_line_item_tax' => 'Exibir taxas dos itens', - 'iframe_url' => 'Website', 'iframe_url_help1' => 'Copie o código abaixo em seu website.', 'iframe_url_help2' => 'Você pode testar clicando em \'Ver como destinatário\' em uma fatura.', - 'auto_bill' => 'Cobrança Automática', 'military_time' => '24h', 'last_sent' => 'Último Envio', - 'reminder_emails' => 'E-mails de Lembrete', 'templates_and_reminders' => 'Modelos & Lembretes', 'subject' => 'Assunto', @@ -774,15 +679,12 @@ return array( 'reminder_subject' => 'Lembrente: Fatura :invoice de :account', 'reset' => 'Resetar', 'invoice_not_found' => 'A fatura requisitada 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 está expirando, :click_here para continuar trabalhando', 'upcoming_quotes' => 'Próximos Orçamentos', 'expired_quotes' => 'Orçamentos Expirados', - 'sign_up_using' => 'Acesse', 'invalid_credentials' => 'Usuário e/ou senha inválidos', 'show_all_options' => 'Mostrar todas as opções', @@ -791,17 +693,10 @@ return array( 'disable' => 'Desabilitar', 'invoice_quote_number' => 'Numero de Faturas e Orçamentos', 'invoice_charges' => 'Encargos da Fatura', - - 'invitation_status' => [ - 'sent' => 'E-mail Enviado', - 'opened' => 'E-mail Aberto', - 'viewed' => 'E-mail Visualizado', - ], 'notification_invoice_bounced' => 'Não foi possível entregar a Fatura :invoice para :contact.', 'notification_invoice_bounced_subject' => 'Fatura :invoice não foi entregue', 'notification_quote_bounced' => 'Não foi possível entregar o Orçamento :invoice para :contact.', 'notification_quote_bounced_subject' => 'Orçamento :invoice não foi entregue', - 'custom_invoice_link' => 'Link de Fauturas Personalizado', 'total_invoiced' => 'Faturas', 'open_balance' => 'Em Aberto', @@ -809,15 +704,12 @@ return array( 'basic_settings' => 'Configurações Básicas', 'pro' => 'Pro', 'gateways' => 'Provedores de Pagamento', - 'next_send_on' => 'Próximo Envio: :date', 'no_longer_running' => 'Esta fatura não está agendada', 'general_settings' => 'Configurações Gerais', 'customize' => 'Personalizar', - 'oneclick_login_help' => 'Vincule uma conta para acesar sem senha.', 'referral_code_help' => 'Recomende nosso sistema.', - 'enable_with_stripe' => 'Habilite | Requer Stripe', 'tax_settings' => 'Configurações de Taxas', 'create_tax_rate' => 'Adicionar Taxa', @@ -838,7 +730,6 @@ return array( 'invoice_counter' => 'Contador de Faturas', 'quote_counter' => 'Contador de Orçamentos', 'type' => 'Tipo', - 'activity_1' => ':user cadastrou o cliente :client', 'activity_2' => ':user arquivo o cliente :client', 'activity_3' => ':user removeu o cliente :client', @@ -868,18 +759,24 @@ return array( 'activity_27' => ':user restaurou o pagamento :payment', 'activity_28' => ':user restaurou o crédito :credit', 'activity_29' => ':contact aprovou o orçamento :quote', - + 'activity_30' => ':user criou :vendor', + 'activity_31' => ':user criou :vendor', + 'activity_32' => ':user criou :vendor', + 'activity_33' => ':user criou :vendor', + 'activity_34' => ':user criou a despesa :expense', + 'activity_35' => ':user criou :vendor', + 'activity_36' => ':user criou :vendor', + 'activity_37' => ':user criou :vendor', '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' => 'Condições Padrões das Faturas', - 'default_invoice_footer' => 'Rodapé Padrão das Faturas', + 'default_invoice_terms' => 'Definir condições padrões da fatura', + 'default_invoice_footer' => 'Definir padrão', 'quote_footer' => 'Rodapé do Orçamento', 'free' => 'Grátis', - 'quote_is_approved' => 'Orçamento aprovado.', 'apply_credit' => 'Aplicar Crédito', 'system_settings' => 'Configurações do Sistema', @@ -897,7 +794,6 @@ return array( 'restored_recurring_invoice' => 'Fatura Recorrente restaurada', 'archived' => 'Arquivado', 'untitled_account' => 'Empresa Sem Nome', - 'before' => 'Antes', 'after' => 'Depois', 'reset_terms_help' => 'Resetar para as condições padrões', @@ -906,17 +802,7 @@ return array( 'user' => 'Usuário', 'country' => 'País', 'include' => 'Incluir', - 'logo_too_large' => 'Sua logo tem :size, para uma melhor performance sugerimos que este tamanho não ultrapasse 200KB', - 'email_errors' => [ - 'inactive_client' => 'Não é possível enviar e-mails para clientes intativos', - 'inactive_contact' => 'Não é possível enviar e-mails para contatos intativos', - 'inactive_invoice' => 'Não é possível enviar e-mails em faturas intativas', - 'user_unregistered' => 'Registre sua conta para enviar e-mails', - 'user_unconfirmed' => 'Confirme sua conta para enviar e-mails', - 'invalid_contact_email' => 'E-mail do contato inválido', - ], - 'import_freshbooks' => 'Importar de FreshBooks', 'import_data' => 'Importar Dados', 'source' => 'Fonte', @@ -926,7 +812,6 @@ return array( 'task_file' => 'Arquivo de Tarefas', 'no_mapper' => 'Mapeamento inválido', 'invalid_csv_header' => 'CSV com cabeçalho inválido', - 'client_portal' => 'Portal do Cliente', 'admin' => 'Admin', 'disabled' => 'Desabilitado', @@ -935,11 +820,9 @@ return array( 'invoice_will_create' => 'cliente será criado', 'invoices_will_create' => 'faturas serão criadas', 'failed_to_import' => 'A importação dos seguintes registros falhou', - 'publishable_key' => 'Chave Publicável', 'secret_key' => 'Chave Secreta', 'missing_publishable_key' => 'Defina o sua chave publicável do Stripe para um processo de pagamento melhorado', - 'email_design' => 'Template de E-mail', 'due_by' => 'Vencido em :date', 'enable_email_markup' => 'Habilitar Marcação', @@ -951,7 +834,6 @@ return array( 'plain' => 'Plano', 'light' => 'Claro', 'dark' => 'Escuro', - 'industry_help' => 'Usado para fornecer comparações contra as médias das empresas de tamanho e indústria similar.', 'subdomain_help' => 'Personalizar o link da fatura ou exibir a fatura em seu próprio site.', 'invoice_number_help' => 'Especifique um prefixo ou usar um padrão personalizado para definir dinamicamente o número da fatura.', @@ -960,8 +842,6 @@ return array( 'custom_account_fields_helps' => 'Adicionar um rótulo e um valor para a seção detalhes da empresa do PDF.', 'custom_invoice_fields_helps' => 'Adicionar uma entrada de texto na página Criar/Editar Fatura e exibir no PDF.', 'custom_invoice_charges_helps' => 'Adicionar uma entrada de texto na página Criar/Editar Fatura e incluir nos subtotais da fatura.', - 'color_help' => 'Nota: A cor primária também é utilizada nos projetos do portal do cliente e-mail personalizado.', - 'token_expired' => 'Token de acesso expirado. Tente novamente!', 'invoice_link' => 'Link da Fatura', 'button_confirmation_message' => 'Clique para confirmar seu endereço de e-mail.', @@ -970,7 +850,6 @@ return array( 'created_invoices' => ':count fatura(s) criadas com sucesso', 'next_invoice_number' => 'O número da próxima fatura será :number.', 'next_quote_number' => 'O número do próximo orçamento será :number.', - 'days_before' => 'dias antes', 'days_after' => 'dias depois', 'field_due_date' => 'data de vencimento', @@ -978,11 +857,7 @@ return array( 'schedule' => 'Agendamento', 'email_designs' => 'Design de E-mails', 'assigned_when_sent' => 'Assinar quando enviar', - - 'white_label_custom_css' => ':link apenas $'.WHITE_LABEL_PRICE.' para permitir um estilo personalizado e apoiar o nosso projecto.', 'white_label_purchase_link' => 'Adquira uma licença white label', - - // Expense / vendor 'expense' => 'Despesa', 'expenses' => 'Despesas', 'new_expense' => 'Adicionar Despesa', @@ -999,8 +874,6 @@ return array( 'archived_expense' => 'Despesa arquivada com sucesso', 'deleted_expenses' => 'Despesas excluídas com sucesso', 'archived_expenses' => 'Despesas arquivada com sucesso', - - // Expenses 'expense_amount' => 'Total de Despesas', 'expense_balance' => 'Saldo de Despesas', 'expense_date' => 'Data da Despesa', @@ -1025,15 +898,11 @@ return array( 'expense_error_multiple_clients' => 'Despesas não podem pertencer a clientes diferentes', 'expense_error_invoiced' => 'Despeja já faturada', 'convert_currency' => 'Converter moeda', - - // Payment terms 'num_days' => 'Número de dias', 'create_payment_term' => 'Criar Termo de Pagamento', 'edit_payment_terms' => 'Editar Termos de Pagamento', 'edit_payment_term' => 'Editar Termo de Pagamento', 'archive_payment_term' => 'Arquivar Termo de Pagamento', - - // recurring due dates 'recurring_due_dates' => 'Data de Vencimento das Faturas Recorrentes', 'recurring_due_date_help' => 'Definir automaticamente a data de vencimento da fatura.
Faturas em um ciclo mensal ou anual com vencimento anterior ou na data em que são criadas serão faturadas para o próximo mês. Faturas com vencimento no dia 29 ou 30 nos meses que não tem esse dia será faturada no último dia do mês..
@@ -1058,15 +927,11 @@ return array( 'thursday' => 'Quinta-Feira', 'friday' => 'Sexta-Feira', 'saturday' => 'Sábado', - - // Fonts 'header_font_id' => 'Fonte do Cabeçalho', 'body_font_id' => 'Fonte dos Textos', 'color_font_help' => 'Nota: A cor primária também é utilizada nos projetos do portal do cliente e-mail personalizado.', - 'live_preview' => 'Preview', 'invalid_mail_config' => 'Falha ao enviar e-mail, verifique as configurações.', - 'invoice_message_button' => 'Para visualizar sua fatura de :amount, clique no botão abaixo.', 'quote_message_button' => 'Para visualizar seu orçamento de :amount, clique no botão abaixo.', 'payment_message_button' => 'Obrigado pelo seu pagamento de :amount.', @@ -1083,7 +948,6 @@ return array( '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_accounts_help' => 'Conecte sua conta bancária para importar suas despesas e criar fornecedores. Suporte ao American Express e 400+ bancos americanos.', 'bank_password_help' => 'Nota: sua senha é transferida de forma segura e não será armazenada em nossos servidores.', 'bank_password_warning' => 'Atenção: sua senha será transferida de forma não segura, considere habilitar HTTPS.', 'username' => 'Usuário', @@ -1097,7 +961,6 @@ return array( 'validate' => 'Validado', 'info' => 'Info', '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 seja habilitado o HTTPS em 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 coincide com a moeda nesta despesa.', @@ -1118,7 +981,28 @@ return array( 'trial_call_to_action' => 'Iniciar período de testes', 'trial_success' => 'Duas semanas de testes foi habilitado com sucesso', 'overdue' => 'Vencido', - 'white_label_text' => 'Adquira UM ano de licença white label por $'.WHITE_LABEL_PRICE.' para remover a marca Invoice Ninja do portal do cliente e ajudar nosso projeto.', + + + 'white_label_text' => 'Adquira UM ano de licença white label por $:price para remover a marca Invoice Ninja do portal do cliente e ajudar nosso projeto.', + 'user_email_footer' => 'Para ajustar suas configurações de notificações de e-mail acesse :link', + 'reset_password_footer' => 'Se você não solicitou a redefinição de sua senha por favor envie um e-mail para o nosso suporte: :email', + 'limit_users' => 'Desculpe, isto irá exceder o limite de :limit usuários', + 'more_designs_self_host_header' => 'Obtenha mais 6 modelos de faturas por apenas $:price', + 'old_browser' => 'Utilize um navegador atualizado', + 'white_label_custom_css' => ':link apenas $:price para permitir um estilo personalizado e apoiar o nosso projecto.', + 'bank_accounts_help' => 'Conecte sua conta bancária para importar suas despesas e criar fornecedores. Suporte ao American Express e 400+ bancos americanos.', + + 'pro_plan_remove_logo' => ':link para remover a logo do Invoice Ninja contratando o plano profissional', + 'pro_plan_remove_logo_link' => 'Clique aqui', + 'invitation_status_sent' => 'E-mail Enviado', + 'invitation_status_opened' => 'E-mail Aberto', + 'invitation_status_viewed' => 'E-mail Visualizado', + 'email_error_inactive_client' => 'Não é possível enviar e-mails para clientes intativos', + 'email_error_inactive_contact' => 'Não é possível enviar e-mails para contatos intativos', + 'email_error_inactive_invoice' => 'Não é possível enviar e-mails em faturas intativas', + 'email_error_user_unregistered' => 'Registre sua conta para enviar e-mails', + 'email_error_user_unconfirmed' => 'Confirme sua conta para enviar e-mails', + 'email_error_invalid_contact_email' => 'E-mail do contato inválido', 'navigation' => 'Navegação', 'list_invoices' => 'Listar Faturas', @@ -1141,22 +1025,20 @@ return array( 'custom_invoice_item_fields_help' => 'Adicionar um campo ao adicionar um ítem na fatura e exibir no PDF.', 'recurring_invoice_number' => 'Número da Fatura Recorrente', 'recurring_invoice_number_prefix_help' => 'Informe um prefixo para a numeração das faturas recorrentes. O valor padrão é \'R\'.', - 'enable_client_portal' => 'Painel', - 'enable_client_portal_help' => 'Mostrar/Ocultar o painel no portal do cliente.', // Client Passwords 'enable_portal_password'=>'Faturas protegidas por senha', 'enable_portal_password_help'=>'Permite definir uma senha para cada contato. Se uma senha for definida, o contato deverá informar sua senha antes de visualizar a fatura.', 'send_portal_password'=>'Gerar senha automaticamente', 'send_portal_password_help'=>'Se uma senha não for definida, uma senha será gerada e enviada juntamente com a primeira fatura.', - + 'expired' => 'Expireda', 'invalid_card_number' => 'Cartão de Crédito inválido.', 'invalid_expiry' => 'Data para expirar não é valida.', 'invalid_cvv' => 'O código CVV não é válido.', 'cost' => 'Custo', 'create_invoice_for_sample' => 'Nota: cria sua primeira fatura para visualizar aqui.', - + // User Permissions 'owner' => 'Proprietário', 'administrator' => 'Administrador', @@ -1174,8 +1056,8 @@ return array( 'create_all_help' => 'Permite o usuário criar e alterar todos os regitros', 'view_all_help' => 'Permite usuario visualizar regitros que ele não criou', 'edit_all_help' => 'Permite usuario editar regitros que ele não criou', - 'view_payment' => 'Visualizar ', - + 'view_payment' => 'Visualizar ', + 'january' => 'Janeiro', 'february' => 'Fevereiro', 'march' => 'Março', @@ -1201,30 +1083,28 @@ return array( 'document_email_attachment' => 'Attach Documents', 'download_documents' => 'Download Documents (:size)', 'documents_from_expenses' => 'From Expenses:', - 'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage - 'DefaultMessage' => 'Drop files or click to upload', - 'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.', - 'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.', - 'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', - 'InvalidFileType' => 'You can\'t upload files of this type.', - 'ResponseError' => 'Server responded with {{statusCode}} code.', - 'CancelUpload' => 'Cancel upload', - 'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?', - 'RemoveFile' => 'Remove file', - ), + 'dropzone_default_message' => 'Drop files or click to upload', + 'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.', + 'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.', + 'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', + 'dropzone_invalid_file_type' => 'You can\'t upload files of this type.', + 'dropzone_response_error' => 'Server responded with {{statusCode}} code.', + 'dropzone_cancel_upload' => 'Cancel upload', + 'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?', + 'dropzone_remove_file' => 'Remove file', 'documents' => 'Documents', 'document_date' => 'Document Date', 'document_size' => 'Size', - 'enable_client_portal' => 'Client Portal', - 'enable_client_portal_help' => 'Show/hide the client portal.', + 'enable_client_portal' => 'Painel', + 'enable_client_portal_help' => 'Mostrar/Ocultar o painel no portal do cliente.', 'enable_client_portal_dashboard' => 'Dashboard', 'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.', - + // Plans - 'account_management' => 'Account Management', + 'account_management' => 'Gerenciamento da Conta', 'plan_status' => 'Plan Status', - + 'plan_upgrade' => 'Upgrade', 'plan_change' => 'Change Plan', 'pending_change_to' => 'Changes To', @@ -1254,9 +1134,9 @@ return array( 'plan_paid' => 'Term Started', 'plan_started' => 'Plan Started', 'plan_expires' => 'Plan Expires', - + 'white_label_button' => 'White Label', - + 'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', 'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.', 'enterprise_plan_product' => 'Enterprise Plan', @@ -1267,14 +1147,214 @@ return array( 'plan_pending_monthly' => 'Will switch to monthly on :date', 'plan_refunded' => 'A refund has been issued.', - 'live_preview' => 'Live Preview', + 'live_preview' => 'Preview', 'page_size' => 'Page Size', 'live_preview_disabled' => 'Live preview has been disabled to support selected font', 'invoice_number_padding' => 'Padding', 'preview' => 'Preview', 'list_vendors' => 'List Vendors', 'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.', - 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.', + 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments, :link to see the full list of features.', 'return_to_app' => 'Return to app', - -); \ No newline at end of file + + + // Payment updates + 'refund_payment' => 'Reembolsar Pagamento', + 'refund_max' => 'Máx:', + 'refund' => 'Reembolsar', + 'are_you_sure_refund' => 'Reembolsar pagamentos selecionados?', + 'status_pending' => 'Pendente', + 'status_completed' => 'Completo', + 'status_failed' => 'Falhou', + 'status_partially_refunded' => 'Parcialmente Reembolsado', + 'status_partially_refunded_amount' => ':amount Reembolsado', + 'status_refunded' => 'Reembolsado', + 'status_voided' => 'Cancelado', + 'refunded_payment' => 'Pagamento Reembolsado', + 'activity_39' => ':user cancelou um pagamento de :payment_amount (:payment)', + 'activity_40' => ':user reembolsou :adjustment de um pagamento de :payment_amount (:payment)', + 'card_expiration' => 'Venc: :expires', + + 'card_creditcardother' => 'Desconhecido', + 'card_americanexpress' => 'American Express', + 'card_carteblanche' => 'Carte Blanche', + 'card_unionpay' => 'UnionPay', + 'card_diners' => 'Diners Club', + 'card_discover' => 'Discover', + 'card_jcb' => 'JCB', + 'card_laser' => 'Laser', + 'card_maestro' => 'Maestro', + 'card_mastercard' => 'MasterCard', + 'card_solo' => 'Solo', + 'card_switch' => 'Switch', + 'card_visacard' => 'Visa', + 'card_ach' => 'ACH', + + 'payment_type_stripe' => 'Stripe', + 'ach' => 'ACH', + 'enable_ach' => 'Habilitar ACH', + 'stripe_ach_help' => 'ACH também deve estar habilitado no Stripe.', + 'ach_disabled' => 'Another gateway is already configured for direct debit.', + + 'plaid' => 'Plaid', + 'client_id' => 'Cód Cliente', + 'secret' => 'Chave', + 'public_key' => 'Chave Pública', + 'plaid_optional' => '(opcional)', + 'plaid_environment_help' => 'Quando uma chave de teste do Stripe é informada, um ambiente de desenvolvimento (tartan) do Plaid será utilizado.', + 'other_providers' => 'Outros Provedores', + 'country_not_supported' => 'Este país não é suportado.', + 'invalid_routing_number' => 'O número de roteamento é inválido.', + 'invalid_account_number' => 'O número da conta e inválido.', + 'account_number_mismatch' => 'Números da conta não combinam.', + 'missing_account_holder_type' => 'Por favor, selecione uma conta ou empresa individual.', + 'missing_account_holder_name' => 'Por favor, informe o nome do proprietário da conta.', + 'routing_number' => 'Número de Roteamento', + 'confirm_account_number' => 'Confirmar Número da Conta', + 'individual_account' => 'Conta Individual', + 'company_account' => 'Conta Empresarial', + 'account_holder_name' => 'Nome do Proprietário da Conta', + 'add_account' => 'Adicionar Conta', + 'payment_methods' => 'Formas de Pagamentos', + 'complete_verification' => 'Verificação Completa', + 'verification_amount1' => 'Total 1', + 'verification_amount2' => 'Total 2', + 'payment_method_verified' => 'Verificação completa com sucesso', + 'verification_failed' => 'Verificação falhou', + 'remove_payment_method' => 'Remover método de Pagamento', + 'confirm_remove_payment_method' => 'Deseja remover este método de pagamento?', + 'remove' => 'Remover', + 'payment_method_removed' => 'Método de pagamento removido.', + 'bank_account_verification_help' => 'Nós fizemos dois depósitos na sua conta com a descrição "VERIFICATION". Esses depósitos podem levar 1-2 dias úteis para aprecer no seu extrato. Por favor informe os valores de cada um deles abaixo.', + 'bank_account_verification_next_steps' => 'Nós fizemos dois depósitos na sua conta com a descrição "VERIFICATION". Esses depósitos podem levar 1-2 dias úteis para aprecer no seu extrato. +Quando tiver os valores dos depósitos, volte a esta pagina e complete a verificação da sua conta.', + 'unknown_bank' => 'Banco Desconhecido', + 'ach_verification_delay_help' => 'Você poderá utilizar esta conta após a completar a verificação. A verficação normalmente leva 1-2 dias.', + 'add_credit_card' => 'Adicionar Cartão de Crédito', + 'payment_method_added' => 'Médodo de pagamento adicionado.', + 'use_for_auto_bill' => 'Usar para Cobrança Automática', + 'used_for_auto_bill' => 'Método de Pagamento Autobill', + 'payment_method_set_as_default' => 'Definir método de pagamento Autobill.', + 'activity_41' => ':payment_amount payment (:payment) falhou', + 'webhook_url' => 'Webhook URL', + 'stripe_webhook_help' => 'Você deve :link.', + 'stripe_webhook_help_link_text' => 'adicionar esta URL como um endpoint no Stripe', + 'payment_method_error' => 'Ouve um erro ao adicionar seu método de pagamento. Tente novamente.', + 'notification_invoice_payment_failed_subject' => 'Pagamento falhou para a Fatura :invoice', + 'notification_invoice_payment_failed' => 'U pagamento feito pelo Cliente :client para a Fatura :invoice falhou. O pagamento foi marcado como "erro" e :amount foi adicionado ao saldo do cliente.', + 'link_with_plaid' => 'Lincar Conta Instantâneamente com Plaid', + 'link_manually' => 'Linkar Manualmente', + 'secured_by_plaid' => 'Assegurado por Plaid', + 'plaid_linked_status' => 'Sua conta bancária no :bank', + 'add_payment_method' => 'Adicionar Método de Pagamento', + 'account_holder_type' => 'Tipo do Proprietário da Conta', + 'ach_authorization' => 'I authorize :company to use my bank account for future payments and, if necessary, electronically credit my account to correct erroneous debits. I understand that I may cancel this authorization at any time by removing the payment method or by contacting :email.', + 'ach_authorization_required' => 'Você deve permitir transações ACH.', + 'off' => 'Off', + 'opt_in' => 'Opt-in', + 'opt_out' => 'Opt-out', + 'always' => 'Sempre', + 'opted_out' => 'Optado por', + 'opted_in' => 'Optou', + 'manage_auto_bill' => 'Gerenciar Cobrança Automática', + 'enabled' => 'Habilitado', + 'paypal' => 'PayPal', + 'braintree_enable_paypal' => 'Habilitar pagamentos do PayPal através do BrainTree', + 'braintree_paypal_disabled_help' => 'O gateway PayPal está processando pagamentos do PayPal', + 'braintree_paypal_help' => 'Você deve também :link.', + 'braintree_paypal_help_link_text' => 'linkar o PayPal à sua conta do BrainTree', + 'token_billing_braintree_paypal' => 'Salvar detalhes do pagamento', + 'add_paypal_account' => 'Adicionar Conta do PayPal', + + + 'no_payment_method_specified' => 'Nenhum método de pagamento definido', + 'chart_type' => 'Tipo de Gráfico', + 'format' => 'Formato', + 'import_ofx' => 'Importar OFX', + 'ofx_file' => 'Arquivo OFX', + 'ofx_parse_failed' => 'Falha ao ler o arquivo OFX', + + // WePay + 'wepay' => 'WePay', + 'sign_up_with_wepay' => 'Acessar com WePay', + 'use_another_provider' => 'Usar outro provedor', + 'company_name' => 'Nome da Empresa', + 'wepay_company_name_help' => 'Isso vai aparecer na fatura do cartão de crédito do cliente.', + 'wepay_description_help' => 'O objetivo desta conta.', + 'wepay_tos_agree' => 'Concordo com :link.', + 'wepay_tos_link_text' => 'Termos de Serviço do WePay', + 'resend_confirmation_email' => 'Reenviar e-Mail de Confirmação', + 'manage_wepay_account' => 'Gerenciar Conta WePay', + 'action_required' => 'Ação Obrigatória', + 'finish_setup' => 'Finalizar Configuração', + 'created_wepay_confirmation_required' => 'Por favor verifique seu e-mail e confirme seu endereço de e-mail com o WePay', + 'switch_to_wepay' => 'Mudar para WePay', + 'switch' => 'Mudar', + 'restore_account_gateway' => 'Restaurar Gateway', + 'restored_account_gateway' => 'Gateway restaurado com sucesso', + 'united_states' => 'Estados Unidos', + 'canada' => 'Canadá', + 'accept_debit_cards' => 'Aceitar Cartão de Débito', + 'debit_cards' => 'Cartões de Débito', + + 'warn_start_date_changed' => 'The next invoice will be sent on the new start date.', + 'original_start_date' => 'Original start date', + 'new_start_date' => 'New start date', + 'security' => 'Security', + 'see_whats_new' => 'See what\'s new in v:version', + 'wait_for_upload' => 'Please wait for the document upload to complete.', + 'upgrade_for_permissions' => 'Upgrade to our Enterprise plan to enable permissions.', + 'enable_second_tax_rate' => 'Enable specifying a second tax rate', + 'payment_file' => 'Payment File', + 'expense_file' => 'Expense File', + 'product_file' => 'Product File', + 'import_products' => 'Import Products', + 'products_will_create' => 'products will be created.', + 'product_key' => 'Product', + 'created_products' => 'Successfully created :count product(s)', + 'export_help' => 'Use JSON if you plan to import the data into Invoice Ninja.', + 'JSON_file' => 'JSON File', + + 'view_dashboard' => 'View Dashboard', + 'client_session_expired' => 'Session Expired', + 'client_session_expired_message' => 'Your session has expired. Please click the link in your email again.', + + 'auto_bill_notification' => 'This invoice will automatically be billed to your :payment_method on file on :due_date.', + 'auto_bill_payment_method_bank_transfer' => 'bank account', + 'auto_bill_payment_method_credit_card' => 'credit card', + 'auto_bill_payment_method_paypal' => 'PayPal account', + 'auto_bill_notification_placeholder' => 'This invoice will automatically be billed to your credit card on file on the due date.', + 'payment_settings' => 'Payment Settings', + + 'on_send_date' => 'On send date', + 'on_due_date' => 'On due date', + 'auto_bill_ach_date_help' => 'ACH auto bill will always happen on the due date', + 'warn_change_auto_bill' => 'Due to NACHA rules, changes to this invoice may prevent ACH auto bill.', + + 'bank_account' => 'Bank Account', + 'payment_processed_through_wepay' => 'ACH payments will be processed using WePay.', + 'wepay_payment_tos_agree' => 'I agree to the WePay :terms and :privacy_policy.', + 'privacy_policy' => 'Privacy Policy', + 'wepay_payment_tos_agree_required' => 'You must agree to the WePay Terms of Service and Privacy Policy.', + 'payment_settings_supported_gateways' => 'These options are supported by the WePay, Stripe, and Braintree gateways.', + 'ach_email_prompt' => 'Please enter your email address:', + 'verification_pending' => 'Verification Pending', + + 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', + 'credit_card' => 'Credit Card', + 'bank_transfer' => 'Bank Transfer', + 'no_transaction_reference' => 'We did not recieve a payment transaction reference from the gateway.', + 'use_bank_on_file' => 'Use Bank on File', + 'auto_bill_email_message' => 'This invoice will automatically be billed to the payment method on file on the due date.', + 'bitcoin' => 'Bitcoin', + 'added_on' => 'Added :date', + 'failed_remove_payment_method' => 'Failed to remove the payment method', + 'gateway_exists' => 'This gateway already exists', + 'manual_entry' => 'Manual entry', + +); + +return $LANG; + +?> diff --git a/resources/lang/sv/texts.php b/resources/lang/sv/texts.php index 634a5bbe15..117870247e 100644 --- a/resources/lang/sv/texts.php +++ b/resources/lang/sv/texts.php @@ -1,8 +1,6 @@ 'Organisation', 'name' => 'Namn', 'website' => 'Hemsida', @@ -25,8 +23,6 @@ return array( 'size_id' => 'Storlek', 'industry_id' => 'Branch', 'private_notes' => 'Privata anteckningar', - - // invoice 'invoice' => 'Faktura', 'client' => 'Kund', 'invoice_date' => 'Fakturadatum', @@ -50,7 +46,6 @@ return array( 'invoice_design_id' => 'Utseende', 'terms' => 'Villkor', 'your_invoice' => 'Din faktura', - 'remove_contact' => 'Ta bort kontakt', 'add_contact' => 'Lägg till kontakt', 'create_new_client' => 'Skapa ny kund', @@ -74,8 +69,6 @@ return array( 'settings' => 'Inställningar', 'enable_invoice_tax' => 'Slå på moms per faktura', 'enable_line_item_tax' => 'Slå på moms per rad', - - // navigation 'dashboard' => 'Översikt', 'clients' => 'Kunder', 'invoices' => 'Fakturor', @@ -100,8 +93,6 @@ return array( 'provide_email' => 'Du måste ange en giltig e-postadress', 'powered_by' => 'Powered by', 'no_items' => 'Tomt', - - // recurring invoices 'recurring_invoices' => 'Återkommande fakturor', 'recurring_help' => 'Skicka automatiskt fakturor till kund varje vecka, månad, kvartal eller årsvis.
Använd :MONTH, :QUARTER eller :YEAR för dynamiskt datum. Enkla formler fungerar också, t.ex. :MONTH-1
@@ -111,8 +102,6 @@ return array(We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
-To access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum.
', - +You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', 'invoice_due_date' => 'Due Date', 'quote_due_date' => 'Valid Until', 'valid_until' => 'Valid Until', @@ -760,15 +667,12 @@ return array( 'status_partial' => 'Partial', 'status_paid' => 'Paid', 'show_line_item_tax' => 'Display line item taxes inline', - 'iframe_url' => 'Website', 'iframe_url_help1' => 'Copy the following code to a page on your site.', 'iframe_url_help2' => 'You can test the feature by clicking \'View as recipient\' for an invoice.', - 'auto_bill' => 'Auto Bill', 'military_time' => '24 Hour Time', 'last_sent' => 'Last Sent', - 'reminder_emails' => 'Reminder Emails', 'templates_and_reminders' => 'Templates & Reminders', 'subject' => 'Subject', @@ -780,15 +684,12 @@ return array( 'reminder_subject' => 'Reminder: Invoice :invoice from :account', 'reset' => 'Reset', 'invoice_not_found' => 'The requested invoice is not available', - 'referral_program' => 'Referral Program', 'referral_code' => 'Referral Code', 'last_sent_on' => 'Last sent on :date', - 'page_expire' => 'This page will expire soon, :click_here to keep working', 'upcoming_quotes' => 'Upcoming Quotes', 'expired_quotes' => 'Expired Quotes', - 'sign_up_using' => 'Sign up using', 'invalid_credentials' => 'These credentials do not match our records', 'show_all_options' => 'Show all options', @@ -797,17 +698,10 @@ return array( 'disable' => 'Disable', 'invoice_quote_number' => 'Invoice and Quote Numbers', 'invoice_charges' => 'Invoice Charges', - - 'invitation_status' => [ - 'sent' => 'Email Sent', - 'opened' => 'Email Openend', - 'viewed' => 'Invoice Viewed', - ], 'notification_invoice_bounced' => 'We were unable to deliver Invoice :invoice to :contact.', 'notification_invoice_bounced_subject' => 'Unable to deliver Invoice :invoice', 'notification_quote_bounced' => 'We were unable to deliver Quote :invoice to :contact.', 'notification_quote_bounced_subject' => 'Unable to deliver Quote :invoice', - 'custom_invoice_link' => 'Custom Invoice Link', 'total_invoiced' => 'Total Invoiced', 'open_balance' => 'Open Balance', @@ -815,14 +709,12 @@ return array( 'basic_settings' => 'Basic Settings', 'pro' => 'Pro', 'gateways' => 'Payment Gateways', - 'next_send_on' => 'Send Next: :date', 'no_longer_running' => 'This invoice is not scheduled to run', 'general_settings' => 'General Settings', 'customize' => 'Customize', 'oneclick_login_help' => 'Connect an account to login without a password', 'referral_code_help' => 'Earn money by sharing our app online', - 'enable_with_stripe' => 'Enable | Requires Stripe', 'tax_settings' => 'Tax Settings', 'create_tax_rate' => 'Add Tax Rate', @@ -843,7 +735,6 @@ return array( 'invoice_counter' => 'Invoice Counter', 'quote_counter' => 'Quote Counter', 'type' => 'Type', - 'activity_1' => ':user created client :client', 'activity_2' => ':user archived client :client', 'activity_3' => ':user deleted client :client', @@ -873,18 +764,24 @@ return array( 'activity_27' => ':user restored payment :payment', 'activity_28' => ':user restored :credit credit', 'activity_29' => ':contact approved quote :quote', - + 'activity_30' => ':user created :vendor', + 'activity_31' => ':user created :vendor', + 'activity_32' => ':user created :vendor', + 'activity_33' => ':user created :vendor', + 'activity_34' => ':user created expense :expense', + 'activity_35' => ':user created :vendor', + 'activity_36' => ':user created :vendor', + 'activity_37' => ':user created :vendor', 'payment' => 'Payment', 'system' => 'System', 'signature' => 'Email Signature', 'default_messages' => 'Default Messages', 'quote_terms' => 'Quote Terms', 'default_quote_terms' => 'Default Quote Terms', - 'default_invoice_terms' => 'Default Invoice Terms', - 'default_invoice_footer' => 'Default Invoice Footer', + 'default_invoice_terms' => 'Ange standard fakturavillkor', + 'default_invoice_footer' => 'Ange som standard faktura sidfot', 'quote_footer' => 'Quote Footer', 'free' => 'Free', - 'quote_is_approved' => 'This quote is approved', 'apply_credit' => 'Apply Credit', 'system_settings' => 'System Settings', @@ -902,7 +799,6 @@ return array( 'restored_recurring_invoice' => 'Successfully restored recurring invoice', 'archived' => 'Archived', 'untitled_account' => 'Untitled Company', - 'before' => 'Before', 'after' => 'After', 'reset_terms_help' => 'Reset to the default account terms', @@ -911,7 +807,6 @@ return array( 'user' => 'User', 'country' => 'Country', 'include' => 'Include', - 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', 'import_freshbooks' => 'Import From FreshBooks', 'import_data' => 'Import Data', @@ -922,16 +817,6 @@ return array( 'task_file' => 'Task File', 'no_mapper' => 'No valid mapping for file', 'invalid_csv_header' => 'Invalid CSV Header', - - 'email_errors' => [ - 'inactive_client' => 'Emails can not be sent to inactive clients', - 'inactive_contact' => 'Emails can not be sent to inactive contacts', - 'inactive_invoice' => 'Emails can not be sent to inactive invoices', - 'user_unregistered' => 'Please register your account to send emails', - 'user_unconfirmed' => 'Please confirm your account to send emails', - 'invalid_contact_email' => 'Invalid contact email', - ], - 'client_portal' => 'Client Portal', 'admin' => 'Admin', 'disabled' => 'Disabled', @@ -940,11 +825,9 @@ return array( 'invoice_will_create' => 'client will be created', 'invoices_will_create' => 'invoices will be created', 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', - 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', - 'email_design' => 'Email Design', 'due_by' => 'Due by :date', 'enable_email_markup' => 'Enable Markup', @@ -956,7 +839,6 @@ return array( 'plain' => 'Plain', 'light' => 'Light', 'dark' => 'Dark', - 'industry_help' => 'Used to provide comparisons against the averages of companies of similar size and industry.', 'subdomain_help' => 'Customize the invoice link subdomain or display the invoice on your own website.', 'invoice_number_help' => 'Specify a prefix or use a custom pattern to dynamically set the invoice number.', @@ -965,8 +847,6 @@ return array( 'custom_account_fields_helps' => 'Add a label and value to the company details section of the PDF.', 'custom_invoice_fields_helps' => 'Add a text input to the invoice create/edit page and display the label and value on the PDF.', 'custom_invoice_charges_helps' => 'Add a text input to the invoice create/edit page and include the charge in the invoice subtotals.', - 'color_help' => 'Note: the primary color is also used in the client portal and custom email designs.', - 'token_expired' => 'Validation token was expired. Please try again.', 'invoice_link' => 'Invoice Link', 'button_confirmation_message' => 'Click to confirm your email address.', @@ -975,7 +855,6 @@ return array( 'created_invoices' => 'Successfully created :count invoice(s)', 'next_invoice_number' => 'The next invoice number is :number.', 'next_quote_number' => 'The next quote number is :number.', - 'days_before' => 'days before', 'days_after' => 'days after', 'field_due_date' => 'due date', @@ -983,11 +862,7 @@ return array( 'schedule' => 'Schedule', 'email_designs' => 'Email Designs', 'assigned_when_sent' => 'Assigned when sent', - - 'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.', 'white_label_purchase_link' => 'Purchase a white label license', - - // Expense / vendor 'expense' => 'Expense', 'expenses' => 'Expenses', 'new_expense' => 'Enter Expense', @@ -1004,8 +879,6 @@ return array( 'archived_expense' => 'Successfully archived expense', 'deleted_expenses' => 'Successfully deleted expenses', 'archived_expenses' => 'Successfully archived expenses', - - // Expenses 'expense_amount' => 'Expense Amount', 'expense_balance' => 'Expense Balance', 'expense_date' => 'Expense Date', @@ -1030,15 +903,11 @@ return array( 'expense_error_multiple_clients' => 'The expenses can\'t belong to different clients', 'expense_error_invoiced' => 'Expense has already been invoiced', 'convert_currency' => 'Convert currency', - - // Payment terms 'num_days' => 'Number of days', 'create_payment_term' => 'Create Payment Term', 'edit_payment_terms' => 'Edit Payment Term', 'edit_payment_term' => 'Edit Payment Term', 'archive_payment_term' => 'Archive Payment Term', - - // recurring due dates 'recurring_due_dates' => 'Recurring Invoice Due Dates', 'recurring_due_date_help' => 'Automatically sets a due date for the invoice.
Invoices on a monthly or yearly cycle set to be due on or before the day they are created will be due the next month. Invoices set to be due on the 29th or 30th in months that don\'t have that day will be due the last day of the month.
@@ -1066,15 +935,11 @@ return array( 'thursday' => 'Thursday', 'friday' => 'Friday', 'saturday' => 'Saturday', - - // Fonts 'header_font_id' => 'Header Font', 'body_font_id' => 'Body Font', 'color_font_help' => 'Note: the primary color and fonts are also used in the client portal and custom email designs.', - 'live_preview' => 'Live Preview', 'invalid_mail_config' => 'Unable to send email, please check that the mail settings are correct.', - 'invoice_message_button' => 'To view your invoice for :amount, click the button below.', 'quote_message_button' => 'To view your quote for :amount, click the button below.', 'payment_message_button' => 'Thank you for your payment of :amount.', @@ -1091,7 +956,6 @@ return array( 'archived_bank_account' => 'Successfully archived bank account', 'created_bank_account' => 'Successfully created bank account', 'validate_bank_account' => 'Validate Bank Account', - 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', 'bank_password_help' => 'Note: your password is transmitted securely and never stored on our servers.', 'bank_password_warning' => 'Warning: your password may be transmitted in plain text, consider enabling HTTPS.', 'username' => 'Username', @@ -1105,7 +969,6 @@ return array( 'validate' => 'Validate', 'info' => 'Info', 'imported_expenses' => 'Successfully created :count_vendors vendor(s) and :count_expenses expense(s)', - 'iframe_url_help3' => 'Note: if you plan on accepting credit cards details we strongly recommend enabling HTTPS on your site.', 'expense_error_multiple_currencies' => 'The expenses can\'t have different currencies.', 'expense_error_mismatch_currencies' => 'The client\'s currency does not match the expense currency.', @@ -1126,7 +989,28 @@ return array( 'trial_call_to_action' => 'Start Free Trial', 'trial_success' => 'Successfully enabled two week free pro plan trial', 'overdue' => 'Overdue', - 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + + + 'white_label_text' => 'Purchase a ONE YEAR white label license for $:price to remove the Invoice Ninja branding from the client portal and help support our project.', + 'user_email_footer' => 'För att anpassa dina e-post notifieringar gå till :link', + 'reset_password_footer' => 'Om du inte begärt en återställning av ditt lösenord så var snäll och maila vår support: :email', + 'limit_users' => 'Ledsen, men du får skapa max :limit användare', + 'more_designs_self_host_header' => 'Få ytterliggare 6 fakturalayouter för bara $:price', + 'old_browser' => 'Please use a newer browser', + 'white_label_custom_css' => ':link for $:price to enable custom styling and help support our project.', + 'bank_accounts_help' => 'Connect a bank account to automatically import expenses and create vendors. Supports American Express and 400+ US banks.', + + 'pro_plan_remove_logo' => ':link för att ta bort Invoice Ninja loggan genom att uppgradera till Pro Plan', + 'pro_plan_remove_logo_link' => 'Klicka här', + 'invitation_status_sent' => 'Email Sent', + 'invitation_status_opened' => 'Email Openend', + 'invitation_status_viewed' => 'Invoice Viewed', + 'email_error_inactive_client' => 'Emails can not be sent to inactive clients', + 'email_error_inactive_contact' => 'Emails can not be sent to inactive contacts', + 'email_error_inactive_invoice' => 'Emails can not be sent to inactive invoices', + 'email_error_user_unregistered' => 'Please register your account to send emails', + 'email_error_user_unconfirmed' => 'Please confirm your account to send emails', + 'email_error_invalid_contact_email' => 'Invalid contact email', 'navigation' => 'Navigation', 'list_invoices' => 'List Invoices', @@ -1149,22 +1033,20 @@ return array( 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', 'recurring_invoice_number' => 'Recurring Invoice Number', 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', - 'enable_client_portal' => 'Dashboard', - 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', // Client Passwords 'enable_portal_password'=>'Password protect invoices', 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', 'send_portal_password'=>'Generate password automatically', 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', - + 'expired' => 'Expired', 'invalid_card_number' => 'The credit card number is not valid.', 'invalid_expiry' => 'The expiration date is not valid.', 'invalid_cvv' => 'The CVV is not valid.', 'cost' => 'Cost', 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', - + // User Permissions 'owner' => 'Owner', 'administrator' => 'Administrator', @@ -1182,8 +1064,8 @@ return array( 'create_all_help' => 'Allow user to create and modify records', 'view_all_help' => 'Allow user to view records they didn\'t create', 'edit_all_help' => 'Allow user to modify records they didn\'t create', - 'view_payment' => 'View Payment', - + 'view_payment' => 'View Payment', + 'january' => 'January', 'february' => 'February', 'march' => 'March', @@ -1209,30 +1091,28 @@ return array( 'document_email_attachment' => 'Attach Documents', 'download_documents' => 'Download Documents (:size)', 'documents_from_expenses' => 'From Expenses:', - 'dropzone' => array(// See http://www.dropzonejs.com/#config-dictDefaultMessage - 'DefaultMessage' => 'Drop files or click to upload', - 'FallbackMessage' => 'Your browser does not support drag\'n\'drop file uploads.', - 'FallbackText' => 'Please use the fallback form below to upload your files like in the olden days.', - 'FileTooBig' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', - 'InvalidFileType' => 'You can\'t upload files of this type.', - 'ResponseError' => 'Server responded with {{statusCode}} code.', - 'CancelUpload' => 'Cancel upload', - 'CancelUploadConfirmation' => 'Are you sure you want to cancel this upload?', - 'RemoveFile' => 'Remove file', - ), + 'dropzone_default_message' => 'Drop files or click to upload', + 'dropzone_fallback_message' => 'Your browser does not support drag\'n\'drop file uploads.', + 'dropzone_fallback_text' => 'Please use the fallback form below to upload your files like in the olden days.', + 'dropzone_file_too_big' => 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.', + 'dropzone_invalid_file_type' => 'You can\'t upload files of this type.', + 'dropzone_response_error' => 'Server responded with {{statusCode}} code.', + 'dropzone_cancel_upload' => 'Cancel upload', + 'dropzone_cancel_upload_confirmation' => 'Are you sure you want to cancel this upload?', + 'dropzone_remove_file' => 'Remove file', 'documents' => 'Documents', 'document_date' => 'Document Date', 'document_size' => 'Size', - 'enable_client_portal' => 'Client Portal', - 'enable_client_portal_help' => 'Show/hide the client portal.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', 'enable_client_portal_dashboard' => 'Dashboard', 'enable_client_portal_dashboard_help' => 'Show/hide the dashboard page in the client portal.', - + // Plans 'account_management' => 'Account Management', 'plan_status' => 'Plan Status', - + 'plan_upgrade' => 'Upgrade', 'plan_change' => 'Change Plan', 'pending_change_to' => 'Changes To', @@ -1262,9 +1142,9 @@ return array( 'plan_paid' => 'Term Started', 'plan_started' => 'Plan Started', 'plan_expires' => 'Plan Expires', - + 'white_label_button' => 'White Label', - + 'pro_plan_year_description' => 'One year enrollment in the Invoice Ninja Pro Plan.', 'pro_plan_month_description' => 'One month enrollment in the Invoice Ninja Pro Plan.', 'enterprise_plan_product' => 'Enterprise Plan', @@ -1282,7 +1162,207 @@ return array( 'preview' => 'Preview', 'list_vendors' => 'List Vendors', 'add_users_not_supported' => 'Upgrade to the Enterprise plan to add additional users to your account.', - 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments.', + 'enterprise_plan_features' => 'The Enterprise plan adds support for multiple users and file attachments, :link to see the full list of features.', 'return_to_app' => 'Return to app', - + + + // Payment updates + 'refund_payment' => 'Refund Payment', + 'refund_max' => 'Max:', + 'refund' => 'Refund', + 'are_you_sure_refund' => 'Refund selected payments?', + 'status_pending' => 'Pending', + 'status_completed' => 'Completed', + 'status_failed' => 'Failed', + 'status_partially_refunded' => 'Partially Refunded', + 'status_partially_refunded_amount' => ':amount Refunded', + 'status_refunded' => 'Refunded', + 'status_voided' => 'Cancelled', + 'refunded_payment' => 'Refunded Payment', + 'activity_39' => ':user cancelled a :payment_amount payment (:payment)', + 'activity_40' => ':user refunded :adjustment of a :payment_amount payment (:payment)', + 'card_expiration' => 'Exp: :expires', + + 'card_creditcardother' => 'Unknown', + 'card_americanexpress' => 'American Express', + 'card_carteblanche' => 'Carte Blanche', + 'card_unionpay' => 'UnionPay', + 'card_diners' => 'Diners Club', + 'card_discover' => 'Discover', + 'card_jcb' => 'JCB', + 'card_laser' => 'Laser', + 'card_maestro' => 'Maestro', + 'card_mastercard' => 'MasterCard', + 'card_solo' => 'Solo', + 'card_switch' => 'Switch', + 'card_visacard' => 'Visa', + 'card_ach' => 'ACH', + + 'payment_type_stripe' => 'Stripe', + 'ach' => 'ACH', + 'enable_ach' => 'Enable ACH', + 'stripe_ach_help' => 'ACH support must also be enabled at Stripe.', + 'ach_disabled' => 'Another gateway is already configured for direct debit.', + + 'plaid' => 'Plaid', + 'client_id' => 'Client Id', + 'secret' => 'Secret', + 'public_key' => 'Public Key', + 'plaid_optional' => '(optional)', + 'plaid_environment_help' => 'When a Stripe test key is given, Plaid\'s development environement (tartan) will be used.', + 'other_providers' => 'Other Providers', + 'country_not_supported' => 'That country is not supported.', + 'invalid_routing_number' => 'The routing number is not valid.', + 'invalid_account_number' => 'The account number is not valid.', + 'account_number_mismatch' => 'The account numbers do not match.', + 'missing_account_holder_type' => 'Please select an individual or company account.', + 'missing_account_holder_name' => 'Please enter the account holder\'s name.', + 'routing_number' => 'Routing Number', + 'confirm_account_number' => 'Confirm Account Number', + 'individual_account' => 'Individual Account', + 'company_account' => 'Company Account', + 'account_holder_name' => 'Account Holder Name', + 'add_account' => 'Add Account', + 'payment_methods' => 'Payment Methods', + 'complete_verification' => 'Complete Verification', + 'verification_amount1' => 'Amount 1', + 'verification_amount2' => 'Amount 2', + 'payment_method_verified' => 'Verification completed successfully', + 'verification_failed' => 'Verification Failed', + 'remove_payment_method' => 'Remove Payment Method', + 'confirm_remove_payment_method' => 'Are you sure you want to remove this payment method?', + 'remove' => 'Remove', + 'payment_method_removed' => 'Removed payment method.', + 'bank_account_verification_help' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. Please enter the amounts below.', + 'bank_account_verification_next_steps' => 'We have made two deposits into your account with the description "VERIFICATION". These deposits will take 1-2 business days to appear on your statement. + Once you have the amounts, come back to this payment methods page and click "Complete Verification" next to the account.', + 'unknown_bank' => 'Unknown Bank', + 'ach_verification_delay_help' => 'You will be able to use the account after completing verification. Verification usually takes 1-2 business days.', + 'add_credit_card' => 'Add Credit Card', + 'payment_method_added' => 'Added payment method.', + 'use_for_auto_bill' => 'Use For Autobill', + 'used_for_auto_bill' => 'Autobill Payment Method', + 'payment_method_set_as_default' => 'Set Autobill payment method.', + 'activity_41' => ':payment_amount payment (:payment) failed', + 'webhook_url' => 'Webhook URL', + 'stripe_webhook_help' => 'You must :link.', + 'stripe_webhook_help_link_text' => 'add this URL as an endpoint at Stripe', + 'payment_method_error' => 'There was an error adding your payment methd. Please try again later.', + 'notification_invoice_payment_failed_subject' => 'Payment failed for Invoice :invoice', + 'notification_invoice_payment_failed' => 'A payment made by client :client towards Invoice :invoice failed. The payment has been marked as failed and :amount has been added to the client\'s balance.', + 'link_with_plaid' => 'Link Account Instantly with Plaid', + 'link_manually' => 'Link Manually', + 'secured_by_plaid' => 'Secured by Plaid', + 'plaid_linked_status' => 'Your bank account at :bank', + 'add_payment_method' => 'Add Payment Method', + 'account_holder_type' => 'Account Holder Type', + 'ach_authorization' => 'I authorize :company to use my bank account for future payments and, if necessary, electronically credit my account to correct erroneous debits. I understand that I may cancel this authorization at any time by removing the payment method or by contacting :email.', + 'ach_authorization_required' => 'You must consent to ACH transactions.', + 'off' => 'Off', + 'opt_in' => 'Opt-in', + 'opt_out' => 'Opt-out', + 'always' => 'Always', + 'opted_out' => 'Opted out', + 'opted_in' => 'Opted in', + 'manage_auto_bill' => 'Manage Auto-bill', + 'enabled' => 'Enabled', + 'paypal' => 'PayPal', + 'braintree_enable_paypal' => 'Enable PayPal payments through BrainTree', + 'braintree_paypal_disabled_help' => 'The PayPal gateway is processing PayPal payments', + 'braintree_paypal_help' => 'You must also :link.', + 'braintree_paypal_help_link_text' => 'link PayPal to your BrainTree account', + 'token_billing_braintree_paypal' => 'Save payment details', + 'add_paypal_account' => 'Add PayPal Account', + + + 'no_payment_method_specified' => 'No payment method specified', + 'chart_type' => 'Chart Type', + 'format' => 'Format', + 'import_ofx' => 'Import OFX', + 'ofx_file' => 'OFX File', + 'ofx_parse_failed' => 'Failed to parse OFX file', + + // WePay + 'wepay' => 'WePay', + 'sign_up_with_wepay' => 'Sign up with WePay', + 'use_another_provider' => 'Use another provider', + 'company_name' => 'Company Name', + 'wepay_company_name_help' => 'This will appear on client\'s credit card statements.', + 'wepay_description_help' => 'The purpose of this account.', + 'wepay_tos_agree' => 'I agree to the :link.', + 'wepay_tos_link_text' => 'WePay Terms of Service', + 'resend_confirmation_email' => 'Resend Confirmation Email', + 'manage_wepay_account' => 'Manage WePay Account', + 'action_required' => 'Action Required', + 'finish_setup' => 'Finish Setup', + 'created_wepay_confirmation_required' => 'Please check your email and confirm your email address with WePay.', + 'switch_to_wepay' => 'Switch to WePay', + 'switch' => 'Switch', + 'restore_account_gateway' => 'Restore Gateway', + 'restored_account_gateway' => 'Successfully restored gateway', + 'united_states' => 'United States', + 'canada' => 'Canada', + 'accept_debit_cards' => 'Accept Debit Cards', + 'debit_cards' => 'Debit Cards', + + 'warn_start_date_changed' => 'The next invoice will be sent on the new start date.', + 'original_start_date' => 'Original start date', + 'new_start_date' => 'New start date', + 'security' => 'Security', + 'see_whats_new' => 'See what\'s new in v:version', + 'wait_for_upload' => 'Please wait for the document upload to complete.', + 'upgrade_for_permissions' => 'Upgrade to our Enterprise plan to enable permissions.', + 'enable_second_tax_rate' => 'Enable specifying a second tax rate', + 'payment_file' => 'Payment File', + 'expense_file' => 'Expense File', + 'product_file' => 'Product File', + 'import_products' => 'Import Products', + 'products_will_create' => 'products will be created.', + 'product_key' => 'Product', + 'created_products' => 'Successfully created :count product(s)', + 'export_help' => 'Use JSON if you plan to import the data into Invoice Ninja.', + 'JSON_file' => 'JSON File', + + 'view_dashboard' => 'View Dashboard', + 'client_session_expired' => 'Session Expired', + 'client_session_expired_message' => 'Your session has expired. Please click the link in your email again.', + + 'auto_bill_notification' => 'This invoice will automatically be billed to your :payment_method on file on :due_date.', + 'auto_bill_payment_method_bank_transfer' => 'bank account', + 'auto_bill_payment_method_credit_card' => 'credit card', + 'auto_bill_payment_method_paypal' => 'PayPal account', + 'auto_bill_notification_placeholder' => 'This invoice will automatically be billed to your credit card on file on the due date.', + 'payment_settings' => 'Payment Settings', + + 'on_send_date' => 'On send date', + 'on_due_date' => 'On due date', + 'auto_bill_ach_date_help' => 'ACH auto bill will always happen on the due date', + 'warn_change_auto_bill' => 'Due to NACHA rules, changes to this invoice may prevent ACH auto bill.', + + 'bank_account' => 'Bank Account', + 'payment_processed_through_wepay' => 'ACH payments will be processed using WePay.', + 'wepay_payment_tos_agree' => 'I agree to the WePay :terms and :privacy_policy.', + 'privacy_policy' => 'Privacy Policy', + 'wepay_payment_tos_agree_required' => 'You must agree to the WePay Terms of Service and Privacy Policy.', + 'payment_settings_supported_gateways' => 'These options are supported by the WePay, Stripe, and Braintree gateways.', + 'ach_email_prompt' => 'Please enter your email address:', + 'verification_pending' => 'Verification Pending', + + 'update_font_cache' => 'Please force refresh the page to update the font cache.', + 'more_options' => 'More options', + 'credit_card' => 'Credit Card', + 'bank_transfer' => 'Bank Transfer', + 'no_transaction_reference' => 'We did not recieve a payment transaction reference from the gateway.', + 'use_bank_on_file' => 'Use Bank on File', + 'auto_bill_email_message' => 'This invoice will automatically be billed to the payment method on file on the due date.', + 'bitcoin' => 'Bitcoin', + 'added_on' => 'Added :date', + 'failed_remove_payment_method' => 'Failed to remove the payment method', + 'gateway_exists' => 'This gateway already exists', + 'manual_entry' => 'Manual entry', + ); + +return $LANG; + +?> diff --git a/resources/lang/th/auth.php b/resources/lang/th/auth.php new file mode 100644 index 0000000000..ae2426c4cd --- /dev/null +++ b/resources/lang/th/auth.php @@ -0,0 +1,19 @@ + 'ข้อมูลที่ใช้ในการยืนยันตัวตนไม่ถูกต้อง', + 'throttle' => 'คุณได้พยายามเข้าระบบหลายครั้งเกินไป กรุณาลองใหม่ใน :seconds วินาทีข้างหน้า.', + +]; diff --git a/resources/lang/th/pagination.php b/resources/lang/th/pagination.php new file mode 100644 index 0000000000..1e3738f251 --- /dev/null +++ b/resources/lang/th/pagination.php @@ -0,0 +1,19 @@ + '« ก่อนหน้า', + 'next' => 'ถัดไป »', + +]; diff --git a/resources/lang/th/passwords.php b/resources/lang/th/passwords.php new file mode 100644 index 0000000000..098ff8228e --- /dev/null +++ b/resources/lang/th/passwords.php @@ -0,0 +1,22 @@ + 'รหัสผ่านต้องมีความยาวอย่างน้อยหกตัวอักษรและต้องตรงกับช่องยืนยันรหัสผ่าน', + 'reset' => 'ทำการตั้งค่ารหัสผ่านใหม่แล้ว', + 'sent' => 'ส่งเครื่องช่วยเตือนความจำรหัสผ่านแล้ว!', + 'token' => 'ชุดรหัสสำหรับการเปลี่ยนรหัสผ่านไม่ถูกต้อง', + 'user' => 'ไม่พบผู้ใช้งานที่ตรงกับอีเมล์นี้', + +]; diff --git a/resources/lang/th/texts.php b/resources/lang/th/texts.php new file mode 100644 index 0000000000..33870af85f --- /dev/null +++ b/resources/lang/th/texts.php @@ -0,0 +1,1369 @@ + 'องค์กร', + 'name' => 'ชื่อ', + 'website' => 'เว็บไซต์', + 'work_phone' => 'โทรศัพท์', + 'address' => 'ที่อยู่', + 'address1' => 'ถนน', + 'address2' => 'อาคาร', + 'city' => 'อำเภอ', + 'state' => 'จังหวัด', + 'postal_code' => 'รหัสไปรษณีย์', + 'country_id' => 'ประเทศ', + 'contacts' => 'ผู้ติดต่อ', + 'first_name' => 'ชื่อ', + 'last_name' => 'นามสกุล', + 'phone' => 'โทร.', + 'email' => 'อีเมล', + 'additional_info' => 'ข้อมูลเพิ่มเติม', + 'payment_terms' => 'เงื่อนไขการชำระ', + 'currency_id' => 'สกุลเงิน', + 'size_id' => 'ขนาดบริษัท', + 'industry_id' => 'อุตสาหกรรม', + 'private_notes' => 'หมายเหตุภายใน', + 'invoice' => 'ใบแจ้งหนี้', + 'client' => 'ลูกค้า', + 'invoice_date' => 'วันที่แจ้งหนี้', + 'due_date' => 'วันถึงกำหนดชำระ', + 'invoice_number' => 'เลขที่ใบแจ้งหนี้', + 'invoice_number_short' => 'Invoice #', + 'po_number' => 'เลขที่ใบสั่งซื้อ', + 'po_number_short' => 'PO #', + 'frequency_id' => 'ความถี่', + 'discount' => 'ส่วนลด', + 'taxes' => 'ภาษี', + 'tax' => 'ภาษี', + 'item' => 'รายการ', + 'description' => 'รายละเอียด', + 'unit_cost' => 'ราคาต่อหน่วย', + 'quantity' => 'จำนวน', + 'line_total' => 'รวมเงิน', + 'subtotal' => 'รวมเงิน', + 'paid_to_date' => 'ยอดชำระแล้ว', + 'balance_due' => 'ยอดคงเหลือ', + 'invoice_design_id' => 'ออกแบบ', + 'terms' => 'เงื่อนไข', + 'your_invoice' => 'ใบแจ้งหนี้ของคุณ', + 'remove_contact' => 'ลบผู้ติดต่อ', + 'add_contact' => 'เพิ่มผู้ติดต่อ', + 'create_new_client' => 'สร้างลูกค้าใหม่', + 'edit_client_details' => 'แก้ไขรายละเอียดลูกค้า', + 'enable' => 'Enable', + 'learn_more' => 'อ่านต่อ', + 'manage_rates' => 'Manage rates', + 'note_to_client' => 'หมายเหตุสำหรับลูกค้า', + 'invoice_terms' => 'Invoice Terms', + 'save_as_default_terms' => 'บันทึกเป็น Default Terms', + 'download_pdf' => 'ดาวน์โหลด PDF', + 'pay_now' => 'จ่ายเดี๋ยวนี้', + 'save_invoice' => 'บันทึกใบแจ้งหนี้', + 'clone_invoice' => 'Clone Invoice', + 'archive_invoice' => 'Archive Invoice', + 'delete_invoice' => 'ลบใบแจ้งหนี้', + 'email_invoice' => 'ส่งอีเมล', + 'enter_payment' => 'เพิ่มรายการจ่ายเงิน', + 'tax_rates' => 'อัตราภาษี', + 'rate' => 'อัตรา', + 'settings' => 'การตั้งค่า', + 'enable_invoice_tax' => 'Enable specifying an invoice tax', + 'enable_line_item_tax' => 'Enable specifying line item taxes', + 'dashboard' => 'Dashboard', + 'clients' => 'ลูกค้า', + 'invoices' => 'ใบแจ้งหนี้', + 'payments' => 'การจ่ายเงิน', + 'credits' => 'เครดิต', + 'history' => 'ประวัติ', + 'search' => 'ค้นหา', + 'sign_up' => 'ลงทะเบียน', + 'guest' => 'Guest', + 'company_details' => 'รายละเอียดบริษัท', + 'online_payments' => 'การจ่ายเงิน Online', + 'notifications' => 'การแจ้งเตือนทางอีเมล', + 'import_export' => 'นำเข้า | ส่งออก', + 'done' => 'เรียบร้อย', + 'save' => 'บันทึก', + 'create' => 'สร้าง', + 'upload' => 'อัพโหลด', + 'import' => 'นำเข้า', + 'download' => 'ดาวน์โหลด', + 'cancel' => 'ยกเลิก', + 'close' => 'ปิด', + 'provide_email' => 'กรุณาระบุอีเมลที่ถูกต้อง', + 'powered_by' => 'สนับสนุนโดย', + 'no_items' => 'ไม่มีรายการ', + 'recurring_invoices' => 'Recurring Invoices', + 'recurring_help' => 'Automatically send clients the same invoices weekly, bi-monthly, monthly, quarterly or annually.
+Use :MONTH, :QUARTER or :YEAR for dynamic dates. Basic math works as well, for example :MONTH-1.
+Examples of dynamic invoice variables:
+We use pdfmake to define the invoice designs declaratively. The pdfmake playground provide\'s a great way to see the library in action.
+You can access a child property using dot notation. For example to show the client name you could use $client.name
.
If you need help figuring something out post a question to our support forum with the design you\'re using.
', + 'invoice_due_date' => 'Due Date', + 'quote_due_date' => 'Valid Until', + 'valid_until' => 'Valid Until', + 'reset_terms' => 'Reset terms', + 'reset_footer' => 'Reset footer', + 'invoices_sent' => ':count invoice sent|:count invoices sent', + 'status_draft' => 'Draft', + 'status_sent' => 'Sent', + 'status_viewed' => 'Viewed', + 'status_partial' => 'Partial', + 'status_paid' => 'Paid', + 'show_line_item_tax' => 'Display line item taxes inline', + 'iframe_url' => 'Website', + 'iframe_url_help1' => 'Copy the following code to a page on your site.', + 'iframe_url_help2' => 'You can test the feature by clicking \'View as recipient\' for an invoice.', + 'auto_bill' => 'Auto Bill', + 'military_time' => '24 Hour Time', + 'last_sent' => 'Last Sent', + 'reminder_emails' => 'Reminder Emails', + 'templates_and_reminders' => 'Templates & Reminders', + 'subject' => 'Subject', + 'body' => 'Body', + 'first_reminder' => 'First Reminder', + 'second_reminder' => 'Second Reminder', + 'third_reminder' => 'Third Reminder', + 'num_days_reminder' => 'Days after due date', + 'reminder_subject' => 'Reminder: Invoice :invoice from :account', + 'reset' => 'Reset', + 'invoice_not_found' => 'The requested invoice is not available', + 'referral_program' => 'Referral Program', + 'referral_code' => 'Referral URL', + 'last_sent_on' => 'Sent Last: :date', + 'page_expire' => 'This page will expire soon, :click_here to keep working', + 'upcoming_quotes' => 'Upcoming Quotes', + 'expired_quotes' => 'Expired Quotes', + 'sign_up_using' => 'Sign up using', + 'invalid_credentials' => 'These credentials do not match our records', + 'show_all_options' => 'Show all options', + 'user_details' => 'User Details', + 'oneclick_login' => 'One-Click Login', + 'disable' => 'Disable', + 'invoice_quote_number' => 'Invoice and Quote Numbers', + 'invoice_charges' => 'Invoice Charges', + 'notification_invoice_bounced' => 'We were unable to deliver Invoice :invoice to :contact.', + 'notification_invoice_bounced_subject' => 'Unable to deliver Invoice :invoice', + 'notification_quote_bounced' => 'We were unable to deliver Quote :invoice to :contact.', + 'notification_quote_bounced_subject' => 'Unable to deliver Quote :invoice', + 'custom_invoice_link' => 'Custom Invoice Link', + 'total_invoiced' => 'Total Invoiced', + 'open_balance' => 'Open Balance', + 'verify_email' => 'Please visit the link in the account confirmation email to verify your email address.', + 'basic_settings' => 'Basic Settings', + 'pro' => 'Pro', + 'gateways' => 'Payment Gateways', + 'next_send_on' => 'Send Next: :date', + 'no_longer_running' => 'This invoice is not scheduled to run', + 'general_settings' => 'General Settings', + 'customize' => 'Customize', + 'oneclick_login_help' => 'Connect an account to login without a password', + 'referral_code_help' => 'Earn money by sharing our app online', + 'enable_with_stripe' => 'Enable | Requires Stripe', + 'tax_settings' => 'Tax Settings', + 'create_tax_rate' => 'Add Tax Rate', + 'updated_tax_rate' => 'Successfully updated tax rate', + 'created_tax_rate' => 'Successfully created tax rate', + 'edit_tax_rate' => 'Edit tax rate', + 'archive_tax_rate' => 'Archive Tax Rate', + 'archived_tax_rate' => 'Successfully archived the tax rate', + 'default_tax_rate_id' => 'Default Tax Rate', + 'tax_rate' => 'Tax Rate', + 'recurring_hour' => 'Recurring Hour', + 'pattern' => 'Pattern', + 'pattern_help_title' => 'Pattern Help', + 'pattern_help_1' => 'Create custom invoice and quote numbers by specifying a pattern', + 'pattern_help_2' => 'Available variables:', + 'pattern_help_3' => 'For example, :example would be converted to :value', + 'see_options' => 'See options', + 'invoice_counter' => 'Invoice Counter', + 'quote_counter' => 'Quote Counter', + 'type' => 'Type', + 'activity_1' => ':user created client :client', + 'activity_2' => ':user archived client :client', + 'activity_3' => ':user deleted client :client', + 'activity_4' => ':user created invoice :invoice', + 'activity_5' => ':user updated invoice :invoice', + 'activity_6' => ':user emailed invoice :invoice to :contact', + 'activity_7' => ':contact viewed invoice :invoice', + 'activity_8' => ':user archived invoice :invoice', + 'activity_9' => ':user deleted invoice :invoice', + 'activity_10' => ':contact entered payment :payment for :invoice', + 'activity_11' => ':user updated payment :payment', + 'activity_12' => ':user archived payment :payment', + 'activity_13' => ':user deleted payment :payment', + 'activity_14' => ':user entered :credit credit', + 'activity_15' => ':user updated :credit credit', + 'activity_16' => ':user archived :credit credit', + 'activity_17' => ':user deleted :credit credit', + 'activity_18' => ':user created quote :quote', + 'activity_19' => ':user updated quote :quote', + 'activity_20' => ':user emailed quote :quote to :contact', + 'activity_21' => ':contact viewed quote :quote', + 'activity_22' => ':user archived quote :quote', + 'activity_23' => ':user deleted quote :quote', + 'activity_24' => ':user restored quote :quote', + 'activity_25' => ':user restored invoice :invoice', + 'activity_26' => ':user restored client :client', + 'activity_27' => ':user restored payment :payment', + 'activity_28' => ':user restored :credit credit', + 'activity_29' => ':contact approved quote :quote', + 'activity_30' => ':user created :vendor', + 'activity_31' => ':user created :vendor', + 'activity_32' => ':user created :vendor', + 'activity_33' => ':user created :vendor', + 'activity_34' => ':user created expense :expense', + 'activity_35' => ':user created :vendor', + 'activity_36' => ':user created :vendor', + 'activity_37' => ':user created :vendor', + 'payment' => 'Payment', + 'system' => 'System', + 'signature' => 'Email Signature', + 'default_messages' => 'Default Messages', + 'quote_terms' => 'Quote Terms', + 'default_quote_terms' => 'Default Quote Terms', + 'default_invoice_terms' => 'Default Invoice Terms', + 'default_invoice_footer' => 'Default Invoice Footer', + 'quote_footer' => 'Quote Footer', + 'free' => 'Free', + 'quote_is_approved' => 'This quote is approved', + 'apply_credit' => 'Apply Credit', + 'system_settings' => 'System Settings', + 'archive_token' => 'Archive Token', + 'archived_token' => 'Successfully archived token', + 'archive_user' => 'Archive User', + 'archived_user' => 'Successfully archived user', + 'archive_account_gateway' => 'Archive Gateway', + 'archived_account_gateway' => 'Successfully archived gateway', + 'archive_recurring_invoice' => 'Archive Recurring Invoice', + 'archived_recurring_invoice' => 'Successfully archived recurring invoice', + 'delete_recurring_invoice' => 'Delete Recurring Invoice', + 'deleted_recurring_invoice' => 'Successfully deleted recurring invoice', + 'restore_recurring_invoice' => 'Restore Recurring Invoice', + 'restored_recurring_invoice' => 'Successfully restored recurring invoice', + 'archived' => 'Archived', + 'untitled_account' => 'Untitled Company', + 'before' => 'Before', + 'after' => 'After', + 'reset_terms_help' => 'Reset to the default account terms', + 'reset_footer_help' => 'Reset to the default account footer', + 'export_data' => 'Export Data', + 'user' => 'User', + 'country' => 'Country', + 'include' => 'Include', + 'logo_too_large' => 'Your logo is :size, for better PDF performance we suggest uploading an image file less than 200KB', + 'import_freshbooks' => 'Import From FreshBooks', + 'import_data' => 'Import Data', + 'source' => 'Source', + 'csv' => 'CSV', + 'client_file' => 'Client File', + 'invoice_file' => 'Invoice File', + 'task_file' => 'Task File', + 'no_mapper' => 'No valid mapping for file', + 'invalid_csv_header' => 'Invalid CSV Header', + 'client_portal' => 'Client Portal', + 'admin' => 'Admin', + 'disabled' => 'Disabled', + 'show_archived_users' => 'Show archived users', + 'notes' => 'Notes', + 'invoice_will_create' => 'client will be created', + 'invoices_will_create' => 'invoices will be created', + 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', + 'publishable_key' => 'Publishable Key', + 'secret_key' => 'Secret Key', + 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', + 'email_design' => 'Email Design', + 'due_by' => 'Due by :date', + 'enable_email_markup' => 'Enable Markup', + 'enable_email_markup_help' => 'Make it easier for your clients to pay you by adding schema.org markup to your emails.', + 'template_help_title' => 'Templates Help', + 'template_help_1' => 'Available variables:', + 'email_design_id' => 'Email Style', + 'email_design_help' => 'Make your emails look more professional with HTML layouts', + 'plain' => 'Plain', + 'light' => 'Light', + 'dark' => 'Dark', + 'industry_help' => 'Used to provide comparisons against the averages of companies of similar size and industry.', + 'subdomain_help' => 'Customize the invoice link subdomain or display the invoice on your own website.', + 'invoice_number_help' => 'Specify a prefix or use a custom pattern to dynamically set the invoice number.', + 'quote_number_help' => 'Specify a prefix or use a custom pattern to dynamically set the quote number.', + 'custom_client_fields_helps' => 'Add a field when creating a client and display the label and value on the PDF.', + 'custom_account_fields_helps' => 'Add a label and value to the company details section of the PDF.', + 'custom_invoice_fields_helps' => 'Add a field when creating an invoice and display the label and value on the PDF.', + 'custom_invoice_charges_helps' => 'Add a field when creating an invoice and include the charge in the invoice subtotals.', + 'token_expired' => 'Validation token was expired. Please try again.', + 'invoice_link' => 'Invoice Link', + 'button_confirmation_message' => 'Click to confirm your email address.', + 'confirm' => 'Confirm', + 'email_preferences' => 'Email Preferences', + 'created_invoices' => 'Successfully created :count invoice(s)', + 'next_invoice_number' => 'The next invoice number is :number.', + 'next_quote_number' => 'The next quote number is :number.', + 'days_before' => 'days before', + 'days_after' => 'days after', + 'field_due_date' => 'due date', + 'field_invoice_date' => 'invoice date', + 'schedule' => 'Schedule', + 'email_designs' => 'Email Designs', + 'assigned_when_sent' => 'Assigned when sent', + 'white_label_purchase_link' => 'Purchase a white label license', + 'expense' => 'Expense', + 'expenses' => 'Expenses', + 'new_expense' => 'New Expense', + 'enter_expense' => 'Enter Expense', + 'vendors' => 'Vendors', + 'new_vendor' => 'New Vendor', + 'payment_terms_net' => 'Net', + 'vendor' => 'Vendor', + 'edit_vendor' => 'Edit Vendor', + 'archive_vendor' => 'Archive Vendor', + 'delete_vendor' => 'Delete Vendor', + 'view_vendor' => 'View Vendor', + 'deleted_expense' => 'Successfully deleted expense', + 'archived_expense' => 'Successfully archived expense', + 'deleted_expenses' => 'Successfully deleted expenses', + 'archived_expenses' => 'Successfully archived expenses', + 'expense_amount' => 'Expense Amount', + 'expense_balance' => 'Expense Balance', + 'expense_date' => 'Expense Date', + 'expense_should_be_invoiced' => 'Should this expense be invoiced?', + 'public_notes' => 'Public Notes', + 'invoice_amount' => 'Invoice Amount', + 'exchange_rate' => 'Exchange Rate', + 'yes' => 'Yes', + 'no' => 'No', + 'should_be_invoiced' => 'Should be invoiced', + 'view_expense' => 'View expense # :expense', + 'edit_expense' => 'Edit Expense', + 'archive_expense' => 'Archive Expense', + 'delete_expense' => 'Delete Expense', + 'view_expense_num' => 'Expense # :expense', + 'updated_expense' => 'Successfully updated expense', + 'created_expense' => 'Successfully created expense', + 'enter_expense' => 'Enter Expense', + 'view' => 'View', + 'restore_expense' => 'Restore Expense', + 'invoice_expense' => 'Invoice Expense', + 'expense_error_multiple_clients' => 'The expenses can\'t belong to different clients', + 'expense_error_invoiced' => 'Expense has already been invoiced', + 'convert_currency' => 'Convert currency', + 'num_days' => 'Number of days', + 'create_payment_term' => 'Create Payment Term', + 'edit_payment_terms' => 'Edit Payment Term', + 'edit_payment_term' => 'Edit Payment Term', + 'archive_payment_term' => 'Archive Payment Term', + 'recurring_due_dates' => 'Recurring Invoice Due Dates', + 'recurring_due_date_help' => 'Automatically sets a due date for the invoice.
+Invoices on a monthly or yearly cycle set to be due on or before the day they are created will be due the next month. Invoices set to be due on the 29th or 30th in months that don\'t have that day will be due the last day of the month.
+Invoices on a weekly cycle set to be due on the day of the week they are created will be due the next week.
+For example:
+{!! trans('texts.payment_settings_supported_gateways') !!}
'.trans('texts.password').': 6h2NWNdw6
':'' !!}"; - + @if ($account->isPro()) var documentsHtml = "{!! trans('texts.email_documents_header').'
' !!}"; @else var documentsHtml = ""; @endif - + var vals = [ - {!! json_encode($emailFooter) !!}, - "{{ $account->getDisplayName() }}", + {!! json_encode($emailFooter) !!}, + "{{ $account->getDisplayName() }}", "{{ $account->formatDate($account->getDateTime()) }}", "{{ $account->formatDate($account->getDateTime()) }}", - "Client Name", - formatMoney(100), - "Contact Name", + "Client Name", + formatMoney(100), + "Contact Name", "First Name", - "0001", + "0001", "0001", passwordHtml, documentsHtml, - "{{ URL::to('/view/...') }}$password", + "{{ URL::to('/view/...') }}$password", '{!! Form::flatButton('view_invoice', '#0b4d78') !!}$password', - "{{ URL::to('/payment/...') }}$password", + "{{ URL::to('/payment/...') }}$password", '{!! Form::flatButton('pay_now', '#36c157') !!}$password', + '{{ trans('texts.auto_bill_notification_placeholder') }}', + "{{ URL::to('/client/portal/...') }}", + '{!! Form::flatButton('view_portal', '#36c157') !!}', ]; // Add blanks for custom values @@ -273,21 +276,21 @@ vals.push('custom value', 'custom value', 'custom value', 'custom value'); // Add any available payment method links - @foreach (\App\Models\Gateway::$paymentTypes as $type) - {!! "keys.push('" . \App\Models\Gateway::getPaymentTypeName($type).'Link' . "');" !!} + @foreach (\App\Models\Gateway::$gatewayTypes as $type) + {!! "keys.push('" . Utils::toCamelCase($type).'Link' . "');" !!} {!! "vals.push('" . URL::to('/payment/...') . "');" !!} - {!! "keys.push('" . \App\Models\Gateway::getPaymentTypeName($type).'Button' . "');" !!} + {!! "keys.push('" . Utils::toCamelCase($type).'Button' . "');" !!} {!! "vals.push('" . Form::flatButton('pay_now', '#36c157') . "');" !!} @endforeach var includesPasswordPlaceholder = str.indexOf('$password') != -1; - + for (var i=0; i