
import { Language } from '../types';

export const getSystemLanguage = (): Language => {
  if (typeof navigator === 'undefined') return 'en';
  const lang = navigator.language.split('-')[0];
  return lang === 'ru' ? 'ru' : 'en';
};

const translations = {
  en: {
    // Tabs
    tab_tracker: 'Tracker',
    tab_plans: 'Plans',
    tab_history: 'History',
    tab_stats: 'Stats',
    tab_ai: 'AI Coach',
    tab_profile: 'Profile',

    // Auth
    login_title: 'GymFlow AI',
    login_email: 'Email',
    login_password: 'Password',
    login_btn: 'Login',
    login_contact_admin: 'Contact administrator to get an account.',
    login_error: 'Invalid email or password',
    login_password_short: 'Password too short',
    change_pass_title: 'Change Password',
    change_pass_desc: 'This is your first login. Please set a new password.',
    change_pass_new: 'New Password',
    change_pass_save: 'Save & Login',
    change_pass_error: 'Error changing password',
    passwords_mismatch: 'Passwords do not match',
    register_title: 'Create Account',
    confirm_password: 'Confirm Password',
    register_btn: 'Register',
    have_account: 'Already have an account? Login',
    need_account: 'Need an account? Register',
    init_title: 'Setup Your Account',
    init_desc: 'Welcome! Choose your preferred language.',
    init_select_lang: 'Select Language',
    init_start: 'Get Started',
    init_lang_en_desc: 'GUI and default exercise names will be in English',
    init_lang_ru_desc: 'GUI and default exercise names will be in Russian',
    select_gender: 'Select Gender',

    // General
    date: 'Date',
    time: 'Time',

    // Tracker
    ready_title: 'Ready?',
    ready_subtitle: 'Start your workout and break records.',
    bodyweight: 'Bodyweight (kg)',
    change_in_profile: 'Change in profile',
    last_workout_today: 'Last workout: Today',
    days_off: 'Days off training:',
    first_workout_prompt: 'Do your very first workout today.',
    free_workout: 'Free Workout',
    or_choose_plan: 'Or choose a plan',
    exercises_count: 'exercises',
    prep_title: 'Preparation',
    prep_no_instructions: 'No specific instructions.',
    cancel: 'Cancel',
    quit: 'Quit',
    start: 'Start',
    finish: 'Finish',
    finish_confirm_title: 'Finish Workout?',
    finish_confirm_msg: 'Are you sure you want to finish this workout? Your progress will be saved.',
    quit_no_save: 'Quit without saving',
    quit_confirm_title: 'Quit without saving?',
    quit_confirm_msg: 'All progress from this session will be lost. This action cannot be undone.',
    confirm: 'Confirm',
    plan_completed: 'Plan Completed!',
    step: 'Step',
    of: 'of',
    select_exercise: 'Select Exercise',
    weight_kg: 'Weight (kg)',
    reps: 'Reps',
    time_sec: 'Time (sec)',
    dist_m: 'Distance (m)',
    height_cm: 'Height (cm)',
    body_weight_percent: 'Body Weight',
    log_set: 'Log Set',
    prev: 'Prev',
    history_section: 'History',
    create_exercise: 'New Exercise',
    ex_name: 'Name',
    ex_type: 'Type',
    create_btn: 'Create',
    completed_session_sets: 'Completed in this session',
    add_weight: 'Add. Weight',
    no_exercises_found: 'No exercises found',

    // Types
    type_strength: 'Free Weights & Machines',
    type_bodyweight: 'Bodyweight',
    type_cardio: 'Cardio',
    type_static: 'Static',
    type_height: 'Height',
    type_dist: 'Length',
    type_jump: 'Plyo',

    // History
    history_empty: 'History is empty. Finish your first workout!',
    sets_count: 'Sets',
    finished: 'Finished',
    delete_workout: 'Delete workout?',
    delete_set: 'Delete set?',
    delete_confirm: 'This action cannot be undone.',
    delete_set_confirm: 'Are you sure you want to delete this set?',
    delete: 'Delete',
    edit: 'Edit',
    edit_set: 'Edit Set',
    save: 'Save',
    start_time: 'Start',
    end_time: 'End',
    max: 'Max',
    upto: 'Up to',
    no_plan: 'No plan',
    create_plan: 'Create Plan',
    export_csv: 'Export CSV',

    // Plans
    plans_empty: 'No plans created',
    plan_editor: 'Plan Editor',
    plan_name_ph: 'E.g. Full-body Routine',
    plan_desc_ph: 'Describe preparation...',
    exercises_list: 'Exercises',
    weighted: 'Weighted',
    add_exercise: 'Add Exercise',
    my_plans: 'My Plans',
    no_plans_yet: 'No workout plans yet.',
    ask_ai_to_create: 'Ask your AI coach to create one',
    create_manually: 'Manually',
    create_with_ai: 'With AI',
    ai_plan_prompt_title: 'Create Plan with AI',
    ai_plan_prompt_placeholder: 'Any specific requirements? (optional)',
    generate: 'Generate',
    save_plan: 'Save Plan',
    duration: 'Duration',
    duration_minutes: 'min',
    duration_hours_plus: '2+ hours',
    equipment: 'Equipment',
    equipment_none: 'No equipment',
    equipment_essentials: 'Street workout essentials',
    equipment_free_weights: 'Free weights',
    equipment_full_gym: 'Complete gym',
    ai_generated_plan: 'Generated Plan',
    regenerate: 'Regenerate',
    ai_equipment_desc_none: 'No equipment - bodyweight exercises only',
    ai_equipment_desc_essentials: 'Street workout essentials - pull-up bar, parallel bars, gymnastics rings',
    ai_equipment_desc_free_weights: 'Free weights - dumbbells, kettlebells, barbells',
    ai_equipment_desc_full_gym: 'Complete gym - all machines and equipment available',
    level: 'Level',
    level_beginner: 'Beginner',
    level_intermediate: 'Intermediate',
    level_advanced: 'Advanced',
    intensity: 'Intensity',
    intensity_low: 'Low',
    intensity_moderate: 'Moderate',
    intensity_high: 'High',

    // Stats
    progress: 'Progress',
    volume_title: 'Work Volume',
    volume_subtitle: 'Tonnage (kg * reps)',
    sessions_count_title: 'Number of Sessions',
    sets_title: 'Number of Sets',
    weight_title: 'Body Weight History',
    not_enough_data: 'Not enough data for statistics. Complete a few workouts!',

    // AI
    ai_expert: 'AI Coach',
    ai_intro: 'Hi! I am your AI coach. I analyzed your workouts. Ask me about progress, technique, or routine.',
    ai_typing: 'Typing...',
    ai_placeholder: 'Ask about workouts...',
    ai_error: 'API Key not configured',

    // Profile
    profile_title: 'Profile',
    logout: 'Logout',
    personal_data: 'Personal Data',
    height: 'Height (cm)',
    birth_date: 'Birth Date',
    gender: 'Gender',
    male: 'Male',
    female: 'Female',
    other: 'Other',
    save_profile: 'Save Profile',
    change_pass_btn: 'Change Password',
    admin_area: 'Manage Users',
    create_user: 'Create User',
    user_created: 'User created',
    language: 'Language',
    admin_users_list: 'Users List',
    block: 'Block',
    unblock: 'Unblock',
    reset_pass: 'Reset Pass',
    delete_account: 'Delete Account',
    delete_account_confirm: 'Are you sure? All your data (sessions, plans) will be permanently deleted.',
    delete_user_confirm_title: 'Delete User?',
    delete_user_confirm_msg: 'Are you sure you want to delete this user? This action cannot be undone.',
    block_confirm_title: 'Block User?',
    block_confirm_msg: 'Are you sure you want to block this user? They will not be able to login.',
    unblock_confirm_title: 'Unblock User?',
    unblock_confirm_msg: 'Are you sure you want to unblock this user?',
    user_deleted: 'User deleted',
    pass_reset: 'Password reset',
    manage_exercises: 'Manage Exercises',
    archive: 'Archive',
    unarchive: 'Unarchive',
    show_archived: 'Show Archived',
    filter_by_name: 'Filter by name',
    type_to_filter: 'Type to filter...',
    exercise_name_exists: 'An exercise with this name already exists',
    profile_saved: 'Profile saved successfully',

    // Sporadic Sets
    quick_log: 'Quick Log',
    sporadic_sets_title: 'Quick Logged Sets',
    log_sporadic_success: 'Set logged successfully',
    sporadic_set_note: 'Note (optional)',
    done: 'Done',
    saved: 'Saved',

    // Unilateral exercises
    unilateral_exercise: 'Unilateral exercise (separate left/right tracking)',
    unilateral: 'Unilateral',
    same_values_both_sides: 'Same values for both sides',
    left: 'Left',
    right: 'Right',
    alternately: 'Alternately',
  },
  ru: {
    // Tabs
    tab_tracker: 'Трекер',
    tab_plans: 'Планы',
    tab_history: 'История',
    tab_stats: 'Статы',
    tab_ai: 'AI Тренер',
    tab_profile: 'Профиль',

    // Auth
    login_title: 'GymFlow AI',
    login_email: 'Email',
    login_password: 'Пароль',
    login_btn: 'Войти',
    login_contact_admin: 'Свяжитесь с администратором для получения учетной записи.',
    login_error: 'Неверный email или пароль',
    login_password_short: 'Пароль слишком короткий',
    change_pass_title: 'Смена пароля',
    change_pass_desc: 'Это ваш первый вход. Пожалуйста, установите новый пароль.',
    change_pass_new: 'Новый пароль',
    change_pass_save: 'Сохранить и войти',
    change_pass_error: 'Ошибка смены пароля',
    passwords_mismatch: 'Пароли не совпадают',
    register_title: 'Регистрация',
    confirm_password: 'Подтвердите пароль',
    register_btn: 'Зарегистрироваться',
    have_account: 'Уже есть аккаунт? Войти',
    need_account: 'Нет аккаунта? Регистрация',
    init_title: 'Настройка аккаунта',
    init_desc: 'Добро пожаловать! Выберите предпочтительный язык.',
    init_select_lang: 'Выберите язык',
    init_start: 'Начать работу',
    init_lang_en_desc: 'Интерфейс и названия упражнений по умолчанию будут на английском',
    init_lang_ru_desc: 'Интерфейс и названия упражнений по умолчанию будут на русском',
    select_gender: 'Выберите пол',

    // General
    date: 'Дата',
    time: 'Время',

    // Tracker
    ready_title: 'Готовы?',
    ready_subtitle: 'Начните тренировку и побейте рекорды.',
    bodyweight: 'Вес тела (кг)',
    change_in_profile: 'Можно изменить в профиле',
    last_workout_today: 'Последняя тренировка: Сегодня',
    days_off: 'Дней без тренировок:',
    first_workout_prompt: 'Проведи свою первую тренировку сегодня.',
    free_workout: 'Свободная тренировка',
    or_choose_plan: 'Или выберите план',
    exercises_count: 'упражнений',
    prep_title: 'Подготовка',
    prep_no_instructions: 'Нет особых указаний.',
    cancel: 'Отмена',
    start: 'Начать',
    finish: 'Завершить',
    finish_confirm_title: 'Завершить тренировку?',
    finish_confirm_msg: 'Вы уверены, что хотите завершить эту тренировку? Ваш прогресс будет сохранен.',
    quit_no_save: 'Выйти без сохранения',
    quit_confirm_title: 'Выйти без сохранения?',
    quit_confirm_msg: 'Весь прогресс этой сессии будет потерян. Это действие нельзя отменить.',
    confirm: 'Подтвердить',
    plan_completed: 'План выполнен!',
    step: 'Шаг',
    of: 'из',
    select_exercise: 'Выберите упражнение',
    weight_kg: 'Вес (кг)',
    reps: 'Повторения',
    time_sec: 'Время (сек)',
    dist_m: 'Дистанция (м)',
    height_cm: 'Высота (см)',
    body_weight_percent: 'Вес тела',
    log_set: 'Записать подход',
    prev: 'Предыдущий',
    history_section: 'История',
    create_exercise: 'Новое упражнение',
    ex_name: 'Название',
    ex_type: 'Тип упражнения',
    create_btn: 'Создать',
    completed_session_sets: 'Выполнено в этой тренировке',
    add_weight: 'Доп. вес',
    no_exercises_found: 'Упражнения не найдены',

    // Types
    type_strength: 'Свободные веса и тренажеры',
    type_bodyweight: 'Свой вес',
    type_cardio: 'Кардио',
    type_static: 'Статика',
    type_height: 'Высота',
    type_dist: 'Длина',
    type_jump: 'Прыжки',

    // History
    history_empty: 'История пуста. Завершите свою первую тренировку!',
    sets_count: 'Сетов',
    finished: 'Завершено',
    delete_workout: 'Удалить тренировку?',
    delete_set: 'Удалить подход?',
    delete_confirm: 'Это действие нельзя отменить.',
    delete_set_confirm: 'Вы уверены, что хотите удалить этот подход?',
    delete: 'Удалить',
    edit: 'Редактировать',
    edit_set: 'Редактировать подход',
    save: 'Сохранить',
    start_time: 'Начало',
    end_time: 'Конец',
    max: 'Макс',
    upto: 'До',
    no_plan: 'Без плана',
    create_plan: 'Создать план',
    export_csv: 'Экспорт CSV',

    // Plans
    plans_empty: 'Нет созданных планов',
    plan_editor: 'Редактор плана',
    plan_name_ph: 'Например: Комплекс на всё тело',
    plan_desc_ph: 'Опишите подготовку...',
    exercises_list: 'Упражнения',
    weighted: 'С отягощением',
    add_exercise: 'Добавить упражнение',
    my_plans: 'Мои планы',
    no_plans_yet: 'Планов тренировок пока нет.',
    ask_ai_to_create: 'Попросите AI-тренера создать',
    create_manually: 'Создать вручную',
    create_with_ai: 'С помощью AI',
    ai_plan_prompt_title: 'Создать план с AI',
    ai_plan_prompt_placeholder: 'Дополнительные требования? (опционально)',
    generate: 'Сгенерировать',
    save_plan: 'Сохранить план',
    duration: 'Длительность',
    duration_minutes: 'мин',
    duration_hours_plus: '2+ часа',
    equipment: 'Оборудование',
    equipment_none: 'Без оборудования',
    equipment_essentials: 'Street workout (турники, брусья)',
    equipment_free_weights: 'Свободные веса',
    equipment_full_gym: 'Полный зал',
    ai_generated_plan: 'Сгенерированный план',
    regenerate: 'Перегенерировать',
    ai_equipment_desc_none: 'Без оборудования - только упражнения с собственным весом',
    ai_equipment_desc_essentials: 'Street workout - турник, брусья, кольца',
    ai_equipment_desc_free_weights: 'Свободные веса - гантели, гири, штанга',
    ai_equipment_desc_full_gym: 'Полный зал - все тренажеры и оборудование',
    level: 'Уровень',
    level_beginner: 'Новичок',
    level_intermediate: 'Средний',
    level_advanced: 'Продвинутый',
    intensity: 'Интенсивность',
    intensity_low: 'Низкая',
    intensity_moderate: 'Средняя',
    intensity_high: 'Высокая',

    // Stats
    progress: 'Прогресс',
    volume_title: 'Объем работы',
    volume_subtitle: 'Тоннаж (кг * повторения)',
    sessions_count_title: 'Количество тренировок',
    sets_title: 'Количество сетов',
    weight_title: 'История веса тела',
    not_enough_data: 'Недостаточно данных для статистики. Проведите хотя бы пару тренировок!',

    // AI
    ai_expert: 'AI Эксперт',
    ai_intro: 'Привет! Я твой AI-тренер. Я проанализировал твои тренировки. Спрашивай меня о прогрессе, технике или плане занятий.',
    ai_typing: 'Печатает...',
    ai_placeholder: 'Спроси о тренировках...',
    ai_error: 'API ключ не настроен',

    // Profile
    profile_title: 'Профиль',
    logout: 'Выйти',
    personal_data: 'Личные данные',
    height: 'Рост (см)',
    birth_date: 'Дата рожд.',
    gender: 'Пол',
    male: 'Мужской',
    female: 'Женский',
    other: 'Другой',
    save_profile: 'Сохранить профиль',
    change_pass_btn: 'Сменить пароль',
    admin_area: 'Управление пользователями',
    create_user: 'Создать пользователя',
    user_created: 'Пользователь создан',
    language: 'Язык / Language',
    admin_users_list: 'Список пользователей',
    block: 'Блок',
    unblock: 'Разблок',
    reset_pass: 'Сброс пароля',
    delete_account: 'Удалить аккаунт',
    delete_account_confirm: 'Вы уверены? Все ваши данные (сессии, планы) будут безвозвратно удалены.',
    delete_user_confirm_title: 'Удалить пользователя?',
    delete_user_confirm_msg: 'Вы уверены? Это действие нельзя отменить.',
    block_confirm_title: 'Заблокировать?',
    block_confirm_msg: 'Пользователь не сможет войти в систему.',
    unblock_confirm_title: 'Разблокировать?',
    unblock_confirm_msg: 'Разблокировать доступ пользователю?',
    user_deleted: 'Пользователь удален',
    pass_reset: 'Пароль сброшен',
    manage_exercises: 'Управление упражнениями',
    archive: 'Архив',
    unarchive: 'Вернуть',
    show_archived: 'Показать архивные',
    filter_by_name: 'Фильтр по названию',
    type_to_filter: 'Введите для фильтрации...',
    exercise_name_exists: 'Упражнение с таким названием уже существует',
    profile_saved: 'Профиль успешно сохранен',

    // Sporadic Sets
    quick_log: 'Быстрая запись',
    sporadic_sets_title: 'Быстрые записи',
    log_sporadic_success: 'Сет записан',
    sporadic_set_note: 'Заметка (опц.)',
    done: 'Готово',
    saved: 'Сохранено',

    // Unilateral exercises
    unilateral_exercise: 'Односторонее упражнение (отдельно левая/правая)',
    unilateral: 'Одностороннее',
    same_values_both_sides: 'Одинаковые значения для обеих сторон',
    left: 'Левая',
    right: 'Правая',
    alternately: 'Попеременно',
  },
};

export const t = (key: keyof typeof translations['en'], lang: Language) => {
  return translations[lang][key] || translations['en'][key] || key;
};