Add default translations path option and convention

This commit is contained in:
Yonel Ceruto 2017-11-07 09:35:08 -05:00
parent f1a11817cf
commit 1a8b1b41c9
7 changed files with 20 additions and 0 deletions

View File

@ -4,6 +4,7 @@ CHANGELOG
3.4.0
-----
* Added `translator.default_path` option and parameter
* Session `use_strict_mode` is now enabled by default and the corresponding option has been deprecated
* Made the `cache:clear` command to *not* clear "app" PSR-6 cache pools anymore,
but to still clear "system" ones; use the `cache:pool:clear` command to clear "app" pools instead

View File

@ -677,6 +677,10 @@ class Configuration implements ConfigurationInterface
->end()
->booleanNode('logging')->defaultValue($this->debug)->end()
->scalarNode('formatter')->defaultValue('translator.formatter.default')->end()
->scalarNode('default_path')
->info('The default path used to load translations')
->defaultValue('%kernel.project_dir%/config/translations')
->end()
->arrayNode('paths')
->prototype('scalar')->end()
->end()

View File

@ -1131,6 +1131,7 @@ class FrameworkExtension extends Extension
$translator->addMethodCall('setFallbackLocales', array($config['fallbacks']));
$container->setParameter('translator.logging', $config['logging']);
$container->setParameter('translator.default_path', $config['default_path']);
// Discover translation directories
$dirs = array();
@ -1149,11 +1150,15 @@ class FrameworkExtension extends Extension
$dirs[] = dirname(dirname($r->getFileName())).'/Resources/translations';
}
$defaultDir = $container->getParameterBag()->resolveValue($config['default_path']);
$rootDir = $container->getParameter('kernel.root_dir');
foreach ($container->getParameter('kernel.bundles_metadata') as $name => $bundle) {
if ($container->fileExists($dir = $bundle['path'].'/Resources/translations')) {
$dirs[] = $dir;
}
if ($container->fileExists($dir = $defaultDir.'/'.$name)) {
$dirs[] = $dir;
}
if ($container->fileExists($dir = $rootDir.sprintf('/Resources/%s/translations', $name))) {
$dirs[] = $dir;
}
@ -1167,6 +1172,9 @@ class FrameworkExtension extends Extension
}
}
if ($container->fileExists($defaultDir)) {
$dirs[] = $defaultDir;
}
if ($container->fileExists($dir = $rootDir.'/Resources/translations')) {
$dirs[] = $dir;
}

View File

@ -257,6 +257,7 @@ class ConfigurationTest extends TestCase
'logging' => true,
'formatter' => 'translator.formatter.default',
'paths' => array(),
'default_path' => '%kernel.project_dir%/config/translations',
),
'validation' => array(
'enabled' => !class_exists(FullStack::class),

View File

@ -42,6 +42,7 @@ framework:
translator:
enabled: true
fallback: fr
default_path: '%kernel.root_dir%/config/translations'
paths: ['%kernel.root_dir%/Fixtures/translations']
validation:
enabled: true

View File

@ -503,6 +503,11 @@ abstract class FrameworkExtensionTest extends TestCase
$files,
'->registerTranslatorConfiguration() finds translation resources in custom paths'
);
$this->assertContains(
strtr(__DIR__.'/config/translations/test_default.en.xlf', '/', DIRECTORY_SEPARATOR),
$files,
'->registerTranslatorConfiguration() finds translation resources in default path'
);
$calls = $container->getDefinition('translator.default')->getMethodCalls();
$this->assertEquals(array('fr'), $calls[1][1][0]);