代码之家  ›  专栏  ›  技术社区  ›  Alix Axel

如何使Poedit正确解析自定义的“ngettext”实现?

  •  5
  • Alix Axel  · 技术社区  · 14 年前

    我编写了一个gettex包装器,它使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 但它仍然可以正确地 NGETTEX 电话。。。这让我怀疑Poedit是否已经将 NGETTEX 关键词-那真的很可悲。

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

    3 回复  |  直到 13 年前
        1
  •  9
  •   Alix Axel    14 年前

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

    _e:1,2
    

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

        2
  •  3
  •   Deckard    13 年前

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

    • 定义关键字,如“e:1,2” 和
    • 添加复数形式 npurals=2;复数=n!=1;

    到目录设置

        3
  •  0
  •   Vold    13 年前

    这是另一个解决方案,很容易设置。只需遵循以下步骤:

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

    nplurals=2; plural=n != 1;
    

    这将完全解决问题。我甚至不必重新扫描资料来源;正确的行会自动出现在诗歌作者身上。