Wprowadzenie
Tłumaczenia w aplikacjach frontendowych to standard – zwłaszcza jeśli aplikacja ma trafić do międzynarodowych odbiorców. W Vue 3 zalecaną biblioteką jest vue-i18n , która wspiera pełną integrację z Composition API oraz TypeScript.
W tym poradniku pokażę, jak skonfigurować vue-i18n
w projekcie opartym na Vite i TypeScript, z dynamicznym ładowaniem plików językowych i pełną kontrolą nad typami.
Krok 1: Instalacja zależności
npm install vue-i18n@9
Jeśli używasz TypeScripta, biblioteka automatycznie zapewni wsparcie typów.
Krok 2: Konfiguracja struktury katalogów
Stwórz katalog locales/
i w nim pliki np.:
src/
├─ locales/
│ ├─ en.ts
│ └─ pl.ts
Przykład pl.ts
:
export default {
hello: 'Cześć świecie',
menu: {
home: 'Strona główna',
about: 'O nas',
},
}
Przykład en.ts
:
export default {
hello: 'Hello world',
menu: {
home: 'Home',
about: 'About us',
},
}
Krok 3: Inicjalizacja vue-i18n
Stwórz plik i18n.ts
w src/
:
import { createI18n } from 'vue-i18n'
import pl from './locales/pl'
import en from './locales/en'
export const i18n = createI18n({
legacy: false,
locale: 'pl',
fallbackLocale: 'en',
messages: {
pl,
en,
},
})
Krok 4: Integracja z aplikacją Vue
W pliku 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')
Krok 5: Użycie tłumaczeń w komponentach
Template
<template>
<p>{{ $t('hello') }}</p>
<p>{{ $t('menu.about') }}</p>
</template>
Script (TypeScript)
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
const { t, locale } = useI18n()
const current = locale.value
const label = t('menu.home')
</script>
Krok 6: Przełączanie języka w locie
<template>
<button @click="setLang('pl')">🇵🇱</button>
<button @click="setLang('en')">🇬🇧</button>
</template>
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
const { locale } = useI18n()
function setLang(lang: 'pl' | 'en') {
locale.value = lang
}
</script>
Krok 7: Typowanie kluczy tłumaczeń (opcjonalne)
Możesz dodać typowanie t('...')
z pomocą vue-i18n type-safe
Dla prostoty w tym poradniku pomijamy konfigurację vue-i18n.d.ts
, ale dla większych aplikacji warto się z tym zapoznać.
Podsumowanie
Vue I18n 9 w połączeniu z Vite i TypeScriptem to zestaw pozwalający na szybką i bezpieczną implementację tłumaczeń. Dzięki wsparciu dla Composition API
i dynamicznych języków możesz łatwo skalować aplikację na wiele rynków — bez nadmiaru boilerplate’u i chaosu w strukturze.
Jeśli chcesz rozszerzyć ten przykład o lazy-loading języków, integrację z localStorage
lub automatyczne wykrywanie języka przeglądarki — daj znać.