/** * Sets the language for the logged out user * * @return void */ function language_selector_set_logged_out_user_language() { global $CONFIG; if (elgg_is_logged_in()) { return; } if (!empty($_COOKIE['client_language'])) { // switched with language selector $new_lang = $_COOKIE['client_language']; } else { $browserlang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); if (!empty($browserlang)) { // autodetect language if (elgg_get_plugin_setting("autodetect", "language_selector") == "yes") { $new_lang = $browserlang; } } } if (!empty($new_lang) && $new_lang !== $CONFIG->language) { $allowed = language_selector_get_allowed_translations(); if (in_array($new_lang, $allowed)) { // set new language $CONFIG->language = $new_lang; // language has been change; reload language keys if (elgg_is_active_plugin("translation_editor")) { translation_editor_load_translations(); } else { reload_all_translations(); } } } }
<?php $allowed = language_selector_get_allowed_translations(); $current_lang_id = get_current_language(); if (count($allowed) <= 1) { return; } elgg_require_js('language_selector/default'); // show text or flags $show_flags = false; if (elgg_get_plugin_setting("show_images", "language_selector") != "no") { $show_flags = true; } $options = []; $toggle_text = elgg_echo('language_selector:change'); foreach ($allowed as $lang_id) { $lang_name = elgg_echo($lang_id); $text = elgg_format_element('span', ['language-selector-label'], $lang_name); if ($show_flags) { $flag_view = false; foreach (['svg', 'jpg', 'png', 'gif'] as $ext) { $flag_icon = "language_selector/flags/{$lang_id}.{$ext}"; if (elgg_view_exists($flag_icon)) { $flag_view = $flag_icon; break; } } if ($flag_view) { $icon = elgg_view('output/img', ['src' => elgg_get_simplecache_url($flag_view), 'alt' => $lang_name, 'class' => 'language-selector-flag-icon']); $text = $icon . $text; }