xpeditis2.0/apps/frontend/messages/en.json
David ec0173483a
All checks were successful
Dev CI / Backend — Lint (push) Successful in 10m23s
Dev CI / Backend — Unit Tests (push) Successful in 10m17s
Dev CI / Frontend — Lint & Type-check (push) Successful in 11m3s
Dev CI / Frontend — Unit Tests (push) Successful in 10m33s
Dev CI / Notify Failure (push) Has been skipped
fix language
2026-04-21 18:04:02 +02:00

3627 lines
160 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"common": {
"brand": "Xpeditis",
"save": "Save",
"cancel": "Cancel",
"confirm": "Confirm",
"close": "Close",
"delete": "Delete",
"edit": "Edit",
"create": "Create",
"search": "Search",
"filter": "Filter",
"loading": "Loading…",
"submitting": "Submitting…",
"next": "Next",
"previous": "Previous",
"back": "Back",
"yes": "Yes",
"no": "No",
"optional": "(optional)",
"required": "*",
"view": "View",
"viewAll": "View all",
"seeMore": "See more",
"discover": "Discover",
"tryNow": "Try now",
"continue": "Continue",
"submit": "Submit"
},
"language": {
"label": "Language",
"fr": "Français",
"en": "English",
"switchTo": "Switch to {lang}"
},
"metadata": {
"home": {
"title": "Xpeditis — Maritime Freight Booking",
"description": "Search, compare and book maritime freight in real time."
}
},
"navigation": {
"home": "Home",
"dashboard": "Dashboard",
"bookings": "Bookings",
"rates": "Rates",
"settings": "Settings",
"login": "Log in",
"register": "Sign up",
"logout": "Log out",
"about": "About",
"pricing": "Pricing",
"contact": "Contact",
"features": "Features",
"blog": "Blog",
"company": "Company",
"docsApi": "API Docs"
},
"validation": {
"required": "This field is required",
"email": "Invalid email address",
"minLength": "Must be at least {min} characters",
"maxLength": "Must be at most {max} characters",
"pattern": "Invalid format",
"passwordComplexity": "Password must contain uppercase, lowercase, number and special character",
"passwordsDoNotMatch": "Passwords do not match",
"siren": "SIREN must be 9 digits",
"siret": "SIRET must be 14 digits"
},
"errors": {
"generic": "An error occurred. Please try again.",
"network": "Connection issue. Check your network.",
"unauthorized": "You must be logged in to access this page.",
"forbidden": "You do not have the required permissions.",
"notFound": "Page not found.",
"serverError": "Server error. Our team has been notified."
},
"header": {
"mobileMenu": {
"open": "Open menu",
"close": "Close menu"
},
"company": {
"aboutDescription": "Our story and mission",
"blogDescription": "News and insights"
},
"cta": {
"signIn": "Sign in",
"startFree": "Start Free",
"dashboard": "Dashboard"
}
},
"footer": {
"tagline": "Xpeditis is the leading B2B platform for maritime freight in Europe. We connect freight forwarders with the world's largest shipping lines.",
"products": {
"title": "Products",
"features": "Features",
"tools": "Tools & Calculators",
"pricing": "Pricing"
},
"company": {
"title": "Company",
"about": "About",
"contact": "Contact",
"blog": "Blog"
},
"legal": {
"title": "Legal",
"privacy": "Privacy Policy",
"terms": "Terms & Conditions",
"cookies": "Cookie Policy",
"compliance": "GDPR Compliance"
},
"copyright": "© {year} Xpeditis SAS. All rights reserved.",
"location": "Paris, France",
"countries": "50+ Countries",
"social": {
"linkedin": "LinkedIn",
"twitter": "Twitter"
}
},
"landing": {
"hero": {
"badge": "#1 B2B Maritime Freight Platform in Europe",
"titleLine1": "Book your freight",
"titleLine2": "in a few clicks",
"subtitle": "Compare rates from 50+ shipping lines, book online and track your shipments in real time.",
"ctaAuthenticated": "Go to dashboard",
"ctaRegister": "Create a free account",
"ctaDemo": "See the demo"
},
"stats": {
"carriers": "Shipping Lines",
"ports": "Global Ports",
"responseTime": "Response Time",
"availability": "Uptime"
},
"features": {
"title": "Why choose Xpeditis?",
"subtitle": "A complete platform to manage all your maritime freight needs",
"dashboard": {
"title": "Dashboard",
"description": "Track all your KPIs in real time: bookings, volumes, revenue and custom alerts."
},
"bookings": {
"title": "Booking Management",
"description": "Create, manage and track your LCL/FCL maritime bookings with a full history."
},
"documents": {
"title": "Maritime Documents",
"description": "Centralize all your documents: B/L, invoices, certificates and customs documents."
},
"tracking": {
"title": "Shipment Tracking",
"description": "Track your containers in real time across 10+ major carriers (Maersk, MSC, CMA CGM...)."
},
"wiki": {
"title": "Maritime Wiki",
"description": "Comprehensive knowledge base: Incoterms, documents, customs procedures and more."
},
"notifications": {
"title": "Real-time Notifications",
"description": "Stay informed with instant alerts on your bookings, documents and updates."
}
},
"partners": {
"title": "Partnered with the largest shipping lines",
"subtitle": "Access rates from 50+ global carriers"
},
"pricing": {
"badge": "Pricing",
"title": "Plans tailored to your business",
"subtitle": "From discovery access to custom partnership — scale at any time.",
"monthly": "Monthly",
"yearly": "Yearly",
"yearlySaving": "1 month free",
"custom": "Custom",
"customSubtitle": "Tailored pricing",
"free": "Free",
"freeSubtitle": "Forever",
"perMonth": "/month",
"billedYearly": "Billed {price}€/year",
"saveWithYearly": "Save 1 month with yearly",
"commission": "Commission {rate}",
"noCommitment": "No commitment · Cancel at any time",
"questions": "Questions?",
"contactSales": "Contact our sales team",
"popularBadge": "Popular",
"customBadge": "Custom",
"plans": {
"bronze": {
"name": "Bronze",
"description": "To discover the platform",
"users": "1 user",
"shipments": "12 shipments / year",
"support": "No support",
"cta": "Start for free"
},
"silver": {
"name": "Silver",
"description": "For growing freight forwarders",
"users": "Up to 5 users",
"shipments": "Unlimited shipments",
"support": "Email support",
"cta": "Get started"
},
"gold": {
"name": "Gold",
"description": "For demanding teams",
"users": "Up to 20 users",
"shipments": "Unlimited shipments",
"support": "Direct sales support",
"cta": "Get started"
},
"platinium": {
"name": "Platinium",
"description": "For large enterprises",
"users": "Unlimited users",
"shipments": "Unlimited shipments",
"support": "Dedicated Key Account Manager",
"cta": "Contact us"
}
},
"features": {
"lclBooking": "LCL maritime bookings",
"tracking": "Container track & trace",
"dashboard": "Dashboard",
"dashboardAdvanced": "Advanced dashboard",
"wiki": "Maritime wiki",
"wikiFull": "Full maritime wiki",
"userManagement": "User management",
"csvExport": "CSV export",
"apiAccess": "API access",
"apiFull": "Full API access",
"kam": "Dedicated KAM",
"kamCustom": "Dedicated KAM + Custom interface"
}
},
"howItWorks": {
"title": "How does it work?",
"subtitle": "Book your maritime freight in 4 simple steps",
"step1": {
"title": "Search",
"description": "Enter your origin and destination ports"
},
"step2": {
"title": "Compare",
"description": "Analyze rates from 50+ lines"
},
"step3": {
"title": "Book",
"description": "Confirm your booking in one click"
},
"step4": {
"title": "Track",
"description": "Track your shipment in real time"
},
"ctaHint": "Free signup · No credit card required"
},
"testimonials": {
"title": "They trust us",
"subtitle": "Discover what our happy customers have to say",
"items": [
{
"quote": "Xpeditis has transformed how we manage maritime freight. Rates are competitive and the platform is intuitive.",
"author": "Marie Dubois",
"role": "Logistics Director",
"company": "LogiFrance"
},
{
"quote": "The time saved is substantial. What used to take hours is now done in minutes.",
"author": "Thomas Martin",
"role": "Transport Manager",
"company": "EuroShipping"
},
{
"quote": "The interface is clear, data is precise and customer support is responsive. A truly trusted partner.",
"author": "Sophie Bernard",
"role": "CEO",
"company": "MariTime Solutions"
}
]
},
"cta": {
"title": "Ready to simplify your maritime freight?",
"subtitle": "Join hundreds of freight forwarders who trust Xpeditis for their maritime shipments.",
"ctaAuthenticated": "Go to dashboard",
"ctaRegister": "Create a free account",
"ctaLogin": "Sign in",
"features": {
"noCard": "No credit card",
"quickSetup": "Setup in 2 min",
"secure": "Secure data"
}
}
},
"dashboard": {
"nav": {
"dashboard": "Dashboard",
"bookings": "Bookings",
"documents": "Documents",
"tracking": "Tracking",
"wiki": "Maritime Wiki",
"organization": "Organization",
"apiKeys": "API Keys",
"users": "Users"
},
"topbar": {
"defaultTitle": "Dashboard"
},
"logout": "Log out",
"bottomNav": {
"home": "Home",
"bookings": "Bookings",
"documents": "Documents",
"tracking": "Tracking",
"profile": "Profile"
},
"home": {
"title": "Dashboard",
"subtitle": "Overview of your bookings and performance",
"newBooking": "New Booking",
"exportFilename": "dashboard-carriers",
"kpi": {
"accepted": "Accepted",
"rejected": "Rejected",
"pending": "Pending",
"totalWeight": "Total Weight",
"thisMonth": "+{count} this month",
"acceptanceRate": "{rate}% accepted"
},
"charts": {
"distribution": {
"title": "Booking Distribution",
"description": "Breakdown by status",
"accepted": "Accepted",
"rejected": "Rejected",
"pending": "Pending"
},
"weightByCarrier": {
"title": "Weight by Carrier",
"description": "Top 5 carriers by weight (KG)",
"weight": "Weight"
}
},
"performance": {
"acceptanceRate": "Acceptance Rate",
"totalBookings": "Total Bookings",
"totalVolume": "Total Volume"
},
"topCarriers": {
"title": "Top Carriers",
"description": "Ranking of the best shipping lines",
"viewAll": "View all",
"bookingsCount": "{count} bookings",
"empty": {
"title": "No bookings",
"description": "Create your first booking to see your stats",
"cta": "Create a booking"
}
},
"export": {
"carrier": "Carrier",
"totalBookings": "Total Bookings",
"accepted": "Accepted",
"rejected": "Rejected",
"totalWeight": "Total Weight (KG)",
"totalVolume": "Total Volume (CBM)",
"acceptanceRate": "Acceptance rate (%)",
"avgPrice": "Average price ($)"
}
},
"bookingsList": {
"title": "Bookings",
"description": "Manage and track your shipments",
"new": "New Booking",
"transferBanner": {
"title": "Transfer declared",
"message": "Your transfer has been recorded. An administrator will verify receipt and activate your booking. You will be notified once validated."
},
"exportFilename": "bookings",
"export": {
"id": "ID",
"pallets": "Pallets",
"weight": "Weight (kg)",
"volume": "Volume (CBM)",
"origin": "Origin",
"destination": "Destination",
"carrier": "Carrier",
"status": "Status",
"createdAt": "Created at"
},
"searchType": {
"label": "Search type",
"route": "Route (Origin/Destination)",
"pallets": "Pallets/Packages",
"weight": "Weight (kg)",
"status": "Status",
"date": "Date",
"quote": "Quote No."
},
"searchPlaceholder": {
"route": "Search by city (origin or destination)...",
"pallets": "Search by pallet count...",
"weight": "Search by weight in kg...",
"status": "Search by status...",
"date": "Search by date (DD/MM/YYYY)...",
"quote": "Search by quote number...",
"default": "Search..."
},
"statusFilter": {
"label": "Status",
"all": "All statuses"
},
"status": {
"pending": "Pending",
"accepted": "Accepted",
"rejected": "Rejected"
},
"loading": "Loading bookings...",
"search": "Search",
"columns": {
"palletsPackages": "Pallets/Packages",
"weight": "Weight",
"route": "Route",
"status": "Status",
"date": "Date",
"quoteNumber": "Quote No.",
"bookingNumber": "Booking No."
},
"mobile": {
"pallets": "Pallets",
"weight": "Weight",
"date": "Date",
"ref": "Ref: #{id}",
"booking": "Booking: {number}"
},
"units": {
"palletsCount": "{count, plural, one {# pallet} other {# pallets}}",
"containersCount": "{count, plural, one {# container} other {# containers}}",
"palletsShort": "{count} pal.",
"containersShort": "{count} cont.",
"kg": "{value} kg",
"cbm": "{value} CBM"
},
"empty": {
"title": "No bookings found",
"hasFilters": "Try adjusting your filters",
"noBookings": "Start by creating your first booking"
},
"pagination": {
"previous": "Previous",
"next": "Next",
"showing": "Showing <b>{start}</b> to <b>{end}</b> of <b>{total}</b> {total, plural, one {result} other {results}}"
}
},
"rateSearch": {
"title": "Advanced Rate Search",
"subtitle": "Complete form with all transport options",
"mapLoading": "Loading map...",
"step1": {
"title": "1. General Information",
"originLabel": "Origin port *",
"destinationLabel": "Destination port *",
"selected": "✓ Selected",
"originPlaceholder": "Search for an origin port...",
"destinationPlaceholder": "Search for a destination...",
"destinationDisabled": "Select an origin port first",
"availableDestinations": "{count, plural, one {# destination available} other {# destinations available}} from {port}",
"moreResults": "+{count} more results. Refine your search.",
"noOrigin": "No origin port found for \"{query}\"",
"noDestination": "No destination found for \"{query}\"",
"routeTitle": "Maritime route: {origin} → {destination}",
"routeDescription": "Approximate distance and route visualization"
},
"step2": {
"title": "2. Packaging",
"addPackage": "+ Add a package",
"packageNumber": "Package #{number}",
"remove": "Remove",
"type": "Type",
"quantity": "Quantity",
"length": "L (cm)",
"width": "W (cm)",
"height": "H (cm)",
"weight": "Weight (kg)",
"stackable": "Stackable",
"packageTypes": {
"caisse": "Crate",
"colis": "Parcel",
"palette": "Pallet",
"autre": "Other"
},
"summary": {
"title": "Summary",
"volume": "Total volume: {value} m³",
"weight": "Total weight: {value} kg",
"pallets": "Pallets: {value}"
}
},
"step3": {
"title": "3. Options & Services",
"customs": {
"title": "Customs Import / Export",
"eurDocument": "EUR 1",
"t1Document": "T1",
"customsStop": "Customs stop",
"exportAssistance": "Export assistance"
},
"goods": {
"title": "Goods",
"dangerous": "Dangerous Goods",
"regulated": "Regulated products"
},
"handling": {
"title": "Special handling",
"special": "Special handling",
"tailgate": "Tailgate",
"straps": "Straps",
"thermalCover": "Thermal cover"
},
"other": {
"title": "Other options",
"appointment": "Delivery appointment",
"insurance": "Insurance"
}
},
"navigation": {
"previous": "Previous",
"next": "Next",
"search": "Search rates"
},
"results": {
"loadingTitle": "Searching for the best rates...",
"backToSearch": "← Back to search",
"errorTitle": "Error",
"errorGeneric": "An error occurred while searching",
"noResultsTitle": "No results found",
"noResultsMessage": "No rates match your search for the route {origin} → {destination}",
"suggestions": "Suggestions:",
"suggestionPorts": "• Available ports: NLRTM, DEHAM, FRLEH, BEGNE (origin) → USNYC, USLAX, CNSHG, SGSIN (destination)",
"suggestionVolume": "• Volume: Try between 1 and 200 CBM",
"suggestionWeight": "• Weight: Try between 100 and 30000 kg",
"modifySearch": "Modify search",
"resultsTitle": "Search results",
"summary": "{volume} CBM • {weight} kg",
"summaryWithPallets": "{volume} CBM • {weight} kg • {count, plural, one {# pallet} other {# pallets}}",
"ratesFound": "Rates found",
"bestChoices": "Best choices for your search",
"options": {
"economic": "Economy",
"standard": "Standard",
"fast": "Fast",
"badgeCheapest": "Cheapest",
"badgeBalanced": "Balanced",
"badgeFastest": "Fastest"
},
"totalPrice": "Total price",
"carrier": "Carrier:",
"transit": "Transit:",
"transitDays": "{days} days",
"type": "Type:",
"select": "Select this option",
"allResults": "All available rates ({count})",
"priceBreakdown": {
"base": "Base price",
"volume": "Volume charge",
"weight": "Weight charge",
"transit": "Transit time"
},
"validUntil": "✓ Valid until {date}",
"surcharges": "Applicable surcharges",
"selectShort": "Select"
}
},
"notificationsPage": {
"title": "Notifications",
"totalLabel": "{count, plural, one {# notification total} other {# notifications total}}",
"unreadSuffix": " • {count, plural, one {# unread} other {# unread}}",
"markAllRead": "Mark all as read",
"filter": {
"label": "Filter:",
"all": "All",
"unread": "Unread",
"read": "Read"
},
"loading": "Loading notifications...",
"empty": {
"title": "No notifications",
"upToDate": "You're all caught up!",
"none": "No notifications to display"
},
"new": "NEW",
"deleteTitle": "Delete notification",
"deleteConfirm": "Are you sure you want to delete this notification?",
"viewDetails": "View details",
"priority": {
"urgent": "URGENT",
"high": "HIGH",
"medium": "MEDIUM",
"low": "LOW"
},
"time": {
"now": "Just now",
"minutes": "{count}m ago",
"hours": "{count}h ago",
"days": "{count}d ago"
},
"pagination": {
"info": "Page <b>{current}</b> of <b>{total}</b> • <b>{items}</b> {items, plural, one {notification} other {notifications}} total",
"previous": "Previous",
"next": "Next"
}
},
"bookingDetail": {
"back": "← Back to bookings",
"notFound": "Booking not found",
"createdOn": "Created on {date}",
"downloadPdf": "Download PDF",
"pdfNotImplemented": "PDF download functionality is not yet implemented",
"status": {
"draft": "Draft",
"pending": "Pending",
"confirmed": "Confirmed",
"in_transit": "In transit",
"delivered": "Delivered",
"cancelled": "Cancelled"
},
"cargo": {
"title": "Cargo Details",
"description": "Description",
"specialInstructions": "Special Instructions"
},
"containers": {
"title": "Containers ({count})",
"type": "Type",
"number": "Container Number",
"seal": "Seal Number",
"vgm": "VGM (kg)"
},
"shipper": {
"title": "Shipper",
"name": "Name",
"contact": "Contact",
"email": "Email",
"phone": "Phone"
},
"consignee": {
"title": "Consignee",
"name": "Name",
"contact": "Contact",
"email": "Email",
"phone": "Phone"
},
"timeline": {
"title": "Timeline",
"created": "Booking Created"
},
"info": {
"title": "Information",
"bookingId": "Booking ID",
"lastUpdated": "Last Updated"
}
},
"profile": {
"loading": "Loading profile...",
"loadError": "Unable to load profile",
"retry": "Retry",
"header": {
"title": "My Profile",
"subtitle": "Manage your account settings and preferences"
},
"active": "Active",
"tabs": {
"profile": "Personal information",
"password": "Change password"
},
"profileForm": {
"firstName": "First name",
"lastName": "Last name",
"email": "Email address",
"emailHelp": "Email address cannot be changed",
"save": "Save",
"saving": "Saving...",
"successUpdate": "Profile updated successfully!",
"errorUpdate": "Failed to update profile"
},
"passwordForm": {
"current": "Current password",
"new": "New password",
"confirm": "Confirm new password",
"newHint": "At least 12 characters with uppercase, lowercase, number and special character",
"submit": "Update",
"submitting": "Updating...",
"successUpdate": "Password updated successfully!",
"errorUpdate": "Failed to update password",
"errors": {
"currentRequired": "Current password is required",
"newMin": "Password must be at least 12 characters",
"newComplexity": "Password must contain uppercase, lowercase, number and special character",
"confirmRequired": "Please confirm your password",
"mismatch": "Passwords do not match"
},
"fieldErrors": {
"firstNameMin": "First name must be at least 2 characters",
"lastNameMin": "Last name must be at least 2 characters",
"emailInvalid": "Invalid email address"
}
}
},
"organizationSettings": {
"loading": "Loading...",
"loadError": "Unable to load organization",
"errorTitle": "Error",
"header": {
"title": "Organization settings",
"subtitle": "Manage your organization information"
},
"saveSuccess": "Information saved successfully",
"loadFailed": "Loading error",
"saveFailed": "Save error",
"readOnlyWarning": "Read-only mode - Only administrators and managers can edit the organization",
"tabs": {
"information": "Information",
"address": "Address",
"subscription": "Subscription",
"licenses": "Licenses"
},
"information": {
"name": "Company name",
"namePlaceholder": "Xpeditis",
"siren": "SIREN",
"sirenHint": "French Business Registration System",
"sirenDigits": "9 digits",
"sirenPlaceholder": "123 456 789",
"eori": "EORI Number",
"eoriHint": "Economic Operators Registration and Identification",
"eoriHelp": "Country code (2 letters) + unique number (max 15 characters)",
"eoriPlaceholder": "FR123456789",
"phone": "Phone",
"phonePlaceholder": "+33 6 80 18 28 12",
"email": "Email",
"emailPlaceholder": "contact@xpeditis.com"
},
"address": {
"street": "Street",
"streetPlaceholder": "123 Main Street",
"postalCode": "Postal code",
"postalCodePlaceholder": "75001",
"city": "City",
"cityPlaceholder": "Paris",
"country": "Country",
"countries": {
"FR": "France",
"BE": "Belgium",
"DE": "Germany",
"ES": "Spain",
"IT": "Italy",
"NL": "Netherlands",
"GB": "United Kingdom",
"US": "United States",
"CN": "China"
}
},
"actions": {
"cancel": "Cancel",
"save": "Save",
"saving": "Saving..."
}
},
"apiKeys": {
"title": "API Keys",
"description": "Manage programmatic access keys to the Xpeditis API.",
"newKey": "New key",
"infoTitle": "How to use your API keys",
"infoBody": "Add the {code} header to every HTTP request. {link}",
"viewDocs": "View documentation",
"loading": "Loading...",
"noKeys": "No API keys yet.",
"createFirst": "Create your first key",
"table": {
"name": "Name / Prefix",
"lastUsed": "Last used",
"expiry": "Expires",
"status": "Status"
},
"status": {
"revoked": "Revoked",
"expired": "Expired",
"active": "Active"
},
"revoke": "Revoke this key",
"quota": "{active} / {max} active keys used",
"copy": {
"copied": "Copied",
"copy": "Copy"
},
"createModal": {
"title": "New API key",
"name": "Key name",
"namePlaceholder": "e.g.: ERP Production integration",
"nameCount": "{count}/100 characters",
"expiry": "Expiry date",
"optional": "(optional)",
"expiryHint": "If empty, the key never expires.",
"errorGeneric": "An error occurred. Please try again.",
"cancel": "Cancel",
"create": "Create key",
"creating": "Creating..."
},
"createdModal": {
"title": "API key created",
"warning": "Copy this key now.",
"warningRest": "It will never be shown again after closing this window.",
"fullKey": "Full API key",
"storeHint": "Store it in your environment variables or a secrets manager.",
"close": "I've copied my key, close"
},
"revokeModal": {
"title": "Revoke this key?",
"description": "This action is",
"descriptionEmphasis": "immediate and irreversible",
"descriptionRest": ". Any request using this key will be rejected.",
"cancel": "Cancel",
"confirm": "Revoke"
},
"noAccess": {
"title": "API Access",
"description": "Programmatic access to the Xpeditis API is available only on {gold} and {platinium} plans.",
"gold": "Gold",
"platinium": "Platinium",
"viewPlans": "View plans"
}
},
"usersManagement": {
"loading": "Loading users...",
"header": {
"title": "User Management",
"subtitle": "Manage team members and their permissions"
},
"license": {
"limitTitle": "License limit reached",
"limitMessage": "Your organization has used all available licenses ({used}/{max}). Upgrade your subscription to invite more users.",
"upgradeLink": "Upgrade subscription",
"remaining": "{count, plural, one {# license remaining} other {# licenses remaining}} ({used}/{max} used)",
"manageLink": "Manage subscription"
},
"actions": {
"invite": "Invite a user",
"inviteShort": "Invite",
"upgrade": "Upgrade",
"upgradeShort": "Upgrade"
},
"exportFilename": "users",
"export": {
"firstName": "First name",
"lastName": "Last name",
"email": "Email",
"role": "Role",
"status": "Status",
"createdAt": "Created at"
},
"messages": {
"inviteSuccess": "Invitation sent successfully! The user will receive an email with a sign-up link.",
"inviteError": "Failed to send invitation",
"roleSuccess": "Role updated successfully",
"roleError": "Failed to update role",
"statusSuccess": "User status updated successfully",
"statusError": "Failed to update status",
"deleteSuccess": "User deleted successfully",
"deleteError": "Failed to delete user",
"cancelInviteSuccess": "Invitation cancelled successfully",
"cancelInviteError": "Failed to cancel invitation"
},
"confirms": {
"toggleActive": "Are you sure you want to {action} this user?",
"toggleActivate": "activate",
"toggleDeactivate": "deactivate",
"delete": "Are you sure you want to delete this user? This action is irreversible.",
"cancelInvite": "Cancel the invitation sent to {name}?"
},
"users": {
"title": "Users",
"membersCount": "{count, plural, one {# member} other {# members}}",
"table": {
"user": "User",
"email": "Email",
"role": "Role",
"status": "Status",
"createdAt": "Created at",
"actions": "Actions"
},
"active": "Active",
"inactive": "Inactive",
"empty": {
"title": "No users",
"description": "Start by inviting a team member"
},
"actions": {
"activate": "Activate",
"deactivate": "Deactivate",
"delete": "Delete"
}
},
"invitations": {
"title": "Pending invitations",
"subtitle": "Users invited but not yet signed up — {count, plural, one {# invitation} other {# invitations}}",
"table": {
"user": "User",
"email": "Email",
"role": "Role",
"expires": "Expires on",
"status": "Status",
"actions": "Actions"
},
"expired": "Expired",
"pending": "Pending",
"cancel": "Cancel"
},
"modal": {
"title": "Invite a user",
"firstName": "First name",
"lastName": "Last name",
"email": "Email address",
"role": "Role",
"roles": {
"USER": "User",
"MANAGER": "Manager",
"VIEWER": "Viewer",
"ADMIN": "Admin"
},
"rolesExport": {
"ADMIN": "Administrator",
"MANAGER": "Manager",
"USER": "User",
"VIEWER": "Viewer"
},
"submit": "Send invitation",
"submitting": "Sending...",
"cancel": "Cancel"
},
"pagination": {
"info": "{from}{to} of {total}"
}
},
"subscriptionRedirect": {
"loading": "Redirecting..."
},
"admin": {
"bookings": {
"loading": "Loading bookings...",
"loadError": "Unable to load bookings",
"deleteError": "Error while deleting",
"validateError": "Error while validating bank transfer",
"confirmDelete": "Permanently delete this booking?",
"confirmValidate": "Confirm receipt of bank transfer and activate this booking?",
"title": "Booking management",
"subtitle": "All platform bookings",
"stats": {
"total": "Total",
"pendingBankTransfer": "Transfers to validate",
"pendingCarrier": "Awaiting carrier",
"accepted": "Accepted",
"rejected": "Rejected"
},
"search": {
"label": "Search",
"placeholder": "Booking #, carrier, route, pallets, weight, CBM..."
},
"filter": {
"label": "Status",
"all": "All statuses"
},
"status": {
"PENDING_PAYMENT": "Payment pending",
"PENDING_BANK_TRANSFER": "Transfer to validate",
"PENDING": "Awaiting carrier",
"ACCEPTED": "Accepted",
"REJECTED": "Rejected",
"CANCELLED": "Cancelled"
},
"table": {
"bookingNumber": "Booking #",
"route": "Route",
"cargo": "Cargo",
"carrier": "Carrier",
"status": "Status",
"date": "Date",
"actions": "Actions",
"empty": "No booking found",
"pallets": "pal."
},
"menu": {
"viewDetails": "View details",
"validateTransfer": "Validate transfer",
"delete": "Delete"
},
"modal": {
"title": "Booking details",
"bookingNumber": "Booking #",
"status": "Status",
"routeSection": "Route",
"origin": "Origin",
"destination": "Destination",
"cargoSection": "Cargo & Carrier",
"carrier": "Carrier",
"containerType": "Container type",
"pallets": "Pallets",
"weight": "Weight",
"volume": "Volume",
"priceSection": "Price",
"datesSection": "Dates",
"createdAt": "Created on",
"updatedAt": "Updated",
"validateButton": "✓ Validate transfer",
"validating": "Validating...",
"close": "Close",
"none": "—"
}
},
"csvRates": {
"title": "CSV rates management",
"subtitle": "Admin interface to manage maritime rate CSV files",
"adminBadge": "ADMIN ONLY",
"cardTitle": "Active CSV configurations",
"cardDescription": "List of all companies with configured CSV files",
"loadError": "Error while loading files",
"confirmDelete": "Are you sure you want to delete the file {filename}?",
"deleteSuccess": "File deleted: {filename}",
"deleteError": "Error: {message}",
"deleteFailedFallback": "Unable to delete the file",
"empty": "No file found. Upload a CSV file to get started.",
"table": {
"filename": "File",
"size": "Size",
"rows": "Rows",
"uploadedAt": "Upload date",
"email": "Email",
"actions": "Actions",
"rowCount": "{count} rows"
},
"infoTitle": "Information",
"info": {
"formatLabel": "Required CSV format:",
"formatBody": "Refer to the documentation for the complete list of required columns.",
"sizeLabel": "Maximum size:",
"sizeBody": "10 MB per file",
"updateLabel": "Update:",
"updateBody": "Uploading a new file for an existing company will overwrite the previous one.",
"validationLabel": "Validation:",
"validationBody": "The system automatically validates the CSV structure on upload."
}
},
"documents": {
"title": "Document management",
"subtitle": "List of all CSV quote documents",
"loading": "Loading documents...",
"loadError": "Unable to load documents",
"deleteError": "Error while deleting",
"confirmDelete": "Permanently delete this document?",
"downloadError": "Error while downloading the document: {message}",
"unknownError": "Unknown error",
"stats": {
"totalDocs": "Total Documents",
"bookingsWithDocs": "Quotes with Documents",
"filtered": "Filtered Documents"
},
"filters": {
"search": "Search",
"searchPlaceholder": "Name, type, route...",
"quoteNumber": "Quote Number",
"quoteNumberPlaceholder": "Ex: #F2CAD5E1",
"user": "User",
"allUsers": "All users"
},
"table": {
"name": "Document Name",
"type": "Type",
"quoteNumber": "Quote Number",
"route": "Route",
"status": "Status",
"user": "User",
"actions": "Actions",
"empty": "No document found"
},
"menu": {
"download": "Download",
"delete": "Delete"
},
"pagination": {
"previous": "Previous",
"next": "Next",
"showing": "Showing",
"to": "to",
"on": "of",
"results": "results",
"perPage": "Per page:"
}
},
"logs": {
"title": "System logs",
"subtitle": "Real-time visualisation and export of application logs",
"refresh": "Refresh",
"export": "Export",
"exporting": "Exporting...",
"downloadCsv": "Download CSV",
"downloadJson": "Download JSON",
"stats": {
"total": "Total logs",
"errors": "Errors",
"warnings": "Warnings",
"info": "Info"
},
"filters": {
"title": "Filters",
"service": "Service",
"level": "Level",
"search": "Search",
"searchPlaceholder": "Free text...",
"start": "Start",
"end": "End",
"limit": "Limit",
"apply": "Filter",
"all": "All"
},
"errorBanner": "Unable to reach the log-exporter:",
"errorHint": "Make sure the backend and the log-exporter are running.",
"loading": "Loading...",
"entries": "{count, plural, one {# entry} other {# entries}}",
"clickHint": "Click on a row for details",
"empty": "No log found for these filters",
"table": {
"timestamp": "Timestamp",
"service": "Service",
"level": "Level",
"context": "Context",
"message": "Message",
"req": "Req / Status"
},
"detail": {
"timestamp": "Timestamp",
"requestId": "Request ID",
"duration": "Duration",
"fullMessage": "Full message"
}
},
"organizations": {
"loading": "Loading organizations...",
"loadError": "Unable to load organizations",
"createError": "Failed to create organization",
"updateError": "Failed to update organization",
"siretError": "Error while verifying the SIRET",
"siretApproveError": "Error while approving",
"siretRejectError": "Error while rejecting",
"siretInvalid": "Invalid or unknown SIRET.",
"siretVerified": "SIRET successfully verified!\nCompany: {companyName}\nAddress: {address}",
"confirmApprove": "Confirm manual approval of this organization's SIRET/SIREN?",
"confirmReject": "Confirm rejection of the SIRET/SIREN? The organization will no longer be able to make purchases.",
"title": "Organization Management",
"subtitle": "Manage all organizations in the system",
"create": "+ Create Organization",
"types": {
"FREIGHT_FORWARDER": "Freight Forwarder",
"CARRIER": "Carrier",
"SHIPPER": "Shipper"
},
"active": "Active",
"inactive": "Inactive",
"scac": "SCAC",
"siren": "SIREN",
"siret": "SIRET",
"verified": "Verified",
"notVerified": "Not verified",
"notProvided": "Not provided",
"email": "Email",
"location": "Location",
"edit": "Edit",
"verifying": "...",
"verifyApi": "Verify via API",
"approveSiret": "Approve SIRET",
"rejectSiret": "Reject SIRET",
"modal": {
"createTitle": "Create New Organization",
"editTitle": "Edit Organization",
"name": "Organization Name *",
"type": "Type *",
"scacLabel": "SCAC Code *",
"sirenLabel": "SIREN",
"siretLabel": "SIRET (14 digits)",
"siretPlaceholder": "12345678901234",
"eoriLabel": "EORI",
"contactPhone": "Contact Phone",
"contactEmail": "Contact Email",
"street": "Street Address *",
"city": "City *",
"postalCode": "Postal Code *",
"state": "State / Region",
"country": "Country *",
"logoUrl": "Logo URL",
"cancel": "Cancel",
"create": "Create",
"update": "Update"
}
},
"users": {
"loading": "Loading users...",
"loadError": "Failed to load data",
"createError": "Failed to create user",
"updateError": "Failed to update user",
"deleteError": "Failed to delete user",
"title": "User Management",
"subtitle": "Manage all users in the system",
"create": "+ Create User",
"table": {
"user": "User",
"email": "Email",
"role": "Role",
"organization": "Organization",
"status": "Status",
"actions": "Actions"
},
"active": "Active",
"inactive": "Inactive",
"edit": "Edit",
"delete": "Delete",
"roles": {
"USER": "User",
"MANAGER": "Manager",
"ADMIN": "Admin",
"VIEWER": "Viewer"
},
"modal": {
"createTitle": "Create New User",
"editTitle": "Edit User",
"email": "Email",
"emailReadOnly": "Email (read-only)",
"firstName": "First Name",
"lastName": "Last Name",
"role": "Role",
"organization": "Organization",
"selectOrganization": "Select Organization",
"password": "Password (leave empty for auto-generated)",
"cancel": "Cancel",
"create": "Create",
"update": "Update"
},
"deleteConfirm": {
"title": "Confirm Delete",
"message": "Are you sure you want to delete user {firstName} {lastName}? This action cannot be undone.",
"cancel": "Cancel",
"confirm": "Delete"
}
}
},
"subscription": {
"currentPlan": "Current plan",
"refresh": "Refresh",
"refreshing": "Refreshing...",
"statusActive": "Active",
"cancelAtPeriodEnd": "Cancellation scheduled",
"manageBilling": "Manage billing",
"manageBillingLoading": "Loading...",
"licenseUsage": "License usage",
"unlimited": "Unlimited",
"currentPeriod": "Current period: until",
"availablePlans": "Available plans",
"billingMonthly": "Monthly",
"billingYearly": "Yearly",
"yearlySaving": "-1 month",
"perYear": "/year",
"perMonth": "/month",
"customQuote": "Custom quote",
"maxUsers": "Up to {count} users",
"unlimitedUsers": "Unlimited users",
"currentPlanButton": "Current plan",
"contactUs": "Contact us",
"upgradeButton": "Upgrade",
"upgradeLoading": "Loading...",
"downgrade": "Downgrade via Billing",
"successMessage": "Your subscription has been successfully updated!",
"updatingMessage": "Updating...",
"canceledMessage": "Payment was canceled. Your subscription has not been modified.",
"checkoutError": "Error creating payment session",
"portalError": "Error opening billing portal",
"noLicenses": "No licenses available. Upgrade to a higher plan to add users.",
"licensesRemaining": "{count} license(s) remaining."
},
"wiki": {
"title": "Maritime Wiki",
"description": "Knowledge base on maritime import/export. Click on a topic to learn more.",
"helpText": "These guides are regularly updated with the latest regulations and best practices in the maritime sector.",
"needHelp": "Need help?",
"topics": {
"incoterms": {
"title": "Incoterms 2020",
"description": "International rules for interpreting commercial terms"
},
"documents": {
"title": "Transport Documents",
"description": "Essential documents for maritime transport"
},
"containers": {
"title": "Containers and Cargo Types",
"description": "Complete guide to maritime container types"
},
"lclFcl": {
"title": "LCL vs FCL",
"description": "Differences between groupage and full container"
},
"customs": {
"title": "Customs Procedures",
"description": "Guide to import/export customs formalities"
},
"insurance": {
"title": "Marine Insurance",
"description": "Protection of goods in transit"
},
"freight": {
"title": "Maritime Freight Calculation",
"description": "How transport costs are calculated"
},
"ports": {
"title": "Ports and Maritime Routes",
"description": "The main global trade routes"
},
"vgm": {
"title": "VGM (Verified Gross Mass)",
"description": "Container weighing obligation (SOLAS)"
},
"imdg": {
"title": "Dangerous Goods (IMDG)",
"description": "Transport of dangerous goods by sea"
},
"letterOfCredit": {
"title": "Letter of Credit (L/C)",
"description": "Secure international payment instrument"
},
"transitTime": {
"title": "Transit Time and Delays",
"description": "Understanding delays in maritime transport"
}
}
},
"trackTrace": {
"title": "Shipment Tracking",
"description": "Track your shipments in real time. Enter your tracking number and select the carrier.",
"searchCard": {
"title": "Search a shipment",
"description": "Enter your container number, Bill of Lading (B/L) or booking reference",
"selectCarrier": "Select the carrier",
"trackingNumber": "Tracking number",
"searchButton": "Search",
"showMap": "Show maritime map",
"hideMap": "Hide maritime map"
},
"errors": {
"noTrackingNumber": "Please enter a tracking number",
"noCarrier": "Please select a carrier"
},
"map": {
"title": "World Maritime Map",
"subtitle": "Real-time vessel positions",
"minimize": "Minimize",
"fullscreen": "Full screen",
"loading": "Loading map...",
"connecting": "Connecting to MarineTraffic",
"legend": "Legend",
"cargo": "Cargo",
"tankers": "Tankers",
"passengers": "Passengers",
"activeVessels": "Active vessels",
"worldPorts": "World ports",
"dataSource": "Data provided by MarineTraffic - Real-time updates",
"openOnSite": "Open on MarineTraffic",
"iframeTitle": "Real-time maritime map"
},
"history": {
"title": "Search history",
"clearAll": "Clear all",
"empty": "No recent searches",
"emptyHint": "Your searches will appear here"
},
"help": {
"containerNumber": {
"title": "Container number",
"description": "Standard format: 4 letters + 7 digits (e.g. MSKU1234567). The prefix usually indicates the container owner."
},
"billOfLading": {
"title": "Bill of Lading (B/L)",
"description": "The Bill of Lading number is provided by the carrier upon booking confirmation. The format varies by carrier."
},
"bookingRef": {
"title": "Booking reference",
"description": "Booking number assigned by the carrier when the space on the vessel was initially booked."
}
},
"infoBox": {
"title": "How does tracking work?",
"description": "This feature redirects you to the carrier's official website to get the most up-to-date tracking information. The displayed data comes directly from the carrier's system."
},
"timeAgo": {
"justNow": "Just now",
"minutesAgo": "{count}min ago",
"hoursAgo": "{count}h ago",
"daysAgo": "{count}d ago"
},
"carriers": {
"containerOrBl": "Container no. or B/L",
"containerBlOrBooking": "Container no., B/L or booking",
"containerOnly": "Container no."
}
},
"userDocuments": {
"title": "My Documents",
"description": "Manage all documents from your bookings",
"loading": "Loading documents...",
"error": "Error loading documents",
"stats": {
"total": "Total Documents",
"withDocuments": "Bookings with Documents",
"filtered": "Filtered Documents"
},
"filters": {
"search": "Search",
"searchPlaceholder": "Name, type, route, carrier...",
"quoteNumber": "Quote Number",
"status": "Status",
"allStatuses": "All statuses"
},
"table": {
"documentName": "Document Name",
"type": "Type",
"quoteNumber": "Quote No.",
"route": "Route",
"carrier": "Carrier",
"status": "Status",
"actions": "Actions"
},
"statuses": {
"PENDING": "Pending",
"ACCEPTED": "Accepted",
"REJECTED": "Rejected",
"CANCELLED": "Cancelled"
},
"empty": {
"noDocuments": "No documents found. Add documents to your bookings.",
"noMatch": "No documents match the selected filters."
},
"pagination": {
"previous": "Previous",
"next": "Next",
"perPage": "Per page:",
"showing": "Showing {from} to {to} of {total} results"
},
"actions": {
"download": "Download",
"replace": "Replace"
},
"export": {
"fileName": "File name",
"type": "Type",
"quoteNumber": "Quote No.",
"route": "Route",
"carrier": "Carrier",
"status": "Status",
"uploadedAt": "Date added"
},
"addDocument": {
"buttonLabel": "Add a document",
"modalTitle": "Add a document",
"selectBooking": "Select a booking",
"selectBookingPlaceholder": "-- Choose a booking --",
"filesToAdd": "Files to add",
"acceptedFormats": "Accepted formats: PDF, Word, Excel, Images (max 10 files)",
"uploading": "Uploading...",
"add": "Add",
"cancel": "Cancel",
"successMessage": "Documents added successfully!",
"errorMessage": "Error adding documents",
"noBookingError": "Please select a booking and at least one file"
},
"replaceDocument": {
"modalTitle": "Replace document",
"currentDocument": "Current document:",
"booking": "Booking",
"newFile": "New file",
"acceptedFormats": "Accepted formats: PDF, Word, Excel, Images",
"replacing": "Replacing...",
"replace": "Replace",
"cancel": "Cancel",
"successMessage": "Document replaced successfully!",
"errorMessage": "Error replacing document",
"noFileError": "Please select a replacement file"
},
"downloadError": "Error downloading document"
},
"wikiPages": {
"backToWiki": "Back to Wiki",
"responsibleLabel": "Responsible",
"includesLabel": "Covered",
"excludesLabel": "Excluded",
"mandatoryLabel": "Mandatory",
"optionalLabel": "Conditional",
"incoterms": {
"title": "Incoterms 2020",
"description": "Incoterms (International Commercial Terms) are rules published by the International Chamber of Commerce (ICC) that define the responsibilities of sellers and buyers in international transactions. The 2020 version came into effect on January 1, 2020.",
"keyPointsTitle": "Key Points",
"keyPoints": [
"11 incoterms in the 2020 version",
"Applicable to all modes of transport (7 rules) or maritime only (4 rules)",
"Define risk transfer, costs, and documentation obligations",
"Do not determine ownership transfer or payment conditions",
"Compulsory inclusion in the sales contract"
],
"categoriesTitle": "Categories",
"categorySections": [
{ "name": "Departure", "description": "Minimum obligations for the seller", "terms": ["EXW"] },
{ "name": "Arrival", "description": "Maximum obligations for the seller", "terms": ["DDP"] },
{ "name": "Maritime only", "description": "For sea and inland waterway transport", "terms": ["FAS", "FOB", "CFR", "CIF"] }
],
"tableTitle": "Incoterms 2020 — Summary",
"colCode": "Code",
"colName": "Name",
"colDescription": "Description",
"colRisk": "Risk Transfer",
"colTransport": "Transport",
"list": [
{ "code": "EXW", "name": "Ex Works", "description": "The seller makes goods available at their premises. Minimum obligations for the seller.", "risk": "At seller's premises", "transport": "All modes" },
{ "code": "FCA", "name": "Free Carrier", "description": "The seller delivers goods to a named carrier or another person nominated by the buyer.", "risk": "On delivery to carrier", "transport": "All modes" },
{ "code": "CPT", "name": "Carriage Paid To", "description": "The seller pays freight to the named destination, but risk transfers at the first carrier.", "risk": "At first carrier", "transport": "All modes" },
{ "code": "CIP", "name": "Carriage and Insurance Paid To", "description": "Same as CPT but with insurance. Requires ICC-A coverage (upgraded vs. 2010).", "risk": "At first carrier", "transport": "All modes" },
{ "code": "DAP", "name": "Delivered at Place", "description": "The seller delivers when goods are placed at the buyer's disposal at the named destination.", "risk": "At destination", "transport": "All modes" },
{ "code": "DPU", "name": "Delivered at Place Unloaded", "description": "New in 2020: replaces DAT. The seller unloads at the named place.", "risk": "After unloading", "transport": "All modes" },
{ "code": "DDP", "name": "Delivered Duty Paid", "description": "Maximum obligation for the seller: delivered, duties paid. Risk until final destination.", "risk": "At final destination", "transport": "All modes" },
{ "code": "FAS", "name": "Free Alongside Ship", "description": "The seller delivers goods alongside the named vessel. Maritime only.", "risk": "Alongside ship", "transport": "Maritime only" },
{ "code": "FOB", "name": "Free on Board", "description": "The seller delivers goods on board the vessel. Most common for bulk cargo.", "risk": "On board ship", "transport": "Maritime only" },
{ "code": "CFR", "name": "Cost and Freight", "description": "The seller pays freight to the destination port, but risk transfers on board at origin.", "risk": "On board at origin", "transport": "Maritime only" },
{ "code": "CIF", "name": "Cost Insurance and Freight", "description": "Same as CFR but with minimum insurance (ICC-C). Common in international trade.", "risk": "On board at origin", "transport": "Maritime only" }
],
"diagramTitle": "Risk Transfer Diagram",
"sellerResponsibility": "Seller's responsibility",
"buyerResponsibility": "Buyer's responsibility",
"tipsTitle": "Practical Tips",
"tips": [
"For FCL maritime shipments, prefer FCA or FOB rather than EXW",
"For airfreight, avoid FOB — use FCA instead",
"DDP requires the seller to manage customs in the buyer's country — complex",
"CIP now requires ICC-A coverage (vs. ICC-C for CIF)",
"Always specify the exact named place after the incoterm code"
]
},
"assurance": {
"title": "Maritime Insurance",
"description": "Maritime insurance protects goods during international transport. It is essential for international trade and is often required by banks for letters of credit.",
"iccTitle": "ICC Clauses (Institute Cargo Clauses)",
"clauses": [
{
"name": "ICC A",
"level": "All risks",
"includes": ["All accidental causes", "Natural calamities", "General Average", "Jettison", "Theft", "Contamination"],
"excludes": ["Willful misconduct", "Normal wear", "Delay", "War (needs extension)", "Strikes (needs extension)"]
},
{
"name": "ICC B",
"level": "Intermediate",
"includes": ["Fire / explosion", "Stranding / grounding", "Collision / capsizing", "General Average", "Earthquake / tidal wave"],
"excludes": ["Theft", "Contamination", "Moisture", "War (needs extension)"]
},
{
"name": "ICC C",
"level": "Basic",
"includes": ["Fire / explosion", "Vessel stranding / sinking", "Collision", "General Average"],
"excludes": ["Theft", "Damage", "Moisture", "Contamination", "War (needs extension)"]
}
],
"extensionsTitle": "Coverage Extensions",
"extensions": [
{ "name": "War clause", "description": "Covers losses due to war, terrorism, piracy" },
{ "name": "Strikes clause", "description": "Covers losses due to strikes, riots, civil commotion" },
{ "name": "Reefer clause", "description": "Specific coverage for temperature-controlled goods" },
{ "name": "On-deck clause", "description": "Coverage for goods stowed on deck (often excluded)" },
{ "name": "Groupage clause", "description": "Specific to LCL shipments (shared containers)" }
],
"processTitle": "Insurance Process",
"processSteps": [
"Request quote from insurer or broker",
"Check the goods and required coverage",
"Issue of the insurance certificate",
"Declare the shipment (if open policy)",
"In case of claim: immediate notification + damage report"
],
"valueTitle": "Insured Value",
"valueFormula": "Insured value = (Invoice value + freight + 10% profit) × 1.1",
"valueNote": "The 10% covers profit and generally accepted commercial markup"
},
"calculFret": {
"title": "Freight Calculation",
"description": "Understanding freight pricing is essential to anticipate all costs. Maritime freight is made up of a basic rate plus numerous surcharges that can significantly increase the final cost.",
"surchargesTitle": "Main Surcharges",
"colCode": "Code",
"colName": "Name",
"colDescription": "Description",
"colVariation": "Variation",
"surcharges": [
{ "code": "BAF", "name": "Bunker Adjustment Factor", "description": "Fuel cost adjustment", "variation": "Monthly, based on oil price" },
{ "code": "CAF", "name": "Currency Adjustment Factor", "description": "Exchange rate fluctuation compensation", "variation": "Per currency and route" },
{ "code": "PSS", "name": "Peak Season Surcharge", "description": "Added during peak season (AugOct)", "variation": "Seasonal" },
{ "code": "GRI", "name": "General Rate Increase", "description": "General annual rate increase", "variation": "Announced quarterly" },
{ "code": "THC", "name": "Terminal Handling Charge", "description": "Port terminal handling costs", "variation": "Fixed per port" },
{ "code": "EBS", "name": "Emergency Bunker Surcharge", "description": "Temporary surcharge for fuel price spikes", "variation": "As needed" },
{ "code": "ISPS", "name": "International Ship & Port Security", "description": "Port security compliance cost", "variation": "Fixed" },
{ "code": "B/L Fee", "name": "Bill of Lading Fee", "description": "Document issuance fee", "variation": "Fixed per B/L" }
],
"additionalCostsTitle": "Additional Costs",
"colCost": "Typical cost",
"additionalCosts": [
{ "name": "Pre-carriage", "description": "Road transport from warehouse to origin port", "typical": "Varies by distance" },
{ "name": "Origin charges", "description": "THC, documentation, customs at origin", "typical": "150400 USD" },
{ "name": "Ocean freight", "description": "Base freight rate + surcharges", "typical": "Main item" },
{ "name": "Destination charges", "description": "THC, handling, document fees at destination", "typical": "200500 USD" },
{ "name": "Customs duties", "description": "Import duties based on HS code", "typical": "025% of value" },
{ "name": "On-carriage", "description": "Road transport from destination port to warehouse", "typical": "Varies by distance" }
],
"exampleTitle": "FCL Quote Example (40' HC)",
"colItem": "Item",
"colAmount": "Amount",
"exampleItems": [
{ "item": "Base ocean freight", "amount": "1,200 USD" },
{ "item": "BAF (Bunker)", "amount": "350 USD" },
{ "item": "CAF (Currency)", "amount": "50 USD" },
{ "item": "THC Origin", "amount": "180 USD" },
{ "item": "THC Destination", "amount": "220 USD" },
{ "item": "B/L Fee", "amount": "55 USD" },
{ "item": "ISPS", "amount": "30 USD" },
{ "item": "Pre-carriage", "amount": "250 USD" },
{ "item": "Total", "amount": "2,335 USD" }
]
},
"conteneurs": {
"title": "Containers",
"description": "Containers are the foundation of maritime transport. Knowing the different types and their dimensions is essential for planning your shipments.",
"standardTitle": "Standard Container Types",
"colDimensions": "Dimensions (L×W×H)",
"colInternal": "Internal",
"colDoor": "Door opening",
"colVolume": "Volume",
"colPayload": "Max payload",
"containers": [
{ "type": "20' Dry", "description": "Standard container for general cargo", "internal": "5.90m × 2.35m × 2.39m", "door": "2.34m × 2.28m", "volume": "33.2 m³", "payload": "21,727 kg" },
{ "type": "40' Dry", "description": "Standard container, double the length of a 20'", "internal": "12.03m × 2.35m × 2.39m", "door": "2.34m × 2.28m", "volume": "67.7 m³", "payload": "26,500 kg" },
{ "type": "40' High Cube", "description": "High cube — 30cm taller than standard", "internal": "12.03m × 2.35m × 2.69m", "door": "2.34m × 2.58m", "volume": "76.3 m³", "payload": "26,460 kg" },
{ "type": "20' Reefer", "description": "Refrigerated container (-25°C to +25°C)", "internal": "5.50m × 2.29m × 2.25m", "door": "2.28m × 2.20m", "volume": "28.4 m³", "payload": "21,000 kg" },
{ "type": "40' Reefer", "description": "40-foot refrigerated container for large refrigerated loads", "internal": "11.56m × 2.29m × 2.25m", "door": "2.28m × 2.20m", "volume": "59.8 m³", "payload": "22,000 kg" },
{ "type": "20' Open Top", "description": "Open top container for over-height cargo", "internal": "5.90m × 2.35m × 2.35m", "door": "2.34m × 2.28m", "volume": "32.6 m³", "payload": "20,000 kg" },
{ "type": "20' Flat Rack", "description": "Flat rack for over-dimensional or heavy cargo", "internal": "5.62m × 2.24m × 2.03m", "door": "N/A", "volume": "N/A", "payload": "45,000 kg" }
],
"specialEquipmentTitle": "Special Equipment",
"specialEquipment": [
{ "name": "ISO Tank", "description": "For liquids, chemicals, food products in bulk" },
{ "name": "Bulk Container", "description": "For dry bulk (grains, minerals) — top hatch" },
{ "name": "Platform (Bolster)", "description": "For oversized cargo without lateral walls" },
{ "name": "Ventilated Container", "description": "Natural ventilation for agricultural products (coffee, cocoa)" }
],
"selectionTitle": "Container Selection Guide",
"colCondition": "Condition",
"colRecommendation": "Recommendation",
"selectionGuide": [
{ "condition": "Standard general cargo", "recommendation": "20' or 40' Dry depending on volume" },
{ "condition": "Temperature-sensitive goods", "recommendation": "Reefer 20' or 40'" },
{ "condition": "Over-height cargo (> 2.2m)", "recommendation": "Open Top or Flat Rack" },
{ "condition": "Over-length/weight cargo", "recommendation": "Flat Rack or Platform" },
{ "condition": "Bulk liquids", "recommendation": "ISO Tank" },
{ "condition": "Volume < 15 m³", "recommendation": "Consider LCL" }
]
},
"documentsTransport": {
"title": "Transport Documents",
"description": "Maritime transport documents are essential for the physical and commercial movement of goods. Each document plays a specific role in the logistics chain.",
"mainDocumentsTitle": "Main Documents",
"colType": "Type",
"colVariants": "Variants",
"documents": [
{
"name": "Bill of Lading (B/L)",
"type": "Maritime",
"description": "The key maritime transport document. It has three functions: transport contract, receipt of goods, and title document.",
"types": ["Original B/L (negotiable)", "Sea Waybill (non-negotiable)", "Telex Release (electronic release)", "Express B/L"]
},
{
"name": "Commercial Invoice",
"type": "Commercial",
"description": "Document issued by the seller describing the goods and the sale price. Basis for customs clearance.",
"types": ["Pro-forma invoice", "Commercial invoice", "Consular invoice (some countries)"]
},
{
"name": "Packing List",
"type": "Commercial",
"description": "Detailed description of packing, quantities, weights and dimensions of each package.",
"types": ["Neutral packing list", "Detailed packing list"]
},
{
"name": "Certificate of Origin",
"type": "Customs",
"description": "Certifies the country of origin of the goods for customs clearance and preferential duties.",
"types": ["EUR.1 (EU preferences)", "Form A (GSP)", "CO issued by chamber of commerce", "REX (Registered Exporter)"]
},
{
"name": "Insurance Certificate",
"type": "Insurance",
"description": "Proof of insurance covering the goods during transport. Often required by banks for L/C.",
"types": ["Open policy", "Individual certificate", "Insurance declaration"]
},
{
"name": "Customs Declaration",
"type": "Customs",
"description": "Mandatory for export (EX) and import (IM) customs clearance. Filed electronically.",
"types": ["Export declaration (EX1)", "Import declaration (IM4)", "Transit (T1, T2)"]
}
],
"additionalDocsTitle": "Other Important Documents",
"additionalDocs": [
{ "name": "EUR.1 / EUR-MED", "description": "Proof of origin for preferential duties in EU agreements" },
{ "name": "Sanitary / Phytosanitary Certificate", "description": "Required for food products, plants, animals" },
{ "name": "Free Sale Certificate", "description": "Certifies the product is legally marketed in the exporting country" },
{ "name": "Dangerous Goods Certificate", "description": "IMDG/MSDS declaration for hazardous goods" },
{ "name": "Fumigation Certificate", "description": "Confirms wooden packaging has been treated" }
],
"blFocusTitle": "B/L — The Essential Document",
"blFunctions": [
{ "title": "Transport Contract", "description": "Proves the contract between the shipper and the carrier" },
{ "title": "Receipt of Goods", "description": "The carrier acknowledges having received the goods in stated condition" },
{ "title": "Title Document", "description": "The holder of the original B/L can claim the goods at destination" }
]
},
"douanes": {
"title": "Customs Procedures",
"description": "Customs is a mandatory step for international trade. Understanding customs regimes, required documents and duties helps you plan your operations effectively.",
"regimesTitle": "Customs Regimes",
"colCode": "Code",
"colName": "Name",
"colDescription": "Description",
"regimes": [
{ "code": "40 00", "name": "Release for Free Circulation", "description": "Standard import — goods are cleared for the domestic market" },
{ "code": "10 00", "name": "Permanent Export", "description": "Standard export — goods leave the customs territory definitively" },
{ "code": "42 00", "name": "Release with VAT Suspension", "description": "Release followed by intra-EU supply — VAT deferred" },
{ "code": "21 00", "name": "Re-export", "description": "Exit of non-EU goods previously placed under customs procedure" },
{ "code": "51 00", "name": "Inward Processing", "description": "Import of goods to be processed and re-exported — duties suspended" },
{ "code": "61 00", "name": "Outward Processing", "description": "Export of goods for processing abroad and reimport" },
{ "code": "71 00", "name": "Customs Warehouse", "description": "Storage under customs supervision — duties suspended until release" }
],
"documentsTitle": "Required Documents",
"documents": [
{ "name": "Commercial Invoice", "mandatory": true, "description": "With price, quantities, incoterm, origin" },
{ "name": "Packing List", "mandatory": true, "description": "Detailed description of packages" },
{ "name": "Transport Document", "mandatory": true, "description": "B/L, Air Waybill, CMR depending on mode" },
{ "name": "Certificate of Origin", "mandatory": false, "description": "Required for preferential rates or restricted origins" },
{ "name": "Import License", "mandatory": false, "description": "For regulated or restricted goods" },
{ "name": "Health/Phyto Certificate", "mandatory": false, "description": "For food, plants, animals" }
],
"dutiesTitle": "Customs Duties",
"colType": "Type",
"duties": [
{ "type": "Import Duties", "description": "Applied on the customs value (CIF at border). Rate based on HS code (025% in EU)." },
{ "type": "VAT", "description": "Applied on (customs value + import duties + transport). 20% standard rate." },
{ "type": "Excise Duties", "description": "Specific to alcohol, tobacco, hydrocarbons." }
]
},
"imdg": {
"title": "IMDG Code — Dangerous Goods",
"description": "The IMDG Code (International Maritime Dangerous Goods) defines the rules for transporting dangerous goods by sea. Compliance is mandatory for safety and to avoid customs and maritime sanctions.",
"classesTitle": "IMDG Dangerous Goods Classes",
"subdivisionsLabel": "Subdivisions",
"classes": [
{ "class": "Class 1", "name": "Explosives", "description": "Explosives and articles", "subdivisions": ["1.1 Mass explosion", "1.2 Projection hazard", "1.3 Fire hazard", "1.4 No significant hazard", "1.5 Very insensitive", "1.6 Extremely insensitive"] },
{ "class": "Class 2", "name": "Gases", "description": "Compressed, liquefied, dissolved gases", "subdivisions": ["2.1 Flammable gases", "2.2 Non-flammable, non-toxic gases", "2.3 Toxic gases"] },
{ "class": "Class 3", "name": "Flammable Liquids", "description": "Liquids with flash point ≤ 60°C" },
{ "class": "Class 4", "name": "Flammable Solids", "description": "Solids and self-reactive substances", "subdivisions": ["4.1 Flammable solids", "4.2 Spontaneously combustible", "4.3 Dangerous when wet"] },
{ "class": "Class 5", "name": "Oxidizers", "description": "Oxidizing substances and organic peroxides", "subdivisions": ["5.1 Oxidizing substances", "5.2 Organic peroxides"] },
{ "class": "Class 6", "name": "Toxic / Infectious", "description": "Toxic and infectious substances", "subdivisions": ["6.1 Toxic substances", "6.2 Infectious substances"] },
{ "class": "Class 7", "name": "Radioactive", "description": "Radioactive materials" },
{ "class": "Class 8", "name": "Corrosive", "description": "Corrosive substances" },
{ "class": "Class 9", "name": "Miscellaneous", "description": "Miscellaneous dangerous substances and articles (e.g. lithium batteries)" }
],
"documentsTitle": "Required Documents",
"documents": [
{ "name": "DGD (Dangerous Goods Declaration)", "description": "Mandatory shipper's declaration: UN number, proper shipping name, class, packing group, quantity, emergency contact" },
{ "name": "MSDS (Material Safety Data Sheet)", "description": "Technical data sheet: composition, hazards, first aid, handling, storage" },
{ "name": "Container Packing Certificate", "description": "Certifies goods have been properly packed per IMDG rules" },
{ "name": "Emergency Response Information", "description": "Emergency contact available 24/7 (CHEMTREC, company)" },
{ "name": "Transport Labels", "description": "Hazard labels affixed to packages and the container" }
],
"packagingGroupsTitle": "Packaging Groups",
"packagingGroups": [
{ "group": "Group I (X)", "description": "High danger — most stringent packaging requirements" },
{ "group": "Group II (Y)", "description": "Medium danger — standard packaging" },
{ "group": "Group III (Z)", "description": "Low danger — less stringent requirements" }
],
"labelingTitle": "Labeling and Placarding",
"labelingContent": "Each package must display: UN number, proper shipping name, hazard labels and class. Containers must display 250mm × 250mm placards matching the IMDG class. Mixed loads require labels for each dangerous good.",
"segregationTitle": "Segregation",
"segregationContent": "Some dangerous goods cannot be loaded in the same container or must be stowed away from others. The IMDG segregation table defines compatible/incompatible classes."
},
"lclVsFcl": {
"title": "LCL vs FCL",
"description": "Choosing between LCL (Less than Container Load) and FCL (Full Container Load) is a key decision in maritime freight planning. Each mode has specific advantages and constraints.",
"lclTitle": "LCL — Less than Container Load",
"lclDescription": "Your goods share a container with other shippers' cargo. The freight forwarder consolidates multiple LCL shipments into a single FCL.",
"fclTitle": "FCL — Full Container Load",
"fclDescription": "You have exclusive use of an entire container (20', 40' or 40'HC). More economical from a certain volume.",
"comparisonTitle": "Detailed Comparison",
"colCriterion": "Criterion",
"colLcl": "LCL",
"colFcl": "FCL",
"criteria": [
{ "criterion": "Volume", "lcl": "< 15 m³ or < 10 tonnes", "fcl": "> 15 m³ or full container" },
{ "criterion": "Price", "lcl": "Per CBM (m³) or tonne", "fcl": "Fixed per container" },
{ "criterion": "Security", "lcl": "Moderate (shared with others)", "fcl": "Better (dedicated container)" },
{ "criterion": "Transit time", "lcl": "+37 days (groupage operations)", "fcl": "Faster (direct service possible)" },
{ "criterion": "Damage risk", "lcl": "Higher (more handling)", "fcl": "Lower (single loading)" },
{ "criterion": "Flexibility", "lcl": "Higher (departure even with small volumes)", "fcl": "Lower (must fill the container)" },
{ "criterion": "Hazardous goods", "lcl": "Restricted (segregation required)", "fcl": "Easier (dedicated container)" }
],
"lclProcessTitle": "LCL Process",
"lclProcess": [
{ "step": "1", "title": "Delivery to CFS", "description": "Bring goods to the Container Freight Station for consolidation" },
{ "step": "2", "title": "Consolidation", "description": "Freight forwarder consolidates multiple LCL shipments" },
{ "step": "3", "title": "FCL departure", "description": "Consolidated container departs as FCL" },
{ "step": "4", "title": "Deconsolidation", "description": "At destination CFS: container unpacking" },
{ "step": "5", "title": "Delivery", "description": "Individual delivery of each LCL shipment to its consignee" }
],
"chooseLclTitle": "Choose LCL if:",
"chooseLcl": [
"Volume < 15 m³",
"Irregular or trial shipment",
"Non-urgent goods",
"Budget-conscious with small volume",
"Need regular small shipments"
],
"chooseFclTitle": "Choose FCL if:",
"chooseFcl": [
"Volume > 15 m³",
"Fragile or high-value goods",
"Hazardous goods (IMDG)",
"Temperature-sensitive goods (reefer)",
"Goods requiring confidentiality"
]
},
"lettreCredit": {
"title": "Letter of Credit",
"description": "The Letter of Credit (L/C) is a bank payment guarantee used in international trade. It protects both the exporter (guaranteed payment on document compliance) and the importer (payment only on compliant delivery).",
"typesTitle": "Types of Letters of Credit",
"types": [
{ "name": "Irrevocable L/C", "description": "Cannot be modified or cancelled without agreement of all parties. Standard under UCP 600." },
{ "name": "Confirmed L/C", "description": "The beneficiary's bank adds its own payment guarantee. Protection against issuing bank risk." },
{ "name": "Sight L/C", "description": "Payment upon presentation of compliant documents. Immediate payment." },
{ "name": "Deferred L/C", "description": "Payment at a future date (30, 60, 90 days). Credit granted to the buyer." },
{ "name": "Transferable L/C", "description": "Can be transferred to a secondary beneficiary (useful for intermediaries)." },
{ "name": "Standby L/C", "description": "Bank guarantee, activated only in case of buyer default. Simpler than documentary credit." }
],
"partiesTitle": "Parties Involved",
"colRole": "Role",
"parties": [
{ "role": "Applicant (Importer)", "description": "The buyer who requests the L/C at their bank" },
{ "role": "Issuing Bank", "description": "The importer's bank that issues the L/C" },
{ "role": "Beneficiary (Exporter)", "description": "The seller who benefits from the L/C" },
{ "role": "Advising Bank", "description": "The exporter's bank that advises the L/C (without guarantee)" },
{ "role": "Confirming Bank", "description": "The exporter's bank that adds its guarantee (confirmed L/C)" }
],
"documentsTitle": "Required Documents",
"documents": [
{ "name": "Bill of Lading", "description": "Original B/L 'clean on board', marked 'freight prepaid' (or 'collect' depending on incoterm)" },
{ "name": "Commercial Invoice", "description": "In exact conformity with the L/C — amounts, currencies, description" },
{ "name": "Packing List", "description": "Consistent with invoice and B/L" },
{ "name": "Insurance Certificate", "description": "Required if CIF or CIP — amounts and coverage per L/C" },
{ "name": "Certificate of Origin", "description": "If required by the L/C — form EUR.1, Form A, or chamber of commerce" },
{ "name": "Inspection Certificate", "description": "SGS or other if required by the buyer" },
{ "name": "Phytosanitary Certificate", "description": "For plants, wood, agricultural products" }
],
"errorsTitle": "Common Errors (Discrepancies)",
"errors": [
"Description of goods not identical to L/C",
"Invoice amount exceeds the L/C amount",
"Shipping documents presented after deadline",
"Port of loading or destination different from L/C",
"Missing document or incomplete set",
"B/L not marked 'clean on board'",
"Missing or incorrect insurance amount"
],
"ucp600Title": "UCP 600 — Governing Rules",
"ucp600Content": "The Uniform Customs and Practice for Documentary Credits, published by the ICC (2007 revision). Defines standards for examination of documents (5 banking days), the concept of strict compliance, and the roles of banks.",
"datesTitle": "Key Dates",
"datesItems": [
{ "label": "Shipment deadline", "description": "Latest date for shipment (on board date on B/L)" },
{ "label": "Presentation deadline", "description": "Number of days after shipment to present documents (typically 21 days)" },
{ "label": "L/C expiry", "description": "Final deadline for all document presentation" }
],
"costsTitle": "Costs",
"costsItems": [
{ "label": "Issuance commission", "description": "0.10.3% of L/C amount (importer's bank)" },
{ "label": "Confirmation commission", "description": "0.20.5% per quarter (confirming bank)" },
{ "label": "Amendment fee", "description": "Fixed fee per amendment" },
{ "label": "Discrepancy fee", "description": "Fixed fee in case of document discrepancy" }
]
},
"portsRoutes": {
"title": "Ports and Maritime Routes",
"description": "Maritime trade is organized around major global routes connecting production zones and consumption markets. Understanding these routes and strategic passages is essential for optimizing shipping costs and transit times.",
"majorRoutesTitle": "Major Maritime Routes",
"colVia": "Via",
"colTransit": "Transit time",
"colPorts": "Key ports",
"routes": [
{ "name": "Asia — Europe", "description": "World's busiest route in terms of volume", "via": "Suez Canal", "transitTime": "2035 days", "majorPorts": ["Shanghai", "Singapore", "Rotterdam", "Hamburg", "Le Havre"] },
{ "name": "Asia — North America (West)", "description": "Trans-Pacific — growth driven by US-China trade", "via": "Direct Pacific", "transitTime": "1218 days", "majorPorts": ["Shanghai", "Ningbo", "Los Angeles", "Long Beach", "Seattle"] },
{ "name": "Asia — North America (East)", "description": "Via Panama or Suez Canal for large vessels", "via": "Suez or Panama", "transitTime": "2845 days", "majorPorts": ["Shanghai", "Singapore", "New York", "Savannah", "Houston"] },
{ "name": "Europe — North America", "description": "Trans-Atlantic — major trade route", "via": "Direct Atlantic", "transitTime": "1016 days", "majorPorts": ["Rotterdam", "Antwerp", "Hamburg", "New York", "Baltimore"] }
],
"passagesTitle": "Strategic Passages",
"colLength": "Length",
"colTraffic": "Traffic",
"passages": [
{ "name": "Suez Canal", "location": "Egypt", "length": "193 km", "description": "Key passage between Mediterranean and Red Sea. Closure causes 1520 extra days via Cape of Good Hope.", "keyStat": "~12% of world trade" },
{ "name": "Panama Canal", "location": "Panama", "length": "82 km", "description": "Connects Atlantic and Pacific. New locks (2016) allow Neopanamax vessels (366m).", "keyStat": "~5% of world trade" },
{ "name": "Strait of Malacca", "location": "Malaysia / Indonesia", "length": "900 km", "description": "World's busiest strait. 80% of Asian energy supply passes through it.", "keyStat": "~25% of world trade" },
{ "name": "Strait of Hormuz", "location": "Iran / Oman", "length": "54 km", "description": "Gateway for 20% of world oil trade. Strategic geopolitical importance.", "keyStat": "20% of oil" }
],
"portsTitle": "Major World Ports (TEU)",
"colRank": "Rank",
"colPort": "Port",
"colCountry": "Country",
"colTeu": "TEU / year",
"ports": [
{ "rank": 1, "port": "Shanghai", "country": "China", "teu": "47M" },
{ "rank": 2, "port": "Singapore", "country": "Singapore", "teu": "37M" },
{ "rank": 3, "port": "Ningbo-Zhoushan", "country": "China", "teu": "33M" },
{ "rank": 4, "port": "Shenzhen", "country": "China", "teu": "29M" },
{ "rank": 5, "port": "Guangzhou", "country": "China", "teu": "24M" },
{ "rank": 6, "port": "Qingdao", "country": "China", "teu": "24M" },
{ "rank": 7, "port": "Busan", "country": "South Korea", "teu": "22M" },
{ "rank": 8, "port": "Tianjin", "country": "China", "teu": "21M" },
{ "rank": 9, "port": "Dubai (Jebel Ali)", "country": "UAE", "teu": "15M" },
{ "rank": 10, "port": "Rotterdam", "country": "Netherlands", "teu": "15M" }
],
"hubGatewayTitle": "Hub vs Gateway",
"hubTitle": "Hub Port",
"hubDescription": "Transshipment port — large vessels call here and goods are redistributed to smaller vessels (feeder). Examples: Singapore, Dubai, Algeciras.",
"gatewayTitle": "Gateway Port",
"gatewayDescription": "Port serving a domestic hinterland — direct port for import/export of a country or region. Examples: Le Havre (France), Rotterdam (North Europe)."
},
"vgm": {
"title": "VGM (Verified Gross Mass)",
"description": "Since July 1, 2016, the SOLAS Convention (Safety of Life at Sea) requires that the verified weight of every container be transmitted before loading. This obligation aims to prevent accidents caused by misdeclared containers.",
"whyTitle": "Why VGM?",
"why": [
{ "title": "Safety", "description": "Misdeclared containers cause serious accidents (falling containers, unstable ships)." },
{ "title": "Ship stability", "description": "The captain must know the exact weight to calculate the stowage plan." },
{ "title": "Port equipment", "description": "Cranes and gantries are rated for maximum loads." },
{ "title": "Land transport", "description": "Prevents overloads on trucks and wagons for pre/post-carriage." }
],
"componentsTitle": "VGM Components",
"formula": "VGM = Tare + Cargo + Packaging + Securing material",
"elements": [
{ "element": "Container tare", "description": "Empty weight of the container (shown on the door)", "example": "2,200 kg (20')" },
{ "element": "Cargo", "description": "Gross weight of all goods", "example": "Variable" },
{ "element": "Packaging", "description": "Pallets, cartons, plastic film...", "example": "200500 kg" },
{ "element": "Securing material", "description": "Dunnage, strapping, airbags...", "example": "50200 kg" }
],
"methodsTitle": "Determination Methods",
"processLabel": "Process",
"advantagesLabel": "Advantages",
"disadvantagesLabel": "Disadvantages",
"methods": [
{
"method": "Method 1",
"name": "Weighing the complete container",
"description": "Weighing of the loaded and sealed container on a certified scale.",
"process": ["Loading the container", "Sealing the container", "Weighing on a certified weighbridge", "Transmitting the VGM"],
"advantages": ["More accurate", "Fewer calculations"],
"disadvantages": ["Requires a weighbridge", "Container already sealed"]
},
{
"method": "Method 2",
"name": "Calculation by addition",
"description": "Addition of container tare and the weight of all loaded items.",
"process": ["Weighing each package individually", "Adding all weights", "Adding securing material", "Adding container tare"],
"advantages": ["No weighbridge needed", "Can be done progressively"],
"disadvantages": ["More complex", "Risk of cumulative error"]
}
],
"responsibilityTitle": "Responsibilities",
"responsibilities": [
{ "role": "Shipper", "description": "Legal owner of the VGM. Must obtain, certify and transmit the verified weight." },
{ "role": "Freight Forwarder", "description": "Can transmit the VGM on behalf of the shipper. Remains an intermediary." },
{ "role": "Shipping Line", "description": "Cannot load a container without a VGM. Can reject a clearly erroneous VGM." }
],
"tolerancesTitle": "Tolerances",
"toleranceLabel": "Typical tolerance",
"toleranceValue": "± 5% of declared weight or ± 500 kg (the lesser)",
"consequenceLabel": "Consequence if exceeded",
"consequenceValue": "Re-weighing at shipper's expense, possible delay",
"sanctionsTitle": "Sanctions by Region",
"sanctions": [
{ "region": "France", "sanction": "Fine up to €7,500 and refusal to load" },
{ "region": "USA", "sanction": "Refusal to load, fine from coast guard" },
{ "region": "China", "sanction": "Refusal to load, port penalties" },
{ "region": "European Union", "sanction": "Variable application by member state" }
],
"tipsTitle": "Best Practices",
"tips": [
"Submit VGM at least 2448h before cut-off",
"Use calibrated and certified scales",
"Keep weighing records for at least 3 years",
"Check specific requirements of each shipping line",
"Train staff in VGM procedures",
"Never deliberately understate the weight"
]
},
"transitTime": {
"title": "Transit Time and Delays",
"description": "Delay management is crucial in maritime transport. Understanding the different stages, cut-off dates and late fees helps optimize the supply chain and avoid extra costs.",
"keyTermsTitle": "Key Terms",
"etd": "Estimated Time of Departure — estimated departure",
"eta": "Estimated Time of Arrival — estimated arrival",
"cutoff": "Deadline for cargo/documents drop-off",
"freeTime": "Free days before late charges apply",
"timelineTitle": "FCL Shipment Timeline",
"responsibleLabel": "Responsible",
"timeline": [
{ "step": "Booking", "description": "Reserving space on the vessel", "delay": "17 days before cut-off", "responsible": "Freight forwarder / Exporter" },
{ "step": "Container pickup", "description": "Collecting the empty container from the depot", "delay": "25 days before cut-off", "responsible": "Land carrier" },
{ "step": "Stuffing", "description": "Loading goods into the container", "delay": "13 days before cut-off", "responsible": "Exporter" },
{ "step": "Documentation cut-off", "description": "Deadline to submit documents (B/L, VGM)", "delay": "2448h before ETD", "responsible": "Freight forwarder" },
{ "step": "Cargo cut-off", "description": "Deadline to deliver container to terminal", "delay": "2448h before ETD", "responsible": "Land carrier" },
{ "step": "ETD (Estimated Time of Departure)", "description": "Estimated vessel departure from origin port", "delay": "Day 0", "responsible": "Shipping line" },
{ "step": "Sea transit", "description": "Sea crossing (varies by route)", "delay": "1045 days", "responsible": "Shipping line" },
{ "step": "ETA (Estimated Time of Arrival)", "description": "Estimated arrival at destination port", "delay": "Day 0 + transit", "responsible": "Shipping line" },
{ "step": "Unloading", "description": "Vessel unloading and quayside placement", "delay": "13 days after ETA", "responsible": "Port terminal" },
{ "step": "Customs clearance", "description": "Customs formalities at destination", "delay": "15 days", "responsible": "Customs broker" },
{ "step": "Delivery", "description": "Final delivery to consignee", "delay": "15 days", "responsible": "Land carrier" }
],
"transitTimesTitle": "Indicative Transit Times",
"colRoute": "Route",
"colTime": "Transit Time",
"colVia": "Via",
"transitTimes": [
{ "route": "Shanghai → Rotterdam", "time": "2832 days", "via": "Suez" },
{ "route": "Shanghai → Le Havre", "time": "3035 days", "via": "Suez" },
{ "route": "Shanghai → Los Angeles", "time": "1215 days", "via": "Direct Pacific" },
{ "route": "Shanghai → New York", "time": "3540 days", "via": "Suez or Panama" },
{ "route": "Rotterdam → New York", "time": "1014 days", "via": "Direct Atlantic" },
{ "route": "Mumbai → Rotterdam", "time": "1822 days", "via": "Suez" },
{ "route": "Santos → Rotterdam", "time": "1822 days", "via": "Direct Atlantic" }
],
"transitNote": "Note: These times are indicative and vary depending on rotations, transshipments and conditions.",
"freeTimeTitle": "Free Time (Free Days)",
"freeTimeDescription": "Period during which the container can remain at the terminal or at the importer's without additional charges.",
"freeTimeStandard": "Standard free time",
"freeTimeValue": "714 days",
"freeTimeNote": "Depending on carrier and port",
"demurrageStart": "Demurrage start",
"demurrageStartDesc": "Begins after free time at the terminal",
"detentionStart": "Detention start",
"detentionStartDesc": "Begins when the container leaves the terminal (gate-out)",
"lateFeesTitle": "Late Fees",
"colRate": "Indicative rate",
"colLocation": "Location",
"lateFees": [
{ "name": "Demurrage", "definition": "Charges for container remaining at terminal beyond free time", "rate": "50150 USD/day/container", "location": "Port terminal" },
{ "name": "Detention", "definition": "Charges for container kept outside terminal beyond free time", "rate": "30100 USD/day/container", "location": "At importer's" },
{ "name": "Storage", "definition": "Terminal storage charges (separate from demurrage)", "rate": "Variable by port", "location": "Port terminal" },
{ "name": "Per Diem", "definition": "Combined daily charges (sometimes used for demurrage+detention)", "rate": "50200 USD/day", "location": "Variable" }
],
"delayFactorsTitle": "Factors Affecting Delays",
"potentialDelaysTitle": "Potential delays",
"potentialDelays": [
"Port congestion (Los Angeles, Rotterdam)",
"Weather conditions (typhoons, storms)",
"Canal closures (Suez, Panama)",
"Customs inspection (scanner, checks)",
"Blank sailings (cancelled rotations)",
"Strikes (dockers, carriers)"
],
"seasonalVariationsTitle": "Seasonal variations",
"seasonalVariations": [
"Chinese New Year (February): +23 weeks",
"Golden Week (October): Asia congestion",
"Peak Season (AugustOctober): surcharges, delays",
"Year-end holidays: Christmas rush"
],
"rolloverTitle": "Roll-over",
"rolloverDescription": "Situation where a container is not loaded on the scheduled vessel and is rolled over to the next departure.",
"rolloverCausesTitle": "Common causes:",
"rolloverCauses": [
"Full vessel (overbooking)",
"Container arrived after cargo cut-off",
"Missing or incorrect documents",
"VGM not transmitted on time",
"Issue with goods (DG, inspection)"
],
"rolloverImpact": "Impact: Generally +7 days delay (weekly service)",
"tipsTitle": "Tips to Optimize Delays",
"tips": [
"Book early, especially in peak season (23 weeks ahead)",
"Respect cut-offs with a safety buffer (minimum 24h)",
"Prepare documents in parallel with stuffing",
"Negotiate extra free time for large volumes",
"Actively track vessels (AIS, carrier portals)",
"Prepare customs clearance in advance (pre-clearance if possible)",
"Have a backup plan in case of roll-over (alternative service)",
"Avoid critical shipments during high-risk periods"
]
}
}
},
"components": {
"notificationDropdown": {
"ariaLabel": "Notifications",
"header": "Notifications",
"markAllRead": "Mark all as read",
"loading": "Loading notifications…",
"empty": "No new notifications",
"viewAll": "View all notifications",
"time": {
"now": "Just now",
"minutes": "{minutes} min ago",
"hours": "{hours} h ago",
"days": "{days} d ago"
}
},
"notificationPanel": {
"title": "Notifications",
"totalCount": "{count, plural, one {# notification total} other {# notifications total}}",
"closeAria": "Close panel",
"filters": {
"all": "All",
"unread": "Unread",
"read": "Read"
},
"markAllRead": "Mark all as read",
"loading": "Loading notifications…",
"emptyTitle": "No notifications",
"emptyUnread": "You're all caught up!",
"emptyAll": "Nothing to show",
"deleteConfirm": "Are you sure you want to delete this notification?",
"deleteTitle": "Delete notification",
"viewDetails": "View details →",
"pagination": {
"page": "Page {current} of {total}",
"previous": "Previous",
"next": "Next"
}
},
"exportButton": {
"label": "Export",
"exporting": "Exporting…",
"lockedTooltip": "Upgrade to the Silver plan to export your data",
"csvTitle": "Export CSV",
"csvSubtitle": "Compatible with Excel, Google Sheets",
"excelTitle": "Export Excel",
"excelSubtitle": "Native .xls format",
"rowsToExport": "{count, plural, one {# row to export} other {# rows to export}}",
"errorCsv": "CSV export failed",
"errorExcel": "Excel export failed",
"boolean": {
"true": "Yes",
"false": "No"
}
},
"adminPanelDropdown": {
"trigger": "Administration",
"items": {
"users": "Users",
"usersDesc": "Manage users and permissions",
"organizations": "Organizations",
"organizationsDesc": "Manage organizations and companies",
"bookings": "Bookings",
"bookingsDesc": "View and manage all bookings",
"documents": "Documents",
"documentsDesc": "Manage organization documents",
"csvRates": "CSV rates",
"csvRatesDesc": "Import and manage CSV rates",
"logs": "System logs",
"logsDesc": "View and download application logs"
}
},
"csvUpload": {
"title": "Upload CSV rates",
"description": "Upload a CSV file containing maritime shipping rates for a company. Maximum size: 10 MB. Required format: .csv",
"fileTypeError": "Only CSV (.csv) files are accepted",
"fileSizeError": "The file must not exceed 10 MB",
"fillAllFields": "Please fill in every field",
"successMessage": "✅ Success! {count} rates uploaded for {companyName}",
"uploadError": "CSV upload failed",
"form": {
"companyName": "Company name",
"companyNamePlaceholder": "Ex: SSC Consolidation",
"companyNameHint": "Exact name of the maritime company (must match the CSV data)",
"companyEmail": "Company email",
"companyEmailPlaceholder": "Ex: bookings@sscconsolidation.com",
"companyEmailHint": "Email used for booking requests sent to this company",
"fileLabel": "CSV file",
"fileSelected": "Selected file:",
"formatTitle": "Required CSV format",
"formatIntro": "The CSV file must contain the following columns:",
"errorTitle": "Error",
"successTitle": "Success",
"submit": "Upload CSV",
"submitting": "Uploading…",
"reset": "Reset"
}
},
"cookieConsent": {
"openAria": "Open cookie settings",
"banner": {
"title": "We use cookies",
"body": "We use cookies to improve your experience, analyze site traffic, and personalize content. By clicking \"Accept all\", you agree to our use of cookies.",
"learnMore": "Learn more",
"customize": "Customize",
"essentialOnly": "Essential only",
"acceptAll": "Accept all"
},
"settings": {
"title": "Cookie preferences",
"closeAria": "Close settings",
"save": "Save my preferences",
"acceptAll": "Accept all",
"footer": "You can change your preferences any time in your account settings or by clicking the cookie icon at the bottom left.",
"policyLink": "Cookie policy",
"essential": {
"title": "Essential cookies",
"alwaysOn": "Always on",
"body": "Required for the site to work. They cannot be disabled."
},
"functional": {
"title": "Functional cookies",
"body": "Allow the site to remember your preferences and settings (language, region)."
},
"analytics": {
"title": "Analytics cookies",
"body": "Help us understand how visitors interact with the site (Google Analytics, Sentry)."
},
"marketing": {
"title": "Marketing cookies",
"body": "Used to display personalized ads and measure campaign effectiveness."
}
}
},
"bookingsTable": {
"headers": {
"bookingNumber": "Booking #",
"status": "Status",
"carrier": "Carrier",
"origin": "Origin",
"destination": "Destination",
"shipper": "Shipper",
"consignee": "Consignee",
"etd": "ETD",
"eta": "ETA",
"containers": "Containers",
"created": "Created"
}
},
"bookingFilters": {
"title": "Filters",
"showMore": "Show more",
"showLess": "Show less",
"reset": "Reset all",
"search": "Search",
"searchPlaceholder": "Booking number, shipper, consignee…",
"carrier": "Carrier",
"carrierPlaceholder": "Carrier name or SCAC",
"originPort": "Origin port",
"destinationPort": "Destination port",
"portCodePlaceholder": "Port code",
"shipper": "Shipper",
"shipperPlaceholder": "Shipper name",
"consignee": "Consignee",
"consigneePlaceholder": "Consignee name",
"createdFrom": "Created from",
"createdTo": "Created to",
"etdFrom": "ETD from",
"etdTo": "ETD to",
"status": "Status",
"sortBy": "Sort by",
"sortOptions": {
"createdAt": "Created date",
"bookingNumber": "Booking number",
"status": "Status",
"etd": "ETD",
"eta": "ETA"
},
"activeCount": "{count, plural, one {# active filter} other {# active filters}}"
},
"bulkActions": {
"selectedCount": "{count, plural, one {# booking selected} other {# bookings selected}}",
"clearSelection": "Clear selection",
"exportSelected": "Export selected",
"exporting": "Exporting…",
"exportCsv": "Export as CSV",
"exportExcel": "Export as Excel",
"exportJson": "Export as JSON",
"exportFailed": "Export failed: {message}",
"bulkUpdate": "Bulk update",
"bulkUpdateSoon": "Bulk update is coming soon!"
}
},
"carrierPortal": {
"common": {
"tokenMissing": "Missing token",
"bookingNotFound": "Booking not found. The link may have expired.",
"bookingAlreadyAccepted": "This booking has already been accepted.",
"bookingAlreadyRejected": "This booking has already been rejected.",
"errorTitle": "Error",
"backHome": "Back to home",
"redirecting": "Redirecting to the homepage in {countdown, plural, one {# second} other {# seconds}}…"
},
"accept": {
"loadingTitle": "Processing…",
"loadingMessage": "We are processing your acceptance.",
"errorFallback": "Error while accepting the booking",
"errorGeneric": "Error during acceptance",
"thanksTitle": "Thank you!",
"successHeadline": "✅ Your acceptance has been recorded",
"successBody": "Thank you for accepting this transport request."
},
"reject": {
"loadingTitle": "Processing…",
"loadingMessage": "We are processing your rejection.",
"errorFallback": "Error while rejecting the booking",
"errorGeneric": "Error during rejection",
"thanksTitle": "Thank you for your response",
"successHeadline": "✓ Your rejection has been recorded",
"successBody": "We have noted your decision regarding this transport request."
},
"documents": {
"loading": "Loading…",
"loadingHint": "Please wait",
"errorTitle": "Error",
"retry": "Retry",
"linkInvalid": "Invalid link",
"loadError": "Error while loading",
"loadDocsError": "Error while loading the documents",
"bookingNotFound": "Booking not found. Please check that the link is correct.",
"notAcceptedYet": "This booking has not been accepted yet. Documents will be available after acceptance.",
"verifyError": "Error while verifying",
"passwordIncorrect": "Incorrect password. Check your email to find the password.",
"passwordMissing": "Please enter the password",
"downloadError": "Error during download. Please try again.",
"password": {
"title": "Secure access",
"intro": "This page is protected. Enter the password received by email to access the documents.",
"bookingLabel": "Booking:",
"passwordLabel": "Password",
"passwordPlaceholder": "Ex: A3B7K9",
"submit": "Access documents",
"verifying": "Verifying…",
"helpTitle": "Where to find the password?",
"helpBody": "The password was sent to you in the booking confirmation email. It corresponds to the last 6 characters of the quote number."
},
"header": {
"refresh": "Refresh"
},
"summary": {
"bookingNumberPrefix": "No.",
"volume": "Volume",
"weight": "Weight",
"transit": "Transit",
"transitDays": "{count, plural, one {# day} other {# days}}",
"type": "Type",
"carrierLabel": "Carrier:",
"refLabel": "Ref:"
},
"list": {
"heading": "Documents ({count})",
"empty": "No documents available at the moment.",
"emptyHint": "Documents will appear here once added.",
"download": "Download"
},
"footerNote": "This page always shows the most recent documents for the booking.",
"footer": "© {year} Xpeditis - Maritime freight platform",
"documentTypes": {
"BILL_OF_LADING": "Bill of Lading",
"PACKING_LIST": "Packing List",
"COMMERCIAL_INVOICE": "Commercial Invoice",
"CERTIFICATE_OF_ORIGIN": "Certificate of Origin",
"OTHER": "Other document"
}
}
},
"bookingPortal": {
"common": {
"supportPrompt": "For any question, contact us at",
"contactSupport": "Contact support"
},
"confirm": {
"loading": "Confirmation in progress…",
"errorTitle": "Confirmation error",
"errorGeneric": "An error occurred while accepting the request",
"tokenInvalid": "Invalid confirmation token",
"errorReasonsTitle": "Possible reasons:",
"errorReason1": "The link has expired",
"errorReason2": "The request has already been accepted or rejected",
"errorReason3": "The confirmation token is invalid",
"errorContact": "If you believe this is a mistake, please contact the customer directly.",
"successTitle": "Request accepted!",
"successHeadline": "Thank you for accepting this transport request.",
"successBody": "The customer has been notified by email.",
"summaryTitle": "Booking summary",
"labels": {
"bookingId": "Booking ID",
"route": "Route",
"volume": "Volume",
"weight": "Weight",
"pallets": "Pallets",
"containerType": "Container type",
"transitDays": "Transit time",
"price": "Price",
"notes": "Notes:",
"documents": "Provided documents",
"download": "Download"
},
"transitDaysValue": "{count, plural, one {# day} other {# days}}",
"nextStepsTitle": "Next steps",
"nextStep1": "The customer will finalise the container details",
"nextStep2": "You will receive an email with the required documents",
"nextStep3": "Payment will be processed under your usual terms"
},
"reject": {
"loading": "Loading…",
"errorTitle": "Rejection error",
"errorGeneric": "An error occurred while rejecting the request",
"tokenInvalid": "Invalid rejection token",
"errorReasonsTitle": "Possible reasons:",
"errorReason1": "The link has expired",
"errorReason2": "The request has already been accepted or rejected",
"errorReason3": "The token is invalid",
"errorContact": "If you believe this is a mistake, please contact the customer directly.",
"rejectedTitle": "Request rejected",
"rejectedHeadline": "You have rejected this transport request.",
"rejectedBody": "The customer has been notified by email.",
"summaryTitle": "Rejected request summary",
"labels": {
"bookingId": "Booking ID",
"route": "Route",
"volume": "Volume",
"weight": "Weight",
"proposedPrice": "Proposed price",
"rejectionReason": "Rejection reason:"
},
"infoTitle": "Information",
"infoBody": "The customer can submit a new request with different conditions if needed.",
"formTitle": "Reject this request",
"formIntro": "You are about to reject this transport request.",
"addReason": "Add a reason (optional)",
"reasonLabel": "Rejection reason (optional)",
"reasonPlaceholder": "E.g. Price too high, deadlines too short, route unavailable…",
"reasonHint": "This information will be shared with the customer",
"warningTitle": "Warning:",
"warningBody": "This action is irreversible. The customer will be immediately notified by email of your rejection.",
"submitting": "Rejection in progress…",
"submit": "Confirm rejection",
"helpText": "If you have questions before rejecting, contact us by email."
}
},
"marketing": {
"pricing": {
"header": {
"login": "Sign in",
"register": "Sign up"
},
"hero": {
"title": "Simple, transparent pricing",
"subtitle": "Pick the plan that fits your maritime transport activity. Start free, scale as you grow.",
"monthly": "Monthly",
"yearly": "Yearly",
"yearlyBadge": "1 month free"
},
"popular": "Popular",
"currency": {
"onQuote": "Custom quote",
"free": "Free",
"perMonth": "/month",
"yearlyPrice": "{price}/year (11 months)"
},
"stats": {
"users": "Users",
"shipments": "Shipments",
"commission": "Commission",
"support": "Support"
},
"features": {
"rates": "Rate search",
"bookings": "Bookings",
"dashboard": "Dashboard",
"wiki": "Maritime Wiki",
"userManagement": "User management",
"csvImport": "CSV import",
"apiAccess": "API access",
"customUI": "Custom interface",
"dedicatedKam": "Dedicated KAM"
},
"values": {
"unlimited": "Unlimited",
"shipmentsPerYear": "12/year",
"shipmentsUnlimited": "Unlimited",
"supportNone": "None",
"supportEmail": "Email",
"supportDirect": "Direct",
"supportKam": "Dedicated KAM"
},
"plans": {
"bronze": {
"name": "Bronze",
"description": "To get started and try the platform",
"cta": "Start free"
},
"silver": {
"name": "Silver",
"description": "For growing teams",
"cta": "Choose Silver"
},
"gold": {
"name": "Gold",
"description": "For established companies",
"cta": "Choose Gold"
},
"platinium": {
"name": "Platinium",
"description": "Tailored solutions",
"cta": "Contact us"
}
},
"footer": "All prices are in euros excl. tax. Yearly billing = 11 months."
},
"common": {
"lastUpdated": "Last updated: January 2025"
},
"privacy": {
"badge": "Data protection",
"title1": "Privacy",
"title2": "Policy",
"intro": "At Xpeditis, protecting your personal data is a top priority. This policy explains how we collect, use, and protect your information.",
"sections": {
"data": {
"title": "1. Data we collect",
"content": "We collect the following data:\n\n• **Identification data**: first name, last name, business email address, phone number\n• **Business data**: company name, role, business registration number\n• **Connection data**: IP address, login records, browsing data\n• **Transaction data**: booking history, quotes, invoices\n• **Communication data**: exchanges with our customer service"
},
"use": {
"title": "2. Use of data",
"content": "Your data is used to:\n\n• Provide and improve our maritime freight booking services\n• Manage your account and preferences\n• Process your quote requests and bookings\n• Send you commercial communications (with your consent)\n• Ensure the security of our platform\n• Meet our legal and regulatory obligations"
},
"protection": {
"title": "3. Data protection",
"content": "We implement robust security measures:\n\n• SSL/TLS encryption for all communications\n• Encryption of sensitive data at rest (AES-256)\n• Two-factor authentication available\n• Regular security audits\n• Continuous training of our teams\n• Hosting on ISO 27001-certified servers"
},
"rights": {
"title": "4. Your rights",
"content": "Under the GDPR, you have the following rights:\n\n• **Right of access**: get a copy of your personal data\n• **Right of rectification**: correct your inaccurate data\n• **Right of erasure**: request deletion of your data\n• **Right of portability**: receive your data in a structured format\n• **Right to object**: object to the processing of your data\n• **Right to restriction**: limit the processing of your data\n\nTo exercise these rights, contact us at: privacy@xpeditis.com"
},
"transfers": {
"title": "5. International transfers",
"content": "Your data may be transferred to non-EU countries as part of our international maritime freight services. These transfers are governed by:\n\n• Standard contractual clauses approved by the European Commission\n• Appropriate certifications (e.g. Privacy Shield for some providers)\n• Explicit consent for certain specific transfers"
},
"retention": {
"title": "6. Data retention",
"content": "We retain your data for the following durations:\n\n• **Account data**: duration of the business relationship + 3 years\n• **Transaction data**: 10 years (accounting obligations)\n• **Connection data**: 1 year\n• **Marketing data**: 3 years after the last contact\n\nAfter these periods, your data is deleted or anonymised."
}
},
"contact": {
"title": "Any questions?",
"body": "For any question regarding our privacy policy or your personal data, contact our Data Protection Officer."
}
},
"terms": {
"badge": "Legal framework",
"title1": "Terms of",
"title2": "Service",
"intro": "These terms govern your use of the Xpeditis platform. Please read them carefully before using our services.",
"sections": {
"purpose": {
"title": "1. Purpose and acceptance",
"content": "These Terms of Service (ToS) govern the use of the Xpeditis platform, accessible at www.xpeditis.com.\n\nBy accessing our platform and using our services, you accept these ToS without reservation. If you do not accept these terms, you must not use our services.\n\nXpeditis reserves the right to modify these ToS at any time. Users will be notified of any changes by email and/or notification on the platform."
},
"services": {
"title": "2. Description of services",
"content": "Xpeditis offers a B2B maritime freight booking platform that allows:\n\n• Search and comparison of maritime transport rates\n• Container booking with partner shipping companies\n• Real-time shipment tracking\n• Document management (Bill of Lading, certificates, etc.)\n• Access to an analytics dashboard\n\nXpeditis acts as a technological intermediary and does not replace maritime carriers in the performance of transport services."
},
"account": {
"title": "3. Registration and user account",
"content": "**Registration conditions**\nRegistration is reserved for transport and logistics professionals (freight forwarders, brokers, etc.). The user must provide accurate and complete information.\n\n**Account responsibility**\nThe user is responsible for the confidentiality of their credentials and all activities carried out under their account. They undertake to immediately notify Xpeditis in case of unauthorised use.\n\n**Suspension and termination**\nXpeditis may suspend or terminate an account in case of breach of the ToS, fraudulent activity, or non-payment."
},
"pricing": {
"title": "4. Pricing and payment",
"content": "**Displayed rates**\nThe rates displayed on the platform are indicative and may vary depending on availability and market conditions. The final rate is confirmed when the booking is validated.\n\n**Payment terms**\nPayments are made by bank transfer or credit card. Invoices are payable under the agreed conditions (usually 30 days).\n\n**Additional fees**\nAdditional fees may apply (fuel surcharges, port fees, etc.). These fees are clearly indicated before validation."
},
"liability": {
"title": "5. Liability",
"content": "**Limitation of liability**\nXpeditis acts as a technological intermediary. Liability for transport rests with the maritime companies under their general terms and applicable international conventions.\n\n**Force majeure**\nXpeditis cannot be held responsible for delays or cancellations due to force majeure (weather, strikes, pandemics, etc.).\n\n**Platform availability**\nXpeditis strives to keep the platform available 24/7. However, interruptions may occur for maintenance or technical reasons."
},
"ip": {
"title": "6. Intellectual property",
"content": "All elements of the Xpeditis platform (logo, design, texts, software, databases) are protected by intellectual property rights.\n\nThe user undertakes to:\n• Not reproduce, modify, or distribute the platform's content\n• Not use the data for competitive purposes\n• Not attempt to disassemble or decompile the software\n• Respect the trademarks and logos of Xpeditis and its partners"
},
"law": {
"title": "7. Applicable law and disputes",
"content": "**Applicable law**\nThese ToS are governed by French law.\n\n**Dispute resolution**\nIn case of dispute, the parties undertake to seek an amicable solution. Failing this, the courts of Paris shall have exclusive jurisdiction.\n\n**Mediation**\nIn accordance with the provisions of the French Consumer Code, the user may use, free of charge, the mediation service to which Xpeditis is a member."
}
},
"contact": {
"title": "Need clarification?",
"body": "For any question regarding our terms of service, our legal team is at your disposal."
}
},
"cookies": {
"badge": "Transparency",
"title1": "Cookies",
"title2": "Policy",
"intro": "Discover how we use cookies to improve your experience on Xpeditis and how you can manage your preferences.",
"introBoxTitle": "What is a cookie?",
"introBoxBody1": "A cookie is a small text file stored on your device (computer, tablet, smartphone) when you visit a website. Cookies allow the site to remember your actions and preferences over a period of time.",
"introBoxBody2": "Cookies do not contain personally identifiable information and cannot access data stored on your device.",
"typesTitle": "Types of cookies used",
"typesSubtitle": "We use different types of cookies on our platform",
"required": "Required",
"optional": "Optional",
"tableHeaders": {
"name": "Name",
"purpose": "Purpose",
"duration": "Duration"
},
"types": {
"essential": {
"title": "Essential cookies",
"description": "Required for the site to function"
},
"analytics": {
"title": "Analytics cookies",
"description": "Help us improve our platform"
},
"marketing": {
"title": "Marketing cookies",
"description": "Allow us to personalise advertising"
},
"functional": {
"title": "Functional cookies",
"description": "Improve your user experience"
}
},
"purposes": {
"session_id": "Maintains your login session",
"csrf_token": "Protects against CSRF attacks",
"cookie_consent": "Stores your cookie preferences",
"_ga": "Google Analytics — visitor identification",
"_gid": "Google Analytics — session identification",
"_gat": "Google Analytics — request rate limiting",
"_fbp": "Facebook Pixel — conversion tracking",
"li_fat_id": "LinkedIn Insight — marketing attribution",
"hubspotutk": "HubSpot — visitor identification",
"language": "Stores your preferred language",
"theme": "Stores the theme (light/dark)",
"recent_searches": "History of your recent searches"
},
"durations": {
"session": "Session",
"year1": "1 year",
"years2": "2 years",
"hours24": "24 hours",
"minute1": "1 minute",
"months3": "3 months",
"days30": "30 days",
"months13": "13 months"
},
"manageTitle": "How to manage your cookies?",
"manageIntro": "You can change your cookie preferences at any time:",
"manageBullet1": "Via our consent banner accessible at the bottom of each page",
"manageBullet2": "In your browser settings (Chrome, Firefox, Safari, Edge)",
"manageBullet3": "Using third-party cookie management tools",
"manageNote": "Note: disabling some cookies may affect your experience on our platform.",
"contact": {
"title": "Questions about cookies?",
"body": "Our team is available to answer all your questions regarding the use of cookies on our platform."
}
},
"about": {
"badge": "Our story",
"title1": "Revolutionizing maritime freight,",
"title2": "one booking at a time",
"intro": "Founded in 2021, Xpeditis was born from a simple vision: make maritime freight as simple as booking a flight. We connect freight forwarders around the world with the largest shipping lines.",
"mission": {
"title": "Our Mission",
"body": "Democratize access to maritime freight by offering a cutting-edge technology platform that simplifies searching, comparing and booking maritime transport for every logistics professional."
},
"vision": {
"title": "Our Vision",
"body": "Become the global benchmark for digital maritime freight by connecting every freight forwarder to every shipping line, everywhere in the world, with the transparency and efficiency international trade deserves."
},
"stats": {
"clients": "Active clients",
"carriers": "Shipping lines",
"countries": "Countries covered",
"bookings": "Bookings/year"
},
"valuesTitle": "Our Values",
"valuesSubtitle": "The principles that guide every decision we make",
"values": {
"excellence": {
"title": "Excellence",
"description": "We strive for excellence in every aspect of our platform, delivering a best-in-class user experience."
},
"transparency": {
"title": "Transparency",
"description": "We believe in open, honest communication with our clients, partners and employees."
},
"collaboration": {
"title": "Collaboration",
"description": "Success is built together. We work hand in hand with our clients to reach their goals."
},
"innovation": {
"title": "Innovation",
"description": "We constantly push the boundaries of technology to revolutionize maritime freight."
}
},
"timelineTitle": "Our Journey",
"timelineSubtitle": "From startup to Europe's leader in digital maritime freight",
"timeline": {
"2021": {
"title": "Founding",
"description": "Xpeditis is founded with a clear vision: simplify maritime freight for everyone."
},
"2022": {
"title": "First version",
"description": "Beta platform launch with 10 shipping line partners."
},
"2023": {
"title": "Series A",
"description": "€15M funding round to accelerate our European expansion."
},
"2024": {
"title": "Expansion",
"description": "50+ shipping lines, presence in 15 European countries."
},
"2025": {
"title": "European leader",
"description": "#1 B2B maritime freight platform in Europe with 500+ active clients."
}
},
"teamTitle": "Our Team",
"teamSubtitle": "Experts passionate about maritime and technology",
"team": {
"ceo": {
"role": "CEO & Co-founder",
"bio": "Former director at Maersk, 20 years of shipping experience"
},
"cto": {
"role": "CTO & Co-founder",
"bio": "Former Google, expert in B2B platforms and distributed systems"
},
"coo": {
"role": "COO",
"bio": "Former CMA CGM, specialist in international maritime operations"
},
"vpSales": {
"role": "VP Sales",
"bio": "15 years of sales experience in the logistics sector"
},
"vpEng": {
"role": "VP Engineering",
"bio": "Former Uber Freight, expert in real-time booking systems"
},
"vpProduct": {
"role": "VP Product",
"bio": "Former Flexport, passionate about UX and product innovation"
}
},
"cta": {
"title": "Join the Xpeditis adventure",
"body": "Whether you're a freight forwarder looking for a modern solution or a talent wanting to join a passionate team, we look forward to meeting you.",
"createAccount": "Create an account",
"viewCareers": "View open positions"
}
},
"contact": {
"badge": "Contact us",
"title1": "Have a question?",
"title2": "We're here to help",
"intro": "Our team is available to answer all your questions about our platform, our services and our pricing. Don't hesitate to get in touch!",
"methods": {
"email": {
"title": "Email",
"description": "Send us an email",
"value": "contact@xpeditis.com"
},
"phone": {
"title": "Phone",
"description": "Give us a call",
"value": "+33 1 23 45 67 89"
},
"chat": {
"title": "Live chat",
"description": "Chat with our team",
"value": "Available 24/7"
},
"support": {
"title": "Support",
"description": "Customer support",
"value": "support@xpeditis.com"
}
},
"form": {
"title": "Send us a message",
"description": "Fill out the form below and we'll get back to you as soon as possible.",
"firstName": "First name",
"firstNamePlaceholder": "John",
"lastName": "Last name",
"lastNamePlaceholder": "Doe",
"email": "Email",
"emailPlaceholder": "john.doe@example.com",
"phone": "Phone",
"phonePlaceholder": "+33 6 12 34 56 78",
"company": "Company",
"companyPlaceholder": "Your company",
"subject": "Subject",
"message": "Message",
"messagePlaceholder": "How can we help?",
"submit": "Send message",
"submitting": "Sending…",
"successTitle": "Message sent!",
"successBody": "Thanks for reaching out. Our team will reply within 24 hours.",
"sendAnother": "Send another message",
"genericError": "An error occurred while sending. Please try again."
},
"subjects": {
"placeholder": "Select a subject",
"demo": "Demo request",
"pricing": "Pricing questions",
"partnership": "Partnership",
"support": "Technical support",
"press": "Press relations",
"careers": "Recruitment",
"other": "Other"
},
"office": {
"title": "Our office",
"subtitle": "Find us in Paris or reach us by email.",
"hqBadge": "Headquarters",
"city": "Paris",
"address": "123 Avenue des Champs-Élysées",
"postalCode": "75008 Paris, France",
"phone": "+33 1 23 45 67 89",
"email": "paris@xpeditis.com"
},
"hours": {
"title": "Opening hours",
"weekdays": "Monday - Friday",
"weekdaysHours": "9:00 AM - 6:00 PM",
"saturday": "Saturday",
"saturdayHours": "10:00 AM - 2:00 PM",
"sunday": "Sunday",
"closed": "Closed",
"supportNote": "* Technical support available 24/7 for Enterprise clients"
},
"afterSubmit": {
"badge": "After you send",
"title": "What happens after you send your message?",
"commitmentTitle": "Our commitment",
"commitmentBody1": "As soon as we receive your request, one of our logistics experts reviews your profile and needs. You'll get a personalised response or a platform demo invitation ",
"commitmentHighlight": "within 48 business hours.",
"securityTitle": "Security",
"securityBody1": "Your information is protected and processed in accordance with our ",
"securityBody2": ". No data is shared with third parties without your consent.",
"privacyLink": "privacy policy"
},
"quickAccess": {
"badge": "Quick access",
"title": "Need an immediate answer?",
"pricingTitle": "Instant pricing",
"pricingBody1": "Don't wait for our reply to get prices. Use our ",
"pricingBody2": " engine to get a maritime freight quote in under 60 seconds.",
"pricingHighlight": "Click&Ship",
"pricingCta": "Go to Dashboard",
"wikiTitle": "Quick help",
"wikiBody1": "A question about Incoterms or export documentation? Our ",
"wikiBody2": " already has answers to the most common questions.",
"wikiHighlight": "Maritime Wiki",
"wikiCta": "Browse the Wiki"
}
},
"security": {
"badge": "Maximum security",
"title1": "Your security,",
"title2": "our priority",
"intro": "At Xpeditis, we implement the best security practices to protect your data and ensure the continuity of your operations.",
"featuresTitle": "Security measures",
"featuresSubtitle": "A robust infrastructure to protect your data",
"features": {
"encryption": {
"title": "End-to-end encryption",
"description": "All communications are encrypted with TLS 1.3. Your sensitive data is encrypted at rest with AES-256."
},
"auth": {
"title": "Secure authentication",
"description": "Two-factor authentication (2FA) available. Passwords hashed with Argon2id, the most robust standard."
},
"infrastructure": {
"title": "Certified infrastructure",
"description": "Hosted on AWS with ISO 27001, SOC 2 Type II certifications and GDPR compliance."
},
"monitoring": {
"title": "24/7 monitoring",
"description": "Continuous monitoring of our infrastructure. Real-time incident detection and response."
},
"audits": {
"title": "Regular audits",
"description": "Annual penetration tests by independent experts. Active bug bounty programme."
},
"continuity": {
"title": "Continuity plan",
"description": "Automatic daily backups. Regularly tested disaster recovery plan."
}
},
"certificationsTitle": "Certifications & Compliance",
"certificationsSubtitle": "Our commitments validated by independent organisations",
"certifications": {
"iso": {
"name": "ISO 27001",
"description": "Information security management system"
},
"soc2": {
"name": "SOC 2 Type II",
"description": "Security, availability and confidentiality controls"
},
"gdpr": {
"name": "GDPR",
"description": "Compliant with the General Data Protection Regulation"
},
"pcidss": {
"name": "PCI DSS",
"description": "Payment card data security standard"
}
},
"practicesTitle": "Our security practices",
"practicesSubtitle": "A proactive approach to security at every stage",
"practices": {
"secureDev": {
"title": "Secure development",
"item1": "Systematic code review",
"item2": "Static code analysis (SAST)",
"item3": "Automated security testing",
"item4": "Dependency management"
},
"dataProtection": {
"title": "Data protection",
"item1": "Minimisation of collected data",
"item2": "Data pseudonymisation",
"item3": "Granular access control",
"item4": "Access logging"
},
"incidentResponse": {
"title": "Incident response",
"item1": "Dedicated security team",
"item2": "Notification procedures",
"item3": "Post-incident analysis",
"item4": "Continuous improvement"
}
},
"report": {
"title": "Report a vulnerability",
"body": "Have you discovered a security flaw? We take platform security very seriously. Contact our security team for responsible disclosure."
}
},
"compliance": {
"badge": "European compliance",
"title1": "GDPR",
"title2": "Compliance",
"intro": "Xpeditis is committed to complying with the General Data Protection Regulation (GDPR) and guaranteeing your rights regarding personal data protection.",
"badges": {
"compliant": "GDPR compliant",
"dpo": "DPO appointed"
},
"rightsTitle": "Your GDPR rights",
"rightsSubtitle": "GDPR grants you enhanced rights over your personal data",
"rights": {
"access": {
"title": "Right of access",
"description": "Obtain a copy of all personal data we hold about you."
},
"rectification": {
"title": "Right to rectification",
"description": "Have your personal data corrected if it is inaccurate or incomplete."
},
"erasure": {
"title": "Right to erasure",
"description": "Request the deletion of your personal data (\"right to be forgotten\")."
},
"portability": {
"title": "Right to portability",
"description": "Receive your data in a structured, machine-readable format."
}
},
"rightsCta": {
"text": "To exercise your rights, log into your account or contact our DPO.",
"login": "Access my account",
"dpo": "Contact the DPO"
},
"principlesTitle": "Our data protection principles",
"principlesSubtitle": "Fundamental principles that guide our data processing",
"principles": {
"minimization": {
"title": "Data minimisation",
"description": "We only collect data strictly necessary for our services."
},
"retention": {
"title": "Retention limitation",
"description": "Your data is retained only for the time needed."
},
"integrity": {
"title": "Integrity & confidentiality",
"description": "Your data is protected against any unauthorised access."
},
"transparency": {
"title": "Transparency",
"description": "We clearly inform you about the use of your data."
}
},
"measuresTitle": "Protection measures",
"measuresSubtitle": "Technical and organisational measures to ensure the security of your data",
"measures": {
"technical": {
"title": "Technical measures",
"item1": "Data encryption at rest and in transit",
"item2": "Multi-factor authentication",
"item3": "Data access logging",
"item4": "Regular encrypted backups",
"item5": "Pseudonymisation of sensitive data"
},
"organizational": {
"title": "Organisational measures",
"item1": "Designated Data Protection Officer (DPO)",
"item2": "Regular staff training",
"item3": "Documented security policies",
"item4": "Incident management process",
"item5": "Regular compliance audits"
}
},
"register": {
"title": "Processing register",
"body": "In accordance with Article 30 of the GDPR, we maintain a register of personal data processing activities. This register documents:",
"item1": "The purposes of each processing",
"item2": "The categories of data processed",
"item3": "The recipients of the data",
"item4": "The retention periods",
"item5": "The security measures applied"
},
"dpo": {
"title": "Contact our DPO",
"body": "Our Data Protection Officer is available for any questions related to the processing of your personal data or the exercise of your rights.",
"privacyLink": "Privacy policy"
}
},
"blog": {
"badge": "Xpeditis Blog",
"title1": "News & Insights",
"title2": "on maritime freight",
"intro": "Keep up with the latest trends in maritime transport, explore our practical guides and follow Xpeditis news.",
"searchPlaceholder": "Search for an article…",
"categories": {
"all": "All articles",
"industry": "Maritime industry",
"technology": "Technology",
"guides": "Practical guides",
"news": "News"
},
"allTitle": "All articles",
"articlesCount": "{count} articles",
"featuredBadge": "Featured",
"readArticle": "Read article",
"noResults": {
"title": "No articles found",
"body": "Try adjusting your filters or search query"
},
"loadMore": "Load more articles",
"featured": {
"title": "The future of maritime freight: how AI is transforming logistics",
"excerpt": "Discover how artificial intelligence is reshaping maritime shipment management and optimizing global supply chains.",
"author": "Marie Lefebvre",
"date": "January 15, 2025",
"readTime": "8 min"
},
"articles": {
"incoterms": {
"title": "A complete guide to Incoterms 2020 for maritime transport",
"excerpt": "Everything you need to know about Incoterms rules and how they apply to international maritime freight.",
"author": "Thomas Martin",
"date": "January 10, 2025",
"readTime": "12 min"
},
"costs": {
"title": "How to optimize your maritime transport costs in 2025",
"excerpt": "Practical strategies and tips to reduce your logistics spend without compromising service quality.",
"author": "Sophie Bernard",
"date": "January 8, 2025",
"readTime": "6 min"
},
"ports": {
"title": "The largest European ports: 2025 ranking",
"excerpt": "An analysis of the performance of major European ports and container traffic trends.",
"author": "Jean-Pierre Durand",
"date": "January 5, 2025",
"readTime": "10 min"
},
"funding": {
"title": "Xpeditis raises €15M to accelerate its expansion",
"excerpt": "Our Series A allows us to strengthen our team and extend our presence across Europe.",
"author": "Jean-Pierre Durand",
"date": "January 3, 2025",
"readTime": "4 min"
},
"green": {
"title": "Decarbonizing maritime transport: where do we stand?",
"excerpt": "A status report on environmental initiatives in the maritime sector and outlook for 2030.",
"author": "Claire Moreau",
"date": "December 28, 2024",
"readTime": "9 min"
},
"api": {
"title": "APIs and integrations: how to connect your TMS to Xpeditis",
"excerpt": "A technical guide to integrating our platform with your existing management systems.",
"author": "Alexandre Petit",
"date": "December 22, 2024",
"readTime": "15 min"
},
"documents": {
"title": "Essential documents for maritime exports",
"excerpt": "A complete checklist of documents required for your international maritime shipments.",
"author": "Thomas Martin",
"date": "December 18, 2024",
"readTime": "7 min"
}
},
"newsletter": {
"title": "Stay informed",
"body": "Subscribe to our newsletter to receive the latest articles and maritime freight news directly in your inbox.",
"emailPlaceholder": "your@email.com",
"subscribe": "Subscribe",
"disclaimer": "By subscribing, you agree to our privacy policy. You can unsubscribe at any time."
}
},
"careers": {
"badge": "Join us",
"title1": "Let's build together",
"title2": "the future of maritime",
"intro": "Join a passionate team revolutionizing maritime freight. Stimulating challenges, a caring culture, and unique growth opportunities await you.",
"viewJobs": "View openings",
"learnMore": "Learn more",
"stats": {
"employees": "Employees",
"nationalities": "Nationalities",
"offices": "Offices in Europe",
"womenTech": "Women in tech"
},
"benefitsTitle": "Why join us?",
"benefitsSubtitle": "We invest in the well-being and growth of our teams",
"benefits": {
"health": {
"title": "Premium health insurance",
"description": "Full health coverage for you and your family"
},
"remote": {
"title": "Flexible remote work",
"description": "Work from anywhere, up to 3 days a week"
},
"wellbeing": {
"title": "Workplace wellness",
"description": "Gym access, fresh fruit and team events"
},
"learning": {
"title": "Continuous learning",
"description": "€2,000/year budget for training and conferences"
},
"international": {
"title": "International team",
"description": "Work with talents from 15 nationalities"
},
"stockOptions": {
"title": "Stock Options",
"description": "Share in the company's growth"
}
},
"cultureTitle": "Our culture",
"cultureBody": "At Xpeditis, we believe the best ideas come from diverse and inclusive teams. We value autonomy, creativity and constructive feedback.",
"culture": {
"item1": "Full transparency on decisions and results",
"item2": "Continuous feedback and culture of improvement",
"item3": "Work-life balance respected",
"item4": "Celebration of collective successes"
},
"jobsTitle": "Open positions",
"jobsSubtitle": "Find the role that matches your ambitions",
"filters": {
"allDepartments": "All departments",
"allLocations": "All locations"
},
"departments": {
"Engineering": "Engineering",
"Product": "Product",
"Sales": "Sales",
"Customer Success": "Customer Success",
"Data": "Data"
},
"locations": {
"Paris": "Paris",
"Rotterdam": "Rotterdam",
"Hambourg": "Hamburg"
},
"jobs": {
"frontend": {
"title": "Senior Frontend Engineer",
"description": "Join our frontend team to build the next generation of our platform.",
"req1": "5+ years of frontend development experience",
"req2": "Proficient with React, TypeScript and Next.js",
"req3": "Experience with design systems",
"req4": "Ability to mentor junior developers"
},
"backend": {
"title": "Backend Engineer (Node.js)",
"description": "Build scalable APIs connecting freight forwarders with shipping lines.",
"req1": "3+ years of Node.js/NestJS experience",
"req2": "Proficient with PostgreSQL and Redis",
"req3": "Familiar with microservices architectures",
"req4": "Experience with Docker and Kubernetes a plus"
},
"pm": {
"title": "Product Manager",
"description": "Shape the product vision and prioritize features with our team.",
"req1": "4+ years in B2B product management",
"req2": "Experience in logistics or shipping a plus",
"req3": "Ability to analyze data and define KPIs",
"req4": "Excellent communication skills"
},
"ae": {
"title": "Account Executive",
"description": "Grow our client portfolio in the Netherlands and Belgium.",
"req1": "3+ years of B2B sales experience",
"req2": "Knowledge of the maritime/logistics sector",
"req3": "Fluent in Dutch and English",
"req4": "Ability to manage long sales cycles"
},
"csm": {
"title": "Customer Success Manager",
"description": "Support our clients with the platform and maximize their satisfaction.",
"req1": "2+ years in customer success",
"req2": "Experience with CRM tools (HubSpot, Salesforce)",
"req3": "Excellent relational and service-minded",
"req4": "Ability to train and support users"
},
"data": {
"title": "Data Analyst",
"description": "Analyze shipping data to optimize our platform and processes.",
"req1": "3+ years in data analysis",
"req2": "Proficient with SQL, Python and BI tools",
"req3": "Experience with shipping/logistics a plus",
"req4": "Ability to communicate insights to teams"
}
},
"jobCard": {
"remote": "Remote OK",
"profile": "Profile sought:",
"apply": "Apply",
"learnMore": "Learn more"
},
"noJobs": {
"title": "No openings found",
"body": "Try adjusting your filters"
},
"cta": {
"title": "No matching role?",
"body": "Send us a spontaneous application! We are always looking for passionate talents to join our journey.",
"spontaneous": "Spontaneous application"
}
},
"press": {
"badge": "Press Room",
"title1": "Press Room",
"title2": "Xpeditis",
"intro": "Find all our press releases, media resources and information for journalists. Our communications team is at your service.",
"pressKit": "Press Kit",
"pressContact": "Press Contact",
"stats": {
"funding": "Funding raised",
"clients": "Active clients",
"carriers": "Shipping lines",
"countries": "Countries covered"
},
"releasesTitle": "Press Releases",
"releasesSubtitle": "The latest official news from Xpeditis",
"releases": {
"seriesA": {
"title": "Xpeditis raises €15M to accelerate European expansion",
"date": "January 15, 2025",
"excerpt": "The French maritime freight startup announces a Series A round led by Partech and Eurazeo.",
"category": "Funding"
},
"clients500": {
"title": "Xpeditis crosses the 500 active clients milestone",
"date": "January 8, 2025",
"excerpt": "The B2B maritime freight platform confirms its leadership in Europe with 200% growth in 2024.",
"category": "Growth"
},
"cmaCgm": {
"title": "Strategic partnership with CMA CGM",
"date": "December 15, 2024",
"excerpt": "Xpeditis integrates the full CMA CGM group offering, giving users even more choice.",
"category": "Partnership"
},
"tracking": {
"title": "New real-time tracking features launched",
"date": "December 1, 2024",
"excerpt": "The platform expands its offering with an improved container tracking system and proactive notifications.",
"category": "Product"
},
"rotterdam": {
"title": "Rotterdam office opening",
"date": "November 15, 2024",
"excerpt": "Xpeditis continues its expansion with a new office in the Netherlands to serve the Benelux market.",
"category": "Expansion"
}
},
"read": "Read",
"coverageTitle": "In the news",
"coverageSubtitle": "Read press articles mentioning Xpeditis",
"coverage": {
"lesEchos": {
"title": "Xpeditis, the startup digitizing maritime freight",
"date": "January 12, 2025"
},
"bfm": {
"title": "How AI is revolutionizing maritime logistics",
"date": "January 10, 2025"
},
"jmm": {
"title": "Digital platforms at the service of freight forwarders",
"date": "January 5, 2025"
},
"techEu": {
"title": "French logistics startup Xpeditis raises €15M",
"date": "January 15, 2025"
}
},
"kitTitle": "Press Kit",
"kitSubtitle": "Download everything you need for your articles",
"kit": {
"visuals": {
"title": "Logos & Visuals",
"description": "High-resolution logos (PNG, SVG) and platform visuals",
"format": "ZIP — 12 MB"
},
"dossier": {
"title": "Press Kit",
"description": "Complete presentation of Xpeditis, key figures and founder biographies",
"format": "PDF — 4 MB"
},
"videos": {
"title": "Videos & B-Roll",
"description": "Presentation videos and B-Roll footage for your reports",
"format": "MP4 — 250 MB"
},
"download": "Download"
},
"milestonesTitle": "Our Journey",
"milestonesSubtitle": "The major milestones in Xpeditis's history",
"milestones": {
"2021": "Creation of Xpeditis",
"2022": "First version launched",
"2023": "Seed round of €3M",
"2024": "500 active clients",
"2025": "Series A — €15M"
},
"contact": {
"title": "Press Contact",
"body": "Our communications team is available for any interview request, information or media partnership.",
"relationsTitle": "Press Relations",
"emailLabel": "Email",
"phoneLabel": "Phone",
"responsibleTitle": "Head of Communications",
"responsibleRole": "Communications Director",
"responsibleBio": "Available for interviews, information requests and media partnerships.",
"quote": "We are always pleased to speak with journalists about our mission to revolutionize maritime freight. Feel free to contact us with any request.",
"quoteRole": " — CEO & Co-founder"
}
},
"docs": {
"metadataTitle": "API Documentation — Xpeditis",
"metadataDescription": "Xpeditis API documentation to integrate maritime freight into your applications."
}
},
"auth": {
"login": {
"title": "Sign in",
"subtitle": "Welcome back! Sign in to access your account",
"emailLabel": "Email address",
"emailPlaceholder": "your.email@company.com",
"passwordLabel": "Password",
"passwordPlaceholder": "••••••••••",
"rememberMe": "Remember me",
"forgotPassword": "Forgot password?",
"submit": "Sign in",
"submitting": "Signing in…",
"noAccount": "Don't have an account?",
"createAccount": "Create an account",
"register": "Sign up",
"orContinue": "Or continue with",
"continueWithGoogle": "Continue with Google",
"continueWithMicrosoft": "Continue with Microsoft",
"fieldErrors": {
"emailRequired": "Email address is required",
"emailInvalid": "Email address is not valid",
"passwordRequired": "Password is required",
"passwordMin": "Password must be at least 6 characters"
},
"errors": {
"network": "Unable to reach the server. Please check your internet connection.",
"invalidCredentials": "Invalid email or password",
"inactive": "Your account has been disabled. Contact support for more information.",
"notFound": "No account found with that email",
"incorrectPassword": "Incorrect password",
"rateLimit": "Too many login attempts. Please try again in a few minutes.",
"generic": "An error occurred. Please try again."
}
},
"register": {
"title": "Create an account",
"subtitle": "Start your free trial today",
"stepAccount": "Your account",
"stepOrganization": "Your organization",
"orgStepTitle": "Your organization",
"orgStepSubtitle": "Fill in your company information",
"invitationTitle": "Accept invitation",
"invitationValid": "Valid invitation — create your password to join the organization.",
"invitationInvalid": "The invitation link is invalid or expired.",
"invitationVerifying": "Verifying invitation…",
"firstNameLabel": "First name",
"firstNamePlaceholder": "John",
"lastNameLabel": "Last name",
"lastNamePlaceholder": "Smith",
"emailLabel": "Email address",
"emailPlaceholder": "john.smith@company.com",
"passwordLabel": "Password",
"passwordPlaceholder": "••••••••••••",
"passwordHint": "At least 12 characters",
"confirmPasswordLabel": "Confirm password",
"organizationNameLabel": "Organization name",
"organizationNamePlaceholder": "Acme Logistics",
"organizationTypeLabel": "Organization type",
"orgTypes": {
"freightForwarder": "Freight forwarder",
"shipper": "Shipper",
"carrier": "Carrier"
},
"sirenLabel": "SIREN",
"sirenHint": "9 digits",
"siretLabel": "SIRET",
"siretOptional": "(optional)",
"siretHint": "14 digits",
"streetLabel": "Address",
"streetPlaceholder": "123 Main Street",
"cityLabel": "City",
"cityPlaceholder": "Paris",
"postalCodeLabel": "Postal code",
"postalCodePlaceholder": "75001",
"stateLabel": "State/Region",
"stateOptional": "(optional)",
"statePlaceholder": "Île-de-France",
"countryLabel": "Country",
"countryPlaceholder": "FR",
"countryHint": "2-letter ISO code",
"back": "Back",
"continue": "Continue",
"submit": "Create my account",
"submitting": "Creating account…",
"termsAccept": "By creating an account, you agree to our",
"termsLink": "Terms of Service",
"termsAnd": "and our",
"privacyLink": "Privacy Policy",
"hasAccount": "Already have an account?",
"login": "Sign in",
"fieldErrors": {
"firstNameMin": "First name must be at least 2 characters",
"lastNameMin": "Last name must be at least 2 characters",
"emailInvalid": "Email address is not valid",
"passwordMin": "Password must be at least 12 characters",
"passwordsMismatch": "Passwords do not match",
"orgNameRequired": "Organization name is required",
"sirenRequired": "SIREN number is required (9 digits)",
"siretInvalid": "SIRET number must be 14 digits",
"addressRequired": "All address fields are required"
},
"errors": {
"emailTaken": "This email address is already in use",
"generic": "Error while creating the account"
},
"sidePanel": {
"titleInvitation": "Join your team",
"titleDefault": "Join thousands of companies",
"description": "Simplify your maritime logistics and save time on every shipment.",
"features": {
"trial": {
"title": "30-day free trial",
"description": "Test all features with no commitment"
},
"security": {
"title": "Maximum security",
"description": "Your data is protected and encrypted"
},
"support": {
"title": "24/7 support",
"description": "Our team is here to help you"
}
},
"stats": {
"companies": "Companies",
"countries": "Countries covered",
"support": "Support"
}
}
},
"sidePanel": {
"title": "Simplify your maritime freight",
"description": "Access real-time rates from 50+ shipping carriers. Book, track and manage your LCL shipments in just a few clicks.",
"features": {
"instantRates": {
"title": "Instant rates",
"description": "Compare prices from all carriers in real time"
},
"booking": {
"title": "Streamlined booking",
"description": "Book your containers in under 5 minutes"
},
"tracking": {
"title": "Real-time tracking",
"description": "Track your shipments at every stage of the journey"
}
},
"stats": {
"carriers": "Carriers",
"shipments": "Shipments",
"satisfaction": "Satisfaction"
}
},
"footerLinks": {
"contact": "Contact us",
"privacy": "Privacy",
"terms": "Terms"
},
"forgotPassword": {
"title": "Forgot password?",
"subtitle": "Enter your email address and we'll send you a link to reset your password.",
"emailLabel": "Email address",
"emailPlaceholder": "your.email@company.com",
"submit": "Send reset link",
"submitting": "Sending…",
"backToLogin": "Back to sign in",
"successTitle": "Email sent",
"successMessage": "If an account is associated with <strong>{email}</strong>, you will receive an email with instructions to reset your password.",
"successHint": "Remember to check your spam folder if you don't see anything within a few minutes.",
"error": "An error occurred. Please try again.",
"sidePanel": {
"title": "Security first",
"description": "Protecting your account is our priority. Reset your password safely.",
"features": {
"secure": {
"title": "Secure link",
"description": "The link expires after 1 hour for your security"
},
"email": {
"title": "Confirmation email",
"description": "Check your inbox and spam folder"
}
}
}
},
"resetPassword": {
"title": "New password",
"subtitle": "Choose a new secure password for your account.",
"invalidTokenTitle": "Invalid link",
"invalidTokenMessage": "This reset link is invalid. Please request a new one.",
"passwordLabel": "New password",
"passwordHint": "At least 12 characters",
"confirmPasswordLabel": "Confirm password",
"submit": "Reset password",
"submitting": "Resetting…",
"successTitle": "Password reset!",
"successMessage": "Your password has been changed successfully. You will be redirected to the sign-in page…",
"goToLogin": "Sign in now",
"backToLogin": "Back to sign in",
"requestNew": "Request a new link",
"errors": {
"passwordMin": "Password must be at least 12 characters",
"passwordsMismatch": "Passwords do not match",
"generic": "The reset link is invalid or expired."
},
"sidePanel": {
"title": "Your security, our priority",
"description": "Choose a strong password to protect your account and your data.",
"tips": [
"At least 12 characters",
"Mix letters, numbers and symbols",
"Avoid dictionary words",
"Don't reuse passwords from other accounts"
]
}
},
"verifyEmail": {
"verifyingTitle": "Verifying your email…",
"verifyingSubtitle": "One moment, we're validating your email address.",
"successTitle": "Email verified successfully!",
"successMessage": "Your email has been verified successfully. You will be redirected to the dashboard in a few seconds…",
"goToDashboard": "Go to dashboard now",
"errorTitle": "Verification failed",
"errorInvalidLink": "Invalid verification link",
"errorGeneric": "Email verification failed. The link may have expired.",
"errorHint": "The verification link may have expired. Please request a new one.",
"backToLogin": "Back to sign in",
"resend": "Resend verification email"
}
}
}