Files
hotell777_260507/modules/translations/index.js
2026-05-10 21:42:31 +05:00

217 lines
9.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 };