POEdit 不提取 HTML 标记中的字符串

Posted

技术标签:

【中文标题】POEdit 不提取 HTML 标记中的字符串【英文标题】:POEdit doesn't extract string in HTML tags 【发布时间】:2016-03-18 12:45:26 【问题描述】:

我在使用 Laravel 的刀片模板语法时遇到了问题。 当有类似的东西时:

<input placeholder=" __('My Tooltip') " />

POEdit 不会创建该字符串。但如果我有这个,在同一个文件上:

<span> __('My Tooltip') </span>

没关系。

我已经添加了一个带有后续配置的新提取器,但问题仍然存在。

命令: xgettext --language=Python --add-cmets=TRANSLATORS: --force-po -o %o %C %K %F

关键字列表中的一项: -k%k

输入文件列表中的一项: %f

源代码字符集: --from-code=%c

谁能帮帮我?

【问题讨论】:

另见***.com/questions/33910482/… 【参考方案1】:

对 Poedit 撒谎这些文件的内容,假装它们是 Python,即使它们很明显不是。它不符合您的喜好也就不足为奇了。如果确实如此,那将是令人惊讶的。 在这种情况下,原因似乎很清楚:xgettext 的 Python 解析器天真地信任您,结果令人绝望地感到困惑,将其中的 " 视为不以 __ 为前缀的字符串文字的开头,因此跳过它。

按照the documentation 所说的进行修复:使用专用工具提取字符串。在 laravel-gettext 的情况下,这意味着使用这个命令:

php artisan gettext:update

(即将推出的 Poedit 2.0 将直接支持此类模板语言,但在此之前,您需要使用 CLI 工具。)

【讨论】:

感谢您的帮助!同时,我复制了大约 20/30 个条目并放入了帮助文件,POEdit 已经提取了它。我会等待 Poedit 2.0。已经有发布日期了吗? 我上面描述的提取器是我为刀片的输出语法(花括号)找到的一个 hack,我解决了我的大部分问题!我了解这些提取器的概念(我必须创建一些 - 用于玉模板,用于视图内部的 javascript 等等)但我只想知道是否有一个命令选项我可以添加以提取甚至在内部的条目引号。再次感谢您的建议,但现在负责管理翻译的人员不具备处理工匠/shell 控制台的技术技能,而且我不得不更改所有 PO 文件的位置。 翻译人员不期望处理这个问题。合理的开发人员会遵循 GNU gettext 手册告诉他们的操作,即从源代码准备 POT 文件(使用控制台对开发人员来说不是问题,或者应该是)。 是翻译人员唯一需要使用的东西,它不需要外壳,不需要知识,也不需要访问源代码。 10 分钟学习正确的 gettext 工作流程节省了很多麻烦...

以上是关于POEdit 不提取 HTML 标记中的字符串的主要内容,如果未能解决你的问题,请参考以下文章

GNU gettext无法从Javascript中提取字符串

从包含在 HTML 标记和不带标记的字符串中的一系列字符串中提取文本

仅使用 Javascript 从 HTML 字符串中提取元标记

poedit 和 xml 文件

PHP:如何在 Poedit 中使用换行符

如何使用 poedit 解析 Timber (twig) 模板并检测引用的字符串以进行翻译