Commit 902c2c8c authored by Fabien Potencier's avatar Fabien Potencier

fixed translator locale management

parent f4af8175
...@@ -4,7 +4,7 @@ Changelog ...@@ -4,7 +4,7 @@ Changelog
1.1.3 (2013-XX-XX) 1.1.3 (2013-XX-XX)
------------------ ------------------
* n/a * Fixed translator locale management
1.1.2 (2013-10-30) 1.1.2 (2013-10-30)
------------------ ------------------
......
...@@ -13,8 +13,7 @@ namespace Silex\Provider; ...@@ -13,8 +13,7 @@ namespace Silex\Provider;
use Silex\Application; use Silex\Application;
use Silex\ServiceProviderInterface; use Silex\ServiceProviderInterface;
use Silex\Translator;
use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\MessageSelector; use Symfony\Component\Translation\MessageSelector;
use Symfony\Component\Translation\Loader\ArrayLoader; use Symfony\Component\Translation\Loader\ArrayLoader;
use Symfony\Component\Translation\Loader\XliffFileLoader; use Symfony\Component\Translation\Loader\XliffFileLoader;
...@@ -29,7 +28,7 @@ class TranslationServiceProvider implements ServiceProviderInterface ...@@ -29,7 +28,7 @@ class TranslationServiceProvider implements ServiceProviderInterface
public function register(Application $app) public function register(Application $app)
{ {
$app['translator'] = $app->share(function ($app) { $app['translator'] = $app->share(function ($app) {
$translator = new Translator($app['locale'], $app['translator.message_selector']); $translator = new Translator($app, $app['translator.message_selector']);
// Handle deprecated 'locale_fallback' // Handle deprecated 'locale_fallback'
if (isset($app['locale_fallback'])) { if (isset($app['locale_fallback'])) {
......
<?php
/*
* This file is part of the Silex framework.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Silex;
use Symfony\Component\Translation\Translator as BaseTranslator;
use Symfony\Component\Translation\MessageSelector;
/**
* Translator that gets the current locale from the Silex application.
*
* @author Fabien Potencier <fabien@symfony.com>
*/
class Translator extends BaseTranslator
{
protected $app;
public function __construct(Application $app, MessageSelector $selector)
{
$this->app = $app;
parent::__construct(null, $selector);
}
public function getLocale()
{
return $this->app['locale'];
}
}
...@@ -125,4 +125,15 @@ class TranslationServiceProviderTest extends \PHPUnit_Framework_TestCase ...@@ -125,4 +125,15 @@ class TranslationServiceProviderTest extends \PHPUnit_Framework_TestCase
$result = $app['translator']->trans('key1', array(), null, 'ru'); $result = $app['translator']->trans('key1', array(), null, 'ru');
$this->assertEquals('The german translation', $result); $this->assertEquals('The german translation', $result);
} }
public function testChangingLocale()
{
$app = $this->getPreparedApp();
$this->assertEquals('The translation', $app['translator']->trans('key1'));
$app['locale'] = 'de';
$this->assertEquals('The german translation', $app['translator']->trans('key1'));
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment