Smarty модификатор "прописные буквы" ... всегда заглавные буквы "L"?... а "П"? - PullRequest
6 голосов
/ 23 июня 2011

Проще говоря: я использую Smarty и модификатор |capitalize. Это работает нормально, но когда я передаю любое слово с l, оно становится заглавным, даже если оно не в начале слова.

Что почему?

РЕДАКТИРОВАТЬ : То же самое происходит с p.

Тест:

{"abcdefghijklmnopqrstuvwxyz"|capitalize}
{"aaal aala alaa laaa"|capitalize}
{"aaap aapa apaa paaa"|capitalize}

Выход:

AbcdefghijkLmnoPqrstuvwxyz
AaaL AaLa ALaa Laaa
AaaP AaPa APaa Paaa

Ответы [ 2 ]

5 голосов
/ 27 июня 2011

Вы также можете использовать PHP ucfirst function

{"aaal aala alaa laaa"|@ucfirst}

Это приведет к

Aaal aala alaa laaa

2 голосов
/ 23 июня 2011

Smarty в основном полагается на ucfirst(), на который влияет текущий языковой стандарт, установленный в PHP.Мне не удалось найти информацию о том, как именно это влияет на функции использования заглавных букв (ucfirst, strtolower, strtoupper и т. Д.), Но вы можете попробовать установить для вашего языка значение en_US.UTF-8 (что работает на моем сервере) и посмотреть, как это влияет на вывод,

просмотр локали:

var_dump(setlocale(LC_CTYPE, null));

изменение локали:

setlocale(LC_CTYPE, "en_US.UTF-8");

Обновление

Некоторые исследования приводят к созданию нескольких архивов, в которых написан модификатор клиента.либо выбрать локальный для модификатора, либо пользовательскую функцию для установки локали из файла шаблона.

Источник 1 Источник 2

Я не смог воспроизвести это.Может ли это быть шрифт, который вы используете (какой-то хвост l)?У вас есть примеры кода?

С Smarty v2

{assign value="let go" var="go"}
{$go|capitalize}
<br/>
{assign value="allow me" var="me"}
{$me|capitalize}

Выходы

Let Go
<br/>
Allow me

...