5

我编写了一个 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,dngettextdcngettext函数的引用,但它仍然可以正确接听ngettext电话......这让我想知道 PoEdit 是否已经硬编码ngettext关键字 - 那真的很伤心。

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

4

3 回答 3

9

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

_e:1,2

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

于 2010-08-03T02:48:52.650 回答
3

实际上你需要做以上两件事。

  • 定义关键字,如 '_e:1,2' AND
  • 添加复数形式 nplurals=2; 复数=n!= 1;

到目录设置

于 2011-06-20T13:57:19.607 回答
0

这是另一种解决方案,它很容易设置。只需按照以下步骤操作:

菜单:目录 -> 设置将打开设置对话框。在项目信息选项卡上,您会在底部找到“复数形式”。只需在此字段中复制并粘贴以下行:

nplurals=2; plural=n != 1;

这将完美地解决问题。我什至不必重新扫描源;PoEditer 中自动出现正确的行。

于 2011-04-03T17:12:37.543 回答