如何使用POEdit从特定域获取(可翻译)字符串

时间:2012-10-05 09:18:41

标签: dns gettext poedit

我一直在努力寻找设置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

2 个答案:

答案 0 :(得分:8)

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

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.   
      3. 代码中的字符串格式为_t('string','context');和xgettext调用的格式应为--keyword = _t:1,2c
      4.   
      5. 代码中的字符串应为_t('context | string'),xgettext调用应采用以下形式--keyword = _t:1g
      6.   
    •   
  •   

因此,为了回答我自己的问题,我将其添加到Poedit的“来源关键字”标签中:

ri:1,3c

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

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

答案 1 :(得分:0)

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

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

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

单个文件中混合和匹配域不是如何使用gettext的,除了使用自己的帮助函数之外,没有合理的解决方案来处理它,例如:通过将所有myDomain文本包装到__mydomain(显然必须定义),并在解压缩myDomain时将其添加到Poedit中的关键字列表中,将其添加到关键字列表中其他域名的文件。