解決Seagull解析瀏覽器語言問題

3 views
Skip to first unread message

Henry Juan

unread,
Dec 5, 2008, 8:55:15 AM12/5/08
to Seagull中文讨论区
lib/SGL/Translation3/Driver.php

public static function resolveLanguageFromBrowser()
{
  $ret = false;
  if (isset($_SERVER[’HTTP_ACCEPT_LANGUAGE’])) {
    $env = $_SERVER[’HTTP_ACCEPT_LANGUAGE’];
    $aLangs = preg_split(
      ’;[\s,]+;’,
      substr($env, 0, strpos($env . ‘;’, ‘;’)), -1,
      PREG_SPLIT_NO_EMPTY
    );
    foreach ($aLangs as $langCode) {
      // don’t take care of locale for now, only main language
      $langCode = substr($langCode, 0, 2);
      $langCodeCharset = $langCode . ‘-’ . self::getDefaultCharset
();
      if (self::isAllowedLangCodeCharset($langCodeCharset)) {
        $ret = $langCodeCharset;
        break;
      }
    }
  }
  return $ret;
}

瀏覽器語言若是設為”中文(台灣)[zh-tw]“,則$_SERVER[’HTTP_ACCEPT_LANGUAGE’]值為”zh-tw“,
resolveLanguageFromBrowser()返回值必須轉成”zhtw-utf-8“才符合$GLOBALS[’_SGL’]
[’LANGUAGE’]繁體中文的鍵值,因此必須修正第398行:

$langCode = ($langCode == ‘zh-tw’) ? ‘zhtw’ : substr($langCode, 0,
2);

已提交此修正http://trac.seagullproject.org/ticket/1694

Reply all
Reply to author
Forward
0 new messages