diff --git a/app/[locale]/settings/actions/create-issue.ts b/app/[locale]/settings/actions/create-issue.ts index 999dca8..866d483 100644 --- a/app/[locale]/settings/actions/create-issue.ts +++ b/app/[locale]/settings/actions/create-issue.ts @@ -7,6 +7,7 @@ import prisma from "@/utilities/prisma"; import schema from "@/schemas/issue"; import { auth } from "@/utilities/next-auth"; +import { getTranslations } from "next-intl/server"; export async function createIssue( _state: Record, @@ -15,6 +16,7 @@ export async function createIssue( { // On récupère d'abord la session de l'utilisateur. const session = await auth(); + const messages = await getTranslations(); if ( !session ) { @@ -22,7 +24,7 @@ export async function createIssue( // n'est pas connecté. return { success: false, - reason: "form.errors.unauthenticated" + reason: messages( "authjs.errors.SessionRequired" ) }; } @@ -40,7 +42,7 @@ export async function createIssue( // premier code d'erreur rencontré. return { success: false, - reason: `zod.errors.${ result.error.issues[ 0 ].code }` + reason: messages( `zod.${ result.error.issues[ 0 ].code }` ) }; } @@ -61,7 +63,7 @@ export async function createIssue( // formulaire. return { success: false, - reason: "form.errors.too_many" + reason: messages( "form.errors.too_many" ) }; } @@ -79,6 +81,6 @@ export async function createIssue( // On retourne enfin un message de succès. return { success: true, - reason: "settings.issue.success" + reason: messages( "form.infos.issue_created" ) }; } \ No newline at end of file diff --git a/app/[locale]/settings/actions/delete-user-data.ts b/app/[locale]/settings/actions/delete-user-data.ts index e8ad700..284d7e7 100644 --- a/app/[locale]/settings/actions/delete-user-data.ts +++ b/app/[locale]/settings/actions/delete-user-data.ts @@ -10,6 +10,7 @@ import { join } from "path"; import { existsSync } from "fs"; import { readdir, rm } from "fs/promises"; import { auth, signOut } from "@/utilities/next-auth"; +import { getTranslations } from "next-intl/server"; export async function deleteUserData( _state: Record, @@ -18,6 +19,7 @@ export async function deleteUserData( { // On récupère d'abord la session de l'utilisateur. const session = await auth(); + const messages = await getTranslations(); if ( !session ) { @@ -25,7 +27,7 @@ export async function deleteUserData( // n'est pas connecté. return { success: false, - reason: "form.errors.unauthenticated" + reason: messages( "authjs.errors.SessionRequired" ) }; } @@ -46,7 +48,7 @@ export async function deleteUserData( // premier code d'erreur rencontré. return { success: false, - reason: `zod.errors.${ result.error.issues[ 0 ].code }` + reason: messages( `zod.${ result.error.issues[ 0 ].code }` ) }; } @@ -125,6 +127,6 @@ export async function deleteUserData( // On retourne enfin un message de succès. return { success: true, - reason: "settings.privacy.success" + reason: messages( "form.infos.data_purged" ) }; } \ No newline at end of file diff --git a/app/[locale]/settings/actions/update-layout.ts b/app/[locale]/settings/actions/update-layout.ts index 14ab0a6..7748c76 100644 --- a/app/[locale]/settings/actions/update-layout.ts +++ b/app/[locale]/settings/actions/update-layout.ts @@ -7,6 +7,7 @@ import prisma from "@/utilities/prisma"; import schema from "@/schemas/layout"; import { auth } from "@/utilities/next-auth"; +import { getTranslations } from "next-intl/server"; export async function updateLayout( _state: Record, @@ -15,6 +16,7 @@ export async function updateLayout( { // On récupère d'abord la session de l'utilisateur. const session = await auth(); + const messages = await getTranslations(); if ( !session ) { @@ -22,7 +24,7 @@ export async function updateLayout( // n'est pas connecté. return { success: false, - reason: "form.errors.unauthenticated" + reason: messages( "authjs.errors.SessionRequired" ) }; } @@ -39,7 +41,7 @@ export async function updateLayout( // premier code d'erreur rencontré. return { success: false, - reason: `zod.errors.${ result.error.issues[ 0 ].code }` + reason: messages( `zod.${ result.error.issues[ 0 ].code }` ) }; } @@ -65,6 +67,6 @@ export async function updateLayout( // On retourne enfin un message de succès. return { success: true, - reason: "settings.layout.success" + reason: messages( "form.infos.layout_updated" ) }; } \ No newline at end of file diff --git a/app/[locale]/settings/actions/update-notifications.ts b/app/[locale]/settings/actions/update-notifications.ts index 7a4cd9c..9b05b8c 100644 --- a/app/[locale]/settings/actions/update-notifications.ts +++ b/app/[locale]/settings/actions/update-notifications.ts @@ -7,6 +7,7 @@ import prisma from "@/utilities/prisma"; import schema from "@/schemas/notifications"; import { auth } from "@/utilities/next-auth"; +import { getTranslations } from "next-intl/server"; export async function updateNotifications( _state: Record, @@ -15,6 +16,7 @@ export async function updateNotifications( { // On récupère d'abord la session de l'utilisateur. const session = await auth(); + const messages = await getTranslations(); if ( !session ) { @@ -22,7 +24,7 @@ export async function updateNotifications( // n'est pas connecté. return { success: false, - reason: "form.errors.unauthenticated" + reason: messages( "authjs.errors.SessionRequired" ) }; } @@ -38,7 +40,7 @@ export async function updateNotifications( // premier code d'erreur rencontré. return { success: false, - reason: `zod.errors.${ result.error.issues[ 0 ].code }` + reason: messages( `zod.${ result.error.issues[ 0 ].code }` ) }; } @@ -61,6 +63,6 @@ export async function updateNotifications( // On retourne enfin un message de succès. return { success: true, - reason: "settings.notifications.success" + reason: messages( "form.infos.notifications_updated" ) }; } \ No newline at end of file diff --git a/app/[locale]/settings/actions/update-storage.ts b/app/[locale]/settings/actions/update-storage.ts index 139a359..b942b43 100644 --- a/app/[locale]/settings/actions/update-storage.ts +++ b/app/[locale]/settings/actions/update-storage.ts @@ -11,6 +11,7 @@ import { auth } from "@/utilities/next-auth"; import * as Sentry from "@sentry/nextjs"; import { existsSync } from "fs"; import { join, parse } from "path"; +import { getTranslations } from "next-intl/server"; export async function updateStorage( _state: Record, @@ -19,6 +20,7 @@ export async function updateStorage( { // On récupère d'abord la session de l'utilisateur. const session = await auth(); + const messages = await getTranslations(); if ( !session ) { @@ -26,7 +28,7 @@ export async function updateStorage( // n'est pas connecté. return { success: false, - reason: "form.errors.unauthenticated" + reason: messages( "authjs.errors.SessionRequired" ) }; } @@ -49,7 +51,7 @@ export async function updateStorage( // premier code d'erreur rencontré. return { success: false, - reason: `zod.errors.${ result.error.issues[ 0 ].code }` + reason: messages( `zod.${ result.error.issues[ 0 ].code }` ) }; } @@ -150,6 +152,6 @@ export async function updateStorage( // On retourne enfin un message de succès. return { success: true, - reason: "settings.storage.success" + reason: messages( "form.infos.storage_updated" ) }; } \ No newline at end of file diff --git a/app/[locale]/settings/actions/update-user.ts b/app/[locale]/settings/actions/update-user.ts index a4ef8d5..34cfa08 100644 --- a/app/[locale]/settings/actions/update-user.ts +++ b/app/[locale]/settings/actions/update-user.ts @@ -12,6 +12,7 @@ import { TOTP } from "otpauth"; import { auth } from "@/utilities/next-auth"; import { cookies } from "next/headers"; import * as Sentry from "@sentry/nextjs"; +import { getTranslations } from "next-intl/server"; import { generateMetadata } from "@/app/layout"; import { fileTypeFromBuffer } from "file-type"; import { mkdir, readdir, rm, writeFile } from "fs/promises"; @@ -23,6 +24,7 @@ export async function updateUser( { // On récupère d'abord la session de l'utilisateur. const session = await auth(); + const messages = await getTranslations(); if ( !session ) { @@ -30,7 +32,7 @@ export async function updateUser( // n'est pas connecté. return { success: false, - reason: "form.errors.unauthenticated" + reason: messages( "authjs.errors.SessionRequired" ) }; } @@ -52,7 +54,7 @@ export async function updateUser( return { success: false, - reason: `zod.errors.${ code === "custom" ? message : code }` + reason: messages( `zod.${ code === "custom" ? message : code }` ) }; } @@ -157,7 +159,7 @@ export async function updateUser( // contient des données textuelles. return { success: false, - reason: "zod.errors.wrong_file_type" + reason: messages( "zod.wrong_file_type" ) }; } @@ -176,7 +178,7 @@ export async function updateUser( // accepté, on indique que le type de fichier est incorrect. return { success: false, - reason: "zod.errors.wrong_file_type" + reason: messages( "zod.wrong_file_type" ) }; } @@ -211,7 +213,7 @@ export async function updateUser( return { success: false, - reason: "form.errors.file_system" + reason: messages( "form.errors.file_system" ) }; } } @@ -219,6 +221,6 @@ export async function updateUser( // On retourne enfin un message de succès. return { success: true, - reason: "settings.user.success" + reason: messages( "form.infos.user_updated" ) }; } \ No newline at end of file diff --git a/locales/fr.json b/locales/fr.json index 2448908..0fccbc1 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -44,6 +44,12 @@ "action_partial": "Action partiellement réussie", "action_required": "Action requise", "action_failed": "Action échouée", + "data_purged": "Toutes les données sélectionnées ont été purgées avec succès.", + "issue_created": "Votre signalement de bogue a été créé avec succès.", + "layout_updated": "Les paramètres d'apparence ont été mis à jour avec succès.", + "notifications_updated": "Les paramètres de notification ont été mis à jour avec succès.", + "storage_updated": "Les paramètres de stockage ont été mis à jour avec succès.", + "user_updated": "Les informations de votre compte utilisateur ont été mises à jour avec succès.", "file_full_deleted": "Tous les fichiers ont été supprimés avec succès.", "file_partial_deleted": "Certains fichiers n'ont pas pu être supprimés à cause d'une erreur inattendue.", "name_full_updated": "Le nom de tous les fichiers a été mis à jour avec succès.", @@ -59,6 +65,8 @@ "email_validation": "Un courriel de confirmation a été envoyé à l'adresse que vous avez fournie. Veuillez vérifier votre boîte de réception et cliquer sur le lien de confirmation pour activer votre compte." }, "errors": { + "file_system": "Une erreur s'est produite lors de l'accès au système de fichiers. Veuillez réessayer plus tard.", + "too_many": "Vous avez réalisé cette action trop de fois. Veuillez réessayer plus tard.", "quota_exceeded": "Le quota de stockage maximal a été dépassé. Certains fichiers n'ont pas pu être téléversés.", "email_used": "Cette adresse électronique est déjà utilisée.", "auth_failed": "Échec de l'authentification", @@ -304,7 +312,7 @@ "OAuthAccountNotLinked": "Pour confirmer votre identité, connectez-vous avec le même compte que celui que vous avez utilisé initialement.", "EmailSignup": "Le courriel de confirmation n'a pas pu être envoyé à l'adresse que vous avez fournie. Veuillez réessayer plus tard.", "CredentialsSignin": "Échec de l'autorisation. Vérifiez les informations que vous avez fournies.", - "SessionRequired": "Veillez à vous connecter pour accéder à cette page." + "SessionRequired": "Vous devez être authentifié pour accéder à cette ressource." } }, "consentModal": {