'Get name of Language instead of Locale name (in Laravel)?
How do I fetch name of locale (language) not just a locale string, but rather the name of that language in LARAVEL?
{{ app()->getLocale() }}
Solution 1:[1]
I resolved this by adding an entry to a translation file using Laravel Localization.
https://laravel.com/docs/5.7/localization
In AppServiceProvider@boot
:
$language = Settings::get('language'); // Fetch saved language preference
$language = ($language === null) ? config('app.locale','ENG') : $language->value;
App::setLocale($language);
$languages = Cache::rememberForever('languages',
function () {
$walkable = File::directories(App()->basePath() . '/resources/lang');
$output = [];
array_walk($walkable,
function($value) use (&$output) {
$parts = explode('/', $value);
$key = end( $parts );
$require = $value . '/language.php';
if (file_exists($require)) {
$output[$key] = require($require);
}
}
);
return $output;
});
config(['app.languages' => $languages]);
I then have an entry for each language in dir resources/lang/LOCALE_ISO_3 (ENG/SPA/ITA...)/language.php
<?php // Spanish (SPA)
return [
'default' => 'Spanish',
'locale' => 'Español'
];
To then get a list of available languages:
dd( config('app.languages') );
Results in:
array:3 [?
"ENG" => array:2 [?
"default" => "English"
"locale" => "English"
]
"ITA" => array:2 [?
"default" => "Italian"
"locale" => "Italiano"
]
"SPA" => array:2 [?
"default" => "Spanish"
"locale" => "Español"
]
]
To get current active language:
dd(trans('language'));
Gives you:
array:2 [?
"default" => "English"
"locale" => "English"
]
Solution 2:[2]
You can use PHP's Locale::getDisplayLanguage()
function to do this. The first parameter is the locale, the second is the language you want to output in.
<?php
echo Locale::getDisplayName("en", "fr");
// Output: anglais
echo Locale::getDisplayName("en", "de");
// output: Englisch
echo Locale::getDisplayName("fr", "en");
// output: French
Solution 3:[3]
Laravel doesn't have this information. You need to add it manually by creating table or config with locales and their languages names.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Marc |
Solution 2 | miken32 |
Solution 3 | IndianCoding |