如何在 vue-i18n 中显示带小数和不带小数的货币

问题描述 投票:0回答:1

通过以下配置,我可以输出带有货币的金额

const numberFormats = {
    "en-GB": {
        currency: {
            style: 'currency', currency: 'GBP'
        }
    },
    "en-US": {
        currency: {
            style: 'currency', currency: 'USD'
        }
    }
}

在组件内部

<p>{{ $n(100.20, 'currency') }}</p>

我可以输出:

<p>£100.20</p>

以下格式在某些情况下可能没问题,但如果我需要输出简单的金额,例如:£5、£10 等..我不能。我尝试配置它但没有成功。

vue.js vuejs2 vue-i18n
1个回答
14
投票

vue-i18n
docs 表示数字格式可以包含
Intl.NumberFormat
选项
,因此您可以将
minimumFractionDigits
maximumFractionDigits
选项均设置为零,以便从货币中删除小数部分。

您可以定义使用以下选项的新命名格式(例如“currencyNoCents”):

const numberFormats = {
  'en-US': {
    currency: {
      style: 'currency', currency: 'USD'
    },
    currencyNoCents: {
      style: 'currency',
      currency: 'USD',
      minimumFractionDigits: 0, // set fraction digits to 0 to remove cents
      maximumFractionDigits: 0
    }
  },
  'en-GB': {
    currency: {
      style: 'currency', currency: 'GBP'
    },
    currencyNoCents: {
      style: 'currency',
      currency: 'GBP',
      minimumFractionDigits: 0, // set fraction digits to 0 to remove cents
      maximumFractionDigits: 0
    }
  },
}

const i18n = new VueI18n({
  locale: 'en-GB',
  numberFormats
})

new Vue({
  i18n
}).$mount('#app')
<script src="https://unpkg.com/vue@v2/dist/vue.js"></script>
<script src="https://unpkg.com/vue-i18n@v8/dist/vue-i18n.js"></script>

<div id="app">
  <p>{{ $n(100.20, 'currency') }}</p>
  <p>{{ $n(100.20, 'currencyNoCents') }}</p>
</div>

© www.soinside.com 2019 - 2024. All rights reserved.