diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index e13bfb2bbf..90eb9626df 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -16,7 +16,7 @@ body: options: - label: ... [the documentation](https://docs.firefly-iii.org/) does not mention anything about my problem - label: ... there are no open or closed issues that are related to my problem - - label: ... it's [definitely me, not you](https://github.com/firefly-iii/firefly-iii/blob/main/.github/its_you_not_me.md) + - label: ... it's [definitely a Firefly III issue, not me](https://github.com/firefly-iii/firefly-iii/blob/main/.github/its_you_not_me.md) - type: textarea attributes: @@ -27,18 +27,18 @@ body: - type: textarea attributes: - label: Expected behaviour - description: Please describe precisely what you'd expect to happen. + label: Debug information + description: Please provide the table from the /debug page. Do not add backticks or quotes. + placeholder: The output from the /debug page validations: required: true - type: textarea attributes: - label: Debug information - description: Please provide the table from the /debug page - placeholder: The output from the /debug page + label: Expected behaviour + description: Please describe precisely what you'd expect to happen. Be specific. validations: - required: true + required: false - type: textarea attributes: diff --git a/.github/ISSUE_TEMPLATE/fr.yml b/.github/ISSUE_TEMPLATE/fr.yml index 0267bfa1bc..679d35ae2a 100644 --- a/.github/ISSUE_TEMPLATE/fr.yml +++ b/.github/ISSUE_TEMPLATE/fr.yml @@ -8,9 +8,9 @@ body: options: - label: I've read the [support guidelines](https://github.com/firefly-iii/firefly-iii/blob/main/.github/support.md) required: true - - label: My request is not listed as [a very good idea, but unfortunately...](https://docs.firefly-iii.org/firefly-iii/about-firefly-iii/what-its-not/) + - label: My request is not listed as [a very good idea, but unfortunately...](https://docs.firefly-iii.org/firefly-iii/more-information/what-its-not/) required: true - - label: I've used [the search](https://github.com/firefly-iii/firefly-iii/issues?q=is%3Aissue) and this has not been discussed before. + - label: I've used [the search](https://github.com/firefly-iii/firefly-iii/issues?q=is%3Aissue) and this has not been requested before. required: true - type: textarea @@ -18,9 +18,9 @@ body: label: Description description: Please describe your feature request placeholder: | - - I would like Firefly III to do ABC. - - What if you would add feature XYZ? - - Firefly III doesn't do DEF. + - I would like Firefly III to do (thing). + - What if you would add feature (feature here)? + - Firefly III doesn't do (thing). validations: required: true diff --git a/app/Api/V1/Controllers/Data/DestroyController.php b/app/Api/V1/Controllers/Data/DestroyController.php index 18de6b961c..7da833a4b4 100644 --- a/app/Api/V1/Controllers/Data/DestroyController.php +++ b/app/Api/V1/Controllers/Data/DestroyController.php @@ -94,19 +94,39 @@ class DestroyController extends Controller case 'object_groups': $this->destroyObjectGroups(); break; + case 'not_assets_liabilities': + $this->destroyAccounts( + [ + AccountType::BENEFICIARY, + AccountType::CASH, + AccountType::CREDITCARD, + AccountType::DEFAULT, + AccountType::EXPENSE, + AccountType::IMPORT, + AccountType::INITIAL_BALANCE, + AccountType::LIABILITY_CREDIT, + AccountType::RECONCILIATION, + AccountType::REVENUE, + ] + ); + break; case 'accounts': $this->destroyAccounts( [ AccountType::ASSET, - AccountType::DEFAULT, AccountType::BENEFICIARY, - AccountType::EXPENSE, - AccountType::REVENUE, - AccountType::INITIAL_BALANCE, + AccountType::CASH, + AccountType::CREDITCARD, AccountType::DEBT, + AccountType::DEFAULT, + AccountType::EXPENSE, + AccountType::IMPORT, + AccountType::INITIAL_BALANCE, + AccountType::LIABILITY_CREDIT, AccountType::LOAN, AccountType::MORTGAGE, - AccountType::CREDITCARD, + AccountType::RECONCILIATION, + AccountType::REVENUE, ] ); break; diff --git a/app/Api/V1/Requests/Data/DestroyRequest.php b/app/Api/V1/Requests/Data/DestroyRequest.php index bc8026c703..299ecf138b 100644 --- a/app/Api/V1/Requests/Data/DestroyRequest.php +++ b/app/Api/V1/Requests/Data/DestroyRequest.php @@ -53,7 +53,8 @@ class DestroyRequest extends FormRequest public function rules(): array { $valid = 'budgets,bills,piggy_banks,rules,recurring,categories,tags,object_groups'. - ',accounts,asset_accounts,expense_accounts,revenue_accounts,liabilities,transactions,withdrawals,deposits,transfers'; + ',accounts,asset_accounts,expense_accounts,revenue_accounts,liabilities,transactions,withdrawals,deposits,transfers'. + ',not_assets_liabilities'; return [ 'objects' => sprintf('required|min:1|string|in:%s', $valid), diff --git a/app/Helpers/Collector/GroupCollector.php b/app/Helpers/Collector/GroupCollector.php index 43264519bf..bcd87724a5 100644 --- a/app/Helpers/Collector/GroupCollector.php +++ b/app/Helpers/Collector/GroupCollector.php @@ -37,6 +37,7 @@ use FireflyIII\Helpers\Collector\Extensions\TimeCollection; use FireflyIII\Models\TransactionCurrency; use FireflyIII\Models\TransactionGroup; use FireflyIII\Models\TransactionJournal; +use FireflyIII\Models\TransactionType; use FireflyIII\User; use Illuminate\Database\Eloquent\Builder as EloquentBuilder; use Illuminate\Database\Query\JoinClause; @@ -436,6 +437,10 @@ class GroupCollector implements GroupCollectorInterface public function exists(): GroupCollectorInterface { $this->query->whereNull('transaction_groups.deleted_at'); + $this->query->whereNotIn( + 'transaction_types.type', + [TransactionType::LIABILITY_CREDIT, TransactionType::OPENING_BALANCE, TransactionType::RECONCILIATION] + ); return $this; } diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 082d13b5d5..8cf4a02824 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -28,10 +28,12 @@ use FireflyIII\Http\Controllers\Controller; use FireflyIII\Http\Middleware\IsDemoUser; use FireflyIII\Http\Requests\InviteUserFormRequest; use FireflyIII\Http\Requests\UserFormRequest; +use FireflyIII\Models\InvitedUser; use FireflyIII\Repositories\User\UserRepositoryInterface; use FireflyIII\User; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; +use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Routing\Redirector; use Illuminate\View\View; @@ -87,6 +89,24 @@ class UserController extends Controller return view('admin.users.delete', compact('user', 'subTitle')); } + /** + * @param InvitedUser $invitedUser + * @return RedirectResponse + */ + public function deleteInvite(InvitedUser $invitedUser): JsonResponse + { + Log::debug('Will now delete invitation'); + if ($invitedUser->redeemed) { + Log::debug('Is already redeemed.'); + session()->flash('error', trans('firefly.invite_is_already_redeemed', ['address' => $invitedUser->email])); + return response()->json(['success' => false]); + } + Log::debug('Delete!'); + session()->flash('success', trans('firefly.invite_is_deleted', ['address' => $invitedUser->email])); + $this->repository->deleteInvite($invitedUser); + return response()->json(['success' => true]); + } + /** * Destroy a user. * diff --git a/app/Http/Controllers/DebugController.php b/app/Http/Controllers/DebugController.php index 6a6d85ed1a..27bb83334a 100644 --- a/app/Http/Controllers/DebugController.php +++ b/app/Http/Controllers/DebugController.php @@ -187,7 +187,7 @@ class DebugController extends Controller foreach ($handlers as $handler) { if ($handler instanceof RotatingFileHandler) { $logFile = $handler->getUrl(); - if (null !== $logFile) { + if (null !== $logFile && file_exists($logFile)) { $logContent = file_get_contents($logFile); } } diff --git a/app/Http/Middleware/AcceptHeaders.php b/app/Http/Middleware/AcceptHeaders.php index 7905d004b6..19c243e8e9 100644 --- a/app/Http/Middleware/AcceptHeaders.php +++ b/app/Http/Middleware/AcceptHeaders.php @@ -56,11 +56,11 @@ class AcceptHeaders } // if bad 'Content-Type' header, refuse service. if (('POST' === $method || 'PUT' === $method) && !$request->hasHeader('Content-Type')) { - $error = new BadHttpHeaderException('Content-Type header cannot be empty'); + $error = new BadHttpHeaderException('Content-Type header cannot be empty.'); $error->statusCode = 415; throw $error; } - if (('POST' === $method || 'PUT' === $method) && !in_array($submitted, $contentTypes, true)) { + if (('POST' === $method || 'PUT' === $method) && !$this->acceptsHeader($submitted, $contentTypes)) { $error = new BadHttpHeaderException(sprintf('Content-Type cannot be "%s"', $submitted)); $error->statusCode = 415; throw $error; @@ -74,4 +74,17 @@ class AcceptHeaders return $next($request); } + + /** + * @param string $content + * @param array $accepted + * @return bool + */ + private function acceptsHeader(string $content, array $accepted): bool + { + if (str_contains($content, ';')) { + $content = trim(explode(';', $content)[0]); + } + return in_array($content, $accepted, true); + } } diff --git a/app/Jobs/DownloadExchangeRates.php b/app/Jobs/DownloadExchangeRates.php index 72c2cf6170..ccd07559d7 100644 --- a/app/Jobs/DownloadExchangeRates.php +++ b/app/Jobs/DownloadExchangeRates.php @@ -30,6 +30,7 @@ use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface; use FireflyIII\Repositories\User\UserRepositoryInterface; use GuzzleHttp\Client; use GuzzleHttp\Exception\GuzzleException; +use GuzzleHttp\Exception\RequestException; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; @@ -102,7 +103,12 @@ class DownloadExchangeRates implements ShouldQueue $base = sprintf('%s/%s/%s', (string)config('cer.url'), $this->date->year, $this->date->isoWeek); $client = new Client(); $url = sprintf('%s/%s.json', $base, $currency->code); - $res = $client->get($url); + try { + $res = $client->get($url); + } catch(RequestException $e) { + app('log')->warning(sprintf('Trying to grab "%s" resulted in error "%d".', $url, $e->getMessage())); + return; + } $statusCode = $res->getStatusCode(); if (200 !== $statusCode) { app('log')->warning(sprintf('Trying to grab "%s" resulted in status code %d.', $url, $statusCode)); diff --git a/app/Jobs/MailError.php b/app/Jobs/MailError.php index 688a2ba15f..4d3cedadee 100644 --- a/app/Jobs/MailError.php +++ b/app/Jobs/MailError.php @@ -91,6 +91,15 @@ class MailError extends Job implements ShouldQueue } ); } catch (Exception $e) { // intentional generic exception + $message = $e->getMessage(); + if (str_contains($message, 'Bcc')) { + Log::warning('[Bcc] Could not email or log the error. Please validate your email settings, use the .env.example file as a guide.'); + return; + } + if (str_contains($message, 'RFC 2822')) { + Log::warning('[RFC] Could not email or log the error. Please validate your email settings, use the .env.example file as a guide.'); + return; + } throw new FireflyException($e->getMessage(), 0, $e); } } diff --git a/app/Models/Account.php b/app/Models/Account.php index ca00205b86..608dcdfbc6 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -90,7 +90,6 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static EloquentBuilder|Account whereVirtualBalance($value) * @method static Builder|Account withTrashed() * @method static Builder|Account withoutTrashed() - * @mixin Eloquent * @property Carbon $lastActivityDate * @property string $startBalance * @property string $endBalance @@ -103,6 +102,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @property string $current_debt * @property int|null $user_group_id * @method static EloquentBuilder|Account whereUserGroupId($value) + * @mixin Eloquent */ class Account extends Model { diff --git a/app/Models/Attachment.php b/app/Models/Attachment.php index fb1b835677..67c5a9d55b 100644 --- a/app/Models/Attachment.php +++ b/app/Models/Attachment.php @@ -78,9 +78,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereUserId($value) * @method static Builder|Attachment withTrashed() * @method static Builder|Attachment withoutTrashed() - * @mixin Eloquent * @property int|null $user_group_id * @method static \Illuminate\Database\Eloquent\Builder|Attachment whereUserGroupId($value) + * @mixin Eloquent */ class Attachment extends Model { diff --git a/app/Models/AuditLogEntry.php b/app/Models/AuditLogEntry.php index 5509e5431f..adbada0ab5 100644 --- a/app/Models/AuditLogEntry.php +++ b/app/Models/AuditLogEntry.php @@ -42,7 +42,6 @@ use Illuminate\Support\Carbon; * @method static Builder|AuditLogEntry query() * @method static \Illuminate\Database\Query\Builder|AuditLogEntry withTrashed() * @method static \Illuminate\Database\Query\Builder|AuditLogEntry withoutTrashed() - * @mixin Eloquent * @property int $id * @property Carbon|null $created_at * @property Carbon|null $updated_at @@ -65,6 +64,7 @@ use Illuminate\Support\Carbon; * @method static Builder|AuditLogEntry whereDeletedAt($value) * @method static Builder|AuditLogEntry whereId($value) * @method static Builder|AuditLogEntry whereUpdatedAt($value) + * @mixin Eloquent */ class AuditLogEntry extends Model { diff --git a/app/Models/AvailableBudget.php b/app/Models/AvailableBudget.php index 7b14ebf2f3..6e1fd36526 100644 --- a/app/Models/AvailableBudget.php +++ b/app/Models/AvailableBudget.php @@ -62,9 +62,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static \Illuminate\Database\Eloquent\Builder|AvailableBudget whereUserId($value) * @method static Builder|AvailableBudget withTrashed() * @method static Builder|AvailableBudget withoutTrashed() - * @mixin Eloquent * @property int|null $user_group_id * @method static \Illuminate\Database\Eloquent\Builder|AvailableBudget whereUserGroupId($value) + * @mixin Eloquent */ class AvailableBudget extends Model { diff --git a/app/Models/Bill.php b/app/Models/Bill.php index 06533eda3b..4458013bc6 100644 --- a/app/Models/Bill.php +++ b/app/Models/Bill.php @@ -95,9 +95,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static \Illuminate\Database\Eloquent\Builder|Bill whereUserId($value) * @method static Builder|Bill withTrashed() * @method static Builder|Bill withoutTrashed() - * @mixin Eloquent * @property int|null $user_group_id * @method static \Illuminate\Database\Eloquent\Builder|Bill whereUserGroupId($value) + * @mixin Eloquent */ class Bill extends Model { diff --git a/app/Models/Budget.php b/app/Models/Budget.php index 91e50d746a..ff2379c88e 100644 --- a/app/Models/Budget.php +++ b/app/Models/Budget.php @@ -74,12 +74,12 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static \Illuminate\Database\Eloquent\Builder|Budget whereUserId($value) * @method static Builder|Budget withTrashed() * @method static Builder|Budget withoutTrashed() - * @mixin Eloquent * @property string $email * @property int|null $user_group_id * @method static \Illuminate\Database\Eloquent\Builder|Budget whereUserGroupId($value) * @property-read Collection|Note[] $notes * @property-read int|null $notes_count + * @mixin Eloquent */ class Budget extends Model { diff --git a/app/Models/Category.php b/app/Models/Category.php index 5b46982225..db4b47f7c3 100644 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -68,9 +68,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static \Illuminate\Database\Eloquent\Builder|Category whereUserId($value) * @method static Builder|Category withTrashed() * @method static Builder|Category withoutTrashed() - * @mixin Eloquent * @property int|null $user_group_id * @method static \Illuminate\Database\Eloquent\Builder|Category whereUserGroupId($value) + * @mixin Eloquent */ class Category extends Model { diff --git a/app/Models/CurrencyExchangeRate.php b/app/Models/CurrencyExchangeRate.php index 446a60ab99..8197d802a1 100644 --- a/app/Models/CurrencyExchangeRate.php +++ b/app/Models/CurrencyExchangeRate.php @@ -60,9 +60,9 @@ use Illuminate\Support\Carbon; * @method static Builder|CurrencyExchangeRate whereUpdatedAt($value) * @method static Builder|CurrencyExchangeRate whereUserId($value) * @method static Builder|CurrencyExchangeRate whereUserRate($value) - * @mixin Eloquent * @property int|null $user_group_id * @method static Builder|CurrencyExchangeRate whereUserGroupId($value) + * @mixin Eloquent */ class CurrencyExchangeRate extends Model { diff --git a/app/Models/InvitedUser.php b/app/Models/InvitedUser.php index 0fac9d22c9..ec15b70ae3 100644 --- a/app/Models/InvitedUser.php +++ b/app/Models/InvitedUser.php @@ -30,6 +30,7 @@ use FireflyIII\User; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; /** * Class InvitedUser @@ -38,7 +39,6 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; * @method static Builder|InvitedUser newModelQuery() * @method static Builder|InvitedUser newQuery() * @method static Builder|InvitedUser query() - * @mixin Eloquent * @property int $id * @property Carbon|null $created_at * @property Carbon|null $updated_at @@ -55,6 +55,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; * @method static Builder|InvitedUser whereRedeemed($value) * @method static Builder|InvitedUser whereUpdatedAt($value) * @method static Builder|InvitedUser whereUserId($value) + * @mixin Eloquent */ class InvitedUser extends Model { @@ -72,4 +73,25 @@ class InvitedUser extends Model { return $this->belongsTo(User::class); } + + /** + * Route binder. Converts the key in the URL to the specified object (or throw 404). + * + * @param string $value + * + * @return WebhookAttempt + * @throws NotFoundHttpException + */ + public static function routeBinder(string $value): InvitedUser + { + if (auth()->check()) { + $attemptId = (int)$value; + /** @var InvitedUser $attempt */ + $attempt = self::find($attemptId); + if (null !== $attempt) { + return $attempt; + } + } + throw new NotFoundHttpException(); + } } diff --git a/app/Models/Recurrence.php b/app/Models/Recurrence.php index 97fb0958c5..43740a8b54 100644 --- a/app/Models/Recurrence.php +++ b/app/Models/Recurrence.php @@ -85,9 +85,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static \Illuminate\Database\Eloquent\Builder|Recurrence whereUserId($value) * @method static Builder|Recurrence withTrashed() * @method static Builder|Recurrence withoutTrashed() - * @mixin Eloquent * @property int|null $user_group_id * @method static \Illuminate\Database\Eloquent\Builder|Recurrence whereUserGroupId($value) + * @mixin Eloquent */ class Recurrence extends Model { diff --git a/app/Models/RecurrenceTransaction.php b/app/Models/RecurrenceTransaction.php index 8eef7928de..9969113ab2 100644 --- a/app/Models/RecurrenceTransaction.php +++ b/app/Models/RecurrenceTransaction.php @@ -73,10 +73,10 @@ use Illuminate\Support\Carbon; * @method static \Illuminate\Database\Eloquent\Builder|RecurrenceTransaction whereUpdatedAt($value) * @method static Builder|RecurrenceTransaction withTrashed() * @method static Builder|RecurrenceTransaction withoutTrashed() - * @mixin Eloquent * @property int|null $transaction_type_id * @method static \Illuminate\Database\Eloquent\Builder|RecurrenceTransaction whereTransactionTypeId($value) * @property-read TransactionType|null $transactionType + * @mixin Eloquent */ class RecurrenceTransaction extends Model { diff --git a/app/Models/Rule.php b/app/Models/Rule.php index a341663a62..e3c8d4534a 100644 --- a/app/Models/Rule.php +++ b/app/Models/Rule.php @@ -74,9 +74,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static \Illuminate\Database\Eloquent\Builder|Rule whereUserId($value) * @method static Builder|Rule withTrashed() * @method static Builder|Rule withoutTrashed() - * @mixin Eloquent * @property int|null $user_group_id * @method static \Illuminate\Database\Eloquent\Builder|Rule whereUserGroupId($value) + * @mixin Eloquent */ class Rule extends Model { diff --git a/app/Models/RuleGroup.php b/app/Models/RuleGroup.php index 824104a160..df2f95dce2 100644 --- a/app/Models/RuleGroup.php +++ b/app/Models/RuleGroup.php @@ -66,9 +66,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static \Illuminate\Database\Eloquent\Builder|RuleGroup whereUserId($value) * @method static Builder|RuleGroup withTrashed() * @method static Builder|RuleGroup withoutTrashed() - * @mixin Eloquent * @property int|null $user_group_id * @method static \Illuminate\Database\Eloquent\Builder|RuleGroup whereUserGroupId($value) + * @mixin Eloquent */ class RuleGroup extends Model { diff --git a/app/Models/Tag.php b/app/Models/Tag.php index 124c231e52..2f985f0928 100644 --- a/app/Models/Tag.php +++ b/app/Models/Tag.php @@ -75,9 +75,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static \Illuminate\Database\Eloquent\Builder|Tag whereZoomLevel($value) * @method static Builder|Tag withTrashed() * @method static Builder|Tag withoutTrashed() - * @mixin Eloquent * @property int|null $user_group_id * @method static \Illuminate\Database\Eloquent\Builder|Tag whereUserGroupId($value) + * @mixin Eloquent */ class Tag extends Model { diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php index 7a6af8e9c7..ede4e29e4c 100644 --- a/app/Models/Transaction.php +++ b/app/Models/Transaction.php @@ -84,8 +84,8 @@ use Illuminate\Database\Eloquent\SoftDeletes; * @method static Builder|Transaction whereUpdatedAt($value) * @method static \Illuminate\Database\Query\Builder|Transaction withTrashed() * @method static \Illuminate\Database\Query\Builder|Transaction withoutTrashed() - * @mixin Eloquent * @property int $the_count + * @mixin Eloquent */ class Transaction extends Model { diff --git a/app/Models/TransactionGroup.php b/app/Models/TransactionGroup.php index 55ffe8b5a4..69506c05b3 100644 --- a/app/Models/TransactionGroup.php +++ b/app/Models/TransactionGroup.php @@ -59,9 +59,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static \Illuminate\Database\Eloquent\Builder|TransactionGroup whereUserId($value) * @method static Builder|TransactionGroup withTrashed() * @method static Builder|TransactionGroup withoutTrashed() - * @mixin Eloquent * @property int|null $user_group_id * @method static \Illuminate\Database\Eloquent\Builder|TransactionGroup whereUserGroupId($value) + * @mixin Eloquent */ class TransactionGroup extends Model { diff --git a/app/Models/TransactionJournal.php b/app/Models/TransactionJournal.php index 3777407c15..8e2e87570c 100644 --- a/app/Models/TransactionJournal.php +++ b/app/Models/TransactionJournal.php @@ -112,12 +112,12 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static EloquentBuilder|TransactionJournal whereUserId($value) * @method static \Illuminate\Database\Query\Builder|TransactionJournal withTrashed() * @method static \Illuminate\Database\Query\Builder|TransactionJournal withoutTrashed() - * @mixin Eloquent * @property-read Collection|Location[] $locations * @property-read int|null $locations_count * @property int $the_count * @property int|null $user_group_id * @method static EloquentBuilder|TransactionJournal whereUserGroupId($value) + * @mixin Eloquent */ class TransactionJournal extends Model { diff --git a/app/Models/Webhook.php b/app/Models/Webhook.php index cc41df4b18..2fd92377cd 100644 --- a/app/Models/Webhook.php +++ b/app/Models/Webhook.php @@ -69,13 +69,13 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static Builder|Webhook whereUserId($value) * @method static \Illuminate\Database\Query\Builder|Webhook withTrashed() * @method static \Illuminate\Database\Query\Builder|Webhook withoutTrashed() - * @mixin Eloquent * @property string $title * @property string $secret * @method static Builder|Webhook whereSecret($value) * @method static Builder|Webhook whereTitle($value) * @property int|null $user_group_id * @method static Builder|Webhook whereUserGroupId($value) + * @mixin Eloquent */ class Webhook extends Model { diff --git a/app/Models/WebhookAttempt.php b/app/Models/WebhookAttempt.php index 85d617ac33..0f9a04588e 100644 --- a/app/Models/WebhookAttempt.php +++ b/app/Models/WebhookAttempt.php @@ -55,10 +55,10 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereStatusCode($value) * @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|WebhookAttempt whereWebhookMessageId($value) - * @mixin Eloquent * @method static Builder|WebhookAttempt onlyTrashed() * @method static Builder|WebhookAttempt withTrashed() * @method static Builder|WebhookAttempt withoutTrashed() + * @mixin Eloquent */ class WebhookAttempt extends Model { diff --git a/app/Models/WebhookMessage.php b/app/Models/WebhookMessage.php index 46740053a7..b13333ddec 100644 --- a/app/Models/WebhookMessage.php +++ b/app/Models/WebhookMessage.php @@ -63,9 +63,9 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static Builder|WebhookMessage whereUpdatedAt($value) * @method static Builder|WebhookMessage whereUuid($value) * @method static Builder|WebhookMessage whereWebhookId($value) - * @mixin Eloquent * @property-read Collection|WebhookAttempt[] $webhookAttempts * @property-read int|null $webhook_attempts_count + * @mixin Eloquent */ class WebhookMessage extends Model { diff --git a/app/Repositories/User/UserRepository.php b/app/Repositories/User/UserRepository.php index b488822acb..570cf7c105 100644 --- a/app/Repositories/User/UserRepository.php +++ b/app/Repositories/User/UserRepository.php @@ -119,6 +119,15 @@ class UserRepository implements UserRepositoryInterface return Role::create(['name' => $name, 'display_name' => $displayName, 'description' => $description]); } + /** + * @inheritDoc + */ + public function deleteInvite(InvitedUser $invite): void + { + Log::debug(sprintf('Deleting invite #%d', $invite->id)); + $invite->delete(); + } + /** * @param User $user * @@ -286,24 +295,24 @@ class UserRepository implements UserRepositoryInterface * * @return bool */ - public function hasRole(User|Authenticatable|null $user, string $role): bool - { - if (null === $user) { - return false; - } - /** @var Role $userRole */ - foreach ($user->roles as $userRole) { - if ($userRole->name === $role) { - return true; - } - } - + public function hasRole(User|Authenticatable|null $user, string $role): bool + { + if (null === $user) { return false; } + /** @var Role $userRole */ + foreach ($user->roles as $userRole) { + if ($userRole->name === $role) { + return true; + } + } + + return false; + } /** - * @inheritDoc - */ + * @inheritDoc + */ public function inviteUser(User|Authenticatable|null $user, string $email): InvitedUser { $now = today(config('app.timezone')); diff --git a/app/Repositories/User/UserRepositoryInterface.php b/app/Repositories/User/UserRepositoryInterface.php index 52e804bb93..7e5269cf41 100644 --- a/app/Repositories/User/UserRepositoryInterface.php +++ b/app/Repositories/User/UserRepositoryInterface.php @@ -102,6 +102,12 @@ interface UserRepositoryInterface */ public function deleteEmptyGroups(): void; + /** + * @param InvitedUser $invite + * @return void + */ + public function deleteInvite(InvitedUser $invite): void; + /** * @param User $user * diff --git a/app/Services/FireflyIIIOrg/Update/UpdateRequest.php b/app/Services/FireflyIIIOrg/Update/UpdateRequest.php index b7927f7ca0..58615fb06b 100644 --- a/app/Services/FireflyIIIOrg/Update/UpdateRequest.php +++ b/app/Services/FireflyIIIOrg/Update/UpdateRequest.php @@ -147,6 +147,12 @@ class UpdateRequest implements UpdateRequestInterface ]; $current = config('firefly.version'); $latest = $information['version']; + + // strip the 'v' from the version if it's there. + if (str_starts_with($latest, 'v')) { + $latest = substr($latest, 1); + } + $compare = version_compare($latest, $current); Log::debug(sprintf('Current version is "%s", latest is "%s", result is: %d', $current, $latest, $compare)); diff --git a/app/Support/Navigation.php b/app/Support/Navigation.php index fbc99514cb..3aa6d81fbb 100644 --- a/app/Support/Navigation.php +++ b/app/Support/Navigation.php @@ -204,6 +204,21 @@ class Navigation return $date; } + $result = match ($repeatFreq) { + 'last7' => $date->subDays(7)->startOfDay(), + 'last30' => $date->subDays(30)->startOfDay(), + 'last90' => $date->subDays(90)->startOfDay(), + 'last365' => $date->subDays(365)->startOfDay(), + 'MTD' => $date->startOfMonth()->startOfDay(), + 'QTD' => $date->firstOfQuarter()->startOfDay(), + 'YTD' => $date->startOfYear()->startOfDay(), + default => null, + }; + if (null !== $result) { + return $result; + } + + if ('custom' === $repeatFreq) { return $date; // the date is already at the start. } diff --git a/app/Support/Request/ConvertsDataTypes.php b/app/Support/Request/ConvertsDataTypes.php index 978a969760..f1a3ebcf09 100644 --- a/app/Support/Request/ConvertsDataTypes.php +++ b/app/Support/Request/ConvertsDataTypes.php @@ -141,7 +141,7 @@ trait ConvertsDataTypes $string = str_replace($secondSearch, '', $string); // clear zalgo text (TODO also in API v2) - $string = preg_replace('/\pM/u', '', $string); + $string = preg_replace('/(\pM{2})\pM+/u', '\1', $string); if (null === $string) { return null; } diff --git a/app/Support/Steam.php b/app/Support/Steam.php index adcc6dd775..ab882b2ac0 100644 --- a/app/Support/Steam.php +++ b/app/Support/Steam.php @@ -423,7 +423,7 @@ class Steam ]; // clear zalgo text - $string = preg_replace('/\pM/u', '', $string); + $string = preg_replace('/(\pM{2})\pM+/u', '\1', $string); return str_replace($search, '', $string); } diff --git a/app/User.php b/app/User.php index 7ffde05b89..e6dc89bb15 100644 --- a/app/User.php +++ b/app/User.php @@ -122,7 +122,6 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method static Builder|User whereRememberToken($value) * @method static Builder|User whereReset($value) * @method static Builder|User whereUpdatedAt($value) - * @mixin Eloquent * @property string|null $objectguid * @property-read int|null $accounts_count * @property-read int|null $attachments_count @@ -165,6 +164,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @property-read int|null $group_memberships_count * @property-read UserGroup|null $userGroup * @method static Builder|User whereUserGroupId($value) + * @mixin Eloquent */ class User extends Authenticatable { diff --git a/app/Validation/Account/WithdrawalValidation.php b/app/Validation/Account/WithdrawalValidation.php index bb5d758f76..191f03087b 100644 --- a/app/Validation/Account/WithdrawalValidation.php +++ b/app/Validation/Account/WithdrawalValidation.php @@ -108,6 +108,7 @@ trait WithdrawalValidation if (null !== $found) { $type = $found->accountType->type; if (in_array($type, $validTypes, true)) { + $this->destination = $found; return true; } $this->destError = (string)trans('validation.withdrawal_dest_bad_data', ['id' => $accountId, 'name' => $accountName]); diff --git a/app/Validation/CurrencyValidation.php b/app/Validation/CurrencyValidation.php index 7af3da4668..f52d5d714f 100644 --- a/app/Validation/CurrencyValidation.php +++ b/app/Validation/CurrencyValidation.php @@ -43,6 +43,9 @@ trait CurrencyValidation */ protected function validateForeignCurrencyInformation(Validator $validator): void { + if ($validator->errors()->count() > 0) { + return; + } Log::debug('Now in validateForeignCurrencyInformation()'); $transactions = $this->getTransactionsArray($validator); diff --git a/app/Validation/GroupValidation.php b/app/Validation/GroupValidation.php index eede3b3b91..bf00a593ac 100644 --- a/app/Validation/GroupValidation.php +++ b/app/Validation/GroupValidation.php @@ -90,6 +90,9 @@ trait GroupValidation */ protected function validateDescriptions(Validator $validator): void { + if ($validator->errors()->count() > 0) { + return; + } Log::debug('Now in GroupValidation::validateDescriptions()'); $transactions = $this->getTransactionsArray($validator); $validDescriptions = 0; @@ -113,6 +116,9 @@ trait GroupValidation */ protected function validateGroupDescription(Validator $validator): void { + if ($validator->errors()->count() > 0) { + return; + } Log::debug('Now in validateGroupDescription()'); $data = $validator->getData(); $transactions = $this->getTransactionsArray($validator); diff --git a/app/Validation/TransactionValidation.php b/app/Validation/TransactionValidation.php index 0c5dcfb61e..e89c0f0b41 100644 --- a/app/Validation/TransactionValidation.php +++ b/app/Validation/TransactionValidation.php @@ -43,6 +43,9 @@ trait TransactionValidation */ public function validateAccountInformation(Validator $validator): void { + if ($validator->errors()->count() > 0) { + return; + } Log::debug('Now in validateAccountInformation (TransactionValidation) ()'); $transactions = $this->getTransactionsArray($validator); $data = $validator->getData(); @@ -137,9 +140,49 @@ trait TransactionValidation $validator->errors()->add(sprintf('transactions.%d.destination_id', $index), $accountValidator->destError); $validator->errors()->add(sprintf('transactions.%d.destination_name', $index), $accountValidator->destError); } - // sanity check for reconciliation accounts. They can't both be null. $this->sanityCheckReconciliation($validator, $transactionType, $index, $source, $destination); + + // deposit and the source is a liability or an asset account with a different + // currency than submitted? then the foreign currency info must be present as well (and filled in). + if (0 === $validator->errors()->count() && null !== $accountValidator->source && TransactionType::DEPOSIT === ucfirst($transactionType)) { + $accountType = $accountValidator?->source?->accountType?->type; + if (in_array($accountType, config('firefly.valid_currency_account_types'), true) && !$this->hasForeignCurrencyInfo($transaction)) { + $validator->errors()->add(sprintf('transactions.%d.foreign_amount', $index), (string)trans('validation.require_foreign_currency')); + } + } + + // withdrawal or transfer and the destination is a liability or an asset account with a different + // currency than submitted? then the foreign currency info must be present as well (and filled in). + if (0 === $validator->errors()->count() && null !== $accountValidator->destination && + (TransactionType::WITHDRAWAL === ucfirst($transactionType) || (TransactionType::TRANSFER === ucfirst($transactionType)))) { + $accountType = $accountValidator?->destination?->accountType?->type; + if (in_array($accountType, config('firefly.valid_currency_account_types'), true) && !$this->hasForeignCurrencyInfo($transaction)) { + $validator->errors()->add(sprintf('transactions.%d.foreign_amount', $index), (string)trans('validation.require_foreign_currency')); + } + } + // account validator has a valid source and a valid destination + } + + /** + * @param array $transaction + * @return bool + */ + private function hasForeignCurrencyInfo(array $transaction): bool + { + if (!array_key_exists('foreign_currency_code', $transaction) && !array_key_exists('foreign_currency_id', $transaction)) { + return false; + } + if (!array_key_exists('foreign_amount', $transaction)) { + return false; + } + if ('' === $transaction['foreign_amount']) { + return false; + } + if (bccomp('0', $transaction['foreign_amount']) === 0) { + return false; + } + return true; } /** @@ -324,6 +367,9 @@ trait TransactionValidation */ public function validateOneTransaction(Validator $validator): void { + if ($validator->errors()->count() > 0) { + return; + } Log::debug('Now in validateOneTransaction()'); $transactions = $this->getTransactionsArray($validator); // need at least one transaction @@ -341,6 +387,9 @@ trait TransactionValidation */ public function validateTransactionArray(Validator $validator): void { + if ($validator->errors()->count() > 0) { + return; + } $transactions = $this->getTransactionsArray($validator); foreach ($transactions as $key => $value) { if (!is_int($key)) { @@ -359,6 +408,9 @@ trait TransactionValidation */ public function validateTransactionTypes(Validator $validator): void { + if ($validator->errors()->count() > 0) { + return; + } Log::debug('Now in validateTransactionTypes()'); $transactions = $this->getTransactionsArray($validator); @@ -427,6 +479,9 @@ trait TransactionValidation */ private function validateEqualAccounts(Validator $validator): void { + if ($validator->errors()->count() > 0) { + return; + } Log::debug('Now in validateEqualAccounts()'); $transactions = $this->getTransactionsArray($validator); diff --git a/changelog.md b/changelog.md index 93159165f3..78f73b02c1 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,34 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## 6.0.1 - 2023-03-11 + +### Changed +- [Issue 7129](https://github.com/firefly-iii/firefly-iii/issues/7129) Catch common email errors as log errors. + +### Fixed +- [Issue 7109](https://github.com/firefly-iii/firefly-iii/issues/7109) Fix CSS in subdirectories, thanks @GaneshKandu +- [Issue 7112](https://github.com/firefly-iii/firefly-iii/issues/7112) Version number parsing +- [Issue 6985](https://github.com/firefly-iii/firefly-iii/issues/6985) Mandrill mail support +- [Issue 7131](https://github.com/firefly-iii/firefly-iii/issues/7131) Fix account sorting, thanks @lflare +- [Issue 7130](https://github.com/firefly-iii/firefly-iii/issues/7130) Fix missing date range parsers +- [Issue 7156](https://github.com/firefly-iii/firefly-iii/issues/7156) Default values for email settings break tokens +- [Issue 7140](https://github.com/firefly-iii/firefly-iii/issues/7140) Header with charset would break API validation +- [Issue 7144](https://github.com/firefly-iii/firefly-iii/issues/7144) Debug page could not handle missing log files +- [Issue 7159](https://github.com/firefly-iii/firefly-iii/issues/7159) Bad parsing in success messages +- [Issue 7104](https://github.com/firefly-iii/firefly-iii/issues/7104) Missing colors in dark mode +- [Issue 7120](https://github.com/firefly-iii/firefly-iii/issues/7120) Missing borders in dark mode +- [Issue 7156](https://github.com/firefly-iii/firefly-iii/issues/7156) Bad HTML parsing in transaction form +- [Issue 7166](https://github.com/firefly-iii/firefly-iii/issues/7166) Rule trigger would trigger on the wrong transaction set +- [Issue 7112](https://github.com/firefly-iii/firefly-iii/issues/7112) Content filter would strip emojis +- [Issue 7175](https://github.com/firefly-iii/firefly-iii/issues/7175) Could not delete user invite +- [Issue 7177](https://github.com/firefly-iii/firefly-iii/issues/7177) Missing currency info would break cron job + +### API +- [Issue 7127](https://github.com/firefly-iii/firefly-iii/issues/7127) Expand API with new option for "destroy" button. +- [Issue 7124](https://github.com/firefly-iii/firefly-iii/issues/7124) API would not break on missing foreign currency information + + ## 6.0.0 - 2023-03-03 This is release **6.0.0** of Firefly III. diff --git a/composer.json b/composer.json index d8e1ea0649..21187d1850 100644 --- a/composer.json +++ b/composer.json @@ -97,7 +97,7 @@ "league/commonmark": "2.*", "league/csv": "^9.7", "league/fractal": "0.*", - "nunomaduro/collision": "^7.0", + "nunomaduro/collision": "^7.1", "pragmarx/google2fa": "^8.0", "predis/predis": "^2.1", "psr/log": "<4", @@ -105,7 +105,8 @@ "rcrowe/twigbridge": "^0.14", "spatie/laravel-ignition": "^2", "symfony/http-client": "^6.0", - "symfony/mailgun-mailer": "^6.0" + "symfony/mailgun-mailer": "^6.0", + "therobfonz/laravel-mandrill-driver": "^5.0" }, "require-dev": { "barryvdh/laravel-ide-helper": "2.*", @@ -113,7 +114,7 @@ "fakerphp/faker": "1.*", "filp/whoops": "2.*", "mockery/mockery": "1.*", - "nunomaduro/larastan": "^2.0", + "nunomaduro/larastan": "^2.5", "phpstan/phpstan": "^1.10", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-strict-rules": "^1.4", diff --git a/composer.lock b/composer.lock index b050e20472..799aa7f4a5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7de460f25e29fa2bf56806de51c5ab1a", + "content-hash": "d039ac062900b9cf70e12f1e7a6cacd9", "packages": [ { "name": "bacon/bacon-qr-code", @@ -1068,16 +1068,16 @@ }, { "name": "filp/whoops", - "version": "2.14.6", + "version": "2.15.1", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "f7948baaa0330277c729714910336383286305da" + "reference": "e864ac957acd66e1565f25efda61e37791a5db0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/f7948baaa0330277c729714910336383286305da", - "reference": "f7948baaa0330277c729714910336383286305da", + "url": "https://api.github.com/repos/filp/whoops/zipball/e864ac957acd66e1565f25efda61e37791a5db0b", + "reference": "e864ac957acd66e1565f25efda61e37791a5db0b", "shasum": "" }, "require": { @@ -1127,7 +1127,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.6" + "source": "https://github.com/filp/whoops/tree/2.15.1" }, "funding": [ { @@ -1135,7 +1135,7 @@ "type": "github" } ], - "time": "2022-11-02T16:23:29+00:00" + "time": "2023-03-06T18:09:13+00:00" }, { "name": "firebase/php-jwt", @@ -1586,16 +1586,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.4.3", + "version": "2.4.4", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "67c26b443f348a51926030c83481b85718457d3d" + "reference": "3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d", - "reference": "67c26b443f348a51926030c83481b85718457d3d", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf", + "reference": "3cf1b6d4f0c820a2cf8bcaec39fc698f3443b5cf", "shasum": "" }, "require": { @@ -1685,7 +1685,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.4.3" + "source": "https://github.com/guzzle/psr7/tree/2.4.4" }, "funding": [ { @@ -1701,7 +1701,7 @@ "type": "tidelift" } ], - "time": "2022-10-26T14:07:24+00:00" + "time": "2023-03-09T13:19:02+00:00" }, { "name": "guzzlehttp/uri-template", @@ -1944,16 +1944,16 @@ }, { "name": "laravel/framework", - "version": "v10.2.0", + "version": "v10.3.3", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "3799f7f3118d57dc5d3dfaabde69a912fff65a7e" + "reference": "90f24d9e2860ecf6b5492e966956270ceb98c03d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/3799f7f3118d57dc5d3dfaabde69a912fff65a7e", - "reference": "3799f7f3118d57dc5d3dfaabde69a912fff65a7e", + "url": "https://api.github.com/repos/laravel/framework/zipball/90f24d9e2860ecf6b5492e966956270ceb98c03d", + "reference": "90f24d9e2860ecf6b5492e966956270ceb98c03d", "shasum": "" }, "require": { @@ -2140,7 +2140,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-03-02T14:55:50+00:00" + "time": "2023-03-09T14:00:53+00:00" }, { "name": "laravel/passport", @@ -3480,6 +3480,60 @@ ], "time": "2021-06-28T04:27:21+00:00" }, + { + "name": "mailchimp/transactional", + "version": "1.0.50", + "source": { + "type": "git", + "url": "https://github.com/mailchimp/mailchimp-transactional-php.git", + "reference": "701b00f538f36a2a5b138f880ab5eebbfeff4b7d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mailchimp/mailchimp-transactional-php/zipball/701b00f538f36a2a5b138f880ab5eebbfeff4b7d", + "reference": "701b00f538f36a2a5b138f880ab5eebbfeff4b7d", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "guzzlehttp/guzzle": "^6.4 || ^7.2", + "php": ">=7.2" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2.12", + "phpunit/phpunit": "^7", + "squizlabs/php_codesniffer": "~2.6" + }, + "type": "library", + "autoload": { + "psr-4": { + "MailchimpTransactional\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "proprietary" + ], + "authors": [ + { + "name": "Mailchimp", + "homepage": "https://github.com/mailchimp/mailchimp-transactional-php" + } + ], + "homepage": "http://swagger.io", + "keywords": [ + "api", + "php", + "sdk", + "swagger" + ], + "support": { + "source": "https://github.com/mailchimp/mailchimp-transactional-php/tree/v1.0.50" + }, + "time": "2022-11-07T20:12:03+00:00" + }, { "name": "monolog/monolog", "version": "3.3.1", @@ -3834,34 +3888,35 @@ }, { "name": "nunomaduro/collision", - "version": "v7.0.5", + "version": "v7.1.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "5c654ee5fa187cf2f4cb226d773582ec6d402a55" + "reference": "2b97fed4950cf0ff148c18b853975ec8ea135e90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/5c654ee5fa187cf2f4cb226d773582ec6d402a55", - "reference": "5c654ee5fa187cf2f4cb226d773582ec6d402a55", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/2b97fed4950cf0ff148c18b853975ec8ea135e90", + "reference": "2b97fed4950cf0ff148c18b853975ec8ea135e90", "shasum": "" }, "require": { "filp/whoops": "^2.14.6", "nunomaduro/termwind": "^1.15.1", "php": "^8.1.0", - "symfony/console": "^6.2.5" + "symfony/console": "^6.2.7" }, "require-dev": { - "laravel/framework": "^10.0.3", - "laravel/pint": "^1.5.0", - "laravel/sail": "^1.20.2", + "brianium/paratest": "^7.1.0", + "laravel/framework": "^10.2.0", + "laravel/pint": "^1.6.0", + "laravel/sail": "^1.21.1", "laravel/sanctum": "^3.2.1", - "laravel/tinker": "^2.8.0", + "laravel/tinker": "^2.8.1", "nunomaduro/larastan": "^2.4.1", - "orchestra/testbench-core": "^8.0.1", + "orchestra/testbench-core": "^8.0.3", "pestphp/pest": "^2.0.0", - "phpunit/phpunit": "^10.0.9", + "phpunit/phpunit": "^10.0.14", "sebastian/environment": "^6.0.0", "spatie/laravel-ignition": "^2.0.0" }, @@ -3922,7 +3977,7 @@ "type": "patreon" } ], - "time": "2023-02-19T16:25:13+00:00" + "time": "2023-03-03T10:00:22+00:00" }, { "name": "nunomaduro/termwind", @@ -4335,16 +4390,16 @@ }, { "name": "phpseclib/phpseclib", - "version": "3.0.18", + "version": "3.0.19", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "f28693d38ba21bb0d9f0c411ee5dae2b178201da" + "reference": "cc181005cf548bfd8a4896383bb825d859259f95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/f28693d38ba21bb0d9f0c411ee5dae2b178201da", - "reference": "f28693d38ba21bb0d9f0c411ee5dae2b178201da", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/cc181005cf548bfd8a4896383bb825d859259f95", + "reference": "cc181005cf548bfd8a4896383bb825d859259f95", "shasum": "" }, "require": { @@ -4425,7 +4480,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.18" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.19" }, "funding": [ { @@ -4441,7 +4496,7 @@ "type": "tidelift" } ], - "time": "2022-12-17T18:26:50+00:00" + "time": "2023-03-05T17:13:09+00:00" }, { "name": "pragmarx/google2fa", @@ -5446,16 +5501,16 @@ }, { "name": "spatie/backtrace", - "version": "1.2.2", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/spatie/backtrace.git", - "reference": "7b34fee6c1ad45f8ee0498d17cd8ea9a076402c1" + "reference": "ec4dd16476b802dbdc6b4467f84032837e316b8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/7b34fee6c1ad45f8ee0498d17cd8ea9a076402c1", - "reference": "7b34fee6c1ad45f8ee0498d17cd8ea9a076402c1", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/ec4dd16476b802dbdc6b4467f84032837e316b8c", + "reference": "ec4dd16476b802dbdc6b4467f84032837e316b8c", "shasum": "" }, "require": { @@ -5464,6 +5519,7 @@ "require-dev": { "ext-json": "*", "phpunit/phpunit": "^9.3", + "spatie/phpunit-snapshot-assertions": "^4.2", "symfony/var-dumper": "^5.1" }, "type": "library", @@ -5491,7 +5547,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/backtrace/tree/1.2.2" + "source": "https://github.com/spatie/backtrace/tree/1.4.0" }, "funding": [ { @@ -5503,7 +5559,7 @@ "type": "other" } ], - "time": "2023-02-21T08:29:12+00:00" + "time": "2023-03-04T08:57:24+00:00" }, { "name": "spatie/flare-client-php", @@ -8251,6 +8307,68 @@ ], "time": "2023-02-24T10:42:00+00:00" }, + { + "name": "therobfonz/laravel-mandrill-driver", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/luisdalmolin/laravel-mandrill-driver.git", + "reference": "a492a580e984c9bae5d59bbc2660f75af4ea2c0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/luisdalmolin/laravel-mandrill-driver/zipball/a492a580e984c9bae5d59bbc2660f75af4ea2c0d", + "reference": "a492a580e984c9bae5d59bbc2660f75af4ea2c0d", + "shasum": "" + }, + "require": { + "illuminate/support": "^10.0", + "mailchimp/transactional": "^1.0", + "php": "^8.1", + "symfony/mailer": "^6.0" + }, + "require-dev": { + "mockery/mockery": "^1.4.4", + "phpunit/phpunit": "^9.5.10" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaravelMandrill\\MandrillServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaravelMandrill\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Rob Fonseca", + "email": "robfonseca@gmail.com" + }, + { + "name": "Brandon Ferens", + "email": "brandon@kirschbaumdevelopment.com" + } + ], + "description": "Mandrill Driver for Laravel 9+", + "keywords": [ + "laravel", + "mandrill" + ], + "support": { + "issues": "https://github.com/luisdalmolin/laravel-mandrill-driver/issues", + "source": "https://github.com/luisdalmolin/laravel-mandrill-driver/tree/5.0.0" + }, + "time": "2023-01-31T13:48:27+00:00" + }, { "name": "tijsverkoyen/css-to-inline-styles", "version": "2.2.6", @@ -9159,16 +9277,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -9206,7 +9324,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -9214,20 +9332,20 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "nikic/php-parser", - "version": "v4.15.3", + "version": "v4.15.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039" + "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039", - "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", "shasum": "" }, "require": { @@ -9268,22 +9386,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" }, - "time": "2023-01-16T22:05:37+00:00" + "time": "2023-03-05T19:49:14+00:00" }, { "name": "nunomaduro/larastan", - "version": "2.4.1", + "version": "2.5.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/larastan.git", - "reference": "238fdbfba3aae133cdec73e99826c9b0232141f7" + "reference": "072e2c9566ae000bf66c92384fc933b81885244b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/238fdbfba3aae133cdec73e99826c9b0232141f7", - "reference": "238fdbfba3aae133cdec73e99826c9b0232141f7", + "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/072e2c9566ae000bf66c92384fc933b81885244b", + "reference": "072e2c9566ae000bf66c92384fc933b81885244b", "shasum": "" }, "require": { @@ -9297,11 +9415,11 @@ "illuminate/support": "^9.47.0 || ^10.0.0", "php": "^8.0.2", "phpmyadmin/sql-parser": "^5.6.0", - "phpstan/phpstan": "^1.9.8" + "phpstan/phpstan": "~1.10.3" }, "require-dev": { "nikic/php-parser": "^4.15.2", - "orchestra/testbench": "^7.19.0|^8.0.0", + "orchestra/testbench": "^7.19.0 || ^8.0.0", "phpunit/phpunit": "^9.5.27" }, "suggest": { @@ -9346,7 +9464,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/larastan/issues", - "source": "https://github.com/nunomaduro/larastan/tree/2.4.1" + "source": "https://github.com/nunomaduro/larastan/tree/2.5.1" }, "funding": [ { @@ -9366,7 +9484,7 @@ "type": "patreon" } ], - "time": "2023-02-05T12:19:17+00:00" + "time": "2023-03-04T23:46:40+00:00" }, { "name": "phar-io/manifest", @@ -9676,16 +9794,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.3", + "version": "1.10.6", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "5419375b5891add97dc74be71e6c1c34baaddf64" + "reference": "50d089a3e0904b0fe7e2cf2d4fd37d427d64235a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5419375b5891add97dc74be71e6c1c34baaddf64", - "reference": "5419375b5891add97dc74be71e6c1c34baaddf64", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/50d089a3e0904b0fe7e2cf2d4fd37d427d64235a", + "reference": "50d089a3e0904b0fe7e2cf2d4fd37d427d64235a", "shasum": "" }, "require": { @@ -9715,7 +9833,7 @@ ], "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.10.3" + "source": "https://github.com/phpstan/phpstan/tree/1.10.6" }, "funding": [ { @@ -9731,7 +9849,7 @@ "type": "tidelift" } ], - "time": "2023-02-25T14:47:13+00:00" + "time": "2023-03-09T16:55:12+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -9832,16 +9950,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.0.1", + "version": "10.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "b9c21a93dd8c8eed79879374884ee733259475cc" + "reference": "20800e84296ea4732f9a125e08ce86b4004ae3e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b9c21a93dd8c8eed79879374884ee733259475cc", - "reference": "b9c21a93dd8c8eed79879374884ee733259475cc", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/20800e84296ea4732f9a125e08ce86b4004ae3e4", + "reference": "20800e84296ea4732f9a125e08ce86b4004ae3e4", "shasum": "" }, "require": { @@ -9863,8 +9981,8 @@ "phpunit/phpunit": "^10.0" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { @@ -9897,7 +10015,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.0.1" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.0.2" }, "funding": [ { @@ -9905,7 +10023,7 @@ "type": "github" } ], - "time": "2023-02-25T05:35:03+00:00" + "time": "2023-03-06T13:00:19+00:00" }, { "name": "phpunit/php-file-iterator", @@ -10150,16 +10268,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.0.14", + "version": "10.0.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "7065dbebcb0f66cf16a45fc9cfc28c2351e06169" + "reference": "9b0c2245ef173a3d9546f6a4393a85d60eabe071" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7065dbebcb0f66cf16a45fc9cfc28c2351e06169", - "reference": "7065dbebcb0f66cf16a45fc9cfc28c2351e06169", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9b0c2245ef173a3d9546f6a4393a85d60eabe071", + "reference": "9b0c2245ef173a3d9546f6a4393a85d60eabe071", "shasum": "" }, "require": { @@ -10191,7 +10309,7 @@ "sebastian/version": "^4.0" }, "suggest": { - "ext-soap": "*" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -10230,7 +10348,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.0.14" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.0.15" }, "funding": [ { @@ -10246,7 +10364,7 @@ "type": "tidelift" } ], - "time": "2023-03-01T05:37:49+00:00" + "time": "2023-03-09T06:43:13+00:00" }, { "name": "sebastian/cli-parser", diff --git a/config/firefly.php b/config/firefly.php index 6b332e46dc..4718ec1775 100644 --- a/config/firefly.php +++ b/config/firefly.php @@ -31,6 +31,7 @@ use FireflyIII\Models\Bill; use FireflyIII\Models\Budget; use FireflyIII\Models\BudgetLimit; use FireflyIII\Models\Category; +use FireflyIII\Models\InvitedUser; use FireflyIII\Models\LinkType; use FireflyIII\Models\ObjectGroup; use FireflyIII\Models\PiggyBank; @@ -106,8 +107,8 @@ return [ 'webhooks' => true, 'handle_debts' => true, ], - 'version' => '6.0.0', - 'api_version' => '2.0.0', + 'version' => '6.0.1', + 'api_version' => '2.0.1', 'db_version' => 19, // generic settings @@ -445,6 +446,7 @@ return [ 'webhook' => Webhook::class, 'webhookMessage' => WebhookMessage::class, 'webhookAttempt' => WebhookAttempt::class, + 'invitedUser' => InvitedUser::class, // strings 'currency_code' => CurrencyCode::class, @@ -470,6 +472,7 @@ return [ 'dynamicConfigKey' => DynamicConfigKey::class, 'eitherConfigKey' => EitherConfigKey::class, + ], 'rule-actions' => [ 'set_category' => SetCategory::class, diff --git a/config/mail.php b/config/mail.php index 37861ebd56..eae17fd2a7 100644 --- a/config/mail.php +++ b/config/mail.php @@ -33,7 +33,7 @@ return [ | and used as needed; however, this mailer will be used by default. | */ - 'default' => env('MAIL_MAILER', 'smtp'), + 'default' => envNonEmpty('MAIL_MAILER', 'log'), 'mailers' => [ 'smtp' => [ @@ -55,6 +55,10 @@ return [ 'transport' => 'mailgun', ], + 'mandrill' => [ + 'transport' => 'mandrill', + ], + 'postmark' => [ 'transport' => 'postmark', ], diff --git a/frontend/quasar.conf.js b/frontend/quasar.conf.js index b36494dfaf..ef4d94995b 100644 --- a/frontend/quasar.conf.js +++ b/frontend/quasar.conf.js @@ -101,18 +101,18 @@ module.exports = configure(function (ctx) { type: 'https' }, port: 8080, - host: 'firefly-dev.sd.home', + host: 'firefly-dev.sd.local', open: false, // opens browser window automatically proxy: [ { context: ['/sanctum', '/api'], - target: 'https://firefly.sd.home', // Laravel Homestead end-point + target: 'https://firefly.sd.local', // Laravel Homestead end-point // avoid problems with session and XSRF cookies // When using capacitor, use the IP of the dev server streaming the app // For SPA and PWA use localhost, given that the app is streamed on that host // xxx address is your machine current IP address cookieDomainRewrite: - ctx.modeName === 'capacitor' ? '10.0.0.1' : '.sd.home', + ctx.modeName === 'capacitor' ? '10.0.0.1' : '.sd.local', changeOrigin: true, } ] diff --git a/frontend/src/i18n/el_GR/index.js b/frontend/src/i18n/el_GR/index.js index 024347b8cb..78b019b9f2 100644 --- a/frontend/src/i18n/el_GR/index.js +++ b/frontend/src/i18n/el_GR/index.js @@ -221,8 +221,8 @@ export default { "pref_last90": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b5\u03c2 90 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2", "pref_last30": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b5\u03c2 30 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2", "pref_last7": "\u03a4\u03b5\u03bb\u03b5\u03c5\u03c4\u03b1\u03af\u03b5\u03c2 7 \u03b7\u03bc\u03ad\u03c1\u03b5\u03c2", - "pref_YTD": "\u0391\u03c0\u03cc \u03c4\u03b7\u03bd \u03b1\u03c1\u03c7\u03ae \u03c4\u03bf\u03c5 \u03ad\u03c4\u03bf\u03c5\u03c2 \u03c9\u03c2 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1", - "pref_QTD": "\u0391\u03c0\u03cc \u03c4\u03b7\u03bd \u03b1\u03c1\u03c7\u03ae \u03c4\u03bf\u03c5 \u03c4\u03c1\u03b9\u03bc\u03ae\u03bd\u03bf\u03c5 \u03c9\u03c2 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1", - "pref_MTD": "\u0391\u03c0\u03cc \u03c4\u03b7\u03bd\u03bd \u03b1\u03c1\u03c7\u03ae \u03c4\u03bf\u03c5 \u03bc\u03ae\u03bd\u03b1 \u03c9\u03c2 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1" + "pref_YTD": "\u0388\u03c4\u03bf\u03c2 \u03bc\u03ad\u03c7\u03c1\u03b9 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1", + "pref_QTD": "\u03a4\u03c1\u03af\u03bc\u03b7\u03bd\u03bf \u03bc\u03ad\u03c7\u03c1\u03b9 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1", + "pref_MTD": "\u039c\u03ae\u03bd\u03b1\u03c2 \u03bc\u03ad\u03c7\u03c1\u03b9 \u03c3\u03ae\u03bc\u03b5\u03c1\u03b1" } } diff --git a/frontend/src/i18n/zh_TW/index.js b/frontend/src/i18n/zh_TW/index.js index 1b9e1377fb..e9ac54e209 100644 --- a/frontend/src/i18n/zh_TW/index.js +++ b/frontend/src/i18n/zh_TW/index.js @@ -38,7 +38,7 @@ export default { }, "list": { "name": "\u540d\u7a31", - "account_number": "Account number", + "account_number": "\u5e33\u6236\u865f\u78bc", "currentBalance": "\u76ee\u524d\u9918\u984d", "lastActivity": "\u4e0a\u6b21\u6d3b\u52d5", "active": "\u662f\u5426\u555f\u7528\uff1f" @@ -46,15 +46,15 @@ export default { "breadcrumbs": { "placeholder": "[Placeholder]", "budgets": "\u9810\u7b97", - "subscriptions": "Subscriptions", - "transactions": "Transactions", - "title_expenses": "Expenses", + "subscriptions": "\u8a02\u95b1", + "transactions": "\u4ea4\u6613", + "title_expenses": "\u652f\u51fa", "title_withdrawal": "Expenses", "title_revenue": "Revenue \/ income", "title_deposit": "Revenue \/ income", - "title_transfer": "Transfers", - "title_transfers": "Transfers", - "asset_accounts": "Asset accounts", + "title_transfer": "\u8f49\u5e33", + "title_transfers": "\u8f49\u5e33", + "asset_accounts": "\u8cc7\u7522\u5e33\u6236", "expense_accounts": "Expense accounts", "revenue_accounts": "Revenue accounts", "liabilities_accounts": "Liabilities" @@ -204,8 +204,8 @@ export default { "currencies": "\u8ca8\u5e63", "administration": "\u7ba1\u7406", "profile": "\u500b\u4eba\u6a94\u6848", - "source_account": "Source account", - "destination_account": "Destination account", + "source_account": "\u4f86\u6e90\u5e33\u6236", + "destination_account": "\u76ee\u6a19\u5e33\u6236", "amount": "\u91d1\u984d", "date": "\u65e5\u671f", "time": "Time", diff --git a/frontend/src/layouts/MainLayout.vue b/frontend/src/layouts/MainLayout.vue index d4a63abbc9..d551c4d9c3 100644 --- a/frontend/src/layouts/MainLayout.vue +++ b/frontend/src/layouts/MainLayout.vue @@ -338,7 +338,7 @@ page container: q-ma-xs (margin all, xs) AND q-mb-md to give the page content so
- Firefly III v v6.0.0 © James Cole, AGPL-3.0-or-later. + Firefly III v v6.0.1 © James Cole, AGPL-3.0-or-later.
diff --git a/public/v1/js/app.js b/public/v1/js/app.js index c20d696397..98059e3bcf 100644 --- a/public/v1/js/app.js +++ b/public/v1/js/app.js @@ -1,2 +1,2 @@ /*! For license information please see app.js.LICENSE.txt */ -(()=>{var t={3002:()=>{if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");!function(t){"use strict";var e=jQuery.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||e[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(),function(t){"use strict";t.fn.emulateTransitionEnd=function(e){var n=!1,i=this;t(this).one("bsTransitionEnd",(function(){n=!0}));return setTimeout((function(){n||t(i).trigger(t.support.transition.end)}),e),this},t((function(){t.support.transition=function(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var n in e)if(void 0!==t.style[n])return{end:e[n]};return!1}(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}})}))}(jQuery),function(t){"use strict";var e='[data-dismiss="alert"]',n=function(n){t(n).on("click",e,this.close)};n.VERSION="3.4.1",n.TRANSITION_DURATION=150,n.prototype.close=function(e){var i=t(this),o=i.attr("data-target");o||(o=(o=i.attr("href"))&&o.replace(/.*(?=#[^\s]*$)/,"")),o="#"===o?[]:o;var r=t(document).find(o);function s(){r.detach().trigger("closed.bs.alert").remove()}e&&e.preventDefault(),r.length||(r=i.closest(".alert")),r.trigger(e=t.Event("close.bs.alert")),e.isDefaultPrevented()||(r.removeClass("in"),t.support.transition&&r.hasClass("fade")?r.one("bsTransitionEnd",s).emulateTransitionEnd(n.TRANSITION_DURATION):s())};var i=t.fn.alert;t.fn.alert=function(e){return this.each((function(){var i=t(this),o=i.data("bs.alert");o||i.data("bs.alert",o=new n(this)),"string"==typeof e&&o[e].call(i)}))},t.fn.alert.Constructor=n,t.fn.alert.noConflict=function(){return t.fn.alert=i,this},t(document).on("click.bs.alert.data-api",e,n.prototype.close)}(jQuery),function(t){"use strict";var e=function(n,i){this.$element=t(n),this.options=t.extend({},e.DEFAULTS,i),this.isLoading=!1};function n(n){return this.each((function(){var i=t(this),o=i.data("bs.button"),r="object"==typeof n&&n;o||i.data("bs.button",o=new e(this,r)),"toggle"==n?o.toggle():n&&o.setState(n)}))}e.VERSION="3.4.1",e.DEFAULTS={loadingText:"loading..."},e.prototype.setState=function(e){var n="disabled",i=this.$element,o=i.is("input")?"val":"html",r=i.data();e+="Text",null==r.resetText&&i.data("resetText",i[o]()),setTimeout(t.proxy((function(){i[o](null==r[e]?this.options[e]:r[e]),"loadingText"==e?(this.isLoading=!0,i.addClass(n).attr(n,n).prop(n,!0)):this.isLoading&&(this.isLoading=!1,i.removeClass(n).removeAttr(n).prop(n,!1))}),this),0)},e.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var n=this.$element.find("input");"radio"==n.prop("type")?(n.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==n.prop("type")&&(n.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),n.prop("checked",this.$element.hasClass("active")),t&&n.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var i=t.fn.button;t.fn.button=n,t.fn.button.Constructor=e,t.fn.button.noConflict=function(){return t.fn.button=i,this},t(document).on("click.bs.button.data-api",'[data-toggle^="button"]',(function(e){var i=t(e.target).closest(".btn");n.call(i,"toggle"),t(e.target).is('input[type="radio"], input[type="checkbox"]')||(e.preventDefault(),i.is("input,button")?i.trigger("focus"):i.find("input:visible,button:visible").first().trigger("focus"))})).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',(function(e){t(e.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(e.type))}))}(jQuery),function(t){"use strict";var e=function(e,n){this.$element=t(e),this.$indicators=this.$element.find(".carousel-indicators"),this.options=n,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",t.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",t.proxy(this.pause,this)).on("mouseleave.bs.carousel",t.proxy(this.cycle,this))};function n(n){return this.each((function(){var i=t(this),o=i.data("bs.carousel"),r=t.extend({},e.DEFAULTS,i.data(),"object"==typeof n&&n),s="string"==typeof n?n:r.slide;o||i.data("bs.carousel",o=new e(this,r)),"number"==typeof n?o.to(n):s?o[s]():r.interval&&o.pause().cycle()}))}e.VERSION="3.4.1",e.TRANSITION_DURATION=600,e.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},e.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},e.prototype.cycle=function(e){return e||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(t.proxy(this.next,this),this.options.interval)),this},e.prototype.getItemIndex=function(t){return this.$items=t.parent().children(".item"),this.$items.index(t||this.$active)},e.prototype.getItemForDirection=function(t,e){var n=this.getItemIndex(e);if(("prev"==t&&0===n||"next"==t&&n==this.$items.length-1)&&!this.options.wrap)return e;var i=(n+("prev"==t?-1:1))%this.$items.length;return this.$items.eq(i)},e.prototype.to=function(t){var e=this,n=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(t>this.$items.length-1||t<0))return this.sliding?this.$element.one("slid.bs.carousel",(function(){e.to(t)})):n==t?this.pause().cycle():this.slide(t>n?"next":"prev",this.$items.eq(t))},e.prototype.pause=function(e){return e||(this.paused=!0),this.$element.find(".next, .prev").length&&t.support.transition&&(this.$element.trigger(t.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},e.prototype.next=function(){if(!this.sliding)return this.slide("next")},e.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},e.prototype.slide=function(n,i){var o=this.$element.find(".item.active"),r=i||this.getItemForDirection(n,o),s=this.interval,a="next"==n?"left":"right",l=this;if(r.hasClass("active"))return this.sliding=!1;var u=r[0],c=t.Event("slide.bs.carousel",{relatedTarget:u,direction:a});if(this.$element.trigger(c),!c.isDefaultPrevented()){if(this.sliding=!0,s&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var p=t(this.$indicators.children()[this.getItemIndex(r)]);p&&p.addClass("active")}var f=t.Event("slid.bs.carousel",{relatedTarget:u,direction:a});return t.support.transition&&this.$element.hasClass("slide")?(r.addClass(n),"object"==typeof r&&r.length&&r[0].offsetWidth,o.addClass(a),r.addClass(a),o.one("bsTransitionEnd",(function(){r.removeClass([n,a].join(" ")).addClass("active"),o.removeClass(["active",a].join(" ")),l.sliding=!1,setTimeout((function(){l.$element.trigger(f)}),0)})).emulateTransitionEnd(e.TRANSITION_DURATION)):(o.removeClass("active"),r.addClass("active"),this.sliding=!1,this.$element.trigger(f)),s&&this.cycle(),this}};var i=t.fn.carousel;t.fn.carousel=n,t.fn.carousel.Constructor=e,t.fn.carousel.noConflict=function(){return t.fn.carousel=i,this};var o=function(e){var i=t(this),o=i.attr("href");o&&(o=o.replace(/.*(?=#[^\s]+$)/,""));var r=i.attr("data-target")||o,s=t(document).find(r);if(s.hasClass("carousel")){var a=t.extend({},s.data(),i.data()),l=i.attr("data-slide-to");l&&(a.interval=!1),n.call(s,a),l&&s.data("bs.carousel").to(l),e.preventDefault()}};t(document).on("click.bs.carousel.data-api","[data-slide]",o).on("click.bs.carousel.data-api","[data-slide-to]",o),t(window).on("load",(function(){t('[data-ride="carousel"]').each((function(){var e=t(this);n.call(e,e.data())}))}))}(jQuery),function(t){"use strict";var e=function(n,i){this.$element=t(n),this.options=t.extend({},e.DEFAULTS,i),this.$trigger=t('[data-toggle="collapse"][href="#'+n.id+'"],[data-toggle="collapse"][data-target="#'+n.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};function n(e){var n,i=e.attr("data-target")||(n=e.attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,"");return t(document).find(i)}function i(n){return this.each((function(){var i=t(this),o=i.data("bs.collapse"),r=t.extend({},e.DEFAULTS,i.data(),"object"==typeof n&&n);!o&&r.toggle&&/show|hide/.test(n)&&(r.toggle=!1),o||i.data("bs.collapse",o=new e(this,r)),"string"==typeof n&&o[n]()}))}e.VERSION="3.4.1",e.TRANSITION_DURATION=350,e.DEFAULTS={toggle:!0},e.prototype.dimension=function(){return this.$element.hasClass("width")?"width":"height"},e.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var n,o=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(o&&o.length&&(n=o.data("bs.collapse"))&&n.transitioning)){var r=t.Event("show.bs.collapse");if(this.$element.trigger(r),!r.isDefaultPrevented()){o&&o.length&&(i.call(o,"hide"),n||o.data("bs.collapse",null));var s=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[s](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var a=function(){this.$element.removeClass("collapsing").addClass("collapse in")[s](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!t.support.transition)return a.call(this);var l=t.camelCase(["scroll",s].join("-"));this.$element.one("bsTransitionEnd",t.proxy(a,this)).emulateTransitionEnd(e.TRANSITION_DURATION)[s](this.$element[0][l])}}}},e.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var n=t.Event("hide.bs.collapse");if(this.$element.trigger(n),!n.isDefaultPrevented()){var i=this.dimension();this.$element[i](this.$element[i]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var o=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};if(!t.support.transition)return o.call(this);this.$element[i](0).one("bsTransitionEnd",t.proxy(o,this)).emulateTransitionEnd(e.TRANSITION_DURATION)}}},e.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},e.prototype.getParent=function(){return t(document).find(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(t.proxy((function(e,i){var o=t(i);this.addAriaAndCollapsedClass(n(o),o)}),this)).end()},e.prototype.addAriaAndCollapsedClass=function(t,e){var n=t.hasClass("in");t.attr("aria-expanded",n),e.toggleClass("collapsed",!n).attr("aria-expanded",n)};var o=t.fn.collapse;t.fn.collapse=i,t.fn.collapse.Constructor=e,t.fn.collapse.noConflict=function(){return t.fn.collapse=o,this},t(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',(function(e){var o=t(this);o.attr("data-target")||e.preventDefault();var r=n(o),s=r.data("bs.collapse")?"toggle":o.data();i.call(r,s)}))}(jQuery),function(t){"use strict";var e=".dropdown-backdrop",n='[data-toggle="dropdown"]',i=function(e){t(e).on("click.bs.dropdown",this.toggle)};function o(e){var n=e.attr("data-target");n||(n=(n=e.attr("href"))&&/#[A-Za-z]/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,""));var i="#"!==n?t(document).find(n):null;return i&&i.length?i:e.parent()}function r(i){i&&3===i.which||(t(e).remove(),t(n).each((function(){var e=t(this),n=o(e),r={relatedTarget:this};n.hasClass("open")&&(i&&"click"==i.type&&/input|textarea/i.test(i.target.tagName)&&t.contains(n[0],i.target)||(n.trigger(i=t.Event("hide.bs.dropdown",r)),i.isDefaultPrevented()||(e.attr("aria-expanded","false"),n.removeClass("open").trigger(t.Event("hidden.bs.dropdown",r)))))})))}i.VERSION="3.4.1",i.prototype.toggle=function(e){var n=t(this);if(!n.is(".disabled, :disabled")){var i=o(n),s=i.hasClass("open");if(r(),!s){"ontouchstart"in document.documentElement&&!i.closest(".navbar-nav").length&&t(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(t(this)).on("click",r);var a={relatedTarget:this};if(i.trigger(e=t.Event("show.bs.dropdown",a)),e.isDefaultPrevented())return;n.trigger("focus").attr("aria-expanded","true"),i.toggleClass("open").trigger(t.Event("shown.bs.dropdown",a))}return!1}},i.prototype.keydown=function(e){if(/(38|40|27|32)/.test(e.which)&&!/input|textarea/i.test(e.target.tagName)){var i=t(this);if(e.preventDefault(),e.stopPropagation(),!i.is(".disabled, :disabled")){var r=o(i),s=r.hasClass("open");if(!s&&27!=e.which||s&&27==e.which)return 27==e.which&&r.find(n).trigger("focus"),i.trigger("click");var a=r.find(".dropdown-menu li:not(.disabled):visible a");if(a.length){var l=a.index(e.target);38==e.which&&l>0&&l--,40==e.which&&ldocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},e.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},e.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0},sanitize:!0,sanitizeFn:null,whiteList:i},l.prototype.init=function(e,n,i){if(this.enabled=!0,this.type=e,this.$element=t(n),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&t(document).find(t.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var o=this.options.trigger.split(" "),r=o.length;r--;){var s=o[r];if("click"==s)this.$element.on("click."+this.type,this.options.selector,t.proxy(this.toggle,this));else if("manual"!=s){var a="hover"==s?"mouseenter":"focusin",l="hover"==s?"mouseleave":"focusout";this.$element.on(a+"."+this.type,this.options.selector,t.proxy(this.enter,this)),this.$element.on(l+"."+this.type,this.options.selector,t.proxy(this.leave,this))}}this.options.selector?this._options=t.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},l.prototype.getDefaults=function(){return l.DEFAULTS},l.prototype.getOptions=function(n){var i=this.$element.data();for(var o in i)i.hasOwnProperty(o)&&-1!==t.inArray(o,e)&&delete i[o];return(n=t.extend({},this.getDefaults(),i,n)).delay&&"number"==typeof n.delay&&(n.delay={show:n.delay,hide:n.delay}),n.sanitize&&(n.template=a(n.template,n.whiteList,n.sanitizeFn)),n},l.prototype.getDelegateOptions=function(){var e={},n=this.getDefaults();return this._options&&t.each(this._options,(function(t,i){n[t]!=i&&(e[t]=i)})),e},l.prototype.enter=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);if(n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),e instanceof t.Event&&(n.inState["focusin"==e.type?"focus":"hover"]=!0),n.tip().hasClass("in")||"in"==n.hoverState)n.hoverState="in";else{if(clearTimeout(n.timeout),n.hoverState="in",!n.options.delay||!n.options.delay.show)return n.show();n.timeout=setTimeout((function(){"in"==n.hoverState&&n.show()}),n.options.delay.show)}},l.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},l.prototype.leave=function(e){var n=e instanceof this.constructor?e:t(e.currentTarget).data("bs."+this.type);if(n||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n)),e instanceof t.Event&&(n.inState["focusout"==e.type?"focus":"hover"]=!1),!n.isInStateTrue()){if(clearTimeout(n.timeout),n.hoverState="out",!n.options.delay||!n.options.delay.hide)return n.hide();n.timeout=setTimeout((function(){"out"==n.hoverState&&n.hide()}),n.options.delay.hide)}},l.prototype.show=function(){var e=t.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(e);var n=t.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(e.isDefaultPrevented()||!n)return;var i=this,o=this.tip(),r=this.getUID(this.type);this.setContent(),o.attr("id",r),this.$element.attr("aria-describedby",r),this.options.animation&&o.addClass("fade");var s="function"==typeof this.options.placement?this.options.placement.call(this,o[0],this.$element[0]):this.options.placement,a=/\s?auto?\s?/i,u=a.test(s);u&&(s=s.replace(a,"")||"top"),o.detach().css({top:0,left:0,display:"block"}).addClass(s).data("bs."+this.type,this),this.options.container?o.appendTo(t(document).find(this.options.container)):o.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var c=this.getPosition(),p=o[0].offsetWidth,f=o[0].offsetHeight;if(u){var d=s,h=this.getPosition(this.$viewport);s="bottom"==s&&c.bottom+f>h.bottom?"top":"top"==s&&c.top-fh.width?"left":"left"==s&&c.left-ps.top+s.height&&(o.top=s.top+s.height-l)}else{var u=e.left-r,c=e.left+r+n;us.right&&(o.left=s.left+s.width-c)}return o},l.prototype.getTitle=function(){var t=this.$element,e=this.options;return t.attr("data-original-title")||("function"==typeof e.title?e.title.call(t[0]):e.title)},l.prototype.getUID=function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},l.prototype.tip=function(){if(!this.$tip&&(this.$tip=t(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},l.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},l.prototype.enable=function(){this.enabled=!0},l.prototype.disable=function(){this.enabled=!1},l.prototype.toggleEnabled=function(){this.enabled=!this.enabled},l.prototype.toggle=function(e){var n=this;e&&((n=t(e.currentTarget).data("bs."+this.type))||(n=new this.constructor(e.currentTarget,this.getDelegateOptions()),t(e.currentTarget).data("bs."+this.type,n))),e?(n.inState.click=!n.inState.click,n.isInStateTrue()?n.enter(n):n.leave(n)):n.tip().hasClass("in")?n.leave(n):n.enter(n)},l.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide((function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null}))},l.prototype.sanitizeHtml=function(t){return a(t,this.options.whiteList,this.options.sanitizeFn)};var u=t.fn.tooltip;t.fn.tooltip=function(e){return this.each((function(){var n=t(this),i=n.data("bs.tooltip"),o="object"==typeof e&&e;!i&&/destroy|hide/.test(e)||(i||n.data("bs.tooltip",i=new l(this,o)),"string"==typeof e&&i[e]())}))},t.fn.tooltip.Constructor=l,t.fn.tooltip.noConflict=function(){return t.fn.tooltip=u,this}}(jQuery),function(t){"use strict";var e=function(t,e){this.init("popover",t,e)};if(!t.fn.tooltip)throw new Error("Popover requires tooltip.js");e.VERSION="3.4.1",e.DEFAULTS=t.extend({},t.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),e.prototype=t.extend({},t.fn.tooltip.Constructor.prototype),e.prototype.constructor=e,e.prototype.getDefaults=function(){return e.DEFAULTS},e.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),n=this.getContent();if(this.options.html){var i=typeof n;this.options.sanitize&&(e=this.sanitizeHtml(e),"string"===i&&(n=this.sanitizeHtml(n))),t.find(".popover-title").html(e),t.find(".popover-content").children().detach().end()["string"===i?"html":"append"](n)}else t.find(".popover-title").text(e),t.find(".popover-content").children().detach().end().text(n);t.removeClass("fade top bottom left right in"),t.find(".popover-title").html()||t.find(".popover-title").hide()},e.prototype.hasContent=function(){return this.getTitle()||this.getContent()},e.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr("data-content")||("function"==typeof e.content?e.content.call(t[0]):e.content)},e.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var n=t.fn.popover;t.fn.popover=function(n){return this.each((function(){var i=t(this),o=i.data("bs.popover"),r="object"==typeof n&&n;!o&&/destroy|hide/.test(n)||(o||i.data("bs.popover",o=new e(this,r)),"string"==typeof n&&o[n]())}))},t.fn.popover.Constructor=e,t.fn.popover.noConflict=function(){return t.fn.popover=n,this}}(jQuery),function(t){"use strict";function e(n,i){this.$body=t(document.body),this.$scrollElement=t(n).is(document.body)?t(window):t(n),this.options=t.extend({},e.DEFAULTS,i),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",t.proxy(this.process,this)),this.refresh(),this.process()}function n(n){return this.each((function(){var i=t(this),o=i.data("bs.scrollspy"),r="object"==typeof n&&n;o||i.data("bs.scrollspy",o=new e(this,r)),"string"==typeof n&&o[n]()}))}e.VERSION="3.4.1",e.DEFAULTS={offset:10},e.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},e.prototype.refresh=function(){var e=this,n="offset",i=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),t.isWindow(this.$scrollElement[0])||(n="position",i=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map((function(){var e=t(this),o=e.data("target")||e.attr("href"),r=/^#./.test(o)&&t(o);return r&&r.length&&r.is(":visible")&&[[r[n]().top+i,o]]||null})).sort((function(t,e){return t[0]-e[0]})).each((function(){e.offsets.push(this[0]),e.targets.push(this[1])}))},e.prototype.process=function(){var t,e=this.$scrollElement.scrollTop()+this.options.offset,n=this.getScrollHeight(),i=this.options.offset+n-this.$scrollElement.height(),o=this.offsets,r=this.targets,s=this.activeTarget;if(this.scrollHeight!=n&&this.refresh(),e>=i)return s!=(t=r[r.length-1])&&this.activate(t);if(s&&e=o[t]&&(void 0===o[t+1]||e .active"),s=o&&t.support.transition&&(r.length&&r.hasClass("fade")||!!i.find("> .fade").length);function a(){r.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),n.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),s?(n[0].offsetWidth,n.addClass("in")):n.removeClass("fade"),n.parent(".dropdown-menu").length&&n.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),o&&o()}r.length&&s?r.one("bsTransitionEnd",a).emulateTransitionEnd(e.TRANSITION_DURATION):a(),r.removeClass("in")};var i=t.fn.tab;t.fn.tab=n,t.fn.tab.Constructor=e,t.fn.tab.noConflict=function(){return t.fn.tab=i,this};var o=function(e){e.preventDefault(),n.call(t(this),"show")};t(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',o).on("click.bs.tab.data-api",'[data-toggle="pill"]',o)}(jQuery),function(t){"use strict";var e=function(n,i){this.options=t.extend({},e.DEFAULTS,i);var o=this.options.target===e.DEFAULTS.target?t(this.options.target):t(document).find(this.options.target);this.$target=o.on("scroll.bs.affix.data-api",t.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",t.proxy(this.checkPositionWithEventLoop,this)),this.$element=t(n),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};function n(n){return this.each((function(){var i=t(this),o=i.data("bs.affix"),r="object"==typeof n&&n;o||i.data("bs.affix",o=new e(this,r)),"string"==typeof n&&o[n]()}))}e.VERSION="3.4.1",e.RESET="affix affix-top affix-bottom",e.DEFAULTS={offset:0,target:window},e.prototype.getState=function(t,e,n,i){var o=this.$target.scrollTop(),r=this.$element.offset(),s=this.$target.height();if(null!=n&&"top"==this.affixed)return o=t-i&&"bottom"},e.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(e.RESET).addClass("affix");var t=this.$target.scrollTop(),n=this.$element.offset();return this.pinnedOffset=n.top-t},e.prototype.checkPositionWithEventLoop=function(){setTimeout(t.proxy(this.checkPosition,this),1)},e.prototype.checkPosition=function(){if(this.$element.is(":visible")){var n=this.$element.height(),i=this.options.offset,o=i.top,r=i.bottom,s=Math.max(t(document).height(),t(document.body).height());"object"!=typeof i&&(r=o=i),"function"==typeof o&&(o=i.top(this.$element)),"function"==typeof r&&(r=i.bottom(this.$element));var a=this.getState(s,n,o,r);if(this.affixed!=a){null!=this.unpin&&this.$element.css("top","");var l="affix"+(a?"-"+a:""),u=t.Event(l+".bs.affix");if(this.$element.trigger(u),u.isDefaultPrevented())return;this.affixed=a,this.unpin="bottom"==a?this.getPinnedOffset():null,this.$element.removeClass(e.RESET).addClass(l).trigger(l.replace("affix","affixed")+".bs.affix")}"bottom"==a&&this.$element.offset({top:s-n-r})}};var i=t.fn.affix;t.fn.affix=n,t.fn.affix.Constructor=e,t.fn.affix.noConflict=function(){return t.fn.affix=i,this},t(window).on("load",(function(){t('[data-spy="affix"]').each((function(){var e=t(this),i=e.data();i.offset=i.offset||{},null!=i.offsetBottom&&(i.offset.bottom=i.offsetBottom),null!=i.offsetTop&&(i.offset.top=i.offsetTop),n.call(e,i)}))}))}(jQuery)},9755:function(t,e){var n;!function(e,n){"use strict";"object"==typeof t.exports?t.exports=e.document?n(e,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return n(t)}:n(e)}("undefined"!=typeof window?window:this,(function(i,o){"use strict";var r=[],s=Object.getPrototypeOf,a=r.slice,l=r.flat?function(t){return r.flat.call(t)}:function(t){return r.concat.apply([],t)},u=r.push,c=r.indexOf,p={},f=p.toString,d=p.hasOwnProperty,h=d.toString,g=h.call(Object),v={},m=function(t){return"function"==typeof t&&"number"!=typeof t.nodeType&&"function"!=typeof t.item},y=function(t){return null!=t&&t===t.window},b=i.document,x={type:!0,src:!0,nonce:!0,noModule:!0};function w(t,e,n){var i,o,r=(n=n||b).createElement("script");if(r.text=t,e)for(i in x)(o=e[i]||e.getAttribute&&e.getAttribute(i))&&r.setAttribute(i,o);n.head.appendChild(r).parentNode.removeChild(r)}function T(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?p[f.call(t)]||"object":typeof t}var C="3.6.3",E=function(t,e){return new E.fn.init(t,e)};function S(t){var e=!!t&&"length"in t&&t.length,n=T(t);return!m(t)&&!y(t)&&("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t)}E.fn=E.prototype={jquery:C,constructor:E,length:0,toArray:function(){return a.call(this)},get:function(t){return null==t?a.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=E.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return E.each(this,t)},map:function(t){return this.pushStack(E.map(this,(function(e,n){return t.call(e,n,e)})))},slice:function(){return this.pushStack(a.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(E.grep(this,(function(t,e){return(e+1)%2})))},odd:function(){return this.pushStack(E.grep(this,(function(t,e){return e%2})))},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n+~]|"+H+")"+H+"*"),z=new RegExp(H+"|>"),V=new RegExp(M),Q=new RegExp("^"+P+"$"),X={ID:new RegExp("^#("+P+")"),CLASS:new RegExp("^\\.("+P+")"),TAG:new RegExp("^("+P+"|[*])"),ATTR:new RegExp("^"+F),PSEUDO:new RegExp("^"+M),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+H+"*(even|odd|(([+-]|)(\\d*)n|)"+H+"*(?:([+-]|)"+H+"*(\\d+)|))"+H+"*\\)|)","i"),bool:new RegExp("^(?:"+q+")$","i"),needsContext:new RegExp("^"+H+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+H+"*((?:-\\d)?\\d*)"+H+"*\\)|)(?=[^-]|$)","i")},G=/HTML$/i,Y=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,tt=/[+~]/,et=new RegExp("\\\\[\\da-fA-F]{1,6}"+H+"?|\\\\([^\\r\\n\\f])","g"),nt=function(t,e){var n="0x"+t.slice(1)-65536;return e||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},it=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ot=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},rt=function(){f()},st=xt((function(t){return!0===t.disabled&&"fieldset"===t.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{I.apply(N=L.call(w.childNodes),w.childNodes),N[w.childNodes.length].nodeType}catch(t){I={apply:N.length?function(t,e){O.apply(t,L.call(e))}:function(t,e){for(var n=t.length,i=0;t[n++]=e[i++];);t.length=n-1}}}function at(t,e,i,o){var r,a,u,c,p,h,m,y=e&&e.ownerDocument,w=e?e.nodeType:9;if(i=i||[],"string"!=typeof t||!t||1!==w&&9!==w&&11!==w)return i;if(!o&&(f(e),e=e||d,g)){if(11!==w&&(p=Z.exec(t)))if(r=p[1]){if(9===w){if(!(u=e.getElementById(r)))return i;if(u.id===r)return i.push(u),i}else if(y&&(u=y.getElementById(r))&&b(e,u)&&u.id===r)return i.push(u),i}else{if(p[2])return I.apply(i,e.getElementsByTagName(t)),i;if((r=p[3])&&n.getElementsByClassName&&e.getElementsByClassName)return I.apply(i,e.getElementsByClassName(r)),i}if(n.qsa&&!k[t+" "]&&(!v||!v.test(t))&&(1!==w||"object"!==e.nodeName.toLowerCase())){if(m=t,y=e,1===w&&(z.test(t)||_.test(t))){for((y=tt.test(t)&&mt(e.parentNode)||e)===e&&n.scope||((c=e.getAttribute("id"))?c=c.replace(it,ot):e.setAttribute("id",c=x)),a=(h=s(t)).length;a--;)h[a]=(c?"#"+c:":scope")+" "+bt(h[a]);m=h.join(",")}try{if(n.cssSupportsSelector&&!CSS.supports("selector(:is("+m+"))"))throw new Error;return I.apply(i,y.querySelectorAll(m)),i}catch(e){k(t,!0)}finally{c===x&&e.removeAttribute("id")}}}return l(t.replace(B,"$1"),e,i,o)}function lt(){var t=[];return function e(n,o){return t.push(n+" ")>i.cacheLength&&delete e[t.shift()],e[n+" "]=o}}function ut(t){return t[x]=!0,t}function ct(t){var e=d.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function pt(t,e){for(var n=t.split("|"),o=n.length;o--;)i.attrHandle[n[o]]=e}function ft(t,e){var n=e&&t,i=n&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(i)return i;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function dt(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function ht(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}function gt(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&st(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function vt(t){return ut((function(e){return e=+e,ut((function(n,i){for(var o,r=t([],n.length,e),s=r.length;s--;)n[o=r[s]]&&(n[o]=!(i[o]=n[o]))}))}))}function mt(t){return t&&void 0!==t.getElementsByTagName&&t}for(e in n=at.support={},r=at.isXML=function(t){var e=t&&t.namespaceURI,n=t&&(t.ownerDocument||t).documentElement;return!G.test(e||n&&n.nodeName||"HTML")},f=at.setDocument=function(t){var e,o,s=t?t.ownerDocument||t:w;return s!=d&&9===s.nodeType&&s.documentElement?(h=(d=s).documentElement,g=!r(d),w!=d&&(o=d.defaultView)&&o.top!==o&&(o.addEventListener?o.addEventListener("unload",rt,!1):o.attachEvent&&o.attachEvent("onunload",rt)),n.scope=ct((function(t){return h.appendChild(t).appendChild(d.createElement("div")),void 0!==t.querySelectorAll&&!t.querySelectorAll(":scope fieldset div").length})),n.cssSupportsSelector=ct((function(){return CSS.supports("selector(*)")&&d.querySelectorAll(":is(:jqfake)")&&!CSS.supports("selector(:is(*,:jqfake))")})),n.attributes=ct((function(t){return t.className="i",!t.getAttribute("className")})),n.getElementsByTagName=ct((function(t){return t.appendChild(d.createComment("")),!t.getElementsByTagName("*").length})),n.getElementsByClassName=K.test(d.getElementsByClassName),n.getById=ct((function(t){return h.appendChild(t).id=x,!d.getElementsByName||!d.getElementsByName(x).length})),n.getById?(i.filter.ID=function(t){var e=t.replace(et,nt);return function(t){return t.getAttribute("id")===e}},i.find.ID=function(t,e){if(void 0!==e.getElementById&&g){var n=e.getElementById(t);return n?[n]:[]}}):(i.filter.ID=function(t){var e=t.replace(et,nt);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},i.find.ID=function(t,e){if(void 0!==e.getElementById&&g){var n,i,o,r=e.getElementById(t);if(r){if((n=r.getAttributeNode("id"))&&n.value===t)return[r];for(o=e.getElementsByName(t),i=0;r=o[i++];)if((n=r.getAttributeNode("id"))&&n.value===t)return[r]}return[]}}),i.find.TAG=n.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):n.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,i=[],o=0,r=e.getElementsByTagName(t);if("*"===t){for(;n=r[o++];)1===n.nodeType&&i.push(n);return i}return r},i.find.CLASS=n.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&g)return e.getElementsByClassName(t)},m=[],v=[],(n.qsa=K.test(d.querySelectorAll))&&(ct((function(t){var e;h.appendChild(t).innerHTML="",t.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+H+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||v.push("\\["+H+"*(?:value|"+q+")"),t.querySelectorAll("[id~="+x+"-]").length||v.push("~="),(e=d.createElement("input")).setAttribute("name",""),t.appendChild(e),t.querySelectorAll("[name='']").length||v.push("\\["+H+"*name"+H+"*="+H+"*(?:''|\"\")"),t.querySelectorAll(":checked").length||v.push(":checked"),t.querySelectorAll("a#"+x+"+*").length||v.push(".#.+[+~]"),t.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")})),ct((function(t){t.innerHTML="";var e=d.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&v.push("name"+H+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),h.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),v.push(",.*:")}))),(n.matchesSelector=K.test(y=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ct((function(t){n.disconnectedMatch=y.call(t,"*"),y.call(t,"[s!='']:x"),m.push("!=",M)})),n.cssSupportsSelector||v.push(":has"),v=v.length&&new RegExp(v.join("|")),m=m.length&&new RegExp(m.join("|")),e=K.test(h.compareDocumentPosition),b=e||K.test(h.contains)?function(t,e){var n=9===t.nodeType&&t.documentElement||t,i=e&&e.parentNode;return t===i||!(!i||1!==i.nodeType||!(n.contains?n.contains(i):t.compareDocumentPosition&&16&t.compareDocumentPosition(i)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},A=e?function(t,e){if(t===e)return p=!0,0;var i=!t.compareDocumentPosition-!e.compareDocumentPosition;return i||(1&(i=(t.ownerDocument||t)==(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!n.sortDetached&&e.compareDocumentPosition(t)===i?t==d||t.ownerDocument==w&&b(w,t)?-1:e==d||e.ownerDocument==w&&b(w,e)?1:c?R(c,t)-R(c,e):0:4&i?-1:1)}:function(t,e){if(t===e)return p=!0,0;var n,i=0,o=t.parentNode,r=e.parentNode,s=[t],a=[e];if(!o||!r)return t==d?-1:e==d?1:o?-1:r?1:c?R(c,t)-R(c,e):0;if(o===r)return ft(t,e);for(n=t;n=n.parentNode;)s.unshift(n);for(n=e;n=n.parentNode;)a.unshift(n);for(;s[i]===a[i];)i++;return i?ft(s[i],a[i]):s[i]==w?-1:a[i]==w?1:0},d):d},at.matches=function(t,e){return at(t,null,null,e)},at.matchesSelector=function(t,e){if(f(t),n.matchesSelector&&g&&!k[e+" "]&&(!m||!m.test(e))&&(!v||!v.test(e)))try{var i=y.call(t,e);if(i||n.disconnectedMatch||t.document&&11!==t.document.nodeType)return i}catch(t){k(e,!0)}return at(e,d,null,[t]).length>0},at.contains=function(t,e){return(t.ownerDocument||t)!=d&&f(t),b(t,e)},at.attr=function(t,e){(t.ownerDocument||t)!=d&&f(t);var o=i.attrHandle[e.toLowerCase()],r=o&&D.call(i.attrHandle,e.toLowerCase())?o(t,e,!g):void 0;return void 0!==r?r:n.attributes||!g?t.getAttribute(e):(r=t.getAttributeNode(e))&&r.specified?r.value:null},at.escape=function(t){return(t+"").replace(it,ot)},at.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},at.uniqueSort=function(t){var e,i=[],o=0,r=0;if(p=!n.detectDuplicates,c=!n.sortStable&&t.slice(0),t.sort(A),p){for(;e=t[r++];)e===t[r]&&(o=i.push(r));for(;o--;)t.splice(i[o],1)}return c=null,t},o=at.getText=function(t){var e,n="",i=0,r=t.nodeType;if(r){if(1===r||9===r||11===r){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=o(t)}else if(3===r||4===r)return t.nodeValue}else for(;e=t[i++];)n+=o(e);return n},i=at.selectors={cacheLength:50,createPseudo:ut,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(et,nt),t[3]=(t[3]||t[4]||t[5]||"").replace(et,nt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||at.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&at.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return X.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&V.test(n)&&(e=s(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(et,nt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=E[t+" "];return e||(e=new RegExp("(^|"+H+")"+t+"("+H+"|$)"))&&E(t,(function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")}))},ATTR:function(t,e,n){return function(i){var o=at.attr(i,t);return null==o?"!="===e:!e||(o+="","="===e?o===n:"!="===e?o!==n:"^="===e?n&&0===o.indexOf(n):"*="===e?n&&o.indexOf(n)>-1:"$="===e?n&&o.slice(-n.length)===n:"~="===e?(" "+o.replace(W," ")+" ").indexOf(n)>-1:"|="===e&&(o===n||o.slice(0,n.length+1)===n+"-"))}},CHILD:function(t,e,n,i,o){var r="nth"!==t.slice(0,3),s="last"!==t.slice(-4),a="of-type"===e;return 1===i&&0===o?function(t){return!!t.parentNode}:function(e,n,l){var u,c,p,f,d,h,g=r!==s?"nextSibling":"previousSibling",v=e.parentNode,m=a&&e.nodeName.toLowerCase(),y=!l&&!a,b=!1;if(v){if(r){for(;g;){for(f=e;f=f[g];)if(a?f.nodeName.toLowerCase()===m:1===f.nodeType)return!1;h=g="only"===t&&!h&&"nextSibling"}return!0}if(h=[s?v.firstChild:v.lastChild],s&&y){for(b=(d=(u=(c=(p=(f=v)[x]||(f[x]={}))[f.uniqueID]||(p[f.uniqueID]={}))[t]||[])[0]===T&&u[1])&&u[2],f=d&&v.childNodes[d];f=++d&&f&&f[g]||(b=d=0)||h.pop();)if(1===f.nodeType&&++b&&f===e){c[t]=[T,d,b];break}}else if(y&&(b=d=(u=(c=(p=(f=e)[x]||(f[x]={}))[f.uniqueID]||(p[f.uniqueID]={}))[t]||[])[0]===T&&u[1]),!1===b)for(;(f=++d&&f&&f[g]||(b=d=0)||h.pop())&&((a?f.nodeName.toLowerCase()!==m:1!==f.nodeType)||!++b||(y&&((c=(p=f[x]||(f[x]={}))[f.uniqueID]||(p[f.uniqueID]={}))[t]=[T,b]),f!==e)););return(b-=o)===i||b%i==0&&b/i>=0}}},PSEUDO:function(t,e){var n,o=i.pseudos[t]||i.setFilters[t.toLowerCase()]||at.error("unsupported pseudo: "+t);return o[x]?o(e):o.length>1?(n=[t,t,"",e],i.setFilters.hasOwnProperty(t.toLowerCase())?ut((function(t,n){for(var i,r=o(t,e),s=r.length;s--;)t[i=R(t,r[s])]=!(n[i]=r[s])})):function(t){return o(t,0,n)}):o}},pseudos:{not:ut((function(t){var e=[],n=[],i=a(t.replace(B,"$1"));return i[x]?ut((function(t,e,n,o){for(var r,s=i(t,null,o,[]),a=t.length;a--;)(r=s[a])&&(t[a]=!(e[a]=r))})):function(t,o,r){return e[0]=t,i(e,null,r,n),e[0]=null,!n.pop()}})),has:ut((function(t){return function(e){return at(t,e).length>0}})),contains:ut((function(t){return t=t.replace(et,nt),function(e){return(e.textContent||o(e)).indexOf(t)>-1}})),lang:ut((function(t){return Q.test(t||"")||at.error("unsupported lang: "+t),t=t.replace(et,nt).toLowerCase(),function(e){var n;do{if(n=g?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(n=n.toLowerCase())===t||0===n.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}})),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===h},focus:function(t){return t===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:gt(!1),disabled:gt(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!i.pseudos.empty(t)},header:function(t){return J.test(t.nodeName)},input:function(t){return Y.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:vt((function(){return[0]})),last:vt((function(t,e){return[e-1]})),eq:vt((function(t,e,n){return[n<0?n+e:n]})),even:vt((function(t,e){for(var n=0;ne?e:n;--i>=0;)t.push(i);return t})),gt:vt((function(t,e,n){for(var i=n<0?n+e:n;++i1?function(e,n,i){for(var o=t.length;o--;)if(!t[o](e,n,i))return!1;return!0}:t[0]}function Tt(t,e,n,i,o){for(var r,s=[],a=0,l=t.length,u=null!=e;a-1&&(r[u]=!(s[u]=p))}}else m=Tt(m===s?m.splice(h,m.length):m),o?o(null,s,m,l):I.apply(s,m)}))}function Et(t){for(var e,n,o,r=t.length,s=i.relative[t[0].type],a=s||i.relative[" "],l=s?1:0,c=xt((function(t){return t===e}),a,!0),p=xt((function(t){return R(e,t)>-1}),a,!0),f=[function(t,n,i){var o=!s&&(i||n!==u)||((e=n).nodeType?c(t,n,i):p(t,n,i));return e=null,o}];l1&&wt(f),l>1&&bt(t.slice(0,l-1).concat({value:" "===t[l-2].type?"*":""})).replace(B,"$1"),n,l0,o=t.length>0,r=function(r,s,a,l,c){var p,h,v,m=0,y="0",b=r&&[],x=[],w=u,C=r||o&&i.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,S=C.length;for(c&&(u=s==d||s||c);y!==S&&null!=(p=C[y]);y++){if(o&&p){for(h=0,s||p.ownerDocument==d||(f(p),a=!g);v=t[h++];)if(v(p,s||d,a)){l.push(p);break}c&&(T=E)}n&&((p=!v&&p)&&m--,r&&b.push(p))}if(m+=y,n&&y!==m){for(h=0;v=e[h++];)v(b,x,s,a);if(r){if(m>0)for(;y--;)b[y]||x[y]||(x[y]=j.call(l));x=Tt(x)}I.apply(l,x),c&&!r&&x.length>0&&m+e.length>1&&at.uniqueSort(l)}return c&&(T=E,u=w),b};return n?ut(r):r}(r,o)),a.selector=t}return a},l=at.select=function(t,e,n,o){var r,l,u,c,p,f="function"==typeof t&&t,d=!o&&s(t=f.selector||t);if(n=n||[],1===d.length){if((l=d[0]=d[0].slice(0)).length>2&&"ID"===(u=l[0]).type&&9===e.nodeType&&g&&i.relative[l[1].type]){if(!(e=(i.find.ID(u.matches[0].replace(et,nt),e)||[])[0]))return n;f&&(e=e.parentNode),t=t.slice(l.shift().value.length)}for(r=X.needsContext.test(t)?0:l.length;r--&&(u=l[r],!i.relative[c=u.type]);)if((p=i.find[c])&&(o=p(u.matches[0].replace(et,nt),tt.test(l[0].type)&&mt(e.parentNode)||e))){if(l.splice(r,1),!(t=o.length&&bt(l)))return I.apply(n,o),n;break}}return(f||a(t,d))(o,e,!g,n,!e||tt.test(t)&&mt(e.parentNode)||e),n},n.sortStable=x.split("").sort(A).join("")===x,n.detectDuplicates=!!p,f(),n.sortDetached=ct((function(t){return 1&t.compareDocumentPosition(d.createElement("fieldset"))})),ct((function(t){return t.innerHTML="","#"===t.firstChild.getAttribute("href")}))||pt("type|href|height|width",(function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)})),n.attributes&&ct((function(t){return t.innerHTML="",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")}))||pt("value",(function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue})),ct((function(t){return null==t.getAttribute("disabled")}))||pt(q,(function(t,e,n){var i;if(!n)return!0===t[e]?e.toLowerCase():(i=t.getAttributeNode(e))&&i.specified?i.value:null})),at}(i);E.find=$,E.expr=$.selectors,E.expr[":"]=E.expr.pseudos,E.uniqueSort=E.unique=$.uniqueSort,E.text=$.getText,E.isXMLDoc=$.isXML,E.contains=$.contains,E.escapeSelector=$.escape;var k=function(t,e,n){for(var i=[],o=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(o&&E(t).is(n))break;i.push(t)}return i},A=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},D=E.expr.match.needsContext;function N(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}var j=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function O(t,e,n){return m(e)?E.grep(t,(function(t,i){return!!e.call(t,i,t)!==n})):e.nodeType?E.grep(t,(function(t){return t===e!==n})):"string"!=typeof e?E.grep(t,(function(t){return c.call(e,t)>-1!==n})):E.filter(e,t,n)}E.filter=function(t,e,n){var i=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===i.nodeType?E.find.matchesSelector(i,t)?[i]:[]:E.find.matches(t,E.grep(e,(function(t){return 1===t.nodeType})))},E.fn.extend({find:function(t){var e,n,i=this.length,o=this;if("string"!=typeof t)return this.pushStack(E(t).filter((function(){for(e=0;e1?E.uniqueSort(n):n},filter:function(t){return this.pushStack(O(this,t||[],!1))},not:function(t){return this.pushStack(O(this,t||[],!0))},is:function(t){return!!O(this,"string"==typeof t&&D.test(t)?E(t):t||[],!1).length}});var I,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(E.fn.init=function(t,e,n){var i,o;if(!t)return this;if(n=n||I,"string"==typeof t){if(!(i="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:L.exec(t))||!i[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(i[1]){if(e=e instanceof E?e[0]:e,E.merge(this,E.parseHTML(i[1],e&&e.nodeType?e.ownerDocument||e:b,!0)),j.test(i[1])&&E.isPlainObject(e))for(i in e)m(this[i])?this[i](e[i]):this.attr(i,e[i]);return this}return(o=b.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):m(t)?void 0!==n.ready?n.ready(t):t(E):E.makeArray(t,this)}).prototype=E.fn,I=E(b);var R=/^(?:parents|prev(?:Until|All))/,q={children:!0,contents:!0,next:!0,prev:!0};function H(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}E.fn.extend({has:function(t){var e=E(t,this),n=e.length;return this.filter((function(){for(var t=0;t-1:1===n.nodeType&&E.find.matchesSelector(n,t))){r.push(n);break}return this.pushStack(r.length>1?E.uniqueSort(r):r)},index:function(t){return t?"string"==typeof t?c.call(E(t),this[0]):c.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(E.uniqueSort(E.merge(this.get(),E(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),E.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return k(t,"parentNode")},parentsUntil:function(t,e,n){return k(t,"parentNode",n)},next:function(t){return H(t,"nextSibling")},prev:function(t){return H(t,"previousSibling")},nextAll:function(t){return k(t,"nextSibling")},prevAll:function(t){return k(t,"previousSibling")},nextUntil:function(t,e,n){return k(t,"nextSibling",n)},prevUntil:function(t,e,n){return k(t,"previousSibling",n)},siblings:function(t){return A((t.parentNode||{}).firstChild,t)},children:function(t){return A(t.firstChild)},contents:function(t){return null!=t.contentDocument&&s(t.contentDocument)?t.contentDocument:(N(t,"template")&&(t=t.content||t),E.merge([],t.childNodes))}},(function(t,e){E.fn[t]=function(n,i){var o=E.map(this,e,n);return"Until"!==t.slice(-5)&&(i=n),i&&"string"==typeof i&&(o=E.filter(i,o)),this.length>1&&(q[t]||E.uniqueSort(o),R.test(t)&&o.reverse()),this.pushStack(o)}}));var P=/[^\x20\t\r\n\f]+/g;function F(t){return t}function M(t){throw t}function W(t,e,n,i){var o;try{t&&m(o=t.promise)?o.call(t).done(e).fail(n):t&&m(o=t.then)?o.call(t,e,n):e.apply(void 0,[t].slice(i))}catch(t){n.apply(void 0,[t])}}E.Callbacks=function(t){t="string"==typeof t?function(t){var e={};return E.each(t.match(P)||[],(function(t,n){e[n]=!0})),e}(t):E.extend({},t);var e,n,i,o,r=[],s=[],a=-1,l=function(){for(o=o||t.once,i=e=!0;s.length;a=-1)for(n=s.shift();++a-1;)r.splice(n,1),n<=a&&a--})),this},has:function(t){return t?E.inArray(t,r)>-1:r.length>0},empty:function(){return r&&(r=[]),this},disable:function(){return o=s=[],r=n="",this},disabled:function(){return!r},lock:function(){return o=s=[],n||e||(r=n=""),this},locked:function(){return!!o},fireWith:function(t,n){return o||(n=[t,(n=n||[]).slice?n.slice():n],s.push(n),e||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!i}};return u},E.extend({Deferred:function(t){var e=[["notify","progress",E.Callbacks("memory"),E.Callbacks("memory"),2],["resolve","done",E.Callbacks("once memory"),E.Callbacks("once memory"),0,"resolved"],["reject","fail",E.Callbacks("once memory"),E.Callbacks("once memory"),1,"rejected"]],n="pending",o={state:function(){return n},always:function(){return r.done(arguments).fail(arguments),this},catch:function(t){return o.then(null,t)},pipe:function(){var t=arguments;return E.Deferred((function(n){E.each(e,(function(e,i){var o=m(t[i[4]])&&t[i[4]];r[i[1]]((function(){var t=o&&o.apply(this,arguments);t&&m(t.promise)?t.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[i[0]+"With"](this,o?[t]:arguments)}))})),t=null})).promise()},then:function(t,n,o){var r=0;function s(t,e,n,o){return function(){var a=this,l=arguments,u=function(){var i,u;if(!(t=r&&(n!==M&&(a=void 0,l=[i]),e.rejectWith(a,l))}};t?c():(E.Deferred.getStackHook&&(c.stackTrace=E.Deferred.getStackHook()),i.setTimeout(c))}}return E.Deferred((function(i){e[0][3].add(s(0,i,m(o)?o:F,i.notifyWith)),e[1][3].add(s(0,i,m(t)?t:F)),e[2][3].add(s(0,i,m(n)?n:M))})).promise()},promise:function(t){return null!=t?E.extend(t,o):o}},r={};return E.each(e,(function(t,i){var s=i[2],a=i[5];o[i[1]]=s.add,a&&s.add((function(){n=a}),e[3-t][2].disable,e[3-t][3].disable,e[0][2].lock,e[0][3].lock),s.add(i[3].fire),r[i[0]]=function(){return r[i[0]+"With"](this===r?void 0:this,arguments),this},r[i[0]+"With"]=s.fireWith})),o.promise(r),t&&t.call(r,r),r},when:function(t){var e=arguments.length,n=e,i=Array(n),o=a.call(arguments),r=E.Deferred(),s=function(t){return function(n){i[t]=this,o[t]=arguments.length>1?a.call(arguments):n,--e||r.resolveWith(i,o)}};if(e<=1&&(W(t,r.done(s(n)).resolve,r.reject,!e),"pending"===r.state()||m(o[n]&&o[n].then)))return r.then();for(;n--;)W(o[n],s(n),r.reject);return r.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;E.Deferred.exceptionHook=function(t,e){i.console&&i.console.warn&&t&&B.test(t.name)&&i.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)},E.readyException=function(t){i.setTimeout((function(){throw t}))};var U=E.Deferred();function _(){b.removeEventListener("DOMContentLoaded",_),i.removeEventListener("load",_),E.ready()}E.fn.ready=function(t){return U.then(t).catch((function(t){E.readyException(t)})),this},E.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--E.readyWait:E.isReady)||(E.isReady=!0,!0!==t&&--E.readyWait>0||U.resolveWith(b,[E]))}}),E.ready.then=U.then,"complete"===b.readyState||"loading"!==b.readyState&&!b.documentElement.doScroll?i.setTimeout(E.ready):(b.addEventListener("DOMContentLoaded",_),i.addEventListener("load",_));var z=function(t,e,n,i,o,r,s){var a=0,l=t.length,u=null==n;if("object"===T(n))for(a in o=!0,n)z(t,e,a,n[a],!0,r,s);else if(void 0!==i&&(o=!0,m(i)||(s=!0),u&&(s?(e.call(t,i),e=null):(u=e,e=function(t,e,n){return u.call(E(t),n)})),e))for(;a1,null,!0)},removeData:function(t){return this.each((function(){Z.remove(this,t)}))}}),E.extend({queue:function(t,e,n){var i;if(t)return e=(e||"fx")+"queue",i=K.get(t,e),n&&(!i||Array.isArray(n)?i=K.access(t,e,E.makeArray(n)):i.push(n)),i||[]},dequeue:function(t,e){e=e||"fx";var n=E.queue(t,e),i=n.length,o=n.shift(),r=E._queueHooks(t,e);"inprogress"===o&&(o=n.shift(),i--),o&&("fx"===e&&n.unshift("inprogress"),delete r.stop,o.call(t,(function(){E.dequeue(t,e)}),r)),!i&&r&&r.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return K.get(t,n)||K.access(t,n,{empty:E.Callbacks("once memory").add((function(){K.remove(t,[e+"queue",n])}))})}}),E.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length\x20\t\r\n\f]*)/i,yt=/^$|^module$|\/(?:java|ecma)script/i;ht=b.createDocumentFragment().appendChild(b.createElement("div")),(gt=b.createElement("input")).setAttribute("type","radio"),gt.setAttribute("checked","checked"),gt.setAttribute("name","t"),ht.appendChild(gt),v.checkClone=ht.cloneNode(!0).cloneNode(!0).lastChild.checked,ht.innerHTML="",v.noCloneChecked=!!ht.cloneNode(!0).lastChild.defaultValue,ht.innerHTML="",v.option=!!ht.lastChild;var bt={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function xt(t,e){var n;return n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&N(t,e)?E.merge([t],n):n}function wt(t,e){for(var n=0,i=t.length;n",""]);var Tt=/<|&#?\w+;/;function Ct(t,e,n,i,o){for(var r,s,a,l,u,c,p=e.createDocumentFragment(),f=[],d=0,h=t.length;d-1)o&&o.push(r);else if(u=at(r),s=xt(p.appendChild(r),"script"),u&&wt(s),n)for(c=0;r=s[c++];)yt.test(r.type||"")&&n.push(r);return p}var Et=/^([^.]*)(?:\.(.+)|)/;function St(){return!0}function $t(){return!1}function kt(t,e){return t===function(){try{return b.activeElement}catch(t){}}()==("focus"===e)}function At(t,e,n,i,o,r){var s,a;if("object"==typeof e){for(a in"string"!=typeof n&&(i=i||n,n=void 0),e)At(t,a,n,i,e[a],r);return t}if(null==i&&null==o?(o=n,i=n=void 0):null==o&&("string"==typeof n?(o=i,i=void 0):(o=i,i=n,n=void 0)),!1===o)o=$t;else if(!o)return t;return 1===r&&(s=o,o=function(t){return E().off(t),s.apply(this,arguments)},o.guid=s.guid||(s.guid=E.guid++)),t.each((function(){E.event.add(this,e,o,i,n)}))}function Dt(t,e,n){n?(K.set(t,e,!1),E.event.add(t,e,{namespace:!1,handler:function(t){var i,o,r=K.get(this,e);if(1&t.isTrigger&&this[e]){if(r.length)(E.event.special[e]||{}).delegateType&&t.stopPropagation();else if(r=a.call(arguments),K.set(this,e,r),i=n(this,e),this[e](),r!==(o=K.get(this,e))||i?K.set(this,e,!1):o={},r!==o)return t.stopImmediatePropagation(),t.preventDefault(),o&&o.value}else r.length&&(K.set(this,e,{value:E.event.trigger(E.extend(r[0],E.Event.prototype),r.slice(1),this)}),t.stopImmediatePropagation())}})):void 0===K.get(t,e)&&E.event.add(t,e,St)}E.event={global:{},add:function(t,e,n,i,o){var r,s,a,l,u,c,p,f,d,h,g,v=K.get(t);if(Y(t))for(n.handler&&(n=(r=n).handler,o=r.selector),o&&E.find.matchesSelector(st,o),n.guid||(n.guid=E.guid++),(l=v.events)||(l=v.events=Object.create(null)),(s=v.handle)||(s=v.handle=function(e){return void 0!==E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),u=(e=(e||"").match(P)||[""]).length;u--;)d=g=(a=Et.exec(e[u])||[])[1],h=(a[2]||"").split(".").sort(),d&&(p=E.event.special[d]||{},d=(o?p.delegateType:p.bindType)||d,p=E.event.special[d]||{},c=E.extend({type:d,origType:g,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&E.expr.match.needsContext.test(o),namespace:h.join(".")},r),(f=l[d])||((f=l[d]=[]).delegateCount=0,p.setup&&!1!==p.setup.call(t,i,h,s)||t.addEventListener&&t.addEventListener(d,s)),p.add&&(p.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),o?f.splice(f.delegateCount++,0,c):f.push(c),E.event.global[d]=!0)},remove:function(t,e,n,i,o){var r,s,a,l,u,c,p,f,d,h,g,v=K.hasData(t)&&K.get(t);if(v&&(l=v.events)){for(u=(e=(e||"").match(P)||[""]).length;u--;)if(d=g=(a=Et.exec(e[u])||[])[1],h=(a[2]||"").split(".").sort(),d){for(p=E.event.special[d]||{},f=l[d=(i?p.delegateType:p.bindType)||d]||[],a=a[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=r=f.length;r--;)c=f[r],!o&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||i&&i!==c.selector&&("**"!==i||!c.selector)||(f.splice(r,1),c.selector&&f.delegateCount--,p.remove&&p.remove.call(t,c));s&&!f.length&&(p.teardown&&!1!==p.teardown.call(t,h,v.handle)||E.removeEvent(t,d,v.handle),delete l[d])}else for(d in l)E.event.remove(t,d+e[u],n,i,!0);E.isEmptyObject(l)&&K.remove(t,"handle events")}},dispatch:function(t){var e,n,i,o,r,s,a=new Array(arguments.length),l=E.event.fix(t),u=(K.get(this,"events")||Object.create(null))[l.type]||[],c=E.event.special[l.type]||{};for(a[0]=l,e=1;e=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==t.type||!0!==u.disabled)){for(r=[],s={},n=0;n-1:E.find(o,this,null,[u]).length),s[o]&&r.push(i);r.length&&a.push({elem:u,handlers:r})}return u=this,l\s*$/g;function It(t,e){return N(t,"table")&&N(11!==e.nodeType?e:e.firstChild,"tr")&&E(t).children("tbody")[0]||t}function Lt(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Rt(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function qt(t,e){var n,i,o,r,s,a;if(1===e.nodeType){if(K.hasData(t)&&(a=K.get(t).events))for(o in K.remove(e,"handle events"),a)for(n=0,i=a[o].length;n1&&"string"==typeof h&&!v.checkClone&&jt.test(h))return t.each((function(o){var r=t.eq(o);g&&(e[0]=h.call(this,o,r.html())),Pt(r,e,n,i)}));if(f&&(r=(o=Ct(e,t[0].ownerDocument,!1,t,i)).firstChild,1===o.childNodes.length&&(o=r),r||i)){for(a=(s=E.map(xt(o,"script"),Lt)).length;p0&&wt(s,!l&&xt(t,"script")),a},cleanData:function(t){for(var e,n,i,o=E.event.special,r=0;void 0!==(n=t[r]);r++)if(Y(n)){if(e=n[K.expando]){if(e.events)for(i in e.events)o[i]?E.event.remove(n,i):E.removeEvent(n,i,e.handle);n[K.expando]=void 0}n[Z.expando]&&(n[Z.expando]=void 0)}}}),E.fn.extend({detach:function(t){return Ft(this,t,!0)},remove:function(t){return Ft(this,t)},text:function(t){return z(this,(function(t){return void 0===t?E.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)}))}),null,t,arguments.length)},append:function(){return Pt(this,arguments,(function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||It(this,t).appendChild(t)}))},prepend:function(){return Pt(this,arguments,(function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=It(this,t);e.insertBefore(t,e.firstChild)}}))},before:function(){return Pt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this)}))},after:function(){return Pt(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)}))},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(E.cleanData(xt(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map((function(){return E.clone(this,t,e)}))},html:function(t){return z(this,(function(t){var e=this[0]||{},n=0,i=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!Nt.test(t)&&!bt[(mt.exec(t)||["",""])[1].toLowerCase()]){t=E.htmlPrefilter(t);try{for(;n=0&&(l+=Math.max(0,Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-r-l-a-.5))||0),l}function oe(t,e,n){var i=Bt(t),o=(!v.boxSizingReliable()||n)&&"border-box"===E.css(t,"boxSizing",!1,i),r=o,s=Qt(t,e,i),a="offset"+e[0].toUpperCase()+e.slice(1);if(Mt.test(s)){if(!n)return s;s="auto"}return(!v.boxSizingReliable()&&o||!v.reliableTrDimensions()&&N(t,"tr")||"auto"===s||!parseFloat(s)&&"inline"===E.css(t,"display",!1,i))&&t.getClientRects().length&&(o="border-box"===E.css(t,"boxSizing",!1,i),(r=a in t)&&(s=t[a])),(s=parseFloat(s)||0)+ie(t,e,n||(o?"border":"content"),r,i,s)+"px"}function re(t,e,n,i,o){return new re.prototype.init(t,e,n,i,o)}E.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=Qt(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(t,e,n,i){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var o,r,s,a=G(e),l=Wt.test(e),u=t.style;if(l||(e=Kt(a)),s=E.cssHooks[e]||E.cssHooks[a],void 0===n)return s&&"get"in s&&void 0!==(o=s.get(t,!1,i))?o:u[e];"string"===(r=typeof n)&&(o=ot.exec(n))&&o[1]&&(n=ct(t,e,o),r="number"),null!=n&&n==n&&("number"!==r||l||(n+=o&&o[3]||(E.cssNumber[a]?"":"px")),v.clearCloneStyle||""!==n||0!==e.indexOf("background")||(u[e]="inherit"),s&&"set"in s&&void 0===(n=s.set(t,n,i))||(l?u.setProperty(e,n):u[e]=n))}},css:function(t,e,n,i){var o,r,s,a=G(e);return Wt.test(e)||(e=Kt(a)),(s=E.cssHooks[e]||E.cssHooks[a])&&"get"in s&&(o=s.get(t,!0,n)),void 0===o&&(o=Qt(t,e,i)),"normal"===o&&e in ee&&(o=ee[e]),""===n||n?(r=parseFloat(o),!0===n||isFinite(r)?r||0:o):o}}),E.each(["height","width"],(function(t,e){E.cssHooks[e]={get:function(t,n,i){if(n)return!Zt.test(E.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?oe(t,e,i):Ut(t,te,(function(){return oe(t,e,i)}))},set:function(t,n,i){var o,r=Bt(t),s=!v.scrollboxSize()&&"absolute"===r.position,a=(s||i)&&"border-box"===E.css(t,"boxSizing",!1,r),l=i?ie(t,e,i,a,r):0;return a&&s&&(l-=Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-parseFloat(r[e])-ie(t,e,"border",!1,r)-.5)),l&&(o=ot.exec(n))&&"px"!==(o[3]||"px")&&(t.style[e]=n,n=E.css(t,e)),ne(0,n,l)}}})),E.cssHooks.marginLeft=Xt(v.reliableMarginLeft,(function(t,e){if(e)return(parseFloat(Qt(t,"marginLeft"))||t.getBoundingClientRect().left-Ut(t,{marginLeft:0},(function(){return t.getBoundingClientRect().left})))+"px"})),E.each({margin:"",padding:"",border:"Width"},(function(t,e){E.cssHooks[t+e]={expand:function(n){for(var i=0,o={},r="string"==typeof n?n.split(" "):[n];i<4;i++)o[t+rt[i]+e]=r[i]||r[i-2]||r[0];return o}},"margin"!==t&&(E.cssHooks[t+e].set=ne)})),E.fn.extend({css:function(t,e){return z(this,(function(t,e,n){var i,o,r={},s=0;if(Array.isArray(e)){for(i=Bt(t),o=e.length;s1)}}),E.Tween=re,re.prototype={constructor:re,init:function(t,e,n,i,o,r){this.elem=t,this.prop=n,this.easing=o||E.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=i,this.unit=r||(E.cssNumber[n]?"":"px")},cur:function(){var t=re.propHooks[this.prop];return t&&t.get?t.get(this):re.propHooks._default.get(this)},run:function(t){var e,n=re.propHooks[this.prop];return this.options.duration?this.pos=e=E.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):re.propHooks._default.set(this),this}},re.prototype.init.prototype=re.prototype,re.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=E.css(t.elem,t.prop,""))&&"auto"!==e?e:0},set:function(t){E.fx.step[t.prop]?E.fx.step[t.prop](t):1!==t.elem.nodeType||!E.cssHooks[t.prop]&&null==t.elem.style[Kt(t.prop)]?t.elem[t.prop]=t.now:E.style(t.elem,t.prop,t.now+t.unit)}}},re.propHooks.scrollTop=re.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},E.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},E.fx=re.prototype.init,E.fx.step={};var se,ae,le=/^(?:toggle|show|hide)$/,ue=/queueHooks$/;function ce(){ae&&(!1===b.hidden&&i.requestAnimationFrame?i.requestAnimationFrame(ce):i.setTimeout(ce,E.fx.interval),E.fx.tick())}function pe(){return i.setTimeout((function(){se=void 0})),se=Date.now()}function fe(t,e){var n,i=0,o={height:t};for(e=e?1:0;i<4;i+=2-e)o["margin"+(n=rt[i])]=o["padding"+n]=t;return e&&(o.opacity=o.width=t),o}function de(t,e,n){for(var i,o=(he.tweeners[e]||[]).concat(he.tweeners["*"]),r=0,s=o.length;r1)},removeAttr:function(t){return this.each((function(){E.removeAttr(this,t)}))}}),E.extend({attr:function(t,e,n){var i,o,r=t.nodeType;if(3!==r&&8!==r&&2!==r)return void 0===t.getAttribute?E.prop(t,e,n):(1===r&&E.isXMLDoc(t)||(o=E.attrHooks[e.toLowerCase()]||(E.expr.match.bool.test(e)?ge:void 0)),void 0!==n?null===n?void E.removeAttr(t,e):o&&"set"in o&&void 0!==(i=o.set(t,n,e))?i:(t.setAttribute(e,n+""),n):o&&"get"in o&&null!==(i=o.get(t,e))?i:null==(i=E.find.attr(t,e))?void 0:i)},attrHooks:{type:{set:function(t,e){if(!v.radioValue&&"radio"===e&&N(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,i=0,o=e&&e.match(P);if(o&&1===t.nodeType)for(;n=o[i++];)t.removeAttribute(n)}}),ge={set:function(t,e,n){return!1===e?E.removeAttr(t,n):t.setAttribute(n,n),n}},E.each(E.expr.match.bool.source.match(/\w+/g),(function(t,e){var n=ve[e]||E.find.attr;ve[e]=function(t,e,i){var o,r,s=e.toLowerCase();return i||(r=ve[s],ve[s]=o,o=null!=n(t,e,i)?s:null,ve[s]=r),o}}));var me=/^(?:input|select|textarea|button)$/i,ye=/^(?:a|area)$/i;function be(t){return(t.match(P)||[]).join(" ")}function xe(t){return t.getAttribute&&t.getAttribute("class")||""}function we(t){return Array.isArray(t)?t:"string"==typeof t&&t.match(P)||[]}E.fn.extend({prop:function(t,e){return z(this,E.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each((function(){delete this[E.propFix[t]||t]}))}}),E.extend({prop:function(t,e,n){var i,o,r=t.nodeType;if(3!==r&&8!==r&&2!==r)return 1===r&&E.isXMLDoc(t)||(e=E.propFix[e]||e,o=E.propHooks[e]),void 0!==n?o&&"set"in o&&void 0!==(i=o.set(t,n,e))?i:t[e]=n:o&&"get"in o&&null!==(i=o.get(t,e))?i:t[e]},propHooks:{tabIndex:{get:function(t){var e=E.find.attr(t,"tabindex");return e?parseInt(e,10):me.test(t.nodeName)||ye.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),v.optSelected||(E.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),E.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){E.propFix[this.toLowerCase()]=this})),E.fn.extend({addClass:function(t){var e,n,i,o,r,s;return m(t)?this.each((function(e){E(this).addClass(t.call(this,e,xe(this)))})):(e=we(t)).length?this.each((function(){if(i=xe(this),n=1===this.nodeType&&" "+be(i)+" "){for(r=0;r-1;)n=n.replace(" "+o+" "," ");s=be(n),i!==s&&this.setAttribute("class",s)}})):this:this.attr("class","")},toggleClass:function(t,e){var n,i,o,r,s=typeof t,a="string"===s||Array.isArray(t);return m(t)?this.each((function(n){E(this).toggleClass(t.call(this,n,xe(this),e),e)})):"boolean"==typeof e&&a?e?this.addClass(t):this.removeClass(t):(n=we(t),this.each((function(){if(a)for(r=E(this),o=0;o-1)return!0;return!1}});var Te=/\r/g;E.fn.extend({val:function(t){var e,n,i,o=this[0];return arguments.length?(i=m(t),this.each((function(n){var o;1===this.nodeType&&(null==(o=i?t.call(this,n,E(this).val()):t)?o="":"number"==typeof o?o+="":Array.isArray(o)&&(o=E.map(o,(function(t){return null==t?"":t+""}))),(e=E.valHooks[this.type]||E.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,o,"value")||(this.value=o))}))):o?(e=E.valHooks[o.type]||E.valHooks[o.nodeName.toLowerCase()])&&"get"in e&&void 0!==(n=e.get(o,"value"))?n:"string"==typeof(n=o.value)?n.replace(Te,""):null==n?"":n:void 0}}),E.extend({valHooks:{option:{get:function(t){var e=E.find.attr(t,"value");return null!=e?e:be(E.text(t))}},select:{get:function(t){var e,n,i,o=t.options,r=t.selectedIndex,s="select-one"===t.type,a=s?null:[],l=s?r+1:o.length;for(i=r<0?l:s?r:0;i-1)&&(n=!0);return n||(t.selectedIndex=-1),r}}}}),E.each(["radio","checkbox"],(function(){E.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=E.inArray(E(t).val(),e)>-1}},v.checkOn||(E.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})})),v.focusin="onfocusin"in i;var Ce=/^(?:focusinfocus|focusoutblur)$/,Ee=function(t){t.stopPropagation()};E.extend(E.event,{trigger:function(t,e,n,o){var r,s,a,l,u,c,p,f,h=[n||b],g=d.call(t,"type")?t.type:t,v=d.call(t,"namespace")?t.namespace.split("."):[];if(s=f=a=n=n||b,3!==n.nodeType&&8!==n.nodeType&&!Ce.test(g+E.event.triggered)&&(g.indexOf(".")>-1&&(v=g.split("."),g=v.shift(),v.sort()),u=g.indexOf(":")<0&&"on"+g,(t=t[E.expando]?t:new E.Event(g,"object"==typeof t&&t)).isTrigger=o?2:3,t.namespace=v.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+v.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=n),e=null==e?[t]:E.makeArray(e,[t]),p=E.event.special[g]||{},o||!p.trigger||!1!==p.trigger.apply(n,e))){if(!o&&!p.noBubble&&!y(n)){for(l=p.delegateType||g,Ce.test(l+g)||(s=s.parentNode);s;s=s.parentNode)h.push(s),a=s;a===(n.ownerDocument||b)&&h.push(a.defaultView||a.parentWindow||i)}for(r=0;(s=h[r++])&&!t.isPropagationStopped();)f=s,t.type=r>1?l:p.bindType||g,(c=(K.get(s,"events")||Object.create(null))[t.type]&&K.get(s,"handle"))&&c.apply(s,e),(c=u&&s[u])&&c.apply&&Y(s)&&(t.result=c.apply(s,e),!1===t.result&&t.preventDefault());return t.type=g,o||t.isDefaultPrevented()||p._default&&!1!==p._default.apply(h.pop(),e)||!Y(n)||u&&m(n[g])&&!y(n)&&((a=n[u])&&(n[u]=null),E.event.triggered=g,t.isPropagationStopped()&&f.addEventListener(g,Ee),n[g](),t.isPropagationStopped()&&f.removeEventListener(g,Ee),E.event.triggered=void 0,a&&(n[u]=a)),t.result}},simulate:function(t,e,n){var i=E.extend(new E.Event,n,{type:t,isSimulated:!0});E.event.trigger(i,null,e)}}),E.fn.extend({trigger:function(t,e){return this.each((function(){E.event.trigger(t,e,this)}))},triggerHandler:function(t,e){var n=this[0];if(n)return E.event.trigger(t,e,n,!0)}}),v.focusin||E.each({focus:"focusin",blur:"focusout"},(function(t,e){var n=function(t){E.event.simulate(e,t.target,E.event.fix(t))};E.event.special[e]={setup:function(){var i=this.ownerDocument||this.document||this,o=K.access(i,e);o||i.addEventListener(t,n,!0),K.access(i,e,(o||0)+1)},teardown:function(){var i=this.ownerDocument||this.document||this,o=K.access(i,e)-1;o?K.access(i,e,o):(i.removeEventListener(t,n,!0),K.remove(i,e))}}}));var Se=i.location,$e={guid:Date.now()},ke=/\?/;E.parseXML=function(t){var e,n;if(!t||"string"!=typeof t)return null;try{e=(new i.DOMParser).parseFromString(t,"text/xml")}catch(t){}return n=e&&e.getElementsByTagName("parsererror")[0],e&&!n||E.error("Invalid XML: "+(n?E.map(n.childNodes,(function(t){return t.textContent})).join("\n"):t)),e};var Ae=/\[\]$/,De=/\r?\n/g,Ne=/^(?:submit|button|image|reset|file)$/i,je=/^(?:input|select|textarea|keygen)/i;function Oe(t,e,n,i){var o;if(Array.isArray(e))E.each(e,(function(e,o){n||Ae.test(t)?i(t,o):Oe(t+"["+("object"==typeof o&&null!=o?e:"")+"]",o,n,i)}));else if(n||"object"!==T(e))i(t,e);else for(o in e)Oe(t+"["+o+"]",e[o],n,i)}E.param=function(t,e){var n,i=[],o=function(t,e){var n=m(e)?e():e;i[i.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(null==t)return"";if(Array.isArray(t)||t.jquery&&!E.isPlainObject(t))E.each(t,(function(){o(this.name,this.value)}));else for(n in t)Oe(n,t[n],e,o);return i.join("&")},E.fn.extend({serialize:function(){return E.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var t=E.prop(this,"elements");return t?E.makeArray(t):this})).filter((function(){var t=this.type;return this.name&&!E(this).is(":disabled")&&je.test(this.nodeName)&&!Ne.test(t)&&(this.checked||!vt.test(t))})).map((function(t,e){var n=E(this).val();return null==n?null:Array.isArray(n)?E.map(n,(function(t){return{name:e.name,value:t.replace(De,"\r\n")}})):{name:e.name,value:n.replace(De,"\r\n")}})).get()}});var Ie=/%20/g,Le=/#.*$/,Re=/([?&])_=[^&]*/,qe=/^(.*?):[ \t]*([^\r\n]*)$/gm,He=/^(?:GET|HEAD)$/,Pe=/^\/\//,Fe={},Me={},We="*/".concat("*"),Be=b.createElement("a");function Ue(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var i,o=0,r=e.toLowerCase().match(P)||[];if(m(n))for(;i=r[o++];)"+"===i[0]?(i=i.slice(1)||"*",(t[i]=t[i]||[]).unshift(n)):(t[i]=t[i]||[]).push(n)}}function _e(t,e,n,i){var o={},r=t===Me;function s(a){var l;return o[a]=!0,E.each(t[a]||[],(function(t,a){var u=a(e,n,i);return"string"!=typeof u||r||o[u]?r?!(l=u):void 0:(e.dataTypes.unshift(u),s(u),!1)})),l}return s(e.dataTypes[0])||!o["*"]&&s("*")}function ze(t,e){var n,i,o=E.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((o[n]?t:i||(i={}))[n]=e[n]);return i&&E.extend(!0,t,i),t}Be.href=Se.href,E.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Se.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Se.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":We,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":E.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?ze(ze(t,E.ajaxSettings),e):ze(E.ajaxSettings,t)},ajaxPrefilter:Ue(Fe),ajaxTransport:Ue(Me),ajax:function(t,e){"object"==typeof t&&(e=t,t=void 0),e=e||{};var n,o,r,s,a,l,u,c,p,f,d=E.ajaxSetup({},e),h=d.context||d,g=d.context&&(h.nodeType||h.jquery)?E(h):E.event,v=E.Deferred(),m=E.Callbacks("once memory"),y=d.statusCode||{},x={},w={},T="canceled",C={readyState:0,getResponseHeader:function(t){var e;if(u){if(!s)for(s={};e=qe.exec(r);)s[e[1].toLowerCase()+" "]=(s[e[1].toLowerCase()+" "]||[]).concat(e[2]);e=s[t.toLowerCase()+" "]}return null==e?null:e.join(", ")},getAllResponseHeaders:function(){return u?r:null},setRequestHeader:function(t,e){return null==u&&(t=w[t.toLowerCase()]=w[t.toLowerCase()]||t,x[t]=e),this},overrideMimeType:function(t){return null==u&&(d.mimeType=t),this},statusCode:function(t){var e;if(t)if(u)C.always(t[C.status]);else for(e in t)y[e]=[y[e],t[e]];return this},abort:function(t){var e=t||T;return n&&n.abort(e),S(0,e),this}};if(v.promise(C),d.url=((t||d.url||Se.href)+"").replace(Pe,Se.protocol+"//"),d.type=e.method||e.type||d.method||d.type,d.dataTypes=(d.dataType||"*").toLowerCase().match(P)||[""],null==d.crossDomain){l=b.createElement("a");try{l.href=d.url,l.href=l.href,d.crossDomain=Be.protocol+"//"+Be.host!=l.protocol+"//"+l.host}catch(t){d.crossDomain=!0}}if(d.data&&d.processData&&"string"!=typeof d.data&&(d.data=E.param(d.data,d.traditional)),_e(Fe,d,e,C),u)return C;for(p in(c=E.event&&d.global)&&0==E.active++&&E.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!He.test(d.type),o=d.url.replace(Le,""),d.hasContent?d.data&&d.processData&&0===(d.contentType||"").indexOf("application/x-www-form-urlencoded")&&(d.data=d.data.replace(Ie,"+")):(f=d.url.slice(o.length),d.data&&(d.processData||"string"==typeof d.data)&&(o+=(ke.test(o)?"&":"?")+d.data,delete d.data),!1===d.cache&&(o=o.replace(Re,"$1"),f=(ke.test(o)?"&":"?")+"_="+$e.guid+++f),d.url=o+f),d.ifModified&&(E.lastModified[o]&&C.setRequestHeader("If-Modified-Since",E.lastModified[o]),E.etag[o]&&C.setRequestHeader("If-None-Match",E.etag[o])),(d.data&&d.hasContent&&!1!==d.contentType||e.contentType)&&C.setRequestHeader("Content-Type",d.contentType),C.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+We+"; q=0.01":""):d.accepts["*"]),d.headers)C.setRequestHeader(p,d.headers[p]);if(d.beforeSend&&(!1===d.beforeSend.call(h,C,d)||u))return C.abort();if(T="abort",m.add(d.complete),C.done(d.success),C.fail(d.error),n=_e(Me,d,e,C)){if(C.readyState=1,c&&g.trigger("ajaxSend",[C,d]),u)return C;d.async&&d.timeout>0&&(a=i.setTimeout((function(){C.abort("timeout")}),d.timeout));try{u=!1,n.send(x,S)}catch(t){if(u)throw t;S(-1,t)}}else S(-1,"No Transport");function S(t,e,s,l){var p,f,b,x,w,T=e;u||(u=!0,a&&i.clearTimeout(a),n=void 0,r=l||"",C.readyState=t>0?4:0,p=t>=200&&t<300||304===t,s&&(x=function(t,e,n){for(var i,o,r,s,a=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===i&&(i=t.mimeType||e.getResponseHeader("Content-Type"));if(i)for(o in a)if(a[o]&&a[o].test(i)){l.unshift(o);break}if(l[0]in n)r=l[0];else{for(o in n){if(!l[0]||t.converters[o+" "+l[0]]){r=o;break}s||(s=o)}r=r||s}if(r)return r!==l[0]&&l.unshift(r),n[r]}(d,C,s)),!p&&E.inArray("script",d.dataTypes)>-1&&E.inArray("json",d.dataTypes)<0&&(d.converters["text script"]=function(){}),x=function(t,e,n,i){var o,r,s,a,l,u={},c=t.dataTypes.slice();if(c[1])for(s in t.converters)u[s.toLowerCase()]=t.converters[s];for(r=c.shift();r;)if(t.responseFields[r]&&(n[t.responseFields[r]]=e),!l&&i&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=r,r=c.shift())if("*"===r)r=l;else if("*"!==l&&l!==r){if(!(s=u[l+" "+r]||u["* "+r]))for(o in u)if((a=o.split(" "))[1]===r&&(s=u[l+" "+a[0]]||u["* "+a[0]])){!0===s?s=u[o]:!0!==u[o]&&(r=a[0],c.unshift(a[1]));break}if(!0!==s)if(s&&t.throws)e=s(e);else try{e=s(e)}catch(t){return{state:"parsererror",error:s?t:"No conversion from "+l+" to "+r}}}return{state:"success",data:e}}(d,x,C,p),p?(d.ifModified&&((w=C.getResponseHeader("Last-Modified"))&&(E.lastModified[o]=w),(w=C.getResponseHeader("etag"))&&(E.etag[o]=w)),204===t||"HEAD"===d.type?T="nocontent":304===t?T="notmodified":(T=x.state,f=x.data,p=!(b=x.error))):(b=T,!t&&T||(T="error",t<0&&(t=0))),C.status=t,C.statusText=(e||T)+"",p?v.resolveWith(h,[f,T,C]):v.rejectWith(h,[C,T,b]),C.statusCode(y),y=void 0,c&&g.trigger(p?"ajaxSuccess":"ajaxError",[C,d,p?f:b]),m.fireWith(h,[C,T]),c&&(g.trigger("ajaxComplete",[C,d]),--E.active||E.event.trigger("ajaxStop")))}return C},getJSON:function(t,e,n){return E.get(t,e,n,"json")},getScript:function(t,e){return E.get(t,void 0,e,"script")}}),E.each(["get","post"],(function(t,e){E[e]=function(t,n,i,o){return m(n)&&(o=o||i,i=n,n=void 0),E.ajax(E.extend({url:t,type:e,dataType:o,data:n,success:i},E.isPlainObject(t)&&t))}})),E.ajaxPrefilter((function(t){var e;for(e in t.headers)"content-type"===e.toLowerCase()&&(t.contentType=t.headers[e]||"")})),E._evalUrl=function(t,e,n){return E.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(t){E.globalEval(t,e,n)}})},E.fn.extend({wrapAll:function(t){var e;return this[0]&&(m(t)&&(t=t.call(this[0])),e=E(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map((function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t})).append(this)),this},wrapInner:function(t){return m(t)?this.each((function(e){E(this).wrapInner(t.call(this,e))})):this.each((function(){var e=E(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)}))},wrap:function(t){var e=m(t);return this.each((function(n){E(this).wrapAll(e?t.call(this,n):t)}))},unwrap:function(t){return this.parent(t).not("body").each((function(){E(this).replaceWith(this.childNodes)})),this}}),E.expr.pseudos.hidden=function(t){return!E.expr.pseudos.visible(t)},E.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},E.ajaxSettings.xhr=function(){try{return new i.XMLHttpRequest}catch(t){}};var Ve={0:200,1223:204},Qe=E.ajaxSettings.xhr();v.cors=!!Qe&&"withCredentials"in Qe,v.ajax=Qe=!!Qe,E.ajaxTransport((function(t){var e,n;if(v.cors||Qe&&!t.crossDomain)return{send:function(o,r){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];for(s in t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest"),o)a.setRequestHeader(s,o[s]);e=function(t){return function(){e&&(e=n=a.onload=a.onerror=a.onabort=a.ontimeout=a.onreadystatechange=null,"abort"===t?a.abort():"error"===t?"number"!=typeof a.status?r(0,"error"):r(a.status,a.statusText):r(Ve[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=e(),n=a.onerror=a.ontimeout=e("error"),void 0!==a.onabort?a.onabort=n:a.onreadystatechange=function(){4===a.readyState&&i.setTimeout((function(){e&&n()}))},e=e("abort");try{a.send(t.hasContent&&t.data||null)}catch(t){if(e)throw t}},abort:function(){e&&e()}}})),E.ajaxPrefilter((function(t){t.crossDomain&&(t.contents.script=!1)})),E.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return E.globalEval(t),t}}}),E.ajaxPrefilter("script",(function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")})),E.ajaxTransport("script",(function(t){var e,n;if(t.crossDomain||t.scriptAttrs)return{send:function(i,o){e=E("
\ No newline at end of file +Firefly III
\ No newline at end of file diff --git a/public/v3/js/9989.dd19d3fb.js b/public/v3/js/2959.859332ff.js similarity index 99% rename from public/v3/js/9989.dd19d3fb.js rename to public/v3/js/2959.859332ff.js index a57abc8d6a..7cf2a25f2f 100644 --- a/public/v3/js/9989.dd19d3fb.js +++ b/public/v3/js/2959.859332ff.js @@ -1 +1 @@ -"use strict";(globalThis["webpackChunkfirefly_iii"]=globalThis["webpackChunkfirefly_iii"]||[]).push([[9989],{9989:(e,a,t)=>{t.r(a),t.d(a,{default:()=>He});var l=t(9835),n=t(6970);const s=(0,l._)("img",{alt:"Firefly III Logo",src:"maskable-icon.svg",title:"Firefly III"},null,-1),o=(0,l.Uk)(" Firefly III "),i=(0,l._)("img",{src:"https://cdn.quasar.dev/img/layout-gallery/img-github-search-key-slash.svg"},null,-1),r=(0,l.Uk)((0,n.zw)("Jump to")+" "),u={class:"row items-center no-wrap"},c={class:"row items-center no-wrap"},d=(0,l.Uk)("Webhooks"),m=(0,l.Uk)("Currencies"),w=(0,l.Uk)("System settings"),f={class:"row items-center no-wrap"},p=(0,l.Uk)(" Profile"),g=(0,l.Uk)(" Data management"),_=(0,l.Uk)("Administration management"),k=(0,l.Uk)("Preferences"),h=(0,l.Uk)("Export data"),W=(0,l.Uk)("Logout"),b={class:"q-pt-md"},x=(0,l.Uk)(" Dashboard "),y=(0,l.Uk)(" Budgets "),v=(0,l.Uk)(" Subscriptions "),q=(0,l.Uk)(" Piggy banks "),Z=(0,l.Uk)(" Withdrawals "),U=(0,l.Uk)(" Deposits "),Q=(0,l.Uk)(" Transfers "),D=(0,l.Uk)(" All transactions "),R=(0,l.Uk)(" Rules "),j=(0,l.Uk)(" Recurring transactions "),A=(0,l.Uk)(" Asset accounts "),C=(0,l.Uk)(" Expense accounts "),M=(0,l.Uk)(" Revenue accounts "),I=(0,l.Uk)(" Liabilities "),L=(0,l.Uk)(" Categories "),$=(0,l.Uk)(" Tags "),T=(0,l.Uk)(" Groups "),z=(0,l.Uk)(" Reports "),V={class:"q-ma-md"},S={class:"row"},B={class:"col-6"},H={class:"q-ma-none q-pa-none"},F=(0,l._)("em",{class:"fa-solid fa-fire"},null,-1),P={class:"col-6"},Y=(0,l._)("div",null,[(0,l._)("small",null,"Firefly III v v6.0.0 © James Cole, AGPL-3.0-or-later.")],-1);function E(e,a,t,E,O,G){const J=(0,l.up)("q-btn"),K=(0,l.up)("q-avatar"),N=(0,l.up)("q-toolbar-title"),X=(0,l.up)("q-icon"),ee=(0,l.up)("q-item-section"),ae=(0,l.up)("q-item-label"),te=(0,l.up)("q-item"),le=(0,l.up)("q-select"),ne=(0,l.up)("q-separator"),se=(0,l.up)("DateRange"),oe=(0,l.up)("q-menu"),ie=(0,l.up)("q-list"),re=(0,l.up)("q-toolbar"),ue=(0,l.up)("q-header"),ce=(0,l.up)("q-expansion-item"),de=(0,l.up)("q-scroll-area"),me=(0,l.up)("q-drawer"),we=(0,l.up)("Alert"),fe=(0,l.up)("q-breadcrumbs-el"),pe=(0,l.up)("q-breadcrumbs"),ge=(0,l.up)("router-view"),_e=(0,l.up)("q-page-container"),ke=(0,l.up)("q-footer"),he=(0,l.up)("q-layout"),We=(0,l.Q2)("ripple");return(0,l.wg)(),(0,l.j4)(he,{view:"hHh lpR fFf"},{default:(0,l.w5)((()=>[(0,l.Wm)(ue,{reveal:"",class:"bg-primary text-white"},{default:(0,l.w5)((()=>[(0,l.Wm)(re,null,{default:(0,l.w5)((()=>[(0,l.Wm)(J,{flat:"",icon:"fas fa-bars",round:"",onClick:e.toggleLeftDrawer},null,8,["onClick"]),(0,l.Wm)(N,null,{default:(0,l.w5)((()=>[(0,l.Wm)(K,null,{default:(0,l.w5)((()=>[s])),_:1}),o])),_:1}),(0,l.Wm)(le,{ref:"search",modelValue:e.search,"onUpdate:modelValue":a[0]||(a[0]=a=>e.search=a),"stack-label":!1,class:"q-mx-xs",color:"black",dark:"",dense:"","hide-selected":"",label:"Search",standout:"",style:{width:"250px"},"use-input":""},{append:(0,l.w5)((()=>[i])),option:(0,l.w5)((e=>[(0,l.Wm)(te,(0,l.dG)({class:""},e.itemProps),{default:(0,l.w5)((()=>[(0,l.Wm)(ee,{side:""},{default:(0,l.w5)((()=>[(0,l.Wm)(X,{name:"collections_bookmark"})])),_:1}),(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[(0,l.Wm)(ae,{innerHTML:e.opt.label},null,8,["innerHTML"])])),_:2},1024),(0,l.Wm)(ee,{class:"default-type",side:""},{default:(0,l.w5)((()=>[(0,l.Wm)(J,{class:"bg-grey-1 q-px-sm",dense:"","no-caps":"",outline:"",size:"12px","text-color":"blue-grey-5"},{default:(0,l.w5)((()=>[r,(0,l.Wm)(X,{name:"subdirectory_arrow_left",size:"14px"})])),_:1})])),_:1})])),_:2},1040)])),_:1},8,["modelValue"]),(0,l.Wm)(ne,{dark:"",inset:"",vertical:""}),(0,l.Wm)(J,{to:{name:"development.index"},class:"q-mx-xs",flat:"",icon:"fas fa-skull-crossbones"},null,8,["to"]),(0,l.Wm)(ne,{dark:"",inset:"",vertical:""}),(0,l.Wm)(J,{class:"q-mx-xs",flat:"",icon:"fas fa-question-circle",onClick:e.showHelpBox},null,8,["onClick"]),(0,l.Wm)(ne,{dark:"",inset:"",vertical:""}),e.$q.screen.gt.xs&&e.$route.meta.dateSelector?((0,l.wg)(),(0,l.j4)(J,{key:0,class:"q-mx-xs",flat:""},{default:(0,l.w5)((()=>[(0,l._)("div",u,[(0,l.Wm)(X,{name:"fas fa-calendar",size:"20px"}),(0,l.Wm)(X,{name:"fas fa-caret-down",right:"",size:"12px"})]),(0,l.Wm)(oe,null,{default:(0,l.w5)((()=>[(0,l.Wm)(se)])),_:1})])),_:1})):(0,l.kq)("",!0),e.$route.meta.dateSelector?((0,l.wg)(),(0,l.j4)(ne,{key:1,dark:"",inset:"",vertical:""})):(0,l.kq)("",!0),e.$q.screen.gt.xs?((0,l.wg)(),(0,l.j4)(J,{key:2,class:"q-mx-xs",flat:""},{default:(0,l.w5)((()=>[(0,l._)("div",c,[(0,l.Wm)(X,{name:"fas fa-dragon",size:"20px"}),(0,l.Wm)(X,{name:"fas fa-caret-down",right:"",size:"12px"})]),(0,l.Wm)(oe,{"auto-close":""},{default:(0,l.w5)((()=>[(0,l.Wm)(ie,{style:{"min-width":"120px"}},{default:(0,l.w5)((()=>[(0,l.Wm)(te,{to:{name:"webhooks.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[d])),_:1})])),_:1},8,["to"]),(0,l.Wm)(te,{to:{name:"currencies.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[m])),_:1})])),_:1},8,["to"]),(0,l.Wm)(te,{to:{name:"admin.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[w])),_:1})])),_:1},8,["to"])])),_:1})])),_:1})])),_:1})):(0,l.kq)("",!0),(0,l.Wm)(ne,{dark:"",inset:"",vertical:""}),e.$q.screen.gt.xs?((0,l.wg)(),(0,l.j4)(J,{key:3,class:"q-mx-xs",flat:""},{default:(0,l.w5)((()=>[(0,l._)("div",f,[(0,l.Wm)(X,{name:"fas fa-user-circle",size:"20px"}),(0,l.Wm)(X,{name:"fas fa-caret-down",right:"",size:"12px"})]),(0,l.Wm)(oe,{"auto-close":""},{default:(0,l.w5)((()=>[(0,l.Wm)(ie,{style:{"min-width":"180px"}},{default:(0,l.w5)((()=>[(0,l.Wm)(te,{to:{name:"profile.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[p])),_:1})])),_:1},8,["to"]),(0,l.Wm)(te,{to:{name:"profile.data"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[g])),_:1})])),_:1},8,["to"]),(0,l.Wm)(te,{to:{name:"administration.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[_])),_:1})])),_:1},8,["to"]),(0,l.Wm)(te,{to:{name:"preferences.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[k])),_:1})])),_:1},8,["to"]),(0,l.Wm)(te,{to:{name:"export.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[h])),_:1})])),_:1},8,["to"]),(0,l.Wm)(ne),(0,l.Wm)(te,{to:{name:"logout"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[W])),_:1})])),_:1})])),_:1})])),_:1})])),_:1})):(0,l.kq)("",!0)])),_:1})])),_:1}),(0,l.Wm)(me,{"show-if-above":"",modelValue:e.leftDrawerOpen,"onUpdate:modelValue":a[1]||(a[1]=a=>e.leftDrawerOpen=a),side:"left",bordered:""},{default:(0,l.w5)((()=>[(0,l.Wm)(de,{class:"fit"},{default:(0,l.w5)((()=>[(0,l._)("div",b,[(0,l.Wm)(ie,null,{default:(0,l.w5)((()=>[(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{to:{name:"index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,{avatar:""},{default:(0,l.w5)((()=>[(0,l.Wm)(X,{name:"fas fa-tachometer-alt"})])),_:1}),(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[x])),_:1})])),_:1})),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{to:{name:"budgets.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,{avatar:""},{default:(0,l.w5)((()=>[(0,l.Wm)(X,{name:"fas fa-chart-pie"})])),_:1}),(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[y])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{to:{name:"subscriptions.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,{avatar:""},{default:(0,l.w5)((()=>[(0,l.Wm)(X,{name:"far fa-calendar-alt"})])),_:1}),(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[v])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{to:{name:"piggy-banks.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,{avatar:""},{default:(0,l.w5)((()=>[(0,l.Wm)(X,{name:"fas fa-piggy-bank"})])),_:1}),(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[q])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.Wm)(ce,{"default-opened":"transactions.index"===this.$route.name||"transactions.show"===this.$route.name,"expand-separator":"",icon:"fas fa-exchange-alt",label:"Transactions"},{default:(0,l.w5)((()=>[(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"transactions.index",params:{type:"withdrawal"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[Z])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"transactions.index",params:{type:"deposit"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[U])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"transactions.index",params:{type:"transfers"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[Q])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"transactions.index",params:{type:"all"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[D])),_:1})])),_:1},8,["to"])),[[We]])])),_:1},8,["default-opened"]),(0,l.Wm)(ce,{"default-unopened":"","expand-separator":"",icon:"fas fa-microchip",label:"Automation"},{default:(0,l.w5)((()=>[(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"rules.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[R])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"recurring.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[j])),_:1})])),_:1},8,["to"])),[[We]])])),_:1}),(0,l.Wm)(ce,{"default-opened":"accounts.index"===this.$route.name||"accounts.show"===this.$route.name,"expand-separator":"",icon:"fas fa-credit-card",label:"Accounts"},{default:(0,l.w5)((()=>[(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"accounts.index",params:{type:"asset"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[A])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"accounts.index",params:{type:"expense"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[C])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"accounts.index",params:{type:"revenue"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[M])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"accounts.index",params:{type:"liabilities"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[I])),_:1})])),_:1},8,["to"])),[[We]])])),_:1},8,["default-opened"]),(0,l.Wm)(ce,{"default-unopened":"","expand-separator":"",icon:"fas fa-tags",label:"Classification"},{default:(0,l.w5)((()=>[(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"categories.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[L])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"tags.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[$])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"groups.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[T])),_:1})])),_:1},8,["to"])),[[We]])])),_:1}),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{to:{name:"reports.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,{avatar:""},{default:(0,l.w5)((()=>[(0,l.Wm)(X,{name:"far fa-chart-bar"})])),_:1}),(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[z])),_:1})])),_:1},8,["to"])),[[We]])])),_:1})])])),_:1})])),_:1},8,["modelValue"]),(0,l.Wm)(_e,null,{default:(0,l.w5)((()=>[(0,l.Wm)(we),(0,l._)("div",V,[(0,l._)("div",S,[(0,l._)("div",B,[(0,l._)("h4",H,[F,(0,l.Uk)(" "+(0,n.zw)(e.$t(e.$route.meta.pageTitle||"firefly.welcome_back")),1)])]),(0,l._)("div",P,[(0,l.Wm)(pe,{align:"right"},{default:(0,l.w5)((()=>[(0,l.Wm)(fe,{to:{name:"index"},label:"Home"}),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.$route.meta.breadcrumbs,(a=>((0,l.wg)(),(0,l.j4)(fe,{label:e.$t("breadcrumbs."+a.title),to:a.route?{name:a.route,params:a.params}:""},null,8,["label","to"])))),256))])),_:1})])])]),(0,l.Wm)(ge)])),_:1}),(0,l.Wm)(ke,{class:"bg-grey-8 text-white",bordered:""},{default:(0,l.w5)((()=>[(0,l.Wm)(re,null,{default:(0,l.w5)((()=>[Y])),_:1})])),_:1})])),_:1})}var O=t(499);const G={class:"q-pa-xs"},J={class:"q-mt-xs"},K={class:"q-mr-xs"};function N(e,a,t,s,o,i){const r=(0,l.up)("q-date"),u=(0,l.up)("q-btn"),c=(0,l.up)("q-item-section"),d=(0,l.up)("q-item"),m=(0,l.up)("q-list"),w=(0,l.up)("q-menu"),f=(0,l.Q2)("close-popup");return(0,l.wg)(),(0,l.iD)("div",G,[(0,l._)("div",null,[(0,l.Wm)(r,{modelValue:o.localRange,"onUpdate:modelValue":a[0]||(a[0]=e=>o.localRange=e),mask:"YYYY-MM-DD",minimal:"",range:""},null,8,["modelValue"])]),(0,l._)("div",J,[(0,l._)("span",K,[(0,l.Wm)(u,{color:"primary",label:"Reset",size:"sm",onClick:i.resetRange},null,8,["onClick"])]),(0,l.Wm)(u,{color:"primary","icon-right":"fas fa-caret-down",label:"Change range",size:"sm",title:"More options in preferences"},{default:(0,l.w5)((()=>[(0,l.Wm)(w,null,{default:(0,l.w5)((()=>[(0,l.Wm)(m,{style:{"min-width":"100px"}},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(o.rangeChoices,(a=>(0,l.wy)(((0,l.wg)(),(0,l.j4)(d,{clickable:"",onClick:e=>i.setViewRange(a)},{default:(0,l.w5)((()=>[(0,l.Wm)(c,null,{default:(0,l.w5)((()=>[(0,l.Uk)((0,n.zw)(e.$t("firefly.pref_"+a.value)),1)])),_:2},1024)])),_:2},1032,["onClick"])),[[f]]))),256))])),_:1})])),_:1})])),_:1})])])}var X=t(9302),ee=t(9167),ae=t(8898),te=t(3555);const le={name:"DateRange",computed:{},data(){return{rangeChoices:[{value:"last30"},{value:"last7"},{value:"MTD"},{value:"1M"},{value:"3M"},{value:"6M"}],darkMode:!1,range:{start:new Date,end:new Date},localRange:{start:new Date,end:new Date},modelConfig:{start:{timeAdjust:"00:00:00"},end:{timeAdjust:"23:59:59"}},store:null}},created(){this.store=(0,te.S)();const e=(0,X.Z)();this.darkMode=e.dark.isActive,this.localRange={from:(0,ae.Z)(this.store.getRange.start,"yyyy-MM-dd"),to:(0,ae.Z)(this.store.getRange.end,"yyyy-MM-dd")}},watch:{localRange:function(e){if(null!==e){const a={start:Date.parse(e.from),end:Date.parse(e.to)};this.store.setRange(a)}}},mounted(){},methods:{resetRange:function(){this.store.resetRange().then((()=>{this.localRange={from:(0,ae.Z)(this.store.getRange.start,"yyyy-MM-dd"),to:(0,ae.Z)(this.store.getRange.end,"yyyy-MM-dd")}}))},setViewRange:function(e){let a=e.value,t=new ee.Z;t.postByName("viewRange",a),this.store.updateViewRange(a),this.store.setDatesFromViewRange()},updateViewRange:function(){}},components:{}};var ne=t(1639),se=t(4939),oe=t(8879),ie=t(5290),re=t(3246),ue=t(490),ce=t(1233),de=t(2146),me=t(9984),we=t.n(me);const fe=(0,ne.Z)(le,[["render",N]]),pe=fe;we()(le,"components",{QDate:se.Z,QBtn:oe.Z,QMenu:ie.Z,QList:re.Z,QItem:ue.Z,QItemSection:ce.Z}),we()(le,"directives",{ClosePopup:de.Z});const ge={key:0,class:"q-ma-md"},_e={class:"row"},ke={class:"col-12"};function he(e,a,t,s,o,i){const r=(0,l.up)("q-btn"),u=(0,l.up)("q-banner");return o.showAlert?((0,l.wg)(),(0,l.iD)("div",ge,[(0,l._)("div",_e,[(0,l._)("div",ke,[(0,l.Wm)(u,{class:(0,n.C_)(o.alertClass),"inline-actions":""},{action:(0,l.w5)((()=>[(0,l.Wm)(r,{color:"white",flat:"",label:"Dismiss",onClick:i.dismissBanner},null,8,["onClick"]),o.showAction?((0,l.wg)(),(0,l.j4)(r,{key:0,label:o.actionText,to:o.actionLink,color:"white",flat:""},null,8,["label","to"])):(0,l.kq)("",!0)])),default:(0,l.w5)((()=>[(0,l.Uk)((0,n.zw)(o.message)+" ",1)])),_:1},8,["class"])])])])):(0,l.kq)("",!0)}const We={name:"Alert",data(){return{showAlert:!1,alertClass:"bg-green text-white",message:"",showAction:!1,actionText:"",actionLink:{}}},watch:{$route:function(){this.checkAlert()}},mounted(){this.checkAlert(),window.addEventListener("flash",(e=>{this.renderAlert(e.detail.flash)}))},methods:{checkAlert:function(){let e=this.$q.localStorage.getItem("flash");e&&this.renderAlert(e),!1===e&&(this.showAlert=!1)},renderAlert:function(e){this.showAlert=e.show??!1;let a=e.level??"unknown";this.alertClass="bg-green text-white","warning"===a&&(this.alertClass="bg-orange text-white"),this.message=e.text??"";let t=e.action??{};!0===t.show&&(this.showAction=!0,this.actionText=t.text,this.actionLink=t.link),this.$q.localStorage.set("flash",!1)},dismissBanner:function(){this.showAlert=!1}}};var be=t(7128);const xe=(0,ne.Z)(We,[["render",he]]),ye=xe;we()(We,"components",{QBanner:be.Z,QBtn:oe.Z});const ve=(0,l.aZ)({name:"MainLayout",components:{DateRange:pe,Alert:ye},setup(){const e=(0,O.iH)(!0),a=(0,O.iH)(""),t=(0,X.Z)();return{search:a,leftDrawerOpen:e,toggleLeftDrawer(){e.value=!e.value},showHelpBox(){t.dialog({title:"Help",message:"The relevant help page will open in a new screen. Doesn't work yet.",cancel:!0,persistent:!1}).onOk((()=>{})).onCancel((()=>{})).onDismiss((()=>{}))}}}});var qe=t(249),Ze=t(6602),Ue=t(1663),Qe=t(1973),De=t(1357),Re=t(7887),je=t(2857),Ae=t(3115),Ce=t(926),Me=t(906),Ie=t(6663),Le=t(651),$e=t(2133),Te=t(2605),ze=t(8052),Ve=t(1378),Se=t(1136);const Be=(0,ne.Z)(ve,[["render",E]]),He=Be;we()(ve,"components",{QLayout:qe.Z,QHeader:Ze.Z,QToolbar:Ue.Z,QBtn:oe.Z,QToolbarTitle:Qe.Z,QAvatar:De.Z,QSelect:Re.Z,QItem:ue.Z,QItemSection:ce.Z,QIcon:je.Z,QItemLabel:Ae.Z,QSeparator:Ce.Z,QMenu:ie.Z,QList:re.Z,QDrawer:Me.Z,QScrollArea:Ie.Z,QExpansionItem:Le.Z,QPageContainer:$e.Z,QBreadcrumbs:Te.Z,QBreadcrumbsEl:ze.Z,QFooter:Ve.Z}),we()(ve,"directives",{Ripple:Se.Z})}}]); \ No newline at end of file +"use strict";(globalThis["webpackChunkfirefly_iii"]=globalThis["webpackChunkfirefly_iii"]||[]).push([[2959],{2959:(e,a,t)=>{t.r(a),t.d(a,{default:()=>He});var l=t(9835),n=t(6970);const s=(0,l._)("img",{alt:"Firefly III Logo",src:"maskable-icon.svg",title:"Firefly III"},null,-1),o=(0,l.Uk)(" Firefly III "),i=(0,l._)("img",{src:"https://cdn.quasar.dev/img/layout-gallery/img-github-search-key-slash.svg"},null,-1),r=(0,l.Uk)((0,n.zw)("Jump to")+" "),u={class:"row items-center no-wrap"},c={class:"row items-center no-wrap"},d=(0,l.Uk)("Webhooks"),m=(0,l.Uk)("Currencies"),w=(0,l.Uk)("System settings"),f={class:"row items-center no-wrap"},p=(0,l.Uk)(" Profile"),g=(0,l.Uk)(" Data management"),_=(0,l.Uk)("Administration management"),k=(0,l.Uk)("Preferences"),h=(0,l.Uk)("Export data"),W=(0,l.Uk)("Logout"),b={class:"q-pt-md"},x=(0,l.Uk)(" Dashboard "),y=(0,l.Uk)(" Budgets "),v=(0,l.Uk)(" Subscriptions "),q=(0,l.Uk)(" Piggy banks "),Z=(0,l.Uk)(" Withdrawals "),U=(0,l.Uk)(" Deposits "),Q=(0,l.Uk)(" Transfers "),D=(0,l.Uk)(" All transactions "),R=(0,l.Uk)(" Rules "),j=(0,l.Uk)(" Recurring transactions "),A=(0,l.Uk)(" Asset accounts "),C=(0,l.Uk)(" Expense accounts "),M=(0,l.Uk)(" Revenue accounts "),I=(0,l.Uk)(" Liabilities "),L=(0,l.Uk)(" Categories "),$=(0,l.Uk)(" Tags "),T=(0,l.Uk)(" Groups "),z=(0,l.Uk)(" Reports "),V={class:"q-ma-md"},S={class:"row"},B={class:"col-6"},H={class:"q-ma-none q-pa-none"},F=(0,l._)("em",{class:"fa-solid fa-fire"},null,-1),P={class:"col-6"},Y=(0,l._)("div",null,[(0,l._)("small",null,"Firefly III v v6.0.1 © James Cole, AGPL-3.0-or-later.")],-1);function E(e,a,t,E,O,G){const J=(0,l.up)("q-btn"),K=(0,l.up)("q-avatar"),N=(0,l.up)("q-toolbar-title"),X=(0,l.up)("q-icon"),ee=(0,l.up)("q-item-section"),ae=(0,l.up)("q-item-label"),te=(0,l.up)("q-item"),le=(0,l.up)("q-select"),ne=(0,l.up)("q-separator"),se=(0,l.up)("DateRange"),oe=(0,l.up)("q-menu"),ie=(0,l.up)("q-list"),re=(0,l.up)("q-toolbar"),ue=(0,l.up)("q-header"),ce=(0,l.up)("q-expansion-item"),de=(0,l.up)("q-scroll-area"),me=(0,l.up)("q-drawer"),we=(0,l.up)("Alert"),fe=(0,l.up)("q-breadcrumbs-el"),pe=(0,l.up)("q-breadcrumbs"),ge=(0,l.up)("router-view"),_e=(0,l.up)("q-page-container"),ke=(0,l.up)("q-footer"),he=(0,l.up)("q-layout"),We=(0,l.Q2)("ripple");return(0,l.wg)(),(0,l.j4)(he,{view:"hHh lpR fFf"},{default:(0,l.w5)((()=>[(0,l.Wm)(ue,{reveal:"",class:"bg-primary text-white"},{default:(0,l.w5)((()=>[(0,l.Wm)(re,null,{default:(0,l.w5)((()=>[(0,l.Wm)(J,{flat:"",icon:"fas fa-bars",round:"",onClick:e.toggleLeftDrawer},null,8,["onClick"]),(0,l.Wm)(N,null,{default:(0,l.w5)((()=>[(0,l.Wm)(K,null,{default:(0,l.w5)((()=>[s])),_:1}),o])),_:1}),(0,l.Wm)(le,{ref:"search",modelValue:e.search,"onUpdate:modelValue":a[0]||(a[0]=a=>e.search=a),"stack-label":!1,class:"q-mx-xs",color:"black",dark:"",dense:"","hide-selected":"",label:"Search",standout:"",style:{width:"250px"},"use-input":""},{append:(0,l.w5)((()=>[i])),option:(0,l.w5)((e=>[(0,l.Wm)(te,(0,l.dG)({class:""},e.itemProps),{default:(0,l.w5)((()=>[(0,l.Wm)(ee,{side:""},{default:(0,l.w5)((()=>[(0,l.Wm)(X,{name:"collections_bookmark"})])),_:1}),(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[(0,l.Wm)(ae,{innerHTML:e.opt.label},null,8,["innerHTML"])])),_:2},1024),(0,l.Wm)(ee,{class:"default-type",side:""},{default:(0,l.w5)((()=>[(0,l.Wm)(J,{class:"bg-grey-1 q-px-sm",dense:"","no-caps":"",outline:"",size:"12px","text-color":"blue-grey-5"},{default:(0,l.w5)((()=>[r,(0,l.Wm)(X,{name:"subdirectory_arrow_left",size:"14px"})])),_:1})])),_:1})])),_:2},1040)])),_:1},8,["modelValue"]),(0,l.Wm)(ne,{dark:"",inset:"",vertical:""}),(0,l.Wm)(J,{to:{name:"development.index"},class:"q-mx-xs",flat:"",icon:"fas fa-skull-crossbones"},null,8,["to"]),(0,l.Wm)(ne,{dark:"",inset:"",vertical:""}),(0,l.Wm)(J,{class:"q-mx-xs",flat:"",icon:"fas fa-question-circle",onClick:e.showHelpBox},null,8,["onClick"]),(0,l.Wm)(ne,{dark:"",inset:"",vertical:""}),e.$q.screen.gt.xs&&e.$route.meta.dateSelector?((0,l.wg)(),(0,l.j4)(J,{key:0,class:"q-mx-xs",flat:""},{default:(0,l.w5)((()=>[(0,l._)("div",u,[(0,l.Wm)(X,{name:"fas fa-calendar",size:"20px"}),(0,l.Wm)(X,{name:"fas fa-caret-down",right:"",size:"12px"})]),(0,l.Wm)(oe,null,{default:(0,l.w5)((()=>[(0,l.Wm)(se)])),_:1})])),_:1})):(0,l.kq)("",!0),e.$route.meta.dateSelector?((0,l.wg)(),(0,l.j4)(ne,{key:1,dark:"",inset:"",vertical:""})):(0,l.kq)("",!0),e.$q.screen.gt.xs?((0,l.wg)(),(0,l.j4)(J,{key:2,class:"q-mx-xs",flat:""},{default:(0,l.w5)((()=>[(0,l._)("div",c,[(0,l.Wm)(X,{name:"fas fa-dragon",size:"20px"}),(0,l.Wm)(X,{name:"fas fa-caret-down",right:"",size:"12px"})]),(0,l.Wm)(oe,{"auto-close":""},{default:(0,l.w5)((()=>[(0,l.Wm)(ie,{style:{"min-width":"120px"}},{default:(0,l.w5)((()=>[(0,l.Wm)(te,{to:{name:"webhooks.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[d])),_:1})])),_:1},8,["to"]),(0,l.Wm)(te,{to:{name:"currencies.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[m])),_:1})])),_:1},8,["to"]),(0,l.Wm)(te,{to:{name:"admin.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[w])),_:1})])),_:1},8,["to"])])),_:1})])),_:1})])),_:1})):(0,l.kq)("",!0),(0,l.Wm)(ne,{dark:"",inset:"",vertical:""}),e.$q.screen.gt.xs?((0,l.wg)(),(0,l.j4)(J,{key:3,class:"q-mx-xs",flat:""},{default:(0,l.w5)((()=>[(0,l._)("div",f,[(0,l.Wm)(X,{name:"fas fa-user-circle",size:"20px"}),(0,l.Wm)(X,{name:"fas fa-caret-down",right:"",size:"12px"})]),(0,l.Wm)(oe,{"auto-close":""},{default:(0,l.w5)((()=>[(0,l.Wm)(ie,{style:{"min-width":"180px"}},{default:(0,l.w5)((()=>[(0,l.Wm)(te,{to:{name:"profile.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[p])),_:1})])),_:1},8,["to"]),(0,l.Wm)(te,{to:{name:"profile.data"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[g])),_:1})])),_:1},8,["to"]),(0,l.Wm)(te,{to:{name:"administration.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[_])),_:1})])),_:1},8,["to"]),(0,l.Wm)(te,{to:{name:"preferences.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[k])),_:1})])),_:1},8,["to"]),(0,l.Wm)(te,{to:{name:"export.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[h])),_:1})])),_:1},8,["to"]),(0,l.Wm)(ne),(0,l.Wm)(te,{to:{name:"logout"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[W])),_:1})])),_:1})])),_:1})])),_:1})])),_:1})):(0,l.kq)("",!0)])),_:1})])),_:1}),(0,l.Wm)(me,{"show-if-above":"",modelValue:e.leftDrawerOpen,"onUpdate:modelValue":a[1]||(a[1]=a=>e.leftDrawerOpen=a),side:"left",bordered:""},{default:(0,l.w5)((()=>[(0,l.Wm)(de,{class:"fit"},{default:(0,l.w5)((()=>[(0,l._)("div",b,[(0,l.Wm)(ie,null,{default:(0,l.w5)((()=>[(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{to:{name:"index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,{avatar:""},{default:(0,l.w5)((()=>[(0,l.Wm)(X,{name:"fas fa-tachometer-alt"})])),_:1}),(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[x])),_:1})])),_:1})),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{to:{name:"budgets.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,{avatar:""},{default:(0,l.w5)((()=>[(0,l.Wm)(X,{name:"fas fa-chart-pie"})])),_:1}),(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[y])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{to:{name:"subscriptions.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,{avatar:""},{default:(0,l.w5)((()=>[(0,l.Wm)(X,{name:"far fa-calendar-alt"})])),_:1}),(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[v])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{to:{name:"piggy-banks.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,{avatar:""},{default:(0,l.w5)((()=>[(0,l.Wm)(X,{name:"fas fa-piggy-bank"})])),_:1}),(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[q])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.Wm)(ce,{"default-opened":"transactions.index"===this.$route.name||"transactions.show"===this.$route.name,"expand-separator":"",icon:"fas fa-exchange-alt",label:"Transactions"},{default:(0,l.w5)((()=>[(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"transactions.index",params:{type:"withdrawal"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[Z])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"transactions.index",params:{type:"deposit"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[U])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"transactions.index",params:{type:"transfers"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[Q])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"transactions.index",params:{type:"all"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[D])),_:1})])),_:1},8,["to"])),[[We]])])),_:1},8,["default-opened"]),(0,l.Wm)(ce,{"default-unopened":"","expand-separator":"",icon:"fas fa-microchip",label:"Automation"},{default:(0,l.w5)((()=>[(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"rules.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[R])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"recurring.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[j])),_:1})])),_:1},8,["to"])),[[We]])])),_:1}),(0,l.Wm)(ce,{"default-opened":"accounts.index"===this.$route.name||"accounts.show"===this.$route.name,"expand-separator":"",icon:"fas fa-credit-card",label:"Accounts"},{default:(0,l.w5)((()=>[(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"accounts.index",params:{type:"asset"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[A])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"accounts.index",params:{type:"expense"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[C])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"accounts.index",params:{type:"revenue"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[M])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"accounts.index",params:{type:"liabilities"}},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[I])),_:1})])),_:1},8,["to"])),[[We]])])),_:1},8,["default-opened"]),(0,l.Wm)(ce,{"default-unopened":"","expand-separator":"",icon:"fas fa-tags",label:"Classification"},{default:(0,l.w5)((()=>[(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"categories.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[L])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"tags.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[$])),_:1})])),_:1},8,["to"])),[[We]]),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{"inset-level":1,to:{name:"groups.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[T])),_:1})])),_:1},8,["to"])),[[We]])])),_:1}),(0,l.wy)(((0,l.wg)(),(0,l.j4)(te,{to:{name:"reports.index"},clickable:""},{default:(0,l.w5)((()=>[(0,l.Wm)(ee,{avatar:""},{default:(0,l.w5)((()=>[(0,l.Wm)(X,{name:"far fa-chart-bar"})])),_:1}),(0,l.Wm)(ee,null,{default:(0,l.w5)((()=>[z])),_:1})])),_:1},8,["to"])),[[We]])])),_:1})])])),_:1})])),_:1},8,["modelValue"]),(0,l.Wm)(_e,null,{default:(0,l.w5)((()=>[(0,l.Wm)(we),(0,l._)("div",V,[(0,l._)("div",S,[(0,l._)("div",B,[(0,l._)("h4",H,[F,(0,l.Uk)(" "+(0,n.zw)(e.$t(e.$route.meta.pageTitle||"firefly.welcome_back")),1)])]),(0,l._)("div",P,[(0,l.Wm)(pe,{align:"right"},{default:(0,l.w5)((()=>[(0,l.Wm)(fe,{to:{name:"index"},label:"Home"}),((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(e.$route.meta.breadcrumbs,(a=>((0,l.wg)(),(0,l.j4)(fe,{label:e.$t("breadcrumbs."+a.title),to:a.route?{name:a.route,params:a.params}:""},null,8,["label","to"])))),256))])),_:1})])])]),(0,l.Wm)(ge)])),_:1}),(0,l.Wm)(ke,{class:"bg-grey-8 text-white",bordered:""},{default:(0,l.w5)((()=>[(0,l.Wm)(re,null,{default:(0,l.w5)((()=>[Y])),_:1})])),_:1})])),_:1})}var O=t(499);const G={class:"q-pa-xs"},J={class:"q-mt-xs"},K={class:"q-mr-xs"};function N(e,a,t,s,o,i){const r=(0,l.up)("q-date"),u=(0,l.up)("q-btn"),c=(0,l.up)("q-item-section"),d=(0,l.up)("q-item"),m=(0,l.up)("q-list"),w=(0,l.up)("q-menu"),f=(0,l.Q2)("close-popup");return(0,l.wg)(),(0,l.iD)("div",G,[(0,l._)("div",null,[(0,l.Wm)(r,{modelValue:o.localRange,"onUpdate:modelValue":a[0]||(a[0]=e=>o.localRange=e),mask:"YYYY-MM-DD",minimal:"",range:""},null,8,["modelValue"])]),(0,l._)("div",J,[(0,l._)("span",K,[(0,l.Wm)(u,{color:"primary",label:"Reset",size:"sm",onClick:i.resetRange},null,8,["onClick"])]),(0,l.Wm)(u,{color:"primary","icon-right":"fas fa-caret-down",label:"Change range",size:"sm",title:"More options in preferences"},{default:(0,l.w5)((()=>[(0,l.Wm)(w,null,{default:(0,l.w5)((()=>[(0,l.Wm)(m,{style:{"min-width":"100px"}},{default:(0,l.w5)((()=>[((0,l.wg)(!0),(0,l.iD)(l.HY,null,(0,l.Ko)(o.rangeChoices,(a=>(0,l.wy)(((0,l.wg)(),(0,l.j4)(d,{clickable:"",onClick:e=>i.setViewRange(a)},{default:(0,l.w5)((()=>[(0,l.Wm)(c,null,{default:(0,l.w5)((()=>[(0,l.Uk)((0,n.zw)(e.$t("firefly.pref_"+a.value)),1)])),_:2},1024)])),_:2},1032,["onClick"])),[[f]]))),256))])),_:1})])),_:1})])),_:1})])])}var X=t(9302),ee=t(9167),ae=t(8898),te=t(3555);const le={name:"DateRange",computed:{},data(){return{rangeChoices:[{value:"last30"},{value:"last7"},{value:"MTD"},{value:"1M"},{value:"3M"},{value:"6M"}],darkMode:!1,range:{start:new Date,end:new Date},localRange:{start:new Date,end:new Date},modelConfig:{start:{timeAdjust:"00:00:00"},end:{timeAdjust:"23:59:59"}},store:null}},created(){this.store=(0,te.S)();const e=(0,X.Z)();this.darkMode=e.dark.isActive,this.localRange={from:(0,ae.Z)(this.store.getRange.start,"yyyy-MM-dd"),to:(0,ae.Z)(this.store.getRange.end,"yyyy-MM-dd")}},watch:{localRange:function(e){if(null!==e){const a={start:Date.parse(e.from),end:Date.parse(e.to)};this.store.setRange(a)}}},mounted(){},methods:{resetRange:function(){this.store.resetRange().then((()=>{this.localRange={from:(0,ae.Z)(this.store.getRange.start,"yyyy-MM-dd"),to:(0,ae.Z)(this.store.getRange.end,"yyyy-MM-dd")}}))},setViewRange:function(e){let a=e.value,t=new ee.Z;t.postByName("viewRange",a),this.store.updateViewRange(a),this.store.setDatesFromViewRange()},updateViewRange:function(){}},components:{}};var ne=t(1639),se=t(4939),oe=t(8879),ie=t(5290),re=t(3246),ue=t(490),ce=t(1233),de=t(2146),me=t(9984),we=t.n(me);const fe=(0,ne.Z)(le,[["render",N]]),pe=fe;we()(le,"components",{QDate:se.Z,QBtn:oe.Z,QMenu:ie.Z,QList:re.Z,QItem:ue.Z,QItemSection:ce.Z}),we()(le,"directives",{ClosePopup:de.Z});const ge={key:0,class:"q-ma-md"},_e={class:"row"},ke={class:"col-12"};function he(e,a,t,s,o,i){const r=(0,l.up)("q-btn"),u=(0,l.up)("q-banner");return o.showAlert?((0,l.wg)(),(0,l.iD)("div",ge,[(0,l._)("div",_e,[(0,l._)("div",ke,[(0,l.Wm)(u,{class:(0,n.C_)(o.alertClass),"inline-actions":""},{action:(0,l.w5)((()=>[(0,l.Wm)(r,{color:"white",flat:"",label:"Dismiss",onClick:i.dismissBanner},null,8,["onClick"]),o.showAction?((0,l.wg)(),(0,l.j4)(r,{key:0,label:o.actionText,to:o.actionLink,color:"white",flat:""},null,8,["label","to"])):(0,l.kq)("",!0)])),default:(0,l.w5)((()=>[(0,l.Uk)((0,n.zw)(o.message)+" ",1)])),_:1},8,["class"])])])])):(0,l.kq)("",!0)}const We={name:"Alert",data(){return{showAlert:!1,alertClass:"bg-green text-white",message:"",showAction:!1,actionText:"",actionLink:{}}},watch:{$route:function(){this.checkAlert()}},mounted(){this.checkAlert(),window.addEventListener("flash",(e=>{this.renderAlert(e.detail.flash)}))},methods:{checkAlert:function(){let e=this.$q.localStorage.getItem("flash");e&&this.renderAlert(e),!1===e&&(this.showAlert=!1)},renderAlert:function(e){this.showAlert=e.show??!1;let a=e.level??"unknown";this.alertClass="bg-green text-white","warning"===a&&(this.alertClass="bg-orange text-white"),this.message=e.text??"";let t=e.action??{};!0===t.show&&(this.showAction=!0,this.actionText=t.text,this.actionLink=t.link),this.$q.localStorage.set("flash",!1)},dismissBanner:function(){this.showAlert=!1}}};var be=t(7128);const xe=(0,ne.Z)(We,[["render",he]]),ye=xe;we()(We,"components",{QBanner:be.Z,QBtn:oe.Z});const ve=(0,l.aZ)({name:"MainLayout",components:{DateRange:pe,Alert:ye},setup(){const e=(0,O.iH)(!0),a=(0,O.iH)(""),t=(0,X.Z)();return{search:a,leftDrawerOpen:e,toggleLeftDrawer(){e.value=!e.value},showHelpBox(){t.dialog({title:"Help",message:"The relevant help page will open in a new screen. Doesn't work yet.",cancel:!0,persistent:!1}).onOk((()=>{})).onCancel((()=>{})).onDismiss((()=>{}))}}}});var qe=t(249),Ze=t(6602),Ue=t(1663),Qe=t(1973),De=t(1357),Re=t(7887),je=t(2857),Ae=t(3115),Ce=t(926),Me=t(906),Ie=t(6663),Le=t(651),$e=t(2133),Te=t(2605),ze=t(8052),Ve=t(1378),Se=t(1136);const Be=(0,ne.Z)(ve,[["render",E]]),He=Be;we()(ve,"components",{QLayout:qe.Z,QHeader:Ze.Z,QToolbar:Ue.Z,QBtn:oe.Z,QToolbarTitle:Qe.Z,QAvatar:De.Z,QSelect:Re.Z,QItem:ue.Z,QItemSection:ce.Z,QIcon:je.Z,QItemLabel:Ae.Z,QSeparator:Ce.Z,QMenu:ie.Z,QList:re.Z,QDrawer:Me.Z,QScrollArea:Ie.Z,QExpansionItem:Le.Z,QPageContainer:$e.Z,QBreadcrumbs:Te.Z,QBreadcrumbsEl:ze.Z,QFooter:Ve.Z}),we()(ve,"directives",{Ripple:Se.Z})}}]); \ No newline at end of file diff --git a/public/v3/js/app.8ad7cfe1.js b/public/v3/js/app.16587ec0.js similarity index 84% rename from public/v3/js/app.8ad7cfe1.js rename to public/v3/js/app.16587ec0.js index d56468862b..94893088b9 100644 --- a/public/v3/js/app.8ad7cfe1.js +++ b/public/v3/js/app.16587ec0.js @@ -1 +1 @@ -(()=>{"use strict";var e={9894:(e,t,n)=>{var r=n(1957),a=n(1947),o=n(499),i=n(9835);function c(e,t,n,r,a,o){const c=(0,i.up)("router-view");return(0,i.wg)(),(0,i.j4)(c)}var s=n(9167),l=n(1746),d=n(1569);class p{async authenticate(){return await d.api.get("/sanctum/csrf-cookie")}}class u{default(){let e=new p;return e.authenticate().then((()=>d.api.get("/api/v1/currencies/default")))}}var h=n(3555);const m=(0,i.aZ)({name:"App",preFetch({store:e}){const t=(0,h.S)(e);t.refreshCacheKey();const n=function(){let e=new s.Z;return e.getByName("viewRange").then((e=>{const n=e.data.data.attributes.data;t.updateViewRange(n),t.setDatesFromViewRange()})).catch((e=>{console.error("Could not load view range."),console.log(e)}))},r=function(){let e=new s.Z;return e.getByName("listPageSize").then((e=>{const n=e.data.data.attributes.data;t.updateListPageSize(n)})).catch((e=>{console.error("Could not load listPageSize."),console.log(e)}))},a=function(){let e=new u;return e.default().then((e=>{let n=parseInt(e.data.data.id),r=e.data.data.attributes.code;t.setCurrencyId(n),t.setCurrencyCode(r)})).catch((e=>{console.error("Could not load preferences."),console.log(e)}))},o=function(){return(new l.Z).get("locale").then((e=>{const n=e.data.data.attributes.data.replace("_","-");t.setLocale(n)})).catch((e=>{console.error("Could not load locale."),console.log(e)}))};a().then((()=>{n(),r(),o()}))}});var _=n(1639);const g=(0,_.Z)(m,[["render",c]]),b=g;var f=n(3340),y=n(7363);const w=(0,f.h)((()=>{const e=(0,y.WB)();return e}));var P=n(8910);const v=[{path:"/",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(2306)]).then(n.bind(n,2306)),name:"index",meta:{dateSelector:!0,pageTitle:"firefly.welcome_back"}}]},{path:"/development",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(7676)]).then(n.bind(n,7676)),name:"development.index",meta:{pageTitle:"firefly.development"}}]},{path:"/export",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(8493)]).then(n.bind(n,8493)),name:"export.index",meta:{pageTitle:"firefly.export"}}]},{path:"/budgets",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(159)]).then(n.bind(n,159)),name:"budgets.index",meta:{pageTitle:"firefly.budgets",breadcrumbs:[{title:"budgets",route:"budgets.index",params:[]}]}}]},{path:"/budgets/show/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(753)]).then(n.bind(n,753)),name:"budgets.show",meta:{pageTitle:"firefly.budgets",breadcrumbs:[{title:"placeholder",route:"budgets.show",params:[]}]}}]},{path:"/budgets/edit/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7916)]).then(n.bind(n,7916)),name:"budgets.edit",meta:{pageTitle:"firefly.budgets",breadcrumbs:[{title:"placeholder",route:"budgets.show",params:[]}]}}]},{path:"/budgets/create",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(4670)]).then(n.bind(n,4670)),name:"budgets.create",meta:{pageTitle:"firefly.budgets",breadcrumbs:[{title:"placeholder",route:"budgets.show",params:[]}]}}]},{path:"/subscriptions",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(5529)]).then(n.bind(n,5529)),name:"subscriptions.index",meta:{pageTitle:"firefly.subscriptions",breadcrumbs:[{title:"placeholder",route:"subscriptions.index",params:[]}]}}]},{path:"/subscriptions/show/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(1198)]).then(n.bind(n,1198)),name:"subscriptions.show",meta:{pageTitle:"firefly.subscriptions",breadcrumbs:[{title:"placeholder",route:"subscriptions.index"}]}}]},{path:"/subscriptions/edit/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(8490)]).then(n.bind(n,8490)),name:"subscriptions.edit",meta:{pageTitle:"firefly.subscriptions",breadcrumbs:[{title:"placeholder",route:"subscriptions.index"}]}}]},{path:"/subscriptions/create",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(9378)]).then(n.bind(n,9378)),name:"subscriptions.create",meta:{dateSelector:!1,pageTitle:"firefly.subscriptions"}}]},{path:"/piggy-banks",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(6254)]).then(n.bind(n,6254)),name:"piggy-banks.index",meta:{pageTitle:"firefly.piggyBanks",breadcrumbs:[{title:"piggy-banks",route:"piggy-banks.index",params:[]}]}}]},{path:"/piggy-banks/create",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7073)]).then(n.bind(n,7073)),name:"piggy-banks.create",meta:{pageTitle:"firefly.piggy-banks",breadcrumbs:[{title:"placeholder",route:"piggy-banks.create",params:[]}]}}]},{path:"/piggy-banks/show/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(3576)]).then(n.bind(n,3576)),name:"piggy-banks.show",meta:{pageTitle:"firefly.piggy-banks",breadcrumbs:[{title:"placeholder",route:"piggy-banks.index"}]}}]},{path:"/piggy-banks/edit/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(4216)]).then(n.bind(n,4216)),name:"piggy-banks.edit",meta:{pageTitle:"firefly.piggy-banks",breadcrumbs:[{title:"placeholder",route:"piggy-banks.index"}]}}]},{path:"/transactions/show/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(8659)]).then(n.bind(n,8659)),name:"transactions.show",meta:{pageTitle:"firefly.transactions",breadcrumbs:[{title:"placeholder",route:"transactions.index",params:{type:"todo"}},{title:"placeholder",route:"transactions.show",params:[]}]}}]},{path:"/transactions/create/:type",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(1221)]).then(n.bind(n,8921)),name:"transactions.create",meta:{dateSelector:!1,pageTitle:"firefly.transactions"}}]},{path:"/transactions/:type",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(1341)]).then(n.bind(n,1341)),name:"transactions.index",meta:{dateSelector:!1,pageTitle:"firefly.transactions",breadcrumbs:[{title:"transactions"}]}}]},{path:"/transactions/edit/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9376)]).then(n.bind(n,9376)),name:"transactions.edit",meta:{pageTitle:"firefly.transactions",breadcrumbs:[{title:"placeholder",route:"transactions.index",params:{type:"todo"}},{title:"placeholder",route:"transactions.show",params:[]}]}}]},{path:"/rules",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9729)]).then(n.bind(n,9729)),name:"rules.index",meta:{pageTitle:"firefly.rules"}}]},{path:"/rules/show/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7222)]).then(n.bind(n,7222)),name:"rules.show",meta:{pageTitle:"firefly.rules",breadcrumbs:[{title:"placeholder",route:"transactions.index",params:{type:"todo"}},{title:"placeholder",route:"transactions.show",params:[]}]}}]},{path:"/rules/create",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(3726)]).then(n.bind(n,3726)),name:"rules.create",meta:{pageTitle:"firefly.rules",breadcrumbs:[{title:"placeholder",route:"transactions.index",params:{type:"todo"}}]}}]},{path:"/rules/edit/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7450)]).then(n.bind(n,7450)),name:"rules.edit",meta:{pageTitle:"firefly.rules",breadcrumbs:[{title:"placeholder",route:"rules.index",params:{type:"todo"}}]}}]},{path:"/rule-groups/edit/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(1019)]).then(n.bind(n,1019)),name:"rule-groups.edit",meta:{pageTitle:"firefly.rules",breadcrumbs:[{title:"placeholder",route:"transactions.index",params:{type:"todo"}}]}}]},{path:"/rule-groups/create",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(1800)]).then(n.bind(n,1800)),name:"rule-groups.create",meta:{pageTitle:"firefly.rule-groups",breadcrumbs:[{title:"placeholder",route:"transactions.index",params:{type:"todo"}}]}}]},{path:"/recurring",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(4036)]).then(n.bind(n,4036)),name:"recurring.index",meta:{pageTitle:"firefly.recurrences"}}]},{path:"/recurring/create",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(4355)]).then(n.bind(n,4355)),name:"recurring.create",meta:{pageTitle:"firefly.recurrences",breadcrumbs:[{title:"placeholder",route:"recurrences.create",params:[]}]}}]},{path:"/recurring/show/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7697)]).then(n.bind(n,7697)),name:"recurring.show",meta:{pageTitle:"firefly.recurrences",breadcrumbs:[{title:"placeholder",route:"recurrences.index"}]}}]},{path:"/recurring/edit/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9412)]).then(n.bind(n,9412)),name:"recurring.edit",meta:{pageTitle:"firefly.recurrences",breadcrumbs:[{title:"placeholder",route:"recurrences.index"}]}}]},{path:"/accounts/show/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(4575)]).then(n.bind(n,4575)),name:"accounts.show",meta:{pageTitle:"firefly.accounts",breadcrumbs:[{title:"placeholder",route:"accounts.index",params:{type:"todo"}},{title:"placeholder",route:"accounts.show",params:[]}]}}]},{path:"/accounts/reconcile/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(4918)]).then(n.bind(n,3953)),name:"accounts.reconcile",meta:{pageTitle:"firefly.accounts",breadcrumbs:[{title:"placeholder",route:"accounts.index",params:{type:"todo"}},{title:"placeholder",route:"accounts.reconcile",params:[]}]}}]},{path:"/accounts/edit/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9253)]).then(n.bind(n,9253)),name:"accounts.edit",meta:{pageTitle:"firefly.accounts",breadcrumbs:[{title:"placeholder",route:"accounts.index",params:{type:"todo"}},{title:"placeholder",route:"accounts.edit",params:[]}]}}]},{path:"/accounts/:type",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9173)]).then(n.bind(n,9173)),name:"accounts.index",meta:{pageTitle:"firefly.accounts"}}]},{path:"/accounts/create/:type",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9432)]).then(n.bind(n,9432)),name:"accounts.create",meta:{pageTitle:"firefly.accounts"}}]},{path:"/categories",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9053)]).then(n.bind(n,9053)),name:"categories.index",meta:{pageTitle:"firefly.categories"}}]},{path:"/categories/show/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7039)]).then(n.bind(n,7039)),name:"categories.show",meta:{pageTitle:"firefly.categories",breadcrumbs:[{title:"placeholder",route:"categories.show",params:[]}]}}]},{path:"/categories/edit/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(8561)]).then(n.bind(n,8561)),name:"categories.edit",meta:{pageTitle:"firefly.categories",breadcrumbs:[{title:"placeholder",route:"categories.show",params:[]}]}}]},{path:"/categories/create",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(9052)]).then(n.bind(n,9052)),name:"categories.create",meta:{pageTitle:"firefly.categories",breadcrumbs:[{title:"placeholder",route:"categories.show",params:[]}]}}]},{path:"/tags",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(6745)]).then(n.bind(n,6745)),name:"tags.index",meta:{pageTitle:"firefly.tags"}}]},{path:"/tags/show/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(3611)]).then(n.bind(n,9286)),name:"tags.show",meta:{pageTitle:"firefly.tags",breadcrumbs:[{title:"placeholder",route:"tags.show",params:[]}]}}]},{path:"/groups",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(4647)]).then(n.bind(n,4647)),name:"groups.index",meta:{pageTitle:"firefly.object_groups_page_title"}}]},{path:"/groups/show/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(2372)]).then(n.bind(n,2372)),name:"groups.show",meta:{pageTitle:"firefly.groups",breadcrumbs:[{title:"placeholder",route:"groups.show",params:[]}]}}]},{path:"/groups/edit/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7493)]).then(n.bind(n,7493)),name:"groups.edit",meta:{pageTitle:"firefly.groups",breadcrumbs:[{title:"placeholder",route:"categories.show",params:[]}]}}]},{path:"/reports",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(8006)]).then(n.bind(n,8006)),name:"reports.index",meta:{pageTitle:"firefly.reports"}}]},{path:"/report/default/:accounts/:start/:end",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(990)]).then(n.bind(n,3694)),name:"reports.default",meta:{pageTitle:"firefly.reports"}}]},{path:"/webhooks",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(5114)]).then(n.bind(n,5114)),name:"webhooks.index",meta:{pageTitle:"firefly.webhooks"}}]},{path:"/webhooks/show/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9381)]).then(n.bind(n,9381)),name:"webhooks.show",meta:{pageTitle:"firefly.webhooks",breadcrumbs:[{title:"placeholder",route:"groups.show",params:[]}]}}]},{path:"/webhooks/edit/:id",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9814)]).then(n.bind(n,9814)),name:"webhooks.edit",meta:{pageTitle:"firefly.webhooks",breadcrumbs:[{title:"placeholder",route:"groups.show",params:[]}]}}]},{path:"/webhooks/create",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(7232)]).then(n.bind(n,7232)),name:"webhooks.create",meta:{pageTitle:"firefly.webhooks",breadcrumbs:[{title:"placeholder",route:"webhooks.show",params:[]}]}}]},{path:"/currencies",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9158)]).then(n.bind(n,9158)),name:"currencies.index",meta:{pageTitle:"firefly.currencies"}}]},{path:"/currencies/show/:code",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(1238)]).then(n.bind(n,1238)),name:"currencies.show",meta:{pageTitle:"firefly.currencies",breadcrumbs:[{title:"placeholder",route:"currencies.show",params:[]}]}}]},{path:"/currencies/edit/:code",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(607)]).then(n.bind(n,607)),name:"currencies.edit",meta:{pageTitle:"firefly.currencies",breadcrumbs:[{title:"placeholder",route:"currencies.show",params:[]}]}}]},{path:"/currencies/create",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(3912)]).then(n.bind(n,3912)),name:"currencies.create",meta:{pageTitle:"firefly.currencies",breadcrumbs:[{title:"placeholder",route:"currencies.create",params:[]}]}}]},{path:"/administrations",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(2255)]).then(n.bind(n,2255)),name:"administration.index",meta:{pageTitle:"firefly.administration_index"}}]},{path:"/profile",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(4799)]).then(n.bind(n,4799)),name:"profile.index",meta:{pageTitle:"firefly.profile"}}]},{path:"/profile/data",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(5724)]).then(n.bind(n,5724)),name:"profile.data",meta:{pageTitle:"firefly.profile_data"}}]},{path:"/preferences",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7341)]).then(n.bind(n,7341)),name:"preferences.index",meta:{pageTitle:"firefly.preferences"}}]},{path:"/system",component:()=>Promise.all([n.e(4736),n.e(9989)]).then(n.bind(n,9989)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(1872)]).then(n.bind(n,1872)),name:"system.index",meta:{pageTitle:"firefly.system"}}]},{path:"/:catchAll(.*)*",component:()=>Promise.all([n.e(4736),n.e(2769)]).then(n.bind(n,2769))}],T=v,x=(0,f.BC)((function(){const e=P.r5,t=(0,P.p7)({scrollBehavior:()=>({left:0,top:0}),routes:T,history:e("/v3/")});return t}));async function k(e,t){const n=e(b);n.use(a.Z,t);const r="function"===typeof w?await w({}):w;n.use(r);const i=(0,o.Xl)("function"===typeof x?await x({store:r}):x);return r.use((({store:e})=>{e.router=i})),{app:n,store:r,router:i}}var D=n(9527),S=n(214),Z=n(4462),R=n(3703);const C={config:{dark:"auto"},lang:D.Z,iconSet:S.Z,plugins:{Dialog:Z.Z,LocalStorage:R.Z}};let A="function"===typeof b.preFetch?b.preFetch:void 0!==b.__c&&"function"===typeof b.__c.preFetch&&b.__c.preFetch;function O(e,t){const n=e?e.matched?e:t.resolve(e).route:t.currentRoute.value;if(!n)return[];const r=n.matched.filter((e=>void 0!==e.components));return 0===r.length?[]:Array.prototype.concat.apply([],r.map((e=>Object.keys(e.components).map((t=>{const n=e.components[t];return{path:e.path,c:n}})))))}function N({router:e,store:t,publicPath:n}){e.beforeResolve(((r,a,o)=>{const i=window.location.href.replace(window.location.origin,""),c=O(r,e),s=O(a,e);let l=!1;const d=c.filter(((e,t)=>l||(l=!s[t]||s[t].c!==e.c||e.path.indexOf("/:")>-1))).filter((e=>void 0!==e.c&&("function"===typeof e.c.preFetch||void 0!==e.c.__c&&"function"===typeof e.c.__c.preFetch))).map((e=>void 0!==e.c.__c?e.c.__c.preFetch:e.c.preFetch));if(!1!==A&&(d.unshift(A),A=!1),0===d.length)return o();let p=!1;const u=e=>{p=!0,o(e)},h=()=>{!1===p&&o()};d.reduce(((e,o)=>e.then((()=>!1===p&&o({store:t,currentRoute:r,previousRoute:a,redirect:u,urlPath:i,publicPath:n})))),Promise.resolve()).then(h).catch((e=>{console.error(e),h()}))}))}const M="/v3/",B=/\/\//,j=e=>(M+e).replace(B,"/");async function I({app:e,router:t,store:n},r){let a=!1;const o=e=>{try{return j(t.resolve(e).href)}catch(n){}return Object(e)===e?null:e},i=e=>{if(a=!0,"string"===typeof e&&/^https?:\/\//.test(e))return void(window.location.href=e);const t=o(e);null!==t&&(window.location.href=t,window.location.reload())},c=window.location.href.replace(window.location.origin,"");for(let l=0;!1===a&&l{const[t,r]=void 0!==Promise.allSettled?["allSettled",e=>e.map((e=>{if("rejected"!==e.status)return e.value.default;console.error("[Quasar] boot error:",e.reason)}))]:["all",e=>e.map((e=>e.default))];return Promise[t]([Promise.resolve().then(n.bind(n,7030)),Promise.resolve().then(n.bind(n,1569))]).then((t=>{const n=r(t).filter((e=>"function"===typeof e));I(e,n)}))}))},9167:(e,t,n)=>{n.d(t,{Z:()=>a});var r=n(1569);class a{getByName(e){return r.api.get("/api/v1/preferences/"+e)}postByName(e,t){return r.api.post("/api/v1/preferences",{name:e,data:t})}}},1746:(e,t,n)=>{n.d(t,{Z:()=>a});var r=n(1569);class a{get(e){return r.api.get("/api/v2/preferences/"+e)}}},1569:(e,t,n)=>{n.r(t),n.d(t,{api:()=>l,default:()=>d});var r=n(3340),a=n(9981),o=n.n(a),i=n(8268);const c=(0,i.setupCache)({maxAge:9e5,exclude:{query:!1}}),s="/",l=o().create({baseURL:s,withCredentials:!0,adapter:c.adapter}),d=(0,r.xr)((({app:e})=>{o().defaults.withCredentials=!0,o().defaults.baseURL=s,e.config.globalProperties.$axios=o(),e.config.globalProperties.$api=l}))},7030:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var r=n(3340),a=n(9991);const o={config:{html_language:"en",month_and_day_fns:"MMMM d, y"},form:{name:"Name",amount_min:"Minimum amount",amount_max:"Maximum amount",url:"URL",title:"Title",first_date:"First date",repetitions:"Repetitions",description:"Description",iban:"IBAN",skip:"Skip",date:"Date"},list:{name:"Name",account_number:"Account number",currentBalance:"Current balance",lastActivity:"Last activity",active:"Is active?"},breadcrumbs:{placeholder:"[Placeholder]",budgets:"Budgets",subscriptions:"Subscriptions",transactions:"Transactions",title_expenses:"Expenses",title_withdrawal:"Expenses",title_revenue:"Revenue / income",title_deposit:"Revenue / income",title_transfer:"Transfers",title_transfers:"Transfers",asset_accounts:"Asset accounts",expense_accounts:"Expense accounts",revenue_accounts:"Revenue accounts",liabilities_accounts:"Liabilities"},firefly:{administration_index:"Financial administration",actions:"Actions",edit:"Edit",delete:"Delete",reconcile:"Reconcile",create_new_asset:"Create new asset account",confirm_action:"Confirm action",new_budget:"New budget",new_asset_account:"New asset account",newTransfer:"New transfer",submission_options:"Submission options",apply_rules_checkbox:"Apply rules",fire_webhooks_checkbox:"Fire webhooks",newDeposit:"New deposit",newWithdrawal:"New expense",bills_paid:"Bills paid",left_to_spend:"Left to spend",no_budget:"(no budget)",budgeted:"Budgeted",spent:"Spent",no_bill:"(no bill)",rule_trigger_source_account_starts_choice:"Source account name starts with..",rule_trigger_source_account_ends_choice:"Source account name ends with..",rule_trigger_source_account_is_choice:"Source account name is..",rule_trigger_source_account_contains_choice:"Source account name contains..",rule_trigger_account_id_choice:"Either account ID is exactly..",rule_trigger_source_account_id_choice:"Source account ID is exactly..",rule_trigger_destination_account_id_choice:"Destination account ID is exactly..",rule_trigger_account_is_cash_choice:"Either account is cash",rule_trigger_source_is_cash_choice:"Source account is (cash) account",rule_trigger_destination_is_cash_choice:"Destination account is (cash) account",rule_trigger_source_account_nr_starts_choice:"Source account number / IBAN starts with..",rule_trigger_source_account_nr_ends_choice:"Source account number / IBAN ends with..",rule_trigger_source_account_nr_is_choice:"Source account number / IBAN is..",rule_trigger_source_account_nr_contains_choice:"Source account number / IBAN contains..",rule_trigger_destination_account_starts_choice:"Destination account name starts with..",rule_trigger_destination_account_ends_choice:"Destination account name ends with..",rule_trigger_destination_account_is_choice:"Destination account name is..",rule_trigger_destination_account_contains_choice:"Destination account name contains..",rule_trigger_destination_account_nr_starts_choice:"Destination account number / IBAN starts with..",rule_trigger_destination_account_nr_ends_choice:"Destination account number / IBAN ends with..",rule_trigger_destination_account_nr_is_choice:"Destination account number / IBAN is..",rule_trigger_destination_account_nr_contains_choice:"Destination account number / IBAN contains..",rule_trigger_transaction_type_choice:"Transaction is of type..",rule_trigger_category_is_choice:"Category is..",rule_trigger_amount_less_choice:"Amount is less than..",rule_trigger_amount_is_choice:"Amount is..",rule_trigger_amount_more_choice:"Amount is more than..",rule_trigger_description_starts_choice:"Description starts with..",rule_trigger_description_ends_choice:"Description ends with..",rule_trigger_description_contains_choice:"Description contains..",rule_trigger_description_is_choice:"Description is..",rule_trigger_date_on_choice:"Transaction date is..",rule_trigger_date_before_choice:"Transaction date is before..",rule_trigger_date_after_choice:"Transaction date is after..",rule_trigger_created_at_on_choice:"Transaction was made on..",rule_trigger_updated_at_on_choice:"Transaction was last edited on..",rule_trigger_budget_is_choice:"Budget is..",rule_trigger_tag_is_choice:"Any tag is..",rule_trigger_currency_is_choice:"Transaction currency is..",rule_trigger_foreign_currency_is_choice:"Transaction foreign currency is..",rule_trigger_has_attachments_choice:"Has at least this many attachments",rule_trigger_has_no_category_choice:"Has no category",rule_trigger_has_any_category_choice:"Has a (any) category",rule_trigger_has_no_budget_choice:"Has no budget",rule_trigger_has_any_budget_choice:"Has a (any) budget",rule_trigger_has_no_bill_choice:"Has no bill",rule_trigger_has_any_bill_choice:"Has a (any) bill",rule_trigger_has_no_tag_choice:"Has no tag(s)",rule_trigger_has_any_tag_choice:"Has one or more (any) tags",rule_trigger_any_notes_choice:"Has (any) notes",rule_trigger_no_notes_choice:"Has no notes",rule_trigger_notes_is_choice:"Notes are..",rule_trigger_notes_contains_choice:"Notes contain..",rule_trigger_notes_starts_choice:"Notes start with..",rule_trigger_notes_ends_choice:"Notes end with..",rule_trigger_bill_is_choice:"Bill is..",rule_trigger_external_id_is_choice:"External ID is..",rule_trigger_internal_reference_is_choice:"Internal reference is..",rule_trigger_journal_id_choice:"Transaction journal ID is..",rule_trigger_any_external_url_choice:"Transaction has an external URL",rule_trigger_no_external_url_choice:"Transaction has no external URL",rule_trigger_id_choice:"Transaction ID is..",rule_action_delete_transaction_choice:"DELETE transaction(!)",rule_action_set_category_choice:"Set category to ..",rule_action_clear_category_choice:"Clear any category",rule_action_set_budget_choice:"Set budget to ..",rule_action_clear_budget_choice:"Clear any budget",rule_action_add_tag_choice:"Add tag ..",rule_action_remove_tag_choice:"Remove tag ..",rule_action_remove_all_tags_choice:"Remove all tags",rule_action_set_description_choice:"Set description to ..",rule_action_update_piggy_choice:"Add / remove transaction amount in piggy bank ..",rule_action_append_description_choice:"Append description with ..",rule_action_prepend_description_choice:"Prepend description with ..",rule_action_set_source_account_choice:"Set source account to ..",rule_action_set_destination_account_choice:"Set destination account to ..",rule_action_append_notes_choice:"Append notes with ..",rule_action_prepend_notes_choice:"Prepend notes with ..",rule_action_clear_notes_choice:"Remove any notes",rule_action_set_notes_choice:"Set notes to ..",rule_action_link_to_bill_choice:"Link to a bill ..",rule_action_convert_deposit_choice:"Convert the transaction to a deposit",rule_action_convert_withdrawal_choice:"Convert the transaction to a withdrawal",rule_action_convert_transfer_choice:"Convert the transaction to a transfer",placeholder:"[Placeholder]",recurrences:"Recurring transactions",title_expenses:"Expenses",title_withdrawal:"Expenses",title_revenue:"Revenue / income",pref_1D:"One day",pref_1W:"One week",pref_1M:"One month",pref_3M:"Three months (quarter)",pref_6M:"Six months",pref_1Y:"One year",repeat_freq_yearly:"yearly","repeat_freq_half-year":"every half-year",repeat_freq_quarterly:"quarterly",repeat_freq_monthly:"monthly",repeat_freq_weekly:"weekly",single_split:"Split",asset_accounts:"Asset accounts",expense_accounts:"Expense accounts",liabilities_accounts:"Liabilities",undefined_accounts:"Accounts",name:"Name",revenue_accounts:"Revenue accounts",description:"Description",category:"Category",title_deposit:"Revenue / income",title_transfer:"Transfers",title_transfers:"Transfers",piggyBanks:"Piggy banks",rules:"Rules",accounts:"Accounts",categories:"Categories",tags:"Tags",object_groups_page_title:"Groups",reports:"Reports",webhooks:"Webhooks",currencies:"Currencies",administration:"Administration",profile:"Profile",source_account:"Source account",destination_account:"Destination account",amount:"Amount",date:"Date",time:"Time",preferences:"Preferences",transactions:"Transactions",balance:"Balance",budgets:"Budgets",subscriptions:"Subscriptions",welcome_back:"What's playing?",bills_to_pay:"Bills to pay",net_worth:"Net worth",pref_last365:"Last year",pref_last90:"Last 90 days",pref_last30:"Last 30 days",pref_last7:"Last 7 days",pref_YTD:"Year to date",pref_QTD:"Quarter to date",pref_MTD:"Month to date"}},i={"en-US":o},c=(0,r.xr)((({app:e})=>{const t=(0,a.o)({locale:"en-US",messages:i});e.use(t)}))},3555:(e,t,n)=>{n.d(t,{S:()=>m});var r=n(7363),a=n(1776),o=n(7104),i=n(3637),c=n(444),s=n(6490),l=n(7164),d=n(3611),p=n(9739),u=n(5057),h=n(4453);const m=(0,r.Q_)("firefly-iii",{state:()=>({drawerState:!0,viewRange:"1M",listPageSize:10,locale:"en-US",range:{start:null,end:null},defaultRange:{start:null,end:null},currencyCode:"AAA",currencyId:"0",cacheKey:"initial"}),getters:{getViewRange(e){return e.viewRange},getLocale(e){return e.locale},getListPageSize(e){return e.listPageSize},getCurrencyCode(e){return e.currencyCode},getCurrencyId(e){return e.currencyId},getRange(e){return e.range},getDefaultRange(e){return e.defaultRange},getCacheKey(e){return e.cacheKey}},actions:{refreshCacheKey(){let e=Math.random().toString(36).replace(/[^a-z]+/g,"").slice(0,8);this.setCacheKey(e)},resetRange(){let e=this.defaultRange;this.setRange(e)},setDatesFromViewRange(){let e,t,n=this.viewRange,r=new Date;switch(n){case"last365":e=(0,a.Z)((0,o.Z)(r,365)),t=(0,i.Z)(r);break;case"last90":e=(0,a.Z)((0,o.Z)(r,90)),t=(0,i.Z)(r);break;case"last30":e=(0,a.Z)((0,o.Z)(r,30)),t=(0,i.Z)(r);break;case"last7":e=(0,a.Z)((0,o.Z)(r,7)),t=(0,i.Z)(r);break;case"YTD":e=(0,c.Z)(r),t=(0,i.Z)(r);break;case"QTD":e=(0,s.Z)(r),t=(0,i.Z)(r);break;case"MTD":e=(0,l.Z)(r),t=(0,i.Z)(r);break;case"1D":e=(0,a.Z)(r),t=(0,i.Z)(r);break;case"1W":e=(0,a.Z)((0,d.Z)(r,{weekStartsOn:1})),t=(0,i.Z)((0,p.Z)(r,{weekStartsOn:1}));break;case"1M":e=(0,a.Z)((0,l.Z)(r)),t=(0,i.Z)((0,u.Z)(r));break;case"3M":e=(0,a.Z)((0,s.Z)(r)),t=(0,i.Z)((0,h.Z)(r));break;case"6M":r.getMonth()<=5&&(e=new Date(r),e.setMonth(0),e.setDate(1),e=(0,a.Z)(e),t=new Date(r),t.setMonth(5),t.setDate(30),t=(0,i.Z)(e)),r.getMonth()>5&&(e=new Date(r),e.setMonth(6),e.setDate(1),e=(0,a.Z)(e),t=new Date(r),t.setMonth(11),t.setDate(31),t=(0,i.Z)(e));break;case"1Y":e=new Date(r),e.setMonth(0),e.setDate(1),e=(0,a.Z)(e),t=new Date(r),t.setMonth(11),t.setDate(31),t=(0,i.Z)(t);break}this.setRange({start:e,end:t}),this.setDefaultRange({start:e,end:t})},updateViewRange(e){this.viewRange=e},updateListPageSize(e){this.listPageSize=e},setLocale(e){this.locale=e},setRange(e){return this.range=e,e},setDefaultRange(e){this.defaultRange=e},setCurrencyCode(e){this.currencyCode=e},setCurrencyId(e){this.currencyId=e},setCacheKey(e){this.cacheKey=e}}})}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,n),o.exports}n.m=e,(()=>{var e=[];n.O=(t,r,a,o)=>{if(!r){var i=1/0;for(d=0;d=o)&&Object.keys(n.O).every((e=>n.O[e](r[s])))?r.splice(s--,1):(c=!1,o0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[r,a,o]}})(),(()=>{n.n=e=>{var t=e&&e.__esModule?()=>e["default"]:()=>e;return n.d(t,{a:t}),t}})(),(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;n.t=function(r,a){if(1&a&&(r=this(r)),8&a)return r;if("object"===typeof r&&r){if(4&a&&r.__esModule)return r;if(16&a&&"function"===typeof r.then)return r}var o=Object.create(null);n.r(o);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&a&&r;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>r[e]));return i["default"]=()=>r,n.d(o,i),o}})(),(()=>{n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((t,r)=>(n.f[r](e,t),t)),[]))})(),(()=>{n.u=e=>"js/"+(3064===e?"chunk-common":e)+"."+{159:"849b2e88",607:"a7330a8c",753:"c47e29ea",936:"308ce395",990:"9f80994c",1019:"ebc4d223",1198:"cbaca816",1221:"bb21f046",1238:"744a7b52",1341:"e6d35593",1800:"73a958f8",1872:"235df0c5",2255:"106372da",2306:"accc86fe",2372:"0c493e6d",2382:"a6898a70",2769:"435f626d",3064:"2a30b5d5",3576:"5e70097a",3611:"d383e2f1",3726:"efae2175",3912:"55920040",3922:"0d52278f",4036:"46dc453b",4216:"13049863",4355:"044e2646",4575:"6117a3b3",4647:"eb08255c",4670:"83bf8b86",4777:"315d9cdb",4799:"53ec814f",4918:"ac68d296",5114:"96732a35",5389:"83172589",5529:"dbcd5e10",5724:"a11c8347",6254:"16279dd8",6745:"426b85d7",7039:"7e8ac025",7073:"d2bf4ce4",7222:"f318969b",7232:"c2628686",7341:"eb42d75a",7450:"f34e8691",7493:"f0265108",7676:"a2a73fd6",7697:"84e1e5ec",7700:"8a677dfa",7889:"197b7788",7916:"085f15b4",8006:"ed33c726",8135:"8ac09b69",8490:"88c1c928",8493:"d667b5ff",8561:"1097efea",8659:"6dbd3a99",9052:"436e16fe",9053:"8c7cb7c1",9158:"887ce7fc",9173:"44a0bd7d",9253:"d541f5eb",9376:"b2fa7b33",9378:"81ba39c5",9381:"936c3132",9412:"a953a672",9432:"7c03632b",9729:"a64217d1",9814:"61040ecb",9989:"dd19d3fb"}[e]+".js"})(),(()=>{n.miniCssF=e=>{}})(),(()=>{n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()})(),(()=>{n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e={},t="firefly-iii:";n.l=(r,a,o,i)=>{if(e[r])e[r].push(a);else{var c,s;if(void 0!==o)for(var l=document.getElementsByTagName("script"),d=0;d{c.onerror=c.onload=null,clearTimeout(h);var a=e[r];if(delete e[r],c.parentNode&&c.parentNode.removeChild(c),a&&a.forEach((e=>e(n))),t)return t(n)},h=setTimeout(u.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=u.bind(null,c.onerror),c.onload=u.bind(null,c.onload),s&&document.head.appendChild(c)}}})(),(()=>{n.r=e=>{"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),(()=>{n.p="/v3/"})(),(()=>{var e={2143:0};n.f.j=(t,r)=>{var a=n.o(e,t)?e[t]:void 0;if(0!==a)if(a)r.push(a[2]);else{var o=new Promise(((n,r)=>a=e[t]=[n,r]));r.push(a[2]=o);var i=n.p+n.u(t),c=new Error,s=r=>{if(n.o(e,t)&&(a=e[t],0!==a&&(e[t]=void 0),a)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;c.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",c.name="ChunkLoadError",c.type=o,c.request=i,a[1](c)}};n.l(i,s,"chunk-"+t,t)}},n.O.j=t=>0===e[t];var t=(t,r)=>{var a,o,[i,c,s]=r,l=0;if(i.some((t=>0!==e[t]))){for(a in c)n.o(c,a)&&(n.m[a]=c[a]);if(s)var d=s(n)}for(t&&t(r);ln(9894)));r=n.O(r)})(); \ No newline at end of file +(()=>{"use strict";var e={9894:(e,t,n)=>{var r=n(1957),a=n(1947),o=n(499),i=n(9835);function c(e,t,n,r,a,o){const c=(0,i.up)("router-view");return(0,i.wg)(),(0,i.j4)(c)}var s=n(9167),l=n(1746),d=n(1569);class p{async authenticate(){return await d.api.get("/sanctum/csrf-cookie")}}class u{default(){let e=new p;return e.authenticate().then((()=>d.api.get("/api/v1/currencies/default")))}}var h=n(3555);const m=(0,i.aZ)({name:"App",preFetch({store:e}){const t=(0,h.S)(e);t.refreshCacheKey();const n=function(){let e=new s.Z;return e.getByName("viewRange").then((e=>{const n=e.data.data.attributes.data;t.updateViewRange(n),t.setDatesFromViewRange()})).catch((e=>{console.error("Could not load view range."),console.log(e)}))},r=function(){let e=new s.Z;return e.getByName("listPageSize").then((e=>{const n=e.data.data.attributes.data;t.updateListPageSize(n)})).catch((e=>{console.error("Could not load listPageSize."),console.log(e)}))},a=function(){let e=new u;return e.default().then((e=>{let n=parseInt(e.data.data.id),r=e.data.data.attributes.code;t.setCurrencyId(n),t.setCurrencyCode(r)})).catch((e=>{console.error("Could not load preferences."),console.log(e)}))},o=function(){return(new l.Z).get("locale").then((e=>{const n=e.data.data.attributes.data.replace("_","-");t.setLocale(n)})).catch((e=>{console.error("Could not load locale."),console.log(e)}))};a().then((()=>{n(),r(),o()}))}});var _=n(1639);const g=(0,_.Z)(m,[["render",c]]),b=g;var f=n(3340),y=n(7363);const w=(0,f.h)((()=>{const e=(0,y.WB)();return e}));var P=n(8910);const v=[{path:"/",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(2306)]).then(n.bind(n,2306)),name:"index",meta:{dateSelector:!0,pageTitle:"firefly.welcome_back"}}]},{path:"/development",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(7676)]).then(n.bind(n,7676)),name:"development.index",meta:{pageTitle:"firefly.development"}}]},{path:"/export",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(8493)]).then(n.bind(n,8493)),name:"export.index",meta:{pageTitle:"firefly.export"}}]},{path:"/budgets",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(159)]).then(n.bind(n,159)),name:"budgets.index",meta:{pageTitle:"firefly.budgets",breadcrumbs:[{title:"budgets",route:"budgets.index",params:[]}]}}]},{path:"/budgets/show/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(753)]).then(n.bind(n,753)),name:"budgets.show",meta:{pageTitle:"firefly.budgets",breadcrumbs:[{title:"placeholder",route:"budgets.show",params:[]}]}}]},{path:"/budgets/edit/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7916)]).then(n.bind(n,7916)),name:"budgets.edit",meta:{pageTitle:"firefly.budgets",breadcrumbs:[{title:"placeholder",route:"budgets.show",params:[]}]}}]},{path:"/budgets/create",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(4670)]).then(n.bind(n,4670)),name:"budgets.create",meta:{pageTitle:"firefly.budgets",breadcrumbs:[{title:"placeholder",route:"budgets.show",params:[]}]}}]},{path:"/subscriptions",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(5529)]).then(n.bind(n,5529)),name:"subscriptions.index",meta:{pageTitle:"firefly.subscriptions",breadcrumbs:[{title:"placeholder",route:"subscriptions.index",params:[]}]}}]},{path:"/subscriptions/show/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(1198)]).then(n.bind(n,1198)),name:"subscriptions.show",meta:{pageTitle:"firefly.subscriptions",breadcrumbs:[{title:"placeholder",route:"subscriptions.index"}]}}]},{path:"/subscriptions/edit/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(8490)]).then(n.bind(n,8490)),name:"subscriptions.edit",meta:{pageTitle:"firefly.subscriptions",breadcrumbs:[{title:"placeholder",route:"subscriptions.index"}]}}]},{path:"/subscriptions/create",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(9378)]).then(n.bind(n,9378)),name:"subscriptions.create",meta:{dateSelector:!1,pageTitle:"firefly.subscriptions"}}]},{path:"/piggy-banks",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(6254)]).then(n.bind(n,6254)),name:"piggy-banks.index",meta:{pageTitle:"firefly.piggyBanks",breadcrumbs:[{title:"piggy-banks",route:"piggy-banks.index",params:[]}]}}]},{path:"/piggy-banks/create",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7073)]).then(n.bind(n,7073)),name:"piggy-banks.create",meta:{pageTitle:"firefly.piggy-banks",breadcrumbs:[{title:"placeholder",route:"piggy-banks.create",params:[]}]}}]},{path:"/piggy-banks/show/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(3576)]).then(n.bind(n,3576)),name:"piggy-banks.show",meta:{pageTitle:"firefly.piggy-banks",breadcrumbs:[{title:"placeholder",route:"piggy-banks.index"}]}}]},{path:"/piggy-banks/edit/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(4216)]).then(n.bind(n,4216)),name:"piggy-banks.edit",meta:{pageTitle:"firefly.piggy-banks",breadcrumbs:[{title:"placeholder",route:"piggy-banks.index"}]}}]},{path:"/transactions/show/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(8659)]).then(n.bind(n,8659)),name:"transactions.show",meta:{pageTitle:"firefly.transactions",breadcrumbs:[{title:"placeholder",route:"transactions.index",params:{type:"todo"}},{title:"placeholder",route:"transactions.show",params:[]}]}}]},{path:"/transactions/create/:type",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(1221)]).then(n.bind(n,8921)),name:"transactions.create",meta:{dateSelector:!1,pageTitle:"firefly.transactions"}}]},{path:"/transactions/:type",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(1341)]).then(n.bind(n,1341)),name:"transactions.index",meta:{dateSelector:!1,pageTitle:"firefly.transactions",breadcrumbs:[{title:"transactions"}]}}]},{path:"/transactions/edit/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9376)]).then(n.bind(n,9376)),name:"transactions.edit",meta:{pageTitle:"firefly.transactions",breadcrumbs:[{title:"placeholder",route:"transactions.index",params:{type:"todo"}},{title:"placeholder",route:"transactions.show",params:[]}]}}]},{path:"/rules",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9729)]).then(n.bind(n,9729)),name:"rules.index",meta:{pageTitle:"firefly.rules"}}]},{path:"/rules/show/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7222)]).then(n.bind(n,7222)),name:"rules.show",meta:{pageTitle:"firefly.rules",breadcrumbs:[{title:"placeholder",route:"transactions.index",params:{type:"todo"}},{title:"placeholder",route:"transactions.show",params:[]}]}}]},{path:"/rules/create",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(3726)]).then(n.bind(n,3726)),name:"rules.create",meta:{pageTitle:"firefly.rules",breadcrumbs:[{title:"placeholder",route:"transactions.index",params:{type:"todo"}}]}}]},{path:"/rules/edit/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7450)]).then(n.bind(n,7450)),name:"rules.edit",meta:{pageTitle:"firefly.rules",breadcrumbs:[{title:"placeholder",route:"rules.index",params:{type:"todo"}}]}}]},{path:"/rule-groups/edit/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(1019)]).then(n.bind(n,1019)),name:"rule-groups.edit",meta:{pageTitle:"firefly.rules",breadcrumbs:[{title:"placeholder",route:"transactions.index",params:{type:"todo"}}]}}]},{path:"/rule-groups/create",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(1800)]).then(n.bind(n,1800)),name:"rule-groups.create",meta:{pageTitle:"firefly.rule-groups",breadcrumbs:[{title:"placeholder",route:"transactions.index",params:{type:"todo"}}]}}]},{path:"/recurring",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(4036)]).then(n.bind(n,4036)),name:"recurring.index",meta:{pageTitle:"firefly.recurrences"}}]},{path:"/recurring/create",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(4355)]).then(n.bind(n,4355)),name:"recurring.create",meta:{pageTitle:"firefly.recurrences",breadcrumbs:[{title:"placeholder",route:"recurrences.create",params:[]}]}}]},{path:"/recurring/show/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7697)]).then(n.bind(n,7697)),name:"recurring.show",meta:{pageTitle:"firefly.recurrences",breadcrumbs:[{title:"placeholder",route:"recurrences.index"}]}}]},{path:"/recurring/edit/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9412)]).then(n.bind(n,9412)),name:"recurring.edit",meta:{pageTitle:"firefly.recurrences",breadcrumbs:[{title:"placeholder",route:"recurrences.index"}]}}]},{path:"/accounts/show/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(4575)]).then(n.bind(n,4575)),name:"accounts.show",meta:{pageTitle:"firefly.accounts",breadcrumbs:[{title:"placeholder",route:"accounts.index",params:{type:"todo"}},{title:"placeholder",route:"accounts.show",params:[]}]}}]},{path:"/accounts/reconcile/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(4918)]).then(n.bind(n,3953)),name:"accounts.reconcile",meta:{pageTitle:"firefly.accounts",breadcrumbs:[{title:"placeholder",route:"accounts.index",params:{type:"todo"}},{title:"placeholder",route:"accounts.reconcile",params:[]}]}}]},{path:"/accounts/edit/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9253)]).then(n.bind(n,9253)),name:"accounts.edit",meta:{pageTitle:"firefly.accounts",breadcrumbs:[{title:"placeholder",route:"accounts.index",params:{type:"todo"}},{title:"placeholder",route:"accounts.edit",params:[]}]}}]},{path:"/accounts/:type",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9173)]).then(n.bind(n,9173)),name:"accounts.index",meta:{pageTitle:"firefly.accounts"}}]},{path:"/accounts/create/:type",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9432)]).then(n.bind(n,9432)),name:"accounts.create",meta:{pageTitle:"firefly.accounts"}}]},{path:"/categories",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9053)]).then(n.bind(n,9053)),name:"categories.index",meta:{pageTitle:"firefly.categories"}}]},{path:"/categories/show/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7039)]).then(n.bind(n,7039)),name:"categories.show",meta:{pageTitle:"firefly.categories",breadcrumbs:[{title:"placeholder",route:"categories.show",params:[]}]}}]},{path:"/categories/edit/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(8561)]).then(n.bind(n,8561)),name:"categories.edit",meta:{pageTitle:"firefly.categories",breadcrumbs:[{title:"placeholder",route:"categories.show",params:[]}]}}]},{path:"/categories/create",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(9052)]).then(n.bind(n,9052)),name:"categories.create",meta:{pageTitle:"firefly.categories",breadcrumbs:[{title:"placeholder",route:"categories.show",params:[]}]}}]},{path:"/tags",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(6745)]).then(n.bind(n,6745)),name:"tags.index",meta:{pageTitle:"firefly.tags"}}]},{path:"/tags/show/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(3611)]).then(n.bind(n,9286)),name:"tags.show",meta:{pageTitle:"firefly.tags",breadcrumbs:[{title:"placeholder",route:"tags.show",params:[]}]}}]},{path:"/groups",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(4647)]).then(n.bind(n,4647)),name:"groups.index",meta:{pageTitle:"firefly.object_groups_page_title"}}]},{path:"/groups/show/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(2372)]).then(n.bind(n,2372)),name:"groups.show",meta:{pageTitle:"firefly.groups",breadcrumbs:[{title:"placeholder",route:"groups.show",params:[]}]}}]},{path:"/groups/edit/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7493)]).then(n.bind(n,7493)),name:"groups.edit",meta:{pageTitle:"firefly.groups",breadcrumbs:[{title:"placeholder",route:"categories.show",params:[]}]}}]},{path:"/reports",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(8006)]).then(n.bind(n,8006)),name:"reports.index",meta:{pageTitle:"firefly.reports"}}]},{path:"/report/default/:accounts/:start/:end",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(990)]).then(n.bind(n,3694)),name:"reports.default",meta:{pageTitle:"firefly.reports"}}]},{path:"/webhooks",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(5114)]).then(n.bind(n,5114)),name:"webhooks.index",meta:{pageTitle:"firefly.webhooks"}}]},{path:"/webhooks/show/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9381)]).then(n.bind(n,9381)),name:"webhooks.show",meta:{pageTitle:"firefly.webhooks",breadcrumbs:[{title:"placeholder",route:"groups.show",params:[]}]}}]},{path:"/webhooks/edit/:id",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9814)]).then(n.bind(n,9814)),name:"webhooks.edit",meta:{pageTitle:"firefly.webhooks",breadcrumbs:[{title:"placeholder",route:"groups.show",params:[]}]}}]},{path:"/webhooks/create",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(7232)]).then(n.bind(n,7232)),name:"webhooks.create",meta:{pageTitle:"firefly.webhooks",breadcrumbs:[{title:"placeholder",route:"webhooks.show",params:[]}]}}]},{path:"/currencies",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(9158)]).then(n.bind(n,9158)),name:"currencies.index",meta:{pageTitle:"firefly.currencies"}}]},{path:"/currencies/show/:code",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(1238)]).then(n.bind(n,1238)),name:"currencies.show",meta:{pageTitle:"firefly.currencies",breadcrumbs:[{title:"placeholder",route:"currencies.show",params:[]}]}}]},{path:"/currencies/edit/:code",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(607)]).then(n.bind(n,607)),name:"currencies.edit",meta:{pageTitle:"firefly.currencies",breadcrumbs:[{title:"placeholder",route:"currencies.show",params:[]}]}}]},{path:"/currencies/create",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(3912)]).then(n.bind(n,3912)),name:"currencies.create",meta:{pageTitle:"firefly.currencies",breadcrumbs:[{title:"placeholder",route:"currencies.create",params:[]}]}}]},{path:"/administrations",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(2255)]).then(n.bind(n,2255)),name:"administration.index",meta:{pageTitle:"firefly.administration_index"}}]},{path:"/profile",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(4799)]).then(n.bind(n,4799)),name:"profile.index",meta:{pageTitle:"firefly.profile"}}]},{path:"/profile/data",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(5724)]).then(n.bind(n,5724)),name:"profile.data",meta:{pageTitle:"firefly.profile_data"}}]},{path:"/preferences",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(7341)]).then(n.bind(n,7341)),name:"preferences.index",meta:{pageTitle:"firefly.preferences"}}]},{path:"/system",component:()=>Promise.all([n.e(4736),n.e(2959)]).then(n.bind(n,2959)),children:[{path:"",component:()=>Promise.all([n.e(4736),n.e(3064),n.e(1872)]).then(n.bind(n,1872)),name:"system.index",meta:{pageTitle:"firefly.system"}}]},{path:"/:catchAll(.*)*",component:()=>Promise.all([n.e(4736),n.e(2769)]).then(n.bind(n,2769))}],T=v,x=(0,f.BC)((function(){const e=P.r5,t=(0,P.p7)({scrollBehavior:()=>({left:0,top:0}),routes:T,history:e("/v3/")});return t}));async function k(e,t){const n=e(b);n.use(a.Z,t);const r="function"===typeof w?await w({}):w;n.use(r);const i=(0,o.Xl)("function"===typeof x?await x({store:r}):x);return r.use((({store:e})=>{e.router=i})),{app:n,store:r,router:i}}var D=n(9527),S=n(214),Z=n(4462),R=n(3703);const C={config:{dark:"auto"},lang:D.Z,iconSet:S.Z,plugins:{Dialog:Z.Z,LocalStorage:R.Z}};let A="function"===typeof b.preFetch?b.preFetch:void 0!==b.__c&&"function"===typeof b.__c.preFetch&&b.__c.preFetch;function O(e,t){const n=e?e.matched?e:t.resolve(e).route:t.currentRoute.value;if(!n)return[];const r=n.matched.filter((e=>void 0!==e.components));return 0===r.length?[]:Array.prototype.concat.apply([],r.map((e=>Object.keys(e.components).map((t=>{const n=e.components[t];return{path:e.path,c:n}})))))}function N({router:e,store:t,publicPath:n}){e.beforeResolve(((r,a,o)=>{const i=window.location.href.replace(window.location.origin,""),c=O(r,e),s=O(a,e);let l=!1;const d=c.filter(((e,t)=>l||(l=!s[t]||s[t].c!==e.c||e.path.indexOf("/:")>-1))).filter((e=>void 0!==e.c&&("function"===typeof e.c.preFetch||void 0!==e.c.__c&&"function"===typeof e.c.__c.preFetch))).map((e=>void 0!==e.c.__c?e.c.__c.preFetch:e.c.preFetch));if(!1!==A&&(d.unshift(A),A=!1),0===d.length)return o();let p=!1;const u=e=>{p=!0,o(e)},h=()=>{!1===p&&o()};d.reduce(((e,o)=>e.then((()=>!1===p&&o({store:t,currentRoute:r,previousRoute:a,redirect:u,urlPath:i,publicPath:n})))),Promise.resolve()).then(h).catch((e=>{console.error(e),h()}))}))}const M="/v3/",B=/\/\//,j=e=>(M+e).replace(B,"/");async function I({app:e,router:t,store:n},r){let a=!1;const o=e=>{try{return j(t.resolve(e).href)}catch(n){}return Object(e)===e?null:e},i=e=>{if(a=!0,"string"===typeof e&&/^https?:\/\//.test(e))return void(window.location.href=e);const t=o(e);null!==t&&(window.location.href=t,window.location.reload())},c=window.location.href.replace(window.location.origin,"");for(let l=0;!1===a&&l{const[t,r]=void 0!==Promise.allSettled?["allSettled",e=>e.map((e=>{if("rejected"!==e.status)return e.value.default;console.error("[Quasar] boot error:",e.reason)}))]:["all",e=>e.map((e=>e.default))];return Promise[t]([Promise.resolve().then(n.bind(n,7030)),Promise.resolve().then(n.bind(n,1569))]).then((t=>{const n=r(t).filter((e=>"function"===typeof e));I(e,n)}))}))},9167:(e,t,n)=>{n.d(t,{Z:()=>a});var r=n(1569);class a{getByName(e){return r.api.get("/api/v1/preferences/"+e)}postByName(e,t){return r.api.post("/api/v1/preferences",{name:e,data:t})}}},1746:(e,t,n)=>{n.d(t,{Z:()=>a});var r=n(1569);class a{get(e){return r.api.get("/api/v2/preferences/"+e)}}},1569:(e,t,n)=>{n.r(t),n.d(t,{api:()=>l,default:()=>d});var r=n(3340),a=n(9981),o=n.n(a),i=n(8268);const c=(0,i.setupCache)({maxAge:9e5,exclude:{query:!1}}),s="/",l=o().create({baseURL:s,withCredentials:!0,adapter:c.adapter}),d=(0,r.xr)((({app:e})=>{o().defaults.withCredentials=!0,o().defaults.baseURL=s,e.config.globalProperties.$axios=o(),e.config.globalProperties.$api=l}))},7030:(e,t,n)=>{n.r(t),n.d(t,{default:()=>c});var r=n(3340),a=n(9991);const o={config:{html_language:"en",month_and_day_fns:"MMMM d, y"},form:{name:"Name",amount_min:"Minimum amount",amount_max:"Maximum amount",url:"URL",title:"Title",first_date:"First date",repetitions:"Repetitions",description:"Description",iban:"IBAN",skip:"Skip",date:"Date"},list:{name:"Name",account_number:"Account number",currentBalance:"Current balance",lastActivity:"Last activity",active:"Is active?"},breadcrumbs:{placeholder:"[Placeholder]",budgets:"Budgets",subscriptions:"Subscriptions",transactions:"Transactions",title_expenses:"Expenses",title_withdrawal:"Expenses",title_revenue:"Revenue / income",title_deposit:"Revenue / income",title_transfer:"Transfers",title_transfers:"Transfers",asset_accounts:"Asset accounts",expense_accounts:"Expense accounts",revenue_accounts:"Revenue accounts",liabilities_accounts:"Liabilities"},firefly:{administration_index:"Financial administration",actions:"Actions",edit:"Edit",delete:"Delete",reconcile:"Reconcile",create_new_asset:"Create new asset account",confirm_action:"Confirm action",new_budget:"New budget",new_asset_account:"New asset account",newTransfer:"New transfer",submission_options:"Submission options",apply_rules_checkbox:"Apply rules",fire_webhooks_checkbox:"Fire webhooks",newDeposit:"New deposit",newWithdrawal:"New expense",bills_paid:"Bills paid",left_to_spend:"Left to spend",no_budget:"(no budget)",budgeted:"Budgeted",spent:"Spent",no_bill:"(no bill)",rule_trigger_source_account_starts_choice:"Source account name starts with..",rule_trigger_source_account_ends_choice:"Source account name ends with..",rule_trigger_source_account_is_choice:"Source account name is..",rule_trigger_source_account_contains_choice:"Source account name contains..",rule_trigger_account_id_choice:"Either account ID is exactly..",rule_trigger_source_account_id_choice:"Source account ID is exactly..",rule_trigger_destination_account_id_choice:"Destination account ID is exactly..",rule_trigger_account_is_cash_choice:"Either account is cash",rule_trigger_source_is_cash_choice:"Source account is (cash) account",rule_trigger_destination_is_cash_choice:"Destination account is (cash) account",rule_trigger_source_account_nr_starts_choice:"Source account number / IBAN starts with..",rule_trigger_source_account_nr_ends_choice:"Source account number / IBAN ends with..",rule_trigger_source_account_nr_is_choice:"Source account number / IBAN is..",rule_trigger_source_account_nr_contains_choice:"Source account number / IBAN contains..",rule_trigger_destination_account_starts_choice:"Destination account name starts with..",rule_trigger_destination_account_ends_choice:"Destination account name ends with..",rule_trigger_destination_account_is_choice:"Destination account name is..",rule_trigger_destination_account_contains_choice:"Destination account name contains..",rule_trigger_destination_account_nr_starts_choice:"Destination account number / IBAN starts with..",rule_trigger_destination_account_nr_ends_choice:"Destination account number / IBAN ends with..",rule_trigger_destination_account_nr_is_choice:"Destination account number / IBAN is..",rule_trigger_destination_account_nr_contains_choice:"Destination account number / IBAN contains..",rule_trigger_transaction_type_choice:"Transaction is of type..",rule_trigger_category_is_choice:"Category is..",rule_trigger_amount_less_choice:"Amount is less than..",rule_trigger_amount_is_choice:"Amount is..",rule_trigger_amount_more_choice:"Amount is more than..",rule_trigger_description_starts_choice:"Description starts with..",rule_trigger_description_ends_choice:"Description ends with..",rule_trigger_description_contains_choice:"Description contains..",rule_trigger_description_is_choice:"Description is..",rule_trigger_date_on_choice:"Transaction date is..",rule_trigger_date_before_choice:"Transaction date is before..",rule_trigger_date_after_choice:"Transaction date is after..",rule_trigger_created_at_on_choice:"Transaction was made on..",rule_trigger_updated_at_on_choice:"Transaction was last edited on..",rule_trigger_budget_is_choice:"Budget is..",rule_trigger_tag_is_choice:"Any tag is..",rule_trigger_currency_is_choice:"Transaction currency is..",rule_trigger_foreign_currency_is_choice:"Transaction foreign currency is..",rule_trigger_has_attachments_choice:"Has at least this many attachments",rule_trigger_has_no_category_choice:"Has no category",rule_trigger_has_any_category_choice:"Has a (any) category",rule_trigger_has_no_budget_choice:"Has no budget",rule_trigger_has_any_budget_choice:"Has a (any) budget",rule_trigger_has_no_bill_choice:"Has no bill",rule_trigger_has_any_bill_choice:"Has a (any) bill",rule_trigger_has_no_tag_choice:"Has no tag(s)",rule_trigger_has_any_tag_choice:"Has one or more (any) tags",rule_trigger_any_notes_choice:"Has (any) notes",rule_trigger_no_notes_choice:"Has no notes",rule_trigger_notes_is_choice:"Notes are..",rule_trigger_notes_contains_choice:"Notes contain..",rule_trigger_notes_starts_choice:"Notes start with..",rule_trigger_notes_ends_choice:"Notes end with..",rule_trigger_bill_is_choice:"Bill is..",rule_trigger_external_id_is_choice:"External ID is..",rule_trigger_internal_reference_is_choice:"Internal reference is..",rule_trigger_journal_id_choice:"Transaction journal ID is..",rule_trigger_any_external_url_choice:"Transaction has an external URL",rule_trigger_no_external_url_choice:"Transaction has no external URL",rule_trigger_id_choice:"Transaction ID is..",rule_action_delete_transaction_choice:"DELETE transaction(!)",rule_action_set_category_choice:"Set category to ..",rule_action_clear_category_choice:"Clear any category",rule_action_set_budget_choice:"Set budget to ..",rule_action_clear_budget_choice:"Clear any budget",rule_action_add_tag_choice:"Add tag ..",rule_action_remove_tag_choice:"Remove tag ..",rule_action_remove_all_tags_choice:"Remove all tags",rule_action_set_description_choice:"Set description to ..",rule_action_update_piggy_choice:"Add / remove transaction amount in piggy bank ..",rule_action_append_description_choice:"Append description with ..",rule_action_prepend_description_choice:"Prepend description with ..",rule_action_set_source_account_choice:"Set source account to ..",rule_action_set_destination_account_choice:"Set destination account to ..",rule_action_append_notes_choice:"Append notes with ..",rule_action_prepend_notes_choice:"Prepend notes with ..",rule_action_clear_notes_choice:"Remove any notes",rule_action_set_notes_choice:"Set notes to ..",rule_action_link_to_bill_choice:"Link to a bill ..",rule_action_convert_deposit_choice:"Convert the transaction to a deposit",rule_action_convert_withdrawal_choice:"Convert the transaction to a withdrawal",rule_action_convert_transfer_choice:"Convert the transaction to a transfer",placeholder:"[Placeholder]",recurrences:"Recurring transactions",title_expenses:"Expenses",title_withdrawal:"Expenses",title_revenue:"Revenue / income",pref_1D:"One day",pref_1W:"One week",pref_1M:"One month",pref_3M:"Three months (quarter)",pref_6M:"Six months",pref_1Y:"One year",repeat_freq_yearly:"yearly","repeat_freq_half-year":"every half-year",repeat_freq_quarterly:"quarterly",repeat_freq_monthly:"monthly",repeat_freq_weekly:"weekly",single_split:"Split",asset_accounts:"Asset accounts",expense_accounts:"Expense accounts",liabilities_accounts:"Liabilities",undefined_accounts:"Accounts",name:"Name",revenue_accounts:"Revenue accounts",description:"Description",category:"Category",title_deposit:"Revenue / income",title_transfer:"Transfers",title_transfers:"Transfers",piggyBanks:"Piggy banks",rules:"Rules",accounts:"Accounts",categories:"Categories",tags:"Tags",object_groups_page_title:"Groups",reports:"Reports",webhooks:"Webhooks",currencies:"Currencies",administration:"Administration",profile:"Profile",source_account:"Source account",destination_account:"Destination account",amount:"Amount",date:"Date",time:"Time",preferences:"Preferences",transactions:"Transactions",balance:"Balance",budgets:"Budgets",subscriptions:"Subscriptions",welcome_back:"What's playing?",bills_to_pay:"Bills to pay",net_worth:"Net worth",pref_last365:"Last year",pref_last90:"Last 90 days",pref_last30:"Last 30 days",pref_last7:"Last 7 days",pref_YTD:"Year to date",pref_QTD:"Quarter to date",pref_MTD:"Month to date"}},i={"en-US":o},c=(0,r.xr)((({app:e})=>{const t=(0,a.o)({locale:"en-US",messages:i});e.use(t)}))},3555:(e,t,n)=>{n.d(t,{S:()=>m});var r=n(7363),a=n(1776),o=n(7104),i=n(3637),c=n(444),s=n(6490),l=n(7164),d=n(3611),p=n(9739),u=n(5057),h=n(4453);const m=(0,r.Q_)("firefly-iii",{state:()=>({drawerState:!0,viewRange:"1M",listPageSize:10,locale:"en-US",range:{start:null,end:null},defaultRange:{start:null,end:null},currencyCode:"AAA",currencyId:"0",cacheKey:"initial"}),getters:{getViewRange(e){return e.viewRange},getLocale(e){return e.locale},getListPageSize(e){return e.listPageSize},getCurrencyCode(e){return e.currencyCode},getCurrencyId(e){return e.currencyId},getRange(e){return e.range},getDefaultRange(e){return e.defaultRange},getCacheKey(e){return e.cacheKey}},actions:{refreshCacheKey(){let e=Math.random().toString(36).replace(/[^a-z]+/g,"").slice(0,8);this.setCacheKey(e)},resetRange(){let e=this.defaultRange;this.setRange(e)},setDatesFromViewRange(){let e,t,n=this.viewRange,r=new Date;switch(n){case"last365":e=(0,a.Z)((0,o.Z)(r,365)),t=(0,i.Z)(r);break;case"last90":e=(0,a.Z)((0,o.Z)(r,90)),t=(0,i.Z)(r);break;case"last30":e=(0,a.Z)((0,o.Z)(r,30)),t=(0,i.Z)(r);break;case"last7":e=(0,a.Z)((0,o.Z)(r,7)),t=(0,i.Z)(r);break;case"YTD":e=(0,c.Z)(r),t=(0,i.Z)(r);break;case"QTD":e=(0,s.Z)(r),t=(0,i.Z)(r);break;case"MTD":e=(0,l.Z)(r),t=(0,i.Z)(r);break;case"1D":e=(0,a.Z)(r),t=(0,i.Z)(r);break;case"1W":e=(0,a.Z)((0,d.Z)(r,{weekStartsOn:1})),t=(0,i.Z)((0,p.Z)(r,{weekStartsOn:1}));break;case"1M":e=(0,a.Z)((0,l.Z)(r)),t=(0,i.Z)((0,u.Z)(r));break;case"3M":e=(0,a.Z)((0,s.Z)(r)),t=(0,i.Z)((0,h.Z)(r));break;case"6M":r.getMonth()<=5&&(e=new Date(r),e.setMonth(0),e.setDate(1),e=(0,a.Z)(e),t=new Date(r),t.setMonth(5),t.setDate(30),t=(0,i.Z)(e)),r.getMonth()>5&&(e=new Date(r),e.setMonth(6),e.setDate(1),e=(0,a.Z)(e),t=new Date(r),t.setMonth(11),t.setDate(31),t=(0,i.Z)(e));break;case"1Y":e=new Date(r),e.setMonth(0),e.setDate(1),e=(0,a.Z)(e),t=new Date(r),t.setMonth(11),t.setDate(31),t=(0,i.Z)(t);break}this.setRange({start:e,end:t}),this.setDefaultRange({start:e,end:t})},updateViewRange(e){this.viewRange=e},updateListPageSize(e){this.listPageSize=e},setLocale(e){this.locale=e},setRange(e){return this.range=e,e},setDefaultRange(e){this.defaultRange=e},setCurrencyCode(e){this.currencyCode=e},setCurrencyId(e){this.currencyId=e},setCacheKey(e){this.cacheKey=e}}})}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,n),o.exports}n.m=e,(()=>{var e=[];n.O=(t,r,a,o)=>{if(!r){var i=1/0;for(d=0;d=o)&&Object.keys(n.O).every((e=>n.O[e](r[s])))?r.splice(s--,1):(c=!1,o0&&e[d-1][2]>o;d--)e[d]=e[d-1];e[d]=[r,a,o]}})(),(()=>{n.n=e=>{var t=e&&e.__esModule?()=>e["default"]:()=>e;return n.d(t,{a:t}),t}})(),(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;n.t=function(r,a){if(1&a&&(r=this(r)),8&a)return r;if("object"===typeof r&&r){if(4&a&&r.__esModule)return r;if(16&a&&"function"===typeof r.then)return r}var o=Object.create(null);n.r(o);var i={};e=e||[null,t({}),t([]),t(t)];for(var c=2&a&&r;"object"==typeof c&&!~e.indexOf(c);c=t(c))Object.getOwnPropertyNames(c).forEach((e=>i[e]=()=>r[e]));return i["default"]=()=>r,n.d(o,i),o}})(),(()=>{n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}})(),(()=>{n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((t,r)=>(n.f[r](e,t),t)),[]))})(),(()=>{n.u=e=>"js/"+(3064===e?"chunk-common":e)+"."+{159:"849b2e88",607:"a7330a8c",753:"c47e29ea",936:"308ce395",990:"9f80994c",1019:"ebc4d223",1198:"cbaca816",1221:"bb21f046",1238:"744a7b52",1341:"e6d35593",1800:"73a958f8",1872:"235df0c5",2255:"106372da",2306:"accc86fe",2372:"0c493e6d",2382:"a6898a70",2769:"435f626d",2959:"859332ff",3064:"2a30b5d5",3576:"5e70097a",3611:"d383e2f1",3726:"efae2175",3912:"55920040",3922:"0d52278f",4036:"46dc453b",4216:"13049863",4355:"044e2646",4575:"6117a3b3",4647:"eb08255c",4670:"83bf8b86",4777:"315d9cdb",4799:"53ec814f",4918:"ac68d296",5114:"96732a35",5389:"83172589",5529:"dbcd5e10",5724:"a11c8347",6254:"16279dd8",6745:"426b85d7",7039:"7e8ac025",7073:"d2bf4ce4",7222:"f318969b",7232:"c2628686",7341:"eb42d75a",7450:"f34e8691",7493:"f0265108",7676:"a2a73fd6",7697:"84e1e5ec",7700:"8a677dfa",7889:"197b7788",7916:"085f15b4",8006:"ed33c726",8135:"8ac09b69",8490:"88c1c928",8493:"d667b5ff",8561:"1097efea",8659:"6dbd3a99",9052:"436e16fe",9053:"8c7cb7c1",9158:"887ce7fc",9173:"44a0bd7d",9253:"d541f5eb",9376:"b2fa7b33",9378:"81ba39c5",9381:"936c3132",9412:"a953a672",9432:"7c03632b",9729:"a64217d1",9814:"61040ecb"}[e]+".js"})(),(()=>{n.miniCssF=e=>{}})(),(()=>{n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()})(),(()=>{n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{var e={},t="firefly-iii:";n.l=(r,a,o,i)=>{if(e[r])e[r].push(a);else{var c,s;if(void 0!==o)for(var l=document.getElementsByTagName("script"),d=0;d{c.onerror=c.onload=null,clearTimeout(h);var a=e[r];if(delete e[r],c.parentNode&&c.parentNode.removeChild(c),a&&a.forEach((e=>e(n))),t)return t(n)},h=setTimeout(u.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=u.bind(null,c.onerror),c.onload=u.bind(null,c.onload),s&&document.head.appendChild(c)}}})(),(()=>{n.r=e=>{"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),(()=>{n.p="/v3/"})(),(()=>{var e={2143:0};n.f.j=(t,r)=>{var a=n.o(e,t)?e[t]:void 0;if(0!==a)if(a)r.push(a[2]);else{var o=new Promise(((n,r)=>a=e[t]=[n,r]));r.push(a[2]=o);var i=n.p+n.u(t),c=new Error,s=r=>{if(n.o(e,t)&&(a=e[t],0!==a&&(e[t]=void 0),a)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;c.message="Loading chunk "+t+" failed.\n("+o+": "+i+")",c.name="ChunkLoadError",c.type=o,c.request=i,a[1](c)}};n.l(i,s,"chunk-"+t,t)}},n.O.j=t=>0===e[t];var t=(t,r)=>{var a,o,[i,c,s]=r,l=0;if(i.some((t=>0!==e[t]))){for(a in c)n.o(c,a)&&(n.m[a]=c[a]);if(s)var d=s(n)}for(t&&t(r);ln(9894)));r=n.O(r)})(); \ No newline at end of file diff --git a/resources/assets/js/components/transactions/Bill.vue b/resources/assets/js/components/transactions/Bill.vue index 5b5df72cca..fd2daa8645 100644 --- a/resources/assets/js/components/transactions/Bill.vue +++ b/resources/assets/js/components/transactions/Bill.vue @@ -40,7 +40,7 @@ :value="cBill.id">{{ cBill.name }} -

+

  • {{ error }}
diff --git a/resources/assets/js/components/transactions/Budget.vue b/resources/assets/js/components/transactions/Budget.vue index 77e9738e44..1b538c4501 100644 --- a/resources/assets/js/components/transactions/Budget.vue +++ b/resources/assets/js/components/transactions/Budget.vue @@ -40,7 +40,7 @@ :value="cBudget.id">{{ cBudget.name }} -

+

  • {{ error }}
diff --git a/resources/assets/js/components/transactions/CreateTransaction.vue b/resources/assets/js/components/transactions/CreateTransaction.vue index 4f085f42e2..d16c16c1b6 100644 --- a/resources/assets/js/components/transactions/CreateTransaction.vue +++ b/resources/assets/js/components/transactions/CreateTransaction.vue @@ -529,7 +529,7 @@ export default { // if count is 0, send user onwards. if (this.createAnother) { // do message: - this.success_message = this.$t('firefly.transaction_stored_link', {ID: groupId, title: $(title).text()}); + this.success_message = this.$t('firefly.transaction_stored_link', {ID: groupId, title: this.escapeHTML(title)}); this.error_message = ''; if (this.resetFormAfter) { // also clear form. diff --git a/resources/assets/js/locales/es.json b/resources/assets/js/locales/es.json index 851e954385..79de0fc150 100644 --- a/resources/assets/js/locales/es.json +++ b/resources/assets/js/locales/es.json @@ -140,7 +140,7 @@ "internal_reference": "Referencia interna", "webhook_response": "Respuesta", "webhook_trigger": "Disparador", - "webhook_delivery": "Delivery" + "webhook_delivery": "Entrega" }, "list": { "active": "\u00bfEst\u00e1 Activo?", diff --git a/resources/assets/js/locales/zh-tw.json b/resources/assets/js/locales/zh-tw.json index 0b064ece7e..3ed953eaf6 100644 --- a/resources/assets/js/locales/zh-tw.json +++ b/resources/assets/js/locales/zh-tw.json @@ -19,9 +19,9 @@ "fire_webhooks_checkbox": "Fire webhooks", "no_budget_pointer": "You seem to have no budgets yet. You should create some on the budgets<\/a>-page. Budgets can help you keep track of expenses.", "no_bill_pointer": "You seem to have no bills yet. You should create some on the bills<\/a>-page. Bills can help you keep track of expenses.", - "source_account": "Source account", + "source_account": "\u4f86\u6e90\u5e33\u6236", "hidden_fields_preferences": "You can enable more transaction options in your preferences<\/a>.", - "destination_account": "Destination account", + "destination_account": "\u76ee\u6a19\u5e33\u6236", "add_another_split": "\u589e\u52a0\u62c6\u5206", "submission": "Submission", "create_another": "After storing, return here to create another one.", @@ -144,8 +144,8 @@ }, "list": { "active": "\u662f\u5426\u555f\u7528\uff1f", - "trigger": "Trigger", - "response": "Response", + "trigger": "\u89f8\u767c\u5668", + "response": "\u56de\u61c9", "delivery": "Delivery", "url": "URL", "secret": "Secret" diff --git a/resources/lang/bg_BG/firefly.php b/resources/lang/bg_BG/firefly.php index 1132804979..25182a7fd5 100644 --- a/resources/lang/bg_BG/firefly.php +++ b/resources/lang/bg_BG/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III v:version заявка за потвърждение', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/bg_BG/validation.php b/resources/lang/bg_BG/validation.php index 7f396ebd8c..dc32137b84 100644 --- a/resources/lang/bg_BG/validation.php +++ b/resources/lang/bg_BG/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Съдържанието на това поле е невалидно без информация за валута.', 'not_transfer_account' => 'Този акаунт не е акаунт, който може да се използва за прехвърляния.', 'require_currency_amount' => 'Съдържанието на това поле е невалидно без стойност в другата валута.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Описанието на транзакцията не трябва да е равно на общото описание.', 'file_invalid_mime' => 'Файлът ":name" е от тип ":mime", който не се приема за качване.', 'file_too_large' => 'Файлът ":name" е твърде голям.', diff --git a/resources/lang/ca_ES/firefly.php b/resources/lang/ca_ES/firefly.php index aa92d6ed00..6dedbe7a2e 100644 --- a/resources/lang/ca_ES/firefly.php +++ b/resources/lang/ca_ES/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visitar l\'URL del webhook', 'reset_webhook_secret' => 'Reiniciar el secret del webhook', 'webhook_stored_link' => 'S\'ha desat el Webook #{ID} ("{title}") correctament.', - 'webhook_updated_link' => 'S\'ha actualitzat el Webook #{ID} ("{title}").', + 'webhook_updated_link' => 'S\'ha actualitzat el Webook #{ID} ("{title}").', // API access 'authorization_request' => 'Firefly III v:version Sol·licitud d\'Autorització', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invitar nou usuari', 'invite_new_user_text' => 'Com a administrador, pots convidar usuaris a l\'administració de Firefly III. Amb aquest enllaç podran crear un compte. L\'usuari convidat, i el seu compte d\'invitació apareixeran a la taula inferior. Pots compartir l\'enllaç.', 'invited_user_mail' => 'Correu electrònic', diff --git a/resources/lang/ca_ES/validation.php b/resources/lang/ca_ES/validation.php index a5a867b293..149ae88149 100644 --- a/resources/lang/ca_ES/validation.php +++ b/resources/lang/ca_ES/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'El contingut d\'aquest camp no és vàlid sense informació de la moneda.', 'not_transfer_account' => 'Aquest compte no és un compte que puguis fer servir per transferències.', 'require_currency_amount' => 'El contingut d\'aquest camp no és vàlid sense informació de la quantitat estrangera.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'La descripció de la transacció no hauria de ser igual a la descripció global.', 'file_invalid_mime' => 'El fitxer ":name" és de tipus ":mime", el qual no s\'accepta com a pujada.', 'file_too_large' => 'El fitxer ":name" és massa gran.', diff --git a/resources/lang/cs_CZ/firefly.php b/resources/lang/cs_CZ/firefly.php index fd7a405bb5..c29e4d9930 100644 --- a/resources/lang/cs_CZ/firefly.php +++ b/resources/lang/cs_CZ/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Požadavek na ověření – Firefly III verze :version', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/cs_CZ/validation.php b/resources/lang/cs_CZ/validation.php index 63b67207a7..a5e400e97e 100644 --- a/resources/lang/cs_CZ/validation.php +++ b/resources/lang/cs_CZ/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Obsah tohoto pole je neplatný bez informace o měně.', 'not_transfer_account' => 'Tento účet není účet, který lze použít pro převody.', 'require_currency_amount' => 'Obsah tohoto pole je neplatný bez informace o měně.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Popis transakce nesmí být stejný jako globální popis.', 'file_invalid_mime' => 'Soubor ":name" je typu ":mime", který není schválen pro nahrání.', 'file_too_large' => 'Soubor ":name" je příliš velký.', diff --git a/resources/lang/da_DK/firefly.php b/resources/lang/da_DK/firefly.php index b309dc74cf..61e4c63e25 100644 --- a/resources/lang/da_DK/firefly.php +++ b/resources/lang/da_DK/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Besøg webhook-URL', 'reset_webhook_secret' => 'Nulstil webhook-hemmelighed', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III v:version Anmodning om Autorisation', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/da_DK/validation.php b/resources/lang/da_DK/validation.php index 383403e790..1ccdc6483b 100644 --- a/resources/lang/da_DK/validation.php +++ b/resources/lang/da_DK/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Indholdet af dette felt er ugyldigt uden møntfodsinformation.', 'not_transfer_account' => 'Denne konto kan ikke benyttes til overførsler.', 'require_currency_amount' => 'Indholdet af dette felt er ugyldigt uden information om det udenlandske beløb.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Overførselsbeskrivelse bør ikke være den samme som den generelle beskrivelse.', 'file_invalid_mime' => 'Filen ":name" er af typen ":mime", som ikke er gyldig som en ny upload.', 'file_too_large' => 'Filen ":name" er for stor.', diff --git a/resources/lang/de_DE/firefly.php b/resources/lang/de_DE/firefly.php index c4cb53fa20..32970c7898 100644 --- a/resources/lang/de_DE/firefly.php +++ b/resources/lang/de_DE/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Webhook-URL besuchen', 'reset_webhook_secret' => 'Webhook Secret zurücksetzen', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") wurde gespeichert.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") wurde aktualisiert.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") wurde aktualisiert.', // API access 'authorization_request' => 'Firefly III v:version Autorisierungsanfrage', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Neuen Nutzer einladen', 'invite_new_user_text' => 'Als Administrator können Sie Benutzer einladen, sich auf Ihrer Firefly III Administration zu registrieren. Über den direkten Link, den Sie mit ihnen teilen können, können diese ein Konto registrieren. Der eingeladene Benutzer und sein Einladungslink erscheinen in der unten stehenden Tabelle. Sie können den Einladungslink mit ihm teilen.', 'invited_user_mail' => 'E-Mail Adresse', diff --git a/resources/lang/de_DE/validation.php b/resources/lang/de_DE/validation.php index be6d677051..df809c47fe 100644 --- a/resources/lang/de_DE/validation.php +++ b/resources/lang/de_DE/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Der Inhalt dieses Feldes ist ohne Währungsinformationen ungültig.', 'not_transfer_account' => 'Dieses Konto ist kein Konto, welches für Buchungen genutzt werden kann.', 'require_currency_amount' => 'Der Inhalt dieses Feldes ist ohne Eingabe eines Betrags in Fremdwährung ungültig.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Die Transaktionsbeschreibung darf nicht der globalen Beschreibung entsprechen.', 'file_invalid_mime' => 'Die Datei „:name” ist vom Typ „:mime”, welcher nicht zum Hochladen zugelassen ist.', 'file_too_large' => 'Die Datei „:name” ist zu groß.', diff --git a/resources/lang/el_GR/firefly.php b/resources/lang/el_GR/firefly.php index 08b37099a2..9bd4ede741 100644 --- a/resources/lang/el_GR/firefly.php +++ b/resources/lang/el_GR/firefly.php @@ -47,9 +47,9 @@ return [ 'last_seven_days' => 'Τελευταίες επτά ημέρες', 'last_thirty_days' => 'Τελευταίες τριάντα ημέρες', 'last_180_days' => 'Τελευταίες 180 ημέρες', - 'month_to_date' => 'Από την αρχή του μήνα ως σήμερα', - 'year_to_date' => 'Από την αρχή του έτους ως σήμερα', - 'YTD' => 'Από την αρχή του έτους ως σήμερα', + 'month_to_date' => 'Μήνας μέχρι σήμερα', + 'year_to_date' => 'Έτος μέχρι σήμερα', + 'YTD' => 'ΤΡΕΧΟΝ ΕΤΟΣ', 'welcome_back' => 'Τι παίζει;', 'everything' => 'Όλα', 'today' => 'σήμερα', @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Επισκεφθείτε το URL του webhook', 'reset_webhook_secret' => 'Επαναφορά μυστικού webhook', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") έχει αποθηκευτεί.', - 'webhook_updated_link' => 'Το Webhook #{ID} ("{title}") έχει ενημερωθεί.', + 'webhook_updated_link' => 'Το Webhook #{ID} ("{title}") έχει ενημερωθεί.', // API access 'authorization_request' => 'Αίτημα Εξουσιοδότησης Firefly III v:version', @@ -1317,9 +1317,9 @@ return [ 'pref_last90' => 'Τελευταίες 90 ημέρες', 'pref_last30' => 'Τελευταίες 30 ημέρες', 'pref_last7' => 'Τελευταίες 7 ημέρες', - 'pref_YTD' => 'Από την αρχή του έτους ως σήμερα', - 'pref_QTD' => 'Από την αρχή του τριμήνου ως σήμερα', - 'pref_MTD' => 'Από τηνν αρχή του μήνα ως σήμερα', + 'pref_YTD' => 'Έτος μέχρι σήμερα', + 'pref_QTD' => 'Τρίμηνο μέχρι σήμερα', + 'pref_MTD' => 'Μήνας μέχρι σήμερα', 'pref_languages' => 'Γλώσσες', 'pref_locale' => 'Ρυθμίσεις τοποθεσίας', 'pref_languages_help' => 'Το Firefly III υποστηρίζει διάφορες γλώσσες. Ποιά προτιμάτε;', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', @@ -2409,12 +2411,12 @@ return [ 'admin_maintanance_title' => 'Συντήρηση', 'admin_maintanance_expl' => 'Μερικά ωραία κουμπιά για συντήρηση στο Firefly III', 'admin_maintenance_clear_cache' => 'Εκκαθάριση cache', - 'admin_notifications' => 'Admin notifications', + 'admin_notifications' => 'Ειδοποιήσεις διαχειριστή', 'admin_notifications_expl' => 'The following notifications can be enabled or disabled by the administrator. If you want to get these messages over Slack as well, set the "incoming webhook" URL.', 'admin_notification_check_user_new_reg' => 'User gets post-registration welcome message', 'admin_notification_check_admin_new_reg' => 'Administrator(s) get new user registration notification', - 'admin_notification_check_new_version' => 'A new version is available', - 'admin_notification_check_invite_created' => 'A user is invited to Firefly III', + 'admin_notification_check_new_version' => 'Μια νέα έκδοση είναι διαθέσιμη', + 'admin_notification_check_invite_created' => 'Ένας χρήστης θα λάβει πρόσκληση για το Firefly III', 'admin_notification_check_invite_redeemed' => 'A user invitation is redeemed', 'all_invited_users' => 'All invited users', 'save_notification_settings' => 'Save settings', @@ -2697,8 +2699,8 @@ return [ 'ale_action_update_transaction_type' => 'Changed transaction type', 'ale_action_update_notes' => 'Changed notes', 'ale_action_update_description' => 'Changed description', - 'ale_action_add_to_piggy' => 'Piggy bank', - 'ale_action_remove_from_piggy' => 'Piggy bank', + 'ale_action_add_to_piggy' => 'Κουμπαράς', + 'ale_action_remove_from_piggy' => 'Κουμπαράς', 'ale_action_add_tag' => 'Added tag', ]; diff --git a/resources/lang/el_GR/validation.php b/resources/lang/el_GR/validation.php index 3a6e2e4bad..7e91419029 100644 --- a/resources/lang/el_GR/validation.php +++ b/resources/lang/el_GR/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Το περιεχόμενο αυτού του πεδίου δεν είναι έγκυρη χωρίς νομισματικές πληροφορίες.', 'not_transfer_account' => 'Αυτός ο λογαριασμός δεν είναι λογαριασμός που μπορεί να χρησιμοποιηθεί για συναλλαγές.', 'require_currency_amount' => 'Το περιεχόμενο αυτού του πεδίου δεν είναι έγκυρο χωρίς πληροφορίες ετερόχθονος ποσού.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Η περιγραφή της συναλλαγής δεν πρέπει να ισούται με καθολική περιγραφή.', 'file_invalid_mime' => 'Το αρχείο ":name" είναι τύπου ":mime" που δεν είναι αποδεκτός ως νέας μεταφόρτωσης.', 'file_too_large' => 'Το αρχείο ":name" είναι πολύ μεγάλο.', diff --git a/resources/lang/en_GB/firefly.php b/resources/lang/en_GB/firefly.php index 9aaa8a2db3..2a1aaefd65 100644 --- a/resources/lang/en_GB/firefly.php +++ b/resources/lang/en_GB/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III v:version Authorisation Request', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/en_GB/validation.php b/resources/lang/en_GB/validation.php index caecd3e439..f2aea4f998 100644 --- a/resources/lang/en_GB/validation.php +++ b/resources/lang/en_GB/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'The content of this field is invalid without currency information.', 'not_transfer_account' => 'This account is not an account that can be used for transfers.', 'require_currency_amount' => 'The content of this field is invalid without foreign amount information.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Transaction description should not equal global description.', 'file_invalid_mime' => 'File ":name" is of type ":mime" which is not accepted as a new upload.', 'file_too_large' => 'File ":name" is too large.', diff --git a/resources/lang/en_US/firefly.php b/resources/lang/en_US/firefly.php index 5ddafd33b3..50583a1be6 100644 --- a/resources/lang/en_US/firefly.php +++ b/resources/lang/en_US/firefly.php @@ -270,7 +270,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III v:version Authorization Request', @@ -2274,6 +2274,8 @@ return [ // Ignore this comment // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/en_US/validation.php b/resources/lang/en_US/validation.php index 53f28bda3d..924831adc8 100644 --- a/resources/lang/en_US/validation.php +++ b/resources/lang/en_US/validation.php @@ -56,6 +56,7 @@ return [ 'require_currency_info' => 'The content of this field is invalid without currency information.', 'not_transfer_account' => 'This account is not an account that can be used for transfers.', 'require_currency_amount' => 'The content of this field is invalid without foreign amount information.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Transaction description should not equal global description.', 'file_invalid_mime' => 'File ":name" is of type ":mime" which is not accepted as a new upload.', 'file_too_large' => 'File ":name" is too large.', diff --git a/resources/lang/es_ES/firefly.php b/resources/lang/es_ES/firefly.php index fdda419ce3..b5d2913479 100644 --- a/resources/lang/es_ES/firefly.php +++ b/resources/lang/es_ES/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visita la URL del webhook', 'reset_webhook_secret' => 'Restablecer secreto del webhook', 'webhook_stored_link' => 'El webhook #{ID} ("{title}") ha sido almacenado.', - 'webhook_updated_link' => 'El webhook #{ID} ("{title}") ha sido actualizado.', + 'webhook_updated_link' => 'El webhook #{ID} ("{title}") ha sido actualizado.', // API access 'authorization_request' => 'Firefly III v:version Solicitud de autorización', @@ -495,159 +495,159 @@ return [ 'search_modifier_account_starts' => 'Cualquier cuenta comienza con ":value"', 'search_modifier_not_account_starts' => 'Ninguna cuenta comienza con ":value"', 'search_modifier_account_nr_is' => 'Número / IBAN de cualquier cuenta es ":value"', - 'search_modifier_not_account_nr_is' => 'Neither account number / IBAN is ":value"', + 'search_modifier_not_account_nr_is' => 'Ninguno de los números de cuenta / IBAN es ":value"', 'search_modifier_account_nr_contains' => 'Número de cuenta / IBAN de cualquier cuenta contiene ":value"', - 'search_modifier_not_account_nr_contains' => 'Neither account number / IBAN contains ":value"', + 'search_modifier_not_account_nr_contains' => 'Ninguno de los números de cuenta / IBAN contiene ":value"', 'search_modifier_account_nr_ends' => 'Número de cuenta / IBAN de cualquier cuenta termina con ":value"', - 'search_modifier_not_account_nr_ends' => 'Neither account number / IBAN ends with ":value"', + 'search_modifier_not_account_nr_ends' => 'Ninguno de los números de cuenta / IBAN termina con ":value"', 'search_modifier_account_nr_starts' => 'Número de cuenta / IBAN de cualquier cuenta empieza con ":value"', - 'search_modifier_not_account_nr_starts' => 'Neither account number / IBAN starts with ":value"', + 'search_modifier_not_account_nr_starts' => 'Ninguno de los números de cuenta / IBAN comienza con ":value"', 'search_modifier_category_contains' => 'La categoría contiene ":value"', - 'search_modifier_not_category_contains' => 'Category does not contain ":value"', - 'search_modifier_category_ends' => 'Category ends on ":value"', - 'search_modifier_not_category_ends' => 'Category does not end on ":value"', + 'search_modifier_not_category_contains' => 'La categoría no contiene ":value"', + 'search_modifier_category_ends' => 'La categoría termina en ":value"', + 'search_modifier_not_category_ends' => 'La categoría no termina en ":value"', 'search_modifier_category_starts' => 'La categoría comienza con ":value"', - 'search_modifier_not_category_starts' => 'Category does not start with ":value"', + 'search_modifier_not_category_starts' => 'La categoría no empieza con ":value"', 'search_modifier_budget_contains' => 'El presupuesto contiene ":value"', - 'search_modifier_not_budget_contains' => 'Budget does not contain ":value"', + 'search_modifier_not_budget_contains' => 'El presupuesto no contiene ":value"', 'search_modifier_budget_ends' => 'El presupuesto termina con ":value"', - 'search_modifier_not_budget_ends' => 'Budget does not end on ":value"', + 'search_modifier_not_budget_ends' => 'El presupuesto no termina en ":value"', 'search_modifier_budget_starts' => 'El presupuesto comienza con ":value"', - 'search_modifier_not_budget_starts' => 'Budget does not start with ":value"', + 'search_modifier_not_budget_starts' => 'El presupuesto no empieza con ":value"', 'search_modifier_bill_contains' => 'La factura contiene ":value"', - 'search_modifier_not_bill_contains' => 'Bill does not contain ":value"', + 'search_modifier_not_bill_contains' => 'La factura no contiene ":value"', 'search_modifier_bill_ends' => 'La factura termina con ":value"', - 'search_modifier_not_bill_ends' => 'Bill does not end on ":value"', + 'search_modifier_not_bill_ends' => 'La factura no termina en ":value"', 'search_modifier_bill_starts' => 'La factura comienza con ":value"', - 'search_modifier_not_bill_starts' => 'Bill does not start with ":value"', + 'search_modifier_not_bill_starts' => 'La factura no empieza con ":value"', 'search_modifier_external_id_contains' => 'La ID externa contiene ":value"', - 'search_modifier_not_external_id_contains' => 'External ID does not contain ":value"', + 'search_modifier_not_external_id_contains' => 'El ID externo no contiene ":value"', 'search_modifier_external_id_ends' => 'La ID externa termina con ":value"', - 'search_modifier_not_external_id_ends' => 'External ID does not end with ":value"', + 'search_modifier_not_external_id_ends' => 'El ID externo no termina en ":value"', 'search_modifier_external_id_starts' => 'La ID externa comienza con ":value"', - 'search_modifier_not_external_id_starts' => 'External ID does not start with ":value"', + 'search_modifier_not_external_id_starts' => 'El ID externo no empieza con ":value"', 'search_modifier_internal_reference_contains' => 'La referencia interna contiene ":value"', - 'search_modifier_not_internal_reference_contains' => 'Internal reference does not contain ":value"', + 'search_modifier_not_internal_reference_contains' => 'La referencia interna no contiene ":value"', 'search_modifier_internal_reference_ends' => 'La referencia interna termina con ":value"', 'search_modifier_internal_reference_starts' => 'La referencia interna comienza con ":value"', - 'search_modifier_not_internal_reference_ends' => 'Internal reference does not end with ":value"', - 'search_modifier_not_internal_reference_starts' => 'Internal reference does not start with ":value"', + 'search_modifier_not_internal_reference_ends' => 'La referencia interna no termina en ":value"', + 'search_modifier_not_internal_reference_starts' => 'La referencia interna no empieza con ":value"', 'search_modifier_external_url_is' => 'La URL externa es ":value"', - 'search_modifier_not_external_url_is' => 'External URL is not ":value"', + 'search_modifier_not_external_url_is' => 'La URL externa no es ":value"', 'search_modifier_external_url_contains' => 'La URL externa contiene ":value"', - 'search_modifier_not_external_url_contains' => 'External URL does not contain ":value"', + 'search_modifier_not_external_url_contains' => 'La URL externa no contiene ":value"', 'search_modifier_external_url_ends' => 'La URL externa termina con ":value"', - 'search_modifier_not_external_url_ends' => 'External URL does not end with ":value"', + 'search_modifier_not_external_url_ends' => 'La URL externa no termina en ":value"', 'search_modifier_external_url_starts' => 'La URL externa comienza con ":value"', - 'search_modifier_not_external_url_starts' => 'External URL does not start with ":value"', + 'search_modifier_not_external_url_starts' => 'La URL externa no empieza con ":value"', 'search_modifier_has_no_attachments' => 'La transacción no tiene archivos adjuntos', - 'search_modifier_not_has_no_attachments' => 'Transaction has attachments', - 'search_modifier_not_has_attachments' => 'Transaction has no attachments', - 'search_modifier_account_is_cash' => 'Either account is the "(cash)" account.', - 'search_modifier_not_account_is_cash' => 'Neither account is the "(cash)" account.', + 'search_modifier_not_has_no_attachments' => 'La transacción tiene archivos adjuntos', + 'search_modifier_not_has_attachments' => 'La transacción no tiene archivos adjuntos', + 'search_modifier_account_is_cash' => 'Cualquier cuenta es la cuenta de efectivo.', + 'search_modifier_not_account_is_cash' => 'Ninguna cuenta es la cuenta de efectivo.', 'search_modifier_journal_id' => 'La ID del registro es ":value"', - 'search_modifier_not_journal_id' => 'The journal ID is not ":value"', + 'search_modifier_not_journal_id' => 'La ID del registro no es ":value"', 'search_modifier_recurrence_id' => 'El ID de transacción recurrente es ":value"', - 'search_modifier_not_recurrence_id' => 'The recurring transaction ID is not ":value"', + 'search_modifier_not_recurrence_id' => 'El ID de transacción recurrente no es ":value"', 'search_modifier_foreign_amount_is' => 'La cantidad en divisa extranjera es ":value"', - 'search_modifier_not_foreign_amount_is' => 'The foreign amount is not ":value"', + 'search_modifier_not_foreign_amount_is' => 'La cantidad en divisa extranjera no es ":value"', 'search_modifier_foreign_amount_less' => 'La cantidad en divisa extranjera es menor que ":value"', - 'search_modifier_not_foreign_amount_more' => 'The foreign amount is less than ":value"', - 'search_modifier_not_foreign_amount_less' => 'The foreign amount is more than ":value"', + 'search_modifier_not_foreign_amount_more' => 'La cantidad en divisa extranjera es menor que ":value"', + 'search_modifier_not_foreign_amount_less' => 'La cantidad en divisa extranjera es superior a ":value"', 'search_modifier_foreign_amount_more' => 'La cantidad en divisa extranjera es superior a ":value"', - 'search_modifier_exists' => 'Transaction exists (any transaction)', - 'search_modifier_not_exists' => 'Transaction does not exist (no transaction)', + 'search_modifier_exists' => 'La transacción existe (cualquier transacción)', + 'search_modifier_not_exists' => 'La transacción no existe (ninguna transacción)', // date fields 'search_modifier_interest_date_on' => 'La fecha de interés de la transacción es ":value"', - 'search_modifier_not_interest_date_on' => 'Transaction interest date is not ":value"', + 'search_modifier_not_interest_date_on' => 'La fecha de interés de la transacción no es ":value"', 'search_modifier_interest_date_on_year' => 'La fecha de interés de la transacción es en el año ":value"', - 'search_modifier_not_interest_date_on_year' => 'Transaction interest date is not in year ":value"', + 'search_modifier_not_interest_date_on_year' => 'La fecha de interés de la transacción no es en el año ":value"', 'search_modifier_interest_date_on_month' => 'La fecha de interés de la transacción es en el mes ":value"', - 'search_modifier_not_interest_date_on_month' => 'Transaction interest date is not in month ":value"', + 'search_modifier_not_interest_date_on_month' => 'La fecha de interés de la transacción no es en el mes ":value"', 'search_modifier_interest_date_on_day' => 'La fecha de interés de la transacción es en el día ":value"', - 'search_modifier_not_interest_date_on_day' => 'Transaction interest date is not on day of month ":value"', + 'search_modifier_not_interest_date_on_day' => 'La fecha de interés de la transacción no es en el día del mes ":value"', 'search_modifier_interest_date_before_year' => 'El año de interés de la transacción es anterior o igual a ":value"', - 'search_modifier_interest_date_before_month' => 'Transaction interest date is before or in month ":value"', - 'search_modifier_interest_date_before_day' => 'Transaction interest date is before or on day of month ":value"', - 'search_modifier_interest_date_after_year' => 'Transaction interest date is after or in year ":value"', - 'search_modifier_interest_date_after_month' => 'Transaction interest date is after or in month ":value"', - 'search_modifier_interest_date_after_day' => 'Transaction interest date is after or on day of month ":value"', - 'search_modifier_book_date_on_year' => 'Transaction book date is in year ":value"', - 'search_modifier_book_date_on_month' => 'Transaction book date is in month ":value"', - 'search_modifier_book_date_on_day' => 'Transaction book date is on day of month ":value"', - 'search_modifier_not_book_date_on_year' => 'Transaction book date is not in year ":value"', - 'search_modifier_not_book_date_on_month' => 'Transaction book date is not in month ":value"', - 'search_modifier_not_book_date_on_day' => 'Transaction book date is not on day of month ":value"', - 'search_modifier_book_date_before_year' => 'Transaction book date is before or in year ":value"', - 'search_modifier_book_date_before_month' => 'Transaction book date is before or in month ":value"', - 'search_modifier_book_date_before_day' => 'Transaction book date is before or on day of month ":value"', - 'search_modifier_book_date_after_year' => 'Transaction book date is after or in year ":value"', - 'search_modifier_book_date_after_month' => 'Transaction book date is after or in month ":value"', - 'search_modifier_book_date_after_day' => 'Transaction book date is after or on day of month ":value"', - 'search_modifier_process_date_on_year' => 'Transaction process date is in year ":value"', - 'search_modifier_process_date_on_month' => 'Transaction process date is in month ":value"', - 'search_modifier_process_date_on_day' => 'Transaction process date is on day of month ":value"', - 'search_modifier_not_process_date_on_year' => 'Transaction process date is not in year ":value"', - 'search_modifier_not_process_date_on_month' => 'Transaction process date is not in month ":value"', - 'search_modifier_not_process_date_on_day' => 'Transaction process date is not on day of month ":value"', - 'search_modifier_process_date_before_year' => 'Transaction process date is before or in year ":value"', - 'search_modifier_process_date_before_month' => 'Transaction process date is before or in month ":value"', - 'search_modifier_process_date_before_day' => 'Transaction process date is before or on day of month ":value"', - 'search_modifier_process_date_after_year' => 'Transaction process date is after or in year ":value"', - 'search_modifier_process_date_after_month' => 'Transaction process date is after or in month ":value"', - 'search_modifier_process_date_after_day' => 'Transaction process date is after or on day of month ":value"', - 'search_modifier_due_date_on_year' => 'Transaction due date is in year ":value"', - 'search_modifier_due_date_on_month' => 'Transaction due date is in month ":value"', - 'search_modifier_due_date_on_day' => 'Transaction due date is on day of month ":value"', - 'search_modifier_not_due_date_on_year' => 'Transaction due date is not in year ":value"', - 'search_modifier_not_due_date_on_month' => 'Transaction due date is not in month ":value"', - 'search_modifier_not_due_date_on_day' => 'Transaction due date is not on day of month ":value"', - 'search_modifier_due_date_before_year' => 'Transaction due date is before or in year ":value"', - 'search_modifier_due_date_before_month' => 'Transaction due date is before or in month ":value"', - 'search_modifier_due_date_before_day' => 'Transaction due date is before or on day of month ":value"', - 'search_modifier_due_date_after_year' => 'Transaction due date is after or in year ":value"', - 'search_modifier_due_date_after_month' => 'Transaction due date is after or in month ":value"', - 'search_modifier_due_date_after_day' => 'Transaction due date is after or on day of month ":value"', - 'search_modifier_payment_date_on_year' => 'Transaction payment date is in year ":value"', - 'search_modifier_payment_date_on_month' => 'Transaction payment date is in month ":value"', - 'search_modifier_payment_date_on_day' => 'Transaction payment date is on day of month ":value"', - 'search_modifier_not_payment_date_on_year' => 'Transaction payment date is not in year ":value"', - 'search_modifier_not_payment_date_on_month' => 'Transaction payment date is not in month ":value"', - 'search_modifier_not_payment_date_on_day' => 'Transaction payment date is not on day of month ":value"', - 'search_modifier_payment_date_before_year' => 'Transaction payment date is before or in year ":value"', - 'search_modifier_payment_date_before_month' => 'Transaction payment date is before or in month ":value"', - 'search_modifier_payment_date_before_day' => 'Transaction payment date is before or on day of month ":value"', - 'search_modifier_payment_date_after_year' => 'Transaction payment date is after or in year ":value"', - 'search_modifier_payment_date_after_month' => 'Transaction payment date is after or in month ":value"', - 'search_modifier_payment_date_after_day' => 'Transaction payment date is after or on day of month ":value"', - 'search_modifier_invoice_date_on_year' => 'Transaction invoice date is in year ":value"', - 'search_modifier_invoice_date_on_month' => 'Transaction invoice date is in month ":value"', - 'search_modifier_invoice_date_on_day' => 'Transaction invoice date is on day of month ":value"', - 'search_modifier_not_invoice_date_on_year' => 'Transaction invoice date is not in year ":value"', - 'search_modifier_not_invoice_date_on_month' => 'Transaction invoice date is not in month ":value"', - 'search_modifier_not_invoice_date_on_day' => 'Transaction invoice date is not on day of month ":value"', - 'search_modifier_invoice_date_before_year' => 'Transaction invoice date is before or in year ":value"', - 'search_modifier_invoice_date_before_month' => 'Transaction invoice date is before or in month ":value"', - 'search_modifier_invoice_date_before_day' => 'Transaction invoice date is before or on day of month ":value"', - 'search_modifier_invoice_date_after_year' => 'Transaction invoice date is after or in year ":value"', - 'search_modifier_invoice_date_after_month' => 'Transaction invoice date is after or in month ":value"', - 'search_modifier_invoice_date_after_day' => 'Transaction invoice date is after or on day of month ":value"', + 'search_modifier_interest_date_before_month' => 'La fecha de interés de la transacción es anterior o en el mes ":value"', + 'search_modifier_interest_date_before_day' => 'La fecha de interés de la transacción es anterior o en el día del mes ":value"', + 'search_modifier_interest_date_after_year' => 'La fecha de interés de la transacción es posterior o en el año ":value"', + 'search_modifier_interest_date_after_month' => 'La fecha de interés de la transacción es posterior o en el mes ":value"', + 'search_modifier_interest_date_after_day' => 'La fecha de interés de la transacción es posterior o el día del mes ":value"', + 'search_modifier_book_date_on_year' => 'La fecha del registro de la transacción es en el año ":value"', + 'search_modifier_book_date_on_month' => 'La fecha del registro de la transacción es en el mes ":value"', + 'search_modifier_book_date_on_day' => 'La fecha del registro de la transacción es en el día del mes ":value"', + 'search_modifier_not_book_date_on_year' => 'La fecha del registro de la transacción no es en el año ":value"', + 'search_modifier_not_book_date_on_month' => 'La fecha del registro de la transacción no es en el mes ":value"', + 'search_modifier_not_book_date_on_day' => 'La fecha del registro de la transacción no es en el día del mes ":value"', + 'search_modifier_book_date_before_year' => 'La fecha del registro de la transacción es antes o en el año ":value"', + 'search_modifier_book_date_before_month' => 'La fecha del registro de la transacción es antes o en el mes ":value"', + 'search_modifier_book_date_before_day' => 'La fecha de registro de la transacción es anterior o en el día del mes ":value"', + 'search_modifier_book_date_after_year' => 'La fecha del registro de la transacción es después o en el año ":value"', + 'search_modifier_book_date_after_month' => 'La fecha del registro de la transacción es después o en el mes ":value"', + 'search_modifier_book_date_after_day' => 'La fecha de registro de la transacción es después o en el día del mes ":value"', + 'search_modifier_process_date_on_year' => 'La fecha del proceso de transacción es el año ":value"', + 'search_modifier_process_date_on_month' => 'La fecha del proceso de transacción es en el mes ":value"', + 'search_modifier_process_date_on_day' => 'La fecha del proceso de transacción es el día del mes ":value"', + 'search_modifier_not_process_date_on_year' => 'La fecha del proceso de transacción no es el año ":value"', + 'search_modifier_not_process_date_on_month' => 'La fecha del proceso de transacción no es en el mes ":value"', + 'search_modifier_not_process_date_on_day' => 'La fecha del proceso de transacción no es el día del mes ":value"', + 'search_modifier_process_date_before_year' => 'La fecha del proceso de la transacción es antes o en el año ":value"', + 'search_modifier_process_date_before_month' => 'La fecha del proceso de la transacción es antes o en el mes ":value"', + 'search_modifier_process_date_before_day' => 'La fecha de proceso de la transacción es anterior o en el día del mes ":value"', + 'search_modifier_process_date_after_year' => 'La fecha del proceso de la transacción es después o en el año ":value"', + 'search_modifier_process_date_after_month' => 'La fecha del proceso de la transacción es después o en el mes ":value"', + 'search_modifier_process_date_after_day' => 'La fecha de proceso de la transacción es después o en el día del mes ":value"', + 'search_modifier_due_date_on_year' => 'La fecha de vencimiento de la transacción es en el año ":value"', + 'search_modifier_due_date_on_month' => 'La fecha del vencimiento de la transacción es en el mes ":value"', + 'search_modifier_due_date_on_day' => 'La fecha del vencimiento de la transacción es en el día del mes ":value"', + 'search_modifier_not_due_date_on_year' => 'La fecha del vencimiento de la transacción no es en el año ":value"', + 'search_modifier_not_due_date_on_month' => 'La fecha del vencimiento de la transacción no es en el mes ":value"', + 'search_modifier_not_due_date_on_day' => 'La fecha del vencimiento de la transacción no es en el día del mes ":value"', + 'search_modifier_due_date_before_year' => 'La fecha de vencimiento de la transacción es antes o en el año ":value"', + 'search_modifier_due_date_before_month' => 'La fecha de vencimiento de la transacción es antes o en el mes ":value"', + 'search_modifier_due_date_before_day' => 'La fecha de vencimiento de la transacción es anterior o en el día del mes ":value"', + 'search_modifier_due_date_after_year' => 'La fecha del vencimiento de la transacción es después o en el año ":value"', + 'search_modifier_due_date_after_month' => 'La fecha del vencimiento de la transacción es después o en el mes ":value"', + 'search_modifier_due_date_after_day' => 'La fecha de vencimiento de la transacción es después o en el día del mes ":value"', + 'search_modifier_payment_date_on_year' => 'La fecha de pago de la transacción es en el año ":value"', + 'search_modifier_payment_date_on_month' => 'La fecha de pago de la transacción es en el mes ":value"', + 'search_modifier_payment_date_on_day' => 'La fecha de pago de la transacción es el día del mes ":value"', + 'search_modifier_not_payment_date_on_year' => 'La fecha de pago de la transacción no es en el año ":value"', + 'search_modifier_not_payment_date_on_month' => 'La fecha de pago de la transacción no es en el mes ":value"', + 'search_modifier_not_payment_date_on_day' => 'La fecha de pago de la transacción no es el día del mes ":value"', + 'search_modifier_payment_date_before_year' => 'La fecha de pago de la transacción es antes o en el año ":value"', + 'search_modifier_payment_date_before_month' => 'La fecha de pago de la transacción es antes o en el mes ":value"', + 'search_modifier_payment_date_before_day' => 'La fecha de pago de la transacción es anterior o en el día del mes ":value"', + 'search_modifier_payment_date_after_year' => 'La fecha de pago de la transacción es después o en el año ":value"', + 'search_modifier_payment_date_after_month' => 'La fecha de pago de la transacción es después o en el mes ":value"', + 'search_modifier_payment_date_after_day' => 'La fecha de pago de la transacción es después o en el día del mes ":value"', + 'search_modifier_invoice_date_on_year' => 'La fecha de facturación de la transacción es en el año ":value"', + 'search_modifier_invoice_date_on_month' => 'La fecha de facturación de la transacción es en el mes ":value"', + 'search_modifier_invoice_date_on_day' => 'La fecha de facturación de la transacción es en el día ":value"', + 'search_modifier_not_invoice_date_on_year' => 'La fecha de facturación de la transacción no es en el año ":value"', + 'search_modifier_not_invoice_date_on_month' => 'La fecha de facturación de la transacción es en el mes ":value"', + 'search_modifier_not_invoice_date_on_day' => 'La fecha de facturación de la transacción no es en el día del mes ":value"', + 'search_modifier_invoice_date_before_year' => 'La fecha de facturación de la transacción es antes o en el año ":value"', + 'search_modifier_invoice_date_before_month' => 'La fecha de facturación de la transacción es antes o en el mes ":value"', + 'search_modifier_invoice_date_before_day' => 'La fecha de facturación de la transacción es anterior o en el día del mes ":value"', + 'search_modifier_invoice_date_after_year' => 'La fecha de facturación de la transacción es después o en el año ":value"', + 'search_modifier_invoice_date_after_month' => 'La fecha de facturación de la transacción es después o en el mes ":value"', + 'search_modifier_invoice_date_after_day' => 'La fecha de facturación de la transacción es después o en el día del mes ":value"', // other dates - 'search_modifier_updated_at_on_year' => 'Transaction was last updated in year ":value"', - 'search_modifier_updated_at_on_month' => 'Transaction was last updated in month ":value"', - 'search_modifier_updated_at_on_day' => 'Transaction was last updated on day of month ":value"', - 'search_modifier_not_updated_at_on_year' => 'Transaction was not last updated in year ":value"', - 'search_modifier_not_updated_at_on_month' => 'Transaction was not last updated in month ":value"', - 'search_modifier_not_updated_at_on_day' => 'Transaction was not last updated on day of month ":value"', - 'search_modifier_updated_at_before_year' => 'Transaction was last updated in or before year ":value"', - 'search_modifier_updated_at_before_month' => 'Transaction was last updated in or before month ":value"', - 'search_modifier_updated_at_before_day' => 'Transaction was last updated on or before day of month ":value"', - 'search_modifier_updated_at_after_year' => 'Transaction was last updated in or after year ":value"', - 'search_modifier_updated_at_after_month' => 'Transaction was last updated in or after month ":value"', - 'search_modifier_updated_at_after_day' => 'Transaction was last updated on or after day of month ":value"', - 'search_modifier_created_at_on_year' => 'Transaction was created in year ":value"', - 'search_modifier_created_at_on_month' => 'Transaction was created in month ":value"', + 'search_modifier_updated_at_on_year' => 'La transacción fue actualizada por última vez en el año":value"', + 'search_modifier_updated_at_on_month' => 'La transacción fue actualizada por última vez en el mes ":value"', + 'search_modifier_updated_at_on_day' => 'La transacción fue actualizada por última vez en el día del mes: ":value"', + 'search_modifier_not_updated_at_on_year' => 'La transacción no fue actualizada por última vez en el año":value"', + 'search_modifier_not_updated_at_on_month' => 'La transacción no fue actualizada por última vez en el mes ":value"', + 'search_modifier_not_updated_at_on_day' => 'La transacción no fue actualizada por última vez en el día del mes ":value"', + 'search_modifier_updated_at_before_year' => 'La transacción fue actualizada por última vez en o antes del año":value"', + 'search_modifier_updated_at_before_month' => 'La transacción se actualizó por última vez en o antes del mes ":value"', + 'search_modifier_updated_at_before_day' => 'La transacción se actualizó por última vez en o antes del día del mes ":value"', + 'search_modifier_updated_at_after_year' => 'La transacción se actualizó por última vez en o después del año ":value"', + 'search_modifier_updated_at_after_month' => 'La transacción se actualizó por última vez en o después del mes ":value"', + 'search_modifier_updated_at_after_day' => 'La transacción se actualizó por última vez en o después día del mes ":value"', + 'search_modifier_created_at_on_year' => 'La transacción fue creada en el año":value"', + 'search_modifier_created_at_on_month' => 'La transacción fue creada en el mes ":value"', 'search_modifier_created_at_on_day' => 'Transaction was created on day of month ":value"', 'search_modifier_not_created_at_on_year' => 'Transaction was not created in year ":value"', 'search_modifier_not_created_at_on_month' => 'Transaction was not created in month ":value"', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', @@ -2413,12 +2415,12 @@ return [ 'admin_notifications_expl' => 'The following notifications can be enabled or disabled by the administrator. If you want to get these messages over Slack as well, set the "incoming webhook" URL.', 'admin_notification_check_user_new_reg' => 'User gets post-registration welcome message', 'admin_notification_check_admin_new_reg' => 'Administrator(s) get new user registration notification', - 'admin_notification_check_new_version' => 'A new version is available', - 'admin_notification_check_invite_created' => 'A user is invited to Firefly III', - 'admin_notification_check_invite_redeemed' => 'A user invitation is redeemed', - 'all_invited_users' => 'All invited users', - 'save_notification_settings' => 'Save settings', - 'notification_settings_saved' => 'The notification settings have been saved', + 'admin_notification_check_new_version' => 'Una nueva versión está disponible', + 'admin_notification_check_invite_created' => 'Un usuario ha sido invitado a Firefly III', + 'admin_notification_check_invite_redeemed' => 'Una invitación de usuario ha sido canjeada', + 'all_invited_users' => 'Todos los usuarios invitados', + 'save_notification_settings' => 'Guardar ajustes', + 'notification_settings_saved' => 'Se han guardado los ajustes de notificación', 'split_transaction_title' => 'Descripción de la transacción dividida', @@ -2565,8 +2567,8 @@ return [ 'no_bills_create_default' => 'Crear una factura', // recurring transactions - 'create_right_now' => 'Create right now', - 'no_new_transaction_in_recurrence' => 'No new transaction was created. Perhaps it was already fired for this date?', + 'create_right_now' => 'Crear ahora mismo', + 'no_new_transaction_in_recurrence' => 'No se ha creado ninguna nueva transacción. ¿Tal vez ya ha sido lanzada para esta fecha?', 'recurrences' => 'Transacciones Recurrentes', 'repeat_until_in_past' => 'Esta transacción recurrente dejó de repetirse el :date.', 'recurring_calendar_view' => 'Calendario', @@ -2681,25 +2683,25 @@ return [ 'placeholder' => '[Placeholder]', // audit log entries - 'audit_log_entries' => 'Audit log entries', - 'ale_action_log_add' => 'Added :amount to piggy bank ":name"', - 'ale_action_log_remove' => 'Removed :amount from piggy bank ":name"', - 'ale_action_clear_budget' => 'Removed from budget', - 'ale_action_clear_category' => 'Removed from category', - 'ale_action_clear_notes' => 'Removed notes', - 'ale_action_clear_tag' => 'Cleared tag', - 'ale_action_clear_all_tags' => 'Cleared all tags', - 'ale_action_set_bill' => 'Linked to bill', - 'ale_action_set_budget' => 'Set budget', - 'ale_action_set_category' => 'Set category', - 'ale_action_set_source' => 'Set source account', - 'ale_action_set_destination' => 'Set destination account', - 'ale_action_update_transaction_type' => 'Changed transaction type', - 'ale_action_update_notes' => 'Changed notes', - 'ale_action_update_description' => 'Changed description', - 'ale_action_add_to_piggy' => 'Piggy bank', - 'ale_action_remove_from_piggy' => 'Piggy bank', - 'ale_action_add_tag' => 'Added tag', + 'audit_log_entries' => 'Auditoría de entradas de registro', + 'ale_action_log_add' => 'Añadido :amount a la hucha ":name"', + 'ale_action_log_remove' => 'Eliminado :amount de la hucha ":name"', + 'ale_action_clear_budget' => 'Eliminado del presupuesto', + 'ale_action_clear_category' => 'Eliminado de la categoría', + 'ale_action_clear_notes' => 'Notas eliminadas', + 'ale_action_clear_tag' => 'Etiqueta limpiada', + 'ale_action_clear_all_tags' => 'Limpiar todas las etiquetas', + 'ale_action_set_bill' => 'Vinculado a la factura', + 'ale_action_set_budget' => 'Establecer presupuesto', + 'ale_action_set_category' => 'Establecer categoría', + 'ale_action_set_source' => 'Establecer cuenta de origen', + 'ale_action_set_destination' => 'Establecer cuenta de destino', + 'ale_action_update_transaction_type' => 'Tipo de transacción cambiado', + 'ale_action_update_notes' => 'Notas cambiadas', + 'ale_action_update_description' => 'Descripción cambiada', + 'ale_action_add_to_piggy' => 'Hucha', + 'ale_action_remove_from_piggy' => 'Hucha', + 'ale_action_add_tag' => 'Etiqueta añadida', ]; diff --git a/resources/lang/es_ES/form.php b/resources/lang/es_ES/form.php index bbae7d6526..e2bf480009 100644 --- a/resources/lang/es_ES/form.php +++ b/resources/lang/es_ES/form.php @@ -150,7 +150,7 @@ return [ 'start' => 'Inicio del rango', 'end' => 'Final del rango', 'delete_account' => 'Borrar cuenta ":name"', - 'delete_webhook' => 'Delete webhook ":title"', + 'delete_webhook' => 'Eliminar webhook ":title"', 'delete_bill' => 'Eliminar factura ":name"', 'delete_budget' => 'Eliminar presupuesto ":name"', 'delete_category' => 'Eliminar categoría ":name"', @@ -171,7 +171,7 @@ return [ 'object_group_areYouSure' => '¿Seguro que quieres eliminar el grupo titulado ":title"?', 'ruleGroup_areYouSure' => '¿Seguro que quieres eliminar el grupo de reglas titulado ":title"?', 'budget_areYouSure' => '¿Seguro que quieres eliminar el presupuesto llamado ":name"?', - 'webhook_areYouSure' => 'Are you sure you want to delete the webhook named ":title"?', + 'webhook_areYouSure' => '¿Seguro que quieres eliminar el webhook llamado ":title"?', 'category_areYouSure' => '¿Seguro que quieres eliminar la categoría llamada ":name"?', 'recurring_areYouSure' => '¿Está seguro de que desea eliminar la transacción recurrente ":title"?', 'currency_areYouSure' => '¿Está seguro que desea eliminar la moneda denominada ":name"?', @@ -299,7 +299,7 @@ return [ 'submitted' => 'Enviado', 'key' => 'Clave', 'value' => 'Contenido del registro', - 'webhook_delivery' => 'Delivery', + 'webhook_delivery' => 'Entrega', 'webhook_response' => 'Respuesta', 'webhook_trigger' => 'Disparador', ]; diff --git a/resources/lang/es_ES/validation.php b/resources/lang/es_ES/validation.php index 9a00f1ecaf..0572aef1e9 100644 --- a/resources/lang/es_ES/validation.php +++ b/resources/lang/es_ES/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'El contenido de este campo no es válido sin la información montearia.', 'not_transfer_account' => 'Esta cuenta no es una cuenta que se pueda utilizar para transferencias.', 'require_currency_amount' => 'El contenido de este campo no es válido sin información de cantidad extranjera.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'La descripción de la transacción no debería ser igual a la descripción global.', 'file_invalid_mime' => 'El archivo ":name" es de tipo ":mime", el cual no se acepta.', 'file_too_large' => 'El archivo ":name" es demasiado grande.', @@ -166,8 +167,8 @@ return [ 'unique_piggy_bank_for_user' => 'En nombre de la hucha debe ser único.', 'unique_object_group' => 'El nombre del grupo debe ser único', 'starts_with' => 'El valor debe comenzar con :values.', - 'unique_webhook' => 'You already have a webhook with this combination of URL, trigger, response and delivery.', - 'unique_existing_webhook' => 'You already have another webhook with this combination of URL, trigger, response and delivery.', + 'unique_webhook' => 'Ya tiene un webhook con esta combinación de URL, activador, respuesta y entrega.', + 'unique_existing_webhook' => 'Ya tiene otro webhook con esta combinación de URL, activador, respuesta y entrega.', 'same_account_type' => 'Ambas cuentas deben ser del mismo tipo de cuenta', 'same_account_currency' => 'Ambas cuentas deben tener la misma configuración de moneda', @@ -231,7 +232,7 @@ return [ 'withdrawal_dest_need_data' => 'Necesita obtener un ID de cuenta de destino válido y/o nombre de cuenta de destino válido para continuar.', 'withdrawal_dest_bad_data' => 'No se pudo encontrar una cuenta de destino válida buscando ID ":id" o nombre ":name".', - 'reconciliation_source_bad_data' => 'Could not find a valid reconciliation account when searching for ID ":id" or name ":name".', + 'reconciliation_source_bad_data' => 'No se ha podido encontrar una cuenta de reconciliación válida al buscar por ID ":id" o nombre ":name".', 'generic_source_bad_data' => 'No se pudo encontrar una cuenta de origen válida al buscar el ID ":id" o nombre ":name".', @@ -263,7 +264,7 @@ return [ 'lc_source_need_data' => 'Necesita obtener un ID de cuenta de origen válido para continuar.', 'ob_dest_need_data' => 'Necesita obtener un ID de cuenta de destino válido y/o nombre de cuenta de destino válido para continuar.', 'ob_dest_bad_data' => 'No se pudo encontrar una cuenta de destino válida buscando ID ":id" o nombre ":name".', - 'reconciliation_either_account' => 'To submit a reconciliation, you must submit either a source or a destination account. Not both, not neither.', + 'reconciliation_either_account' => 'Para enviar una reconciliación, debe enviar una cuenta de origen o de destino. Ni ambas ni ninguna de las dos.', 'generic_invalid_source' => 'No puedes usar esta cuenta como cuenta de origen.', 'generic_invalid_destination' => 'No puede usar esta cuenta como cuenta de destino.', diff --git a/resources/lang/fi_FI/firefly.php b/resources/lang/fi_FI/firefly.php index 768b7bb791..75e9543aea 100644 --- a/resources/lang/fi_FI/firefly.php +++ b/resources/lang/fi_FI/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III v:version Valtuutus Pyyntö', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/fi_FI/validation.php b/resources/lang/fi_FI/validation.php index 6ab87fe51e..cdb4c01e02 100644 --- a/resources/lang/fi_FI/validation.php +++ b/resources/lang/fi_FI/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Ilman valuuttatietoa tämän kentän sisältö on virheellinen.', 'not_transfer_account' => 'Tätä tiliä ei voi käyttää siirroissa.', 'require_currency_amount' => 'Tämän kentän sisältö on virheellinen ilman ulkomaanvaluuttatietoa.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Tapahtuman kuvaus ei saisi olla sama kuin yleiskuvaus.', 'file_invalid_mime' => 'Lähetettävän tiedoston ":name" tyyppi ei voi olla ":mime".', 'file_too_large' => 'Tiedoston ":name" koko on liian suuri.', diff --git a/resources/lang/fr_FR/firefly.php b/resources/lang/fr_FR/firefly.php index c5de0e352b..e0ce3e8adf 100644 --- a/resources/lang/fr_FR/firefly.php +++ b/resources/lang/fr_FR/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visiter l\'URL du webhook', 'reset_webhook_secret' => 'Réinitialiser le secret du webhook', 'webhook_stored_link' => 'Le Webhook #{ID} ("{title}") a été enregistré.', - 'webhook_updated_link' => 'Le webhook #{ID} ("{title}") a été mis à jour.', + 'webhook_updated_link' => 'Le webhook #{ID} ("{title}") a été mis à jour.', // API access 'authorization_request' => 'Firefly III v:version demande d\'autorisation', @@ -1379,12 +1379,12 @@ return [ 'optional_field_attachments' => 'Pièces jointes', 'optional_field_meta_data' => 'Métadonnées facultatives', 'external_url' => 'URL externe', - 'pref_notification_bill_reminder' => 'Rappel au renouvellement des factures', + 'pref_notification_bill_reminder' => 'Rappel à l\'expiration des factures', 'pref_notification_new_access_token' => 'Alerte à la création d\'un nouveau jeton d\'accès API', 'pref_notification_transaction_creation' => 'Alerte à la création automatique d\'une opération', 'pref_notification_user_login' => 'Alerte à la connexion depuis un nouvel emplacement', 'pref_notifications' => 'Notifications', - 'pref_notifications_help' => 'Indiquez si ce sont des notifications que vous souhaitez obtenir. Certaines notifications peuvent contenir des informations financières sensibles.', + 'pref_notifications_help' => 'Sélectionnez les notifications que vous souhaitez recevoir. Certaines notifications peuvent contenir des informations financières sensibles.', 'slack_webhook_url' => 'Webhook URL de Slack', 'slack_webhook_url_help' => 'Si vous voulez que Firefly III vous avertisse en utilisant Slack, entrez l\'URL du webhook ici. Sinon, laissez le champ vide. Si vous êtes un administrateur, vous devez également définir cette URL dans l\'administration.', 'slack_url_label' => 'URL du webhook entrant de Slack', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Inviter un nouvel utilisateur', 'invite_new_user_text' => 'En tant qu\'administrateur, vous pouvez inviter des utilisateurs à s\'inscrire sur votre administration Firefly III. En partageant avec eux le lien direct, ils seront en mesure de créer un compte. L\'utilisateur invité et son lien d\'invitation apparaîtront dans le tableau ci-dessous. Vous êtes libre de partager le lien d\'invitation avec eux.', 'invited_user_mail' => 'Adresse e-mail', @@ -2415,7 +2417,7 @@ return [ 'admin_notification_check_admin_new_reg' => 'Les administrateurs reçoivent une notification à l\'inscription de nouveaux utilisateurs', 'admin_notification_check_new_version' => 'Une nouvelle version est disponible', 'admin_notification_check_invite_created' => 'Un utilisateur est invité à rejoindre Firefly III', - 'admin_notification_check_invite_redeemed' => 'Une invitation d\'utilisateur a été présentée', + 'admin_notification_check_invite_redeemed' => 'Une invitation d\'utilisateur a été utilisée', 'all_invited_users' => 'Tous les utilisateurs invités', 'save_notification_settings' => 'Enregistrer les paramètres', 'notification_settings_saved' => 'Les paramètres de notification ont été enregistrés', diff --git a/resources/lang/fr_FR/validation.php b/resources/lang/fr_FR/validation.php index ad178e777f..254befd11c 100644 --- a/resources/lang/fr_FR/validation.php +++ b/resources/lang/fr_FR/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Le contenu de ce champ n\'est pas valide sans informations sur la devise.', 'not_transfer_account' => 'Ce compte n\'est pas un compte qui peut être utilisé pour les transferts.', 'require_currency_amount' => 'Le contenu de ce champ est invalide sans informations sur le montant en devise étrangère.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'La description de l\'opération ne doit pas être identique à la description globale.', 'file_invalid_mime' => 'Le fichier ":name" est du type ":mime" ce qui n\'est pas accepté pour un nouvel envoi.', 'file_too_large' => 'Le fichier ":name" est trop grand.', diff --git a/resources/lang/hu_HU/firefly.php b/resources/lang/hu_HU/firefly.php index 7ffc8c568b..b4c516fa3d 100644 --- a/resources/lang/hu_HU/firefly.php +++ b/resources/lang/hu_HU/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III v:version engedély kérelem', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/hu_HU/validation.php b/resources/lang/hu_HU/validation.php index 7c0ef42422..cb2b81dc00 100644 --- a/resources/lang/hu_HU/validation.php +++ b/resources/lang/hu_HU/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Ennek a mezőnek a tartalma érvénytelen pénznem információ nélkül.', 'not_transfer_account' => 'Ez a fiók nem használható fel tranzakciókhoz.', 'require_currency_amount' => 'Ennek a mezőnek a tartalma érvénytelen devizanem információ nélkül.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'A tranzakció leírása nem egyezhet meg a globális leírással.', 'file_invalid_mime' => '":name" fájl ":mime" típusú ami nem lehet új feltöltés.', 'file_too_large' => '":name" fájl túl nagy.', diff --git a/resources/lang/id_ID/firefly.php b/resources/lang/id_ID/firefly.php index 5e86423e92..a5a0d1e619 100644 --- a/resources/lang/id_ID/firefly.php +++ b/resources/lang/id_ID/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III v:version Permintaan Otorisasi', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/id_ID/validation.php b/resources/lang/id_ID/validation.php index 29b76b63d8..da78a2fa3d 100644 --- a/resources/lang/id_ID/validation.php +++ b/resources/lang/id_ID/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Isi dalam bidang ini tidak valid jika tidak disertai informasi mata uang.', 'not_transfer_account' => 'Akun ini bukan sebuah akun yang dapat digunakan untuk transfer.', 'require_currency_amount' => 'Isi dalam bidang ini tidak valid jika tidak disertai informasi jumlah mata uang asing.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Deskripsi transaksi harus berbeda dari deskripsi umum.', 'file_invalid_mime' => 'File ":name" adalah tipe ":mime" yang tidak diterima sebagai upload baru.', 'file_too_large' => 'File "; name" terlalu besar.', diff --git a/resources/lang/it_IT/firefly.php b/resources/lang/it_IT/firefly.php index baf1539073..205b9f9dcd 100644 --- a/resources/lang/it_IT/firefly.php +++ b/resources/lang/it_IT/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visita URL webhook', 'reset_webhook_secret' => 'Reimposta il segreto del webhook', 'webhook_stored_link' => 'Il webhook #{ID} ("{title}") è stato archiviato.', - 'webhook_updated_link' => 'Il webhook #{ID} ("{title}") è stato aggiornato.', + 'webhook_updated_link' => 'Il webhook #{ID} ("{title}") è stato aggiornato.', // API access 'authorization_request' => 'Firefly III v:version Richiesta Autorizzazione', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/it_IT/validation.php b/resources/lang/it_IT/validation.php index d0e3505045..72a634df42 100644 --- a/resources/lang/it_IT/validation.php +++ b/resources/lang/it_IT/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Il contenuto di questo campo non è valido senza informazioni sulla valuta.', 'not_transfer_account' => 'Questo conto non è un conto che può essere usato per i trasferimenti.', 'require_currency_amount' => 'Il contenuto di questo campo non è valido senza le informazioni sull\'importo estero.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'La descrizione della transazione non deve essere uguale alla descrizione globale.', 'file_invalid_mime' => 'Il file ":name" è di tipo ":mime" che non è accettato come nuovo caricamento.', 'file_too_large' => 'Il file ":name" è troppo grande.', diff --git a/resources/lang/ja_JP/firefly.php b/resources/lang/ja_JP/firefly.php index 51381dd605..9d79a96b3b 100644 --- a/resources/lang/ja_JP/firefly.php +++ b/resources/lang/ja_JP/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III v:version 認証要求', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/ja_JP/validation.php b/resources/lang/ja_JP/validation.php index ad3f45003b..04caf4f473 100644 --- a/resources/lang/ja_JP/validation.php +++ b/resources/lang/ja_JP/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'この項目の内容は通貨情報がなければ無効です。', 'not_transfer_account' => 'このアカウントは送金に使用できるアカウントではありません。', 'require_currency_amount' => 'この項目の内容は、外部金額情報がなければ無効です。', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => '取引の説明はグローバルな説明と同じであってはいけません。', 'file_invalid_mime' => '「:mime」タイプのファイル ":name" は新しいアップロードとして受け付けられません。', 'file_too_large' => 'ファイル ":name"は大きすぎます。', diff --git a/resources/lang/ko_KR/firefly.php b/resources/lang/ko_KR/firefly.php index 7997d35351..2e8bcd613f 100644 --- a/resources/lang/ko_KR/firefly.php +++ b/resources/lang/ko_KR/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => '웹훅 URL 방문', 'reset_webhook_secret' => '웹훅 시크릿 재설정', 'webhook_stored_link' => '웹훅 #{ID} ("{title}")이 저장되었습니다.', - 'webhook_updated_link' => '웹훅 #{ID} ("{title}")이 업데이트 되었습니다.', + 'webhook_updated_link' => '웹훅 #{ID} ("{title}")이 업데이트 되었습니다.', // API access 'authorization_request' => 'Firefly III v:version 인증 요청', @@ -490,17 +490,17 @@ return [ 'search_modifier_not_account_is' => '두 계정 모두 ":value"가 아닙니다', 'search_modifier_account_contains' => '계정중 하나는 ":value"를 포함합니다', 'search_modifier_not_account_contains' => '두 계정 모두 ":value"를 포함하지 않습니다', - 'search_modifier_account_ends' => '두 계정 모두 ":value"로 끝납니다', + 'search_modifier_account_ends' => '계정중 하나는 ":value"로 끝납니다', 'search_modifier_not_account_ends' => '두 계정 모두 ":value"로 끝나지 않습니다', - 'search_modifier_account_starts' => '두 계정 모두 ":value"로 시작합니다', + 'search_modifier_account_starts' => '계정중 하나는 ":value"로 시작합니다', 'search_modifier_not_account_starts' => '두 계정 모두 ":value"로 시작하지 않습니다', - 'search_modifier_account_nr_is' => '두 계정의 번호 / IBAN은 모두 ":value"입니다', + 'search_modifier_account_nr_is' => '계정 번호 / IBAN 중 하나는 ":value"입니다', 'search_modifier_not_account_nr_is' => '두 계정의 번호 / IBAN은 모두 ":value"가 아닙니다', - 'search_modifier_account_nr_contains' => '두 계정의 번호 / IBAN은 모두 ":value"를 포함합니다', + 'search_modifier_account_nr_contains' => '계정 번호 / IBAN 중 하나가 ":value"를 포함합니다', 'search_modifier_not_account_nr_contains' => '두 계정의 번호 / IBAN은 모두 ":value"를 포함하지 않습니다', - 'search_modifier_account_nr_ends' => '두 계정의 번호 / IBAN은 모두 ":value"로 끝납니다', + 'search_modifier_account_nr_ends' => '계정 번호 / IBAN 중 하나가 ":value"로 끝납니다', 'search_modifier_not_account_nr_ends' => '두 계정의 번호 / IBAN은 모두 ":value"로 끝나지 않습니다', - 'search_modifier_account_nr_starts' => '두 계정의 번호 / IBAN은 모두 ":value"로 시작합니다', + 'search_modifier_account_nr_starts' => '계정 번호 / IBAN 중 하나가 ":value"로 시작합니다', 'search_modifier_not_account_nr_starts' => '두 계정의 번호 / IBAN은 모두 ":value"로 시작하지 않습니다', 'search_modifier_category_contains' => '카테고리는 ":value"를 포함합니다', 'search_modifier_not_category_contains' => '카테고리는 ":value"를 포함하지 않습니다', @@ -824,14 +824,14 @@ return [ 'rule_trigger_source_account_is' => '소스 계정 이름은 ":trigger_value"입니다', 'rule_trigger_source_account_contains_choice' => '소스 계정 이름에는 다음이 포함됩니다.', 'rule_trigger_source_account_contains' => '소스 계정 이름에 ":trigger_value"가 포함됩니다', - 'rule_trigger_account_id_choice' => '둘 중 하나의 계정 ID는 정확히..', - 'rule_trigger_account_id' => '계정 ID가 정확히 :trigger_value와 일치합니다.', + 'rule_trigger_account_id_choice' => '계정중 하나의 ID는 정확히..', + 'rule_trigger_account_id' => '계정중 하나의 ID가 정확히 :trigger_value와 일치합니다', 'rule_trigger_source_account_id_choice' => '소스 계정 ID는 정확히..', 'rule_trigger_source_account_id' => '소스 계정 ID가 정확히 :trigger_value와 일치합니다.', 'rule_trigger_destination_account_id_choice' => '대상 계정 ID는 정확히..', 'rule_trigger_destination_account_id' => '대상 계정 ID가 정확히 :trigger_value와 일치합니다.', - 'rule_trigger_account_is_cash_choice' => '두 계정 모두 현금입니다', - 'rule_trigger_account_is_cash' => '두 계정 모두 현금입니다', + 'rule_trigger_account_is_cash_choice' => '계정중 하나는 현금입니다', + 'rule_trigger_account_is_cash' => '계정중 하나는 현금입니다', 'rule_trigger_source_is_cash_choice' => '소스 계정은 (현금) 계정입니다', 'rule_trigger_source_is_cash' => '소스 계정은 (현금) 계정입니다', 'rule_trigger_destination_is_cash_choice' => '대상 계정은 (현금) 계정입니다', @@ -844,56 +844,56 @@ return [ 'rule_trigger_source_account_nr_is' => '소스 계정 번호 / IBAN은 ":trigger_value"입니다', 'rule_trigger_source_account_nr_contains_choice' => '소스 계정 번호 / IBAN은 ..를 포함합니다', 'rule_trigger_source_account_nr_contains' => '소스 계정 번호 / IBAN은 ":trigger_value"를 포함합니다', - 'rule_trigger_destination_account_starts_choice' => 'Destination account name starts with..', - 'rule_trigger_destination_account_starts' => 'Destination account name starts with ":trigger_value"', - 'rule_trigger_destination_account_ends_choice' => 'Destination account name ends with..', - 'rule_trigger_destination_account_ends' => 'Destination account name ends with ":trigger_value"', - 'rule_trigger_destination_account_is_choice' => 'Destination account name is..', - 'rule_trigger_destination_account_is' => 'Destination account name is ":trigger_value"', - 'rule_trigger_destination_account_contains_choice' => 'Destination account name contains..', - 'rule_trigger_destination_account_contains' => 'Destination account name contains ":trigger_value"', - 'rule_trigger_destination_account_nr_starts_choice' => 'Destination account number / IBAN starts with..', - 'rule_trigger_destination_account_nr_starts' => 'Destination account number / IBAN starts with ":trigger_value"', - 'rule_trigger_destination_account_nr_ends_choice' => 'Destination account number / IBAN ends with..', - 'rule_trigger_destination_account_nr_ends' => 'Destination account number / IBAN ends with ":trigger_value"', - 'rule_trigger_destination_account_nr_is_choice' => 'Destination account number / IBAN is..', - 'rule_trigger_destination_account_nr_is' => 'Destination account number / IBAN is ":trigger_value"', - 'rule_trigger_destination_account_nr_contains_choice' => 'Destination account number / IBAN contains..', - 'rule_trigger_destination_account_nr_contains' => 'Destination account number / IBAN contains ":trigger_value"', - 'rule_trigger_transaction_type_choice' => 'Transaction is of type..', - 'rule_trigger_transaction_type' => 'Transaction is of type ":trigger_value"', - 'rule_trigger_category_is_choice' => 'Category is..', - 'rule_trigger_category_is' => 'Category is ":trigger_value"', - 'rule_trigger_amount_less_choice' => 'Amount is less than..', - 'rule_trigger_amount_less' => 'Amount is less than :trigger_value', - 'rule_trigger_amount_is_choice' => 'Amount is..', - 'rule_trigger_amount_is' => 'Amount is :trigger_value', - 'rule_trigger_amount_more_choice' => 'Amount is more than..', - 'rule_trigger_amount_more' => 'Amount is more than :trigger_value', - 'rule_trigger_description_starts_choice' => 'Description starts with..', - 'rule_trigger_description_starts' => 'Description starts with ":trigger_value"', - 'rule_trigger_description_ends_choice' => 'Description ends with..', - 'rule_trigger_description_ends' => 'Description ends with ":trigger_value"', - 'rule_trigger_description_contains_choice' => 'Description contains..', - 'rule_trigger_description_contains' => 'Description contains ":trigger_value"', - 'rule_trigger_description_is_choice' => 'Description is..', - 'rule_trigger_description_is' => 'Description is ":trigger_value"', - 'rule_trigger_date_on_choice' => 'Transaction date is..', - 'rule_trigger_date_on' => 'Transaction date is ":trigger_value"', - 'rule_trigger_date_before_choice' => 'Transaction date is before..', - 'rule_trigger_date_before' => 'Transaction date is before ":trigger_value"', - 'rule_trigger_date_after_choice' => 'Transaction date is after..', - 'rule_trigger_date_after' => 'Transaction date is after ":trigger_value"', - 'rule_trigger_created_at_on_choice' => 'Transaction was made on..', - 'rule_trigger_created_at_on' => 'Transaction was made on ":trigger_value"', - 'rule_trigger_updated_at_on_choice' => 'Transaction was last edited on..', - 'rule_trigger_updated_at_on' => 'Transaction was last edited on ":trigger_value"', - 'rule_trigger_budget_is_choice' => 'Budget is..', - 'rule_trigger_budget_is' => 'Budget is ":trigger_value"', - 'rule_trigger_tag_is_choice' => 'Any tag is..', - 'rule_trigger_tag_is' => 'Any tag is ":trigger_value"', - 'rule_trigger_currency_is_choice' => 'Transaction currency is..', - 'rule_trigger_currency_is' => 'Transaction currency is ":trigger_value"', + 'rule_trigger_destination_account_starts_choice' => '대상 계정 이름은 ...로 시작합니다.', + 'rule_trigger_destination_account_starts' => '대상 계정 이름은 ":trigger_value"로 시작합니다', + 'rule_trigger_destination_account_ends_choice' => '대상 계정 이름은 ...로 끝납니다', + 'rule_trigger_destination_account_ends' => '대상 계정 이름은 ":trigger_value"로 끝납니다', + 'rule_trigger_destination_account_is_choice' => '대상 계정 이름은..', + 'rule_trigger_destination_account_is' => '대상 계정 이름은 ":trigger_value"입니다', + 'rule_trigger_destination_account_contains_choice' => '대상 계정 이름은 ...를 포함합니다', + 'rule_trigger_destination_account_contains' => '대상 계정 이름은 ":trigger_value"를 포함합니다', + 'rule_trigger_destination_account_nr_starts_choice' => '대상 계좌 번호 / IBAN은...로 시작합니다', + 'rule_trigger_destination_account_nr_starts' => '대상 계정 번호 / IBAN은 ":trigger_value"로 시작합니다', + 'rule_trigger_destination_account_nr_ends_choice' => '대상 계좌 번호 / IBAN은...로 끝납니다', + 'rule_trigger_destination_account_nr_ends' => '대상 계정 번호 / IBAN은 ":trigger_value"로 끝납니다', + 'rule_trigger_destination_account_nr_is_choice' => '대상 계정 번호 / IBAN은..', + 'rule_trigger_destination_account_nr_is' => '대상 계정 번호 / IBAN은 ":trigger_value"입니다', + 'rule_trigger_destination_account_nr_contains_choice' => '대상 계좌 번호 / IBAN은...를 포함합니다', + 'rule_trigger_destination_account_nr_contains' => '대상 계정 번호 / IBAN은 ":trigger_value"를 포함합니다', + 'rule_trigger_transaction_type_choice' => '거래는 .. 유형입니다', + 'rule_trigger_transaction_type' => '거래는 ":trigger_value" 유형입니다', + 'rule_trigger_category_is_choice' => '카테고리는 ..', + 'rule_trigger_category_is' => '카테고리는 ":trigger_value"입니다', + 'rule_trigger_amount_less_choice' => '금액이 ... 미만입니다', + 'rule_trigger_amount_less' => '금액이 :trigger_value 미만입니다.', + 'rule_trigger_amount_is_choice' => '금액은..', + 'rule_trigger_amount_is' => '금액은 :trigger_value입니다', + 'rule_trigger_amount_more_choice' => '금액이 ... 이상입니다', + 'rule_trigger_amount_more' => '금액이 :trigger_value 이상입니다', + 'rule_trigger_description_starts_choice' => '설명이 ..로 시작합니다', + 'rule_trigger_description_starts' => '설명이 ":trigger_value"로 시작합니다', + 'rule_trigger_description_ends_choice' => '설명이 ..로 끝납니다', + 'rule_trigger_description_ends' => '설명이 ":trigger_value"로 끝납니다', + 'rule_trigger_description_contains_choice' => '설명은 ..를 포함합니다', + 'rule_trigger_description_contains' => '설명은 ":trigger_value"를 포함합니다', + 'rule_trigger_description_is_choice' => '설명은..', + 'rule_trigger_description_is' => '설명은 ":trigger_value"입니다', + 'rule_trigger_date_on_choice' => '거래 날짜는..', + 'rule_trigger_date_on' => '거래 날짜는 ":trigger_value"입니다', + 'rule_trigger_date_before_choice' => '거래 날짜는 .. 이전입니다', + 'rule_trigger_date_before' => '거래 날짜는 ":trigger_value" 이전입니다', + 'rule_trigger_date_after_choice' => '거래 날짜는 .. 이후입니다', + 'rule_trigger_date_after' => '거래 날짜는 ":trigger_value" 이후입니다', + 'rule_trigger_created_at_on_choice' => '거래가 이루어진 날짜는..', + 'rule_trigger_created_at_on' => '거래가 이루어진 날짜는 ":trigger_value"입니다', + 'rule_trigger_updated_at_on_choice' => '거래가 마지막으로 수정된 날짜는...', + 'rule_trigger_updated_at_on' => '거래가 마지막으로 수정된 날짜는 ":trigger_value"입니다', + 'rule_trigger_budget_is_choice' => '예산은..', + 'rule_trigger_budget_is' => '예산은 ":trigger_value"입니다', + 'rule_trigger_tag_is_choice' => '모든 태그는...', + 'rule_trigger_tag_is' => '모든 태그는 ":trigger_value"입니다', + 'rule_trigger_currency_is_choice' => '거래 통화는..', + 'rule_trigger_currency_is' => '거래 통화는 ":trigger_value"입니다', 'rule_trigger_foreign_currency_is_choice' => '거래 외화 통화는..', 'rule_trigger_foreign_currency_is' => '거래 외화 통화는 ":trigger_value"입니다', 'rule_trigger_has_attachments_choice' => '최소한 이 정도의 첨부 파일이 있습니다.', @@ -947,174 +947,174 @@ return [ 'rule_trigger_user_action_choice' => '사용자 액션은 ":trigger_value" 입니다', 'rule_trigger_tag_is_not_choice' => '태그가 없습니다.', 'rule_trigger_tag_is_not' => '":trigger_value" 태그가 없습니다', - 'rule_trigger_account_is_choice' => '각 계정은 정확히..', - 'rule_trigger_account_is' => '각 계정은 정확히 ":trigger_value"입니다', - 'rule_trigger_account_contains_choice' => '각 계정은 다음을 포함함..', - 'rule_trigger_account_contains' => '각 계정은 ":trigger_value"를 포함합니다.', - 'rule_trigger_account_ends_choice' => '각 계정은 다음으로 끝납니다.', - 'rule_trigger_account_ends' => '각 계정은 ":trigger_value"로 끝납니다', - 'rule_trigger_account_starts_choice' => '각 계정은 다음으로 시작합니다..', - 'rule_trigger_account_starts' => '각 계정은 ":trigger_value"로 시작합니다', - 'rule_trigger_account_nr_is_choice' => '각 계정 번호 / IBAN은..', - 'rule_trigger_account_nr_is' => 'Either account number / IBAN is ":trigger_value"', - 'rule_trigger_account_nr_contains_choice' => 'Either account number / IBAN contains..', - 'rule_trigger_account_nr_contains' => 'Either account number / IBAN contains ":trigger_value"', - 'rule_trigger_account_nr_ends_choice' => 'Either account number / IBAN ends with..', - 'rule_trigger_account_nr_ends' => 'Either account number / IBAN ends with ":trigger_value"', - 'rule_trigger_account_nr_starts_choice' => 'Either account number / IBAN starts with..', - 'rule_trigger_account_nr_starts' => 'Either account number / IBAN starts with ":trigger_value"', - 'rule_trigger_category_contains_choice' => 'Category contains..', - 'rule_trigger_category_contains' => 'Category contains ":trigger_value"', - 'rule_trigger_category_ends_choice' => 'Category ends with..', - 'rule_trigger_category_ends' => 'Category ends with ":trigger_value"', - 'rule_trigger_category_starts_choice' => 'Category starts with..', - 'rule_trigger_category_starts' => 'Category starts with ":trigger_value"', - 'rule_trigger_budget_contains_choice' => 'Budget contains..', - 'rule_trigger_budget_contains' => 'Budget contains ":trigger_value"', - 'rule_trigger_budget_ends_choice' => 'Budget ends with..', - 'rule_trigger_budget_ends' => 'Budget ends with ":trigger_value"', - 'rule_trigger_budget_starts_choice' => 'Budget starts with..', - 'rule_trigger_budget_starts' => 'Budget starts with ":trigger_value"', - 'rule_trigger_bill_contains_choice' => 'Bill contains..', - 'rule_trigger_bill_contains' => 'Bill contains ":trigger_value"', - 'rule_trigger_bill_ends_choice' => 'Bill ends with..', - 'rule_trigger_bill_ends' => 'Bill ends with ":trigger_value"', - 'rule_trigger_bill_starts_choice' => 'Bill starts with..', - 'rule_trigger_bill_starts' => 'Bill starts with ":trigger_value"', - 'rule_trigger_external_id_contains_choice' => 'External ID contains..', - 'rule_trigger_external_id_contains' => 'External ID contains ":trigger_value"', - 'rule_trigger_external_id_ends_choice' => 'External ID ends with..', - 'rule_trigger_external_id_ends' => 'External ID ends with ":trigger_value"', - 'rule_trigger_external_id_starts_choice' => 'External ID starts with..', - 'rule_trigger_external_id_starts' => 'External ID starts with ":trigger_value"', - 'rule_trigger_internal_reference_contains_choice' => 'Internal reference contains..', - 'rule_trigger_internal_reference_contains' => 'Internal reference contains ":trigger_value"', - 'rule_trigger_internal_reference_ends_choice' => 'Internal reference ends with..', - 'rule_trigger_internal_reference_ends' => 'Internal reference ends with ":trigger_value"', - 'rule_trigger_internal_reference_starts_choice' => 'Internal reference starts with..', - 'rule_trigger_internal_reference_starts' => 'Internal reference starts with ":trigger_value"', - 'rule_trigger_external_url_is_choice' => 'External URL is..', - 'rule_trigger_external_url_is' => 'External URL is ":trigger_value"', - 'rule_trigger_external_url_contains_choice' => 'External URL contains..', - 'rule_trigger_external_url_contains' => 'External URL contains ":trigger_value"', - 'rule_trigger_external_url_ends_choice' => 'External URL ends with..', - 'rule_trigger_external_url_ends' => 'External URL ends with ":trigger_value"', - 'rule_trigger_external_url_starts_choice' => 'External URL starts with..', - 'rule_trigger_external_url_starts' => 'External URL starts with ":trigger_value"', - 'rule_trigger_has_no_attachments_choice' => 'Has no attachments', - 'rule_trigger_has_no_attachments' => 'Transaction has no attachments', - 'rule_trigger_recurrence_id_choice' => 'Recurring transaction ID is..', - 'rule_trigger_recurrence_id' => 'Recurring transaction ID is ":trigger_value"', - 'rule_trigger_interest_date_on_choice' => 'Interest date is on..', - 'rule_trigger_interest_date_on' => 'Interest date is on ":trigger_value"', - 'rule_trigger_interest_date_before_choice' => 'Interest date is before..', - 'rule_trigger_interest_date_before' => 'Interest date is before ":trigger_value"', - 'rule_trigger_interest_date_after_choice' => 'Interest date is after..', - 'rule_trigger_interest_date_after' => 'Interest date is after ":trigger_value"', - 'rule_trigger_book_date_on_choice' => 'Book date is on..', - 'rule_trigger_book_date_on' => 'Book date is on ":trigger_value"', - 'rule_trigger_book_date_before_choice' => 'Book date is before..', - 'rule_trigger_book_date_before' => 'Book date is before ":trigger_value"', - 'rule_trigger_book_date_after_choice' => 'Book date is after..', - 'rule_trigger_book_date_after' => 'Book date is after ":trigger_value"', - 'rule_trigger_process_date_on_choice' => 'Process date is on..', - 'rule_trigger_process_date_on' => 'Process date is ":trigger_value"', - 'rule_trigger_process_date_before_choice' => 'Process date is before..', - 'rule_trigger_process_date_before' => 'Process date is before ":trigger_value"', - 'rule_trigger_process_date_after_choice' => 'Process date is after..', - 'rule_trigger_process_date_after' => 'Process date is after ":trigger_value"', - 'rule_trigger_due_date_on_choice' => 'Due date is on..', - 'rule_trigger_due_date_on' => 'Due date is on ":trigger_value"', - 'rule_trigger_due_date_before_choice' => 'Due date is before..', - 'rule_trigger_due_date_before' => 'Due date is before ":trigger_value"', - 'rule_trigger_due_date_after_choice' => 'Due date is after..', - 'rule_trigger_due_date_after' => 'Due date is after ":trigger_value"', - 'rule_trigger_payment_date_on_choice' => 'Payment date is on..', - 'rule_trigger_payment_date_on' => 'Payment date is on ":trigger_value"', - 'rule_trigger_payment_date_before_choice' => 'Payment date is before..', - 'rule_trigger_payment_date_before' => 'Payment date is before ":trigger_value"', - 'rule_trigger_payment_date_after_choice' => 'Payment date is after..', - 'rule_trigger_payment_date_after' => 'Payment date is after ":trigger_value"', - 'rule_trigger_invoice_date_on_choice' => 'Invoice date is on..', - 'rule_trigger_invoice_date_on' => 'Invoice date is on ":trigger_value"', - 'rule_trigger_invoice_date_before_choice' => 'Invoice date is before..', - 'rule_trigger_invoice_date_before' => 'Invoice date is before ":trigger_value"', - 'rule_trigger_invoice_date_after_choice' => 'Invoice date is after..', - 'rule_trigger_invoice_date_after' => 'Invoice date is after ":trigger_value"', - 'rule_trigger_created_at_before_choice' => 'Transaction was created before..', - 'rule_trigger_created_at_before' => 'Transaction was created before ":trigger_value"', - 'rule_trigger_created_at_after_choice' => 'Transaction was created after..', - 'rule_trigger_created_at_after' => 'Transaction was created after ":trigger_value"', - 'rule_trigger_updated_at_before_choice' => 'Transaction was last updated before..', - 'rule_trigger_updated_at_before' => 'Transaction was last updated before ":trigger_value"', - 'rule_trigger_updated_at_after_choice' => 'Transaction was last updated after..', - 'rule_trigger_updated_at_after' => 'Transaction was last updated after ":trigger_value"', - 'rule_trigger_foreign_amount_is_choice' => 'Foreign amount is exactly..', - 'rule_trigger_foreign_amount_is' => 'Foreign amount is exactly ":trigger_value"', - 'rule_trigger_foreign_amount_less_choice' => 'Foreign amount is less than..', - 'rule_trigger_foreign_amount_less' => 'Foreign amount is less than ":trigger_value"', - 'rule_trigger_foreign_amount_more_choice' => 'Foreign amount is more than..', - 'rule_trigger_foreign_amount_more' => 'Foreign amount is more than ":trigger_value"', - 'rule_trigger_attachment_name_is_choice' => 'Any attachment\'s name is..', - 'rule_trigger_attachment_name_is' => 'Any attachment\'s name is ":trigger_value"', - 'rule_trigger_attachment_name_contains_choice' => 'Any attachment\'s name contains..', - 'rule_trigger_attachment_name_contains' => 'Any attachment\'s name contains ":trigger_value"', - 'rule_trigger_attachment_name_starts_choice' => 'Any attachment\'s name starts with..', - 'rule_trigger_attachment_name_starts' => 'Any attachment\'s name starts with ":trigger_value"', - 'rule_trigger_attachment_name_ends_choice' => 'Any attachment\'s name ends with..', - 'rule_trigger_attachment_name_ends' => 'Any attachment\'s name ends with ":trigger_value"', - 'rule_trigger_attachment_notes_are_choice' => 'Any attachment\'s notes are..', - 'rule_trigger_attachment_notes_are' => 'Any attachment\'s notes are ":trigger_value"', - 'rule_trigger_attachment_notes_contains_choice' => 'Any attachment\'s notes contain..', - 'rule_trigger_attachment_notes_contains' => 'Any attachment\'s notes contain ":trigger_value"', - 'rule_trigger_attachment_notes_starts_choice' => 'Any attachment\'s notes start with..', - 'rule_trigger_attachment_notes_starts' => 'Any attachment\'s notes start with ":trigger_value"', - 'rule_trigger_attachment_notes_ends_choice' => 'Any attachment\'s notes end with..', - 'rule_trigger_attachment_notes_ends' => 'Any attachment\'s notes end with ":trigger_value"', - 'rule_trigger_reconciled_choice' => 'Transaction is reconciled', + 'rule_trigger_account_is_choice' => '계정중 하나는 정확히 .. 입니다', + 'rule_trigger_account_is' => '계정중 하나는 정확히 ":trigger_value"입니다', + 'rule_trigger_account_contains_choice' => '계정중 하나는 ..를 포함합니다', + 'rule_trigger_account_contains' => '계정중 하나는 ":trigger_value"를 포함합니다', + 'rule_trigger_account_ends_choice' => '계정중 하나는 ..로 끝납니다', + 'rule_trigger_account_ends' => '계정중 하나는 ":trigger_value"로 끝납니다', + 'rule_trigger_account_starts_choice' => '계정중 하나는 ..로 시작합니다', + 'rule_trigger_account_starts' => '계정중 하나는 ":trigger_value"로 시작합니다', + 'rule_trigger_account_nr_is_choice' => '계정 번호 / IBAN 중 하나는 .. 입니다', + 'rule_trigger_account_nr_is' => '계정 번호 / IBAN 중 하나는 ":trigger_value"입니다', + 'rule_trigger_account_nr_contains_choice' => '계정 번호 / IBAN 중 하나는 ..를 포함합니다', + 'rule_trigger_account_nr_contains' => '계정 번호 / IBAN 중 하나는 ":trigger_value"를 포함합니다', + 'rule_trigger_account_nr_ends_choice' => '계정 번호 / IBAN 중 하나가 ..로 끝납니다', + 'rule_trigger_account_nr_ends' => '계정 번호 / IBAN 중 하나가 ":trigger_value"로 끝납니다', + 'rule_trigger_account_nr_starts_choice' => '계정 번호 / IBAN 중 하나가 ..로 시작합니다', + 'rule_trigger_account_nr_starts' => '계정 번호 / IBAN 중 하나가 ":trigger_value"로 시작합니다', + 'rule_trigger_category_contains_choice' => '카테고리는 ..를 포함합니다', + 'rule_trigger_category_contains' => '카테고리는 ":trigger_value"를 포함합니다', + 'rule_trigger_category_ends_choice' => '카테고리는 ..로 끝납니다', + 'rule_trigger_category_ends' => '카테고리는 ":trigger_value"로 끝납니다', + 'rule_trigger_category_starts_choice' => '카테고리는 ..로 시작합니다', + 'rule_trigger_category_starts' => '카테고리는 ":trigger_value"로 시작합니다', + 'rule_trigger_budget_contains_choice' => '예산은 ..를 포함합니다', + 'rule_trigger_budget_contains' => '예산은 ":trigger_value"를 포함합니다', + 'rule_trigger_budget_ends_choice' => '예산은 ..로 끝납니다', + 'rule_trigger_budget_ends' => '예산은 ":trigger_value"로 끝납니다', + 'rule_trigger_budget_starts_choice' => '예산은 ..로 시작합니다', + 'rule_trigger_budget_starts' => '예산은 ":trigger_value"로 시작합니다', + 'rule_trigger_bill_contains_choice' => '청구서는 ..를 포함합니다', + 'rule_trigger_bill_contains' => '청구서는 ":trigger_value"를 포함합니다', + 'rule_trigger_bill_ends_choice' => '청구서는 ..로 끝납니다', + 'rule_trigger_bill_ends' => '청구서는 ":trigger_value"로 끝납니다', + 'rule_trigger_bill_starts_choice' => '청구서는 ..로 시작합니다', + 'rule_trigger_bill_starts' => '청구서는 ":trigger_value"로 시작합니다', + 'rule_trigger_external_id_contains_choice' => '외부 ID는 ..를 포함합니다', + 'rule_trigger_external_id_contains' => '외부 ID는 ":trigger_value"를 포함합니다', + 'rule_trigger_external_id_ends_choice' => '외부 ID는 ..로 끝납니다', + 'rule_trigger_external_id_ends' => '외부 ID는 ":trigger_value"로 끝납니다', + 'rule_trigger_external_id_starts_choice' => '외부 ID는 ..로 시작합니다', + 'rule_trigger_external_id_starts' => '외부 ID는 ":trigger_value"로 시작합니다', + 'rule_trigger_internal_reference_contains_choice' => '내부 참조는 ..를 포함합니다', + 'rule_trigger_internal_reference_contains' => '내부 참조는 ":trigger_value"를 포함합니다', + 'rule_trigger_internal_reference_ends_choice' => '내부 참조는 ..로 끝납니다', + 'rule_trigger_internal_reference_ends' => '내부 참조는 ":trigger_value"로 끝납니다', + 'rule_trigger_internal_reference_starts_choice' => '내부 참조는 ..로 시작합니다', + 'rule_trigger_internal_reference_starts' => '내부 참조는 ":trigger_value"로 시작합니다', + 'rule_trigger_external_url_is_choice' => '외부 URL은 ..입니다', + 'rule_trigger_external_url_is' => '외부 URL은 ":trigger_value"입니다', + 'rule_trigger_external_url_contains_choice' => '외부 URL은 ..를 포함합니다', + 'rule_trigger_external_url_contains' => '외부 URL은 ":trigger_value"를 포함합니다', + 'rule_trigger_external_url_ends_choice' => '외부 URL은 ..로 끝납니다', + 'rule_trigger_external_url_ends' => '외부 URL은 ":trigger_value"로 끝납니다', + 'rule_trigger_external_url_starts_choice' => '외부 URL은 ..로 시작합니다', + 'rule_trigger_external_url_starts' => '외부 URL은 ":trigger_value"로 시작합니다', + 'rule_trigger_has_no_attachments_choice' => '첨부 파일이 없음', + 'rule_trigger_has_no_attachments' => '거래에 첨부 파일이 없음', + 'rule_trigger_recurrence_id_choice' => '반복 거래 ID는 ..입니다', + 'rule_trigger_recurrence_id' => '반복 거래 ID는 ":trigger_value"입니다', + 'rule_trigger_interest_date_on_choice' => '이자 날짜는 .. 입니다', + 'rule_trigger_interest_date_on' => '이자 날짜는 ":trigger_value"입니다', + 'rule_trigger_interest_date_before_choice' => '이자 날짜는 .. 이전입니다', + 'rule_trigger_interest_date_before' => '이자 날짜는 ":trigger_value" 이전입니다', + 'rule_trigger_interest_date_after_choice' => '이자 날짜는 .. 이후입니다', + 'rule_trigger_interest_date_after' => '이자 날짜는 ":trigger_value" 이후입니다', + 'rule_trigger_book_date_on_choice' => '예약 날짜는 .. 입니다', + 'rule_trigger_book_date_on' => '예약 날짜는 ":trigger_value" 입니다', + 'rule_trigger_book_date_before_choice' => '예약 날짜는 .. 이전입니다', + 'rule_trigger_book_date_before' => '예약 날짜는 ":trigger_value" 이전입니다', + 'rule_trigger_book_date_after_choice' => '예약 날짜는 .. 이후입니다', + 'rule_trigger_book_date_after' => '예약 날짜는 ":trigger_value" 이후입니다', + 'rule_trigger_process_date_on_choice' => '처리 날짜는 .. 입니다', + 'rule_trigger_process_date_on' => '처리 날짜는 ":trigger_value"입니다', + 'rule_trigger_process_date_before_choice' => '처리 날짜는 .. 이전입니다', + 'rule_trigger_process_date_before' => '처리 날짜는 ":trigger_value" 이전입니다', + 'rule_trigger_process_date_after_choice' => '처리 날짜는 .. 이후입니다', + 'rule_trigger_process_date_after' => '처리 날짜는 ":trigger_value" 이후입니다', + 'rule_trigger_due_date_on_choice' => '마감 날짜는 .. 입니다', + 'rule_trigger_due_date_on' => '마감 날짜는 ":trigger_value" 입니다', + 'rule_trigger_due_date_before_choice' => '마감 날짜는 .. 이전입니다', + 'rule_trigger_due_date_before' => '마감 날짜는 ":trigger_value" 이전입니다', + 'rule_trigger_due_date_after_choice' => '마감 날짜는 .. 이후입니다', + 'rule_trigger_due_date_after' => '마감 날짜는 ":trigger_value" 이후입니다', + 'rule_trigger_payment_date_on_choice' => '결제 날짜는 .. 입니다', + 'rule_trigger_payment_date_on' => '결제 날짜는 ":trigger_value"입니다', + 'rule_trigger_payment_date_before_choice' => '결제 날짜는 .. 이전입니다', + 'rule_trigger_payment_date_before' => '결제 날짜는 ":trigger_value" 이전입니다', + 'rule_trigger_payment_date_after_choice' => '결제 날짜는 .. 이후입니다', + 'rule_trigger_payment_date_after' => '결제 날짜는 ":trigger_value" 이후입니다', + 'rule_trigger_invoice_date_on_choice' => '송장 날짜는 .. 입니다', + 'rule_trigger_invoice_date_on' => '송장 날짜는 ":trigger_value"입니다', + 'rule_trigger_invoice_date_before_choice' => '송장 날짜는 .. 이전입니다', + 'rule_trigger_invoice_date_before' => '송장 날짜는 ":trigger_value" 이전입니다', + 'rule_trigger_invoice_date_after_choice' => '송장 날짜는 .. 이후입니다', + 'rule_trigger_invoice_date_after' => '송장 날짜는 ":trigger_value" 이후입니다', + 'rule_trigger_created_at_before_choice' => '.. 이전에 거래가 생성되었습니다', + 'rule_trigger_created_at_before' => '":trigger_value" 이전에 거래가 생성되었습니다', + 'rule_trigger_created_at_after_choice' => '.. 이후에 거래가 생성되었습니다', + 'rule_trigger_created_at_after' => '":trigger_value" 이후에 거래가 생성되었습니다', + 'rule_trigger_updated_at_before_choice' => '.. 이전에 거래가 마지막으로 업데이트되었습니다', + 'rule_trigger_updated_at_before' => '":trigger_value" 이전에 거래가 마지막으로 업데이트되었습니다', + 'rule_trigger_updated_at_after_choice' => '.. 이후에 거래가 마지막으로 업데이트되었습니다', + 'rule_trigger_updated_at_after' => '":trigger_value" 이후에 거래가 마지막으로 업데이트되었습니다', + 'rule_trigger_foreign_amount_is_choice' => '외화 금액은 정확히 ..입니다', + 'rule_trigger_foreign_amount_is' => '외화 금액은 정확히 ":trigger_value"입니다', + 'rule_trigger_foreign_amount_less_choice' => '외화 금액은 .. 보다 작습니다', + 'rule_trigger_foreign_amount_less' => '외화 금액은 ":trigger_value" 보다 작습니다', + 'rule_trigger_foreign_amount_more_choice' => '외화 금액은 .. 보다 큽니다', + 'rule_trigger_foreign_amount_more' => '외화 금액은 ":trigger_value" 보다 큽니다', + 'rule_trigger_attachment_name_is_choice' => '첨부 파일의 이름은 ..', + 'rule_trigger_attachment_name_is' => '첨부 파일의 이름은 ":trigger_value"입니다', + 'rule_trigger_attachment_name_contains_choice' => '첨부 파일의 이름은 ..를 포함합니다', + 'rule_trigger_attachment_name_contains' => '첨부 파일의 이름은 ":trigger_value"를 포함합니다', + 'rule_trigger_attachment_name_starts_choice' => '첨부 파일의 이름은 ..로 시작합니다', + 'rule_trigger_attachment_name_starts' => '첨부 파일의 이름은 ":trigger_value"로 시작합니다', + 'rule_trigger_attachment_name_ends_choice' => '첨부 파일의 이름은 ..로 끝납니다', + 'rule_trigger_attachment_name_ends' => '첨부 파일의 이름은 ":trigger_value"로 끝납니다', + 'rule_trigger_attachment_notes_are_choice' => '첨부 파일의 노트는 ..', + 'rule_trigger_attachment_notes_are' => '첨부 파일의 노트는 ":trigger_value"입니다', + 'rule_trigger_attachment_notes_contains_choice' => '첨부 파일의 노트는 ..를 포함합니다', + 'rule_trigger_attachment_notes_contains' => '첨부 파일의 노트는 ":trigger_value"를 포함합니다', + 'rule_trigger_attachment_notes_starts_choice' => '첨부 파일의 노트는 ..로 시작합니다', + 'rule_trigger_attachment_notes_starts' => '첨부 파일의 노트는 ":trigger_value"로 시작합니다', + 'rule_trigger_attachment_notes_ends_choice' => '첨부 파일의 노트는 ..로 끝납니다', + 'rule_trigger_attachment_notes_ends' => '첨부 파일의 노트는 ":trigger_value"로 끝납니다', + 'rule_trigger_reconciled_choice' => '거래가 조정됨', 'rule_trigger_reconciled' => '거래가 조정됨', 'rule_trigger_exists_choice' => '모든 거래 일치(!)', 'rule_trigger_exists' => '모든 거래 일치', // more values for new types: - 'rule_trigger_not_account_id' => 'Account ID is not ":trigger_value"', - 'rule_trigger_not_source_account_id' => 'Source account ID is not ":trigger_value"', - 'rule_trigger_not_destination_account_id' => 'Destination account ID is not ":trigger_value"', - 'rule_trigger_not_transaction_type' => 'Transaction type is not ":trigger_value"', - 'rule_trigger_not_tag_is' => 'Tag is not ":trigger_value"', - 'rule_trigger_not_tag_is_not' => 'Tag is ":trigger_value"', - 'rule_trigger_not_description_is' => 'Description is not ":trigger_value"', - 'rule_trigger_not_description_contains' => 'Description does not contain', - 'rule_trigger_not_description_ends' => 'Description does not end with ":trigger_value"', - 'rule_trigger_not_description_starts' => 'Description does not start with ":trigger_value"', - 'rule_trigger_not_notes_is' => 'Notes are not ":trigger_value"', - 'rule_trigger_not_notes_contains' => 'Notes do not contain ":trigger_value"', - 'rule_trigger_not_notes_ends' => 'Notes do not end on ":trigger_value"', - 'rule_trigger_not_notes_starts' => 'Notes do not start with ":trigger_value"', - 'rule_trigger_not_source_account_is' => 'Source account is not ":trigger_value"', - 'rule_trigger_not_source_account_contains' => 'Source account does not contain ":trigger_value"', - 'rule_trigger_not_source_account_ends' => 'Source account does not end on ":trigger_value"', - 'rule_trigger_not_source_account_starts' => 'Source account does not start with ":trigger_value"', - 'rule_trigger_not_source_account_nr_is' => 'Source account number / IBAN is not ":trigger_value"', - 'rule_trigger_not_source_account_nr_contains' => 'Source account number / IBAN does not contain ":trigger_value"', - 'rule_trigger_not_source_account_nr_ends' => 'Source account number / IBAN does not end on ":trigger_value"', - 'rule_trigger_not_source_account_nr_starts' => 'Source account number / IBAN does not start with ":trigger_value"', - 'rule_trigger_not_destination_account_is' => 'Destination account is not ":trigger_value"', - 'rule_trigger_not_destination_account_contains' => 'Destination account does not contain ":trigger_value"', - 'rule_trigger_not_destination_account_ends' => 'Destination account does not end on ":trigger_value"', - 'rule_trigger_not_destination_account_starts' => 'Destination account does not start with ":trigger_value"', - 'rule_trigger_not_destination_account_nr_is' => 'Destination account number / IBAN is not ":trigger_value"', - 'rule_trigger_not_destination_account_nr_contains' => 'Destination account number / IBAN does not contain ":trigger_value"', - 'rule_trigger_not_destination_account_nr_ends' => 'Destination account number / IBAN does not end on ":trigger_value"', - 'rule_trigger_not_destination_account_nr_starts' => 'Destination account number / IBAN does not start with ":trigger_value"', - 'rule_trigger_not_account_is' => 'Neither account is ":trigger_value"', - 'rule_trigger_not_account_contains' => 'Neither account contains ":trigger_value"', - 'rule_trigger_not_account_ends' => 'Neither account ends on ":trigger_value"', - 'rule_trigger_not_account_starts' => 'Neither account starts with ":trigger_value"', - 'rule_trigger_not_account_nr_is' => 'Neither account number / IBAN is ":trigger_value"', - 'rule_trigger_not_account_nr_contains' => 'Neither account number / IBAN contains ":trigger_value"', - 'rule_trigger_not_account_nr_ends' => 'Neither account number / IBAN ends on ":trigger_value"', - 'rule_trigger_not_account_nr_starts' => 'Neither account number / IBAN starts with ":trigger_value"', + 'rule_trigger_not_account_id' => '계정 ID는 ":trigger_value"가 아닙니다', + 'rule_trigger_not_source_account_id' => '소스 계정 ID는 ":trigger_value"가 아닙니다', + 'rule_trigger_not_destination_account_id' => '대상 계정 ID는 ":trigger_value"가 아닙니다', + 'rule_trigger_not_transaction_type' => '거래 유형은 ":trigger_value"가 아닙니다', + 'rule_trigger_not_tag_is' => '태그는 ":trigger_value" 가 아닙니다', + 'rule_trigger_not_tag_is_not' => '태그는 ":trigger_value"입니다', + 'rule_trigger_not_description_is' => '설명은 ":trigger_value"가 아닙니다', + 'rule_trigger_not_description_contains' => '설명이 포함되지 않음', + 'rule_trigger_not_description_ends' => '설명은 ":trigger_value"로 끝나지 않습니다', + 'rule_trigger_not_description_starts' => '설명은 ":trigger_value"로 시작하지 않습니다', + 'rule_trigger_not_notes_is' => '노트는 ":trigger_value"가 아닙니다', + 'rule_trigger_not_notes_contains' => '노트는 ":trigger_value"를 포함하지 않습니다', + 'rule_trigger_not_notes_ends' => '노트는 ":trigger_value"로 끝나지 않습니다', + 'rule_trigger_not_notes_starts' => '노트는 ":trigger_value"로 시작하지 않습니다', + 'rule_trigger_not_source_account_is' => '소스 계정은 ":trigger_value"가 아닙니다', + 'rule_trigger_not_source_account_contains' => '소스 계정은 ":trigger_value"를 포함하지 않습니다', + 'rule_trigger_not_source_account_ends' => '소스 계정은 ":trigger_value"로 끝나지 않습니다', + 'rule_trigger_not_source_account_starts' => '소스 계정은 ":trigger_value"로 시작하지 않습니다', + 'rule_trigger_not_source_account_nr_is' => '소스 계정 번호 / IBAN은 ":trigger_value"가 아닙니다', + 'rule_trigger_not_source_account_nr_contains' => '소스 계정 번호 / IBAN은 ":trigger_value"를 포함하지 않습니다', + 'rule_trigger_not_source_account_nr_ends' => '소스 계정 번호 / IBAN은 ":trigger_value"로 끝나지 않습니다', + 'rule_trigger_not_source_account_nr_starts' => '소스 계정 번호 / IBAN은 ":trigger_value"로 시작하지 않습니다', + 'rule_trigger_not_destination_account_is' => '대상 계정은 ":trigger_value"가 아닙니다', + 'rule_trigger_not_destination_account_contains' => '대상 계정은 ":trigger_value"를 포함하지 않습니다', + 'rule_trigger_not_destination_account_ends' => '대상 계정은 ":trigger_value"로 끝나지 않습니다', + 'rule_trigger_not_destination_account_starts' => '대상 계정은 ":trigger_value"로 시작하지 않습니다', + 'rule_trigger_not_destination_account_nr_is' => '대상 계정 번호 / IBAN은 ":trigger_value"가 아닙니다', + 'rule_trigger_not_destination_account_nr_contains' => '대 계정 번호 / IBAN은 ":trigger_value"를 포함하지 않습니다', + 'rule_trigger_not_destination_account_nr_ends' => '대상 계정 번호 / IBAN은 ":trigger_value"로 끝나지 않습니다', + 'rule_trigger_not_destination_account_nr_starts' => '대상 계정 번호 / IBAN은 ":trigger_value"로 시작하지 않습니다', + 'rule_trigger_not_account_is' => '두 계정 모두 ":trigger_value"가 아닙니다', + 'rule_trigger_not_account_contains' => '두 계정 모두 ":trigger_value"를 포함하지 않습니다', + 'rule_trigger_not_account_ends' => '두 계정 모두 ":trigger_value"로 끝나지 않습니다', + 'rule_trigger_not_account_starts' => '두 계정 모두 ":trigger_value"로 시작하지 않습니다', + 'rule_trigger_not_account_nr_is' => '두 계정의 번호 / IBAN은 모두 ":trigger_value"가 아닙니다', + 'rule_trigger_not_account_nr_contains' => '두 계정의 번호 / IBAN은 모두 ":trigger_value"를 포함하지 않습니다', + 'rule_trigger_not_account_nr_ends' => '두 계정의 번호 / IBAN은 모두 ":trigger_value"로 끝나지 않습니다', + 'rule_trigger_not_account_nr_starts' => '두 계정의 번호 / IBAN은 모두 ":trigger_value"로 시작하지 않습니다', 'rule_trigger_not_category_is' => '카테고리는 ":trigger_value" 가 아닙니다', 'rule_trigger_not_category_contains' => '카테고리에 ":trigger_value"가 포함되어 있지 않습니다', 'rule_trigger_not_category_ends' => '카테고리가 ":trigger_value"로 끝나지 않습니다', @@ -1123,87 +1123,87 @@ return [ 'rule_trigger_not_budget_contains' => '예산에 ":trigger_value"가 포함되어 있지 않습니다', 'rule_trigger_not_budget_ends' => '예산이 ":trigger_value"로 끝나지 않습니다', 'rule_trigger_not_budget_starts' => '예산이 ":trigger_value"로 시작하지 않습니다', - 'rule_trigger_not_bill_is' => 'Bill is not is ":trigger_value"', - 'rule_trigger_not_bill_contains' => 'Bill does not contain ":trigger_value"', - 'rule_trigger_not_bill_ends' => 'Bill does not end on ":trigger_value"', - 'rule_trigger_not_bill_starts' => 'Bill does not end with ":trigger_value"', - 'rule_trigger_not_external_id_is' => 'External ID is not ":trigger_value"', - 'rule_trigger_not_external_id_contains' => 'External ID does not contain ":trigger_value"', - 'rule_trigger_not_external_id_ends' => 'External ID does not end on ":trigger_value"', - 'rule_trigger_not_external_id_starts' => 'External ID does not start with ":trigger_value"', - 'rule_trigger_not_internal_reference_is' => 'Internal reference is not ":trigger_value"', - 'rule_trigger_not_internal_reference_contains' => 'Internal reference does not contain ":trigger_value"', - 'rule_trigger_not_internal_reference_ends' => 'Internal reference does not end on ":trigger_value"', - 'rule_trigger_not_internal_reference_starts' => 'Internal reference does not start with ":trigger_value"', - 'rule_trigger_not_external_url_is' => 'External URL is not ":trigger_value"', - 'rule_trigger_not_external_url_contains' => 'External URL does not contain ":trigger_value"', - 'rule_trigger_not_external_url_ends' => 'External URL does not end on ":trigger_value"', - 'rule_trigger_not_external_url_starts' => 'External URL does not start with ":trigger_value"', - 'rule_trigger_not_currency_is' => 'Currency is not ":trigger_value"', - 'rule_trigger_not_foreign_currency_is' => 'Foreign currency is not ":trigger_value"', - 'rule_trigger_not_id' => 'Transaction ID is not ":trigger_value"', - 'rule_trigger_not_journal_id' => 'Transaction journal ID is not ":trigger_value"', - 'rule_trigger_not_recurrence_id' => 'Recurrence ID is not ":trigger_value"', - 'rule_trigger_not_date_on' => 'Date is not on ":trigger_value"', - 'rule_trigger_not_date_before' => 'Date is not before ":trigger_value"', - 'rule_trigger_not_date_after' => 'Date is not after ":trigger_value"', - 'rule_trigger_not_interest_date_on' => 'Interest date is not on ":trigger_value"', - 'rule_trigger_not_interest_date_before' => 'Interest date is not before ":trigger_value"', - 'rule_trigger_not_interest_date_after' => 'Interest date is not after ":trigger_value"', - 'rule_trigger_not_book_date_on' => 'Book date is not on ":trigger_value"', - 'rule_trigger_not_book_date_before' => 'Book date is not before ":trigger_value"', - 'rule_trigger_not_book_date_after' => 'Book date is not after ":trigger_value"', - 'rule_trigger_not_process_date_on' => 'Process date is not on ":trigger_value"', - 'rule_trigger_not_process_date_before' => 'Process date is not before ":trigger_value"', - 'rule_trigger_not_process_date_after' => 'Process date is not after ":trigger_value"', - 'rule_trigger_not_due_date_on' => 'Due date is not on ":trigger_value"', - 'rule_trigger_not_due_date_before' => 'Due date is not before ":trigger_value"', - 'rule_trigger_not_due_date_after' => 'Due date is not after ":trigger_value"', - 'rule_trigger_not_payment_date_on' => 'Payment date is not on ":trigger_value"', - 'rule_trigger_not_payment_date_before' => 'Payment date is not before ":trigger_value"', - 'rule_trigger_not_payment_date_after' => 'Payment date is not after ":trigger_value"', - 'rule_trigger_not_invoice_date_on' => 'Invoice date is not on ":trigger_value"', - 'rule_trigger_not_invoice_date_before' => 'Invoice date is not before ":trigger_value"', - 'rule_trigger_not_invoice_date_after' => 'Invoice date is not after ":trigger_value"', - 'rule_trigger_not_created_at_on' => 'Transaction is not created on ":trigger_value"', - 'rule_trigger_not_created_at_before' => 'Transaction is not created before ":trigger_value"', - 'rule_trigger_not_created_at_after' => 'Transaction is not created after ":trigger_value"', - 'rule_trigger_not_updated_at_on' => 'Transaction is not updated on ":trigger_value"', - 'rule_trigger_not_updated_at_before' => 'Transaction is not updated before ":trigger_value"', - 'rule_trigger_not_updated_at_after' => 'Transaction is not updated after ":trigger_value"', - 'rule_trigger_not_amount_is' => 'Transaction amount is not ":trigger_value"', - 'rule_trigger_not_amount_less' => 'Transaction amount is more than ":trigger_value"', - 'rule_trigger_not_amount_more' => 'Transaction amount is less than ":trigger_value"', - 'rule_trigger_not_foreign_amount_is' => 'Foreign transaction amount is not ":trigger_value"', - 'rule_trigger_not_foreign_amount_less' => 'Foreign transaction amount is more than ":trigger_value"', - 'rule_trigger_not_foreign_amount_more' => 'Foreign transaction amount is less than ":trigger_value"', - 'rule_trigger_not_attachment_name_is' => 'No attachment is named ":trigger_value"', - 'rule_trigger_not_attachment_name_contains' => 'No attachment name contains ":trigger_value"', - 'rule_trigger_not_attachment_name_starts' => 'No attachment name starts with ":trigger_value"', - 'rule_trigger_not_attachment_name_ends' => 'No attachment name ends on ":trigger_value"', - 'rule_trigger_not_attachment_notes_are' => 'No attachment notes are ":trigger_value"', - 'rule_trigger_not_attachment_notes_contains' => 'No attachment notes contain ":trigger_value"', - 'rule_trigger_not_attachment_notes_starts' => 'No attachment notes start with ":trigger_value"', - 'rule_trigger_not_attachment_notes_ends' => 'No attachment notes end on ":trigger_value"', - 'rule_trigger_not_reconciled' => 'Transaction is not reconciled', - 'rule_trigger_not_exists' => 'Transaction does not exist', - 'rule_trigger_not_has_attachments' => 'Transaction has no attachments', - 'rule_trigger_not_has_any_category' => 'Transaction has no category', - 'rule_trigger_not_has_any_budget' => 'Transaction has no category', - 'rule_trigger_not_has_any_bill' => 'Transaction has no bill', - 'rule_trigger_not_has_any_tag' => 'Transaction has no tags', - 'rule_trigger_not_any_notes' => 'Transaction has no notes', - 'rule_trigger_not_any_external_url' => 'Transaction has no external URL', - 'rule_trigger_not_has_no_attachments' => 'Transaction has a (any) attachment(s)', - 'rule_trigger_not_has_no_category' => 'Transaction has a (any) category', - 'rule_trigger_not_has_no_budget' => 'Transaction has a (any) budget', - 'rule_trigger_not_has_no_bill' => 'Transaction has a (any) bill', - 'rule_trigger_not_has_no_tag' => 'Transaction has a (any) tag', - 'rule_trigger_not_no_notes' => 'Transaction has any notes', - 'rule_trigger_not_no_external_url' => 'Transaction has an external URL', - 'rule_trigger_not_source_is_cash' => 'Source account is not a cash account', - 'rule_trigger_not_destination_is_cash' => 'Destination account is not a cash account', - 'rule_trigger_not_account_is_cash' => 'Neither account is a cash account', + 'rule_trigger_not_bill_is' => '청구서는 ":trigger_value"가 아닙니다', + 'rule_trigger_not_bill_contains' => '청구서는 ":trigger_value"를 포함하지 않습니다', + 'rule_trigger_not_bill_ends' => '청구서는 ":trigger_value"에 끝나지 않습니다', + 'rule_trigger_not_bill_starts' => '청구서는 ":trigger_value"로 끝나지 않습니다', + 'rule_trigger_not_external_id_is' => '외부 ID는 ":trigger_value"가 아닙니다', + 'rule_trigger_not_external_id_contains' => '외부 ID는 ":trigger_value"를 포함하지 않습니다', + 'rule_trigger_not_external_id_ends' => '외부 ID는 ":trigger_value"에 끝나지 않습니다', + 'rule_trigger_not_external_id_starts' => '외부 ID는 ":trigger_value"로 시작하지 않습니다', + 'rule_trigger_not_internal_reference_is' => '내부 참조는 ":trigger_value"가 아닙니다', + 'rule_trigger_not_internal_reference_contains' => '내부 참조는 ":trigger_value"를 포함하지 않습니다', + 'rule_trigger_not_internal_reference_ends' => '내부 참조는 ":trigger_value"에 끝나지 않습니다', + 'rule_trigger_not_internal_reference_starts' => '내부 참조는 ":trigger_value"로 시작하지 않습니다', + 'rule_trigger_not_external_url_is' => '외부 URL은 ":trigger_value"가 아닙니다', + 'rule_trigger_not_external_url_contains' => '외부 URL은 ":trigger_value"를 포함하지 않습니다', + 'rule_trigger_not_external_url_ends' => '외부 URL은 ":trigger_value"로 끝나지 않습니다', + 'rule_trigger_not_external_url_starts' => '외부 URL은 ":trigger_value"로 시작하지 않습니다', + 'rule_trigger_not_currency_is' => '통화는 ":trigger_value" 가 아닙니다', + 'rule_trigger_not_foreign_currency_is' => '외화는 ":trigger_value" 가 아닙니다', + 'rule_trigger_not_id' => '거래 ID는 ":trigger_value"가 아닙니다', + 'rule_trigger_not_journal_id' => '거래 저널 ID는 ":trigger_value"가 아닙니다', + 'rule_trigger_not_recurrence_id' => '반복 ID는 ":trigger_value"가 아닙니다', + 'rule_trigger_not_date_on' => '날짜가 ":trigger_value"에 없습니다', + 'rule_trigger_not_date_before' => '날짜가 ":trigger_value" 이전이 아닙니다', + 'rule_trigger_not_date_after' => '날짜가 ":trigger_value" 이후가 아닙니다', + 'rule_trigger_not_interest_date_on' => '이자 날짜가 ":trigger_value"에 없습니다', + 'rule_trigger_not_interest_date_before' => '이자 날짜가 ":trigger_value" 이전이 아닙니다', + 'rule_trigger_not_interest_date_after' => '이자 날짜가 ":trigger_value" 이후가 아닙니다', + 'rule_trigger_not_book_date_on' => '예약 날짜가 ":trigger_value"에 없습니다', + 'rule_trigger_not_book_date_before' => '예약 날짜가 ":trigger_value" 이전이 아닙니다', + 'rule_trigger_not_book_date_after' => '예약 날짜가 ":trigger_value" 이후가 아닙니다', + 'rule_trigger_not_process_date_on' => '처리 날짜가 ":trigger_value"에 없습니다', + 'rule_trigger_not_process_date_before' => '처리 날짜가 ":trigger_value" 이전이 아닙니다', + 'rule_trigger_not_process_date_after' => '처리 날짜가 ":trigger_value" 이후가 아닙니다', + 'rule_trigger_not_due_date_on' => '마감 날짜가 ":trigger_value"에 없습니다', + 'rule_trigger_not_due_date_before' => '마감 날짜가 ":trigger_value" 이전이 아닙니다', + 'rule_trigger_not_due_date_after' => '마감 날짜가 ":trigger_value" 이후가 아닙니다', + 'rule_trigger_not_payment_date_on' => '결제 날짜가 ":trigger_value"에 없습니다', + 'rule_trigger_not_payment_date_before' => '결제 날짜가 ":trigger_value" 이전이 아닙니다', + 'rule_trigger_not_payment_date_after' => '결제 날짜가 ":trigger_value" 이후가 아닙니다', + 'rule_trigger_not_invoice_date_on' => '송장 날짜가 ":trigger_value"에 없습니다', + 'rule_trigger_not_invoice_date_before' => '송장 날짜가 ":trigger_value" 이전이 아닙니다', + 'rule_trigger_not_invoice_date_after' => '송장 날짜가 ":trigger_value" 이후가 아닙니다', + 'rule_trigger_not_created_at_on' => '거래가 ":trigger_value"에 생성되지 않았습니다', + 'rule_trigger_not_created_at_before' => '거래가 ":trigger_value" 이전에 생성되지 않았습니다', + 'rule_trigger_not_created_at_after' => '거래가 ":trigger_value" 이후에 생성되지 않았습니다', + 'rule_trigger_not_updated_at_on' => '거래가 ":trigger_value"에 업데이트되지 않았습니다', + 'rule_trigger_not_updated_at_before' => '거래가 ":trigger_value" 이전에 업데이트되지 않았습니다', + 'rule_trigger_not_updated_at_after' => '거래가 ":trigger_value" 이후에 업데이트되지 않았습니다', + 'rule_trigger_not_amount_is' => '거래 금액이 ":trigger_value"가 아닙니다', + 'rule_trigger_not_amount_less' => '거래 금액은 ":trigger_value" 보다 큽니다', + 'rule_trigger_not_amount_more' => '거래 금액은 ":trigger_value" 보다 작습니다', + 'rule_trigger_not_foreign_amount_is' => '외화 거래 금액은 ":trigger_value"가 아닙니다', + 'rule_trigger_not_foreign_amount_less' => '외화 거래 금액은 ":trigger_value" 보다 큽니다', + 'rule_trigger_not_foreign_amount_more' => '외화 거래 금액은 ":trigger_value" 보다 작습니다', + 'rule_trigger_not_attachment_name_is' => '이름이 ":trigger_value"인 첨부 파일이 없습니다', + 'rule_trigger_not_attachment_name_contains' => '":trigger_value"를 포함하는 첨부 파일 이름이 없습니다', + 'rule_trigger_not_attachment_name_starts' => '":trigger_value"로 시작하는 첨부 파일 이름이 없습니다', + 'rule_trigger_not_attachment_name_ends' => '":trigger_value"로 끝나는 첨부 파일 이름이 없습니다', + 'rule_trigger_not_attachment_notes_are' => '첨부 파일 노트가 ":trigger_value"가 아닙니다', + 'rule_trigger_not_attachment_notes_contains' => '":trigger_value"를 포함하는 첨부 파일 노트가 없습니다', + 'rule_trigger_not_attachment_notes_starts' => '":trigger_value"로 시작하는 첨부 파일 노트가 없습니다', + 'rule_trigger_not_attachment_notes_ends' => '":trigger_value"에 끝나는 첨부 파일 노트가 없습니다', + 'rule_trigger_not_reconciled' => '거래가 조정되지 않음', + 'rule_trigger_not_exists' => '거래가 존재하지 않습니다', + 'rule_trigger_not_has_attachments' => '거래에 첨부 파일이 없음', + 'rule_trigger_not_has_any_category' => '거래에 카테고리가 없음', + 'rule_trigger_not_has_any_budget' => '거래에 카테고리가 없음', + 'rule_trigger_not_has_any_bill' => '거레에 청구서가 없음', + 'rule_trigger_not_has_any_tag' => '거래에 태그가 없음', + 'rule_trigger_not_any_notes' => '거래에 메모가 없음', + 'rule_trigger_not_any_external_url' => '거래에 외부 URL이 없음', + 'rule_trigger_not_has_no_attachments' => '거래에 첨부 파일이 있음', + 'rule_trigger_not_has_no_category' => '거래에 카테고리가 있음', + 'rule_trigger_not_has_no_budget' => '거래에 예산이 있음', + 'rule_trigger_not_has_no_bill' => '거레에 청구서가 있음', + 'rule_trigger_not_has_no_tag' => '거레에 태그가 있음', + 'rule_trigger_not_no_notes' => '거래에 메모가 있음', + 'rule_trigger_not_no_external_url' => '거래에 외부 URL이 있음', + 'rule_trigger_not_source_is_cash' => '소스 계정이 현금 계정이 아닙니다', + 'rule_trigger_not_destination_is_cash' => '대상 계정이 현금 계정이 아닙니다', + 'rule_trigger_not_account_is_cash' => '두 계정 모두 현금 계정이 아닙니다', /* * PLEASE DO NOT EDIT THIS FILE DIRECTLY. @@ -1218,95 +1218,95 @@ return [ // actions - 'rule_action_delete_transaction_choice' => 'DELETE transaction(!)', - 'rule_action_delete_transaction' => 'DELETE transaction(!)', - 'rule_action_set_category' => 'Set category to ":action_value"', - 'rule_action_clear_category' => 'Clear category', - 'rule_action_set_budget' => 'Set budget to ":action_value"', - 'rule_action_clear_budget' => 'Clear budget', - 'rule_action_add_tag' => 'Add tag ":action_value"', - 'rule_action_remove_tag' => 'Remove tag ":action_value"', - 'rule_action_remove_all_tags' => 'Remove all tags', - 'rule_action_set_description' => 'Set description to ":action_value"', - 'rule_action_append_description' => 'Append description with ":action_value"', - 'rule_action_prepend_description' => 'Prepend description with ":action_value"', - 'rule_action_set_category_choice' => 'Set category to ..', - 'rule_action_clear_category_choice' => 'Clear any category', - 'rule_action_set_budget_choice' => 'Set budget to ..', - 'rule_action_clear_budget_choice' => 'Clear any budget', - 'rule_action_add_tag_choice' => 'Add tag ..', - 'rule_action_remove_tag_choice' => 'Remove tag ..', - 'rule_action_remove_all_tags_choice' => 'Remove all tags', - 'rule_action_set_description_choice' => 'Set description to ..', - 'rule_action_update_piggy_choice' => 'Add / remove transaction amount in piggy bank ..', - 'rule_action_update_piggy' => 'Add / remove transaction amount in piggy bank ":action_value"', - 'rule_action_append_description_choice' => 'Append description with ..', - 'rule_action_prepend_description_choice' => 'Prepend description with ..', - 'rule_action_set_source_account_choice' => 'Set source account to ..', - 'rule_action_set_source_account' => 'Set source account to :action_value', - 'rule_action_set_destination_account_choice' => 'Set destination account to ..', - 'rule_action_set_destination_account' => 'Set destination account to :action_value', - 'rule_action_append_notes_choice' => 'Append notes with ..', - 'rule_action_append_notes' => 'Append notes with ":action_value"', - 'rule_action_prepend_notes_choice' => 'Prepend notes with ..', - 'rule_action_prepend_notes' => 'Prepend notes with ":action_value"', - 'rule_action_clear_notes_choice' => 'Remove any notes', - 'rule_action_clear_notes' => 'Remove any notes', - 'rule_action_set_notes_choice' => 'Set notes to ..', - 'rule_action_link_to_bill_choice' => 'Link to a bill ..', - 'rule_action_link_to_bill' => 'Link to bill ":action_value"', - 'rule_action_set_notes' => 'Set notes to ":action_value"', - 'rule_action_convert_deposit_choice' => 'Convert the transaction to a deposit', - 'rule_action_convert_deposit' => 'Convert the transaction to a deposit from ":action_value"', - 'rule_action_convert_withdrawal_choice' => 'Convert the transaction to a withdrawal', - 'rule_action_convert_withdrawal' => 'Convert the transaction to a withdrawal to ":action_value"', - 'rule_action_convert_transfer_choice' => 'Convert the transaction to a transfer', - 'rule_action_convert_transfer' => 'Convert the transaction to a transfer with ":action_value"', - 'rule_action_append_descr_to_notes_choice' => 'Append the description to the transaction notes', - 'rule_action_append_notes_to_descr_choice' => 'Append the transaction notes to the description', - 'rule_action_move_descr_to_notes_choice' => 'Replace the current transaction notes with the description', - 'rule_action_move_notes_to_descr_choice' => 'Replace the current description with the transaction notes', - 'rule_action_append_descr_to_notes' => 'Append description to notes', - 'rule_action_append_notes_to_descr' => 'Append notes to description', - 'rule_action_move_descr_to_notes' => 'Replace notes with description', - 'rule_action_move_notes_to_descr' => 'Replace description with notes', - '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"', - 'new_rule_for_bill_description' => 'This rule marks transactions for bill ":name".', + 'rule_action_delete_transaction_choice' => '거래 삭제(!)', + 'rule_action_delete_transaction' => '거래 삭제(!)', + 'rule_action_set_category' => '카테고리를 ":action_value"로 설정', + 'rule_action_clear_category' => '카테고리 지우기', + 'rule_action_set_budget' => '예산을 ":action_value"로 설정', + 'rule_action_clear_budget' => '예산 지우기', + 'rule_action_add_tag' => '":action_value" 태그 추가', + 'rule_action_remove_tag' => '":action_value" 태그 제거', + 'rule_action_remove_all_tags' => '모든 태그 제거', + 'rule_action_set_description' => '설명을 ":action_value"로 설정', + 'rule_action_append_description' => '":action_value"로 설명을 추가', + 'rule_action_prepend_description' => '설명 앞에 ":action_value" 추가', + 'rule_action_set_category_choice' => '카테고리를 .. 로 설정', + 'rule_action_clear_category_choice' => '카테고리 지우기', + 'rule_action_set_budget_choice' => '예산을 .. 로 설정', + 'rule_action_clear_budget_choice' => '예산 지우기', + 'rule_action_add_tag_choice' => '태그 추가...', + 'rule_action_remove_tag_choice' => '태그 제거 ..', + 'rule_action_remove_all_tags_choice' => '모든 태그 제거', + 'rule_action_set_description_choice' => '설명을 ..으로 설정', + 'rule_action_update_piggy_choice' => '저금통에 거래금액 추가/제거 ..', + 'rule_action_update_piggy' => '저금통 ":action_value"에 거래 금액 추가/제거', + 'rule_action_append_description_choice' => '..로 설명 추가', + 'rule_action_prepend_description_choice' => '..로 설명앞에 추가', + 'rule_action_set_source_account_choice' => '소스 계정을 ..로 설정', + 'rule_action_set_source_account' => '소스 계정을 :action_value로 설정', + 'rule_action_set_destination_account_choice' => '대상 계정을 ..로 설정', + 'rule_action_set_destination_account' => '대상 계정을 :action_value로 설정', + 'rule_action_append_notes_choice' => '..로 메모 추가', + 'rule_action_append_notes' => '":action_value"로 메모 추가', + 'rule_action_prepend_notes_choice' => '노트 앞에 .. 추가', + 'rule_action_prepend_notes' => '노트 앞에 ":action_value" 추가', + 'rule_action_clear_notes_choice' => '노트 제거', + 'rule_action_clear_notes' => '노트 제거', + 'rule_action_set_notes_choice' => '노트를 ..로 설정', + 'rule_action_link_to_bill_choice' => '청구서 링크 ..', + 'rule_action_link_to_bill' => '청구서 링크 ":action_value"', + 'rule_action_set_notes' => '노트를 ":action_value"로 설정', + 'rule_action_convert_deposit_choice' => '거래를 입금으로 전환', + 'rule_action_convert_deposit' => '":action_value"에서 거래를 입금으로 전환합니다', + 'rule_action_convert_withdrawal_choice' => '거래를 출금으로 전환', + 'rule_action_convert_withdrawal' => '거래를 ":action_value"로 출금으로 전환합니다', + 'rule_action_convert_transfer_choice' => '거래를 이체로 전환', + 'rule_action_convert_transfer' => '":action_value"를 사용하여 거래를 이체로 전환합니다', + 'rule_action_append_descr_to_notes_choice' => '거래 노트에 설명을 추가합니다', + 'rule_action_append_notes_to_descr_choice' => '설명에 거래 노트를 추가합니다', + 'rule_action_move_descr_to_notes_choice' => '현재 거래 노트를 설명으로 바꿉니다', + 'rule_action_move_notes_to_descr_choice' => '현재 설명을 거래 메모로 바꿉니다', + 'rule_action_append_descr_to_notes' => '노트에 설명 추가', + 'rule_action_append_notes_to_descr' => '설명에 메모 추가', + 'rule_action_move_descr_to_notes' => '노트를 설명으로 바꾸기', + 'rule_action_move_notes_to_descr' => '설명을 노트로 바꾸기', + 'rulegroup_for_bills_title' => '청구서에 대한 규칙 그룹', + 'rulegroup_for_bills_description' => '청구서와 관련된 모든 규칙을 위한 특별 규칙 그룹입니다.', + 'rule_for_bill_title' => '청구서 ":name"에 대한 자동 생성 규칙', + 'rule_for_bill_description' => '이 규칙은 청구서 ":name"과 일치하도록 자동 생성됩니다.', + 'create_rule_for_bill' => '청구서 ":name"에 대한 새 규칙 만들기', + 'create_rule_for_bill_txt' => '방금 ":name"이라는 새 청구서를 만들었습니다. 축하합니다! Firefly III는 새로운 출금을 이 청구서에 자동으로 연결할 수 있습니다. 예를 들어, 집세를 납부할 때마다 "임대료" 청구서가 해당 비용에 연결됩니다. 이렇게 하면 Firefly III는 어떤 청구서가 만기일이고 어떤 청구서가 만기되지 않았는지 정확하게 보여줄 수 있습니다. 그러기 위해서는 새로운 규칙을 만들어야 합니다. Firefly III에서 몇 가지 합리적인 기본값을 입력해 두었습니다. 이 값이 올바른지 확인하세요. 이 값이 정확하면 Firefly III가 자동으로 올바른 출금을 올바른 청구서에 연결합니다. 트리거를 확인하여 올바른지 확인하고 잘못된 경우 몇 가지를 추가하세요.', + 'new_rule_for_bill_title' => '청구서 ":name"에 대한 규칙', + 'new_rule_for_bill_description' => '이 규칙은 청구서 ":name"에 대한 거래를 표시합니다.', - 'new_rule_for_journal_title' => 'Rule based on transaction ":description"', - 'new_rule_for_journal_description' => 'This rule is based on transaction ":description". It will match transactions that are exactly the same.', + 'new_rule_for_journal_title' => '거래 ":description" 기반 규칙', + 'new_rule_for_journal_description' => '이 규칙은 거래 ":description"을 기반으로 합니다. 정확히 동일한 거래를 매칭할 것입니다.', // tags - 'store_new_tag' => 'Store new tag', - 'update_tag' => 'Update tag', - 'no_location_set' => 'No location set.', - 'meta_data' => 'Meta data', - 'location' => 'Location', - 'without_date' => 'Without date', - 'result' => 'Result', - 'sums_apply_to_range' => 'All sums apply to the selected range', - 'mapbox_api_key' => 'To use map, get an API key from Mapbox. Open your .env file and enter this code after MAPBOX_API_KEY=.', - 'press_object_location' => 'Right click or long press to set the object\'s location.', - 'clear_location' => 'Clear location', - 'delete_all_selected_tags' => 'Delete all selected tags', - 'select_tags_to_delete' => 'Don\'t forget to select some tags.', - 'deleted_x_tags' => 'Deleted :count tag.|Deleted :count tags.', - 'create_rule_from_transaction' => 'Create rule based on transaction', - 'create_recurring_from_transaction' => 'Create recurring transaction based on transaction', + 'store_new_tag' => '새 태그 저장', + 'update_tag' => '태그 업데이트', + 'no_location_set' => '설정된 위치가 없습니다.', + 'meta_data' => '메타데이터', + 'location' => '위치', + 'without_date' => '날짜 없음', + 'result' => '결과', + 'sums_apply_to_range' => '모든 합계는 선택한 범위에 적용됩니다', + 'mapbox_api_key' => '지도를 사용하려면 Mapbox에서 API 키를 받습니다. .env 파일을 열고 MAPBOX_API_KEY= 뒤에 이 코드를 입력합니다.', + 'press_object_location' => '마우스 오른쪽 버튼을 클릭이나 롱 클릭으로 개체의 위치를 설정합니다.', + 'clear_location' => '위치 지우기', + 'delete_all_selected_tags' => '선택된 모든 태그를 삭제', + 'select_tags_to_delete' => '태그를 선택하는 것을 잊지 마세요.', + 'deleted_x_tags' => ':count개의 태그가 삭제되었습니다.|:count개의 태그가 삭제되었습니다.', + 'create_rule_from_transaction' => '거래 기반 규칙 생성', + 'create_recurring_from_transaction' => '거래를 기반으로 반복 거래 만들기', // preferences - 'equal_to_language' => '(equal to language)', - 'pref_home_screen_accounts' => 'Home screen accounts', - 'pref_home_screen_accounts_help' => 'Which accounts should be displayed on the home page?', - 'pref_view_range' => 'View range', - 'pref_view_range_help' => 'Some charts are automatically grouped in periods. Your budgets will also be grouped in periods. What period would you prefer?', + 'equal_to_language' => '(언어와 동일)', + 'pref_home_screen_accounts' => '홈 화면 계정', + 'pref_home_screen_accounts_help' => '홈 페이지에 어떤 계정을 표시해야 하나요?', + 'pref_view_range' => '보기 범위', + 'pref_view_range_help' => '일부 차트는 자동으로 기간별로 그룹화됩니다. 예산도 기간별로 그룹화됩니다. 어떤 기간을 원하시나요?', 'pref_1D' => '하루', 'pref_1W' => '일주일', 'pref_1M' => '한달', @@ -1352,20 +1352,20 @@ return [ 'pref_home_show_deposits' => '홈 화면에 입금 표시', 'pref_home_show_deposits_info' => '홈 화면에는 이미 지출 계정이 표시되고 있습니다. 수익 계정도 표시할까요?', 'pref_home_do_show_deposits' => '네, 보여주세요', - 'successful_count' => 'of which :count successful', - 'list_page_size_title' => 'Page size', - 'list_page_size_help' => 'Any list of things (accounts, transactions, etc) shows at most this many per page.', - 'list_page_size_label' => 'Page size', - 'between_dates' => '(:start and :end)', + 'successful_count' => '이 중 :count개 성공', + 'list_page_size_title' => '페이지 크기', + 'list_page_size_help' => '모든 항목(계정, 거래 등) 목록은 페이지당 최대 이 수만큼 표시됩니다.', + 'list_page_size_label' => '페이지 크기', + 'between_dates' => '(:start와 :end)', 'pref_optional_fields_transaction' => '거래의 옵션 항목', - 'pref_optional_fields_transaction_help' => 'By default not all fields are enabled when creating a new transaction (because of the clutter). Below, you can enable these fields if you think they could be useful for you. Of course, any field that is disabled, but already filled in, will be visible regardless of the setting.', - 'optional_tj_date_fields' => 'Date fields', - 'optional_tj_other_fields' => 'Other fields', - 'optional_tj_attachment_fields' => 'Attachment fields', - 'pref_optional_tj_interest_date' => 'Interest date', - 'pref_optional_tj_book_date' => 'Book date', - 'pref_optional_tj_process_date' => 'Processing date', - 'pref_optional_tj_due_date' => 'Due date', + 'pref_optional_fields_transaction_help' => '기본적으로 새 거래를 만들 때 (복잡하기 때문에) 모든 항목이 활성화되어 있지는 않습니다. 아래에서 유용하다고 생각되는 항목을 활성화할 수 있습니다. 비활성화되어 있지만 이미 입력되어 있는 항목은 설정과 관계없이 모두 표시됩니다.', + 'optional_tj_date_fields' => '날짜 항목', + 'optional_tj_other_fields' => '기타 항목', + 'optional_tj_attachment_fields' => '첨부 파일 항목', + 'pref_optional_tj_interest_date' => '이자 날짜', + 'pref_optional_tj_book_date' => '예약 날짜', + 'pref_optional_tj_process_date' => '처리 날짜', + 'pref_optional_tj_due_date' => '마감 날짜', 'pref_optional_tj_payment_date' => '결제일', 'pref_optional_tj_invoice_date' => '청구서 날짜', 'pref_optional_tj_internal_reference' => '내부 참조', @@ -1394,15 +1394,15 @@ return [ // profile: 'purge_data_title' => 'Firefly III에서 데이터 제거', - 'purge_data_expl' => '"Purging" means "deleting that which is already deleted". In normal circumstances, Firefly III deletes nothing permanently. It just hides it. The button below deletes all of these previously "deleted" records FOREVER.', + 'purge_data_expl' => '"제거"는 "이미 삭제된 것을 삭제하는 것"을 의미합니다. 일반적인 상황에서 Firefly III는 아무것도 영구적으로 삭제하지 않습니다. 단지 숨길 뿐입니다. 아래 버튼을 누르면 이전에 "삭제된" 모든 기록이 영원히 제거됩니다.', 'delete_stuff_header' => '데이터 삭제 및 제거', 'purge_all_data' => '삭제된 모든 기록 제거', 'purge_data' => '데이터 제거', 'purged_all_records' => '모든 삭제된 항목이 제거 되었습니다.', 'delete_data_title' => 'Firefly III에서 데이터 삭제', - 'permanent_delete_stuff' => 'You can delete stuff from Firefly III. Using the buttons below means that your items will be removed from view and hidden. There is no undo-button for this, but the items may remain in the database where you can salvage them if necessary.', - 'other_sessions_logged_out' => 'All your other sessions have been logged out.', - 'delete_unused_accounts' => 'Deleting unused accounts will clean your auto-complete lists.', + 'permanent_delete_stuff' => 'Firefly III에서 항목을 삭제할 수 있습니다. 아래 버튼을 사용하면 항목이 보기에서 숨겨집니다. 이 경우 실행 취소 버튼은 없지만 항목은 여전히 데이터베이스에 남아 있기 때문에 필요한 경우 복구할 수 있습니다.', + 'other_sessions_logged_out' => '다른 모든 세션이 로그아웃되었습니다.', + 'delete_unused_accounts' => '사용하지 않는 계정을 삭제하면 자동 완성 목록이 정리됩니다.', 'delete_all_unused_accounts' => '사용하지 않는 계정 삭제', 'deleted_all_unused_accounts' => '사용하지 않는 모든 계정이 삭제되었습니다', 'delete_all_budgets' => '모든 예산 삭제', @@ -1455,55 +1455,55 @@ return [ 'password_changed' => '비밀번호가 변경되었습니다!', 'should_change' => '비밀번호를 변경하는 것이 좋습니다.', 'invalid_password' => '비밀번호가 잘못되었습니다!', - 'what_is_pw_security' => 'What is "verify password security"?', - 'secure_pw_title' => 'How to choose a secure password', - 'forgot_password_response' => 'Thank you. If an account exists with this email address, you will find instructions in your inbox.', - 'secure_pw_history' => 'Not a week goes by that you read in the news about a site losing the passwords of its users. Hackers and thieves use these passwords to try to steal your private information. This information is valuable.', - 'secure_pw_ff' => 'Do you use the same password all over the internet? If one site loses your password, hackers have access to all your data. Firefly III relies on you to choose a strong and unique password to protect your financial records.', - 'secure_pw_check_box' => 'To help you do that Firefly III can check if the password you want to use has been stolen in the past. If this is the case, Firefly III advises you NOT to use that password.', - 'secure_pw_working_title' => 'How does it work?', - 'secure_pw_working' => 'By checking the box, Firefly III will send the first five characters of the SHA1 hash of your password to the website of Troy Hunt to see if it is on the list. This will stop you from using unsafe passwords as is recommended in the latest NIST Special Publication on this subject.', - 'secure_pw_should' => 'Should I check the box?', - 'secure_pw_long_password' => 'Yes. Always verify your password is safe.', - 'command_line_token' => 'Command line token', - 'explain_command_line_token' => 'You need this token to perform command line options, such as exporting data. Without it, that sensitive command will not work. Do not share your command line token. Nobody will ask you for this token, not even me. If you fear you lost this, or when you\'re paranoid, regenerate this token using the button.', - 'regenerate_command_line_token' => 'Regenerate command line token', - 'token_regenerated' => 'A new command line token was generated', - 'change_your_email' => 'Change your email address', - 'email_verification' => 'An email message will be sent to your old AND new email address. For security purposes, you will not be able to login until you verify your new email address. If you are unsure if your Firefly III installation is capable of sending email, please do not use this feature. If you are an administrator, you can test this in the Administration.', - 'email_changed_logout' => 'Until you verify your email address, you cannot login.', - 'login_with_new_email' => 'You can now login with your new email address.', - 'login_with_old_email' => 'You can now login with your old email address again.', - 'login_provider_local_only' => 'This action is not available when authenticating through ":login_provider".', - 'external_user_mgt_disabled' => 'This action is not available when Firefly III isn\'t responsible for user management or authentication handling.', - 'external_auth_disabled' => 'This action is not available when Firefly III isn\'t responsible for authentication handling.', - 'delete_local_info_only' => "Because Firefly III isn't responsible for user management or authentication handling, this function will only delete local Firefly III information.", + 'what_is_pw_security' => '"비밀번호 보안 확인"이란 무엇인가요?', + 'secure_pw_title' => '안전한 비밀번호를 선택하는 방법', + 'forgot_password_response' => '감사합니다. 이 이메일 주소를 사용하는 계정이 있는 경우 받은 편지함에서 지침을 찾을 수 있습니다.', + 'secure_pw_history' => '매주 사용자의 암호를 잃어버린 사이트에 대한 뉴스를 접하게 됩니다. 해커와 도둑은 이러한 비밀번호를 사용하여 개인 정보를 훔치려고 시도합니다. 이 정보는 매우 중요합니다.', + 'secure_pw_ff' => '인터넷에서 모두 동일한 비밀번호를 사용하시나요? 한 사이트에서 비밀번호를 분실하면 해커가 모든 데이터에 액세스할 수 있습니다. Firefly III에서는 사용자의 금융 기록을 보호하기 위해 강력하고 고유한 비밀번호를 지정해야 합니다.', + 'secure_pw_check_box' => '이를 위해 Firefly III는 사용하려는 비밀번호가 과거에 도용된 적이 있는지 확인할 수 있습니다. 도용된 적이 있는 경우 Firefly III는 해당 비밀번호를 사용하지 말 것을 권고합니다.', + 'secure_pw_working_title' => '어떻게 작동하나요?', + 'secure_pw_working' => '이 확인란을 선택하면 Firefly III가 비밀번호의 SHA1 해시 중 처음 다섯 문자를 트로이 헌트 웹사이트로 전송하여 목록에 있는지 확인합니다. 이렇게 하면 이 주제에 관한 최신 NIST 특별 간행물에서 권장하는 대로 안전하지 않은 비밀번호를 사용하는 것을 방지할 수 있습니다.', + 'secure_pw_should' => '확인란을 선택해야 하나요?', + 'secure_pw_long_password' => '예. 비밀번호가 안전한지 항상 확인하세요.', + 'command_line_token' => '명령줄 토큰', + 'explain_command_line_token' => '데이터 내보내기와 같은 명령줄 옵션을 수행하려면 이 토큰이 필요합니다. 이 토큰이 없으면 민감한 명령이 작동하지 않습니다. 명령줄 토큰을 공유하지 마세요. 저를 포함해 그 누구도 이 토큰을 요구하지 않습니다. 분실할까 봐 걱정되거나 불안한 경우에는 버튼을 사용하여 토큰을 다시 생성하세요.', + 'regenerate_command_line_token' => '명령줄 토큰 다시 생성', + 'token_regenerated' => '새로운 명령줄 토큰이 생성되었습니다', + 'change_your_email' => '이메일 주소 변경', + 'email_verification' => '기존 이메일 주소와 새 이메일 주소로 이메일 메시지가 전송됩니다. 보안을 위해 새 이메일 주소를 확인할 때까지 로그인할 수 없습니다. Firefly III 설치할 때 이메일 전송이 가능한지 확실하지 않은 경우 이 기능을 사용하지 마세요. 관리자인 경우 관리 페이지에서 이 기능을 테스트할 수 있습니다.', + 'email_changed_logout' => '이메일 주소를 인증할 때까지 로그인할 수 없습니다.', + 'login_with_new_email' => '이제 새 이메일 주소로 로그인할 수 있습니다.', + 'login_with_old_email' => '이제 이전 이메일 주소로 다시 로그인할 수 있습니다.', + 'login_provider_local_only' => '":login_provider"를 통해 인증하는 경우에는 이 작업을 사용할 수 없습니다.', + 'external_user_mgt_disabled' => 'Firefly III가 사용자 관리 또는 인증 처리를 담당하지 않는 경우 이 작업을 사용할 수 없습니다.', + 'external_auth_disabled' => 'Firefly III가 인증 처리를 담당하지 않는 경우 이 작업을 사용할 수 없습니다.', + 'delete_local_info_only' => "Firefly III는 사용자 관리 또는 인증 처리를 담당하지 않기 때문에 이 기능은 로컬 Firefly III 정보만 삭제합니다.", 'oauth' => 'OAuth', - 'profile_oauth_clients' => 'OAuth Clients', - 'profile_oauth_no_clients' => 'You have not created any OAuth clients.', - 'profile_oauth_clients_external_auth' => 'If you\'re using an external authentication provider like Authelia, OAuth Clients will not work. You can use Personal Access Tokens only.', - 'profile_oauth_clients_header' => 'Clients', - 'profile_oauth_client_id' => 'Client ID', - 'profile_oauth_client_name' => 'Name', - 'profile_oauth_client_secret' => 'Secret', - 'profile_oauth_create_new_client' => 'Create New Client', - 'profile_oauth_create_client' => 'Create Client', - 'profile_oauth_edit_client' => 'Edit Client', - 'profile_oauth_name_help' => 'Something your users will recognize and trust.', - 'profile_oauth_redirect_url' => 'Redirect URL', - 'profile_oauth_redirect_url_help' => 'Your application\'s authorization callback URL.', - 'profile_authorized_apps' => 'Authorized applications', - 'profile_authorized_clients' => 'Authorized clients', + 'profile_oauth_clients' => 'OAuth 클라이언트', + 'profile_oauth_no_clients' => 'OAuth 클라이언트를 만들지 않았습니다.', + 'profile_oauth_clients_external_auth' => 'Authelia와 같은 외부 인증 제공업체를 사용하는 경우 OAuth 클라이언트가 작동하지 않습니다. 개인 액세스 토큰만 사용할 수 있습니다.', + 'profile_oauth_clients_header' => '클라이언트', + 'profile_oauth_client_id' => '클라이언트 ID', + 'profile_oauth_client_name' => '이름', + 'profile_oauth_client_secret' => '시크릿', + 'profile_oauth_create_new_client' => '새로운 클라이언트 만들기', + 'profile_oauth_create_client' => '클라이언트 만들기', + 'profile_oauth_edit_client' => '클라이언트 수정', + 'profile_oauth_name_help' => '사용자가 인지하고 신뢰할 수 있는 것.', + 'profile_oauth_redirect_url' => '리디렉션 URL', + 'profile_oauth_redirect_url_help' => '애플리케이션의 인증 콜백 URL입니다.', + 'profile_authorized_apps' => '인증된 애플리케이션', + 'profile_authorized_clients' => '인증된 클라이언트', 'profile_scopes' => '범위', 'profile_revoke' => '취소', 'profile_oauth_client_secret_title' => '클라이언트 시크릿', - 'profile_oauth_client_secret_expl' => 'Here is your new client secret. This is the only time it will be shown so don\'t lose it! You may now use this secret to make API requests.', + 'profile_oauth_client_secret_expl' => '다음은 새 클라이언트 암호입니다. 이번 한 번만 표시되니 놓치지 마세요! 이제 이 비밀 번호를 사용하여 API 요청을 할 수 있습니다.', 'profile_personal_access_tokens' => '개인 액세스 토큰', 'profile_personal_access_token' => '개인 액세스 토큰', 'profile_oauth_confidential' => '비밀', - 'profile_oauth_confidential_help' => 'Require the client to authenticate with a secret. Confidential clients can hold credentials in a secure way without exposing them to unauthorized parties. Public applications, such as native desktop or JavaScript SPA applications, are unable to hold secrets securely.', - 'profile_personal_access_token_explanation' => 'Here is your new personal access token. This is the only time it will be shown so don\'t lose it! You may now use this token to make API requests.', - 'profile_no_personal_access_token' => 'You have not created any personal access tokens.', + 'profile_oauth_confidential_help' => '클라이언트가 시크릿으로 인증하도록 요구합니다. 기밀 클라이언트는 권한이 없는 사람에게 자격 증명을 노출하지 않고 안전한 방식으로 자격 증명을 보관할 수 있습니다. 기본 데스크톱 또는 JavaScript SPA 애플리케이션과 같은 공개 애플리케이션은 시크릿을 안전하게 보관할 수 없습니다.', + 'profile_personal_access_token_explanation' => '다음은 새 개인용 액세스 토큰입니다. 이번 한 번만 표시되니 놓치지 마세요! 이제 이 토큰을 사용하여 API 요청을 할 수 있습니다.', + 'profile_no_personal_access_token' => '개인 액세스 토큰을 생성하지 않았습니다.', 'profile_create_new_token' => '새로운 토큰 만들기', 'profile_create_token' => '토큰 생성', 'profile_create' => '생성', @@ -1512,10 +1512,10 @@ return [ 'profile_something_wrong' => '문제가 발생했습니다!', 'profile_try_again' => '문제가 발생했습니다. 다시 시도해주세요.', 'amounts' => '금액', - 'multi_account_warning_unknown' => 'Depending on the type of transaction you create, the source and/or destination account of subsequent splits may be overruled by whatever is defined in the first split of the transaction.', - 'multi_account_warning_withdrawal' => 'Keep in mind that the source account of subsequent splits will be overruled by whatever is defined in the first split of the withdrawal.', - 'multi_account_warning_deposit' => 'Keep in mind that the destination account of subsequent splits will be overruled by whatever is defined in the first split of the deposit.', - 'multi_account_warning_transfer' => 'Keep in mind that the source + destination account of subsequent splits will be overruled by whatever is defined in the first split of the transfer.', + 'multi_account_warning_unknown' => '생성한 거래 유형에 따라 뒤따르는 분할의 소스 및/또는 대상 계정은 대상 계정 거래의 첫 번째 분할에 정의된 내용에 따라 무시될 수 있습니다.', + 'multi_account_warning_withdrawal' => '뒤따르는 분할의 소스 계정은 첫 번째 출금 분할에 정의된 내용에 따라 재정의된다는 점에 유의하시기 바랍니다.', + 'multi_account_warning_deposit' => '뒤따르는 분할의 대상 계정은 첫 번째 입금 분할에 정의된 내용에 따라 재정의된다는 점에 유의하시기 바랍니다.', + 'multi_account_warning_transfer' => '뒤따르는 분할의 소스 + 대상 계정은 첫 번째 이체 분할에 정의된 내용에 따라 재정의된다는 점에 유의하시기 바랍니다.', /* * PLEASE DO NOT EDIT THIS FILE DIRECTLY. @@ -1534,21 +1534,21 @@ return [ 'export_data_menu' => '데이터 내보내기', 'export_data_bc' => 'Firefly III에서 데이터 내보내기', 'export_data_main_title' => 'Firefly III에서 데이터 내보내기', - 'export_data_expl' => 'This link allows you to export all transactions + meta data from Firefly III. Please refer to the help (top right (?)-icon) for more information about the process.', + 'export_data_expl' => '이 링크를 통해 Firefly III에서 모든 거래 + 메타 데이터를 내보낼 수 있습니다. 프로세스에 대한 자세한 내용은 도움말(오른쪽 상단(?)-아이콘)을 참조하세요.', 'export_data_all_transactions' => '모든 거래 내보내기', - 'export_data_advanced_expl' => 'If you need a more advanced or specific type of export, read the help on how to use the console command php artisan help firefly-iii:export-data.', + 'export_data_advanced_expl' => '고급 또는 특정 유형의 내보내기가 필요한 경우 콘솔 명령 php artisan help firefly-iii:export-data 으로 사용법에 대한 도움말을 읽으십시오.', // attachments - 'nr_of_attachments' => 'One attachment|:count attachments', + 'nr_of_attachments' => '하나의 첨부 파일|:count개의 첨부 파일', 'attachments' => '첨부 파일', - 'edit_attachment' => 'Edit attachment ":name"', - 'update_attachment' => 'Update attachment', - 'delete_attachment' => 'Delete attachment ":name"', - 'attachment_deleted' => 'Deleted attachment ":name"', - 'liabilities_deleted' => 'Deleted liability ":name"', - 'attachment_updated' => 'Updated attachment ":name"', + 'edit_attachment' => '":name" 첨부파일 수정', + 'update_attachment' => '첨부파일 업데이트', + 'delete_attachment' => '":name" 첨부파일 삭제', + 'attachment_deleted' => '":name" 첨부파일 삭제됨', + 'liabilities_deleted' => '":name" 부채 삭제됨', + 'attachment_updated' => '":name" 첨부파일 업데이트됨', 'upload_max_file_size' => '최대 파일 크기: :size', - 'list_all_attachments' => 'List of all attachments', + 'list_all_attachments' => '모든 첨부 파일 목록', // transaction index 'title_expenses' => '지출', @@ -1559,43 +1559,43 @@ return [ 'title_transfers' => '이체', 'submission_options' => '제출 옵션', 'apply_rules_checkbox' => '규칙 적용', - 'fire_webhooks_checkbox' => 'Fire webhooks', + 'fire_webhooks_checkbox' => '웹훅 실행', // convert stuff: 'convert_is_already_type_Withdrawal' => '이 거래는 이미 출금되었습니다', 'convert_is_already_type_Deposit' => '이 거래는 이미 입금되었습니다', 'convert_is_already_type_Transfer' => '이 거래는 이미 이체되었습니다', - 'convert_to_Withdrawal' => 'Convert ":description" to a withdrawal', - 'convert_to_Deposit' => 'Convert ":description" to a deposit', - 'convert_to_Transfer' => 'Convert ":description" to a transfer', - 'convert_options_WithdrawalDeposit' => 'Convert a withdrawal into a deposit', - 'convert_options_WithdrawalTransfer' => 'Convert a withdrawal into a transfer', - 'convert_options_DepositTransfer' => 'Convert a deposit into a transfer', - 'convert_options_DepositWithdrawal' => 'Convert a deposit into a withdrawal', - 'convert_options_TransferWithdrawal' => 'Convert a transfer into a withdrawal', - 'convert_options_TransferDeposit' => 'Convert a transfer into a deposit', - 'convert_Withdrawal_to_deposit' => 'Convert this withdrawal to a deposit', - 'convert_Withdrawal_to_transfer' => 'Convert this withdrawal to a transfer', - 'convert_Deposit_to_withdrawal' => 'Convert this deposit to a withdrawal', - 'convert_Deposit_to_transfer' => 'Convert this deposit to a transfer', - 'convert_Transfer_to_deposit' => 'Convert this transfer to a deposit', - 'convert_Transfer_to_withdrawal' => 'Convert this transfer to a withdrawal', - 'convert_please_set_revenue_source' => 'Please pick the revenue account where the money will come from.', - 'convert_please_set_asset_destination' => 'Please pick the asset account where the money will go to.', - 'convert_please_set_expense_destination' => 'Please pick the expense account where the money will go to.', - 'convert_please_set_asset_source' => 'Please pick the asset account where the money will come from.', - 'convert_expl_w_d' => 'When converting from a withdrawal to a deposit, the money will be deposited into the displayed destination account, instead of being withdrawn from it.|When converting from a withdrawal to a deposit, the money will be deposited into the displayed destination accounts, instead of being withdrawn from them.', - 'convert_expl_w_t' => 'When converting a withdrawal into a transfer, the money will be transferred away from the source account into other asset or liability account instead of being spent on the original expense account.|When converting a withdrawal into a transfer, the money will be transferred away from the source accounts into other asset or liability accounts instead of being spent on the original expense accounts.', - 'convert_expl_d_w' => 'When converting a deposit into a withdrawal, the money will be withdrawn from the displayed source account, instead of being deposited into it.|When converting a deposit into a withdrawal, the money will be withdrawn from the displayed source accounts, instead of being deposited into them.', - 'convert_expl_d_t' => 'When you convert a deposit into a transfer, the money will be deposited into the listed destination account from any of your asset or liability account.|When you convert a deposit into a transfer, the money will be deposited into the listed destination accounts from any of your asset or liability accounts.', - 'convert_expl_t_w' => 'When you convert a transfer into a withdrawal, the money will be spent on the destination account you set here, instead of being transferred away.|When you convert a transfer into a withdrawal, the money will be spent on the destination accounts you set here, instead of being transferred away.', - 'convert_expl_t_d' => 'When you convert a transfer into a deposit, the money will be deposited into the destination account you see here, instead of being transferred into it.|When you convert a transfer into a deposit, the money will be deposited into the destination accounts you see here, instead of being transferred into them.', - 'convert_select_sources' => 'To complete the conversion, please set the new source account below.|To complete the conversion, please set the new source accounts below.', - 'convert_select_destinations' => 'To complete the conversion, please select the new destination account below.|To complete the conversion, please select the new destination accounts below.', - 'converted_to_Withdrawal' => 'The transaction has been converted to a withdrawal', - 'converted_to_Deposit' => 'The transaction has been converted to a deposit', - 'converted_to_Transfer' => 'The transaction has been converted to a transfer', - 'invalid_convert_selection' => 'The account you have selected is already used in this transaction or does not exist.', + 'convert_to_Withdrawal' => '":description"을 출금으로 전환', + 'convert_to_Deposit' => '":description"을 입금으로 전환', + 'convert_to_Transfer' => '":description"을 이체로 전환', + 'convert_options_WithdrawalDeposit' => '출금을 입금으로 전환', + 'convert_options_WithdrawalTransfer' => '출금을 이체로 전환', + 'convert_options_DepositTransfer' => '입금을 이체로 전환', + 'convert_options_DepositWithdrawal' => '입금을 출금으로 전환', + 'convert_options_TransferWithdrawal' => '이체를 출금으로 전환', + 'convert_options_TransferDeposit' => '이체를 입금으로 전환', + 'convert_Withdrawal_to_deposit' => '이 출금을 입금으로 전환', + 'convert_Withdrawal_to_transfer' => '이 출금을 이체로 전환', + 'convert_Deposit_to_withdrawal' => '이 입금을 출금으로 전환', + 'convert_Deposit_to_transfer' => '이 입금을 이체로 전환', + 'convert_Transfer_to_deposit' => '이 이체를 입금으로 전환', + 'convert_Transfer_to_withdrawal' => '이 이체를 출금으로 전환', + 'convert_please_set_revenue_source' => '돈이 나올 수익 계정을 선택하세요.', + 'convert_please_set_asset_destination' => '돈이 들어갈 자산 계정을 선택하세요.', + 'convert_please_set_expense_destination' => '돈이 들어갈 비용 계정을 선택하세요.', + 'convert_please_set_asset_source' => '돈이 나올 자산 계정을 선택하세요.', + 'convert_expl_w_d' => '출금에서 입금으로 변환할 때는 금액이 인출되지 않고 표시된 대상 계좌로 입금됩니다.|출금에서 입금으로 변환할 때는 금액이 출금되지 않고 표시된 대상 계좌로 입금됩니다.', + 'convert_expl_w_t' => '출금을 이체로 전환하는 경우, 해당 금액은 원래의 비용 계정에서 지출되지 않고 소스 계정에서 다른 자산 또는 부채 계정으로 이체됩니다.|인출을 이체로 전환하는 경우, 해당 금액은 원래의 비용 계정에서 지출되지 않고 소스 계정에서 다른 자산 또는 부채 계정으로 이체됩니다.', + 'convert_expl_d_w' => '입금을 출금으로 전환하는 경우 표시된 소스 계좌에 입금되지 않고 표시된 소스 계좌에서 출금됩니다.|입금을 출금으로 전환하는 경우 표시된 소스 계좌에 입금되지 않고 표시된 소스 계좌에서 출금됩니다.', + 'convert_expl_d_t' => '입금을 이체로 전환하는 경우 자산 또는 부채 계좌에서 나열된 대상 계좌로 금액이 입금됩니다.|입금을 이체로 전환하는 경우 자산 또는 부채 계좌에서 나열된 대상 계좌로 금액이 입금됩니다.', + 'convert_expl_t_w' => '이체를 출금으로 전환하는 경우 이 금액은 다른 계좌로 이체되지 않고 여기에서 설정한 대상 계좌에서 지출됩니다.|이체를 출금으로 전환하는 경우 이 금액은 다른 계좌로 이체되지 않고 여기에서 설정한 대상 계좌에서 지출됩니다.', + 'convert_expl_t_d' => '이체를 입금으로 전환하는 경우 돈이 이체되는 대신 여기에 표시된 대상 계좌로 입금됩니다.|이체를 입금으로 전환하는 경우 돈이 이체되는 대신 여기에 표시된 대상 계좌로 입금됩니다.', + 'convert_select_sources' => '전환을 완료하려면 아래에 새 소스 계정을 설정하세요.|전환을 완료하려면 아래에 새 소스 계정들을 설정하세요.', + 'convert_select_destinations' => '전환을 완료하려면 아래에 새 대상 계정을 설정하세요.|전환을 완료하려면 아래에 새 대상 계정들을 설정하세요.', + 'converted_to_Withdrawal' => '거래가 출금으로 전환되었습니다', + 'converted_to_Deposit' => '거래가 입금으로 전환되었습니다', + 'converted_to_Transfer' => '거래가 이체로 전환되었습니다', + 'invalid_convert_selection' => '선택한 계정이 이 거래에서 이미 사용 중이거나 존재하지 않습니다.', 'source_or_dest_invalid' => '올바른 거래 세부정보를 찾을 수 없습니다. 변환할 수 없습니다.', 'convert_to_withdrawal' => '출금으로 전환', 'convert_to_deposit' => '입금으로 전환', @@ -1619,30 +1619,30 @@ return [ 'new_default_currency' => '기본 통화는 이제 :name 입니다.', 'cannot_delete_currency' => ':name을(를) 아직 사용 중이므로 삭제할 수 없습니다.', 'cannot_delete_fallback_currency' => ':name은 시스템 대체 통화이며 삭제할 수 없습니다.', - 'cannot_disable_currency_journals' => 'Cannot disable :name because transactions are still using it.', - 'cannot_disable_currency_last_left' => 'Cannot disable :name because it is the last enabled currency.', - 'cannot_disable_currency_account_meta' => 'Cannot disable :name because it is used in asset accounts.', - 'cannot_disable_currency_bills' => 'Cannot disable :name because it is used in bills.', - 'cannot_disable_currency_recurring' => 'Cannot disable :name because it is used in recurring transactions.', - 'cannot_disable_currency_available_budgets' => 'Cannot disable :name because it is used in available budgets.', - 'cannot_disable_currency_budget_limits' => 'Cannot disable :name because it is used in budget limits.', + 'cannot_disable_currency_journals' => '거래가 여전히 :name을 사용하고 있으므로 비활성화할 수 없습니다.', + 'cannot_disable_currency_last_left' => ':name은 마지막으로 활성화한 통화이므로 비활성화할 수 없습니다.', + 'cannot_disable_currency_account_meta' => ':name은 자산 계정에서 사용되므로 비활성화할 수 없습니다.', + 'cannot_disable_currency_bills' => ':name은 청구서에서 사용되므로 비활성화할 수 없습니다.', + 'cannot_disable_currency_recurring' => ':name은 반복 거래에서 사용되므로 비활성화할 수 없습니다.', + 'cannot_disable_currency_available_budgets' => ':name은 사용가능한 예산에서 사용되므로 비활성화할 수 없습니다.', + 'cannot_disable_currency_budget_limits' => '예산 한도에서 사용되므로 :name을 비활성화할 수 없습니다.', 'cannot_disable_currency_current_default' => ':name은 현재 기본 통화이므로 비활성화 할 수 없습니다.', - 'cannot_disable_currency_system_fallback' => 'Cannot disable :name because it is the system default currency.', - 'disable_EUR_side_effects' => 'The Euro is the system\'s emergency fallback currency. Disabling it may have unintended side-effects and may void your warranty.', - 'deleted_currency' => 'Currency :name deleted', - 'created_currency' => 'Currency :name created', - 'could_not_store_currency' => 'Could not store the new currency.', - 'updated_currency' => 'Currency :name updated', - 'ask_site_owner' => 'Please ask :owner to add, remove or edit currencies.', - 'currencies_intro' => 'Firefly III supports various currencies which you can set and enable here.', + 'cannot_disable_currency_system_fallback' => ':name은 시스템 기본 통화이므로 비활성화할 수 없습니다.', + 'disable_EUR_side_effects' => '유로화는 시스템의 비상 대체 통화입니다. 이를 비활성화하면 의도하지 않은 부작용이 발생할 수 있으며 보증이 무효화될 수 있습니다.', + 'deleted_currency' => ':name 통화 삭제됨', + 'created_currency' => ':name 통화 생성됨', + 'could_not_store_currency' => '새 통화를 저장할 수 없습니다.', + 'updated_currency' => ':name 통화 업데이트됨', + 'ask_site_owner' => '통화를 추가, 제거 또는 수정하려면 :owner에게 문의하세요.', + 'currencies_intro' => 'Firefly III는 여기에서 설정하고 활성화할 수 있는 다양한 통화를 지원합니다.', 'make_default_currency' => '기본값으로 설정', 'default_currency' => '기본값', 'currency_is_disabled' => '비활성화됨', 'enable_currency' => '활성화', 'disable_currency' => '비활성화', 'currencies_default_disabled' => '이러한 통화는 대부분 기본적으로 비활성화되어 있습니다. 사용하려면 먼저 활성화해야 합니다.', - 'currency_is_now_enabled' => 'Currency ":name" has been enabled', - 'currency_is_now_disabled' => 'Currency ":name" has been disabled', + 'currency_is_now_enabled' => '":name" 통화가 활성화되었습니다', + 'currency_is_now_disabled' => '":name" 통화가 비활성화되었습니다', // forms: 'mandatoryFields' => '필수 입력 항목', @@ -1657,253 +1657,253 @@ return [ 'half_year_budgets' => '반기 예산', 'yearly_budgets' => '연간 예산', 'other_budgets' => '사용자 정의 시간 예산', - 'budget_limit_not_in_range' => 'This amount applies from :start to :end:', - 'total_available_budget' => 'Total available budget (between :start and :end)', - 'total_available_budget_in_currency' => 'Total available budget in :currency', - 'see_below' => 'see below', - 'create_new_budget' => 'Create a new budget', - 'store_new_budget' => 'Store new budget', - 'stored_new_budget' => 'Stored new budget ":name"', - 'available_between' => 'Available between :start and :end', - 'transactionsWithoutBudget' => 'Expenses without budget', - 'transactions_no_budget' => 'Expenses without budget between :start and :end', - 'spent_between' => 'Already spent between :start and :end', - 'set_available_amount' => 'Set available amount', - 'update_available_amount' => 'Update available amount', - 'ab_basic_modal_explain' => 'Use this form to indicate how much you expect to be able to budget (in total, in :currency) in the indicated period.', - 'createBudget' => 'New budget', - 'invalid_currency' => 'This is an invalid currency', - 'invalid_amount' => 'Please enter an amount', - 'set_ab' => 'The available budget amount has been set', - 'updated_ab' => 'The available budget amount has been updated', - 'deleted_ab' => 'The available budget amount has been deleted', - 'deleted_bl' => 'The budgeted amount has been removed', - 'alt_currency_ab_create' => 'Set the available budget in another currency', - 'bl_create_btn' => 'Set budget in another currency', - 'inactiveBudgets' => 'Inactive budgets', - 'without_budget_between' => 'Transactions without a budget between :start and :end', - 'delete_budget' => 'Delete budget ":name"', - 'deleted_budget' => 'Deleted budget ":name"', - 'edit_budget' => 'Edit budget ":name"', - 'updated_budget' => 'Updated budget ":name"', - 'update_amount' => 'Update amount', - 'update_budget' => 'Update budget', - 'update_budget_amount_range' => 'Update (expected) available amount between :start and :end', - 'set_budget_limit_title' => 'Set budgeted amount for budget :budget between :start and :end', + 'budget_limit_not_in_range' => '이 금액은 :start부터 :end까지 적용됩니다', + 'total_available_budget' => '사용 가능한 총 예산 (:start에서 :end 사이)', + 'total_available_budget_in_currency' => ':currency로 사용 가능한 총 예산', + 'see_below' => '아래를 참조하세요.', + 'create_new_budget' => '새로운 예산 생성', + 'store_new_budget' => '새 예산 저장', + 'stored_new_budget' => '새 예산 ":name" 저장됨', + 'available_between' => ':start와 :end 사이에서 사용 가능', + 'transactionsWithoutBudget' => '예산이 없는 지출', + 'transactions_no_budget' => ':start과 :end 사이에 예산이 없는 지출', + 'spent_between' => ':start와 :end 사이에 이미 사용되었습니다', + 'set_available_amount' => '사용 가능한 금액 설정', + 'update_available_amount' => '사용 가능한 금액 업데이트', + 'ab_basic_modal_explain' => '이 양식을 사용하여 지정한 기간에 예산을 책정할 수 있을 것으로 예상되는 금액(총액, :currency)을 표시하세요.', + 'createBudget' => '새 예산', + 'invalid_currency' => '유효하지 않은 통화입니다', + 'invalid_amount' => '금액을 입력하세요', + 'set_ab' => '사용 가능한 예산 금액이 설정되었습니다', + 'updated_ab' => '사용 가능한 예산 금액이 업데이트되었습니다', + 'deleted_ab' => '사용 가능한 예산 금액이 삭제되었습니다', + 'deleted_bl' => '예산 금액이 제거되었습니다', + 'alt_currency_ab_create' => '사용 가능한 예산을 다른 통화로 설정', + 'bl_create_btn' => '다른 통화로 예산 설정', + 'inactiveBudgets' => '비활성 예산', + 'without_budget_between' => ':start과 :end 사이에 예산이 없는 거래', + 'delete_budget' => '":name" 예산 삭제', + 'deleted_budget' => '":name" 예산 삭제됨', + 'edit_budget' => '":name" 예산 수정', + 'updated_budget' => '":name" 예산 업데이트됨', + 'update_amount' => '금액 업데이트', + 'update_budget' => '예산 업데이트', + 'update_budget_amount_range' => ':start과 :end 사이의 사용 가능한 금액 업데이트 (예상)', + 'set_budget_limit_title' => ':start과 :end 사이에 예산 :budget에 대한 예산 금액 설정', 'set_budget_limit' => '예산 금액 설정', 'budget_period_navigator' => '기간 탐색기', - 'info_on_available_amount' => 'What do I have available?', - 'available_amount_indication' => 'Use these amounts to get an indication of what your total budget could be.', - 'suggested' => 'Suggested', - 'average_between' => 'Average between :start and :end', - 'transferred_in' => 'Transferred (in)', - 'transferred_away' => 'Transferred (away)', - 'auto_budget_none' => 'No auto-budget', - 'auto_budget_reset' => 'Set a fixed amount every period', - 'auto_budget_rollover' => 'Add an amount every period', - 'auto_budget_period_daily' => 'Daily', - 'auto_budget_period_weekly' => 'Weekly', - 'auto_budget_period_monthly' => 'Monthly', - 'auto_budget_period_quarterly' => 'Quarterly', - 'auto_budget_period_half_year' => 'Every half year', - 'auto_budget_period_yearly' => 'Yearly', - 'auto_budget_help' => 'You can read more about this feature in the help. Click the top-right (?) icon.', - 'auto_budget_reset_icon' => 'This budget will be set periodically', - 'auto_budget_rollover_icon' => 'The budget amount will increase periodically', - 'remove_budgeted_amount' => 'Remove budgeted amount in :currency', + 'info_on_available_amount' => '무엇을 사용할 수 있나요?', + 'available_amount_indication' => '이 금액을 사용하여 총 예산이 얼마인지 파악할 수 있습니다.', + 'suggested' => '추천', + 'average_between' => ':start과 :end 사이의 평균', + 'transferred_in' => '전송됨 (입)', + 'transferred_away' => '전송됨 (출)', + 'auto_budget_none' => '자동 예산 없음', + 'auto_budget_reset' => '매 기간마다 고정 금액 설정', + 'auto_budget_rollover' => '기간마다 금액 추가', + 'auto_budget_period_daily' => '매일', + 'auto_budget_period_weekly' => '매주', + 'auto_budget_period_monthly' => '월간', + 'auto_budget_period_quarterly' => '분기별', + 'auto_budget_period_half_year' => '반년마다', + 'auto_budget_period_yearly' => '연간', + 'auto_budget_help' => '이 기능에 대한 자세한 내용은 도움말에서 확인할 수 있습니다. 오른쪽 상단의 (?) 아이콘을 클릭합니다.', + 'auto_budget_reset_icon' => '이 예산은 주기적으로 설정됩니다.', + 'auto_budget_rollover_icon' => '예산 금액은 주기적으로 증가합니다.', + 'remove_budgeted_amount' => ':currency에서 예산 금액 제거', // bills: - 'not_expected_period' => 'Not expected this period', - 'not_or_not_yet' => 'Not (yet)', - 'visit_bill' => 'Visit bill ":name" at Firefly III', - 'match_between_amounts' => 'Bill matches transactions between :low and :high.', - 'running_again_loss' => 'Previously linked transactions to this bill may lose their connection, if they (no longer) match the rule(s).', - 'bill_related_rules' => 'Rules related to this bill', - 'repeats' => 'Repeats', - 'bill_end_date_help' => 'Optional field. The bill is expected to end on this date.', - 'bill_extension_date_help' => 'Optional field. The bill must be extended (or cancelled) on or before this date.', - 'bill_end_index_line' => 'This bill ends on :date', - 'bill_extension_index_line' => 'This bill must be extended or cancelled on :date', - 'connected_journals' => 'Connected transactions', - 'auto_match_on' => 'Automatically matched by Firefly III', - 'auto_match_off' => 'Not automatically matched by Firefly III', - 'next_expected_match' => 'Next expected match', - 'delete_bill' => 'Delete bill ":name"', - 'deleted_bill' => 'Deleted bill ":name"', - 'edit_bill' => 'Edit bill ":name"', - 'more' => 'More', - 'rescan_old' => 'Run rules again, on all transactions', - 'update_bill' => 'Update bill', - 'updated_bill' => 'Updated bill ":name"', - 'store_new_bill' => 'Store new bill', - 'stored_new_bill' => 'Stored new bill ":name"', - 'cannot_scan_inactive_bill' => 'Inactive bills cannot be scanned.', - 'rescanned_bill' => 'Rescanned everything, and linked :count transaction to the bill.|Rescanned everything, and linked :count transactions to the bill.', - 'average_bill_amount_year' => 'Average bill amount (:year)', - 'average_bill_amount_overall' => 'Average bill amount (overall)', - 'bill_is_active' => 'Bill is active', - 'bill_expected_between' => 'Expected between :start and :end', - 'bill_will_automatch' => 'Bill will automatically linked to matching transactions', - 'skips_over' => 'skips over', - 'bill_store_error' => 'An unexpected error occurred while storing your new bill. Please check the log files', - 'list_inactive_rule' => 'inactive rule', - 'bill_edit_rules' => 'Firefly III will attempt to edit the rule related to this bill as well. If you\'ve edited this rule yourself however, Firefly III won\'t change anything.|Firefly III will attempt to edit the :count rules related to this bill as well. If you\'ve edited these rules yourself however, Firefly III won\'t change anything.', - 'bill_expected_date' => 'Expected :date', - 'bill_expected_date_js' => 'Expected {date}', - 'bill_paid_on' => 'Paid on {date}', - 'bill_repeats_weekly' => 'Repeats weekly', - 'bill_repeats_monthly' => 'Repeats monthly', - 'bill_repeats_quarterly' => 'Repeats quarterly', - 'bill_repeats_half-year' => 'Repeats every half year', - 'bill_repeats_yearly' => 'Repeats yearly', - 'bill_repeats_weekly_other' => 'Repeats every other week', - 'bill_repeats_monthly_other' => 'Repeats every other month', - 'bill_repeats_quarterly_other' => 'Repeats every other quarter', - 'bill_repeats_half-year_other' => 'Repeats yearly', - 'bill_repeats_yearly_other' => 'Repeats every other year', - 'bill_repeats_weekly_skip' => 'Repeats every {skip} weeks', - 'bill_repeats_monthly_skip' => 'Repeats every {skip} months', - 'bill_repeats_quarterly_skip' => 'Repeats every {skip} quarters', - 'bill_repeats_half-year_skip' => 'Repeats every {skip} half years', - 'bill_repeats_yearly_skip' => 'Repeats every {skip} years', - 'subscriptions' => 'Subscriptions', - 'forever' => 'Forever', - 'extension_date_is' => 'Extension date is {date}', + 'not_expected_period' => '이 기간에는 예상되지 않음', + 'not_or_not_yet' => '아니요 (아직)', + 'visit_bill' => 'Firefly III에서 ":name" 청구서 방문하기', + 'match_between_amounts' => '청구서는 :low와 :high 사이의 거래를 일치시킵니다.', + 'running_again_loss' => '이전에 이 청구서에 연결된 거래가 더 이상 규칙과 일치하지 않는 경우 연결이 끊어질 수 있습니다.', + 'bill_related_rules' => '이 청구서와 관련된 규칙', + 'repeats' => '반복', + 'bill_end_date_help' => '선택 필드입니다. 청구서는 이 날짜에 종료될 예정입니다.', + 'bill_extension_date_help' => '선택 필드입니다. 청구서는 이 날짜 또는 그 이전에 연장(또는 취소)되어야 합니다.', + 'bill_end_index_line' => '이 청구서는 :date에 종료됩니다', + 'bill_extension_index_line' => '이 청구서는 :date에 연장 또는 취소되어야 합니다', + 'connected_journals' => '연결된 거래', + 'auto_match_on' => 'Firefly III에 의해 자동 매칭', + 'auto_match_off' => 'Firefly III에 의해 자동 매칭되지 않음', + 'next_expected_match' => '다음 예상 매치', + 'delete_bill' => '":name" 청구서 삭제', + 'deleted_bill' => '":name" 청구서 삭제됨', + 'edit_bill' => '":name" 청구서 수정', + 'more' => '더보기', + 'rescan_old' => '모든 거래에서 규칙을 다시 실행합니다', + 'update_bill' => '청구서 업데이트', + 'updated_bill' => '":name" 청구서 업데이트됨', + 'store_new_bill' => '새 청구서 저장', + 'stored_new_bill' => '저장된 새 ":name" 청구서', + 'cannot_scan_inactive_bill' => '비활성 청구서는 스캔할 수 없습니다.', + 'rescanned_bill' => '모두 다시 스캔하고 :count개의 거래를 청구서에 연결했습니다.|모두 다시 스캔하고 :count개의 거래를 청구서에 연결했습니다.', + 'average_bill_amount_year' => '평균 청구서 금액 (:year)', + 'average_bill_amount_overall' => '평균 청구서 금액 (전체)', + 'bill_is_active' => '청구서가 활성 상태입니다', + 'bill_expected_between' => ':start와 :end 사이에 예상됨', + 'bill_will_automatch' => '청구서는 일치하는 거래에 자동으로 연결됩니다', + 'skips_over' => '건너뛰기', + 'bill_store_error' => '새 청구서를 저장하는 동안 예기치 않은 오류가 발생했습니다. 로그 파일을 확인해 주세요.', + 'list_inactive_rule' => '비활성 규칙', + 'bill_edit_rules' => 'Firefly III가 이 청구서와 관련된 규칙도 수정하려고 시도합니다. 그러나 이 규칙을 직접 수정한 경우 Firefly III는 아무 것도 변경하지 않습니다.| Firefly III는 이 청구서와 관련된 :count개의 규칙도 편집하려고 시도합니다. 그러나 이러한 규칙을 직접 편집한 경우 Firefly III는 아무것도 변경하지 않습니다.', + 'bill_expected_date' => ':date 예정', + 'bill_expected_date_js' => '{date} 예정', + 'bill_paid_on' => '{date}에 결제', + 'bill_repeats_weekly' => '매주 반복', + 'bill_repeats_monthly' => '매달 반복', + 'bill_repeats_quarterly' => '분기별 반복', + 'bill_repeats_half-year' => '반년마다 반복', + 'bill_repeats_yearly' => '매년 반복', + 'bill_repeats_weekly_other' => '격주 반복', + 'bill_repeats_monthly_other' => '격월 반복', + 'bill_repeats_quarterly_other' => '격분기 반복', + 'bill_repeats_half-year_other' => '매년 반복', + 'bill_repeats_yearly_other' => '격년 반복', + 'bill_repeats_weekly_skip' => '{skip} 주마다 반복', + 'bill_repeats_monthly_skip' => '{skip} 월마다 반복', + 'bill_repeats_quarterly_skip' => '{skip} 분기마다 반복', + 'bill_repeats_half-year_skip' => '{skip} 반년마다 반복', + 'bill_repeats_yearly_skip' => '{skip} 년마다 반복', + 'subscriptions' => '구독', + 'forever' => '무기한', + 'extension_date_is' => '연장 날짜는 {date}입니다', // accounts: - 'i_am_owed_amount' => 'I am owed amount', - 'i_owe_amount' => 'I owe amount', - 'inactive_account_link' => 'You have :count inactive (archived) account, which you can view on this separate page.|You have :count inactive (archived) accounts, which you can view on this separate page.', - 'all_accounts_inactive' => 'These are your inactive accounts.', - 'active_account_link' => 'This link goes back to your active accounts.', - 'account_missing_transaction' => 'Account #:id (":name") cannot be viewed directly, but Firefly is missing redirect information.', - 'cc_monthly_payment_date_help' => 'Select any year and any month, it will be ignored anyway. Only the day of the month is relevant.', - 'details_for_asset' => 'Details for asset account ":name"', - 'details_for_expense' => 'Details for expense account ":name"', - 'details_for_revenue' => 'Details for revenue account ":name"', - 'details_for_cash' => 'Details for cash account ":name"', - 'store_new_asset_account' => 'Store new asset account', - 'store_new_expense_account' => 'Store new expense account', - 'store_new_revenue_account' => 'Store new revenue account', - 'edit_asset_account' => 'Edit asset account ":name"', - 'edit_expense_account' => 'Edit expense account ":name"', - 'edit_revenue_account' => 'Edit revenue account ":name"', - 'delete_asset_account' => 'Delete asset account ":name"', - 'delete_expense_account' => 'Delete expense account ":name"', - 'delete_revenue_account' => 'Delete revenue account ":name"', - 'delete_liabilities_account' => 'Delete liability ":name"', - 'asset_deleted' => 'Successfully deleted asset account ":name"', - 'account_deleted' => 'Successfully deleted account ":name"', - 'expense_deleted' => 'Successfully deleted expense account ":name"', - 'revenue_deleted' => 'Successfully deleted revenue account ":name"', - 'update_asset_account' => 'Update asset account', - 'update_undefined_account' => 'Update account', - 'update_liabilities_account' => 'Update liability', - 'update_expense_account' => 'Update expense account', - 'update_revenue_account' => 'Update revenue account', - 'make_new_asset_account' => 'Create a new asset account', - 'make_new_expense_account' => 'Create a new expense account', - 'make_new_revenue_account' => 'Create a new revenue account', - 'make_new_liabilities_account' => 'Create a new liability', - 'asset_accounts' => 'Asset accounts', - 'undefined_accounts' => 'Accounts', - 'asset_accounts_inactive' => 'Asset accounts (inactive)', - 'expense_accounts' => 'Expense accounts', - 'expense_accounts_inactive' => 'Expense accounts (inactive)', - 'revenue_accounts' => 'Revenue accounts', - 'revenue_accounts_inactive' => 'Revenue accounts (inactive)', - 'cash_accounts' => 'Cash accounts', - 'Cash account' => 'Cash account', - 'liabilities_accounts' => 'Liabilities', - 'liabilities_accounts_inactive' => 'Liabilities (inactive)', - 'reconcile_account' => 'Reconcile account ":account"', - 'overview_of_reconcile_modal' => 'Overview of reconciliation', - 'delete_reconciliation' => 'Delete reconciliation', - 'update_reconciliation' => 'Update reconciliation', - 'amount_cannot_be_zero' => 'The amount cannot be zero', - 'end_of_reconcile_period' => 'End of reconcile period: :period', - 'start_of_reconcile_period' => 'Start of reconcile period: :period', - 'start_balance' => 'Start balance', - 'end_balance' => 'End balance', - 'update_balance_dates_instruction' => 'Match the amounts and dates above to your bank statement, and press "Start reconciling"', - 'select_transactions_instruction' => 'Select the transactions that appear on your bank statement.', - 'select_range_and_balance' => 'First verify the date-range and balances. Then press "Start reconciling"', - 'date_change_instruction' => 'If you change the date range now, any progress will be lost.', - 'update_selection' => 'Update selection', - 'store_reconcile' => 'Store reconciliation', - 'reconciliation_transaction' => 'Reconciliation transaction', - 'Reconciliation' => 'Reconciliation', - 'reconciliation' => 'Reconciliation', - 'reconcile_options' => 'Reconciliation options', - 'reconcile_range' => 'Reconciliation range', - 'start_reconcile' => 'Start reconciling', - 'cash_account_type' => 'Cash', - 'cash' => 'cash', - 'cant_find_redirect_account' => 'Firefly III tried to redirect you but couldn\'t. Sorry about that. Back to the index.', - 'account_type' => 'Account type', - 'save_transactions_by_moving' => 'Save this transaction by moving it to another account:|Save these transactions by moving them to another account:', - 'save_transactions_by_moving_js' => 'No transactions|Save this transaction by moving it to another account. |Save these transactions by moving them to another account.', - 'stored_new_account' => 'New account ":name" stored!', - 'stored_new_account_js' => 'New account "{name}" stored!', - 'updated_account' => 'Updated account ":name"', - 'updated_account_js' => 'Updated account "{title}".', - 'credit_card_options' => 'Credit card options', - 'no_transactions_account' => 'There are no transactions (in this period) for asset account ":name".', - 'no_transactions_period' => 'There are no transactions (in this period).', + 'i_am_owed_amount' => '미납 금액', + 'i_owe_amount' => '미납 금액', + 'inactive_account_link' => '비활성(보관된) 계정이 :count개가 있으며, 이 별도 페이지에서 확인할 수 있습니다.|비활성(보관된) 계정이 :count개가 있으며, 이 별도 페이지에서 확인할 수 있습니다.', + 'all_accounts_inactive' => '귀하의 비활성 계정입니다.', + 'active_account_link' => '이 링크는 활성 계정으로 돌아갑니다.', + 'account_missing_transaction' => '계정 #:id(":name")를 직접 볼 수 없지만 Firefly에 리디렉션 정보가 누락되어 있습니다.', + 'cc_monthly_payment_date_help' => '연도와 월을 선택해도 무시됩니다. 해당 월의 날짜만 관련이 있습니다.', + 'details_for_asset' => '자산 계정 ":name"에 대한 세부 정보', + 'details_for_expense' => '지출 계정 ":name"에 대한 세부 정보', + 'details_for_revenue' => '수익 계정 ":name"에 대한 세부 정보', + 'details_for_cash' => '현금 계정 ":name"에 대한 세부 정보', + 'store_new_asset_account' => '새 자산 계정 저장', + 'store_new_expense_account' => '새 지출 계정 저장', + 'store_new_revenue_account' => '새 수익 계정 저장', + 'edit_asset_account' => '":name" 자산 계정 수정', + 'edit_expense_account' => '":name" 지출 계정 수정', + 'edit_revenue_account' => '":name" 수익 계정 수정', + 'delete_asset_account' => '":name" 자산 계정 삭제', + 'delete_expense_account' => '":name" 지출 계정 삭제', + 'delete_revenue_account' => '":name" 수익 계정 삭제', + 'delete_liabilities_account' => '":name" 부채 삭제', + 'asset_deleted' => '":name" 자산 계정 삭제 성공', + 'account_deleted' => '":name" 계정 삭제 성공', + 'expense_deleted' => '":name" 지출 계정 삭제 성공', + 'revenue_deleted' => '":name" 수익 계정 삭제 성공', + 'update_asset_account' => '자산 계정 업데이트', + 'update_undefined_account' => '계정 업데이트', + 'update_liabilities_account' => '부채 업데이트', + 'update_expense_account' => '지출 계정 업데이트', + 'update_revenue_account' => '수익 계정 업데이트', + 'make_new_asset_account' => '새 자산 계정 생성', + 'make_new_expense_account' => '새 지출 계정 생성', + 'make_new_revenue_account' => '새 수익 계정 생성', + 'make_new_liabilities_account' => '새 부채 생성', + 'asset_accounts' => '자산 계정', + 'undefined_accounts' => '계정', + 'asset_accounts_inactive' => '자산 계정 (비활성)', + 'expense_accounts' => '지출 계정', + 'expense_accounts_inactive' => '지출 계정 (비활성)', + 'revenue_accounts' => '수익 계정', + 'revenue_accounts_inactive' => '수익 계정 (비활성)', + 'cash_accounts' => '현금 계정', + 'Cash account' => '현금 계정', + 'liabilities_accounts' => '부채', + 'liabilities_accounts_inactive' => '부채 (비활성)', + 'reconcile_account' => '":account" 계정 조정', + 'overview_of_reconcile_modal' => '조정 개요', + 'delete_reconciliation' => '조정 삭제', + 'update_reconciliation' => '조정 업데이트', + 'amount_cannot_be_zero' => '금액은 0이 될 수 없습니다', + 'end_of_reconcile_period' => '조정 기간 종료: :period', + 'start_of_reconcile_period' => '조정 기간 시작: :period', + 'start_balance' => '시작 잔액', + 'end_balance' => '종료 잔액', + 'update_balance_dates_instruction' => '위의 금액과 날짜를 은행 명세서와 일치시키고 \'조정 시작\'을 누릅니다.', + 'select_transactions_instruction' => '은행 명세서에 표시되는 거래를 선택합니다.', + 'select_range_and_balance' => '먼저 날짜 범위와 잔액을 확인합니다. 그런 다음 "조정 시작"을 누릅니다.', + 'date_change_instruction' => '지금 날짜 범위를 변경하면 진행 상황을 모두 잃어버립니다.', + 'update_selection' => '선택 항목 업데이트', + 'store_reconcile' => '조정 저장', + 'reconciliation_transaction' => '조정 거래', + 'Reconciliation' => '조정', + 'reconciliation' => '조정', + 'reconcile_options' => '조정 옵션', + 'reconcile_range' => '조정 범위', + 'start_reconcile' => '조정 시작', + 'cash_account_type' => '현금', + 'cash' => '현금', + 'cant_find_redirect_account' => 'Firefly III가 리디렉션을 시도했지만 실패했습니다. 죄송합니다. 색인으로 돌아갑니다.', + 'account_type' => '계정 유형', + 'save_transactions_by_moving' => '이 거래를 다른 계정으로 이동하여 저장:|이 거래들을 다른 계정으로 이동하여 저장:', + 'save_transactions_by_moving_js' => '거래가 없음|이 거래를 다른 계정으로 이동하여 저장합니다.|이 거래들을 다른 계정으로 이동하여 저장합니다.', + 'stored_new_account' => '새 계정 ":name"이 저장되었습니다!', + 'stored_new_account_js' => '새로운 "{name}" 계정이 저장되었습니다!', + 'updated_account' => '":name" 계정 업데이트됨', + 'updated_account_js' => '"{title}" 계정이 업데이트 되었습니다.', + 'credit_card_options' => '신용 카드 옵션', + 'no_transactions_account' => '자산 계정 ":name"에 대한 거래가 (이 기간 동안) 없습니다.', + 'no_transactions_period' => '(이 기간 동안) 거래가 없습니다.', 'no_data_for_chart' => '이 차트를 생성하기 위한 정보가 (아직) 충분하지 않습니다.', - 'select_at_least_one_account' => 'Please select at least one asset account', - 'select_at_least_one_category' => 'Please select at least one category', - 'select_at_least_one_budget' => 'Please select at least one budget', - 'select_at_least_one_tag' => 'Please select at least one tag', - 'select_at_least_one_expense' => 'Please select at least one combination of expense/revenue accounts. If you have none (the list is empty) this report is not available.', - 'account_default_currency' => 'This will be the default currency associated with this account.', - 'reconcile_has_more' => 'Your Firefly III ledger has more money in it than your bank claims you should have. There are several options. Please choose what to do. Then, press "Confirm reconciliation".', - 'reconcile_has_less' => 'Your Firefly III ledger has less money in it than your bank claims you should have. There are several options. Please choose what to do. Then, press "Confirm reconciliation".', - 'reconcile_is_equal' => 'Your Firefly III ledger and your bank statements match. There is nothing to do. Please press "Confirm reconciliation" to confirm your input.', - 'create_pos_reconcile_transaction' => 'Clear the selected transactions, and create a correction adding :amount to this asset account.', - 'create_neg_reconcile_transaction' => 'Clear the selected transactions, and create a correction removing :amount from this asset account.', - 'reconcile_do_nothing' => 'Clear the selected transactions, but do not correct.', - 'reconcile_go_back' => 'You can always edit or delete a correction later.', - 'must_be_asset_account' => 'You can only reconcile asset accounts', - 'reconciliation_stored' => 'Reconciliation stored', - 'reconciliation_error' => 'Due to an error the transactions were marked as reconciled but the correction has not been stored: :error.', - 'reconciliation_transaction_title' => 'Reconciliation (:from to :to)', - 'sum_of_reconciliation' => 'Sum of reconciliation', - 'reconcile_this_account' => 'Reconcile this account', - 'reconcile' => 'Reconcile', - 'show' => 'Show', - 'confirm_reconciliation' => 'Confirm reconciliation', - 'submitted_start_balance' => 'Submitted start balance', - 'selected_transactions' => 'Selected transactions (:count)', - 'already_cleared_transactions' => 'Already cleared transactions (:count)', - 'submitted_end_balance' => 'Submitted end balance', - 'initial_balance_description' => 'Initial balance for ":account"', - 'liability_credit_description' => 'Liability credit for ":account"', - 'interest_calc_' => 'unknown', - 'interest_calc_daily' => 'Per day', - 'interest_calc_monthly' => 'Per month', - 'interest_calc_yearly' => 'Per year', - 'interest_calc_weekly' => 'Per week', - 'interest_calc_half-year' => 'Per half year', - 'interest_calc_quarterly' => 'Per quarter', - 'initial_balance_account' => 'Initial balance account of :account', - 'list_options' => 'List options', + 'select_at_least_one_account' => '자산 계정을 하나 이상 선택해 주세요', + 'select_at_least_one_category' => '카테고리를 하나 이상 선택해 주세요', + 'select_at_least_one_budget' => '예산을 하나 이상 선택해 주세요', + 'select_at_least_one_tag' => '태그를 하나 이상 선택해 주세요', + 'select_at_least_one_expense' => '비용/수익 계정 조합을 하나 이상 선택해 주세요. 없는 경우(목록이 비어 있는 경우) 이 보고서를 사용할 수 없습니다.', + 'account_default_currency' => '이것은 이 계정과 연결된 기본 통화가 됩니다.', + 'reconcile_has_more' => 'Firefly III 원장에 은행에서 청구한 금액보다 더 많은 금액이 있습니다. 몇 가지 옵션이 있습니다. 수행할 작업을 선택하십시오. 그런 다음 "조정 확인"을 누릅니다.', + 'reconcile_has_less' => 'Firefly III 원장에 은행에서 청구한 금액보다 더 적은 금액이 있습니다. 몇 가지 옵션이 있습니다. 수행할 작업을 선택하십시오. 그런 다음 "조정 확인"을 누릅니다.', + 'reconcile_is_equal' => 'Firefly III 원장과 은행 명세서가 일치합니다. 추가로 할 일이 없습니다. "조정 확인"을 눌러 입력 내용을 확인하십시오.', + 'create_pos_reconcile_transaction' => '선택한 거래를 지우고 이 자산 계정에 :amount을 추가하는 정정을 생성합니다.', + 'create_neg_reconcile_transaction' => '선택한 거래를 지우고 이 자산 계정에서 :amount을 제거하는 정정을 생성합니다.', + 'reconcile_do_nothing' => '선택한 거래를 지우지만 수정하지는 않습니다.', + 'reconcile_go_back' => '나중에 언제든지 수정 내용을 수정하거나 삭제할 수 있습니다.', + 'must_be_asset_account' => '자산 계정만 조정할 수 있습니다', + 'reconciliation_stored' => '조정이 저장됨', + 'reconciliation_error' => '거래가 조정된 것으로 표시되었지만 오류로 인해 수정 사항이 저장되지 않았습니다: :error', + 'reconciliation_transaction_title' => '조정 (:from에서 :to로)', + 'sum_of_reconciliation' => '조정 합계', + 'reconcile_this_account' => '이 계정 조정하기', + 'reconcile' => '조정', + 'show' => '표시', + 'confirm_reconciliation' => '조정 확인', + 'submitted_start_balance' => '제출된 시작 잔고', + 'selected_transactions' => '선택한 거래 (:count)', + 'already_cleared_transactions' => '이미 지워진 거래 (:count)', + 'submitted_end_balance' => '제출된 최종 잔고', + 'initial_balance_description' => '":account"의 초기 잔고', + 'liability_credit_description' => '":account"에 대한 부채 크레딧', + 'interest_calc_' => '알 수 없음', + 'interest_calc_daily' => '일별', + 'interest_calc_monthly' => '월별', + 'interest_calc_yearly' => '연간', + 'interest_calc_weekly' => '주당', + 'interest_calc_half-year' => '반기당', + 'interest_calc_quarterly' => '분기당', + 'initial_balance_account' => ':account의 초기 잔액 계정', + 'list_options' => '목록 옵션', // categories: 'new_category' => '새 카테고리', 'create_new_category' => '새 카테고리 생성', - 'without_category' => 'Without a category', - 'update_category' => 'Update category', - 'updated_category' => 'Updated category ":name"', - 'categories' => 'Categories', - 'edit_category' => 'Edit category ":name"', - 'no_category' => '(no category)', - 'category' => 'Category', - 'delete_category' => 'Delete category ":name"', - 'deleted_category' => 'Deleted category ":name"', + 'without_category' => '카테고리 없음', + 'update_category' => '카테고리 업데이트', + 'updated_category' => '":name" 카테고리 업데이트됨', + 'categories' => '카테고리', + 'edit_category' => '":name" 카테고리 수정', + 'no_category' => '(카테고리 없음)', + 'category' => '카테고리', + 'delete_category' => '":name" 카테고리 삭제', + 'deleted_category' => '":name" 카테고리 삭제됨', 'store_category' => '새 카테고리 저장', 'stored_category' => '새로운":name" 카테고리가 저장되었습니다', - 'without_category_between' => 'Without category between :start and :end', + 'without_category_between' => ':start와 :end 사이에 카테고리가 없음', /* * PLEASE DO NOT EDIT THIS FILE DIRECTLY. @@ -1918,222 +1918,222 @@ return [ // transactions: - 'update_withdrawal' => 'Update withdrawal', - 'update_deposit' => 'Update deposit', - 'update_transaction' => 'Update transaction', - 'update_transfer' => 'Update transfer', - 'updated_withdrawal' => 'Updated withdrawal ":description"', - 'updated_deposit' => 'Updated deposit ":description"', - 'updated_transfer' => 'Updated transfer ":description"', - 'no_changes_withdrawal' => 'Withdrawal ":description" was not changed.', - 'no_changes_deposit' => 'Deposit ":description" was not changed.', - 'no_changes_transfer' => 'Transfer ":description" was not changed.', - 'delete_withdrawal' => 'Delete withdrawal ":description"', - 'delete_deposit' => 'Delete deposit ":description"', - 'delete_transfer' => 'Delete transfer ":description"', - 'deleted_withdrawal' => 'Successfully deleted withdrawal ":description"', - 'deleted_deposit' => 'Successfully deleted deposit ":description"', - 'deleted_transfer' => 'Successfully deleted transfer ":description"', - 'deleted_reconciliation' => 'Successfully deleted reconciliation transaction ":description"', - 'stored_journal' => 'Successfully created new transaction ":description"', - 'stored_journal_no_descr' => 'Successfully created your new transaction', - 'updated_journal_no_descr' => 'Successfully updated your transaction', - 'select_transactions' => 'Select transactions', - 'rule_group_select_transactions' => 'Apply ":title" to transactions', - 'rule_select_transactions' => 'Apply ":title" to transactions', - 'stop_selection' => 'Stop selecting transactions', - 'reconcile_selected' => 'Reconcile', - 'mass_delete_journals' => 'Delete a number of transactions', - 'mass_edit_journals' => 'Edit a number of transactions', - 'mass_bulk_journals' => 'Bulk edit a number of transactions', - 'mass_bulk_journals_explain' => 'This form allows you to change properties of the transactions listed below in one sweeping update. All the transactions in the table will be updated when you change the parameters you see here.', - 'part_of_split' => 'This transaction is part of a split transaction. If you have not selected all the splits, you may end up with changing only half the transaction.', - 'bulk_set_new_values' => 'Use the inputs below to set new values. If you leave them empty, they will be made empty for all. Also, note that only withdrawals will be given a budget.', - 'no_bulk_category' => 'Don\'t update category', - 'no_bulk_budget' => 'Don\'t update budget', - 'no_bulk_tags' => 'Don\'t update tag(s)', - 'replace_with_these_tags' => 'Replace with these tags', - 'append_these_tags' => 'Add these tags', - 'mass_edit' => 'Edit selected individually', - 'bulk_edit' => 'Edit selected in bulk', - 'mass_delete' => 'Delete selected', - 'cannot_edit_other_fields' => 'You cannot mass-edit other fields than the ones here, because there is no room to show them. Please follow the link and edit them by one-by-one, if you need to edit these fields.', - 'cannot_change_amount_reconciled' => 'You can\'t change the amount of reconciled transactions.', - 'no_budget' => '(no budget)', - 'no_bill' => '(no bill)', - 'account_per_budget' => 'Account per budget', - 'account_per_category' => 'Account per category', - 'create_new_object' => 'Create', - 'empty' => '(empty)', - 'all_other_budgets' => '(all other budgets)', - 'all_other_accounts' => '(all other accounts)', - 'expense_per_source_account' => 'Expenses per source account', - 'expense_per_destination_account' => 'Expenses per destination account', - 'income_per_destination_account' => 'Income per destination account', - 'spent_in_specific_category' => 'Spent in category ":category"', - 'earned_in_specific_category' => 'Earned in category ":category"', - 'spent_in_specific_tag' => 'Spent in tag ":tag"', - 'earned_in_specific_tag' => 'Earned in tag ":tag"', - 'income_per_source_account' => 'Income per source account', - 'average_spending_per_destination' => 'Average expense per destination account', - 'average_spending_per_source' => 'Average expense per source account', - 'average_earning_per_source' => 'Average earning per source account', - 'average_earning_per_destination' => 'Average earning per destination account', - 'account_per_tag' => 'Account per tag', - 'tag_report_expenses_listed_once' => 'Expenses and income are never listed twice. If a transaction has multiple tags, it may only show up under one of its tags. This list may appear to be missing data, but the amounts will be correct.', - 'double_report_expenses_charted_once' => 'Expenses and income are never displayed twice. If a transaction has multiple tags, it may only show up under one of its tags. This chart may appear to be missing data, but the amounts will be correct.', - 'tag_report_chart_single_tag' => 'This chart applies to a single tag. If a transaction has multiple tags, what you see here may be reflected in the charts of other tags as well.', - 'tag' => 'Tag', - 'no_budget_squared' => '(no budget)', - 'perm-delete-many' => 'Deleting many items in one go can be very disruptive. Please be cautious. You can delete part of a split transaction from this page, so take care.', - 'mass_deleted_transactions_success' => 'Deleted :count transaction.|Deleted :count transactions.', - 'mass_edited_transactions_success' => 'Updated :count transaction.|Updated :count transactions.', - 'opt_group_' => '(no account type)', - 'opt_group_no_account_type' => '(no account type)', - 'opt_group_defaultAsset' => 'Default asset accounts', - 'opt_group_savingAsset' => 'Savings accounts', - 'opt_group_sharedAsset' => 'Shared asset accounts', - 'opt_group_ccAsset' => 'Credit cards', - 'opt_group_cashWalletAsset' => 'Cash wallets', - 'opt_group_expense_account' => 'Expense accounts', - 'opt_group_revenue_account' => 'Revenue accounts', - 'opt_group_l_Loan' => 'Liability: Loan', - 'opt_group_cash_account' => 'Cash account', - 'opt_group_l_Debt' => 'Liability: Debt', - 'opt_group_l_Mortgage' => 'Liability: Mortgage', - 'opt_group_l_Credit card' => 'Liability: Credit card', - 'notes' => 'Notes', - 'unknown_journal_error' => 'Could not store the transaction. Please check the log files.', - 'attachment_not_found' => 'This attachment could not be found.', - 'journal_link_bill' => 'This transaction is linked to bill :name. To remove the connection, uncheck the checkbox. Use rules to connect it to another bill.', - 'transaction_stored_link' => 'Transaction #{ID} ("{title}") has been stored.', - 'transaction_new_stored_link' => 'Transaction #{ID} has been stored.', - 'transaction_updated_link' => 'Transaction #{ID} ("{title}") has been updated.', - 'transaction_updated_no_changes' => 'Transaction #{ID} ("{title}") did not receive any changes.', - 'first_split_decides' => 'The first split determines the value of this field', - 'first_split_overrules_source' => 'The first split may overrule the source account', - 'first_split_overrules_destination' => 'The first split may overrule the destination account', - 'spent_x_of_y' => 'Spent {amount} of {total}', + 'update_withdrawal' => '출금 업데이트', + 'update_deposit' => '입금 업데이트', + 'update_transaction' => '거래 업데이트', + 'update_transfer' => '이체 업데이트', + 'updated_withdrawal' => '":description" 출금이 업데이트됨', + 'updated_deposit' => '":description" 입금이 업데이트됨', + 'updated_transfer' => '":description" 이체가 업데이트됨', + 'no_changes_withdrawal' => '":description" 출금이 변경되지 않았습니다.', + 'no_changes_deposit' => '":description" 입금이 변경되지 않았습니다.', + 'no_changes_transfer' => '":description" 이체가 변경되지 않았습니다.', + 'delete_withdrawal' => '":description" 출금 삭제', + 'delete_deposit' => '":description" 입금 삭제', + 'delete_transfer' => '":description" 이체 삭제', + 'deleted_withdrawal' => '":description" 출금 삭제 성공', + 'deleted_deposit' => '":description" 입금 삭제 성공', + 'deleted_transfer' => '":description" 이체 삭제 성공', + 'deleted_reconciliation' => '":description" 조정 거래 삭제 성공', + 'stored_journal' => '새로운 ":description" 거래 생성 성공', + 'stored_journal_no_descr' => '새로운 거래 생성 성공', + 'updated_journal_no_descr' => '거래 업데이트 성공', + 'select_transactions' => '거래 선택', + 'rule_group_select_transactions' => '거래에 ":title" 적용', + 'rule_select_transactions' => '거래에 ":title" 적용', + 'stop_selection' => '거래 선택 중지', + 'reconcile_selected' => '조정', + 'mass_delete_journals' => '여러 거래 삭제', + 'mass_edit_journals' => '여러 거래 수정', + 'mass_bulk_journals' => '여러 거래 일괄 수정', + 'mass_bulk_journals_explain' => '이 양식을 사용하면 아래 나열된 거래의 속성을 한 번에 업데이트할 수 있습니다. 여기에 표시되는 매개변수를 변경하면 표에 있는 모든 거래가 업데이트됩니다.', + 'part_of_split' => '이 거래는 분할된 거래 중 일부입니다. 모든 분할을 선택하지 않은 경우 거래의 절반만 변경될 수 있습니다.', + 'bulk_set_new_values' => '아래 입력을 사용하여 새 값을 설정합니다. 입력란을 비워두면 모두에게 비워집니다. 또한 출금에 대해서만 예산이 부여된다는 점에 유의하세요.', + 'no_bulk_category' => '카테고리 업데이트 안 함', + 'no_bulk_budget' => '예산 업데이트 안 함', + 'no_bulk_tags' => '태그 업데이트 안 함', + 'replace_with_these_tags' => '다음 태그로 바꾸기', + 'append_these_tags' => '다음 태그 추가', + 'mass_edit' => '선택한 항목 개별 편집', + 'bulk_edit' => '선택한 항목 일괄 편집', + 'mass_delete' => '선택항목 삭제', + 'cannot_edit_other_fields' => '표시할 공간이 없어서 여기에 표시된 항목 이외의 다른 항목은 대량 편집할 수 없습니다. 이러한 항목을 편집하려면 링크를 따라 하나씩 편집하세요.', + 'cannot_change_amount_reconciled' => '조정된 거래 금액은 변경할 수 없습니다.', + 'no_budget' => '(예산 없음)', + 'no_bill' => '(청구서 없음)', + 'account_per_budget' => '예산당 계정', + 'account_per_category' => '카테고리당 계정', + 'create_new_object' => '생성', + 'empty' => '(비어 있음)', + 'all_other_budgets' => '(다른 모든 예산)', + 'all_other_accounts' => '(다른 모든 계정)', + 'expense_per_source_account' => '소스 계정당 지출', + 'expense_per_destination_account' => '대상 계정당 지출', + 'income_per_destination_account' => '대상 계정당 수입', + 'spent_in_specific_category' => '":category" 카테고리의 지출', + 'earned_in_specific_category' => '":category" 카테고리의 수입', + 'spent_in_specific_tag' => '":tag" 태그의 지출', + 'earned_in_specific_tag' => '":tag" 태그의 수입', + 'income_per_source_account' => '소스 계정당 수입', + 'average_spending_per_destination' => '대상 계정당 평균 지출', + 'average_spending_per_source' => '소스 계정당 평균 지출', + 'average_earning_per_source' => '소스 계정당 평균 수익', + 'average_earning_per_destination' => '대상 계정당 평균 수익', + 'account_per_tag' => '태그당 계정', + 'tag_report_expenses_listed_once' => '지출과 수입은 두 번 표시되지 않습니다. 거래에 여러 개의 태그가 있는 경우 해당 태그 중 하나만 표시될 수 있습니다. 이 목록에는 데이터가 누락된 것처럼 보일 수 있지만 금액은 정확합니다.', + 'double_report_expenses_charted_once' => '지출과 수입은 두 번 표시되지 않습니다. 거래에 여러 개의 태그가 있는 경우 해당 태그 중 하나에만 표시될 수 있습니다. 이 차트에는 데이터가 누락된 것처럼 보일 수 있지만 금액은 정확합니다.', + 'tag_report_chart_single_tag' => '이 차트는 단일 태그에 적용됩니다. 거래에 여러 개의 태그가 있는 경우 여기에 표시되는 내용이 다른 태그의 차트에도 반영될 수 있습니다.', + 'tag' => '태그', + 'no_budget_squared' => '(예산 없음)', + 'perm-delete-many' => '한 번에 많은 항목을 삭제하면 매우 혼란스러울 수 있으니 주의하시기 바랍니다. 이 페이지에서 분할 거래의 일부만 삭제할 수 있으므로 주의하세요.', + 'mass_deleted_transactions_success' => ':count개 거래가 삭제되었습니다.|:count개 거래가 삭제되었습니다.', + 'mass_edited_transactions_success' => ':count개 거래가 업데이트되었습니다.|:count개 거래가 업데이트되었습니다.', + 'opt_group_' => '(계정 유형 없음)', + 'opt_group_no_account_type' => '(계정 유형 없음)', + 'opt_group_defaultAsset' => '기본 자산 계정', + 'opt_group_savingAsset' => '예금 계좌', + 'opt_group_sharedAsset' => '공유 자산 계정', + 'opt_group_ccAsset' => '신용카드', + 'opt_group_cashWalletAsset' => '현금 지갑', + 'opt_group_expense_account' => '지출 계정', + 'opt_group_revenue_account' => '수익 계정', + 'opt_group_l_Loan' => '부채: 대출', + 'opt_group_cash_account' => '현금 계정', + 'opt_group_l_Debt' => '부채: 빚', + 'opt_group_l_Mortgage' => '부채: 모기지', + 'opt_group_l_Credit card' => '부채: 신용카드', + 'notes' => '노트', + 'unknown_journal_error' => '거래를 저장할 수 없습니다. 로그 파일을 확인해 주세요.', + 'attachment_not_found' => '이 첨부 파일을 찾을 수 없습니다.', + 'journal_link_bill' => '이 거래는 :name 청구서에 연결되어 있습니다. 연결을 제거하려면 확인란의 선택을 취소합니다. 규칙을 사용하여 다른 청구서에 연결합니다.', + 'transaction_stored_link' => '거래 #{ID} ("{title}")가 저장되었습니다.', + 'transaction_new_stored_link' => '거래 #{ID}가 저장되었습니다.', + 'transaction_updated_link' => '거래 #{ID} ("{title}") 이 업데이트 되었습니다.', + 'transaction_updated_no_changes' => '거래 #{ID}("{title}")에 변경 사항이 적용되지 않았습니다.', + 'first_split_decides' => '첫 번째 분할은 이 항목의 값을 결정합니다.', + 'first_split_overrules_source' => '첫 번째 분할은 소스 계정을 무시할 수 있습니다.', + 'first_split_overrules_destination' => '첫 번째 분할은 대상 계정을 무시할 수 있습니다.', + 'spent_x_of_y' => '{total} 중 {amount} 지출', // new user: - 'welcome' => 'Welcome to Firefly III!', - 'submit' => 'Submit', - 'submission' => 'Submission', - 'submit_yes_really' => 'Submit (I know what I\'m doing)', - 'getting_started' => 'Getting started', - 'to_get_started' => 'It is good to see you have successfully installed Firefly III. To get started with this tool please enter your bank\'s name and the balance of your main checking account. Do not worry yet if you have multiple accounts. You can add those later. It\'s just that Firefly III needs something to start with.', - 'savings_balance_text' => 'Firefly III will automatically create a savings account for you. By default, there will be no money in your savings account, but if you tell Firefly III the balance it will be stored as such.', - 'finish_up_new_user' => 'That\'s it! You can continue by pressing Submit. You will be taken to the index of Firefly III.', - 'stored_new_accounts_new_user' => 'Yay! Your new accounts have been stored.', - 'set_preferred_language' => 'If you prefer to use Firefly III in another language, please indicate so here.', - 'language' => 'Language', - 'new_savings_account' => ':bank_name savings account', - 'cash_wallet' => 'Cash wallet', - 'currency_not_present' => 'If the currency you normally use is not listed do not worry. You can create your own currencies under Options > Currencies.', + 'welcome' => 'Firefly III에 오신 것을 환영합니다!', + 'submit' => '제출', + 'submission' => '제출', + 'submit_yes_really' => '제출 (내가 무엇을 하는지 알고 있습니다)', + 'getting_started' => '시작하기', + 'to_get_started' => 'Firefly III를 성공적으로 설치하셨다니 다행입니다. 이 도구를 시작하려면 은행 이름과 주 당좌 예금 계좌의 잔액을 입력하세요. 여러 개의 계좌가 있어도 걱정하지 마세요. 나중에 추가할 수 있습니다. Firefly III에는 시작할 무언가가 필요합니다.', + 'savings_balance_text' => 'Firefly III는 자동으로 저축 계좌를 생성합니다. 기본적으로 저축 계좌에는 돈이 없지만, Firefly III에 잔액을 알려주면 잔액이 그대로 저장됩니다.', + 'finish_up_new_user' => '끝났습니다! 제출을 눌러 계속할 수 있습니다. Firefly III의 색인으로 이동합니다.', + 'stored_new_accounts_new_user' => '야호! 새 계정이 저장되었습니다.', + 'set_preferred_language' => '다른 언어로 Firefly III를 사용하시려면 여기에 표시해 주세요.', + 'language' => '언어', + 'new_savings_account' => ':bank_name 저축 계좌', + 'cash_wallet' => '현금 지갑', + 'currency_not_present' => '일반적으로 사용하는 통화가 목록에 없더라도 걱정하지 마세요. 옵션 > 통화에서 직접 통화를 생성할 수 있습니다.', // home page: - 'transaction_table_description' => 'A table containing your transactions', - 'opposing_account' => 'Opposing account', - 'yourAccounts' => 'Your accounts', - 'your_accounts' => 'Your account overview', - 'category_overview' => 'Category overview', - 'expense_overview' => 'Expense account overview', - 'revenue_overview' => 'Revenue account overview', - 'budgetsAndSpending' => 'Budgets and spending', - 'budgets_and_spending' => 'Budgets and spending', - 'go_to_budget' => 'Go to budget "{budget}"', - 'go_to_deposits' => 'Go to deposits', - 'go_to_expenses' => 'Go to expenses', - 'savings' => 'Savings', - 'newWithdrawal' => 'New expense', - 'newDeposit' => 'New deposit', - 'newTransfer' => 'New transfer', - 'bills_to_pay' => 'Bills to pay', - 'per_day' => 'Per day', - 'left_to_spend_per_day' => 'Left to spend per day', - 'bills_paid' => 'Bills paid', - 'custom_period' => 'Custom period', - 'reset_to_current' => 'Reset to current period', - 'select_period' => 'Select a period', + 'transaction_table_description' => '거래가 포함된 테이블', + 'opposing_account' => '반대 계정', + 'yourAccounts' => '계정', + 'your_accounts' => '계정 개요', + 'category_overview' => '카테고리 개요', + 'expense_overview' => '지출 계정 개요', + 'revenue_overview' => '수익 계정 개요', + 'budgetsAndSpending' => '예산 및 지출', + 'budgets_and_spending' => '예산 및 지출', + 'go_to_budget' => '"{budget}" 예산으로 이동', + 'go_to_deposits' => '입금으로 이동', + 'go_to_expenses' => '지출로 이동', + 'savings' => '예금', + 'newWithdrawal' => '신규 비용', + 'newDeposit' => '신규 입금', + 'newTransfer' => '신규 이체', + 'bills_to_pay' => '납부할 청구서', + 'per_day' => '일별', + 'left_to_spend_per_day' => '남은 하루 지출', + 'bills_paid' => '청구서 결제', + 'custom_period' => '사용자 지정 기간', + 'reset_to_current' => '현재 기간으로 재설정', + 'select_period' => '기간 선택', // menu and titles, should be recycled as often as possible: - 'currency' => 'Currency', - 'preferences' => 'Preferences', - 'logout' => 'Logout', - 'logout_other_sessions' => 'Logout all other sessions', - 'toggleNavigation' => 'Toggle navigation', - 'searchPlaceholder' => 'Search...', - 'version' => 'Version', + 'currency' => '통화', + 'preferences' => '환경 설정', + 'logout' => '로그아웃', + 'logout_other_sessions' => '다른 모든 세션 로그아웃', + 'toggleNavigation' => '토글 내비게이션', + 'searchPlaceholder' => '검색...', + 'version' => '버전', 'dashboard' => '대시보드', - 'available_budget' => 'Available budget ({currency})', - 'currencies' => 'Currencies', - 'activity' => 'Activity', - 'usage' => 'Usage', - 'accounts' => 'Accounts', - 'Asset account' => 'Asset account', - 'Default account' => 'Asset account', - 'Expense account' => 'Expense account', - 'Revenue account' => 'Revenue account', - 'Initial balance account' => 'Initial balance account', - 'account_type_Debt' => 'Debt', - 'account_type_Loan' => 'Loan', - 'account_type_Mortgage' => 'Mortgage', - 'account_type_debt' => 'Debt', - 'account_type_loan' => 'Loan', - 'account_type_mortgage' => 'Mortgage', - 'account_type_Credit card' => 'Credit card', - 'credit_card_type_monthlyFull' => 'Full payment every month', - 'liability_direction_credit' => 'I am owed this debt', - 'liability_direction_debit' => 'I owe this debt to somebody else', - 'liability_direction_credit_short' => 'Owed this debt', - 'liability_direction_debit_short' => 'Owe this debt', - 'liability_direction__short' => 'Unknown', - 'liability_direction_null_short' => 'Unknown', - 'Liability credit' => 'Liability credit', - 'budgets' => 'Budgets', - 'tags' => 'Tags', - 'reports' => 'Reports', - 'transactions' => 'Transactions', - 'expenses' => 'Expenses', - 'income' => 'Revenue / income', - 'transfers' => 'Transfers', - 'moneyManagement' => 'Money management', - 'money_management' => 'Money management', - 'tools' => 'Tools', - 'piggyBanks' => 'Piggy banks', - 'piggy_banks' => 'Piggy banks', - 'amount_x_of_y' => '{current} of {total}', - 'bills' => 'Bills', - 'withdrawal' => 'Withdrawal', - 'opening_balance' => 'Opening balance', - 'deposit' => 'Deposit', - 'account' => 'Account', - 'transfer' => 'Transfer', - 'Withdrawal' => 'Withdrawal', - 'Deposit' => 'Deposit', - 'Transfer' => 'Transfer', - 'bill' => 'Bill', - 'yes' => 'Yes', - 'no' => 'No', - 'amount' => 'Amount', - 'overview' => 'Overview', - 'saveOnAccount' => 'Save on account', - 'unknown' => 'Unknown', - 'monthly' => 'Monthly', - 'profile' => 'Profile', - 'errors' => 'Errors', - 'debt_start_date' => 'Start date of debt', - 'debt_start_amount' => 'Start amount of debt', - 'debt_start_amount_help' => 'It\'s always best to set this value to a negative amount. Read the help pages (top right (?)-icon) for more information.', - 'interest_period_help' => 'This field is purely cosmetic and won\'t be calculated for you. As it turns out banks are very sneaky so Firefly III never gets it right.', - 'store_new_liabilities_account' => 'Store new liability', - 'edit_liabilities_account' => 'Edit liability ":name"', - 'financial_control' => 'Financial control', - 'accounting' => 'Accounting', - 'automation' => 'Automation', - 'others' => 'Others', - 'classification' => 'Classification', - 'store_transaction' => 'Store transaction', + 'available_budget' => '사용 가능한 예산 ({currency})', + 'currencies' => '통화', + 'activity' => '활동', + 'usage' => '사용법', + 'accounts' => '계정', + 'Asset account' => '자산 계정', + 'Default account' => '자산 계정', + 'Expense account' => '지출 계정', + 'Revenue account' => '수익 계정', + 'Initial balance account' => '초기 잔액 계정', + 'account_type_Debt' => '대출', + 'account_type_Loan' => '빚', + 'account_type_Mortgage' => '모기지', + 'account_type_debt' => '대출', + 'account_type_loan' => '빚', + 'account_type_mortgage' => '모기지', + 'account_type_Credit card' => '신용카드', + 'credit_card_type_monthlyFull' => '매월 전액 결제', + 'liability_direction_credit' => '나는 이 대출을 가지고 있다', + 'liability_direction_debit' => '나는 이 빚을 다른 사람에게 빚지고 있다', + 'liability_direction_credit_short' => '이 빚을 지고 있습니다', + 'liability_direction_debit_short' => '이 빚을 지고 있습니다', + 'liability_direction__short' => '알 수 없음', + 'liability_direction_null_short' => '알 수 없음', + 'Liability credit' => '부채 신용', + 'budgets' => '예산', + 'tags' => '태그', + 'reports' => '보고서', + 'transactions' => '거래', + 'expenses' => '지출', + 'income' => '수익 / 수입', + 'transfers' => '이체', + 'moneyManagement' => '돈 관리', + 'money_management' => '돈 관리', + 'tools' => '도구', + 'piggyBanks' => '저금통', + 'piggy_banks' => '저금통', + 'amount_x_of_y' => '{total} 중 {current}', + 'bills' => '청구서', + 'withdrawal' => '출금', + 'opening_balance' => '초기 잔고', + 'deposit' => '입금', + 'account' => '계정', + 'transfer' => '이체', + 'Withdrawal' => '출금', + 'Deposit' => '입금', + 'Transfer' => '이체', + 'bill' => '청구서', + 'yes' => '네', + 'no' => '아니오', + 'amount' => '금액', + 'overview' => '개요', + 'saveOnAccount' => '계정 저장', + 'unknown' => '알 수 없음', + 'monthly' => '월간', + 'profile' => '프로필', + 'errors' => '오류', + 'debt_start_date' => '빚 시작일', + 'debt_start_amount' => '빚 금액', + 'debt_start_amount_help' => '이 값은 항상 음수로 설정하는 것이 가장 좋습니다. 자세한 내용은 도움말 페이지(오른쪽 상단(?)-아이콘)를 참조하세요.', + 'interest_period_help' => '이 항목은 순전히 장식용이며 계산되지 않습니다. 은행은 매우 교활하기 때문에 Firefly III는 결코 제대로 계산하지 못합니다.', + 'store_new_liabilities_account' => '새 부채 저장', + 'edit_liabilities_account' => '":name" 부채 수정', + 'financial_control' => '재정 관리', + 'accounting' => '회계', + 'automation' => '자동화', + 'others' => '기타', + 'classification' => '분류', + 'store_transaction' => '거래 저장', /* * PLEASE DO NOT EDIT THIS FILE DIRECTLY. @@ -2148,65 +2148,65 @@ return [ // reports: - 'report_default' => 'Default financial report between :start and :end', - 'report_audit' => 'Transaction history overview between :start and :end', - 'report_category' => 'Category report between :start and :end', - 'report_double' => 'Expense/revenue account report between :start and :end', - 'report_budget' => 'Budget report between :start and :end', - 'report_tag' => 'Tag report between :start and :end', - 'quick_link_reports' => 'Quick links', - 'quick_link_examples' => 'These are just some example links to get you started. Check out the help pages under the (?)-button for information on all reports and the magic words you can use.', - 'quick_link_default_report' => 'Default financial report', - 'quick_link_audit_report' => 'Transaction history overview', - 'report_this_month_quick' => 'Current month, all accounts', - 'report_last_month_quick' => 'Last month, all accounts', - 'report_this_year_quick' => 'Current year, all accounts', - 'report_this_fiscal_year_quick' => 'Current fiscal year, all accounts', - 'report_all_time_quick' => 'All-time, all accounts', - 'reports_can_bookmark' => 'Remember that reports can be bookmarked.', - 'incomeVsExpenses' => 'Income vs. expenses', - 'accountBalances' => 'Account balances', - 'balanceStart' => 'Balance at start of period', - 'balanceEnd' => 'Balance at end of period', - 'splitByAccount' => 'Split by account', - 'coveredWithTags' => 'Covered with tags', - 'leftInBudget' => 'Left in budget', - 'left_in_debt' => 'Amount due', - 'sumOfSums' => 'Sum of sums', - 'noCategory' => '(no category)', - 'notCharged' => 'Not charged (yet)', - 'inactive' => 'Inactive', - 'active' => 'Active', - 'difference' => 'Difference', - 'money_flowing_in' => 'In', - 'money_flowing_out' => 'Out', - 'topX' => 'top :number', - 'show_full_list' => 'Show entire list', - 'show_only_top' => 'Show only top :number', - 'report_type' => 'Report type', - 'report_type_default' => 'Default financial report', - 'report_type_audit' => 'Transaction history overview (audit)', - 'report_type_category' => 'Category report', - 'report_type_budget' => 'Budget report', - 'report_type_tag' => 'Tag report', - 'report_type_double' => 'Expense/revenue account report', - 'more_info_help' => 'More information about these types of reports can be found in the help pages. Press the (?) icon in the top right corner.', - 'report_included_accounts' => 'Included accounts', - 'report_date_range' => 'Date range', - 'report_preset_ranges' => 'Pre-set ranges', - 'shared' => 'Shared', + 'report_default' => ':start와 :end 사이의 기본 재정 보고서', + 'report_audit' => ':start과 :end 사이의 거래 내역 개요', + 'report_category' => ':start과 :end 사이의 카테고리 보고서', + 'report_double' => ':start과 :end 사이의 비용/수익 계정 보고서', + 'report_budget' => ':start과 :end 사이의 예산 보고서', + 'report_tag' => ':start과 :end 사이의 태그 보고서', + 'quick_link_reports' => '빠른 링크', + 'quick_link_examples' => '다음은 시작하는 데 도움이 되는 몇 가지 예시 링크입니다. 모든 보고서에 대한 정보와 사용할 수 있는 마법의 단어는 (?) 버튼 아래의 도움말 페이지를 확인하십시오.', + 'quick_link_default_report' => '기본 재무 보고서', + 'quick_link_audit_report' => '거래 내역 개요', + 'report_this_month_quick' => '이번 달, 모든 계정', + 'report_last_month_quick' => '지난 달, 모든 계정', + 'report_this_year_quick' => '현재 연도, 모든 계정', + 'report_this_fiscal_year_quick' => '현재 회계연도, 모든 계정', + 'report_all_time_quick' => '모든 시간, 모든 계정', + 'reports_can_bookmark' => '보고서를 북마크할 수 있다는 점을 기억하세요.', + 'incomeVsExpenses' => '수입 vs 지출', + 'accountBalances' => '계정 잔액', + 'balanceStart' => '기간 시작 시점의 잔액', + 'balanceEnd' => '기간 종료 시점의 잔액', + 'splitByAccount' => '계정별로 분할', + 'coveredWithTags' => '태그로 덮여 있음', + 'leftInBudget' => '예산에 남음', + 'left_in_debt' => '납부 금액', + 'sumOfSums' => '합계의 합계', + 'noCategory' => '(카테고리 없음)', + 'notCharged' => '(아직) 청구되지 않음', + 'inactive' => '비활성화', + 'active' => '활성화', + 'difference' => '차이', + 'money_flowing_in' => '들어옴', + 'money_flowing_out' => '나감', + 'topX' => '상위 :number', + 'show_full_list' => '전체 목록 표시', + 'show_only_top' => '상위 :number개만 보기', + 'report_type' => '보고서 유형', + 'report_type_default' => '기본 재무 보고서', + 'report_type_audit' => '거래 내역 개요 (감사)', + 'report_type_category' => '카테고리 보고서', + 'report_type_budget' => '예산 보고서', + 'report_type_tag' => '태그 보고서', + 'report_type_double' => '비용/수익 계정 보고서', + 'more_info_help' => '이러한 유형의 보고서에 대한 자세한 내용은 도움말 페이지에서 확인할 수 있습니다. 오른쪽 상단의 (?) 아이콘을 누릅니다.', + 'report_included_accounts' => '포함된 계정', + 'report_date_range' => '날짜 범위', + 'report_preset_ranges' => '사전 설정 범위', + 'shared' => '공유', 'fiscal_year' => '회계 연도', - 'income_entry' => 'Income from account ":name" between :start and :end', - 'expense_entry' => 'Expenses to account ":name" between :start and :end', - 'category_entry' => 'Expenses and income in category ":name" between :start and :end', - 'budget_spent_amount' => 'Expenses in budget ":budget" between :start and :end', - 'balance_amount' => 'Expenses in budget ":budget" paid from account ":account" between :start and :end', + 'income_entry' => ':start와 :end 사이의 ":name" 계정의 수입', + 'expense_entry' => ':start와 :end 사이의 ":name" 계정의 지출', + 'category_entry' => ':start과 :end 사이의 ":name" 카테고리의 비용 및 수입', + 'budget_spent_amount' => ':start와 :end 사이의 ":budget" 예산에 포함된 비용', + 'balance_amount' => ':start와 :end 사이에 ":account" 계정에서 지불한 ":budget" 예산 내의 지출', 'no_audit_activity' => 'No activity was recorded on account :account_name between :start and :end.', 'audit_end_balance' => 'Account balance of :account_name at the end of :end was: :balance', - 'reports_extra_options' => 'Extra options', - 'report_has_no_extra_options' => 'This report has no extra options', - 'reports_submit' => 'View report', - 'end_after_start_date' => 'End date of report must be after start date.', + 'reports_extra_options' => '추가 옵션', + 'report_has_no_extra_options' => '이 보고서에는 추가 옵션이 없습니다', + 'reports_submit' => '보고서 보기', + 'end_after_start_date' => '보고서 종료일은 시작일 이후여야 합니다.', 'select_category' => 'Select category(ies)', 'select_budget' => 'Select budget(s).', 'select_tag' => 'Select tag(s).', @@ -2228,28 +2228,28 @@ return [ 'income_and_expenses' => 'Income and expenses', 'spent_average' => 'Spent (average)', 'income_average' => 'Income (average)', - 'transaction_count' => 'Transaction count', - 'average_spending_per_account' => 'Average spending per account', - 'average_income_per_account' => 'Average income per account', - 'total' => 'Total', + 'transaction_count' => '거래 횟수', + 'average_spending_per_account' => '계정당 평균 지출', + 'average_income_per_account' => '계정당 평균 수입', + 'total' => '합계', 'description' => '설명', - 'sum_of_period' => 'Sum of period', - 'average_in_period' => 'Average in period', - 'account_role_defaultAsset' => 'Default asset account', - 'account_role_sharedAsset' => 'Shared asset account', - 'account_role_savingAsset' => 'Savings account', - 'account_role_ccAsset' => 'Credit card', - 'account_role_cashWalletAsset' => 'Cash wallet', - 'budget_chart_click' => 'Please click on a budget name in the table above to see a chart.', - 'category_chart_click' => 'Please click on a category name in the table above to see a chart.', - 'in_out_accounts' => 'Earned and spent per combination', - 'in_out_accounts_per_asset' => 'Earned and spent (per asset account)', - 'in_out_per_category' => 'Earned and spent per category', - 'out_per_budget' => 'Spent per budget', - 'select_expense_revenue' => 'Select expense/revenue account', - 'multi_currency_report_sum' => 'Because this list contains accounts with multiple currencies, the sum(s) you see may not make sense. The report will always fall back to your default currency.', - 'sum_in_default_currency' => 'The sum will always be in your default currency.', - 'net_filtered_prefs' => 'This chart will never include accounts that have the "Include in net worth"-option unchecked.', + 'sum_of_period' => '기간의 합계', + 'average_in_period' => '기간의 평균', + 'account_role_defaultAsset' => '기본 자산 계정', + 'account_role_sharedAsset' => '공유 자산 계정', + 'account_role_savingAsset' => '예금 계좌', + 'account_role_ccAsset' => '신용카드', + 'account_role_cashWalletAsset' => '현금 지갑', + 'budget_chart_click' => '차트를 보려면 위 표에서 예산 이름을 클릭하세요.', + 'category_chart_click' => '차트를 보려면 위 표에서 카테고리 이름을 클릭하세요.', + 'in_out_accounts' => '조합당 수입 및 지출', + 'in_out_accounts_per_asset' => '수입 및 지출 (자산 계정당)', + 'in_out_per_category' => '카테고리당 수입 및 지출', + 'out_per_budget' => '예산당 지출', + 'select_expense_revenue' => '비용/수익 계정 선택', + 'multi_currency_report_sum' => '이 목록에는 여러 통화를 사용하는 계정이 포함되어 있으므로 표시되는 금액이 합리적이지 않을 수 있습니다. 보고서는 항상 기본 통화로 돌아갑니다.', + 'sum_in_default_currency' => '합계는 항상 기본 통화로 표시됩니다.', + 'net_filtered_prefs' => '이 차트에는 \'순자산에 포함\' 옵션이 선택되지 않은 계정은 포함되지 않습니다.', /* * PLEASE DO NOT EDIT THIS FILE DIRECTLY. @@ -2264,73 +2264,73 @@ return [ // charts: - 'chart' => 'Chart', - 'month' => 'Month', - 'budget' => 'Budget', - 'spent' => 'Spent', - 'spent_capped' => 'Spent (capped)', - 'spent_in_budget' => 'Spent in budget', - 'left_to_spend' => 'Left to spend', - 'earned' => 'Earned', - 'overspent' => 'Overspent', - 'left' => 'Left', - 'max-amount' => 'Maximum amount', - 'min-amount' => 'Minimum amount', - 'journal-amount' => 'Current bill entry', - 'name' => 'Name', - 'date' => 'Date', - 'date_and_time' => 'Date and time', - 'time' => 'Time', - 'paid' => 'Paid', - 'unpaid' => 'Unpaid', - 'day' => 'Day', + 'chart' => '차트', + 'month' => '월', + 'budget' => '예산', + 'spent' => '지출', + 'spent_capped' => '지출 (한도)', + 'spent_in_budget' => '예산내 지출', + 'left_to_spend' => '남은 지출', + 'earned' => '수입', + 'overspent' => '초과 지출', + 'left' => '왼쪽', + 'max-amount' => '최대 금액', + 'min-amount' => '최소 금액', + 'journal-amount' => '현재 청구서 항목', + 'name' => '이름', + 'date' => '날짜', + 'date_and_time' => '날짜와 시간', + 'time' => '시간', + 'paid' => '지불됨', + 'unpaid' => '미지불', + 'day' => '일', 'budgeted' => '예산', - 'period' => 'Period', - 'balance' => 'Balance', - 'sum' => 'Sum', - 'summary' => 'Summary', - 'average' => 'Average', - 'balanceFor' => 'Balance for :name', - 'no_tags' => '(no tags)', + 'period' => '기간', + 'balance' => '잔고', + 'sum' => '합계', + 'summary' => '요약', + 'average' => '평균', + 'balanceFor' => ':name 잔고', + 'no_tags' => '(태그 없음)', // piggy banks: - 'event_history' => 'Event history', - 'add_money_to_piggy' => 'Add money to piggy bank ":name"', - 'piggy_bank' => 'Piggy bank', - 'new_piggy_bank' => 'New piggy bank', - 'store_piggy_bank' => 'Store new piggy bank', - 'stored_piggy_bank' => 'Store new piggy bank ":name"', - 'account_status' => 'Account status', - 'left_for_piggy_banks' => 'Left for piggy banks', - 'sum_of_piggy_banks' => 'Sum of piggy banks', - 'saved_so_far' => 'Saved so far', - 'left_to_save' => 'Left to save', - 'suggested_amount' => 'Suggested monthly amount to save', - 'add_money_to_piggy_title' => 'Add money to piggy bank ":name"', - 'remove_money_from_piggy_title' => 'Remove money from piggy bank ":name"', - 'add' => 'Add', - 'no_money_for_piggy' => 'You have no money to put in this piggy bank.', - 'suggested_savings_per_month' => 'Suggested per month', + 'event_history' => '이벤트 기록', + 'add_money_to_piggy' => '":name" 저금통애 금액 추가', + 'piggy_bank' => '저금통', + 'new_piggy_bank' => '새 저금통', + 'store_piggy_bank' => '새 저금통 저장', + 'stored_piggy_bank' => '새 저금통 ":name" 저장', + 'account_status' => '계정 상태', + 'left_for_piggy_banks' => '저금통 잔액', + 'sum_of_piggy_banks' => '저금통 합계', + 'saved_so_far' => '지금까지 저장됨', + 'left_to_save' => '왼쪽으로 저장', + 'suggested_amount' => '월별 권장 절약 금액', + 'add_money_to_piggy_title' => '":name" 저금통애 금액 추가', + 'remove_money_from_piggy_title' => '":name" 저금통에서 금액 제거', + 'add' => '추가', + 'no_money_for_piggy' => '이 돼지 저금통에 넣을 돈이 없습니다.', + 'suggested_savings_per_month' => '월별 제안', - 'remove' => 'Remove', - 'max_amount_add' => 'The maximum amount you can add is', - 'max_amount_remove' => 'The maximum amount you can remove is', - 'update_piggy_button' => 'Update piggy bank', - 'update_piggy_title' => 'Update piggy bank ":name"', - 'updated_piggy_bank' => 'Updated piggy bank ":name"', - 'details' => 'Details', - 'events' => 'Events', - 'target_amount' => 'Target amount', - 'start_date' => 'Start date', - 'no_start_date' => 'No start date', - 'target_date' => 'Target date', - 'no_target_date' => 'No target date', - 'table' => 'Table', - 'delete_piggy_bank' => 'Delete piggy bank ":name"', - 'cannot_add_amount_piggy' => 'Could not add :amount to ":name".', - 'cannot_remove_from_piggy' => 'Could not remove :amount from ":name".', - 'deleted_piggy_bank' => 'Deleted piggy bank ":name"', - 'added_amount_to_piggy' => 'Added :amount to ":name"', + 'remove' => '삭제', + 'max_amount_add' => '추가할 수 있는 최대 금액은', + 'max_amount_remove' => '제거할 수 있는 최대 금액은', + 'update_piggy_button' => '저금통 업데이트', + 'update_piggy_title' => '":name" 저금통 업데이트', + 'updated_piggy_bank' => '":name" 저금통 업데이트됨', + 'details' => '세부 정보', + 'events' => '이벤트', + 'target_amount' => '목표 금액', + 'start_date' => '시작일', + 'no_start_date' => '시작일이 지정되지 않음', + 'target_date' => '목표일', + 'no_target_date' => '목표일이 지정되지 않음', + 'table' => '표', + 'delete_piggy_bank' => '":name" 저금통 삭제', + 'cannot_add_amount_piggy' => '":name"에 :amount을 추가할 수 없습니다.', + 'cannot_remove_from_piggy' => '":name"에 :amount을 제거할 수 없습니다.', + 'deleted_piggy_bank' => '":name" 저금통 삭제됨', + 'added_amount_to_piggy' => '":name"에 :amount를 추가함', 'removed_amount_from_piggy' => 'Removed :amount from ":name"', 'piggy_events' => 'Related piggy banks', @@ -2364,44 +2364,46 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', - 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', - 'invited_user_mail' => 'Email address', - 'invite_user' => 'Invite user', - 'user_is_invited' => 'Email address ":address" was invited to Firefly III', - 'administration' => 'Administration', - 'code_already_used' => 'Invite code has been used', - 'user_administration' => 'User administration', - 'list_all_users' => 'All users', - 'all_users' => 'All users', - 'instance_configuration' => 'Configuration', - 'firefly_instance_configuration' => 'Configuration options for Firefly III', - 'setting_single_user_mode' => 'Single user mode', + 'invite_new_user_text' => '관리자는 Firefly III 관리에서 등록하도록 사용자를 초대할 수 있습니다. 사용자가 공유할 수 있는 직접 링크를 사용하여 계정을 등록할 수 있습니다. 초대된 사용자와 해당 사용자의 초대 링크가 아래 표에 표시됩니다. 초대 링크는 자유롭게 공유할 수 있습니다.', + 'invited_user_mail' => '이메일 주소', + 'invite_user' => '사용자 초대', + 'user_is_invited' => '":address" 이메일 주소가 Firefly III에 초대되었습니다', + 'administration' => '관리', + 'code_already_used' => '초대 코드가 사용되었습니다', + 'user_administration' => '사용자 관리', + 'list_all_users' => '모든 사용자', + 'all_users' => '모든 사용자', + 'instance_configuration' => '환경 설정', + 'firefly_instance_configuration' => 'Firefly III의 환경설정 옵션', + 'setting_single_user_mode' => '단일 사용자 모드', 'setting_single_user_mode_explain' => 'By default, Firefly III only accepts one (1) registration: you. This is a security measure, preventing others from using your instance unless you allow them to. Future registrations are blocked. When you uncheck this box, others can use your instance as well, assuming they can reach it (when it is connected to the internet).', - 'store_configuration' => 'Store configuration', - 'single_user_administration' => 'User administration for :email', - 'edit_user' => 'Edit user :email', + 'store_configuration' => '환경설정 저장', + 'single_user_administration' => ':email에 대한 사용자 관리', + 'edit_user' => ':email 사용자 수정', 'hidden_fields_preferences' => 'You can enable more transaction options in your preferences.', - 'user_data_information' => 'User data', - 'user_information' => 'User information', - 'total_size' => 'total size', + 'user_data_information' => '사용자 데이터', + 'user_information' => '사용자 정보', + 'total_size' => '총 크기', 'budget_or_budgets' => ':count budget|:count budgets', 'budgets_with_limits' => ':count budget with configured amount|:count budgets with configured amount', 'nr_of_rules_in_total_groups' => ':count_rules rule(s) in :count_groups rule group(s)', 'tag_or_tags' => ':count tag|:count tags', - 'configuration_updated' => 'The configuration has been updated', - 'setting_is_demo_site' => 'Demo site', + 'configuration_updated' => '환경설정이 업데이트 되었습니다', + 'setting_is_demo_site' => '데모 사이트', 'setting_is_demo_site_explain' => 'If you check this box, this installation will behave as if it is the demo site, which can have weird side effects.', - 'block_code_bounced' => 'Email message(s) bounced', - 'block_code_expired' => 'Demo account expired', + 'block_code_bounced' => '이메일 메시지가 반송됨', + 'block_code_expired' => '데모 계정이 만료됨', 'no_block_code' => 'No reason for block or user not blocked', 'block_code_email_changed' => 'User has not yet confirmed new email address', 'admin_update_email' => 'Contrary to the profile page, the user will NOT be notified their email address has changed!', - 'update_user' => 'Update user', - 'updated_user' => 'User data has been changed.', - 'delete_user' => 'Delete user :email', - 'user_deleted' => 'The user has been deleted', - 'send_test_email' => 'Send test email message', + 'update_user' => '사용자 업데이트', + 'updated_user' => '사용자 데이터가 변경되었습니다.', + 'delete_user' => ':email 사용자 삭제', + 'user_deleted' => '사용자가 삭제되었습니다', + 'send_test_email' => '테스트 이메일 메시지 보내기', 'send_test_email_text' => 'To see if your installation is capable of sending email or posting Slack messages, please press this button. You will not see an error here (if any), the log files will reflect any errors. You can press this button as many times as you like. There is no spam control. The message will be sent to :email and should arrive shortly.', 'send_message' => 'Send message', 'send_test_triggered' => 'Test was triggered. Check your inbox and the log files.', @@ -2565,32 +2567,32 @@ return [ 'no_bills_create_default' => 'Create a bill', // recurring transactions - 'create_right_now' => 'Create right now', - 'no_new_transaction_in_recurrence' => 'No new transaction was created. Perhaps it was already fired for this date?', - 'recurrences' => 'Recurring transactions', - 'repeat_until_in_past' => 'This recurring transaction stopped repeating on :date.', - 'recurring_calendar_view' => 'Calendar', - 'no_recurring_title_default' => 'Let\'s create a recurring transaction!', - 'no_recurring_intro_default' => 'You have no recurring transactions yet. You can use these to make Firefly III automatically create transactions for you.', - 'no_recurring_imperative_default' => 'This is a pretty advanced feature but it can be extremely useful. Make sure you read the documentation (?)-icon in the top right corner) before you continue.', - 'no_recurring_create_default' => 'Create a recurring transaction', - 'make_new_recurring' => 'Create a recurring transaction', - 'recurring_daily' => 'Every day', - 'recurring_weekly' => 'Every week on :weekday', + 'create_right_now' => '지금 바로 만들기', + 'no_new_transaction_in_recurrence' => '새 거래가 생성되지 않았습니다. 이 날짜에 이미 해지된 것일까요?', + 'recurrences' => '반복 거래', + 'repeat_until_in_past' => '이 반복 거래는 :date에 반복이 중지되었습니다.', + 'recurring_calendar_view' => '달력', + 'no_recurring_title_default' => '반복 거래를 만들어 봅시다!', + 'no_recurring_intro_default' => '아직 반복 거래가 없습니다. 이를 사용하여 Firefly III가 자동으로 거래를 생성하도록 할 수 있습니다.', + 'no_recurring_imperative_default' => '이 기능은 꽤 고급 기능이지만 매우 유용할 수 있습니다. 계속하기 전에 오른쪽 상단에 있는 문서((?) 아이콘)를 읽어보시기 바랍니다.', + 'no_recurring_create_default' => '반복 거래 만들기', + 'make_new_recurring' => '반복 거래 만들기', + 'recurring_daily' => '매일', + 'recurring_weekly' => '매주 :weekday', 'recurring_weekly_skip' => 'Every :skip(st/nd/rd/th) week on :weekday', 'recurring_monthly' => 'Every month on the :dayOfMonth(st/nd/rd/th) day', 'recurring_monthly_skip' => 'Every :skip(st/nd/rd/th) month on the :dayOfMonth(st/nd/rd/th) day', 'recurring_ndom' => 'Every month on the :dayOfMonth(st/nd/rd/th) :weekday', 'recurring_yearly' => 'Every year on :date', 'overview_for_recurrence' => 'Overview for recurring transaction ":title"', - 'warning_duplicates_repetitions' => 'In rare instances, dates appear twice in this list. This can happen when multiple repetitions collide. Firefly III will always generate one transaction per day.', + 'warning_duplicates_repetitions' => '드물지만 이 목록에 날짜가 두 번 표시되는 경우가 있습니다. 이는 여러 반복이 충돌할 때 발생할 수 있습니다. Firefly III는 항상 하루에 하나의 트랜잭션을 생성합니다.', 'created_transactions' => '관련 거래', 'expected_withdrawals' => '예상 출금액', 'expected_deposits' => '예상 입금', 'expected_transfers' => '예상 이체', - 'created_withdrawals' => 'Created withdrawals', - 'created_deposits' => 'Created deposits', - 'created_transfers' => 'Created transfers', + 'created_withdrawals' => '출금 생성', + 'created_deposits' => '입금 생성', + 'created_transfers' => '이체 생성', 'recurring_info' => 'Recurring transaction :count / :total', 'created_from_recurrence' => 'Created from recurring transaction ":title" (#:id)', 'recurring_never_cron' => 'It seems the cron job that is necessary to support recurring transactions has never run. This is of course normal when you have just installed Firefly III, but this should be something to set up as soon as possible. Please check out the help-pages using the (?)-icon in the top right corner of the page.', @@ -2620,13 +2622,13 @@ return [ 'recurring_repeats_x_times' => 'Repeats :count time|Repeats :count times', 'update_recurrence' => 'Update recurring transaction', 'updated_recurrence' => 'Updated recurring transaction ":title"', - 'recurrence_is_inactive' => 'This recurring transaction is not active and will not generate new transactions.', - 'delete_recurring' => 'Delete recurring transaction ":title"', - 'new_recurring_transaction' => 'New recurring transaction', - 'help_weekend' => 'What should Firefly III do when the recurring transaction falls on a Saturday or Sunday?', - 'do_nothing' => 'Just create the transaction', - 'skip_transaction' => 'Skip the occurrence', - 'jump_to_friday' => 'Create the transaction on the previous Friday instead', + 'recurrence_is_inactive' => '이 반복 거래는 활성화되어 있지 않으며 새 거래를 생성하지 않습니다.', + 'delete_recurring' => '":title" 반복 거래 삭제', + 'new_recurring_transaction' => '새 반복 거래', + 'help_weekend' => '반복 거래가 토요일이나 일요일에 해당하는 경우 Firefly III는 어떻게 해야 하나요?', + 'do_nothing' => '그냥 트랜잭션을 생성', + 'skip_transaction' => '발생 건너뛰기', + 'jump_to_friday' => '대신 이전 금요일에 거래를 생성합니다', 'jump_to_monday' => '대신 다음 월요일에 거래를 생성합니다', 'will_jump_friday' => '주말이 아닌 금요일에 생성됩니다.', 'will_jump_monday' => '주말이 아닌 월요일에 생성됩니다.', diff --git a/resources/lang/ko_KR/validation.php b/resources/lang/ko_KR/validation.php index 5b0e3b2140..9f3a33dcd5 100644 --- a/resources/lang/ko_KR/validation.php +++ b/resources/lang/ko_KR/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => '이 필드의 내용은 통화 정보가 없으면 유효하지 않습니다.', 'not_transfer_account' => '이 계정은 이체에 사용할 수 있는 계정이 아닙니다.', 'require_currency_amount' => '이 필드의 내용은 외화 수량 정보가 없으면 유효하지 않습니다.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => '거래 설명은 전역 설명과 같지 않아야 합니다.', 'file_invalid_mime' => '":name" 파일은 새로운 업로드를 허용하지 않는 ":mime" 타입입니다.', 'file_too_large' => '":name" 파일이 너무 큽니다.', diff --git a/resources/lang/nb_NO/firefly.php b/resources/lang/nb_NO/firefly.php index 8d02ccd9f8..f6b480a493 100644 --- a/resources/lang/nb_NO/firefly.php +++ b/resources/lang/nb_NO/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Besøk URL til webhook', 'reset_webhook_secret' => 'Tilbakestill Webhook nøkkel', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") er lagret.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") er oppdatert.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") er oppdatert.', // API access 'authorization_request' => 'Firefly III v:version autorisasjonsforespørsel', @@ -1115,13 +1115,13 @@ return [ 'rule_trigger_not_account_nr_contains' => 'Ingen kontonummer / IBAN inneholder ":trigger_value"', 'rule_trigger_not_account_nr_ends' => 'Ingen kontonummer / IBAN slutter på":trigger_value"', 'rule_trigger_not_account_nr_starts' => 'Ingen kontonummer / IBAN starter med ":trigger_value"', - 'rule_trigger_not_category_is' => 'Category is not ":trigger_value"', - 'rule_trigger_not_category_contains' => 'Category does not contain ":trigger_value"', - 'rule_trigger_not_category_ends' => 'Category does not end on ":trigger_value"', - 'rule_trigger_not_category_starts' => 'Category does not start with ":trigger_value"', - 'rule_trigger_not_budget_is' => 'Budget is not ":trigger_value"', - 'rule_trigger_not_budget_contains' => 'Budget does not contain ":trigger_value"', - 'rule_trigger_not_budget_ends' => 'Budget does not end on ":trigger_value"', + 'rule_trigger_not_category_is' => 'Kategori er ikke ":trigger_value"', + 'rule_trigger_not_category_contains' => 'Kategori inneholder ikke ":trigger_value"', + 'rule_trigger_not_category_ends' => 'Kategori slutter ikke på ":trigger_value"', + 'rule_trigger_not_category_starts' => 'Kategori starter ikke med ":trigger_value"', + 'rule_trigger_not_budget_is' => 'Budsjett er ikke ":trigger_value"', + 'rule_trigger_not_budget_contains' => 'Budsjett inneholder ikke ":trigger_value"', + 'rule_trigger_not_budget_ends' => 'Budsjett slutter ikke på ":trigger_value"', 'rule_trigger_not_budget_starts' => 'Budget does not start with ":trigger_value"', 'rule_trigger_not_bill_is' => 'Regningen er ikke ":trigger_value"', 'rule_trigger_not_bill_contains' => 'Regningen inneholder ikke ":trigger_value"', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/nb_NO/validation.php b/resources/lang/nb_NO/validation.php index 1b90d818f5..0059a32b99 100644 --- a/resources/lang/nb_NO/validation.php +++ b/resources/lang/nb_NO/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Innholdet i dette feltet er ugyldig uten valutainformasjon.', 'not_transfer_account' => 'Denne kontoen er ikke en konto som kan benyttes for overføringer.', 'require_currency_amount' => 'Innholdet i dette feltet er ugyldig uten utenlandsk beløpsinformasjon.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Transaksjonsbeskrivelsen bør ikke være lik global beskrivelse.', 'file_invalid_mime' => 'Kan ikke akseptere fil ":name" av typen ":mime" for opplasting.', 'file_too_large' => '":name"-filen er for stor.', diff --git a/resources/lang/nl_NL/firefly.php b/resources/lang/nl_NL/firefly.php index 68acd84c93..2f5a849b4e 100644 --- a/resources/lang/nl_NL/firefly.php +++ b/resources/lang/nl_NL/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Bezoek URL van webhook', 'reset_webhook_secret' => 'Reset webhook-geheim', 'webhook_stored_link' => 'Webhook #{ID} ({title}) is opgeslagen.', - 'webhook_updated_link' => 'Webhook #{ID} ({title}) is geüpdatet.', + 'webhook_updated_link' => 'Webhook #{ID} ({title}) is geüpdatet.', // API access 'authorization_request' => 'Firefly III v:version autorisatieverzoek', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Nieuwe gebruiker uitnodigen', 'invite_new_user_text' => 'Als beheerder kun je gebruikers uitnodigen om zich te registreren bij jouw Firefly III-installatie. Je kan een directe link maken en deze vervolgens delen met gebruiker. Hiermee kunnen ze een account maken. De uitgenodigde gebruiker en hun uitnodigingslink verschijnen in de onderstaande tabel. Je kan die link met ze delen.', 'invited_user_mail' => 'E-mailadres', diff --git a/resources/lang/nl_NL/validation.php b/resources/lang/nl_NL/validation.php index ae4c78aa28..7c3f384ad2 100644 --- a/resources/lang/nl_NL/validation.php +++ b/resources/lang/nl_NL/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'De inhoud van dit veld is ongeldig zonder valutagegevens.', 'not_transfer_account' => 'Deze account kan je niet gebruiken voor overschrijvingen.', 'require_currency_amount' => 'De inhoud van dit veld is ongeldig zonder bedrag in vreemde valuta.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Transactiebeschrijving mag niet gelijk zijn aan globale beschrijving.', 'file_invalid_mime' => 'Bestand ":name" is van het type ":mime", en die kan je niet uploaden.', 'file_too_large' => 'Bestand ":name" is te groot.', diff --git a/resources/lang/pl_PL/firefly.php b/resources/lang/pl_PL/firefly.php index 17df27c9bc..55e3778137 100644 --- a/resources/lang/pl_PL/firefly.php +++ b/resources/lang/pl_PL/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Odwiedź adres URL webhooka', 'reset_webhook_secret' => 'Resetuj sekret webhooka', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") został zapisany.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") został zaktualizowany.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") został zaktualizowany.', // API access 'authorization_request' => 'Żądanie autoryzacji Firefly III v:version', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/pl_PL/validation.php b/resources/lang/pl_PL/validation.php index 0ff7c79aeb..b3dd9d4064 100644 --- a/resources/lang/pl_PL/validation.php +++ b/resources/lang/pl_PL/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Treść tego pola jest nieprawidłowa bez informacji o walucie.', 'not_transfer_account' => 'To konto nie jest kontem, które może być używane do przelewów.', 'require_currency_amount' => 'Treść tego pola jest nieprawidłowa bez informacji o obcej kwocie.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Opis transakcji nie powinien być równy globalnemu opisowi.', 'file_invalid_mime' => 'Plik ":name" jest typu ":mime", który nie jest akceptowany jako nowy plik do przekazania.', 'file_too_large' => 'Plik ":name" jest zbyt duży.', diff --git a/resources/lang/pt_BR/firefly.php b/resources/lang/pt_BR/firefly.php index 208dd1cca8..4292f0c102 100644 --- a/resources/lang/pt_BR/firefly.php +++ b/resources/lang/pt_BR/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Acesse a URL do webhook', 'reset_webhook_secret' => 'Redefinir chave do webhook', 'webhook_stored_link' => 'Webhooh #{ID} ("{title}") foi salva.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") foi atualizado.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") foi atualizado.', // API access 'authorization_request' => 'Firefly III v:version Pedido de autorização', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Convidar novo usuário', 'invite_new_user_text' => 'Como administrador, você pode convidar usuários para se registrarem na administração do Firefly III. Usando o link direto que você pode compartilhar, eles serão capazes de registrar uma conta. O usuário convidado e seu link de convite aparecerão na tabela abaixo. Você é livre para compartilhar com eles o link do convite.', 'invited_user_mail' => 'E-mail', diff --git a/resources/lang/pt_BR/validation.php b/resources/lang/pt_BR/validation.php index c7369f6f91..96f9a135ec 100644 --- a/resources/lang/pt_BR/validation.php +++ b/resources/lang/pt_BR/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'O conteúdo deste campo é inválido sem informações de moeda.', 'not_transfer_account' => 'Esta não é uma conta que possa ser usada para transferências.', 'require_currency_amount' => 'O conteúdo deste campo é inválido sem a informação de moeda estrangeira.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'A descrição da transação não pode ser igual à descrição global.', 'file_invalid_mime' => 'Arquivo ":name" é do tipo ":mime" que não é aceito como um novo upload.', 'file_too_large' => 'Arquivo ":name" é muito grande.', diff --git a/resources/lang/pt_PT/firefly.php b/resources/lang/pt_PT/firefly.php index 64b5be0976..ff0d2027a5 100644 --- a/resources/lang/pt_PT/firefly.php +++ b/resources/lang/pt_PT/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Ir para URL do webhook', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III v:version Solicitar Autorizacao', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/pt_PT/validation.php b/resources/lang/pt_PT/validation.php index fb0d22ad80..906488a528 100644 --- a/resources/lang/pt_PT/validation.php +++ b/resources/lang/pt_PT/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'O conteudo deste campo e invalido sem as informacoes da divisa.', 'not_transfer_account' => 'Esta conta não pode ser utilizada para transferências.', 'require_currency_amount' => 'O conteúdo deste campo é inválido sem a informação da moeda estrangeira.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'A descricao da transaccao nao deve ser igual a descricao global.', 'file_invalid_mime' => 'O ficheiro ":name" e do tipo ":mime" que nao e aceite como um novo upload.', 'file_too_large' => 'O ficheiro ":name" e demasiado grande.', diff --git a/resources/lang/ro_RO/firefly.php b/resources/lang/ro_RO/firefly.php index 4adf3a7bbc..76a97489f4 100644 --- a/resources/lang/ro_RO/firefly.php +++ b/resources/lang/ro_RO/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'v: Solicitare de autorizare', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/ro_RO/validation.php b/resources/lang/ro_RO/validation.php index 0e5d634875..a275caaaff 100644 --- a/resources/lang/ro_RO/validation.php +++ b/resources/lang/ro_RO/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Conținutul acestui câmp este nevalid fără informații despre monedă.', 'not_transfer_account' => 'Acest cont nu este un cont care poate fi utilizat pentru transferuri.', 'require_currency_amount' => 'Conținutul acestui câmp este nevalid fără informații despre monedă.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Descrierea tranzacției nu trebuie să fie egală cu descrierea globală.', 'file_invalid_mime' => 'Fișierul ":name" este de tip ":mime" și nu este acceptat ca o încărcare nouă.', 'file_too_large' => 'Fișierul ":name" este prea mare.', diff --git a/resources/lang/ru_RU/firefly.php b/resources/lang/ru_RU/firefly.php index f925632533..5d0b8ea065 100644 --- a/resources/lang/ru_RU/firefly.php +++ b/resources/lang/ru_RU/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Посетить URL вебхука', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Запрос авторизации Firefly III v:version', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/ru_RU/validation.php b/resources/lang/ru_RU/validation.php index f1ba60aa84..054f3227d7 100644 --- a/resources/lang/ru_RU/validation.php +++ b/resources/lang/ru_RU/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Содержимое этого поля недействительно без информации о валюте.', 'not_transfer_account' => 'Этот счёт нельзя использовать для перевода.', 'require_currency_amount' => 'Содержимое этого поля недействительно без информации о валюте.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Описание транзакции не должно совпадать с глобальным описанием.', 'file_invalid_mime' => 'Файл ":name" имеет тип ":mime". Загрузка файлов такого типа невозможна.', 'file_too_large' => 'Файл ":name" слишком большой.', diff --git a/resources/lang/sk_SK/firefly.php b/resources/lang/sk_SK/firefly.php index c6737408b1..741690c0d6 100644 --- a/resources/lang/sk_SK/firefly.php +++ b/resources/lang/sk_SK/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Požiadavka na overenie – Firefly III verzia :version', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/sk_SK/validation.php b/resources/lang/sk_SK/validation.php index 5ded3a4992..d4b20bf557 100644 --- a/resources/lang/sk_SK/validation.php +++ b/resources/lang/sk_SK/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Obsah tohto poľa je bez informácií o mene neplatný.', 'not_transfer_account' => 'Tento účet nie je účet, ktorý je možné použiť pre prevody.', 'require_currency_amount' => 'Obsah tohto poľa je bez informácie o cudzej mene neplatný.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Popis transakcie nesmie byť rovnaký ako globálny popis.', 'file_invalid_mime' => 'Súbor ":name" je typu ":mime", ktorý nie je pre nahrávanie schválený.', 'file_too_large' => 'Súbor ":name" je príliš veľký.', diff --git a/resources/lang/sl_SI/firefly.php b/resources/lang/sl_SI/firefly.php index 589d12dec2..2dba6e8caf 100644 --- a/resources/lang/sl_SI/firefly.php +++ b/resources/lang/sl_SI/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III v:version Zahteva za avtorizacijo', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'E-poštni naslov', diff --git a/resources/lang/sl_SI/validation.php b/resources/lang/sl_SI/validation.php index 69f17f55f1..0ca308f91b 100644 --- a/resources/lang/sl_SI/validation.php +++ b/resources/lang/sl_SI/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'The content of this field is invalid without currency information.', 'not_transfer_account' => 'This account is not an account that can be used for transfers.', 'require_currency_amount' => 'Vsebina tega polja ni veljavna brez podatkov o tujih zneskih.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Transaction description should not equal global description.', 'file_invalid_mime' => 'File ":name" is of type ":mime" which is not accepted as a new upload.', 'file_too_large' => 'File ":name" is too large.', diff --git a/resources/lang/sv_SE/firefly.php b/resources/lang/sv_SE/firefly.php index c4062ec596..945ce2e876 100644 --- a/resources/lang/sv_SE/firefly.php +++ b/resources/lang/sv_SE/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III v:version Auktorisationsbegäran', @@ -2365,6 +2365,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/sv_SE/validation.php b/resources/lang/sv_SE/validation.php index 81cc4145ef..240d329f54 100644 --- a/resources/lang/sv_SE/validation.php +++ b/resources/lang/sv_SE/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Innehållet i det här fältet är ogiltigt utan valutainformation.', 'not_transfer_account' => 'Detta är inte ett konto som kan användas för transaktioner.', 'require_currency_amount' => 'Innehållet i det här fältet är ogiltigt utan utländskt belopp.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Transaktions beskrivning bör inte vara samma som den globala beskrivningen.', 'file_invalid_mime' => 'Filen ”:name” är av typ ”:mime” som inte accepteras som en ny uppladdning.', 'file_too_large' => 'Filen ”:name” är för stor.', diff --git a/resources/lang/th_TH/firefly.php b/resources/lang/th_TH/firefly.php index 9a690a06de..b162503fc9 100644 --- a/resources/lang/th_TH/firefly.php +++ b/resources/lang/th_TH/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III v:version Authorization Request', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/th_TH/validation.php b/resources/lang/th_TH/validation.php index f8255ca6a0..68f7ebfa5d 100644 --- a/resources/lang/th_TH/validation.php +++ b/resources/lang/th_TH/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'The content of this field is invalid without currency information.', 'not_transfer_account' => 'This account is not an account that can be used for transfers.', 'require_currency_amount' => 'The content of this field is invalid without foreign amount information.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Transaction description should not equal global description.', 'file_invalid_mime' => 'File ":name" is of type ":mime" which is not accepted as a new upload.', 'file_too_large' => 'File ":name" is too large.', diff --git a/resources/lang/tr_TR/firefly.php b/resources/lang/tr_TR/firefly.php index 4ebdd8a2ea..e07bd5c7e7 100644 --- a/resources/lang/tr_TR/firefly.php +++ b/resources/lang/tr_TR/firefly.php @@ -281,7 +281,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III v: version Yetkilendirme İsteği', @@ -2365,6 +2365,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/tr_TR/validation.php b/resources/lang/tr_TR/validation.php index 94807bc253..c8d0bc61f6 100644 --- a/resources/lang/tr_TR/validation.php +++ b/resources/lang/tr_TR/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Bu alanın içeriği para birimi bilgileri geçersiz.', 'not_transfer_account' => 'This account is not an account that can be used for transfers.', 'require_currency_amount' => 'The content of this field is invalid without foreign amount information.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'İşlem açıklaması genel açıklama eşit değildir.', 'file_invalid_mime' => '":name" dosyası ":mime" türünde olup yeni bir yükleme olarak kabul edilemez.', 'file_too_large' => '":name" dosyası çok büyük.', diff --git a/resources/lang/uk_UA/firefly.php b/resources/lang/uk_UA/firefly.php index a989ae6c0a..50b8355619 100644 --- a/resources/lang/uk_UA/firefly.php +++ b/resources/lang/uk_UA/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Відвідайте URL-адресу веб-хуку', 'reset_webhook_secret' => 'Відновити сікрет веб-хука', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III v:version запит авторизації', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/uk_UA/validation.php b/resources/lang/uk_UA/validation.php index 5780b1efee..6ad60f8836 100644 --- a/resources/lang/uk_UA/validation.php +++ b/resources/lang/uk_UA/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Вміст цього поля є недійсним без інформації про валюту.', 'not_transfer_account' => 'Цей рахунок не є рахунком, який може бути використаний для переказу.', 'require_currency_amount' => 'Вміст цього поля є недійсним без інформації про валюту.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Опис транзакції має відрізнятися від глобального опису.', 'file_invalid_mime' => 'Файл ":name" має заборонений для завантаження тип ":mime".', 'file_too_large' => 'Файл ":name" надто великий.', diff --git a/resources/lang/vi_VN/firefly.php b/resources/lang/vi_VN/firefly.php index 31aad54a17..d7c419d042 100644 --- a/resources/lang/vi_VN/firefly.php +++ b/resources/lang/vi_VN/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III v: phiên bản Yêu cầu ủy quyền', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/vi_VN/validation.php b/resources/lang/vi_VN/validation.php index 4a7a285b27..4ce39a36e1 100644 --- a/resources/lang/vi_VN/validation.php +++ b/resources/lang/vi_VN/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => 'Nội dung của trường này không hợp lệ nếu không có thông tin về tiền tệ.', 'not_transfer_account' => 'Tài khoản này không phải là tài khoản có thể được sử dụng để chuyển khoản.', 'require_currency_amount' => 'Nội dung của trường này không hợp lệ nếu không có thông tin về số lượng nước ngoài.', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => 'Mô tả giao dịch không nên bằng mô tả toàn cầu.', 'file_invalid_mime' => 'File ":name" là loại ":mime" không được chấp nhận khi tải lên mới.', 'file_too_large' => 'File ":name" quá lớn.', diff --git a/resources/lang/zh_CN/firefly.php b/resources/lang/zh_CN/firefly.php index 1e4ab41b6d..dab6d18cfd 100644 --- a/resources/lang/zh_CN/firefly.php +++ b/resources/lang/zh_CN/firefly.php @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => '访问 webhook URL', 'reset_webhook_secret' => '重置 webhook 密钥', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III :version 版授权请求', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/zh_CN/validation.php b/resources/lang/zh_CN/validation.php index 75c1d3f7cc..a61a700227 100644 --- a/resources/lang/zh_CN/validation.php +++ b/resources/lang/zh_CN/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => '此字段需要货币信息', 'not_transfer_account' => '此账户无法用于转账', 'require_currency_amount' => '此字段需要外币信息', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => '交易描述和全局描述不应相同', 'file_invalid_mime' => '文件“:name”的类型为“:mime”,系统禁止上传此类型的文件', 'file_too_large' => '文件“:name”过大', diff --git a/resources/lang/zh_TW/breadcrumbs.php b/resources/lang/zh_TW/breadcrumbs.php index 8796ae9d72..55c4e8fdb5 100644 --- a/resources/lang/zh_TW/breadcrumbs.php +++ b/resources/lang/zh_TW/breadcrumbs.php @@ -37,14 +37,14 @@ declare(strict_types=1); return [ 'home' => '首頁', 'budgets' => '預算', - 'subscriptions' => 'Subscriptions', - 'transactions' => 'Transactions', - 'title_expenses' => 'Expenses', + 'subscriptions' => '訂閱', + 'transactions' => '交易', + 'title_expenses' => '支出', 'title_withdrawal' => 'Expenses', 'title_revenue' => 'Revenue / income', 'title_deposit' => 'Revenue / income', - 'title_transfer' => 'Transfers', - 'title_transfers' => 'Transfers', + 'title_transfer' => '轉帳', + 'title_transfers' => '轉帳', 'edit_currency' => '編輯貨幣 ":name"', 'delete_currency' => '刪除貨幣 ":name"', 'newPiggyBank' => '創建一個新的小豬撲滿', @@ -95,7 +95,7 @@ return [ 'edit_object_group' => '編輯群組 ":title"', 'delete_object_group' => '刪除群組 ":title"', 'logout_others' => '登出其他 sessions', - 'asset_accounts' => 'Asset accounts', + 'asset_accounts' => '資產帳戶', 'expense_accounts' => 'Expense accounts', 'revenue_accounts' => 'Revenue accounts', 'liabilities_accounts' => 'Liabilities', diff --git a/resources/lang/zh_TW/firefly.php b/resources/lang/zh_TW/firefly.php index b9835f1778..8eafb51a08 100644 --- a/resources/lang/zh_TW/firefly.php +++ b/resources/lang/zh_TW/firefly.php @@ -46,15 +46,15 @@ return [ 'confirm_action' => 'Confirm action', 'last_seven_days' => '最近7天', 'last_thirty_days' => '最近30天', - 'last_180_days' => 'Last 180 days', - 'month_to_date' => 'Month to date', - 'year_to_date' => 'Year to date', - 'YTD' => 'YTD', + 'last_180_days' => '最近 180 天', + 'month_to_date' => '本月至今', + 'year_to_date' => '今年迄今為止', + 'YTD' => '本年至今', 'welcome_back' => 'What\'s playing?', 'everything' => '所有', 'today' => '今天', 'customRange' => '自訂範圍', - 'date_range' => 'Date range', + 'date_range' => '日期範圍', 'apply' => '套用', 'select_date' => '選擇日期..', 'cancel' => '取消', @@ -71,8 +71,8 @@ return [ 'Opening balance' => '初始餘額', 'create_new_stuff' => '建立新內容', 'new_withdrawal' => '新提款', - 'create_new_transaction' => 'Create a new transaction', - 'sidebar_frontpage_create' => 'Create', + 'create_new_transaction' => '建立新交易', + 'sidebar_frontpage_create' => '建立', 'new_transaction' => '新交易', 'no_rules_for_bill' => '此帳單未設定相關的規則。', 'go_to_asset_accounts' => '檢視您的資產帳戶', @@ -98,7 +98,7 @@ return [ 'flash_info' => '訊息', 'flash_warning' => '警告!', 'flash_error' => '錯誤!', - 'flash_danger' => 'Danger!', + 'flash_danger' => '危險!', 'flash_info_multiple' => '有 1 個訊息|有 :count 個訊息', 'flash_error_multiple' => '有 1 個錯誤|有 :count 個錯誤', 'net_worth' => '淨值', @@ -146,9 +146,9 @@ return [ 'spent_in_specific_budget' => '預算「:budget」中的花費', 'spent_in_specific_double' => 'Spent in account ":account"', 'earned_in_specific_double' => 'Earned in account ":account"', - 'source_account' => 'Source account', + 'source_account' => '來源帳戶', 'source_account_reconciliation' => 'You can\'t edit the source account of a reconciliation transaction.', - 'destination_account' => 'Destination account', + 'destination_account' => '目標帳戶', 'destination_account_reconciliation' => 'You can\'t edit the destination account of a reconciliation transaction.', 'sum_of_expenses_in_budget' => '預算「:budget」中的總花費', 'left_in_budget_limit' => '依照預算的支出尚餘', @@ -235,8 +235,8 @@ return [ 'average_per_bill' => '每張帳單的平均數', 'expected_total' => '預期總數', 'reconciliation_account_name' => ':name reconciliation (:currency)', - 'saved' => 'Saved', - 'advanced_options' => 'Advanced options', + 'saved' => '已儲存', + 'advanced_options' => '進階選項', 'advanced_options_explain' => 'Some pages in Firefly III have advanced options hidden behind this button. This page doesn\'t have anything fancy here, but do check out the others!', 'here_be_dragons' => 'Hic sunt dracones', @@ -280,7 +280,7 @@ return [ 'visit_webhook_url' => 'Visit webhook URL', 'reset_webhook_secret' => 'Reset webhook secret', 'webhook_stored_link' => 'Webhook #{ID} ("{title}") has been stored.', - 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', + 'webhook_updated_link' => 'Webhook #{ID} ("{title}") has been updated.', // API access 'authorization_request' => 'Firefly III :version 版授權請求', @@ -297,7 +297,7 @@ return [ 'is_alpha_warning' => 'You are running an ALPHA version. Be wary of bugs and issues.', 'is_beta_warning' => 'You are running an BETA version. Be wary of bugs and issues.', 'all_destination_accounts' => 'Destination accounts', - 'all_source_accounts' => 'Source accounts', + 'all_source_accounts' => '來源帳戶', 'back_to_index' => 'Back to the index', 'cant_logout_guard' => 'Firefly III can\'t log you out.', 'internal_reference' => 'Internal reference', @@ -2364,6 +2364,8 @@ return [ // administration + 'invite_is_already_redeemed' => 'The invite to ":address" has already been redeemed.', + 'invite_is_deleted' => 'The invite to ":address" has been deleted.', 'invite_new_user_title' => 'Invite new user', 'invite_new_user_text' => 'As an administrator, you can invite users to register on your Firefly III administration. Using the direct link you can share with them, they will be able to register an account. The invited user and their invite link will appear in the table below. You are free to share the invitation link with them.', 'invited_user_mail' => 'Email address', diff --git a/resources/lang/zh_TW/list.php b/resources/lang/zh_TW/list.php index 7724a039e4..9c629e80b1 100644 --- a/resources/lang/zh_TW/list.php +++ b/resources/lang/zh_TW/list.php @@ -48,10 +48,10 @@ return [ 'currentBalance' => '目前餘額', 'linked_to_rules' => '相關規則', 'active' => '是否啟用?', - 'percentage' => 'pct.', - 'recurring_transaction' => 'Recurring transaction', + 'percentage' => '百分比', + 'recurring_transaction' => '週期性交易', 'next_due' => 'Next due', - 'transaction_type' => 'Type', + 'transaction_type' => '類型', 'lastActivity' => '上次活動', 'balanceDiff' => '餘額差', 'other_meta_data' => 'Other meta data', @@ -62,7 +62,7 @@ return [ 'account_type' => '帳戶類型', 'created_at' => '建立於', 'account' => '帳戶', - 'external_url' => 'External URL', + 'external_url' => '外部網址', 'matchingAmount' => '金額', 'destination' => '目標', 'source' => '來源', @@ -91,7 +91,7 @@ return [ 'due_date' => '到期日', 'payment_date' => '付款日期', 'invoice_date' => '發票日期', - 'internal_reference' => 'Internal reference', + 'internal_reference' => '內部參照', 'notes' => '備註', 'from' => '自', 'piggy_bank' => '小豬撲滿', @@ -105,7 +105,7 @@ return [ 'type' => '類型', 'completed' => '已完成', 'iban' => '國際銀行帳戶號碼 (IBAN)', - 'account_number' => 'Account number', + 'account_number' => '帳戶號碼', 'paid_current_period' => '已付此區間', 'email' => '電子郵件', 'registered_at' => '註冊於', @@ -176,12 +176,12 @@ return [ 'interest_period' => 'Interest period', 'liability_type' => '負債類型', 'liability_direction' => 'Liability in/out', - 'end_date' => 'End date', + 'end_date' => '結束日期', 'payment_info' => 'Payment information', 'expected_info' => 'Next expected transaction', - 'start_date' => 'Start date', - 'trigger' => 'Trigger', - 'response' => 'Response', + 'start_date' => '開始日期', + 'trigger' => '觸發器', + 'response' => '回應', 'delivery' => 'Delivery', 'url' => 'URL', 'secret' => 'Secret', diff --git a/resources/lang/zh_TW/validation.php b/resources/lang/zh_TW/validation.php index 22c14eed1f..b5dc1f53cb 100644 --- a/resources/lang/zh_TW/validation.php +++ b/resources/lang/zh_TW/validation.php @@ -66,6 +66,7 @@ return [ 'require_currency_info' => '此欄位內容須要貨幣資訊。', 'not_transfer_account' => 'This account is not an account that can be used for transfers.', 'require_currency_amount' => '此欄位內容須要外幣資訊。', + 'require_foreign_currency' => 'This field requires a number', 'equal_description' => '交易描述不應等同全域描述。', 'file_invalid_mime' => '檔案 ":name" 類型為 ":mime",不允許上載。', 'file_too_large' => '檔案 ":name" 過大。', diff --git a/resources/views/admin/users/index.twig b/resources/views/admin/users/index.twig index 96e18d05fd..b9bdf6ca9d 100644 --- a/resources/views/admin/users/index.twig +++ b/resources/views/admin/users/index.twig @@ -137,7 +137,7 @@
-
@@ -178,6 +178,6 @@ nonce="{{ JS_NONCE }}"> {% endblock %} {% block scripts %} - + + {% endblock %} diff --git a/resources/views/layout/v3/session.twig b/resources/views/layout/v3/session.twig index e89d3a2b0b..e1e20b4176 100644 --- a/resources/views/layout/v3/session.twig +++ b/resources/views/layout/v3/session.twig @@ -7,10 +7,10 @@ {{ 'login_page_title'|_ }} - - - - + + + + {% block content %}{% endblock %} diff --git a/resources/views/profile/index.twig b/resources/views/profile/index.twig index b2e2dbe23b..166a240404 100644 --- a/resources/views/profile/index.twig +++ b/resources/views/profile/index.twig @@ -318,7 +318,7 @@ url = '{{ route('api.v1.data.purge') }}'; } if (link.data('type') === 'unused_accounts') { - url = deleteAPIRoute + '?objects=accounts&unused=true'; + url = deleteAPIRoute + '?objects=not_assets_liabilities&unused=true'; } // replace icon with loading thing diff --git a/routes/web.php b/routes/web.php index e2bdf2366f..c11017e924 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1341,8 +1341,8 @@ Route::group( Route::post('users/destroy/{user}', ['uses' => 'UserController@destroy', 'as' => 'users.destroy']); // invitee management - Route::get('users/delete_invite/{invitedUser}', ['uses' => 'UserController@deleteInvite', 'as' => 'users.delete-invite']); Route::post('users/invite', ['uses' => 'UserController@invite', 'as' => 'users.invite']); + Route::post('users/delete-invite/{invitedUser}', ['uses' => 'UserController@deleteInvite', 'as' => 'users.delete-invite']); // journal links manager Route::get('links', ['uses' => 'LinkController@index', 'as' => 'links.index']); diff --git a/sonar-project.properties b/sonar-project.properties index f4fdaadc97..2f17927116 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -12,6 +12,6 @@ sonar.organization=firefly-iii #sonar.sourceEncoding=UTF-8 -sonar.projectVersion=6.0.0 +sonar.projectVersion=6.0.1 sonar.sources=app,bootstrap,database,resources/assets,resources/views,routes,tests sonar.sourceEncoding=UTF-8 diff --git a/yarn.lock b/yarn.lock index 109161e003..3cc12d4c4c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -979,7 +979,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.17" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== @@ -1201,9 +1201,9 @@ integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/node@*": - version "18.14.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.4.tgz#0e64ec0b35a772e1e3d849f9a0ff61782d0cb647" - integrity sha512-VhCw7I7qO2X49+jaKcAUwi3rR+hbxT5VcYF493+Z5kMLI0DL568b7JI4IDJaxWFH0D/xwmGJNoXisyX+w7GH/g== + version "18.15.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.0.tgz#286a65e3fdffd691e170541e6ecb0410b16a38be" + integrity sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w== "@types/parse-json@^4.0.0": version "4.0.0" @@ -1618,12 +1618,12 @@ asynckit@^0.4.0: integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== autoprefixer@^10.4.0: - version "10.4.13" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.13.tgz#b5136b59930209a321e9fa3dca2e7c4d223e83a8" - integrity sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg== + version "10.4.14" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" + integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== dependencies: - browserslist "^4.21.4" - caniuse-lite "^1.0.30001426" + browserslist "^4.21.5" + caniuse-lite "^1.0.30001464" fraction.js "^4.2.0" normalize-range "^0.1.2" picocolors "^1.0.0" @@ -1906,10 +1906,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001426, caniuse-lite@^1.0.30001449: - version "1.0.30001458" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz#871e35866b4654a7d25eccca86864f411825540c" - integrity sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464: + version "1.0.30001464" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001464.tgz#888922718df48ce5e33dcfe1a2af7d42676c5eb7" + integrity sha512-oww27MtUmusatpRpCGSOneQk2/l5czXANDSFvsc7VuOQ86s3ANhZetpwXNf1zY/zdfP63Xvjz325DAdAoES13g== chalk@^2.0.0: version "2.4.2" @@ -2520,9 +2520,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.284: - version "1.4.316" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.316.tgz#7f2cfda199ae1a32a69b3eb9046b8b0640086064" - integrity sha512-9urqVpdeJYAwVL/sBjsX2pSlgYI/b4nOqC6UaNa0xlq1VUbXLRhERWlxcQ4FWfUOQQxSSxN/taFtapEcwg5tVA== + version "1.4.327" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.327.tgz#288b106518cfed0a60f7de8a0480432a9be45477" + integrity sha512-DIk2H4g/3ZhjgiABJjVdQvUdMlSABOsjeCm6gmUzIdKxAuFrGiJ8QXMm3i09grZdDBMC/d8MELMrdwYRC0+YHg== elliptic@^6.5.3: version "6.5.4" @@ -3305,9 +3305,9 @@ jest-worker@^27.4.5: supports-color "^8.0.0" jquery@^3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.3.tgz#23ed2ffed8a19e048814f13391a19afcdba160e6" - integrity sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg== + version "3.6.4" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.4.tgz#ba065c188142100be4833699852bf7c24dc0252f" + integrity sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ== js-tokens@^4.0.0: version "4.0.0" @@ -4408,9 +4408,9 @@ readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.3.3, readable util-deprecate "~1.0.1" readable-stream@^3.0.6, readable-stream@^3.5.0, readable-stream@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.1.tgz#f9f9b5f536920253b3d26e7660e7da4ccff9bb62" - integrity sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ== + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -4455,9 +4455,9 @@ regenerator-transform@^0.15.1: "@babel/runtime" "^7.8.4" regexpu-core@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.1.tgz#66900860f88def39a5cb79ebd9490e84f17bcdfb" - integrity sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ== + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== dependencies: "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" @@ -4642,7 +4642,7 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" -serialize-javascript@^6.0.0: +serialize-javascript@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== @@ -4941,15 +4941,15 @@ tapable@^2.1.1, tapable@^2.2.0: integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.4: - version "5.3.6" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" - integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== + version "5.3.7" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz#ef760632d24991760f339fe9290deb936ad1ffc7" + integrity sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw== dependencies: - "@jridgewell/trace-mapping" "^0.3.14" + "@jridgewell/trace-mapping" "^0.3.17" jest-worker "^27.4.5" schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - terser "^5.14.1" + serialize-javascript "^6.0.1" + terser "^5.16.5" terser@^4.6.3: version "4.8.1" @@ -4960,10 +4960,10 @@ terser@^4.6.3: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.14.1, terser@^5.9.0: - version "5.16.5" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.5.tgz#1c285ca0655f467f92af1bbab46ab72d1cb08e5a" - integrity sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg== +terser@^5.16.5, terser@^5.9.0: + version "5.16.6" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.6.tgz#f6c7a14a378ee0630fbe3ac8d1f41b4681109533" + integrity sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -5289,9 +5289,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.60.0: - version "5.75.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.75.0.tgz#1e440468647b2505860e94c9ff3e44d5b582c152" - integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ== + version "5.76.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.76.0.tgz#f9fb9fb8c4a7dbdcd0d56a98e56b8a942ee2692c" + integrity sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" @@ -5369,9 +5369,9 @@ wrappy@1: integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== ws@^8.4.2: - version "8.12.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.1.tgz#c51e583d79140b5e42e39be48c934131942d4a8f" - integrity sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew== + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== xtend@^4.0.0: version "4.0.2"