. */ declare(strict_types=1); namespace FireflyIII\Support\Twig; use Twig\Extension\AbstractExtension; use Twig\TwigFilter; use Twig\TwigFunction; /** * Class Budget. */ class Translation extends AbstractExtension { public function getFilters(): array { return [ new TwigFilter( '_', static function ($name) { return (string) trans(sprintf('firefly.%s', $name)); }, ['is_safe' => ['html']] ), ]; } public function getFunctions(): array { return [ $this->journalLinkTranslation(), $this->laravelTranslation(), ]; } public function journalLinkTranslation(): TwigFunction { return new TwigFunction( 'journalLinkTranslation', static function (string $direction, string $original) { $key = sprintf('firefly.%s_%s', $original, $direction); $translation = trans($key); if ($key === $translation) { return $original; } return $translation; }, ['is_safe' => ['html']] ); } public function laravelTranslation(): TwigFunction { return new TwigFunction( '__', static function (string $key) { $translation = trans($key); if ($key === $translation) { return $key; } return $translation; } ); } }