// ESLint 中文错误消息映射
export const chineseMessages = {
  // Vue 相关规则
  'vue/multi-word-component-names': '组件名应该由多个单词组成',
  'vue/component-name-in-template-casing': '模板中的组件名应使用PascalCase格式',
  'vue/no-unused-vars': '存在未使用的变量',
  'vue/no-unused-components': '存在未使用的组件',
  'vue/require-v-for-key': 'v-for指令必须包含key属性',
  'vue/no-multiple-template-root': '模板不能有多个根元素',
  'vue/html-self-closing': 'HTML标签应该自闭合',

  // JavaScript 基础规则
  'no-unused-vars': '存在未使用的变量',
  'no-console': '不应使用console语句',
  'no-debugger': '不应使用debugger语句',
  'no-alert': '不应使用alert语句',
  'no-empty': '代码块不应为空',
  'no-var': '应使用let或const代替var',
  'prefer-const': '应使用const声明不会重新赋值的变量',
  'no-undef': '使用了未定义的变量',
  'no-duplicate-keys': '对象中存在重复的键',
  'no-unreachable': '存在不可达的代码',

  // TypeScript 相关规则
  '@typescript-eslint/no-unused-vars': '存在未使用的TypeScript变量',
  '@typescript-eslint/no-explicit-any': '不应使用any类型',
  '@typescript-eslint/no-empty-function': '函数不应为空',
  '@typescript-eslint/prefer-nullish-coalescing': '应使用空值合并运算符',

  // 代码风格规则
  indent: '缩进不正确',
  quotes: '引号使用不一致',
  semi: '缺少分号',
  'comma-dangle': '尾随逗号使用不正确',
  'eol-last': '文件末尾应有换行符',
  'no-trailing-spaces': '行尾存在多余空格',

  // UnoCSS 相关规则
  'unocss/order-attributify': 'UnoCSS属性顺序不正确'
};

// 创建中文消息处理器
export function createChineseMessageProcessor() {
  return {
    messages: chineseMessages,

    // 转换错误消息为中文
    translateMessage(ruleId, originalMessage) {
      return this.messages[ruleId] || originalMessage;
    },

    // 处理 ESLint 结果
    processResults(results) {
      return results.map(result => ({
        ...result,
        messages: result.messages.map(message => ({
          ...message,
          message: this.translateMessage(message.ruleId, message.message)
        }))
      }));
    }
  };
}
