From 07ae64693e840fba6faf04878530bd98aaea6687 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sat, 28 Jul 2018 06:27:30 +0200 Subject: [PATCH] new language strings and updated code --- app/Factory/AccountMetaFactory.php | 45 +++++++ app/Factory/TransactionFactory.php | 5 +- app/Models/PiggyBankEvent.php | 3 +- app/Models/TransactionJournal.php | 30 ++--- app/Services/Bunq/ApiContext.php | 1 + app/Services/Github/Object/Release.php | 6 +- .../Destroy/AccountDestroyService.php | 4 +- .../Destroy/RecurrenceDestroyService.php | 3 + .../Internal/Support/AccountServiceTrait.php | 46 +------ .../Internal/Support/JournalServiceTrait.php | 3 + .../Support/RecurringTransactionTrait.php | 52 ++++++-- .../Support/TransactionServiceTrait.php | 114 +++++------------- .../Internal/Update/AccountUpdateService.php | 2 + .../Internal/Update/JournalUpdateService.php | 2 + .../Update/TransactionUpdateService.php | 6 +- app/Services/Spectre/Object/Account.php | 4 +- app/Services/Spectre/Object/Attempt.php | 5 +- app/Services/Spectre/Object/Customer.php | 4 +- app/Services/Spectre/Object/Holder.php | 4 +- app/Services/Spectre/Object/Login.php | 4 +- app/Services/Spectre/Object/Transaction.php | 7 +- .../Spectre/Object/TransactionExtra.php | 5 +- .../Spectre/Request/ListAccountsRequest.php | 3 +- .../Spectre/Request/ListCustomersRequest.php | 3 +- .../Spectre/Request/ListLoginsRequest.php | 3 +- .../Request/ListTransactionsRequest.php | 3 +- app/User.php | 2 +- resources/lang/de_DE/firefly.php | 4 +- resources/lang/de_DE/import.php | 2 +- resources/lang/de_DE/list.php | 2 +- resources/lang/de_DE/validation.php | 4 +- resources/lang/es_ES/breadcrumbs.php | 8 +- resources/lang/es_ES/demo.php | 20 +-- resources/lang/es_ES/firefly.php | 36 +++--- resources/lang/fr_FR/config.php | 2 +- resources/lang/fr_FR/firefly.php | 84 ++++++------- resources/lang/fr_FR/import.php | 2 +- resources/lang/fr_FR/list.php | 2 +- resources/lang/fr_FR/validation.php | 4 +- resources/lang/it_IT/config.php | 2 +- resources/lang/it_IT/firefly.php | 4 +- resources/lang/it_IT/import.php | 2 +- resources/lang/it_IT/list.php | 2 +- resources/lang/it_IT/validation.php | 4 +- resources/lang/nl_NL/config.php | 2 +- resources/lang/nl_NL/firefly.php | 4 +- resources/lang/nl_NL/import.php | 2 +- resources/lang/nl_NL/list.php | 2 +- resources/lang/nl_NL/validation.php | 4 +- 49 files changed, 298 insertions(+), 269 deletions(-) diff --git a/app/Factory/AccountMetaFactory.php b/app/Factory/AccountMetaFactory.php index ba2172a30d..67ec707046 100644 --- a/app/Factory/AccountMetaFactory.php +++ b/app/Factory/AccountMetaFactory.php @@ -24,13 +24,17 @@ declare(strict_types=1); namespace FireflyIII\Factory; +use Exception; +use FireflyIII\Models\Account; use FireflyIII\Models\AccountMeta; +use Log; /** * Class AccountMetaFactory */ class AccountMetaFactory { + /** * @param array $data * @@ -41,4 +45,45 @@ class AccountMetaFactory return AccountMeta::create($data); } + /** + * Create update or delete meta data. + * + * @param Account $account + * @param string $field + * @param string $value + * + * @return AccountMeta|null + */ + public function crud(Account $account, string $field, string $value): ?AccountMeta + { + /** @var AccountMeta $entry */ + $entry = $account->accountMeta()->where('name', $field)->first(); + + // must not be an empty string: + if ('' !== $value) { + + // if $data has field and $entry is null, create new one: + if (null === $entry) { + Log::debug(sprintf('Created meta-field "%s":"%s" for account #%d ("%s") ', $field, $value, $account->id, $account->name)); + $this->create(['account_id' => $account->id, 'name' => $field, 'data' => $value]); + } + + // if $data has field and $entry is not null, update $entry: + if (null !== $entry) { + $entry->data = $value; + $entry->save(); + Log::debug(sprintf('Updated meta-field "%s":"%s" for #%d ("%s") ', $field, $value, $account->id, $account->name)); + } + } + if ('' === $value && null !== $entry && isset($data[$field])) { + try { + $entry->delete(); + } catch (Exception $e) { + Log::debug(sprintf('Could not delete entry: %s', $e->getMessage())); + } + } + + return $entry; + } + } diff --git a/app/Factory/TransactionFactory.php b/app/Factory/TransactionFactory.php index 0c3c3c7e3f..39d483b46a 100644 --- a/app/Factory/TransactionFactory.php +++ b/app/Factory/TransactionFactory.php @@ -113,7 +113,10 @@ class TransactionFactory $destinationAccount = $this->findAccount($destinationType, $data['destination_id'], $data['destination_name']); if (null === $sourceAccount || null === $destinationAccount) { - Log::error('Info about source/dest:', $data); + $debugData = $data; + $debugData['source_type'] = $sourceType; + $debugData['dest_type'] = $destinationType; + Log::error('Info about source/dest:', $debugData); throw new FireflyException('Could not determine source or destination account.'); } diff --git a/app/Models/PiggyBankEvent.php b/app/Models/PiggyBankEvent.php index 48668c220e..e01ed0a677 100644 --- a/app/Models/PiggyBankEvent.php +++ b/app/Models/PiggyBankEvent.php @@ -22,6 +22,7 @@ declare(strict_types=1); namespace FireflyIII\Models; +use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; /** @@ -31,7 +32,7 @@ use Illuminate\Database\Eloquent\Model; * @property int $transaction_journal_id * @property int $piggy_bank_id * @property int $id - * @property mixed date + * @property Carbon date */ class PiggyBankEvent extends Model { diff --git a/app/Models/TransactionJournal.php b/app/Models/TransactionJournal.php index 8e5b29f661..7eae36c4d3 100644 --- a/app/Models/TransactionJournal.php +++ b/app/Models/TransactionJournal.php @@ -48,21 +48,21 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @property int transaction_currency_id * @property TransactionCurrency $transactionCurrency * @property Collection $tags - * @property mixed user_id - * @property mixed transactions - * @property int transaction_count - * @property Carbon interest_date - * @property Carbon book_date - * @property Carbon process_date - * @property bool encrypted - * @property int order - * @property int budget_id - * @property string period_marker - * @property Carbon $date - * @property string $transaction_type_type - * @property int $id - * @property TransactionType $transactionType - * @property Collection budgets + * @property int user_id + * @property Collection transactions + * @property int transaction_count + * @property Carbon interest_date + * @property Carbon book_date + * @property Carbon process_date + * @property bool encrypted + * @property int order + * @property int budget_id + * @property string period_marker + * @property Carbon $date + * @property string $transaction_type_type + * @property int $id + * @property TransactionType $transactionType + * @property Collection budgets * * @SuppressWarnings(PHPMD.TooManyPublicMethods) * @SuppressWarnings(PHPMD.CouplingBetweenObjects) diff --git a/app/Services/Bunq/ApiContext.php b/app/Services/Bunq/ApiContext.php index b09aa1ea80..4e68bef43f 100644 --- a/app/Services/Bunq/ApiContext.php +++ b/app/Services/Bunq/ApiContext.php @@ -48,6 +48,7 @@ class ApiContext * * @throws FireflyException * @return BunqApiContext|FakeApiContext + * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function create(BunqEnumApiEnvironmentType $environmentType, string $apiKey, string $description, array $permittedIps, string $proxyUrl = null ) { diff --git a/app/Services/Github/Object/Release.php b/app/Services/Github/Object/Release.php index d9bf4ed408..7a9ab20e94 100644 --- a/app/Services/Github/Object/Release.php +++ b/app/Services/Github/Object/Release.php @@ -27,8 +27,12 @@ use Carbon\Carbon; /** - * @codeCoverageIgnore + * * Class Release + * + * @SuppressWarnings(PHPMD.ShortVariable) + * + * @codeCoverageIgnore */ class Release extends GithubObject { diff --git a/app/Services/Internal/Destroy/AccountDestroyService.php b/app/Services/Internal/Destroy/AccountDestroyService.php index d04c319515..352b5cb48b 100644 --- a/app/Services/Internal/Destroy/AccountDestroyService.php +++ b/app/Services/Internal/Destroy/AccountDestroyService.php @@ -40,12 +40,14 @@ class AccountDestroyService * @param Account|null $moveTo * * @return void + * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function destroy(Account $account, ?Account $moveTo): void { if (null !== $moveTo) { DB::table('transactions')->where('account_id', $account->id)->update(['account_id' => $moveTo->id]); } + $service = app(JournalDestroyService::class); Log::debug('Now trigger account delete response #' . $account->id); /** @var Transaction $transaction */ @@ -56,7 +58,7 @@ class AccountDestroyService if (null !== $journal) { Log::debug('Call for deletion of journal #' . $journal->id); /** @var JournalDestroyService $service */ - $service = app(JournalDestroyService::class); + $service->destroy($journal); } } diff --git a/app/Services/Internal/Destroy/RecurrenceDestroyService.php b/app/Services/Internal/Destroy/RecurrenceDestroyService.php index 6ad484738e..6dd1bb9ab2 100644 --- a/app/Services/Internal/Destroy/RecurrenceDestroyService.php +++ b/app/Services/Internal/Destroy/RecurrenceDestroyService.php @@ -35,7 +35,10 @@ use Log; class RecurrenceDestroyService { /** + * Delete recurrence. + * * @param Recurrence $recurrence + * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function destroy(Recurrence $recurrence): void { diff --git a/app/Services/Internal/Support/AccountServiceTrait.php b/app/Services/Internal/Support/AccountServiceTrait.php index bef8eb4a43..10c4019fda 100644 --- a/app/Services/Internal/Support/AccountServiceTrait.php +++ b/app/Services/Internal/Support/AccountServiceTrait.php @@ -23,13 +23,11 @@ declare(strict_types=1); namespace FireflyIII\Services\Internal\Support; -use Exception; use FireflyIII\Factory\AccountFactory; use FireflyIII\Factory\AccountMetaFactory; use FireflyIII\Factory\TransactionFactory; use FireflyIII\Factory\TransactionJournalFactory; use FireflyIII\Models\Account; -use FireflyIII\Models\AccountMeta; use FireflyIII\Models\AccountType; use FireflyIII\Models\Note; use FireflyIII\Models\Transaction; @@ -128,6 +126,7 @@ trait AccountServiceTrait * * @return TransactionJournal|null * @throws \FireflyIII\Exceptions\FireflyException + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function storeIBJournal(Account $account, array $data): ?TransactionJournal { @@ -181,7 +180,7 @@ trait AccountServiceTrait /** @var TransactionFactory $factory */ $factory = app(TransactionFactory::class); $factory->setUser($account->user); - $one = $factory->create( + $factory->create( [ 'account' => $firstAccount, 'transaction_journal' => $journal, @@ -193,7 +192,7 @@ trait AccountServiceTrait 'reconciled' => false, ] ); - $two = $factory->create( + $factory->create( [ 'account' => $secondAccount, 'transaction_journal' => $journal, @@ -205,9 +204,6 @@ trait AccountServiceTrait 'reconciled' => false, ] ); - if (null !== $one && null !== $two) { - Log::notice(sprintf('Stored two transactions for new account, #%d and #%d', $one->id, $two->id)); - } return $journal; } @@ -267,6 +263,7 @@ trait AccountServiceTrait * @param array $data * * @return bool + * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function updateIBJournal(Account $account, TransactionJournal $journal, array $data): bool { @@ -274,7 +271,6 @@ trait AccountServiceTrait $amount = (string)$data['openingBalance']; $negativeAmount = bcmul($amount, '-1'); $currencyId = (int)$data['currency_id']; - Log::debug(sprintf('Submitted amount for opening balance to update is "%s"', $amount)); if (0 === bccomp($amount, '0')) { Log::notice(sprintf('Amount "%s" is zero, delete opening balance.', $amount)); @@ -282,16 +278,11 @@ trait AccountServiceTrait $service = app(JournalDestroyService::class); $service->destroy($journal); - return true; } - - // update date: $journal->date = $date; $journal->transaction_currency_id = $currencyId; $journal->save(); - - // update transactions: /** @var Transaction $transaction */ foreach ($journal->transactions()->get() as $transaction) { if ((int)$account->id === (int)$transaction->account_id) { @@ -317,6 +308,7 @@ trait AccountServiceTrait * * @param Account $account * @param array $data + * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function updateMetaData(Account $account, array $data): void { @@ -331,33 +323,7 @@ trait AccountServiceTrait /** @var AccountMetaFactory $factory */ $factory = app(AccountMetaFactory::class); foreach ($fields as $field) { - /** @var AccountMeta $entry */ - $entry = $account->accountMeta()->where('name', $field)->first(); - - // must not be an empty string: - if (isset($data[$field]) && \strlen((string)$data[$field]) > 0) { - - // if $data has field and $entry is null, create new one: - if (null === $entry) { - Log::debug(sprintf('Created meta-field "%s":"%s" for account #%d ("%s") ', $field, $data[$field], $account->id, $account->name)); - $factory->create(['account_id' => $account->id, 'name' => $field, 'data' => $data[$field],]); - } - - // if $data has field and $entry is not null, update $entry: - // let's not bother with a service. - if (null !== $entry) { - $entry->data = $data[$field]; - $entry->save(); - Log::debug(sprintf('Updated meta-field "%s":"%s" for #%d ("%s") ', $field, $data[$field], $account->id, $account->name)); - } - } - if (null !== $entry && isset($data[$field]) && '' === (string)$data[$field]) { - try { - $entry->delete(); - } catch (Exception $e) { - Log::debug(sprintf('Could not delete entry: %s', $e->getMessage())); - } - } + $factory->crud($account, $field, $data[$field] ?? ''); } } diff --git a/app/Services/Internal/Support/JournalServiceTrait.php b/app/Services/Internal/Support/JournalServiceTrait.php index b46d8a74c0..3b97e9d375 100644 --- a/app/Services/Internal/Support/JournalServiceTrait.php +++ b/app/Services/Internal/Support/JournalServiceTrait.php @@ -38,8 +38,11 @@ trait JournalServiceTrait { /** + * Link tags to journal. + * * @param TransactionJournal $journal * @param array $data + * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function connectTags(TransactionJournal $journal, array $data): void { diff --git a/app/Services/Internal/Support/RecurringTransactionTrait.php b/app/Services/Internal/Support/RecurringTransactionTrait.php index 46c91191a9..b9c03074d9 100644 --- a/app/Services/Internal/Support/RecurringTransactionTrait.php +++ b/app/Services/Internal/Support/RecurringTransactionTrait.php @@ -45,15 +45,6 @@ use Log; */ trait RecurringTransactionTrait { - /** - * @param null|string $expectedType - * @param int|null $accountId - * @param null|string $accountName - * - * @return Account|null - */ - abstract public function findAccount(?string $expectedType, ?int $accountId, ?string $accountName): ?Account; - /** * @param Recurrence $recurrence * @param array $repetitions @@ -76,8 +67,12 @@ trait RecurringTransactionTrait } /** + * Store transactions of a recurring transactions. It's complex but readable. + * * @param Recurrence $recurrence * @param array $transactions + * @SuppressWarnings(PHPMD.CyclomaticComplexity) + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function createTransactions(Recurrence $recurrence, array $transactions): void { @@ -103,9 +98,8 @@ trait RecurringTransactionTrait $factory = app(TransactionCurrencyFactory::class); $currency = $factory->find($array['currency_id'], $array['currency_code']); $foreignCurrency = $factory->find($array['foreign_currency_id'], $array['foreign_currency_code']); - $defaultCurrency = app('amount')->getDefaultCurrencyByUser($recurrence->user); if (null === $currency) { - $currency = $defaultCurrency; + $currency = app('amount')->getDefaultCurrencyByUser($recurrence->user); } $transaction = new RecurrenceTransaction( [ @@ -178,6 +172,17 @@ trait RecurringTransactionTrait } /** + * @param null|string $expectedType + * @param int|null $accountId + * @param null|string $accountName + * + * @return Account|null + */ + abstract public function findAccount(?string $expectedType, ?int $accountId, ?string $accountName): ?Account; + + /** + * Update meta data for recurring transaction. + * * @param Recurrence $recurrence * @param array $data */ @@ -186,6 +191,22 @@ trait RecurringTransactionTrait // only two special meta fields right now. Let's just hard code them. $piggyId = (int)($data['meta']['piggy_bank_id'] ?? 0.0); $piggyName = $data['meta']['piggy_bank_name'] ?? ''; + $this->updatePiggyBank($recurrence, $piggyId, $piggyName); + + + $tags = $data['meta']['tags'] ?? []; + $this->updateTags($recurrence, $tags); + + } + + /** + * @param Recurrence $recurrence + * @param int $piggyId + * @param string $piggyName + */ + protected function updatePiggyBank(Recurrence $recurrence, int $piggyId, string $piggyName): void + { + /** @var PiggyBankFactory $factory */ $factory = app(PiggyBankFactory::class); $factory->setUser($recurrence->user); @@ -203,9 +224,14 @@ trait RecurringTransactionTrait // delete if present $recurrence->recurrenceMeta()->where('name', 'piggy_bank_id')->delete(); } + } - - $tags = $data['meta']['tags'] ?? []; + /** + * @param Recurrence $recurrence + * @param array $tagst + */ + protected function updateTags(Recurrence $recurrence, array $tags): void + { if (\count($tags) > 0) { /** @var RecurrenceMeta $entry */ $entry = $recurrence->recurrenceMeta()->where('name', 'tags')->first(); diff --git a/app/Services/Internal/Support/TransactionServiceTrait.php b/app/Services/Internal/Support/TransactionServiceTrait.php index 7be855dbbf..207ef8da81 100644 --- a/app/Services/Internal/Support/TransactionServiceTrait.php +++ b/app/Services/Internal/Support/TransactionServiceTrait.php @@ -51,47 +51,30 @@ trait TransactionServiceTrait * @param string $direction * * @return string|null + * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function accountType(TransactionJournal $journal, string $direction): ?string { $types = []; $type = $journal->transactionType->type; - switch ($type) { - default: - // @codeCoverageIgnoreStart - Log::error(sprintf('Cannot handle type "%s" in accountType()', $type)); - - return null; - // @codeCoverageIgnoreEnd - case TransactionType::WITHDRAWAL: - $types['source'] = AccountType::ASSET; - $types['destination'] = AccountType::EXPENSE; - break; - case TransactionType::DEPOSIT: - $types['source'] = AccountType::REVENUE; - $types['destination'] = AccountType::ASSET; - break; - case TransactionType::TRANSFER: - $types['source'] = AccountType::ASSET; - $types['destination'] = AccountType::ASSET; - break; - case TransactionType::RECONCILIATION: - // always NULL, since this is handled by the reconciliation. - $types['source'] = null; - $types['destination'] = null; - - // return here: - return $types[$direction]; + if (TransactionType::WITHDRAWAL === $type) { + $types['source'] = AccountType::ASSET; + $types['destination'] = AccountType::EXPENSE; } - if (!isset($types[$direction])) { - // @codeCoverageIgnoreStart - Log::error(sprintf('No type set for direction "%s" and type "%s"', $type, $direction)); - - return null; - // @codeCoverageIgnoreEnd + if (TransactionType::DEPOSIT === $type) { + $types['source'] = AccountType::REVENUE; + $types['destination'] = AccountType::ASSET; + } + if (TransactionType::TRANSFER === $type) { + $types['source'] = AccountType::ASSET; + $types['destination'] = AccountType::ASSET; + } + if (TransactionType::RECONCILIATION === $type) { + $types['source'] = null; + $types['destination'] = null; } - return $types[$direction]; + return $types[$direction] ?? null; } /** @@ -101,6 +84,7 @@ trait TransactionServiceTrait * * @return Account|null * @throws \FireflyIII\Exceptions\FireflyException + * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function findAccount(?string $expectedType, ?int $accountId, ?string $accountName): ?Account { @@ -115,55 +99,23 @@ trait TransactionServiceTrait return $repository->findNull($accountId); } - switch ($expectedType) { - case AccountType::ASSET: - if ($accountId > 0) { - // must be able to find it based on ID. Validator should catch invalid ID's. - return $repository->findNull($accountId); - } - - // alternatively, return by name. Validator should catch invalid names. - return $repository->findByName($accountName, [AccountType::ASSET]); - case AccountType::EXPENSE: - if ($accountId > 0) { - // must be able to find it based on ID. Validator should catch invalid ID's. - return $repository->findNull($accountId); - } - if (\strlen($accountName) > 0) { - /** @var AccountFactory $factory */ - $factory = app(AccountFactory::class); - $factory->setUser($this->user); - - return $factory->findOrCreate($accountName, AccountType::EXPENSE); - } - - // return cash account: - return $repository->getCashAccount(); - case AccountType::REVENUE: - if ($accountId > 0) { - // must be able to find it based on ID. Validator should catch invalid ID's. - return $repository->findNull($accountId); - } - if (\strlen($accountName) > 0) { - // alternatively, return by name. - /** @var AccountFactory $factory */ - $factory = app(AccountFactory::class); - $factory->setUser($this->user); - - return $factory->findOrCreate($accountName, AccountType::REVENUE); - } - - // return cash account: - return $repository->getCashAccount(); - - default: - // @codeCoverageIgnoreStart - Log::error(sprintf('Cannot find account of type "%s".', $expectedType)); - - return null; - // @codeCoverageIgnoreEnd - + if ($accountId > 0) { + // must be able to find it based on ID. Validator should catch invalid ID's. + return $repository->findNull($accountId); } + if (AccountType::ASSET === $expectedType) { + return $repository->findByName($accountName, [AccountType::ASSET]); + } + // for revenue and expense: + if (\strlen($accountName) > 0) { + /** @var AccountFactory $factory */ + $factory = app(AccountFactory::class); + $factory->setUser($this->user); + + return $factory->findOrCreate($accountName, $expectedType); + } + + return $repository->getCashAccount(); } /** diff --git a/app/Services/Internal/Update/AccountUpdateService.php b/app/Services/Internal/Update/AccountUpdateService.php index 0e79a40a2d..59f8222cda 100644 --- a/app/Services/Internal/Update/AccountUpdateService.php +++ b/app/Services/Internal/Update/AccountUpdateService.php @@ -42,6 +42,8 @@ class AccountUpdateService * * @return Account * @throws \FireflyIII\Exceptions\FireflyException + * @SuppressWarnings(PHPMD.CyclomaticComplexity) + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function update(Account $account, array $data): Account { diff --git a/app/Services/Internal/Update/JournalUpdateService.php b/app/Services/Internal/Update/JournalUpdateService.php index caba75d2e2..df2162636f 100644 --- a/app/Services/Internal/Update/JournalUpdateService.php +++ b/app/Services/Internal/Update/JournalUpdateService.php @@ -45,6 +45,8 @@ class JournalUpdateService * * @return TransactionJournal * @throws \FireflyIII\Exceptions\FireflyException + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function update(TransactionJournal $journal, array $data): TransactionJournal { diff --git a/app/Services/Internal/Update/TransactionUpdateService.php b/app/Services/Internal/Update/TransactionUpdateService.php index b497e41749..88a4b05f5a 100644 --- a/app/Services/Internal/Update/TransactionUpdateService.php +++ b/app/Services/Internal/Update/TransactionUpdateService.php @@ -70,6 +70,10 @@ class TransactionUpdateService * * @return Transaction * @throws \FireflyIII\Exceptions\FireflyException + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) + * @SuppressWarnings(PHPMD.CyclomaticComplexity) + * @SuppressWarnings(PHPMD.NPathComplexity) + * */ public function update(Transaction $transaction, array $data): Transaction { @@ -113,7 +117,7 @@ class TransactionUpdateService $this->setForeignCurrency($transaction, $foreign); $this->setForeignAmount($transaction, $foreignAmount); } - if (null === $foreign && null === $data['foreign_amount']) { + if (null === $foreign || null === $data['foreign_amount']) { $this->setForeignCurrency($transaction, null); $this->setForeignAmount($transaction, null); } diff --git a/app/Services/Spectre/Object/Account.php b/app/Services/Spectre/Object/Account.php index fa7367b770..d3cfceb689 100644 --- a/app/Services/Spectre/Object/Account.php +++ b/app/Services/Spectre/Object/Account.php @@ -26,8 +26,10 @@ namespace FireflyIII\Services\Spectre\Object; use Carbon\Carbon; /** - * @codeCoverageIgnore * Class Account + * + * @codeCoverageIgnore + * @SuppressWarnings(PHPMD.ShortVariable) */ class Account extends SpectreObject { diff --git a/app/Services/Spectre/Object/Attempt.php b/app/Services/Spectre/Object/Attempt.php index ce0a912225..53aff5124a 100644 --- a/app/Services/Spectre/Object/Attempt.php +++ b/app/Services/Spectre/Object/Attempt.php @@ -26,8 +26,11 @@ namespace FireflyIII\Services\Spectre\Object; use Carbon\Carbon; /** - * @codeCoverageIgnore + * * Class Attempt + * @codeCoverageIgnore + * @SuppressWarnings(PHPMD.ShortVariable) + * @SuppressWarnings(PHPMD.TooManyFields) */ class Attempt extends SpectreObject { diff --git a/app/Services/Spectre/Object/Customer.php b/app/Services/Spectre/Object/Customer.php index 10b76424ca..3376db8daf 100644 --- a/app/Services/Spectre/Object/Customer.php +++ b/app/Services/Spectre/Object/Customer.php @@ -23,8 +23,10 @@ declare(strict_types=1); namespace FireflyIII\Services\Spectre\Object; /** - * @codeCoverageIgnore * Class Customer + * + * @codeCoverageIgnore + * @SuppressWarnings(PHPMD.ShortVariable) */ class Customer extends SpectreObject { diff --git a/app/Services/Spectre/Object/Holder.php b/app/Services/Spectre/Object/Holder.php index ac07e953c0..791abb5b7f 100644 --- a/app/Services/Spectre/Object/Holder.php +++ b/app/Services/Spectre/Object/Holder.php @@ -24,8 +24,9 @@ declare(strict_types=1); namespace FireflyIII\Services\Spectre\Object; /** - * @codeCoverageIgnore * Class Holder + * + * @codeCoverageIgnore */ class Holder extends SpectreObject { @@ -33,6 +34,7 @@ class Holder extends SpectreObject * Holder constructor. * * @param array $data + * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function __construct(array $data) { diff --git a/app/Services/Spectre/Object/Login.php b/app/Services/Spectre/Object/Login.php index 6a8fad38e7..6d536ac7ce 100644 --- a/app/Services/Spectre/Object/Login.php +++ b/app/Services/Spectre/Object/Login.php @@ -27,8 +27,10 @@ use Carbon\Carbon; /** - * @codeCoverageIgnore * Class Login + * @codeCoverageIgnore + * @SuppressWarnings(PHPMD.ShortVariable) + * @SuppressWarnings(PHPMD.TooManyFields) */ class Login extends SpectreObject { diff --git a/app/Services/Spectre/Object/Transaction.php b/app/Services/Spectre/Object/Transaction.php index 0ebd50cd2e..866ffddbb2 100644 --- a/app/Services/Spectre/Object/Transaction.php +++ b/app/Services/Spectre/Object/Transaction.php @@ -26,8 +26,10 @@ namespace FireflyIII\Services\Spectre\Object; use Carbon\Carbon; /** - * @codeCoverageIgnore * Class Transaction + * @codeCoverageIgnore + * + * @SuppressWarnings(PHPMD.ShortVariable) */ class Transaction extends SpectreObject { @@ -169,7 +171,10 @@ class Transaction extends SpectreObject } /** + * Get opposing account data. + * * @return array + * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function getOpposingAccountData(): array { diff --git a/app/Services/Spectre/Object/TransactionExtra.php b/app/Services/Spectre/Object/TransactionExtra.php index 28ca9da498..652bd9025c 100644 --- a/app/Services/Spectre/Object/TransactionExtra.php +++ b/app/Services/Spectre/Object/TransactionExtra.php @@ -26,8 +26,11 @@ namespace FireflyIII\Services\Spectre\Object; use Carbon\Carbon; /** - * @codeCoverageIgnore * Class TransactionExtra + * + * @SuppressWarnings(PHPMD.TooManyFields) + * @SuppressWarnings(PHPMD.ShortVariable) + * @codeCoverageIgnore */ class TransactionExtra extends SpectreObject { diff --git a/app/Services/Spectre/Request/ListAccountsRequest.php b/app/Services/Spectre/Request/ListAccountsRequest.php index eedb0d2382..a641819202 100644 --- a/app/Services/Spectre/Request/ListAccountsRequest.php +++ b/app/Services/Spectre/Request/ListAccountsRequest.php @@ -40,6 +40,7 @@ class ListAccountsRequest extends SpectreRequest /** * @throws FireflyException + * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function call(): void { @@ -60,8 +61,6 @@ class ListAccountsRequest extends SpectreRequest $hasNextPage = true; $nextId = $response['meta']['next_id']; Log::debug(sprintf('Next ID is now %d.', $nextId)); - } else { - Log::debug('No next page.'); } // store customers: diff --git a/app/Services/Spectre/Request/ListCustomersRequest.php b/app/Services/Spectre/Request/ListCustomersRequest.php index def720dc9a..5b92b00ec2 100644 --- a/app/Services/Spectre/Request/ListCustomersRequest.php +++ b/app/Services/Spectre/Request/ListCustomersRequest.php @@ -38,6 +38,7 @@ class ListCustomersRequest extends SpectreRequest /** * * @throws \FireflyIII\Exceptions\FireflyException + * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function call(): void { @@ -58,8 +59,6 @@ class ListCustomersRequest extends SpectreRequest $hasNextPage = true; $nextId = $response['meta']['next_id']; Log::debug(sprintf('Next ID is now %d.', $nextId)); - } else { - Log::debug('No next page.'); } // store customers: diff --git a/app/Services/Spectre/Request/ListLoginsRequest.php b/app/Services/Spectre/Request/ListLoginsRequest.php index 49379bd96e..f5cda26a3b 100644 --- a/app/Services/Spectre/Request/ListLoginsRequest.php +++ b/app/Services/Spectre/Request/ListLoginsRequest.php @@ -42,6 +42,7 @@ class ListLoginsRequest extends SpectreRequest /** * @throws FireflyException + * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function call(): void { @@ -62,8 +63,6 @@ class ListLoginsRequest extends SpectreRequest $hasNextPage = true; $nextId = $response['meta']['next_id']; Log::debug(sprintf('Next ID is now %d.', $nextId)); - } else { - Log::debug('No next page.'); } $collection = new Collection; // store logins: diff --git a/app/Services/Spectre/Request/ListTransactionsRequest.php b/app/Services/Spectre/Request/ListTransactionsRequest.php index 1a9b419a0f..642562a067 100644 --- a/app/Services/Spectre/Request/ListTransactionsRequest.php +++ b/app/Services/Spectre/Request/ListTransactionsRequest.php @@ -40,6 +40,7 @@ class ListTransactionsRequest extends SpectreRequest /** * @throws FireflyException + * @SuppressWarnings(PHPMD.CyclomaticComplexity) */ public function call(): void { @@ -60,8 +61,6 @@ class ListTransactionsRequest extends SpectreRequest $hasNextPage = true; $nextId = $response['meta']['next_id']; Log::debug(sprintf('Next ID is now %d.', $nextId)); - } else { - Log::debug('No next page, done with ListTransactionsRequest.'); } // store customers: diff --git a/app/User.php b/app/User.php index 2fbca22b1d..c8ff6c43c6 100644 --- a/app/User.php +++ b/app/User.php @@ -61,7 +61,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @property bool $isAdmin used in admin user controller. * @property bool $has2FA used in admin user controller. * @property array $prefs used in admin user controller. - * @property mixed password + * @property string password * @property Collection roles * @property string blocked_code * @property bool blocked diff --git a/resources/lang/de_DE/firefly.php b/resources/lang/de_DE/firefly.php index 87d666267a..8ef2322118 100644 --- a/resources/lang/de_DE/firefly.php +++ b/resources/lang/de_DE/firefly.php @@ -521,8 +521,8 @@ Sollen zusätzlich Ihre Girokonten angezeigt werden?', 'secure_pw_history' => 'Im August 2017 veröffentlichte die bekannte Sicherheitsforscherin Troy Hunt eine Liste von 306 Millionen gestohlenen Passwörtern. Diese Passwörter wurden während der Einbrüche bei Firmen wie LinkedIn, Adobe und NeoPets (und vielen mehr) gestohlen.', 'secure_pw_check_box' => 'Durch Ankreuzen des Kästchens sendet Firefly III die ersten fünf Zeichen des SHA1-Hash Ihres Passworts an die Website von Troy Hunt, um festzustellen, ob es auf der Liste enthalten ist. Dies wird Sie davon abhalten, unsichere Passwörter zu verwenden, wie es in der neuesten NIST Sonderveröffentlichung zu diesem Thema empfohlen wird.', 'secure_pw_sha1' => 'Aber ich dachte, dass SHA1 schon geknackt wurde?', - 'secure_pw_hash_speed' => 'Yes, but not in this context. As you can read on the website detailing how they broke SHA1, it is now slightly easier to find a "collision": another digest that results in the same SHA1-hash. It now only takes 10,000 years using a single-GPU machine.', - 'secure_pw_hash_security' => 'This digest would not be equal to your password, nor would it be useful on (a site like) Firefly III. This application does not use SHA1 for password verification. So it is safe to check this box. Your password is hashed and only the first five characters of this digest are sent over HTTPS.', + 'secure_pw_hash_speed' => 'Ja, aber nicht in diesem Zusammenhang. Wie Sie auf auf der Website, die erklärt, wie SHA1 gebrochen wurde, lesen können, ist es jetzt etwas leichter, eine "Kollision" zu finden: eine andere Zeichenfolge, die zu demselben SHA1-Hash führt. Es dauert nur mehr 10.000 Jahre mit einer einzigen GPU-Maschine.', + 'secure_pw_hash_security' => 'Dieser Auszug wäre weder mit Ihrem Passwort gleichzusetzen, noch wäre sie auf einer Seite wie Firefly III nützlich. Diese Anwendung verwendet SHA1 nicht zur Passwortverifizierung. Es ist also sicher, dieses Kontrollkästchen zu aktivieren. Ihr Passwort wird verschlüsselt und nur die ersten fünf Zeichen dieses Auszuges werden über HTTPS gesendet.', 'secure_pw_should' => 'Soll ich die Box ankreuzen?', 'secure_pw_long_password' => 'Wenn Sie gerade ein langes, Single-Use-Passwort für Firefly III mit einem Kennwortgenerator generiert haben: Nein.', 'secure_pw_short' => 'Wenn Sie gerade das Passwort eingegeben haben, welches Sie immer verwenden: Bitte ja.', diff --git a/resources/lang/de_DE/import.php b/resources/lang/de_DE/import.php index e5c50db546..13bf4e3781 100644 --- a/resources/lang/de_DE/import.php +++ b/resources/lang/de_DE/import.php @@ -219,7 +219,7 @@ return [ 'column_account-iban' => 'Bestandskonto (IBAN)', 'column_account-id' => 'Kennung des Bestandkontos (passend zu FF3)', 'column_account-name' => 'Bestandskonto (Name)', - 'column_account-bic' => 'Asset account (BIC)', + 'column_account-bic' => 'Bestandskonto (BIC)', 'column_amount' => 'Betrag', 'column_amount_foreign' => 'Betrag (in Fremdwährung)', 'column_amount_debit' => 'Betrag (Debitoren-Spalte)', diff --git a/resources/lang/de_DE/list.php b/resources/lang/de_DE/list.php index 74cfa4d88e..f3143b9d65 100644 --- a/resources/lang/de_DE/list.php +++ b/resources/lang/de_DE/list.php @@ -112,7 +112,7 @@ return [ 'sepa-cc' => 'SEPA • Verrechnungsschlüssel', 'sepa-ep' => 'SEPA • Externer Verwendungszweck', 'sepa-ci' => 'SEPA • Identifikationsnummer des Zahlungsempfängers', - 'sepa-batch-id' => 'SEPA Batch ID', + 'sepa-batch-id' => 'SEPA Batch-Kennung', 'external_id' => 'Externe Kennung', 'account_at_bunq' => 'Konto bei „bunq”', 'file_name' => 'Dateiname', diff --git a/resources/lang/de_DE/validation.php b/resources/lang/de_DE/validation.php index 1541442491..1f1499f1b1 100644 --- a/resources/lang/de_DE/validation.php +++ b/resources/lang/de_DE/validation.php @@ -50,8 +50,8 @@ return [ 'at_least_one_action' => 'Regel muss mindestens eine Aktion enthalten', 'base64' => 'Dies sind keine gültigen base64-kodierten Daten.', 'model_id_invalid' => 'Die angegebene ID scheint für dieses Modell ungültig zu sein.', - 'more' => ':attribute must be larger than :value.', - 'less' => ':attribute must be less than 10,000,000', + 'more' => ':attribute muss größer als :value sein.', + 'less' => ':attribute muss kleiner als 10.000.000 sein', 'active_url' => ':attribute ist keine gültige URL.', 'after' => ':attribute muss ein Datum nach :date sein.', 'alpha' => ':attribute darf nur Buchstaben enthalten.', diff --git a/resources/lang/es_ES/breadcrumbs.php b/resources/lang/es_ES/breadcrumbs.php index f1b9067035..76198fddd0 100644 --- a/resources/lang/es_ES/breadcrumbs.php +++ b/resources/lang/es_ES/breadcrumbs.php @@ -26,8 +26,8 @@ return [ 'home' => 'Inicio', 'edit_currency' => 'Editar moneda ":name"', 'delete_currency' => 'Eliminar moneda ":name"', - 'newPiggyBank' => 'Crear nueva alcancía', - 'edit_piggyBank' => 'Editar alcancía ":name"', + 'newPiggyBank' => 'Crear nueva hucha', + 'edit_piggyBank' => 'Editar hucha ":name"', 'preferences' => 'Preferencias', 'profile' => 'Perfil', 'changePassword' => 'Cambiar contraseña', @@ -36,14 +36,14 @@ return [ 'newBill' => 'Nueva factura', 'edit_bill' => 'Editar factura ":name"', 'delete_bill' => 'Eliminar factura ":name"', - 'reports' => 'Reportes', + 'reports' => 'Informes', 'search_result' => 'Resultados de la búsqueda para ":query"', 'withdrawal_list' => 'Gastos', 'deposit_list' => 'Ganancia, ingresos y depósitos', 'transfer_list' => 'Transferencias', 'transfers_list' => 'Transferencias', 'reconciliation_list' => 'Reconciliaciones', - 'create_withdrawal' => 'Crear nuevo retiro', + 'create_withdrawal' => 'Crear nueva retirada', 'create_deposit' => 'Crear nuevo depósito', 'create_transfer' => 'Crear nueva transferencia', 'edit_journal' => 'Editar transacción ":description"', diff --git a/resources/lang/es_ES/demo.php b/resources/lang/es_ES/demo.php index 4588444cea..ba0a5dde41 100644 --- a/resources/lang/es_ES/demo.php +++ b/resources/lang/es_ES/demo.php @@ -24,16 +24,16 @@ declare(strict_types=1); return [ 'no_demo_text' => 'Lamentablemente no hay textos de ayuda para esta página.', - 'see_help_icon' => 'Sin embargo, el ícono en la esquina superior-derecha puede tener más información.', - 'index' => '¡Bienvenido a Firefly III! En esta página tendrá una vista rápida de sus finanzas. Para más información, mire sus cuentas rarr; Asset Accounts y, claro, las páginas de presupuestos y reportes. O simplemente investigue la aplicación por su cuenta.', - 'accounts-index' => 'Las cajas de ahorro son sus cuentas de banco personales. Las cuentas de gastos contienen sus gastos habituales como compras y salidas con amigos. Las cuentas de ingresos repesentan ingresos de su trabajo u otras fuentes. En esta página puede editarlas o eliminarlas.', - 'budgets-index' => 'Esta página le muestra una visión general de sus presupuestos. La barra superior muestra la cantidad que está disponible para ser presupuestado. Esto se puede personalizar para cualquier período haciendo clic en la cantidad a la derecha. La cantidad que has gastado hasta ahora se muestra en la barra de abajo. Debajo están los gastos por presupuesto y lo que ha presupuestado para ellos.', - 'reports-index-start' => 'Firefly III da soporte a un buen numero de tipos de reportes. Lea sobre ellos haciendo clic en el icono en el tope de la esquina derecha.', + 'see_help_icon' => 'Sin embargo, el icono en la esquina superior derecha puede tener más información.', + 'index' => '¡Bienvenido a Firefly III! En esta página tendrá una vista rápida de sus finanzas. Para más información, mire sus cuentas → Cuentas de activos y, por supuesto, las páginas de presupuestos e Informes. O simplemente investigue la aplicación por su cuenta.', + 'accounts-index' => 'Las cajas de activos son sus cuentas de banco personales. Las cuentas de gastos contienen sus gastos habituales como compras y salidas con amigos. Las cuentas de ingresos repesentan diner que recibe de su trabajo, gobierno u otras fuentes de ingresos. En esta página puede editarlas o eliminarlas.', + 'budgets-index' => 'Esta página le muestra una visión general de sus presupuestos. La barra superior muestra la cantidad que está disponible para ser presupuestada. Esto se puede personalizar para cualquier período haciendo clic en la cantidad a la derecha. La cantidad que ha gastado hasta ahora se muestra en la barra de abajo. Debajo están los gastos por presupuesto y lo que ha presupuestado para ellos.', + 'reports-index-start' => 'Firefly III da soporte a un buen numero de tipos de informes. Lea sobre ellos haciendo clic en el icono en la esquina superior derecha.', 'reports-index-examples' => 'Asegúrese de revisar estos ejemplos: un resumen financiero mensual, un resumen financiero anual y una vista general del presupuesto.', - 'currencies-index' => 'Firefly III admite múltiples monedas. A pesar de que la moneda por defecto es el Euro, se puede seleccionar el Dólar de EE.UU, y muchas otras monedas. Como se puede ver se ha incluido una pequeña selección de monedas, pero puedes agregar tu propia moneda si lo deseas. Sin embargo, cambiar la moneda predeterminada no cambiará la moneda de las transacciones existentes: Firefly III admite el uso de varias monedas al mismo tiempo.', + 'currencies-index' => 'Firefly III admite múltiples monedas. A pesar de que la moneda por defecto es el Euro, se puede seleccionar el Dólar de EE. UU, y muchas otras monedas. Como se puede ver se ha incluido una pequeña selección de monedas, pero puede agregar su propia moneda si lo desea. Sin embargo, cambiar la moneda predeterminada no cambiará la moneda de las transacciones existentes: Firefly III admite el uso de varias monedas al mismo tiempo.', 'transactions-index' => 'Estos gastos, depósitos y transferencias no son particularmente imaginativos. Se han generado automáticamente.', - 'piggy-banks-index' => 'Como puede ver, hay tres alcancías. Utilice los botones más y menos para influir en la cantidad de dinero en cada alcancía. Haga clic en el nombre de la alcancía para ver la administración de cada una.', - 'import-index' => 'Any CSV file can be imported into Firefly III. It also supports importing data from bunq and Spectre. Other banks and financial aggregators will be implemented in the future. As a demo-user however, you can only see the "fake"-provider in action. It will generate some random transactions to show you how the process works.', - 'recurring-index' => 'Please note that this feature is under active development and may not work as expected.', - 'recurring-create' => 'Please note that this feature is under active development and may not work as expected.', + 'piggy-banks-index' => 'Como puede ver, hay tres huchas. Utilice los botones más y menos para influir en la cantidad de dinero en cada hucha. Haga clic en el nombre de la hucha para ver la administración de cada una.', + 'import-index' => 'Cualquier archivo CSV se puede importar en Firefly III. También soporta la importación de datos desde bunq y Spectre. Otros bancos y agregadores financieros se implementarán en el futuro. Sin embargo, como usuario de la demo, solo puede ver el "falso"-proveedor en acción. Generará algunas transacciones aleatorias para mostrarle cómo funciona el proceso.', + 'recurring-index' => 'Por favor, tenga en cuenta que esta característica está bajo desarrollo activo y puede no funcionar como se espera.', + 'recurring-create' => 'Por favor, tenga en cuenta que esta característica está bajo desarrollo activo y puede no funcionar como se espera.', ]; diff --git a/resources/lang/es_ES/firefly.php b/resources/lang/es_ES/firefly.php index 8c1bb6bf30..86d0b21cfb 100644 --- a/resources/lang/es_ES/firefly.php +++ b/resources/lang/es_ES/firefly.php @@ -172,15 +172,15 @@ return [ 'want_to_login' => 'Yo quiero entrar al sistema', 'button_register' => 'Registrar', 'authorization' => 'Autorización', - 'active_bills_only' => 'active bills only', - 'average_per_bill' => 'average per bill', - 'expected_total' => 'expected total', + 'active_bills_only' => 'solo facturas activas', + 'average_per_bill' => 'media por factura', + 'expected_total' => 'total esperado', // API access 'authorization_request' => 'Firefly III v:version Solicitud de autorización', 'authorization_request_intro' => 'El :client está solicitando permiso para acceder a su administración financiera. ¿Desea autorizar :client para acceder a estos registros?', 'scopes_will_be_able' => 'Esta aplicación podrá:', 'button_authorize' => 'Autorizar', - 'none_in_select_list' => '(none)', + 'none_in_select_list' => '(ninguno)', // check for updates: 'update_check_title' => 'Ver actualizaciones', @@ -269,10 +269,10 @@ return [ 'move_rule_group_down' => 'Mover el grupo de reglas hacia abajo', 'save_rules_by_moving' => 'Guardar esta(s) regla(s) moviéndola(s) a otro grupo:', 'make_new_rule' => 'Hacer nueva regla en grupo de regla ":title"', - 'rule_is_strict' => 'strict rule', - 'rule_is_not_strict' => 'non-strict rule', + 'rule_is_strict' => 'regla estricta', + 'rule_is_not_strict' => 'regla no estricta', 'rule_help_stop_processing' => 'Al marcar esta casilla, las reglas posteriores de este grupo no se ejecutarán.', - 'rule_help_strict' => 'In strict rules ALL triggers must fire for the action(s) to be executed. In non-strict rules, ANY trigger is enough for the action(s) to be executed.', + 'rule_help_strict' => 'En las reglas estrictas TODOS los desencadenadores deben actuar para acción(es) que será(n) ejecutada(s). En las reglas no estrictas, CUALQUIER desencadenador es suficiente para que la(s) acción(es) se ejecute(n).', 'rule_help_active' => 'Las reglas inactivas nunca se ejecutan.', 'stored_new_rule' => 'Guardar la nueva regla con titulo ":title"', 'deleted_rule' => 'Regla eliminada con titulo ":title"', @@ -350,8 +350,8 @@ return [ 'rule_trigger_budget_is' => 'Presupuesto es ":trigger_value"', 'rule_trigger_tag_is_choice' => '(una) etiqueta es..', 'rule_trigger_tag_is' => 'Una etiqueta es ":trigger_value"', - 'rule_trigger_currency_is_choice' => 'Transaction currency is..', - 'rule_trigger_currency_is' => 'Transaction currency is ":trigger_value"', + 'rule_trigger_currency_is_choice' => 'La moneda de la transacción es..', + 'rule_trigger_currency_is' => 'La moneda de la transacción es ":trigger_value"', 'rule_trigger_has_attachments_choice' => 'Tiene al menos tantos archivos adjuntos', 'rule_trigger_has_attachments' => 'Tiene al menos :trigger_value anexo (s)', 'rule_trigger_store_journal' => 'Cuando la transacción es creada', @@ -411,19 +411,19 @@ return [ 'rule_action_clear_notes_choice' => 'Eliminar cualquier nota', 'rule_action_clear_notes' => 'Eliminar cualquier nota', 'rule_action_set_notes_choice' => 'Establecer notas para..', - 'rule_action_link_to_bill_choice' => 'Link to a bill..', - 'rule_action_link_to_bill' => 'Link to bill ":action_value"', + 'rule_action_link_to_bill_choice' => 'Enlace a una factura..', + 'rule_action_link_to_bill' => 'Enlace a una factura ":action_value"', 'rule_action_set_notes' => 'Establecer notas para:action_value', 'rules_have_read_warning' => '¿Has leído la advertencia?', 'apply_rule_warning' => 'Advertencia: Ejecutando una regla (grupo) en una gran selección de transacciones podría tomar años, y podría exceder el tiempo de espera. Si lo hace, la regla (grupo) solo se aplicara a un subconjunto desconocido de sus transacciones. Esto podría dejar a su administración financiera en ruinas. por favor tenga cuidado.', - 'rulegroup_for_bills_title' => 'Rule group for bills', - 'rulegroup_for_bills_description' => 'A special rule group for all the rules that involve bills.', - 'rule_for_bill_title' => 'Auto-generated rule for bill ":name"', - 'rule_for_bill_description' => 'This rule is auto-generated to try to match bill ":name".', - 'create_rule_for_bill' => 'Create a new rule for bill ":name"', - 'create_rule_for_bill_txt' => 'You have just created a new bill called ":name", congratulations! Firefly III can automagically match new withdrawals to this bill. For example, whenever you pay your rent, the bill "rent" will be linked to the expense. This way, Firefly III can accurately show you which bills are due and which ones aren\'t. In order to do so, a new rule must be created. Firefly III has filled in some sensible defaults for you. Please make sure these are correct. If these values are correct, Firefly III will automatically link the correct withdrawal to the correct bill. Please check out the triggers to see if they are correct, and add some if they\'re wrong.', - 'new_rule_for_bill_title' => 'Rule for bill ":name"', + 'rulegroup_for_bills_title' => 'Regla de grupo para facturas', + 'rulegroup_for_bills_description' => 'Regla de grupo especial para todas las reglas que impliquen facturas.', + 'rule_for_bill_title' => 'Regla autogenerada para factura ":name"', + 'rule_for_bill_description' => 'Esta regla es autogenerada para intentar emparejar la factura ":name".', + 'create_rule_for_bill' => 'Crear una nueva regla para la factura ":name"', + 'create_rule_for_bill_txt' => 'Acaba de crear una nueva factura llamada ":name", ¡enhorabuena! Firefly III puede asociar de manera automágica nuevas retiradas con esta factura. Por ejemplo, siempre que pague su alquiler, la factura "alquiler" será enlazada a ese gasto. De esta manera, Firefly III puede mostrarle de forma precisa qué facturas han vencido y cuáles no. Para ello, una nueva regla debe ser creada. Si estos valores son correctos, Firefly III enlazará automáticamente el retiro correspondiente con la factura correcta. Por favor, revise los desencadenadores para ver si son correctos, y añada algunos si son incorrectos.', + 'new_rule_for_bill_title' => 'Regla para la factura ":name"', 'new_rule_for_bill_description' => 'This rule marks transactions for bill ":name".', // tags diff --git a/resources/lang/fr_FR/config.php b/resources/lang/fr_FR/config.php index 17cd33ed32..621da47c93 100644 --- a/resources/lang/fr_FR/config.php +++ b/resources/lang/fr_FR/config.php @@ -24,7 +24,7 @@ declare(strict_types=1); return [ 'html_language' => 'fr', - 'locale' => 'fr, French, fr_FR, fr_FR.utf8, fr_FR.UTF-8', + 'locale' => 'fr, French, fr_FR.utf8, fr_FR.UTF-8', 'month' => '%B %Y', 'month_and_day' => '%e %B %Y', 'month_and_date_day' => '%A %e %B %Y', diff --git a/resources/lang/fr_FR/firefly.php b/resources/lang/fr_FR/firefly.php index c8b87448d1..c48142c504 100644 --- a/resources/lang/fr_FR/firefly.php +++ b/resources/lang/fr_FR/firefly.php @@ -481,7 +481,7 @@ return [ 'list_page_size_label' => 'Nombre d\'élément par page', 'between_dates' => '(:start et :end)', 'pref_optional_fields_transaction' => 'Champs optionnels pour les transactions', - 'pref_optional_fields_transaction_help' => 'Par défaut, tous les champs ne sont pas activés lors de la création d\'une nouvelle transaction (en raison de possibles problèmes d', + 'pref_optional_fields_transaction_help' => 'Par défaut, tous les champs ne sont pas disponibles lors de la création d\'une nouvelle transaction (pour éviter de surcharger la page). Vous pouvez activer les champs suivants si vous pensez qu\'ils peuvent vous être utiles. Bien sûr, tout champ désactivé mais précédemment rempli restera visible quel que soit son paramétrage.', 'optional_tj_date_fields' => 'Champ date', 'optional_tj_business_fields' => 'Champs professionnels', 'optional_tj_attachment_fields' => 'Champs de pièces jointes', @@ -509,24 +509,24 @@ return [ 'delete_your_account_help' => 'La suppression de votre compte supprimera également les comptes, les opérations, tout ce que vous pourriez avoir enregistré dans Firefly III. Tout sera SUPPRIME.', 'delete_your_account_password' => 'Entrez votre mot de passe pour continuer.', 'password' => 'Mot de passe', - 'are_you_sure' => 'Etes-vous sûr ? Vous ne pourrez pas annuler cette action.', + 'are_you_sure' => 'Êtes-vous sûr ? Vous ne pourrez pas annuler cette action.', 'delete_account_button' => 'SUPPRIMER votre compte', - 'invalid_current_password' => 'Mot de passe actuel non valide!', - 'password_changed' => 'Mot de passe modifié!', + 'invalid_current_password' => 'Mot de passe actuel non valide !', + 'password_changed' => 'Mot de passe modifié !', 'should_change' => 'L’idée est de changer votre mot de passe.', - 'invalid_password' => 'Mot de passe incorrect!', + 'invalid_password' => 'Mot de passe incorrect !', 'what_is_pw_security' => 'Qu\'est-ce que "vérifier la sécurité du mot de passe" ?', 'secure_pw_title' => 'Comment choisir un mot de passe sécurisé', 'secure_pw_history' => 'En août 2017, le réputé chercheur en sécurité Troy Hunt a publié une liste de 306 millions de mots de passe volés. Ces mots de passe ont été volés lors de cambriolages d\'entreprises comme LinkedIn, Adobe ou NeoPets (et bien d’autres).', 'secure_pw_check_box' => 'En cochant la case, Firefly III enverra l\'empreinte SHA1 de votre mot de passe au site Web de Troy Hunt pour voir si c’est sur la liste. Cela vous empêchera d\'utiliser des mots de passe non sûr comme cela est recommandé dans les dernières Publication Special NIST à ce sujet.', 'secure_pw_sha1' => 'Mais je pensais que SHA1 était cassé ?', - 'secure_pw_hash_speed' => 'Yes, but not in this context. As you can read on the website detailing how they broke SHA1, it is now slightly easier to find a "collision": another digest that results in the same SHA1-hash. It now only takes 10,000 years using a single-GPU machine.', - 'secure_pw_hash_security' => 'This digest would not be equal to your password, nor would it be useful on (a site like) Firefly III. This application does not use SHA1 for password verification. So it is safe to check this box. Your password is hashed and only the first five characters of this digest are sent over HTTPS.', + 'secure_pw_hash_speed' => 'Oui, mais pas dans ce contexte. Comme vous pouvez le lire sur le site web détaillant comment SHA1 a été cassé, c’est maintenant légèrement plus facile de trouver une « collision » : une autre chaîne qui aboutit à la même empreinte SHA1. Maintenant, cela prend seulement 10 000 ans, à l’aide d’une machine mono-GPU.', + 'secure_pw_hash_security' => 'L\'empreinte ne sera pas identique à votre mot de passe et ne sera d\'aucune utilité pour Firefly III. Cette application n’utilise pas SHA1 pour la vérification des mots de passe. Il n\'y a donc aucun risque à cocher cette case. Votre mot de passer est haché et seuls les cinq premiers caractères de son empreinte sont envoyés via HTTPS.', 'secure_pw_should' => 'Dois-je cocher la case ?', - 'secure_pw_long_password' => 'Si vous venez de générer un long mot de passe unique pour Firefly III à l\'aide d\'un type de générateur de mot de passe : non.', + 'secure_pw_long_password' => 'Si vous venez de générer un long mot de passe unique pour Firefly III à l\'aide d\'un générateur de mot de passe : non.', 'secure_pw_short' => 'Si vous venez d\'entrer le mot de passe que vous utilisez toujours : oui.', 'command_line_token' => 'Jeton de ligne de commande', - 'explain_command_line_token' => 'Vous avez besoin de ce jeton pour exécuter des opérations optionnelles en ligne de commandes telles qu\'importer et exporter des données. Sans celui-ci, de telles commandes sensibles ne fonctionneront pas. Personne ne vous le demandera, pas même moi. Si vous craignez de le perdre, ou si vous êtes parano, régénérez ce jeton à l\'aide du bouton.', + 'explain_command_line_token' => 'Vous avez besoin de ce jeton pour exécuter des opérations optionnelles en ligne de commandes telles qu\'importer et exporter des données. Sans celui-ci, de telles commandes sensibles ne fonctionneront pas. Ne partagez jamais votre jeton. Personne ne vous le demandera, pas même moi. Si vous craignez de le perdre, ou si vous êtes parano, régénérez ce jeton à l\'aide du bouton.', 'regenerate_command_line_token' => 'Régénérer le jeton de ligne de commande', 'token_regenerated' => 'Un nouveau jeton en ligne de commande a été généré', 'change_your_email' => 'Changer votre adresse e-mail', @@ -558,9 +558,9 @@ return [ 'convert_is_already_type_Withdrawal' => 'Cette transaction est déjà un retrait', 'convert_is_already_type_Deposit' => 'Cette transaction est déjà un dépôt', 'convert_is_already_type_Transfer' => 'Cette transaction est déjà un transfert', - 'convert_to_Withdrawal' => 'Convertir ":description" vers un retrait', - 'convert_to_Deposit' => 'Convertir ":description" vers un dépôt', - 'convert_to_Transfer' => 'Convertir ":description" vers un transfert', + 'convert_to_Withdrawal' => 'Convertir ":description" en retrait', + 'convert_to_Deposit' => 'Convertir ":description" en dépôt', + 'convert_to_Transfer' => 'Convertir ":description" en transfert', 'convert_options_WithdrawalDeposit' => 'Convertir un retrait en dépôt', 'convert_options_WithdrawalTransfer' => 'Convertir un retrait en transfert', 'convert_options_DepositTransfer' => 'Convertir un dépôt en transfert', @@ -579,7 +579,7 @@ return [ 'convert_please_set_asset_source' => 'Veuillez choisir le compte d’actifs d\'où proviendra l’argent.', 'convert_explanation_withdrawal_deposit' => 'Si vous convertissez ce retrait en dépôt, :amount sera déposé dans :sourceName au lieu de le retirer.', 'convert_explanation_withdrawal_transfer' => 'Si vous convertissez cette dépense en transfert, :amount sera transféré de :sourceName vers un nouveau compte d\'actif, au lieu d\'être payé à :destinationName.', - 'convert_explanation_deposit_withdrawal' => 'Si vous convertissez ce dépôt dans un retrait :amount sera supprimé de :destinationName au lieu d\'y être ajouté.', + 'convert_explanation_deposit_withdrawal' => 'Si vous convertissez ce dépôt en retrait :amount sera supprimé de :destinationName au lieu d\'y être ajouté.', 'convert_explanation_deposit_transfer' => 'Si vous convertissez ce dépôt en transfert, :amount sera transféré d\'un compte d\'actif de votre choix en :destinationName.', 'convert_explanation_transfer_withdrawal' => 'Si vous convertissez ce transfert en retrait, le montant passera de :sourceName à une nouvelle destination comme une dépense, au lieu de :destinationName en tant que transfert.', 'convert_explanation_transfer_deposit' => 'Si vous convertissez ce transfert en dépôt, :amount sera déposé dans le compte :destinationName au lieu d\'y être transféré.', @@ -592,7 +592,7 @@ return [ // create new stuff: 'create_new_withdrawal' => 'Créer une nouvelle dépense', 'create_new_deposit' => 'Créer un nouveau dépôt', - 'create_new_transfer' => 'Creer un nouveau transfert', + 'create_new_transfer' => 'Créer un nouveau transfert', 'create_new_asset' => 'Créer un nouveau compte d’actif', 'create_new_expense' => 'Créer nouveau compte de dépenses', 'create_new_revenue' => 'Créer nouveau compte de recettes', @@ -602,7 +602,7 @@ return [ // currencies: 'create_currency' => 'Créer une nouvelle devise', 'store_currency' => 'Créer une nouvelle devise', - 'update_currency' => 'Mise à jour de la balance', + 'update_currency' => 'Mise à jour de la devise', 'new_default_currency' => ':name est maintenant la devise par défaut.', 'cannot_delete_currency' => 'Impossible de supprimer :name car il est encore utilisé.', 'deleted_currency' => 'Devise ":name" supprimée', @@ -625,15 +625,15 @@ return [ 'stored_new_budget' => 'Nouveau budget ":name" créé', 'available_between' => 'Disponible entre le :start et le :end', 'transactionsWithoutBudget' => 'Dépenses non budgétisées', - 'transactions_no_budget' => 'Dépenses non budgetisées entre le :start et le :end', + 'transactions_no_budget' => 'Dépenses non budgétisées entre le :start et le :end', 'spent_between' => 'Dépensé entre le :start et le :end', 'createBudget' => 'Nouveau budget', 'inactiveBudgets' => 'Budgets inactifs', - 'without_budget_between' => 'Opérations non budgetisées entre le :start et le :end', + 'without_budget_between' => 'Opérations non budgétisées entre le :start et le :end', 'delete_budget' => 'Supprimer le budget ":name"', 'deleted_budget' => 'Budget ":name" supprimé', 'edit_budget' => 'Modifier le budget ":name"', - 'updated_budget' => 'Mettre à jour le budget ":name"', + 'updated_budget' => 'Budget ":name" mis à jour', 'update_amount' => 'Mettre à jour le montant', 'update_budget' => 'Mettre à jour le budget', 'update_budget_amount_range' => 'Mettre à jour le montant disponible (prévu) entre le :start et le :end', @@ -664,7 +664,7 @@ return [ 'cannot_scan_inactive_bill' => 'Les factures inactives ne peuvent pas être analysées.', 'rescanned_bill' => 'Tout a été réexaminé, :total transaction(s) a/ont été liée(s) à la facture.', 'average_bill_amount_year' => 'Montant moyen des factures ( :year)', - 'average_bill_amount_overall' => 'Montant moyen de la facture (global)', + 'average_bill_amount_overall' => 'Montant moyen des factures (global)', 'bill_is_active' => 'Facture en cours', 'bill_expected_between' => 'Attendu entre le :start et le :end', 'bill_will_automatch' => 'La facture sera automatiquement liée aux transactions correspondantes', @@ -724,9 +724,9 @@ return [ 'account_type' => 'Type de compte', 'save_transactions_by_moving' => 'Enregistrer ces opération(s) en les déplaçant vers un autre compte :', 'stored_new_account' => 'Nouveau compte ":name" créé !', - 'updated_account' => 'Nom du compte ":name"', + 'updated_account' => 'Compte ":name" mis à jour', 'credit_card_options' => 'Cartes de crédit', - 'no_transactions_account' => 'Il n\'y a pas de transaction (dans cette période) pour le compte d\'actif ":name".', + 'no_transactions_account' => 'Il n\'y a pas de transaction (sur cette période) pour le compte d\'actif ":name".', 'no_data_for_chart' => 'Il n\'y a pas assez d\'informations (pour le moment) pour générer ce graphique.', 'select_more_than_one_account' => 'Veuillez sélectionner plus d\'un compte', 'select_more_than_one_category' => 'Veuillez sélectionner plus d\'une catégorie', @@ -763,7 +763,7 @@ return [ 'category' => 'Catégorie', 'delete_category' => 'Supprimer la catégorie ":name"', 'deleted_category' => 'Catégorie ":name" supprimée', - 'store_category' => 'Créer une nouvelle catgorie', + 'store_category' => 'Créer une nouvelle catégorie', 'stored_category' => 'Nouvelle catégorie stockée ":name"', 'without_category_between' => 'Sans catégorie entre :start et :end', @@ -778,14 +778,14 @@ return [ 'delete_deposit' => 'Supprimer le dépôt ":description"', 'delete_transfer' => 'Supprimer le transfert ":description"', 'deleted_withdrawal' => 'Retrait ":name" correctement supprimé', - 'deleted_deposit' => 'Dépot ":name" correctement supprimé', + 'deleted_deposit' => 'Dépôt ":name" correctement supprimé', 'deleted_transfer' => 'Opération ":name" correctement supprimée', 'stored_journal' => 'Opération ":description" créée avec succès', 'select_transactions' => 'Sélectionner des opérations', 'rule_group_select_transactions' => 'Appliquer le groupe de règles ":title" sur les transactions', 'rule_select_transactions' => 'Appliquer la règle ":title" sur les transactions', 'stop_selection' => 'Arrêter de sélectionner les transactions', - 'reconcile_selected' => 'Rapproché', + 'reconcile_selected' => 'Rapprocher', 'mass_delete_journals' => 'Supprimer un certain nombre de transactions', 'mass_edit_journals' => 'Modifier un certain nombre d’opérations', 'mass_bulk_journals' => 'Modifier un certain nombre d’opérations en masse', @@ -795,7 +795,7 @@ return [ 'no_bulk_budget' => 'Ne pas mettre à jour le budget', 'no_bulk_tags' => 'Ne pas mettre à jour le·s tag·s', 'bulk_edit' => 'Modification en masse', - 'cannot_edit_other_fields' => 'Vous ne pouvez pas modifier en masse d\'autres champs que ceux-ci, car il n’y a pas de place pour tous les montrer. S’il vous plaît suivez le lien et modifiez les par un par un, si vous devez modifier ces champs.', + 'cannot_edit_other_fields' => 'Vous ne pouvez pas modifier en masse d\'autres champs que ceux-ci, car il n’y a pas de place pour tous les afficher. S’il vous plaît suivez le lien et modifiez les un par un si vous devez modifier ces champs.', 'no_budget' => '(pas de budget)', 'no_budget_squared' => '(pas de budget)', 'perm-delete-many' => 'Supprimer de nombreux éléments en une seule fois peut engendrer des erreurs. Soyez prudent.', @@ -815,7 +815,7 @@ return [ 'submit' => 'Soumettre', 'getting_started' => 'Mise en route', 'to_get_started' => 'Vous venez d\'installer Firefly III avec succès. Pour commencer avec cet outil, entrez le nom de votre banque et le solde de votre compte courant principal. Ne vous inquiétez pas si vous avez plusieurs comptes. Vous pourrez les ajouter plus tard. Firefly III a simplement besoin de quelque chose pour commencer.', - 'savings_balance_text' => 'Firefly III créera automatiquement un compte d\'épargne pour vous. Par défaut, il n\'y aura pas d\'argent dans votre compte d\'épargne, mais si vous le dites à Firefly III, le solde sera stocké en tant que tel.', + 'savings_balance_text' => 'Firefly III créera automatiquement un compte d\'épargne pour vous. Par défaut, il n\'y aura pas d\'argent sur ce compte d\'épargne, mais si vous indiquez un montant à Firefly III, il l\'enregistrera en tant que solde.', 'finish_up_new_user' => 'C\'est tout ! Vous pouvez continuer en appuyant sur Envoyer. Vous passerez à l\'index de Firefly III.', 'stored_new_accounts_new_user' => 'Super ! Vos nouveaux comptes ont été créés.', 'set_preferred_language' => 'Si vous préférez utiliser Firefly III dans une autre langue, veuillez l\'indiquer ici.', @@ -831,7 +831,7 @@ return [ 'newWithdrawal' => 'Nouvelle dépense', 'newDeposit' => 'Nouveau dépôt', 'newTransfer' => 'Nouveau transfert', - 'bills_to_pay' => 'Facture à payer', + 'bills_to_pay' => 'Factures à payer', 'per_day' => 'Par jour', 'left_to_spend_per_day' => 'Reste à dépenser par jour', 'bills_paid' => 'Factures payées', @@ -858,7 +858,7 @@ return [ 'expenses' => 'Dépenses', 'income' => 'Recette / revenu', 'transfers' => 'Transferts', - 'moneyManagement' => 'Gérer les comptes', + 'moneyManagement' => 'Gestion financière', 'piggyBanks' => 'Tirelires', 'bills' => 'Factures', 'withdrawal' => 'Dépense', @@ -897,16 +897,16 @@ return [ 'report_all_time_quick' => 'Tous les temps, tous les comptes', 'reports_can_bookmark' => 'N’oubliez pas que les rapports peuvent être mis en signet.', 'incomeVsExpenses' => 'Revenus vs dépenses', - 'accountBalances' => 'Solde du compte', + 'accountBalances' => 'Soldes du compte', 'balanceStart' => 'Solde au début de la période', 'balanceEnd' => 'Solde à la fin de la période', 'splitByAccount' => 'Divisé par compte', 'coveredWithTags' => 'Recouvert de tags', 'leftInBudget' => 'Budget restant', - 'sumOfSums' => 'Montant des sommes', + 'sumOfSums' => 'Somme des montants', 'noCategory' => '(aucune catégorie)', 'notCharged' => 'Pas encore chargé', - 'inactive' => 'Désactivé', + 'inactive' => 'Inactif', 'active' => 'Actif', 'difference' => 'Différence', 'money_flowing_in' => 'Rentrée', @@ -921,7 +921,7 @@ return [ 'report_type_budget' => 'Rapport du budget', 'report_type_tag' => 'Rapport de tag', 'report_type_account' => 'Rapport de compte de dépenses/recettes', - 'more_info_help' => 'Plus d’informations sur ces types de rapports se trouvent dans les pages d’aide. Appuyez sur l’icône (?) dans le coin supérieur droit.', + 'more_info_help' => 'Vous trouverez plus d’informations sur ces différents types de rapports dans les pages d’aide. Appuyez sur l’icône (?) dans le coin supérieur droit.', 'report_included_accounts' => 'Comptes inclus', 'report_date_range' => 'Intervalle de dates', 'report_preset_ranges' => 'Pré-configurer les étendues', @@ -948,8 +948,8 @@ return [ 'expense_per_account' => 'Dépenses par compte', 'expense_per_tag' => 'Dépenses par tag', 'income_per_tag' => 'Revenus par tag', - 'include_expense_not_in_budget' => 'Frais inclus non compris dans le(s) budget(s) sélectionné(s)', - 'include_expense_not_in_account' => 'Frais inclus non compris dans le(s) compte(s) sélectionné(s)', + 'include_expense_not_in_budget' => 'Les dépenses incluses ne sont pas dans le(s) budget(s) sélectionné(s)', + 'include_expense_not_in_account' => 'Les dépenses incluses ne sont pas dans le(s) compte(s) sélectionné(s)', 'include_expense_not_in_category' => 'Les dépenses incluses ne sont pas dans la(les) catégorie(s) sélectionnée(s)', 'include_income_not_in_category' => 'Les revenus inclus ne sont pas dans la(les) catégorie(s) sélectionnée(s)', 'include_income_not_in_account' => 'Revenus inclus non compris dans le(s) compte(s) sélectionné(s)', @@ -979,7 +979,7 @@ return [ 'select_expense_revenue' => 'Sélectionner le compte de dépenses / recettes', // charts: - 'chart' => 'Diagramme', + 'chart' => 'Graphique', 'month' => 'Mois', 'budget' => 'Budget', 'spent' => 'Dépensé', @@ -990,7 +990,7 @@ return [ 'left' => 'Reste', 'max-amount' => 'Montant maximum', 'min-amount' => 'Montant minimum', - 'journal-amount' => 'Entrée de facture courante', + 'journal-amount' => 'Entrée de la facture courante', 'name' => 'Nom', 'date' => 'Date', 'paid' => 'Payé', @@ -1001,7 +1001,7 @@ return [ 'balance' => 'Solde', 'sum' => 'Somme', 'average' => 'Moyenne', - 'balanceFor' => 'Balance pour :name', + 'balanceFor' => 'Solde pour :name', // piggy banks: 'add_money_to_piggy' => 'Ajouter de l’argent à la tirelire ":name"', @@ -1009,7 +1009,7 @@ return [ 'new_piggy_bank' => 'Nouvelle tirelire', 'store_piggy_bank' => 'Créer une nouvelle tirelire', 'stored_piggy_bank' => 'Créer une nouvelle tirelire ":name"', - 'account_status' => 'Statut du compte', + 'account_status' => 'État du compte', 'left_for_piggy_banks' => 'Reste pour les tirelires', 'sum_of_piggy_banks' => 'Somme des tirelires', 'saved_so_far' => 'Mis de côté jusqu\'à présent', @@ -1024,7 +1024,7 @@ return [ 'remove' => 'Enlever', 'max_amount_add' => 'Le montant maximum que vous pouvez ajouter est', 'max_amount_remove' => 'Le montant maximum que vous pouvez supprimer est', - 'update_piggy_button' => 'Mise à jour tirelire', + 'update_piggy_button' => 'Mise à jour de la tirelire', 'update_piggy_title' => 'Mise à jour de tirelire ":name"', 'updated_piggy_bank' => 'Mise à jour de la tirelire ":name"', 'details' => 'Détails', @@ -1082,7 +1082,7 @@ return [ 'block_code_expired' => 'Compte démo expiré', 'no_block_code' => 'Aucune raison pour le blocage ou utilisateur non bloqué', 'block_code_email_changed' => 'L\'utilisateur n\'a pas encore confirmé sa nouvelle adresse e-mail', - 'admin_update_email' => 'Contrairement à la page de profil, l\'utilisateur NE SERA PAS informé que son adresse email a changé!', + 'admin_update_email' => 'Contrairement à la page de profil, l\'utilisateur NE SERA PAS informé que son adresse email a changé !', 'update_user' => 'Utilisateur mis à jour', 'updated_user' => 'Les données utilisateur ont bien été modifiées.', 'delete_user' => 'Supprimer l\'utilisateur :email', @@ -1108,9 +1108,9 @@ return [ 'link_type_help_outward' => 'Par exemple "est dupliqué par"', 'save_connections_by_moving' => 'Enregistrez le lien entre ces transactions en les déplaçant vers un autre type de lien :', 'do_not_save_connection' => '(ne pas enregistrer la connexion)', - 'link_transaction' => 'Lien transaction', + 'link_transaction' => 'Lier la transaction', 'link_to_other_transaction' => 'Lier cette transaction à une autre transaction', - 'select_transaction_to_link' => 'Sélectionnez une transaction pour lier cette transaction à', + 'select_transaction_to_link' => 'Sélectionnez une transaction à laquelle lier cette transaction', 'this_transaction' => 'Cette transaction', 'transaction' => 'Transaction', 'comments' => 'Commentaires', diff --git a/resources/lang/fr_FR/import.php b/resources/lang/fr_FR/import.php index 458d4bba90..4c50f8363b 100644 --- a/resources/lang/fr_FR/import.php +++ b/resources/lang/fr_FR/import.php @@ -219,7 +219,7 @@ return [ 'column_account-iban' => 'Compte d’actif (IBAN)', 'column_account-id' => 'Compte d\'actif (ID correspondant à FF3)', 'column_account-name' => 'Compte d’actif (nom)', - 'column_account-bic' => 'Asset account (BIC)', + 'column_account-bic' => 'Compte d’actif (BIC)', 'column_amount' => 'Montant', 'column_amount_foreign' => 'Montant (en devise étrangère)', 'column_amount_debit' => 'Montant (colonne débit)', diff --git a/resources/lang/fr_FR/list.php b/resources/lang/fr_FR/list.php index 24f87d378c..4c2827d1b2 100644 --- a/resources/lang/fr_FR/list.php +++ b/resources/lang/fr_FR/list.php @@ -112,7 +112,7 @@ return [ 'sepa-cc' => 'Code de compensation SEPA', 'sepa-ep' => 'Objectif externe SEPA', 'sepa-ci' => 'Identifiant Créancier SEPA', - 'sepa-batch-id' => 'SEPA Batch ID', + 'sepa-batch-id' => 'ID de lot SEPA', 'external_id' => 'ID externe', 'account_at_bunq' => 'Compte avec bunq', 'file_name' => 'Nom du fichier', diff --git a/resources/lang/fr_FR/validation.php b/resources/lang/fr_FR/validation.php index e8d28df7a6..a0d1f92e4e 100644 --- a/resources/lang/fr_FR/validation.php +++ b/resources/lang/fr_FR/validation.php @@ -50,8 +50,8 @@ return [ 'at_least_one_action' => 'Une règle doit avoir au moins une action.', 'base64' => 'Il ne s\'agit pas de données base64 valides.', 'model_id_invalid' => 'L’ID fournit ne semble pas valide pour ce modèle.', - 'more' => ':attribute must be larger than :value.', - 'less' => ':attribute must be less than 10,000,000', + 'more' => ':attribute doit être supérieur à :value.', + 'less' => ':attribute doit être inférieur à 10 000 000', 'active_url' => 'Le champ :attribute n\'est pas une URL valide.', 'after' => 'Le champ :attribute doit être une date postérieure à :date.', 'alpha' => 'Le champ :attribute doit seulement contenir des lettres.', diff --git a/resources/lang/it_IT/config.php b/resources/lang/it_IT/config.php index 8ba46bb310..e8eba2d877 100644 --- a/resources/lang/it_IT/config.php +++ b/resources/lang/it_IT/config.php @@ -24,7 +24,7 @@ declare(strict_types=1); return [ 'html_language' => 'it', - 'locale' => 'it, Italiano, it_IT, it_IT.utf8, it_IT.UTF-8', + 'locale' => 'it, Italiano, it_IT.utf8, it_IT.UTF-8', 'month' => '%B %Y', 'month_and_day' => '%e %B %Y', 'month_and_date_day' => '%A %B %e %Y', diff --git a/resources/lang/it_IT/firefly.php b/resources/lang/it_IT/firefly.php index 11ed5e9acf..34320af6a0 100644 --- a/resources/lang/it_IT/firefly.php +++ b/resources/lang/it_IT/firefly.php @@ -520,8 +520,8 @@ return [ 'secure_pw_history' => 'Nell\'agosto 2017 il noto ricercatore di sicurezza Troy Hunt ha pubblicato una lista di 306 milioni di password rubate. Queste password sono state rubate durante incursioni in aziende come LinkedIn, Adobe e NeoPets (e molte altre).', 'secure_pw_check_box' => 'Selezionando la casella, Firefly III invierà l\'hash SHA1 della tua password a il sito web di Troy Hunt per vedere se è presente nell\'elenco. Questo ti impedirà di usare password non sicure come raccomandato nell\'ultima Pubblicazione speciale NIST su questo argomento.', 'secure_pw_sha1' => 'Ma pensavo che SHA1 fosse rotto?', - 'secure_pw_hash_speed' => 'Yes, but not in this context. As you can read on the website detailing how they broke SHA1, it is now slightly easier to find a "collision": another digest that results in the same SHA1-hash. It now only takes 10,000 years using a single-GPU machine.', - 'secure_pw_hash_security' => 'This digest would not be equal to your password, nor would it be useful on (a site like) Firefly III. This application does not use SHA1 for password verification. So it is safe to check this box. Your password is hashed and only the first five characters of this digest are sent over HTTPS.', + 'secure_pw_hash_speed' => 'Sì, ma non in questo contesto. Come puoi leggere sul sito che descrive in dettaglio come è stato sconfitto SHA1, ora è leggermente più facile trovare una "collisione", ovvero un altro digest che abbia lo stesso hash in SHA1. Ora sono richiesti solamente 10.000 anni usando una macchina con una singola GPU.', + 'secure_pw_hash_security' => 'Questo digest non sarebbe uguale alla tua password né sarebbe utile su (un sito come) Firefly III. Questa applicazione non usa SHA1 per la verifica della password. Della tua password ne viene fatto l\'hash e solo i primi cinque caratteri di questo digest vengono inviati via HTTPS.', 'secure_pw_should' => 'Devo controllare la scatola?', 'secure_pw_long_password' => 'Se hai appena generato una password lunga e monouso per Firefly III utilizzando un qualche tipo di generatore di password: no.', 'secure_pw_short' => 'Se hai appena inserito la password, usi sempre: Si prega di.', diff --git a/resources/lang/it_IT/import.php b/resources/lang/it_IT/import.php index 0a410bf86e..c78c15921d 100644 --- a/resources/lang/it_IT/import.php +++ b/resources/lang/it_IT/import.php @@ -219,7 +219,7 @@ return [ 'column_account-iban' => 'Conto attività (IBAN)', 'column_account-id' => 'ID conto attività (mappa FF3)', 'column_account-name' => 'Conto attività (nome)', - 'column_account-bic' => 'Asset account (BIC)', + 'column_account-bic' => 'Conto attività (BIC)', 'column_amount' => 'Importo', 'column_amount_foreign' => 'Importo (in altra valuta)', 'column_amount_debit' => 'Importo (colonna debito)', diff --git a/resources/lang/it_IT/list.php b/resources/lang/it_IT/list.php index 6c3fa9e8e8..1fab9f426d 100644 --- a/resources/lang/it_IT/list.php +++ b/resources/lang/it_IT/list.php @@ -112,7 +112,7 @@ return [ 'sepa-cc' => 'Codice Compensazione SEPA', 'sepa-ep' => 'SEPA External Purpose', 'sepa-ci' => 'Identificativo Creditore SEPA', - 'sepa-batch-id' => 'SEPA Batch ID', + 'sepa-batch-id' => 'ID Batch SEPA', 'external_id' => 'ID esterno', 'account_at_bunq' => 'Conto con Bunq', 'file_name' => 'Nome del file', diff --git a/resources/lang/it_IT/validation.php b/resources/lang/it_IT/validation.php index d0daff498d..a5ddcfa8dd 100644 --- a/resources/lang/it_IT/validation.php +++ b/resources/lang/it_IT/validation.php @@ -50,8 +50,8 @@ return [ 'at_least_one_action' => 'Una regola deve avere almeno una azione.', 'base64' => 'Questi non sono dati codificati in base64 validi.', 'model_id_invalid' => 'L\'ID fornito sembra non essere valido per questo modello.', - 'more' => ':attribute must be larger than :value.', - 'less' => ':attribute must be less than 10,000,000', + 'more' => ':attribute deve essere più grande di :value.', + 'less' => ':attribute deve essere minore di 10.000.000', 'active_url' => ':attribute non è un URL valido.', 'after' => ':attribute deve essere una data dopo :date.', 'alpha' => ':attribute può contenere solo lettere.', diff --git a/resources/lang/nl_NL/config.php b/resources/lang/nl_NL/config.php index aab20ae1cb..148e4299da 100644 --- a/resources/lang/nl_NL/config.php +++ b/resources/lang/nl_NL/config.php @@ -24,7 +24,7 @@ declare(strict_types=1); return [ 'html_language' => 'nl', - 'locale' => 'nl, Dutch, nl_NL, nl_NL.utf8, nl_NL.UTF-8', + 'locale' => 'nl, Dutch, nl_NL.utf8, nl_NL.UTF-8', 'month' => '%B %Y', 'month_and_day' => '%e %B %Y', 'month_and_date_day' => '%A %e %B %Y', diff --git a/resources/lang/nl_NL/firefly.php b/resources/lang/nl_NL/firefly.php index cef0735c87..a00e4be5e2 100644 --- a/resources/lang/nl_NL/firefly.php +++ b/resources/lang/nl_NL/firefly.php @@ -520,8 +520,8 @@ return [ 'secure_pw_history' => 'De bekende security onderzoeker Troy Hunt gaf in augustus 2017 een lijst vrij van 306 miljoen gestolen wachtwoorden. Deze wachtwoorden waren gestolen tijdens hacks van bekende bedrijven zoals LinkedIn, Adobe en NeoPets (en vele anderen).', 'secure_pw_check_box' => 'Zet het vinkje, en Firefly III stuurt de eerste vijf karakters van de SHA1-hash van je wachtwoord naar de website van Troy Hunt om te zien of-ie op de lijst staat. Dit voorkomt dat je een onveilig wachtwoord gebruikt, zoals is voorgeschreven in een speciale publicatie van het NIST over dit onderwerp.', 'secure_pw_sha1' => 'Maar SHA1 is toch gebroken?', - 'secure_pw_hash_speed' => 'Yes, but not in this context. As you can read on the website detailing how they broke SHA1, it is now slightly easier to find a "collision": another digest that results in the same SHA1-hash. It now only takes 10,000 years using a single-GPU machine.', - 'secure_pw_hash_security' => 'This digest would not be equal to your password, nor would it be useful on (a site like) Firefly III. This application does not use SHA1 for password verification. So it is safe to check this box. Your password is hashed and only the first five characters of this digest are sent over HTTPS.', + 'secure_pw_hash_speed' => 'Ja, maar niet in deze context. Zoals je kan lezen op de website over SHA1 is het nu makkelijker geworden om een "collision" te vinden: twee stukken tekst die dezelfde SHA1-hash opleveren. Dit kan nu in 10.000 jaar op een machine met één grafische kaart.', + 'secure_pw_hash_security' => 'Deze hash is niet gelijk aan jouw wachtwoord, noch is deze te gebruiken op een site (zoals) Firefly III. Deze app gebruikt geen SHA1 voor wachtwoordverificatie. Dat maakt het veilig om de checkbox aan te vinken. Je wachtwoord wordt gehasht en alleen de eerste vijf karakters van die hash worden verstuurt over HTTPS.', 'secure_pw_should' => 'Vinkje zetten of niet?', 'secure_pw_long_password' => 'Als je net een lang wachtwoord hebt gegenereerd met een password generator tool: nee.', 'secure_pw_short' => 'Gebruik je het wachtwoord dat je altijd gebruikt? Ja, doen!', diff --git a/resources/lang/nl_NL/import.php b/resources/lang/nl_NL/import.php index 1f8d4b461b..d68ff96f74 100644 --- a/resources/lang/nl_NL/import.php +++ b/resources/lang/nl_NL/import.php @@ -219,7 +219,7 @@ return [ 'column_account-iban' => 'Betaalrekening (IBAN)', 'column_account-id' => 'Betaalrekening (ID gelijk aan FF3)', 'column_account-name' => 'Betaalrekeningnaam', - 'column_account-bic' => 'Asset account (BIC)', + 'column_account-bic' => 'Betaalrekening (BIC)', 'column_amount' => 'Bedrag', 'column_amount_foreign' => 'Bedrag (in vreemde valuta)', 'column_amount_debit' => 'Bedrag (debetkolom)', diff --git a/resources/lang/nl_NL/list.php b/resources/lang/nl_NL/list.php index b52c48113a..2e258977ad 100644 --- a/resources/lang/nl_NL/list.php +++ b/resources/lang/nl_NL/list.php @@ -112,7 +112,7 @@ return [ 'sepa-cc' => 'SEPA vrijwaringscode', 'sepa-ep' => 'SEPA transactiedoeleinde', 'sepa-ci' => 'SEPA crediteuridentificatie', - 'sepa-batch-id' => 'SEPA Batch ID', + 'sepa-batch-id' => 'SEPA batchnummer', 'external_id' => 'Externe ID', 'account_at_bunq' => 'Bunq-account', 'file_name' => 'Bestandsnaam', diff --git a/resources/lang/nl_NL/validation.php b/resources/lang/nl_NL/validation.php index 06eeccb120..d1b75de2a3 100644 --- a/resources/lang/nl_NL/validation.php +++ b/resources/lang/nl_NL/validation.php @@ -50,8 +50,8 @@ return [ 'at_least_one_action' => 'De regel moet minstens één actie hebben.', 'base64' => 'Dit is geen geldige base64 gecodeerde data.', 'model_id_invalid' => 'Dit ID past niet bij dit object.', - 'more' => ':attribute must be larger than :value.', - 'less' => ':attribute must be less than 10,000,000', + 'more' => ':attribute moet groter zijn dan :value.', + 'less' => ':attribute moet minder zijn dan 10.000.000', 'active_url' => ':attribute is geen geldige URL.', 'after' => ':attribute moet een datum na :date zijn.', 'alpha' => ':attribute mag alleen letters bevatten.',