Exemple #1
0
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>';
}
Exemple #2
0
 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;
 }