Skip to content

Commit febeff3

Browse files
Nyholmnicolas-grekas
authored andcommitted
[Translator] Deprecated transChoice and moved it away from contracts
1 parent 727f81d commit febeff3

File tree

2 files changed

+44
-7
lines changed

2 files changed

+44
-7
lines changed

Templating/Helper/TranslatorHelper.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
namespace Symfony\Bundle\FrameworkBundle\Templating\Helper;
1313

1414
use Symfony\Component\Templating\Helper\Helper;
15+
use Symfony\Component\Translation\LegacyTranslatorTrait;
16+
use Symfony\Component\Translation\TranslatorInterface as LegacyTranslatorInterface;
1517
use Symfony\Contracts\Translation\TranslatorInterface;
1618
use Symfony\Contracts\Translation\TranslatorTrait;
1719

@@ -24,6 +26,9 @@ class TranslatorHelper extends Helper
2426
getLocale as private;
2527
setLocale as private;
2628
trans as private doTrans;
29+
}
30+
31+
use LegacyTranslatorTrait {
2732
transChoice as private doTransChoice;
2833
}
2934

@@ -51,7 +56,7 @@ public function trans($id, array $parameters = array(), $domain = 'messages', $l
5156
*/
5257
public function transChoice($id, $number, array $parameters = array(), $domain = 'messages', $locale = null)
5358
{
54-
if (null === $this->translator) {
59+
if (null === $this->translator || !$this->translator instanceof LegacyTranslatorInterface) {
5560
return $this->doTransChoice($id, $number, $parameters, $domain, $locale);
5661
}
5762

Tests/Translation/TranslatorTest.php

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,25 @@ public function testTransWithoutCaching()
5252
$this->assertEquals('foo (FR)', $translator->trans('foo'));
5353
$this->assertEquals('bar (EN)', $translator->trans('bar'));
5454
$this->assertEquals('foobar (ES)', $translator->trans('foobar'));
55-
$this->assertEquals('choice 0 (EN)', $translator->transChoice('choice', 0));
5655
$this->assertEquals('no translation', $translator->trans('no translation'));
5756
$this->assertEquals('foobarfoo (PT-PT)', $translator->trans('foobarfoo'));
58-
$this->assertEquals('other choice 1 (PT-BR)', $translator->transChoice('other choice', 1));
5957
$this->assertEquals('foobarbaz (fr.UTF-8)', $translator->trans('foobarbaz'));
6058
$this->assertEquals('foobarbax (sr@latin)', $translator->trans('foobarbax'));
6159
}
6260

61+
/**
62+
* @group legacy
63+
*/
64+
public function testTransChoiceWithoutCaching()
65+
{
66+
$translator = $this->getTranslator($this->getLoader());
67+
$translator->setLocale('fr');
68+
$translator->setFallbackLocales(array('en', 'es', 'pt-PT', 'pt_BR', 'fr.UTF-8', 'sr@latin'));
69+
70+
$this->assertEquals('choice 0 (EN)', $translator->transChoice('choice', 0));
71+
$this->assertEquals('other choice 1 (PT-BR)', $translator->transChoice('other choice', 1));
72+
}
73+
6374
public function testTransWithCaching()
6475
{
6576
// prime the cache
@@ -70,10 +81,8 @@ public function testTransWithCaching()
7081
$this->assertEquals('foo (FR)', $translator->trans('foo'));
7182
$this->assertEquals('bar (EN)', $translator->trans('bar'));
7283
$this->assertEquals('foobar (ES)', $translator->trans('foobar'));
73-
$this->assertEquals('choice 0 (EN)', $translator->transChoice('choice', 0));
7484
$this->assertEquals('no translation', $translator->trans('no translation'));
7585
$this->assertEquals('foobarfoo (PT-PT)', $translator->trans('foobarfoo'));
76-
$this->assertEquals('other choice 1 (PT-BR)', $translator->transChoice('other choice', 1));
7786
$this->assertEquals('foobarbaz (fr.UTF-8)', $translator->trans('foobarbaz'));
7887
$this->assertEquals('foobarbax (sr@latin)', $translator->trans('foobarbax'));
7988

@@ -88,14 +97,37 @@ public function testTransWithCaching()
8897
$this->assertEquals('foo (FR)', $translator->trans('foo'));
8998
$this->assertEquals('bar (EN)', $translator->trans('bar'));
9099
$this->assertEquals('foobar (ES)', $translator->trans('foobar'));
91-
$this->assertEquals('choice 0 (EN)', $translator->transChoice('choice', 0));
92100
$this->assertEquals('no translation', $translator->trans('no translation'));
93101
$this->assertEquals('foobarfoo (PT-PT)', $translator->trans('foobarfoo'));
94-
$this->assertEquals('other choice 1 (PT-BR)', $translator->transChoice('other choice', 1));
95102
$this->assertEquals('foobarbaz (fr.UTF-8)', $translator->trans('foobarbaz'));
96103
$this->assertEquals('foobarbax (sr@latin)', $translator->trans('foobarbax'));
97104
}
98105

106+
/**
107+
* @group legacy
108+
*/
109+
public function testTransChoiceWithCaching()
110+
{
111+
// prime the cache
112+
$translator = $this->getTranslator($this->getLoader(), array('cache_dir' => $this->tmpDir));
113+
$translator->setLocale('fr');
114+
$translator->setFallbackLocales(array('en', 'es', 'pt-PT', 'pt_BR', 'fr.UTF-8', 'sr@latin'));
115+
116+
$this->assertEquals('choice 0 (EN)', $translator->transChoice('choice', 0));
117+
$this->assertEquals('other choice 1 (PT-BR)', $translator->transChoice('other choice', 1));
118+
119+
// do it another time as the cache is primed now
120+
$loader = $this->getMockBuilder('Symfony\Component\Translation\Loader\LoaderInterface')->getMock();
121+
$loader->expects($this->never())->method('load');
122+
123+
$translator = $this->getTranslator($loader, array('cache_dir' => $this->tmpDir));
124+
$translator->setLocale('fr');
125+
$translator->setFallbackLocales(array('en', 'es', 'pt-PT', 'pt_BR', 'fr.UTF-8', 'sr@latin'));
126+
127+
$this->assertEquals('choice 0 (EN)', $translator->transChoice('choice', 0));
128+
$this->assertEquals('other choice 1 (PT-BR)', $translator->transChoice('other choice', 1));
129+
}
130+
99131
/**
100132
* @expectedException \InvalidArgumentException
101133
* @expectedExceptionMessage Invalid "invalid locale" locale.

0 commit comments

Comments
 (0)