I often stumble over the language settings and presets. I'm using a multilingual site with languages:
- * en-US set as default on backend,
* en-GB is unpublished but still installed,
* de-DE is installed and default frontend,
* fr-FR is installed.
So I want to share my overview:
Code: Select all
$lang = new stdClass();
$lang->current_language = JFactory::getConfig()->get('language'); //OR:
$lang->current_language2 = JFactory::getLanguage()->getTag();
$lang->default_frontend_language = JComponentHelper::getParams('com_languages')->get('site','en-GB');
$lang->default_backend_language = JComponentHelper::getParams('com_languages')->get('administrator','en-GB');
$lang->default_Joomla_language = JFactory::getLanguage()->getDefault();
$lang->user_backend_language = JFactory::getUser()->getParam('admin_language');
$lang->user_frontend_language = JFactory::getUser()->getParam('language');
$lang->current_language_name = JFactory::getLanguage()->getName();
$lang->current_language_tag = JFactory::getLanguage()->getTag();
$lang->current_language_path = JFactory::getLanguage()->getLanguagePath();
$lang->known_languages = JFactory::getLanguage()->getKnownLanguages();
$lang->get_languages = JLanguageHelper::getLanguages('lang_code');
$lang->current_language_sef = $lang->get_languages[$lang->current_language_tag]->sef;
$lang->current_language_native = $lang->get_languages[$lang->current_language_tag]->title_native;
var_dump ($lang);
My result on the frontend (switched to language French):
Code: Select all
object(stdClass)[2861]
public 'current_language' => string 'fr-FR' (length=5)
public 'current_language2' => string 'fr-FR' (length=5)
public 'default_frontend_language' => string 'de-DE' (length=5)
public 'default_backend_language' => string 'en-US' (length=5)
public 'default_Joomla_language' => string 'en-GB' (length=5)
public 'user_backend_language' => null
public 'user_frontend_language' => null
public 'current_language_name' => string 'French (fr-FR)' (length=14)
public 'current_language_tag' => string 'fr-FR' (length=5)
public 'current_language_path' => string '/workspace/joomla/j3/language' (length=43)
public 'known_languages' =>
array (size=100)
'en-US' =>
array (size=100)
'name' => string 'English (USA)' (length=13)
'tag' => string 'en-US' (length=5)
'rtl' => string '0' (length=1)
'locale' => string 'en_US.utf8, en_US.UTF-8, en_US, eng_US, en, english, english-us, us, usa, american, america, american, us, america, america' (length=123)
'firstDay' => string '1' (length=1)
'en-GB' =>
array (size=100)
'name' => string 'English (en-GB)' (length=15)
'tag' => string 'en-GB' (length=5)
'rtl' => string '0' (length=1)
'locale' => string 'en_GB.utf8, en_GB.UTF-8, en_GB, eng_GB, en, english, english-uk, uk, gbr, britain, england, great britain, uk, united kingdom, united-kingdom' (length=141)
'firstDay' => string '0' (length=1)
'weekEnd' => string '0,6' (length=3)
'de-DE' =>
[..]
public 'get_languages' =>
array (size=100)
'de-DE' =>
object(stdClass)[96]
public 'lang_id' => string '4' (length=1)
public 'lang_code' => string 'de-DE' (length=5)
public 'title' => string 'German (Germany-Switzerland-Austria)' (length=36)
public 'title_native' => string 'Deutsch' (length=7)
public 'sef' => string 'de' (length=2)
public 'image' => string 'de_de' (length=5)
public 'description' => string '' (length=0)
public 'metakey' => string '' (length=0)
public 'metadesc' => string '' (length=0)
public 'sitename' => string '' (length=0)
public 'published' => string '1' (length=1)
public 'access' => string '1' (length=1)
public 'ordering' => string '1' (length=1)
public 'link' => string '/' (length=1)
'en-US' =>
object(stdClass)[95]
public 'lang_id' => string '2' (length=1)
[..]
public 'current_language_sef' => string 'fr' (length=2)
public 'current_language_native' => string 'Français' (length=9)
Important remarks:
As you can see, the JFactory::getLanguage()->getKnownLanguages(); returns all installed languages, also the disabled en-GB! On the other hand, the JLanguageHelper::getLanguages('lang_code'); returns only published languages.
The 'user_backend_language' and 'user_frontend_language' is Null, because the user hasn't set any language or the user is not logged-in.
With JFactory::getLanguage()->getDefault(); you only get the default language of Joomla! (always set to 'en-GB')!!