1

在我当前的项目中,我使用带有模板引擎 TWIG 的 Silex 框架。我必须使我的网站国际化。为此,我导入了所需的模块:

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

我在文件夹“翻译”中创建了我的 YAML 文件:

use Symfony\Component\Translation\Loader\YamlFileLoader;
$app['translator'] = $app->share($app->extend('translator', function($translator, $app) {
    $translator->addLoader('yaml', new YamlFileLoader());
    $translator->addResource('yaml', __DIR__.'/translation/en.yml', 'en');
    $translator->addResource('yaml', __DIR__.'/translation/fr.yml', 'fr');
    return $translator;
}));

现在我知道我应该使用“gettext”在“.po”文件中提取我的 TWIG 模板的字符串,但我找不到方法。

有些人谈论“Twig Gettext Extractor”,但我认为 Silex 不支持这个模块。

谢谢你的帮助 !

4

1 回答 1

3

从 2.1 开始,翻译提供 .po 加载器:

use Symfony\Component\Translation\Loader\PoFileLoader;

// ...
$translator->addLoader('po', new PoFileLoader());
$translator->addResource('po', __DIR__.'/translation/messages.en.po', 'en');
// ...

该组件还提供其他 gettext 加载器,完整列表请参见:https ://github.com/symfony/Translation/tree/master/Loader

于 2013-10-20T11:14:21.047 回答