const translations = { ru: { // Navigation & General 'nav.about': 'О нас', 'nav.rooms': 'Номера', 'nav.gallery': 'Галерея', 'nav.activities': 'Развлечения', 'nav.reviews': 'Отзывы', 'nav.host': 'Хозяин', 'nav.contact': 'Контакты', 'nav.travel_tips': 'Уголок туриста', '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': 'Русский', // Travel Tips 'travel_tips.badge': 'Уголок туриста', 'travel_tips.title': 'Что нужно знать туристу', 'travel_tips.subtitle': 'Полезная информация для комфортного и безопасного отдыха в Абхазии: связь, традиции, важные советы', 'travel_tips.important.title': 'Важные моменты', 'travel_tips.important.1.title': 'Пересечение границы', 'travel_tips.important.1.desc': 'Для граждан РФ — внутренний паспорт. Детям до 14 лет — свидетельство о рождении. Граница по реке Псоу, работают два КПП. Очереди в пик сезона — планируйте время.', 'travel_tips.important.2.title': 'Валюта и оплата', 'travel_tips.important.2.desc': 'В Абхазии действует российский рубль. Банкоматы есть только в крупных городах (Гагра, Сухум, Гудаута). Везде принимают наличные, карты — только в крупных магазинах и отелях.', 'travel_tips.important.3.title': 'Медицина и страховка', 'travel_tips.important.3.desc': 'Полис ОМС РФ в Абхазии не действует. Рекомендуем оформить туристическую страховку. В Гудауте есть аптеки и больница. Возьмите необходимые лекарства с собой.', 'travel_tips.important.4.title': 'Транспорт', 'travel_tips.important.4.desc': 'Основной транспорт — маршрутки и такси. Между городами курсируют автобусы. Дороги горные, соблюдайте осторожность. До гостиницы от границы ~30 минут на такси.', 'travel_tips.customs.title': 'Национальные особенности', 'travel_tips.customs.1.title': 'Абхазское гостеприимство', 'travel_tips.customs.1.desc': 'Гостеприимство для абхазов — священный долг. Гостю предложат лучшее, что есть в доме. Отказ от угощения может быть воспринят как неуважение — попробуйте хотя бы немного.', 'travel_tips.customs.2.title': 'Застольные традиции', 'travel_tips.customs.2.desc': 'Тамада — главный человек за столом. Тосты произносятся по очереди, первый — за Всевышнего. Пить до дна не обязательно, но пригубить нужно. Не перебивайте говорящего тост.', 'travel_tips.customs.3.title': 'Уважение к старшим', 'travel_tips.customs.3.desc': 'В Абхазии глубоко чтят старших по возрасту. При встрече первым здоровается младший. В присутствии старших не принято громко говорить, курить или сидеть в вольной позе.', 'travel_tips.customs.4.title': 'Местная кухня', 'travel_tips.customs.4.desc': 'Обязательно попробуйте: абысту (мамалыга), аджику, хачапури, копчёный сыр, ачапу (фасоль с орехами), шашлык, свежую форель. Национальные напитки — чача и местное вино.', 'travel_tips.mobile.title': 'Мобильная связь и интернет', 'travel_tips.mobile.subtitle': 'Какие операторы работают в Абхазии, условия роуминга и как получить местную SIM-карту', 'travel_tips.operators.russian.title': 'Российские операторы в Абхазии', 'travel_tips.operators.labels.plan': 'Тариф', 'travel_tips.operators.labels.calls_in': 'Входящие', 'travel_tips.operators.labels.calls_out': 'Исходящие в РФ', 'travel_tips.operators.labels.internet': 'Интернет', 'travel_tips.operators.labels.bonus': 'Бонусы', 'travel_tips.operators.labels.activation': 'Как подключить', 'travel_tips.operators.mts.name': 'МТС', 'travel_tips.operators.mts.plan': '«Забугорище»', 'travel_tips.operators.mts.calls_in': 'Бесплатно (первые 10 мин каждого вызова)', 'travel_tips.operators.mts.calls_out': '9,50 ₽/мин', 'travel_tips.operators.mts.internet': '700 МБ/мес бесплатно. Далее — 3,50 ₽/МБ', 'travel_tips.operators.mts.bonus': 'Яндекс Карты, 2ГИС и банковские приложения — безлимитно и без расхода пакета', 'travel_tips.operators.mts.activation': 'USSD *111*333# или в приложении «Мой МТС»', 'travel_tips.operators.mts.badge': 'Лучшее предложение', 'travel_tips.operators.megafon.name': 'МегаФон', 'travel_tips.operators.megafon.plan': 'Роуминг в Абхазии', 'travel_tips.operators.megafon.calls_in': '9 ₽/мин', 'travel_tips.operators.megafon.calls_out': '9 ₽/мин', 'travel_tips.operators.megafon.internet': '~9 ₽/МБ без опции. Рекомендуется опция «Отпуск онлайн» — пакеты минут и ГБ со скидкой', 'travel_tips.operators.megafon.bonus': 'Опция «Отпуск онлайн»: пакеты от 300 ₽ (минуты + ГБ)', 'travel_tips.operators.megafon.activation': 'В приложении МегаФон → Роуминг', 'travel_tips.operators.beeline.name': 'Билайн', 'travel_tips.operators.beeline.plan': 'Роуминг по миру', 'travel_tips.operators.beeline.calls_in': '9 ₽/мин', 'travel_tips.operators.beeline.calls_out': '9 ₽/мин', 'travel_tips.operators.beeline.internet': 'Пакеты ГБ в приложении. Без пакета — ~10 ₽/МБ', 'travel_tips.operators.beeline.bonus': 'Приложение Билайн работает без расхода трафика. Пакеты от 300 ₽', 'travel_tips.operators.beeline.activation': 'В приложении «Мой Билайн» → Роуминг', 'travel_tips.operators.yota.name': 'Yota', 'travel_tips.operators.yota.plan': 'Роуминг (сеть МегаФон)', 'travel_tips.operators.yota.calls_in': '~10 ₽/мин', 'travel_tips.operators.yota.calls_out': '~10 ₽/мин', 'travel_tips.operators.yota.internet': '~15 ₽/МБ. Пакеты роуминга не предусмотрены', 'travel_tips.operators.yota.bonus': '—', 'travel_tips.operators.yota.activation': 'Автоматически, проверьте в приложении Yota', 'travel_tips.operators.tele2.name': 'Tele2', 'travel_tips.operators.tele2.plan': 'Роуминг в Абхазии', 'travel_tips.operators.tele2.calls_in': '~10 ₽/мин', 'travel_tips.operators.tele2.calls_out': '~10 ₽/мин', 'travel_tips.operators.tele2.internet': '~15 ₽/МБ. Ограниченное покрытие — проверьте доступность', 'travel_tips.operators.tele2.bonus': '—', 'travel_tips.operators.tele2.activation': 'Проверьте в приложении Tele2 — может потребоваться подключение', 'travel_tips.operators.local.title': 'Местные операторы и SIM-карты', 'travel_tips.operators.local.desc': 'В Абхазии работают два местных оператора: А-Мобайл и Аквафон. Сразу после КПП «Псоу» на абхазской стороне работают точки продаж — можно купить SIM-карту, не доезжая до города. Также SIM-карты продаются в любом салоне связи в Гудауте или Гагре. Потребуется паспорт РФ. Стоимость стартового пакета — от 200 ₽. Местная связь выгоднее для звонков внутри Абхазии.', 'travel_tips.operators.local.note': 'Важно! Перед поездкой уточните актуальные условия в приложении вашего оператора — тарифы могут меняться.', 'travel_tips.note': 'Тарифы указаны ориентировочно. Пожалуйста, проверяйте актуальные условия у вашего оператора перед поездкой.' }, 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.travel_tips': 'Tourist Tips', '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', // Travel Tips 'travel_tips.badge': 'Tourist Tips', 'travel_tips.title': 'What Tourists Should Know', 'travel_tips.subtitle': 'Essential information for a comfortable and safe stay in Abkhazia: mobile service, traditions, important tips', 'travel_tips.important.title': 'Important Information', 'travel_tips.important.1.title': 'Border Crossing', 'travel_tips.important.1.desc': 'Russian citizens need a domestic passport. Children under 14 need a birth certificate. The border runs along the Psou River with two checkpoints. Expect queues during peak season — plan ahead.', 'travel_tips.important.2.title': 'Currency & Payments', 'travel_tips.important.2.desc': 'The Russian ruble is used throughout Abkhazia. ATMs are only available in major towns (Gagra, Sukhum, Gudauta). Cash is accepted everywhere; cards only in larger shops and hotels.', 'travel_tips.important.3.title': 'Healthcare & Insurance', 'travel_tips.important.3.desc': 'Russian MHI policies are not valid in Abkhazia. We recommend purchasing travel insurance. Pharmacies and a hospital are available in Gudauta. Bring any essential medications with you.', 'travel_tips.important.4.title': 'Transport', 'travel_tips.important.4.desc': 'Main transport options are minibuses (marshrutkas) and taxis. Buses connect major towns. Roads are mountainous — drive carefully. The hotel is about 30 minutes by taxi from the border.', 'travel_tips.customs.title': 'Local Customs & Traditions', 'travel_tips.customs.1.title': 'Abkhazian Hospitality', 'travel_tips.customs.1.desc': 'Hospitality is a sacred duty for Abkhazians. Guests are offered the best the house has. Refusing food or drink may be taken as disrespect — try at least a little.', 'travel_tips.customs.2.title': 'Feasting Traditions', 'travel_tips.customs.2.desc': 'The tamada (toastmaster) leads the table. Toasts are made in turn — the first is always to the Almighty. You do not need to empty your glass, but you should take a sip. Never interrupt a toast.', 'travel_tips.customs.3.title': 'Respect for Elders', 'travel_tips.customs.3.desc': 'Elders are deeply respected in Abkhazia. The younger person greets first. It is impolite to speak loudly, smoke, or sit casually in the presence of elders.', 'travel_tips.customs.4.title': 'Local Cuisine', 'travel_tips.customs.4.desc': 'Must-try dishes: abysta (corn porridge/mamalyga), adjika (spicy paste), khachapuri (cheese bread), smoked cheese, achapa (beans with walnuts), shashlik, and fresh trout. National drinks include chacha and local wine.', 'travel_tips.mobile.title': 'Mobile & Internet', 'travel_tips.mobile.subtitle': 'Which operators work in Abkhazia, roaming conditions, and how to get a local SIM card', 'travel_tips.operators.russian.title': 'Russian Operators in Abkhazia', 'travel_tips.operators.labels.plan': 'Plan', 'travel_tips.operators.labels.calls_in': 'Incoming', 'travel_tips.operators.labels.calls_out': 'Outgoing to Russia', 'travel_tips.operators.labels.internet': 'Internet', 'travel_tips.operators.labels.bonus': 'Bonuses', 'travel_tips.operators.labels.activation': 'Activation', 'travel_tips.operators.mts.name': 'MTS', 'travel_tips.operators.mts.plan': '"Zabugorishche"', 'travel_tips.operators.mts.calls_in': 'Free (first 10 min per call)', 'travel_tips.operators.mts.calls_out': '9.50 RUB/min', 'travel_tips.operators.mts.internet': '700 MB/month free. Beyond that — 3.50 RUB/MB', 'travel_tips.operators.mts.bonus': 'Yandex Maps, 2GIS and banking apps — unlimited, no data usage', 'travel_tips.operators.mts.activation': 'USSD *111*333# or in the My MTS app', 'travel_tips.operators.mts.badge': 'Best Deal', 'travel_tips.operators.megafon.name': 'MegaFon', 'travel_tips.operators.megafon.plan': 'Roaming in Abkhazia', 'travel_tips.operators.megafon.calls_in': '9 RUB/min', 'travel_tips.operators.megafon.calls_out': '9 RUB/min', 'travel_tips.operators.megafon.internet': '~9 RUB/MB without add-on. Recommended "Holiday Online" add-on — discounted minute + GB packages', 'travel_tips.operators.megafon.bonus': '"Holiday Online" add-on: packages from 300 RUB (minutes + GB)', 'travel_tips.operators.megafon.activation': 'MegaFon app → Roaming', 'travel_tips.operators.beeline.name': 'Beeline', 'travel_tips.operators.beeline.plan': 'Worldwide Roaming', 'travel_tips.operators.beeline.calls_in': '9 RUB/min', 'travel_tips.operators.beeline.calls_out': '9 RUB/min', 'travel_tips.operators.beeline.internet': 'GB packages in the app. Without package — ~10 RUB/MB', 'travel_tips.operators.beeline.bonus': 'Beeline app works without data usage. Packages from 300 RUB', 'travel_tips.operators.beeline.activation': 'My Beeline app → Roaming', 'travel_tips.operators.yota.name': 'Yota', 'travel_tips.operators.yota.plan': 'Roaming (MegaFon network)', 'travel_tips.operators.yota.calls_in': '~10 RUB/min', 'travel_tips.operators.yota.calls_out': '~10 RUB/min', 'travel_tips.operators.yota.internet': '~15 RUB/MB. No roaming packages available', 'travel_tips.operators.yota.bonus': '—', 'travel_tips.operators.yota.activation': 'Automatic — verify in the Yota app', 'travel_tips.operators.tele2.name': 'Tele2', 'travel_tips.operators.tele2.plan': 'Roaming in Abkhazia', 'travel_tips.operators.tele2.calls_in': '~10 RUB/min', 'travel_tips.operators.tele2.calls_out': '~10 RUB/min', 'travel_tips.operators.tele2.internet': '~15 RUB/MB. Limited coverage — verify availability', 'travel_tips.operators.tele2.bonus': '—', 'travel_tips.operators.tele2.activation': 'Check in the Tele2 app — manual activation may be required', 'travel_tips.operators.local.title': 'Local Operators & SIM Cards', 'travel_tips.operators.local.desc': 'Abkhazia has two local operators: A-Mobile and Aquafon. You can buy a SIM card right after the Psou border checkpoint on the Abkhazian side — no need to wait until you reach the city. SIM cards are also sold at any mobile shop in Gudauta or Gagra. A Russian passport is required. Starter packs start at 200 RUB. Local service is cheaper for calls within Abkhazia.', 'travel_tips.operators.local.note': 'Important! Check the latest tariffs in your operator\'s app before traveling — rates may change.', 'travel_tips.note': 'Tariffs are approximate. Please verify current conditions with your operator before traveling.' } }; 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 };