cynarAI 6c7eed7580 Initial clean evOo-local from f00577b
Fresh history cut from cynarAI/evoo antigravity-handoff/project-timeline
(Voice First + project timeline). Brand docs/titles as evOo; keep @rakazo/*
packages as tech debt. Excludes node_modules, caches, secrets, voice blobs.
2026-09-20 17:15:16 +02:00

793 lines
27 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { DEMO_ROSTER, type RosterBot } from "../demo";
import { SITE_DESCRIPTION } from "../site";
import type { Locale } from "./locales";
export type HomeCopy = {
title: string;
description: string;
ogImageAlt: string;
availableLanguage: string;
skipToContent: string;
starFallback: string;
nav: {
home: string;
primary: string;
menu: string;
product: string;
bots: string;
selfHost: string;
openSource: string;
docs: string;
viewOnGithub: string;
};
hero: {
badge: string;
pill: string;
heading: string;
lead: string;
getStarted: string;
viewOnGithub: string;
setupWithAgent: string;
copiedForAgent: string;
copyFailed: string;
};
selfHost: {
eyebrow: string;
heading: string;
copy: string;
features: Array<{ title: string; body: string }>;
};
roster: {
eyebrow: string;
heading: string;
copy: string;
bots: RosterBot[];
};
openSource: {
eyebrow: string;
heading: string;
copy: string;
selfHostTitle: string;
selfHostMeta: string;
selfHostItems: string[];
starOnGithub: string;
readTheDocs: string;
cloudTitle: string;
cloudBadge: string;
cloudMeta: string;
cloudItems: string[];
getStarted: string;
};
cta: {
heading: string;
copy: string;
getStarted: string;
viewOnGithub: string;
openSourceValue: string;
selfHostValue: string;
stats: Array<{ value: "stars" | "license" | "openSource" | "selfHost"; label: string }>;
};
getStartedDialog: {
closeLabel: string;
eyebrow: string;
title: string;
copy: string;
selfHostNow: string;
selfHostHint: string;
cloudWaitlist: string;
cloudHint: string;
back: string;
successTitle: string;
successCopy: string;
done: string;
viewOnGithub: string;
};
waitlist: {
emailLabel: string;
placeholder: string;
submit: string;
joining: string;
success: string;
added: string;
error: string;
};
footer: {
navLabel: string;
languagesLabel: string;
links: {
docs: string;
changelog: string;
about: string;
support: string;
privacy: string;
};
};
};
const EN_ROSTER = DEMO_ROSTER;
const DE_ROSTER: RosterBot[] = [
{
name: "Sales Outbound",
color: "#F5A03C",
slug: "evoo/sales-outbound",
desc: "Recherchiert nachts Accounts, bewertet Intent, entwirft in deinem Ton und hinterlässt eine Review-Liste.",
},
{
name: "Inbox Manager",
color: "#6A6BF5",
slug: "evoo/inbox-manager",
desc: "Archiviert den Lärm, antwortet auf Routine-Threads und parkt Entwürfe, die du lesen solltest.",
},
{
name: "Talent Scout",
color: "#3B82F6",
slug: "evoo/talent-scout",
desc: "Liest jede Bewerbung, shortlistet nach deiner Latte und schreibt die Intro-Mails.",
},
{
name: "Expense Manager",
color: "#F2622A",
slug: "evoo/expense-manager",
desc: "Ordnet Belege den Buchungen zu, reicht den Report ein und fragt nach, statt zu raten.",
},
{
name: "Bug Triage",
color: "#D9508A",
slug: "evoo/bug-triage",
desc: "Reproduziert Reports in einem echten Browser und hängt die Schritte an das Issue.",
},
{
name: "Account Manager",
color: "#9B5CF6",
slug: "evoo/account-manager",
desc: "Hält Renewal-Kontext, beantwortet bekannte Fragen und eskaliert den Rest.",
},
{
name: "Paid Media",
color: "#3EC5A8",
slug: "evoo/paid-media",
desc: "Überwacht den Spend täglich, pausiert, was nicht konvertiert, und meldet, was sich geändert hat.",
},
{
name: "Chief of Staff",
color: "#8B93A8",
slug: "evoo/chief-of-staff",
desc: "Führt die Woche: Briefings, Buchungen und Übergaben zwischen deinen anderen Bots.",
},
];
const KO_ROSTER: RosterBot[] = [
{
name: "Sales Outbound",
color: "#F5A03C",
slug: "evoo/sales-outbound",
desc: "밤새 계정을 조사하고 의도를 점수한 뒤, 당신 말투로 초안을 써 검토 목록을 남깁니다.",
},
{
name: "Inbox Manager",
color: "#6A6BF5",
slug: "evoo/inbox-manager",
desc: "잡음을 보관처리하고, 루틴 스레드에 답하며, 확인이 필요한 초안은 보류합니다.",
},
{
name: "Talent Scout",
color: "#3B82F6",
slug: "evoo/talent-scout",
desc: "지원서를 모두 읽고 기준에 맞게 숏리스트한 뒤 소개 메일을 작성합니다.",
},
{
name: "Expense Manager",
color: "#F2622A",
slug: "evoo/expense-manager",
desc: "영수증과 결제를 맞추고 리포트를 제출하며, 추측하기 전에 묻습니다.",
},
{
name: "Bug Triage",
color: "#D9508A",
slug: "evoo/bug-triage",
desc: "실제 브라우저에서 리포트를 재현하고 이슈에 재현 절차를 붙입니다.",
},
{
name: "Account Manager",
color: "#9B5CF6",
slug: "evoo/account-manager",
desc: "갱신 맥락을 유지하고 알려진 질문에 답하며, 나머지는 에스컬레이션합니다.",
},
{
name: "Paid Media",
color: "#3EC5A8",
slug: "evoo/paid-media",
desc: "매일 지출을 지켜보고 전환되지 않는 건 일시정지한 뒤, 바뀐 점을 보고합니다.",
},
{
name: "Chief of Staff",
color: "#8B93A8",
slug: "evoo/chief-of-staff",
desc: "한 주를 운영합니다: 브리핑, 예약, 다른 봇 사이의 핸드오프.",
},
];
const ZH_ROSTER: RosterBot[] = [
{
name: "Sales Outbound",
color: "#F5A03C",
slug: "evoo/sales-outbound",
desc: "夜间调研客户、评估意向,用你的语气起草跟进,并留下待审清单。",
},
{
name: "Inbox Manager",
color: "#6A6BF5",
slug: "evoo/inbox-manager",
desc: "归档杂音、回复例行邮件,把需要你过目的草稿先搁置起来。",
},
{
name: "Talent Scout",
color: "#3B82F6",
slug: "evoo/talent-scout",
desc: "通读每份简历,按你的标准筛出候选名单,并写好介绍邮件。",
},
{
name: "Expense Manager",
color: "#F2622A",
slug: "evoo/expense-manager",
desc: "核对票据与账目、提交报销,拿不准时先问而不是猜。",
},
{
name: "Bug Triage",
color: "#D9508A",
slug: "evoo/bug-triage",
desc: "在真实浏览器里复现报告,并把复现步骤附到工单上。",
},
{
name: "Account Manager",
color: "#9B5CF6",
slug: "evoo/account-manager",
desc: "掌握续约背景,回答常见问题,其余的自动升级给你。",
},
{
name: "Paid Media",
color: "#3EC5A8",
slug: "evoo/paid-media",
desc: "每天盯投放,暂停没有转化的广告,并汇报发生了什么变化。",
},
{
name: "Chief of Staff",
color: "#8B93A8",
slug: "evoo/chief-of-staff",
desc: "统筹整周:准备简报、安排日程,并协调其他 Bot 之间的交接。",
},
];
const HOME_COPY: Record<Locale, HomeCopy> = {
en: {
title: "evOo | Open source evOo alternative",
description: SITE_DESCRIPTION,
ogImageAlt:
"evOo. AI teammates you actually own. Your keys, your model, your machine.",
availableLanguage: "English",
skipToContent: "Skip to content",
starFallback: "Star",
nav: {
home: "evOo home",
primary: "Primary",
menu: "Menu",
product: "Product",
bots: "Bots",
selfHost: "Self-host",
openSource: "Open source",
docs: "Docs",
viewOnGithub: "View on GitHub",
},
hero: {
badge: "Apache-2.0",
pill: "Self-hosted",
heading: "AI teammates you actually own",
lead: "evOo is an open source evOo alternative. Give a bot real work. It signs in to your tools, uses them the way you do, and comes back when it needs you.",
getStarted: "Get started",
viewOnGithub: "View on GitHub",
setupWithAgent: "Set up with your agent",
copiedForAgent: "Copied for your agent",
copyFailed: "Copy failed. Try again.",
},
selfHost: {
eyebrow: "Self-hosted",
heading: "The computer is yours",
copy: "Run evOo on your machine. Your keys, your model, your data.",
features: [
{
title: "Any model, your key",
body: "Point a bot at Claude, GPT, Grok, or a local model. Swap per bot: the cheap one triages, the smart one writes.",
},
{
title: "Readable routines",
body: "Show a bot a workflow once and it saves a routine as plain Markdown you can read, edit, and commit.",
},
{
title: "Approvals that hold",
body: "Set what a bot may do alone and what it must ask about. Every action lands in an audit log you own.",
},
],
},
roster: {
eyebrow: "Bot Templates",
heading: "Give each bot a job",
copy: "Start a new bot and it interviews you. A few questions about the work, how you write, and where it lives. Then it gets going.",
bots: EN_ROSTER,
},
openSource: {
eyebrow: "Open source",
heading: "No pricing page. Just the repo.",
copy: "evOo is Apache-2.0 licensed and runs on your own machine with your own model keys. Nothing is gated, nothing phones home.",
selfHostTitle: "Self-host",
selfHostMeta: "Available today",
selfHostItems: [
"Docker runner and sandboxed browser",
"Bring your own model keys",
"Routines, memory, and audit log",
"Unlimited bots, no seats, no limits",
"Community support on GitHub",
],
starOnGithub: "Star on GitHub",
readTheDocs: "Read the docs",
cloudTitle: "Cloud",
cloudBadge: "Coming soon",
cloudMeta: "Bring your own keys, we run the computers",
cloudItems: [
"Managed sandboxes, always on",
"Your keys, your model spend",
"Same bots, same routines, no migration",
],
getStarted: "Get started",
},
cta: {
heading: "Meet your first bot",
copy: "Give evOo something you have been putting off and let it handle the follow-through.",
getStarted: "Get started",
viewOnGithub: "View on GitHub",
openSourceValue: "Open source",
selfHostValue: "Self-host",
stats: [
{ value: "stars", label: "GitHub stars" },
{ value: "license", label: "License" },
{ value: "openSource", label: "No seats, no gates" },
{ value: "selfHost", label: "Your machine" },
],
},
getStartedDialog: {
closeLabel: "Close get started dialog",
eyebrow: "Get started",
title: "How do you want to start?",
copy: "Self-host on your machine, or join the Cloud waitlist.",
selfHostNow: "Self-host now",
selfHostHint: "Install steps are in the docs.",
cloudWaitlist: "Cloud waitlist",
cloudHint: "Hosted evOo is coming. Leave your email.",
back: "Back",
successTitle: "You're in.",
successCopy:
"We'll email you when hosted evOo is ready. Want to start today? Jump to Self-host on this page.",
done: "Done",
viewOnGithub: "View on GitHub",
},
waitlist: {
emailLabel: "Email address",
placeholder: "you@company.com",
submit: "Continue",
joining: "Joining…",
success: "You’re in.",
added: "Added",
error: "Couldn’t add you. Try again.",
},
footer: {
navLabel: "Footer",
languagesLabel: "Language",
links: {
docs: "Docs",
changelog: "Changelog",
about: "About",
support: "Support",
privacy: "Privacy",
},
},
},
de: {
title: "evOo | Open-Source-Alternative zu evOo",
description:
"evOo ist eine Open-Source-Alternative zu evOo für persistente KI-Teamkollegen, die echte Arbeit erledigen. Deine Keys, dein Modell, deine Maschine.",
ogImageAlt:
"evOo. KI-Teamkollegen, die dir wirklich gehören. Deine Keys, dein Modell, deine Maschine.",
availableLanguage: "German",
skipToContent: "Zum Inhalt springen",
starFallback: "Star",
nav: {
home: "evOo-Startseite",
primary: "Hauptnavigation",
menu: "Menü",
product: "Produkt",
bots: "Bots",
selfHost: "Self-host",
openSource: "Open Source",
docs: "Docs",
viewOnGithub: "Auf GitHub ansehen",
},
hero: {
badge: "Apache-2.0",
pill: "Self-hosted",
heading: "KI-Teamkollegen, die dir wirklich gehören",
lead: "evOo ist eine Open-Source-Alternative zu evOo. Gib einem Bot echte Arbeit. Er meldet sich in deinen Tools an, nutzt sie wie du. Er kommt zurück, wenn er dich braucht.",
getStarted: "Loslegen",
viewOnGithub: "Auf GitHub ansehen",
setupWithAgent: "Mit deinem Agenten einrichten",
copiedForAgent: "Für deinen Agenten kopiert",
copyFailed: "Kopieren fehlgeschlagen. Erneut versuchen.",
},
selfHost: {
eyebrow: "Self-hosted",
heading: "Der Computer gehört dir",
copy: "Betreibe evOo auf deiner Maschine. Deine Keys, dein Modell, deine Daten.",
features: [
{
title: "Beliebiges Modell, dein Key",
body: "Richte einen Bot auf Claude, GPT, Grok oder ein lokales Modell aus. Pro Bot wechselbar: der günstige triagiert, der smarte schreibt.",
},
{
title: "Lesbare Routinen",
body: "Zeig einem Bot einmal einen Workflow. Er speichert eine Routine als Markdown, das du lesen, editieren und committen kannst.",
},
{
title: "Freigaben, die greifen",
body: "Lege fest, was ein Bot allein darf und worum er fragen muss. Jede Aktion landet in einem Audit-Log, das dir gehört.",
},
],
},
roster: {
eyebrow: "Bot-Vorlagen",
heading: "Gib jedem Bot eine Aufgabe",
copy: "Starte einen neuen Bot und er interviewt dich. Ein paar Fragen zur Arbeit, zu deinem Schreibstil und wo sie lebt. Dann legt er los.",
bots: DE_ROSTER,
},
openSource: {
eyebrow: "Open Source",
heading: "Keine Preisseite. Nur das Repo.",
copy: "evOo ist Apache-2.0-lizenziert und läuft auf deiner Maschine mit deinen Model-Keys. Nichts ist freigeschaltet, nichts telefoniert nach Hause.",
selfHostTitle: "Self-host",
selfHostMeta: "Heute verfügbar",
selfHostItems: [
"Docker-Runner und sandboxierter Browser",
"Eigene Model-Keys mitbringen",
"Routinen, Memory und Audit-Log",
"Unbegrenzte Bots, keine Seats, keine Limits",
"Community-Support auf GitHub",
],
starOnGithub: "Auf GitHub mit Stern markieren",
readTheDocs: "Docs lesen",
cloudTitle: "Cloud",
cloudBadge: "Demnächst",
cloudMeta: "Deine Keys, wir betreiben die Computer",
cloudItems: [
"Managed Sandboxes, immer an",
"Deine Keys, dein Model-Spend",
"Dieselben Bots, dieselben Routinen, keine Migration",
],
getStarted: "Loslegen",
},
cta: {
heading: "Triff deinen ersten Bot",
copy: "Gib evOo etwas, das du aufgeschoben hast. Lass es den Follow-through übernehmen.",
getStarted: "Loslegen",
viewOnGithub: "Auf GitHub ansehen",
openSourceValue: "Open Source",
selfHostValue: "Self-host",
stats: [
{ value: "stars", label: "GitHub Stars" },
{ value: "license", label: "Lizenz" },
{ value: "openSource", label: "Keine Seats, keine Gates" },
{ value: "selfHost", label: "Deine Maschine" },
],
},
getStartedDialog: {
closeLabel: "Loslegen-Dialog schließen",
eyebrow: "Loslegen",
title: "Wie willst du starten?",
copy: "Self-host auf deiner Maschine, oder auf die Cloud-Warteliste.",
selfHostNow: "Jetzt self-hosten",
selfHostHint: "Installationsschritte stehen in den Docs.",
cloudWaitlist: "Cloud-Warteliste",
cloudHint: "Gehostetes evOo kommt. Hinterlasse deine E-Mail.",
back: "Zurück",
successTitle: "Du bist dabei.",
successCopy:
"Wir mailen dir, wenn gehostetes evOo bereit ist. Heute starten? Zum Self-host-Abschnitt auf dieser Seite.",
done: "Fertig",
viewOnGithub: "Auf GitHub ansehen",
},
waitlist: {
emailLabel: "E-Mail-Adresse",
placeholder: "du@firma.com",
submit: "Weiter",
joining: "Wird eingetragen…",
success: "Du bist dabei.",
added: "Hinzugefügt",
error: "Konnte dich nicht eintragen. Bitte erneut versuchen.",
},
footer: {
navLabel: "Fußzeile",
languagesLabel: "Sprache",
links: {
docs: "Dokumentation",
changelog: "Änderungsprotokoll",
about: "Über uns",
support: "Support",
privacy: "Datenschutz",
},
},
},
ko: {
title: "evOo | 오픈소스 evOo 대안",
description:
"evOo는 실제 업무를 수행하는 지속형 AI 팀원을 위한 오픈소스 evOo 대안입니다. 키, 모델, 머신, 모두 당신 것.",
ogImageAlt: "evOo. 진짜로 내 것인 AI 팀원. 키, 모델, 머신, 모두 당신 것.",
availableLanguage: "Korean",
skipToContent: "본문으로 건너뛰기",
starFallback: "Star",
nav: {
home: "evOo 홈",
primary: "주 메뉴",
menu: "메뉴",
product: "제품",
bots: "봇",
selfHost: "셀프 호스트",
openSource: "오픈소스",
docs: "Docs",
viewOnGithub: "GitHub에서 보기",
},
hero: {
badge: "Apache-2.0",
pill: "셀프 호스트",
heading: "진짜로 내 것인 AI 팀원",
lead: "evOo는 오픈소스 evOo 대안입니다. 봇에게 실제 업무를 맡기세요. 봇이 도구에 로그인하고, 당신처럼 사용하며, 필요할 때 돌아와 묻습니다.",
getStarted: "시작하기",
viewOnGithub: "GitHub에서 보기",
setupWithAgent: "에이전트로 설정하기",
copiedForAgent: "에이전트용으로 복사됨",
copyFailed: "복사 실패. 다시 시도하세요.",
},
selfHost: {
eyebrow: "셀프 호스트",
heading: "컴퓨터는 당신 것",
copy: "당신 머신에서 evOo를 실행하세요. 키, 모델, 데이터는 모두 당신 것.",
features: [
{
title: "어떤 모델이든, 키는 당신 것",
body: "봇을 Claude, GPT, Grok 또는 로컬 모델에 연결하세요. 봇마다 바꿀 수 있습니다. 저렴한 모델은 분류하고, 똑똑한 모델은 작성합니다.",
},
{
title: "읽을 수 있는 루틴",
body: "워크플로를 한 번 보여주면 봇이 읽고 수정하고 커밋할 수 있는 Markdown 루틴으로 저장합니다.",
},
{
title: "지키는 승인",
body: "봇이 혼자 해도 되는 일과 물어야 하는 일을 정하세요. 모든 액션은 당신이 소유한 감사 로그에 남습니다.",
},
],
},
roster: {
eyebrow: "봇 템플릿",
heading: "봇마다 역할을 주세요",
copy: "새 봇을 시작하면 인터뷰합니다. 업무, 글쓰기 방식, 작업이 어디에 있는지 몇 가지 질문. 그다음 바로 시작합니다.",
bots: KO_ROSTER,
},
openSource: {
eyebrow: "오픈소스",
heading: "가격 페이지 없음. 리포만.",
copy: "evOo는 Apache-2.0 라이선스이며, 당신 머신에서 당신 모델 키로 실행됩니다. 잠긴 기능도, 외부로 연락하는 것도 없습니다.",
selfHostTitle: "셀프 호스트",
selfHostMeta: "지금 사용 가능",
selfHostItems: [
"Docker 러너와 샌드박스 브라우저",
"모델 키는 직접 가져오기",
"루틴, 메모리, 감사 로그",
"봇 무제한, 시트·한도 없음",
"GitHub 커뮤니티 지원",
],
starOnGithub: "GitHub에서 Star",
readTheDocs: "문서 읽기",
cloudTitle: "Cloud",
cloudBadge: "곧 출시",
cloudMeta: "키는 당신 것, 컴퓨터는 우리가 운영",
cloudItems: [
"상시 가동 관리형 샌드박스",
"키와 모델 비용은 당신 것",
"같은 봇, 같은 루틴, 마이그레이션 없음",
],
getStarted: "시작하기",
},
cta: {
heading: "첫 봇을 만나보세요",
copy: "미뤄 두었던 일을 evOo에 맡기고, 후속까지 맡기세요.",
getStarted: "시작하기",
viewOnGithub: "GitHub에서 보기",
openSourceValue: "오픈소스",
selfHostValue: "셀프 호스트",
stats: [
{ value: "stars", label: "GitHub 스타" },
{ value: "license", label: "라이선스" },
{ value: "openSource", label: "시트·게이트 없음" },
{ value: "selfHost", label: "당신 머신" },
],
},
getStartedDialog: {
closeLabel: "시작하기 대화상자 닫기",
eyebrow: "시작하기",
title: "어떻게 시작할까요?",
copy: "당신 머신에서 셀프 호스트하거나, Cloud 대기열에 등록하세요.",
selfHostNow: "지금 셀프 호스트",
selfHostHint: "설치 단계는 문서에 있습니다.",
cloudWaitlist: "Cloud 대기열",
cloudHint: "호스팅 evOo가 곧 옵니다. 이메일을 남겨 주세요.",
back: "뒤로",
successTitle: "등록되었습니다.",
successCopy:
"호스팅 evOo가 준비되면 메일로 알려 드립니다. 오늘 시작하려면 이 페이지의 셀프 호스트 섹션으로 이동하세요.",
done: "완료",
viewOnGithub: "GitHub에서 보기",
},
waitlist: {
emailLabel: "이메일 주소",
placeholder: "you@company.com",
submit: "계속",
joining: "등록 중…",
success: "등록되었습니다.",
added: "추가됨",
error: "등록하지 못했습니다. 다시 시도하세요.",
},
footer: {
navLabel: "푸터",
languagesLabel: "언어",
links: {
docs: "문서",
changelog: "변경 내역",
about: "소개",
support: "지원",
privacy: "개인정보 처리방침",
},
},
},
zh: {
title: "evOo | 开源 evOo 替代品",
description:
"evOo 是一个开源 evOo 替代品,用于运行真正干活的持久化 AI 队友。密钥、模型、机器,都归你所有。",
ogImageAlt: "evOo:真正属于你的 AI 队友。密钥、模型、机器,都归你所有。",
availableLanguage: "Chinese",
skipToContent: "跳到主要内容",
starFallback: "加星",
nav: {
home: "evOo 首页",
primary: "主导航",
menu: "菜单",
product: "产品",
bots: "Bot",
selfHost: "自托管",
openSource: "开源",
docs: "文档",
viewOnGithub: "在 GitHub 上查看",
},
hero: {
badge: "Apache-2.0",
pill: "自托管",
heading: "真正属于你的 AI 队友",
lead: "evOo 是一个开源 evOo 替代品。把真正的工作交给 Bot:它会登录你的工具,像你一样使用它们,并在需要你时回来询问。",
getStarted: "开始使用",
viewOnGithub: "在 GitHub 上查看",
setupWithAgent: "用你的智能体安装",
copiedForAgent: "已为你的智能体复制",
copyFailed: "复制失败。请重试。",
},
selfHost: {
eyebrow: "自托管",
heading: "电脑归你所有",
copy: "在你自己的机器上运行 evOo。密钥、模型、数据,都归你所有。",
features: [
{
title: "任意模型,密钥归你",
body: "让 Bot 使用 Claude、GPT、Grok 或本地模型。可按 Bot 切换:用便宜的模型做分流,用聪明的模型写作。",
},
{
title: "可读的例行任务",
body: "给 Bot 演示一次工作流程,它就会把例行任务保存为纯 Markdown,你可以阅读、编辑并提交到版本库。",
},
{
title: "可靠的审批",
body: "设定 Bot 可以独立做什么、什么必须先请示。每个操作都会写入归你所有的审计日志。",
},
],
},
roster: {
eyebrow: "Bot 模板",
heading: "给每个 Bot 分配一份工作",
copy: "新建一个 Bot,它会先面试你:几个关于工作内容、写作风格和运行位置的问题。然后它就开始干活。",
bots: ZH_ROSTER,
},
openSource: {
eyebrow: "开源",
heading: "没有定价页,只有代码仓库。",
copy: "evOo 采用 Apache-2.0 许可证,在你自己的机器上用你自己的模型密钥运行。没有功能墙,也不会偷偷外联。",
selfHostTitle: "自托管",
selfHostMeta: "现已可用",
selfHostItems: [
"Docker 运行器和沙箱浏览器",
"自带模型密钥",
"例行任务、记忆和审计日志",
"Bot 数量不限,无席位、无额度限制",
"GitHub 社区支持",
],
starOnGithub: "在 GitHub 上点星",
readTheDocs: "阅读文档",
cloudTitle: "云端",
cloudBadge: "即将推出",
cloudMeta: "密钥归你,电脑由我们运行",
cloudItems: [
"托管沙箱,始终在线",
"密钥归你,模型费用归你",
"同样的 Bot 和例行任务,无需迁移",
],
getStarted: "开始使用",
},
cta: {
heading: "认识你的第一个 Bot",
copy: "把一件你一直拖延的事交给 evOo,让它负责跟进到底。",
getStarted: "开始使用",
viewOnGithub: "在 GitHub 上查看",
openSourceValue: "开源",
selfHostValue: "自托管",
stats: [
{ value: "stars", label: "GitHub 星标" },
{ value: "license", label: "许可证" },
{ value: "openSource", label: "无席位、无门槛" },
{ value: "selfHost", label: "你的机器" },
],
},
getStartedDialog: {
closeLabel: "关闭开始使用对话框",
eyebrow: "开始使用",
title: "你想如何开始?",
copy: "在你的机器上自托管,或加入云端候补名单。",
selfHostNow: "立即自托管",
selfHostHint: "安装步骤见文档。",
cloudWaitlist: "云端候补名单",
cloudHint: "托管版 evOo 即将推出。留下你的邮箱。",
back: "返回",
successTitle: "登记成功。",
successCopy:
"托管版 evOo 就绪时我们会邮件通知你。想今天就上手?跳到本页的自托管部分。",
done: "完成",
viewOnGithub: "在 GitHub 上查看",
},
waitlist: {
emailLabel: "邮箱地址",
placeholder: "you@company.com",
submit: "继续",
joining: "正在登记…",
success: "登记成功。",
added: "已添加",
error: "未能添加你,请重试。",
},
footer: {
navLabel: "页脚",
languagesLabel: "语言",
links: {
docs: "文档",
changelog: "更新日志",
about: "关于",
support: "支持",
privacy: "隐私",
},
},
},
};
export function getHomeCopy(locale: Locale): HomeCopy {
return HOME_COPY[locale];
}