WIP: translations and form
This commit is contained in:
parent
d4544c017f
commit
335010d20b
18 changed files with 5265 additions and 5689 deletions
|
|
@ -27,9 +27,14 @@
|
||||||
"gatsby-plugin-sitemap": "^5.1.0",
|
"gatsby-plugin-sitemap": "^5.1.0",
|
||||||
"gatsby-source-filesystem": "^4.1.0",
|
"gatsby-source-filesystem": "^4.1.0",
|
||||||
"gatsby-transformer-sharp": "^4.1.0",
|
"gatsby-transformer-sharp": "^4.1.0",
|
||||||
|
"i18next": "^21.8.16",
|
||||||
|
"i18next-browser-languagedetector": "^6.1.4",
|
||||||
|
"path": "^0.12.7",
|
||||||
|
"path-browserify": "^1.0.1",
|
||||||
"react": "^17.0.1",
|
"react": "^17.0.1",
|
||||||
"react-dom": "^17.0.1",
|
"react-dom": "^17.0.1",
|
||||||
"react-helmet": "^6.1.0",
|
"react-helmet": "^6.1.0",
|
||||||
|
"react-i18next": "^11.18.3",
|
||||||
"sass": "^1.43.4",
|
"sass": "^1.43.4",
|
||||||
"swiper": "^7.2.0"
|
"swiper": "^7.2.0"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,23 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import "./about.style.scss";
|
import "./about.style.scss";
|
||||||
import Rocket from "../../assets/images/main/about-us/rocket.png";
|
|
||||||
|
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
import { Swiper, SwiperSlide } from "swiper/react";
|
import { Swiper, SwiperSlide } from "swiper/react";
|
||||||
import "swiper/css";
|
import "swiper/css";
|
||||||
|
|
||||||
|
import Rocket from "../../assets/images/main/about-us/rocket.png";
|
||||||
|
|
||||||
const About = () => {
|
const About = () => {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="about-us container">
|
<div className="about-us container">
|
||||||
<div>
|
<div>
|
||||||
<img src={Rocket} alt="" />
|
<img src={Rocket} alt="" />
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h5>You have some great ideas in mind?</h5>
|
<h5>{t("about_us.sub_title")}</h5>
|
||||||
<p className="text">
|
<p className="text">{t("about_us.text")}</p>
|
||||||
Working more than 6 years in creative development industry we are sure
|
|
||||||
that we can realize any difficulty project
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<Swiper
|
<Swiper
|
||||||
loop={false}
|
loop={false}
|
||||||
|
|
@ -26,7 +27,7 @@ const About = () => {
|
||||||
slidesPerView={2}
|
slidesPerView={2}
|
||||||
onSlideChange={() => console.log("slide change")}
|
onSlideChange={() => console.log("slide change")}
|
||||||
onSwiper={(swiper) => console.log(swiper)}
|
onSwiper={(swiper) => console.log(swiper)}
|
||||||
className={'stats'}
|
className={"stats"}
|
||||||
>
|
>
|
||||||
<SwiperSlide>
|
<SwiperSlide>
|
||||||
<h4>30+</h4>
|
<h4>30+</h4>
|
||||||
|
|
@ -44,16 +45,16 @@ const About = () => {
|
||||||
|
|
||||||
<div className="stats">
|
<div className="stats">
|
||||||
<div>
|
<div>
|
||||||
<h4>30+</h4>
|
<h4>{t("about_us.amount_completed")}</h4>
|
||||||
<p>Completed projects</p>
|
<p>{t("about_us.completed")}</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h4>400+</h4>
|
<h4>{t("about_us.amount_webpages")}</h4>
|
||||||
<p>Web Pages created</p>
|
<p>{t("about_us.webpages")}</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h4>6+</h4>
|
<h4>{t("about_us.amount_experiance")}</h4>
|
||||||
<p>Years experiance</p>
|
<p>{t("about_us.experiance")}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ const ContactForm = () => {
|
||||||
<img src={YellowPlanet} alt="yellow planet" className="planet yellow" />
|
<img src={YellowPlanet} alt="yellow planet" className="planet yellow" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<form
|
{/* <form
|
||||||
// action="http://127.0.0.1:3005/contact"
|
// action="http://127.0.0.1:3005/contact"
|
||||||
className="container"
|
className="container"
|
||||||
// method="POST"
|
// method="POST"
|
||||||
|
|
@ -79,7 +79,7 @@ const ContactForm = () => {
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<CustomButton text="Send" />
|
<CustomButton text="Send" />
|
||||||
</form>
|
</form> */}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
button {
|
||||||
|
&.btn {
|
||||||
background: radial-gradient(
|
background: radial-gradient(
|
||||||
35.83% 70.83% at 0% 0%,
|
35.83% 70.83% at 0% 0%,
|
||||||
rgba(93, 52, 69, 0.15) 0%,
|
rgba(93, 52, 69, 0.15) 0%,
|
||||||
|
|
@ -73,6 +74,7 @@ button {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// @property --a {
|
// @property --a {
|
||||||
// syntax: "<angle>";
|
// syntax: "<angle>";
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
import * as React from "react";
|
import React from "react";
|
||||||
|
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
|
import LanguageSwitch from "../language-switch/language-switch.component";
|
||||||
|
|
||||||
import Logo from "../../assets/images/main/header/logo.svg";
|
import Logo from "../../assets/images/main/header/logo.svg";
|
||||||
import Logo2 from "../../assets/images/main/footer/logo.svg";
|
import Logo2 from "../../assets/images/main/footer/logo.svg";
|
||||||
|
|
@ -8,6 +12,8 @@ import Email from "../../assets/images/main/footer/email.png";
|
||||||
import "./header.style.scss";
|
import "./header.style.scss";
|
||||||
|
|
||||||
const MidHeader = () => {
|
const MidHeader = () => {
|
||||||
|
const { t, i18n } = useTranslation();
|
||||||
|
|
||||||
const toggleMenu = () => {
|
const toggleMenu = () => {
|
||||||
const MenuButton = document.getElementsByClassName("mobile-menu-btn")[0];
|
const MenuButton = document.getElementsByClassName("mobile-menu-btn")[0];
|
||||||
const Menu = document.getElementsByClassName("mobile-menu")[0];
|
const Menu = document.getElementsByClassName("mobile-menu")[0];
|
||||||
|
|
@ -52,11 +58,12 @@ const MidHeader = () => {
|
||||||
<img src={Logo} alt="MID" />
|
<img src={Logo} alt="MID" />
|
||||||
</div>
|
</div>
|
||||||
<nav className="navigation">
|
<nav className="navigation">
|
||||||
<a href="#services">Services</a>
|
<a href="#services">{t("menu.services")}</a>
|
||||||
<a href="#about-us">About Us</a>
|
<a href="#about-us">{t("menu.about_us")}</a>
|
||||||
<a href="#projects">Portfolio</a>
|
<a href="#projects">{t("menu.portfolio")}</a>
|
||||||
<a href="#pricing">Pricing</a>
|
<a href="#pricing">{t("menu.pricing")}</a>
|
||||||
<a href="#contact-us">Contact Us</a>
|
<a href="#contact-us">{t("menu.contact_us")}</a>
|
||||||
|
<LanguageSwitch />
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
|
|
@ -74,7 +81,6 @@ const MidHeader = () => {
|
||||||
<span id="bottom-left"></span>
|
<span id="bottom-left"></span>
|
||||||
<span id="bottom-right"></span>
|
<span id="bottom-right"></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="mobile-menu">
|
<div className="mobile-menu">
|
||||||
<img src={Logo2} alt="MID Creative Digital Agency" />
|
<img src={Logo2} alt="MID Creative Digital Agency" />
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,11 @@ header {
|
||||||
right: 0;
|
right: 0;
|
||||||
|
|
||||||
.navigation {
|
.navigation {
|
||||||
|
display: flex;
|
||||||
|
column-gap: 55px;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
margin-left: 55px;
|
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
|
|
|
||||||
|
|
@ -1,29 +1,33 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
import "./intro.styles.scss";
|
import "./intro.styles.scss";
|
||||||
|
|
||||||
import Spaceship from "../../assets/images/main/intro/spaceship.svg";
|
import Spaceship from "../../assets/images/main/intro/spaceship.svg";
|
||||||
|
|
||||||
const Intro = () => {
|
const Intro = () => {
|
||||||
|
const { t, i18n } = useTranslation();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="container intro">
|
<section className="container intro">
|
||||||
<div className="image"></div>
|
<div className="image"></div>
|
||||||
|
|
||||||
<div className="title">
|
<div className="title">
|
||||||
<h1>
|
<h1>
|
||||||
We creating <span>websites</span>
|
{/* TODO: In latvian text is not fitting */}
|
||||||
|
{t("intro.creating")} <span>{t("intro.websites")}</span>
|
||||||
</h1>
|
</h1>
|
||||||
<div>
|
<div>
|
||||||
<p>Mobile apps</p>
|
<p>{t("intro.apps")}</p>
|
||||||
<p>E-shops</p>
|
<p>{t("intro.shops")}</p>
|
||||||
<p>Platforms</p>
|
<p>{t("intro.platforms")}</p>
|
||||||
</div>
|
</div>
|
||||||
|
{/* TODO: Finish this for mobile */}
|
||||||
<h1 className="mobile">websites . mobileapps . e-shops . platforms</h1>
|
<h1 className="mobile">websites . mobileapps . e-shops . platforms</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="rocket">
|
<div className="rocket">
|
||||||
<img src={Spaceship} alt="" />
|
<img src={Spaceship} alt="" />
|
||||||
<p>Explore the Universe</p>
|
<p>{t("intro.explore")}</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
21
src/components/language-switch/language-switch.component.jsx
Normal file
21
src/components/language-switch/language-switch.component.jsx
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
import React, { useState } from "react";
|
||||||
|
import i18n from "../../pages/i18n";
|
||||||
|
|
||||||
|
import "./language-switch.style.scss";
|
||||||
|
|
||||||
|
const LanguageSwitch = ({ t }) => {
|
||||||
|
const changeLanguage = (lng) => {
|
||||||
|
i18n.changeLanguage(lng);
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<button
|
||||||
|
className="btn-lng"
|
||||||
|
onClick={() => changeLanguage(i18n.language === "lv" ? "en" : "lv")}
|
||||||
|
>
|
||||||
|
{i18n.language === "lv" ? "en" : "lv"}
|
||||||
|
</button>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default LanguageSwitch;
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
@use "../../assets/stylesheets/base/colors" as *;
|
||||||
|
|
||||||
|
.btn-lng {
|
||||||
|
color: $color-text-primary;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
@ -5,9 +5,9 @@ import "./projects.style.scss";
|
||||||
const Projects = () => {
|
const Projects = () => {
|
||||||
return (
|
return (
|
||||||
<div id="projects">
|
<div id="projects">
|
||||||
<ProjectsSwiper />
|
<ProjectsSwiper key="wtf"/>
|
||||||
</div>
|
</div>
|
||||||
)
|
);
|
||||||
}
|
};
|
||||||
|
|
||||||
export default Projects
|
export default Projects;
|
||||||
|
|
|
||||||
|
|
@ -1,29 +1,26 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import "./services.style.scss";
|
import "./services.style.scss";
|
||||||
|
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
import Card from "../services-card/card.component";
|
import Card from "../services-card/card.component";
|
||||||
import Icon from "../../assets/images/main/services/icon3.svg";
|
import Icon from "../../assets/images/main/services/icon3.svg";
|
||||||
|
|
||||||
import Circle from "../../assets/images/main/services/circle.png"
|
import Circle from "../../assets/images/main/services/circle.png";
|
||||||
|
|
||||||
const Services = () => {
|
const Services = () => {
|
||||||
|
const { t, i18n } = useTranslation();
|
||||||
|
|
||||||
|
const cards = t("services.cards", { returnObjects: true });
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="container services">
|
<div className="container services">
|
||||||
<img src={Circle} alt="circle" className="circle" />
|
<img src={Circle} alt="circle" className="circle" />
|
||||||
<Card
|
{/* TODO: Add animated icons */}
|
||||||
icon={Icon}
|
{cards &&
|
||||||
title="Web development"
|
cards.map((card, i) => (
|
||||||
text="We build modern and easy to use websites, e-commerce solutions for desktop, mobile and tablet."
|
<Card icon={Icon} title={card.title} text={card.text} key={i} />
|
||||||
/>
|
))}
|
||||||
<Card
|
|
||||||
icon={Icon}
|
|
||||||
title="Mobile App"
|
|
||||||
text="We build modern and easy to use websites, e-commerce solutions for desktop, mobile and tablet."
|
|
||||||
/>
|
|
||||||
<Card
|
|
||||||
icon={Icon}
|
|
||||||
title="UI & Animations"
|
|
||||||
text="We build modern and easy to use websites, e-commerce solutions for desktop, mobile and tablet."
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,43 @@
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import "./swiper.style.scss";
|
import "./swiper.style.scss";
|
||||||
import Inflid from "../../assets/images/main/projects/inflid_full_1.png";
|
|
||||||
import CustomPC from "../../assets/images/main/projects/custom-pc4u.png";
|
import { useTranslation } from "react-i18next";
|
||||||
import Mockba from "../../assets/images/main/projects/mockba-modular.png";
|
|
||||||
import Pryatki from "../../assets/images/main/projects/pryatki.png";
|
|
||||||
import Sizzapp from "../../assets/images/main/projects/sizzapp.png";
|
|
||||||
import Trackpro from "../../assets/images/main/projects/trackpro.png";
|
|
||||||
import BrowserWrap from "../../assets/images/main/projects/browser-window.png";
|
|
||||||
|
|
||||||
import { Swiper, SwiperSlide } from "swiper/react";
|
import { Swiper, SwiperSlide } from "swiper/react";
|
||||||
import "swiper/css";
|
import "swiper/css";
|
||||||
import "swiper/css/effect-coverflow";
|
import "swiper/css/effect-coverflow";
|
||||||
import SwiperCore, { EffectCoverflow, Pagination } from "swiper";
|
import SwiperCore, { EffectCoverflow, Pagination } from "swiper";
|
||||||
import { Autoplay } from "swiper";
|
import { Autoplay } from "swiper";
|
||||||
|
|
||||||
SwiperCore.use([EffectCoverflow, Pagination]);
|
SwiperCore.use([EffectCoverflow, Pagination]);
|
||||||
|
|
||||||
|
const getImage = (image) => {
|
||||||
|
return require(`../../assets/images/main/projects/${image}`).default;
|
||||||
|
};
|
||||||
|
|
||||||
const ProjectsSwiper = () => {
|
const ProjectsSwiper = () => {
|
||||||
|
const { t } = useTranslation();
|
||||||
const [activeSlide, setSlide] = useState("");
|
const [activeSlide, setSlide] = useState("");
|
||||||
|
|
||||||
|
const projects = t("projects", { returnObjects: true });
|
||||||
|
|
||||||
|
const swiperProjects = projects.map((project, i) => (
|
||||||
|
<SwiperSlide key={`swiper-${i}`}>
|
||||||
|
<h2>{project.title}</h2>
|
||||||
|
<div className="img-wrap">
|
||||||
|
<img src={getImage(project.image)} alt="inflid" />
|
||||||
|
</div>
|
||||||
|
<div className="project-info">
|
||||||
|
<div>
|
||||||
|
{project.info.map((info, i) => (
|
||||||
|
<p key={`slide-info-${i}`}>{info}</p>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
<p>{projects.text}</p>
|
||||||
|
</div>
|
||||||
|
</SwiperSlide>
|
||||||
|
));
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Swiper
|
<Swiper
|
||||||
loop={true}
|
loop={true}
|
||||||
|
|
@ -53,90 +73,9 @@ const ProjectsSwiper = () => {
|
||||||
}}
|
}}
|
||||||
modules={[Autoplay]}
|
modules={[Autoplay]}
|
||||||
id={`active-slide-${activeSlide}`}
|
id={`active-slide-${activeSlide}`}
|
||||||
|
key={`our-swiper`}
|
||||||
>
|
>
|
||||||
<SwiperSlide id="project-slide-1">
|
{projects && swiperProjects}
|
||||||
<h2>Inflid</h2>
|
|
||||||
<div className="img-wrap">
|
|
||||||
<img src={Inflid} alt="inflid" />
|
|
||||||
</div>
|
|
||||||
<div className="project-info">
|
|
||||||
<div>
|
|
||||||
<p>Website</p>
|
|
||||||
<p>Platform</p>
|
|
||||||
<p>UI / UX</p>
|
|
||||||
</div>
|
|
||||||
<p>Smart matching platform for Streamers and Advertisers</p>
|
|
||||||
</div>
|
|
||||||
</SwiperSlide>
|
|
||||||
<SwiperSlide id="project-slide-2">
|
|
||||||
<h2>Custom PC4U</h2>
|
|
||||||
<div className="img-wrap">
|
|
||||||
<img src={CustomPC} alt="inflid" />
|
|
||||||
</div>
|
|
||||||
<div className="project-info">
|
|
||||||
<div>
|
|
||||||
<p>Website</p>
|
|
||||||
<p>Platform</p>
|
|
||||||
<p>UI / UX</p>
|
|
||||||
</div>
|
|
||||||
<p>Smart matching platform for Streamers and Advertisers</p>
|
|
||||||
</div>
|
|
||||||
</SwiperSlide>
|
|
||||||
<SwiperSlide id="project-slide-3">
|
|
||||||
<h2>MOCKBA MODULAR</h2>
|
|
||||||
<div className="img-wrap">
|
|
||||||
<img src={Mockba} alt="inflid" />
|
|
||||||
</div>
|
|
||||||
<div className="project-info">
|
|
||||||
<div>
|
|
||||||
<p>Website</p>
|
|
||||||
<p>Platform</p>
|
|
||||||
<p>UI / UX</p>
|
|
||||||
</div>
|
|
||||||
<p>Smart matching platform for Streamers and Advertisers</p>
|
|
||||||
</div>
|
|
||||||
</SwiperSlide>
|
|
||||||
<SwiperSlide id="project-slide-4">
|
|
||||||
<h2>PRIYATKI</h2>
|
|
||||||
<div className="img-wrap">
|
|
||||||
<img src={Pryatki} alt="inflid" />
|
|
||||||
</div>
|
|
||||||
<div className="project-info">
|
|
||||||
<div>
|
|
||||||
<p>Website</p>
|
|
||||||
<p>E-shop</p>
|
|
||||||
<p>CMS</p>
|
|
||||||
</div>
|
|
||||||
<p>Smart matching platform for Streamers and Advertisers</p>
|
|
||||||
</div>
|
|
||||||
</SwiperSlide>
|
|
||||||
<SwiperSlide id="project-slide-5">
|
|
||||||
<h2>SIZZAPP</h2>
|
|
||||||
<div className="img-wrap">
|
|
||||||
<img src={Sizzapp} alt="inflid" />
|
|
||||||
</div>
|
|
||||||
<div className="project-info">
|
|
||||||
<div>
|
|
||||||
<p>Website</p>
|
|
||||||
<p>Landing</p>
|
|
||||||
<p>UI/UX</p>
|
|
||||||
</div>
|
|
||||||
<p>Smart matching platform for Streamers and Advertisers</p>
|
|
||||||
</div>
|
|
||||||
</SwiperSlide>
|
|
||||||
<SwiperSlide id="project-slide-6">
|
|
||||||
<h2>TrackPro</h2>
|
|
||||||
<div className="img-wrap">
|
|
||||||
<img src={Trackpro} alt="inflid" />
|
|
||||||
</div>
|
|
||||||
<div className="project-info">
|
|
||||||
<div>
|
|
||||||
<p>Website</p>
|
|
||||||
<p>CMS</p>
|
|
||||||
</div>
|
|
||||||
<p>Smart matching platform for Streamers and Advertisers</p>
|
|
||||||
</div>
|
|
||||||
</SwiperSlide>
|
|
||||||
</Swiper>
|
</Swiper>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
31
src/pages/i18n.js
Normal file
31
src/pages/i18n.js
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
import i18n from "i18next";
|
||||||
|
import detector from "i18next-browser-languagedetector";
|
||||||
|
import { initReactI18next } from "react-i18next";
|
||||||
|
import en from "../translations/en.json";
|
||||||
|
import lv from "../translations/lv.json";
|
||||||
|
|
||||||
|
const resources = {
|
||||||
|
en: {
|
||||||
|
translation: en,
|
||||||
|
},
|
||||||
|
lv: {
|
||||||
|
translation: lv,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
i18n
|
||||||
|
.use(detector)
|
||||||
|
.use(initReactI18next) // passes i18n down to react-i18next
|
||||||
|
.init({
|
||||||
|
resources,
|
||||||
|
lng: "en", // language to use, more information here: https://www.i18next.com/overview/configuration-options#languages-namespaces-resources
|
||||||
|
// you can use the i18n.changeLanguage function to change the language manually: https://www.i18next.com/overview/api#changelanguage
|
||||||
|
// if you're using a language detector, do not define the lng option
|
||||||
|
fallbackLng: "en", // use en if detected lng is not available
|
||||||
|
|
||||||
|
interpolation: {
|
||||||
|
escapeValue: false, // react already safes from xss
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default i18n;
|
||||||
|
|
@ -1,13 +1,11 @@
|
||||||
import * as React from "react";
|
import * as React from "react";
|
||||||
|
|
||||||
import '../assets/stylesheets/style.scss';
|
import "../assets/stylesheets/style.scss";
|
||||||
|
|
||||||
import MidMainPage from "./main/main.component";
|
import MidMainPage from "./main/main.component";
|
||||||
|
|
||||||
const IndexPage = () => {
|
const IndexPage = () => {
|
||||||
return (
|
return <MidMainPage></MidMainPage>;
|
||||||
<MidMainPage></MidMainPage>
|
};
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export default IndexPage
|
export default IndexPage;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import "./main.style.scss";
|
import "./main.style.scss";
|
||||||
|
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
import MidHeader from "../../components/header/header.component";
|
import MidHeader from "../../components/header/header.component";
|
||||||
import Intro from "../../components/intro/intro.component";
|
import Intro from "../../components/intro/intro.component";
|
||||||
import MidSection from "../../components/section/section.component";
|
import MidSection from "../../components/section/section.component";
|
||||||
|
|
@ -11,16 +13,18 @@ import MidFooter from "../../components/footer/footer.component";
|
||||||
import Projects from "../../components/projects/projects.component";
|
import Projects from "../../components/projects/projects.component";
|
||||||
|
|
||||||
const MidMainPage = () => {
|
const MidMainPage = () => {
|
||||||
|
const { t, i18n } = useTranslation();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="main-page">
|
<div className="main-page">
|
||||||
<div className="intro-bg">
|
<div className="intro-bg">
|
||||||
<MidHeader />
|
<MidHeader />
|
||||||
<Intro />
|
<Intro />
|
||||||
</div>
|
</div>
|
||||||
<MidSection title="Services" id="services">
|
<MidSection title={t("services.title")} id="services">
|
||||||
<Services />
|
<Services />
|
||||||
</MidSection>
|
</MidSection>
|
||||||
<MidSection title="About Us" id="about-us">
|
<MidSection title={t("about_us.title")} id="about-us">
|
||||||
<About />
|
<About />
|
||||||
</MidSection>
|
</MidSection>
|
||||||
<MidSection id="projects">
|
<MidSection id="projects">
|
||||||
|
|
|
||||||
83
src/translations/en.json
Normal file
83
src/translations/en.json
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
{
|
||||||
|
"menu": {
|
||||||
|
"services": "Services",
|
||||||
|
"about_us": "About Us",
|
||||||
|
"portfolio": "Portfolio",
|
||||||
|
"pricing": "Pricing",
|
||||||
|
"contact_us": "Contact Us"
|
||||||
|
},
|
||||||
|
"intro": {
|
||||||
|
"creating": "We are creating",
|
||||||
|
"websites": "websites",
|
||||||
|
"apps": "Mobile apps",
|
||||||
|
"shops": "E-shops",
|
||||||
|
"platforms": "Platforms",
|
||||||
|
"explore": "Exlopre the Universe"
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"title": "Services",
|
||||||
|
"cards": [
|
||||||
|
{
|
||||||
|
"title": "Web development",
|
||||||
|
"text": "We build modern and easy to use websites, e-commerce solutions for desktop, mobile, tablet."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Mobile App",
|
||||||
|
"text": "We build modern and easy to use websites, e-commerce solutions for desktop, mobile, tablet."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "UI & Animations",
|
||||||
|
"text": "We build modern and easy to use websites, e-commerce solutions for desktop, mobile, tablet."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"about_us": {
|
||||||
|
"title": "About Us",
|
||||||
|
"sub_title": "You have some great ideas in mind?",
|
||||||
|
"text": "Working more than 6 years in the creative development industry we are sure that we can realize any complex project",
|
||||||
|
"amount_completed": "30+",
|
||||||
|
"completed": "Completed projects",
|
||||||
|
"amount_webpages": "400+",
|
||||||
|
"webpages": "Web Pages created",
|
||||||
|
"amount_experiance": "6+",
|
||||||
|
"experiance": "Years experiance"
|
||||||
|
},
|
||||||
|
"projects": [
|
||||||
|
{
|
||||||
|
"title": "Inflid",
|
||||||
|
"image": "inflid_full_1.png",
|
||||||
|
"info": ["Website", "Platform", "UI / UX"],
|
||||||
|
"text": "Smart matching platform for Streamers and Advertisers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Custom PC4U",
|
||||||
|
"image": "custom-pc4u.png",
|
||||||
|
"info": ["Website", "Platform", "UI / UX"],
|
||||||
|
"text": "Smart matching platform for Streamers and Advertisers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "MOCKBA MODULAR",
|
||||||
|
"image": "mockba-modular.png",
|
||||||
|
"info": ["Website", "Animations", "UI / UX"],
|
||||||
|
"text": "Smart matching platform for Streamers and Advertisers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "PRIYATKI",
|
||||||
|
"image": "pryatki.png",
|
||||||
|
"info": ["Website", "E-shop", "CMS"],
|
||||||
|
"text": "Smart matching platform for Streamers and Advertisers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "SIZZAPP",
|
||||||
|
"image": "sizzapp.png",
|
||||||
|
"info": ["Website", "Landing", "UI / UX"],
|
||||||
|
"text": "Smart matching platform for Streamers and Advertisers"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "TrackPro",
|
||||||
|
"image": "trackpro.png",
|
||||||
|
"info": ["Website", "CMS"],
|
||||||
|
"text": "Smart matching platform for Streamers and Advertisers"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
45
src/translations/lv.json
Normal file
45
src/translations/lv.json
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
{
|
||||||
|
"menu": {
|
||||||
|
"services": "Servisi",
|
||||||
|
"about_us": "Par mums",
|
||||||
|
"portfolio": "Portfolio",
|
||||||
|
"pricing": "Cenas",
|
||||||
|
"contact_us": "Sazināties"
|
||||||
|
},
|
||||||
|
"intro": {
|
||||||
|
"creating": "Mēs izstrādājam",
|
||||||
|
"websites": "mājas lapas",
|
||||||
|
"apps": "Mobīlās applikācijas",
|
||||||
|
"shops": "E-veikalus",
|
||||||
|
"platforms": "Platformas",
|
||||||
|
"explore": "Atklāj visumu"
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"title": "Servisi",
|
||||||
|
"cards": [
|
||||||
|
{
|
||||||
|
"title": "Mājas lapas",
|
||||||
|
"text": "Mēs izstrādājam modernas un ērti lietojamas mājas lapas un e-komercijas risinājumus."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "Mobīlās aplikācijas",
|
||||||
|
"text": "Mēs izstrādājam modernas un ērti lietojamas mājas lapas un e-komercijas risinājumus."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "UI & Animācijas",
|
||||||
|
"text": "Mēs izstrādājam modernas un ērti lietojamas mājas lapas un e-komercijas risinājumus."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"about_us": {
|
||||||
|
"title": "Par Mums",
|
||||||
|
"sub_title": "Vai tev ir kāda lieliska ideja prātā?",
|
||||||
|
"text": "Mums ir vairāk kā sešu gadu pieredze radošās izstrādes industrijā un esam spējīgi realizēt jebkādas sarežģītības projektus",
|
||||||
|
"amount_completed": "30+",
|
||||||
|
"completed": "Realizētu projektu",
|
||||||
|
"amount_webpages": "400+",
|
||||||
|
"webpages": "Izstrādātu mājas lapu",
|
||||||
|
"amount_experiance": "6+",
|
||||||
|
"experiance": "Gadu pieredze"
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue