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

69 lines
2.1 KiB
PHP
Raw Normal View History

<?php
2021-07-19 07:53:45 +02:00
declare(strict_types=1);
namespace App\Console\Command\Locale;
use App\Console\Command\CommandAbstract;
use App\Enums\SupportedLocales;
use App\Environment;
use Gettext\Generator\MoGenerator;
use Gettext\Loader\PoLoader;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
#[AsCommand(
2021-12-23 20:50:39 +01:00
name: 'azuracast:locale:import',
description: 'Convert translated locale files into PHP arrays.',
2021-12-23 20:50:39 +01:00
aliases: ['locale:import']
)]
2022-07-01 08:06:29 +02:00
final class ImportCommand extends CommandAbstract
{
public function __construct(
2022-07-01 08:06:29 +02:00
private readonly Environment $environment
) {
parent::__construct();
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
2020-10-05 08:27:12 +02:00
$io->title('Import Locales');
$localesBase = $this->environment->getBaseDirectory() . '/translations';
$supportedLocales = SupportedLocales::cases();
$defaultLocale = SupportedLocales::default();
$poLoader = new PoLoader();
$moGenerator = new MoGenerator();
foreach ($supportedLocales as $supportedLocale) {
if ($supportedLocale === $defaultLocale) {
continue;
}
$localeFolder = $localesBase . '/' . $supportedLocale->value . '/LC_MESSAGES';
$localeSource = $localeFolder . '/default.po';
$localeDest = $localeFolder . '/default.mo';
if (is_file($localeSource)) {
$translations = $poLoader->loadFile($localeSource);
$moGenerator->generateFile($translations, $localeDest);
$io->writeln(
2022-05-07 18:44:14 +02:00
sprintf(
__('Imported locale: %s'),
$supportedLocale->value . ' (' . $supportedLocale->getLocalName() . ')'
)
);
}
}
2020-10-05 08:27:12 +02:00
$io->success('Locales imported.');
return 0;
}
}