首頁 > 資訊科技 > Delphi開發 > Delphi for PHP的Gettext亂碼解決方法
2009
12-24

Delphi for PHP的Gettext亂碼解決方法

GNU 的 gettext 套件就是提出了一套標準的方法,讓程式不須重新編譯就能顯示多國的訊息,讓國際化 (i18n) 的工作可以更簡單的達成。

而強大的CodeGear產品,Delphi for PHP也把它作成了VCL元件,不過小弟在實做時,卻發現繁體中文怎麼搞還是會變成亂碼,後來找到了,必需要修改「C:Program FilesCodeGearDelphi for PHP2.0vclforms.inc.php」這個檔案中的source才能解決,這不知道是不是正確的作法,不過倒是解決了我的問題。

加入 第24行的code到 forms.inc.php裡面去

bind_textdomain_codeset($domain, 'UTF-8');if($value != $this->_language)

{
   $this->_language = $value;
   if((($this->ControlState & csDesigning) != csDesigning) && (($this->ControlState & csLoading) != csLoading))
   {
      $resourcename = $this->lastresourceread;
      if($value == '(default)') $l = "";
      else $l = "." . $value;

      $resourcename = str_replace('.php', $l . '.xml.php', $resourcename);

      //This is to allow gettext usage
      if($value == '(default)') $l = '';
      else $l = $value;

      putenv("LANG=$l");
      putenv("LANGUAGE=$l");
      putenv("LC_ALL=$l");
      setlocale(6, $l);
      putenv("LC_MESSAGES=$l");
      $domain = "messages";
      bindtextdomain($domain, "./locale");
      textdomain($domain);
      bind_textdomain_codeset($domain, 'UTF-8');

      if(file_exists($resourcename))
      {
         $this->readFromResource($resourcename, false, false);
      }
   }
}
最後修改日:
作者:蔡 小翰

常見問題:

  1. 文章可以轉貼嗎?可以,不過請要註明出處並標示本站連結。
  2. 載點可以轉貼嗎?可以,歡迎隨意盜連,無須告知。
  3. 反盜版聲明:本站支持正版軟體,請勿討論破解版、快樂版、註冊碼、註冊機、序號...等違法主題。
  4. 檔案無法解壓縮或解壓縮時發生錯誤?請使用7-Zip解壓縮
  5. 更多細節請參閱使用條款及免責聲明


發表迴響