If you'd like to define translations per-page or per-component you can take advantage with i18n custom block.
You can now define translations using i18n custom blocks in your Vue files:
<script setup lang="ts">const { t } = useI18n({ useScope: 'local'})</script><template> <p>{{ t('hello') }}</p></template><i18n lang="json">{ "en": { "hello": "hello world!" }, "ja": { "hello": "こんにちは、世界!" }}</i18n>
or using the Yaml syntax:
<i18n lang="yaml">en: hello: 'hello world!'ja: hello: 'こんにちは、世界!'</i18n>
Read more about i18n custom blocks
When you use per-component Translations, you need
t
which is exported by useI18n
, not $t
.
About $t
which isn't used in per-component translation, see also "Implicit with injected properties and functions" section of Vue I18n docs.