const translations = {
    ru: {
        // Navigation & General
        'nav.about': 'О нас',
        'nav.rooms': 'Номера',
        'nav.gallery': 'Галерея',
        'nav.activities': 'Развлечения',
        'nav.reviews': 'Отзывы',
        'nav.host': 'Хозяин',
        'nav.contact': 'Контакты',
        'nav.admin': 'Управление',

        // Reviews Section
        'reviews.title': 'Отзывы наших гостей',
        'reviews.subtitle': 'Более {count} счастливых гостей рекомендуют Hotel 777',
        'reviews.leave_review': 'Оставить отзыв',
        'reviews.write_review': 'Написать отзыв',
        'reviews.avg_rating': 'Средняя оценка',
        'reviews.stars': 'звёзд',
        'reviews.star': 'звезда',
        'reviews.write_first': 'Будьте первым, кто оставит отзыв!',

        // Select Groups
        'select.popular': 'Популярные',
        'select.alphabetical': 'По алфавиту',

        // Review Form
        'form.select_country': 'Выберите страну',
        'form.select_city': 'Город (необязательно)',
        'form.another_city': 'Другой город',
        'form.city_placeholder': 'Введите название города',
        'form.rating': 'Оценка',
        'form.your_name': 'Ваше имя (ФИО)',
        'form.name_placeholder': 'Иванов Иван Иванович',
        'form.review_text': 'Текст отзыва',
        'form.review_placeholder': 'Расскажите о вашем опыте отдыха в Hotel 777...',
        'form.hotel_code': 'Код гостиницы',
        'form.code_placeholder': 'Получите на ресепшене',
        'form.code_hint': 'Код сообщается гостям на ресепшене отеля',
        'form.submit': 'Отправить отзыв',
        'form.cancel': 'Отмена',

        // Validation Messages
        'validation.required': 'Это поле обязательно',
        'validation.country_required': 'Выберите страну',
        'validation.city_required': 'Выберите или введите город',
        'validation.name_required': 'Введите ваше имя',
        'validation.name_min': 'Имя должно содержать минимум 2 символа',
        'validation.review_required': 'Напишите текст отзыва',
        'validation.review_min': 'Отзыв должен содержать минимум 20 символов',
        'validation.code_required': 'Введите код гостиницы',
        'validation.code_invalid': 'Неверный код гостиницы',
        'validation.rating_required': 'Поставьте оценку',
        'validation.rating_range': 'Оценка должна быть от 0 до 5',
        'validation.too_frequent': 'Вы уже оставляли отзыв недавно. Попробуйте позже.',
        'validation.success': 'Спасибо! Ваш отзыв отправлен на модерацию и будет опубликован после проверки.',

        // Admin
        'admin.reviews': 'Отзывы',
        'admin.reviews_all': 'Все отзывы',
        'admin.reviews_pending': 'На модерации',
        'admin.reviews_approved': 'Одобренные',
        'admin.reviews_rejected': 'Скрытые',
        'admin.approve': 'Одобрить',
        'admin.reject': 'Скрыть',
        'admin.delete': 'Удалить',
        'admin.approve_confirm': 'Одобрить этот отзыв?',
        'admin.reject_confirm': 'Скрыть этот отзыв?',
        'admin.delete_confirm': 'Удалить этот отзыв?',
        'admin.stats.total': 'Всего отзывов',
        'admin.stats.pending': 'Ожидают модерации',
        'admin.stats.approved': 'Опубликовано',
        'admin.settings': 'Настройки',
        'admin.settings.review_code': 'Кодовое слово для отзывов',
        'admin.settings.current_code': 'Текущий код',
        'admin.settings.new_code': 'Новый код',
        'admin.settings.save': 'Сохранить',
        'admin.settings.saved': 'Кодовое слово обновлено',

        // Reviews List
        'review.from': 'из',
        'review.date_format': 'MMMM YYYY',
        'review.no_reviews': 'Отзывов пока нет',

        // Footer
        'footer.rights': 'Все права защищены',
        'footer.hotel777': 'Hotel 777',

        // Buttons
        'btn.close': 'Закрыть',
        'btn.loading': 'Отправка...',
        'btn.show_code': 'Показать',
        'btn.hide_code': 'Скрыть',

        // Language
        'lang.switch': 'English',
        'lang.current': 'Русский'
    },

    en: {
        // Navigation & General
        'nav.about': 'About Us',
        'nav.rooms': 'Rooms',
        'nav.gallery': 'Gallery',
        'nav.activities': 'Activities',
        'nav.reviews': 'Reviews',
        'nav.host': 'Host',
        'nav.contact': 'Contact',
        'nav.admin': 'Management',

        // Reviews Section
        'reviews.title': 'Guest Reviews',
        'reviews.subtitle': 'More than {count} happy guests recommend Hotel 777',
        'reviews.leave_review': 'Leave a Review',
        'reviews.write_review': 'Write a Review',
        'reviews.avg_rating': 'Average rating',
        'reviews.stars': 'stars',
        'reviews.star': 'star',
        'reviews.write_first': 'Be the first to leave a review!',

        // Select Groups
        'select.popular': 'Popular',
        'select.alphabetical': 'Alphabetical',

        // Review Form
        'form.select_country': 'Select country',
        'form.select_city': 'City (optional)',
        'form.another_city': 'Other city',
        'form.city_placeholder': 'Enter city name',
        'form.rating': 'Rating',
        'form.your_name': 'Your name',
        'form.name_placeholder': 'John Smith',
        'form.review_text': 'Review text',
        'form.review_placeholder': 'Tell us about your experience at Hotel 777...',
        'form.hotel_code': 'Hotel code',
        'form.code_placeholder': 'Get at reception',
        'form.code_hint': 'The code is provided to guests at the hotel reception',
        'form.submit': 'Submit Review',
        'form.cancel': 'Cancel',

        // Validation Messages
        'validation.required': 'This field is required',
        'validation.country_required': 'Please select a country',
        'validation.city_required': 'Please select or enter a city',
        'validation.name_required': 'Please enter your name',
        'validation.name_min': 'Name must be at least 2 characters',
        'validation.review_required': 'Please write your review',
        'validation.review_min': 'Review must be at least 20 characters',
        'validation.code_required': 'Please enter hotel code',
        'validation.code_invalid': 'Invalid hotel code',
        'validation.rating_required': 'Please provide a rating',
        'validation.rating_range': 'Rating must be between 0 and 5',
        'validation.too_frequent': 'You have recently left a review. Please try again later.',
        'validation.success': 'Thank you! Your review has been submitted for moderation and will be published after approval.',

        // Admin
        'admin.reviews': 'Reviews',
        'admin.reviews_all': 'All Reviews',
        'admin.reviews_pending': 'Pending',
        'admin.reviews_approved': 'Approved',
        'admin.reviews_rejected': 'Hidden',
        'admin.approve': 'Approve',
        'admin.reject': 'Hide',
        'admin.delete': 'Delete',
        'admin.approve_confirm': 'Approve this review?',
        'admin.reject_confirm': 'Hide this review?',
        'admin.delete_confirm': 'Delete this review?',
        'admin.stats.total': 'Total reviews',
        'admin.stats.pending': 'Awaiting moderation',
        'admin.stats.approved': 'Published',
        'admin.settings': 'Settings',
        'admin.settings.review_code': 'Review access code',
        'admin.settings.current_code': 'Current code',
        'admin.settings.new_code': 'New code',
        'admin.settings.save': 'Save',
        'admin.settings.saved': 'Code word updated',

        // Reviews List
        'review.from': 'from',
        'review.date_format': 'MMMM YYYY',
        'review.no_reviews': 'No reviews yet',

        // Footer
        'footer.rights': 'All rights reserved',
        'footer.hotel777': 'Hotel 777',

        // Buttons
        'btn.close': 'Close',
        'btn.loading': 'Sending...',
        'btn.show_code': 'Show',
        'btn.hide_code': 'Hide',

        // Language
        'lang.switch': 'Русский',
        'lang.current': 'English'
    }
};

function t(key, lang = 'ru', replacements = {}) {
    let text = translations[lang]?.[key] || translations['ru'][key] || key;

    Object.entries(replacements).forEach(([k, v]) => {
        text = text.replace(`{${k}}`, v);
    });

    return text;
}

function getTranslations(lang) {
    return translations[lang] || translations['ru'];
}

function getAvailableLanguages() {
    return Object.keys(translations);
}

module.exports = { t, getTranslations, getAvailableLanguages, translations };