如何修复格式化程序的拼写

时间:2016-11-22 18:20:16

标签: yii2

asSpellaut有时候工作不正确。是否在asSpellout下设置其他功能的解决方案? 代码:

<?=\Yii::$app->formatter->asSpellout($eur)?> EUR

例如在拉脱维亚的实际Yii2 spelaut 1978中,作为“vienstūkstošisodiņsimtseptiņdesmitastoņi”,但正确的是“vienstūkstotisdeviņisimtiseptiņdesmitastoņi”

1 个答案:

答案 0 :(得分:1)

asSpellout()使用PHP intl扩展名。

1)尝试使用不同选项直接使用MessageFormatter或NumberFormatter:

MessageFormatter::formatMessage("lv_LV", "{0, spellout}",[1978]);

有关详细信息,请参阅http://intl.rmcreative.ru/site/message-formatting?locale=lv_LV“邮件格式”和“数字格式”标签。

2)您也可以使用翻译:

echo \Yii::t('app', '{0, number} is spelled as {0, spellout}', [1978]);

3)或者您可以扩展Formatter类并实现自己的asSpellout方法:

// components/Formatter.php
namespace app\components;

class Formatter extends \yii\i18n\Formatter
{
    public function asSpellout ($value) {
        ...
    }
}

并将此类设置为应用程序组件

// config/web.php
'components' => [
    ...
    'formatter' => [
        'class' => 'app\components\Formatter',
    ],
],