asSpellaut有时候工作不正确。是否在asSpellout下设置其他功能的解决方案? 代码:
<?=\Yii::$app->formatter->asSpellout($eur)?> EUR
例如在拉脱维亚的实际Yii2 spelaut 1978中,作为“vienstūkstošisodiņsimtseptiņdesmitastoņi”,但正确的是“vienstūkstotisdeviņisimtiseptiņdesmitastoņi”
答案 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',
],
],