Integrations
Internationalization
Buyer guide to Bunship's real EN/ZH implementation across web, docs, API, and auth emails.
Bunship already supports English and Chinese, but there are four different i18n layers. Treat them as separate systems when you customize.
The 4 i18n Layers in This Repo
- Web UI (
apps/ship,next-intl) - Docs UI + docs search (
apps/ship, Fumadocs) - API errors (
apps/ship-api,i18next) - Auth email locale resolution (
packages/auth+packages/emails)
Where to Edit
- Web locale config:
apps/ship/src/i18n/config.ts - Web message loading:
apps/ship/src/i18n/messages.ts - Message files:
apps/ship/src/messages/en/*.json,.../zh/*.json - Docs locale wiring:
apps/ship/src/lib/docs-i18n.ts - API i18n resources:
apps/ship-api/src/i18n/resources/* - Auth email locale logic:
packages/auth/src/email-locale.ts
Buyer Workflow (Recommended)
- Finalize EN product copy first.
- Mirror the same key paths in ZH JSON.
- Verify locale switch in marketing pages and app pages.
- Verify API error localization with
X-Localeheader. - Verify auth email language in signup/reset/OTP flows.
Common Mistakes to Avoid
- Updating web copy but forgetting API error translations.
- Changing route copy without updating docs locale files.
- Mixing hard-coded strings with translation keys.
- Shipping partial ZH coverage in core purchase/auth flows.
Launch Checklist
/enand/zhrouting and redirection behavior are correct.- Pricing/auth/dashboard pages are fully translated.
- API validation/business errors are localized as expected.
- Auth emails pick the correct locale in real browser flows.