如何让PoEdit正确解析自定义的“ngettext”实现?
我编写了一个使l10n的整个过程更简单一点的gettext包装,但不知何故,我无法让PoEdit正确识别并解析函数的多个版本调用。这是我原来的:如何让PoEdit正确解析自定义的“ngettext”实现?
_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(或任何其他类似的应用程序),正确解析自定义函数?
是的,如'xgettext'文档中所记录的... Poedit只是调用'xgettext'。 – 2010-08-03 10:43:00
这里是另一种解决方案,它是非常容易安装。只需按照以下步骤操作:
菜单:目录 - >设置将打开设置对话框。在项目信息选项卡上,您会在底部找到“复数形式”。只要复制粘贴&在这一领域的以下行:
nplurals=2; plural=n != 1;
这将完全解决问题。我甚至不需要重新消息来源;正确的行自动出现在PoEditer中。
我不认为你理解我的问题。 – 2011-04-03 17:33:00
其实你需要做以上两件事。
- 定义关键字像 '_E:1,2' AND
- 添加复数形式 nplurals = 2;复数= n!= 1;
到类别设置
复数形式因语言而异,但仍与问题无关。 – 2011-06-21 05:23:03
ngettext只支持两个复数形式,所以你有什么意思? – Deckard 2011-08-17 16:54:48
其实没有。查看http://php.net/manual/en/function.ngettext.php上的第一个(也是唯一)示例:“1 okno”,“2 okna”和“5 oken”。 – 2011-08-17 17:38:20
你有至少poEdit的1.3.0? – 2010-08-03 02:36:32
@Alexandre:Poedit 1.4.6(Windows)。 – 2010-08-03 02:38:51
我发现这个链接(http://www.devcomments.com/Zend_Translate-plural-forms-and-poedit-at188420.htm)似乎是不可能的。有没有其他的选择? – 2010-08-03 02:39:19