Иногда необходимо вывести число прописью при формировании какой-либо формы и нам приходит на помощь модуль DigitText, разработанный специально для фреймворка Laravel.

Он позволяет обрабатывать любое число на любом языке

image


Установка


Установить модуль очень просто:

1. Последовательно выполните команды:

composer require andrey-helldar/digittext
composer update

2. После обновления композера, добавьте сервис провадер в файл `config/app.php`:

Helldar\DigitText\DigitServiceProvider::class,

3. Далее, в том же файле, в раздел `aliases` добавьте фасад:

'DigitText' => Helldar\DigitText\DigitText::class,

Готово!

Использование


Для перевода числа в текст используйте конструкцию:
DigitText::text($number = 0, $lang = 'ru', $currency = false);


Пример:
DigitText::text();
DigitText::text(64.42);
DigitText::text(2866);

DigitText::text(0, 'ru', true);
DigitText::text(64.42, 'ru', true);
DigitText::text(2866, 'ru', true);

/*
 * Результат:
 *     ноль
 *     шестьдесят четыре
 *     две тысячи восемьсот шестьдесят шесть
 *
 *     ноль руб
 *     шестьдесят четыре руб 42 коп
 *     две тысячи восемьсот шестьдесят шесть руб
 */


Языковые формы


На момент написания статьи модуль поддерживает работу с такими языковыми формами, как: «русский», «английский» и «немецкий».

Любой желающий может помочь развитию модуля DigitText.

Модуль предоставлен по лицензии MIT.

От автора


Это мой первый модуль под Laravel. Знаю, что код далек от идеала и прошу сильно не пинать :)

К минусующим


Если Вы не разделяете взгляд автора, будьте добры конструктивно описать свою точку зрения в комментариях.

Комментарии (3)


  1. m00t
    15.03.2016 13:18
    +4

    Уберите nbproject. Разделите на 2 проекта: фреймворконезависимая библиотека и драйвер к ларавелу.


  1. michael_vostrikov
    15.03.2016 13:46
    +5

    Если установлено расширение php_intl, можно вот так сделать:

    $result = (new \MessageFormatter('ru-RU', '{n, spellout}'))->format(['n' => 321]);
    echo $result;
    // триста двадцать один
    
    $result = (new \MessageFormatter('ru-RU', '{n, spellout,%spellout-cardinal-feminine}'))->format(['n' => 321]);
    echo $result;
    // триста двадцать одна


  1. koceg
    15.03.2016 15:11
    +2

    Поле для улучшений непаханное: статические функции; невозможно кастомизировать переводы под проект; абсолютно ничем не обоснованная сильняя связанность с Laravel; fraction, а не fractal, в конце концов.