diff --git a/src/components/shared/Breadcrumb.tsx b/src/components/shared/Breadcrumb.tsx
new file mode 100644
index 000000000..1d8a26d2b
--- /dev/null
+++ b/src/components/shared/Breadcrumb.tsx
@@ -0,0 +1,34 @@
+import Link from 'next/link';
+
+export interface BreadcrumbItem {
+ name: string;
+ url: string;
+}
+
+interface BreadcrumbProps {
+ items: BreadcrumbItem[];
+ className?: string;
+}
+
+export const Breadcrumb = ({ items, className = '' }: BreadcrumbProps) => {
+ return (
+
+
+ {items.map((item, index) => (
+
+ {index > 0 && / }
+ {index === items.length - 1 ? (
+
+ {item.name}
+
+ ) : (
+
+ {item.name}
+
+ )}
+
+ ))}
+
+
+ );
+};
\ No newline at end of file
diff --git a/src/components/templates/comparisonPageTemplate.tsx b/src/components/templates/comparisonPageTemplate.tsx
index 2057d33f1..803cea193 100644
--- a/src/components/templates/comparisonPageTemplate.tsx
+++ b/src/components/templates/comparisonPageTemplate.tsx
@@ -1,5 +1,8 @@
import Layout from '@/components/layout/Layout';
import Navbar from '@/components/layout/navbars/Navbar';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
import { PricingSectionWrapper } from '@/components/shared/pricing/PricingSectionWrapper';
import { CloudObjectStoragePriceCardSection } from '@/components/cloud-object-storage/PriceCardSection';
import { PromoCodeName } from '@/lib/types';
@@ -70,6 +73,8 @@ interface ComparisonPageProps {
};
couponCodeName?: PromoCodeName;
isS3Alternative?: boolean;
+ breadcrumbName?: string;
+ urlSlug?: string;
}
export const ComparisonPage = ({
@@ -85,6 +90,8 @@ export const ComparisonPage = ({
customSections = {},
couponCodeName,
isS3Alternative = false,
+ breadcrumbName,
+ urlSlug,
}: ComparisonPageProps): JSX.Element => {
const metatags = metatagsDescriptions.filter((desc) => desc.id === metaTagId);
const {
@@ -138,8 +145,25 @@ export const ComparisonPage = ({
} = customSections;
return (
-
-
+ <>
+ {breadcrumbName && urlSlug && (
+
+ )}
+
+
+
+ {breadcrumbName && urlSlug && (
+
+
+
+ )}
@@ -205,5 +229,6 @@ export const ComparisonPage = ({
+ >
);
};
diff --git a/src/components/utils/schema-markup-generator.ts b/src/components/utils/schema-markup-generator.ts
index 8cb111425..53cd0b08d 100644
--- a/src/components/utils/schema-markup-generator.ts
+++ b/src/components/utils/schema-markup-generator.ts
@@ -36,7 +36,7 @@ export const sm_faq = (faq) => {
// Single Breadcrumb Data Structure generator
// Additional information: https://developers.google.com/search/docs/appearance/structured-data/breadcrumb
-export const sm_breadcrumb = (name, url) => {
+export const sm_breadcrumb = (name: string, url: string) => {
return `{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
@@ -44,7 +44,7 @@ export const sm_breadcrumb = (name, url) => {
{
"@type": "ListItem",
"position": 1,
- "name": "Home",
+ "name": "Encrypted Cloud Storage",
"item": "https://internxt.com/"
},{
"@type": "ListItem",
@@ -53,4 +53,22 @@ export const sm_breadcrumb = (name, url) => {
"item": "https://internxt.com/${url}"
}
]}`;
+};
+
+export const sm_breadcrumb_list = (items: { name: string; url: string }[]) => {
+ return `{
+ "@context": "https://schema.org",
+ "@type": "BreadcrumbList",
+ "itemListElement": [${items
+ .map(
+ (item, index) => `
+ {
+ "@type": "ListItem",
+ "position": ${index + 1},
+ "name": "${item.name}",
+ "item": "https://internxt.com${item.url}"
+ }`
+ )
+ .join(',')}
+ ]}`;
};
\ No newline at end of file
diff --git a/src/pages/ai-detector.tsx b/src/pages/ai-detector.tsx
index 6e5c9fc74..5f967303f 100644
--- a/src/pages/ai-detector.tsx
+++ b/src/pages/ai-detector.tsx
@@ -26,6 +26,8 @@ import { getImage } from '@/lib/getImage';
import { ShieldStar } from '@phosphor-icons/react';
import FeaturesSliderImg from '@/components/ai-detector/FeatureSliderImg';
import FeaturesSlider from '@/components/shared/FeaturesSlider';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
const AIDetector = ({
metatagsDescriptions,
@@ -104,6 +106,14 @@ const AIDetector = ({
+
+
+
diff --git a/src/pages/alternative-to-chatGPT.tsx b/src/pages/alternative-to-chatGPT.tsx
index e5945351c..2a1941f72 100644
--- a/src/pages/alternative-to-chatGPT.tsx
+++ b/src/pages/alternative-to-chatGPT.tsx
@@ -5,6 +5,8 @@ import { GetServerSidePropsContext } from 'next';
const chatgptComparison = (props) => (
(
(
(
(
(
(
(
(
)}
+
+
+
diff --git a/src/pages/business.tsx b/src/pages/business.tsx
index bfdaacd1e..168ac7cf5 100644
--- a/src/pages/business.tsx
+++ b/src/pages/business.tsx
@@ -19,6 +19,9 @@ import HorizontalScrollableSection from '@/components/shared/HorizontalScrollabl
import BusinessCtaSection from '@/components/business/BusinessCtaSection';
import Image from 'next/image';
import HorizontalScrollableSectionWithImages from '@/components/business/HorizontalScrollableSectionWithImages';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
+
interface BusinessProps {
metatagsDescriptions: MetatagsDescription[];
@@ -76,6 +79,13 @@ export const BusinessPage = ({
return (
+
+
+
+
+
+
diff --git a/src/pages/cleaner.tsx b/src/pages/cleaner.tsx
index e187f012e..8faef0f49 100644
--- a/src/pages/cleaner.tsx
+++ b/src/pages/cleaner.tsx
@@ -12,6 +12,9 @@ import WhenToUseSection from '@/components/cleaner/WhenToUseSection';
import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import HorizontalScrollableSection from '@/components/shared/HorizontalScrollableSection';
import FeatureSection from '@/components/cleaner/FeatureSection';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
+
interface CleanerProps {
lang: GetServerSidePropsContext['locale'];
@@ -35,6 +38,13 @@ const CleanerPage = ({
return (
+
+
+
diff --git a/src/pages/cloud-object-storage/free-cloud-object-storage.tsx b/src/pages/cloud-object-storage/free-cloud-object-storage.tsx
index 9d73d0393..adc12e818 100644
--- a/src/pages/cloud-object-storage/free-cloud-object-storage.tsx
+++ b/src/pages/cloud-object-storage/free-cloud-object-storage.tsx
@@ -11,6 +11,9 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import HorizontalScrollableSection from '@/components/shared/HorizontalScrollableSection';
import FAQSection from '@/components/shared/sections/FaqSection';
import { GetServerSidePropsContext } from 'next';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
+
interface FreeCloudObjectStorageProps {
metatagsDescription: MetatagsDescription[];
@@ -34,6 +37,13 @@ const FreeCloudObjectStorage = ({
return (
+
+
+
diff --git a/src/pages/cloud-object-storage/index.tsx b/src/pages/cloud-object-storage/index.tsx
index a7eb57512..c6746c472 100644
--- a/src/pages/cloud-object-storage/index.tsx
+++ b/src/pages/cloud-object-storage/index.tsx
@@ -12,6 +12,9 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import HorizontalScrollableSection from '@/components/shared/HorizontalScrollableSection';
import FAQSection from '@/components/shared/sections/FaqSection';
import { GetServerSidePropsContext } from 'next';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
+
interface CloudObjectStorageProps {
metatagsDescription: MetatagsDescription[];
@@ -35,6 +38,12 @@ const CloudObjectStorage = ({
return (
+
+
+
diff --git a/src/pages/cloud-storage-backup-solutions.tsx b/src/pages/cloud-storage-backup-solutions.tsx
index 35943a0fa..2fb6eb665 100644
--- a/src/pages/cloud-storage-backup-solutions.tsx
+++ b/src/pages/cloud-storage-backup-solutions.tsx
@@ -7,7 +7,6 @@ import cookies from '@/lib/cookies';
import { sm_faq, sm_breadcrumb } from '@/components/utils/schema-markup-generator';
import { FooterText, MetatagsDescription, NavigationBarText } from '@/assets/types/layout/types';
import { GetServerSidePropsContext } from 'next';
-
import { CloudStorageBackupSolutionsText } from '@/assets/types/cloud-storage-backup-solutions';
import { BannersText } from '@/assets/types/components/banners';
import FeaturesSection from '@/components/cloud-storage-backup-solutions/FeaturesSection';
@@ -17,6 +16,8 @@ import FAQSection from '@/components/shared/sections/FaqSection';
import AnimatedHeroSection from '@/components/shared/HeroSections/AnimatedHeroSection';
import { Check } from '@phosphor-icons/react';
import Link from 'next/link';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
interface PrivacyProps {
metatagsDescriptions: MetatagsDescription[];
@@ -88,6 +89,13 @@ const CloudStorageBackupSolutions = ({
lang={lang}
>
+
+
+
+
+
+
diff --git a/src/pages/cloud-storage-for-photos.tsx b/src/pages/cloud-storage-for-photos.tsx
index 48e441dae..def5aa58a 100644
--- a/src/pages/cloud-storage-for-photos.tsx
+++ b/src/pages/cloud-storage-for-photos.tsx
@@ -16,6 +16,8 @@ import CtaSection from '@/components/shared/CtaSection';
import FAQSection from '@/components/shared/sections/FaqSection';
import ExplanationSection from '@/components/cloud-storage-for-photos/ExplanationSection';
import { ClockClockwise, CloudArrowUp, Eye, Images, Key, ShieldPlus } from '@phosphor-icons/react';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
interface PrivacyProps {
metatagsDescriptions: MetatagsDescription[];
@@ -78,6 +80,13 @@ const CloudStorageBackupSolutions = ({
lang={lang}
>
+
+
+
diff --git a/src/pages/cloud-storage-for-videos.tsx b/src/pages/cloud-storage-for-videos.tsx
index 14503b4ea..2032def48 100644
--- a/src/pages/cloud-storage-for-videos.tsx
+++ b/src/pages/cloud-storage-for-videos.tsx
@@ -16,6 +16,8 @@ import HowToChooseSection from '@/components/private-cloud-storage-for-videos/Ho
import SecureAndManageSection from '@/components/private-cloud-storage-for-videos/Secure&Manage';
import HorizontalScrollableSectionWithPhotos from '@/components/shared/HorizontalScrollableSectionWithPhotos';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
interface CloudStorageForVideosProps {
metatagsDescriptions: MetatagsDescription[];
@@ -43,6 +45,13 @@ const CloudStorageForVideos = ({
lang={lang}
>
+
+
+
+ <>
+
+
+
+
+
+
@@ -103,7 +120,7 @@ const Monitor = ({
- );
+ >);
};
export async function getServerSideProps(ctx) {
diff --git a/src/pages/degoo-alternative.tsx b/src/pages/degoo-alternative.tsx
index 3a68af5df..d745c3d72 100644
--- a/src/pages/degoo-alternative.tsx
+++ b/src/pages/degoo-alternative.tsx
@@ -16,6 +16,10 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import HorizontalScrollableSectionWithPhotosSection from '@/components/coupons/HorizontalScrollableSectionWithPhotos';
import ThreeCardsSection from '@/components/shared/sections/ThreeCardsSection';
import { formatText } from '@/components/utils/format-text';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
+
const DegooComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, footerLang }): JSX.Element => {
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'degoo-alternative');
@@ -66,13 +70,26 @@ const DegooComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, foo
const alternativeBgColor = 'linear-gradient(180deg, #FFFFFF 0%, #D6F3DD 50%, #FFFFFF 100%)';
return (
-
+
+
+
+
+
+
@@ -151,7 +168,7 @@ const DegooComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, foo
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/drime-alternative.tsx b/src/pages/drime-alternative.tsx
index e51a354c4..3e094ae71 100644
--- a/src/pages/drime-alternative.tsx
+++ b/src/pages/drime-alternative.tsx
@@ -16,6 +16,10 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import HorizontalScrollableSectionWithPhotosSection from '@/components/coupons/HorizontalScrollableSectionWithPhotos';
import ThreeCardsSection from '@/components/shared/sections/ThreeCardsSection';
import { formatText } from '@/components/utils/format-text';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
+
const DrimeComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, footerLang }): JSX.Element => {
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'drime-alternative');
@@ -66,13 +70,26 @@ const DrimeComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, foo
const alternativeBgColor = 'linear-gradient(180deg, #FFFFFF 0%, #D6F3DD 50%, #FFFFFF 100%)';
return (
-
+
+
+
+
+
+
@@ -151,7 +168,7 @@ const DrimeComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, foo
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/drive/free-cloud-storage.tsx b/src/pages/drive/free-cloud-storage.tsx
index 22b21129a..11f7df2f4 100644
--- a/src/pages/drive/free-cloud-storage.tsx
+++ b/src/pages/drive/free-cloud-storage.tsx
@@ -17,6 +17,9 @@ import HorizontalScrollableSection from '@/components/shared/HorizontalScrollabl
import DriveSection from '@/components/drive/Drivesection';
import ThreeCardsSection from '@/components/shared/sections/ThreeCardsWithImagesSection';
import CoreFeaturesSection from '@/components/drive/CoreFeaturesSection';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
+
interface DriveProps {
textContent: DriveText;
@@ -49,6 +52,13 @@ const Drive = ({
return (
+
+
+
diff --git a/src/pages/drive/index.tsx b/src/pages/drive/index.tsx
index d54e269b0..1070054ca 100644
--- a/src/pages/drive/index.tsx
+++ b/src/pages/drive/index.tsx
@@ -21,6 +21,9 @@ import { PricingSectionWrapper } from '@/components/shared/pricing/PricingSectio
import usePricing from '@/hooks/usePricing';
import { PromoCodeName } from '@/lib/types';
import { stripeService } from '@/services/stripe.service';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
+
interface DriveProps {
textContent: DriveText;
@@ -95,6 +98,12 @@ const Drive = ({
return (
+
+
+
diff --git a/src/pages/dropbox-alternative.tsx b/src/pages/dropbox-alternative.tsx
index 673495024..7f5c3db5f 100644
--- a/src/pages/dropbox-alternative.tsx
+++ b/src/pages/dropbox-alternative.tsx
@@ -13,6 +13,10 @@ import { ComparisonTable } from '@/components/comparison/ComparisonTable';
import { HeroSection } from '@/components/comparison/HeroSection';
import Footer from '@/components/layout/footers/Footer';
import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
+
const DropboxComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, footerLang }): JSX.Element => {
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'dropbox-alternative');
@@ -60,13 +64,26 @@ const DropboxComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, f
const percentageDiscount = decimalDiscount ? 100 - decimalDiscount : 0;
return (
-
+
+
+
+
+
+
@@ -129,7 +146,7 @@ const DropboxComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, f
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/elephantdrive-alternative.tsx b/src/pages/elephantdrive-alternative.tsx
index 50d595543..50a51ea49 100644
--- a/src/pages/elephantdrive-alternative.tsx
+++ b/src/pages/elephantdrive-alternative.tsx
@@ -5,6 +5,8 @@ import { GetServerSidePropsContext } from 'next';
const ElephantdriveComparison = (props) => (
desc.id === 'file-compressor');
return (
-
+ <>
+
+
+
+
+
+
@@ -44,7 +61,7 @@ const FileConverter = ({
- );
+ >);
};
export async function getServerSideProps(ctx) {
diff --git a/src/pages/file-converter/index.tsx b/src/pages/file-converter/index.tsx
index e32ed7a47..cc9b3f869 100644
--- a/src/pages/file-converter/index.tsx
+++ b/src/pages/file-converter/index.tsx
@@ -8,6 +8,10 @@ import { FeaturesSection } from '@/components/file-converter/main-state/Features
import CtaSection from '@/components/shared/CtaSection';
import QASection from '@/components/shared/sections/FaqSection';
import Footer from '@/components/layout/footers/Footer';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
+
const FileConverter = ({
metatagsDescriptions,
@@ -21,8 +25,21 @@ const FileConverter = ({
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'file-converter');
return (
-
+ <>
+
+
+
+
+
+
@@ -50,7 +67,7 @@ const FileConverter = ({
- );
+ >);
};
export async function getServerSideProps(ctx) {
diff --git a/src/pages/filejump-alternative.tsx b/src/pages/filejump-alternative.tsx
index 09c81e0d5..110ef54d0 100644
--- a/src/pages/filejump-alternative.tsx
+++ b/src/pages/filejump-alternative.tsx
@@ -16,6 +16,10 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import HorizontalScrollableSectionWithPhotosSection from '@/components/coupons/HorizontalScrollableSectionWithPhotos';
import ThreeCardsSection from '@/components/shared/sections/ThreeCardsSection';
import { formatText } from '@/components/utils/format-text';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
+
const FilejumpComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, footerLang }): JSX.Element => {
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'filejump-alternative');
@@ -66,13 +70,26 @@ const FilejumpComparison = ({ metatagsDescriptions, langJson, lang, navbarLang,
const alternativeBgColor = 'linear-gradient(180deg, #FFFFFF 0%, #D6F3DD 50%, #FFFFFF 100%)';
return (
-
+
+
+
+
+
+
@@ -151,7 +168,7 @@ const FilejumpComparison = ({ metatagsDescriptions, langJson, lang, navbarLang,
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/filen-alternative.tsx b/src/pages/filen-alternative.tsx
index fc47c1161..02bd24f5d 100644
--- a/src/pages/filen-alternative.tsx
+++ b/src/pages/filen-alternative.tsx
@@ -16,6 +16,10 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import HorizontalScrollableSectionWithPhotosSection from '@/components/coupons/HorizontalScrollableSectionWithPhotos';
import ThreeCardsSection from '@/components/shared/sections/ThreeCardsSection';
import { formatText } from '@/components/utils/format-text';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
+
const FilenComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, footerLang }): JSX.Element => {
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'filen-alternative');
@@ -66,13 +70,26 @@ const FilenComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, foo
const alternativeBgColor = 'linear-gradient(180deg, #FFFFFF 0%, #D6F3DD 50%, #FFFFFF 100%)';
return (
-
+
+
+
+
+
+
@@ -151,7 +168,7 @@ const FilenComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, foo
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/gdpr-cloud-storage.tsx b/src/pages/gdpr-cloud-storage.tsx
index 569a222f1..c2ec6547f 100644
--- a/src/pages/gdpr-cloud-storage.tsx
+++ b/src/pages/gdpr-cloud-storage.tsx
@@ -17,6 +17,8 @@ import ImportanceSection from '@/components/gdpr-cloud-storage/ImportanceSection
import AnimatedHeroSection from '@/components/shared/HeroSections/AnimatedHeroSection';
import Link from 'next/link';
import { ShieldCheck } from '@phosphor-icons/react';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
interface PrivacyProps {
metatagsDescriptions: MetatagsDescription[];
@@ -96,6 +98,13 @@ const PrivateCloudStorageSolutions = ({
lang={lang}
>
+
+
+
{
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'google-drive-alternative');
@@ -66,13 +70,26 @@ const GoogleDriveComparison = ({ metatagsDescriptions, langJson, lang, navbarLan
const alternativeBgColor = 'linear-gradient(180deg, #FFFFFF 0%, #D6F3DD 50%, #FFFFFF 100%)';
return (
-
+
+
+
+
+
+
@@ -145,7 +162,7 @@ const GoogleDriveComparison = ({ metatagsDescriptions, langJson, lang, navbarLan
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/icedrive-alternative.tsx b/src/pages/icedrive-alternative.tsx
index 2ee9688d2..7a9b8cc6d 100644
--- a/src/pages/icedrive-alternative.tsx
+++ b/src/pages/icedrive-alternative.tsx
@@ -16,6 +16,10 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import HorizontalScrollableSectionWithPhotosSection from '@/components/coupons/HorizontalScrollableSectionWithPhotos';
import ThreeCardsSection from '@/components/shared/sections/ThreeCardsSection';
import { formatText } from '@/components/utils/format-text';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
+
const IcedriveComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, footerLang }): JSX.Element => {
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'icedrive-alternative');
@@ -66,13 +70,26 @@ const IcedriveComparison = ({ metatagsDescriptions, langJson, lang, navbarLang,
const alternativeBgColor = 'linear-gradient(180deg, #FFFFFF 0%, #D6F3DD 50%, #FFFFFF 100%)';
return (
-
+
+
+
+
+
+
@@ -151,7 +168,7 @@ const IcedriveComparison = ({ metatagsDescriptions, langJson, lang, navbarLang,
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/idrive-alternative.tsx b/src/pages/idrive-alternative.tsx
index 0b2696343..308895f14 100644
--- a/src/pages/idrive-alternative.tsx
+++ b/src/pages/idrive-alternative.tsx
@@ -16,6 +16,10 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import HorizontalScrollableSectionWithPhotosSection from '@/components/coupons/HorizontalScrollableSectionWithPhotos';
import ThreeCardsSection from '@/components/shared/sections/ThreeCardsSection';
import { formatText } from '@/components/utils/format-text';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
+
const iDriveComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, footerLang }): JSX.Element => {
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'idrive-alternative');
@@ -67,13 +71,26 @@ const iDriveComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, fo
const alternativeBgColor = 'linear-gradient(180deg, #FFFFFF 0%, #D6F3DD 50%, #FFFFFF 100%)';
return (
-
+
+
+
+
+
+
@@ -152,7 +169,7 @@ const iDriveComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, fo
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/koofr-alternative.tsx b/src/pages/koofr-alternative.tsx
index 6a29ae92e..473187624 100644
--- a/src/pages/koofr-alternative.tsx
+++ b/src/pages/koofr-alternative.tsx
@@ -16,6 +16,10 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import HorizontalScrollableSectionWithPhotosSection from '@/components/coupons/HorizontalScrollableSectionWithPhotos';
import ThreeCardsSection from '@/components/shared/sections/ThreeCardsSection';
import { formatText } from '@/components/utils/format-text';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
+
const KoofrComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, footerLang }): JSX.Element => {
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'koofr-alternative');
@@ -66,13 +70,26 @@ const KoofrComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, foo
const alternativeBgColor = 'linear-gradient(180deg, #FFFFFF 0%, #D6F3DD 50%, #FFFFFF 100%)';
return (
-
+
+
+
+
+
+
@@ -150,7 +167,7 @@ const KoofrComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, foo
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/lifetime.tsx b/src/pages/lifetime.tsx
index e717048a6..c2b4a0ee6 100644
--- a/src/pages/lifetime.tsx
+++ b/src/pages/lifetime.tsx
@@ -12,6 +12,9 @@ import { stripeService } from '@/services/stripe.service';
import cookies from '@/lib/cookies';
import { SpecialOfferText } from '@/assets/types/specialOfferTemplate';
import { PromoCodeName } from '@/lib/types';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
+
interface LifetimeSpecialProps {
metatagsDescriptions: MetatagsDescription[];
@@ -99,6 +102,13 @@ function LifetimeSpecial({
specialOffer={`https://internxt.com/images/previewLink/LifetimePreviewLink.png`}
>
+
+
+
diff --git a/src/pages/meet.tsx b/src/pages/meet.tsx
index 9b9ea5291..9e9a0d4c5 100644
--- a/src/pages/meet.tsx
+++ b/src/pages/meet.tsx
@@ -11,6 +11,9 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import HorizontalScrollableSection from '@/components/shared/HorizontalScrollableSection';
import HorizontalScrollableSectionWithPhotosSection from '@/components/meet/HorizontalScrollableSection';
import AccordionSection from '@/components/meet/AccordionSection';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
+
interface CleanerProps {
lang: GetServerSidePropsContext['locale'];
@@ -34,6 +37,13 @@ const CleanerPage = ({
return (
+
+
+
diff --git a/src/pages/mega-alternative.tsx b/src/pages/mega-alternative.tsx
index fb12f5343..f1f9d8312 100644
--- a/src/pages/mega-alternative.tsx
+++ b/src/pages/mega-alternative.tsx
@@ -13,6 +13,10 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import { ComparisonTable } from '@/components/comparison/ComparisonTable';
import { HeroSection } from '@/components/comparison/HeroSection';
import Footer from '@/components/layout/footers/Footer';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
+
const MegaComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, footerLang }): JSX.Element => {
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'mega-alternative');
@@ -60,8 +64,21 @@ const MegaComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, foot
const percentageDiscount = decimalDiscount ? 100 - decimalDiscount : 0;
return (
-
+ <>
+
+
+
+
+
+
@@ -120,7 +137,7 @@ const MegaComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, foot
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/metadata-remover.tsx b/src/pages/metadata-remover.tsx
index 633b081e1..19365eed8 100644
--- a/src/pages/metadata-remover.tsx
+++ b/src/pages/metadata-remover.tsx
@@ -23,6 +23,8 @@ import { ToolsSection } from '@/components/shared/sections/ToolsSection';
import FeaturesSliderImg from '@/components/metadata-remover/FeaturesSliderImg';
import FeaturesSlider from '@/components/shared/FeaturesSlider';
import { getImage } from '@/lib/getImage';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
const HeroSection = dynamic(() => import('@/components/metadata-remover/HeroSection'), { ssr: false });
const CTA_URL = `/pricing`;
@@ -103,6 +105,13 @@ const Scan = ({ metatagsDescriptions, langJson, toolsContent, footerLang, navbar
+
+
+
diff --git a/src/pages/nas.tsx b/src/pages/nas.tsx
index 8d503a1b8..c878d60d7 100644
--- a/src/pages/nas.tsx
+++ b/src/pages/nas.tsx
@@ -12,6 +12,9 @@ import HorizontalScrollableSection from '@/components/shared/HorizontalScrollabl
import SynologyQNAPSection from '@/components/nas/SynologyQNAPSection';
import WhatIsNASSection from '@/components/shared/components/TitleAndDescriptionSection';
import HeroSection from '@/components/nas/HeroSection';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
+
interface NASPageProps {
lang: GetServerSidePropsContext['locale'];
@@ -29,6 +32,13 @@ const NASPage = ({ metatagsDescriptions, textContent, lang, navbarLang, footerLa
return (
+
+
+
diff --git a/src/pages/onedrive-alternative.tsx b/src/pages/onedrive-alternative.tsx
index 88bc58327..663724aa4 100644
--- a/src/pages/onedrive-alternative.tsx
+++ b/src/pages/onedrive-alternative.tsx
@@ -16,6 +16,10 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import HorizontalScrollableSectionWithPhotosSection from '@/components/coupons/HorizontalScrollableSectionWithPhotos';
import ThreeCardsSection from '@/components/shared/sections/ThreeCardsSection';
import { formatText } from '@/components/utils/format-text';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
+
const OneDriveComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, footerLang }): JSX.Element => {
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'onedrive-alternative');
@@ -66,13 +70,26 @@ const OneDriveComparison = ({ metatagsDescriptions, langJson, lang, navbarLang,
const alternativeBgColor = 'linear-gradient(180deg, #FFFFFF 0%, #D6F3DD 50%, #FFFFFF 100%)';
return (
-
+
+
+
+
+
+
@@ -144,7 +161,7 @@ const OneDriveComparison = ({ metatagsDescriptions, langJson, lang, navbarLang,
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/open-source.tsx b/src/pages/open-source.tsx
index e6d4cd51a..bbfb86394 100644
--- a/src/pages/open-source.tsx
+++ b/src/pages/open-source.tsx
@@ -10,6 +10,9 @@ import WhatAreTheBenefits from '@/components/open-source/WhatAreTheBenefits';
import WhatIsOSS from '@/components/open-source/WhatIsOSS';
import CtaSection from '@/components/shared/CtaSection';
import { downloadDriveLinks } from '@/lib/get-download-url';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
+
const CTA_SIGNUP_URL = `https://drive.internxt.com/new`;
@@ -20,6 +23,13 @@ const OpenSource = ({ lang, metatagsDescriptions, langJson, navbarLang, footerLa
return (
+
+
+
diff --git a/src/pages/password-checker.tsx b/src/pages/password-checker.tsx
index 291fc4423..34476e03a 100644
--- a/src/pages/password-checker.tsx
+++ b/src/pages/password-checker.tsx
@@ -12,6 +12,8 @@ import { sm_faq, sm_breadcrumb } from '@/components/utils/schema-markup-generato
import { ToolsSection } from '@/components/shared/sections/ToolsSection';
import CtaSection from '@/components/shared/CtaSection';
import InfoSection from '@/components/password-generator/InfoSection';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
const PasswordChecker = ({
metatagsDescriptions,
@@ -43,6 +45,14 @@ const PasswordChecker = ({
lang={lang}
>
+
+
+
+
+
+
diff --git a/src/pages/pcloud-alternative.tsx b/src/pages/pcloud-alternative.tsx
index bc1c4ad08..13f5ebcc4 100644
--- a/src/pages/pcloud-alternative.tsx
+++ b/src/pages/pcloud-alternative.tsx
@@ -13,6 +13,10 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import { ComparisonTable } from '@/components/comparison/ComparisonTable';
import { HeroSection } from '@/components/comparison/HeroSection';
import Footer from '@/components/layout/footers/Footer';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
+
const PCloudComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, footerLang }): JSX.Element => {
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'pcloud-alternative');
@@ -60,8 +64,21 @@ const PCloudComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, fo
const percentageDiscount = decimalDiscount ? 100 - decimalDiscount : 0;
return (
-
+ <>
+
+
+
+
+
+
@@ -121,7 +138,7 @@ const PCloudComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, fo
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/pricing/index.tsx b/src/pages/pricing/index.tsx
index dbd0a91fe..86ccf4e9c 100644
--- a/src/pages/pricing/index.tsx
+++ b/src/pages/pricing/index.tsx
@@ -7,6 +7,7 @@ import Layout from '@/components/layout/Layout';
import cookies from '@/lib/cookies';
import FAQSection from '@/components/shared/sections/FaqSection';
import { sm_faq, sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
import BestStorageSection from '@/components/pricing/NewBestStorageSection';
import FileParallaxSection from '@/components/home/FileParallaxSection';
import usePricing from '@/hooks/usePricing';
@@ -105,12 +106,20 @@ const Pricing = ({ metatagsDescriptions, navbarLang, footerLang, lang, textConte
+
+
+
+
+
{
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'proton-drive-alternative');
@@ -66,13 +70,26 @@ const ProtonComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, fo
const alternativeBgColor = 'linear-gradient(180deg, #FFFFFF 0%, #D6F3DD 50%, #FFFFFF 100%)';
return (
-
+
+
+
+
+
+
@@ -151,7 +168,7 @@ const ProtonComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, fo
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/sync-alternative.tsx b/src/pages/sync-alternative.tsx
index bd352c967..36fa46bbc 100644
--- a/src/pages/sync-alternative.tsx
+++ b/src/pages/sync-alternative.tsx
@@ -16,6 +16,10 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import HorizontalScrollableSectionWithPhotosSection from '@/components/coupons/HorizontalScrollableSectionWithPhotos';
import ThreeCardsSection from '@/components/shared/sections/ThreeCardsSection';
import { formatText } from '@/components/utils/format-text';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
+
const SyncComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, footerLang }): JSX.Element => {
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'sync-alternative');
@@ -66,13 +70,26 @@ const SyncComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, foot
const alternativeBgColor = 'linear-gradient(180deg, #FFFFFF 0%, #D6F3DD 50%, #FFFFFF 100%)';
return (
-
+
+
+
+
+
+
@@ -151,7 +168,7 @@ const SyncComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, foot
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/teams-alternative.tsx b/src/pages/teams-alternative.tsx
index 62c9b4f98..b8f83fffb 100644
--- a/src/pages/teams-alternative.tsx
+++ b/src/pages/teams-alternative.tsx
@@ -16,6 +16,10 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import HorizontalScrollableSectionWithPhotosSection from '@/components/coupons/HorizontalScrollableSectionWithPhotos';
import ThreeCardsSection from '@/components/shared/sections/ThreeCardsSection';
import { formatText } from '@/components/utils/format-text';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
+
const TeamsComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, footerLang }): JSX.Element => {
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'koofr-alternative');
@@ -66,13 +70,26 @@ const TeamsComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, foo
const alternativeBgColor = 'linear-gradient(180deg, #FFFFFF 0%, #D6F3DD 50%, #FFFFFF 100%)';
return (
-
+
+
+
+
+
+
@@ -150,7 +167,7 @@ const TeamsComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, foo
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/temporary-email.tsx b/src/pages/temporary-email.tsx
index 987dd7244..b12810cae 100644
--- a/src/pages/temporary-email.tsx
+++ b/src/pages/temporary-email.tsx
@@ -14,6 +14,8 @@ import { ActionBanner } from '@/components/temp-email/components/ActionBanner';
import { GlobalDialog, useGlobalDialog } from '@/contexts/GlobalUIManager';
import { setup } from '@/lib/csrf';
import { GetServerSidePropsContext } from 'next';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
const TempEmail = ({ lang, metatags, textContent, footerLang, navbarLang, toolsContent, bannerLang }: any) => {
const dialogAction = useGlobalDialog();
@@ -32,6 +34,14 @@ const TempEmail = ({ lang, metatags, textContent, footerLang, navbarLang, toolsC
+
+
+
diff --git a/src/pages/terabox-alternative.tsx b/src/pages/terabox-alternative.tsx
index f285a412e..ef472d1b0 100644
--- a/src/pages/terabox-alternative.tsx
+++ b/src/pages/terabox-alternative.tsx
@@ -16,6 +16,10 @@ import FloatingCtaSectionv2 from '@/components/shared/FloatingCtaSectionV2';
import HorizontalScrollableSectionWithPhotosSection from '@/components/coupons/HorizontalScrollableSectionWithPhotos';
import ThreeCardsSection from '@/components/shared/sections/ThreeCardsSection';
import { formatText } from '@/components/utils/format-text';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+import { sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import Script from 'next/script';
+
const TeraboxComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, footerLang }): JSX.Element => {
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'terabox-alternative');
@@ -66,13 +70,26 @@ const TeraboxComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, f
const alternativeBgColor = 'linear-gradient(180deg, #FFFFFF 0%, #D6F3DD 50%, #FFFFFF 100%)';
return (
-
+
+
+
+
+
+
@@ -151,7 +168,7 @@ const TeraboxComparison = ({ metatagsDescriptions, langJson, lang, navbarLang, f
- );
+ >);
};
export async function getServerSideProps(ctx: GetServerSidePropsContext) {
diff --git a/src/pages/virus-scanner.tsx b/src/pages/virus-scanner.tsx
index 573ff6962..54a39c6d7 100644
--- a/src/pages/virus-scanner.tsx
+++ b/src/pages/virus-scanner.tsx
@@ -11,6 +11,8 @@ import { ToolsSection } from '@/components/shared/sections/ToolsSection';
import TryInternxtBanner from '@/components/banners/TryInternxtBanner';
import { sm_faq, sm_breadcrumb } from '@/components/utils/schema-markup-generator';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
const Scan = ({
metatagsDescriptions,
@@ -35,6 +37,14 @@ const Scan = ({
+
+
+
diff --git a/src/pages/vpn.tsx b/src/pages/vpn.tsx
index 373041864..2c181690e 100644
--- a/src/pages/vpn.tsx
+++ b/src/pages/vpn.tsx
@@ -19,6 +19,8 @@ import Image from 'next/image';
import { getImage } from '@/lib/getImage';
import { GetServerSidePropsContext } from 'next';
import CtaSection from '@/components/shared/CtaSection';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
interface VPNProps {
metatagsDescriptions: MetatagsDescription[];
@@ -50,6 +52,13 @@ const VPN = ({
) : (
)}
+
+
+
{
const metatags = metatagsDescriptions.filter((desc) => desc.id === 'webDAV');
@@ -14,6 +17,13 @@ const WebDAV = ({ metatagsDescriptions, langJson, navbarLang, footerLang }): JSX
return (
+
+
+
diff --git a/src/pages/what-does-google-know-about-me.tsx b/src/pages/what-does-google-know-about-me.tsx
index 75926a73c..984ab9cc9 100644
--- a/src/pages/what-does-google-know-about-me.tsx
+++ b/src/pages/what-does-google-know-about-me.tsx
@@ -11,6 +11,9 @@ import { getImage } from '@/lib/getImage';
import Image from 'next/image';
import Link from 'next/link';
import CtaSection from '@/components/affiliates/CtaSection';
+import { Breadcrumb } from '@/components/shared/Breadcrumb';
+
+
const URL_REDIRECT = 'https://internxt.com/pricing';
@@ -33,6 +36,12 @@ const WhatDoesGoogleKnowAboutMe = ({
lang={lang}
>
+
+
+
diff --git a/update_translations.py b/update_translations.py
deleted file mode 100644
index 37531475b..000000000
--- a/update_translations.py
+++ /dev/null
@@ -1,49 +0,0 @@
-import os
-import re
-
-lang_dir = "/Users/javi/Documents/GitHub/website/src/assets/lang"
-
-translations = {
- "en": '\\"Get serious about **securing** your important data. Internxt was born with the ambition of giving people true **freedom online** by creating a more **ethical**, **secure**, **private**, and responsible digital world.\\"',
- "es": '\\"Tómate en serio la **seguridad** de tus datos importantes. Internxt nació con la ambición de darle a las personas verdadera **libertad online** creando un mundo digital más **ético**, **seguro**, **privado** y responsable.\\"',
- "de": '\\"Nehmen Sie die **Sicherung** Ihrer wichtigen Daten ernst. Internxt wurde mit dem Ziel gegründet, den Menschen wahre **Freiheit online** zu geben, indem eine **ethischere**, **sicherere**, **privatere** und verantwortungsvollere digitale Welt geschaffen wird.\\"',
- "fr": '\\"Prenez au sérieux la **sécurisation** de vos données importantes. Internxt est né avec l\'ambition de donner aux gens une véritable **liberté en ligne** en créant un monde numérique plus **éthique**, **sûr**, **privé** e responsable.\\"',
- "it": '\\"Prendi sul serio la **sicurezza** dei tuoi dati importanti. Internxt è nato con l\'ambizione di dare alle persone la vera **libertà online** creando un mondo digitale più **etico**, **sicuro**, **privato** e responsabile.\\"',
- "ru": '\\"Отнеситесь серьезно к **защите** своих важных данных. Internxt был создан с целью дать людям настоящую **свободу в сети**, создав более **этичный**, **безопасный**, **приватный** и ответственный цифровой мир.\\"',
- "zh": '\\"认真对待您的重要数据的**安全**。Internxt 的诞生是为了通过创造一个更**合乎道德**、**安全**、**隐私**和负责任的数字世界,赋予人们真正的**在线自由**。\\"',
- "zh-tw": '\\"認真對待您的重要數據的**安全**。Internxt 的誕生是為了通過創造一個更**合乎道德**、**安全**、**隱私**和負責任的數字世界,賦予人們真正的**在線自由**。\\"',
- "ar": '\\"تعامل بجدية مع **تأمين** بياناتك المهمة. وُلِدت Internxt بطموح منح الأشخاص **حرية حقيقية عبر الإنترنت** من خلال إنشاء عالم رقمي أكثر **أخلاقية** و**أمانًا** و**خصوصية** ومسؤولية.\\"',
- "id": '\\"Anggap serius **pengamanan** data penting Anda. Internxt lahir dengan ambisi untuk memberikan **kebebasan online** yang sesungguhnya kepada orang-orang dengan menciptakan dunia digital yang lebih **etis**, **aman**, **pribadi**, dan bertanggung jawab.\\"',
- "nl": '\\"Neem de **beveiliging** van uw belangrijke gegevens serieus. Internxt is geboren met de ambitie om mensen echte **online vrijheid** te geven door een meer **ethische**, **veilige**, **privé** en verantwoordelijke digitale wereld te creëren.\\"',
- "pt-br": '\\"Leve a sério a **segurança** dos seus dados importantes. O Internxt nasceu com a ambição de dar às pessoas verdadeira **liberdade online** ao criar um mundo digital mais **ético**, **seguro**, **privado** e responsável.\\"'
-}
-
-modified_files = 0
-for lang in os.listdir(lang_dir):
- d = os.path.join(lang_dir, lang)
- if os.path.isdir(d) and lang in translations:
- for root, _, files in os.walk(d):
- for file in files:
- if file.endswith('.json'):
- path = os.path.join(root, file)
- with open(path, 'r', encoding='utf-8') as f:
- content = f.read()
-
- if '"mashable"' in content:
- print(f"Found mashable in {path}")
- # Regex replacement
- new_val = '"' + translations[lang] + '"'
- new_content = re.sub(
- r'("mashable"\s*:\s*)"(?:\\.|[^"\\])*"',
- r'\g<1>' + new_val.replace('\\', '\\\\'),
- content
- )
- if new_content != content:
- with open(path, 'w', encoding='utf-8') as f:
- f.write(new_content)
- print(f"Updated {path}")
- modified_files += 1
- else:
- print("Content unchanged")
-
-print(f"Total modified files: {modified_files}")