Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a31dff4

Browse files
kylekatarnlsfabpot
authored andcommitted
[Translation] Translate translatable parameters
1 parent d679ac5 commit a31dff4

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

src/Symfony/Component/Translation/Tests/TranslatableTest.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ class TranslatableTest extends TestCase
2121
/**
2222
* @dataProvider getTransTests
2323
*/
24-
public function testTrans($expected, $translatable, $translation, $locale)
24+
public function testTrans(string $expected, TranslatableMessage $translatable, array $translation, string $locale)
2525
{
2626
$translator = new Translator('en');
2727
$translator->addLoader('array', new ArrayLoader());
28-
$translator->addResource('array', [$translatable->getMessage() => $translation], $locale, $translatable->getDomain());
28+
$translator->addResource('array', $translation, $locale, $translatable->getDomain());
2929

3030
$this->assertSame($expected, $translatable->trans($translator, $locale));
3131
}
@@ -50,8 +50,16 @@ public function testToString()
5050
public function getTransTests()
5151
{
5252
return [
53-
['Symfony est super !', new TranslatableMessage('Symfony is great!', [], ''), 'Symfony est super !', 'fr'],
54-
['Symfony est awesome !', new TranslatableMessage('Symfony is %what%!', ['%what%' => 'awesome'], ''), 'Symfony est %what% !', 'fr'],
53+
['Symfony est super !', new TranslatableMessage('Symfony is great!', [], ''), [
54+
'Symfony is great!' => 'Symfony est super !',
55+
], 'fr'],
56+
['Symfony est awesome !', new TranslatableMessage('Symfony is %what%!', ['%what%' => 'awesome'], ''), [
57+
'Symfony is %what%!' => 'Symfony est %what% !',
58+
], 'fr'],
59+
['Symfony est superbe !', new TranslatableMessage('Symfony is %what%!', ['%what%' => new TranslatableMessage('awesome', [], '')], ''), [
60+
'Symfony is %what%!' => 'Symfony est %what% !',
61+
'awesome' => 'superbe',
62+
], 'fr'],
5563
];
5664
}
5765

src/Symfony/Component/Translation/TranslatableMessage.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ public function getDomain(): ?string
5252

5353
public function trans(TranslatorInterface $translator, string $locale = null): string
5454
{
55-
return $translator->trans($this->getMessage(), $this->getParameters(), $this->getDomain(), $locale);
55+
return $translator->trans($this->getMessage(), array_map(
56+
static function ($parameter) use ($translator, $locale) {
57+
return $parameter instanceof TranslatableInterface ? $parameter->trans($translator, $locale) : $parameter;
58+
},
59+
$this->getParameters()
60+
), $this->getDomain(), $locale);
5661
}
5762
}

0 commit comments

Comments
 (0)