我一直在努力寻找设置POEdit的方法,以便它只能从特定域抓取文本
我的gettext函数如下所示:
function ri($id, $parameters = array(), $domain = 'default', $locale = null)
示例电话:
echo ri('Text %xyz%', array('%xyz%'=>100), 'myDomain');
我只需要抓取域myDomain要翻译的文本,或者至少我希望POEdit将这些文本放入特定于域的文件中。有办法吗?
我发现了几个相似的问题,但答案并没有真正告诉我该怎么做(我想我是一个菜鸟,必须用简单的英语解释,让我理解):
答案 0 :(得分:8)
所以经过几天的搜索后我终于弄明白了,我终于找到了答案:
http://sourceforge.net/mailarchive/message.php?msg_id=27691818
xgettext识别字符串中的上下文,并在* .pot文件中提供msgctxt字段,该字段被翻译软件识别为 上下文并显示为这样(检查Pootle的图像显示上下文 下文)
这可以通过3种方式完成:
- 代码中的字符串格式应为_t('context','string');和xgettext调用应采用以下形式--keyword = _t:1c,2 (这基本上解释了xgettext中有2个参数 关键字功能,第一个是上下文,第二个是字符串)
- 代码中的字符串格式为_t('string','context');和xgettext调用的格式应为--keyword = _t:1,2c
- 代码中的字符串应为_t('context | string'),xgettext调用应采用以下形式--keyword = _t:1g
因此,为了回答我自己的问题,我将其添加到Poedit的“来源关键字”标签中:
ri:1,3c
ri是函数名,1是stringid的位置,3是context / domain的位置
希望这有助于其他人,我讨厌所有这些神秘的文件
答案 1 :(得分:0)
(这是我对同一事物here的回答的转贴。)
GNU gettext工具和Poedit(使用它们)都不支持这种特殊的gettext滥用。
在gettext中, domain 大致是“一块软件” - 一个程序,一个库,一个插件,一个主题。因此,它通常驻留在单个目录树中,并且单独 - 或者至少,如果您有多个=域,您可以将它们组织成一些子目录,您可以限制它们提取到。
在单个文件中混合和匹配域不是如何使用gettext的,除了使用自己的帮助函数之外,没有合理的解决方案来处理它,例如:通过将所有myDomain文本包装到__mydomain
(显然必须定义),并在解压缩myDomain时将其添加到Poedit中的关键字列表中,不将其添加到关键字列表中其他域名的文件。