frontend/hooks/useLocale.ts (view raw)
1import {Enum_Userspermissionsuser_Lang as SupportedLocales} from '../generated/graphql';
2import {useRouter} from 'next/router';
3import moment from 'moment';
4import {setCookie} from '../lib/cookies';
5
6const useLocale = (): {
7 locale: SupportedLocales;
8 changeLocale: (locale: SupportedLocales) => void;
9} => {
10 const {pathname, query, asPath, push, locale} = useRouter();
11
12 const changeLocale = (newLocale: SupportedLocales) => {
13 moment.locale(newLocale);
14 setCookie('NEXT_LOCALE', newLocale);
15 push({pathname, query}, asPath, {locale: newLocale});
16 };
17
18 if (SupportedLocales[locale]) {
19 return {locale: SupportedLocales[locale], changeLocale};
20 }
21
22 const defaultLocale = SupportedLocales['en'];
23 changeLocale(defaultLocale);
24 return {locale: defaultLocale, changeLocale};
25};
26
27export default useLocale;