riskihajar/terbilang

支持多语言将数字转换为文字。

2.0.8 2024-03-31 03:08 UTC

This package is auto-updated.

Last update: 2024-09-08 19:38:25 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

支持多语言将数字转换为文字。

警告

在安装此包之前,请检查Laravel Numbers Helper,因为 Laravel 官方支持数字助手,这个包可能很快就会被弃用。

支持的语言

  • id | 印尼语
  • en | 英语
  • pt | 葡萄牙语
  • 即将推出

功能

版本兼容性

安装

您可以通过 composer 安装此包。

composer require riskihajar/terbilang:^2.0

用法

添加提供者与别名

$providers 数组中添加此包的服务提供者。

Riskihajar\Terbilang\TerbilangServiceProvider::class,

将此包的外观添加到 $aliases 数组中。

'Terbilang' => Riskihajar\Terbilang\Facades\Terbilang::class,

发布配置(可选)

如果您想自定义配置,可以运行以下命令来发布配置文件

php artisan vendor:publish --provider="Riskihajar\Terbilang\TerbilangServiceProvider"

这是发布配置文件的内容

return [
    'output' => [
        'date' => '{DAY} {MONTH} {YEAR}',
        'time' => '{HOUR} {SEPARATOR} {MINUTE} {MINUTE_LABEL} {SECOND} {SECOND_LABEL}',
    ],

    'locale' => 'en',

    'distance' => [
        'type' => \Riskihajar\Terbilang\Enums\DistanceDate::Day,
        'template' => '{YEAR} {MONTH} {DAY} {HOUR} {MINUTE} {SECOND}',
        'hide_zero_value' => true,
        'separator' => ' ',
        'terbilang' => false,
        'show' => [
            'year' => true,
            'month' => true,
            'day' => true,
            'hour' => true,
            'minute' => true,
            'second' => true,
        ],
    ],
];

示例

数字转文字

Terbilang::make($number, $suffix, $prefix)

如果设置为 en

Config::set('terbilang.locale', 'en');

Terbilang::make(1000000); // one million

如果设置为 id

Config::set('terbilang.locale', 'id');

Terbilang::make(1000000); // satu juta
前缀 & 后缀

如果设置为 id

Terbilang::make(123456, ' rupiah', 'senilai ');
// senilai seratus dua puluh tiga ribu, empat ratus lima puluh enam rupiah

如果设置为 en

Terbilang::make(654321, ' dollars');
// six hundred and fifty-four thousand, three hundred and twenty-one dollars

数字转罗马数字

Terbilang::roman($number, $lowercase=false)

Terbilang::roman(1234); // MCCXXXIV

数字大转换

Terbilang::short($number, $format)

可用的缩写: kilo, million, billion, trillion

默认值: million

如果设置为 en

Terbilang::short(1000000); // 1M

如果设置为 id

Terbilang::short(1000000); // 1jt

日期时间

日期 Terbilang::date($date, $format='Y-m-d');
$date = date('Y-m-d'); // 2015-03-31
Terbilang::date($date);
// Result : tiga puluh satu maret dua ribu lima belas
时间 Terbilang::time($date, $format='h:i:s');
$date = date('h:i:s'); //10:56:30
Terbilang::time($date);
// Result : sepuluh lewat lima puluh enam menit tiga puluh tiga detik
日期时间 Terbilang::datetime($date, $format='Y-m-d h:i:s');
$date = date('Y-m-d h:i:s'); // 2015-03-31 10:58:27
Terbilang::datetime($date);
// Result : tiga puluh satu maret dua ribu lima belas pukul sepuluh lewat lima puluh delapan menit dua puluh tujuh detik
使用 Carbon

如果使用 Carbon,可以忽略 $format

$dt = Carbon\Carbon::now('Asia/Makassar');

$date = Terbilang::date($dt);
$time = Terbilang::time($dt);
$datetime = Terbilang::datetime($dt);

日期距离

您可以使用方法 Terbilang::distance($start, $end=null, $format=null) 来比较两个日期或只比较一个日期与当前日期。

距离格式配置
'distance' => [
     'type' => 'FULL',
     'format' => '{YEAR} {MONTH} {DAY} {HOUR} {MINUTE} {SECOND}',
     'hide_zero_value' => true,
     'separator' => ' ',
     'terbilang' => false,
     'show' => [
         'year' => true,
         'month' => true,
         'day' => true,
         'hour' => true,
         'minute' => true,
         'second' => true,
     ]
 ],
示例距离
$date1 = date('Y-m-d', strtotime('2017-05-01')); // dateformat must Y-m-d H:i:s
$date2 = date('Y-m-d', strtotime('2017-06-15 09:30:15'));

// this method will diff $date1 with current datetime value for example current datetime : 2017-09-08 15:17:54
Terbilang::period($date1); // Result : 4 months 8 days 15 hours 17 minutes 54 seconds

Terbilang::period($date1, $date2); // Result : 1 months 15 days 9 hours 30 minutes 15 seconds

// if you set locale to id
Terbilang::period($date1, $date2); // Result : 1 bulan 15 hari 9 jam 30 menit 15 detik

// if you set config period.terbilang to true
Terbilang::period($date1, $date2); // Result : satu bulan lima belas hari sembilan jam tiga puluh menit lima belas detik

// if you set config period.type to DAY
Terbilang::period($date1, $date2); // Result : 45 hari

测试

composer test

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全漏洞

请参阅我们的安全策略了解如何报告安全漏洞。

致谢

许可证

MIT 许可证(MIT)。请参阅许可证文件以获取更多信息。