AzuraCast/src/Console/Command/Locale/GenerateCommand.php

51 lines
1.5 KiB
PHP
Raw Normal View History

<?php
2021-07-19 05:53:45 +00:00
declare(strict_types=1);
namespace App\Console\Command\Locale;
use App\Console\Command\CommandAbstract;
use App\Environment;
2019-09-04 18:00:51 +00:00
use Gettext\Translations;
use RecursiveDirectoryIterator;
use RecursiveIteratorIterator;
use RecursiveRegexIterator;
use RegexIterator;
use Symfony\Component\Console\Style\SymfonyStyle;
class GenerateCommand extends CommandAbstract
{
public function __invoke(
SymfonyStyle $io,
Environment $environment
): int {
2020-10-05 06:27:12 +00:00
$io->title('Generate Locales');
$dest_file = $environment->getBaseDirectory() . '/resources/locale/default.pot';
$translations = new Translations();
// Find all PHP/PHTML files in the application's code.
2018-08-30 00:39:51 +00:00
$translatable_folders = [
$environment->getBaseDirectory() . '/src',
$environment->getBaseDirectory() . '/config',
$environment->getViewsDirectory(),
2018-08-30 00:39:51 +00:00
];
2019-09-04 18:00:51 +00:00
foreach ($translatable_folders as $folder) {
$directory = new RecursiveDirectoryIterator($folder);
$iterator = new RecursiveIteratorIterator($directory);
$regex = new RegexIterator($iterator, '/^.+\.(phtml|php)$/i', RecursiveRegexIterator::GET_MATCH);
2018-08-30 00:39:51 +00:00
2019-09-04 18:00:51 +00:00
foreach ($regex as $path_match) {
2018-08-30 00:39:51 +00:00
$path = $path_match[0];
$translations->addFromPhpCodeFile($path);
}
}
$translations->toPoFile($dest_file);
2020-10-05 06:27:12 +00:00
$io->success('Locales generated.');
2018-05-07 01:57:06 +00:00
return 0;
}
2018-08-05 20:48:38 +00:00
}