Internationalisierung (i18n)

Nuxt UI unterstützt 50 + Locales und Multi-Directional (LTR/RTL) Internationalisierung.

Usage (Verwendung)

Die Nuxt-Benutzeroberfläche bietet eine App-Komponente, die Ihre App umhüllt, um globale Konfigurationen bereitzustellen, einschließlich der locale-Prop.

Locale ist ein

Verwenden Sie die locale prop mit dem Gebietsschema, das Sie von @nuxt/ui/locale verwenden möchten:

app.vue
<script setup lang="ts">
import { fr } from '@nuxt/ui/locale'
</script>

<template>
  <UApp :locale="fr">
    <NuxtPage />
  </UApp>
</template>
Jedes Gebietsschema hat eine code-Eigenschaft (z. B. en, en-GB, fr), die das Datums-/Uhrzeitformat in Komponenten wie Calendar, InputDate und [InputTimexph0333x/docs/components/input-time) bestimmt.

Custom locale (englisch)

Sie können Ihr eigenes Gebietsschema mit dem Dienstprogramm defineLocale erstellen:

app.vue
<script setup lang="ts">
import type { Messages } from '@nuxt/ui'

const locale = defineLocale<Messages>({
  name: 'My custom locale',
  code: 'en',
  dir: 'ltr',
  messages: {
    // implement pairs
  }
})
</script>

<template>
  <UApp :locale="locale">
    <NuxtPage />
  </UApp>
</template>
Schauen Sie sich den Parameter code an, dort müssen Sie den ISO-Code der Sprache übergeben. Beispiel:
  • hi Hindi (Sprache)
  • de-AT: Deutsch (Sprache) wie in Österreich (Region) verwendet

Extend Gebietsschema

Sie können ein vorhandenes Gebietsschema anpassen, indem Sie dessen messages oder code mit dem Dienstprogramm extendLocale überschreiben:

app.vue
<script setup lang="ts">
import { en } from '@nuxt/ui/locale'

const locale = extendLocale(en, {
  code: 'en-AU',
  messages: {
    commandPalette: {
      placeholder: 'Search a component...'
    }
  }
})
</script>

<template>
  <UApp :locale="locale">
    <NuxtPage />
  </UApp>
</template>

Dynamic locale (englisch)

Um dynamisch zwischen den Sprachen zu wechseln, können Sie das Modul Nuxt I18n verwenden.

Installieren Sie das Nuxt I18n-Paket

pnpm add @nuxtjs/i18n

Fügen Sie das Nuxt I18n Modul in Ihrem nuxt.config.ts hinzu

nuxt.config.ts
export default defineNuxtConfig({
  modules: [
    '@nuxt/ui',
    '@nuxtjs/i18n'
  ],
  css: ['~/assets/css/main.css'],
  i18n: {
    locales: [{
      code: 'de',
      name: 'Deutsch'
    }, {
      code: 'en',
      name: 'English'
    }, {
      code: 'fr',
      name: 'Français'
    }]
  }
})

Setzt die locale-Prop mit useI18n

app.vue
<script setup lang="ts">
import * as locales from '@nuxt/ui/locale'

const { locale } = useI18n()
</script>

<template>
  <UApp :locale="locales[locale]">
    <NuxtPage />
  </UApp>
</template>

Wenn @nuxtjs/i18n installiert ist, lokalisiert die Link-Komponente interne Links automatisch mit dem $localePath-Helfer.

<template>
  <!-- Automatically becomes /en/about or /fr/about based on current locale -->
  <ULink to="/about">About</ULink>
  <UButton to="/contact">Contact</UButton>
</template>
Externe Links und absolute URLs werden automatisch erkannt und überspringen die Lokalisierung. Sie können bei Bedarf weiterhin manuell localePath() oder localeRoute() verwenden.

Dynamische Ausrichtung

Jedes Gebietsschema hat eine dir-Eigenschaft, die von der App-Komponente verwendet wird, um die Richtungsabhängigkeit aller Komponenten festzulegen.

In einer mehrsprachigen Anwendung können Sie die Attribute lang und dir für das <html>-Element dynamisch basierend auf dem Gebietsschema des Benutzers festlegen, was Sie mit dem composable useHead tun können:

app.vue
<script setup lang="ts">
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]">
    <NuxtPage />
  </UApp>
</template>

Unterstützte Sprachen

By default, the en locale is used.

🇸🇦
العربية
Code: ar
🇦🇿
Azərbaycanca
Code: az
🇧🇾
Беларуская
Code: be
🇧🇬
Български
Code: bg
🇧🇩
বাংলা
Code: bn
🇪🇸
Català
Code: ca
🇮🇶
کوردی
Code: ckb
🇨🇿
Čeština
Code: cs
🇩🇰
Dansk
Code: da
🇩🇪
Deutsch
Code: de
🇦🇹
Deutsch (Österreich)
Code: de-AT
🇨🇭
Schweizer Hochdeutsch
Code: de-CH
🇬🇷
Ελληνικά
Code: el
🇺🇸
English
Code: en
🇬🇧
English (United Kingdom)
Code: en-GB
🇪🇸
Español
Code: es
🇪🇪
Eesti
Code: et
🇪🇸
Euskara
Code: eu
🇮🇷
فارسی
Code: fa-IR
🇫🇮
Suomi
Code: fi
🇫🇷
Français
Code: fr
🇪🇸
Galego
Code: gl
🇮🇱
עברית
Code: he
🇮🇳
हिन्दी
Code: hi
🇭🇷
Hrvatski
Code: hr
🇭🇺
Magyar
Code: hu
🇦🇲
Հայերեն
Code: hy
🇮🇩
Bahasa Indonesia
Code: id
🇮🇸
Íslenska
Code: is
🇮🇹
Italiano
Code: it
🇯🇵
日本語
Code: ja
🇬🇪
ქართული
Code: ka
🇰🇿
Қазақша
Code: kk
🇰🇭
ភាសាខ្មែរ
Code: km
🇰🇷
한국어
Code: ko
🇰🇬
Кыргызча
Code: ky
🇱🇺
Lëtzebuergesch
Code: lb
🇱🇦
ລາວ
Code: lo
🇱🇹
Lietuvių
Code: lt
🇱🇻
Latviešu
Code: lv
🇲🇳
Монгол
Code: mn
🇲🇾
Melayu
Code: ms
🇳🇴
Norsk Bokmål
Code: nb-NO
🇳🇱
Nederlands
Code: nl
🇵🇱
Polski
Code: pl
🇵🇹
Português
Code: pt
🇧🇷
Português (Brasil)
Code: pt-BR
🇷🇴
Română
Code: ro
🇷🇺
Русский
Code: ru
🇸🇰
Slovenčina
Code: sk
🇸🇮
Slovenščina
Code: sl
🇦🇱
Shqip
Code: sq
🇸🇪
Svenska
Code: sv
🇹🇬
Тоҷикӣ
Code: tg
🇹🇭
ไทย
Code: th
🇹🇷
Türkçe
Code: tr
🇨🇳
ئۇيغۇرچە
Code: ug-CN
🇺🇦
Українська
Code: uk
🇵🇰
اردو
Code: ur
🇺🇿
Oʻzbek
Code: uz
🇻🇳
Tiếng Việt
Code: vi
🇨🇳
简体中文
Code: zh-CN
🇹🇼
繁體中文
Code: zh-TW
If you need additional languages, you can contribute by creating a PR to add a new locale in src/runtime/locale/.
You can use the CLI to create a new locale:
pnpm cli make locale --code <code>