在我目前的项目中,我使用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支持这个模块。
感谢您的帮助!
答案 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