phpviet/symfony-number-to-words

支持将数字转换为越南语的文字表示

1.0.0 2019-06-08 16:41 UTC

This package is auto-updated.

Last update: 2024-09-15 17:19:05 UTC


README

Symfony Number To Words


Latest version Build status Quantity score StyleCI Total download License

信息

Symfony number to words 支持将数字转换为越南语的文字表示。

安装

  • 通过 Composer 安装 Symfony Number To Words
composer require phpviet/symfony-number-to-words
  • 接下来,在 config/bundles.php 中声明 bundle
// config/bundles.php

return [
    .....
    PHPViet\Symfony\NumberToWords\Bundle::class => ['all' => true]
];

使用方法

extension 的功能

将数字转换为文字

  • 通过服务 n2w 使用
// âm năm
$container->get('n2w')->toWords(-5); 

// năm
$container->get('n2w')->toWords(5); 

// năm phẩy năm
$container->get('n2w')->toWords(5.5); 
  • twig 中使用 n2w 过滤器
// mười lăm
{{ 15 | n2w }}; 

// một trăm linh năm
{{ 105 | n2w }}; 

// hai mươi tư
{{ 24 | n2w }}; 

将数字转换为货币

  • 通过服务 n2w 使用
// năm triệu sáu trăm chín mươi nghìn bảy trăm đồng
$container->get('n2w')->toCurrency(5690700);
  • twig 中使用 n2c 过滤器
// chín mươi lăm triệu năm trăm nghìn hai trăm đồng
{{ 95500200 | n2c }};

此外,我们还可以通过 toCurrency 方法和 n2c 过滤器的第二个参数使用其他货币单位,其中数组的第一个元素是整数的单位,其次是分数的单位

// sáu nghìn bảy trăm bốn mươi hai đô bảy xen
$container->get('n2w')->toCurrency(6742.7, ['đô', 'xen']);

// chín nghìn bốn trăm chín mươi hai đô mười lăm xen
{{ 9492.15 | n2c(['đô', 'xen']) }};

改变数字的读法

如果您对上面的读法感到满意,则可以跳过此步骤。

首先,为了改变数字的读法,您需要在 config/packages 中创建一个 n2w.yaml 配置文件,内容如下

n2w:
    defaults:
        dictionary: 'standard'
    dictionaries:
        standard: 'n2w_standard_dictionary'
        south: 'n2w_south_dictionary'

现在,请将默认的 standard 改为 south,所有数字到文字和货币的转换将按照南方的风格读取

// một trăm linh một => một trăm lẻ một
$container->get('n2w')->toWords(101);

// một nghìn => một ngàn
$container->get('n2w')->toWords(1000);

 // hai mươi tư => hai mươi bốn
$container->get('n2w')->toWords(24);

// một trăm hai mươi tư nghìn không trăm linh một đồng => một trăm hai mươi bốn ngàn không trăm lẻ một đồng
$container->get('n2w')->toCurrency(124001);

或者您想更加灵活地使用,则可以指定字典

// một trăm hai mươi tư nghìn không trăm linh một
{{ 124001 | n2w }};

// một trăm hai mươi bốn ngàn không trăm lẻ một
{{ 124001 | n2w('south') }};

如果您想根据您的意愿改变读法,则可以创建一个继承自 PHPViet\NumberToWords\DictionaryDictionary 类,或者实现抽象类 PHPViet\NumberToWords\DictionaryInterface

use PHPViet\NumberToWords\Dictionary;
use PHPViet\NumberToWords\Transformer;

class MyDictionary extends Dictionary {

    /**
     * @inheritDoc
     */
    public function specialTripletUnitFive(): string
    {
        return 'nhăm';
    }

}

然后注册一个服务,例如,我们将代表 MyDictionary 的服务命名为 app.my,然后声明 n2w.yaml 文件如下

n2w:
    defaults:
        dictionary: 'myDictionary'
    dictionaries:
        standard: 'n2w_standard_dictionary'
        south: 'n2w_south_dictionary'
        myDictionary: 'app.my'

现在尝试一下

// mười nhăm
$container->get('n2w')->toWords(15);

面向开发者

如果您觉得 extension 仍有不足或错误,并想共同开发,我们非常欢迎!请创建 issue 来提出下一版本的改进建议,或者创建 PR 来贡献。谢谢!