From a045849684779932294f573bbbd5d8b980409951 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Le=20Meur?= Date: Tue, 30 Sep 2025 13:09:47 +0200 Subject: [PATCH 1/5] =?UTF-8?q?chore:=20add=20`Fran=C3=A7ais=20-=20fr-FR`?= =?UTF-8?q?=20language=20support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/i18n/src/translations/fr-FR.ts | 157 ++++++++++++++++++++++++ packages/i18n/src/translations/index.ts | 1 + 2 files changed, 158 insertions(+) create mode 100644 packages/i18n/src/translations/fr-FR.ts diff --git a/packages/i18n/src/translations/fr-FR.ts b/packages/i18n/src/translations/fr-FR.ts new file mode 100644 index 00000000..91ca80eb --- /dev/null +++ b/packages/i18n/src/translations/fr-FR.ts @@ -0,0 +1,157 @@ +/** + * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com). + * + * WSO2 LLC. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/* eslint-disable sort-keys */ +/* eslint-disable @typescript-eslint/naming-convention */ + +import {I18nTranslations, I18nMetadata, I18nBundle} from '../models/i18n'; + +const translations: I18nTranslations = { + /* |---------------------------------------------------------------| */ + /* | Elements | */ + /* |---------------------------------------------------------------| */ + + /* Buttons */ + 'elements.buttons.signIn': 'Se connecter', + 'elements.buttons.signOut': 'Se déconnecter', + 'elements.buttons.signUp': 'S\'inscrire', + 'elements.buttons.facebook': 'Continuer avec Facebook', + 'elements.buttons.google': 'Continuer avec Google', + 'elements.buttons.github': 'Continuer avec GitHub', + 'elements.buttons.microsoft': 'Continuer avec Microsoft', + 'elements.buttons.linkedin': 'Continuer with LinkedIn', + 'elements.buttons.ethereum': 'Continuer avec Sign In Ethereum', + 'elements.buttons.multi.option': 'Continuer avec {connection}', + 'elements.buttons.social': 'Continuer avec {connection}', + + /* Fields */ + 'elements.fields.placeholder': 'Entrez votre {field}', + + /* |---------------------------------------------------------------| */ + /* | Widgets | */ + /* |---------------------------------------------------------------| */ + + /* Base Sign In */ + 'signin.title': 'Se connecter', + 'signin.subtitle': 'Entrez vos identifiants pour continuer.', + + /* Base Sign Up */ + 'signup.title': 'S\'inscrire', + 'signup.subtitle': 'Créez un nouveau compte pour commencer.', + + /* Email OTP */ + 'email.otp.title': 'Vérification OTP', + 'email.otp.subtitle': 'Entrez le code envoyé à votre adresse e-mail.', + 'email.otp.submit.button': 'Continuer', + + /* Identifier First */ + 'identifier.first.title': 'Se connecter', + 'identifier.first.subtitle': 'Entrez votre nom d\'utilisateur ou votre adresse e-mail.', + 'identifier.first.submit.button': 'Continuer', + + /* SMS OTP */ + 'sms.otp.title': 'Vérification OTP', + 'sms.otp.subtitle': 'Entrez le code envoyé à votre numéro de téléphone.', + 'sms.otp.submit.button': 'Continuer', + + /* TOTP */ + 'totp.title': 'Vérifiez votre identité', + 'totp.subtitle': 'Entrez le code de votre application d\'authentification.', + 'totp.submit.button': 'Continuer', + + /* Username Password */ + 'username.password.submit.button': 'Continuer', + 'username.password.title': 'Se connecter', + 'username.password.subtitle': 'Entrez votre nom d\'utilisateur et votre mot de passe pour continuer.', + + /* |---------------------------------------------------------------| */ + /* | User Profile | */ + /* |---------------------------------------------------------------| */ + + 'user.profile.title': 'Profil', + 'user.profile.update.generic.error': 'Une erreur est survenue lors de la mise à jour de votre profil. Veuillez réessayer.', + + /* |---------------------------------------------------------------| */ + /* | Organization Switcher | */ + /* |---------------------------------------------------------------| */ + + 'organization.switcher.select.organization': 'Sélectionner l\'organisation', + 'organization.switcher.switch.organization': 'Changer d\'organisation', + 'organization.switcher.loading.organizations': 'Chargement des organisations...', + 'organization.switcher.members': 'membres', + 'organization.switcher.member': 'membre', + 'organization.switcher.create.organization': 'Créer une organisation', + 'organization.switcher.manage.organizations': 'Gérer les organisations', + 'organization.switcher.manage.button': 'Gérer', + 'organization.switcher.organizations.title': 'Organisations', + 'organization.switcher.switch.button': 'Changer', + 'organization.switcher.no.access': 'Aucun accès', + 'organization.switcher.status.label': 'Statut:', + 'organization.switcher.showing.count': 'Affichage de {showing} sur {total} organisations', + 'organization.switcher.refresh.button': 'Rafraîchir', + 'organization.switcher.load.more': 'Charger plus d\'organisations', + 'organization.switcher.loading.more': 'Chargement...', + 'organization.switcher.no.organizations': 'Aucune organisation trouvée', + 'organization.switcher.error.prefix': 'Erreur:', + 'organization.profile.title': 'Profil de l\'organisation', + 'organization.profile.loading': 'Chargement de l\'organisation...', + 'organization.profile.error': 'Échec du chargement de l\'organisation', + + 'organization.create.title': 'Créer une organisation', + 'organization.create.name.label': 'Nom de l\'organisation', + 'organization.create.name.placeholder': 'Entrez le nom de l\'organisation', + 'organization.create.handle.label': 'Identifiant de l\'organisation', + 'organization.create.handle.placeholder': 'mon-organisation', + 'organization.create.description.label': 'Description', + 'organization.create.description.placeholder': 'Entrez la description de l\'organisation', + 'organization.create.button': 'Créer une organisation', + 'organization.create.creating': 'Création en cours...', + 'organization.create.cancel': 'Annuler', + + /* |---------------------------------------------------------------| */ + /* | Messages | */ + /* |---------------------------------------------------------------| */ + + 'messages.loading': 'Chargement...', + + /* |---------------------------------------------------------------| */ + /* | Errors | */ + /* |---------------------------------------------------------------| */ + + 'errors.title': 'Erreur', + 'errors.sign.in.initialization': 'Une erreur est survenue lors de l\'initialisation. Veuillez réessayer plus tard.', + 'errors.sign.in.flow.failure': 'Une erreur est survenue lors du flux de connexion. Veuillez réessayer plus tard.', + 'errors.sign.in.flow.completion.failure': 'Une erreur est survenue lors de la finalisation du flux de connexion. Veuillez réessayer plus tard.', + 'errors.sign.in.flow.passkeys.failure': 'Une erreur est survenue lors de la connexion avec les clefs d\'accès. Veuillez réessayer plus tard.', + 'errors.sign.in.flow.passkeys.completion.failure': 'Une erreur est survenue lors de la finalisation du flux de connexion avec les clefs d\'accès. Veuillez réessayer plus tard.', +}; + +const metadata: I18nMetadata = { + localeCode: 'fr-FR', + countryCode: 'FR', + languageCode: 'fr', + displayName: 'Français (France)', + direction: 'ltr', +}; + +const fr_FR: I18nBundle = { + metadata, + translations, +}; + +export default fr_FR; diff --git a/packages/i18n/src/translations/index.ts b/packages/i18n/src/translations/index.ts index 9702553a..51f67c07 100644 --- a/packages/i18n/src/translations/index.ts +++ b/packages/i18n/src/translations/index.ts @@ -17,4 +17,5 @@ */ export {default as en_US} from './en-US'; +export {default as fr_FR} from './fr-FR'; export {default as hi_IN} from './hi-IN'; From 7867ebc910dc4b347fe38d975097c2d8c2c6ef95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Le=20Meur?= Date: Tue, 30 Sep 2025 16:38:11 +0200 Subject: [PATCH 2/5] fix lint errors --- packages/i18n/src/translations/fr-FR.ts | 44 ++++++++++++++----------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/packages/i18n/src/translations/fr-FR.ts b/packages/i18n/src/translations/fr-FR.ts index 91ca80eb..e377185e 100644 --- a/packages/i18n/src/translations/fr-FR.ts +++ b/packages/i18n/src/translations/fr-FR.ts @@ -29,7 +29,7 @@ const translations: I18nTranslations = { /* Buttons */ 'elements.buttons.signIn': 'Se connecter', 'elements.buttons.signOut': 'Se déconnecter', - 'elements.buttons.signUp': 'S\'inscrire', + 'elements.buttons.signUp': "S'inscrire", 'elements.buttons.facebook': 'Continuer avec Facebook', 'elements.buttons.google': 'Continuer avec Google', 'elements.buttons.github': 'Continuer avec GitHub', @@ -51,7 +51,7 @@ const translations: I18nTranslations = { 'signin.subtitle': 'Entrez vos identifiants pour continuer.', /* Base Sign Up */ - 'signup.title': 'S\'inscrire', + 'signup.title': "S'inscrire", 'signup.subtitle': 'Créez un nouveau compte pour commencer.', /* Email OTP */ @@ -61,7 +61,7 @@ const translations: I18nTranslations = { /* Identifier First */ 'identifier.first.title': 'Se connecter', - 'identifier.first.subtitle': 'Entrez votre nom d\'utilisateur ou votre adresse e-mail.', + 'identifier.first.subtitle': "Entrez votre nom d'utilisateur ou votre adresse e-mail.", 'identifier.first.submit.button': 'Continuer', /* SMS OTP */ @@ -71,27 +71,28 @@ const translations: I18nTranslations = { /* TOTP */ 'totp.title': 'Vérifiez votre identité', - 'totp.subtitle': 'Entrez le code de votre application d\'authentification.', + 'totp.subtitle': "Entrez le code de votre application d'authentification.", 'totp.submit.button': 'Continuer', /* Username Password */ 'username.password.submit.button': 'Continuer', 'username.password.title': 'Se connecter', - 'username.password.subtitle': 'Entrez votre nom d\'utilisateur et votre mot de passe pour continuer.', + 'username.password.subtitle': "Entrez votre nom d'utilisateur et votre mot de passe pour continuer.", /* |---------------------------------------------------------------| */ /* | User Profile | */ /* |---------------------------------------------------------------| */ 'user.profile.title': 'Profil', - 'user.profile.update.generic.error': 'Une erreur est survenue lors de la mise à jour de votre profil. Veuillez réessayer.', + 'user.profile.update.generic.error': + 'Une erreur est survenue lors de la mise à jour de votre profil. Veuillez réessayer.', /* |---------------------------------------------------------------| */ /* | Organization Switcher | */ /* |---------------------------------------------------------------| */ - 'organization.switcher.select.organization': 'Sélectionner l\'organisation', - 'organization.switcher.switch.organization': 'Changer d\'organisation', + 'organization.switcher.select.organization': "Sélectionner l'organisation", + 'organization.switcher.switch.organization': "Changer d'organisation", 'organization.switcher.loading.organizations': 'Chargement des organisations...', 'organization.switcher.members': 'membres', 'organization.switcher.member': 'membre', @@ -104,21 +105,21 @@ const translations: I18nTranslations = { 'organization.switcher.status.label': 'Statut:', 'organization.switcher.showing.count': 'Affichage de {showing} sur {total} organisations', 'organization.switcher.refresh.button': 'Rafraîchir', - 'organization.switcher.load.more': 'Charger plus d\'organisations', + 'organization.switcher.load.more': "Charger plus d'organisations", 'organization.switcher.loading.more': 'Chargement...', 'organization.switcher.no.organizations': 'Aucune organisation trouvée', 'organization.switcher.error.prefix': 'Erreur:', - 'organization.profile.title': 'Profil de l\'organisation', - 'organization.profile.loading': 'Chargement de l\'organisation...', - 'organization.profile.error': 'Échec du chargement de l\'organisation', + 'organization.profile.title': "Profil de l'organisation", + 'organization.profile.loading': "Chargement de l'organisation...", + 'organization.profile.error': "Échec du chargement de l'organisation", 'organization.create.title': 'Créer une organisation', - 'organization.create.name.label': 'Nom de l\'organisation', - 'organization.create.name.placeholder': 'Entrez le nom de l\'organisation', - 'organization.create.handle.label': 'Identifiant de l\'organisation', + 'organization.create.name.label': "Nom de l'organisation", + 'organization.create.name.placeholder': "Entrez le nom de l'organisation", + 'organization.create.handle.label': "Identifiant de l'organisation", 'organization.create.handle.placeholder': 'mon-organisation', 'organization.create.description.label': 'Description', - 'organization.create.description.placeholder': 'Entrez la description de l\'organisation', + 'organization.create.description.placeholder': "Entrez la description de l'organisation", 'organization.create.button': 'Créer une organisation', 'organization.create.creating': 'Création en cours...', 'organization.create.cancel': 'Annuler', @@ -134,11 +135,14 @@ const translations: I18nTranslations = { /* |---------------------------------------------------------------| */ 'errors.title': 'Erreur', - 'errors.sign.in.initialization': 'Une erreur est survenue lors de l\'initialisation. Veuillez réessayer plus tard.', + 'errors.sign.in.initialization': "Une erreur est survenue lors de l'initialisation. Veuillez réessayer plus tard.", 'errors.sign.in.flow.failure': 'Une erreur est survenue lors du flux de connexion. Veuillez réessayer plus tard.', - 'errors.sign.in.flow.completion.failure': 'Une erreur est survenue lors de la finalisation du flux de connexion. Veuillez réessayer plus tard.', - 'errors.sign.in.flow.passkeys.failure': 'Une erreur est survenue lors de la connexion avec les clefs d\'accès. Veuillez réessayer plus tard.', - 'errors.sign.in.flow.passkeys.completion.failure': 'Une erreur est survenue lors de la finalisation du flux de connexion avec les clefs d\'accès. Veuillez réessayer plus tard.', + 'errors.sign.in.flow.completion.failure': + 'Une erreur est survenue lors de la finalisation du flux de connexion. Veuillez réessayer plus tard.', + 'errors.sign.in.flow.passkeys.failure': + "Une erreur est survenue lors de la connexion avec les clefs d'accès. Veuillez réessayer plus tard.", + 'errors.sign.in.flow.passkeys.completion.failure': + "Une erreur est survenue lors de la finalisation du flux de connexion avec les clefs d'accès. Veuillez réessayer plus tard.", }; const metadata: I18nMetadata = { From ed1aefccdd853ea4a3d88ff0be2b56931ba7a0fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Le=20Meur?= Date: Wed, 1 Oct 2025 13:27:48 +0200 Subject: [PATCH 3/5] add changeset --- .changeset/breezy-masks-greet.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/breezy-masks-greet.md diff --git a/.changeset/breezy-masks-greet.md b/.changeset/breezy-masks-greet.md new file mode 100644 index 00000000..0faf5042 --- /dev/null +++ b/.changeset/breezy-masks-greet.md @@ -0,0 +1,5 @@ +--- +'@asgardeo/i18n': minor +--- + +chore: add `Français - fr-FR` language support From 477ae8f9e7aa238ef20f111d09faff224c1ca5cb Mon Sep 17 00:00:00 2001 From: Brion Mario Date: Wed, 1 Oct 2025 17:20:41 +0530 Subject: [PATCH 4/5] chore: update changeset --- .changeset/breezy-masks-greet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/breezy-masks-greet.md b/.changeset/breezy-masks-greet.md index 0faf5042..7984d8d2 100644 --- a/.changeset/breezy-masks-greet.md +++ b/.changeset/breezy-masks-greet.md @@ -1,5 +1,5 @@ --- -'@asgardeo/i18n': minor +'@asgardeo/i18n': patch --- chore: add `Français - fr-FR` language support From 5ca5fafd319de31ffb58e53794aebfb065bd3c87 Mon Sep 17 00:00:00 2001 From: Brion Mario Date: Wed, 1 Oct 2025 17:24:39 +0530 Subject: [PATCH 5/5] chore: update .changeset/breezy-masks-greet.md --- .changeset/breezy-masks-greet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/breezy-masks-greet.md b/.changeset/breezy-masks-greet.md index 7984d8d2..0faf5042 100644 --- a/.changeset/breezy-masks-greet.md +++ b/.changeset/breezy-masks-greet.md @@ -1,5 +1,5 @@ --- -'@asgardeo/i18n': patch +'@asgardeo/i18n': minor --- chore: add `Français - fr-FR` language support