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:
parent
20b22b1398
commit
6e09725727
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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": "サインイン",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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": "Войти",
|
||||
|
|
|
|||
|
|
@ -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": "登录",
|
||||
|
|
|
|||
|
|
@ -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 & 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 · Powered by{' '}
|
||||
<a href="https://github.com/wokwi/avr8js" target="_blank" rel="noopener noreferrer">
|
||||
avr8js
|
||||
</a>{' '}
|
||||
&{' '}
|
||||
<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>
|
||||
);
|
||||
|
|
|
|||
Loading…
Reference in New Issue