X

於 Windows 使用 PHP + GetText 來實做多國語系支援(I18N)

於 Windows 安裝 Apache + PHP 的環境, 最簡單的就是用 AppServ.

AppServ 版本

在此使用 AppServ 2.5.10 版, Apache, PHP 等 版本資訊如下:

  • Apache 2.2.8
  • PHP 5.2.6
  • MySQL 5.0.51b
  • phpMyAdmin-2.10.3

開啟 PHP 的 gettext 支援

AppServ 2.5.10 的下載安裝完成後, 在 AppServ\php5\ext 有看到 php_gettext.dll, 但是於 phpinfo() 沒看到, 所以只要找到 php.ini, 開啟 gettext 支援即可.

AppServ php.ini 設定檔修改

下述挑其一:

  1. 開始 -> Programs -> AppServ -> Configuration Server -> PHP Edit the php.ini Configuration File
  2. 或 記事本 開啟 C:\WINDOWS\php.ini
  3. 修改 開啟 gettext


    ;extension=php_gettext.dll
    改成
    extension=php_gettext.dll

  4. 重新啟動 Apache 即可.

Gettext 測試

  1. 將此篇 使用 gettext 來實做 PHP 多國語系支援(I18N) 的範例程式抓下來測試.(gettext_example.tgz)
  2. 將範例程式放到 C:\AppServ\www
  3. 開啟瀏覽器查看 http://localhost/hello.php
  4. 照理說, 應該就會看到 繁體, 簡體, 英文 三種語系正常顯示.

若發現有下述問題, 則請參照下述的處理方式.

GetText 在 Windows 的問題和解法

若在語系切換, 發現簡體出現亂碼的情況, 可另行檢視是否有下述問題:

  • 於繁體中文網頁, 看瀏覽器 的 語系編碼, 是否被轉成 Big5 (照理說應該是 UTF-8), 轉成 UTF-8 反而會變亂碼.
  • (簡述: 繁體, Big5 正常, UTF-8 亂碼)
  • 於簡體中文網頁, 看瀏覽器 的 語系編碼, 若是 UTF-8 會看到正確的簡體中文字, 但是跟繁體中文同樣的文字, 都會是亂碼, 將 瀏覽器的語系編碼 改成 Big5, 則繁體中文的文字都正常顯示, 簡體文字變亂碼.
  • (簡述: 簡體, UTF-8 簡體正常, 繁體的文字都是亂碼. Big5 繁體的文字都正常)
  • 於英文網頁正常.
原因 與 解法
  • 原因: UTF-8 的繁體中文, 都被 Windows 自動轉換成 Big5, 所以產生上述問題.
  • 解法: 將 Windows 程式系統的語系, 設定為英文即可.

將 Windows 程式系統語系 設為 英文

  1. Settings(設定) -> Control Panel(控制台) -> Regional and Language Options
  2. Advanced
  3. Language for non-Unicode programs 區塊
  4. 選 English (United States)
  5. 設定完成重新開機
  6. 再來 PHP + gettext 就可以正常顯示使用囉~
Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post