export type TranslationKeys = keyof typeof en;

const en = {
  'app.title': 'GooSeek',
  'app.searchPlaceholder': 'Search...',
  'empty.subtitle': 'Research begins here.',
  'input.askAnything': 'Ask anything...',
  'input.askFollowUp': 'Ask a follow-up',
  'chat.send': 'Send',
  'chat.newChat': 'New Chat',
  'chat.suggestions': 'Suggestions',
  'discover.title': 'Discover',
  'discover.region': 'Region',
  'weather.title': 'Weather',
  'weather.feelsLike': 'Feels like',
  'common.loading': 'Loading...',
  'common.error': 'Error',
  'common.retry': 'Retry',
  'chat.related': 'Related',
  'chat.searchImages': 'Search images',
  'chat.searchVideos': 'Search videos',
  'chat.video': 'Video',
  'chat.uploadedFile': 'Uploaded File',
  'chat.viewMore': 'View {count} more',
  'chat.sources': 'Sources',
} as const;

const ru = {
  'app.title': 'GooSeek',
  'app.searchPlaceholder': 'Поиск...',
  'empty.subtitle': 'Исследование начинается здесь.',
  'input.askAnything': 'Спросите что угодно...',
  'input.askFollowUp': 'Задайте уточняющий вопрос',
  'chat.send': 'Отправить',
  'chat.newChat': 'Новый чат',
  'chat.suggestions': 'Подсказки',
  'discover.title': 'Обзор',
  'discover.region': 'Регион',
  'weather.title': 'Погода',
  'weather.feelsLike': 'Ощущается как',
  'common.loading': 'Загрузка...',
  'common.error': 'Ошибка',
  'common.retry': 'Повторить',
  'chat.related': 'Похожие',
  'chat.searchImages': 'Поиск изображений',
  'chat.searchVideos': 'Поиск видео',
  'chat.video': 'Видео',
  'chat.uploadedFile': 'Загруженный файл',
  'chat.viewMore': 'Ещё {count}',
  'chat.sources': 'Источники',
} as const;

const de = {
  'app.title': 'GooSeek',
  'app.searchPlaceholder': 'Suchen...',
  'empty.subtitle': 'Die Recherche beginnt hier.',
  'input.askAnything': 'Fragen Sie alles...',
  'input.askFollowUp': 'Folgefrage stellen',
  'chat.send': 'Senden',
  'chat.newChat': 'Neuer Chat',
  'chat.suggestions': 'Vorschläge',
  'discover.title': 'Entdecken',
  'discover.region': 'Region',
  'weather.title': 'Wetter',
  'weather.feelsLike': 'Gefühlt wie',
  'common.loading': 'Laden...',
  'common.error': 'Fehler',
  'common.retry': 'Wiederholen',
  'chat.related': 'Ähnlich',
  'chat.searchImages': 'Bilder suchen',
  'chat.searchVideos': 'Videos suchen',
  'chat.video': 'Video',
  'chat.uploadedFile': 'Hochgeladene Datei',
  'chat.viewMore': '{count} weitere',
  'chat.sources': 'Quellen',
} as const;

const fr = {
  'app.title': 'GooSeek',
  'app.searchPlaceholder': 'Rechercher...',
  'empty.subtitle': 'La recherche commence ici.',
  'input.askAnything': 'Posez une question...',
  'input.askFollowUp': 'Poser une question de suivi',
  'chat.send': 'Envoyer',
  'chat.newChat': 'Nouveau chat',
  'chat.suggestions': 'Suggestions',
  'discover.title': 'Découvrir',
  'discover.region': 'Région',
  'weather.title': 'Météo',
  'weather.feelsLike': 'Ressenti',
  'common.loading': 'Chargement...',
  'common.error': 'Erreur',
  'common.retry': 'Réessayer',
  'chat.related': 'Similaires',
  'chat.searchImages': 'Rechercher des images',
  'chat.searchVideos': 'Rechercher des vidéos',
  'chat.video': 'Vidéo',
  'chat.uploadedFile': 'Fichier téléchargé',
  'chat.viewMore': '{count} de plus',
  'chat.sources': 'Sources',
} as const;

const es = {
  'app.title': 'GooSeek',
  'app.searchPlaceholder': 'Buscar...',
  'empty.subtitle': 'La investigación comienza aquí.',
  'input.askAnything': 'Pregunte lo que sea...',
  'input.askFollowUp': 'Hacer una pregunta de seguimiento',
  'chat.send': 'Enviar',
  'chat.newChat': 'Nuevo chat',
  'chat.suggestions': 'Sugerencias',
  'discover.title': 'Descubrir',
  'discover.region': 'Región',
  'weather.title': 'Clima',
  'weather.feelsLike': 'Sensación térmica',
  'common.loading': 'Cargando...',
  'common.error': 'Error',
  'common.retry': 'Reintentar',
  'chat.related': 'Relacionado',
  'chat.searchImages': 'Buscar imágenes',
  'chat.searchVideos': 'Buscar videos',
  'chat.video': 'Video',
  'chat.uploadedFile': 'Archivo subido',
  'chat.viewMore': '{count} más',
  'chat.sources': 'Fuentes',
} as const;

const uk = {
  'app.title': 'GooSeek',
  'app.searchPlaceholder': 'Пошук...',
  'empty.subtitle': 'Дослідження починається тут.',
  'input.askAnything': 'Запитайте що завгодно...',
  'input.askFollowUp': 'Задайте уточнююче питання',
  'chat.send': 'Надіслати',
  'chat.newChat': 'Новий чат',
  'chat.suggestions': 'Підказки',
  'discover.title': 'Огляд',
  'discover.region': 'Регіон',
  'weather.title': 'Погода',
  'weather.feelsLike': 'Відчувається як',
  'common.loading': 'Завантаження...',
  'common.error': 'Помилка',
  'common.retry': 'Повторити',
  'chat.related': 'Повʼязані',
  'chat.searchImages': 'Пошук зображень',
  'chat.searchVideos': 'Пошук відео',
  'chat.video': 'Відео',
  'chat.uploadedFile': 'Завантажений файл',
  'chat.viewMore': 'Ще {count}',
  'chat.sources': 'Джерела',
} as const;

export const translations: Record<string, Record<TranslationKeys, string>> = {
  en,
  ru,
  de,
  fr,
  es,
  uk,
};

const defaultLocale = 'en';

export function getTranslations(locale: string): Record<TranslationKeys, string> {
  const base = locale.split('-')[0]?.toLowerCase() ?? defaultLocale;
  return (translations[base] ?? translations[defaultLocale]) as Record<
    TranslationKeys,
    string
  >;
}

export function getSupportedLocales(): string[] {
  return Object.keys(translations);
}
