diff --git a/custom/datepickerLocales.ts b/custom/datepickerLocales.ts new file mode 100644 index 0000000..02c6515 --- /dev/null +++ b/custom/datepickerLocales.ts @@ -0,0 +1,81 @@ +export default { + "ar": import('/node_modules/flowbite-datepicker/js/i18n/locales/ar.js'), + "ar-tn": import('/node_modules/flowbite-datepicker/js/i18n/locales/ar-tn.js'), + "az": import('/node_modules/flowbite-datepicker/js/i18n/locales/az.js'), + "bg": import('/node_modules/flowbite-datepicker/js/i18n/locales/bg.js'), + "bm": import('/node_modules/flowbite-datepicker/js/i18n/locales/bm.js'), + "bn": import('/node_modules/flowbite-datepicker/js/i18n/locales/bn.js'), + "br": import('/node_modules/flowbite-datepicker/js/i18n/locales/br.js'), + "bs": import('/node_modules/flowbite-datepicker/js/i18n/locales/bs.js'), + "ca": import('/node_modules/flowbite-datepicker/js/i18n/locales/ca.js'), + "cs": import('/node_modules/flowbite-datepicker/js/i18n/locales/cs.js'), + "cy": import('/node_modules/flowbite-datepicker/js/i18n/locales/cy.js'), + "da": import('/node_modules/flowbite-datepicker/js/i18n/locales/da.js'), + "de": import('/node_modules/flowbite-datepicker/js/i18n/locales/de.js'), + "el": import('/node_modules/flowbite-datepicker/js/i18n/locales/el.js'), + "en-AU": import('/node_modules/flowbite-datepicker/js/i18n/locales/en-AU.js'), + "en-CA": import('/node_modules/flowbite-datepicker/js/i18n/locales/en-CA.js'), + "en-GB": import('/node_modules/flowbite-datepicker/js/i18n/locales/en-GB.js'), + "en-IE": import('/node_modules/flowbite-datepicker/js/i18n/locales/en-IE.js'), + "en-NZ": import('/node_modules/flowbite-datepicker/js/i18n/locales/en-NZ.js'), + "en-ZA": import('/node_modules/flowbite-datepicker/js/i18n/locales/en-ZA.js'), + "eo": import('/node_modules/flowbite-datepicker/js/i18n/locales/eo.js'), + "es": import('/node_modules/flowbite-datepicker/js/i18n/locales/es.js'), + "et": import('/node_modules/flowbite-datepicker/js/i18n/locales/et.js'), + "eu": import('/node_modules/flowbite-datepicker/js/i18n/locales/eu.js'), + "fa": import('/node_modules/flowbite-datepicker/js/i18n/locales/fa.js'), + "fi": import('/node_modules/flowbite-datepicker/js/i18n/locales/fi.js'), + "fo": import('/node_modules/flowbite-datepicker/js/i18n/locales/fo.js'), + "fr-CH": import('/node_modules/flowbite-datepicker/js/i18n/locales/fr-CH.js'), + "fr": import('/node_modules/flowbite-datepicker/js/i18n/locales/fr.js'), + "gl": import('/node_modules/flowbite-datepicker/js/i18n/locales/gl.js'), + "he": import('/node_modules/flowbite-datepicker/js/i18n/locales/he.js'), + "hi": import('/node_modules/flowbite-datepicker/js/i18n/locales/hi.js'), + "hr": import('/node_modules/flowbite-datepicker/js/i18n/locales/hr.js'), + "hu": import('/node_modules/flowbite-datepicker/js/i18n/locales/hu.js'), + "hy": import('/node_modules/flowbite-datepicker/js/i18n/locales/hy.js'), + "id": import('/node_modules/flowbite-datepicker/js/i18n/locales/id.js'), + "is": import('/node_modules/flowbite-datepicker/js/i18n/locales/is.js'), + "it-CH": import('/node_modules/flowbite-datepicker/js/i18n/locales/it-CH.js'), + "it": import('/node_modules/flowbite-datepicker/js/i18n/locales/it.js'), + "ja": import('/node_modules/flowbite-datepicker/js/i18n/locales/ja.js'), + "ka": import('/node_modules/flowbite-datepicker/js/i18n/locales/ka.js'), + "kk": import('/node_modules/flowbite-datepicker/js/i18n/locales/kk.js'), + "km": import('/node_modules/flowbite-datepicker/js/i18n/locales/km.js'), + "ko": import('/node_modules/flowbite-datepicker/js/i18n/locales/ko.js'), + "lt": import('/node_modules/flowbite-datepicker/js/i18n/locales/lt.js'), + "lv": import('/node_modules/flowbite-datepicker/js/i18n/locales/lv.js'), + "me": import('/node_modules/flowbite-datepicker/js/i18n/locales/me.js'), + "mk": import('/node_modules/flowbite-datepicker/js/i18n/locales/mk.js'), + "mn": import('/node_modules/flowbite-datepicker/js/i18n/locales/mn.js'), + "mr": import('/node_modules/flowbite-datepicker/js/i18n/locales/mr.js'), + "ms": import('/node_modules/flowbite-datepicker/js/i18n/locales/ms.js'), + "nl-BE": import('/node_modules/flowbite-datepicker/js/i18n/locales/nl-BE.js'), + "nl": import('/node_modules/flowbite-datepicker/js/i18n/locales/nl.js'), + "no": import('/node_modules/flowbite-datepicker/js/i18n/locales/no.js'), + "oc": import('/node_modules/flowbite-datepicker/js/i18n/locales/oc.js'), + "pl": import('/node_modules/flowbite-datepicker/js/i18n/locales/pl.js'), + "pt-BR": import('/node_modules/flowbite-datepicker/js/i18n/locales/pt-BR.js'), + "pt": import('/node_modules/flowbite-datepicker/js/i18n/locales/pt.js'), + "ro": import('/node_modules/flowbite-datepicker/js/i18n/locales/ro.js'), + "ru": import('/node_modules/flowbite-datepicker/js/i18n/locales/ru.js'), + "si": import('/node_modules/flowbite-datepicker/js/i18n/locales/si.js'), + "sk": import('/node_modules/flowbite-datepicker/js/i18n/locales/sk.js'), + "sl": import('/node_modules/flowbite-datepicker/js/i18n/locales/sl.js'), + "sq": import('/node_modules/flowbite-datepicker/js/i18n/locales/sq.js'), + "sr": import('/node_modules/flowbite-datepicker/js/i18n/locales/sr.js'), + "sr-latn": import('/node_modules/flowbite-datepicker/js/i18n/locales/sr-latn.js'), + "sv": import('/node_modules/flowbite-datepicker/js/i18n/locales/sv.js'), + "sw": import('/node_modules/flowbite-datepicker/js/i18n/locales/sw.js'), + "ta": import('/node_modules/flowbite-datepicker/js/i18n/locales/ta.js'), + "tg": import('/node_modules/flowbite-datepicker/js/i18n/locales/tg.js'), + "th": import('/node_modules/flowbite-datepicker/js/i18n/locales/th.js'), + "tk": import('/node_modules/flowbite-datepicker/js/i18n/locales/tk.js'), + "tr": import('/node_modules/flowbite-datepicker/js/i18n/locales/tr.js'), + "uk": import('/node_modules/flowbite-datepicker/js/i18n/locales/uk.js'), + "uz-cyrl": import('/node_modules/flowbite-datepicker/js/i18n/locales/uz-cyrl.js'), + "uz-latn": import('/node_modules/flowbite-datepicker/js/i18n/locales/uz-latn.js'), + "vi": import('/node_modules/flowbite-datepicker/js/i18n/locales/vi.js'), + "zh-CN": import('/node_modules/flowbite-datepicker/js/i18n/locales/zh-CN.js'), + "zh-TW": import('/node_modules/flowbite-datepicker/js/i18n/locales/zh-TW.js'), +}; \ No newline at end of file diff --git a/custom/dayjsLocales.ts b/custom/dayjsLocales.ts new file mode 100644 index 0000000..fef9d19 --- /dev/null +++ b/custom/dayjsLocales.ts @@ -0,0 +1,145 @@ +export default { + "af": import('dayjs/locale/af'), + "am": import('dayjs/locale/am'), + "ar-dz": import('dayjs/locale/ar-dz'), + "ar-iq": import('dayjs/locale/ar-iq'), + "ar-kw": import('dayjs/locale/ar-kw'), + "ar-ly": import('dayjs/locale/ar-ly'), + "ar-ma": import('dayjs/locale/ar-ma'), + "ar-sa": import('dayjs/locale/ar-sa'), + "ar-tn": import('dayjs/locale/ar-tn'), + "ar": import('dayjs/locale/ar'), + "az": import('dayjs/locale/az'), + "be": import('dayjs/locale/be'), + "bg": import('dayjs/locale/bg'), + "bi": import('dayjs/locale/bi'), + "bm": import('dayjs/locale/bm'), + "bn-bd": import('dayjs/locale/bn-bd'), + "bn": import('dayjs/locale/bn'), + "bo": import('dayjs/locale/bo'), + "br": import('dayjs/locale/br'), + "bs": import('dayjs/locale/bs'), + "ca": import('dayjs/locale/ca'), + "cs": import('dayjs/locale/cs'), + "cv": import('dayjs/locale/cv'), + "cy": import('dayjs/locale/cy'), + "da": import('dayjs/locale/da'), + "de-at": import('dayjs/locale/de-at'), + "de-ch": import('dayjs/locale/de-ch'), + "de": import('dayjs/locale/de'), + "dv": import('dayjs/locale/dv'), + "el": import('dayjs/locale/el'), + "en-au": import('dayjs/locale/en-au'), + "en-ca": import('dayjs/locale/en-ca'), + "en-gb": import('dayjs/locale/en-gb'), + "en-ie": import('dayjs/locale/en-ie'), + "en-il": import('dayjs/locale/en-il'), + "en-in": import('dayjs/locale/en-in'), + "en-nz": import('dayjs/locale/en-nz'), + "en-sg": import('dayjs/locale/en-sg'), + "en-tt": import('dayjs/locale/en-tt'), + "en": import('dayjs/locale/en'), + "eo": import('dayjs/locale/eo'), + "es-do": import('dayjs/locale/es-do'), + "es-mx": import('dayjs/locale/es-mx'), + "es-pr": import('dayjs/locale/es-pr'), + "es-us": import('dayjs/locale/es-us'), + "es": import('dayjs/locale/es'), + "et": import('dayjs/locale/et'), + "eu": import('dayjs/locale/eu'), + "fa": import('dayjs/locale/fa'), + "fi": import('dayjs/locale/fi'), + "fo": import('dayjs/locale/fo'), + "fr-ca": import('dayjs/locale/fr-ca'), + "fr-ch": import('dayjs/locale/fr-ch'), + "fr": import('dayjs/locale/fr'), + "fy": import('dayjs/locale/fy'), + "ga": import('dayjs/locale/ga'), + "gd": import('dayjs/locale/gd'), + "gl": import('dayjs/locale/gl'), + "gom-latn": import('dayjs/locale/gom-latn'), + "gu": import('dayjs/locale/gu'), + "he": import('dayjs/locale/he'), + "hi": import('dayjs/locale/hi'), + "hr": import('dayjs/locale/hr'), + "ht": import('dayjs/locale/ht'), + "hu": import('dayjs/locale/hu'), + "hy-am": import('dayjs/locale/hy-am'), + "id": import('dayjs/locale/id'), + "is": import('dayjs/locale/is'), + "it-ch": import('dayjs/locale/it-ch'), + "it": import('dayjs/locale/it'), + "ja": import('dayjs/locale/ja'), + "jv": import('dayjs/locale/jv'), + "ka": import('dayjs/locale/ka'), + "kk": import('dayjs/locale/kk'), + "km": import('dayjs/locale/km'), + "kn": import('dayjs/locale/kn'), + "ko": import('dayjs/locale/ko'), + "ku": import('dayjs/locale/ku'), + "ky": import('dayjs/locale/ky'), + "lb": import('dayjs/locale/lb'), + "lo": import('dayjs/locale/lo'), + "lt": import('dayjs/locale/lt'), + "lv": import('dayjs/locale/lv'), + "me": import('dayjs/locale/me'), + "mi": import('dayjs/locale/mi'), + "mk": import('dayjs/locale/mk'), + "ml": import('dayjs/locale/ml'), + "mn": import('dayjs/locale/mn'), + "mr": import('dayjs/locale/mr'), + "ms-my": import('dayjs/locale/ms-my'), + "ms": import('dayjs/locale/ms'), + "mt": import('dayjs/locale/mt'), + "my": import('dayjs/locale/my'), + "nb": import('dayjs/locale/nb'), + "ne": import('dayjs/locale/ne'), + "nl-be": import('dayjs/locale/nl-be'), + "nl": import('dayjs/locale/nl'), + "nn": import('dayjs/locale/nn'), + "oc-lnc": import('dayjs/locale/oc-lnc'), + "pa-in": import('dayjs/locale/pa-in'), + "pl": import('dayjs/locale/pl'), + "pt-br": import('dayjs/locale/pt-br'), + "pt": import('dayjs/locale/pt'), + "rn": import('dayjs/locale/rn'), + "ro": import('dayjs/locale/ro'), + "ru": import('dayjs/locale/ru'), + "rw": import('dayjs/locale/rw'), + "sd": import('dayjs/locale/sd'), + "se": import('dayjs/locale/se'), + "si": import('dayjs/locale/si'), + "sk": import('dayjs/locale/sk'), + "sl": import('dayjs/locale/sl'), + "sq": import('dayjs/locale/sq'), + "sr-cyrl": import('dayjs/locale/sr-cyrl'), + "sr": import('dayjs/locale/sr'), + "ss": import('dayjs/locale/ss'), + "sv-fi": import('dayjs/locale/sv-fi'), + "sv": import('dayjs/locale/sv'), + "sw": import('dayjs/locale/sw'), + "ta": import('dayjs/locale/ta'), + "te": import('dayjs/locale/te'), + "tet": import('dayjs/locale/tet'), + "tg": import('dayjs/locale/tg'), + "th": import('dayjs/locale/th'), + "tk": import('dayjs/locale/tk'), + "tl-ph": import('dayjs/locale/tl-ph'), + "tlh": import('dayjs/locale/tlh'), + "tr": import('dayjs/locale/tr'), + "tzl": import('dayjs/locale/tzl'), + "tzm-latn": import('dayjs/locale/tzm-latn'), + "tzm": import('dayjs/locale/tzm'), + "ug-cn": import('dayjs/locale/ug-cn'), + "uk": import('dayjs/locale/uk'), + "ur": import('dayjs/locale/ur'), + "uz-latn": import('dayjs/locale/uz-latn'), + "uz": import('dayjs/locale/uz'), + "vi": import('dayjs/locale/vi'), + "x-pseudo": import('dayjs/locale/x-pseudo'), + "yo": import('dayjs/locale/yo'), + "zh-cn": import('dayjs/locale/zh-cn'), + "zh-hk": import('dayjs/locale/zh-hk'), + "zh-tw": import('dayjs/locale/zh-tw'), + "zh": import('dayjs/locale/zh'), +}; \ No newline at end of file diff --git a/custom/langCommon.ts b/custom/langCommon.ts index 7f75700..c69dbfa 100644 --- a/custom/langCommon.ts +++ b/custom/langCommon.ts @@ -1,5 +1,9 @@ import { callAdminForthApi } from '@/utils'; +import dayjsLocales from './dayjsLocales'; +import datepickerLocales from './datepickerLocales'; +import dayjs from 'dayjs'; +import Datepicker from "flowbite-datepicker/Datepicker"; const messagesCache: Record< @@ -33,6 +37,22 @@ export async function setLang({ setLocaleMessage, locale }: any, pluginInstanceI messages: messages }; } + + // set dayjs locale + try { + await dayjsLocales[langIso]; + dayjs.locale(langIso); + } catch { + dayjs.locale('en'); + } + + // set datepicker locale + if (datepickerLocales[langIso]) { + Datepicker.locales[langIso] = (await datepickerLocales[langIso]).default[langIso]; + } else if (Object.keys(datepickerLocales).some((l) => l.startsWith(`${langIso}-`)) && langIso !== 'en') { + const lang = Object.keys(datepickerLocales).find((l) => l.startsWith(`${langIso}-`)); + Datepicker.locales[langIso] = (await datepickerLocales[lang]).default[lang]; + } // set locale and locale message setLocaleMessage(langIso, messagesCache[langIso].messages);