【问题标题】:Twig i18n : Unexpected tag name "trans"Twig i18n:意外的标签名称“trans”
【发布时间】:2014-01-09 02:15:51
【问题描述】:

我正在尝试在一些 Twig 模板上做一些 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"

由于我在添加扩展程序时没有收到任何错误,因此我认为在我尝试渲染模板时它只是被完全忽略了,但我不确定我在哪里犯了错误。

任何帮助表示赞赏。

【问题讨论】:

  • 很抱歉回答我自己的问题,但似乎我已经解决了,所以我想在这里分享解决方案。但是我仍然不能 100% 确定它是如何工作的: $app['twig'] = $app->share($app->extend('twig', function($twig, $app) { $twig- >addExtension(new Twig_Extensions_Extension_I18n()); return $twig; }));看起来我之前的代码根本没有将扩展添加到正确的环境中。

标签: php internationalization twig silex


【解决方案1】:

在此之前注册翻译提供者:

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

然后注册Twig:

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

无需注册 Twig i18n 扩展!

另见Silex TranslationServiceProvider

【讨论】:

  • 谢谢你,但这并不能让我访问诸如“复数”之类的功能......
  • 您可以使用transchoice 标签或transchoice() 过滤器进行复数吗?见Translations
  • 是的。这样可行。非常感谢您的帮助!我不得不承认我对 i18n Twig 扩展和 Silex 翻译服务提供商的存在感到有些困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-22
  • 2013-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-01
  • 1970-01-01
相关资源
最近更新 更多