2

我正在使用 Timber 作为模板引擎(Wordpress 的树枝)在 Wordpress 网站上工作。我想通过 PoEdit 使用 Wordpress gettext 机制翻译界面(使用 xgettext)。

模板片段:

<form action="/{{ current_language }}/api/search/{{ viewModel.currentSuperCategory.key }}"
  method="post"
  class="search-results__search"
  id="search-form">
<input placeholder="{{ __('City, region, ZIP', text_domain) }}&hellip;"
       class="input search-results__search__input"
       name="search-query"
       type="text"
       data-search-autocomplete />

我正在使用 PoEdit 从 *.twig 文件中提取字符串。

如果我将{ { __('City, region, ZIP', text_domain) }}放在模板中的单独行上,它就可以工作,但是放在输入占位符中时它不起作用,如上面的代码片段所示。

我按照此处的说明配置了 PoEdit:https ://github.com/jarednova/timber/wiki/Text-Cookbook#generating-po-files-using-poedit

有人知道为什么会这样吗?xgettext 是否忽略 HTML 属性中的字符串?

另一个例子:

在以下情况下,将提取字符串进行翻译:

<i class="fa fa-envelope"></i>
{{ __('Search subscription', text_domain) }}
{{ __('Save free search subscription', text_domain) }}

但不是在以下情况下:

<i class="fa fa-envelope"></i>
<span data-rt-xs="{{ __('Search subscription', text_domain) }}" data-rt-lg="{{ __('Save free search subscription', text_domain) }}"></span>
4

1 回答 1

2

那是因为您实际上不是从“HTML 属性”中提取,而是从不xgettext支持的模板语言中提取。为了解决这个问题,我猜,使用该页面上的粗俗 Python hack。实际上,您在向 xgettext/Poedit 谎报文件包含的内容,坦率地说,结果是可以预期的。该文件是有效的Python文件吗?不,不是,它是Twig。当您误导工具关于语言时,您不能真正期望它被正确解析。

相反,我建议按照该页面的建议进行操作,这是一种更好的方法:

一个更好的解决方案是使用Twig-Gettext-Extractor,这是 Poedit 的特殊 Twig 解析器。链接页面包含有关如何设置的说明。

于 2015-11-26T08:56:30.363 回答