Intereting Posts
Написание подготовленного оператора для извлечения данных из таблицы (фатальная ошибка) Как переопределить систему электронной почты Sylius Проблема с sonataIntlBundle – я не могу установить с композитором URL-адрес действителен или нет Как вы исправляете Nginx автоматически 301 перенаправление на тот же URL с завершающим косой чертой? Laravel – Refopulate, чтобы поставить галочку или откупорить Создание экземпляра объекта из опубликованных данных – PHP Закрытие или создание_функции в PHP Ошибки, возникающие в коде mysqli и call_user_func_array () Определите, является ли текущий URL-адрес http или https в проекте Двоичное дерево с использованием PHP Как синхронизировать ролики YouTube на нескольких клиентах? Использование Gmails Исходящий SMTP из PHP с использованием TLS WAMP: не удалось открыть поток: нет такого файла или каталога Как легко минимизировать JS в PHP … Или что-то еще

Как перевести конкатенированную строку в шаблон твига, используя переводчик Symfony2

У меня есть yml-файл перевода следующим образом:

tag: myfirsttag: Tag number one secondtag: Tag number two .... 

и шаблон твипа, как

  <select name="tag" required="required"> {% for tag in tag_list %} <option value="{{ tag }}">{{ "tag." ~ tag | trans(domain='mydomain') }}</option> {% endfor %} </select> 

Так вот проблема. Элементы в элементе отображаются как «tag.myfirsttag» , а не переведены. Если я заменил "tag." ~ tag "tag." ~ tag с жестко закодированной строкой, такой как "tag.myfirsttag" она работает хорошо. Очевидно, что это связано с конкатенацией, но официальные документы ничего не говорят об этом.

Чтобы быть более ясным и простым

я могу перевести

 {{ "hello.world" | trans(domain='mydomain') }} 

но не может переводить

 {{ "hello." ~ "world" | trans(domain='mydomain') }} 

Решение состоит в том, чтобы вставить строку в круглые скобки, как описано здесь :

работает:

 {{ 'hello.world' | trans }} 

не работает:

 {{ 'hello.' ~ 'world' | trans }} 

работает:

 {{ ('hello.' ~ 'world') | trans }} 

для перевода контактных строк вам нужно сделать следующее:

{{("some string" ~ entity.type ~ "другая строка") | trans}}

Но попробуйте написать строку для перевода как params: например:

some.funny.string

Это ассоциативный массив, верно? Затем вы должны перебирать пару с ключом => значение

 <select name="tag" required="required"> {% for key,tag in tag_list %} <option value="{{ key }}">{{ tag | trans(domain='mydomain') }}</option> {% endfor %} </select> 

Или ваш массив глубже:

 <select name="tag" required="required"> {% for tag in tag_list %} {% for key,value in tag %} <option value="{{ key }}">{{ value | trans(domain='mydomain') }}</option> {% endfor %} {% endfor %} </select>