joelhmetz/laravel-number-to-words

Laravel package to convert numbers and currency values to words in Portuguese (Brazil)

Maintainers

Package info

github.com/joelhmetz/laravel-number-to-words

pkg:composer/joelhmetz/laravel-number-to-words

Statistics

Installs: 8

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v1.0.2 2025-10-31 19:51 UTC

This package is auto-updated.

Last update: 2026-03-29 01:13:52 UTC


README

Convert numbers and currency values to words in Portuguese (Brazil) for Laravel applications.

Features

  • ✅ Convert numbers to words
  • ✅ Convert currency values to words (BRL)
  • ✅ Bug-free (no trailing "e" issue)
  • ✅ Easy to use with Facade and helpers
  • ✅ Laravel 9, 10, and 11 support
  • ✅ PHP 8.0+ support

Installation

composer require joelhmetz/laravel-number-to-words

Publish Configuration (Optional)

php artisan vendor:publish --tag=number-to-words-config

Usage

Using Facade

use Joelhmetz\LaravelNumberToWords\Facades\NumberToWords;

// Convert number to words
NumberToWords::spell(123);
// "cento e vinte e três"

NumberToWords::spell(1000);
// "mil"

// Convert currency to words
NumberToWords::currency(1234.56);
// "mil duzentos e trinta e quatro reais e cinquenta e seis centavos"

NumberToWords::currency(100);
// "cem reais"

Using Helpers

// Convert number to words
number_to_words(456);
// "quatrocentos e cinquenta e seis"

// Convert currency to words
currency_to_words(789.99);
// "setecentos e oitenta e nove reais e noventa e nove centavos"

Direct Instantiation

$converter = new \Joelhmetz\LaravelNumberToWords\NumberToWords();

$converter->spell(500);
// "quinhentos"

$converter->currency(1500.50);
// "mil e quinhentos reais e cinquenta centavos"

Examples

NumberToWords::spell(0);        // "zero"
NumberToWords::spell(1);        // "um"
NumberToWords::spell(15);       // "quinze"
NumberToWords::spell(100);      // "cem"
NumberToWords::spell(1000);     // "mil"
NumberToWords::spell(1000000);  // "um milhão"

NumberToWords::currency(0);     // "zero real"
NumberToWords::currency(1);     // "um real"
NumberToWords::currency(1.01);  // "um real e um centavo"
NumberToWords::currency(10.50); // "dez reais e cinquenta centavos"

Configuration

You can customize the locale in the config file config/number-to-words.php:

return [
    'locale' => env('NUMBER_TO_WORDS_LOCALE', 'pt_BR'),
];

Or set in your .env file:

NUMBER_TO_WORDS_LOCALE=pt_BR

Bug Fix

This package includes a fix for the common "trailing e" bug found in other similar packages. Numbers are always returned without trailing "e" words.

Requirements

  • PHP 8.1 or higher
  • Laravel 9.0, 10.0, 11.0, or 12.0

License

MIT License. See LICENSE for details.

Author

Joel Metz - joelhmetz@gmail.com

Contributing

Pull requests are welcome! Please feel free to submit issues and enhancement requests.