返回 CodeWhale
page.tsx
根目录 / web / app / [locale] / legal / terms / page.tsx
1 import Link from "next/link";
2 import { buildPageMetadata } from "@/lib/page-meta";
3 import { LEGAL_UPDATED, TERMS_SECTIONS } from "@/lib/legal-copy";
4
5 export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }) {
6 const { locale } = await params;
7 const isZh = locale === "zh";
8 return buildPageMetadata({
9 path: "/legal/terms",
10 locale,
11 title: isZh ? "服务条款 · Codewhale" : "Terms of service · Codewhale",
12 description: isZh
13 ? "Shannon Labs 产品 Codewhale 的服务条款。"
14 : "Terms that govern your use of Codewhale, a Shannon Labs product.",
15 });
16 }
17
18 export default async function TermsPage({ params }: { params: Promise<{ locale: string }> }) {
19 const { locale } = await params;
20 const isZh = locale === "zh";
21 return (
22 <div className="portal-home">
23 <article className="legal-doc">
24 <p className="legal-doc-kicker">{isZh ? "法律" : "Legal"}</p>
25 <h1>{isZh ? "服务条款" : "Terms of service"}</h1>
26 <p className="legal-doc-updated">
27 {isZh ? "生效并最近更新于" : "Effective and last updated"} {LEGAL_UPDATED}
28 {isZh ? "。以下为具有约束力的英文文本。" : "."}
29 </p>
30 <p>
31 These terms govern your use of Codewhale, a Shannon Labs product. By creating an
32 account or using the service, you agree to them.
33 </p>
34 {TERMS_SECTIONS.map((section) => (
35 <section key={section.title}>
36 <h2>{section.title}</h2>
37 <p>{section.body}</p>
38 </section>
39 ))}
40 <p className="legal-doc-nav">
41 <Link href={`/${locale}/legal/privacy`}>{isZh ? "隐私政策" : "Privacy policy"}</Link>
42 <Link href={`/${locale}`}>{isZh ? "返回首页" : "Back home"}</Link>
43 </p>
44 </article>
45 </div>
46 );
47 }
48
48 lines Plain Text