Get the language object preferred by the user. This user preference can be set on the user account editing page, and is only available if there are more than one languages enabled on the site. If the user did not choose a preferred language, or is the anonymous user, the $default value, or if it is not set, the site default language will be returned.
$account: User account to look up language for.
$type: Optional string to define which preferred langcode should be used. Default to 'preferred_langcode' property. If set 'preferred_$type_langcode' is used.
$default: Optional default language code to return if the account has no valid language.
function user_preferred_langcode($account, $type = NULL, $default = NULL) {
$language_list = language_list();
if (isset($type)) {
$preferred_langcode = $account->{'preferred_' . $type . '_langcode'};
}
else {
$preferred_langcode = $account->preferred_langcode;
}
if (!empty($preferred_langcode) && isset($language_list[$preferred_langcode])) {
return $language_list[$preferred_langcode]->langcode;
}
else {
return $default ? $default : language_default()->langcode;
}
}