
Vue i18n: vue-i18n के साथ संपूर्ण अंतरराष्ट्रीयकरण सेटअप
इंस्टॉलेशन से प्रोडक्शन तक: Composition API के साथ vue-i18n कॉन्फ़िगर करें, CLDR नियमों से बहुवचन सँभालें, component interpolation का उपयोग करें और बेहतर locale fallback chains जोड़ें।
vue-i18n इंस्टॉल करें
vue-i18n, Vue.js के लिए आधिकारिक अंतरराष्ट्रीयकरण प्लगइन है। यह रिएक्टिव अनुवाद, ICU-शैली के बहुवचन, component interpolation, तारीख-समय और संख्याओं की फ़ॉर्मैटिंग तथा Options API और Composition API, दोनों के लिए सहायता देता है।
npm install vue-i18n@9vue-i18n कॉन्फ़िगर करें
createI18n() से एक i18n इंस्टेंस बनाएँ और उसे Vue प्लगइन के रूप में रजिस्टर करें। अपने locale messages परिभाषित करें, डिफ़ॉल्ट locale सेट करें और fallback locale कॉन्फ़िगर करें। vue-i18n, legacy (Options API) और composition (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')Templates में अनुवादों का उपयोग करें
vue-i18n, templates में $t() फ़ंक्शन (Options API) और useI18n() से मिलने वाला t() फ़ंक्शन (Composition API) उपलब्ध कराता है। दोनों interpolation के लिए translation key और वैकल्पिक named/list parameters स्वीकार करते हैं।
// 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"
}
}बहुवचन सँभालें
vue-i18n, pipe से अलग किए गए रूपों और $tc() फ़ंक्शन (legacy) या count parameter वाले t() (Composition API) के माध्यम से बहुवचन का समर्थन करता है। pipe separator का उपयोग करके अपने locale messages में बहुवचन के रूप परिभाषित करें: '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 Chains जोड़ें
vue-i18n में अंतर्निहित fallbackLocale हर locale के लिए अलग-अलग chains के बजाय केवल fallback locales की एक सपाट सूची का समर्थन करता है। किसी key के न मिलने पर pt-BR यूज़र को pt-PT के बजाय अंग्रेज़ी दिखाई देती है। vue-i18n-locale-chain कॉन्फ़िगर करने योग्य deep-merge chains जोड़ता है, ताकि क्षेत्रीय यूज़र को हमेशा उपलब्ध अनुवादों में से सबसे करीबी अनुवाद दिखाई दे।
<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" -->अनुवादों को ऑटोमेट करें
vue-i18n कॉन्फ़िगर हो जाने के बाद AI का उपयोग करके अपनी लोकेल JSON फ़ाइलों का अनुवाद करें। अपने IDE में AI सहायक से स्रोत फ़ाइल का अनुवाद कराएँ या पूरी तरह स्वचालित स्थानीयकरण के लिए अनुवाद को अपनी CI/CD पाइपलाइन में एकीकृत करें।
<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 i18nLocale Fallback Chain कॉन्फ़िगरेशन
हर locale के लिए अलग fallback chains कॉन्फ़िगर करें, ताकि क्षेत्रीय यूज़र को सीधे अंग्रेज़ी पर जाने के बजाय उपलब्ध अनुवादों में से सबसे करीबी अनुवाद दिखाई दे। vue-i18n हर locale के लिए chains परिभाषित करने हेतु object-style fallbackLocale का समर्थन करता है।
// 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': { /* ... */ },
},
})आम समस्याएँ
Legacy और Composition API Modes को मिलाना
अनूदित Strings के लिए v-html का उपयोग करना
क्षेत्रीय यूज़र को Parent Locale के बजाय अंग्रेज़ी दिखाई देना
i18n Agent अभी आज़माएँ
अपनी अनुवाद फ़ाइल यहाँ छोड़ें
JSON, YAML, PO, XML, CSV, Markdown, Properties
या ब्राउज़ करने के लिए क्लिक करें
लक्षित भाषाएँ