使用 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");