Get all current CIDR locales using Sushi

4 years ago

dakira

This lets you get all existing language names (according to CIDR) in the current locales language.

Code

/**
 * composer require calebporzio/sushi
 * composer require commerceguys/intl
 *
 */

class Language extends \Illuminate\Database\Eloquent\Model
{
    use \Sushi\Sushi;

    public function getRows()
    {
        return collect(json_decode(file_get_contents($this->getPath()), true))
            ->map(fn($value, $key) => ['code' => $key, 'name' => $value])
            ->values()->toArray();
    }

    protected function getPath()
    {
        $path = base_path('vendor/commerceguys/intl/resources/language/'
            . config('app.locale') . '.json');

        if (file_exists($path)) {
            return $path;
        }

        return base_path('vendor/commerceguys/intl/resources/language/en.json');
    }
}

App::setLocale('fr');
Language::all()
Video course: PHP Package Development