close
多國語系的實作方式很多,因為我本身是用Codeigniter的Framework
其中他的多國語系在官網上就有詳解 http://www.codeigniter.org.tw/user_guide/libraries/language.html
這邊記錄的是多國語系的傳統作法之一,我的系統是用Freebsd+PHP5
PHP範例如下:
|
// default lang & type $lang = 'tw'; putenv('LANG=zh_TW'); setlocale(LC_ALL, 'zh_TW'); $lang = isset($_GET['lang']) ? $_GET['lang'] : 'tw'; switch ($lang) { case 'tw': putenv('LANG=zh_TW'); setlocale(LC_ALL, 'zh_TW'); break; case 'cn': putenv('LANG=zh_CN'); setlocale(LC_ALL, 'zh_CN'); } define('PACKAGE', 'test'); // gettext setting bindtextdomain(PACKAGE, 'locale'); textdomain(PACKAGE);
其中要翻譯的文字可以使用:gettext()或者簡短的 _()包起來就可以了
再來是輸入以下指令產生pot檔,複製成po檔可供編輯,編輯(此範例使用vi)完的po檔就可以產生真正在使用的mo檔了。
$ xgettext --language=php --from-code=utf-8 --output=hello.pot test.php $ cp test.pot test-en_US.po $ vi test-en_US.po $ cp hello.pot test-zh_TW.po $ vi test-zh_TW.po $ msgfmt --output=locale/en/LC_MESSAGES/hello.mo test-en_US.po $ msgfmt --output=locale/zh_TW/LC_MESSAGES/hello.mo test-zh_TW.po
最後只要加上連結:test.php?lang=tw、test.php?lang=cn等等就可以做切換語系了。
另外,PO檔在GUI環境底下還可以使用編輯器 POEDIT:
其授權是MIT
全站熱搜