- Honest comparison to alternatives.
+ {t('compare.heading')}
- Privacy is not one-size-fits-all. Different mechanisms make distinct trade-offs between
- user convenience, regulatory posture, and mathematical complexity.
+ {t('compare.description')}
- {/* Scroll helper indicator for mobile screens */}
- Swipe table horizontally to view all columns
+ {t('compare.scrollHint')}→
- {/* Responsive Table Wrapper */}
- {/* Right edge fade gradient to indicate scrollability */}
- Wraith implements cryptographic stealth addresses based on the ERC-5564 and
- ERC-6538 standards. Instead of pooling funds into a shared mixer, every single
- transaction goes to a one-time, fresh destination address derived
- cryptographically using the recipient's public keys and the sender's
- ephemeral keys.
+ {t('compare.cards.wraith.body')}
- Why it matters
+ {t('compare.cards.wraith.whyLabel')}
- By removing the shared "anonymity pool," Wraith avoids the regulatory
- issues and technical overhead of traditional mixers. Users transact peer-to-peer
- natively, while retaining complete unlinkability of the receiver's identity
- on the public ledger.
+ {t('compare.cards.wraith.why')}
- Mixers break links between deposit and withdrawal addresses by putting funds into
- a communal smart-contract pool. Users deposit fixed denominations (e.g. 1 ETH) and
- receive a cryptographic note. To withdraw, they generate a client-side
- zero-knowledge proof proving they own one of the unspent deposits.
+ {t('compare.cards.mixers.body')}
- Regulatory Status & Gaps
+ {t('compare.cards.mixers.gapsLabel')}
- Tornado Cash was sanctioned by the U.S. Office of Foreign Assets Control (OFAC)
- in 2022 because its pooled architecture obfuscates illicit financial flows.
- Additionally, the UX is complex: receivers must remain online to generate ZK
- proofs and pay gas relayers to maintain withdrawal privacy.
+ {t('compare.cards.mixers.gaps')}
- Aztec brings privacy to the smart contract execution layer via an encrypted
- Layer-2 rollup. Encrypted state updates are processed off-chain, and
- zero-knowledge proofs are compiled in batches and posted to the Layer-1 Ethereum
- ledger for global validation.
+ {t('compare.cards.rollups.body')}
- Excellent for rich private state logic and private DeFi. However, users face
- significant friction, including L1-to-L2 bridging steps, delays in rollup
- finality, and complex wallet setup. Because rollups are tied to a single host
- chain, cross-chain privacy remains a major challenge.
+ {t('compare.cards.rollups.gaps')}
- Railgun is an on-chain privacy protocol deployed directly on EVM networks. It
- allows users to "shield" tokens inside a smart contract pool. Once
- shielded, assets can be transferred, swapped, or deployed into partner DeFi yield
- contracts privately using zk-SNARKs.
+ {t('compare.cards.railgun.body')}
- Railgun excels at private, in-pool swaps and yield generation directly on L1/L2
- without bridging. However, users must use specific Railgun-compatible wallets
- and pay substantial gas costs to shield or unshield. Its pooled design also
- requires heavy client-side proof generation.
+ {t('compare.cards.railgun.gaps')}
)}
- {/* Card 5: Status Quo */}
{(activeTab === 'all' || activeTab === 'transparent') && (
- TRANSPARENT LEDGER
+ {t('compare.cards.transparent.eyebrow')}
- DEFAULT PUBLIC
+ {t('compare.cards.transparent.badge')}
- The Transparent Ledger Status Quo
+ {t('compare.cards.transparent.heading')}
- Public blockchains operate on absolute transparency. Anyone with an internet
- connection can view your entire transaction history, balances, asset holdings, and
- network of counterparties via simple block explorers.
+ {t('compare.cards.transparent.body')}
- What you give up
+ {t('compare.cards.transparent.gapsLabel')}
- Transparent accounts expose businesses, merchants, and individuals to
- front-running, phishing, and physical security risks. While simple to use,
- complete public disclosure makes default ledger transactions unfeasible for
- standard enterprise operations like payroll or supplier contracts.
+ {t('compare.cards.transparent.gaps')}
diff --git a/src/components/CtaStrip.tsx b/src/components/CtaStrip.tsx
index 42491df..d2a5a25 100644
--- a/src/components/CtaStrip.tsx
+++ b/src/components/CtaStrip.tsx
@@ -1,14 +1,17 @@
+import { useTranslation } from 'react-i18next';
import { trackEvent } from '../analytics';
export default function CtaStrip() {
+ const { t } = useTranslation();
+
return (
diff --git a/src/components/Hero.tsx b/src/components/Hero.tsx
index 53b325e..11e10a9 100644
--- a/src/components/Hero.tsx
+++ b/src/components/Hero.tsx
@@ -1,6 +1,8 @@
import { useState, type KeyboardEvent } from 'react';
import { Link } from 'react-router-dom';
+import { useTranslation } from 'react-i18next';
import { trackEvent } from '../analytics';
+import { copyToClipboard } from '../utils/clipboard';
type CodeLine = {
content: string;
@@ -100,6 +102,7 @@ const colorMap = {
};
export default function Hero() {
+ const { t } = useTranslation();
const [activeTab, setActiveTab] = useState('send.ts');
const [copyStatus, setCopyStatus] = useState<'idle' | 'copied' | 'failed'>('idle');
@@ -154,27 +157,25 @@ export default function Hero() {
- LIVE ON 4 TESTNETS
+ {t('hero.badge.testnet')}
- Stellar partner
+ {t('hero.badge.partner')}
- Private payments{'\n'}for every chain.
+ {t('hero.heading')}
- A stealth-address toolkit built on ERC-5564 and ERC-6538. Drop it into your app and send
- receiver-unlinkable payments across Horizen, Stellar, Solana, and CKB.
+ {t('hero.description')}
- Memo-enabled stealth support on Stellar, plus coordinated privacy flows for multi-chain
- apps.
+ {t('hero.stellarNote')}
@@ -299,11 +304,11 @@ export default function Hero() {
- npm i @wraith-protocol/sdk
+ {t('hero.code.install')}
- TYPESCRIPT
+ {t('hero.code.language')}
diff --git a/src/components/Showcase.tsx b/src/components/Showcase.tsx
index 9eda802..b7768f9 100644
--- a/src/components/Showcase.tsx
+++ b/src/components/Showcase.tsx
@@ -1,3 +1,4 @@
+import { useTranslation } from 'react-i18next';
import { entries } from '../data/showcase.json';
type ShowcaseEntry = {
@@ -9,6 +10,8 @@ type ShowcaseEntry = {
};
export default function Showcase() {
+ const { t } = useTranslation();
+
if (!entries || entries.length === 0) return null;
return (
@@ -16,13 +19,13 @@ export default function Showcase() {
- Built with Wraith
+ {t('showcase.eyebrow')}
- Projects using Wraith.
+ {t('showcase.heading')}
- Pilot integrations, reference implementations, and partner POCs.
+ {t('showcase.description')}
@@ -57,7 +60,7 @@ export default function Showcase() {
- Visit
+ {t('showcase.visit')}
↗
diff --git a/src/i18n/en.json b/src/i18n/en.json
new file mode 100644
index 0000000..db89e41
--- /dev/null
+++ b/src/i18n/en.json
@@ -0,0 +1,307 @@
+{
+ "header": {
+ "brand": "WRAITH",
+ "nav": {
+ "docs": "Docs",
+ "sdk": "SDK",
+ "demo": "Demo",
+ "console": "Console",
+ "press": "Press",
+ "useCases": "Use Cases"
+ },
+ "launchApp": "Launch App",
+ "github": "GitHub ↗",
+ "locale": {
+ "switchTo": "Switch to {{lang}}"
+ },
+ "theme": {
+ "switchToLight": "Switch to light theme",
+ "switchToDark": "Switch to dark theme",
+ "lightMode": "☀️ Light Mode",
+ "darkMode": "🌙 Dark Mode"
+ },
+ "menu": {
+ "open": "Open navigation menu",
+ "close": "Close navigation menu"
+ }
+ },
+ "hero": {
+ "badge": {
+ "testnet": "LIVE ON 4 TESTNETS",
+ "partner": "Stellar partner"
+ },
+ "heading": "Private payments for every chain.",
+ "description": "A stealth-address toolkit built on ERC-5564 and ERC-6538. Drop it into your app and send receiver-unlinkable payments across Horizen, Stellar, Solana, and CKB.",
+ "stellarNote": "Memo-enabled stealth support on Stellar, plus coordinated privacy flows for multi-chain apps.",
+ "cta": {
+ "docs": "Read the Docs",
+ "demo": "Try the Demo",
+ "faq": "View FAQ"
+ },
+ "stats": {
+ "chainsLabel": "CHAINS SUPPORTED",
+ "bundleLabel": "SDK BUNDLE",
+ "ercLabel": "ERC STANDARD"
+ },
+ "code": {
+ "ariaLabel": "Code examples",
+ "copy": "COPY",
+ "copied": "COPIED",
+ "failed": "FAILED",
+ "language": "TYPESCRIPT",
+ "install": "npm i @wraith-protocol/sdk",
+ "copyAria": "Copy {{tab}} code example",
+ "copiedLive": "{{tab}} copied to clipboard",
+ "failedLive": "{{tab}} could not be copied"
+ }
+ },
+ "features": {
+ "eyebrow": "Why Wraith",
+ "heading": "Everything you need for stealth payments.",
+ "description": "Three primitives, wired correctly. No custom crypto on your side.",
+ "compareLink": "See how we compare to alternatives →",
+ "stealth": {
+ "title": "Stealth Addresses",
+ "description": "Every incoming payment lands at a fresh, unlinkable address derived from the recipient's meta-address. Public chains, private receivers.",
+ "meta": "ERC-5564 · ERC-6538"
+ },
+ "scanning": {
+ "title": "Fast Scanning",
+ "description": "Indexed announcement events via Goldsky so clients scan a wallet's incoming stealth payments in seconds, not minutes.",
+ "meta": "Goldsky subgraphs"
+ },
+ "multichain": {
+ "title": "Multi-chain Core",
+ "description": "One API for Horizen, Stellar, Solana, and CKB. Chain-specific wallet adapters ship with the SDK — you write application code, not protocol code.",
+ "meta": "4 chains · more coming"
+ }
+ },
+ "architecture": {
+ "eyebrow": "How It Works",
+ "heading": "Announce. Derive. Scan.",
+ "sender": {
+ "label": "SENDER",
+ "description": "Derives a stealth address from the recipient's meta-address using a fresh ephemeral key."
+ },
+ "announcer": {
+ "label": "ANNOUNCER",
+ "description": "On-chain announcement event logs the payment so the receiver can find it without interaction."
+ },
+ "receiver": {
+ "label": "RECEIVER",
+ "description": "Scans announcements with their viewing key, derives the spending key, and withdraws at will."
+ }
+ },
+ "forDevelopers": {
+ "eyebrow": "For Developers",
+ "heading": "Three ways to ship.",
+ "fullDocs": "Full Docs ↗",
+ "sdk": {
+ "label": "SDK",
+ "badge": "STABLE",
+ "title": "@wraith-protocol/sdk",
+ "description": "TypeScript SDK with wallet adapters for every supported chain.",
+ "linkText": "READ THE GUIDE"
+ },
+ "demo": {
+ "label": "DEMO",
+ "badge": "TESTNET",
+ "title": "demo.usewraith.xyz",
+ "description": "A live stealth-payment playground. Send and receive across four chains with your own wallet.",
+ "linkText": "OPEN THE DEMO"
+ },
+ "console": {
+ "label": "CONSOLE",
+ "badge": "BETA",
+ "title": "console.usewraith.xyz",
+ "description": "API keys, usage dashboards, and team access. The production control plane for your integration.",
+ "linkText": "GET API KEYS"
+ }
+ },
+ "chains": {
+ "eyebrow": "Supported Chains",
+ "heading": "Built for a multi-chain world.",
+ "partner": "Partner",
+ "stellarNote": {
+ "eyebrow": "Stellar-first stealth support",
+ "description": "Soroban integration with memo-based recipient metadata, making private payments on Stellar feel native."
+ },
+ "statuses": {
+ "liveTestnet": "LIVE ON TESTNET",
+ "liveDevnet": "LIVE ON DEVNET"
+ },
+ "horizen": { "meta": "EVM · TEE-secured · ERC-5564" },
+ "stellar": { "meta": "Soroban · Memo-based" },
+ "solana": { "meta": "SPL tokens · Memo program" },
+ "ckb": { "meta": "Cell model · CCC integration" }
+ },
+ "compare": {
+ "eyebrow": "Comparative Analysis",
+ "heading": "Honest comparison to alternatives.",
+ "description": "Privacy is not one-size-fits-all. Different mechanisms make distinct trade-offs between user convenience, regulatory posture, and mathematical complexity.",
+ "scrollHint": "Swipe table horizontally to view all columns",
+ "table": {
+ "ariaLabel": "Comparison detail filters",
+ "protocol": "Protocol",
+ "mechanism": "Privacy Mechanism",
+ "ux": "UX / Sending Flow",
+ "recipient": "Recipient Flow",
+ "regulation": "Regulatory Posture",
+ "multichain": "Multichain",
+ "complexity": "Complexity"
+ },
+ "tabs": {
+ "all": "All Details",
+ "wraith": "Wraith (Stealth)",
+ "mixers": "Tornado Cash (Mixers)",
+ "rollups": "Aztec (zk-Rollups)",
+ "railgun": "Railgun (Shielded)",
+ "transparent": "Status Quo"
+ },
+ "rows": {
+ "wraith": {
+ "name": "Wraith Protocol",
+ "mechanism": "Stealth Addresses (ERC-5564)",
+ "ux": "Low friction (direct sending to meta-address)",
+ "recipient": "Passive receipt (scans announcements via viewing key)",
+ "regulation": "Non-pooled, direct peer-to-peer transfers",
+ "multichain": "Native multi-chain API (4+ chains)",
+ "complexity": "Low (standard elliptic curve cryptography)"
+ },
+ "tornado": {
+ "name": "Tornado Cash Style",
+ "mechanism": "Zero-Knowledge Pools (zk-SNARKs)",
+ "ux": "High friction (fixed deposits, note files)",
+ "recipient": "Active withdrawal (must generate ZK proof and pay relayers)",
+ "regulation": "Highly sanctioned (global OFAC sanctions)",
+ "multichain": "Isolated pools per chain",
+ "complexity": "High (client-side proofs, relayer networks)"
+ },
+ "aztec": {
+ "name": "Aztec / ZK Rollups",
+ "mechanism": "State Encryption & Rollups",
+ "ux": "High friction (requires bridging to L2 and exiting)",
+ "recipient": "L2 native (receiver must have L2 account & scan L2)",
+ "regulation": "Restricted (privacy bridges deprecating due to compliance)",
+ "multichain": "Host-chain locked (complex L2 bridging)",
+ "complexity": "Extreme (L2 rollup economics, state sync, proving nodes)"
+ },
+ "railgun": {
+ "name": "Railgun",
+ "mechanism": "In-Contract ZK Shielded Pools",
+ "ux": "Medium-High (shielding/unshielding, private wallet)",
+ "recipient": "Shielded native (must own private address to receive)",
+ "regulation": "Self-regulated (viewing keys, proof of innocence)",
+ "multichain": "Isolated contracts per network",
+ "complexity": "High (private state trees, DeFi adapters, client proofs)"
+ },
+ "statusQuo": {
+ "name": "Status Quo",
+ "mechanism": "None (transparent public ledger)",
+ "ux": "Frictionless (native wallet transactions)",
+ "recipient": "Native receipt (immediate access, standard wallets)",
+ "regulation": "Compliant (but zero privacy or commercial secrecy)",
+ "multichain": "Native support on all chains",
+ "complexity": "Zero (default ledger mechanics)"
+ }
+ },
+ "cards": {
+ "wraith": {
+ "eyebrow": "WRAITH APPROACH",
+ "badge": "NON-POOLED STEALTH",
+ "heading": "Wraith: Direct, Peer-to-Peer Privacy",
+ "body": "Wraith implements cryptographic stealth addresses based on the ERC-5564 and ERC-6538 standards. Instead of pooling funds into a shared mixer, every single transaction goes to a one-time, fresh destination address derived cryptographically using the recipient's public keys and the sender's ephemeral keys.",
+ "whyLabel": "Why it matters",
+ "why": "By removing the shared \"anonymity pool,\" Wraith avoids the regulatory issues and technical overhead of traditional mixers. Users transact peer-to-peer natively, while retaining complete unlinkability of the receiver's identity on the public ledger."
+ },
+ "mixers": {
+ "eyebrow": "MIXERS & POOLS",
+ "badge": "OFAC SANCTIONED",
+ "heading": "Tornado-Cash-style Mixers",
+ "body": "Mixers break links between deposit and withdrawal addresses by putting funds into a communal smart-contract pool. Users deposit fixed denominations (e.g. 1 ETH) and receive a cryptographic note. To withdraw, they generate a client-side zero-knowledge proof proving they own one of the unspent deposits.",
+ "gapsLabel": "Regulatory Status & Gaps",
+ "gaps": "Tornado Cash was sanctioned by the U.S. Office of Foreign Assets Control (OFAC) in 2022 because its pooled architecture obfuscates illicit financial flows. Additionally, the UX is complex: receivers must remain online to generate ZK proofs and pay gas relayers to maintain withdrawal privacy."
+ },
+ "rollups": {
+ "eyebrow": "LAYER 2 ENCRYPTION",
+ "badge": "PROGRAMMABLE L2",
+ "heading": "Aztec & zk-Rollup Privacy",
+ "body": "Aztec brings privacy to the smart contract execution layer via an encrypted Layer-2 rollup. Encrypted state updates are processed off-chain, and zero-knowledge proofs are compiled in batches and posted to the Layer-1 Ethereum ledger for global validation.",
+ "gapsLabel": "Strengths & Gaps",
+ "gaps": "Excellent for rich private state logic and private DeFi. However, users face significant friction, including L1-to-L2 bridging steps, delays in rollup finality, and complex wallet setup. Because rollups are tied to a single host chain, cross-chain privacy remains a major challenge."
+ },
+ "railgun": {
+ "eyebrow": "SHIELDED CONTRACTS",
+ "badge": "IN-CONTRACT DEFI",
+ "heading": "Railgun Shielded Actions",
+ "body": "Railgun is an on-chain privacy protocol deployed directly on EVM networks. It allows users to \"shield\" tokens inside a smart contract pool. Once shielded, assets can be transferred, swapped, or deployed into partner DeFi yield contracts privately using zk-SNARKs.",
+ "gapsLabel": "Strengths & Gaps",
+ "gaps": "Railgun excels at private, in-pool swaps and yield generation directly on L1/L2 without bridging. However, users must use specific Railgun-compatible wallets and pay substantial gas costs to shield or unshield. Its pooled design also requires heavy client-side proof generation."
+ },
+ "transparent": {
+ "eyebrow": "TRANSPARENT LEDGER",
+ "badge": "DEFAULT PUBLIC",
+ "heading": "The Transparent Ledger Status Quo",
+ "body": "Public blockchains operate on absolute transparency. Anyone with an internet connection can view your entire transaction history, balances, asset holdings, and network of counterparties via simple block explorers.",
+ "gapsLabel": "What you give up",
+ "gaps": "Transparent accounts expose businesses, merchants, and individuals to front-running, phishing, and physical security risks. While simple to use, complete public disclosure makes default ledger transactions unfeasible for standard enterprise operations like payroll or supplier contracts."
+ }
+ }
+ },
+ "cta": {
+ "eyebrow": "Ready to Build",
+ "heading": "Start shipping private payments today.",
+ "getKeys": "Get API Keys",
+ "readDocs": "Read the Docs"
+ },
+ "showcase": {
+ "eyebrow": "Built with Wraith",
+ "heading": "Projects using Wraith.",
+ "description": "Pilot integrations, reference implementations, and partner POCs.",
+ "visit": "Visit"
+ },
+ "footer": {
+ "brand": "WRAITH PROTOCOL",
+ "tagline": "Private payments, plainly.",
+ "columns": {
+ "product": "PRODUCT",
+ "developers": "DEVELOPERS",
+ "resources": "RESOURCES",
+ "acknowledgments": "ACKNOWLEDGMENTS"
+ },
+ "product": {
+ "docs": "Docs",
+ "demo": "Demo",
+ "console": "Console",
+ "compare": "Compare",
+ "faq": "FAQ",
+ "changelog": "Changelog"
+ },
+ "developers": {
+ "sdk": "SDK",
+ "apiReference": "API Reference",
+ "github": "GitHub",
+ "npm": "npm"
+ },
+ "resources": {
+ "erc5564": "ERC-5564 spec",
+ "erc6538": "ERC-6538 spec",
+ "security": "Security",
+ "press": "Press"
+ },
+ "acknowledgmentsAria": "Supported by Stellar Development Foundation’s Stellar Wave program via Drips",
+ "acknowledgmentsText": "Supported by Stellar Development Foundation’s Stellar Wave program via Drips",
+ "built": "BUILT ON HORIZEN · ERC-5564 · OPEN SOURCE",
+ "legal": {
+ "privacy": "Privacy",
+ "terms": "Terms",
+ "securityTxt": "Security.txt"
+ }
+ },
+ "og": {
+ "siteTitle": "Wraith Protocol — Private payments for every chain",
+ "metaDescription": "Wraith Protocol enables private payments on any blockchain using stealth addresses. One SDK, multiple chains.",
+ "ogTitle": "Wraith Protocol",
+ "ogDescription": "Private payments for every chain. Stealth addresses, multichain SDK, and AI-powered privacy agents."
+ }
+}
diff --git a/src/i18n/es.json b/src/i18n/es.json
new file mode 100644
index 0000000..92a4ab5
--- /dev/null
+++ b/src/i18n/es.json
@@ -0,0 +1,307 @@
+{
+ "header": {
+ "brand": "WRAITH",
+ "nav": {
+ "docs": "Docs",
+ "sdk": "SDK",
+ "demo": "Demo",
+ "console": "Consola",
+ "press": "Prensa",
+ "useCases": "Casos de uso"
+ },
+ "launchApp": "Abrir app",
+ "github": "GitHub ↗",
+ "locale": {
+ "switchTo": "Cambiar a {{lang}}"
+ },
+ "theme": {
+ "switchToLight": "Cambiar a tema claro",
+ "switchToDark": "Cambiar a tema oscuro",
+ "lightMode": "☀️ Modo claro",
+ "darkMode": "🌙 Modo oscuro"
+ },
+ "menu": {
+ "open": "Abrir menú de navegación",
+ "close": "Cerrar menú de navegación"
+ }
+ },
+ "hero": {
+ "badge": {
+ "testnet": "EN VIVO EN 4 REDES DE PRUEBA",
+ "partner": "Socio de Stellar"
+ },
+ "heading": "Pagos privados para cada cadena.",
+ "description": "Un kit de herramientas de dirección oculta basado en ERC-5564 y ERC-6538. Intégralo en tu app y envía pagos no vinculables al receptor en Horizen, Stellar, Solana y CKB.",
+ "stellarNote": "Soporte stealth con memo en Stellar, más flujos de privacidad coordinados para apps multicadena.",
+ "cta": {
+ "docs": "Leer la documentación",
+ "demo": "Probar la demo",
+ "faq": "Ver preguntas frecuentes"
+ },
+ "stats": {
+ "chainsLabel": "CADENAS SOPORTADAS",
+ "bundleLabel": "SDK BUNDLE",
+ "ercLabel": "ESTÁNDAR ERC"
+ },
+ "code": {
+ "ariaLabel": "Ejemplos de código",
+ "copy": "COPIAR",
+ "copied": "COPIADO",
+ "failed": "ERROR",
+ "language": "TYPESCRIPT",
+ "install": "npm i @wraith-protocol/sdk",
+ "copyAria": "Copiar ejemplo de código {{tab}}",
+ "copiedLive": "{{tab}} copiado al portapapeles",
+ "failedLive": "{{tab}} no se pudo copiar"
+ }
+ },
+ "features": {
+ "eyebrow": "Por qué Wraith",
+ "heading": "Todo lo que necesitas para pagos privados.",
+ "description": "Tres primitivas, conectadas correctamente. Sin criptografía personalizada de tu parte.",
+ "compareLink": "Compara con alternativas →",
+ "stealth": {
+ "title": "Direcciones Ocultas",
+ "description": "Cada pago entrante llega a una dirección nueva y no vinculable derivada de la meta-dirección del receptor. Cadenas públicas, receptores privados.",
+ "meta": "ERC-5564 · ERC-6538"
+ },
+ "scanning": {
+ "title": "Escaneo Rápido",
+ "description": "Eventos de anuncio indexados vía Goldsky para que los clientes escaneen los pagos stealth entrantes en segundos, no minutos.",
+ "meta": "Subgraphs de Goldsky"
+ },
+ "multichain": {
+ "title": "Núcleo Multicadena",
+ "description": "Una API para Horizen, Stellar, Solana y CKB. Los adaptadores de billetera específicos por cadena se incluyen en el SDK — tú escribes código de aplicación, no de protocolo.",
+ "meta": "4 cadenas · más en camino"
+ }
+ },
+ "architecture": {
+ "eyebrow": "Cómo funciona",
+ "heading": "Anuncia. Deriva. Escanea.",
+ "sender": {
+ "label": "EMISOR",
+ "description": "Deriva una dirección oculta a partir de la meta-dirección del receptor usando una clave efímera nueva."
+ },
+ "announcer": {
+ "label": "ANUNCIADOR",
+ "description": "El evento de anuncio en cadena registra el pago para que el receptor pueda encontrarlo sin interacción."
+ },
+ "receiver": {
+ "label": "RECEPTOR",
+ "description": "Escanea los anuncios con su clave de visualización, deriva la clave de gasto y retira cuando desee."
+ }
+ },
+ "forDevelopers": {
+ "eyebrow": "Para Desarrolladores",
+ "heading": "Tres formas de publicar.",
+ "fullDocs": "Documentación completa ↗",
+ "sdk": {
+ "label": "SDK",
+ "badge": "ESTABLE",
+ "title": "@wraith-protocol/sdk",
+ "description": "SDK de TypeScript con adaptadores de billetera para cada cadena soportada.",
+ "linkText": "LEER LA GUÍA"
+ },
+ "demo": {
+ "label": "DEMO",
+ "badge": "TESTNET",
+ "title": "demo.usewraith.xyz",
+ "description": "Un playground de pagos stealth en vivo. Envía y recibe en cuatro cadenas con tu propia billetera.",
+ "linkText": "ABRIR LA DEMO"
+ },
+ "console": {
+ "label": "CONSOLA",
+ "badge": "BETA",
+ "title": "console.usewraith.xyz",
+ "description": "Claves de API, paneles de uso y acceso de equipo. El plano de control de producción para tu integración.",
+ "linkText": "OBTENER CLAVES DE API"
+ }
+ },
+ "chains": {
+ "eyebrow": "Cadenas Soportadas",
+ "heading": "Construido para un mundo multicadena.",
+ "partner": "Socio",
+ "stellarNote": {
+ "eyebrow": "Soporte stealth primero en Stellar",
+ "description": "Integración con Soroban y metadatos de receptor basados en memo, haciendo que los pagos privados en Stellar se sientan nativos."
+ },
+ "statuses": {
+ "liveTestnet": "EN VIVO EN TESTNET",
+ "liveDevnet": "EN VIVO EN DEVNET"
+ },
+ "horizen": { "meta": "EVM · Asegurado por TEE · ERC-5564" },
+ "stellar": { "meta": "Soroban · Basado en memo" },
+ "solana": { "meta": "Tokens SPL · Programa de memo" },
+ "ckb": { "meta": "Modelo de células · Integración CCC" }
+ },
+ "compare": {
+ "eyebrow": "Análisis Comparativo",
+ "heading": "Comparación honesta con alternativas.",
+ "description": "La privacidad no es universal. Diferentes mecanismos hacen compromisos distintos entre conveniencia del usuario, postura regulatoria y complejidad matemática.",
+ "scrollHint": "Desliza la tabla horizontalmente para ver todas las columnas",
+ "table": {
+ "ariaLabel": "Filtros de detalle de comparación",
+ "protocol": "Protocolo",
+ "mechanism": "Mecanismo de Privacidad",
+ "ux": "UX / Flujo de Envío",
+ "recipient": "Flujo del Receptor",
+ "regulation": "Postura Regulatoria",
+ "multichain": "Multicadena",
+ "complexity": "Complejidad"
+ },
+ "tabs": {
+ "all": "Todos los Detalles",
+ "wraith": "Wraith (Stealth)",
+ "mixers": "Tornado Cash (Mixers)",
+ "rollups": "Aztec (zk-Rollups)",
+ "railgun": "Railgun (Protegido)",
+ "transparent": "Estado Actual"
+ },
+ "rows": {
+ "wraith": {
+ "name": "Wraith Protocol",
+ "mechanism": "Direcciones Ocultas (ERC-5564)",
+ "ux": "Baja fricción (envío directo a meta-dirección)",
+ "recipient": "Recepción pasiva (escanea anuncios vía clave de visualización)",
+ "regulation": "Sin pool, transferencias directas entre pares",
+ "multichain": "API multicadena nativa (4+ cadenas)",
+ "complexity": "Baja (criptografía de curva elíptica estándar)"
+ },
+ "tornado": {
+ "name": "Tornado Cash Style",
+ "mechanism": "Pools de Conocimiento Cero (zk-SNARKs)",
+ "ux": "Alta fricción (depósitos fijos, archivos de nota)",
+ "recipient": "Retiro activo (debe generar prueba ZK y pagar retransmisores)",
+ "regulation": "Altamente sancionado (sanciones OFAC globales)",
+ "multichain": "Pools aislados por cadena",
+ "complexity": "Alta (pruebas del lado del cliente, redes de retransmisores)"
+ },
+ "aztec": {
+ "name": "Aztec / ZK Rollups",
+ "mechanism": "Encriptación de Estado y Rollups",
+ "ux": "Alta fricción (requiere puente a L2 y salida)",
+ "recipient": "Nativo en L2 (receptor debe tener cuenta L2 y escanear L2)",
+ "regulation": "Restringido (puentes de privacidad en desuso por cumplimiento)",
+ "multichain": "Bloqueado en cadena anfitriona (puentes L2 complejos)",
+ "complexity": "Extrema (economía de rollup L2, sincronización de estado, nodos de prueba)"
+ },
+ "railgun": {
+ "name": "Railgun",
+ "mechanism": "Pools Protegidos ZK en Contrato",
+ "ux": "Media-Alta (blindaje/desblindaje, billetera privada)",
+ "recipient": "Nativo protegido (debe tener dirección privada para recibir)",
+ "regulation": "Autorregulado (claves de visualización, prueba de inocencia)",
+ "multichain": "Contratos aislados por red",
+ "complexity": "Alta (árboles de estado privado, adaptadores DeFi, pruebas del cliente)"
+ },
+ "statusQuo": {
+ "name": "Estado Actual",
+ "mechanism": "Ninguno (libro mayor público transparente)",
+ "ux": "Sin fricción (transacciones de billetera nativas)",
+ "recipient": "Recepción nativa (acceso inmediato, billeteras estándar)",
+ "regulation": "Conforme (pero sin privacidad ni secreto comercial)",
+ "multichain": "Soporte nativo en todas las cadenas",
+ "complexity": "Cero (mecánica predeterminada del libro mayor)"
+ }
+ },
+ "cards": {
+ "wraith": {
+ "eyebrow": "ENFOQUE WRAITH",
+ "badge": "STEALTH SIN POOL",
+ "heading": "Wraith: Privacidad Directa Entre Pares",
+ "body": "Wraith implementa direcciones ocultas criptográficas basadas en los estándares ERC-5564 y ERC-6538. En lugar de acumular fondos en un mezclador compartido, cada transacción va a una dirección de destino única y nueva derivada criptográficamente usando las claves públicas del receptor y las claves efímeras del emisor.",
+ "whyLabel": "Por qué importa",
+ "why": "Al eliminar el \"pool de anonimato\" compartido, Wraith evita los problemas regulatorios y la complejidad técnica de los mezcladores tradicionales. Los usuarios transaccionan entre pares de forma nativa, manteniendo la completa desvinculación de la identidad del receptor en el libro mayor público."
+ },
+ "mixers": {
+ "eyebrow": "MEZCLADORES Y POOLS",
+ "badge": "SANCIONADO POR OFAC",
+ "heading": "Mezcladores estilo Tornado Cash",
+ "body": "Los mezcladores rompen los vínculos entre direcciones de depósito y retiro poniendo fondos en un pool de contrato inteligente comunal. Los usuarios depositan denominaciones fijas (ej. 1 ETH) y reciben una nota criptográfica. Para retirar, generan una prueba de conocimiento cero del lado del cliente que demuestra que poseen uno de los depósitos no gastados.",
+ "gapsLabel": "Estado Regulatorio y Brechas",
+ "gaps": "Tornado Cash fue sancionado por la Oficina de Control de Activos Extranjeros (OFAC) de EE.UU. en 2022 porque su arquitectura de pool ofusca flujos financieros ilícitos. Además, la UX es compleja: los receptores deben permanecer en línea para generar pruebas ZK y pagar retransmisores de gas para mantener la privacidad del retiro."
+ },
+ "rollups": {
+ "eyebrow": "ENCRIPTACIÓN CAPA 2",
+ "badge": "L2 PROGRAMABLE",
+ "heading": "Privacidad con Aztec y zk-Rollups",
+ "body": "Aztec lleva la privacidad a la capa de ejecución de contratos inteligentes a través de un rollup de Capa-2 encriptado. Las actualizaciones de estado encriptadas se procesan fuera de cadena, y las pruebas de conocimiento cero se compilan en lotes y se publican en el libro mayor de Ethereum de Capa-1 para validación global.",
+ "gapsLabel": "Fortalezas y Brechas",
+ "gaps": "Excelente para lógica de estado privado rica y DeFi privado. Sin embargo, los usuarios enfrentan una fricción significativa, incluyendo pasos de puente de L1 a L2, retrasos en la finalidad del rollup y configuración compleja de billetera. Como los rollups están atados a una sola cadena anfitriona, la privacidad entre cadenas sigue siendo un desafío mayor."
+ },
+ "railgun": {
+ "eyebrow": "CONTRATOS PROTEGIDOS",
+ "badge": "DEFI EN CONTRATO",
+ "heading": "Acciones Protegidas de Railgun",
+ "body": "Railgun es un protocolo de privacidad en cadena desplegado directamente en redes EVM. Permite a los usuarios \"blindar\" tokens dentro de un pool de contratos inteligentes. Una vez blindados, los activos pueden transferirse, intercambiarse o desplegarse en contratos de rendimiento DeFi de socios de forma privada usando zk-SNARKs.",
+ "gapsLabel": "Fortalezas y Brechas",
+ "gaps": "Railgun sobresale en intercambios privados dentro del pool y generación de rendimiento directamente en L1/L2 sin puentes. Sin embargo, los usuarios deben usar billeteras compatibles con Railgun específicas y pagar costos de gas sustanciales para blindar o desblindear. Su diseño de pool también requiere una generación de pruebas del lado del cliente muy intensiva."
+ },
+ "transparent": {
+ "eyebrow": "LIBRO MAYOR TRANSPARENTE",
+ "badge": "PÚBLICO POR DEFECTO",
+ "heading": "El Estado Actual del Libro Mayor Transparente",
+ "body": "Las blockchains públicas operan con transparencia absoluta. Cualquiera con conexión a internet puede ver todo tu historial de transacciones, saldos, tenencias de activos y red de contrapartes a través de simples exploradores de bloques.",
+ "gapsLabel": "Lo que pierdes",
+ "gaps": "Las cuentas transparentes exponen a empresas, comerciantes e individuos a ataques de anticipación, phishing y riesgos de seguridad física. Si bien son fáciles de usar, la divulgación pública completa hace que las transacciones del libro mayor predeterminado sean inviables para operaciones empresariales estándar como nóminas o contratos con proveedores."
+ }
+ }
+ },
+ "cta": {
+ "eyebrow": "Listo para construir",
+ "heading": "Comienza a enviar pagos privados hoy.",
+ "getKeys": "Obtener claves de API",
+ "readDocs": "Leer la documentación"
+ },
+ "showcase": {
+ "eyebrow": "Construido con Wraith",
+ "heading": "Proyectos usando Wraith.",
+ "description": "Integraciones piloto, implementaciones de referencia y POCs de socios.",
+ "visit": "Visitar"
+ },
+ "footer": {
+ "brand": "WRAITH PROTOCOL",
+ "tagline": "Pagos privados, claramente.",
+ "columns": {
+ "product": "PRODUCTO",
+ "developers": "DESARROLLADORES",
+ "resources": "RECURSOS",
+ "acknowledgments": "AGRADECIMIENTOS"
+ },
+ "product": {
+ "docs": "Docs",
+ "demo": "Demo",
+ "console": "Consola",
+ "compare": "Comparar",
+ "faq": "Preguntas frecuentes",
+ "changelog": "Registro de cambios"
+ },
+ "developers": {
+ "sdk": "SDK",
+ "apiReference": "Referencia de API",
+ "github": "GitHub",
+ "npm": "npm"
+ },
+ "resources": {
+ "erc5564": "Especificación ERC-5564",
+ "erc6538": "Especificación ERC-6538",
+ "security": "Seguridad",
+ "press": "Prensa"
+ },
+ "acknowledgmentsAria": "Con el apoyo de la Stellar Development Foundation a través del programa Stellar Wave vía Drips",
+ "acknowledgmentsText": "Con el apoyo de la Stellar Development Foundation a través del programa Stellar Wave vía Drips",
+ "built": "CONSTRUIDO EN HORIZEN · ERC-5564 · CÓDIGO ABIERTO",
+ "legal": {
+ "privacy": "Privacidad",
+ "terms": "Términos",
+ "securityTxt": "Security.txt"
+ }
+ },
+ "og": {
+ "siteTitle": "Wraith Protocol — Pagos privados para cada cadena",
+ "metaDescription": "Wraith Protocol habilita pagos privados en cualquier blockchain usando direcciones ocultas. Un SDK, múltiples cadenas.",
+ "ogTitle": "Wraith Protocol",
+ "ogDescription": "Pagos privados para cada cadena. Direcciones ocultas, SDK multicadena y agentes de privacidad con IA."
+ }
+}
diff --git a/src/i18n/index.ts b/src/i18n/index.ts
new file mode 100644
index 0000000..33458f6
--- /dev/null
+++ b/src/i18n/index.ts
@@ -0,0 +1,32 @@
+import i18n from 'i18next';
+import { initReactI18next } from 'react-i18next';
+import en from './en.json';
+import es from './es.json';
+
+export const SUPPORTED_LOCALES = ['en', 'es'] as const;
+export type Locale = (typeof SUPPORTED_LOCALES)[number];
+
+function detectLocale(): Locale {
+ const saved = localStorage.getItem('wraith-locale') as Locale | null;
+ if (saved && (SUPPORTED_LOCALES as readonly string[]).includes(saved)) return saved;
+ const browser = navigator.language.split('-')[0] as Locale;
+ if ((SUPPORTED_LOCALES as readonly string[]).includes(browser)) return browser;
+ return 'en';
+}
+
+i18n.use(initReactI18next).init({
+ resources: {
+ en: { translation: en },
+ es: { translation: es },
+ },
+ lng: detectLocale(),
+ fallbackLng: 'en',
+ interpolation: { escapeValue: false },
+});
+
+export function changeLocale(lang: Locale): void {
+ localStorage.setItem('wraith-locale', lang);
+ void i18n.changeLanguage(lang);
+}
+
+export default i18n;
diff --git a/src/main.tsx b/src/main.tsx
index dfacde0..a627a2a 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -1,6 +1,7 @@
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import App from './App';
+import './i18n';
import './index.css';
createRoot(document.getElementById('root')!).render(