注册验证时,Silex转换将停止工作

时间:2012-10-28 10:51:21

标签: symfony silex

我使用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';

1 个答案:

答案 0 :(得分:0)

因此,所有服务(来自服务提供者)在创建过程中在请求之前在运行时获取语言环境。而且,如果没有显示真实的语言环境,翻译者将获得后备语言环境。

问题:您无法在运行时更改语言环境,因为语言环境是一个变量而不是链接(如果语言环境是对象,则可以更改语言环境)。

解决方案:在请求订阅者上更改/设置区域设置。