feat(landing): extract i18n keys + add English translations
Replaces all rendered Chinese strings in LandingView with $t() calls and <i18n-t> interpolation components; adds landing namespace (62 leaf keys) to both zh.ts and en.ts. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5598,4 +5598,86 @@ export default {
|
||||
},
|
||||
},
|
||||
|
||||
landing: {
|
||||
nav: {
|
||||
products: 'Products',
|
||||
docs: 'Docs',
|
||||
login: 'Sign in',
|
||||
signup: 'Free trial →',
|
||||
},
|
||||
hero: {
|
||||
badgeNew: 'NEW',
|
||||
eyebrow: 'Unified access to multiple AI platforms · Zero code change',
|
||||
title1: 'Your AI subscriptions,',
|
||||
title2: 'are already paid for.',
|
||||
sub1: 'Claude Pro · ChatGPT Plus · Codex · Gemini subscriptions',
|
||||
sub2: 'Aggregated into one unified API — drop-in {openai} / {anthropic} SDK',
|
||||
ctaLogin: 'Sign in →',
|
||||
ctaContact: 'Contact us',
|
||||
micro: 'Verified with Codex CLI · Claude Code · curl · Server egress: Singapore',
|
||||
},
|
||||
models: {
|
||||
kicker: '// providers',
|
||||
title: 'Reuse your subscriptions directly via OAuth',
|
||||
sub: 'No official API key needed. No account switching.',
|
||||
more: 'More',
|
||||
morePlanned: 'Planned',
|
||||
},
|
||||
features: {
|
||||
kicker: '// capabilities',
|
||||
title1: 'One subscription,',
|
||||
title2: 'one unified model pool',
|
||||
sub: 'Consolidate subscriptions scattered across platforms into infrastructure developers can actually use',
|
||||
f1Title: 'One key for all models',
|
||||
f1Desc: 'No more requesting API keys or configuring base_url per provider. One {sk} routes to Claude / GPT / Gemini, auto-dispatched by model to the right account pool.',
|
||||
f1b1: 'OpenAI Responses API compatible',
|
||||
f1b2: 'Anthropic Messages API compatible',
|
||||
f1b3: 'Smart model → provider routing',
|
||||
f2Title: 'Highly available account pool',
|
||||
f2Desc: 'Multi-account auto-scheduling with failover. When an upstream hits rate limits or cooldown, traffic switches to the next healthy account — token refresh is fully automatic.',
|
||||
f2b1: 'Rate-limit / 5xx auto failover',
|
||||
f2b2: 'OAuth token auto-refresh',
|
||||
f2b3: 'Weighted round-robin · least connections',
|
||||
f3Title: 'Usage dashboard',
|
||||
f3Desc: 'Tokens, cost, upstream account, and latency visualized per request. Model distribution pie + trend curve + top rankings.',
|
||||
f3b1: 'Per-request audit log',
|
||||
f3b2: 'Multi-dimension tokens / cost stats',
|
||||
f3b3: 'Export CSV / Webhook integration',
|
||||
},
|
||||
codeDemo: {
|
||||
kicker: '// integration',
|
||||
title: 'Change base_url. That\'s it.',
|
||||
sub: 'Compatible with OpenAI / Anthropic / Gemini SDK — {highlight}',
|
||||
subHighlight: 'zero code changes',
|
||||
foot: 'Supports OpenAI Responses API · Anthropic Messages API · Gemini generateContent · Streaming SSE & WebSocket',
|
||||
},
|
||||
dashboard: {
|
||||
kicker: '// observability',
|
||||
title: 'Every request, fully visible',
|
||||
sub: 'Unlike opaque third-party API pools — see exactly which account was charged, which model ran, how many tokens were used, and upstream response time at a glance.',
|
||||
statToday: "Today's requests",
|
||||
statTokensIn: 'Input tokens',
|
||||
statTokensOut: 'Output tokens',
|
||||
statCost: "Today's cost",
|
||||
chartTrend: 'Usage trend — last 30 days',
|
||||
tableTime: 'Time',
|
||||
tableModel: 'Model',
|
||||
tableUpstream: 'Upstream',
|
||||
tableStatus: 'Status',
|
||||
tableUsage: 'Usage',
|
||||
},
|
||||
footer: {
|
||||
tagline1: 'Aggregate multiple AI subscriptions into one unified API.',
|
||||
tagline2: 'Put your already-paid subscriptions to work.',
|
||||
colProducts: 'Products',
|
||||
colAccount: 'Account',
|
||||
colContact: 'Contact',
|
||||
linkDocs: 'Docs',
|
||||
linkFeatures: 'Features',
|
||||
linkChangelog: 'Changelog',
|
||||
linkLogin: 'Sign in',
|
||||
linkRegister: 'Register',
|
||||
},
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user