【发布时间】:2011-03-24 12:23:37
【问题描述】:
我编写了一个 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 只有 _、gettext 和 gettext_noop 作为默认的按键,没有任何对 ngettext、dngettext 或 dcngettext 函数的引用,但它可以仍然正确地接听了ngettext 调用...这让我想知道 PoEdit 是否对 ngettext 关键字进行了硬编码——那真的很伤心。
无论如何,有没有办法让 PoEdit(或任何其他类似的应用程序)正确解析自定义函数?
【问题讨论】:
-
你至少有 Poedit 1.3.0 吗?
-
@Alexandre:Poedit 1.4.6 (Windows)。
-
我找到了这个链接 (devcomments.com/…) 似乎不可能。有其他选择吗?
-
根据xgettext documentation,您必须将
_e关键字添加到项目(仅接受第一个参数)或_e:1,2将接受第一个和第二个参数并解释它们是复数形式。
标签: php localization internationalization gettext poedit