【问题标题】:How to get (translatable) strings from specific domain with POEdit如何使用 POEdit 从特定域获取(可翻译的)字符串
【发布时间】:2012-09-26 10:19:59
【问题描述】:

我已经尝试了几个小时来寻找一种设置 POEdit 的方法,以便它只能从特定域中获取文本

我的 gettext 函数如下所示:

function ri($id, $parameters = array(), $domain = 'default', $locale = null)

一个示例调用:

echo ri('Text %xyz%', array('%xyz%'=>100), 'myDomain');

我只需要获取域为 myDomain 的文本进行翻译,或者至少我希望 POEdit 将这些文本放入域特定的文件中。有办法吗?

我发现了几个相似的问题,但答案并没有真正告诉我该怎么做(我想我是个菜鸟,必须用简单的英语解释才能理解):

How to set gettext text domain in Poedit?

How to get list of translatable messages

【问题讨论】:

    标签: dns gettext poedit


    【解决方案1】:

    所以我经过几天的搜索终于弄明白了,我终于在这里找到了答案:

    http://sourceforge.net/mailarchive/message.php?msg_id=27691818

    • xgettext 识别字符串中的上下文,并在 *.pot 文件中给出一个 msgctxt 字段,翻译软件将其识别为 上下文并显示为这样(检查显示上下文的 Pootle 的图像 下面)

      • 这可以通过 3 种方式完成:

        1. 代码中的字符串格式应为 _t('context','string');和 xgettext 调用应采用 --keyword=_t:1c,2 形式 (这基本上向 xgettext 解释了其中有 2 个参数 关键字函数,第一个是上下文,第二个是字符串)
        2. 代码中的字符串格式为 _t('string','context');并且 xgettext 调用应采用 --keyword=_t:1,2c
        3. 的形式
        4. 代码中的字符串应为 _t('context|string'),xgettext 调用应采用 --keyword=_t:1g 形式

    所以为了回答我自己的问题,我将其添加到 Poedit 的“来源关键字”选项卡中:

    ri:1,3c
    

    ri是函数名,1是stringid的位置,3是context/domain的位置

    希望这对其他人有所帮助,我讨厌所有这些神秘的文件

    【讨论】:

    • 您好,谢谢您,但是您在哪里指定文本域?在你的情况下myDomain
    • 啊我明白了,现在所有字符串都将被提取,每个字符串都包含它的文本域,所以我们不能只基于某些文本域生成 .po?
    • 是的,我正在寻找答案太久了,我没有看到您实际上在哪里写了域名?
    • 但是域和上下文是两个不同的东西。
    • 不知道为什么这是公认的答案。没有解决问题。
    【解决方案2】:

    (这是我对同一件事here的回答的转贴。)

    GNU gettext 工具和 Poedit(使用它们)都不支持这种对 gettext 的特殊滥用。

    在 gettext 中,domain 大致是“一个软件”——一个程序、一个库、一个插件、一个主题。因此,它通常驻留在单个目录树中并且单独在那里 - 或者至少,如果您有多个片段=域,您可以将它们合理地组织到一些您可以限制的子目录中提取到。

    在一个单个文件中混合和匹配域并不是你想要使用 gettext 的方式,除了使用你自己的辅助函数之外,没有合理的解决方案来处理它,例如通过将所有 myDomain 文本包装到 __mydomain (显然,您必须定义)并在为 myDomain 提取时将其添加到 Poedit 中的关键字列表中,而 not 将其添加到其他域的关键字列表中' 文件。

    【讨论】:

      猜你喜欢
      • 2012-01-24
      • 1970-01-01
      • 2015-08-05
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 2018-03-30
      • 2017-01-26
      • 1970-01-01
      相关资源
      最近更新 更多