function plugin_multilang_inline_link($option, $args) { global $vars; $body = array(); $page = isset($vars['page']) ? $vars['page'] : ''; $obj_l2c = new Lang2Country(); foreach ($args as $arg) { $arg = htmlsc($arg); @(list($lang, $style) = explode('\\+', $arg)); // en_US=English+flag=us @(list($lang, $title) = explode('=', $lang)); @(list($style, $country) = explode('=', $style)); if ($style != 'text') { // flag or text : default is flag if (empty($country)) { @(list($lng, $country) = explode('_', $lang)); // en_US -> en, US if (empty($country)) { $country = $obj_l2c->getLang2Country(strtolower($lng)); } } if (!empty($country)) { $country = strtolower($country); $title = '<span class="flag flag-' . $country . '" title="' . $title . '" ></span>'; } } array_push($body, '<a href="' . Router::get_cmd_uri('multilang', $page, null, array('lang' => $lang)) . '" rel="alternate" hreflang="' . strtolower(str_replace('_', '-', $lang)) . '">' . $title . '</a>'); } if ($option == 'delim') { // default: nodelim return PLUGIN_MULTILANG_INLINE_BEFORE . join(PLUGIN_MULTILANG_INLINE_DELIMITER, $body) . PLUGIN_MULTILANG_INLINE_AFTER; } return '<span class="multilang">' . join(' ', $body) . '</span>'; }
public static function getLanguage($level = 0) { if ($level == 0) { return DEFAULT_LANG; } $obj_lng = new AcceptLanguage(); $level = $level > count(self::$lng_func) ? count(self::$lng_func) : $level; $obj_l2c = new Lang2Country(); for ($i = 0; $i < $level; $i++) { if ($i == $level) { return DEFAULT_LANG; } $func = self::$lng_func[$i]; // 指定関数の実行 $_x = $obj_lng::$func(); if (!is_array($_x)) { continue; } foreach ($_x as $_lang) { // 完全一致の場合 (ex. ja_JP) if (in_array($_lang[0], self::$language_prepared)) { return $_lang[0]; } // 言語のみの場合の対応 $_x1 = explode('_', $_lang[0]); if (count($_x1) === 2) { continue; } $c = $obj_l2c->getLang2Country($_x1[0]); if (empty($c)) { continue; } $str = $_x1[0] . '_' . $c; if (in_array($str, self::$language_prepared)) { return $str; } } } return DEFAULT_LANG; }