symfony - 注册验证后 Silex 翻译停止工作

标签 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());

当我注册验证时,翻译停止工作。应该翻译的所有字符串都不会在没有错误的情况下进行翻译。
我正在更改计数器中的语言环境,所以它可能与它有关:
$en->get('/{slug}', function (Silex\Application $app, $slug) {
    $app['locale'] = 'en';

最佳答案

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

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

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

关于symfony - 注册验证后 Silex 翻译停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13108184/

相关文章:

php - Silex,加载自己的类

symfony - 在 Twig 中包含的模板中覆盖 block

symfony - 如何在 createQueryBuilder 中使用通配符?

symfony - FOS 休息包 : Can the response be gzipped?

php - 返回 HTTP 405 的 CORS 预检请求

security - Silex/Symfony2 记住我身份验证用户界面 RedBean 包装器

Symfony RememberMe token_provider

php - 如何设计不重复的代码来捕捉mvc框架中的错误?

symfony - 如何在Symfony2中自定义/本地化Assert消息?

php - 无法将现有实体映射到 symfony2 中的嵌入形式