Localization
VueFinder supports multiple languages and provides easy ways to customize translations. This guide covers how to implement and customize localization.
Built-in Languages
VueFinder comes with 17 built-in language packs:
- English (en) - Default language
- Turkish (tr) - Türkçe
- Russian (ru) - Русский
- German (de) - Deutsch
- Spanish (es) - Español
- French (fr) - Français
- Italian (it) - Italiano
- Japanese (ja) - 日本語
- Dutch (nl) - Nederlands
- Polish (pl) - Polski
- Portuguese (pt) - Português
- Swedish (sv) - Svenska
- Arabic (ar) - العربية
- Persian (fa) - فارسی
- Hebrew (he) - עברית
- Hindi (hi) - हिन्दी
- Chinese Simplified (zhCN) - 简体中文
- Chinese Traditional (zhTW) - 繁體中文
Basic Setup
Using Default Language
By default, VueFinder uses English. No additional setup is required:
vue
<template>
<vue-finder id="my_manager" :driver="driver" locale="en" />
</template>Adding Multiple Languages
Import and register multiple language packs:
js
import { createApp } from 'vue';
import App from './App.vue';
import 'vuefinder/dist/style.css';
import VueFinder from 'vuefinder';
// Import language packs
import en from 'vuefinder/dist/locales/en.js';
import tr from 'vuefinder/dist/locales/tr.js';
import ru from 'vuefinder/dist/locales/ru.js';
import de from 'vuefinder/dist/locales/de.js';
const app = createApp(App);
app.use(VueFinder, {
i18n: { en, tr, ru, de },
});
app.mount('#app');Async Language Loading
For better performance, load languages asynchronously:
js
import { createApp } from 'vue';
import App from './App.vue';
import 'vuefinder/dist/style.css';
import VueFinder from 'vuefinder';
const app = createApp(App);
app.use(VueFinder, {
i18n: {
en: async () => await import('vuefinder/dist/locales/en.js'),
tr: async () => await import('vuefinder/dist/locales/tr.js'),
ru: async () => await import('vuefinder/dist/locales/ru.js'),
de: async () => await import('vuefinder/dist/locales/de.js'),
fr: async () => await import('vuefinder/dist/locales/fr.js'),
es: async () => await import('vuefinder/dist/locales/es.js'),
it: async () => await import('vuefinder/dist/locales/it.js'),
pt: async () => await import('vuefinder/dist/locales/pt.js'),
ja: async () => await import('vuefinder/dist/locales/ja.js'),
nl: async () => await import('vuefinder/dist/locales/nl.js'),
pl: async () => await import('vuefinder/dist/locales/pl.js'),
sv: async () => await import('vuefinder/dist/locales/sv.js'),
ar: async () => await import('vuefinder/dist/locales/ar.js'),
fa: async () => await import('vuefinder/dist/locales/fa.js'),
he: async () => await import('vuefinder/dist/locales/he.js'),
hi: async () => await import('vuefinder/dist/locales/hi.js'),
zhCN: async () => await import('vuefinder/dist/locales/zhCN.js'),
zhTW: async () => await import('vuefinder/dist/locales/zhTW.js'),
},
});
app.mount('#app');Dynamic Language Switching
Language Selector Component
Create a language selector to switch between languages:
vue
<template>
<div class="multilang-file-manager">
<div class="language-selector">
<label for="language-select">Language:</label>
<select id="language-select" v-model="selectedLocale" @change="updateLanguage">
<option value="en">English</option>
<option value="tr">Türkçe</option>
<option value="ru">Русский</option>
<option value="de">Deutsch</option>
<option value="es">Español</option>
<option value="fr">Français</option>
<option value="it">Italiano</option>
<option value="ja">日本語</option>
</select>
</div>
<vue-finder id="multilang_manager" :driver="driver" :locale="selectedLocale" />
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
const selectedLocale = ref('en');
// Load saved language preference
onMounted(() => {
const savedLocale = localStorage.getItem('vuefinder-locale');
if (savedLocale) {
selectedLocale.value = savedLocale;
}
});
const updateLanguage = () => {
// Save language preference
localStorage.setItem('vuefinder-locale', selectedLocale.value);
console.log('Language changed to:', selectedLocale.value);
};
</script>Custom Translations
Creating Custom Language Pack
You can create custom translations by extending or overriding the default language packs:
js
// custom-locales/custom-en.js
export default {
// Override specific translations
'file.upload': 'Upload Files',
'file.download': 'Download File',
'file.rename': 'Rename File',
'file.delete': 'Delete File',
// Add custom translations
'custom.welcome': 'Welcome to File Manager',
// Toolbar translations
'toolbar.upload': 'Upload',
'toolbar.download': 'Download',
// ... more translations
};Using Custom Translations
js
import { createApp } from 'vue';
import App from './App.vue';
import 'vuefinder/dist/style.css';
import VueFinder from 'vuefinder';
// Import default and custom translations
import en from 'vuefinder/dist/locales/en.js';
import customEn from './custom-locales/custom-en.js';
const app = createApp(App);
app.use(VueFinder, {
i18n: {
en: { ...en, ...customEn }, // Merge custom translations
},
});
app.mount('#app');Best Practices
- Use async loading for better performance when supporting many languages
- Store user preference in localStorage for persistence
- Provide fallbacks for missing translations
- Test RTL languages (Arabic, Hebrew) if you plan to support them
For more information on available languages and how to contribute translations, visit the GitHub repository.