Overview
Allow campaign creators to provide translated versions of their campaign content, and let contributors view campaigns in their preferred language using the existing i18n infrastructure.
Motivation
CrowdPay already supports en/fr UI translations, but campaign content (title, description, milestones) is always in the creator's language. This limits reach in multilingual regions where contributors might skip campaigns they cannot read.
Proposed Design
- Add a campaign_translations table: campaign_id, locale, title, description, milestone_titles
- Campaign creation/edit form gets a "Add Translation" button per supported locale
- Creators can optionally add translations; if none exist, original content is shown
- Contributor UI respects their locale setting and shows translated content when available
- Falls back to original language if translation is missing for the contributor's locale
- API: GET /api/campaigns/:id?locale=fr returns translated fields when available
Acceptance Criteria
Overview
Allow campaign creators to provide translated versions of their campaign content, and let contributors view campaigns in their preferred language using the existing i18n infrastructure.
Motivation
CrowdPay already supports en/fr UI translations, but campaign content (title, description, milestones) is always in the creator's language. This limits reach in multilingual regions where contributors might skip campaigns they cannot read.
Proposed Design
Acceptance Criteria