91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中怎么利用gettext實現國際化編程

發布時間:2021-06-29 17:27:09 來源:億速云 閱讀:234 作者:Leah 欄目:編程語言

PHP中怎么利用gettext實現國際化編程,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

一、安裝設置gettext套件:

1. *NIX系統:

a.從 http://www.gnu.org/software/gettext/gettext.html 下載 gettext package,進行安裝。

b.編譯PHP的時候加上“--with-gettext[=DIR]”,其中DIR為gettext安裝的 目錄,缺省為:/usr/local。

c.保存,然后 restart server。

2.WIN32系統:

a.需要將gnu_gettext.dll檔拷貝到系統目錄下面 (Ex: C:\WINNT\SYSTEM32 or C:\WINDOWS\SYSTEM32),PHP 4.2.3 之后文件名為 libintl-1.dll,可在 php4\dlls 下獲得。

b.打開php.ini檔,查找extension=php_gettext.dll,去掉前面的“;”。

c.保存,然后restart server。

若一切順利,就可以在 phpinfo() 中看到 gettext 字樣,至此已設置完畢。

二、php_gettext.dll套件里有好幾個函式,具體請看相關的manual。在這里我們只用記住3個函式就行了。

如下:

string bindtextdomain ( string domain, string directory)

string textdomain ( string text_domain)

string gettext ( string message)

三、寫作i18n程序:

<?php 
// 常規的程序 
echo "Hello World!"); 
?>

下面是 i18n 程序:hello.php

<?php 
// I18N 程序范例開始 
define('PACKAGE', 'hello'); // 定義要用的mo文件名稱,常規來說,我們都把PACKAGE的
名稱定義和程序名稱相同。 

putenv('LANG=zh_TW'); 
setlocale(LC_ALL, 'zh_TW'); // 指定要用的語系,如:en_US、zh_CN、zh_TW 

bindtextdomain(PACKAGE, '/apache/htdocs/locale'); 
textdomain(PACKAGE); 

// The .mo file searched is: 
// /apache/htdocs/locale/en/LC_MESSAGES/hello.mo 

echo gettext("Hello World!"); 
?>

在IE中輸入:http://localhost/hello.php,輸出結果為:“Hello World!”。

note:按照 GNU package 里面的習慣,可以使用 _(...) 來代替 gettext(...) ,這樣就可以少打很多 gettext 了。

四、接下來設置gettext po檔:

1.創建目錄結構,如下所示:

bindtextdomain's dir
/language
/LC_MESSAGES
domain.po
domain.mo

其中 bindtextdomain's dir 為 bindtextdomain() 所用的目錄,language 為要用的語系,domain 為 PACKAGE 名稱。

以上面為例:

/locale
 /zh_TW
/LC_MESSAGES
 hello.po
 hello.mo

2.創建PO檔

xgettext -d [您定義的PACKAGE名稱] [程序文件名]

WIN32下面的xgettext、msgfmt程序檔可以從 ( http://www.sourceforge.net ) 下載,需要 libiconv.dll,、libintl.dll 的支持。

以上面hello.php檔為例:

$ xgettext -d hello hello.php

運行后將產生一個hello.po檔,內容如下:

# SOME DESCRIPTIVE TITLE.
# Copyright ? YEAR Free Software Foundation, Inc.
# FIRST AUTHOR , YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2003-04-21 22:31+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: hello.php:14
msgid "Hello World!"
msgstr ""

里面列出 hello.php 檔里所有調用 gettext 函式的字符串,翻譯的時候只需將 msgid 值翻譯填入 msgstr 即可,如翻譯成中文。

# SOME DESCRIPTIVE TITLE.
# Copyright ? 2003 Ptker All Right Reserved.
# FIRST AUTHOR , 2003.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: 0.1\n"
"POT-Creation-Date: 2003-04-21 22:31+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Ptker \n"
"Language-Team: zh_TW \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=BIG5\n"
"Content-Transfer-Encoding: 8bit\n"

#: hello.php:14
msgid "Hello World!"
msgstr "世界,您好!"

3.創建MO檔

msgfmt -o hello.mo hello.po

運行后將產生一個hello.mo二進制檔。

4.***將 hello.po、hello.mo 拷貝到相關語系的目錄下即可。

五、在IE中輸入:http://localhost/hello.php ,現在的結果就是:“世界,您好!”

關于PHP中怎么利用gettext實現國際化編程問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

上高县| 临城县| 夏河县| 龙口市| 威信县| 通州区| 平乡县| 永德县| 安化县| 乌恰县| 萨嘎县| 龙井市| 固镇县| 宕昌县| 德兴市| 井研县| 仪征市| 广汉市| 西青区| 天台县| 洛阳市| 安康市| 门源| 应城市| 刚察县| 阳原县| 牡丹江市| 汨罗市| 凭祥市| 武宣县| 郑州市| 高要市| 确山县| 霍州市| 台南市| 乌恰县| 沂南县| 耿马| 祁阳县| 扎兰屯市| 湟源县|