feat(i18n): Internationalize marketing pages and components

- HomePage.tsx: Add translation keys for features, testimonials, section titles
- FeaturesPage.tsx: Add translation keys for automation engine, multi-tenancy sections
- Hero.tsx: Add translation keys for headline, CTAs, trust signals, visual content
- ContactPage.tsx: Add translation keys for form headings, success messages
- PricingPage.tsx: Add translation keys for FAQ section
- PrivacyPolicyPage.tsx: Full internationalization of 15-section privacy policy
- TermsOfServicePage.tsx: Full internationalization of 16-section terms of service
- Footer.tsx & Navbar.tsx: Add translation keys for brand name, aria-labels

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-03 22:25:11 -05:00
parent c7f241b30a
commit bc094f2f80
10 changed files with 599 additions and 216 deletions

View File

@@ -39,10 +39,10 @@ def execute(context):
{/* Header */}
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center mb-20">
<h1 className="text-4xl sm:text-5xl font-bold text-gray-900 dark:text-white mb-6">
Built for Developers, Designed for Business
{t('marketing.features.pageTitle')}
</h1>
<p className="text-xl text-gray-600 dark:text-gray-400 max-w-3xl mx-auto">
SmoothSchedule isn't just cloud software. It's a programmable platform that adapts to your unique business logic.
{t('marketing.features.pageSubtitle')}
</p>
</div>
@@ -53,22 +53,21 @@ def execute(context):
<div>
<div className="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-purple-100 dark:bg-purple-900/30 text-purple-600 dark:text-purple-400 text-sm font-medium mb-6">
<Zap className="w-4 h-4" />
<span>Automation Engine</span>
<span>{t('marketing.features.automationEngine.badge')}</span>
</div>
<h2 className="text-3xl font-bold text-gray-900 dark:text-white mb-6">
Automated Task Manager
{t('marketing.features.automationEngine.title')}
</h2>
<p className="text-lg text-gray-600 dark:text-gray-400 mb-8">
Most schedulers only book appointments. SmoothSchedule runs your business.
Our "Automated Task Manager" executes internal tasks without blocking your calendar.
{t('marketing.features.automationEngine.description')}
</p>
<ul className="space-y-4">
{[
'Run recurring jobs (e.g., "Every Monday at 9am")',
'Execute custom logic securely',
'Access full customer and event context',
'Zero infrastructure management'
t('marketing.features.automationEngine.features.recurringJobs'),
t('marketing.features.automationEngine.features.customLogic'),
t('marketing.features.automationEngine.features.fullContext'),
t('marketing.features.automationEngine.features.zeroInfrastructure')
].map((item) => (
<li key={item} className="flex items-center gap-3">
<CheckCircle2 className="w-5 h-5 text-green-500" />
@@ -108,7 +107,7 @@ def execute(context):
</div>
<div className="mt-8 flex items-center justify-center gap-4 text-gray-500 text-sm">
<Lock className="w-4 h-4" />
<span>Strict Data Isolation</span>
<span>{t('marketing.features.multiTenancy.strictDataIsolation')}</span>
</div>
</div>
</div>
@@ -116,15 +115,13 @@ def execute(context):
<div className="order-1 lg:order-2">
<div className="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-blue-100 dark:bg-blue-900/30 text-blue-600 dark:text-blue-400 text-sm font-medium mb-6">
<Shield className="w-4 h-4" />
<span>Enterprise Security</span>
<span>{t('marketing.features.multiTenancy.badge')}</span>
</div>
<h2 className="text-3xl font-bold text-gray-900 dark:text-white mb-6">
True Data Isolation
{t('marketing.features.multiTenancy.title')}
</h2>
<p className="text-lg text-gray-600 dark:text-gray-400 mb-8">
We don't just filter your data. We use dedicated secure vaults to physically
separate your data from others. This provides the security of a private
database with the cost-efficiency of cloud software.
{t('marketing.features.multiTenancy.description')}
</p>
<div className="grid sm:grid-cols-2 gap-6">
@@ -133,9 +130,9 @@ def execute(context):
<Server className="w-6 h-6" />
</div>
<div>
<h3 className="font-semibold text-gray-900 dark:text-white mb-1">Custom Domains</h3>
<h3 className="font-semibold text-gray-900 dark:text-white mb-1">{t('marketing.features.multiTenancy.customDomains.title')}</h3>
<p className="text-sm text-gray-600 dark:text-gray-400">
Serve the app on your own domain (e.g., `schedule.yourbrand.com`).
{t('marketing.features.multiTenancy.customDomains.description')}
</p>
</div>
</div>
@@ -144,9 +141,9 @@ def execute(context):
<Code className="w-6 h-6" />
</div>
<div>
<h3 className="font-semibold text-gray-900 dark:text-white mb-1">White Labeling</h3>
<h3 className="font-semibold text-gray-900 dark:text-white mb-1">{t('marketing.features.multiTenancy.whiteLabeling.title')}</h3>
<p className="text-sm text-gray-600 dark:text-gray-400">
Remove our branding and make the platform your own.
{t('marketing.features.multiTenancy.whiteLabeling.description')}
</p>
</div>
</div>