
Vue i18n: Kumpletong Internationalization Setup gamit ang vue-i18n
Mula installation hanggang production: i-configure ang vue-i18n gamit ang Composition API, pangasiwaan ang plural gamit ang CLDR rule, gamitin ang component interpolation, at magdagdag ng smart locale fallback chain.
I-install ang vue-i18n
Ang vue-i18n ang opisyal na internationalization plugin para sa Vue.js. Nagbibigay ito ng reactive translation, ICU-style pluralization, component interpolation, datetime at number formatting, at suporta para sa Options API at Composition API.
npm install vue-i18n@9I-configure ang vue-i18n
Gumawa ng i18n instance gamit ang createI18n() at irehistro ito bilang Vue plugin. Idefine ang inyong mga locale message, itakda ang default na locale, at i-configure ang fallback locale. Sinusuportahan ng vue-i18n ang parehong legacy (Options API) at composition (Composition API) mode.
// 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')Gamitin ang Mga Pagsasalin sa Template
Nagbibigay ang vue-i18n ng $t() function sa template (Options API) at ng t() function mula sa useI18n() (Composition API). Pareho nitong tinatanggap ang translation key at mga opsyonal na named/list parameter para sa 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"
}
}Pangasiwaan ang Pluralization
Sinusuportahan ng vue-i18n ang pluralization sa pamamagitan ng mga anyong pinaghiwalay ng pipe at ng $tc() function (legacy) o t() na may count parameter (Composition API). Tukuyin ang mga plural form sa inyong locale message gamit ang pipe separator: '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>Magdagdag ng Locale Fallback Chain
Ang built-in na fallbackLocale ng vue-i18n ay sumusuporta lamang sa flat na listahan ng fallback locale, hindi sa per-locale chain. Ang pt-BR na user na may nawawalang key ay nagfa-fallback sa English imbes na pt-PT. Nagdaragdag ang vue-i18n-locale-chain ng mga nako-configure na deep-merge chain para laging makita ng mga regional user ang pinakamalapit na available na pagsasalin.
<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" -->I-automate ang Mga Pagsasalin
Kapag naka-configure na ang vue-i18n, isalin ang inyong locale JSON file gamit ang AI. Mula sa inyong IDE, hilingin sa inyong AI assistant na isalin ang source file, o i-integrate ang pagsasalin sa inyong CI/CD pipeline para sa ganap na automated localization.
<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 i18nConfiguration ng Locale Fallback Chain
I-configure ang per-locale fallback chain para makita ng mga regional user ang pinakamalapit na available na pagsasalin sa halip na dumiretso sa English. Sinusuportahan ng vue-i18n ang object-style fallbackLocale para magtakda ng chain kada 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': { /* ... */ },
},
})Mga Karaniwang Pagkakamali
Paghahalo ng Legacy at Composition API Mode
Paggamit ng v-html para sa Mga Isinaling String
Nakakakita ang Mga Rehiyonal na User ng English imbes na Parent Locale
Subukan ang i18n Agent Ngayon
I-drop dito ang inyong translation file
JSON, YAML, PO, XML, CSV, Markdown, Properties
o i-click para mag-browse
Mga target language