Enhance homepage layout and content structure

- Updated the homepage to utilize a new layout with multiple widgets including Hero, Features, Content, CallToAction, and Contact.
- Implemented dynamic translations for the homepage content to improve accessibility and user experience.
- Set prerendering to true for better performance and SEO optimization.
This commit is contained in:
becarta
2025-05-14 00:54:57 +02:00
parent 112c049f4b
commit 0d396209f9
2 changed files with 350 additions and 206 deletions

View File

@@ -120,336 +120,336 @@ export const eapTranslations: Record<string, Translation['eap']> = {
} }
}, },
nl: { nl: {
menu: 'Enterprise App Protection', menu: 'Enterprise App Bescherming',
title: 'Enterprise App Protection (EAP) Advanced Phishing Defense', title: 'Enterprise App Bescherming (EAP) Geavanceerde Phishingbescherming',
intro: 'Protect yourself and your organization from phishing attacks that impersonate common enterprise applications like DocuSign, Salesforce, Microsoft 365, and hundreds more.', intro: 'Bescherm jezelf en je organisatie tegen phishingaanvallen die zich voordoen als bekende zakelijke apps zoals DocuSign, Salesforce, Microsoft 365 en honderden andere.',
whatItDoes: { whatItDoes: {
title: 'What This Extension Does', title: 'Wat Deze Extensie Doet',
items: [ items: [
'Automatically scans links in your browser and emails in real time', 'Scant automatisch links in je browser en e-mails in realtime',
'Alerts you when a link claims to be from a trusted enterprise app but leads to an unofficial domain', 'Waarschuwt je als een link zich voordoet als een vertrouwde zakelijke app maar naar een onofficieel domein leidt',
'Uses Google Safe Browsing API to detect phishing and malware threats beyond known fake domains', 'Gebruikt de Google Safe Browsing API om phishing- en malwaredreigingen te detecteren buiten bekende nep-domeinen',
'Maintains an up-to-date database of legitimate enterprise application domains', 'Beheert een actuele database van legitieme domeinen van zakelijke apps',
'Detects dynamically added links (e.g., in Outlook Web, Teams, SharePoint)', 'Detecteert dynamisch toegevoegde links (bijv. in Outlook Web, Teams, SharePoint)',
'Works with 150+ enterprise applications', 'Werkt met meer dan 150 zakelijke applicaties',
'Functions completely offline after initial setup (except for Safe Browsing checks)' 'Werkt volledig offline na de eerste installatie (behalve Safe Browsing-controles)'
], ],
screenshot: 'Enterprise App Protection Screenshot', screenshot: 'Enterprise App Bescherming Screenshot',
}, },
howItWorks: { howItWorks: {
title: 'How It Works', title: 'Hoe Het Werkt',
steps: [ steps: [
'Scans all links and detects if any enterprise applications are mentioned', 'Scant alle links en detecteert verwijzingen naar zakelijke applicaties',
'Verifies if the associated links actually go to official domains', 'Verifieert of links daadwerkelijk naar officiële domeinen leiden',
'Checks Google Safe Browsing to detect malware and phishing links not in its internal database', 'Controleert Google Safe Browsing op malware en phishinglinks die niet in de interne database staan',
'Detects links inside dynamically loaded content', 'Detecteert links in dynamisch geladen inhoud',
'Shows a clear warning if a potential impersonation attempt is detected' 'Toont een duidelijke waarschuwing bij mogelijke imitatiepogingen'
] ]
}, },
privacy: { privacy: {
title: 'Privacy & Security', title: 'Privacy & Beveiliging',
items: [ items: [
'Zero Data Collection: This extension does not collect, store, or transmit any personal data, browsing history, or email content.', 'Geen Gegevensverzameling: Deze extensie verzamelt, slaat of verzendt geen persoonlijke gegevens, browsegeschiedenis of e-mailinhoud.',
'Completely Offline: After initial installation, all domain checks are performed locally on your device.', 'Volledig Offline: Na installatie worden alle domeincontroles lokaal uitgevoerd.',
'No Cloud Processing: All link analysis happens directly in your browser.', 'Geen Cloudverwerking: Analyse van links gebeurt volledig in je browser.',
"Uses Google Safe Browsing API: Checks URLs against Google's real-time phishing and malware database.", 'Gebruikt Google Safe Browsing API: Controleert URLs tegen de realtime database van Google.',
'Open Source: All code is available for review.' 'Open Source: Alle code is openbaar en te bekijken.'
] ]
}, },
notDo: { notDo: {
title: 'What This Extension Doesn\'t Do', title: 'Wat Deze Extensie Niet Doet',
items: [ items: [
'Does NOT access, read, or store your email content or attachments.', 'Leest, opent of slaat je e-mails of bijlagen NIET op.',
'Does NOT track your browsing history.', 'Volgt je browsegeschiedenis NIET.',
'Does NOT require an account or registration.', 'Vereist GEEN account of registratie.',
'Does NOT send any data back to our servers.', 'Stuurt GEEN gegevens naar onze servers.',
'Does NOT modify or alter any content—it only shows warnings.', 'Wijzigt GEEN inhoud toont alleen waarschuwingen.',
'Does NOT prevent you from visiting any websites.' 'Blokkeert GEEN toegang tot websites.'
] ]
}, },
trustedBlocked: { trustedBlocked: {
title: 'Trusted & Blocked Domains', title: 'Vertrouwde & Geblokkeerde Domeinen',
steps: [ steps: [
'Open the extension options page.', 'Open de instellingenpagina van de extensie.',
'Add or remove domains under "Trusted Domains" or "Blocked Domains".', 'Voeg domeinen toe of verwijder ze onder "Vertrouwde" of "Geblokkeerde Domeinen".',
'Click "Update Database" to apply changes.' 'Klik op "Update Database" om wijzigingen toe te passen.'
] ]
}, },
safeBrowsing: { safeBrowsing: {
title: 'Google Safe Browsing API', title: 'Google Safe Browsing API',
content: 'This extension integrates with Google Safe Browsing to detect additional phishing and malware sites. If Google does not recognize a site as unsafe, it will not be flagged unless it is in the blocked domains list.', content: 'Deze extensie integreert met Google Safe Browsing om extra phishing- en malwarewebsites te detecteren. Als Google een site niet als onveilig beschouwt, wordt deze alleen gemarkeerd als hij in de geblokkeerde lijst staat.',
report: 'Report new phishing domains to Google', report: 'Meld nieuwe phishingdomeinen bij Google',
reportLink: 'https://safebrowsing.google.com/safebrowsing/report_phish/' reportLink: 'https://safebrowsing.google.com/safebrowsing/report_phish/'
}, },
audience: { audience: {
title: 'Perfect For', title: 'Ideaal Voor',
items: [ items: [
'Business professionals who regularly use enterprise applications', 'Professionals die regelmatig zakelijke apps gebruiken',
'IT security teams looking to protect their organizations', 'IT-beveiligingsteams die hun organisatie willen beschermen',
'Anyone concerned about phishing attacks targeting business services', 'Iedereen die bezorgd is over phishingaanvallen gericht op zakelijke diensten',
'Organizations using multiple cloud-based enterprise applications', 'Organisaties die meerdere cloudgebaseerde apps gebruiken',
'Microsoft 365 users (Outlook, Teams, SharePoint) who want extra security' 'Microsoft 365-gebruikers die extra beveiliging willen'
] ]
}, },
requirements: { requirements: {
title: 'System Requirements', title: 'Systeemvereisten',
items: [ items: [
'Google Chrome 88+ / Microsoft Edge 88+', 'Google Chrome 88+ / Microsoft Edge 88+',
'Works with Microsoft Outlook Web, Teams, and SharePoint', 'Werkt met Outlook Web, Teams en SharePoint',
'Internet connection required for Safe Browsing checks (optional)' 'Internetverbinding vereist voor Safe Browsing (optioneel)'
] ]
}, },
troubleshooting: { troubleshooting: {
title: 'Troubleshooting', title: 'Probleemoplossing',
notFlagged: 'Why is a suspicious site not flagged?', notFlagged: 'Waarom wordt een verdachte site niet gemarkeerd?',
notFlaggedReasons: [ notFlaggedReasons: [
'It might not be in the domains.json database.', 'De site staat mogelijk niet in de domains.json-database.',
'Google Safe Browsing does not recognize it as a phishing site.', 'Google beschouwt het niet als phishing.',
'The domain may be a legitimate subdomain of an official service.' 'Het kan een legitiem subdomein zijn van een officiële dienst.'
], ],
falsePositive: 'Why is a link incorrectly flagged?', falsePositive: 'Waarom wordt een legitieme link onterecht gemarkeerd?',
falsePositiveReasons: [ falsePositiveReasons: [
'If the link contains a word matching an app name but is not actually phishing.', 'De link bevat mogelijk een app-naam maar is niet kwaadaardig.',
'You can add the domain to "Trusted Domains" in the options page.' 'Je kunt het domein toevoegen aan "Vertrouwde Domeinen" in de instellingen.'
] ]
}, },
updates: { updates: {
title: 'Latest Updates', title: 'Laatste Updates',
features: [ features: [
'Dynamic Link Scanning: Detects phishing links inside emails, Teams, and SharePoint without reloading the page.', 'Dynamische Linkcontrole: Detecteert phishinglinks in e-mails en apps zonder de pagina te herladen.',
'Google Safe Browsing Support: Detects additional phishing sites beyond known fake domains.', 'Google Safe Browsing-integratie: Extra detectie van phishingwebsites.',
'Improved Matching: Ensures only full app names trigger warnings.', 'Verbeterde Herkenning: Alleen volledige app-namen activeren waarschuwingen.',
'Optimized Performance: No duplicate warnings, reduced false positives.', 'Geoptimaliseerde Prestaties: Minder foutmeldingen en dubbele waarschuwingen.',
'No More Debugging Logs: Production-ready version with clean console logs.' 'Geen Debuglogs meer: Productieversie met schone console.'
] ]
}, },
screenshots: { screenshots: {
settings: 'Settings Page', settings: 'Instellingenpagina',
popup: 'Extension Popup', popup: 'Extensie Popup',
settingsImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/SettingPage.png', settingsImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/SettingPage.png',
popupImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/ExtensionPopup.png', popupImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/ExtensionPopup.png',
mainImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/EnterpriseAppProtection.png' mainImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/EnterpriseAppProtection.png'
} }
}, },
de: { de: {
menu: 'Enterprise App Protection', menu: 'Enterprise App Schutz',
title: 'Enterprise App Protection (EAP) Advanced Phishing Defense', title: 'Enterprise App Schutz (EAP) Erweiterter Phishing-Schutz',
intro: 'Protect yourself and your organization from phishing attacks that impersonate common enterprise applications like DocuSign, Salesforce, Microsoft 365, and hundreds more.', intro: 'Schützen Sie sich und Ihr Unternehmen vor Phishing-Angriffen, die sich als bekannte Unternehmensanwendungen wie DocuSign, Salesforce, Microsoft 365 und viele weitere ausgeben.',
whatItDoes: { whatItDoes: {
title: 'What This Extension Does', title: 'Was Diese Erweiterung Macht',
items: [ items: [
'Automatically scans links in your browser and emails in real time', 'Scannt automatisch Links in Ihrem Browser und E-Mails in Echtzeit',
'Alerts you when a link claims to be from a trusted enterprise app but leads to an unofficial domain', 'Warnt Sie, wenn ein Link vorgibt, von einer vertrauenswürdigen App zu stammen, aber zu einer inoffiziellen Domain führt',
'Uses Google Safe Browsing API to detect phishing and malware threats beyond known fake domains', 'Verwendet die Google Safe Browsing API, um Phishing- und Malware-Bedrohungen zu erkennen, die über bekannte Fake-Domains hinausgehen',
'Maintains an up-to-date database of legitimate enterprise application domains', 'Pflegt eine aktuelle Datenbank mit legitimen Unternehmensdomains',
'Detects dynamically added links (e.g., in Outlook Web, Teams, SharePoint)', 'Erkennt dynamisch eingefügte Links (z.B. in Outlook Web, Teams, SharePoint)',
'Works with 150+ enterprise applications', 'Funktioniert mit über 150 Unternehmensanwendungen',
'Functions completely offline after initial setup (except for Safe Browsing checks)' 'Funktioniert komplett offline nach der Erstinstallation (außer Safe-Browsing-Prüfungen)'
], ],
screenshot: 'Enterprise App Protection Screenshot', screenshot: 'Enterprise App Schutz Screenshot',
}, },
howItWorks: { howItWorks: {
title: 'How It Works', title: 'Wie Es Funktioniert',
steps: [ steps: [
'Scans all links and detects if any enterprise applications are mentioned', 'Scannt alle Links und erkennt, ob Unternehmensanwendungen erwähnt werden',
'Verifies if the associated links actually go to official domains', 'Überprüft, ob die zugehörigen Links tatsächlich zu offiziellen Domains führen',
'Checks Google Safe Browsing to detect malware and phishing links not in its internal database', 'Überprüft Google Safe Browsing auf Malware- und Phishing-Links, die nicht in der internen Datenbank enthalten sind',
'Detects links inside dynamically loaded content', 'Erkennt Links in dynamisch geladenen Inhalten',
'Shows a clear warning if a potential impersonation attempt is detected' 'Zeigt eine deutliche Warnung bei einem möglichen Imitationsversuch'
] ]
}, },
privacy: { privacy: {
title: 'Privacy & Security', title: 'Datenschutz & Sicherheit',
items: [ items: [
'Zero Data Collection: This extension does not collect, store, or transmit any personal data, browsing history, or email content.', 'Keine Datenerfassung: Diese Erweiterung sammelt, speichert oder überträgt keine persönlichen Daten, Browserverläufe oder E-Mail-Inhalte.',
'Completely Offline: After initial installation, all domain checks are performed locally on your device.', 'Komplett Offline: Nach der Installation werden alle Prüfungen lokal auf Ihrem Gerät durchgeführt.',
'No Cloud Processing: All link analysis happens directly in your browser.', 'Keine Cloud-Verarbeitung: Alle Link-Analysen finden direkt in Ihrem Browser statt.',
"Uses Google Safe Browsing API: Checks URLs against Google's real-time phishing and malware database.", 'Verwendet die Google Safe Browsing API: URLs werden mit Googles aktueller Phishing- und Malware-Datenbank abgeglichen.',
'Open Source: All code is available for review.' 'Open Source: Der gesamte Code ist öffentlich einsehbar.'
] ]
}, },
notDo: { notDo: {
title: 'What This Extension Doesn\'t Do', title: 'Was Diese Erweiterung Nicht Macht',
items: [ items: [
'Does NOT access, read, or store your email content or attachments.', 'Greift NICHT auf Ihre E-Mails oder Anhänge zu und speichert diese nicht.',
'Does NOT track your browsing history.', 'Verfolgt NICHT Ihren Browserverlauf.',
'Does NOT require an account or registration.', 'Erfordert KEIN Benutzerkonto oder Registrierung.',
'Does NOT send any data back to our servers.', 'Sendet KEINE Daten an unsere Server.',
'Does NOT modify or alter any content—it only shows warnings.', 'Ändert KEINE Inhalte zeigt nur Warnungen an.',
'Does NOT prevent you from visiting any websites.' 'Verhindert NICHT den Besuch von Webseiten.'
] ]
}, },
trustedBlocked: { trustedBlocked: {
title: 'Trusted & Blocked Domains', title: 'Vertrauenswürdige & Blockierte Domains',
steps: [ steps: [
'Open the extension options page.', 'Öffnen Sie die Einstellungsseite der Erweiterung.',
'Add or remove domains under "Trusted Domains" or "Blocked Domains".', 'Fügen Sie Domains unter „Vertrauenswürdige Domains oder Blockierte Domains“ hinzu oder entfernen Sie diese.',
'Click "Update Database" to apply changes.' 'Klicken Sie auf „Datenbank aktualisieren“, um die Änderungen zu übernehmen.'
] ]
}, },
safeBrowsing: { safeBrowsing: {
title: 'Google Safe Browsing API', title: 'Google Safe Browsing API',
content: 'This extension integrates with Google Safe Browsing to detect additional phishing and malware sites. If Google does not recognize a site as unsafe, it will not be flagged unless it is in the blocked domains list.', content: 'Diese Erweiterung integriert die Google Safe Browsing API, um zusätzliche Phishing- und Malware-Websites zu erkennen. Wird eine Website von Google nicht als unsicher erkannt, wird sie nur blockiert, wenn sie in der blockierten Liste enthalten ist.',
report: 'Report new phishing domains to Google', report: 'Neue Phishing-Domains an Google melden',
reportLink: 'https://safebrowsing.google.com/safebrowsing/report_phish/' reportLink: 'https://safebrowsing.google.com/safebrowsing/report_phish/'
}, },
audience: { audience: {
title: 'Perfect For', title: 'Ideal Für',
items: [ items: [
'Business professionals who regularly use enterprise applications', 'Fachleute, die regelmäßig Unternehmensanwendungen nutzen',
'IT security teams looking to protect their organizations', 'IT-Sicherheitsteams, die ihr Unternehmen schützen möchten',
'Anyone concerned about phishing attacks targeting business services', 'Jede Person mit Bedenken wegen Phishing-Angriffen auf Geschäftsanwendungen',
'Organizations using multiple cloud-based enterprise applications', 'Organisationen mit mehreren Cloud-basierten Diensten',
'Microsoft 365 users (Outlook, Teams, SharePoint) who want extra security' 'Microsoft 365-Nutzer, die zusätzlichen Schutz wünschen'
] ]
}, },
requirements: { requirements: {
title: 'System Requirements', title: 'Systemanforderungen',
items: [ items: [
'Google Chrome 88+ / Microsoft Edge 88+', 'Google Chrome 88+ / Microsoft Edge 88+',
'Works with Microsoft Outlook Web, Teams, and SharePoint', 'Kompatibel mit Outlook Web, Teams und SharePoint',
'Internet connection required for Safe Browsing checks (optional)' 'Internetverbindung erforderlich für Safe Browsing (optional)'
] ]
}, },
troubleshooting: { troubleshooting: {
title: 'Troubleshooting', title: 'Fehlerbehebung',
notFlagged: 'Why is a suspicious site not flagged?', notFlagged: 'Warum wurde eine verdächtige Seite nicht erkannt?',
notFlaggedReasons: [ notFlaggedReasons: [
'It might not be in the domains.json database.', 'Sie ist möglicherweise nicht in der Datei domains.json enthalten.',
'Google Safe Browsing does not recognize it as a phishing site.', 'Google Safe Browsing erkennt sie nicht als Phishing-Seite.',
'The domain may be a legitimate subdomain of an official service.' 'Die Domain kann ein legitimes Subdomain eines offiziellen Dienstes sein.'
], ],
falsePositive: 'Why is a link incorrectly flagged?', falsePositive: 'Warum wurde ein Link fälschlicherweise erkannt?',
falsePositiveReasons: [ falsePositiveReasons: [
'If the link contains a word matching an app name but is not actually phishing.', 'Der Link enthält möglicherweise einen App-Namen, ist aber nicht bösartig.',
'You can add the domain to "Trusted Domains" in the options page.' 'Sie können die Domain in den "Vertrauenswürdigen Domains" hinzufügen.'
] ]
}, },
updates: { updates: {
title: 'Latest Updates', title: 'Neueste Updates',
features: [ features: [
'Dynamic Link Scanning: Detects phishing links inside emails, Teams, and SharePoint without reloading the page.', 'Dynamische Link-Erkennung: Erkennt Phishing-Links in E-Mails, Teams und SharePoint ohne Seitenneuladen.',
'Google Safe Browsing Support: Detects additional phishing sites beyond known fake domains.', 'Google Safe Browsing-Unterstützung: Erkennt zusätzliche Phishing-Seiten.',
'Improved Matching: Ensures only full app names trigger warnings.', 'Verbessertes Matching: Nur vollständige App-Namen lösen Warnungen aus.',
'Optimized Performance: No duplicate warnings, reduced false positives.', 'Optimierte Leistung: Weniger Fehlalarme und doppelte Warnungen.',
'No More Debugging Logs: Production-ready version with clean console logs.' 'Keine Debug-Protokolle mehr: Produktionsversion mit sauberer Konsole.'
] ]
}, },
screenshots: { screenshots: {
settings: 'Settings Page', settings: 'Einstellungsseite',
popup: 'Extension Popup', popup: 'Erweiterungs-Popup',
settingsImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/SettingPage.png', settingsImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/SettingPage.png',
popupImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/ExtensionPopup.png', popupImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/ExtensionPopup.png',
mainImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/EnterpriseAppProtection.png' mainImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/EnterpriseAppProtection.png'
} }
}, },
fr: { fr: {
menu: 'Enterprise App Protection', menu: 'Protection des Applications dEntreprise',
title: 'Enterprise App Protection (EAP) Advanced Phishing Defense', title: 'Protection des Applications dEntreprise (EAP) Défense Antiphishing Avancée',
intro: 'Protect yourself and your organization from phishing attacks that impersonate common enterprise applications like DocuSign, Salesforce, Microsoft 365, and hundreds more.', intro: 'Protégez-vous et votre organisation contre les attaques de phishing se faisant passer pour des applications professionnelles connues comme DocuSign, Salesforce, Microsoft 365, et bien dautres.',
whatItDoes: { whatItDoes: {
title: 'What This Extension Does', title: 'Ce Que Fait Cette Extension',
items: [ items: [
'Automatically scans links in your browser and emails in real time', 'Analyse automatiquement les liens dans votre navigateur et vos e-mails en temps réel',
'Alerts you when a link claims to be from a trusted enterprise app but leads to an unofficial domain', 'Vous alerte si un lien se prétend fiable mais redirige vers un domaine non officiel',
'Uses Google Safe Browsing API to detect phishing and malware threats beyond known fake domains', 'Utilise lAPI Google Safe Browsing pour détecter les menaces au-delà des domaines frauduleux connus',
'Maintains an up-to-date database of legitimate enterprise application domains', 'Maintient une base de données à jour des domaines dapplications professionnelles légitimes',
'Detects dynamically added links (e.g., in Outlook Web, Teams, SharePoint)', 'Détecte les liens ajoutés dynamiquement (ex. dans Outlook Web, Teams, SharePoint)',
'Works with 150+ enterprise applications', 'Compatible avec plus de 150 applications dentreprise',
'Functions completely offline after initial setup (except for Safe Browsing checks)' 'Fonctionne totalement hors ligne après installation (sauf vérification Safe Browsing)'
], ],
screenshot: 'Enterprise App Protection Screenshot', screenshot: 'Capture décran Protection des Applications dEntreprise',
}, },
howItWorks: { howItWorks: {
title: 'How It Works', title: 'Comment Ça Fonctionne',
steps: [ steps: [
'Scans all links and detects if any enterprise applications are mentioned', 'Analyse tous les liens et détecte les références aux applications dentreprise',
'Verifies if the associated links actually go to official domains', 'Vérifie si les liens pointent vers des domaines officiels',
'Checks Google Safe Browsing to detect malware and phishing links not in its internal database', 'Interroge Google Safe Browsing pour détecter les liens malveillants non listés en interne',
'Detects links inside dynamically loaded content', 'Analyse aussi les contenus chargés dynamiquement',
'Shows a clear warning if a potential impersonation attempt is detected' 'Affiche un avertissement clair en cas de tentative dusurpation détectée'
] ]
}, },
privacy: { privacy: {
title: 'Privacy & Security', title: 'Confidentialité & Sécurité',
items: [ items: [
'Zero Data Collection: This extension does not collect, store, or transmit any personal data, browsing history, or email content.', 'Aucune Collecte de Données : Cette extension ne collecte, stocke ni ne transmet aucune donnée personnelle, historique de navigation ou contenu de-mail.',
'Completely Offline: After initial installation, all domain checks are performed locally on your device.', 'Totalement Hors Ligne : Les vérifications de domaine sont effectuées localement après linstallation.',
'No Cloud Processing: All link analysis happens directly in your browser.', 'Aucun Traitement Cloud : Toutes les analyses se font directement dans votre navigateur.',
"Uses Google Safe Browsing API: Checks URLs against Google's real-time phishing and malware database.", 'Utilise lAPI Google Safe Browsing : Vérifie les URL en temps réel avec la base de données de Google.',
'Open Source: All code is available for review.' 'Code Ouvert : Lensemble du code est public et consultable.'
] ]
}, },
notDo: { notDo: {
title: 'What This Extension Doesn\'t Do', title: 'Ce Que Cette Extension Ne Fait Pas',
items: [ items: [
'Does NOT access, read, or store your email content or attachments.', 'NACCÈDE PAS, ne lit pas et ne stocke pas vos e-mails ou pièces jointes.',
'Does NOT track your browsing history.', 'Ne suit PAS votre historique de navigation.',
'Does NOT require an account or registration.', 'Ne nécessite PAS de compte ou dinscription.',
'Does NOT send any data back to our servers.', 'Nenvoie PAS de données à nos serveurs.',
'Does NOT modify or alter any content—it only shows warnings.', 'Ne modifie PAS les contenus affiche uniquement des alertes.',
'Does NOT prevent you from visiting any websites.' 'Ne bloque PAS laccès aux sites web.'
] ]
}, },
trustedBlocked: { trustedBlocked: {
title: 'Trusted & Blocked Domains', title: 'Domaines de Confiance et Bloqués',
steps: [ steps: [
'Open the extension options page.', 'Ouvrez la page des options de lextension.',
'Add or remove domains under "Trusted Domains" or "Blocked Domains".', 'Ajoutez ou supprimez des domaines sous « Domaines de confiance » ou « Domaines bloqués ».',
'Click "Update Database" to apply changes.' 'Cliquez sur « Mettre à jour la base de données » pour appliquer les modifications.'
] ]
}, },
safeBrowsing: { safeBrowsing: {
title: 'Google Safe Browsing API', title: 'API Google Safe Browsing',
content: 'This extension integrates with Google Safe Browsing to detect additional phishing and malware sites. If Google does not recognize a site as unsafe, it will not be flagged unless it is in the blocked domains list.', content: 'Cette extension intègre Google Safe Browsing pour détecter des sites supplémentaires de phishing et de logiciels malveillants. Si Google ne signale pas un site comme dangereux, il ne sera marqué que sil figure dans la liste des domaines bloqués.',
report: 'Report new phishing domains to Google', report: 'Signaler un domaine de phishing à Google',
reportLink: 'https://safebrowsing.google.com/safebrowsing/report_phish/' reportLink: 'https://safebrowsing.google.com/safebrowsing/report_phish/'
}, },
audience: { audience: {
title: 'Perfect For', title: 'Idéal Pour',
items: [ items: [
'Business professionals who regularly use enterprise applications', 'Professionnels utilisant des applications dentreprise',
'IT security teams looking to protect their organizations', 'Équipes de sécurité informatique souhaitant protéger leur structure',
'Anyone concerned about phishing attacks targeting business services', 'Personnes préoccupées par les attaques de phishing ciblant les services pro',
'Organizations using multiple cloud-based enterprise applications', 'Organisations utilisant plusieurs applications cloud',
'Microsoft 365 users (Outlook, Teams, SharePoint) who want extra security' 'Utilisateurs Microsoft 365 à la recherche de sécurité renforcée'
] ]
}, },
requirements: { requirements: {
title: 'System Requirements', title: 'Configuration Requise',
items: [ items: [
'Google Chrome 88+ / Microsoft Edge 88+', 'Google Chrome 88+ / Microsoft Edge 88+',
'Works with Microsoft Outlook Web, Teams, and SharePoint', 'Compatible avec Outlook Web, Teams et SharePoint',
'Internet connection required for Safe Browsing checks (optional)' 'Connexion Internet requise pour Safe Browsing (facultatif)'
] ]
}, },
troubleshooting: { troubleshooting: {
title: 'Troubleshooting', title: 'Dépannage',
notFlagged: 'Why is a suspicious site not flagged?', notFlagged: 'Pourquoi un site suspect nest-il pas signalé ?',
notFlaggedReasons: [ notFlaggedReasons: [
'It might not be in the domains.json database.', 'Le domaine nest peut-être pas répertorié dans domains.json.',
'Google Safe Browsing does not recognize it as a phishing site.', 'Google ne le considère pas comme un site de phishing.',
'The domain may be a legitimate subdomain of an official service.' 'Il peut sagir dun sous-domaine légitime.'
], ],
falsePositive: 'Why is a link incorrectly flagged?', falsePositive: 'Pourquoi un lien est-il signalé à tort ?',
falsePositiveReasons: [ falsePositiveReasons: [
'If the link contains a word matching an app name but is not actually phishing.', 'Le lien contient peut-être le nom dune app sans être un lien malveillant.',
'You can add the domain to "Trusted Domains" in the options page.' 'Ajoutez le domaine dans « Domaines de confiance » depuis les options.'
] ]
}, },
updates: { updates: {
title: 'Latest Updates', title: 'Dernières Mises à Jour',
features: [ features: [
'Dynamic Link Scanning: Detects phishing links inside emails, Teams, and SharePoint without reloading the page.', 'Analyse Dynamique des Liens : Détecte les liens dans les e-mails et apps sans recharger la page.',
'Google Safe Browsing Support: Detects additional phishing sites beyond known fake domains.', 'Support Google Safe Browsing : Détection élargie des sites de phishing.',
'Improved Matching: Ensures only full app names trigger warnings.', 'Correspondance Améliorée : Seuls les noms complets dapps déclenchent des alertes.',
'Optimized Performance: No duplicate warnings, reduced false positives.', 'Performance Optimisée : Moins de faux positifs, pas dalertes dupliquées.',
'No More Debugging Logs: Production-ready version with clean console logs.' 'Version de Production : Plus de logs de débogage, console propre.'
] ]
}, },
screenshots: { screenshots: {
settings: 'Settings Page', settings: 'Page des Paramètres',
popup: 'Extension Popup', popup: 'Popup de lExtension',
settingsImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/SettingPage.png', settingsImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/SettingPage.png',
popupImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/ExtensionPopup.png', popupImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/ExtensionPopup.png',
mainImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/EnterpriseAppProtection.png' mainImg: 'https://raw.githubusercontent.com/rrpbergsma/EnterpriseAppProtection/refs/heads/main/EnterpriseAppProtection.png'

View File

@@ -1,22 +1,166 @@
--- ---
export const prerender = false; export const prerender = true;
import { detectPreferredLanguage } from '~/utils/language'; import Layout from '~/layouts/PageLayout.astro';
import Hero from '~/components/widgets/Hero2.astro';
import Features from '~/components/widgets/Features.astro';
import Content from '~/components/widgets/Content.astro';
import CallToAction from '~/components/widgets/CallToAction.astro';
import Contact from '~/components/widgets/Contact.astro';
import { getTranslation } from '~/i18n/translations';
import OurCommitmentImage from '~/assets/images/OurCommitment.webp';
// Get the hash fragment if present const t = getTranslation('en');
const url = new URL(Astro.request.url);
const hash = url.hash;
// Check for language preference in cookies (set by client-side JS) const metadata = {
const cookies = Astro.request.headers.get('cookie') || ''; title: t.metadata.title,
const cookieLanguage = cookies };
.split(';')
.map((cookie) => cookie.trim())
.find((cookie) => cookie.startsWith('preferredLanguage='))
?.split('=')[1];
// Only use detected language if there's an explicit cookie preference
const preferredLanguage = cookieLanguage || 'en';
// Redirect to the language-specific homepage
return Astro.redirect(`/${preferredLanguage}/${hash}`);
--- ---
<Layout metadata={metadata}>
<!-- Hero Widget -->
<Hero
title={t.hero.title}
subtitle={t.hero.subtitle}
isDark={false}
actions={[
{
variant: 'primary',
text: t.homepage?.actions?.learnMore || 'Learn More',
href: '#services',
icon: 'tabler:arrow-down',
},
{ text: t.homepage?.actions?.contactMe || 'Contact Me', href: '#contact' },
]}
image={{
src: '~/assets/images/HomepageIntroImage.webp',
alt: 'person sitting behind a computer with pen and paper next to him, A coffee mug and tablet on the desk',
}}
/>
<!-- Features Widget -->
<Features
id="services"
tagline={t.homepage?.services?.tagline || 'Services'}
title={t.homepage?.services?.title || 'How I Can Help Your Organization'}
subtitle={t.homepage?.services?.subtitle ||
'I offer a range of specialized IT services to help businesses optimize their operations and digital infrastructure.'}
items={(
t.homepage?.services?.items || [
{
title: 'Workflow Automation',
description:
'Streamline your business processes with Power Automate solutions that reduce manual effort and increase operational efficiency.',
icon: 'tabler:settings-automation',
},
{
title: 'Intelligent Chatbots',
description:
'Develop smart chatbots in Copilot Studio that enhance user interactions through natural language processing and automated responses.',
icon: 'tabler:message-chatbot',
},
{
title: 'API Integrations',
description:
'Create seamless connections between your applications and services with custom API integrations for efficient data exchange.',
icon: 'tabler:api',
},
{
title: 'Microsoft 365 Management',
description:
'Optimize your Microsoft 365 environment with expert administration, security configurations, and service optimization.',
icon: 'tabler:brand-office',
},
{
title: 'SharePoint Solutions',
description:
'Set up, manage, and optimize SharePoint Online and on-premise deployments for effective document management and collaboration.',
icon: 'tabler:share',
},
{
title: 'IT Infrastructure Oversight',
description:
'Manage global IT infrastructures, including servers, networks, and end-user devices to ensure reliable operations.',
icon: 'tabler:server',
},
]
).map((item) => ({ ...item, icon: item.icon || 'tabler:check' }))}
/>
<!-- Content Widget -->
<Content
isReversed
tagline={t.homepage?.approach?.tagline || 'About My Approach'}
title={t.homepage?.approach?.title || 'Our Commitment'}
items={[]}
image={{
src: OurCommitmentImage,
alt: 'IT Excellence and Innovation',
}}
>
<Fragment slot="content">
<div class="text-lg dark:text-slate-400">
{
(
t.homepage?.approach?.missionContent || [
'We are committed to driving IT excellence through strategic cloud optimization, process automation, and enterprise-grade technical support. We leverage cutting-edge technology to address complex business challenges and deliver measurable value.',
'With deep expertise in Microsoft technologies and automation, we empower organizations to transform their digital capabilities and achieve their business objectives. We design solutions that enhance user experience and maximize productivity, ensuring technology empowers your business.',
'We stay ahead of the curve by researching and implementing emerging technologies, providing scalable solutions that adapt to your evolving needs. Our approach aligns technical solutions with your core business objectives, delivering measurable ROI and a competitive advantage.',
'Our mission is to leverage technology to solve real business challenges and create value through innovation. With over 15 years of IT experience, we bring a wealth of knowledge in Microsoft technologies, automation tools, and system integration to help organizations transform their digital capabilities and achieve their strategic goals.',
]
).map((paragraph, index, array) => <p class={index === array.length - 1 ? '' : 'mb-4'}>{paragraph}</p>)
}
</div>
</Fragment>
</Content>
<!-- CallToAction Widget -->
<CallToAction
callToAction={{
text: t.homepage?.callToAction?.button || 'Contact Me',
href: '#contact',
icon: 'tabler:mail',
}}
>
<Fragment slot="title">{t.homepage?.callToAction?.title || 'Ready to optimize your IT systems?'}</Fragment>
<Fragment slot="subtitle">
{
t.homepage?.callToAction?.subtitle ||
"Let's discuss how I can help your organization streamline processes, enhance collaboration, and drive digital transformation."
}
</Fragment>
</CallToAction>
<!-- Contact Widget -->
<Contact
id="contact"
title={t.homepage?.contact?.title || 'Get in Touch'}
subtitle={t.homepage?.contact?.subtitle ||
"Have a project in mind or questions about my services? Reach out and let's start a conversation."}
inputs={[
{
type: 'text',
name: 'name',
label: t.homepage?.contact?.nameLabel || 'Name',
placeholder: t.homepage?.contact?.namePlaceholder || 'Your name',
},
{
type: 'email',
name: 'email',
label: t.homepage?.contact?.emailLabel || 'Email',
placeholder: t.homepage?.contact?.emailPlaceholder || 'Your email address',
},
]}
textarea={{
label: t.homepage?.contact?.messageLabel || 'Message',
placeholder: t.homepage?.contact?.messagePlaceholder || 'Your message',
rows: 8,
}}
disclaimer={{
label:
t.homepage?.contact?.disclaimer ||
'By submitting this form, you agree to our privacy policy and allow us to use your information to contact you about our services.',
}}
description={t.homepage?.contact?.description ||
"I'll respond to your message as soon as possible. You can also connect with me on LinkedIn or GitHub."}
/>
</Layout>