import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
import LanguageDetector from 'i18next-browser-languagedetector'

const resources = {
  en: {
    translation: {
      title: 'MTranServer',
      subtitle: 'Fast and reliable translation service',
      translate: 'Translate',
      translating: 'Translating...',
      sourceLanguage: 'Source Language',
      targetLanguage: 'Target Language',
      sourceText: 'Source Text',
      translation: 'Translation',
      enterText: 'Enter text to translate...',
      translationWillAppear: 'Translation will appear here...',
      selectLanguage: 'Select language',
      autoDetect: 'Auto Detect',
      translationCompleted: 'Translation completed',
      translationFailed: 'Translation failed',
      firstTranslationTip: 'The first translation requires downloading the model. Please wait.',
      enterTextError: 'Please enter text to translate',
      failedToLoadLanguages: 'Failed to load languages',
      theme: 'Theme',
      language: 'Language',
      light: 'Light',
      dark: 'Dark',
      system: 'System',
      autoTranslate: 'Auto Translate',
      autoTranslateDesc: 'Automatically translate as you type',
      apiToken: 'API Token',
      apiTokenPlaceholder: 'Please enter API token',
      apiTokenSaved: 'API token saved',
      apiTokenCleared: 'API token cleared',
      save: 'Save',
      apiTokenRequired: 'API token is required to access this service',
      copied: 'Copied to clipboard',
      copyFailed: 'Failed to copy',
      clear: 'Clear',
      history: 'History',
      clearAll: 'Clear All',
      noHistory: 'No history',
      historyDesc: 'Recent translations',
      searchPlaceholder: 'Search history...',
      noResults: 'No results found',
      apiDocs: 'API Documentation',
      addPanel: 'Add Translation Panel',
      widescreen: 'Widescreen View',
      standardView: 'Standard View',
      closePanel: 'Close Panel',
      uploadFile: 'Upload file',
      voiceInputStart: 'Start voice input',
      voiceInputStop: 'Stop voice input',
      speechNotSupported: 'Speech recognition is not supported in this browser',
      speechInputFailed: 'Voice input failed',
      listen: 'Listen',
      copy: 'Copy',
      delete: 'Delete',
      switchLanguage: 'Switch Language',
      toggleTheme: 'Toggle Theme',
      translateShortcut: 'Ctrl + Enter to translate',
      languageSwitcher: 'Language',
      languageSearchPlaceholder: 'Search languages...',
      languageRecent: 'Recent',
      languageAll: 'All Languages',
      followSystemLanguage: 'Follow System',
      desktopSettings: 'Desktop Settings',
      desktopSettingsDesc: 'Manage server configuration and desktop preferences',
      serverStatus: 'Service Status',
      serverStatusRunning: 'Running',
      serverStatusStopped: 'Stopped',
      generalSettings: 'General',
      storageSettings: 'Storage',
      securitySettings: 'Security',
      performanceSettings: 'Performance',
      loggingSettings: 'Logging',
      host: 'Host',
      port: 'Port',
      logLevel: 'Log Level',
      locale: 'Language',
      enableWebUI: 'Web UI',
      enableWebUIDesc: 'Enable the built-in web UI',
      enableOfflineMode: 'Offline Mode',
      enableOfflineModeDesc: 'Disable online features and updates',
      checkUpdate: 'Check Updates',
      checkUpdateDesc: 'Check for new versions at startup',
      modelDir: 'Model Directory',
      configDir: 'Config Directory',
      logDir: 'Log Directory',
      workerIdleTimeout: 'Worker Idle Timeout (s)',
      workersPerLanguage: 'Workers Per Language',
      maxSentenceLength: 'Max Length Break',
      cacheSize: 'Cache Size',
      logToFile: 'Log to File',
      logToFileDesc: 'Write logs to file',
      logConsole: 'Log to Console',
      logConsoleDesc: 'Output logs to console',
      logRequests: 'Log Requests',
      logRequestsDesc: 'Record each request',
      apply: 'Apply',
      restart: 'Restart',
      resetDefaults: 'Reset to Defaults',
      backToMain: 'Back to Main',
      loadingConfig: 'Loading configuration...',
      loadingConfigFailed: 'Failed to load configuration',
      settingsApplied: 'Settings applied',
      settingsApplyFailed: 'Failed to apply settings',
      serverRestarted: 'Server restarted',
      serverRestartFailed: 'Failed to restart server',
      settingsReset: 'Defaults restored',
      settingsResetFailed: 'Failed to reset defaults',
      desktopOnly: 'Desktop only',
      desktopOnlyDesc: 'Desktop settings are only available in the desktop client',
      version: 'Version',
      saving: 'Saving...',
      loadMore: 'Load More',
      themeMode: 'Theme Mode',
    }
  },
  zh: {
    translation: {
      title: 'MTranServer',
      subtitle: '快速可靠的翻译服务',
      translate: '翻译',
      translating: '翻译中...',
      sourceLanguage: '源语言',
      targetLanguage: '目标语言',
      sourceText: '源文本',
      translation: '翻译结果',
      enterText: '输入要翻译的文本...',
      translationWillAppear: '翻译结果将显示在这里...',
      selectLanguage: '选择语言',
      autoDetect: '自动检测',
      translationCompleted: '翻译完成',
      translationFailed: '翻译失败',
      firstTranslationTip: '第一次翻译需要下载模型，请耐心等待。',
      enterTextError: '请输入要翻译的文本',
      failedToLoadLanguages: '加载语言列表失败',
      theme: '主题',
      language: '语言',
      light: '浅色',
      dark: '深色',
      system: '跟随系统',
      autoTranslate: '自动翻译',
      autoTranslateDesc: '输入时自动翻译',
      apiToken: 'API Token',
      apiTokenPlaceholder: '请输入 API token',
      apiTokenSaved: 'API token 已保存',
      apiTokenCleared: 'API token 已清除',
      save: '保存',
      apiTokenRequired: '访问此服务需要 API token',
      copied: '已复制到剪贴板',
      copyFailed: '复制失败',
      clear: '清空',
      history: '历史记录',
      clearAll: '清空全部',
      noHistory: '暂无历史记录',
      historyDesc: '最近的翻译记录',
      searchPlaceholder: '搜索历史记录...',
      noResults: '未找到结果',
      apiDocs: 'API 文档',
      addPanel: '添加翻译面板',
      widescreen: '宽屏模式',
      standardView: '标准视图',
      closePanel: '关闭面板',
      uploadFile: '上传文件',
      voiceInputStart: '开始语音输入',
      voiceInputStop: '停止语音输入',
      speechNotSupported: '当前浏览器不支持语音识别',
      speechInputFailed: '语音输入失败',
      listen: '朗读',
      copy: '复制',
      delete: '删除',
      switchLanguage: '切换语言',
      toggleTheme: '切换主题',
      translateShortcut: 'Ctrl + Enter 快捷翻译',
      languageSwitcher: '语言',
      languageSearchPlaceholder: '搜索语言...',
      languageRecent: '最近使用',
      languageAll: '全部语言',
      followSystemLanguage: '跟随系统',
      desktopSettings: '桌面端设置',
      desktopSettingsDesc: '管理服务配置与桌面偏好',
      serverStatus: '服务状态',
      serverStatusRunning: '启动中',
      serverStatusStopped: '已停止',
      generalSettings: '常规',
      storageSettings: '存储',
      securitySettings: '安全',
      performanceSettings: '性能',
      loggingSettings: '日志',
      host: '主机',
      port: '端口',
      logLevel: '日志级别',
      locale: '语言',
      enableWebUI: 'Web UI',
      enableWebUIDesc: '启用内置 Web UI',
      enableOfflineMode: '离线模式',
      enableOfflineModeDesc: '禁用在线功能与更新检查',
      checkUpdate: '检查更新',
      checkUpdateDesc: '启动时检查新版本',
      modelDir: '模型目录',
      configDir: '配置目录',
      logDir: '日志目录',
      workerIdleTimeout: '空闲超时（秒）',
      workersPerLanguage: '每语言工作数',
      maxSentenceLength: '最大断句长度',
      cacheSize: '缓存大小',
      logToFile: '写入文件',
      logToFileDesc: '将日志写入文件',
      logConsole: '控制台日志',
      logConsoleDesc: '在控制台输出日志',
      logRequests: '请求日志',
      logRequestsDesc: '记录每个请求',
      apply: '应用',
      restart: '重启',
      resetDefaults: '恢复默认值',
      backToMain: '返回主界面',
      loadingConfig: '正在加载配置...',
      loadingConfigFailed: '加载配置失败',
      settingsApplied: '设置已应用',
      settingsApplyFailed: '应用设置失败',
      serverRestarted: '服务已重启',
      serverRestartFailed: '服务重启失败',
      settingsReset: '默认值已恢复',
      settingsResetFailed: '恢复默认值失败',
      desktopOnly: '仅限桌面端',
      desktopOnlyDesc: '桌面端设置仅在桌面客户端可用',
      version: '版本',
      saving: '保存中...',
      loadMore: '加载更多',
      themeMode: '主题模式',
    }
  },
  ja: {
    translation: {
      title: 'MTranServer',
      subtitle: '高速で信頼性の高い翻訳サービス',
      translate: '翻訳',
      translating: '翻訳中...',
      sourceLanguage: 'ソース言語',
      targetLanguage: 'ターゲット言語',
      sourceText: 'ソーステキスト',
      translation: '翻訳',
      enterText: '翻訳するテキストを入力...',
      translationWillAppear: '翻訳がここに表示されます...',
      selectLanguage: '言語を選択',
      autoDetect: '自動検出',
      translationCompleted: '翻訳完了',
      translationFailed: '翻訳失敗',
      firstTranslationTip: '初回の翻訳ではモデルのダウンロードが必要です。しばらくお待ちください。',
      enterTextError: '翻訳するテキストを入力してください',
      failedToLoadLanguages: '言語の読み込みに失敗しました',
      theme: 'テーマ',
      language: '言語',
      light: 'ライト',
      dark: 'ダーク',
      system: 'システム',
      autoTranslate: '自動翻訳',
      autoTranslateDesc: '入力時に自動翻訳',
      apiToken: 'APIトークン',
      apiTokenPlaceholder: 'APIトークンを入力してください',
      apiTokenSaved: 'APIトークンが保存されました',
      apiTokenCleared: 'APIトークンがクリアされました',
      save: '保存',
      apiTokenRequired: 'このサービスにアクセスするにはAPIトークンが必要です',
      copied: 'クリップボードにコピーしました',
      copyFailed: 'コピーに失敗しました',
      clear: 'クリア',
      history: '履歴',
      clearAll: 'すべてクリア',
      noHistory: '履歴はありません',
      historyDesc: '最近の翻訳履歴',
      searchPlaceholder: '履歴を検索...',
      noResults: '結果が見つかりません',
      apiDocs: 'APIドキュメント',
      addPanel: '翻訳パネルを追加',
      widescreen: 'ワイドスクリーン表示',
      standardView: '標準表示',
      closePanel: 'パネルを閉じる',
      uploadFile: 'ファイルをアップロード',
      voiceInputStart: '音声入力を開始',
      voiceInputStop: '音声入力を停止',
      speechNotSupported: 'このブラウザは音声認識に対応していません',
      speechInputFailed: '音声入力に失敗しました',
      listen: '読み上げ',
      copy: 'コピー',
      delete: '削除',
      switchLanguage: '言語を切り替え',
      toggleTheme: 'テーマを切り替え',
      translateShortcut: 'Ctrl + Enterで翻訳',
      languageSwitcher: '言語',
      languageSearchPlaceholder: '言語を検索...',
      languageRecent: '最近',
      languageAll: 'すべての言語',
      followSystemLanguage: 'システムに従う',
      desktopSettings: 'デスクトップ設定',
      desktopSettingsDesc: 'サーバー設定とデスクトップ設定を管理',
      serverStatus: 'サービス状態',
      serverStatusRunning: '稼働中',
      serverStatusStopped: '停止中',
      generalSettings: '一般',
      storageSettings: 'ストレージ',
      securitySettings: 'セキュリティ',
      performanceSettings: 'パフォーマンス',
      loggingSettings: 'ログ',
      host: 'ホスト',
      port: 'ポート',
      logLevel: 'ログレベル',
      locale: '言語',
      enableWebUI: 'Web UI',
      enableWebUIDesc: '内蔵 Web UI を有効化',
      enableOfflineMode: 'オフラインモード',
      enableOfflineModeDesc: 'オンライン機能と更新確認を無効化',
      checkUpdate: '更新チェック',
      checkUpdateDesc: '起動時に新しいバージョンを確認',
      modelDir: 'モデルディレクトリ',
      configDir: '設定ディレクトリ',
      logDir: 'ログディレクトリ',
      workerIdleTimeout: 'アイドルタイムアウト（秒）',
      workersPerLanguage: '言語ごとのワーカー数',
      maxSentenceLength: '最大分割長',
      cacheSize: 'キャッシュサイズ',
      logToFile: 'ファイルに記録',
      logToFileDesc: 'ログをファイルに書き込む',
      logConsole: 'コンソール出力',
      logConsoleDesc: 'コンソールにログを出力',
      logRequests: 'リクエストログ',
      logRequestsDesc: '各リクエストを記録',
      apply: '適用',
      restart: '再起動',
      resetDefaults: 'デフォルトに戻す',
      backToMain: 'メインに戻る',
      loadingConfig: '設定を読み込み中...',
      loadingConfigFailed: '設定の読み込みに失敗しました',
      settingsApplied: '設定を適用しました',
      settingsApplyFailed: '設定の適用に失敗しました',
      serverRestarted: 'サーバーを再起動しました',
      serverRestartFailed: 'サーバーの再起動に失敗しました',
      settingsReset: 'デフォルトを復元しました',
      settingsResetFailed: 'デフォルトの復元に失敗しました',
      desktopOnly: 'デスクトップ専用',
      desktopOnlyDesc: 'デスクトップ設定はデスクトップクライアントのみ利用できます',
      version: 'バージョン',
      saving: '保存中...',
      loadMore: 'もっと読み込む',
      themeMode: 'テーマモード',
    }
  }
}

i18n
  .use(LanguageDetector)
  .use(initReactI18next)
  .init({
    resources,
    fallbackLng: 'en',
    interpolation: {
      escapeValue: false
    },
    detection: {
      order: ['localStorage', 'navigator'],
      caches: ['localStorage']
    }
  })

export default i18n
