Symfony 注册验证后,Silex translation将停止工作

Symfony 注册验证后,Silex translation将停止工作,symfony,silex,Symfony,Silex,我向YAML注册了TranslationServiceProvider,它运行良好: $app->register(new TranslationServiceProvider(), array( 'locale_fallback' => 'ru', )); $app['translator'] = $app->share($app->extend('translator', function($translator, $app) { $translat

我向YAML注册了TranslationServiceProvider,它运行良好:

$app->register(new TranslationServiceProvider(), array(
    'locale_fallback' => 'ru',
));

$app['translator'] = $app->share($app->extend('translator', function($translator, $app) {
    $translator->addLoader('yaml', new YamlFileLoader());
    $translator->addResource('yaml', CONTENT_PATH . '/locales/en.yml', 'en');
    return $translator;
}));
然后我注册ValidationServiceProvider,如下所示:

$app->register(new Silex\Provider\ValidatorServiceProvider());
当我注册验证时,转换停止工作。所有应该翻译的字符串不会被翻译成没有错误的字符串。 我正在更改countroller中的区域设置,因此可能与此有关:

$en->get('/{slug}', function (Silex\Application $app, $slug) {
    $app['locale'] = 'en';
所以,所有服务(来自服务提供者)都在运行时、请求之前和创建过程中获取区域设置。并且,如果没有提供真实的语言环境,则翻译器将获得备用语言环境

问题:您不能在运行时更改区域设置,因为区域设置是一个变量,并且不作为链接显示(如果区域设置是对象,您可以更改区域设置)


解决方案:更改/设置请求订户的区域设置。

这可能是一个错误,我知道如何修复它。你能在github上向
Fabbot/silex
repo提交一个失败的测试用例吗?@igorw我无法在一个干净的安装上重现这个问题,只注册了验证、翻译和细枝服务。我不认为这是一个错误。我还应该报告吗?仅当您有可复制的测试用例时。这可能已由该PR修复: