8000 bug #40116 [FrameworkBundle][Translator] scan directories for transla… · symfony/symfony@00e3356 · GitHub
[go: up one dir, main page]

Skip to content

Commit 00e3356

Browse files
bug #40116 [FrameworkBundle][Translator] scan directories for translations sequentially (xabbuh)
This PR was merged into the 4.4 branch. Discussion ---------- [FrameworkBundle][Translator] scan directories for translations sequentially | Q | A | ------------- | --- | Branch? | 4.4 | Bug fix? | yes | New feature? | no | Deprecations? | no | Tickets | Fix #40014 | License | MIT | Doc PR | Commits ------- 8389310 scan directories for translations sequentially
2 parents 36e5051 + 8389310 commit 00e3356

File tree

4 files changed

+32
-16
lines changed

4 files changed

+32
-16
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1236,24 +1236,26 @@ private function registerTranslatorConfiguration(array $config, ContainerBuilder
12361236
// Register translation resources
12371237
if ($dirs) {
12381238
$files = [];
1239-
$finder = Finder::create()
1240-
->followLinks()
1241-
->files()
1242-
->filter(function (\SplFileInfo $file) {
1243-
return 2 <= substr_count($file->getBasename(), '.') && preg_match('/\.\w+$/', $file->getBasename());
1244-
})
1245-
->in($dirs)
1246-
->sortByName()
1247-
;
12481239

1249-
foreach ($finder as $file) {
1250-
$fileNameParts = explode('.', basename($file));
1251-
$locale = $fileNameParts[\count($fileNameParts) - 2];
1252-
if (!isset($files[$locale])) {
1253-
$files[$locale] = [];
1254-
}
1240+
foreach ($dirs as $dir) {
1241+
$finder = Finder::create()
1242+
->followLinks()
1243+
->files()
1244+
->filter(function (\SplFileInfo $file) {
1245+
return 2 <= substr_count($file->getBasename(), '.') && preg_match('/\.\w+$/', $file->getBasename());
1246+
})
1247+
->in($dir)
1248+
->sortByName()
1249+
;
1250+
foreach ($finder as $file) {
1251+
$fileNameParts = explode('.', basename($file));
1252+
$locale = $fileNameParts[\count($fileNameParts) - 2];
1253+
if (!isset($files[$locale])) {
1254+
$files[$locale] = [];
1255+
}
12551256

1256-
$files[$locale][] = (string) $file;
1257+
$files[$locale][] = (string) $file;
1258+
}
12571259
}
12581260

12591261
$projectDir = $container->getParameter('kernel.project_dir');

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -877,6 +877,19 @@ public function testTranslator()
877877
$files,
878878
'->registerTranslatorConfiguration() finds translation resources with dots in domain'
879879
);
880+
$this->assertContains(strtr(__DIR__.'/translations/security.en.yaml', '/', \DIRECTORY_SEPARATOR), $files);
881+
882+
$positionOverridingTranslationFile = array_search(strtr(realpath(__DIR__.'/translations/security.en.yaml'), '/', \DIRECTORY_SEPARATOR), $files);
883+
884+
if (false !== $positionCoreTranslationFile = array_search(strtr(realpath(__DIR__.'/../../../../Component/Security/Core/Resources/translations/security.en.xlf'), '/', \DIRECTORY_SEPARATOR), $files)) {
885+
$this->assertContains(strtr(realpath(__DIR__.'/../../../../Component/Security/Core/Resources/translations/security.en.xlf'), '/', \DIRECTORY_SEPARATOR), $files);
886+
} else {
887+
$this->assertContains(strtr(realpath(__DIR__.'/../../vendor/symfony/security-core/Resources/translations/security.en.xlf'), '/', \DIRECTORY_SEPARATOR), $files);
888+
889+
$positionCoreTranslationFile = array_search(strtr(realpath(__DIR__.'/../../vendor/symfony/security-core/Resources/translations/security.en.xlf'), '/', \DIRECTORY_SEPARATOR), $files);
890+
}
891+
892+
$this->assertGreaterThan($positionCoreTranslationFile, $positionOverridingTranslationFile);
880893

881894
$calls = $container->getDefinition('translator.default')->getMethodCalls();
882895
$this->assertEquals(['fr'], $calls[1][1][0]);

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/translations/security.en.yaml

Whitespace-only changes.

src/Symfony/Bundle/FrameworkBundle/composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
"symfony/messenger": "^4.4|^5.0",
5050
"symfony/mime": "^4.4|^5.0",
5151
"symfony/process": "^3.4|^4.0|^5.0",
52+
"symfony/security-core": "^3.4|^4.4|^5.2",
5253
"symfony/security-csrf": "^3.4|^4.0|^5.0",
5354
"symfony/security-http": "^3.4|^4.0|^5.0",
5455
"symfony/serializer": "^4.4|^5.0",

0 commit comments

Comments
 (0)
0