PHP中gettext的完整示例

41

我已经用谷歌搜索了一个小时左右,试图找到PHP中gettext的完整工作示例 - 所有源文件、po文件,以及正确的路径等。只需要一个包含所有必需文件的“hello world”。

我想知道是否有人有这样一个可工作的示例。先行致谢。


3
我个人、主观的看法是,PHP的gettext函数不太好用。Zend_Translate更好,并且也支持gettext文件。 - Pekka
有很多在网上讲如何编写使用gettext的PHP代码的指南,但是其中很多都缺少设置信息(例如,在Linux机器上安装正确的语言环境,设置Window上的gettext等)。如果你已经准备好了PHP代码,但gettext仍然无法工作,我在一篇文章中收集了一些问题(和解决方案)来设置gettext:https://blog.terresquall.com/2020/09/troubleshooting-php-gettext/ - John Doe
3个回答

4

4

我已经阅读了其他发布的有关此问题的指南,但它们都不够完整,而且它们似乎在匆忙涉及主题。

这个指南 分为许多部分,您将从简单的 Hello World 到复杂的复数管理中学习。它不仅解释每个函数的作用,还解释了这些函数使用的值。

作为奖励,这个指南教你如何使用 Poedit,这是一个非常有帮助的工具,用于处理 gettext 国际化,并且如果你正在处理大型项目,则必须拥有它。

如果 OP 也认为这个指南更好,他可以将被接受的答案更改为这个指南。因此,这个答案可以得到更多的关注,更多像我一样的 gettext 初学者可以得到帮助。


1
当您向服务器添加新的语言环境(测试使用sudo locale-gen xx_XX)时,请确保重新启动WWW服务器,否则会出现错误。此外,使用“sudo locale-gen es_ES”设置服务器语言环境实际上不会安装es_ES,而是es_ES.ISO88591(“sudo locale-gen es_ES.utf8”将安装es_ES.utf8)另外,请仔细检查用于setlocale()的字符串,它必须与服务器上的语言环境完全匹配。例如,setlocale(LC_ALL,'es_ES')在从终端运行Ubuntu时不起作用,“locale -a”显示“es_ES.utf8”。setlocale(LC_ALL,'es_ES.utf8')现在可以工作了。 - bnoeafk

0

我为我的项目创建了这个xgettext命令行,你可以将其用作示例:

xgettext --files-from=source_files_list.txt --from-code=UTF-8 -L PHP -o mvap.po -d mvap -p languages --keyword=__:1 --keyword=_e:1 --keyword=_x:1,2c --keyword=_n:1,2 --keyword=_nx:1,2,4c --keyword=_n_noop:1,2 --keyword=_nx_noop:1,2,3c --keyword=_ex:1,2c --keyword=esc_html_e:1 --keyword=esc_html__:1

在这个例子中,source_files_list.txt 应该是一个文本文件,其中包含要由 xgettext 分析的文件名称,这些文件名应该用换行符分隔。
"--keyword=..." 选项用于识别用于翻译字符串的好函数(在这些函数中,我找到了所有的 WordPress 翻译函数)。
它将在 "./languages" 文件夹中输出带有域 "mvap" 的 "mvap.po"。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接