我已经编写了一个gettext包装程序,使l10n的整个过程变得更加简单,但是以某种方式我无法让PoEdit正确识别和解析对该函数的复数版本调用。这是我最初拥有的:

_e(array('%d house', '%d houses'), 5);

但这根本不起作用,PoEdit根本不选择任何东西。我也尝试过:
_e('%d house', '%d houses', 5);

这次PoEdit捕获%d house而不是%d houses的复数形式,但是,如果我尝试完全相同但通过ngettext()调用,它可以完美地工作,则可以识别单数形式和复数形式:
ngettext('%d house', '%d house', 5);

我已经正确(?)在项目设置中添加了_e关键字,但它没有采用复数形式。我还注意到,PoEdit仅将_gettextgettext_noop作为要拾取的默认键盘,没有对ngettextdngettextdcngettext函数的任何引用,但它仍然可以正确拾取ngettext调用...这使得我想知道PoEdit是否已对ngettext关键字进行了硬编码-这真的很可悲。

无论如何,有没有办法使PoEdit(或任何其他类似的应用程序)正确解析自定义函数?

最佳答案

我找到了解决方案,必须使用以下表达式定义关键字:

_e:1,2

资料来源:http://osdir.com/ml/editors.poedit.user/2008-05/msg00012.html

关于php - 如何使PoEdit正确解析自定义 "ngettext"实现?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3393139/

10-12 02:16