diff --git a/src/flextype/core/Parsers/Shortcodes/I18nShortcode.php b/src/flextype/core/Parsers/Shortcodes/I18nShortcode.php index abb43cb2..78b0d629 100644 --- a/src/flextype/core/Parsers/Shortcodes/I18nShortcode.php +++ b/src/flextype/core/Parsers/Shortcodes/I18nShortcode.php @@ -21,21 +21,25 @@ use Thunder\Shortcode\Shortcode\ShortcodeInterface; use function parsers; use function registry; -// Shortcode: [tr] +// Shortcode: tr +// Usage: (tr:foo) parsers()->shortcodes()->addHandler('tr', static function (ShortcodeInterface $s) { if (! registry()->get('flextype.settings.parsers.shortcodes.shortcodes.i18n.enabled')) { return ''; } - $varsDelimeter = $s->getParameter('varsDelimeter') ?: ','; + $varsDelimeter = ($s->getParameter('varsDelimeter') != null) ? parsers()->shortcodes()->parse($s->getParameter('varsDelimeter')) : ','; - if ($s->getParameter('find') != null) { + if ($s->getBbCode() != null) { // Get vars foreach($s->getParameters() as $key => $value) { $vars = $value !== null ? strings($value)->contains($varsDelimeter) ? explode($varsDelimeter, $value) : [$value] : []; } + // Parse shortcodes for each var. + $vars = array_map(fn($v) => parsers()->shortcodes()->parse(is_string($v) ? $v : ''), $vars); + return __($vars[0], collectionFromQueryString($vars[1] ?? '')->toArray(), $vars[2] ?? null); } diff --git a/tests/src/flextype/core/Parsers/Shortcodes/I18nShortcodeTest.php b/tests/src/flextype/core/Parsers/Shortcodes/I18nShortcodeTest.php index f55ce005..90ac174b 100644 --- a/tests/src/flextype/core/Parsers/Shortcodes/I18nShortcodeTest.php +++ b/tests/src/flextype/core/Parsers/Shortcodes/I18nShortcodeTest.php @@ -2,6 +2,6 @@ declare(strict_types=1); -test('[tr] shortcode', function () { - expect(parsers()->shortcodes()->parse('(tr find:foo)'))->toBe('foo'); +test('tr shortcode', function () { + expect(parsers()->shortcodes()->parse('(tr:foo)'))->toBe('foo'); });