// Obsid — Language switcher (EN / RU)
// Add data-i18n="key" to elements, data-i18n-placeholder="key" for placeholders
const OBSID_TRANSLATIONS = {
en: {
"nav.features": "Features",
"nav.health": "Health",
"nav.levels": "Levels",
"nav.reviews": "Reviews",
"nav.faq": "FAQ",
"nav.download": "Download",
"nav.getapp": "Get the App",
"nav.home": "Home",
"hero.badge": "Push-Up Training App",
"hero.title": "Train harder.
Level up.
Every rep counts.",
"hero.sub": "Obsid turns push-ups into a progression system. Track reps, build streaks, unlock achievements — and become unstoppable.",
"hero.appstore.label": "Download on the",
"hero.appstore.name": "App Store",
"hero.google.label": "Get it on",
"hero.google.name": "Google Play",
"hero.stat1.val": "5.0",
"hero.stat1.lbl": "App Store rating",
"hero.stat2.val": "30+",
"hero.stat2.lbl": "Achievements",
"hero.stat3.val": "Free",
"hero.stat3.lbl": "To download",
"features.label": "Why Obsid",
"features.title": "Everything you need
to get stronger",
"features.sub": "Purpose-built for push-up training. No fluff, no distractions — just the tools that make you better.",
"feat1.title": "Rep Tracking",
"feat1.desc": "Guided push-up sessions with live rep counting and form cues. Every set logged automatically.",
"feat2.title": "30+ Achievements",
"feat2.desc": "Over 30 unique badges to unlock — from your first set to 10,000 reps. Every milestone deserves a celebration.",
"feat3.title": "Streak Calendar",
"feat3.desc": "Visualize your consistency. Keep your streak alive and see your progress build week over week.",
"feat4.title": "Smart Progressions",
"feat4.desc": "7 push-up variants — chest, back, shoulders, core, and more. Balanced weekly plans that adapt to you.",
"feat5.title": "Video Tutorials",
"feat5.desc": "Animated exercise guides — crystal-clear form breakdowns so every rep is done right.",
"feat6.title": "Detailed Stats",
"feat6.desc": "Time, calories, volume — your numbers front and center. Know exactly how far you've come.",
"health.label": "Health Integration",
"health.title": "Works with your
health apps",
"health.sub": "Obsid syncs workouts, calories, and activity directly with Apple Health and Google Health Connect. Your data, unified.",
"health.apple.title": "Apple Health",
"health.apple.sub": "Workouts, active energy, heart rate",
"health.google.title": "Google Health Connect",
"health.google.sub": "Exercise sessions, steps, calories",
"prog.label": "Leveling System",
"prog.title": "From beginner
to master",
"prog.sub": "A multi-level progression system built to keep you motivated. Every push-up gets you closer to the top.",
"prog.note": "After Level 6, every additional 1,000 push-ups earns you the next Master rank — the ceiling is yours to set.",
"prog.today": "Today",
"prog.reps": "of 60 reps",
"prog.time.lbl": "Time",
"prog.kcal.lbl": "kcal",
"prog.achievement.label": "Achievement Unlocked",
"prog.achievement.name": "Beast Mode",
"prog.achievement.sub": "500 push-ups in a week",
"stats.1.val": "30+",
"stats.1.lbl": "Unique achievements",
"stats.2.val": "7+",
"stats.2.lbl": "Levels to unlock",
"stats.3.val": "7",
"stats.3.lbl": "Push-up variations",
"stats.4.val": "5.0★",
"stats.4.lbl": "App Store rating",
"reviews.label": "Reviews",
"reviews.title": "Athletes love it",
"review1.text": "\"Went from struggling with 10 push-ups to crushing 80 clean reps. The leveling system keeps me coming back every single day.\"",
"review1.meta": "LEVEL 7 · CHAMPION",
"review2.text": "\"Best no-equipment app out there. The streak calendar is brutal in the best way — I haven't missed a day in 3 months.\"",
"review2.meta": "LEVEL 5 · WARRIOR",
"review3.text": "\"Finally an app that respects the grind. Simple, focused, and the achievement system hits different. IRON to ELITE in 8 weeks.\"",
"review3.meta": "LEVEL 8 · ELITE",
"cta.title": "Start today.
First rep is free.",
"cta.sub": "No gym. No excuses. Just push.",
"footer.desc": "The dedicated push-up training app. Build strength, track progress, level up.",
"footer.product": "Product",
"footer.support": "Support",
"footer.getapp": "Get the App",
"footer.features": "Features",
"footer.health": "Health Integration",
"footer.levels": "Levels",
"footer.download": "Download",
"footer.faq": "Help & FAQ",
"footer.privacy": "Privacy Policy",
"footer.terms": "Terms of Service",
"footer.contact": "Contact Us",
"footer.ios": "App Store (iOS)",
"footer.android": "Google Play (Android)",
"footer.copy": "© Matvey Guralskiy",
"footer.privacyterms": "Privacy & Terms",
"faq.eyebrow": "Help Center",
"faq.title": "Help & FAQ",
"faq.sub": "Find answers to the most common questions about Obsid.",
"faq.search": "Search questions…",
"faq.cat.all": "All",
"faq.cat.start": "Getting Started",
"faq.cat.workouts": "Workouts",
"faq.cat.health": "Health Integration",
"faq.cat.account": "Account",
"faq.cat.billing": "Billing",
"faq.contact.title": "Contact our team",
"faq.contact.sub": "We usually respond within 24 hours.",
"faq.noresults": "No results found. Try a different search term.",
"faq.stillneed": "Still need help?",
"privacy.eyebrow": "Legal",
"privacy.title": "Privacy Policy",
"privacy.meta": "Last updated: May 4, 2026",
"terms.eyebrow": "Legal",
"terms.title": "Terms of Service",
"terms.meta": "Last updated: May 4, 2026",
},
ru: {
"nav.features": "Функции",
"nav.health": "Здоровье",
"nav.levels": "Уровни",
"nav.reviews": "Отзывы",
"nav.faq": "FAQ",
"nav.download": "Скачать",
"nav.getapp": "Скачать приложение",
"nav.home": "Главная",
"hero.badge": "Приложение для отжиманий",
"hero.title": "Тренируйся сильнее.
Прокачивай уровень.
Каждое повторение важно.",
"hero.sub": "Obsid превращает отжимания в систему прогрессии. Считай повторения, строй серии, открывай достижения — и становись сильнее.",
"hero.appstore.label": "Скачать в",
"hero.appstore.name": "App Store",
"hero.google.label": "Доступно в",
"hero.google.name": "Google Play",
"hero.stat1.val": "5.0",
"hero.stat1.lbl": "Рейтинг App Store",
"hero.stat2.val": "30+",
"hero.stat2.lbl": "Достижений",
"hero.stat3.val": "Бесплатно",
"hero.stat3.lbl": "Скачивание",
"features.label": "Почему Obsid",
"features.title": "Всё для
роста силы",
"features.sub": "Создано специально для тренировки отжиманий. Никакой воды — только инструменты, которые делают тебя сильнее.",
"feat1.title": "Счётчик повторений",
"feat1.desc": "Управляемые сессии с отслеживанием повторений в реальном времени. Каждый подход записывается автоматически.",
"feat2.title": "30+ достижений",
"feat2.desc": "Более 30 уникальных значков — от первого подхода до 10 000 повторений. Каждый milestone заслуживает праздника.",
"feat3.title": "Календарь серий",
"feat3.desc": "Визуализируй свою последовательность. Поддерживай серию и наблюдай, как прогресс растёт неделя за неделей.",
"feat4.title": "Умная прогрессия",
"feat4.desc": "7 вариаций отжиманий — грудь, спина, плечи, пресс и другие. Сбалансированные недельные планы.",
"feat5.title": "Видеоуроки",
"feat5.desc": "Анимированные руководства по упражнениям — чёткие разборы техники, чтобы каждое повторение было правильным.",
"feat6.title": "Подробная статистика",
"feat6.desc": "Время, калории, объём — твои цифры всегда на виду. Знай точно, насколько ты продвинулся.",
"health.label": "Интеграция со здоровьем",
"health.title": "Работает с твоими
health-приложениями",
"health.sub": "Obsid синхронизирует тренировки, калории и активность напрямую с Apple Health и Google Health Connect.",
"health.apple.title": "Apple Health",
"health.apple.sub": "Тренировки, активная энергия, пульс",
"health.google.title": "Google Health Connect",
"health.google.sub": "Сессии упражнений, шаги, калории",
"prog.label": "Система уровней",
"prog.title": "От новичка
до мастера",
"prog.sub": "Многоуровневая система прогрессии, созданная чтобы мотивировать. Каждое отжимание приближает тебя к вершине.",
"prog.note": "После уровня 6 каждые 1 000 дополнительных отжиманий дают следующий ранг Мастера — потолка нет.",
"prog.today": "Сегодня",
"prog.reps": "из 60 повторений",
"prog.time.lbl": "Время",
"prog.kcal.lbl": "ккал",
"prog.achievement.label": "Достижение открыто",
"prog.achievement.name": "Режим зверя",
"prog.achievement.sub": "500 отжиманий за неделю",
"stats.1.val": "30+",
"stats.1.lbl": "Уникальных достижений",
"stats.2.val": "7+",
"stats.2.lbl": "Уровней для открытия",
"stats.3.val": "7",
"stats.3.lbl": "Вариаций отжиманий",
"stats.4.val": "5.0★",
"stats.4.lbl": "Рейтинг App Store",
"reviews.label": "Отзывы",
"reviews.title": "Атлеты любят Obsid",
"review1.text": "«С трудом делал 10 отжиманий, теперь легко выполняю 80. Система уровней заставляет возвращаться каждый день.»",
"review1.meta": "УРОВЕНЬ 7 · ЧЕМПИОН",
"review2.text": "«Лучшее приложение без оборудования. Календарь серий — жёсткий в лучшем смысле — я не пропустил ни дня за 3 месяца.»",
"review2.meta": "УРОВЕНЬ 5 · ВОИН",
"review3.text": "«Наконец-то приложение, которое уважает труд. Простое, сфокусированное, а система достижений — огонь. С IRON до ELITE за 8 недель.»",
"review3.meta": "УРОВЕНЬ 8 · ЭЛИТА",
"cta.title": "Начни сегодня.
Первое повторение бесплатно.",
"cta.sub": "Нет зала. Нет оправданий. Просто отжимайся.",
"footer.desc": "Приложение для тренировки отжиманий. Строй силу, отслеживай прогресс, прокачивай уровень.",
"footer.product": "Продукт",
"footer.support": "Поддержка",
"footer.getapp": "Скачать",
"footer.features": "Функции",
"footer.health": "Интеграция здоровья",
"footer.levels": "Уровни",
"footer.download": "Скачать",
"footer.faq": "Помощь и FAQ",
"footer.privacy": "Политика конфиденциальности",
"footer.terms": "Условия использования",
"footer.contact": "Связаться с нами",
"footer.ios": "App Store (iOS)",
"footer.android": "Google Play (Android)",
"footer.copy": "© Матвей Гуральский",
"footer.privacyterms": "Конфиденциальность и условия",
"faq.eyebrow": "Центр помощи",
"faq.title": "Помощь и FAQ",
"faq.sub": "Ответы на самые частые вопросы об Obsid.",
"faq.search": "Поиск по вопросам…",
"faq.cat.all": "Все",
"faq.cat.start": "Начало работы",
"faq.cat.workouts": "Тренировки",
"faq.cat.health": "Интеграция здоровья",
"faq.cat.account": "Аккаунт",
"faq.cat.billing": "Оплата",
"faq.contact.title": "Напишите нам",
"faq.contact.sub": "Обычно отвечаем в течение 24 часов.",
"faq.noresults": "Ничего не найдено. Попробуйте другой запрос.",
"faq.stillneed": "Остались вопросы?",
"privacy.eyebrow": "Документы",
"privacy.title": "Политика конфиденциальности",
"privacy.meta": "Обновлено: 4 мая 2026",
"terms.eyebrow": "Документы",
"terms.title": "Условия использования",
"terms.meta": "Обновлено: 4 мая 2026",
}
};
function getLang() {
return localStorage.getItem('obsid-lang') || 'en';
}
function setLang(lang) {
localStorage.setItem('obsid-lang', lang);
applyLang(lang);
updateLangBtns(lang);
}
function applyLang(lang) {
const t = OBSID_TRANSLATIONS[lang] || OBSID_TRANSLATIONS.en;
document.querySelectorAll('[data-i18n]').forEach(el => {
const key = el.getAttribute('data-i18n');
if (t[key] !== undefined) el.innerHTML = t[key];
});
document.querySelectorAll('[data-i18n-placeholder]').forEach(el => {
const key = el.getAttribute('data-i18n-placeholder');
if (t[key] !== undefined) el.placeholder = t[key];
});
document.documentElement.lang = lang;
}
function updateLangBtns(lang) {
document.querySelectorAll('.lang-btn').forEach(btn => {
btn.classList.toggle('active', btn.dataset.lang === lang);
});
}
const LANGUAGES = [
{ code: 'en', label: 'English' },
{ code: 'ru', label: 'Русский' },
];
function createLangSwitcher() {
const wrap = document.createElement('div');
wrap.className = 'lang-switcher';
function render(lang) {
const cur = LANGUAGES.find(l => l.code === lang) || LANGUAGES[0];
wrap.innerHTML = `