2014-01-09 24 views
0

我想在一些小枝模板上做一些i18n。在index.php文件相关的代码如下:小枝国际化:意外的标签名称“反”

// Twig 
$app->register(new Silex\Provider\TwigServiceProvider(), array(
    'twig.path' => __DIR__ . '/../src/views', 
)); 
$twig = new \Twig_Environment($app['twig.loader.filesystem']); 
$twig->addExtension(new \Twig_Extensions_Extension_I18n()); 

// User Controller Service Provider for SimpleUser 
$app->register($u = new SimpleUser\UserServiceProvider()); 
$app['twig.loader.filesystem']->addPath(__DIR__.'/../src/views/user','user'); 
$app['user.controller']->setLayoutTemplate('layout.twig'); 
$app->mount('/silex-ror/user', $u); 

然后,在树枝模板被渲染我说:

<h1>{% trans %}List users{% endtrans %}</h1> 

但我得到一个错误:

Unexpected tag name "trans" 

由于添加扩展名时我没有遇到任何错误,我假设在我尝试渲染模板时完全忽略它,但我不确定我在哪里犯了错误。

任何帮助表示赞赏。

+0

对不起,回答我的问题看,但似乎我解决它,所以我想在这里分享的解决方案。然而,我仍然不是100%确定这是如何工作的: $ app ['twig'] = $ app-> share($ app-> extend('twig',function($ twig,$ app){ $ twig-> addExtension(new Twig_Extensions_Extension_I18n()); return $ twig; })); 它看起来像我以前的代码只是没有添加扩展到适当的环境。 – LocoNeko73

回答

2

之前注册的翻译服务提供商:

$app->register(new Silex\Provider\TranslationServiceProvider(), array(
    'locale_fallbacks' => array('en'), 
)); 

再注册的树枝:

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

没有必要注册枝条国际化扩展!

Silex TranslationServiceProvider

+0

感谢您的支持,但是这并不能让我访问像“复数”这样的函数,例如... – LocoNeko73

+0

您可以使用'transchoice'标记或'transchoice()'过滤器进行复数形式吗?请参阅[翻译](http://symfony.com/doc/current/book/translation.html) –

+0

是的。这样可行。谢谢你们的帮助!我不得不承认,由于i18n Twig扩展和Silex翻译服务提供商的存在,我有点困惑。 – LocoNeko73