56 lines
1.5 KiB
PHP
56 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace Pterodactyl\Traits\Helpers;
|
|
|
|
use Matriphe\ISO639\ISO639;
|
|
use Illuminate\Filesystem\Filesystem;
|
|
|
|
trait AvailableLanguages
|
|
{
|
|
/**
|
|
* @var \Illuminate\Filesystem\Filesystem
|
|
*/
|
|
private $filesystem;
|
|
|
|
/**
|
|
* @var \Matriphe\ISO639\ISO639
|
|
*/
|
|
private $iso639;
|
|
|
|
/**
|
|
* Return all of the available languages on the Panel based on those
|
|
* that are present in the language folder.
|
|
*
|
|
* @param bool $localize
|
|
* @return array
|
|
*/
|
|
public function getAvailableLanguages($localize = false): array
|
|
{
|
|
return collect($this->getFilesystemInstance()->directories(resource_path('lang')))->mapWithKeys(function ($path) use ($localize) {
|
|
$code = basename($path);
|
|
$value = $localize ? $this->getIsoInstance()->nativeByCode1($code) : $this->getIsoInstance()->languageByCode1($code);
|
|
|
|
return [$code => title_case($value)];
|
|
})->toArray();
|
|
}
|
|
|
|
/**
|
|
* Return an instance of the filesystem for getting a folder listing.
|
|
*
|
|
* @return \Illuminate\Filesystem\Filesystem
|
|
*/
|
|
private function getFilesystemInstance(): Filesystem
|
|
{
|
|
return $this->filesystem = $this->filesystem ?: app()->make(Filesystem::class);
|
|
}
|
|
|
|
/**
|
|
* Return an instance of the ISO639 class for generating names.
|
|
*
|
|
* @return \Matriphe\ISO639\ISO639
|
|
*/
|
|
private function getIsoInstance(): ISO639
|
|
{
|
|
return $this->iso639 = $this->iso639 ?: app()->make(ISO639::class);
|
|
}
|
|
}
|