1489 lines
88 KiB
JavaScript
1489 lines
88 KiB
JavaScript
/* Direct /wevia redirect — bypass React iframe issues */
|
||
(function(){
|
||
if(window.location.pathname==="/wevia" && !window.__weviaRedirected){
|
||
window.__weviaRedirected=true;
|
||
window.location.replace("/wevia-ia/wevia.html");
|
||
}
|
||
})();
|
||
// WEVAL Complete Translation FR <-> EN — All Screens
|
||
(function(){
|
||
'use strict';
|
||
|
||
var T = {
|
||
|
||
// ===================== HEADER =====================
|
||
"Accueil": "Home",
|
||
"Services": "Services",
|
||
"Marketplace": "Marketplace",
|
||
"Nos Solutions": "Our Solutions",
|
||
"Actualités": "News",
|
||
"Contact": "Contact",
|
||
"🧠 WEVIA": "🧠 WEVIA",
|
||
"FR": "EN",
|
||
|
||
// ===================== HERO =====================
|
||
"Weval, l'accélérateur de votre transformation": "Weval, Accelerating Your Transformation",
|
||
"Du conseil stratégique à l'intégration technique, renforcé par l'intelligence artificielle": "From strategic consulting to technical integration, powered by artificial intelligence",
|
||
"Nos services": "Our Services",
|
||
"De la PME au groupe international, nous transformons vos défis numériques en avantages concurrentiels. 200+ projets livrés dans 8 pays avec un taux de satisfaction de 97%": "From SMEs to global enterprises, we transform your digital challenges into competitive advantages. 200+ projects delivered across 8 countries with a 97% satisfaction rate",
|
||
"NOS PARTENAIRES": "OUR PARTNERS",
|
||
"Cloud Solution Provider": "Cloud Solution Provider",
|
||
"Vistex Partner": "Vistex Partner",
|
||
"IQVIA Partner": "IQVIA Partner",
|
||
"SAP Partner": "SAP Partner",
|
||
|
||
// ===================== STATS BAR =====================
|
||
"Années d'expertise terrain": "Years of Field Expertise",
|
||
"Projets livrés avec succès": "Projects Successfully Delivered",
|
||
"Pays sur 3 continents": "Countries Across 3 Continents",
|
||
"Experts certifiés": "Certified Experts",
|
||
|
||
// ===================== TRUST BADGES =====================
|
||
"Conforme RGPD & Loi 09-08": "GDPR & Law 09-08 Compliant",
|
||
"Huawei Cloud Certified": "Huawei Cloud Certified",
|
||
"Partenaire SAP & Vistex": "SAP & Vistex Partner",
|
||
"IQVIA Data Partner": "IQVIA Data Partner",
|
||
"Présence dans 8 pays": "Present in 8 Countries",
|
||
|
||
// ===================== HERO BADGES =====================
|
||
"☁️ Cloud": "☁️ Cloud",
|
||
"🧠 IA": "🧠 AI",
|
||
"🔷 SAP/ERP": "🔷 SAP/ERP",
|
||
"🔒 Cybersécurité": "🔒 Cybersecurity",
|
||
"📈 Big Data": "📈 Big Data",
|
||
|
||
// ===================== SERVICES SECTION =====================
|
||
"NOS SERVICES": "OUR SERVICES",
|
||
"5 pôles d'excellence pour couvrir l'intégralité de votre transformation digitale. Du diagnostic stratégique au déploiement opérationnel, chaque mission est portée par des experts certifiés et notre IA intégrée.": "5 centers of excellence covering your entire digital transformation. From strategic assessment to operational deployment, every engagement is led by certified experts and our integrated AI.",
|
||
"Conseil": "Consulting",
|
||
"Schéma directeur, roadmap, audit SI — nos consultants seniors accélèrent votre transformation avec un ROI mesurable dès les premiers mois.": "IT master plan, roadmap, IS audit — our senior consultants accelerate your transformation with measurable ROI from day one.",
|
||
"De la stratégie à l'exécution, nous mobilisons des méthodologies éprouvées (Lean Six Sigma, PMI, ITIL) pour structurer vos projets, optimiser vos processus et piloter le changement avec précision.": "From strategy to execution, we leverage proven méthodologies (Lean Six Sigma, PMI, ITIL) to structure your projects, optimize your processes and drive change with precision.",
|
||
"Solutions": "Solutions",
|
||
"ERP, Cloud, IA, Big Data, IoT, Cybersécurité, Blockchain — nous intégrons les technologies les plus avancées du marché, adossées à des partenariats Huawei, SAP et Vistex, pour bâtir votre avantage compétitif.": "ERP, Cloud, AI, Big Data, IoT, Cybersecurity, Blockchain — we integrate the most advanced technologies, backed by Huawei, SAP and Vistex partnerships, to build your competitive edge.",
|
||
"Recrutement": "Recruitment",
|
||
"Recrutez les meilleurs talents IT et métiers en moins de 30 jours grâce à notre vivier de 5 000+ profils qualifiés et notre IA de matching.": "Recruit top IT and business talent in under 30 days with our pool of 5,000+ qualified profiles and AI-powered matching.",
|
||
"Formation": "Training",
|
||
"Formations certifiantes, e-learning sur-mesure et coaching opérationnel — nous développons les compétences de vos équipes sur les technologies qui comptent.": "Certified training, custom e-learning and operational coaching — we develop your teams' skills on the technologies that matter.",
|
||
"SAP, Cloud, IA, Cybersécurité, Data — des programmes conçus par des praticiens, alignés sur vos objectifs business, avec un suivi post-formation inclus.": "SAP, Cloud, AI, Cybersecurity, Data — programs designed by practitioners, aligned with your business goals, with post-training follow-up included.",
|
||
"Marketing Digital": "Digital Marketing",
|
||
"Stratégie digitale, automation, SEO, Social Media — nous multiplions vos leads qualifiés et optimisons chaque euro investi pour maximiser votre taux de conversion.": "Digital strategy, automation, SEO, Social Media — we multiply your qualified leads and optimize every euro invested to maximize your conversion rate.",
|
||
"En savoir plus": "Learn More",
|
||
|
||
// ===================== SERVICE DETAILS =====================
|
||
"Consulting & IA Consulting — Expertise As A Service": "Consulting & AI Consulting — Expertise As A Service",
|
||
"Nous aidons les dirigeants et DSI à prendre les bonnes décisions technologiques, réduire les risques projet et accélérer le time-to-value. Notre approche combine expertise sectorielle profonde, méthodologies certifiées et intelligence artificielle pour garantir des résultats mesurables": "We help executives and CIOs make the right technology decisions, reduce project risks and accelerate time-to-value. Our approach combines deep sector expertise, certified méthodologies and AI to deliver measurable results",
|
||
"AUDIT, STRATÉGIE": "AUDIT & STRATEGY",
|
||
"SCHÉMA DIRECTEUR": "IT MASTER PLAN",
|
||
"ROADMAP": "ROADMAP",
|
||
"OPTIMISATION DES PROCESSUS": "PROCESS OPTIMIZATION",
|
||
"SÉLECTION DES SOLUTIONS": "SOLUTION SELECTION",
|
||
"TRANSFORMATION DIGITAL": "DIGITAL TRANSFORMATION",
|
||
"CHANGE MANAGEMENT": "CHANGE MANAGEMENT",
|
||
"MARKETING": "MARKETING",
|
||
"CUSTOMER RELATIONSHIP MANAGEMENT": "CUSTOMER RELATIONSHIP MANAGEMENT",
|
||
"SUPPLY CHAIN": "SUPPLY CHAIN",
|
||
"FINANCE & CONTROLLING": "FINANCE & CONTROLLING",
|
||
|
||
"Solution As A Service & Expertise As A Service": "Solution As A Service & Expertise As A Service",
|
||
"Nos certifications Huawei Cloud, SAP et Vistex nous permettent de déployer des architectures robustes, scalables et sécurisées. Du cloud souverain à l'ERP intelligent, nous sélectionnons, intégrons et optimisons les technologies qui génèrent de la valeur pour votre métier.": "Our Huawei Cloud, SAP and Vistex certifications enable us to deploy robust, scalable and secure architectures. From sovereign cloud to intelligent ERP, we select, integrate and optimize technologies that generate value for your business.",
|
||
"Explorez notre marketplace : plus de 40 solutions Cloud, IA et ERP prêtes à déployer": "Explore our marketplace: 40+ Cloud, AI and ERP solutions ready to deploy",
|
||
"Découvrir la Marketplace": "Discover the Marketplace",
|
||
"INFRASTRUCTURE ET ARCHITECTURE CLOUD": "CLOUD INFRASTRUCTURE & ARCHITECTURE",
|
||
"ERP": "ERP",
|
||
"INTELLIGENCE ARTIFICIELLE": "ARTIFICIAL INTELLIGENCE",
|
||
"CYBERSÉCURITÉ": "CYBERSECURITY",
|
||
"BIG DATA": "BIG DATA",
|
||
"IOT (INTERNET OF THINGS)": "IOT (INTERNET OF THINGS)",
|
||
"🤖 IA INTÉGRÉE": "🤖 INTEGRATED AI",
|
||
|
||
"Talent As A Service": "Talent As A Service",
|
||
"Un vivier de 5 000+ profils IT, métiers et management. Recrutement permanent (CDI), missions freelance et portage salarial — nous assurons la totalité du cycle : sourcing, évaluation technique, shortlist en 15 jours et accompagnement à l'intégration. Taux de rétention à 12 mois : 92%.": "A pool of 5,000+ IT, business and management profiles. Permanent recruitment, freelance missions and payroll portage — we handle the full cycle: sourcing, technical evaluation, shortlist in 15 days and onboarding support. 12-month retention rate: 92%.",
|
||
"RECRUTEMENT PERMANENT": "PERMANENT RECRUITMENT",
|
||
"MISSIONS FREELANCE": "FREELANCE MISSIONS",
|
||
"RECHERCHE DE PROFILS EXPERTS": "EXPERT PROFILE SEARCH",
|
||
"ÉVALUATION DE COMPÉTENCES": "SKILLS ASSESSMENT",
|
||
"ACCOMPAGNEMENT À L'INTÉGRATION": "ONBOARDING SUPPORT",
|
||
"HEADHUNTING": "HEADHUNTING",
|
||
"🎯 IA MATCHING": "🎯 AI MATCHING",
|
||
"Découvrez nos espaces dédiés": "Discover our dedicated spaces",
|
||
"Nos Missions": "Our Missions",
|
||
"Nos Talents": "Our Talents",
|
||
|
||
"Training Platform As A Service": "Training Platform As A Service",
|
||
"FORMATIONS TECHNIQUES": "TECHNICAL TRAINING",
|
||
"DÉVELOPPEMENT MANAGÉRIAL": "MANAGEMENT DEVELOPMENT",
|
||
"CERTIFICATIONS PROFESSIONNELLES": "PROFESSIONAL CERTIFICATIONS",
|
||
"E-LEARNING": "E-LEARNING",
|
||
"FORMATIONS DIGITALES": "DIGITAL TRAINING",
|
||
"COACHING INDIVIDUEL": "INDIVIDUAL COACHING",
|
||
"✨ IA ADAPTIVE": "✨ ADAPTIVE AI",
|
||
|
||
"Optimisez votre stratégie digitale et vos conversions": "Optimize your digital strategy and conversions",
|
||
"STRATÉGIE DIGITALE": "DIGITAL STRATEGY",
|
||
"MARKETING AUTOMATION": "MARKETING AUTOMATION",
|
||
"GESTION DE CAMPAGNES": "CAMPAIGN MANAGEMENT",
|
||
"SEO & SEA": "SEO & SEA",
|
||
"SOCIAL MEDIA MARKETING": "SOCIAL MEDIA MARKETING",
|
||
"CONTENT MARKETING": "CONTENT MARKETING",
|
||
"MARKETING DIGITAL": "MARKETING DIGITAL",
|
||
"ANALYTICS & REPORTING": "ANALYTICS & REPORTING",
|
||
"LEAD GENERATION": "LEAD GENERATION",
|
||
"CONVERSION OPTIMIZATION": "CONVERSION OPTIMIZATION",
|
||
"🧠 IA PREDICTIVE": "🧠 PREDICTIVE AI",
|
||
|
||
// ===================== EXCELLENCE =====================
|
||
"Weval, l'accélérateur de vos ambitions digitales": "Weval, Accelerating Your Digital Ambitions",
|
||
"Weval : L'excellence à l'ère digitale": "Weval: Excellence in the Digital Age",
|
||
"Depuis 15 ans, nous accompagnons les entreprises de toutes tailles dans leur transformation numérique. Notre différence : une approche 100% sur-mesure, appuyée par notre propre IA et des partenariats technologiques de premier plan.": "For 15 years, we have been supporting businesses of all sizes in their digital transformation. Our difference: a 100% tailor-made approach, backed by our own AI and top-tier technology partnerships.",
|
||
"Des services à forte valeur ajoutée — Conçus pour générer un ROI mesurable dès les premiers mois": "High value-added services — Designed to generate measurable ROI from the very first months",
|
||
"Transformez chaque défi en avantage concurrentiel. 200+ projets, 8 pays, un seul objectif : votre réussite.": "Turn every challenge into a competitive advantage. 200+ projects, 8 countries, one goal: your success.",
|
||
"Nos engagements": "Our Commitments",
|
||
"Engagement résultat — Nous nous engageons sur des KPIs concrets : délais, qualité, ROI. Chaque mission est suivie avec des indicateurs de performance partagés en temps réel.": "Results-driven — We commit to concrete KPIs: deadlines, quality, ROI. Every engagement is tracked with real-time shared performance indicators.",
|
||
"Réactivité garantie — Un interlocuteur dédié et des experts mobilisables sous 48h": "Guaranteed responsiveness — A dedicated contact and experts available within 48h",
|
||
"Certifications premium — Huawei Cloud CSP, SAP Partner, Vistex, IQVIA. La garantie d'une expertise validée par les leaders mondiaux": "Premium certifications — Huawei Cloud CSP, SAP Partner, Vistex, IQVIA. Expertise validated by world leaders",
|
||
"Notre équipe : votre atout": "Our Team: Your Asset",
|
||
"50+ experts et consultants seniors, issus des meilleures ESN et cabinets internationaux. Chacun apporte en moyenne 12 ans d'expérience dans son domaine de spécialité.": "50+ senior experts and consultants from top IT services firms and international consultancies. Each brings an average of 12 years of experience in their specialty.",
|
||
"Présence internationale — Bureaux au Maroc et en Europe. Des missions réussies sur 2 continents : Europe et Afrique.": "International presence — Offices in Morocco and Europe. Successful missions across 2 continents: Europe and Africa.",
|
||
"Bien plus qu'un prestataire — Un véritable partenaire stratégique qui s'investit dans votre réussite. 97% de nos clients renouvellent leur confiance.": "More than a provider — A true strategic partner invested in your success. 97% of our clients renew their trust.",
|
||
|
||
// ===================== WHY WEVAL =====================
|
||
"Pourquoi nous choisir": "Why Choose Us",
|
||
"POURQUOI NOUS CHOISIR": "WHY CHOOSE US",
|
||
"6 raisons de choisir WEVAL comme": "6 reasons to choose WEVAL as your",
|
||
"partenaire stratégique": "strategic partner",
|
||
"IA Souveraine": "Sovereign AI",
|
||
"Présence Internationale": "International Presence",
|
||
"Partenariats Leaders": "Leading Partnerships",
|
||
"Exécution Rapide": "Rapid Execution",
|
||
"100% Sur-mesure": "100% Tailor-Made",
|
||
"Sécurité & Conformité": "Security & Compliance",
|
||
"Casablanca · Paris. Des missions délivrées en France, Allemagne, Belgique, Suisse, Suède, Maroc et Tunisie. La proximité d'un acteur local avec la puissance d'un réseau global.": "Casablanca · Paris. Missions delivered in France, Germany, Belgium, Switzerland, Sweden, Morocco and Tunisia. The proximity of a local player with the power of a global network.",
|
||
"Certifiés Huawei Cloud CSP, partenaires officiels SAP, Vistex et IQVIA. Accès direct aux technologies les plus avancées, aux tarifs partenaires, avec un support technique de niveau expert.": "Huawei Cloud CSP certified, official SAP, Vistex and IQVIA partners. Direct access to the most advanced technologies, at partner rates, with expert-level technical support.",
|
||
"Méthodologies Lean Six Sigma, PMI, ITIL et DevOps. Des sprints courts, des livrables concrets, un time-to-value optimisé. Nos clients constatent en moyenne 40% de gains de productivité.": "Lean Six Sigma, PMI, ITIL and DevOps méthodologies. Short sprints, concrete deliverables, optimized time-to-value. Our clients see an average 40% productivity gain.",
|
||
"Pas de solutions génériques. Chaque architecture, chaque roadmap, chaque formation est conçue pour votre contexte métier, votre taille et vos objectifs de croissance spécifiques.": "No generic solutions. Every architecture, roadmap and training program is designed for your specific business context, size and growth objectives.",
|
||
"Conformité RGPD, Loi 09-08 (Maroc), normes ISO 27001. Audits de sécurité, plans de continuité et chiffrement de bout en bout. Vos données sensibles méritent une protection sans compromis.": "GDPR, Law 09-08 (Morocco), ISO 27001 compliance. Security audits, continuity plans and end-to-end encryption. Your sensitive data deserves uncompromising protection.",
|
||
|
||
// ===================== EXPERTISE SECTORS =====================
|
||
"Nos domaines": "Our Sectors",
|
||
"Expertise": "Expertise",
|
||
"sectorielle": "by Industry",
|
||
"💊 Pharma & Life Sciences": "💊 Pharma & Life Sciences",
|
||
"🏦 Banque & Finance": "🏦 Banking & Finance",
|
||
"🛒 Retail & Distribution": "🛒 Retail & Distribution",
|
||
"🏭 Industrie & Manufacturing": "🏭 Industry & Manufacturing",
|
||
"✈️ Transport & Logistique": "✈️ Transport & Logistics",
|
||
"⚡ Énergie & Utilities": "⚡ Energy & Utilities",
|
||
"🏛️ Secteur Public": "🏛️ Public Sector",
|
||
"🧪 Chimie & Cosmétique": "🧪 Chemicals & Cosmetics",
|
||
"🚗 Automobile & Aéronautique": "🚗 Automotive & Aerospace",
|
||
"📡 Télécoms & IT": "📡 Telecom & IT",
|
||
"🏗️ BTP & Immobilier": "🏗️ Construction & Real Estate",
|
||
"🎓 Éducation & Formation": "🎓 Education & Training",
|
||
|
||
// ===================== TECH STACK =====================
|
||
"Technologies": "Technologies",
|
||
"Notre": "Our",
|
||
"stack technologique": "Technology Stack",
|
||
"Huawei Cloud": "Huawei Cloud",
|
||
"Infrastructure souveraine, IaaS & PaaS certifié": "Sovereign Infrastructure, Certified IaaS & PaaS",
|
||
"SAP / Vistex": "SAP / Vistex",
|
||
"ERP S/4HANA, Revenue Management & Pricing": "ERP S/4HANA, Revenue Management & Pricing",
|
||
"IA": "AI",
|
||
"8 modèles IA · Chatbot · Automation · Analytics": "8 AI Models · Chatbot · Automation · Analytics",
|
||
"IQVIA": "IQVIA",
|
||
"Data Analytics Pharma & Life Sciences": "Pharma & Life Sciences Data Analytics",
|
||
"Cybersécurité": "Cybersecurity",
|
||
"Audit, SOC, Pentesting & Conformité ISO 27001": "Audit, SOC, Pentesting & ISO 27001 Compliance",
|
||
"Blockchain": "Blockchain",
|
||
"Smart Contracts, Traçabilité & DeFi": "Smart Contracts, Traceability & DeFi",
|
||
"IoT": "IoT",
|
||
"Capteurs industriels, Edge & Monitoring temps réel": "Industrial Sensors, Edge & Real-Time Monitoring",
|
||
"Big Data": "Big Data",
|
||
"Data Lake, Machine Learning & BI prédictive": "Data Lake, Machine Learning & Predictive BI",
|
||
|
||
// ===================== TESTIMONIALS =====================
|
||
"Témoignages": "Testimonials",
|
||
"TÉMOIGNAGES": "TESTIMONIALS",
|
||
"Ils nous font": "They",
|
||
"confiance": "trust us",
|
||
"Directeur Supply Chain · Groupe Agroalimentaire, Casablanca": "Supply Chain Director · Food Group, Casablanca",
|
||
"DSI · Groupe Industriel, Casablanca": "CIO · Industrial Group, Casablanca",
|
||
"Directrice Marketing · E-commerce, Paris": "Marketing Director · E-commerce, Paris",
|
||
|
||
// ===================== METHODOLOGY =====================
|
||
"Méthodologie": "Methodology",
|
||
"Notre approche en": "Our Approach in",
|
||
"4 étapes": "4 Steps",
|
||
"Diagnostic": "Assessment",
|
||
"Audit 360° de votre SI, processus et maturité digitale. Identification des quick wins et des leviers de transformation à fort impact.": "360° audit of your IS, processes and digital maturity. Identification of quick wins and high-impact transformation levers.",
|
||
"Stratégie": "Strategy",
|
||
"Roadmap sur-mesure, sélection des solutions optimales, cadrage budget-planning et gouvernance projet.": "Custom roadmap, optimal solution selection, budget-planning framework and project governance.",
|
||
"Exécution": "Execution",
|
||
"Intégration agile par sprints, développement itératif, tests automatisés et recette continue avec vos équipes.": "Agile sprint-based integration, iterative development, automated testing and continuous UAT with your teams.",
|
||
"Accompagnement": "Support",
|
||
"Formation de vos équipes, conduite du changement, support continu, monitoring KPI et optimisation post-go-live garantie.": "Team training, change management, continuous support, KPI monitoring and guaranteed post-go-live optimization.",
|
||
|
||
// ===================== BLOG =====================
|
||
"Blog & Insights": "Blog & Insights",
|
||
"Dernières": "Latest",
|
||
"publications": "Publications",
|
||
"Intelligence Artificielle": "Artificial Intelligence",
|
||
"IA Générative au Maroc : comment les entreprises l'adoptent en 2026": "Generative AI in Morocco: How Businesses Are Adopting It in 2026",
|
||
"Cas d'usage concrets, gains mesurés et feuille de route pour intégrer l'IA générative dans votre organisation dès aujourd'hui.": "Concrete use cases, measured gains and a roadmap to integrate generative AI into your organization today.",
|
||
"PME & Digital": "SME & Digital",
|
||
"Le guide ultime de la transformation digitale pour les PME francophones": "The Ultimate Digital Transformation Guide for Moroccan SMEs",
|
||
"Budget réaliste, 4 piliers essentiels, ROI attendu et les 5 erreurs fatales à éviter pour réussir votre virage numérique.": "Realistic budget, 4 essential pillars, expected ROI and the 5 fatal mistakes to avoid for a successful digital transition.",
|
||
"Cloud & Souveraineté": "Cloud & Sovereignty",
|
||
"Cloud souverain en Afrique : pourquoi migrer maintenant et comment réussir": "Sovereign Cloud in Africa: Why Migrate Now and How to Succeed",
|
||
"Enjeux de souveraineté, comparatif des fournisseurs et notre méthodologie de migration en 5 étapes éprouvée.": "Sovereignty challenges, provider comparison and our proven 5-step migration methodology.",
|
||
"Voir tous les articles →": "View All Articles →",
|
||
"8 min · Février 2026": "8 min · February 2026",
|
||
"10 min · Février 2026": "10 min · February 2026",
|
||
"7 min · Février 2026": "7 min · February 2026",
|
||
|
||
// ===================== CTA =====================
|
||
"Votre transformation commence ici": "Your Transformation Starts Here",
|
||
"Réservez un diagnostic gratuit de 30 minutes avec un expert WEVAL. Analyse personnalisée de vos enjeux, recommandations concrètes et feuille de route actionnable — zéro engagement, 100% valeur.": "Book a free 30-minute diagnostic with a WEVAL expert. Personalized analysis of your challenges, concrete recommendations and an actionable roadmap — zero commitment, 100% value.",
|
||
"📅 Réserver mon audit gratuit": "📅 Book My Free Audit",
|
||
"🧠 Tester": "🧠 Try",
|
||
", notre IA": ", Our AI",
|
||
|
||
// ===================== FOOTER =====================
|
||
"Weval, l'accélérateur de votre transformation.": "Weval, Accelerating Your Transformation.",
|
||
"Du conseil stratégique à l'intégration technique, renforcé par l'intelligence artificielle.": "From strategic consulting to technical integration, powered by artificial intelligence.",
|
||
"🌍 Nos bureaux": "🌍 Our Offices",
|
||
|
||
"France": "France",
|
||
"Maroc": "Morocco",
|
||
"Tous droits réservés.": "All Rights Reserved.",
|
||
"Conditions d'utilisation": "Terms of Use",
|
||
"EMAIL": "EMAIL",
|
||
"🇲🇦 CONTACT MAROC": "🇲🇦 MOROCCO OFFICE",
|
||
"🇫🇷 CONTACT FRANCE": "🇫🇷 FRANCE OFFICE",
|
||
|
||
|
||
// ===================== CONTACT US PAGE =====================
|
||
"Contactez-nous": "Contact Us",
|
||
"💬 Envoyez-nous un message": "💬 Send Us a Message",
|
||
"Nom": "Last Name",
|
||
"Prénom": "First Name",
|
||
"Email": "Email",
|
||
"Téléphone": "Phone",
|
||
"Entreprise": "Company",
|
||
"Sujet": "Subject",
|
||
"Message": "Message",
|
||
"Envoyer": "Send",
|
||
"Envoi...": "Sending...",
|
||
"Votre message a été envoyé avec succès !": "Your message has been sent successfully!",
|
||
"Une erreur est survenue. Veuillez réessayer.": "An error occurred. Please try again.",
|
||
"Conseil & Stratégie": "Consulting & Strategy",
|
||
"Recrutement & Talents": "Recruitment & Talent",
|
||
"Cloud & Infrastructure": "Cloud & Infrastructure",
|
||
"Data & Analytics": "Data & Analytics",
|
||
"Autre demande": "Other Request",
|
||
"Email & Web": "Email & Web",
|
||
|
||
// ===================== ACTUALITES PAGE =====================
|
||
"Actualités & Insights": "News & Insights",
|
||
"Actualités Tech": "Tech News",
|
||
"Analyses Pointues": "Expert Analysis",
|
||
"Certifications": "Certifications",
|
||
"Écosystème Étendu": "Extended Ecosystem",
|
||
"Excellence Reconnue": "Recognized Excellence",
|
||
"Chargement des actualités...": "Loading news...",
|
||
"Erreur de chargement": "Loading error",
|
||
"Aucun article trouvé": "No articles found",
|
||
"Aucun article ne correspond à la catégorie sélectionnée.": "No articles match the selected category.",
|
||
"vues": "views",
|
||
"Lire la suite": "Read More",
|
||
|
||
// ===================== NOS SOLUTIONS PAGE =====================
|
||
"Écosystème SaaS 100% Operationnel": "100% Operational SaaS Ecosystem",
|
||
"17 Interfaces Spécialisées": "17 Specialized Interfaces",
|
||
"Evaluations Internes — Sessions IA": "Internal Evaluations — AI Sessions",
|
||
"Fonctionnalité": "Feature",
|
||
"Fonctionnalités clés": "Key Features",
|
||
"Contactez-nous pour une démonstration personnalisée ou un déploiement sur mesure.": "Contact us for a personalized demo or custom deployment.",
|
||
"Dashboards live": "Live Dashboards",
|
||
|
||
// ===================== MARKETPLACE PAGE =====================
|
||
"Toutes nos solutions": "All Our Solutions",
|
||
"Besoin d'aide pour choisir ?": "Need Help Choosing?",
|
||
"Nos experts vous accompagnent dans la sélection des solutions adaptées a vos besoins.": "Our experts help you select solutions tailored to your needs.",
|
||
"Demander une demo": "Request a Demo",
|
||
"Demande envoyée !": "Request Sent!",
|
||
"Notre équipe vous contactera sous 24h.": "Our team will contact you within 24h.",
|
||
"Disponibilité": "Availability",
|
||
"Partenaires": "Partners",
|
||
"Services Cloud": "Cloud Services",
|
||
"MARKETING": "MARKETING",
|
||
"Envoyer la demande": "Submit Request",
|
||
|
||
// ===================== MISSIONS PAGE =====================
|
||
"Missions & Opportunités": "Missions & Opportunities",
|
||
"Missions Tech": "Tech Missions",
|
||
"Optimisez votre recherche": "Optimize Your Search",
|
||
"Freelance & CDI": "Freelance & Permanent",
|
||
"Innovation & Digital": "Innovation & Digital",
|
||
"Projets Innovants": "Innovative Projects",
|
||
"Flexibilité Maximale": "Maximum Flexibility",
|
||
"Présentiel": "On-site",
|
||
"Remote & Hybride": "Remote & Hybrid",
|
||
"Aucune mission ne correspond à votre recherche.": "No missions match your search.",
|
||
"Aucun résultat trouvé": "No results found",
|
||
"Chargement...": "Loading...",
|
||
|
||
// ===================== TALENTS PAGE =====================
|
||
"Experts Tech": "Tech Experts",
|
||
"Profils Vérifiés": "Verified Profiles",
|
||
"Expérience Diverse": "Diverse Experience",
|
||
"Disponibilité Flexible": "Flexible Availability",
|
||
"Projets Sur Mesure": "Custom Projects",
|
||
"Qualité Garantie": "Guaranteed Quality",
|
||
"Aucun talent ne correspond à votre recherche.": "No talent matches your search.",
|
||
|
||
// ===================== PORTAGE PAGE =====================
|
||
"Nos services de portage salarial": "Our Payroll Portage Services",
|
||
"Accompagnement personnalisé": "Personalized Support",
|
||
"Gestion administrative simplifiée": "Simplified Administrative Management",
|
||
"Expertise et confiance": "Expertise and Trust",
|
||
"Pourquoi nous choisir ?": "Why Choose Us?",
|
||
|
||
// ===================== COMMON BUTTONS =====================
|
||
"Découvrir": "Discover",
|
||
"Voir plus": "See More",
|
||
"Soumettre": "Submit",
|
||
"Nous contacter": "Contact Us",
|
||
"Retour": "Back",
|
||
"Voir toutes les actualités": "View All News",
|
||
"Postuler": "Apply",
|
||
"Voir le profil": "View Profile",
|
||
"Voir la mission": "View Mission",
|
||
"Filtrer": "Filter",
|
||
"Rechercher": "Search",
|
||
"Tous": "All",
|
||
"Toutes": "All",
|
||
// ===================== TESTIMONIALS TEXT =====================
|
||
"Le déploiement Vistex piloté par WEVAL a transformé notre gestion des accords commerciaux sur SAP S/4HANA. Résultat concret : 40% de temps gagné sur les clôtures mensuelles, visibilité totale sur nos rebates et chargebacks, et un ROI atteint en 6 mois.": "The Vistex deployment led by WEVAL transformed our commercial agreement management on SAP S/4HANA. Concrete result: 40% time saved on monthly closings, full visibility on rebates and chargebacks, and ROI achieved in 6 months.",
|
||
"La migration Huawei Cloud orchestrée par WEVAL a réduit nos coûts infrastructure de 35% et divisé par 3 nos temps de déploiement. Leur expertise Cloud et leur réactivité en font un partenaire technique incontournable pour notre groupe.": "The Huawei Cloud migration orchestrated by WEVAL reduced our infrastructure costs by 35% and cut deployment times by 3x. Their Cloud expertise and responsiveness make them an indispensable technical partner for our group.",
|
||
"déployé sur notre plateforme e-commerce a automatisé 70% des réponses client en 3 langues, réduit notre temps de traitement de 65% et augmenté la satisfaction client de 28 points. L'IA de WEVAL n'est pas un gadget — c'est un levier business.": "deployed on our e-commerce platform automated 70% of customer responses in 3 languages, reduced our processing time by 65% and increased customer satisfaction by 28 points. WEVAL's AI is not a gimmick — it's a business lever.",
|
||
", notre assistant IA développé en interne, intègre 8 modèles d'intelligence artificielle pour automatiser vos processus, analyser vos données et accélérer vos décisions. Une technologie exclusive, déployable dans votre environnement.": ", our in-house AI assistant, integrates 8 artificial intelligence models to automate your processes, analyze your data and accelerate your decisions. An exclusive technology, deployable in your environment.",
|
||
|
||
// ===================== MISC MISSING =====================
|
||
"Notre méthode": "Our Method",
|
||
"Un process": "A process",
|
||
"L'assistant": "The assistant",
|
||
"Mohamed B.": "Mohamed B.",
|
||
"Télécoms & IT": "Telecom & IT",
|
||
"éprouvé": "proven",
|
||
"DSI · Groupe Industriel, Casablanca": "CIO · Industrial Group, Casablanca",
|
||
"Directeur Supply Chain · Groupe Agroalimentaire, Casablanca": "Supply Chain Director · Food Group, Casablanca",
|
||
"Directrice Marketing · E-commerce, Paris": "Marketing Director · E-commerce, Paris",
|
||
|
||
// ===================== CONTACT PAGE EXTRAS =====================
|
||
"J'accepte que mes données soient utilisées pour me recontacter concernant ma demande": "I agree that my data may be used to contact me regarding my request",
|
||
"Faites confiance à notre équipe de professionnels pour vous conseiller et vous accompagner dans votre parcours de consultant indépendant": "Trust our team of professionals to advise and support you throughout your independent consulting journey",
|
||
|
||
// ===================== NOS SOLUTIONS PAGE EXTRAS =====================
|
||
"Écosystème SaaS 100% Operationnel": "100% Operational SaaS Ecosystem",
|
||
"Interfaces Spécialisées": "Specialized Interfaces",
|
||
"Évaluations Internes": "Internal Evaluations",
|
||
"Dashboards live": "Live Dashboards",
|
||
"Fonctionnalités clés": "Key Features",
|
||
"Contactez-nous pour une démonstration personnalisée ou un déploiement sur mesure.": "Contact us for a personalized demo or custom deployment.",
|
||
|
||
// ===================== PORTAGE / CAREERS =====================
|
||
"Nos services de portage salarial": "Our Payroll Portage Services",
|
||
"Accompagnement personnalisé": "Personalized Support",
|
||
"Gestion administrative simplifiée": "Simplified Administrative Management",
|
||
"Expertise et confiance": "Expertise and Trust",
|
||
|
||
// ===================== MARKETPLACE EXTRAS =====================
|
||
"Besoin d'aide pour choisir ?": "Need Help Choosing?",
|
||
"Nos experts vous accompagnent dans la sélection des solutions adaptées a vos besoins.": "Our experts help you select solutions tailored to your needs.",
|
||
"Demander une demo": "Request a Demo",
|
||
"Notre équipe vous contactera sous 24h.": "Our team will contact you within 24h.",
|
||
|
||
// ===================== TRUST BADGES =====================
|
||
"Conforme RGPD & Loi 09-08": "GDPR & Law 09-08 Compliant",
|
||
"Partenaire SAP & Vistex": "SAP & Vistex Partner",
|
||
"Présence dans 8 pays": "Present in 8 Countries",
|
||
// ===================== REACT FRAGMENT TRANSLATIONS =====================
|
||
"Weval, l'accélérateur de votre": "Weval, Accelerating Your",
|
||
"transformation": "Transformation",
|
||
"Années d'expérience": "Years of Experience",
|
||
"Évaluations Internes — Sessions IA": "Internal Evaluations — AI Sessions",
|
||
"Activité Récente": "Recent Activity",
|
||
"Déconnexion": "Logout",
|
||
"Connexion réussie": "Login successful",
|
||
"Compétences clés": "Key Skills",
|
||
"Date de création": "Creation Date",
|
||
"Accès restreint": "Restricted Access",
|
||
"Conseil Stratégique": "Strategic Consulting",
|
||
"Conseil Stratégique & Analyse de la Performance": "Strategic Consulting & Performance Analysis",
|
||
"Analyse prédictive": "Predictive Analysis",
|
||
"Conformité": "Compliance",
|
||
"Assistants personnalisés": "Personalized Assistants",
|
||
"Centre névralgique IA": "AI Nerve Center",
|
||
"Continuité garantie, basculement transparent en cas de panne": "Guaranteed continuity, seamless failover",
|
||
"Apprend de vos données internes, zéro entraînement vers un modèle global": "Learns from your internal data, zero training to a global model",
|
||
"Apprentissage sur vos données métier": "Learning from your business data",
|
||
"Décompose, raisonne, itère et livre des résultats complexes": "Decomposes, reasons, iterates and delivers complex results",
|
||
"Base distribuée haute perf.": "High-perf distributed database",
|
||
"Adaptés à vos ambitions": "Adapted to your ambitions",
|
||
"Accompagnement stratégique pour accélérer votre transformation": "Strategic support to accelerate your transformation",
|
||
"Découvrez des missions passionnantes adaptées à votre expertise": "Discover exciting missions tailored to your expertise",
|
||
"Découvrez nos dernières actualités, certifications, partenariats et insights pour rester à la pointe de la transformation digitale.": "Discover our latest news, certifications, partnerships and insights to stay at the forefront of digital transformation.",
|
||
"Centralisez le pilotage de votre activité, visualisez vos KPIs en temps réel et laissez l'IA optimiser vos décisions opérationnelles et commerciales.": "Centralize your business monitoring, visualize your KPIs in real time and let AI optimize your operational and commercial decisions.",
|
||
"API REST, webhooks, intégration ERP/CRM/CMS native": "REST API, webhooks, native ERP/CRM/CMS integration",
|
||
"Approche pédagogique innovante alliant théorie et pratique pour un apprentissage optimal.": "Innovative pedagogical approach combining theory and practice for optimal learning.",
|
||
"Cloud Solution Provider. IaaS, PaaS, IA, sécurité.": "Cloud Solution Provider. IaaS, PaaS, AI, security.",
|
||
"Data analytics industrie pharma et santé.": "Pharma and healthcare data analytics.",
|
||
"Contrôle qualité opérationnel": "Operational quality control",
|
||
"Coordonnées professionnelles": "Professional contact details",
|
||
"Accès et rectification des données": "Data access and rectification",
|
||
"Aucuns frais pour défaut de conformité": "No fees for non-compliance",
|
||
// ===================== REMAINING GAPS FIX v3 =====================
|
||
"10 rue Liberté, Casablanca": "10 Liberté Street, Casablanca",
|
||
"128 rue la boétie, Paris 75008": "128 rue la Boétie, Paris 75008",
|
||
"Téléphone Maroc : +212 6 57 78 52 92": "Phone Morocco: +212 6 57 78 52 92",
|
||
"Téléphone France : +33 6 47 08 76 27": "Phone France: +33 6 47 08 76 27",
|
||
"Numéro de téléphone": "Phone number",
|
||
"Téléphone*": "Phone*",
|
||
"Téléphone:": "Phone:",
|
||
"Prénom *": "First Name *",
|
||
"Prénom*": "First Name*",
|
||
"Prénom:": "First Name:",
|
||
"Résumé": "Summary",
|
||
"Résumé *": "Summary *",
|
||
"Du conseil stratégique à l'implémentation technique, découvrez notre gamme complète de services adaptés à vos besoins business et technologiques.": "From strategic consulting to technical implementation, discover our complete range of services tailored to your business and technology needs.",
|
||
"Nos experts et consultants vous aident à structurer vos projets, optimiser vos processus, choisir les solutions les plus adaptées et piloter le changement avec efficacité.": "Our experts and consultants help you structure your projects, optimize your processes, choose the best solutions and drive change effectively.",
|
||
"Nos équipes d'experts sont à votre disposition pour comprendre vos besoins et vous accompagner dans la réalisation de vos objectifs business.": "Our expert teams are available to understand your needs and support you in achieving your business objectives.",
|
||
"Nous concevons et animons des formations ciblées, opérationnelles, digitalisées et alignées sur vos priorités business.": "We design and deliver targeted, operational, digitalized training aligned with your business priorities.",
|
||
"Nous mobilisons un vivier qualifié de candidats et vous accompagnons dans le ciblage, l'évaluation et l'intégration des talents adaptés à vos besoins.": "We leverage a qualified talent pool and support you in targeting, evaluating and integrating talent suited to your needs.",
|
||
"Nous vous accompagnons dans la définition de votre stratégie digital Marketing et CRM, en optimisant vos campagnes, vos leads et votre taux de conversion.": "We support you in defining your digital marketing and CRM strategy, optimizing your campaigns, leads and conversion rates.",
|
||
"Schéma Directeur": "IT Master Plan",
|
||
"Audit & Stratégie": "Audit & Strategy",
|
||
"Stratégie Digitale": "Digital Strategy",
|
||
"Stratégique & Opérationnel": "Strategic & Operational",
|
||
"Infrastructure & Sécurité": "Infrastructure & Security",
|
||
"🤖 IA Intégrée": "🤖 Integrated AI",
|
||
"🇫🇷 Français": "🇫🇷 French",
|
||
"À propos": "About",
|
||
"Évaluation de Compétences": "Skills Assessment",
|
||
"Prêt à intégrer nos solutions ?": "Ready to integrate our solutions?",
|
||
"Explorez notre catalogue de missions freelance et CDI dans le domaine technologique. Trouvez l'opportunité parfaite pour développer votre carrière.": "Explore our catalog of freelance and permanent tech missions. Find the perfect opportunity to advance your career.",
|
||
"Décrivez votre mission cible": "Describe your target mission",
|
||
"Niveau d'expérience:": "Experience level:",
|
||
"Salaire proposé:": "Proposed salary:",
|
||
"Intermédiaire": "Intermediate",
|
||
"Séniorité": "Seniority",
|
||
"Immédiate": "Immediate",
|
||
"Postulez à la mission": "Apply for the mission",
|
||
"Détails de l'offre": "Offer Details",
|
||
"Déposer votre mission": "Submit Your Mission",
|
||
"Mission ajoutée avec succès !": "Mission added successfully!",
|
||
"Nous examinerons votre demande et vous répondrons bientôt.": "We will review your request and get back to you soon.",
|
||
"Essayez de modifier vos critères de recherche ou vos filtres.": "Try adjusting your search criteria or filters.",
|
||
"Développeur Backend": "Backend Developer",
|
||
"Développeur Frontend": "Frontend Developer",
|
||
"Développeur d'Applications Mobiles": "Mobile App Developer",
|
||
"Ingénieur DevOps": "DevOps Engineer",
|
||
"ingénieur de Données": "Data Engineer",
|
||
"Talent ajouté avec succès !": "Talent added successfully!",
|
||
"Déposer votre CV": "Submit Your CV",
|
||
"Votre CV a été envoyé !": "Your CV has been sent!",
|
||
"Nous examinerons votre candidature et vous répondrons bientôt.": "We will review your application and get back to you soon.",
|
||
"Langues parlées (séparées par une virgule)": "Languages spoken (comma-separated)",
|
||
"Compétences clés (séparées par une virgule)": "Key skills (comma-separated)",
|
||
"Êtes-vous mobile ?": "Are you mobile?",
|
||
"Travail & Expérience": "Work & Experience",
|
||
"Expérience:": "Experience:",
|
||
"Expériences professionnelles": "Professional Experience",
|
||
"Diplôme:": "Degree:",
|
||
"Diplômes": "Degrees",
|
||
"✕ Ajouter un diplôme": "✕ Add a Degree",
|
||
"✕ Ajouter une expérience": "✕ Add an Experience",
|
||
"Nous prenons en charge toutes les démarches administratives, comptables et financières.": "We handle all administrative, accounting and financial procedures.",
|
||
"Nous vous aidons à trouver des missions et vous offrons un soutien juridique et RH adapté à vos besoins.": "We help you find missions and offer legal and HR support tailored to your needs.",
|
||
"Préavis d'un mois": "One month notice",
|
||
"Déduction des frais administratifs (max 5% du montant)": "Deduction of administrative fees (max 5% of amount)",
|
||
"Délai de rétractation : 7 jours pour les services non entamés": "Cooling-off period: 7 days for services not yet started",
|
||
"1. Politique de Confidentialité (Maroc)": "1. Privacy Policy (Morocco)",
|
||
"Loi marocaine n° 09-08 relative à la protection des personnes physiques à l'égard du traitement des données à caractère personnel": "Moroccan Law No. 09-08 on the protection of individuals regarding personal data processing",
|
||
"Loi 53-05 relative à l'échange électronique de données juridiques": "Law 53-05 on electronic exchange of legal data",
|
||
"Données collectées :": "Data collected:",
|
||
"Informations d'identité (nom, CIN si nécessaire)": "Identity information (name, CIN if necessary)",
|
||
"Données de transaction bancaire (via partenaires agréés par Bank Al-Maghrib)": "Banking transaction data (via Bank Al-Maghrib approved partners)",
|
||
"Finalités :": "Purposes:",
|
||
"Exécution des contrats de service": "Execution of service contracts",
|
||
"Obligations légales (facturation électronique conforme à là loi 44-20)": "Legal obligations (electronic invoicing compliant with Law 44-20)",
|
||
"Vérification des informations fournies par l'utilisateur": "Verification of user-provided information",
|
||
"Conservation des journaux d'accès (12 mois minimum)": "Access log retention (12 months minimum)",
|
||
"Maximum 5 ans après la fin de la relation contractuelle (sauf obligation légale)": "Maximum 5 years after end of contractual relationship (unless legally required)",
|
||
"Stockage principal au Maroc. Tout transfert hors Maroc nécessite l'autorisation de la CNDP": "Primary storage in Morocco. Any transfer outside Morocco requires CNDP authorization",
|
||
"Portabilité des données": "Data portability",
|
||
"Demande écrite à : info@weval-consulting.com": "Written request to: info@weval-consulting.com",
|
||
"Propriété intellectuelle :": "Intellectual property:",
|
||
"Licence limitée pour usage interne uniquement": "Limited license for internal use only",
|
||
"Interdiction de reproduction sans autorisation écrite": "Reproduction prohibited without written authorization",
|
||
"Responsabilités :": "Responsibilities:",
|
||
"Modalités :": "Terms:",
|
||
"Médiation via Tribunal de Commerce compétent": "Mediation via competent Commercial Court",
|
||
"Recours à la Commission Nationale de Protection des Consommateurs": "Appeal to the National Consumer Protection Commission",
|
||
"Collecte non autorisée de données": "Unauthorized data collection",
|
||
"Contournement des systèmes de sécurité": "Circumventing security systems",
|
||
"Publication de contenu illicite (Art. 1-15 de là loi 88-13 sur la presse)": "Publication of illegal content (Art. 1-15 of Law 88-13 on the press)",
|
||
"Utilisation contraire à l'ordre public marocain": "Use contrary to Moroccan public order",
|
||
"Suspension immédiate du compte": "Immediate account suspension",
|
||
"Poursuites pénales selon le Code pénal marocain": "Criminal prosecution under Moroccan Penal Code",
|
||
"Réparation des préjudices subis": "Compensation for damages suffered",
|
||
"Signalement des activités illicites aux autorités (ANRT)": "Reporting illegal activities to authorities (ANRT)",
|
||
"Catégorie": "Category",
|
||
"Dernière mise à jour": "Last updated",
|
||
"Sélectionner...": "Select...",
|
||
"Sélectionnez": "Select",
|
||
"Sélectionnez un service": "Select a service",
|
||
"Sélectionnez un sujet": "Select a subject",
|
||
"Sélectionnez une expertise": "Select an expertise",
|
||
"Décrivez-nous votre projet et nous vous recontacterons rapidement": "Tell us about your project and we'll get back to you quickly",
|
||
"Demande envoyée avec succès !": "Request sent successfully!",
|
||
"Votre demande a été envoyée !": "Your request has been sent!",
|
||
"Votre mission a été envoyée !": "Your mission has been sent!",
|
||
"Retour à l'accueil": "Back to Home",
|
||
"Réessayer": "Retry",
|
||
"Section non trouvée": "Section not found",
|
||
"✉️ Répondre par email": "✉️ Reply by email",
|
||
"Restez informé des dernières nouvelles et innovations de WEVAL": "Stay informed about the latest WEVAL news and innovations",
|
||
"Nouveaux talents ajoutés cette semaine": "New talents added this week",
|
||
"Nouvelles missions publiées": "New missions published",
|
||
"Services personnalisés déjà livrés": "Custom services already delivered",
|
||
"Produits numériques activés": "Digital products activated",
|
||
"Formations démarrées": "Training started",
|
||
"Data Management : segmentation avancée, enrichissement, drill-down analytique": "Data Management: advanced segmentation, enrichment, analytical drill-down",
|
||
"Contrôle qualité opérationnel : supervision, alertes et actions correctives automatisées": "Operational quality control: supervision, alerts and automated corrective actions",
|
||
"Accédez au panneau d'administration Weval": "Access the Weval administration panel",
|
||
"Gestion des Actualités": "News Management",
|
||
"Total Actualités": "Total News",
|
||
"Ajouter une actualité": "Add a news article",
|
||
"+ Ajouter une actualité": "+ Add a news article",
|
||
"Actualité supprimée avec succès!": "Article deleted successfully!",
|
||
"Aucune actualité trouvée.": "No articles found.",
|
||
"Archivé": "Archived",
|
||
"Archivés": "Archived",
|
||
"Publiées": "Published",
|
||
"Répondu": "Replied",
|
||
"Répondus": "Replied",
|
||
"Aucun message trouvé": "No messages found",
|
||
"Aucun utilisateur trouvé": "No users found",
|
||
"Sélectionnez un message": "Select a message",
|
||
"Cliquez sur un message dans là liste pour voir les détails": "Click on a message in the list to see details",
|
||
"Gérez les messages reçus vià le formulaire de contact": "Manage messages received via the contact form",
|
||
"Aucune compétence clé disponible.": "No key skills available.",
|
||
"Aucune expérience professionnelle disponible.": "No professional experience available.",
|
||
"Vous devez être connecté en tant qu'administrateur pour accéder à cette page.": "You must be logged in as an administrator to access this page.",
|
||
"Vous pouvez voir la mission dans là liste.": "You can see the mission in the list.",
|
||
"Vous pouvez voir le talent dans là liste.": "You can see the talent in the list.",
|
||
"Connexion sécurisée avec authentification JWT": "Secure login with JWT authentication",
|
||
"Veuillez vérifier la console pour plus de détails ou contacter l'administrateur.": "Please check the console for more details or contact the administrator.",
|
||
"Interface de gestion des missions en cours de développement...": "Mission management interface under development...",
|
||
"Interface de gestion des talents en cours de développement...": "Talent management interface under development...",
|
||
"Interface de gestion du marketplace en cours de développement...": "Marketplace management interface under development...",
|
||
// ===================== BLOG V2 LINKEDIN TRANSLATIONS =====================
|
||
"Blog & LinkedIn Insights": "Blog & LinkedIn Insights",
|
||
"Articles, tribunes et analyses partagés par nos experts sur LinkedIn et notre blog": "Articles, opinions and analysis shared by our experts on LinkedIn and our blog",
|
||
"Blog WEVAL": "WEVAL Blog",
|
||
"Cas d'usage concrets, gains mesurés et feuille de route pour intégrer l'IA générative dans votre organisation.": "Concrete use cases, measured gains and roadmap to integrate generative AI in your organization.",
|
||
"Événement Tech": "Tech Event",
|
||
"GITEX GLOBAL 2026 — WEVAL parmi 6,500+ exposants au plus grand salon IA mondial": "GITEX GLOBAL 2026 — WEVAL among 6,500+ exhibitors at the world's largest AI show",
|
||
"Participation de l'équipe WEVAL au GITEX GLOBAL à Dubaï, le plus grand événement Tech, IA et Startup au monde.": "WEVAL team participation at GITEX GLOBAL in Dubai, the world's largest Tech, AI and Startup event.",
|
||
"Budget réaliste, 4 piliers essentiels, ROI attendu et les 5 erreurs fatales à éviter pour votre virage numérique.": "Realistic budget, 4 essential pillars, expected ROI and the 5 fatal mistakes to avoid in your digital transition.",
|
||
"SAP & Vistex": "SAP & Vistex",
|
||
"ElringKlinger × Vistex : transformer la gestion des commissions sur SAP": "ElringKlinger × Vistex: transforming commission management on SAP",
|
||
"Comment ElringKlinger a modernisé son système de commissions vieux de 20 ans grâce à Vistex et SAP S/4HANA.": "How ElringKlinger modernized its 20-year-old commission system with Vistex and SAP S/4HANA.",
|
||
"Supply Chain": "Supply Chain",
|
||
"Groupe COSUMAR × SAP IBP : déployé en moins de 4 mois": "COSUMAR Group × SAP IBP: deployed in under 4 months",
|
||
"Retour sur la collaboration COSUMAR, SAP et Logiq Technology pour la planification intégrée de la supply chain.": "A look back at the COSUMAR, SAP and Logiq Technology collaboration for integrated supply chain planning.",
|
||
"Cloud souverain en Afrique : pourquoi migrer maintenant": "Sovereign Cloud in Africa: why migrate now",
|
||
"Enjeux de souveraineté, comparatif fournisseurs et méthodologie de migration en 5 étapes éprouvée.": "Sovereignty challenges, provider comparison and proven 5-step migration methodology.",
|
||
"Analyse & Débat": "Analysis & Debate",
|
||
"Se dirige-t-on vers l'éclatement de la bulle de l'IA ?": "Are we heading towards an AI bubble burst?",
|
||
"Michael Burry (Scion Asset Management) avait prédit la crise des subprimes. Analyse des signaux sur le marché IA.": "Michael Burry (Scion Asset Management) predicted the subprime crisis. Analysis of signals in the AI market.",
|
||
"Tribune Presse": "Press Tribune",
|
||
"Tribune Les Echos — Supply Chain et transformation digitale": "Les Echos Tribune — Supply Chain and digital transformation",
|
||
"Publication dans Les Echos sur les enjeux des supply chains modernes et le rôle du digital dans leur optimisation.": "Publication in Les Echos on modern supply chain challenges and the role of digital in their optimization.",
|
||
"Santé & Innovation": "Health & Innovation",
|
||
"Kaline : une marque dermatologique exigeante et engagée": "Kaline: a demanding and committed dermatological brand",
|
||
"Yasmine Benjelloun présente Kaline, marque pionnière en soins dermatologiques au Maroc alliant science et innovation.": "Yasmine Benjelloun presents Kaline, a pioneering dermatological care brand in Morocco combining science and innovation.",
|
||
"📝 Tous les articles →": "📝 All articles →",
|
||
"Suivre sur LinkedIn": "Follow on LinkedIn",
|
||
// ===================== USE CASES TRANSLATIONS =====================
|
||
"Use Cases & Références": "Use Cases & References",
|
||
"missions clients": "client missions",
|
||
"+30 clients grands comptes accompagnés en France, Maroc et à l'international. Découvrez nos réalisations par secteur.": "30+ enterprise clients supported in France, Morocco and internationally. Discover our achievements by sector.",
|
||
"Pharma & Life Sciences": "Pharma & Life Sciences",
|
||
"Industrie & Aéro": "Industry & Aerospace",
|
||
"Retail & Distribution": "Retail & Distribution",
|
||
"Énergie & Mining": "Energy & Mining",
|
||
"Transport & Logistique": "Transport & Logistics",
|
||
"Digital & IA": "Digital & AI",
|
||
"Optimisation pricing & rebates SAP/Vistex": "SAP/Vistex pricing & rebates optimization",
|
||
"Programme de rebates & incentives pharmaceutiques": "Pharmaceutical rebates & incentives program",
|
||
"Transformation accords commerciaux & compliance": "Commercial agreements transformation & compliance",
|
||
"PMO programme SAP & gestion des données référentielles": "SAP program PMO & master data management",
|
||
"Pricing & promotions multi-marchés": "Multi-market pricing & promotions",
|
||
"Conseil data & analytics pharmaceutiques": "Pharmaceutical data & analytics consulting",
|
||
"PMO transformation industrielle & digitalisation usines": "Industrial transformation PMO & factory digitalization",
|
||
"Assistance MOE SI & optimisation supply chain": "IS MOE support & supply chain optimization",
|
||
"Gestion de projet & architecture SI ferroviaire": "Project management & railway IS architecture",
|
||
"Intégration ERP & consolidation post-acquisition": "ERP integration & post-acquisition consolidation",
|
||
"Transformation commissions & incentives SAP/Vistex": "SAP/Vistex commissions & incentives transformation",
|
||
"Consulting SI & optimisation processus aéronautiques": "IS consulting & aerospace process optimization",
|
||
"Gestion promotions & accords fournisseurs SAP": "SAP promotions & supplier agreements management",
|
||
"MOA/MOE e-commerce & intégration omnicanal": "E-commerce MOA/MOE & omnichannel integration",
|
||
"Optimisation supply chain & gestion des achats": "Supply chain optimization & procurement management",
|
||
"Programme de transformation digitale & ERP": "Digital transformation & ERP program",
|
||
"Consulting SI downstream & process automation": "Downstream IS consulting & process automation",
|
||
"Transformation digitale & modernisation SI industriel": "Digital transformation & industrial IS modernization",
|
||
"SAP IBP — Planification intégrée supply chain en 4 mois": "SAP IBP — Integrated supply chain planning in 4 months",
|
||
"PMO programme TMS & optimisation réseau logistique": "TMS program PMO & logistics network optimization",
|
||
"Gestion de projet SI & modernisation systèmes": "IS project management & systems modernization",
|
||
"Digitalisation & modernisation SI transport national": "Digitalization & national transport IS modernization",
|
||
"CSP Partner — Migration & architecture cloud souverain": "CSP Partner — Sovereign cloud migration & architecture",
|
||
"Assistant IA multilingue pour e-commerce": "Multilingual AI assistant for e-commerce",
|
||
"Conseil SI & architecture télécom": "IS consulting & telecom architecture",
|
||
"Plateforme marketing B2B pharma — Maghreb": "B2B pharma marketing platform — Maghreb",
|
||
"Clients Grands Comptes": "Enterprise Clients",
|
||
"Pays d'Intervention": "Countries of Operation",
|
||
"Années d'Expertise": "Years of Expertise",
|
||
"Partners Technologiques": "Technology Partners",
|
||
"temps clôture": "closing time",
|
||
"visibilité marge": "margin visibility",
|
||
"pays déployés": "countries deployed",
|
||
"rebates gérés/an": "rebates managed/year",
|
||
"erreurs facturation": "billing errors",
|
||
"filiales Europe": "European subsidiaries",
|
||
"compliance": "compliance",
|
||
"BUs transformées": "BUs transformed",
|
||
"mois projet": "months project",
|
||
"filiales migrées": "subsidiaries migrated",
|
||
"méthodologie": "methodology",
|
||
"mois": "months",
|
||
"marchés": "markets",
|
||
"écarts pricing": "pricing gaps",
|
||
"déploiement": "deployment",
|
||
"pays Maghreb": "Maghreb countries",
|
||
"usines pilotes": "pilot factories",
|
||
"productivité": "productivity",
|
||
"approche": "approach",
|
||
"stocks": "inventory",
|
||
"sites Europe": "European sites",
|
||
"programmes": "programs",
|
||
"pays": "countries",
|
||
"données migrées": "data migrated",
|
||
"ans legacy éliminé": "years legacy eliminated",
|
||
"traitement manuel": "manual processing",
|
||
"visibilité": "visibility",
|
||
"efficacité": "efficiency",
|
||
"accords gérés": "agreements managed",
|
||
"litiges": "disputes",
|
||
"conversion online": "online conversion",
|
||
"canaux unifiés": "unified channels",
|
||
"coûts achats": "procurement costs",
|
||
"rotation stocks": "stock turnover",
|
||
"temps process": "process time",
|
||
"mondial phosphates": "global phosphates",
|
||
"souveraineté": "sovereignty",
|
||
"mois go-live": "months go-live",
|
||
"prévisibilité": "predictability",
|
||
"temps réel": "real-time",
|
||
"coûts transport": "transport costs",
|
||
"gouvernance": "governance",
|
||
"réseau": "network",
|
||
"consultants": "consultants",
|
||
"logistique Maroc": "Morocco logistics",
|
||
"coûts infra": "infra costs",
|
||
"temps déploiement": "deployment time",
|
||
"automatisation": "automation",
|
||
"temps traitement": "processing time",
|
||
"langues": "languages",
|
||
"opérateur Maroc": "Morocco operator",
|
||
"pays couverts": "countries covered",
|
||
"contacts HCP": "HCP contacts",
|
||
"inbox rate": "inbox rate",
|
||
"Grande Distribution": "Retail",
|
||
"Retail Spécialisé": "Specialty Retail",
|
||
"Aéronautique": "Aerospace",
|
||
"Ferroviaire": "Railway",
|
||
"Automobile": "Automotive",
|
||
"Logistique": "Logistics",
|
||
"Transport Public": "Public Transport",
|
||
"Logistique Maroc": "Morocco Logistics",
|
||
"Cloud Souverain": "Sovereign Cloud",
|
||
"IA & Chatbot": "AI & Chatbot",
|
||
"Télécoms": "Telecom",
|
||
"MarTech Pharma": "MarTech Pharma",
|
||
"Data Pharma": "Pharma Data",
|
||
"Mining & Phosphates": "Mining & Phosphates",
|
||
"Agroalimentaire": "Agri-food",
|
||
"Cosmétique & Life Sciences": "Cosmetics & Life Sciences",
|
||
"Énergie": "Energy",
|
||
// NEW CLIENT TRANSLATIONS
|
||
"Pharma Maroc": "Morocco Pharma",
|
||
"1er au Maroc": "1st in Morocco",
|
||
"litiges labo": "lab disputes",
|
||
"Arômes & Parfums": "Flavors & Fragrances",
|
||
"ans collaboration": "years collaboration",
|
||
"mondial arômes": "global flavors",
|
||
"efficacité entrepôt": "warehouse efficiency",
|
||
"équipementier": "equipment supplier",
|
||
"Cosmétique & Tech": "Cosmetics & Tech",
|
||
"taux service": "service rate",
|
||
"Retail Beauté": "Beauty Retail",
|
||
"magasins": "stores",
|
||
"coûts logistiques": "logistics costs",
|
||
"Services Publics": "Public Services",
|
||
"Transport Multimodal": "Multimodal Transport",
|
||
"Aéro & Simulation": "Aero & Simulation",
|
||
"simulateurs vol": "flight simulators",
|
||
"complexe": "complex",
|
||
"luxe mondial": "global luxury",
|
||
"maisons": "brands",
|
||
"levure mondial": "global yeast",
|
||
"agro mondial": "global agri-food",
|
||
"Partenariat SAP": "SAP Partnership",
|
||
"BTP & Construction": "Construction & Civil Eng.",
|
||
"BTP mondial": "global construction",
|
||
"Négoce BTP": "Building Materials Trade",
|
||
"agences": "branches",
|
||
};
|
||
|
||
// Build reverse map EN -> FR
|
||
var R = {};
|
||
Object.keys(T).forEach(function(k){ if(T[k] && T[k] !== k) R[T[k]] = k; });
|
||
|
||
var lang = 'fr';
|
||
var originals = new WeakMap();
|
||
|
||
// Translate a single text node
|
||
function trText(node, toLang) {
|
||
if(node.nodeType !== 3) return;
|
||
var txt = node.textContent.trim();
|
||
if(!txt || txt.length < 2) return;
|
||
|
||
if(toLang === 'en') {
|
||
// Exact match (most common)
|
||
if(T[txt]) {
|
||
if(!originals.has(node)) originals.set(node, node.textContent);
|
||
node.textContent = node.textContent.replace(txt, T[txt]);
|
||
return;
|
||
}
|
||
// Trimmed match (trailing spaces from React JSX)
|
||
var trimmed = txt.replace(/\s+$/, '');
|
||
if(trimmed !== txt && T[trimmed]) {
|
||
if(!originals.has(node)) originals.set(node, node.textContent);
|
||
node.textContent = node.textContent.replace(txt, T[trimmed] + ' ');
|
||
return;
|
||
}
|
||
// Partial match for long texts (substring)
|
||
var keys = Object.keys(T);
|
||
for(var i = 0; i < keys.length; i++) {
|
||
if(keys[i].length > 15 && txt.indexOf(keys[i]) !== -1) {
|
||
if(!originals.has(node)) originals.set(node, node.textContent);
|
||
node.textContent = node.textContent.replace(keys[i], T[keys[i]]);
|
||
}
|
||
}
|
||
} else if(toLang === 'fr') {
|
||
if(originals.has(node)) {
|
||
node.textContent = originals.get(node);
|
||
}
|
||
}
|
||
}
|
||
|
||
// Translate element attrs (placeholder, title, aria-label)
|
||
function trAttrs(el, toLang) {
|
||
['placeholder','title','aria-label'].forEach(function(attr) {
|
||
var val = el.getAttribute(attr);
|
||
if(!val) return;
|
||
if(toLang === 'en' && T[val]) {
|
||
el.setAttribute('data-orig-' + attr, val);
|
||
el.setAttribute(attr, T[val]);
|
||
} else if(toLang === 'fr') {
|
||
var orig = el.getAttribute('data-orig-' + attr);
|
||
if(orig) el.setAttribute(attr, orig);
|
||
}
|
||
});
|
||
}
|
||
|
||
// Walk DOM tree
|
||
function walkDOM(node, toLang) {
|
||
if(!node) return;
|
||
if(node.nodeType === 3) {
|
||
trText(node, toLang);
|
||
return;
|
||
}
|
||
if(node.nodeType !== 1) return;
|
||
var tag = node.tagName;
|
||
if(tag === 'SCRIPT' || tag === 'STYLE' || tag === 'SVG' || tag === 'CANVAS') return;
|
||
trAttrs(node, toLang);
|
||
var children = node.childNodes;
|
||
for(var i = 0; i < children.length; i++) {
|
||
walkDOM(children[i], toLang);
|
||
}
|
||
}
|
||
|
||
// Main translate function
|
||
function translatePage(toLang) {
|
||
if(toLang === lang) return;
|
||
lang = toLang;
|
||
walkDOM(document.body, toLang);
|
||
// Update lang switcher text
|
||
var sw = document.querySelector('.language-switcher span');
|
||
if(sw) sw.textContent = toLang.toUpperCase();
|
||
try { localStorage.setItem('weval-lang', toLang); } catch(e){}
|
||
console.log('[WEVAL-TR] →', toLang);
|
||
}
|
||
|
||
// Expose globally for Header component
|
||
window.wevalTranslate = translatePage;
|
||
window.wevalGetLang = function(){ return lang; };
|
||
|
||
// Listen for clicks on language switcher
|
||
document.addEventListener('click', function(e) {
|
||
var sw = e.target.closest('.language-switcher');
|
||
if(!sw) return;
|
||
e.preventDefault();
|
||
e.stopPropagation();
|
||
var newLang = (lang === 'fr') ? 'en' : 'fr';
|
||
// Small delay to let React state update the flag icon
|
||
setTimeout(function(){ translatePage(newLang); }, 150);
|
||
});
|
||
|
||
// Re-translate after SPA navigation (new DOM content)
|
||
var _lastP = location.pathname;
|
||
setInterval(function(){
|
||
if(location.pathname !== _lastP) {
|
||
_lastP = location.pathname;
|
||
if(lang === 'en') {
|
||
setTimeout(function(){ walkDOM(document.body, 'en'); }, 800);
|
||
setTimeout(function(){ walkDOM(document.body, 'en'); }, 2000);
|
||
}
|
||
}
|
||
}, 300);
|
||
|
||
// Also re-translate when enrich.js injects new sections
|
||
var _mo = new MutationObserver(function(muts) {
|
||
if(lang !== 'en') return;
|
||
var dominated = false;
|
||
muts.forEach(function(m) {
|
||
if(m.addedNodes.length > 0) dominated = true;
|
||
});
|
||
if(dominated) {
|
||
setTimeout(function(){ walkDOM(document.body, 'en'); }, 300);
|
||
}
|
||
});
|
||
_mo.observe(document.body, { childList: true, subtree: true });
|
||
|
||
// Init: restore saved language
|
||
try {
|
||
var saved = localStorage.getItem('weval-lang');
|
||
if(saved === 'en') {
|
||
var wait = setInterval(function(){
|
||
if(document.querySelector('.hero-slogan-section') || document.querySelector('.services-container')) {
|
||
clearInterval(wait);
|
||
setTimeout(function(){ translatePage('en'); }, 500);
|
||
setTimeout(function(){ walkDOM(document.body, 'en'); }, 1500);
|
||
}
|
||
}, 200);
|
||
}
|
||
} catch(e){}
|
||
|
||
console.log('[WEVAL-TR] Module loaded — ' + Object.keys(T).length + ' translations');
|
||
})();
|
||
|
||
/* Article redirect — make Learn More link to real pages */
|
||
(function(){
|
||
var articles=null;
|
||
function loadArticles(){
|
||
fetch('/api/actualites').then(function(r){return r.json()}).then(function(d){
|
||
articles=d.actualites||[];
|
||
}).catch(function(){});
|
||
}
|
||
function fixLinks(){
|
||
if(!articles)return;
|
||
document.querySelectorAll('.read-more-btn').forEach(function(btn,i){
|
||
if(btn._fixed)return;
|
||
btn._fixed=true;
|
||
var card=btn.closest('.article-card');
|
||
if(!card)return;
|
||
var title=card.querySelector('.article-title,.card-title,h3,h2');
|
||
if(!title)return;
|
||
var t=title.textContent.trim();
|
||
for(var j=0;j<articles.length;j++){
|
||
if(articles[j].title&&t.indexOf(articles[j].title.substring(0,20))>-1&&articles[j].url){
|
||
btn.onclick=function(e){e.preventDefault();e.stopPropagation();window.location.href=this.dataset.url};
|
||
btn.dataset.url=articles[j].url;
|
||
btn.textContent='Lire l\'article →';
|
||
card.style.cursor='pointer';
|
||
card.onclick=function(){window.location.href=this.querySelector('.read-more-btn').dataset.url};
|
||
break;
|
||
}
|
||
}
|
||
});
|
||
}
|
||
loadArticles();
|
||
setInterval(fixLinks,1000);
|
||
})();
|
||
|
||
/* === IFRAME GUARD: skip injections when inside workspace iframe === */
|
||
var __inIframe = false;
|
||
try { __inIframe = window.self !== window.top; } catch(e) { __inIframe = true; }
|
||
if(__inIframe){
|
||
/* In iframe: hide footer clutter only, let links work naturally */
|
||
var s=document.createElement('style');s.textContent='footer{display:none!important}';document.head.appendChild(s);
|
||
}
|
||
|
||
/* Blog URL redirect: /blog/slug -> /blog/slug.html */
|
||
(function(){
|
||
var p=window.location.pathname;
|
||
if(p.match(/^\/blog\/[a-z0-9-]+$/) && !p.endsWith('.html') && p!=='/blog/'){
|
||
window.location.replace(p+'.html');
|
||
}
|
||
})();
|
||
|
||
|
||
|
||
/* === WEVAL FOOTER LINKS + SITEMAP + SLIDER (v4) === */
|
||
(function(){
|
||
var done=false;
|
||
function inject(){
|
||
if(done||__inIframe||location.pathname.indexOf("/products/")===0)return;
|
||
var footer=document.querySelector('footer,.footer');
|
||
if(!footer)return;
|
||
var container=footer.querySelector('.footer-container')||footer.querySelector('div');
|
||
if(!container)return;
|
||
if(footer.querySelector('.wv-links'))return;
|
||
done=true;
|
||
|
||
/* 3-column links */
|
||
var g=document.createElement('div');
|
||
g.className='wv-links';
|
||
g.style.cssText='display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;max-width:900px;margin:1.5rem auto 0;padding:1.5rem 1rem 0;border-top:1px solid rgba(255,255,255,.06);text-align:center;font-size:.82rem';
|
||
g.innerHTML='<div><b style="color:#fff;font-size:.9rem">Services</b><br>'
|
||
+'<a href="/service/intelligence-artificielle.html">Intelligence Artificielle</a><br>'
|
||
+'<a href="/service/cybersecurite.html">Cybersécurité & Audit</a><br>'
|
||
+'<a href="/service/cloud-sap.html">Cloud & SAP</a><br>'
|
||
+'<a href="/service/e-marketing.html">Marketing Digital</a><br>'
|
||
+'<a href="/service/transformation-digitale.html">Transformation Digitale</a><br>'
|
||
+'<a href="/service/recrutement-it.html">Recrutement IT</a></div>'
|
||
+'<div><b style="color:#fff;font-size:.9rem">Ressources</b><br>'
|
||
+'<a href="/blog/">Blog & Insights</a><br>'
|
||
+'<a href="/blog/use-cases.html">Études de Cas</a><br>'
|
||
+'<a href="/méthodologie.html">Méthodologie Weval 4D</a><br>'
|
||
+'<a href="/actualites">Actualités</a><br>'
|
||
+'<a href="/products/">Marketplace</a><br>'
|
||
+'<a href="/wevia.html">Wevia — Notre IA</a></div>'
|
||
+'<div><b style="color:#fff;font-size:.9rem">Articles récents</b><br>'
|
||
+'<a href="/blog/ia-agentique-entreprise-2026.html">IA Agentique en Entreprise</a><br>'
|
||
+'<a href="/blog/cybersecurite-pme-maroc-2026.html">Cybersécurité PME Maroc</a><br>'
|
||
+'<a href="/blog/cloud-souverain-afrique-2026.html">Cloud Souverain Afrique</a><br>'
|
||
+'<a href="/blog/migration-sap-s4hana-2027.html">Migration SAP S/4HANA</a><br>'
|
||
+'<a href="/blog/ia-generative-maroc-2026.html">IA Générative Maroc</a></div>';
|
||
g.querySelectorAll('a').forEach(function(a){a.style.cssText='color:rgba(255,255,255,.5);text-decoration:none;line-height:1.8'});
|
||
container.appendChild(g);
|
||
}
|
||
|
||
/* Retry every 500ms until footer found, max 20 attempts */
|
||
var attempts=0;
|
||
var iv=setInterval(function(){
|
||
inject();
|
||
if(done||++attempts>20)clearInterval(iv);
|
||
},500);
|
||
|
||
/* Also on route change */
|
||
var _p=history.pushState;
|
||
history.pushState=function(){_p.apply(this,arguments);done=false;attempts=0;iv=setInterval(function(){inject();if(done||++attempts>20)clearInterval(iv)},500)};
|
||
})();
|
||
|
||
|
||
|
||
|
||
|
||
/* Sitemap link after Terms of Use */
|
||
(function(){
|
||
var t=0,iv=setInterval(function(){
|
||
var links=document.querySelectorAll('a');
|
||
for(var i=0;i<links.length;i++){
|
||
if(links[i].textContent.trim()==='Terms of Use'&&!links[i].parentNode.querySelector('.wv-sm')){
|
||
var sp=document.createElement('span');
|
||
sp.className='wv-sm';
|
||
sp.innerHTML=' | <a href="/blog/index-seo.html" style="color:inherit;text-decoration:none">Sitemap</a>';
|
||
links[i].parentNode.appendChild(sp);
|
||
clearInterval(iv);
|
||
return;
|
||
}
|
||
}
|
||
if(++t>30)clearInterval(iv);
|
||
},500);
|
||
})();
|
||
/* === SLIDER FIX v2 — References marquee + Partners slide === */
|
||
(function(){
|
||
var t=0,iv=setInterval(function(){
|
||
/* 1. References slider — duplicate for infinite loop */
|
||
var ref=document.querySelector('.logos-slider');
|
||
if(ref&&!ref.dataset.dup){
|
||
ref.dataset.dup='1';
|
||
if(ref)ref.style.flexWrap='nowrap';
|
||
if(ref&&ref.parentElement)ref.parentElement.style.overflow='hidden';
|
||
var items=Array.from(ref.children);
|
||
items.forEach(function(el){ref.appendChild(el.cloneNode(true))});
|
||
}
|
||
/* 2. Partners — add slide animation */
|
||
var pc=document.querySelector('.partners-container');
|
||
if(pc&&!pc.dataset.slide){
|
||
pc.dataset.slide='1';
|
||
var items2=Array.from(pc.children);
|
||
items2.forEach(function(el){pc.appendChild(el.cloneNode(true))});
|
||
pc.style.cssText+='display:flex!important;flex-wrap:nowrap!important;animation:slide 25s linear infinite!important;width:max-content!important;gap:5rem!important;align-items:center!important';
|
||
pc.querySelectorAll('img').forEach(function(img){img.style.cssText='height:70px!important;width:auto!important;max-width:220px!important;object-fit:contain!important;opacity:.9;transition:all .3s';img.onmouseenter=function(){this.style.opacity='1';this.style.transform='scale(1.08)'};img.onmouseleave=function(){this.style.opacity='.9';this.style.transform='scale(1)'}});
|
||
/* Responsive logo sizing */
|
||
if(!document.getElementById('wv-logo-responsive')){var st=document.createElement('style');st.id='wv-logo-responsive';st.textContent='@media(min-width:1024px){.partners-container img{height:70px!important;max-width:220px!important}.logos-slider img{height:70px!important;max-width:220px!important;margin:0 3rem!important}}@media(max-width:1023px){.partners-container img{height:50px!important;max-width:160px!important}.logos-slider img{height:50px!important;max-width:160px!important;margin:0 1.5rem!important}}@media(max-width:640px){.partners-container img{height:38px!important;max-width:120px!important}.logos-slider img{height:38px!important;max-width:120px!important;margin:0 1rem!important}.partners-container{gap:2rem!important}}';document.head.appendChild(st)}
|
||
if(pc&&pc.parentElement)pc.parentElement.style.overflow='hidden';
|
||
if(pc&&pc.parentElement)pc.parentElement.style.width='100%';
|
||
pc.addEventListener('mouseenter',function(){this.style.animationPlayState='paused'});
|
||
pc.addEventListener('mouseleave',function(){this.style.animationPlayState='running'});
|
||
}
|
||
if((ref&&ref.dataset.dup&&pc&&pc.dataset.slide)||++t>60)clearInterval(iv);
|
||
},500);
|
||
})();
|
||
|
||
/* SOUVERAINETE: masquer providers cloud, afficher GPU local */
|
||
(function(){
|
||
if(__inIframe)return;
|
||
var t=0,iv=setInterval(function(){
|
||
document.querySelectorAll('h2,h3,p').forEach(function(el){
|
||
var txt=el.textContent||'';
|
||
if(txt.indexOf('8 Providers')>-1||txt.indexOf('Provider')>-1&&txt.indexOf('Single Point')>-1){
|
||
el.textContent='Moteur IA Souverain — GPU Dédié, Zéro Dépendance Cloud';el.style.textAlign='center';el.style.width='100%';
|
||
}
|
||
});
|
||
// Hide individual provider cards but keep GPU Ollama
|
||
document.querySelectorAll('[class*="provider"]').forEach(function(el){
|
||
var txt=el.textContent||'';
|
||
if(txt.indexOf('Ollama')>-1||txt.indexOf('GPU')>-1||txt.indexOf('local')>-1||txt.indexOf('Souverain')>-1){
|
||
el.style.display='';
|
||
} else if(txt.indexOf('Cerebras')>-1||txt.indexOf('Groq')>-1||txt.indexOf('SambaNova')>-1||txt.indexOf('DeepSeek')>-1||txt.indexOf('Mistral')>-1||txt.indexOf('Cohere')>-1){
|
||
el.style.display='none';
|
||
}
|
||
});
|
||
if(++t>30)clearInterval(iv);
|
||
},500);
|
||
})();
|
||
|
||
/* Masquer localisation GPU */
|
||
(function(){
|
||
var t=0,iv=setInterval(function(){
|
||
document.querySelectorAll('p,span,div').forEach(function(el){
|
||
if(el.innerHTML&&el.innerHTML.indexOf('en Europe')>-1&&!el._fixed){
|
||
el.innerHTML=el.innerHTML.replace(/,?\s*en Europe/g,'');
|
||
el._fixed=true;
|
||
}
|
||
if(el.innerHTML&&el.innerHTML.indexOf('en Europe')>-1&&!el._fixed2){
|
||
el.innerHTML=el.innerHTML.replace('en Europe','');
|
||
el._fixed2=true;
|
||
}
|
||
});
|
||
if(++t>20)clearInterval(iv);
|
||
},500);
|
||
})();
|
||
|
||
|
||
|
||
/* Hide Multi-Providers tag */
|
||
(function(){
|
||
var t=0,iv=setInterval(function(){
|
||
document.querySelectorAll('.sc-tag, span').forEach(function(el){
|
||
if((el.textContent||'').trim()==='Multi-Providers'){
|
||
el.style.display='none';
|
||
}
|
||
});
|
||
if(++t>20)clearInterval(iv);
|
||
},500);
|
||
})();
|
||
|
||
/* Simple demo button redirect — FIXED v2 */
|
||
(function(){
|
||
document.addEventListener("click",function(e){
|
||
var el=e.target.closest("button,a");
|
||
if(!el)return;
|
||
var t=(el.innerText||"").trim().substring(0,30);
|
||
if(t==="Demander une demo"||t==="Request a Demo"||t==="Contactez-nous"||t==="Contact Us"){
|
||
e.preventDefault();
|
||
window.location.href="/contact-us";
|
||
}
|
||
});
|
||
})();
|
||
|
||
/* Inject Products nav link */
|
||
(function(){
|
||
if(__inIframe)return;
|
||
var t=0,iv=setInterval(function(){
|
||
var nav=document.querySelector('.main-navigation');
|
||
if(nav && !document.getElementById('nav-products')){
|
||
var newsLink=null;
|
||
nav.querySelectorAll('button,a').forEach(function(el){
|
||
if((el.textContent||'').trim()==='News') newsLink=el;
|
||
});
|
||
if(newsLink){
|
||
var btn=document.createElement('button');
|
||
btn.id='nav-products';
|
||
btn.className='nav-link';
|
||
btn.textContent='Products';
|
||
btn.onclick=function(){window.location.href='/products/workspace.html';};
|
||
nav.insertBefore(btn,newsLink);
|
||
}
|
||
}
|
||
if(++t>30)clearInterval(iv);
|
||
},500);
|
||
})();
|
||
|
||
|
||
/* Global fetch interceptor for missing product APIs */
|
||
(function(){
|
||
var origFetch=window.fetch;
|
||
window.fetch=function(url,opts){
|
||
return origFetch.apply(this,arguments).then(function(r){
|
||
if(r.status===404&&typeof url==='string'&&url.indexOf('/api/')>-1){
|
||
return new Response(JSON.stringify({
|
||
status:'demo',
|
||
message:'Cette fonctionnalite est disponible en version complete. Contactez info@weval-consulting.com pour une demo.',
|
||
response:'Cette fonctionnalite est disponible en version complete. Contactez-nous a info@weval-consulting.com pour activer votre acces.',
|
||
data:[]
|
||
}),{status:200,headers:{'Content-Type':'application/json'}});
|
||
}
|
||
return r;
|
||
});
|
||
};
|
||
})();
|
||
|
||
|
||
/* === SECURITY: Chatbot input sanitization === */
|
||
(function(){
|
||
// Limit chatbot input length
|
||
document.addEventListener('input',function(e){
|
||
if(e.target&&(e.target.id==='chat-i'||e.target.id==='echat-i'||e.target.tagName==='TEXTAREA')){
|
||
if(e.target.value.length>500){
|
||
e.target.value=e.target.value.substring(0,500);
|
||
}
|
||
}
|
||
},true);
|
||
|
||
// Sanitize chatbot output before rendering (prevent stored XSS)
|
||
var origInnerHTML=Object.getOwnPropertyDescriptor(Element.prototype,'innerHTML');
|
||
// Don't override innerHTML globally - too risky. Instead patch the md/emd functions
|
||
})();
|
||
|
||
/* === SECURITY: Block known prompt injection patterns === */
|
||
(function(){
|
||
var origFetch2=window.fetch;
|
||
if(window._secFetchPatched)return;
|
||
window._secFetchPatched=true;
|
||
var blocked=['ignore all previous','ignore previous instructions','system prompt','DAN ','do anything now','you are now ','repeat everything above','reveal your instructions','what are your instructions'];
|
||
window.fetch=function(url,opts){
|
||
if(opts&&opts.body&&typeof url==='string'&&url.indexOf('/api/weval-ia')>-1){
|
||
try{
|
||
var body=JSON.parse(opts.body);
|
||
var msg=(body.message||'').toLowerCase();
|
||
for(var i=0;i<blocked.length;i++){
|
||
if(msg.indexOf(blocked[i].toLowerCase())>-1){
|
||
return Promise.resolve(new Response(JSON.stringify({
|
||
response:'Cette question ne peut pas etre traitee. Posez une question sur nos services ou produits.'
|
||
}),{status:200,headers:{'Content-Type':'application/json'}}));
|
||
}
|
||
}
|
||
}catch(e){}
|
||
}
|
||
return origFetch2.apply(this,arguments);
|
||
};
|
||
})();
|
||
|
||
|
||
/* Inject Pricing nav link */
|
||
(function(){
|
||
var t2=0,iv2=setInterval(function(){
|
||
var nav=document.querySelector('.main-navigation');
|
||
if(nav && !document.getElementById('nav-pricing')){
|
||
var prodLink=document.getElementById('nav-products');
|
||
if(prodLink){
|
||
var btn=document.createElement('button');
|
||
btn.id='nav-pricing';
|
||
btn.className='nav-link';
|
||
btn.textContent='Tarifs';
|
||
btn.onclick=function(){window.location.href='/pricing.html';};
|
||
nav.insertBefore(btn,prodLink.nextSibling);
|
||
}
|
||
}
|
||
// NonReg admin link (visible only with ?admin)
|
||
// Public: Solution Finder + Trust Center (dedup)
|
||
/* Tech Radar nav link */
|
||
if(nav && !document.getElementById('nav-radar')){
|
||
var radarBtn=document.createElement('button');
|
||
radarBtn.id='nav-radar';radarBtn.className='nav-link';
|
||
radarBtn.textContent='Tech Radar';
|
||
radarBtn.style.color='#00E5A0';
|
||
radarBtn.onclick=function(){window.location.href='/technology-radar.html';};
|
||
var sfCheck=document.getElementById('nav-sf');
|
||
if(sfCheck) nav.insertBefore(radarBtn,sfCheck); else nav.appendChild(radarBtn);
|
||
}
|
||
if(nav && !document.getElementById('nav-sf')){
|
||
var sfBtn=document.createElement('button');
|
||
sfBtn.id='nav-sf';sfBtn.className='nav-link';sfBtn.textContent='Trouver ma solution';sfBtn.style.background='rgba(99,102,241,.12)';sfBtn.style.borderRadius='8px';sfBtn.style.padding='6px 14px';sfBtn.style.fontSize='.82em';sfBtn.style.color='#818cf8';
|
||
sfBtn.onclick=function(){window.location.href='/solution-finder.html';};
|
||
nav.appendChild(sfBtn);
|
||
}
|
||
// trust-center.footer.link (not nav)
|
||
if(location.search.indexOf('admin')>-1&&nav&&!document.getElementById('nav-nr')){
|
||
var nrBtn=document.createElement('button');
|
||
nrBtn.id='nav-nr';nrBtn.className='nav-link';nrBtn.textContent='NonReg';
|
||
nrBtn.style.color='#22c55e';
|
||
nrBtn.onclick=function(){window.location.href='/nonreg.html';};
|
||
nav.appendChild(nrBtn);
|
||
}
|
||
if(++t2>30)clearInterval(iv2);
|
||
},500);
|
||
})();
|
||
|
||
|
||
|
||
/* === UX: Solution Finder CTA on pricing page === */
|
||
(function(){if(__inIframe)return;
|
||
if(location.pathname==="/pricing.html"||location.pathname.indexOf("pricing")>-1){
|
||
setTimeout(function(){
|
||
var wrap=document.querySelector(".wrap,.sec,.hero,main,#root");
|
||
if(!wrap)wrap=document.body;
|
||
var cta=document.createElement("div");
|
||
cta.style.cssText="background:linear-gradient(135deg,rgba(99,102,241,.08),rgba(0,200,150,.06));border:1px solid rgba(99,102,241,.15);border-radius:16px;padding:24px;text-align:center;max-width:700px;margin:24px auto;font-family:Outfit,sans-serif";
|
||
cta.innerHTML="<p style='color:#f1f5f9;font-size:1rem;font-weight:600;margin-bottom:8px'>Pas sûr de quel plan choisir ?</p><p style='color:#94a3b8;font-size:.85rem;margin-bottom:16px'>3 questions pour trouver la solution adaptée à votre besoin.</p><a href='/solution-finder.html' style='display:inline-block;background:#6366f1;color:#fff;padding:10px 28px;border-radius:10px;font-weight:600;font-size:.9rem;text-decoration:none'>Trouver ma solution →</a>";
|
||
// Insert before first section or at top
|
||
var firstSec=document.querySelector(".sec,section,.pricing");
|
||
if(firstSec)firstSec.parentNode.insertBefore(cta,firstSec);
|
||
else wrap.prepend(cta);
|
||
},1500);
|
||
}
|
||
})();
|
||
|
||
/* SF CTA in nav - removed redundant product page strip */
|
||
|
||
|
||
/* SF CTA removed - already in nav, conflicts with chatbot */
|
||
|
||
/* Trust/SF links in sitemap - removed redundant badge */
|
||
|
||
/* FIX REFS v2 */
|
||
(function(){var t=0,iv=setInterval(function(){var s=document.querySelector(".logos-slider");if(s&&!s.dataset.fixed){s.dataset.fixed="1";var C=[["Abbott-BBqN71LY.png","Abbott"],["AbbVie-DrAnGwE6.png","AbbVie"],["LOreal-Dyr2mSS8.png","L'Oréal"],["carrefour-BExziI9J.png","Carrefour"],["intermarche-CclDwFVk.png","Intermarché"],["Michelin-C394e1Ut.png","Michelin"],["Point-p-FB9NU5Ha.png","Point P"],["geodis-D3847iTr.png","Geodis"],["saham-bank-xjtdeNfo.png","Société Générale"],["Ocp-group-Djer-YwL.png","OCP"],["ratp-D6fh_40B.png","RATP"],["Safran-CZsHqZN5.png","Safran"],["Faiveley-DofO1lx4.png","Faiveley"],["Givaudan-BwJ_2RJS.png","Givaudan"],["SNTL-yETbLVxR.png","SNTL"],["lesaffre-BVekOo93.png","AB Lesaffre"],["REUNICAA-B8cSoEBJ.png","Réunica"]];s.innerHTML="";for(var r=0;r<2;r++)C.forEach(function(c){var i=document.createElement("img");i.src="/assets/"+c[0];i.alt=c[1];i.style.cssText="height:70px;width:auto;max-width:220px;object-fit:contain;opacity:.9;transition:all .3s;margin:0 3rem";i.onmouseenter=function(){this.style.opacity="1";this.style.transform="scale(1.05)"};i.onmouseleave=function(){this.style.opacity=".85";this.style.transform="scale(1)"};s.appendChild(i)});s.dataset.dup="1"}if((s&&s.dataset.fixed)||++t>60)clearInterval(iv)},500)})();
|
||
|
||
|
||
/* Chatbot widget handled by React - removed duplicate */
|
||
|
||
/* === MOBILE RESPONSIVE FIX — weval-translate.js append === */
|
||
|
||
/* 1. Clone injected nav items into mobile sidebar when it opens */
|
||
(function(){
|
||
if(typeof __inIframe !== 'undefined' && __inIframe) return;
|
||
var injected = false;
|
||
var observer = new MutationObserver(function(){
|
||
var sidebar = document.querySelector('.mobile-navigation, .sidebar-nav, [class*="mobile-nav"]');
|
||
if(!sidebar || sidebar.dataset.wvMobile) return;
|
||
sidebar.dataset.wvMobile = '1';
|
||
var items = [
|
||
{id:'nav-products', text:'Products', href:'/products/workspace.html', icon:'📦'},
|
||
{id:'nav-pricing', text:'Tarifs', href:'/pricing.html', icon:'💰'},
|
||
{id:'nav-radar', text:'Tech Radar', href:'/technology-radar.html', icon:'📡', color:'#00E5A0'},
|
||
{id:'nav-sf', text:'Trouver ma solution', href:'/solution-finder.html', icon:'🔍', color:'#818cf8'}
|
||
];
|
||
items.forEach(function(item){
|
||
if(sidebar.querySelector('[data-wv-mob="'+item.id+'"]')) return;
|
||
var el = document.querySelector('#'+item.id);
|
||
if(!el) return;
|
||
var a = document.createElement('a');
|
||
a.href = item.href;
|
||
a.className = 'mobile-nav-link';
|
||
a.dataset.wvMob = item.id;
|
||
a.textContent = item.text;
|
||
if(item.color) a.style.color = item.color;
|
||
a.style.display = 'block';
|
||
a.style.padding = '12px 20px';
|
||
a.style.fontSize = '0.95rem';
|
||
a.style.fontWeight = '600';
|
||
a.style.textDecoration = 'none';
|
||
a.style.borderBottom = '1px solid rgba(255,255,255,0.06)';
|
||
sidebar.appendChild(a);
|
||
});
|
||
});
|
||
observer.observe(document.body, {childList:true, subtree:true, attributes:true});
|
||
})();
|
||
|
||
/* 2. Global mobile responsive CSS fixes */
|
||
(function(){
|
||
if(document.getElementById('wv-mobile-fix')) return;
|
||
var s = document.createElement('style');
|
||
s.id = 'wv-mobile-fix';
|
||
s.textContent = [
|
||
/* Nav overflow fix */
|
||
'@media(max-width:1024px){',
|
||
' .main-navigation{flex-wrap:wrap!important;gap:4px!important;max-width:100%!important;overflow-x:auto!important;-webkit-overflow-scrolling:touch}',
|
||
' .main-navigation .nav-link{font-size:.78rem!important;padding:6px 10px!important;white-space:nowrap}',
|
||
' #nav-sf{display:none!important}',
|
||
' #nav-radar{font-size:.75rem!important}',
|
||
'}',
|
||
/* Mobile hamburger sidebar items */
|
||
'@media(max-width:768px){',
|
||
' .main-navigation{display:none!important}',
|
||
' .mobile-navigation,.sidebar-nav,[class*="mobile-nav"]{',
|
||
' display:flex!important;flex-direction:column!important;width:100%!important',
|
||
' }',
|
||
' .mobile-navigation a,.sidebar-nav a{',
|
||
' padding:14px 20px!important;font-size:.95rem!important;border-bottom:1px solid rgba(255,255,255,.06)!important',
|
||
' }',
|
||
' /* Hero sections responsive */',
|
||
' .page-header,.sp-page-header,.blog-hero,.solutions-hero,.mp-hero{',
|
||
' padding:40px 16px 30px!important',
|
||
' }',
|
||
' .header-title,.sp-header-title,.solutions-hero h1,.mp-hero h1{',
|
||
' font-size:1.5rem!important;line-height:1.2!important',
|
||
' }',
|
||
' .header-stats,.sp-header-stats,.solutions-hero-stats,.mp-hero-stats{',
|
||
' grid-template-columns:1fr 1fr!important;gap:8px!important',
|
||
' }',
|
||
' /* Cards grid responsive */',
|
||
' .sp-services-grid,.blog-grid,.mp-grid,.mp-grid-3{',
|
||
' grid-template-columns:1fr!important;gap:12px!important',
|
||
' }',
|
||
' /* Form responsive */',
|
||
' .form-row,.sp-form-row{flex-direction:column!important;gap:12px!important}',
|
||
' .contact-form-container,.sp-service-request{padding:16px!important}',
|
||
' /* Maps responsive */',
|
||
' .offices-grid{grid-template-columns:1fr!important}',
|
||
' .map-embed iframe{height:180px!important}',
|
||
' /* Mission/talent cards */',
|
||
' .mission-cards,.articles-grid{grid-template-columns:1fr!important}',
|
||
' .missions-content{flex-direction:column!important}',
|
||
' .filters-section{width:100%!important;margin-bottom:16px!important}',
|
||
' /* Carousel fix */',
|
||
' .carousel-3d-container{height:400px!important}',
|
||
' .carousel-3d-wrapper{width:240px!important;height:300px!important}',
|
||
' .carousel-3d-card{width:230px!important;height:280px!important;padding:1rem!important}',
|
||
' /* Service detail */',
|
||
' .service-main-section{flex-direction:column!important}',
|
||
' .service-image-content{display:none!important}',
|
||
' .service-text-content{padding:16px!important}',
|
||
' /* Solution cards */',
|
||
' .solution-card-full{margin:0 -12px!important;border-radius:12px!important}',
|
||
' .sc-stats-full{grid-template-columns:1fr 1fr!important;gap:8px!important}',
|
||
' .providers-grid,.interfaces-grid,.capabilities-grid,.modules-grid{grid-template-columns:1fr!important}',
|
||
' .integration-steps{grid-template-columns:1fr!important}',
|
||
' /* Academy */',
|
||
' .wia-card{margin:0!important}',
|
||
' /* Footer fix */',
|
||
' footer .footer-content{flex-direction:column!important;gap:24px!important;text-align:center!important}',
|
||
' footer .footer-links{flex-direction:column!important;gap:8px!important}',
|
||
' /* General spacing */',
|
||
' body{overflow-x:hidden!important}',
|
||
' .container,.wrap,.content{padding-left:12px!important;padding-right:12px!important}',
|
||
' /* CTA buttons */',
|
||
' .sc-btn-full,.sc-btn-main,.mp-btn,.mp-cta-btn{width:100%!important;text-align:center!important}',
|
||
'}',
|
||
/* Small phones */
|
||
'@media(max-width:420px){',
|
||
' .header-stats,.sp-header-stats{grid-template-columns:1fr!important}',
|
||
' .stat-item,.sp-stat-item{padding:8px!important}',
|
||
' h1{font-size:1.3rem!important}',
|
||
' h2{font-size:1.1rem!important}',
|
||
'}'
|
||
].join('\n');
|
||
document.head.appendChild(s);
|
||
})();
|
||
|
||
/* 3D Carousel Fix - arrows + perspective */
|
||
(function(){
|
||
if(document.getElementById('wv-carousel3d-fix')) return;
|
||
var s = document.createElement('style');
|
||
s.id = 'wv-carousel3d-fix';
|
||
s.textContent = [
|
||
'.services-container{overflow:visible!important}',
|
||
'.services-section{overflow:visible!important}',
|
||
'.carousel-3d-container{overflow:visible!important;perspective:1500px!important}',
|
||
'.carousel-3d-wrapper{transform-style:preserve-3d!important}',
|
||
'.carousel-3d{transform-style:preserve-3d!important}',
|
||
'.carousel-3d-prev{left:10px!important;z-index:20!important}',
|
||
'.carousel-3d-next{right:10px!important;z-index:20!important}',
|
||
'.carousel-3d-nav{pointer-events:auto!important;cursor:pointer!important;position:absolute!important}',
|
||
'.carousel-3d-card{backface-visibility:hidden!important;transform-style:preserve-3d!important;will-change:transform!important}',
|
||
'html,body{overflow-x:hidden!important}',
|
||
'.carousel-3d-dots{z-index:20!important}',
|
||
'.carousel-3d-card.active{opacity:1!important;filter:none!important;z-index:10!important}',
|
||
'.carousel-3d-card:not(.active){opacity:0.5!important;filter:blur(1px)!important;z-index:1!important}',
|
||
'@media(max-width:768px){.carousel-3d-prev{left:5px!important}.carousel-3d-next{right:5px!important}.carousel-3d-nav{width:40px!important;height:40px!important;font-size:1.5rem!important}}'
|
||
].join('\n');
|
||
document.head.appendChild(s);
|
||
})();
|
||
|
||
/* Authentik Logout Fix - invalidate SSO session on admin logout */
|
||
(function(){
|
||
if(window.__wvLogoutFix) return;
|
||
window.__wvLogoutFix = true;
|
||
document.addEventListener('click', function(e) {
|
||
var btn = e.target.closest('.logout-btn');
|
||
if(btn) {
|
||
e.preventDefault();
|
||
e.stopPropagation();
|
||
localStorage.removeItem('adminToken');
|
||
localStorage.removeItem('adminData');
|
||
window.location.href = '/outpost.goauthentik.io/sign_out?rd=https://weval-consulting.com/';
|
||
}
|
||
}, true);
|
||
})();
|
||
|
||
/* Carousel 3D DOM Controller v2 — bypasses React state */
|
||
(function(){
|
||
if(window.__wvC3D) return;
|
||
window.__wvC3D = true;
|
||
var TZ = [
|
||
'rotateY(0deg) translateZ(300px) scale(1.05)',
|
||
'rotateY(60deg) translateZ(250px) rotateY(-20deg)',
|
||
'rotateY(120deg) translateZ(200px) rotateY(-40deg)',
|
||
'rotateY(180deg) translateZ(170px) scale(0.85)',
|
||
'rotateY(-120deg) translateZ(200px) rotateY(40deg)',
|
||
'rotateY(-60deg) translateZ(250px) rotateY(20deg)'
|
||
];
|
||
function boot(){
|
||
var cards = document.querySelectorAll('.carousel-3d-card');
|
||
if(!cards.length) return false;
|
||
var idx=0, total=cards.length, autoIv=null, paused=false;
|
||
function render(){
|
||
cards.forEach(function(c,i){
|
||
var offset=(i-idx+total)%total;
|
||
c.style.transform=TZ[offset]||TZ[3];
|
||
c.style.transition='all 0.8s cubic-bezier(0.4,0,0.2,1)';
|
||
if(offset===0){c.classList.add('active');c.style.opacity='1';c.style.filter='none';c.style.zIndex='10';}
|
||
else{c.classList.remove('active');c.style.opacity='0.4';c.style.filter='blur(1px)';c.style.zIndex='1';}
|
||
});
|
||
document.querySelectorAll('.carousel-3d-dot').forEach(function(d,i){d.classList.toggle('active',i===idx);});
|
||
}
|
||
function next(){idx=(idx+1)%total;render();}
|
||
function prev(){idx=(idx-1+total)%total;render();}
|
||
function startAuto(){if(!autoIv)autoIv=setInterval(function(){if(!paused)next();},2500);}
|
||
var prevBtn=document.querySelector('.carousel-3d-prev');
|
||
var nextBtn=document.querySelector('.carousel-3d-next');
|
||
if(prevBtn){var np=prevBtn.cloneNode(true);prevBtn.parentNode.replaceChild(np,prevBtn);np.addEventListener('click',function(e){e.stopPropagation();prev();});np.style.cssText+=';z-index:100!important;pointer-events:all!important;cursor:pointer!important;';}
|
||
if(nextBtn){var nn=nextBtn.cloneNode(true);nextBtn.parentNode.replaceChild(nn,nextBtn);nn.addEventListener('click',function(e){e.stopPropagation();next();});nn.style.cssText+=';z-index:100!important;pointer-events:all!important;cursor:pointer!important;';}
|
||
document.querySelectorAll('.carousel-3d-dot').forEach(function(d,i){d.addEventListener('click',function(){idx=i;render();});});
|
||
var container=document.querySelector('.carousel-3d-container');
|
||
if(container){container.addEventListener('mouseenter',function(){paused=true;});container.addEventListener('mouseleave',function(){paused=false;});}
|
||
render();startAuto();
|
||
console.log('WEVAL: Carousel 3D DOM v2 ('+total+' cards)');
|
||
return true;
|
||
}
|
||
var att=0,iv=setInterval(function(){if(boot()||++att>40)clearInterval(iv);},500);
|
||
})();
|