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