在Twig BEFORE翻译中输出变量?

时间:2018-02-07 07:06:00

标签: internationalization twig gettext twig-extension php-gettext

我正在使用带有Twig的Slim PHP微框架和翻译扩展名i18n。

我需要输出已翻译的国家/地区名称,并且更愿意使用转换扩展名而不是构建数组并在PHP中手动获取名称。

所以我在Twig模板中尝试了这个:

{% set country="trans-country-name("~isoCountryCode~")" %}
{% trans %}
    This is a list of all the numbers in {{country}}.    
{% endtrans %}

这在我的.po文件中:

msgid "This is a list of all the numbers in %country%."
msgstr "Detta är en lista över samtliga nummer i %country%."

msgid "trans-country-name(NO)"
msgstr "Norge"

我希望这会导致

"Detta är en lista över samtliga nummer i Norge."

但我只是得到了

"Detta är en lista över samtliga nummer i trans-country-name(NO)."

是否可以将翻译扩展名解析为trans-country-name(NO)作为要翻译的文本?

1 个答案:

答案 0 :(得分:0)

我认为我正在倒退。事后看来,这个解决方案显而易见 - 只需先在$patterm = "/[0-9]{2}+(?:-|.|\/)+[a-zA-Z]{3}+(?:-|.|\/)+[0-9]{4}/"; 变量上使用| trans过滤器,然后在文本中直接使用该过滤器进行翻译。

Twig模板:

country

{% set country = ("trans-country-name("~numbers[0].countryNames.code~")") | trans %} {% trans %}This is a list of all the numbers in {{country}}.{% endtrans %} 档案

.po

我的最终解决方案是废弃国家/地区代码,转而直接使用国家/地区代码:

msgid "This is a list of all the numbers in %country%."
msgstr "Detta är en lista över samtliga telefonnummer i %country%."

msgid "trans-country-name(NO)"
msgstr "Norge"

{% set country=numbers[0].countryNames.displayName | trans %}
{% trans %}This is a list of all the numbers in {{country}}.{% endtrans %}