import { useState, useEffect } from 'react';

const i18n = {
  en: {
    title: 'AI Toolbox',
    description: 'Your one-stop solution for various AI tools.',
    slogan: 'Your collection of intelligent assistants, solving various AI needs in one place.',
    tools: {
      text2image: {
        title: 'Text to Image Card',
        description: 'Convert text to image card',
        inputPlaceholder: 'Enter text (can include titles, e.g. # Title 1)',
        downloadButton: 'Export as Image'
      },
      jsonFormatter: {
        title: 'JSON Formatter',
        description: 'Beautify and validate JSON data',
        inputPlaceholder: 'Enter JSON data',
        invalidJson: 'Invalid JSON',
        copyButton: 'Copy',
        copiedMessage: 'Copied'
      },
      urlDecode: {
        title: 'URL Decoder',
        description: 'Decode URL-encoded strings',
        inputLabel: 'Enter URL to decode',
        resultLabel: 'Decoded result',
        copyButton: 'Copy',
        copiedMessage: 'Copied'
      },
    },
    notFound: {
      title: '404 - Page Not Found',
      description: 'Sorry, the page you are looking for does not exist.',
      back_home: 'Back to Home'
    },
    footer: {
      copyRight: 'AI Toolbox. All rights reserved.'
    },
    about: {
      title: 'About Us',
      description: 'AI Toolbox is a comprehensive web application that integrates various AI tools to provide users with a one-stop AI solution.',
      mission: 'Our Mission',
      missionDescription: 'To empower users with easy access to powerful AI tools, enhancing productivity and creativity.',
      team: 'Our Team',
      teamDescription: 'We are a dedicated team of AI enthusiasts and developers committed to building innovative solutions.',
      contact: 'Contact Us',
    },
    navigation: {
      about: 'About Us'
    },
  },
  zh: {
    title: 'AI 工具箱',
    description: '一站式解决各种AI工具需求。',
    slogan: '您的智能助手集合,一站式解决各种 AI 需求。',
    tools: {
      text2image: {
        title: '文字卡片',
        description: '将文字转换为图片卡',
        inputPlaceholder: '输入文本(可包含标题,如# 标题1)',
        downloadButton: '导出为图片'
      },
      jsonFormatter: {
        title: 'JSON 格式化',
        description: '美化和验证 JSON 数据',
        inputPlaceholder: '输入 JSON 数据',
        invalidJson: '无效的 JSON',
        copyButton: '复制',
        copiedMessage: '已复制'
      },
      urlDecode: {
        title: 'URL 解码器',
        description: '解码 URL 编码的字符串',
        inputLabel: '输入需要解码的 URL',
        resultLabel: '解码结果',
        copyButton: '复制',
        copiedMessage: '已复制'
      },
    },
    notFound: {
      title: '404 - 页面未找到',
      description: '抱歉,您访问的页面不存在。',
      back_home: '返回首页'
    },
    footer: {
      copyRight: 'AI 工具箱. 保留所有权利。'
    },
    about: {
      title: '关于我们',
      description: 'AI 工具箱是一个集成多种人工智能工具的综合Web应用程序,旨在为用户提供一站式AI解决方案。',
      mission: '我们的使命',
      missionDescription: '通过提供强大的AI工具,赋能用户,提高生产力和创造力。',
      team: '我们的团队',
      teamDescription: '我们是一支由AI爱好者和开发人员组成的专注团队,致力于构建创新的解决方案。',
      contact: '联系我们',
    },
    navigation: {
      about: '关于我们'
    },
  },
  ja: {
    title: 'AIツールボックス',
    description: 'あなたのインテリジェントアシスタントコレクション、様々なAIニーズを一箇所で解決します。',
    slogan: 'あなたのインテリジェントアシスタントコレクション、様々なAIニーズを一箇所で解決します。',
    tools: {
      text2image: {
        title: 'テキストから画像',
        description: 'テキストを画像カードに変換',
        inputPlaceholder: 'テキストを入力(タイトルを含めることができます、例:# タイトル1)',
        downloadButton: '画像としてエクスポート'
      },
      jsonFormatter: {
        title: 'JSONフォーマッター',
        description: 'JSONデータを整形し検証する',
        inputPlaceholder: 'JSONデータを入力',
        invalidJson: '無効なJSON',
        copyButton: 'コピー',
        copiedMessage: 'コピーしました'
      },
      urlDecode: {
        title: 'URLデコーダー',
        description: 'URLエンコードされた文字列をデコード',
        inputLabel: 'デコードするURLを入力',
        resultLabel: 'デコード結果',
        copyButton: 'コピー',
        copiedMessage: 'コピーしました'
      },
    },
    notFound: {
      title: '404 - ページが見つかりません',
      description: '申し訳ありませんが、お探しのページは存在しません。',
      back_home: 'ホームに戻る'
    },
    footer: {
      copyRight: 'AIツールボックス. すべての権利を保有します。'
    },
    about: {
      title: '私たちについて',
      description: 'AIツールボックスは、さまざまなAIツールを統合した包括的なWebアプリケーションであり、ユーザーにワンストップのAIソリューションを提供します。',
      mission: '私たちの使命',
      missionDescription: '強力なAIツールへの簡単なアクセスを提供し、ユーザーの生産性と創造性を高めること。',
      team: '私たちのチーム',
      teamDescription: '私たちは革新的なソリューションの構築に専念するAI愛好家と開発者の献身的なチームです。',
      contact: 'お問い合わせ',
    },
    navigation: {
      about: '私たちについて'
    },
  },
  ko: {
    title: 'AI 도구 상자',
    description: '당신의 지능형 어시스턴트 컬렉션, 다양한 AI 요구 사항을 한 곳에서 해결합니다.',
    slogan: '당신의 지능형 어시스턴트 컬렉션, 다양한 AI 요구 사항을 한 곳에서 해결합니다.',
    tools: {
      text2image: {
        title: '텍스트를 이미지로',
        description: '텍스트를 이미지 카드로 변환',
        inputPlaceholder: '텍스트 입력 (제목 포함 가능, 예: # 제목 1)',
        downloadButton: '이미지로 내보내기'
      },
      jsonFormatter: {
        title: 'JSON 포맷터',
        description: 'JSON 데이터 정리 및 검증',
        inputPlaceholder: 'JSON 데이터 입력',
        invalidJson: '유효하지 않은 JSON',
        copyButton: '복사',
        copiedMessage: '복사됨'
      },
      urlDecode: {
        title: 'URL 디코더',
        description: 'URL 인코딩된 문자열 디코딩',
        inputLabel: '디코딩할 URL 입력',
        resultLabel: '디코딩 결과',
        copyButton: '복사',
        copiedMessage: '복사됨'
      },
    },
    notFound: {
      title: '404 - 페이지를 찾을 수 없습니다',
      description: '죄송합니다. 찾고 있는 페이지가 존재하지 않습니다.',
      back_home: '홈으로 돌아가기'
    },
    footer: {
      copyRight: 'AI 도구 상자. 모든 권리 보유.'
    },
    about: {
      title: '회사 소개',
      description: 'AI 도구 상자는 다양한 AI 도구를 통합한 종합 웹 애플리케이션으로, 사용자에게 원스톱 AI 솔루션을 제공합니다.',
      mission: '우리의 사명',
      missionDescription: '강력한 AI 도구에 쉽게 접근할 수 있도록 하여 생산성과 창의성을 향상시키는 것.',
      team: '우리 팀',
      teamDescription: '우리는 혁신적인 솔루션을 구축하는 데 전념하는 AI 애호가 및 개발자 팀입니다.',
      contact: '문의하기',
    },
    navigation: {
      about: '회사 소개'
    },
  },
};

let currentLanguage = localStorage.getItem('language') || 'en';
let listeners = [];

export function setLanguage(lang) {
  if (i18n[lang]) {
    currentLanguage = lang;
    localStorage.setItem('language', lang);
    listeners.forEach(listener => listener(currentLanguage));
  }
}

export function getLanguage() {
  return currentLanguage;
}

export function t(key) {
  const keys = key.split('.');
  let value = i18n[currentLanguage];
  for (const k of keys) {
    if (value[k] === undefined) {
      return key;
    }
    value = value[k];
  }
  return value;
}

export function useTranslation() {
  const [lang, setLang] = useState(currentLanguage);

  useEffect(() => {
    const listener = (newLang) => setLang(newLang);
    listeners.push(listener);
    return () => {
      listeners = listeners.filter(l => l !== listener);
    };
  }, []);

  return { t, lang, setLanguage };
}