POEdit无法提取HTML标签中的字符串。

8

我需要帮忙翻译 Laravel 的 blade 模板语法问题。当遇到像这样的情况:

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

如果我有这样的内容,那么POEdit将不会发现该字符串。但是在同一文件中,如果我有以下内容:

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

没问题。

我已经添加了一个新的提取器,使用了以下配置,但问题仍然存在。

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

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

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

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

有人可以帮帮我吗?


请参见 https://stackoverflow.com/questions/33910482/xgettext-does-not-extract-string-in-html-attribute - caw
1个回答

3
你在向 Poedit 虚构这些文件的内容,假装它们是 Python 文件,即使它们显然不是。很明显这样做没有达到你的预期。如果它确实能够正常工作,那才是令人惊讶的。在这种情况下,原因似乎很明显:xgettext 的 Python 解析器过于天真地相信你,并因此产生了混乱,将其中的 " 视为未以 __ 为前缀的字符串字面量的开始,因此跳过了它。

按照 文档 中所说的方法进行修复:使用专用工具提取字符串。在 laravel-gettext 的情况下,这意味着要使用以下命令:

php artisan gettext:update

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

1
感谢您的帮助!同时,我已经将大约20/30个条目复制到辅助文件中,并且POEdit已经提取了它们。我会等待Poedit 2.0的发布。请问已经有发布日期了吗? - Miguel Oliveira
我上面描述的提取器是我为了解决blade输出语法(花括号)而发现的一个技巧,它解决了我的很多问题!我理解这些提取器的概念(我不得不创建一些 - 用于jade模板,用于视图内部的javascript等等),但我只想知道是否有一个命令选项可以添加以提取甚至在引号内的条目。再次感谢您的建议,但现在负责管理翻译的人员没有处理artisan / shell控制台的技能,而且我不得不更改所有PO文件的位置。 - Miguel Oliveira
1
翻译人员不需要处理这个。合理的开发者遵循GNU gettext手册告诉他们要做的事情,即从源代码准备POT文件(使用控制台对于开发者来说并不是问题,或者应该不是)。那就是翻译人员需要处理的唯一事情,而且这不需要shell、知识和对源代码的访问。通过学习正确的gettext工作流程,可以节省很多麻烦,只需要10分钟的时间。 - Václav Slavík

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接