Lee
Мало того, аналогичный проект рядом лежит — работает.
mr.
То что ты локаль России поставил, тебя не смущает?
mr.
http://intl.rmcreative.ru/
Lee
Почему локаль? Это язык.
mr.
Зацени, тут можно поковыряться в intl и понять, какие там костанты.
mr.
["locale"]=> string(5) "ru-RU"
Lee
А. Ну да пофигу
Lee
Я в исходнике посмотрел уишки — он смотрит не стоит ли в форматтере точка. Стоит — и хер.
Lee
http://intl.rmcreative.ru/
А ссыль крутая, спасибо.
mr.
А. Ну да пофигу
Не пофигу!
mr.
Посмотри на сайте для локали ru стоит запятая, а для ua точка в качестве разделителя.
Lee
Интересно
mr.
Банально, а ты воплей столько поднял)
mr.
Меня отвлёк.
mr.
Хотя проблемы нету, смени локаль)
Lee
Мне русская нужна локаль.
mr.
В русской локали запятые)
Lee
// set symbols if ($this->decimalSeparator !== null) { $formatter->setSymbol(NumberFormatter::DECIMAL_SEPARATOR_SYMBOL, $this->decimalSeparator); } В коде фреймворка
mr.
Ну так я тебе же дал инфо выше, как переопределить.
mr.
Задай umberFormatter::DECIMAL_SEPARATOR_SYMBOL через $options при вызове asCurrency
mr.
Всё, я игнорирую тебя, ты слон.
Lee
Задал. Нихера.
mr.
Ща чекну.
Lee
Бля, так некрасиво. Тут по всему сайту выводят цену: <span class="item-price"><?= number_format($item['price'], 2, '.', ' ') ?> ₽</span> При том что он руссккий. Везде точки. А я ещё рядом генерю новую цену. Это вообще ппц
Vladislav
Судя по ГОСТам, в России нет нормативных актов, устанавливающих обязательное употребление запятой в качестве десятичного разделителя во всех сферах документации и обмена данными. ГОСТ 8.417-2002 («Единицы величин») пользуется только запятой, но сам по себе в качестве десятичного разделителя её не устанавливает. ГОСТ 6.20.1-90 («Электронный обмен данными в управлении, торговле и на транспорте») в качестве десятичного разделителя допускает запятую и точку. ГОСТ 2.004-88 («Общие требования к выполнению конструкторских и технологических документов на печатающих и графических устройствах вывода ЭВМ») также допускает оба варианта в примечании к пункту 1.9 (0,25=0.25).
Vladislav
Точку испольщзуют только пачка англоговорящих стран типа США или Англии
Vladislav
и щепотка из индокитая
Vladislav
остальной мир, кроме арабов (там свое) используют запятую
Lee
Ну переделывать весь сайт у меня задачи нет =) Меня интересует, какого хрена оно не переопределяется
Vladislav
скорее всего неправильно варишь
Vladislav
ибо сколько я юзал форматтер - все было норм
Vladislav
но если считаешь, что варишь правильно, но оно не работает, то pullrequest или хотя бы issue, пожалуйста
Lee
Yii::$app->formatter->decimalSeparator = '.'; echo Yii::$app->formatter->asCurrency( $item['price'], 'RUB' )
Lee
Чё здесь может быть неправильного?
mr.
Копнул исходники, разобрался, не переопределить :)
mr.
Точнее так просто не переопределить)
Vladislav
для валюты используется интл
Vladislav
как и для болшинства другого
Lee
В референсе получается что можно для decimal переопределить, но не для currency. Хотя currency использует decimal для генерации... Если не указан currency.
Lee
Т.е. если рубли убрать щас...
Vladislav
mr.
Вот здесь https://github.com/yiisoft/yii2/blob/master/framework/i18n/Formatter.php#L1106 указывается, что использовать паттерн Currency для рубля это #,##0.00 ¤, его не переопределить опциями, но можно вот так http://php.net/manual/ru/numberformatter.setpattern.php
Lee
О господи...
Lee
Пойду в глобальные настройки формата, там точку поставлю
mr.
Lee
Короче, решение. <?= number_format($item->price, 2, '.', ' ') ?> ₽?>
Lee
И к чёрту этот форматтер :))
Lee
Потому как ансетнув локаль и карренси код — получаем доллары. Можем поставить знак рубля, но он будет слева.
Lee
А чтобы он был справа — это опциями в форматтер не решается.
Lee
Есть ещё одно супер-решение: $('.item-price').text().replace(',','.');
Lee
Элегантно, по моему
mr.
Уж лучше number_format
mr.
Потом иди сыщи на легаси какого чёрта оно так.
Vladislav
preg_replace('/,/', '.', $price);
Vladislav
lol
mr.
mr.
Да вы че епт
Vladislav
🤣
mr.
Ужасы такие по среди рабочего дня.
Vladislav
у мну 6 вечера
Lee
В первый рабочий день, на минуточку )
Lee
preg_replace('/,/', '.', $price);
На бэке не интересно.
Vladislav
эмм
mr.
Интересно, такие ужасы нужно модератору удалять или нет))
Vladislav
<?= number_format($item->price, 2, '.', ' ') ?> ₽?>
Vladislav
это не на бэке?
Lee
:D
Lee
Ты шутейку не заценил?)
Vladislav
скорее всего
mr.
Да я анархист, делайте что хотите в своём коде, лишь мне он не попался 😂
Lee
Это нужно либо сойти с ума, либо... сойти с ума :) Чтоб реплейсить сраную запятую в валюте =)
Vladislav
str_replace
Vladislav
но preg_replace хуже
Vladislav
о!
Vladislav
можно писать цену в копийках
mr.
а как еще хуже можно?
Подключить angular/react/vue, npm, grunt/gulp/webpack написать компонент на TypeScript))
Vladislav
<?= $price * 100 . ' коп.' ?>