gettext 系统从一组二进制文件中回显字符串,这些二进制文件由源文本文件创建,其中包含同一句子的不同语言的翻译。
查找键是“基础”语言中的句子。
在你的源代码中你会有类似的东西
echo _("Hello, world!");
对于每种语言,您都会有一个相应的文本文件,其中包含密钥和翻译版本(注意可与 printf 函数一起使用的 %s)
french
msgid "Hello, world!"
msgstr "Salut, monde!"
msgid "My name is %s"
msgstr "Mon nom est %s"
italian
msgid "Hello, world!"
msgstr "Ciao, mondo!"
msgid "My name is %s"
msgstr "Il mio nome è %s"
这些是创建本地化所需的主要步骤
- 所有文本输出都必须使用 gettext 函数(gettext()、ngettext()、_())
- 使用 xgettext (*nix) 解析您的 php 文件并创建基本的 .po 文本文件
- 使用poedit 将翻译文本添加到.po 文件中
- 使用 msgfmt (*nix) 从 .po 文件创建二进制 .mo 文件
- 将 .mo 文件放在类似的目录结构中
locale/de_DE/LC_MESSAGES/myPHPApp.mo
locale/zh_CN/LC_MESSAGES/myPHPApp.mo
locale/it_IT/LC_MESSAGES/myPHPApp.mo
那么你的 php 脚本必须设置需要使用的语言环境
php 手册中的示例对于该部分非常清楚
<?php
// Set language to German
setlocale(LC_ALL, 'de_DE');
// Specify location of translation tables
bindtextdomain("myPHPApp", "./locale");
// Choose domain
textdomain("myPHPApp");
// Translation is looking for in ./locale/de_DE/LC_MESSAGES/myPHPApp.mo now
// Print a test message
echo gettext("Welcome to My PHP Application");
// Or use the alias _() for gettext()
echo _("Have a nice day");
?>
总是从 php 手册中查看 here 以获得好的教程