t () используется для поиска перевода вложенной строки. Если у вас есть переменное содержимое непосредственно в этой строке ($ color в вашем примере), поиск перевода не удастся для любого нового содержимого, обнаруженного и еще не переведенного. Заполнители позволяют переводчикам переводить только фиксированную часть строки и по-прежнему позволяют вводить переменное содержимое.
Модификаторы '!', '%', '@' Просто дают вам больше контроля над как вставка происходит, с помощью '!' это означает, что строка будет вставлена как есть.
Самый очевидный пример будет с числами:
Если у вас есть
t("Number $count");
и вы вызываете его несколько раз с разными номерами, скажем, 1,2,3, каждый раз, когда t () будет искать другой перевод для другой строки :
- т («Номер 1»)
- т ('Номер 2')
- т ('Номер 3')
, тогда как с
t('Number !count', array('!count' => $count);
он будет искать только один перевод , вставляя в него число "как есть"!
Дополнительным преимуществом является то, что переводчик может поместить заполнитель в другую позицию, которая соответствует использованию целевого языка, предоставив, например, '! считать все' как строку перевода. В приведенном выше примере это приведет к:
- '1 что угодно'
- '2 независимо'
- '3 что угодно'
Использование '%' окружит заполнитель тегами <em>
для выделения, '@' пропустит его через check_plain()
, чтобы избежать разметки.