Skip to content

Commit 3176f8b

Browse files
takeitfabpot
authored andcommitted
[Translator][FrameworkBundle] Added @ to the list of allowed chars in Translator
1 parent 91e32f8 commit 3176f8b

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

src/Symfony/Bundle/FrameworkBundle/Tests/Translation/TranslatorTest.php

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public function testTransWithoutCaching()
4545
{
4646
$translator = $this->getTranslator($this->getLoader());
4747
$translator->setLocale('fr');
48-
$translator->setFallbackLocales(array('en', 'es', 'pt-PT', 'pt_BR', 'fr.UTF-8'));
48+
$translator->setFallbackLocales(array('en', 'es', 'pt-PT', 'pt_BR', 'fr.UTF-8', 'sr@latin'));
4949

5050
$this->assertEquals('foo (FR)', $translator->trans('foo'));
5151
$this->assertEquals('bar (EN)', $translator->trans('bar'));
@@ -55,14 +55,15 @@ public function testTransWithoutCaching()
5555
$this->assertEquals('foobarfoo (PT-PT)', $translator->trans('foobarfoo'));
5656
$this->assertEquals('other choice 1 (PT-BR)', $translator->transChoice('other choice', 1));
5757
$this->assertEquals('foobarbaz (fr.UTF-8)', $translator->trans('foobarbaz'));
58+
$this->assertEquals('foobarbax (sr@latin)', $translator->trans('foobarbax'));
5859
}
5960

6061
public function testTransWithCaching()
6162
{
6263
// prime the cache
6364
$translator = $this->getTranslator($this->getLoader(), array('cache_dir' => $this->tmpDir));
6465
$translator->setLocale('fr');
65-
$translator->setFallbackLocales(array('en', 'es', 'pt-PT', 'pt_BR', 'fr.UTF-8'));
66+
$translator->setFallbackLocales(array('en', 'es', 'pt-PT', 'pt_BR', 'fr.UTF-8', 'sr@latin'));
6667

6768
$this->assertEquals('foo (FR)', $translator->trans('foo'));
6869
$this->assertEquals('bar (EN)', $translator->trans('bar'));
@@ -72,12 +73,13 @@ public function testTransWithCaching()
7273
$this->assertEquals('foobarfoo (PT-PT)', $translator->trans('foobarfoo'));
7374
$this->assertEquals('other choice 1 (PT-BR)', $translator->transChoice('other choice', 1));
7475
$this->assertEquals('foobarbaz (fr.UTF-8)', $translator->trans('foobarbaz'));
76+
$this->assertEquals('foobarbax (sr@latin)', $translator->trans('foobarbax'));
7577

7678
// do it another time as the cache is primed now
7779
$loader = $this->getMock('Symfony\Component\Translation\Loader\LoaderInterface');
7880
$translator = $this->getTranslator($loader, array('cache_dir' => $this->tmpDir));
7981
$translator->setLocale('fr');
80-
$translator->setFallbackLocales(array('en', 'es', 'pt-PT', 'pt_BR', 'fr.UTF-8'));
82+
$translator->setFallbackLocales(array('en', 'es', 'pt-PT', 'pt_BR', 'fr.UTF-8', 'sr@latin'));
8183

8284
$this->assertEquals('foo (FR)', $translator->trans('foo'));
8385
$this->assertEquals('bar (EN)', $translator->trans('bar'));
@@ -87,6 +89,7 @@ public function testTransWithCaching()
8789
$this->assertEquals('foobarfoo (PT-PT)', $translator->trans('foobarfoo'));
8890
$this->assertEquals('other choice 1 (PT-BR)', $translator->transChoice('other choice', 1));
8991
$this->assertEquals('foobarbaz (fr.UTF-8)', $translator->trans('foobarbaz'));
92+
$this->assertEquals('foobarbax (sr@latin)', $translator->trans('foobarbax'));
9093
}
9194

9295
public function testGetLocale()
@@ -185,6 +188,13 @@ protected function getLoader()
185188
'foobarbaz' => 'foobarbaz (fr.UTF-8)',
186189
))))
187190
;
191+
$loader
192+
->expects($this->at(6))
193+
->method('load')
194+
->will($this->returnValue($this->getCatalogue('sr@latin', array(
195+
'foobarbax' => 'foobarbax (sr@latin)',
196+
))))
197+
;
188198

189199
return $loader;
190200
}
@@ -216,6 +226,7 @@ public function getTranslator($loader, $options = array())
216226
$translator->addResource('loader', 'foo', 'pt-PT'); // European Portuguese
217227
$translator->addResource('loader', 'foo', 'pt_BR'); // Brazilian Portuguese
218228
$translator->addResource('loader', 'foo', 'fr.UTF-8');
229+
$translator->addResource('loader', 'foo', 'sr@latin'); // Latin Serbian
219230

220231
return $translator;
221232
}

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ public function testSetFallbackLocalesMultiple()
103103
$this->assertEquals('bar (fr)', $translator->trans('bar'));
104104
}
105105

106-
107106
/**
108107
* @dataProvider getInvalidLocalesTests
109108
* @expectedException \InvalidArgumentException
@@ -329,7 +328,6 @@ public function testTransChoiceValidLocale($locale)
329328
// no assertion. this method just asserts that no exception is thrown
330329
}
331330

332-
333331
public function getTransFileTests()
334332
{
335333
return array(
@@ -429,6 +427,7 @@ public function getValidLocalesTests()
429427
array('fr_FR'),
430428
array('fr.FR'),
431429
array('fr-FR.UTF8'),
430+
array('sr@latin'),
432431
);
433432
}
434433

src/Symfony/Component/Translation/Translator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ protected function computeFallbackLocales($locale)
308308
*/
309309
private function assertValidLocale($locale)
310310
{
311-
if (0 !== preg_match('/[^a-z0-9_\\.\\-]+/i', $locale, $match)) {
311+
if (0 !== preg_match('/[^a-z0-9@_\\.\\-]+/i', $locale, $match)) {
312312
throw new \InvalidArgumentException(sprintf('Invalid locale: %s.', $locale));
313313
}
314314
}

0 commit comments

Comments
 (0)