Fixes: None; Extra: 1) Create Pinia stores for app, user, category, and company management; 2) Add utility functions for error handling and category slug lookups; 3) Include German locale file and robots.txt for improved SEO and accessibility; 4) Add SVG assets and improve general folder structure for better maintainability.
41 lines
1,010 B
TypeScript
41 lines
1,010 B
TypeScript
import type {ILanguage} from "~/types";
|
|
import {useAppConfig} from "~/composables/config";
|
|
import {DEFAULT_LOCALE} from "~/config/constants";
|
|
|
|
export const useLanguageStore = defineStore('language', () => {
|
|
const { COOKIES_LOCALE_KEY } = useAppConfig();
|
|
|
|
const cookieLocale = useCookie(
|
|
COOKIES_LOCALE_KEY,
|
|
{
|
|
default: () => DEFAULT_LOCALE,
|
|
path: '/'
|
|
}
|
|
);
|
|
|
|
const localeFromCookies = computed(() => cookieLocale.value);
|
|
|
|
const languages = ref<ILanguage[] | null>(null);
|
|
const setLanguages = (payload: ILanguage[]) => {
|
|
languages.value = payload
|
|
};
|
|
|
|
const currentLocale = ref<ILanguage | null>(null);
|
|
const setCurrentLocale = (payload: ILanguage | null) => {
|
|
currentLocale.value = payload
|
|
};
|
|
|
|
watch(
|
|
() => localeFromCookies.value,
|
|
() => {
|
|
setCurrentLocale(languages.value?.find(l => l.code === localeFromCookies.value) as ILanguage)
|
|
}
|
|
)
|
|
|
|
return {
|
|
languages,
|
|
setLanguages,
|
|
currentLocale,
|
|
setCurrentLocale
|
|
}
|
|
})
|