A minimalist reactive translation plugin for Vue 3. Super lightweight (0.32KB gzipped), simple, and efficient internationalization solution.
🌐 Live Demo - Try it now !

- 🚀 Tiny: Minimal footprint, maximum performance
- ⚡ Reactive: Automatically updates components when translations change, no page reload!
- 🔧 Simple API: Super easy to use with intuitive methods
- 🌐 Dynamic Loading: Load translations asynchronously
- 📦 TypeScript Support: Full TypeScript definitions included
npm install vue-tiny-translationimport { createApp } from 'vue'
import TinyTranslation from 'vue-tiny-translation'
import App from './App.vue'
const app = createApp(App)
app.use(TinyTranslation)
app.mount('#app')<template>
<div>
<h1>{{ $t('hello') }}</h1>
<p>{{ $t('goodbye') }}</p>
<button @click="changeLanguage">Change Language</button>
</div>
</template>
<script>
import { loadTranslations } from 'vue-tiny-translation'
export default {
async mounted() {
// Auto-load based on browser language
const lang = navigator.language.split('-')[0]
await loadTranslations(`/translations/${lang}.json`)
},
methods: {
async changeLanguage() {
await loadTranslations('/translations/fr.json')
}
}
}
</script>// Load from anywhere
await loadTranslations('/translations/en.json') // Local files
await loadTranslations('/api/translations/en') // API endpointspublic/translations/
en.json
fr.json
de.json
{
"hello": "Hello",
"goodbye": "Goodbye"
}$t(key, fallback?)- Translate in templatestranslate(key, fallback?)- Translate in JavaScriptloadTranslations(path)- Load translations from any source
🌐 Live Demo - Try it now !
Local Testing: Clone and run the example locally:
cd example
npm install
npm run devOpen http://localhost:5173 and see the plugin working with automatic language detection!
MIT © Makio64