123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- <?php
- /**
- * Functions for the language selector
- */
- /**
- * Returns the translations that are allowed to be used
- *
- * @return array
- */
- function language_selector_get_allowed_translations() {
-
- $configured_allowed = elgg_get_plugin_setting("allowed_languages", "language_selector");
-
- if (empty($configured_allowed)) {
- $allowed = array("en");
-
- $installed_languages = get_installed_translations();
-
- $min_completeness = (int) elgg_get_plugin_setting("min_completeness", "language_selector");
-
- if ($min_completeness > 0) {
- if (elgg_is_active_plugin("translation_editor")) {
- $completeness_function = "translation_editor_get_language_completeness";
- } else {
- $completeness_function = "get_language_completeness";
- }
-
- foreach ($installed_languages as $lang_id => $lang_description) {
-
- if ($lang_id != "en") {
- if (($completeness = $completeness_function($lang_id)) >= $min_completeness) {
- $allowed[] = $lang_id;
- }
- }
- }
- }
-
- elgg_set_plugin_setting("allowed_languages", implode(",", $allowed), "language_selector");
-
- } else {
- $allowed = string_to_tag_array($configured_allowed);
- }
- return $allowed;
- }
- /**
- * 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();
- }
- }
- }
- }
- /**
- * Unset the plugin setting so it will be reset when used the next time
- *
- * @return void
- */
- function language_selector_invalidate_setting() {
- elgg_unset_plugin_setting("allowed_languages", "language_selector");
- }
|