Arno Kaimbacher
b06ccae603
Some checks failed
CI Pipeline / japa-tests (push) Failing after 1m2s
- mail_settings_controller for setting smtp settings - added view ror rjecting dataset for editor - added new model AppConfig for stroing appwide config values - better validate_chesum.ts command with process chunking - added vue3 apps 'BasicSettings' like email, profile settings - started with 2 multilingual capabilities - npm updates
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
// src/stores/locale.ts
|
|
import { defineStore } from 'pinia';
|
|
import dayjs from '@/utils/dayjs';
|
|
import { getBrowserLocale } from '@/utils/tethyscloud-l10n';
|
|
|
|
export const LocaleStore = defineStore('locale', {
|
|
|
|
state: () => ({
|
|
locale: 'en',
|
|
}),
|
|
|
|
actions: {
|
|
setLocale(locale: string) {
|
|
if (typeof localStorage !== 'undefined') {
|
|
localStorage.setItem('app-locale', locale);
|
|
}
|
|
this.locale = locale;
|
|
dayjs.locale(locale); // Update dayjs locale
|
|
},
|
|
|
|
initializeLocale() {
|
|
let locale = 'en';
|
|
|
|
// Check if localStorage is available and has a saved locale
|
|
if (typeof localStorage !== 'undefined') {
|
|
const savedLocale = localStorage.getItem('app-locale');
|
|
if (savedLocale) {
|
|
locale = savedLocale;
|
|
} else {
|
|
// Get locale from the browser if not saved in localStorage
|
|
locale = getBrowserLocale({ languageCodeOnly: true });
|
|
}
|
|
} else {
|
|
// Fallback to the browser locale if localStorage is not available
|
|
locale = getBrowserLocale({ languageCodeOnly: true });
|
|
}
|
|
|
|
this.setLocale(locale);
|
|
},
|
|
},
|
|
});
|