tra('Switch Language'), 'description' => tra('Displays a language picker to change the language of the site.'), 'prefs' => ['feature_multilingual', 'change_language'], 'params' => [ 'mode' => [ 'name' => tra('Display mode'), 'description' => tra('Changes how the list of languages is displayed. Possible values are droplist, flags and words. Defaults to droplist.'), 'filter' => 'alpha', ], ], ]; } /** * @param $mod_reference * @param $module_params */ function module_switch_lang($mod_reference, $module_params) { global $prefs, $user, $flagmapping; $smarty = TikiLib::lib('smarty'); $tikilib = TikiLib::lib('tiki'); $frontendLang = $prefs['language']; if (! empty($user)) { $userlib = TikiLib::lib('user'); $userLang = $userlib->get_user_preference($user, 'language'); $frontendLang = ! empty($userLang) ? $userLang : $prefs['site_language']; } // tiki-setup has already set the $language variable //Create a list of languages $languages = []; $langLib = TikiLib::lib('language'); $languages = $langLib->list_languages(false, 'n'); $mode = isset($module_params["mode"]) ? $module_params["mode"] : "droplist"; $smarty->assign('mode', $mode); if ($mode == 'flags' || $mode == 'words' || $mode == 'abrv') { include('lang/flagmapping.php'); global $pageRenderer; //$trads = $multilinguallib->getTranslations('wiki page', $page_id, $page, $prefs['language']); for ($i = 0, $icount_languages = count($languages); $i < $icount_languages; $i++) { if (isset($flagmapping[$languages[$i]['value']])) { $languages[$i]['flag'] = $flagmapping[$languages[$i]['value']][0]; } else { $languages[$i]['flag'] = ''; } if (isset($pageRenderer) && ! empty($pageRenderer->trads)) { $languages[$i]['class'] = ' unavailable'; for ($t = 0, $tcount_pageR = count($pageRenderer->trads); $t < $tcount_pageR; $t++) { if ($pageRenderer->trads[$t]['lang'] == $languages[$i]['value']) { $languages[$i]['class'] = ' available'; } } } else { $languages[$i]['class'] = ''; } if ($languages[$i]['value'] == $frontendLang) { $languages[$i]['class'] .= ' highlight'; } } } $smarty->assign_by_ref('languages', $languages); $smarty->assign_by_ref('frontendLang', $frontendLang); }