mirror of
				https://github.com/pelican-dev/panel.git
				synced 2025-11-04 09:36:52 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			57 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);
 | 
						|
    }
 | 
						|
}
 |