function bogo_post_class($classes, $class, $post_id) { $locale = bogo_get_post_locale($post_id); $locale = bogo_language_tag($locale); $locale = esc_attr($locale); if ($locale && !in_array($locale, $classes)) { $classes[] = $locale; } return $classes; }
function bogo_flag_css() { $flags = array(); if (apply_filters('bogo_use_flags', true)) { $locales = bogo_available_locales(); foreach ($locales as $locale) { if ($flag = bogo_get_flag($locale)) { $flags[$locale] = $flag; } } } if (!$flags) { return; } $side = is_rtl() ? 'right' : 'left'; echo '<style type="text/css">' . "\n"; foreach ($flags as $locale => $flag) { echo '.bogo-language-switcher .' . bogo_language_tag($locale) . ' {'; echo ' background: url("' . $flag . '") no-repeat ' . $side . ' center;'; echo ' }' . "\n"; } echo '</style>' . "\n"; }
function bogo_language_switcher_links($args = '') { global $wp_query; $args = wp_parse_args($args, array()); $locale = get_locale(); $available_languages = bogo_available_languages(); $translations = array(); $is_singular = false; if (is_singular() || !empty($wp_query->is_posts_page)) { $translations = bogo_get_post_translations(get_queried_object_id()); $is_singular = true; } $links = array(); foreach ($available_languages as $code => $name) { $link = array('locale' => $code, 'lang' => bogo_language_tag($code), 'title' => $name, 'native_name' => bogo_get_language_native_name($code), 'href' => ''); if ($is_singular) { if ($locale != $code && !empty($translations[$code])) { $link['href'] = get_permalink($translations[$code]); } } else { if ($locale != $code) { $link['href'] = bogo_url(null, $code); } } $links[] = $link; } return apply_filters('bogo_language_switcher_links', $links, $args); }
function bogo_lang_slug($locale) { $tag = bogo_language_tag($locale); $slug = $tag; if (false !== ($pos = strpos($tag, '-'))) { $slug = substr($tag, 0, $pos); } $variations = preg_grep('/^' . $slug . '/', bogo_available_locales()); if (1 < count($variations)) { $slug = $tag; } return apply_filters('bogo_lang_slug', $slug, $locale); }