feat(about): translate AboutPage chrome + CTA + footer (partial)

The visible chrome of /about now reads from i18n in all 9 locales:
- Hero title + subtitle
- 7 section headings (Story / How It Works / Open Source Philosophy /
  Creator / Recent releases / Community & Press / CTA)
- Final CTA card (title, subtitle, "Open Editor" button)
- Footer copy switched to t('footer.about') so it shows the AGPLv3
  About-Velxio paragraph instead of the stale MIT/avr8js credit
- Footer + CTA Links wrapped in localize() so /es/about's "Open Editor"
  routes to /es/editor

Long-form prose (Story body paragraphs, Open Source Philosophy
paragraphs, Creator bio, Releases blurbs, Personal-story quote, Press
section) deliberately stays in English in this commit. Each is a
multi-paragraph chunk that benefits from a curated translation pass
rather than an inline machine pass — slate it for a follow-up.

Tech-stack tags (Java, Python, React, Docker, etc.) and the creator's
name + role + GitHub/LinkedIn/Medium link captions stay untranslated:
all proper nouns / brand identifiers.
This commit is contained in:
David Montero Crespo 2026-05-09 03:27:40 -03:00
parent 20b22b1398
commit 6e09725727
10 changed files with 176 additions and 35 deletions

View File

@ -77,6 +77,23 @@
"ctaPaypal": "Über PayPal spenden"
}
},
"about": {
"hero": {
"title": "Über Velxio",
"subtitle": "Ein kostenloser, quelloffener Emulator für eingebettete Systeme — entwickelt von einem einzelnen Entwickler mit Leidenschaft für Hardware und Open Source."
},
"story": { "heading": "Die Geschichte" },
"howItWorks": { "heading": "So funktioniert es" },
"openSource": { "heading": "Open-Source-Philosophie" },
"creator": { "heading": "Der Entwickler" },
"releases": { "heading": "Aktuelle Releases" },
"community": { "heading": "Community & Presse" },
"cta": {
"title": "Bereit, Velxio auszuprobieren?",
"subtitle": "Keine Anmeldung. Läuft zu 100% im Browser. Kostenlos und Open Source.",
"openEditor": "Editor öffnen"
}
},
"auth": {
"login": {
"title": "Anmelden",

View File

@ -77,6 +77,23 @@
"ctaPaypal": "Donate via PayPal"
}
},
"about": {
"hero": {
"title": "About Velxio",
"subtitle": "A free, open-source embedded systems emulator — built by a single developer with a passion for hardware and open source."
},
"story": { "heading": "The Story" },
"howItWorks": { "heading": "How It Works" },
"openSource": { "heading": "Open Source Philosophy" },
"creator": { "heading": "The Creator" },
"releases": { "heading": "Recent releases" },
"community": { "heading": "Community & Press" },
"cta": {
"title": "Ready to try Velxio?",
"subtitle": "No signup required. Runs 100% in your browser. Free and open source.",
"openEditor": "Open Editor"
}
},
"auth": {
"login": {
"title": "Sign in",

View File

@ -77,6 +77,23 @@
"ctaPaypal": "Donar con PayPal"
}
},
"about": {
"hero": {
"title": "Acerca de Velxio",
"subtitle": "Un emulador de sistemas embebidos gratuito y de código abierto — construido por un solo desarrollador con pasión por el hardware y el open source."
},
"story": { "heading": "La historia" },
"howItWorks": { "heading": "Cómo funciona" },
"openSource": { "heading": "Filosofía open source" },
"creator": { "heading": "El creador" },
"releases": { "heading": "Versiones recientes" },
"community": { "heading": "Comunidad y prensa" },
"cta": {
"title": "¿Listo para probar Velxio?",
"subtitle": "Sin registro. Funciona 100% en tu navegador. Gratuito y de código abierto.",
"openEditor": "Abrir Editor"
}
},
"auth": {
"login": {
"title": "Iniciar sesión",

View File

@ -77,6 +77,23 @@
"ctaPaypal": "Faire un don via PayPal"
}
},
"about": {
"hero": {
"title": "À propos de Velxio",
"subtitle": "Un émulateur de systèmes embarqués gratuit et open-source — créé par un seul développeur passionné de hardware et d'open source."
},
"story": { "heading": "L'histoire" },
"howItWorks": { "heading": "Comment ça marche" },
"openSource": { "heading": "Philosophie open source" },
"creator": { "heading": "Le créateur" },
"releases": { "heading": "Dernières versions" },
"community": { "heading": "Communauté & presse" },
"cta": {
"title": "Prêt à essayer Velxio ?",
"subtitle": "Aucune inscription. Fonctionne 100% dans votre navigateur. Gratuit et open source.",
"openEditor": "Ouvrir l'Éditeur"
}
},
"auth": {
"login": {
"title": "Se connecter",

View File

@ -77,6 +77,23 @@
"ctaPaypal": "Dona con PayPal"
}
},
"about": {
"hero": {
"title": "Informazioni su Velxio",
"subtitle": "Un emulatore di sistemi embedded gratuito e open-source — sviluppato da un singolo sviluppatore con la passione per l'hardware e l'open source."
},
"story": { "heading": "La storia" },
"howItWorks": { "heading": "Come funziona" },
"openSource": { "heading": "Filosofia open source" },
"creator": { "heading": "Il creatore" },
"releases": { "heading": "Versioni recenti" },
"community": { "heading": "Community & stampa" },
"cta": {
"title": "Pronto a provare Velxio?",
"subtitle": "Nessuna registrazione. Funziona al 100% nel tuo browser. Gratuito e open source.",
"openEditor": "Apri Editor"
}
},
"auth": {
"login": {
"title": "Accedi",

View File

@ -77,6 +77,23 @@
"ctaPaypal": "PayPal で寄付する"
}
},
"about": {
"hero": {
"title": "Velxio について",
"subtitle": "ハードウェアとオープンソースに情熱を注ぐ一人の開発者が作り上げた、無料・オープンソースの組み込みシステムエミュレータです。"
},
"story": { "heading": "ストーリー" },
"howItWorks": { "heading": "仕組み" },
"openSource": { "heading": "オープンソースの理念" },
"creator": { "heading": "作者" },
"releases": { "heading": "最新リリース" },
"community": { "heading": "コミュニティとメディア" },
"cta": {
"title": "Velxio を試してみませんか?",
"subtitle": "登録不要。ブラウザだけで 100% 動作。無料・オープンソース。",
"openEditor": "エディタを開く"
}
},
"auth": {
"login": {
"title": "サインイン",

View File

@ -77,6 +77,23 @@
"ctaPaypal": "Doar via PayPal"
}
},
"about": {
"hero": {
"title": "Sobre o Velxio",
"subtitle": "Um emulador de sistemas embarcados gratuito e de código aberto — construído por um único desenvolvedor com paixão por hardware e open source."
},
"story": { "heading": "A história" },
"howItWorks": { "heading": "Como funciona" },
"openSource": { "heading": "Filosofia open source" },
"creator": { "heading": "O criador" },
"releases": { "heading": "Lançamentos recentes" },
"community": { "heading": "Comunidade e imprensa" },
"cta": {
"title": "Pronto para experimentar o Velxio?",
"subtitle": "Sem cadastro. Roda 100% no seu navegador. Gratuito e de código aberto.",
"openEditor": "Abrir Editor"
}
},
"auth": {
"login": {
"title": "Entrar",

View File

@ -77,6 +77,23 @@
"ctaPaypal": "Пожертвовать через PayPal"
}
},
"about": {
"hero": {
"title": "О Velxio",
"subtitle": "Бесплатный эмулятор встраиваемых систем с открытым исходным кодом — создан одним разработчиком, увлечённым железом и open source."
},
"story": { "heading": "История" },
"howItWorks": { "heading": "Как это работает" },
"openSource": { "heading": "Философия open source" },
"creator": { "heading": "Создатель" },
"releases": { "heading": "Последние релизы" },
"community": { "heading": "Сообщество и пресса" },
"cta": {
"title": "Готовы попробовать Velxio?",
"subtitle": "Без регистрации. Работает на 100% в браузере. Бесплатно и с открытым кодом.",
"openEditor": "Открыть редактор"
}
},
"auth": {
"login": {
"title": "Войти",

View File

@ -77,6 +77,23 @@
"ctaPaypal": "通过 PayPal 捐赠"
}
},
"about": {
"hero": {
"title": "关于 Velxio",
"subtitle": "一款免费的开源嵌入式系统模拟器 —— 由一位对硬件与开源充满热情的开发者独立打造。"
},
"story": { "heading": "故事" },
"howItWorks": { "heading": "工作原理" },
"openSource": { "heading": "开源理念" },
"creator": { "heading": "作者" },
"releases": { "heading": "近期版本" },
"community": { "heading": "社区与媒体" },
"cta": {
"title": "准备好试用 Velxio 了吗?",
"subtitle": "无需注册。100% 在浏览器中运行。免费且开源。",
"openEditor": "打开编辑器"
}
},
"auth": {
"login": {
"title": "登录",

View File

@ -1,5 +1,7 @@
import { Link } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { AppHeader } from '../components/layout/AppHeader';
import { useLocalizedHref } from '../i18n/useLocalizedNavigate';
import { useSEO } from '../utils/useSEO';
import { getSeoMeta } from '../seoRoutes';
import './AboutPage.css';
@ -52,6 +54,8 @@ const IcoMedium = () => (
/* ── Component ──────────────────────────────────────── */
export const AboutPage: React.FC = () => {
const { t } = useTranslation();
const localize = useLocalizedHref();
useSEO({
...getSeoMeta('/about')!,
jsonLd: {
@ -70,11 +74,8 @@ export const AboutPage: React.FC = () => {
{/* Hero */}
<section className="about-hero">
<div className="about-hero-inner">
<h1 className="about-hero-title">About Velxio</h1>
<p className="about-hero-sub">
A free, open-source embedded systems emulator — built by a single developer with a
passion for hardware and open source.
</p>
<h1 className="about-hero-title">{t('about.hero.title')}</h1>
<p className="about-hero-sub">{t('about.hero.subtitle')}</p>
</div>
</section>
@ -82,7 +83,7 @@ export const AboutPage: React.FC = () => {
<section className="about-section">
<div className="about-container">
<div className="about-story">
<h2 className="about-heading">The Story</h2>
<h2 className="about-heading">{t('about.story.heading')}</h2>
<p>
Velxio started as a personal exploration into how microcontroller emulators work
internally — CPU instructions, memory management, peripheral timing, and low-level
@ -120,7 +121,7 @@ export const AboutPage: React.FC = () => {
{/* Architecture overview */}
<section className="about-section about-section-alt">
<div className="about-container">
<h2 className="about-heading">How It Works</h2>
<h2 className="about-heading">{t('about.howItWorks.heading')}</h2>
<div className="about-arch-grid">
<div className="about-arch-card">
<div className="about-arch-icon">
@ -182,7 +183,7 @@ export const AboutPage: React.FC = () => {
{/* Open Source Philosophy */}
<section className="about-section">
<div className="about-container">
<h2 className="about-heading">Open Source Philosophy</h2>
<h2 className="about-heading">{t('about.openSource.heading')}</h2>
<p>
Velxio is <strong>100% open source</strong> under the AGPLv3 license. No cloud
dependency, no student accounts, no data leaving your network. Universities and
@ -244,7 +245,7 @@ export const AboutPage: React.FC = () => {
{/* Creator */}
<section className="about-section about-section-alt">
<div className="about-container">
<h2 className="about-heading">The Creator</h2>
<h2 className="about-heading">{t('about.creator.heading')}</h2>
<div className="about-creator">
<div className="about-creator-photo">
<img
@ -344,7 +345,7 @@ export const AboutPage: React.FC = () => {
{/* Releases */}
<section className="about-section">
<div className="about-container">
<h2 className="about-heading">Recent releases</h2>
<h2 className="about-heading">{t('about.releases.heading')}</h2>
<div className="about-releases">
<Link to="/v2-5" className="about-release-card about-release-card-latest">
<span className="about-release-tag">Latest</span>
@ -396,7 +397,7 @@ export const AboutPage: React.FC = () => {
{/* Community & Press */}
<section className="about-section about-section-alt">
<div className="about-container">
<h2 className="about-heading">Community &amp; Press</h2>
<h2 className="about-heading">{t('about.community.heading')}</h2>
<div className="about-stats-grid">
<div className="about-stat">
<span className="about-stat-number">2,000+</span>
@ -466,11 +467,11 @@ export const AboutPage: React.FC = () => {
{/* CTA */}
<section className="about-cta">
<div className="about-container">
<h2>Ready to try Velxio?</h2>
<p>No signup required. Runs 100% in your browser. Free and open source.</p>
<h2>{t('about.cta.title')}</h2>
<p>{t('about.cta.subtitle')}</p>
<div className="about-cta-btns">
<Link to="/editor" className="about-btn-primary">
Open Editor
<Link to={localize('/editor')} className="about-btn-primary">
{t('about.cta.openEditor')}
</Link>
<a
href={GITHUB_URL}
@ -478,7 +479,7 @@ export const AboutPage: React.FC = () => {
rel="noopener noreferrer"
className="about-btn-secondary"
>
<IcoGitHub /> View on GitHub
<IcoGitHub /> {t('landing.hero.ctaGithub')}
</a>
</div>
</div>
@ -492,27 +493,14 @@ export const AboutPage: React.FC = () => {
</div>
<div className="footer-links">
<a href={GITHUB_URL} target="_blank" rel="noopener noreferrer">
GitHub
{t('header.nav.github')}
</a>
<Link to="/docs">Docs</Link>
<Link to="/examples">Examples</Link>
<Link to="/editor">Editor</Link>
<Link to="/about">About</Link>
<Link to={localize('/docs')}>{t('header.nav.documentation')}</Link>
<Link to={localize('/examples')}>{t('header.nav.examples')}</Link>
<Link to={localize('/editor')}>{t('header.nav.editor')}</Link>
<Link to={localize('/about')}>{t('header.nav.about')}</Link>
</div>
<p className="footer-copy">
MIT License &middot; Powered by{' '}
<a href="https://github.com/wokwi/avr8js" target="_blank" rel="noopener noreferrer">
avr8js
</a>{' '}
&amp;{' '}
<a
href="https://github.com/wokwi/wokwi-elements"
target="_blank"
rel="noopener noreferrer"
>
wokwi-elements
</a>
</p>
<p className="footer-copy">{t('footer.about')}</p>
</footer>
</div>
);