Twig DateExtension翻译

时间:2015-10-28 11:05:45

标签: php symfony twig silex

我尝试在我的Silex应用程序中添加Twig DateExtension的翻译。这就是我现在所做的。

首先,我在composer.json中添加了所请求的组件

"twig/twig": "^1.22",  
"twig/extension": "^1.3",  
"symfony/twig-bridge": "^2.7",  
"symfony/translation": "^2.7",  
"symfony/config": "^2.7",  
"symfony/yaml": "^2.7",  

然后我注册这样的服务:

<?php
$app->register(new Silex\Provider\TwigServiceProvider(), array(
    'twig.path' => __DIR__.'/../views',
));

$app->register(new Silex\Provider\TranslationServiceProvider(), array(
    'locale_fallbacks' => array('en'),
    'locale' => 'fr_FR'
));
$app['translator'] = $app->share($app->extend('translator', function($translator, $app) {
    $translator->addLoader('yaml', new Symfony\Component\Translation\Loader\YamlFileLoader());
    $translator->addResource('yaml', __DIR__.'/../src/locales/fr.yml', 'fr_FR');

    return $translator;
}));

$app['twig'] = $app->share($app->extend('twig', function(Twig_Environment $twig, $app) {
    $twig->addExtension(new Twig_Extensions_Extension_Text());
    $twig->addExtension(new Twig_Extensions_Extension_Date($app['translator']));
    return $twig;
}));

在我的fr.yml中,我试着像这样翻译:

diff.ago.day: Il y a %count% jour|Il y a %count% jours
test: converted

此配置似乎部分有效,因为在我的模板中我有(其中foo是DateTime):

{{ foo|time_diff }} - {{ "test"|trans }}

结果应为:

Il y a 1 jour - converted

但它是:

diff.ago.day - converted

所以第一部分没有被转换而第二部分是。

我的错误在哪里?

非常感谢。

编辑:

我终于找到了我的错误。在深入研究Symfony代码之后,我发现他们使用了一个特殊的域名进行翻译:'date'。 所以我在我的ressource加载中添加了一个第四个参数,以便告诉它。

现在新的装货线:

$translator->addResource('yaml', __DIR__.'/../src/locales/fr.yml', 'fr_FR', 'date');

0 个答案:

没有答案