Skip to content

Commit

Permalink
[Translator][FrameworkBundle] Added @ to the list of allowed chars in…
Browse files Browse the repository at this point in the history
… Translator
  • Loading branch information
takeit authored and fabpot committed Jul 17, 2014
1 parent 91e32f8 commit 3176f8b
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 6 deletions.
Expand Up @@ -45,7 +45,7 @@ public function testTransWithoutCaching()
{
$translator = $this->getTranslator($this->getLoader());
$translator->setLocale('fr');
$translator->setFallbackLocales(array('en', 'es', 'pt-PT', 'pt_BR', 'fr.UTF-8'));
$translator->setFallbackLocales(array('en', 'es', 'pt-PT', 'pt_BR', 'fr.UTF-8', 'sr@latin'));

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

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

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

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

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

public function testGetLocale()
Expand Down Expand Up @@ -185,6 +188,13 @@ protected function getLoader()
'foobarbaz' => 'foobarbaz (fr.UTF-8)',
))))
;
$loader
->expects($this->at(6))
->method('load')
->will($this->returnValue($this->getCatalogue('sr@latin', array(
'foobarbax' => 'foobarbax (sr@latin)',
))))
;

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

return $translator;
}
Expand Down
3 changes: 1 addition & 2 deletions src/Symfony/Component/Translation/Tests/TranslatorTest.php
Expand Up @@ -103,7 +103,6 @@ public function testSetFallbackLocalesMultiple()
$this->assertEquals('bar (fr)', $translator->trans('bar'));
}


/**
* @dataProvider getInvalidLocalesTests
* @expectedException \InvalidArgumentException
Expand Down Expand Up @@ -329,7 +328,6 @@ public function testTransChoiceValidLocale($locale)
// no assertion. this method just asserts that no exception is thrown
}


public function getTransFileTests()
{
return array(
Expand Down Expand Up @@ -429,6 +427,7 @@ public function getValidLocalesTests()
array('fr_FR'),
array('fr.FR'),
array('fr-FR.UTF8'),
array('sr@latin'),
);
}

Expand Down
2 changes: 1 addition & 1 deletion src/Symfony/Component/Translation/Translator.php
Expand Up @@ -308,7 +308,7 @@ protected function computeFallbackLocales($locale)
*/
private function assertValidLocale($locale)
{
if (0 !== preg_match('/[^a-z0-9_\\.\\-]+/i', $locale, $match)) {
if (0 !== preg_match('/[^a-z0-9@_\\.\\-]+/i', $locale, $match)) {
throw new \InvalidArgumentException(sprintf('Invalid locale: %s.', $locale));
}
}
Expand Down

0 comments on commit 3176f8b

Please sign in to comment.