1,267 total views, 3 views today
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);
}
}
}