Refactorizar e eficientar codigo de traducciones
This commit is contained in:
parent
21f1c24d88
commit
3beaa13073
@ -1,16 +1,13 @@
|
||||
import React,{ useEffect, useState } from 'react';
|
||||
import React,{ useEffect, useState,useContext } from 'react';
|
||||
import { Link } from 'gatsby';
|
||||
import DOMPurify from 'dompurify';
|
||||
import { useIntl, FormattedMessage } from "gatsby-plugin-intl";
|
||||
import api from '../../common/api';
|
||||
import { LanguageContext } from 'context/LanguageContext';
|
||||
import UrlHelper from '../../common/urlHelper';
|
||||
|
||||
const About = () => {
|
||||
const intl = useIntl();
|
||||
const about_title1= DOMPurify.sanitize(intl.formatMessage({ id: "about_title1" }).trim().replace(/^"|"$/g, ''));
|
||||
const about_title5= DOMPurify.sanitize(intl.formatMessage({ id: "about_title5" }).trim().replace(/^"|"$/g, ''));
|
||||
const [dataAbout, setAboutData] = useState({numbers: [], features: []});
|
||||
const urlHelper = new UrlHelper(intl.locale);
|
||||
const { currentLanguage } = useContext(LanguageContext);
|
||||
const [dataAbout, setAboutData] = useState({numbers: [], features: [], translations: []});
|
||||
const urlHelper = new UrlHelper(currentLanguage);
|
||||
|
||||
useEffect(() => {
|
||||
const fetchData = async () => {
|
||||
@ -23,7 +20,9 @@ const About = () => {
|
||||
};
|
||||
|
||||
fetchData();
|
||||
}, []);
|
||||
}, [currentLanguage]);
|
||||
|
||||
const getTranslation = (translations, key) => translations.map(t => t[key][currentLanguage]).join('');
|
||||
|
||||
return (
|
||||
<section className="about section-padding style-3" data-scroll-index="3">
|
||||
@ -35,7 +34,7 @@ const About = () => {
|
||||
<div className="info-circle" key={index}>
|
||||
<div className="cont">
|
||||
<h2>{ number.value }</h2>
|
||||
<small>{intl.locale === 'en' ? number.title2 : number.title }</small>
|
||||
<small>{ number.title && number.title[currentLanguage] }</small>
|
||||
</div>
|
||||
</div>
|
||||
))
|
||||
@ -45,20 +44,20 @@ const About = () => {
|
||||
<div className="row gx-0 justify-content-end">
|
||||
<div className="col-lg-5">
|
||||
<div className="info">
|
||||
<div className="section-head long-shape mb-40 style-3" dangerouslySetInnerHTML={{ __html: about_title1 }}>
|
||||
<div className="section-head long-shape mb-40 style-3" dangerouslySetInnerHTML={{ __html: getTranslation(dataAbout.translations, 'about_title1') }}>
|
||||
|
||||
</div>
|
||||
<h5 className="h5">
|
||||
{intl.formatMessage({ id: "about_title2" })}
|
||||
{getTranslation(dataAbout.translations, 'about_title2')}
|
||||
</h5>
|
||||
<div className="text mb-20">
|
||||
{intl.formatMessage({ id: "about_title3" })}
|
||||
{getTranslation(dataAbout.translations, 'about_title3')}
|
||||
</div>
|
||||
<div className="text mb-70">
|
||||
{intl.formatMessage({ id: "about_title4" })}
|
||||
{getTranslation(dataAbout.translations, 'about_title4')}
|
||||
</div>
|
||||
<Link to={urlHelper.getLocalizedUrl('/page-about-5')} className="btn rounded-pill bg-blue2 sm-butn text-white">
|
||||
<span><FormattedMessage id="more_about" defaultMessage="Loading..." /></span>
|
||||
<Link to={urlHelper.getLocalizedUrl('#')} className="btn rounded-pill bg-blue2 sm-butn text-white">
|
||||
<span>{getTranslation(dataAbout.translations, 'more_about')}</span>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
@ -70,19 +69,19 @@ const About = () => {
|
||||
<div className="row">
|
||||
<div className="col-lg-5">
|
||||
<div className="info pe-lg-5">
|
||||
<div className="section-head mb-40 style-3" dangerouslySetInnerHTML={{ __html: about_title5 }}>
|
||||
<div className="section-head mb-40 style-3" dangerouslySetInnerHTML={{ __html: getTranslation(dataAbout.translations, 'about_title5') }}>
|
||||
|
||||
</div>
|
||||
<div className="text mb-30">
|
||||
{intl.formatMessage({ id: "about_title6" })}
|
||||
{getTranslation(dataAbout.translations, 'about_title6')}
|
||||
</div>
|
||||
<ul>
|
||||
{
|
||||
dataAbout.features.map((feature, index) => (<li key={index}> <i className="bi bi-star-fill me-3"></i> {intl.locale === 'en' ? feature.titleEn : feature.titleEs}</li>))
|
||||
dataAbout.features.map((feature, index) => (<li key={index}> <i className="bi bi-star-fill me-3"></i> {feature.title && feature.title[currentLanguage]}</li>))
|
||||
}
|
||||
</ul>
|
||||
<Link to={urlHelper.getLocalizedUrl('/page-about-5')} className="btn rounded-pill border-blue2 hover-blue2 mt-60 sm-butn">
|
||||
<span>{intl.formatMessage({ id: "about_title7" })}</span>
|
||||
<Link to={urlHelper.getLocalizedUrl('#')} className="btn rounded-pill border-blue2 hover-blue2 mt-60 sm-butn">
|
||||
<span>{getTranslation(dataAbout.translations, 'about_title7')}</span>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
@ -95,6 +94,4 @@ const About = () => {
|
||||
</section>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
export default About
|
||||
@ -1,15 +1,13 @@
|
||||
import React,{ useEffect, useState } from 'react';
|
||||
import React,{ useEffect, useState,useContext } from 'react';
|
||||
import { Link } from 'gatsby';
|
||||
import DOMPurify from 'dompurify';
|
||||
import data from 'data/Software/blog.json';
|
||||
import { useIntl } from "gatsby-plugin-intl";
|
||||
import api from '../../common/api';
|
||||
import { LanguageContext } from '../../context/LanguageContext';
|
||||
|
||||
|
||||
const Blog = () => {
|
||||
const intl = useIntl();
|
||||
//const blog_title1= DOMPurify.sanitize(intl.formatMessage({ id: "blog_title1" }).trim().replace(/^"|"$/g, ''));
|
||||
const { currentLanguage } = useContext(LanguageContext);
|
||||
const [dataBlog, setBlogs] = useState({blogs: [], faq: [],clients: [],text_traductions:[]});
|
||||
const blog_titleResult = intl.locale === 'es' ? dataBlog.text_traductions.blog_title1_es : dataBlog.text_traductions.en.blog_title1_en;
|
||||
const blog_titleResult = dataBlog.text_traductions[currentLanguage] && dataBlog.text_traductions[currentLanguage].blog_title1;
|
||||
|
||||
useEffect(() => {
|
||||
const fetchData = async () => {
|
||||
@ -31,11 +29,11 @@ const Blog = () => {
|
||||
<div className="blog-content">
|
||||
<div className="section-head style-3 d-flex align-items-center mb-50" >
|
||||
<div dangerouslySetInnerHTML={{ __html: blog_titleResult }}></div>
|
||||
<Link to="/page-blog-5" className="text-muted ms-5 ps-5 mt-2">{intl.locale === 'es' ? dataBlog.text_traductions.all_articles_es : dataBlog.text_traductions.all_articles_en} <i className="bi bi-chevron-right ms-1"></i></Link>
|
||||
<Link to="/page-blog-5" className="text-muted ms-5 ps-5 mt-2">{dataBlog.text_traductions[currentLanguage] && dataBlog.text_traductions[currentLanguage].all_articles} <i className="bi bi-chevron-right ms-1"></i></Link>
|
||||
</div>
|
||||
{
|
||||
dataBlog.blogs.map((post, i) => (
|
||||
<div className={`card border-0 bg-transparent rounded-0 ${i !== data.blogs.length - 1 ? 'border-bottom brd-gray':''} pb-4 mb-4`} key={i}>
|
||||
<div className={`card border-0 bg-transparent rounded-0 ${i !== dataBlog.blogs.length - 1 ? 'border-bottom brd-gray':''} pb-4 mb-4`} key={i}>
|
||||
<div className="row align-items-center">
|
||||
<div className="col-lg-4">
|
||||
<Link to="/page-single-post-5" className="img img-cover">
|
||||
@ -45,18 +43,18 @@ const Blog = () => {
|
||||
<div className="col-lg-8">
|
||||
<div className="card-body p-0">
|
||||
<small className="d-block date text">
|
||||
<a href="#" className="text-uppercase border-end brd-light pe-3 me-3 color-blue2 fw-bold">{ intl.locale === 'es' ? post.type.es : post.type.en }</a>
|
||||
<a href="#" className="text-uppercase border-end brd-light pe-3 me-3 color-blue2 fw-bold">{post.type && post.type[currentLanguage]}</a>
|
||||
<i className="bi bi-clock me-1"></i>
|
||||
<a href="#" className="op-8">{ intl.locale === 'es' ? post.time_es : post.time_en }</a>
|
||||
<a href="#" className="op-8">{ post.time && post.time[currentLanguage]}</a>
|
||||
</small>
|
||||
<h6 className="card-title"><Link to="/page-single-post-5">{ intl.locale === 'es' ? post.title_es : post.title_en }</Link></h6>
|
||||
<h6 className="card-title"><Link to="/page-single-post-5">{ post.title && post.title[currentLanguage]}</Link></h6>
|
||||
<div className="d-flex small mt-20 align-items-center justify-content-between op-9">
|
||||
<div className="l_side d-flex align-items-center">
|
||||
<span className="icon-10 rounded-circle d-inline-flex justify-content-center align-items-center text-uppercase bg-blue2 p-2 me-2 text-white">
|
||||
{ post.userImage }
|
||||
</span>
|
||||
<a href="#">
|
||||
<small className="text-muted">{intl.locale === 'es' ? dataBlog.text_traductions.by_es : dataBlog.text_traductions.by_en}</small> { post.username }
|
||||
<small className="text-muted">{ post.by && post.by[currentLanguage]}</small> { post.username }
|
||||
</a>
|
||||
</div>
|
||||
<div className="r-side mt-1">
|
||||
@ -85,19 +83,19 @@ const Blog = () => {
|
||||
<div className="accordion-item" key={index}>
|
||||
<h2 className="accordion-header" id={`heading${index+1}`}>
|
||||
<button className={`accordion-button ${index === 0 ? '':'collapsed'}`} type="button" data-bs-toggle="collapse" data-bs-target={`#collapse${index+1}`} aria-expanded="true" aria-controls={`collapse${index+1}`}>
|
||||
{ item.question }
|
||||
{ item.question && item.question[currentLanguage] }
|
||||
</button>
|
||||
</h2>
|
||||
<div id={`collapse${index+1}`} className={`accordion-collapse collapse ${index === 0 ? 'show':''}`} aria-labelledby={`heading${index+1}`} data-bs-parent="#accordionExample">
|
||||
<div className="accordion-body">
|
||||
{ item.answer }
|
||||
{ item.answer && item.answer[currentLanguage] }
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
))
|
||||
}
|
||||
<Link to="/page-contact-5" className="text-muted text-uppercase mt-50 small">
|
||||
{intl.locale === 'es' ? dataBlog.text_traductions.see_more_es : dataBlog.text_traductions.see_more_en} <i className="bi bi-chevron-right ms-1"></i>
|
||||
{dataBlog.text_traductions[currentLanguage] && dataBlog.text_traductions[currentLanguage].see_more} <i className="bi bi-chevron-right ms-1"></i>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -1,13 +1,9 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import { useIntl } from "gatsby-plugin-intl";
|
||||
import React, { useEffect, useState, useContext } from 'react';
|
||||
import api from '../../common/api';
|
||||
|
||||
import { LanguageContext } from '../../context/LanguageContext';
|
||||
const Header = () => {
|
||||
const intl = useIntl();
|
||||
const [headers, setHeaders] = useState({es:[], en:[]});
|
||||
//const header_1= DOMPurify.sanitize(intl.formatMessage({ id: "header_1" }).trim().replace(/^"|"$/g, ''));
|
||||
const header_1Result = intl.locale === 'es' ? headers.es.header_1 : headers.en.header_1
|
||||
|
||||
const { currentLanguage } = useContext(LanguageContext);
|
||||
const [headers, setHeaders] = useState([]);
|
||||
useEffect(() => {
|
||||
const fetchData = async () => {
|
||||
try {
|
||||
@ -19,37 +15,37 @@ const Header = () => {
|
||||
};
|
||||
|
||||
fetchData();
|
||||
}, []);
|
||||
}, [], [currentLanguage]);
|
||||
const getTranslation = (headers, key) => headers.map(t => t[key][currentLanguage]).join('');
|
||||
|
||||
return (
|
||||
|
||||
<header className="style-3 overflow-hidden" data-scroll-index="0">
|
||||
<div className="container">
|
||||
<div className="content section-padding">
|
||||
<div className="row">
|
||||
<div className="col-lg-5">
|
||||
<div className="info">
|
||||
<h1 className="h1" dangerouslySetInnerHTML={{ __html: header_1Result }}></h1>
|
||||
<h1 className="h1" dangerouslySetInnerHTML={{ __html: getTranslation(headers, 'header_1') }}></h1>
|
||||
<p className="p"></p>
|
||||
<h5 className="h5">{intl.locale === 'es' ? headers.es.header_2 : headers.en.header_2}<span className="fw-normal ms-1">{intl.locale === 'es' ? headers.es.header_3 : headers.en.header_3}</span></h5>
|
||||
<h5 className="h5">{getTranslation(headers, 'header_2')}<span className="fw-normal ms-1">{getTranslation(headers, 'header_3')}</span></h5>
|
||||
<form action="contact.php" className="form mt-30" method="post">
|
||||
<div className="row gx-3">
|
||||
<div className="col-6">
|
||||
<div className="form-group input-with-icon">
|
||||
<input type="text" className="form-control" placeholder={intl.locale === 'es' ? headers.es.your_email : headers.en.your_email} />
|
||||
<input type="text" className="form-control" placeholder={getTranslation(headers, 'your_email')} />
|
||||
<span className="input-icon"><i className="far fa-envelope"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-6">
|
||||
<div className="form-group">
|
||||
<select className="form-select" defaultValue={"Your inquiry about"}>
|
||||
<option value="">{intl.locale === 'es' ? headers.es.inquiry_about : headers.en.inquiry_about}</option>
|
||||
<option value="">{getTranslation(headers, 'inquiry_about')}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-12">
|
||||
<button className="btn dark-butn hover-darkBlue rounded-pill w-100 mt-3">
|
||||
<span>{intl.locale === 'es' ? headers.es.request_a_consultation : headers.en.request_a_consultation}</span>
|
||||
<span>{getTranslation(headers, 'request_a_consultation')}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -1,8 +1,33 @@
|
||||
import React from 'react';
|
||||
import React,{ useEffect, useState,useContext } from 'react';
|
||||
import { Link } from 'gatsby';
|
||||
import plans from 'data/Software/plans.json';
|
||||
import { LanguageContext } from '../../context/LanguageContext';
|
||||
import api from '../../common/api';
|
||||
|
||||
|
||||
const Pricing = () => {
|
||||
const { currentLanguage } = useContext(LanguageContext);
|
||||
const [plansData, setPlansData] = useState({ plans: [], text_traductions: {} });
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
const fetchData = async () => {
|
||||
try {
|
||||
const response = await api.get('plan','plans.json');
|
||||
setPlansData(response);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
};
|
||||
|
||||
fetchData();
|
||||
}, []);
|
||||
|
||||
const { plans, text_traductions } = plansData;
|
||||
|
||||
if (!plansData || plansData.length === 0) {
|
||||
return <div>Loading...</div>;
|
||||
}
|
||||
|
||||
return (
|
||||
<section className="pricing style-3" data-scroll-index="5">
|
||||
<div className="container">
|
||||
@ -11,18 +36,16 @@ const Pricing = () => {
|
||||
<div className="col-lg-4">
|
||||
<div className="info">
|
||||
<div className="section-head style-3 mb-40">
|
||||
<h3> Affordable <span> Price </span></h3>
|
||||
<h3> {text_traductions.title && text_traductions.title[currentLanguage]} <span> {text_traductions.title2 && text_traductions.title2[currentLanguage]} </span></h3>
|
||||
</div>
|
||||
<small className="text text-gray mb-30">
|
||||
Kick-start your project with our pricing plan. We handle all the practical aspects
|
||||
related to hiring and hosting your team at our premises, thus saving you half a cost
|
||||
and a lot of efforts. Lorem ispum dolor sit amet
|
||||
{text_traductions.subtitle1 && text_traductions.subtitle1[currentLanguage]}
|
||||
</small>
|
||||
<small className="text text-gray d-block">
|
||||
Not find your plan, need a tailored-plan? <br /> <a href="#" className="color-blue2 text-decoration-underline">Contact</a> us now!
|
||||
{text_traductions.subtitle2 && text_traductions.subtitle2[currentLanguage]} <br /> <a href="#" className="color-blue2 text-decoration-underline"> {text_traductions.contact && text_traductions.contact[currentLanguage]}</a> {text_traductions.us_now && text_traductions.us_now[currentLanguage]}
|
||||
</small>
|
||||
<Link to="/page-services-5" className="btn rounded-pill border-blue2 hover-blue2 mt-60 sm-butn">
|
||||
<span>Our Services</span>
|
||||
<span>{text_traductions.our_services_button && text_traductions.our_services_button[currentLanguage]}</span>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
@ -35,12 +58,12 @@ const Pricing = () => {
|
||||
<div className={`pricing-card ${plan.recommended ? 'dark-card':''} style-3 mb-30 mb-lg-0`}>
|
||||
<div className="card-head">
|
||||
<div className="title">
|
||||
<h4>{ plan.title } { plan.recommended && <small>Recommended</small> }</h4>
|
||||
<h4>{ plan.title } { plan.recommended && <small>{text_traductions.recommend && text_traductions.recommend[currentLanguage]}</small> }</h4>
|
||||
<small>{ plan.description }</small>
|
||||
</div>
|
||||
<div className="price">
|
||||
<h5>{ plan.price }</h5>
|
||||
<small>per month</small>
|
||||
<small>{text_traductions.per_month && text_traductions.per_month[currentLanguage]}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div className="card-body">
|
||||
@ -56,7 +79,7 @@ const Pricing = () => {
|
||||
</ul>
|
||||
</div>
|
||||
<Link to="/page-contact-5" className="btn rounded-pill bg-blue2 sm-butn w-100 text-white">
|
||||
<span>Get Started Now</span>
|
||||
<span>{text_traductions.get_started_now && text_traductions.get_started_now[currentLanguage]}</span>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
import React ,{ useEffect, useState }from 'react';
|
||||
import { Link } from 'gatsby';
|
||||
import { useIntl } from "gatsby-plugin-intl";
|
||||
//import services from '/static/data/services.json';
|
||||
import api from '../../common/api';
|
||||
|
||||
const Services = () => {
|
||||
@ -25,7 +24,7 @@ const Services = () => {
|
||||
<section className="services style-3 section-padding pb-70" data-scroll-index="2">
|
||||
<div className="container">
|
||||
<div className="section-head style-3 d-flex align-items-center">
|
||||
<h3>{intl.formatMessage({ id: "our_main" })} <span>{intl.formatMessage({ id: "services" })}</span></h3> <Link to="/page-services-5" className="text-muted ms-5 ps-5 mt-2">{intl.formatMessage({ id: "see_full_services" })} <i className="bi bi-chevron-right ms-1"></i></Link>
|
||||
<h3>{intl.formatMessage({ id: "our_main" })} <span>{intl.formatMessage({ id: "services" })}</span></h3> {/* <Link to="#" className="text-muted ms-5 ps-5 mt-2">{intl.formatMessage({ id: "see_full_services" })} <i className="bi bi-chevron-right ms-1"></i></Link>*/}
|
||||
</div>
|
||||
<div className="row">
|
||||
{
|
||||
@ -40,7 +39,7 @@ const Services = () => {
|
||||
<div className="text">
|
||||
{intl.locale === 'en' ? service.details_en : service.details_es}
|
||||
</div>
|
||||
<Link to="/page-portfolio-5"><span>{intl.formatMessage({ id: "see_projects" })}</span> <i className="bi bi-chevron-right ms-1"></i></Link>
|
||||
{/* <Link to="#"><span>{intl.formatMessage({ id: "see_projects" })}</span> <i className="bi bi-chevron-right ms-1"></i></Link> */}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -9,7 +9,7 @@ import Services from 'components/Software/Services';
|
||||
import About from 'components/Software/About';
|
||||
import Projects from 'components/Software/Projects';
|
||||
import Pricing from 'components/Software/Pricing';
|
||||
import Team from 'components/Software/Team';
|
||||
//import Team from 'components/Software/Team';
|
||||
import Blog from 'components/Software/Blog';
|
||||
import ChatBanner from 'components/Software/ChatBanner';
|
||||
import Footer from 'components/Software/Footer';
|
||||
|
||||
@ -3,36 +3,79 @@
|
||||
"numbers": [
|
||||
{
|
||||
"value": "50",
|
||||
"title": "Proyectos realizados",
|
||||
"title2":"Projects done"
|
||||
"title": {"es":"Proyectos completados","en":"Projects done"}
|
||||
},
|
||||
{
|
||||
"value": "165",
|
||||
"title": "Clientes satisfechos",
|
||||
"title2":"satisfied clients"
|
||||
"title": {"es":"Clientes satisfechos","en":"satisfied clients"}
|
||||
},
|
||||
{
|
||||
"value": "5",
|
||||
"title": "años de experiencia",
|
||||
"title2":"years of experience"
|
||||
"title": {"es":"años de experiencia","en":"years of experience"}
|
||||
}
|
||||
],
|
||||
"features": [
|
||||
{
|
||||
"titleEs":"Últimas soluciones de TI e integración con Blockchain",
|
||||
"titleEn":"Latest IT Solutions & Integration With Blockchain"
|
||||
"title":{
|
||||
"es":"Últimas soluciones de TI e integración con Blockchain",
|
||||
"en":"Latest IT Solutions & Integration With Blockchain"
|
||||
}
|
||||
},
|
||||
{
|
||||
"titleEs":"Soporte para más de 100 pasarelas de pago",
|
||||
"titleEn":"Over 100+ Payment Gateways Support"
|
||||
"title":{
|
||||
"es":"Soporte para más de 100 pasarelas de pago",
|
||||
"en":"Over 100+ Payment Gateways Support"
|
||||
}
|
||||
},
|
||||
{
|
||||
"titleEs":"Máquina de IA y aprendizaje profundo",
|
||||
"titleEn":"AI Machine & Deep Learning"
|
||||
"title":{
|
||||
"es":"Máquina de IA y aprendizaje profundo",
|
||||
"en":"AI Machine & Deep Learning"
|
||||
}
|
||||
},
|
||||
{
|
||||
"titleEs":"Soporte dedicado 24/7",
|
||||
"titleEn":"Dedicated Support 24/7"
|
||||
"title":{
|
||||
"es":"Soporte dedicado 24/7",
|
||||
"en":"Dedicated Support 24/7"
|
||||
}
|
||||
}
|
||||
|
||||
],
|
||||
"translations": [
|
||||
{
|
||||
"about_title1":{
|
||||
"es":"<h3>Nextream’s <span>Misión & Vision</span></h3>",
|
||||
"en":"<h3>Nextream’s <span>Mission & Vision</span></h3>"
|
||||
},
|
||||
"about_title2":{
|
||||
"es":"“Sólo cuando funcionan mal las máquinas te recuerdan lo poderosas que son.”",
|
||||
"en":"“Solving problems with machines is like remembering the powerful things that are.”"
|
||||
},
|
||||
"about_title3":{
|
||||
"es":" Nextream Co es el socio elegido por muchas de las empresas, pymes y desafíos tecnológicos líderes del mundo. Ayudamos a las empresas a aumentar su valor mediante el desarrollo de software personalizado, diseño de productos, control de calidad y servicios de consultoría.",
|
||||
"en":"Nextream Co is the chosen partner for many of the world's leading companies, SMEs and technological challenges. We help companies increase their value through custom software development, product design, quality control and consulting services."
|
||||
},
|
||||
"about_title4":{
|
||||
"es":" Nextream está especializado en servicios tecnológicos y relacionados con TI como ingeniería de producto, gestión de garantías, construcción de nube, etc.",
|
||||
"en":"Nextream is specialized in technical services and related to TI, including product management, warranty management, cloud building, etc."
|
||||
},
|
||||
"about_title5":{
|
||||
"es":"<h3>Nextream’s <span>Tecnología</span></h3>",
|
||||
"en":"<h3>Nextream’s <span>Technology</span></h3>"
|
||||
},
|
||||
"about_title6":{
|
||||
"es":"Nuestro equipo puede ayudarlo a transformar su negocio a través de las últimas capacidades tecnológicas para mantenerse a la vanguardia.",
|
||||
"en":"Our team can help you to transform your business into the most technological capabilities to stay ahead of the curve."
|
||||
},
|
||||
"about_title7":{
|
||||
"es":"Cómo trabajamos",
|
||||
"en":"How we work"
|
||||
},
|
||||
"more_about":{
|
||||
"es":"Más sobre nosotros",
|
||||
"en":"More About Us"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
]
|
||||
|
||||
@ -7,57 +7,102 @@
|
||||
"en": "tips & tricks",
|
||||
"es": "trucos & tips"
|
||||
},
|
||||
"time_en": "12 Days ago",
|
||||
"title_en": "How To Become A Python Develop Expert",
|
||||
"type_es": "trucos & tips",
|
||||
"time_es": "Hace 12 días",
|
||||
"title_es": "Cómo convertirse en un experto en desarrollo de Python",
|
||||
"time": {
|
||||
"en": "12 Days ago",
|
||||
"es": "Hace 12 día"
|
||||
},
|
||||
"title":{
|
||||
"en": "How To Become A Python Develop Expert",
|
||||
"es": "Cómo convertirse en un experto en desarrollo de Python"
|
||||
},
|
||||
"userImage": "a",
|
||||
"username": "Admin"
|
||||
},
|
||||
{
|
||||
"cover": "/assets/img/blog/7.png",
|
||||
"type_en": "News",
|
||||
"time_en": "5 Days ago",
|
||||
"title_en": "AI With Fingerprint",
|
||||
"type_es": "Noticias",
|
||||
"time_es": "Hace 5 días",
|
||||
"title_es": "IA con huella digital",
|
||||
"type": {
|
||||
"en": "News",
|
||||
"es": "Noticias"
|
||||
},
|
||||
"time": {
|
||||
"en": "5 Days ago",
|
||||
"es": "Hace 5 días"
|
||||
},
|
||||
"title":{
|
||||
"en": "AI With Fingerprint",
|
||||
"es": "IA con huella digital"
|
||||
},
|
||||
"userImage": "a",
|
||||
"username": "Admin"
|
||||
},
|
||||
{
|
||||
"cover": "/assets/img/blog/8.png",
|
||||
"type_en": "tips & tricks",
|
||||
"time_en": "1 month ago",
|
||||
"title_en": "Solutions For Big Data Issue, Expert Perspective",
|
||||
"type_es": "trucos & tips",
|
||||
"time_es": "Hace 1 mes",
|
||||
"title_es": "Soluciones para el problema de Big Data, perspectiva de expertos",
|
||||
"type": {
|
||||
"en": "tips & tricks",
|
||||
"es": "trucos & tips"
|
||||
},
|
||||
"time": {
|
||||
"en": "1 month ago",
|
||||
"es": "Hace 1 mes"
|
||||
},
|
||||
"title":{
|
||||
"en": "Solutions For Big Data Issue, Expert Perspective",
|
||||
"es": "Soluciones para el problema de Big Data, perspectiva de expertos"
|
||||
},
|
||||
"userImage": "a",
|
||||
"username": "Admin"
|
||||
}
|
||||
],
|
||||
"faq": [
|
||||
{
|
||||
"question": "How Benefit That I Got When Choose Basic Plan?",
|
||||
"answer": "Through the collaboration with customers in discussing needs and demand, we're able to attain mutual understanding, gain customer trust to offer appropriate advice"
|
||||
"question":{
|
||||
"es": "¿Cómo beneficio que obtengo al elegir el plan básico?",
|
||||
"en": "How Benefit That I Got When Choose Basic Plan?"
|
||||
},
|
||||
"answer":{
|
||||
"es": "A través de la colaboración con los clientes en la discusión de necesidades y demandas, podemos lograr una comprensión mutua, ganar la confianza del cliente para ofrecer consejos apropiados",
|
||||
"en": "Through the collaboration with customers in discussing needs and demand, we're able to attain mutual understanding, gain customer trust to offer appropriate advice"
|
||||
}
|
||||
},
|
||||
{
|
||||
"question": "Can I Pay With Paypal or Payoneer?",
|
||||
"answer": "Through the collaboration with customers in discussing needs and demand, we're able to attain mutual understanding, gain customer trust to offer appropriate advice"
|
||||
"question":{
|
||||
"es": "¿Puedo pagar con Paypal o Payoneer?",
|
||||
"en": "Can I Pay With Paypal or Payoneer?"
|
||||
},
|
||||
"answer":{
|
||||
"es": "A través de la colaboración con los clientes en la discusión de necesidades y demandas, podemos lograr una comprensión mutua, ganar la confianza del cliente para ofrecer consejos apropiados",
|
||||
"en": "Through the collaboration with customers in discussing needs and demand, we're able to attain mutual understanding, gain customer trust to offer appropriate advice"
|
||||
}
|
||||
},
|
||||
{
|
||||
"question": "How Long For A Standard Project?",
|
||||
"answer": "Through the collaboration with customers in discussing needs and demand, we're able to attain mutual understanding, gain customer trust to offer appropriate advice"
|
||||
"question":{
|
||||
"es": "¿Cuanto tiempo dura un proyecto estandar?",
|
||||
"en": "How Long For A Standard Project?"
|
||||
},
|
||||
"answer":{
|
||||
"es": "A través de la colaboración con los clientes en la discusión de necesidades y demandas, podemos lograr una comprensión mutua, ganar la confianza del cliente para ofrecer consejos apropiados",
|
||||
"en": "Through the collaboration with customers in discussing needs and demand, we're able to attain mutual understanding, gain customer trust to offer appropriate advice"
|
||||
}
|
||||
},
|
||||
{
|
||||
"question": "How About Data Security & NDA Agreement?",
|
||||
"answer": "Through the collaboration with customers in discussing needs and demand, we're able to attain mutual understanding, gain customer trust to offer appropriate advice"
|
||||
"question":{
|
||||
"es": "¿Cual es el acuerdo de seguridad de datos y NDA?",
|
||||
"en": "How About Data Security & NDA Agreement?"
|
||||
},
|
||||
"answer":{
|
||||
"es": "A través de la colaboración con los clientes en la discusión de necesidades y demandas, podemos lograr una comprensión mutua, ganar la confianza del cliente para ofrecer consejos apropiados",
|
||||
"en": "Through the collaboration with customers in discussing needs and demand, we're able to attain mutual understanding, gain customer trust to offer appropriate advice"
|
||||
}
|
||||
},
|
||||
{
|
||||
"question": "Can We Make An Own Tailored-AI ?",
|
||||
"answer": "Through the collaboration with customers in discussing needs and demand, we're able to attain mutual understanding, gain customer trust to offer appropriate advice"
|
||||
"question":{
|
||||
"es": "¿Puedo hacer un propio Tailored-AI ?",
|
||||
"en": "Can We Make An Own Tailored-AI ?"
|
||||
},
|
||||
"answer":{
|
||||
"es": "A través de la colaboración con los clientes en la discusión de necesidades y demandas, podemos lograr una comprensión mutua, ganar la confianza del cliente para ofrecer consejos apropiados",
|
||||
"en": "Through the collaboration with customers in discussing needs and demand, we're able to attain mutual understanding, gain customer trust to offer appropriate advice"
|
||||
}
|
||||
}
|
||||
],
|
||||
"clients": [
|
||||
@ -69,14 +114,18 @@
|
||||
"/assets/img/logos/6.png"
|
||||
],
|
||||
"text_traductions":{
|
||||
"blog_title1_es":"<h3>Nextream <span>Noticias</span></h3> ",
|
||||
"all_articles_es":"Ver artículos",
|
||||
"by_es":"Por",
|
||||
"see_more_es":"Ver Más",
|
||||
"blog_title1_en":"<h3>Nextream's <span>Journal</span></h3>",
|
||||
"all_articles_en":"All Articles",
|
||||
"by_en":"By",
|
||||
"see_more_en":"See More"
|
||||
"es":{
|
||||
"blog_title1":"<h3>Nextream <span>Noticias</span></h3> ",
|
||||
"all_articles":"Ver artculos",
|
||||
"by":"Por",
|
||||
"see_more":"Ver Más"
|
||||
},
|
||||
"en":{
|
||||
"blog_title1":"<h3>Nextream's <span>Journal</span></h3>",
|
||||
"all_articles":"All Articles",
|
||||
"by":"By",
|
||||
"see_more":"See More"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,23 +1,35 @@
|
||||
|
||||
{
|
||||
"headers":{
|
||||
"es": {
|
||||
"header_1":"Haz tu vida más fácil con la ayuda de <span>Nextream</span>",
|
||||
"header_2":"Ayudamos a las empresas a aumentar su valor mediante el desarrollo de software personalizado, diseño de productos, control de calidad y servicios de consultoría.",
|
||||
"header_3":"Nos pondremos en contacto en 24h.",
|
||||
"get_free_quotes": "¡Obtenga una cotización gratuita!",
|
||||
"your_email":"Su correo electrónico *",
|
||||
"inquiry_about":"Su consulta sobre",
|
||||
"request_a_consultation":"¡Solicite una consulta!"
|
||||
"headers":[
|
||||
{
|
||||
"header_1":{
|
||||
"es":"Haz tu vida más fácil con la ayuda de <span>Nextream</span>",
|
||||
"en":"Make your life easier with help from <span>Nextream</span>"
|
||||
},
|
||||
"en": {
|
||||
"get_free_quotes": "Get Free Quotes!",
|
||||
"header_1":" Make your life easier with help from <span>Nextream</span>",
|
||||
"header_2":"We help businesses elevate their value through custom software development, product design, QA & consultancy services.",
|
||||
"header_3":"We’ll contact back in 24h",
|
||||
"your_email":"Su correo electrónico *",
|
||||
"inquiry_about":"Your inquiry about",
|
||||
"request_a_consultation":"Request a consultation!"
|
||||
"header_2":{
|
||||
"es":"Ayudamos a las empresas a aumentar su valor mediante el desarrollo de software personalizado, diseño de productos, control de salud y servicios de consultoría.",
|
||||
"en":"We help businesses elevate their value through custom software development, product design, QA & consultancy services."
|
||||
},
|
||||
"header_3":{
|
||||
"es":"Nos pondremos en contacto en 24h.",
|
||||
"en":"We’ll contact back in 24h"
|
||||
},
|
||||
"get_free_quotes": {
|
||||
"es":"¡Obtenga una cotización gratuita!",
|
||||
"en":"Get Free Quotes!"
|
||||
},
|
||||
"your_email":{
|
||||
"es":"Su correo electrónico *",
|
||||
"en":"Your email *"
|
||||
},
|
||||
"inquiry_about":{
|
||||
"es":"Su consulta sobre",
|
||||
"en":"Your inquiry about"
|
||||
},
|
||||
"request_a_consultation":{
|
||||
"es":"¡Solicite una consulta!",
|
||||
"en":"Request a consultation!"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -1,4 +1,6 @@
|
||||
[
|
||||
{
|
||||
"plan":{
|
||||
"plans": [
|
||||
{
|
||||
"title": "Standard",
|
||||
"description": "Basic features",
|
||||
@ -22,4 +24,48 @@
|
||||
"Cloud Hosting & Domain"
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"text_traductions":{
|
||||
"our_services_button":{
|
||||
"es":"Nuestros Servicios",
|
||||
"en":"Our Services"
|
||||
},
|
||||
"subtitle1":{
|
||||
"en":"Kick-start your project with our pricing plan. We handle all the practical aspects related to hiring and hosting your team at our premises, thus saving you half a cost and a lot of efforts. Lorem ispum dolor sit amet",
|
||||
"es":"Inicie su proyecto con nuestro plan de precios. Nos encargamos de todos los aspectos prácticos relacionados con la contratación y el alojamiento de su equipo en nuestras instalaciones, ahorrándole así la mitad de los costos y muchos esfuerzos. Lorem ispum dolor sit amet"
|
||||
},
|
||||
"subtitle2":{
|
||||
"en":"Not find your plan, need a tailored-plan? ",
|
||||
"es":"No encuentre su plan, necesita un plan ajustado? "
|
||||
},
|
||||
"contact":{
|
||||
"en":"Contact",
|
||||
"es":"Contacte"
|
||||
},
|
||||
"us_now":{
|
||||
"en":"us now!",
|
||||
"es":"con nosotros!"
|
||||
},
|
||||
"title2":{
|
||||
"es":"Accesible",
|
||||
"en":"Price"
|
||||
},
|
||||
"title":{
|
||||
"es":"Precio",
|
||||
"en":"Affordable"
|
||||
},
|
||||
"recommend":{
|
||||
"es":"Recomendado",
|
||||
"en":"Recomended"
|
||||
},
|
||||
"per_month":{
|
||||
"es":"por mes",
|
||||
"en":"per month"
|
||||
},
|
||||
"get_started_now":{
|
||||
"es":"Comience ahora",
|
||||
"en":"Get Started Now"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user