Created by Raphaël Droz [email protected] (GPL-3 License)
Twig code scanner to use with gettext/gettext
In order to be usable, upstream ParsedFunction class at php-gettext/Gettext must be slightly modified to ease inheritance.
composer require gettext/twig-scanner
We do not require a specific version of Twig.
ToDo: Support symfony/twig-bridge trans
filter.
use Gettext\Scanner\TwigScanner;
use Gettext\Generator\PoGenerator;
use Gettext\Translations;
//Create a new scanner, adding a translation for each domain we want to get:
$twigScanner = new TwigScanner(
Translations::create('domain1'),
Translations::create('domain2'),
Translations::create('domain3')
);
//Set a default domain, so any translations with no domain specified, will be added to that domain
$twigScanner->setDefaultDomain('domain1');
//Extract all comments starting with 'notes:'
$twigScanner->extractCommentsStartingWith('notes:');
//Scan files
foreach (glob('*.twig') as $file) {
$twigScanner->scanFile($file);
}
//Save the translations in .po files
$generator = new PoGenerator();
foreach ($twigScanner->getTranslations() as $domain => $translations) {
$generator->generateFile($translations, "locales/{$domain}.po");
}
Please see CHANGELOG for more information about recent changes.
The GPL-3 License (GPL-3). Please see LICENSE for more information.