
Vue-i18n: Vollständige Internationalisierung mit vue-i18n einrichten
Von der Installation bis zur Produktion: Konfigurieren Sie vue-i18n mit der Composition API, verarbeiten Sie Pluralformen nach CLDR-Regeln, verwenden Sie Komponenteninterpolation und ergänzen Sie intelligente Locale-Fallback-Ketten.
vue-i18n installieren
vue-i18n ist das offizielle Internationalisierungs-Plug-in für Vue.js. Es bietet reaktive Übersetzungen, Pluralbildung im ICU-Stil, Komponenteninterpolation, Datums-/Zahlenformatierung sowie Unterstützung für Options API und Composition API.
npm install vue-i18n@9vue-i18n konfigurieren
Erstellen Sie mit createI18n() eine i18n-Instanz und registrieren Sie sie als Vue-Plug-in. Definieren Sie Ihre Locale-Nachrichten, legen Sie die Standard-Locale fest und konfigurieren Sie die Fallback-Locale. vue-i18n unterstützt sowohl den Legacy-Modus (Options API) als auch den Composition-Modus (Composition API).
// src/i18n.ts
import { createI18n } from 'vue-i18n'
import en from './locales/en.json'
import de from './locales/de.json'
const i18n = createI18n({
legacy: false, // Use Composition API mode
locale: 'en', // Default locale
fallbackLocale: 'en', // Fallback locale
messages: { en, de },
})
export default i18n// src/main.ts
import { createApp } from 'vue'
import App from './App.vue'
import i18n from './i18n'
const app = createApp(App)
app.use(i18n)
app.mount('#app')Übersetzungen in Vorlagen verwenden
vue-i18n stellt in Vorlagen die Funktion $t() (Options API) und über useI18n() die Funktion t() (Composition API) bereit. Beide akzeptieren den Übersetzungsschlüssel und optionale benannte oder Listenparameter zur Interpolation.
// src/locales/en.json
{
"nav": {
"home": "Home",
"about": "About",
"settings": "Settings"
},
"greeting": "Hello, {name}!",
"cart": {
"itemCount": "no items | one item | {count} items"
}
}
// src/locales/de.json
{
"nav": {
"home": "Startseite",
"about": "Über uns",
"settings": "Einstellungen"
},
"greeting": "Hallo, {name}!",
"cart": {
"itemCount": "keine Artikel | ein Artikel | {count} Artikel"
}
}Pluralformen verarbeiten
vue-i18n unterstützt Pluralbildung über durch senkrechte Striche getrennte Formen und die Funktion $tc() (Legacy) oder t() mit einem count-Parameter (Composition API). Definieren Sie Pluralformen in Ihren Locale-Nachrichten mit dem Trennzeichen: 'no items | one item | {count} items'.
<template>
<div>
<!-- Simple translation -->
<h1>{{ $t('nav.home') }}</h1>
<!-- With variables -->
<p>{{ $t('greeting', { name: userName }) }}</p>
<!-- In attributes -->
<input :placeholder="$t('nav.settings')" />
<!-- Composition API -->
<p>{{ greeting }}</p>
</div>
</template>
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
const { t } = useI18n()
const userName = 'Alice'
const greeting = t('greeting', { name: userName })
</script>Locale-Fallback-Ketten hinzufügen
Das integrierte fallbackLocale von vue-i18n unterstützt nur eine flache Liste von Fallback-Locales, keine Ketten pro Locale. Fehlt bei pt-BR ein Schlüssel, fällt die Übersetzung auf Englisch statt pt-PT zurück. vue-i18n-locale-chain ergänzt konfigurierbare Ketten mit rekursiver Zusammenführung, sodass regionale Personen stets die ähnlichste verfügbare Übersetzung sehen.
<template>
<div>
<!-- Pipe-separated plurals -->
<p>{{ $t('cart.itemCount', count) }}</p>
<!-- Named plurals (recommended for complex languages) -->
<p>{{ $t('orders', { n: orderCount }) }}</p>
</div>
</template>
<!-- In your locale file: -->
<!-- "orders": "{n} order | {n} orders" -->Übersetzungen automatisieren
Wenn vue-i18n konfiguriert ist, übersetzen Sie Ihre Locale-JSON-Dateien mit KI. Bitten Sie Ihren KI-Assistenten in Ihrer IDE, die Ausgangsdatei zu übersetzen, oder integrieren Sie Übersetzung für vollständig automatisierte Lokalisierung in Ihre CI/CD-Pipeline.
<template>
<select v-model="locale">
<option v-for="lang in availableLocales" :key="lang" :value="lang">
{{ lang }}
</option>
</select>
</template>
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
const { locale, availableLocales } = useI18n()
</script>// src/i18n.ts
import { createI18n } from 'vue-i18n'
const i18n = createI18n({
legacy: false,
locale: 'en',
fallbackLocale: 'en',
messages: {},
})
export async function loadLocale(locale: string) {
const messages = await import(`./locales/${locale}.json`)
i18n.global.setLocaleMessage(locale, messages.default)
i18n.global.locale.value = locale
}
export default i18nKonfiguration von Locale-Fallback-Ketten
Konfigurieren Sie Fallback-Ketten pro Locale, damit regionale Personen die ähnlichste verfügbare Übersetzung sehen, statt direkt zu Englisch zu wechseln. vue-i18n unterstützt fallbackLocale im Objektstil zur Definition von Ketten pro Locale.
// src/i18n.ts
import { createI18n } from 'vue-i18n'
const i18n = createI18n({
legacy: false,
locale: 'pt-BR',
fallbackLocale: {
'pt-BR': ['pt', 'en'],
'zh-Hant-TW': ['zh-Hant', 'zh', 'en'],
'es-419': ['es', 'en'],
default: ['en'],
},
messages: {
en: { /* ... */ },
pt: { /* ... */ },
'pt-BR': { /* ... */ },
},
})Häufige Fallstricke
Legacy- und Composition-API-Modus mischen
v-html für übersetzte Zeichenfolgen verwenden
Regionale Personen sehen Englisch statt der übergeordneten Locale
i18n Agent jetzt testen
Legen Sie Ihre Übersetzungsdatei hier ab
JSON, YAML, PO, XML, CSV, Markdown, Properties
oder zum Auswählen klicken
Zielsprachen