function ppqtrans_generateLanguageSelectCode($style = '', $id = '') { global $q_config; if ($style == '') { $style = 'text'; } if (is_bool($style) && $style) { $style = 'image'; } if (is_404()) { $url = get_option('home'); } else { $url = ''; } if ($id == '') { $id = 'qtranslate'; } $id .= '-chooser'; switch ($style) { case 'image': case 'text': case 'dropdown': echo '<ul class="ppqtrans_language_chooser" id="' . $id . '">'; foreach (ppqtrans_getSortedLanguages() as $language) { $classes = array('lang-' . $language); if ($language == $q_config['language']) { $classes[] = 'active'; } echo '<li class="' . implode(' ', $classes) . '"><a href="' . ppqtrans_convertURL($url, $language) . '"'; // set hreflang echo ' hreflang="' . $language . '" title="' . $q_config['language_name'][$language] . '"'; if ($style == 'image') { echo ' class="ppqtrans_flag ppqtrans_flag_' . $language . '"'; } echo '><span'; if ($style == 'image') { echo ' style="display:none"'; } echo '>' . $q_config['language_name'][$language] . '</span></a></li>'; } echo "</ul><div class=\"ppqtrans_widget_end\"></div>"; if ($style == 'dropdown') { echo "<script type=\"text/javascript\">\n// <![CDATA[\r\n"; echo "var lc = document.getElementById('" . $id . "');\n"; echo "var s = document.createElement('select');\n"; echo "s.id = 'ppqtrans_select_" . $id . "';\n"; echo "lc.parentNode.insertBefore(s,lc);"; // create dropdown fields for each language foreach (ppqtrans_getSortedLanguages() as $language) { echo ppqtrans_insertDropDownElement($language, ppqtrans_convertURL($url, $language), $id); } // hide html language chooser text echo "s.onchange = function() { document.location.href = this.value;}\n"; echo "lc.style.display='none';\n"; echo "// ]]>\n</script>\n"; } break; case 'both': echo '<ul class="ppqtrans_language_chooser" id="' . $id . '">'; foreach (ppqtrans_getSortedLanguages() as $language) { echo '<li'; if ($language == $q_config['language']) { echo ' class="active"'; } echo '><a href="' . ppqtrans_convertURL($url, $language) . '"'; echo ' class="ppqtrans_flag_' . $language . ' ppqtrans_flag_and_text" title="' . $q_config['language_name'][$language] . '"'; echo '><span>' . $q_config['language_name'][$language] . '</span></a></li>'; } echo "</ul><div class=\"ppqtrans_widget_end\"></div>"; break; } }
function ppqtrans_use($lang, $text, $show_available = false) { global $q_config; // return full string if language is not enabled if (!ppqtrans_isEnabled($lang)) { return $text; } if (is_array($text)) { // handle arrays recursively foreach ($text as $key => $t) { $text[$key] = ppqtrans_use($lang, $text[$key], $show_available); } return $text; } if (is_object($text) || @get_class($text) == '__PHP_Incomplete_Class') { foreach (get_object_vars($text) as $key => $t) { $text->{$key} = ppqtrans_use($lang, $text->{$key}, $show_available); } return $text; } // prevent filtering weird data types and save some resources if (!is_string($text) || $text == '') { return $text; } // get content $content = ppqtrans_split($text); // find available languages $available_languages = array(); foreach ($content as $language => $lang_text) { $lang_text = trim($lang_text); if (!empty($lang_text)) { $available_languages[] = $language; } } // if no languages available show full text if (sizeof($available_languages) == 0) { return $text; } // if content is available show the content in the requested language if (!empty($content[$lang])) { return $content[$lang]; } // content not available in requested language (bad!!) what now? if (!$show_available) { // check if content is available in default language, if not return first language found. (prevent empty result) if ($lang != $q_config['default_language']) { return "(" . $q_config['language_name'][$q_config['default_language']] . ") " . ppqtrans_use($q_config['default_language'], $text, $show_available); } foreach ($content as $language => $lang_text) { $lang_text = trim($lang_text); if (!empty($lang_text)) { return "(" . $q_config['language_name'][$language] . ") " . $lang_text; } } } // display selection for available languages $available_languages = array_unique($available_languages); $language_list = ""; if (preg_match('/%LANG:([^:]*):([^%]*)%/', $q_config['not_available'][$lang], $match)) { $normal_seperator = $match[1]; $end_seperator = $match[2]; // build available languages string backward $i = 0; foreach ($available_languages as $language) { if ($i == 1) { $language_list = $end_seperator . $language_list; } if ($i > 1) { $language_list = $normal_seperator . $language_list; } $language_list = "<a href=\"" . ppqtrans_convertURL('', $language) . "\">" . $q_config['language_name'][$language] . "</a>" . $language_list; $i++; } } return "<p>" . preg_replace('/%LANG:([^:]*):([^%]*)%/', $language_list, $q_config['not_available'][$lang]) . "</p>"; }
function ppqtrans_fixSearchForm($form) { $form = preg_replace('#action="[^"]*"#', 'action="' . trailingslashit(ppqtrans_convertURL(get_home_url())) . '"', $form); return $form; }