Silex Twig翻译Gettext

时间:2013-10-02 12:48:09

标签: translation gettext silex

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

$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支持这个模块。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

翻译提供.po加载器,自2.1:

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