Basically there are 4 types of formatting available in i18n plugin,
const messages = { en: { message: { greeting: '{msg} Morning' } } }
<p>{{ $t('message.greeting', { msg: 'Good' }) }}</p>
<p>Good Morning</p>
const messages = { en: { message: { greeting: '{0} Morning' } } }
<p>{{ $t('message.greeting', ['Good']) }}</p>
<p>Good morning</p>
<p>{{ $t('message.greeting', {'0': 'Good'}) }}</p>
const messages = { en: { message: { greeting: 'Good <br> Morning' } } }
<p v-html="$t('message.greeting')"></p>
<p>Good <!--<br> exists but is rendered as html and not a string--> Morning</p>
const messages = { en: { message: { greeting: '%{msg} Morning' } } }