import { locales as utilsLocales } from '@pisell/utils';
import { getCurrentLocale } from "../../../utils/locale";

/**
 * 标准化 locale 代码
 * @param locale 原始 locale 代码
 * @returns 标准化后的 locale 代码（小写，用于 dayjs）
 * @example 'zh-CN' -> 'zh-cn', 'en' -> 'en'
 */
export function normalizeLocale(locale) {
  return locale.toLowerCase();
}

/**
 * 判断是否为中文环境
 * @param locale locale 代码
 * @returns 是否为中文
 * @example isChinese('zh-CN') -> true, isChinese('zh-HK') -> true, isChinese('en') -> false
 */
export function isChinese(locale) {
  var normalizedLocale = normalizeLocale(locale);
  return normalizedLocale.startsWith('zh');
}

/** dayjs 常用 locale 与项目已加载的 locale 对齐（zh-cn、en），en-us 等统一用 en */
function toDayjsLoadedLocale(normalized) {
  if (normalized.startsWith('en')) return 'en';
  return normalized;
}

/**
 * 获取 dayjs 兼容的 locale 代码
 * 未传 locale 时：优先 materials 当前语言（globalConfig / umi_locale），若为默认 en-US 则用 @pisell/utils getLocale
 * @param locale 原始 locale 代码（可选）
 * @returns dayjs 兼容的 locale 代码（与已加载的 zh-cn、en 对齐）
 * @example 'zh-CN' -> 'zh-cn', 'en-US' -> 'en'
 */
export function getDayjsLocale(locale) {
  if (!locale) {
    var fromMaterials = getCurrentLocale();
    var fromUtils = typeof utilsLocales.getLocale === 'function' ? utilsLocales.getLocale() : undefined;
    // 优先 materials（umi_locale / ConfigProvider），仅当为默认 en-US 时再用 utils，保证多语言能展示
    var raw = (fromMaterials && fromMaterials !== 'en-US' ? fromMaterials : undefined) || (typeof fromUtils === 'string' && fromUtils ? fromUtils : undefined) || fromMaterials;
    return toDayjsLoadedLocale(normalizeLocale(raw));
  }
  return toDayjsLoadedLocale(normalizeLocale(locale));
}