Files
hotell777_260507/modules/translations/index.js
kalugin66 e316d00efa
All checks were successful
Deploy hotel / deploy-kdo (push) Successful in 41s
тур
2026-07-18 00:14:32 +05:00

375 lines
25 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.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 };