У меня есть 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>