'use client';

/**
 * EN: i18n Context for managing locale state
 * VI: Context i18n để quản lý trạng thái locale
 */

import * as React from 'react';
import { type Locale, defaultLocale, isValidLocale } from './i18n-config';

/**
 * EN: i18n Context interface
 * VI: Interface cho i18n Context
 */
interface I18nContextType {
  /**
   * EN: Current locale / VI: Locale hiện tại
   */
  locale: Locale;
  /**
   * EN: Set locale function / VI: Hàm đặt locale
   */
  setLocale: (locale: Locale) => void;
  /**
   * EN: Get locale function / VI: Hàm lấy locale
   */
  getLocale: () => Locale;
}

/**
 * EN: i18n Context
 * VI: Context i18n
 */
export const I18nContext = React.createContext<I18nContextType | undefined>(undefined);



/**
 * EN: Hook to use i18n context
 * VI: Hook để sử dụng i18n context
 */
export function useI18n() {
  const context = React.useContext(I18nContext);
  if (context === undefined) {
    throw new Error('useI18n must be used within I18nProvider');
  }
  return context;
}
