
Vue i18n: pilnīga internacionalizācijas iestatīšana ar vue-i18n
No instalēšanas līdz produkcijai: konfigurējiet vue-i18n ar Composition API, apstrādājiet daudzskaitli pēc CLDR kārtulām, izmantojiet komponentu interpolāciju un pievienojiet viedas lokāļu atkāpšanās ķēdes.
Instalējiet vue-i18n
vue-i18n ir oficiālais Vue.js internacionalizācijas spraudnis. Tas nodrošina reaktīvus tulkojumus, ICU stila daudzskaitli, komponentu interpolāciju, datuma, laika un skaitļu formatēšanu un atbalsta gan Options API, gan Composition API.
npm install vue-i18n@9Konfigurējiet vue-i18n
Izveidojiet i18n instanci ar createI18n() un reģistrējiet to kā Vue spraudni. Definējiet lokāļu ziņojumus, iestatiet noklusējuma lokāli un konfigurējiet atkāpšanās lokāli. vue-i18n atbalsta gan mantoto (Options API), gan kompozīcijas (Composition API) režīmu.
// 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')Izmantojiet tulkojumus veidnēs
vue-i18n nodrošina funkciju $t() veidnēs (Options API) un funkciju t() no useI18n() (Composition API). Abas pieņem tulkojuma atslēgu un neobligātus nosauktus vai saraksta parametrus interpolācijai.
// 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"
}
}Apstrādājiet daudzskaitli
vue-i18n atbalsta daudzskaitli ar vertikālo svītru atdalītām formām un funkciju $tc() (mantotajā režīmā) vai t() ar skaita parametru (Composition API). Lokāles ziņojumos definējiet daudzskaitļa formas ar vertikālo svītru: '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>Pievienot lokalizāciju atkāpšanās ķēdes
vue-i18n iebūvētā fallbackLocale atbalsta tikai plakanu atkāpšanās lokāļu sarakstu, nevis katrai lokālei paredzētas ķēdes. Ja pt-BR lietotājam trūkst atslēgas, notiek atkāpšanās uz angļu, nevis pt-PT valodu. vue-i18n-locale-chain pievieno konfigurējamas dziļās sapludināšanas ķēdes, lai reģionu lietotāji vienmēr redzētu tuvāko pieejamo tulkojumu.
<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" -->Automatizēt tulkošanu
Kad vue-i18n ir konfigurēts, tulkojiet lokāļu JSON failus ar MI. IDE vidē lūdziet MI asistentam iztulkot avota failu vai integrējiet tulkošanu CI/CD konveijerā pilnībā automatizētai lokalizācijai.
<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 i18nLokāles atkāpšanās ķēdes konfigurācija
Konfigurējiet katrai lokālei paredzētas atkāpšanās ķēdes, lai reģionu lietotāji redzētu tuvāko pieejamo tulkojumu, nevis uzreiz pārietu uz angļu valodu. vue-i18n atbalsta objekta veida fallbackLocale, lai definētu ķēdes katrai lokālei.
// 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': { /* ... */ },
},
})Biežākās kļūdas
Mantotā un Composition API režīma jaukšana
v-html izmantošana tulkotām virknēm
Reģionālie lietotāji vecāklokalizācijas vietā redz angļu valodu
Izmēģiniet i18n Agent tūlīt
Nometiet tulkošanas failu šeit
JSON, YAML, PO, XML, CSV, Markdown, Properties
vai noklikšķiniet, lai izvēlētos
Mērķa valodas