Files
cloudron-box/filemanager/src/main.js

78 lines
2.0 KiB
JavaScript
Raw Normal View History

2023-02-19 17:13:33 +01:00
import { createApp } from 'vue';
2023-06-16 18:18:16 +02:00
import { createI18n } from 'vue-i18n';
2023-02-19 17:13:33 +01:00
import './style.css';
import "@fontsource/noto-sans";
2023-02-19 17:13:33 +01:00
import 'primevue/resources/themes/saga-blue/theme.css';
import 'primevue/resources/primevue.min.css';
import 'primeicons/primeicons.css';
import PrimeVue from 'primevue/config';
2023-03-29 09:46:07 +02:00
import ConfirmationService from 'primevue/confirmationservice';
2023-06-16 18:18:16 +02:00
import superagent from 'superagent';
2023-02-19 17:13:33 +01:00
import { createRouter, createWebHashHistory } from 'vue-router';
import App from './App.vue';
import Home from './views/Home.vue';
2023-02-26 23:34:31 +01:00
import Viewer from './views/Viewer.vue';
2023-02-19 17:13:33 +01:00
const routes = [
2023-02-28 17:11:54 +01:00
{ path: '/', redirect: '/home' },
2023-04-11 16:29:58 +02:00
{ path: '/home/:type?/:resourceId?/:cwd*', component: Home },
2023-04-16 18:13:22 +02:00
{ path: '/viewer/:type/:resourceId/:filePath*', component: Viewer }
2023-02-19 17:13:33 +01:00
];
const router = createRouter({
// 4. Provide the history implementation to use. We are using the hash history for simplicity here.
history: createWebHashHistory(),
2023-02-26 15:00:16 +01:00
routes,
2023-02-19 17:13:33 +01:00
});
2023-06-16 18:18:16 +02:00
const translations = {};
const i18n = createI18n({
locale: 'en', // set locale
fallbackLocale: 'en', // set fallback locale
messages: translations
});
// https://vue-i18n.intlify.dev/guide/advanced/lazy.html
(async function loadLanguages() {
const API_ORIGIN = import.meta.env.VITE_API_ORIGIN ? 'https://' + import.meta.env.VITE_API_ORIGIN : '';
async function loadLanguage(lang) {
try {
const result = await superagent.get(`${API_ORIGIN}/translation/${lang}.json`);
// we do not deliver as application/json :/
translations[lang] = JSON.parse(result.text);
} catch (e) {
console.error(`Failed to load language file for ${lang}`, e);
}
}
await loadLanguage('en');
const locale = window.localStorage.NG_TRANSLATE_LANG_KEY;
if (locale && locale !== 'en') {
await loadLanguage(locale);
if (i18n.mode === 'legacy') {
i18n.global.locale = locale;
} else {
i18n.global.locale.value = locale;
}
}
})();
2023-02-19 17:13:33 +01:00
const app = createApp(App);
2023-06-16 18:18:16 +02:00
app.use(i18n);
2023-02-19 17:13:33 +01:00
app.use(router);
app.use(PrimeVue, { ripple: true });
2023-03-29 09:46:07 +02:00
app.use(ConfirmationService);
2023-02-19 17:13:33 +01:00
app.mount('#app');