使用 gettext() 本地化字串
GNU gettext
是 PHP 中的擴充套件,必須包含在 php.ini
中:
extension=php_gettext.dll #Windows
extension=gettext.so #Linux
gettext
函式實現了一個 NLS(本地語言支援)API,可用於國際化你的 PHP 應用程式。
翻譯字串可以通過設定語言環境,設定翻譯表並在要翻譯的任何字串上呼叫 gettext()
來在 PHP 中完成。
<?php
// Set language to French
putenv('LC_ALL= fr_FR');
setlocale(LC_ALL, 'fr_FR');
// Specify location of translation tables for 'myPHPApp' domain
bindtextdomain("myPHPApp", "./locale");
// Select 'myPHPApp' domain
textdomain("myPHPApp");
myPHPApp.po
#: /Hello_world.php:56
msgid "Hello"
msgstr "Bonjour"
#: /Hello_world.php:242
msgid "How are you?"
msgstr "Comment allez-vous?"
gettext()
載入一個給定的後編譯 .po 檔案,一個 .mo。它將如上所示對映你要翻譯的字串。
在這一小段設定程式碼之後,現在將在以下檔案中查詢翻譯:
./locale/fr_FR/LC_MESSAGES/myPHPApp.mo
。
無論何時呼叫 gettext('some string')
,如果'some string'
已在 .mo
檔案中翻譯,將返回翻譯。否則,'some string'
將被返回未翻譯。
// Print the translated version of 'Welcome to My PHP Application'
echo gettext("Welcome to My PHP Application");
// Or use the alias _() for gettext()
echo _("Have a nice day");