49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Traits\Helpers;
 | |
| 
 | |
| use Locale;
 | |
| use Illuminate\Filesystem\Filesystem;
 | |
| 
 | |
| trait AvailableLanguages
 | |
| {
 | |
|     private ?Filesystem $filesystem = null;
 | |
| 
 | |
|     public const TRANSLATED = [
 | |
|         'cz',
 | |
|         'da',
 | |
|         'de',
 | |
|         'en',
 | |
|         'es',
 | |
|         'tr',
 | |
|     ];
 | |
| 
 | |
|     /**
 | |
|      * Return all the available languages on the Panel based on those
 | |
|      * that are present in the language folder.
 | |
|      */
 | |
|     public function getAvailableLanguages(): array
 | |
|     {
 | |
|         return collect($this->getFilesystemInstance()->directories(base_path('lang')))->mapWithKeys(function ($path) {
 | |
|             $code = basename($path);
 | |
| 
 | |
|             $value = Locale::getDisplayName($code, $code);
 | |
| 
 | |
|             return [$code => title_case($value)];
 | |
|         })->toArray();
 | |
|     }
 | |
| 
 | |
|     public function isLanguageTranslated(string $countryCode = 'en'): bool
 | |
|     {
 | |
|         return in_array($countryCode, self::TRANSLATED, true);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Return an instance of the filesystem for getting a folder listing.
 | |
|      */
 | |
|     private function getFilesystemInstance(): Filesystem
 | |
|     {
 | |
|         return $this->filesystem = $this->filesystem ?: app()->make(Filesystem::class);
 | |
|     }
 | |
| }
 | 
