// مدیریت زبان برنامه: تغییر locale + ذخیره در localStorage + ریدایرکت به مسیر زبانِ انتخاب‌شده.
// کلید localStorage با کوکی i18n (i18n_redirected) هماهنگ نگه داشته می‌شود.
export const LOCALE_STORAGE_KEY = 'locale'

export function useLanguage() {
  // @ts-ignore - auto-import از @nuxtjs/i18n
  const i18n = useI18n()

  // @ts-ignore
  const availableLocales = computed(() => unref(i18n.locales))
  // @ts-ignore
  const currentLocale = computed(() => unref(i18n.locale))

  // @ts-ignore
  const changeLanguage = async (code: string) => {
    if (import.meta.client) {
      try {
        localStorage.setItem(LOCALE_STORAGE_KEY, code)
      } catch (e) {
        // اگر localStorage در دسترس نبود، نادیده بگیر
      }
    }
    // setLocale هم locale را عوض می‌کند، هم کوکی را ست و هم به مسیر دارای prefix زبان ریدایرکت می‌کند
    // @ts-ignore
    await i18n.setLocale(code)
  }


  return { availableLocales, currentLocale, changeLanguage }
}
