diff --git a/TODO.md b/TODO.md index ec5ab5b..17837bc 100644 --- a/TODO.md +++ b/TODO.md @@ -14,6 +14,7 @@ - Handle stripe integration - Handle billing page - Handle plan selection +- Fix missing translations (Sidebar, disconnect button) # Future features - Auto deletion of requests after a certain period of time diff --git a/lib/i18n/routing.ts b/lib/i18n/routing.ts index bc8f0b1..6471c55 100644 --- a/lib/i18n/routing.ts +++ b/lib/i18n/routing.ts @@ -1,7 +1,7 @@ import { defineRouting } from 'next-intl/routing' export const routing = defineRouting({ - locales: ['fr'], - defaultLocale: 'fr', + locales: ['fr', 'en'], + defaultLocale: 'en', localePrefix: 'always', }) diff --git a/messages/en.json b/messages/en.json new file mode 100644 index 0000000..e52be6d --- /dev/null +++ b/messages/en.json @@ -0,0 +1,247 @@ +{ + "Configuration": { + "Plans": { + "FREE": "Free", + "PRO": "Pro", + "ADMIN": "Administrator", + "Upgrade": "Upgrade" + } + }, + "CopyButton": { + "Copy": "Copy", + "Copied": "Copied" + }, + "PricingPage": { + "Title": "Pricing", + "Description": "Plans and pricing", + "TODO": "The payment system has been disabled for the moment. The free plan has been temporarily upgraded to the Pro plan for all users." + }, + "LandingPage": { + "Buttons": { + "SignIn": "Sign in", + "CTA": "Get your webhook URL" + }, + "Slogan": { + "Part1": "Debug your webhooks with", + "Part2": "persistent storage" + }, + "Description": "Inspect payloads, replay requests, and monitor your webhooks in real-time. Never lose a webhook event again thanks to automatic persistence.", + "FeatureCards": { + "Feature1": { + "Title": "Inspect payloads", + "Description": "View full webhook payloads with syntax highlighting and search functionality." + }, + "Feature2": { + "Title": "Replay requests", + "Description": "Replay any webhook to your endpoint for easy testing and debugging." + }, + "Feature3": { + "Title": "Monitor in real-time", + "Description": "Track webhook delivery, response times, and success rates with live analytics." + } + }, + "Trusted": { + "Badge": "Trusted by developers", + "Title": "Built for developer workflows", + "Description": "Thousands of developers trust WPT to debug and monitor their webhook integrations." + }, + "Documentation": { + "Badge": "Platform features", + "Title": "Everything you need to test your webhooks", + "Description": "Powerful features designed for developers looking for reliable webhook testing and debugging tools.", + "Features": { + "Feature1": { + "Title": "Schedule your times", + "Description": "Explore your data, build your dashboard, and bring your team together." + }, + "Feature2": { + "Title": "From data to insights in minutes", + "Description": "Turn your raw data into actionable insights with powerful analytics tools." + }, + "Feature3": { + "Title": "Collaborate seamlessly", + "Description": "Work together in real-time with your team and share insights instantly." + } + } + }, + "Pricing": { + "Badge": "Plans and pricing", + "Title": "Simple and transparent pricing", + "Description": "Start testing your webhooks for free. Upgrade to Pro for advanced features and higher limits when you need them.", + "Billing": { + "Monthly": "Monthly", + "Annually": "Yearly", + "BilledMonthly": "per month", + "BilledAnnually": "per month, billed annually", + "Forever": "forever" + }, + "Plans": { + "FREE": "Perfect for testing and small projects.", + "PRO": "Advanced features.", + "Popular": "POPULAR" + }, + "Advantages": { + "RequestPerMonth": "requests per month", + "WebhookCount": "webhook", + "History": "days of request history", + "ReplayRequest": "Replay your requests" + }, + "CTA": { + "FREE": "Start for free", + "PRO": "Get started" + } + }, + "CTA": { + "FREE": "Start for free", + "Title": "Ready to transform your business?", + "Description": "Join thousands of companies optimizing their operations, managing their schedules, and growing with data-driven insights." + }, + "Footer": { + "Legal": "Legal Notice", + "AllRightsReserved": "All rights reserved", + "Terms": "Terms of Service", + "Privacy": "Privacy Policy" + }, + "FAQ": { + "Title": "Frequently Asked Questions", + "Description": "Explore your data, build your dashboard, and bring your team together." + } + }, + "Datatable": { + "LinesPerPage": "Rows per page", + "Amount": "{count, plural, one {# item} other {# items}}", + "PageNumber": "Page {page} of {pages}", + "NoData": "No results", + "NA": "N/A" + }, + "DeleteConfirmationModal": { + "Confirmation": "Confirmation", + "Cancel": "Cancel", + "Confirm": "Confirm", + "Error": "An error occurred" + }, + "Auth": { + "SignInPage": { + "Title": "Welcome back", + "Subtitle": "Sign in with your credentials", + "Methods": { + "Google": "Sign in with Google", + "Github": "Sign in with Github", + "Other": "Or sign in with" + }, + "Form": { + "Email": "Email address", + "Password": "Password", + "Submit": "Sign in", + "Errors": { + "InvalidCredentials": "Invalid credentials", + "GenericError": "An error occurred, please try again later" + } + }, + "Footer": { + "NoAccount": "Don't have an account? ", + "SignUp": "Sign up" + } + }, + "SignUpPage": { + "Title": "Welcome", + "Subtitle": "Sign up with your credentials", + "Methods": { + "Google": "Sign up with Google", + "Github": "Sign up with Github", + "Other": "Or sign up with" + }, + "Form": { + "Username": "Username", + "Email": "Email address", + "Password": "Password", + "Submit": "Sign up", + "Errors": { + "EmailAlreadyTaken": "This email address is already taken", + "GenericError": "An error occurred, please try again later" + } + }, + "Footer": { + "AlreadyHaveAccount": "Already have an account? ", + "SignIn": "Sign in" + } + }, + "Footer": { + "Title": "By signing in, you agree to our", + "Terms": "Terms of Service", + "AndConditions": " and our ", + "Privacy": "Privacy Policy" + } + }, + "DashboardPage": { + "Title": "Dashboard", + "Description": "General information", + "InfoCard": { + "RequestsCount": { + "Title": "Total Requests", + "Description": "Total number of requests made" + }, + "WebhooksCount": { + "Title": "Total Webhooks", + "Description": "Total number of webhooks created" + }, + "Plan": { + "Title": "Your Plan", + "Description": "Details of your current plan" + }, + "Webhooks": { + "Title": "My Webhooks", + "Description": "List of your active webhooks" + }, + "Requests": { + "Title": "Recent Request Activity", + "Description": "Number of requests over the last 7 days" + } + } + }, + "WebhookPage": { + "Title": "Webhooks", + "Description": "Webhook management", + "MaxWebhooks": "Number of webhooks for your plan", + "Usage": { + "Title": "How to use the webhook?", + "Description": "Copy your webhook URL below and use it in your application to send requests to it. Every request sent will be logged and displayed in the table below.", + "CurlIndication": "Usage example with curl" + }, + "Datatable": { + "Name": "Name", + "URL": "URL", + "RequestsCount": "Request count", + "DeleteMessage": "Are you sure you want to delete this webhook? This action is irreversible and will delete all related requests." + }, + "Errors": { + "404": "The webhook was not found", + "400": "Cannot delete the webhook, it is being used elsewhere", + "UNKNOWN": "An error occurred" + }, + "WebhookDetail": { + "Datatable": { + "Method": "Method", + "Origin": "Origin", + "Ip": "IP Address", + "DeleteMessage": "Are you sure you want to delete this request? This action is irreversible." + } + } + }, + "AdminPage": { + "Description": "Data management & statistics" + }, + "RequestDetailSheet": { + "Title": "Request Details #{requestId}", + "GlobalInfo": { + "Title": "General Information", + "Ip": "IP Address", + "Size": "Content size", + "UserAgent": "User-Agent", + "Origin": "Origin" + }, + "Headers": "Headers", + "Body": "Body", + "QueryParams": "Query Params" + } +} \ No newline at end of file diff --git a/messages/fr-old.json b/messages/fr-old.json deleted file mode 100644 index 489f7b0..0000000 --- a/messages/fr-old.json +++ /dev/null @@ -1,258 +0,0 @@ -{ - "Configuration": { - "Plans": { - "FREE": "Gratuit", - "PRO": "Pro", - "ADMIN": "Administrateur", - "Upgrade": "Améliorer" - } - }, - "CopyButton": { - "Copy": "Copier", - "Copied": "Copié" - }, - "LandingPage": { - "Buttons": { - "SignIn": "Sign in", - "CTA": "Get your webhook URL" - }, - "Slogan": { - "Part1": "Debug webhooks with", - "Part2": "persistent storage" - }, - "Description": { - "Part1": "Inspect payloads, replay requests, and monitor webhooks in real-time.", - "Part2": "Never lose a webhook event again with automatic persistence." - }, - "FeatureCards": { - "Feature1": { - "Title": "Inspect payloads", - "Description": "View complete webhook payloads with syntax highlighting and search capabilities." - }, - "Feature2": { - "Title": "Replay requests", - "Description": "Replay any webhook to your endpoint for testing and debugging purposes." - }, - "Feature3": { - "Title": "Monitor in real-time", - "Description": "Track webhook delivery, response times, and success rates with live analytics." - } - }, - "Trusted": { - "Badge": "Trusted by developers", - "Title": "Built for developer workflows", - "Description": { - "Part1": "Thousands of developers rely on", - "Part2": "to debug and monitor their webhook integrations." - } - }, - "Documentation": { - "Badge": "Platform features", - "Title": "Everything you need to test webhooks", - "Description": { - "Part1": "Powerful features designed for developers who need", - "Part2": "reliable webhook testing and debugging tools." - }, - "Features": { - "Feature1": { - "Title": "Plan your schedules", - "Description": "Explore your data, build your dashboard, bring your team together." - }, - "Feature2": { - "Title": "Data to insights in minutes", - "Description": "Transform raw data into actionable insights with powerful analytics tools." - }, - "Feature3": { - "Title": "Collaborate seamlessly", - "Description": "Work together in real-time with your team and share insights instantly." - } - } - }, - "Pricing": { - "Badge": "Plans & Pricing", - "Title": "Simple, transparent pricing", - "Description": { - "Part1": "Start testing webhooks for free. Upgrade to Pro for advanced features", - "Part2": "and higher limits when you need them." - }, - "Billing": { - "Monthly": "Monthly", - "Annually" : "Annualy", - "BilledMonthly": "per month", - "BilledAnnually": "per month, billed annually", - "Forever": "forever" - }, - "Plans": { - "FREE" : "Perfect for testing and small projects.", - "PRO": "Advanced features for production use.", - "Popular": "POPULAR" - }, - "Advantages": { - "RequestPerMonth": "requests per month", - "WebhookCount": "webhook", - "History": "day request history", - "ReplayRequest": "Replay your requests" - }, - "CTA": { - "FREE": "Start for free", - "PRO": "Get started" - } - }, - "CTA": { - "FREE": "Start for free", - "Title": "Ready to transform your business?", - "Description": { - "Part1": "Join thousands of businesses streamlining their operations", - "Part2": "managing schedules, and growing with data-driven insights." - } - }, - "Footer": { - "Legal": "Legal", - "AllRightsReserved": "All rights reserved", - "Terms": "Conditions d'utilisation", - "Privacy": "Politique de confidentialité" - }, - "FAQ": { - "Title": "Frequently Asked Questions", - "Description": { - "Part1": "Explore your data, build your dashboard,", - "Part2": "bring your team together." - } - } - }, - "Datatable" : { - "LinesPerPage": "Lignes par page", - "Amount": "{count, plural, one {# élément} other {# éléments}}", - "PageNumber": "Page {page} sur {pages}", - "NoData": "Aucun résultat", - "NA": "N/A" - }, - "DeleteConfirmationModal": { - "Confirmation": "Confirmation", - "Cancel": "Annuler", - "Confirm": "Confirmer", - "Error": "Une erreur est survenue" - }, - "Auth": { - "SignInPage": { - "Title": "Vous revoilà", - "Subtitle": "Connectez-vous avec vos identifiants", - "Methods": { - "Google": "Se connecter avec Google", - "Github": "Se connecter avec Github", - "Other": "Ou se connecter avec" - }, - "Form": { - "Email": "Adresse e-mail", - "Password": "Mot de passe", - "Submit": "Se connecter", - "Errors": { - "InvalidCredentials": "Identifiants invalides", - "GenericError": "Une erreur est survenue, veuillez réessayer plus tard" - } - }, - "Footer": { - "NoAccount": "Vous n'avez pas de compte ? ", - "SignUp": "S'inscrire" - } - }, - "SignUpPage": { - "Title": "Bienvenue", - "Subtitle": "Inscrivez-vous avec vos identifiants", - "Methods": { - "Google": "Se connecter avec Google", - "Github": "Se connecter avec Github", - "Other": "Ou s'inscrire avec" - }, - "Form": { - "Username": "Pseudo", - "Email": "Adresse e-mail", - "Password": "Mot de passe", - "Submit": "S'inscrire", - "Errors": { - "EmailAlreadyTaken": "Cette adresse e-mail est déjà utilisée", - "GenericError": "Une erreur est survenue, veuillez réessayer plus tard" - } - }, - "Footer": { - "AlreadyHaveAccount": "Vous avez déjà un compte ? ", - "SignIn": "Se connecter" - } - }, - "Footer": { - "Title": "En vous connectant, vous acceptez nos", - "Terms": "Conditions d'utilisation", - "AndConditions": " et notre ", - "Privacy": "Politique de confidentialité" - } - }, - "DashboardPage": { - "Description": "Informations générales", - "InfoCard": { - "RequestsCount": { - "Title": "Requêtes totales", - "Description": "Nombre total de requêtes effectuées" - }, - "WebhooksCount": { - "Title": "Webhooks totaux", - "Description": "Nombre total de webhooks créés" - }, - "Plan": { - "Title": "Votre plan", - "Description": "Détails de votre plan actuel" - }, - "Webhooks": { - "Title": "Mes webhooks", - "Description": "Liste de vos webhooks actifs" - }, - "Requests": { - "Title": "Activité récente des requêtes", - "Description": "Nombre de requêtes au cours des 7 derniers jours" - } - } - }, - "WebhookPage": { - "Description": "Gestion des webhooks", - "MaxWebhooks": "Nombre de webhooks pour votre plan", - "Usage" : { - "Title": "Comment utiliser le webhook ?", - "Description": "Copiez l'url de votre webhook ci-dessous et utilisez-la dans votre application pour y envoyer des requêtes. Chaque requête envoyée sera enregistrée et affichée dans le tableau ci-dessous.", - "CurlIndication": "Exemple d'utilisation avec curl" - }, - "Datatable" : { - "Name": "Nom", - "URL": "URL", - "RequestsCount": "Nombre de requêtes", - "DeleteMessage": "Êtes-vous sûr de vouloir supprimer ce webhook ? Cette action est irréversible et supprimera toutes les requêtes liées." - }, - "Errors": { - "404": "Le webhook n'a pas été trouvé" , - "400": "Impossible de supprimer le webhook, il est utilisé ailleurs", - "UNKNOWN": "Une erreur est survenue" - }, - "WebhookDetail": { - "Datatable": { - "Method": "Méthode", - "Origin": "Origine", - "Ip": "Adresse IP", - "DeleteMessage": "Êtes-vous sûr de vouloir supprimer cette requête ? Cette action est irréversible." - } - } - }, - "AdminPage": { - "Description": "Gestion des données & statistiques" - }, - "RequestDetailSheet": { - "Title": "Détails de la requête #{requestId}", - "GlobalInfo": { - "Title": "Informations générales", - "Ip": "Addresse IP", - "Size": "Taille du contenu", - "UserAgent": "User-Agent", - "Origin": "Origine" - }, - "Headers": "Headers", - "Body": "Body", - "QueryParams": "Query Params" - } -}