mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-03-30 13:54:01 +00:00
docs: localize Go graph and testimonial copy
This commit is contained in:
parent
c6187ee40f
commit
ca5a7378de
@ -254,6 +254,32 @@ export const dict = {
|
||||
"go.pricing.body": "Use with any agent. Top up credit if needed. Cancel any time.",
|
||||
"go.graph.free": "Free",
|
||||
"go.graph.go": "Go",
|
||||
"go.graph.label": "Requests/month",
|
||||
"go.graph.usageLimits": "Usage limits",
|
||||
"go.graph.tick": "{{n}}x",
|
||||
"go.graph.aria": "Requests per month: {{free}} vs {{go}}",
|
||||
|
||||
"go.testimonials.brand.zen": "Zen",
|
||||
"go.testimonials.brand.go": "Go",
|
||||
"go.testimonials.handle": "@OpenCode",
|
||||
"go.testimonials.dax.name": "Dax Raad",
|
||||
"go.testimonials.dax.title": "ex-CEO, Terminal Products",
|
||||
"go.testimonials.dax.quoteAfter": "has been life changing, it's truly a no-brainer.",
|
||||
"go.testimonials.jay.name": "Jay V",
|
||||
"go.testimonials.jay.title": "ex-Founder, SEED, PM, Melt, Pop, Dapt, Cadmus, and ViewPoint",
|
||||
"go.testimonials.jay.quoteBefore": "4 out of 5 people on our team love using",
|
||||
"go.testimonials.jay.quoteAfter": ".",
|
||||
"go.testimonials.adam.name": "Adam Elmore",
|
||||
"go.testimonials.adam.title": "ex-Hero, AWS",
|
||||
"go.testimonials.adam.quoteBefore": "I can't recommend",
|
||||
"go.testimonials.adam.quoteAfter": "enough. Seriously, it's really good.",
|
||||
"go.testimonials.david.name": "David Hill",
|
||||
"go.testimonials.david.title": "ex-Head of Design, Laravel",
|
||||
"go.testimonials.david.quoteBefore": "With",
|
||||
"go.testimonials.david.quoteAfter": "I know all the models are tested and perfect for coding agents.",
|
||||
"go.testimonials.frank.name": "Frank Wang",
|
||||
"go.testimonials.frank.title": "ex-Intern, Nvidia (4 times)",
|
||||
"go.testimonials.frank.quote": "I wish I was still at Nvidia.",
|
||||
"go.problem.title": "What problem is Go solving?",
|
||||
"go.problem.body":
|
||||
"We're focused on bringing the OpenCode experience to as many people as possible. OpenCode Go is a low cost ($10/month) subscription designed to bring agentic coding to programmers around the world. It provides generous limits and reliable access to the most capable open source models.",
|
||||
|
||||
@ -27,10 +27,12 @@ const checkLoggedIn = query(async () => {
|
||||
if (workspaceID) throw redirect(`/workspace/${workspaceID}`)
|
||||
}, "checkLoggedIn.get")
|
||||
|
||||
function LimitsGraph(props: { href: string; labels: { free: string; go: string } }) {
|
||||
function LimitsGraph(props: { href: string }) {
|
||||
let root!: HTMLElement
|
||||
const [visible, setVisible] = createSignal(false)
|
||||
|
||||
const i18n = useI18n()
|
||||
|
||||
onMount(() => {
|
||||
if (typeof IntersectionObserver === "undefined") return setVisible(true)
|
||||
const observer = new IntersectionObserver(
|
||||
@ -73,7 +75,7 @@ function LimitsGraph(props: { href: string; labels: { free: string; go: string }
|
||||
return (
|
||||
<figure
|
||||
data-component="limit-graph"
|
||||
aria-label="Requests per month: Free vs Go"
|
||||
aria-label={i18n.t("go.graph.aria", { free: i18n.t("go.graph.free"), go: i18n.t("go.graph.go") })}
|
||||
data-visible={visible() ? "" : undefined}
|
||||
ref={root}
|
||||
style={{ "--start": `${start}%` } as any}
|
||||
@ -86,7 +88,7 @@ function LimitsGraph(props: { href: string; labels: { free: string; go: string }
|
||||
<g>
|
||||
<line x1={x(t)} y1={top} x2={x(t)} y2={h - bottom} data-grid />
|
||||
<text x={x(t)} y={h - 18} text-anchor="middle" data-tick>
|
||||
{t}x
|
||||
{i18n.t("go.graph.tick", { n: t })}
|
||||
</text>
|
||||
</g>
|
||||
)}
|
||||
@ -118,10 +120,10 @@ function LimitsGraph(props: { href: string; labels: { free: string; go: string }
|
||||
|
||||
<div data-slot="plot-labels">
|
||||
<span data-row-label style={{ "--y": y(yFree) } as any}>
|
||||
{props.labels.free}
|
||||
{i18n.t("go.graph.free")}
|
||||
</span>
|
||||
<span data-row-label style={{ "--y": y(yGo) } as any}>
|
||||
{props.labels.go}
|
||||
{i18n.t("go.graph.go")}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
@ -130,15 +132,15 @@ function LimitsGraph(props: { href: string; labels: { free: string; go: string }
|
||||
<div data-slot="caption-row">
|
||||
<div data-slot="caption-left">
|
||||
<div data-slot="caption-meta">
|
||||
<span data-slot="caption-label">Requests/month</span>
|
||||
<span data-slot="caption-label">{i18n.t("go.graph.label")}</span>
|
||||
<a data-slot="caption-link" href={props.href}>
|
||||
Usage limits
|
||||
{i18n.t("go.graph.usageLimits")}
|
||||
</a>
|
||||
</div>
|
||||
<div data-slot="legend">
|
||||
<span data-item>
|
||||
<i data-dot data-kind="free" />
|
||||
<span data-name>Free</span>
|
||||
<span data-name>{i18n.t("go.graph.free")}</span>
|
||||
<span data-value>{free.toLocaleString()}</span>
|
||||
</span>
|
||||
<For each={models}>
|
||||
@ -274,10 +276,7 @@ export default function Home() {
|
||||
</section>
|
||||
|
||||
<section data-component="comparison">
|
||||
<LimitsGraph
|
||||
href={language.route("/docs/go/#usage-limits")}
|
||||
labels={{ free: i18n.t("go.graph.free"), go: i18n.t("go.graph.go") }}
|
||||
/>
|
||||
<LimitsGraph href={language.route("/docs/go/#usage-limits")} />
|
||||
</section>
|
||||
|
||||
<section data-component="problem">
|
||||
@ -349,57 +348,61 @@ export default function Home() {
|
||||
<div data-slot="testimonial">
|
||||
<div data-slot="name">
|
||||
<img src={avatarDax} alt="" />
|
||||
<strong>Dax Raad</strong>
|
||||
<span>ex-CEO, Terminal Products</span>
|
||||
<strong>{i18n.t("go.testimonials.dax.name")}</strong>
|
||||
<span>{i18n.t("go.testimonials.dax.title")}</span>
|
||||
</div>
|
||||
<div data-slot="quote">
|
||||
<span>@OpenCode</span> <s>Zen</s> Go has been life changing, it's truly a no-brainer.
|
||||
<span>{i18n.t("go.testimonials.handle")}</span> <s>{i18n.t("go.testimonials.brand.zen")}</s>{" "}
|
||||
{i18n.t("go.testimonials.brand.go")} {i18n.t("go.testimonials.dax.quoteAfter")}
|
||||
</div>
|
||||
</div>
|
||||
{/*Jay*/}
|
||||
<div data-slot="testimonial">
|
||||
<div data-slot="name">
|
||||
<img src={avatarJay} alt="" />
|
||||
<strong>Jay V</strong>
|
||||
<span>ex-Founder, SEED, PM, Melt, Pop, Dapt, Cadmus, and ViewPoint</span>
|
||||
<strong>{i18n.t("go.testimonials.jay.name")}</strong>
|
||||
<span>{i18n.t("go.testimonials.jay.title")}</span>
|
||||
</div>
|
||||
<div data-slot="quote">
|
||||
{"4 out of 5 people on our team love using "}
|
||||
<span>@OpenCode</span> <s>Zen</s> Go.
|
||||
{i18n.t("go.testimonials.jay.quoteBefore")} <span>{i18n.t("go.testimonials.handle")}</span>{" "}
|
||||
<s>{i18n.t("go.testimonials.brand.zen")}</s> {i18n.t("go.testimonials.brand.go")}
|
||||
{i18n.t("go.testimonials.jay.quoteAfter")}
|
||||
</div>
|
||||
</div>
|
||||
{/*Adam*/}
|
||||
<div data-slot="testimonial">
|
||||
<div data-slot="name">
|
||||
<img src={avatarAdam} alt="" />
|
||||
<strong>Adam Elmore</strong>
|
||||
<span>ex-Hero, AWS</span>
|
||||
<strong>{i18n.t("go.testimonials.adam.name")}</strong>
|
||||
<span>{i18n.t("go.testimonials.adam.title")}</span>
|
||||
</div>
|
||||
<div data-slot="quote">
|
||||
{"I can't recommend "}
|
||||
<span>@OpenCode</span> <s>Zen</s> Go enough. Seriously, it's really good.
|
||||
{i18n.t("go.testimonials.adam.quoteBefore")} <span>{i18n.t("go.testimonials.handle")}</span>{" "}
|
||||
<s>{i18n.t("go.testimonials.brand.zen")}</s> {i18n.t("go.testimonials.brand.go")}{" "}
|
||||
{i18n.t("go.testimonials.adam.quoteAfter")}
|
||||
</div>
|
||||
</div>
|
||||
{/*David*/}
|
||||
<div data-slot="testimonial">
|
||||
<div data-slot="name">
|
||||
<img src={avatarDavid} alt="" />
|
||||
<strong>David Hill</strong>
|
||||
<span>ex-Head of Design, Laravel</span>
|
||||
<strong>{i18n.t("go.testimonials.david.name")}</strong>
|
||||
<span>{i18n.t("go.testimonials.david.title")}</span>
|
||||
</div>
|
||||
<div data-slot="quote">
|
||||
{"With "}
|
||||
<span>@OpenCode</span> <s>Zen</s> Go I know all the models are tested and perfect for coding agents.
|
||||
{i18n.t("go.testimonials.david.quoteBefore")} <span>{i18n.t("go.testimonials.handle")}</span>{" "}
|
||||
<s>{i18n.t("go.testimonials.brand.zen")}</s> {i18n.t("go.testimonials.brand.go")}{" "}
|
||||
{i18n.t("go.testimonials.david.quoteAfter")}
|
||||
</div>
|
||||
</div>
|
||||
{/*Frank*/}
|
||||
<div data-slot="testimonial">
|
||||
<div data-slot="name">
|
||||
<img src={avatarFrank} alt="" />
|
||||
<strong>Frank Wang</strong>
|
||||
<span>ex-Intern, Nvidia (4 times)</span>
|
||||
<strong>{i18n.t("go.testimonials.frank.name")}</strong>
|
||||
<span>{i18n.t("go.testimonials.frank.title")}</span>
|
||||
</div>
|
||||
<div data-slot="quote">I wish I was still at Nvidia.</div>
|
||||
<div data-slot="quote">{i18n.t("go.testimonials.frank.quote")}</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user