feat(i18n): add multilingual platform descriptions and HostWizard demo data
Some checks failed
Some checks failed
- Add description_translations JSON column to Platform model + migration - Add language tabs to platform admin edit form for multilingual descriptions - Update API schemas to include description_translations in request/response - Translate pricing section UI labels via _t() macro (monthly/annual/CTA/etc.) - Add Luxembourgish (lb) support to all platforms (OMS, Main, Loyalty, Hosting) - Seed description_translations, contact emails, and social links for all platforms - Add LuxWeb Agency demo merchant with hosting stores, team, and content pages - Fix language code typo: lu → lb in platform-edit.js availableLanguages - Fix store content pages to use correct primary platform instead of hardcoded OMS Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -214,45 +214,103 @@ def create_default_platforms(db: Session) -> list[Platform]:
|
||||
"code": "oms",
|
||||
"name": "OMS",
|
||||
"description": "Order Management System for multi-store e-commerce",
|
||||
"description_translations": {
|
||||
"fr": "Système de gestion des commandes pour le commerce multi-boutiques",
|
||||
"de": "Bestellverwaltungssystem für Multi-Store-E-Commerce",
|
||||
"en": "Order Management System for multi-store e-commerce",
|
||||
"lb": "Bestellverwaltungssystem fir Multi-Store-E-Commerce",
|
||||
},
|
||||
"domain": "omsflow.lu",
|
||||
"path_prefix": "oms",
|
||||
"default_language": "fr",
|
||||
"supported_languages": ["fr", "de", "en"],
|
||||
"settings": {},
|
||||
"supported_languages": ["fr", "de", "en", "lb"],
|
||||
"settings": {
|
||||
"contact_email": "info@omsflow.lu",
|
||||
"support_email": "support@omsflow.lu",
|
||||
},
|
||||
"theme_config": {},
|
||||
},
|
||||
{
|
||||
"code": "main",
|
||||
"name": "Wizard",
|
||||
"description": "Main marketing site showcasing all Orion platforms",
|
||||
"description_translations": {
|
||||
"fr": "Site marketing principal présentant toutes les plateformes Orion",
|
||||
"de": "Zentrale Marketingseite für alle Orion-Plattformen",
|
||||
"en": "Main marketing site showcasing all Orion platforms",
|
||||
"lb": "Haaptmarketingsäit fir all Orion-Plattformen",
|
||||
},
|
||||
"domain": "wizard.lu",
|
||||
"path_prefix": None,
|
||||
"default_language": "fr",
|
||||
"supported_languages": ["fr", "de", "en"],
|
||||
"settings": {"is_marketing_site": True},
|
||||
"theme_config": {"primary_color": "#2563EB", "secondary_color": "#3B82F6"},
|
||||
"supported_languages": ["fr", "de", "en", "lb"],
|
||||
"settings": {
|
||||
"is_marketing_site": True,
|
||||
"contact_email": "info@wizard.lu",
|
||||
"support_email": "support@wizard.lu",
|
||||
},
|
||||
"theme_config": {
|
||||
"primary_color": "#2563EB",
|
||||
"secondary_color": "#3B82F6",
|
||||
"social": {
|
||||
"facebook": "https://facebook.com/wizard.lu",
|
||||
"linkedin": "https://linkedin.com/company/wizard-lu",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"code": "loyalty",
|
||||
"name": "Loyalty",
|
||||
"description": "Customer loyalty program platform for Luxembourg businesses",
|
||||
"description_translations": {
|
||||
"fr": "Plateforme de programme de fidélité pour les entreprises luxembourgeoises",
|
||||
"de": "Kundenbindungsprogramm-Plattform für luxemburgische Unternehmen",
|
||||
"en": "Customer loyalty program platform for Luxembourg businesses",
|
||||
"lb": "Clientsfidélitéitsprogramm-Plattform fir lëtzebuerger Betriber",
|
||||
},
|
||||
"domain": "rewardflow.lu",
|
||||
"path_prefix": "loyalty",
|
||||
"default_language": "fr",
|
||||
"supported_languages": ["fr", "de", "en"],
|
||||
"settings": {"features": ["points", "rewards", "tiers", "analytics"]},
|
||||
"theme_config": {"primary_color": "#8B5CF6", "secondary_color": "#A78BFA"},
|
||||
"supported_languages": ["fr", "de", "en", "lb"],
|
||||
"settings": {
|
||||
"features": ["points", "rewards", "tiers", "analytics"],
|
||||
"contact_email": "info@rewardflow.lu",
|
||||
"support_email": "support@rewardflow.lu",
|
||||
},
|
||||
"theme_config": {
|
||||
"primary_color": "#8B5CF6",
|
||||
"secondary_color": "#A78BFA",
|
||||
},
|
||||
},
|
||||
{
|
||||
"code": "hosting",
|
||||
"name": "HostWizard",
|
||||
"description": "Web hosting, domains, email, and website building for Luxembourg businesses",
|
||||
"description_translations": {
|
||||
"fr": "Hébergement web, domaines, e-mail et création de sites pour les entreprises luxembourgeoises",
|
||||
"de": "Webhosting, Domains, E-Mail und Website-Erstellung für luxemburgische Unternehmen",
|
||||
"en": "Web hosting, domains, email, and website building for Luxembourg businesses",
|
||||
"lb": "Webhosting, Domainer, E-Mail a Websäit-Erstellung fir lëtzebuerger Betriber",
|
||||
},
|
||||
"domain": "hostwizard.lu",
|
||||
"path_prefix": "hosting",
|
||||
"default_language": "fr",
|
||||
"supported_languages": ["fr", "de", "en", "lb"],
|
||||
"settings": {"features": ["hosting", "domains", "email", "ssl", "poc_sites"]},
|
||||
"theme_config": {"primary_color": "#0D9488", "secondary_color": "#14B8A6"},
|
||||
"settings": {
|
||||
"features": ["hosting", "domains", "email", "ssl", "poc_sites"],
|
||||
"contact_email": "info@hostwizard.lu",
|
||||
"support_email": "support@hostwizard.lu",
|
||||
"sales_email": "sales@hostwizard.lu",
|
||||
},
|
||||
"theme_config": {
|
||||
"primary_color": "#0D9488",
|
||||
"secondary_color": "#14B8A6",
|
||||
"social": {
|
||||
"facebook": "https://facebook.com/hostwizard.lu",
|
||||
"linkedin": "https://linkedin.com/company/hostwizard",
|
||||
"instagram": "https://instagram.com/hostwizard.lu",
|
||||
},
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
@@ -271,6 +329,7 @@ def create_default_platforms(db: Session) -> list[Platform]:
|
||||
code=pdef["code"],
|
||||
name=pdef["name"],
|
||||
description=pdef["description"],
|
||||
description_translations=pdef.get("description_translations"),
|
||||
domain=pdef["domain"],
|
||||
path_prefix=pdef["path_prefix"],
|
||||
default_language=pdef["default_language"],
|
||||
|
||||
Reference in New Issue
Block a user