%PDF- %PDF-
| Direktori : /www/loslex/demo/vendor/amirami/localizator/src/Services/Collectors/ |
| Current File : /www/loslex/demo/vendor/amirami/localizator/src/Services/Collectors/DefaultKeyCollector.php |
<?php
namespace Amirami\Localizator\Services\Collectors;
use Amirami\Localizator\Collections\DefaultKeyCollection;
use Amirami\Localizator\Contracts\Collectable;
use Illuminate\Support\Collection;
use RuntimeException;
use Symfony\Component\Finder\Finder;
use Symfony\Component\Finder\SplFileInfo;
class DefaultKeyCollector implements Collectable
{
/**
* @param string $locale
* @return Collection
*/
public function getTranslated(string $locale): Collection
{
$translated = new DefaultKeyCollection;
$this->getFiles($locale)
->each(function (SplFileInfo $fileInfo) use ($locale, $translated) {
$translated->put(
$fileInfo->getFilenameWithoutExtension(),
$this->requireFile($locale, $fileInfo)
);
});
return $translated;
}
/**
* @param string $locale
* @return Collection
*/
protected function getFiles(string $locale): Collection
{
$dir = lang_path($locale);
if (! file_exists($dir)) {
if (! mkdir($dir, 0755) && ! is_dir($dir)) {
throw new RuntimeException(sprintf('Directory "%s" was not created', $dir));
}
return new Collection;
}
return new Collection(
(new Finder)->in($dir)->name('*.php')->files()
);
}
/**
* @param string $locale
* @param SplFileInfo $fileInfo
* @return array
* @noinspection PhpIncludeInspection
*/
protected function requireFile(string $locale, SplFileInfo $fileInfo): array
{
return require lang_path(
$locale.DIRECTORY_SEPARATOR.$fileInfo->getRelativePathname()
);
}
}