Example #1
0
 /**
  * Finds all Locale objects representing locales available in the
  * FLOW3 installation. This is done by scanning all Private and Public
  * resource files of all active packages, in order to find localized files.
  *
  * Localized files have a locale identifier added before their extension
  * (or at the end of filename, if no extension exists). For example, a
  * localized file for foobar.png, can be foobar.en.png, fobar.en_GB.png, etc.
  *
  * Just one localized resource file causes the corresponding locale to be
  * regarded as available (installed, supported).
  *
  * Note: result of this method invocation is cached
  *
  * @return void
  */
 protected function generateAvailableLocalesCollectionByScanningFilesystem()
 {
     foreach ($this->packageManager->getActivePackages() as $activePackage) {
         $packageResourcesPath = $this->localeBasePath . $activePackage->getPackageKey() . '/';
         if (!is_dir($packageResourcesPath)) {
             continue;
         }
         $directoryIterator = new \RecursiveDirectoryIterator($packageResourcesPath, \RecursiveDirectoryIterator::UNIX_PATHS);
         $recursiveIteratorIterator = new \RecursiveIteratorIterator($directoryIterator, \RecursiveIteratorIterator::SELF_FIRST);
         foreach ($recursiveIteratorIterator as $fileOrDirectory) {
             if ($fileOrDirectory->isFile()) {
                 $localeIdentifier = Utility::extractLocaleTagFromFilename($fileOrDirectory->getFilename());
                 if ($localeIdentifier !== FALSE) {
                     $this->localeCollection->addLocale(new Locale($localeIdentifier));
                 }
             }
         }
     }
 }
Example #2
0
 /**
  * @test
  * @dataProvider filenamesWithLocale
  */
 public function localeIdentifiersAreCorrectlyExtractedFromFilename($filename, $expectedResult)
 {
     $result = \TYPO3\FLOW3\I18n\Utility::extractLocaleTagFromFilename($filename);
     $this->assertEquals($expectedResult, $result);
 }