多國語系的實作方式很多,因為我本身是用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
文章標籤
全站熱搜

連結掛了現在是這個嗎? https://codeigniter.org.tw/user_guide/libraries/language.html 然後範例是要寫在哪