Internacionalización (i18n)
Uso
locale.Localidad
Utilice el prop locale con la configuración regional que desea utilizar desde @nuxt/ui/locale:
<script setup lang="ts">
import { fr } from '@nuxt/ui/locale'
</script>
<template>
<UApp :locale="fr">
<RouterView />
</UApp>
</template>
code (por ejemplo, en, en-GB, fr) que determina el formato de fecha/hora en componentes como Calendar, InputDate y InputTime.Localización personalizada
Puede crear su propia configuración regional utilizando la utilidad defineLocale:
<script setup lang="ts">
import type { Messages } from '@nuxt/ui'
import { defineLocale } from '@nuxt/ui/composables'
const locale = defineLocale<Messages>({
name: 'My custom locale',
code: 'en',
dir: 'ltr',
messages: {
// implement pairs
}
})
</script>
<template>
<UApp :locale="locale">
<RouterView />
</UApp>
</template>
code, allí debe pasar el código iso del idioma. Ejemplo:- x
hiEspañol (idioma) de-AT: alemán (idioma) como se usa en Austria (región)
Extend Localidad
Puede personalizar una configuración regional existente anulando su messages o code utilizando la utilidad extendLocale:
<script setup lang="ts">
import { en } from '@nuxt/ui/locale'
import { extendLocale } from '@nuxt/ui/composables'
const locale = extendLocale(en, {
code: 'en-AU',
messages: {
commandPalette: {
placeholder: 'Search a component...'
}
}
})
</script>
<template>
<UApp :locale="locale">
<RouterView />
</UApp>
</template>
Localización dinámica
Para cambiar dinámicamente entre idiomas, puede usar el complemento Vue I18n.
Instalar el paquete Vue I18n
pnpm add vue-i18n@11
yarn add vue-i18n@11
npm install vue-i18n@11
bun add vue-i18n@11
Use el plugin Vue I18n en su main.ts
import { createApp } from 'vue'
import { createRouter, createWebHistory } from 'vue-router'
import { createI18n } from 'vue-i18n'
import ui from '@nuxt/ui/vue-plugin'
import App from './App.vue'
const app = createApp(App)
const router = createRouter({
routes: [],
history: createWebHistory()
})
const i18n = createI18n({
legacy: false,
locale: 'en',
availableLocales: ['en', 'de'],
messages: {
en: {
// ...
},
de: {
// ...
}
}
})
app.use(router)
app.use(i18n)
app.use(ui)
app.mount('#app')
Configurar el accesorio locale con useI18n
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
import * as locales from '@nuxt/ui/locale'
const { locale } = useI18n()
</script>
<template>
<UApp :locale="locales[locale]">
<RouterView />
</UApp>
</template>
Dirección dinámica
Cada locale tiene una propiedad dir que será utilizada por el componente App para establecer la direccionalidad de todos los componentes.
En una aplicación multilingüe, es posible que desee establecer los atributos lang y dir en el elemento <html> de forma dinámica en función de la configuración regional del usuario, lo que puede hacer con el componente useHead:
<script setup lang="ts">
import { computed } from 'vue'
import { useI18n } from 'vue-i18n'
import { useHead } from '@unhead/vue'
import * as locales from '@nuxt/ui/locale'
const { locale } = useI18n()
const lang = computed(() => locales[locale.value].code)
const dir = computed(() => locales[locale.value].dir)
useHead({
htmlAttrs: {
lang,
dir
}
})
</script>
<template>
<UApp :locale="locales[locale]">
<RouterView />
</UApp>
</template>
Idiomas soportados
By default, the en locale is used.
arazbebgbncackbcsdadede-ATde-CHelenen-GBeseteufa-IRfifrglhehihrhuhyidisitjakakkkmkokylbloltlvmnmsnb-NOnlplptpt-BRroruskslsqsvtgthtrug-CNukuruzvizh-CNzh-TWsrc/runtime/locale/. pnpm cli make locale --code <code>