×

Loading...
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务

我抄来的方法:

$GLOBALS['_LANG'] = array( 'af'
, 'ar'
, 'en'
。。。
, 'zh'
);
function detectLanguage()
{ $_AL = strtolower($GLOBALS['HTTP_ACCEPT_LANGUAGE']);
$_UA = strtolower($GLOBALS['HTTP_USER_AGENT']);

foreach($GLOBALS['_LANG'] as $K) // Try to detect Primary language if several languages are accepted.
{ if(strpos($_AL, $K)===0)
{ return $K;
};
};

foreach($GLOBALS['_LANG'] as $K) // Try to detect any language if not yet detected.
{ if(strpos($_AL, $K)!==false)
{ return $K;
};
};
foreach($GLOBALS['_LANG'] as $K)
{ if(preg_match("/[[( ]{$K}[;,_-)]/",$_UA))
{ return $K;
};
};
}
Report

Replies, comments and Discussions:

  • 工作学习 / 学科技术讨论 / 请教:PHP如何探测Browser是简体中文还是繁体中文?因为两个都Return zh.
    • 返回的应该是zh-tw, zh-cn吧
      • 你的意思$GLOBALS['HTTP_USER_AGENT']是返回zh-tw, zh-cn?
        • 应该是“HTTP_ACCEPT_LANGUAGE”吧? 在HTTP里应该是用 Accept-language 这个 header 指定用户的语言的。zh-cn, zh-tw。具体格式看链接。
          • 我抄来的方法:
            $GLOBALS['_LANG'] = array( 'af'
            , 'ar'
            , 'en'
            。。。
            , 'zh'
            );
            function detectLanguage()
            { $_AL = strtolower($GLOBALS['HTTP_ACCEPT_LANGUAGE']);
            $_UA = strtolower($GLOBALS['HTTP_USER_AGENT']);

            foreach($GLOBALS['_LANG'] as $K) // Try to detect Primary language if several languages are accepted.
            { if(strpos($_AL, $K)===0)
            { return $K;
            };
            };

            foreach($GLOBALS['_LANG'] as $K) // Try to detect any language if not yet detected.
            { if(strpos($_AL, $K)!==false)
            { return $K;
            };
            };
            foreach($GLOBALS['_LANG'] as $K)
            { if(preg_match("/[[( ]{$K}[;,_-)]/",$_UA))
            { return $K;
            };
            };
            }
            • 我没有用过php,看了你的代码,我大概猜一下吧。
              我没有用过php,看了你的代码,我大概猜一下吧。

              在‘_LANG’中增加两项:'zh-cn', 'zh-tw',必须在“zh”之前。并且,最好是修改一下后面的 regexp。