export const useI18nUtils = () => {
  const { t, locale, locales } = useI18n()
  
  // 获取所有可用语言
  const getAvailableLocales = () => {
    return locales.value || []
  }
  
  // 获取当前语言信息
  const getCurrentLocaleInfo = () => {
    const current = locales.value?.find(loc => loc.code === locale.value)
    return current || { code: 'en', name: 'English' }
  }
  
  // 检查是否为当前语言
  const isCurrentLocale = (code) => {
    return locale.value === code
  }
  
  // 获取语言切换后的路径
  const getLocalePath = (targetLocale, currentPath) => {
    if (!targetLocale) {
      return currentPath
    }
    
    let newPath = currentPath
    
    if (targetLocale === 'cn') {
      // 切换到中文，需要添加 /cn 前缀
      if (!currentPath.startsWith('/cn')) {
        newPath = `/cn${currentPath === '/' ? '' : currentPath}`
      }
    } else if (targetLocale === 'en') {
      // 切换到英文，需要移除 /cn 前缀
      if (currentPath.startsWith('/cn')) {
        newPath = currentPath.replace('/cn', '') || '/'
      }
    }
    
    return newPath
  }
  
  // 格式化数字（根据语言显示不同格式）
  const formatNumber = (number, options = {}) => {
    const localeCode = locale.value === 'cn' ? 'zh-CN' : 'en-US'
    return new Intl.NumberFormat(localeCode, options).format(number)
  }
  
  // 格式化日期（根据语言显示不同格式）
  const formatDate = (date, options = {}) => {
    const localeCode = locale.value === 'cn' ? 'zh-CN' : 'en-US'
    const defaultOptions = {
      year: 'numeric',
      month: 'long',
      day: 'numeric',
      ...options
    }
    return new Intl.DateTimeFormat(localeCode, defaultOptions).format(date)
  }
  
  // 获取翻译文本，支持默认值
  const getText = (key, defaultValue = '') => {
    try {
      const translated = t(key)
      return translated || defaultValue
    } catch (error) {
      console.warn(`翻译键 "${key}" 不存在:`, error)
      return defaultValue
    }
  }
  
  // 获取翻译文本，如果不存在则返回键名
  const getTextOrKey = (key) => {
    return getText(key, key)
  }
  
  return {
    // 基础功能
    t,
    locale,
    locales,
    
    // 语言相关
    getAvailableLocales,
    getCurrentLocaleInfo,
    isCurrentLocale,
    getLocalePath,
    
    // 格式化功能
    formatNumber,
    formatDate,
    
    // 文本获取
    getText,
    getTextOrKey
  }
}
