feat(landing): real i18n /en + /ja static routes for key pages#59
feat(landing): real i18n /en + /ja static routes for key pages#59Daisuke134 wants to merge 2 commits into
Conversation
…me/dashboard/life-manager/home)
- app/[lang]/ owns its own root <html lang={lang}> via route-group root layout;
non-localized routes moved under app/(main)/ with their own root layout (Next.js
multiple-root-layouts). Removed top-level app/layout.tsx + literal app/en|ja home dirs.
- /en/<page> and /ja/<page> now emit single <html> with correct lang (verified in out/).
- lib/launch-dict.ts: real EN/JA copy for install, me, dashboard, life-manager.
- components/launch/{InstallContent,MeContent,LifeManagerContent,DashboardClient}.tsx:
locale-parameterized; root pages reduced to thin wrappers (JA default for install/me,
EN for life-manager/dashboard) so no duplicate copy + root routes keep working.
- LaunchNav: optional lang prop, localized labels, /<lang>-prefixed hrefs, EN<->JA toggle.
- Cleaned /install mixed-language mess (now fully-EN and fully-JA).
- Preserved: real Stripe checkout link, dashboard build-time snapshot real numbers,
/me GATE-0 integrity badge logic + MeClient. Snapshot generator output path updated.
- tsc: 0 errors. npm run build: succeeds.
|
Warning Review limit reached
More reviews will be available in 1 minute and 24 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more credits in the billing tab to continue. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (105)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
What
Real i18n for aniccaai.com key pages. A user visiting `/en/` or `/ja/` now gets that page in the right language, with a working language toggle and `` (in the emitted static HTML) matching content.
Fixes the audit findings:
Architecture (verified via Next.js docs + empirical build)
Next.js 14 App Router, `output: 'export'`. Multiple root layouts via route groups:
Empirically confirmed: a single top-level `app/layout.tsx` causes nested double `` for `[lang]` — the route-group split is what makes `` correct in static HTML.
Files
Non-regression (preserved)
Build evidence (`cd apps/landing && npm run build` → exit 0; tsc → 0 errors)
```
+ tag count per page (out/): en/install Stripe link present: install.html, en/install.html, ja/install.htmlen/install: "AI agent that earns money" (English), 0 stray JP markers
ja/install: "推奨", "どちらのパスでも" (Japanese)
en/me "Your Anicca instance" / ja/me "あなたの Anicca 個体"
en/life-manager "Life Manager" / ja/life-manager "ライフマネージャー"
dashboard real numbers in static HTML: $5.04 (en/dashboard, ja/dashboard, root /dashboard)
toggle: en/install shows 日本語 → /ja/install ; ja/install shows English → /en/install
/me integrity badge: "No external revenue yet" / "外部収益はまだ" (swap not counted external)
```
Director reviews + merges + deploys + camofox-verifies. Do not merge.
Spec: `docs/superpowers/specs/2026-06-16-landing-i18n-lang-routes-design.md`