Skip to content

Commit

Permalink
import fix
Browse files Browse the repository at this point in the history
  • Loading branch information
Simonas Šerlinskas committed Mar 28, 2017
1 parent d7e9197 commit 298f7d7
Show file tree
Hide file tree
Showing 16 changed files with 300 additions and 615 deletions.
7 changes: 0 additions & 7 deletions Command/ExportCommand.php
Expand Up @@ -41,13 +41,6 @@ protected function configure()
InputOption::VALUE_NONE,
'If set, the bundle will export all translations, regardless of status'
);
$this->addOption(
'domains',
'd',
InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY,
'Exports only these domains.',
[]
);
}

/**
Expand Down
72 changes: 34 additions & 38 deletions Command/ImportCommand.php
Expand Up @@ -29,27 +29,17 @@ class ImportCommand extends ContainerAwareCommand
protected function configure()
{
$this->setName('ongr:translations:import');
$this->setDescription('Import all translations from flat files (xliff, yml, php) into the database.');
$this->addOption('globals', 'g', InputOption::VALUE_NONE, 'Import only globals (app/Resources/translations.');
$this->addOption('config-only', 'c', InputOption::VALUE_NONE, 'Import only bundles specified in config.');
$this->setDescription('Import all translations from flat files into the elasticsearch database.');
$this->addOption(
'locales',
'l',
InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY,
'Import only for these locales, instead of using the managed locales.'
);
$this->addOption(
'domains',
'd',
InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY,
'Import only these domains.',
[]
'Import only the specific locales, leave blank to import all configured.'
);
$this->addArgument(
'bundle',
InputArgument::OPTIONAL,
'Import translations for this specific bundle. Provide full bundles namespace.',
null
'Import translations for the specific bundle.'
);
}

Expand All @@ -63,39 +53,45 @@ protected function execute(InputInterface $input, OutputInterface $output)
$configBundles = $this->getContainer()->getParameter('ongr_translations.bundles');

$locales = $input->getOption('locales');

if (empty($locales)) {
$locales = $this->getContainer()->getParameter('ongr_translations.managed_locales');
$locales = $this->getContainer()->getParameter('ongr_translations.locales');
}
$domains = $input->getOption('domains');

$bundleName = $input->getArgument('bundle');
$bundleNames = $input->getArgument('bundle');

$import->setLocales($locales);
$import->setDomains($domains);

if ($input->getOption('config-only')) {
$output->writeln('<info>*** Importing configured bundles translation files ***</info>');
$import->importBundlesTranslationFiles($configBundles);
if ($bundleNames) {
// $output->writeln("<info>*** Importing {$bundleName} translation files ***</info>");
// $bundle = $this->getContainer()->get('kernel')->getBundle($bundleNames);
//
// foreach ($bundleNames as $bundleName) {
// $dir = $this->getContainer()->get('kernel')->getBundle($bundleName);
// $import->importTranslationFiles($bundle);
// }
} else {
if ($bundleName) {
$output->writeln("<info>*** Importing {$bundleName} translation files ***</info>");
$bundle = $this->getContainer()->get('kernel')->getBundle($bundleName);
$import->importBundlesTranslationFiles([$bundle], true);
} else {
$output->writeln('<info>*** Importing application translation files ***</info>');
$import->importDirTranslationFiles($this->getContainer()->getParameter('kernel.root_dir'));
if (!$input->getOption('globals')) {
$output->writeln('<info>*** Importing bundles translation files ***</info>');
$import->importBundlesTranslationFiles(
array_merge($this->getContainer()->getParameter('kernel.bundles'), $configBundles)
);
$output->writeln('<info>*** Importing component translation files ***</info>');
$import->importBundlesTranslationFiles(
$this->getContainer()->getParameter('ongr_translations.component_directories')
);
}
$output->writeln('<info>*** Importing application translation files ***</info>');
$domain = 'messages';
$translations = $import->getTranslationsFromFiles(
$domain,
null,
[$this->getContainer()->getParameter('kernel.root_dir') . 'translations']
);
$import->writeToStorage($domain, $translations);
$output->writeln('<info>*** Importing bundles translation files ***</info>');

foreach ($configBundles as $configBundle) {
$import->importTranslationFiles(
$configBundle,
$this->getContainer()->get('kernel')->locateResource('@'.$configBundle)
);
}

// $output->writeln('<info>*** Importing component translation files ***</info>');
// $import->importBundlesTranslationFiles(
// $this->getContainer()->getParameter('ongr_translations.component_directories')
// );
}
$import->writeToStorage();
}
}
103 changes: 0 additions & 103 deletions DependencyInjection/Compiler/TranslatorPass.php

This file was deleted.

25 changes: 10 additions & 15 deletions DependencyInjection/Configuration.php
Expand Up @@ -30,29 +30,24 @@ public function getConfigTreeBuilder()
$rootNode
->addDefaultsIfNotSet()
->children()
->scalarNode('repository')
->arrayNode('repository')
->info('Repository used for connecting with elasticsearch client.')
->isRequired()
->children()
->scalarNode('translation')->isRequired()
->end()
->scalarNode('history')->isRequired()
->end()
->end()
->end()
->scalarNode('list_size')
->info('Maximum amount of translations displayed in the list')
->defaultValue(1000)
->end()
->arrayNode('managed_locales')
->requiresAtLeastOneElement()
->info('Locales to manage (e.g. "en", "de").')
->arrayNode('locales')
->requiresAtleastOneElement()
->info('Locales to manage (e.g. "en", "de", "en_eur").')
->prototype('scalar')->end()
->end()
->arrayNode('formats')
->prototype('scalar')
->defaultValue([])
->end()
->end()
->arrayNode('domains')
->prototype('scalar')
->defaultValue([])
->end()
->end()
->arrayNode('bundles')
->info('Bundles to scan for translations.')
->prototype('scalar')
Expand Down
46 changes: 10 additions & 36 deletions DependencyInjection/ONGRTranslationsExtension.php
Expand Up @@ -36,59 +36,33 @@ public function load(array $configs, ContainerBuilder $container)
$loader->load('services.yml');
$loader->load('filters_container.yml');

$container->setParameter('ongr_translations.managed_locales', $config['managed_locales']);
$container->setParameter('ongr_translations.formats', $config['formats']);
$container->setParameter('ongr_translations.domains', $config['domains']);
$container->setParameter('ongr_translations.locales', $config['locales']);
$container->setParameter('ongr_translations.list_size', $config['list_size']);
$container->setAlias('ongr_translations.translation_repository', $config['repository']);
$container->setAlias(
'ongr_translations.history_repository',
substr_replace($config['repository'], 'history', strrpos($config['repository'], '.') + 1)
);
$container->setAlias('ongr_translations.es_manager', preg_replace('/\.\w+\.\w+$/', '', $config['repository']));
$this->validateBundles($container, $config['bundles']);
$container->setParameter('ongr_translations.bundles', $config['bundles']);
$container->setAlias('ongr_translations.repository.translation', $config['repository']['translation']);
$container->setAlias('ongr_translations.repository.history', $config['repository']['history']);

$this->setFiltersManager($config['repository'], $container);
$this->setFiltersManager($config['repository']['translation'], $container);
}

/**
* Adds filter manager for displaying translations gui.
*
* @param string $repositoryId Elasticsearch repository id.
* @param ContainerBuilder $container Service container.
* @param string $repository Elasticsearch repository id.
* @param ContainerBuilder $container Service container.
*/
private function setFiltersManager($repositoryId, ContainerBuilder $container)
private function setFiltersManager($repository, ContainerBuilder $container)
{
$definition = new Definition(
'ONGR\FilterManagerBundle\Search\FilterManager',
[
new Reference('ongr_translations.filters_container'),
new Reference($repositoryId),
new Reference($repository),
new Reference('event_dispatcher'),
new Reference('jms_serializer.serializer')
new Reference('jms_serializer')
]
);

$container->setDefinition('ongr_translations.filter_manager', $definition);
}

/**
* Validates configured bundles and sets into service container as parameter.
*
* @param ContainerBuilder $container Service container.
* @param array $bundles Bundles array.
*
* @throws InvalidConfigurationException
*/
private function validateBundles($container, $bundles)
{
foreach ($bundles as $bundle) {
if (!class_exists($bundle)) {
throw new InvalidConfigurationException(
"Invalid bundle namespace '{$bundle}'."
);
}
}
$container->setParameter('ongr_translations.bundles', $bundles);
}
}
8 changes: 0 additions & 8 deletions ONGRTranslationsBundle.php
Expand Up @@ -20,12 +20,4 @@
*/
class ONGRTranslationsBundle extends Bundle
{
/**
* {@inheritdoc}
*/
public function build(ContainerBuilder $container)
{
parent::build($container);
$container->addCompilerPass(new TranslatorPass());
}
}

0 comments on commit 298f7d7

Please sign in to comment.