feat(i18n): 21-language pipeline, landing/docs/API wiring, landing+API translations

Shared Claude Code translation pipeline (scripts/i18n, no API key) plus Astro/VitePress/Scalar i18n wiring. Landing and API reference translated into all 20 languages; docs i18n wiring + English source anchors. The translated docs markdown (apps/docs/<locale>/**, 3,620 files) follows in a companion PR because it exceeds GitHub's per-PR CI file limit.
This commit is contained in:
SnapOtter
2026-07-11 13:01:55 +08:00
committed by GitHub
parent 2e91368816
commit 00b651c9f8
353 changed files with 564607 additions and 2594 deletions
+12 -3
View File
@@ -1,14 +1,23 @@
<script setup>
import { useData } from "vitepress";
import VPSwitchAppearance from "vitepress/dist/client/theme-default/components/VPSwitchAppearance.vue";
import DefaultTheme from "vitepress/theme";
import { computed } from "vue";
import { normalizeLocale, t } from "../i18n/ui.mjs";
import FundButton from "./FundButton.vue";
import GitHubStars from "./GitHubStars.vue";
import MachineTranslationBanner from "./MachineTranslationBanner.vue";
const { Layout } = DefaultTheme;
const { lang } = useData();
const locale = computed(() => normalizeLocale(lang.value));
</script>
<template>
<Layout>
<template #layout-top>
<MachineTranslationBanner />
</template>
<template #nav-bar-content-after>
<div class="nav-bar-right">
<VPSwitchAppearance />
@@ -19,9 +28,9 @@ const { Layout } = DefaultTheme;
<template #not-found>
<div class="not-found-page">
<span class="not-found-otter">🦦</span>
<h1 class="not-found-heading">Hello from the otter side!</h1>
<p class="not-found-text">This page swam away. Let's get you back on track.</p>
<a href="/" class="not-found-link">Back to docs</a>
<h1 class="not-found-heading">{{ t(locale, "notFound.heading") }}</h1>
<p class="not-found-text">{{ t(locale, "notFound.text") }}</p>
<a href="/" class="not-found-link">{{ t(locale, "notFound.link") }}</a>
</div>
</template>
</Layout>