diff --git a/app/Api/V2/Controllers/Model/ExchangeRate/IndexController.php b/app/Api/V2/Controllers/Model/ExchangeRate/IndexController.php new file mode 100644 index 0000000000..3caaabb2a1 --- /dev/null +++ b/app/Api/V2/Controllers/Model/ExchangeRate/IndexController.php @@ -0,0 +1,73 @@ +. + */ + +declare(strict_types=1); + +namespace FireflyIII\Api\V2\Controllers\Model\ExchangeRate; + +use FireflyIII\Api\V2\Controllers\Controller; +use FireflyIII\Repositories\UserGroups\ExchangeRate\ExchangeRateRepositoryInterface; +use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait; +use Illuminate\Http\JsonResponse; +use Illuminate\Pagination\LengthAwarePaginator; + +/** + * Class ShowController + */ +class IndexController extends Controller +{ + public const string RESOURCE_KEY = 'exchange-rates'; + use ValidatesUserGroupTrait; + + private ExchangeRateRepositoryInterface $repository; + + public function __construct() + { + parent::__construct(); + $this->middleware( + function ($request, $next) { + $this->repository = app(ExchangeRateRepositoryInterface::class); + $this->repository->setUserGroup($this->validateUserGroup($request)); + + return $next($request); + } + ); + } + + public function index(): JsonResponse + { + $piggies = $this->repository->getAll(); + $pageSize = $this->parameters->get('limit'); + $count = $piggies->count(); + $piggies = $piggies->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); + $paginator = new LengthAwarePaginator($piggies, $count, $pageSize, $this->parameters->get('page')); + + var_dump('here we are'); + + $transformer = new ExchangeRateTransformer(); + $transformer->setParameters($this->parameters); // give params to transformer + + return response() + ->json($this->jsonApiList(self::RESOURCE_KEY, $paginator, $transformer)) + ->header('Content-Type', self::CONTENT_TYPE); + } +} diff --git a/app/Api/V2/Controllers/Model/ExchangeRate/ShowController.php b/app/Api/V2/Controllers/Model/ExchangeRate/ShowController.php new file mode 100644 index 0000000000..0517dc6eec --- /dev/null +++ b/app/Api/V2/Controllers/Model/ExchangeRate/ShowController.php @@ -0,0 +1,75 @@ +. + */ + +declare(strict_types=1); + +namespace FireflyIII\Api\V2\Controllers\Model\ExchangeRate; + +use FireflyIII\Api\V2\Controllers\Controller; +use FireflyIII\Models\TransactionCurrency; +use FireflyIII\Repositories\UserGroups\ExchangeRate\ExchangeRateRepositoryInterface; +use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait; +use FireflyIII\Transformers\V2\ExchangeRateTransformer; +use Illuminate\Http\JsonResponse; +use Illuminate\Pagination\LengthAwarePaginator; + +/** + * Class ShowController + */ +class ShowController extends Controller +{ + public const string RESOURCE_KEY = 'exchange-rates'; + use ValidatesUserGroupTrait; + + private ExchangeRateRepositoryInterface $repository; + + public function __construct() + { + parent::__construct(); + $this->middleware( + function ($request, $next) { + $this->repository = app(ExchangeRateRepositoryInterface::class); + $this->repository->setUserGroup($this->validateUserGroup($request)); + + return $next($request); + } + ); + } + + public function show(TransactionCurrency $from, TransactionCurrency $to): JsonResponse + { +// $piggies = $this->repository->getAll(); +// + $pageSize = $this->parameters->get('limit'); + $rates = $this->repository->getRates($from, $to); + $count = $rates->count(); + $rates = $rates->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); + $paginator = new LengthAwarePaginator($rates, $count, $pageSize, $this->parameters->get('page')); + + $transformer = new ExchangeRateTransformer(); + $transformer->setParameters($this->parameters); // give params to transformer + + return response() + ->json($this->jsonApiList(self::RESOURCE_KEY, $paginator, $transformer)) + ->header('Content-Type', self::CONTENT_TYPE); + } +} diff --git a/app/Api/V2/Controllers/Model/TransactionCurrency/IndexController.php b/app/Api/V2/Controllers/Model/TransactionCurrency/IndexController.php index ec311fb17b..947148a23e 100644 --- a/app/Api/V2/Controllers/Model/TransactionCurrency/IndexController.php +++ b/app/Api/V2/Controllers/Model/TransactionCurrency/IndexController.php @@ -39,9 +39,6 @@ class IndexController extends Controller private CurrencyRepositoryInterface $repository; protected array $acceptedRoles = [UserRoleEnum::READ_ONLY]; - /** - * AccountController constructor. - */ public function __construct() { parent::__construct(); diff --git a/app/Api/V2/Controllers/Model/TransactionCurrency/ShowController.php b/app/Api/V2/Controllers/Model/TransactionCurrency/ShowController.php new file mode 100644 index 0000000000..f4d82134ac --- /dev/null +++ b/app/Api/V2/Controllers/Model/TransactionCurrency/ShowController.php @@ -0,0 +1,78 @@ +. + */ + +declare(strict_types=1); + +namespace FireflyIII\Api\V2\Controllers\Model\TransactionCurrency; + +use FireflyIII\Api\V2\Controllers\Controller; +use FireflyIII\Models\TransactionCurrency; +use FireflyIII\Models\UserGroup; +use FireflyIII\Repositories\UserGroups\Currency\CurrencyRepositoryInterface; +use FireflyIII\Transformers\V2\CurrencyTransformer; +use Illuminate\Http\JsonResponse; + +/** + * Class ShowController + */ +class ShowController extends Controller +{ + public const string RESOURCE_KEY = 'transaction-currencies'; + + private CurrencyRepositoryInterface $repository; + + public function __construct() + { + parent::__construct(); + $this->middleware( + function ($request, $next) { + $this->repository = app(CurrencyRepositoryInterface::class); + // new way of user group validation + $userGroup = $this->validateUserGroup($request); + $this->repository->setUserGroup($userGroup); + + return $next($request); + } + ); + } + + public function show(TransactionCurrency $currency): JsonResponse + { + $groups = $currency->userGroups()->where('user_groups.id', $this->repository->getUserGroup()->id)->get(); + $enabled = $groups->count() > 0; + $default = false; + /** @var UserGroup $group */ + foreach ($groups as $group) { + $default = 1 === $group->pivot->group_default; + } + $currency->userGroupEnabled = $enabled; + $currency->userGroupDefault = $default; + + + $transformer = new CurrencyTransformer(); + $transformer->setParameters($this->parameters); + + return response() + ->api($this->jsonApiObject(self::RESOURCE_KEY, $currency, $transformer)) + ->header('Content-Type', self::CONTENT_TYPE); + } +} diff --git a/app/Models/TransactionCurrency.php b/app/Models/TransactionCurrency.php index 96c8a8ea5b..1244484c9b 100644 --- a/app/Models/TransactionCurrency.php +++ b/app/Models/TransactionCurrency.php @@ -40,8 +40,8 @@ class TransactionCurrency extends Model use ReturnsIntegerIdTrait; use SoftDeletes; - public ?bool $userGroupDefault; - public ?bool $userGroupEnabled; + public ?bool $userGroupDefault = null; + public ?bool $userGroupEnabled = null; protected $casts = [ 'created_at' => 'datetime', diff --git a/app/Providers/CurrencyServiceProvider.php b/app/Providers/CurrencyServiceProvider.php index 6643cfa4c4..d26d8c0b22 100644 --- a/app/Providers/CurrencyServiceProvider.php +++ b/app/Providers/CurrencyServiceProvider.php @@ -27,6 +27,8 @@ use FireflyIII\Repositories\Currency\CurrencyRepository; use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface; use FireflyIII\Repositories\UserGroups\Currency\CurrencyRepository as GroupCurrencyRepository; use FireflyIII\Repositories\UserGroups\Currency\CurrencyRepositoryInterface as GroupCurrencyRepositoryInterface; +use FireflyIII\Repositories\UserGroups\ExchangeRate\ExchangeRateRepository; +use FireflyIII\Repositories\UserGroups\ExchangeRate\ExchangeRateRepositoryInterface; use Illuminate\Foundation\Application; use Illuminate\Support\ServiceProvider; @@ -71,5 +73,13 @@ class CurrencyServiceProvider extends ServiceProvider return $repository; } ); + + $this->app->bind( + ExchangeRateRepositoryInterface::class, + static function (Application $app) { + /** @var ExchangeRateRepository $repository */ + return app(ExchangeRateRepository::class); + } + ); } } diff --git a/app/Repositories/UserGroups/ExchangeRate/ExchangeRateRepository.php b/app/Repositories/UserGroups/ExchangeRate/ExchangeRateRepository.php new file mode 100644 index 0000000000..5ae0292cbd --- /dev/null +++ b/app/Repositories/UserGroups/ExchangeRate/ExchangeRateRepository.php @@ -0,0 +1,51 @@ +userGroup->currencyExchangeRates() + ->where(function (Builder $q) use ($from, $to) { + $q->where('from_currency_id', $from->id) + ->orWhere('to_currency_id', $to->id); + }) + ->orWhere(function (Builder $q) use ($from, $to) { + $q->where('from_currency_id', $to->id) + ->orWhere('to_currency_id', $from->id); + }) + ->orderBy('date', 'DESC')->get(); + + } +} diff --git a/app/Repositories/UserGroups/ExchangeRate/ExchangeRateRepositoryInterface.php b/app/Repositories/UserGroups/ExchangeRate/ExchangeRateRepositoryInterface.php new file mode 100644 index 0000000000..95200d569b --- /dev/null +++ b/app/Repositories/UserGroups/ExchangeRate/ExchangeRateRepositoryInterface.php @@ -0,0 +1,34 @@ +. + */ + +declare(strict_types=1); + +namespace FireflyIII\Transformers\V2; + +use FireflyIII\Models\CurrencyExchangeRate; +use Illuminate\Support\Collection; + +/** + * Class AccountTransformer + */ +class ExchangeRateTransformer extends AbstractTransformer +{ + + + /** + * This method collects meta-data for one or all accounts in the transformer's collection. + */ + public function collectMetaData(Collection $objects): Collection + { + return $objects; + } + + /** + * Transform the account. + */ + public function transform(CurrencyExchangeRate $rate): array + { + return [ + 'id' => (string) $rate->id, + 'created_at' => $rate->created_at->toAtomString(), + 'updated_at' => $rate->updated_at->toAtomString(), + + 'from_currency_id' => (string) $rate->fromCurrency->id, + 'from_currency_code' => $rate->fromCurrency->code, + 'from_currency_symbol' => $rate->fromCurrency->symbol, + 'from_currency_decimal_places' => $rate->fromCurrency->decimal_places, + + 'to_currency_id' => (string) $rate->toCurrency->id, + 'to_currency_code' => $rate->toCurrency->code, + 'to_currency_symbol' => $rate->toCurrency->symbol, + 'to_currency_decimal_places' => $rate->toCurrency->decimal_places, + + 'rate' => $rate->rate, + 'date' => $rate->date->toAtomString(), + 'links' => [ + [ + 'rel' => 'self', + 'uri' => sprintf('/exchange-rates/%s', $rate->id), + ], + ], + ]; + } +} diff --git a/config/translations.php b/config/translations.php index f98060e92e..fd5feba0e6 100644 --- a/config/translations.php +++ b/config/translations.php @@ -272,7 +272,8 @@ return [ 'reset_webhook_secret', 'header_exchange_rates', 'exchange_rates_intro', - 'exchange_rates_from_to' + 'exchange_rates_from_to', + 'exchange_rates_intro_rates' ], 'form' => [ 'url', @@ -289,6 +290,8 @@ return [ 'webhook_response', 'webhook_trigger', 'webhook_delivery', + 'from_currency_to_currency', + 'to_currency_from_currency' ], 'list' => [ 'active', diff --git a/resources/assets/v1/src/components/exchange-rates/Rates.vue b/resources/assets/v1/src/components/exchange-rates/Rates.vue index e3f65d9419..f2a1328379 100644 --- a/resources/assets/v1/src/components/exchange-rates/Rates.vue +++ b/resources/assets/v1/src/components/exchange-rates/Rates.vue @@ -18,16 +18,92 @@ - along with this program. If not, see https://www.gnu.org/licenses/. --> - + diff --git a/resources/assets/v1/src/exchange-rates/rates.js b/resources/assets/v1/src/exchange-rates/rates.js index 1711ca5997..ce02b5fe94 100644 --- a/resources/assets/v1/src/exchange-rates/rates.js +++ b/resources/assets/v1/src/exchange-rates/rates.js @@ -18,7 +18,7 @@ * along with this program. If not, see . */ -import Index from "../components/exchange-rates/Index"; +import Rates from "../components/exchange-rates/Rates"; /** * First we will load Axios via bootstrap.js @@ -34,6 +34,6 @@ const app = new Vue({ i18n, el: "#exchange_rates_rates", render: (createElement) => { - return createElement(Index, {props: props}) + return createElement(Rates, {props: props}) }, }); diff --git a/resources/assets/v1/src/locales/bg.json b/resources/assets/v1/src/locales/bg.json index 819884d2d8..61a4cb7e7a 100644 --- a/resources/assets/v1/src/locales/bg.json +++ b/resources/assets/v1/src/locales/bg.json @@ -129,7 +129,10 @@ "logs": "Logs", "response": "Response", "visit_webhook_url": "Visit webhook URL", - "reset_webhook_secret": "Reset webhook secret" + "reset_webhook_secret": "Reset webhook secret", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "\u0412\u044a\u0442\u0440\u0435\u0448\u043d\u0430 \u0440\u0435\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f", "webhook_response": "Response", "webhook_trigger": "Trigger", - "webhook_delivery": "Delivery" + "webhook_delivery": "Delivery", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "\u0410\u043a\u0442\u0438\u0432\u0435\u043d \u043b\u0438 \u0435?", diff --git a/resources/assets/v1/src/locales/ca.json b/resources/assets/v1/src/locales/ca.json index c390c0f553..6645c48663 100644 --- a/resources/assets/v1/src/locales/ca.json +++ b/resources/assets/v1/src/locales/ca.json @@ -129,7 +129,10 @@ "logs": "Registres", "response": "Resposta", "visit_webhook_url": "Visitar l'URL del webhook", - "reset_webhook_secret": "Reiniciar el secret del webhook" + "reset_webhook_secret": "Reiniciar el secret del webhook", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Refer\u00e8ncia interna", "webhook_response": "Resposta", "webhook_trigger": "Activador", - "webhook_delivery": "Lliurament" + "webhook_delivery": "Lliurament", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Est\u00e0 actiu?", diff --git a/resources/assets/v1/src/locales/cs.json b/resources/assets/v1/src/locales/cs.json index f2c3d8fee9..814f7b9ed2 100644 --- a/resources/assets/v1/src/locales/cs.json +++ b/resources/assets/v1/src/locales/cs.json @@ -129,7 +129,10 @@ "logs": "Logy", "response": "Odpov\u011b\u010f", "visit_webhook_url": "Nav\u0161t\u00edvit URL webhooku", - "reset_webhook_secret": "Restartovat tajn\u00fd kl\u00ed\u010d webhooku" + "reset_webhook_secret": "Restartovat tajn\u00fd kl\u00ed\u010d webhooku", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Intern\u00ed reference", "webhook_response": "Response", "webhook_trigger": "Spou\u0161t\u011b\u010d", - "webhook_delivery": "Delivery" + "webhook_delivery": "Delivery", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Aktivn\u00ed?", diff --git a/resources/assets/v1/src/locales/da.json b/resources/assets/v1/src/locales/da.json index 03f0a3a0f5..079605e734 100644 --- a/resources/assets/v1/src/locales/da.json +++ b/resources/assets/v1/src/locales/da.json @@ -129,7 +129,10 @@ "logs": "Logs", "response": "Svar", "visit_webhook_url": "Bes\u00f8g webhook-URL", - "reset_webhook_secret": "Nulstil webhook-hemmelighed" + "reset_webhook_secret": "Nulstil webhook-hemmelighed", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Intern reference", "webhook_response": "Svar", "webhook_trigger": "Udl\u00f8ser", - "webhook_delivery": "Levering" + "webhook_delivery": "Levering", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Aktiv?", diff --git a/resources/assets/v1/src/locales/de.json b/resources/assets/v1/src/locales/de.json index 6d51c1872e..6dd63043bf 100644 --- a/resources/assets/v1/src/locales/de.json +++ b/resources/assets/v1/src/locales/de.json @@ -129,7 +129,10 @@ "logs": "Protokolle", "response": "Antwort", "visit_webhook_url": "Webhook-URL besuchen", - "reset_webhook_secret": "Webhook Secret zur\u00fccksetzen" + "reset_webhook_secret": "Webhook Secret zur\u00fccksetzen", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Interne Referenz", "webhook_response": "Antwort", "webhook_trigger": "Ausl\u00f6ser", - "webhook_delivery": "Zustellung" + "webhook_delivery": "Zustellung", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Aktiv?", diff --git a/resources/assets/v1/src/locales/el.json b/resources/assets/v1/src/locales/el.json index e2a6d65c7f..3485310dfe 100644 --- a/resources/assets/v1/src/locales/el.json +++ b/resources/assets/v1/src/locales/el.json @@ -129,7 +129,10 @@ "logs": "\u0391\u03c1\u03c7\u03b5\u03af\u03b1 \u03ba\u03b1\u03c4\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae\u03c2 (Logs)", "response": "\u0391\u03c0\u03cc\u03ba\u03c1\u03b9\u03c3\u03b7", "visit_webhook_url": "\u0395\u03c0\u03b9\u03c3\u03ba\u03b5\u03c6\u03b8\u03b5\u03af\u03c4\u03b5 \u03c4\u03bf URL \u03c4\u03bf\u03c5 webhook", - "reset_webhook_secret": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03bc\u03c5\u03c3\u03c4\u03b9\u03ba\u03bf\u03cd webhook" + "reset_webhook_secret": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac \u03bc\u03c5\u03c3\u03c4\u03b9\u03ba\u03bf\u03cd webhook", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "\u0394\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 URL", @@ -145,7 +148,9 @@ "internal_reference": "\u0395\u03c3\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03ae \u03b1\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac", "webhook_response": "\u0391\u03c0\u03cc\u03ba\u03c1\u03b9\u03c3\u03b7", "webhook_trigger": "\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7", - "webhook_delivery": "\u03a0\u03b1\u03c1\u03ac\u03b4\u03bf\u03c3\u03b7" + "webhook_delivery": "\u03a0\u03b1\u03c1\u03ac\u03b4\u03bf\u03c3\u03b7", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "\u0395\u03af\u03bd\u03b1\u03b9 \u03b5\u03bd\u03b5\u03c1\u03b3\u03cc;", diff --git a/resources/assets/v1/src/locales/en-gb.json b/resources/assets/v1/src/locales/en-gb.json index 2999f99e7f..dc336a9d1a 100644 --- a/resources/assets/v1/src/locales/en-gb.json +++ b/resources/assets/v1/src/locales/en-gb.json @@ -129,7 +129,10 @@ "logs": "Logs", "response": "Response", "visit_webhook_url": "Visit webhook URL", - "reset_webhook_secret": "Reset webhook secret" + "reset_webhook_secret": "Reset webhook secret", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Internal reference", "webhook_response": "Response", "webhook_trigger": "Trigger", - "webhook_delivery": "Delivery" + "webhook_delivery": "Delivery", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Is active?", diff --git a/resources/assets/v1/src/locales/en.json b/resources/assets/v1/src/locales/en.json index 1517f83aa4..a3496cf582 100644 --- a/resources/assets/v1/src/locales/en.json +++ b/resources/assets/v1/src/locales/en.json @@ -132,7 +132,7 @@ "reset_webhook_secret": "Reset webhook secret", "header_exchange_rates": "Exchange rates", "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", - "exchange_rates_from_to": "Between {from} and {to}" + "exchange_rates_from_to": "Between {from} and {to} (and the other way around)" }, "form": { "url": "URL", @@ -148,7 +148,9 @@ "internal_reference": "Internal reference", "webhook_response": "Response", "webhook_trigger": "Trigger", - "webhook_delivery": "Delivery" + "webhook_delivery": "Delivery", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Is active?", diff --git a/resources/assets/v1/src/locales/es.json b/resources/assets/v1/src/locales/es.json index a48801ff0c..7b28396cf1 100644 --- a/resources/assets/v1/src/locales/es.json +++ b/resources/assets/v1/src/locales/es.json @@ -129,7 +129,10 @@ "logs": "Registros", "response": "Respuesta", "visit_webhook_url": "Visita la URL del webhook", - "reset_webhook_secret": "Restablecer secreto del webhook" + "reset_webhook_secret": "Restablecer secreto del webhook", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Referencia interna", "webhook_response": "Respuesta", "webhook_trigger": "Disparador", - "webhook_delivery": "Entrega" + "webhook_delivery": "Entrega", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "\u00bfEst\u00e1 Activo?", diff --git a/resources/assets/v1/src/locales/fi.json b/resources/assets/v1/src/locales/fi.json index 468931fead..ec11c9f013 100644 --- a/resources/assets/v1/src/locales/fi.json +++ b/resources/assets/v1/src/locales/fi.json @@ -129,7 +129,10 @@ "logs": "Logs", "response": "Response", "visit_webhook_url": "Visit webhook URL", - "reset_webhook_secret": "Reset webhook secret" + "reset_webhook_secret": "Reset webhook secret", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL-osoite", @@ -145,7 +148,9 @@ "internal_reference": "Sis\u00e4inen viite", "webhook_response": "Response", "webhook_trigger": "Trigger", - "webhook_delivery": "Delivery" + "webhook_delivery": "Delivery", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Aktiivinen?", diff --git a/resources/assets/v1/src/locales/fr.json b/resources/assets/v1/src/locales/fr.json index 32c4fd54e2..d31ab6bdb7 100644 --- a/resources/assets/v1/src/locales/fr.json +++ b/resources/assets/v1/src/locales/fr.json @@ -129,7 +129,10 @@ "logs": "Journaux", "response": "R\u00e9ponse", "visit_webhook_url": "Visiter l'URL du webhook", - "reset_webhook_secret": "R\u00e9initialiser le secret du webhook" + "reset_webhook_secret": "R\u00e9initialiser le secret du webhook", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "Liens", @@ -145,7 +148,9 @@ "internal_reference": "R\u00e9f\u00e9rence interne", "webhook_response": "R\u00e9ponse", "webhook_trigger": "D\u00e9clencheur", - "webhook_delivery": "Distribution" + "webhook_delivery": "Distribution", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Actif ?", diff --git a/resources/assets/v1/src/locales/hu.json b/resources/assets/v1/src/locales/hu.json index 525f99061a..6422064f9d 100644 --- a/resources/assets/v1/src/locales/hu.json +++ b/resources/assets/v1/src/locales/hu.json @@ -129,7 +129,10 @@ "logs": "Napl\u00f3k", "response": "V\u00e1lasz", "visit_webhook_url": "Webhook URL megl\u00e1togat\u00e1sa", - "reset_webhook_secret": "Webhook titok vissza\u00e1ll\u00edt\u00e1sa" + "reset_webhook_secret": "Webhook titok vissza\u00e1ll\u00edt\u00e1sa", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Bels\u0151 hivatkoz\u00e1s", "webhook_response": "Response", "webhook_trigger": "Trigger", - "webhook_delivery": "Delivery" + "webhook_delivery": "Delivery", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Akt\u00edv?", diff --git a/resources/assets/v1/src/locales/id.json b/resources/assets/v1/src/locales/id.json index 658f7bfcd4..1fc88dd2e8 100644 --- a/resources/assets/v1/src/locales/id.json +++ b/resources/assets/v1/src/locales/id.json @@ -129,7 +129,10 @@ "logs": "Logs", "response": "Response", "visit_webhook_url": "Visit webhook URL", - "reset_webhook_secret": "Reset webhook secret" + "reset_webhook_secret": "Reset webhook secret", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Referensi internal", "webhook_response": "Response", "webhook_trigger": "Trigger", - "webhook_delivery": "Delivery" + "webhook_delivery": "Delivery", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Aktif?", diff --git a/resources/assets/v1/src/locales/it.json b/resources/assets/v1/src/locales/it.json index 83df157f95..c428cabc05 100644 --- a/resources/assets/v1/src/locales/it.json +++ b/resources/assets/v1/src/locales/it.json @@ -129,7 +129,10 @@ "logs": "Log", "response": "Risposta", "visit_webhook_url": "Visita URL webhook", - "reset_webhook_secret": "Reimposta il segreto del webhook" + "reset_webhook_secret": "Reimposta il segreto del webhook", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Riferimento interno", "webhook_response": "Risposta", "webhook_trigger": "Trigger", - "webhook_delivery": "Consegna" + "webhook_delivery": "Consegna", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Attivo", diff --git a/resources/assets/v1/src/locales/ja.json b/resources/assets/v1/src/locales/ja.json index 7c7c7d34e1..430efaf1ed 100644 --- a/resources/assets/v1/src/locales/ja.json +++ b/resources/assets/v1/src/locales/ja.json @@ -129,7 +129,10 @@ "logs": "\u30ed\u30b0", "response": "\u30ec\u30b9\u30dd\u30f3\u30b9", "visit_webhook_url": "Webhook\u306eURL\u3092\u958b\u304f", - "reset_webhook_secret": "Webhook\u306e\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u30ea\u30bb\u30c3\u30c8" + "reset_webhook_secret": "Webhook\u306e\u30b7\u30fc\u30af\u30ec\u30c3\u30c8\u3092\u30ea\u30bb\u30c3\u30c8", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "\u5185\u90e8\u53c2\u7167", "webhook_response": "\u30ec\u30b9\u30dd\u30f3\u30b9", "webhook_trigger": "\u30c8\u30ea\u30ac\u30fc", - "webhook_delivery": "\u914d\u4fe1" + "webhook_delivery": "\u914d\u4fe1", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "\u6709\u52b9", diff --git a/resources/assets/v1/src/locales/ko.json b/resources/assets/v1/src/locales/ko.json index 74c4129281..c6defcf176 100644 --- a/resources/assets/v1/src/locales/ko.json +++ b/resources/assets/v1/src/locales/ko.json @@ -129,7 +129,10 @@ "logs": "\ub85c\uadf8", "response": "\uc751\ub2f5", "visit_webhook_url": "\uc6f9\ud6c5 URL \ubc29\ubb38", - "reset_webhook_secret": "\uc6f9\ud6c5 \uc2dc\ud06c\ub9bf \uc7ac\uc124\uc815" + "reset_webhook_secret": "\uc6f9\ud6c5 \uc2dc\ud06c\ub9bf \uc7ac\uc124\uc815", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "\ub0b4\ubd80 \ucc38\uc870", "webhook_response": "\uc751\ub2f5", "webhook_trigger": "\ud2b8\ub9ac\uac70", - "webhook_delivery": "\uc804\ub2ec" + "webhook_delivery": "\uc804\ub2ec", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "\ud65c\uc131 \uc0c1\ud0dc\uc785\ub2c8\uae4c?", diff --git a/resources/assets/v1/src/locales/nb.json b/resources/assets/v1/src/locales/nb.json index 3ee13ffde7..4e321ad0de 100644 --- a/resources/assets/v1/src/locales/nb.json +++ b/resources/assets/v1/src/locales/nb.json @@ -129,7 +129,10 @@ "logs": "Logger", "response": "Respons", "visit_webhook_url": "Bes\u00f8k URL til webhook", - "reset_webhook_secret": "Tilbakestill Webhook n\u00f8kkel" + "reset_webhook_secret": "Tilbakestill Webhook n\u00f8kkel", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "Nettadresse", @@ -145,7 +148,9 @@ "internal_reference": "Intern referanse", "webhook_response": "Respons", "webhook_trigger": "Utl\u00f8ser", - "webhook_delivery": "Levering" + "webhook_delivery": "Levering", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Er aktiv?", diff --git a/resources/assets/v1/src/locales/nl.json b/resources/assets/v1/src/locales/nl.json index a0787e855a..743f95ef81 100644 --- a/resources/assets/v1/src/locales/nl.json +++ b/resources/assets/v1/src/locales/nl.json @@ -129,7 +129,10 @@ "logs": "Logboeken", "response": "Reactie", "visit_webhook_url": "Bezoek URL van webhook", - "reset_webhook_secret": "Reset webhook-geheim" + "reset_webhook_secret": "Reset webhook-geheim", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Interne verwijzing", "webhook_response": "Reactie", "webhook_trigger": "Trigger", - "webhook_delivery": "Bericht" + "webhook_delivery": "Bericht", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Actief?", diff --git a/resources/assets/v1/src/locales/nn.json b/resources/assets/v1/src/locales/nn.json index 0c57001a34..ccde8ab200 100644 --- a/resources/assets/v1/src/locales/nn.json +++ b/resources/assets/v1/src/locales/nn.json @@ -129,7 +129,10 @@ "logs": "Logger", "response": "Respons", "visit_webhook_url": "Bes\u00f8k URL til webhook", - "reset_webhook_secret": "Tilbakestill Webhook hemmelegheit" + "reset_webhook_secret": "Tilbakestill Webhook hemmelegheit", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "Nettadresse", @@ -145,7 +148,9 @@ "internal_reference": "Intern referanse", "webhook_response": "Respons", "webhook_trigger": "Utl\u00f8ser", - "webhook_delivery": "Levering" + "webhook_delivery": "Levering", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Er aktiv?", diff --git a/resources/assets/v1/src/locales/pl.json b/resources/assets/v1/src/locales/pl.json index dffb2fe39d..f4376672f2 100644 --- a/resources/assets/v1/src/locales/pl.json +++ b/resources/assets/v1/src/locales/pl.json @@ -129,7 +129,10 @@ "logs": "Logi", "response": "Odpowied\u017a", "visit_webhook_url": "Odwied\u017a adres URL webhooka", - "reset_webhook_secret": "Resetuj sekret webhooka" + "reset_webhook_secret": "Resetuj sekret webhooka", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Wewn\u0119trzny numer", "webhook_response": "Odpowied\u017a", "webhook_trigger": "Wyzwalacz", - "webhook_delivery": "Dor\u0119czenie" + "webhook_delivery": "Dor\u0119czenie", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Jest aktywny?", diff --git a/resources/assets/v1/src/locales/pt-br.json b/resources/assets/v1/src/locales/pt-br.json index c1634e05a2..f11865a899 100644 --- a/resources/assets/v1/src/locales/pt-br.json +++ b/resources/assets/v1/src/locales/pt-br.json @@ -129,7 +129,10 @@ "logs": "Registros", "response": "Resposta", "visit_webhook_url": "Acesse a URL do webhook", - "reset_webhook_secret": "Redefinir chave do webhook" + "reset_webhook_secret": "Redefinir chave do webhook", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Refer\u00eancia interna", "webhook_response": "Resposta", "webhook_trigger": "Gatilho", - "webhook_delivery": "Entrega" + "webhook_delivery": "Entrega", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Est\u00e1 ativo?", diff --git a/resources/assets/v1/src/locales/pt.json b/resources/assets/v1/src/locales/pt.json index 88df19b096..62b099d96b 100644 --- a/resources/assets/v1/src/locales/pt.json +++ b/resources/assets/v1/src/locales/pt.json @@ -129,7 +129,10 @@ "logs": "Logs", "response": "Respostas", "visit_webhook_url": "Ir para URL do webhook", - "reset_webhook_secret": "Redefinir segredo webhook" + "reset_webhook_secret": "Redefinir segredo webhook", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Refer\u00eancia interna", "webhook_response": "Resposta", "webhook_trigger": "Gatilho", - "webhook_delivery": "Entrega" + "webhook_delivery": "Entrega", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Esta ativo?", diff --git a/resources/assets/v1/src/locales/ro.json b/resources/assets/v1/src/locales/ro.json index 06bf7bad93..207b56e393 100644 --- a/resources/assets/v1/src/locales/ro.json +++ b/resources/assets/v1/src/locales/ro.json @@ -129,7 +129,10 @@ "logs": "Jurnale", "response": "R\u0103spuns", "visit_webhook_url": "Vizita\u0163i URL-ul webhook", - "reset_webhook_secret": "Resetare secret webhook" + "reset_webhook_secret": "Resetare secret webhook", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Referin\u021b\u0103 intern\u0103", "webhook_response": "R\u0103spuns", "webhook_trigger": "Declan\u0219ator", - "webhook_delivery": "Livrare" + "webhook_delivery": "Livrare", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Este activ?", diff --git a/resources/assets/v1/src/locales/ru.json b/resources/assets/v1/src/locales/ru.json index dab5f13086..d24af626d2 100644 --- a/resources/assets/v1/src/locales/ru.json +++ b/resources/assets/v1/src/locales/ru.json @@ -129,7 +129,10 @@ "logs": "\u041b\u043e\u0433\u0438", "response": "\u041e\u0442\u0432\u0435\u0442", "visit_webhook_url": "\u041f\u043e\u0441\u0435\u0442\u0438\u0442\u044c URL \u0432\u0435\u0431\u0445\u0443\u043a\u0430", - "reset_webhook_secret": "" + "reset_webhook_secret": "", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "\u0421\u0441\u044b\u043b\u043a\u0430", @@ -145,7 +148,9 @@ "internal_reference": "\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0441\u0441\u044b\u043b\u043a\u0430", "webhook_response": "\u041e\u0442\u0432\u0435\u0442", "webhook_trigger": "\u0421\u043e\u0431\u044b\u0442\u0438\u044f", - "webhook_delivery": "\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430" + "webhook_delivery": "\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "\u0410\u043a\u0442\u0438\u0432\u0435\u043d?", diff --git a/resources/assets/v1/src/locales/sk.json b/resources/assets/v1/src/locales/sk.json index 61191157b4..79707551ec 100644 --- a/resources/assets/v1/src/locales/sk.json +++ b/resources/assets/v1/src/locales/sk.json @@ -129,7 +129,10 @@ "logs": "Logs", "response": "Response", "visit_webhook_url": "Visit webhook URL", - "reset_webhook_secret": "Reset webhook secret" + "reset_webhook_secret": "Reset webhook secret", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Intern\u00e1 referencia", "webhook_response": "Response", "webhook_trigger": "Trigger", - "webhook_delivery": "Delivery" + "webhook_delivery": "Delivery", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Akt\u00edvne?", diff --git a/resources/assets/v1/src/locales/sl.json b/resources/assets/v1/src/locales/sl.json index f854cb8d09..9c5a985e09 100644 --- a/resources/assets/v1/src/locales/sl.json +++ b/resources/assets/v1/src/locales/sl.json @@ -129,7 +129,10 @@ "logs": "Dnevniki", "response": "Odziv", "visit_webhook_url": "Obi\u0161\u010dite URL webhooka", - "reset_webhook_secret": "Ponastavi skrivno kodo webhooka" + "reset_webhook_secret": "Ponastavi skrivno kodo webhooka", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Notranji sklic", "webhook_response": "Odziv", "webhook_trigger": "Spro\u017eilec", - "webhook_delivery": "Dostava" + "webhook_delivery": "Dostava", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Aktiviran?", diff --git a/resources/assets/v1/src/locales/sv.json b/resources/assets/v1/src/locales/sv.json index 7bfa04fc1b..170e69b89c 100644 --- a/resources/assets/v1/src/locales/sv.json +++ b/resources/assets/v1/src/locales/sv.json @@ -129,7 +129,10 @@ "logs": "Loggar", "response": "Svar", "visit_webhook_url": "Visit webhook URL", - "reset_webhook_secret": "Reset webhook secret" + "reset_webhook_secret": "Reset webhook secret", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "L\u00e4nk", @@ -145,7 +148,9 @@ "internal_reference": "Intern referens", "webhook_response": "Response", "webhook_trigger": "Utl\u00f6sare", - "webhook_delivery": "Delivery" + "webhook_delivery": "Delivery", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "\u00c4r aktiv?", diff --git a/resources/assets/v1/src/locales/tr.json b/resources/assets/v1/src/locales/tr.json index c4fc71fa5c..5b64f8eac4 100644 --- a/resources/assets/v1/src/locales/tr.json +++ b/resources/assets/v1/src/locales/tr.json @@ -129,7 +129,10 @@ "logs": "Logs", "response": "Response", "visit_webhook_url": "Visit webhook URL", - "reset_webhook_secret": "Reset webhook secret" + "reset_webhook_secret": "Reset webhook secret", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "Dahili referans", "webhook_response": "Response", "webhook_trigger": "Trigger", - "webhook_delivery": "Delivery" + "webhook_delivery": "Delivery", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "Aktif mi?", diff --git a/resources/assets/v1/src/locales/uk.json b/resources/assets/v1/src/locales/uk.json index e257a8f819..a35a5ddc43 100644 --- a/resources/assets/v1/src/locales/uk.json +++ b/resources/assets/v1/src/locales/uk.json @@ -129,7 +129,10 @@ "logs": "\u0416\u0443\u0440\u043d\u0430\u043b\u0438", "response": "\u0412\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u044c", "visit_webhook_url": "\u0412\u0456\u0434\u0432\u0456\u0434\u0430\u0439\u0442\u0435 URL-\u0430\u0434\u0440\u0435\u0441\u0443 \u0432\u0435\u0431-\u0445\u0443\u043a\u0443", - "reset_webhook_secret": "\u0412\u0456\u0434\u043d\u043e\u0432\u0438\u0442\u0438 \u0441\u0456\u043a\u0440\u0435\u0442 \u0432\u0435\u0431-\u0445\u0443\u043a\u0430" + "reset_webhook_secret": "\u0412\u0456\u0434\u043d\u043e\u0432\u0438\u0442\u0438 \u0441\u0456\u043a\u0440\u0435\u0442 \u0432\u0435\u0431-\u0445\u0443\u043a\u0430", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL-\u0430\u0434\u0440\u0435\u0441\u0430", @@ -145,7 +148,9 @@ "internal_reference": "\u0412\u043d\u0443\u0442\u0440\u0456\u0448\u043d\u0454 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f", "webhook_response": "\u0412\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u044c", "webhook_trigger": "\u0422\u0440\u0438\u0433\u0435\u0440", - "webhook_delivery": "\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430" + "webhook_delivery": "\u0414\u043e\u0441\u0442\u0430\u0432\u043a\u0430", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "\u0427\u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u0438\u0439?", diff --git a/resources/assets/v1/src/locales/vi.json b/resources/assets/v1/src/locales/vi.json index 41ba0ceae9..73bb7bd8de 100644 --- a/resources/assets/v1/src/locales/vi.json +++ b/resources/assets/v1/src/locales/vi.json @@ -129,7 +129,10 @@ "logs": "Nh\u1eadt k\u00fd", "response": "\u0110\u00e1p l\u1ea1i", "visit_webhook_url": "\u0110i \u0111\u1ebfn webhook URL", - "reset_webhook_secret": "C\u00e0i l\u1ea1i kh\u00f3a webhook" + "reset_webhook_secret": "C\u00e0i l\u1ea1i kh\u00f3a webhook", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "T\u00e0i li\u1ec7u tham kh\u1ea3o n\u1ed9i b\u1ed9", "webhook_response": "\u0110\u00e1p l\u1ea1i", "webhook_trigger": "K\u00edch ho\u1ea1t", - "webhook_delivery": "Ph\u00e2n ph\u1ed1i" + "webhook_delivery": "Ph\u00e2n ph\u1ed1i", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "\u0110ang ho\u1ea1t \u0111\u1ed9ng?", diff --git a/resources/assets/v1/src/locales/zh-cn.json b/resources/assets/v1/src/locales/zh-cn.json index 628b354443..fca138790b 100644 --- a/resources/assets/v1/src/locales/zh-cn.json +++ b/resources/assets/v1/src/locales/zh-cn.json @@ -129,7 +129,10 @@ "logs": "\u65e5\u5fd7", "response": "\u54cd\u5e94", "visit_webhook_url": "\u8bbf\u95ee webhook URL", - "reset_webhook_secret": "\u91cd\u7f6e webhook \u5bc6\u94a5" + "reset_webhook_secret": "\u91cd\u7f6e webhook \u5bc6\u94a5", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "\u7f51\u5740", @@ -145,7 +148,9 @@ "internal_reference": "\u5185\u90e8\u5f15\u7528", "webhook_response": "\u54cd\u5e94\u5185\u5bb9", "webhook_trigger": "\u89e6\u53d1\u6761\u4ef6", - "webhook_delivery": "\u53d1\u9001\u683c\u5f0f" + "webhook_delivery": "\u53d1\u9001\u683c\u5f0f", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "\u662f\u5426\u542f\u7528\uff1f", diff --git a/resources/assets/v1/src/locales/zh-tw.json b/resources/assets/v1/src/locales/zh-tw.json index 931d5a63e3..5ddf3878cc 100644 --- a/resources/assets/v1/src/locales/zh-tw.json +++ b/resources/assets/v1/src/locales/zh-tw.json @@ -129,7 +129,10 @@ "logs": "\u7d00\u9304\u65e5\u8a8c", "response": "\u56de\u8986", "visit_webhook_url": "Visit webhook URL", - "reset_webhook_secret": "Reset webhook secret" + "reset_webhook_secret": "Reset webhook secret", + "header_exchange_rates": "Exchange rates", + "exchange_rates_intro": "Firefly III supports downloading and using exchange rates. Read more about this in the documentation<\/a>.", + "exchange_rates_from_to": "Between :from and :to" }, "form": { "url": "URL", @@ -145,7 +148,9 @@ "internal_reference": "\u5167\u90e8\u53c3\u8003", "webhook_response": "Response", "webhook_trigger": "Trigger", - "webhook_delivery": "Delivery" + "webhook_delivery": "Delivery", + "from_currency_to_currency": "{from} → {to}", + "to_currency_from_currency": "{to} → {from}" }, "list": { "active": "\u662f\u5426\u555f\u7528\uff1f", diff --git a/resources/lang/en_US/firefly.php b/resources/lang/en_US/firefly.php index bd0d71ebca..0d56f4ecea 100644 --- a/resources/lang/en_US/firefly.php +++ b/resources/lang/en_US/firefly.php @@ -1399,6 +1399,9 @@ return [ 'header_exchange_rates' => 'Exchange rates', 'exchange_rates_intro' =>'Firefly III supports downloading and using exchange rates. Read more about this in the documentation.', 'exchange_rates_from_to' => 'Between {from} and {to} (and the other way around)', + 'header_exchange_rates_rates' => 'Exchange rates', + 'exchange_rates_intro_rates' => 'Firefly III bla bla bla exchange rates.', + 'header_exchange_rates_table' => 'Table with exchange rates', // Financial administrations 'administration_index' => 'Financial administration', diff --git a/resources/lang/en_US/form.php b/resources/lang/en_US/form.php index 7a50aaae2f..595565eae5 100644 --- a/resources/lang/en_US/form.php +++ b/resources/lang/en_US/form.php @@ -111,6 +111,11 @@ return [ 'startdate' => 'Start date', 'start_date' => 'Start date', 'tag' => 'Tag', + + // exchange rates + 'from_currency_to_currency' => '{from} → {to}', + 'to_currency_from_currency' => '{to} → {from}', + 'under' => 'Under', 'symbol' => 'Symbol', 'code' => 'Code', diff --git a/resources/views/exchange-rates/rates.twig b/resources/views/exchange-rates/rates.twig index 7be137ebfb..0155a2962a 100644 --- a/resources/views/exchange-rates/rates.twig +++ b/resources/views/exchange-rates/rates.twig @@ -5,7 +5,8 @@ {% endblock %} {% block content %} -
+
+ {% endblock %} {% block scripts %} diff --git a/routes/api.php b/routes/api.php index 1c1e082f59..d5c3b0eec9 100644 --- a/routes/api.php +++ b/routes/api.php @@ -95,8 +95,9 @@ Route::group( ], static function (): void { Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']); + Route::get('{currency_code}', ['uses' => 'ShowController@show', 'as' => 'show']); // Route::post('', ['uses' => 'StoreController@store', 'as' => 'store']); -// Route::get('{userGroup}', ['uses' => 'ShowController@show', 'as' => 'show']); +// // Route::put('{userGroup}', ['uses' => 'UpdateController@update', 'as' => 'update']); // Route::post('{userGroup}/use', ['uses' => 'UpdateController@useUserGroup', 'as' => 'use']); // Route::put('{userGroup}/update-membership', ['uses' => 'UpdateController@updateMembership', 'as' => 'updateMembership']); @@ -104,6 +105,26 @@ Route::group( } ); +// exchange rates +Route::group( + [ + 'namespace' => 'FireflyIII\Api\V2\Controllers\Model\ExchangeRate', + 'prefix' => 'v2/exchange-rates', + 'as' => 'api.v2.exchange-rates.', + ], + static function (): void { + Route::get('', ['uses' => 'IndexController@index', 'as' => 'index']); + Route::get('{fromCurrencyCode}/{toCurrencyCode}', ['uses' => 'ShowController@show', 'as' => 'show']); +// Route::post('', ['uses' => 'StoreController@store', 'as' => 'store']); +// + // Route::put('{userGroup}', ['uses' => 'UpdateController@update', 'as' => 'update']); + // Route::post('{userGroup}/use', ['uses' => 'UpdateController@useUserGroup', 'as' => 'use']); + // Route::put('{userGroup}/update-membership', ['uses' => 'UpdateController@updateMembership', 'as' => 'updateMembership']); + // Route::delete('{userGroup}', ['uses' => 'DestroyController@destroy', 'as' => 'destroy']); + } +); + + // V2 API route for Summary boxes // BASIC //Route::group(