added english language
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
export default function FinalCta({ onClick }) {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<section className="nk-final-cta">
|
||||
<h2 className="nk-h2">Кто-то прямо сейчас ищет то, что вы нашли</h2>
|
||||
<h2 className="nk-h2">{t('landing.finalCta')}</h2>
|
||||
<button className="nk-cta-primary" onClick={onClick}>
|
||||
Открыть Находку
|
||||
{t('landing.openNakhodka')}
|
||||
</button>
|
||||
</section>
|
||||
);
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
export default function Footer() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<footer className="nk-footer">
|
||||
© {new Date().getFullYear()} Находка. Возвращаем найденное.
|
||||
{t('landing.footer', { year: new Date().getFullYear() })}
|
||||
</footer>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import { useState } from "react";
|
||||
import Navbar from "./Navbar";
|
||||
import RadarBeacon from "./RadarBeacon";
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
export default function Hero({ onCtaClick, onLoginClick }) {
|
||||
const { t } = useTranslation();
|
||||
const [hover, setHover] = useState(false);
|
||||
|
||||
return (
|
||||
@@ -14,15 +16,14 @@ export default function Hero({ onCtaClick, onLoginClick }) {
|
||||
<Navbar onLoginClick={onLoginClick || onCtaClick} />
|
||||
|
||||
<div className="nk-hero-text">
|
||||
<span className="nk-eyebrow">Сервис поиска пропавших питомцев и вещей</span>
|
||||
<span className="nk-eyebrow">{t('landing.eyebrow')}</span>
|
||||
<h1 className="nk-h1">
|
||||
Потерял — не значит
|
||||
{t('landing.heroTitle')}
|
||||
<br />
|
||||
<span className="nk-accent">потерял навсегда</span>
|
||||
<span className="nk-accent">{t('landing.heroAccent')}</span>
|
||||
</h1>
|
||||
<p className="nk-lead">
|
||||
Разместите объявление о пропаже или находке — Находка сама сопоставит
|
||||
похожие записи по фото, месту и описанию и покажет совпадения рядом с вами.
|
||||
{t('landing.heroLead')}
|
||||
</p>
|
||||
<div className="nk-cta-row">
|
||||
<button
|
||||
@@ -31,7 +32,7 @@ export default function Hero({ onCtaClick, onLoginClick }) {
|
||||
onMouseLeave={() => setHover(false)}
|
||||
onClick={onCtaClick}
|
||||
>
|
||||
Начать поиск
|
||||
{t('landing.startSearch')}
|
||||
<span
|
||||
style={{
|
||||
marginLeft: 8,
|
||||
|
||||
@@ -1,10 +1,29 @@
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
export default function Navbar({ onLoginClick }) {
|
||||
const { t, i18n } = useTranslation();
|
||||
|
||||
const toggleLang = () => {
|
||||
const next = i18n.language === 'ru' ? 'en' : 'ru';
|
||||
i18n.changeLanguage(next);
|
||||
localStorage.setItem('i18nextLng', next);
|
||||
};
|
||||
|
||||
return (
|
||||
<nav className="nk-nav">
|
||||
<span className="nk-logo">Находка</span>
|
||||
<button className="nk-nav-btn" onClick={onLoginClick}>
|
||||
Войти
|
||||
</button>
|
||||
<span className="nk-logo">{t('app.name')}</span>
|
||||
<div className="nk-nav-right">
|
||||
<button className="nk-lang-btn" onClick={toggleLang}>
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
|
||||
<circle cx="12" cy="12" r="10"/>
|
||||
<path d="M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/>
|
||||
</svg>
|
||||
{i18n.language === 'ru' ? 'EN' : 'RU'}
|
||||
</button>
|
||||
<button className="nk-nav-btn" onClick={onLoginClick}>
|
||||
{t('landing.login')}
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
import { steps } from "../../config/landingConstants";
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
const STEP_KEYS = [
|
||||
{ titleKey: "landing.step1Title", textKey: "landing.step1Text" },
|
||||
{ titleKey: "landing.step2Title", textKey: "landing.step2Text" },
|
||||
{ titleKey: "landing.step3Title", textKey: "landing.step3Text" },
|
||||
];
|
||||
|
||||
export default function StepsSection() {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<section className="nk-steps-section">
|
||||
<h2 className="nk-h2">Как это работает</h2>
|
||||
<h2 className="nk-h2">{t('landing.howItWorks')}</h2>
|
||||
<div className="nk-steps-grid">
|
||||
{steps.map((s) => (
|
||||
<div className="nk-step-card" key={s.n}>
|
||||
<span className="nk-step-num">{s.n}</span>
|
||||
<h3 className="nk-step-title">{s.title}</h3>
|
||||
<p className="nk-step-text">{s.text}</p>
|
||||
{STEP_KEYS.map((s, i) => (
|
||||
<div className="nk-step-card" key={i}>
|
||||
<span className="nk-step-num">{`0${i + 1}`}</span>
|
||||
<h3 className="nk-step-title">{t(s.titleKey)}</h3>
|
||||
<p className="nk-step-text">{t(s.textKey)}</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user