diff options
| author | David Hill <[email protected]> | 2026-03-04 12:57:49 +0000 |
|---|---|---|
| committer | David Hill <[email protected]> | 2026-03-04 12:57:49 +0000 |
| commit | 0a2aa8688d048b07e633065122f73bc0d4ec7e4a (patch) | |
| tree | e0d90ced64cc24c8480651f3defbdfd557d45812 /packages/console | |
| parent | e44cdaf887c9f5d819821b7f97370a20c3c5e54b (diff) | |
| download | opencode-0a2aa8688d048b07e633065122f73bc0d4ec7e4a.tar.gz opencode-0a2aa8688d048b07e633065122f73bc0d4ec7e4a.zip | |
chore(console): switch /go page to go.* i18n keys
Diffstat (limited to 'packages/console')
| -rw-r--r-- | packages/console/app/src/i18n/en.ts | 59 | ||||
| -rw-r--r-- | packages/console/app/src/routes/go/index.tsx | 81 |
2 files changed, 99 insertions, 41 deletions
diff --git a/packages/console/app/src/i18n/en.ts b/packages/console/app/src/i18n/en.ts index 970ad7c5e..33107fe52 100644 --- a/packages/console/app/src/i18n/en.ts +++ b/packages/console/app/src/i18n/en.ts @@ -244,6 +244,65 @@ export const dict = { "All Zen models are hosted in the US. Providers follow a zero-retention policy and do not use your data for model training, with the", "zen.privacy.exceptionsLink": "following exceptions", + "go.title": "OpenCode Go | Low cost coding models for everyone", + "go.hero.title": "Low cost coding models for everyone", + "go.hero.body": + "Go brings agentic coding to programmers around the world. Offering generous limits and reliable access to the most capable open-source models, so you can build with powerful agents without worrying about cost or availability.", + + "go.cta.start": "Subscribe to Go - $10/mo", + "go.pricing.body": "Use with any agent. Top up credit if needed. Cancel any time.", + "go.problem.title": "What problem is Go solving?", + "go.problem.body": + "There are so many models available, but only a few work well with coding agents. Most providers configure them differently with varying results.", + "go.problem.subtitle": "We're fixing this for everyone, not just OpenCode users.", + "go.problem.item1": "Testing select models and consulting their teams", + "go.problem.item2": "Working with providers to ensure they're delivered properly", + "go.problem.item3": "Benchmarking all model-provider combinations we recommend", + "go.how.title": "How Go works", + "go.how.body": "Go is a $10/month subscription you can use with OpenCode or any agent.", + "go.how.step1.title": "Create an account", + "go.how.step1.beforeLink": "follow the", + "go.how.step1.link": "setup instructions", + "go.how.step2.title": "Subscribe to Go", + "go.how.step2.link": "$10/month", + "go.how.step2.afterLink": "with generous limits", + "go.how.step3.title": "Start coding", + "go.how.step3.body": "with reliable access to open-source models", + "go.privacy.title": "Your privacy is important to us", + "go.privacy.beforeExceptions": + "Go models are hosted in the US. Providers follow a zero-retention policy and do not use your data for model training, with the", + "go.privacy.exceptionsLink": "following exceptions", + "go.faq.q1": "What is OpenCode Go?", + "go.faq.a1": + "Go is a low-cost subscription that gives you reliable access to capable open-source models for agentic coding.", + "go.faq.q2": "What models does Go include?", + "go.faq.a2": + "Go focuses on the most capable open-source models available through OpenCode, with generous limits and reliable access.", + "go.faq.q3": "Is Go the same as Zen?", + "go.faq.a3": + "No. Zen is pay-as-you-go, while Go is a $10/month subscription with generous limits and reliable access to open-source models GLM-5, Kimi K2.5, and MiniMax M2.5.", + "go.faq.q4": "How much does Go cost?", + "go.faq.a4.p1.beforePricing": "Go costs", + "go.faq.a4.p1.pricingLink": "$10/month", + "go.faq.a4.p1.afterPricing": "with generous limits.", + "go.faq.a4.p2.beforeAccount": "You can manage your subscription in your", + "go.faq.a4.p2.accountLink": "account", + "go.faq.a4.p3": "Cancel any time.", + "go.faq.q5": "What about data and privacy?", + "go.faq.a5.beforeExceptions": + "Go models are hosted in the US. Providers follow a zero-retention policy and do not use your data for model training, with the", + "go.faq.a5.exceptionsLink": "following exceptions", + "go.faq.q6": "Can I top up credit?", + "go.faq.a6": "If you need more usage, you can top up credit in your account.", + "go.faq.q7": "Can I cancel?", + "go.faq.a7": "Yes, you can cancel any time.", + "go.faq.q8": "Can I use Go with other coding agents?", + "go.faq.a8": "Yes, you can use Go with any agent. Follow the setup instructions in your preferred coding agent.", + + "go.faq.q9": "What is the difference between the free models included and Go?", + "go.faq.a9": + "Free models include Big Pickle plus promotional models available at the time, with a quota of 200 requests/day. Go includes GLM-5, Kimi K2.5, and MiniMax M2.5 with higher request quotas enforced across rolling windows (5-hour, weekly, and monthly), roughly equivalent to $12 per 5 hours, $30 per week, and $60 per month (actual request counts vary by model and usage).", + "zen.api.error.rateLimitExceeded": "Rate limit exceeded. Please try again later.", "zen.api.error.modelNotSupported": "Model {{model}} not supported", "zen.api.error.modelFormatNotSupported": "Model {{model}} not supported for format {{format}}", diff --git a/packages/console/app/src/routes/go/index.tsx b/packages/console/app/src/routes/go/index.tsx index d82f2739a..abcd2a94a 100644 --- a/packages/console/app/src/routes/go/index.tsx +++ b/packages/console/app/src/routes/go/index.tsx @@ -35,7 +35,7 @@ export default function Home() { return ( <main data-page="go"> {/*<HttpHeader name="Cache-Control" value="public, max-age=1, s-maxage=3600, stale-while-revalidate=86400" />*/} - <Title>{i18n.t("zen.title")}</Title> + <Title>{i18n.t("go.title")}</Title> <LocaleLinks path="/go" /> <Meta property="og:image" content="/social-share-zen.png" /> <Meta name="twitter:image" content="/social-share-zen.png" /> @@ -49,12 +49,8 @@ export default function Home() { <div data-slot="hero-copy"> <img data-slot="zen logo light" src={goLogoLight} alt="" /> <img data-slot="zen logo dark" src={goLogoDark} alt="" /> - <h1>Low cost coding models for everyone</h1> - <p> - Go brings agentic coding to programmers around the world. Offering generous limits and reliable access - to the most capable open-source models, so you can build with powerful agents without worrying about - cost or availability. - </p> + <h1>{i18n.t("go.hero.title")}</h1> + <p>{i18n.t("go.hero.body")}</p> <div data-slot="model-logos"> {/* <div> @@ -131,7 +127,7 @@ export default function Home() { */} </div> <a href="/auth"> - <span>Subscribe to Go - $10/mo</span> + <span>{i18n.t("go.cta.start")}</span> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M6.5 12L17 12M13 16.5L17.5 12L13 7.5" @@ -143,7 +139,7 @@ export default function Home() { </a> </div> <div data-slot="pricing-copy"> - <p>{i18n.t("zen.pricing.body")}</p> + <p>{i18n.t("go.pricing.body")}</p> </div> </section> @@ -155,50 +151,50 @@ export default function Home() { <section data-component="problem"> <div data-slot="section-title"> - <h3>{i18n.t("zen.problem.title")}</h3> - <p>{i18n.t("zen.problem.body")}</p> + <h3>{i18n.t("go.problem.title")}</h3> + <p>{i18n.t("go.problem.body")}</p> </div> - <p>{i18n.t("zen.problem.subtitle")}</p> + <p>{i18n.t("go.problem.subtitle")}</p> <ul> <li> - <span>[*]</span> {i18n.t("zen.problem.item1")} + <span>[*]</span> {i18n.t("go.problem.item1")} </li> <li> - <span>[*]</span> {i18n.t("zen.problem.item2")} + <span>[*]</span> {i18n.t("go.problem.item2")} </li> <li> - <span>[*]</span> {i18n.t("zen.problem.item3")} + <span>[*]</span> {i18n.t("go.problem.item3")} </li> </ul> </section> <section data-component="how"> <div data-slot="section-title"> - <h3>{i18n.t("zen.how.title")}</h3> - <p>{i18n.t("zen.how.body")}</p> + <h3>{i18n.t("go.how.title")}</h3> + <p>{i18n.t("go.how.body")}</p> </div> <ul> <li> <span>[1]</span> <div> - <strong>{i18n.t("zen.how.step1.title")}</strong> - {i18n.t("zen.how.step1.beforeLink")}{" "} - <a href={language.route("/docs/zen/#how-it-works")} title={i18n.t("zen.how.step1.link")}> - {i18n.t("zen.how.step1.link")} + <strong>{i18n.t("go.how.step1.title")}</strong> - {i18n.t("go.how.step1.beforeLink")}{" "} + <a href={language.route("/docs/zen/#how-it-works")} title={i18n.t("go.how.step1.link")}> + {i18n.t("go.how.step1.link")} </a> </div> </li> <li> <span>[2]</span> <div> - <strong>{i18n.t("zen.how.step2.title")}</strong> -{" "} - <a href={language.route("/docs/zen/#pricing")}>{i18n.t("zen.how.step2.link")}</a>{" "} - {i18n.t("zen.how.step2.afterLink")} + <strong>{i18n.t("go.how.step2.title")}</strong> -{" "} + <a href={language.route("/docs/zen/#pricing")}>{i18n.t("go.how.step2.link")}</a>{" "} + {i18n.t("go.how.step2.afterLink")} </div> </li> <li> <span>[3]</span> <div> - <strong>{i18n.t("zen.how.step3.title")}</strong> - {i18n.t("zen.how.step3.body")} + <strong>{i18n.t("go.how.step3.title")}</strong> - {i18n.t("go.how.step3.body")} </div> </li> </ul> @@ -206,12 +202,12 @@ export default function Home() { <section data-component="privacy"> <div data-slot="privacy-title"> - <h3>{i18n.t("zen.privacy.title")}</h3> + <h3>{i18n.t("go.privacy.title")}</h3> <div> <span>[*]</span> <p> - {i18n.t("zen.privacy.beforeExceptions")}{" "} - <a href={language.route("/docs/zen/#privacy")}>{i18n.t("zen.privacy.exceptionsLink")}</a>. + {i18n.t("go.privacy.beforeExceptions")}{" "} + <a href={language.route("/docs/zen/#privacy")}>{i18n.t("go.privacy.exceptionsLink")}</a>. </p> </div> </div> @@ -296,36 +292,39 @@ export default function Home() { </div> <ul> <li> - <Faq question={i18n.t("zen.faq.q1")}>{i18n.t("zen.faq.a1")}</Faq> + <Faq question={i18n.t("go.faq.q1")}>{i18n.t("go.faq.a1")}</Faq> </li> <li> - <Faq question={i18n.t("zen.faq.q2")}>{i18n.t("zen.faq.a2")}</Faq> + <Faq question={i18n.t("go.faq.q2")}>{i18n.t("go.faq.a2")}</Faq> </li> <li> - <Faq question={i18n.t("zen.faq.q3")}>{i18n.t("zen.faq.a3")}</Faq> + <Faq question={i18n.t("go.faq.q9")}>{i18n.t("go.faq.a9")}</Faq> </li> <li> - <Faq question={i18n.t("zen.faq.q4")}> - {i18n.t("zen.faq.a4.p1.beforePricing")}{" "} - <a href={language.route("/docs/zen/#pricing")}>{i18n.t("zen.faq.a4.p1.pricingLink")}</a>{" "} - {i18n.t("zen.faq.a4.p1.afterPricing")} {i18n.t("zen.faq.a4.p2.beforeAccount")}{" "} - <a href="/auth">{i18n.t("zen.faq.a4.p2.accountLink")}</a>. {i18n.t("zen.faq.a4.p3")} + <Faq question={i18n.t("go.faq.q3")}>{i18n.t("go.faq.a3")}</Faq> + </li> + <li> + <Faq question={i18n.t("go.faq.q4")}> + {i18n.t("go.faq.a4.p1.beforePricing")}{" "} + <a href={language.route("/docs/zen/#pricing")}>{i18n.t("go.faq.a4.p1.pricingLink")}</a>{" "} + {i18n.t("go.faq.a4.p1.afterPricing")} {i18n.t("go.faq.a4.p2.beforeAccount")}{" "} + <a href="/auth">{i18n.t("go.faq.a4.p2.accountLink")}</a>. {i18n.t("go.faq.a4.p3")} </Faq> </li> <li> - <Faq question={i18n.t("zen.faq.q5")}> - {i18n.t("zen.faq.a5.beforeExceptions")}{" "} - <a href={language.route("/docs/zen/#privacy")}>{i18n.t("zen.faq.a5.exceptionsLink")}</a>. + <Faq question={i18n.t("go.faq.q5")}> + {i18n.t("go.faq.a5.beforeExceptions")}{" "} + <a href={language.route("/docs/zen/#privacy")}>{i18n.t("go.faq.a5.exceptionsLink")}</a>. </Faq> </li> <li> - <Faq question={i18n.t("zen.faq.q6")}>{i18n.t("zen.faq.a6")}</Faq> + <Faq question={i18n.t("go.faq.q6")}>{i18n.t("go.faq.a6")}</Faq> </li> <li> - <Faq question={i18n.t("zen.faq.q7")}>{i18n.t("zen.faq.a7")}</Faq> + <Faq question={i18n.t("go.faq.q7")}>{i18n.t("go.faq.a7")}</Faq> </li> <li> - <Faq question={i18n.t("zen.faq.q8")}>{i18n.t("zen.faq.a8")}</Faq> + <Faq question={i18n.t("go.faq.q8")}>{i18n.t("go.faq.a8")}</Faq> </li> </ul> </section> |
