mirror of
https://github.com/logto-io/logto.git
synced 2025-03-03 22:15:32 -05:00
feat(phrases): add french language (#1767)
* feat(phrases): add french language * feat(phrases): add missing french translation * feat(phrases): add missing import * fix(phrases): fix liniting * fix(phrases): linting * fix(phrases): apply review changes * fix(phrases): linting Co-authored-by: Charles Zhao <charleszhao@silverhand.io>
This commit is contained in:
parent
166da40210
commit
0503b30121
31 changed files with 867 additions and 0 deletions
|
@ -1,6 +1,7 @@
|
|||
import { NormalizeKeyPaths } from '@silverhand/essentials';
|
||||
|
||||
import en from './locales/en';
|
||||
import fr from './locales/fr';
|
||||
import koKR from './locales/ko-kr';
|
||||
import trTR from './locales/tr-tr';
|
||||
import zhCN from './locales/zh-cn';
|
||||
|
@ -12,6 +13,7 @@ export type I18nKey = NormalizeKeyPaths<typeof en.translation>;
|
|||
|
||||
const resource: Resource = {
|
||||
[Language.English]: en,
|
||||
[Language.French]: fr,
|
||||
[Language.Chinese]: zhCN,
|
||||
[Language.Korean]: koKR,
|
||||
[Language.Turkish]: trTR,
|
||||
|
|
84
packages/phrases-ui/src/locales/fr.ts
Normal file
84
packages/phrases-ui/src/locales/fr.ts
Normal file
|
@ -0,0 +1,84 @@
|
|||
import en from './en';
|
||||
|
||||
const translation = {
|
||||
input: {
|
||||
username: "Nom d'utilisateur",
|
||||
password: 'Mot de passe',
|
||||
email: 'Email',
|
||||
phone_number: 'Numéro de téléphone',
|
||||
confirm_password: 'Confirmer le mot de passe',
|
||||
},
|
||||
secondary: {
|
||||
sign_in_with: 'Se connecter avec {{methods, list(type: disjunction;)}}',
|
||||
social_bind_with:
|
||||
'Vous avez déjà un compte ? Connectez-vous pour lier {{methods, list(type: disjunction;)}} avec votre identité sociale.',
|
||||
},
|
||||
action: {
|
||||
sign_in: 'Connexion',
|
||||
continue: 'Continuer',
|
||||
create_account: 'Créer un compte',
|
||||
create: 'Créer',
|
||||
enter_passcode: 'Entrer le code',
|
||||
confirm: 'Confirmer',
|
||||
cancel: 'Annuler',
|
||||
bind: 'Lier avec {{address}}',
|
||||
back: 'Aller en arrière',
|
||||
nav_back: 'Retour',
|
||||
agree: 'Accepter',
|
||||
got_it: 'Compris',
|
||||
sign_in_with: 'Connexion avec {{name}}',
|
||||
},
|
||||
description: {
|
||||
email: 'email',
|
||||
phone_number: 'numéro de téléphone',
|
||||
reminder: 'Rappel',
|
||||
not_found: '404 Non trouvé',
|
||||
agree_with_terms: "J'ai lu et accepté les ",
|
||||
agree_with_terms_modal: 'Pour continuer, veuillez accepter le <link></link>.',
|
||||
terms_of_use: "Conditions d'utilisation",
|
||||
create_account: 'Créer un compte',
|
||||
forgot_password: 'Mot de passe oublié ?',
|
||||
or: 'ou',
|
||||
enter_passcode: 'Le code a été envoyé à {{address}}',
|
||||
passcode_sent: 'Le code a été renvoyé',
|
||||
resend_after_seconds: 'Renvoyer après <span>{{seconds}}</span> secondes',
|
||||
resend_passcode: 'Renvoyer le code',
|
||||
continue_with: 'Continuer avec',
|
||||
create_account_id_exists:
|
||||
'Le compte avec {{type}} {{value}} existe déjà, voulez-vous vous connecter ?',
|
||||
sign_in_id_does_not_exists:
|
||||
"Le compte avec {{type}} {{value}} n'existe pas, voulez-vous créer un nouveau compte ?",
|
||||
bind_account_title: 'Lier le compte',
|
||||
social_create_account: 'Pas de compte ? Vous pouvez créer un nouveau compte et un lien.',
|
||||
social_bind_account:
|
||||
'Vous avez déjà un compte ? Connectez-vous pour le relier à votre identité sociale.',
|
||||
social_bind_with_existing:
|
||||
'Nous trouvons un compte connexe, vous pouvez le relier directement.',
|
||||
},
|
||||
error: {
|
||||
username_password_mismatch: "Le nom d'utilisateur et le mot de passe ne correspondent pas",
|
||||
username_required: "Le nom d'utilisateur est requis",
|
||||
password_required: 'Le mot de passe est requis',
|
||||
username_exists: "Ce Nom d'utilisateur existe déjà",
|
||||
username_should_not_start_with_number:
|
||||
"Le nom d'utilisateur ne doit pas commencer par un chiffre",
|
||||
username_valid_charset:
|
||||
"Le nom d'utilisateur ne doit contenir que des lettres, des chiffres ou des caractères de soulignement.",
|
||||
invalid_email: "L'email n'est pas valide",
|
||||
invalid_phone: "Le numéro de téléphone n'est pas valide",
|
||||
password_min_length: 'Le mot de passe doit comporter un minimum de {{min}} caractères.',
|
||||
passwords_do_not_match: 'Les mots de passe ne correspondent pas',
|
||||
invalid_passcode: 'Le code est invalide',
|
||||
invalid_connector_auth: "L'autorisation n'est pas valide",
|
||||
invalid_connector_request: 'Les données du connecteur ne sont pas valides',
|
||||
unknown: 'Erreur inconnue. Veuillez réessayer plus tard.',
|
||||
invalid_session:
|
||||
'Session non trouvée. Veuillez revenir en arrière et vous connecter à nouveau.',
|
||||
},
|
||||
};
|
||||
|
||||
const fr: typeof en = Object.freeze({
|
||||
translation,
|
||||
});
|
||||
|
||||
export default fr;
|
|
@ -7,6 +7,7 @@ export type ResourceKey = string | Record<string, unknown>;
|
|||
|
||||
export enum Language {
|
||||
English = 'en',
|
||||
French = 'fr',
|
||||
Chinese = 'zh-CN',
|
||||
Turkish = 'tr-TR',
|
||||
Korean = 'ko-KR',
|
||||
|
@ -14,6 +15,7 @@ export enum Language {
|
|||
|
||||
const languageCodeAndDisplayNameMappings: Record<Language, string> = {
|
||||
[Language.English]: 'English',
|
||||
[Language.French]: 'Français',
|
||||
[Language.Chinese]: '简体中文',
|
||||
[Language.Turkish]: 'Türkçe',
|
||||
[Language.Korean]: '한국어',
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { NormalizeKeyPaths } from '@silverhand/essentials';
|
||||
|
||||
import en from './locales/en';
|
||||
import fr from './locales/fr';
|
||||
import koKR from './locales/ko-kr';
|
||||
import trTR from './locales/tr-tr';
|
||||
import zhCN from './locales/zh-cn';
|
||||
|
@ -16,6 +17,7 @@ export type AdminConsoleKey = NormalizeKeyPaths<typeof en.translation.admin_cons
|
|||
|
||||
const resource: Resource = {
|
||||
[Language.English]: en,
|
||||
[Language.French]: fr,
|
||||
[Language.Chinese]: zhCN,
|
||||
[Language.Korean]: koKR,
|
||||
[Language.Turkish]: trTR,
|
||||
|
|
118
packages/phrases/src/locales/fr/errors.ts
Normal file
118
packages/phrases/src/locales/fr/errors.ts
Normal file
|
@ -0,0 +1,118 @@
|
|||
const errors = {
|
||||
auth: {
|
||||
authorization_header_missing: "L'en-tête d'autorisation est manquant.",
|
||||
authorization_token_type_not_supported: "Le type d'autorisation n'est pas pris en charge.",
|
||||
unauthorized:
|
||||
"Non autorisé. Veuillez vérifier les informations d'identification et son champ d'application.",
|
||||
forbidden: "Interdit. Veuillez vérifier vos rôles et autorisations d'utilisateur.",
|
||||
jwt_sub_missing: '`sub` manquant dans JWT.',
|
||||
},
|
||||
guard: {
|
||||
invalid_input: "La requête {{type}} n'est pas valide.",
|
||||
invalid_pagination: "La valeur de la pagination de la requête n'est pas valide.",
|
||||
},
|
||||
oidc: {
|
||||
aborted: "L'utilisateur a abandonné l'interaction.",
|
||||
invalid_scope: "Le scope {{scope}} n'est pas pris en charge.",
|
||||
invalid_scope_plural: 'Les scopes {{scopes}} ne sont pas supportés.',
|
||||
invalid_token: 'Jeton fournis invalide.',
|
||||
invalid_client_metadata: 'Les métadonnées du client fournies sont invalides.',
|
||||
insufficient_scope: "Jeton d'accès manquant pour les scopes {{scopes}}.",
|
||||
invalid_request: 'La requête est invalide.',
|
||||
invalid_grant: 'Grant request is invalid.',
|
||||
invalid_redirect_uri:
|
||||
'`redirect_uri` ne correspondait à aucun des `redirect_uris` enregistrés par le client.',
|
||||
access_denied: 'Accès refusé.',
|
||||
invalid_target: 'Indicateur de ressource invalide.',
|
||||
unsupported_grant_type: "Le `grant_type` demandé n'est pas supporté.",
|
||||
unsupported_response_mode: "Le `response_mode` demandé n'est pas supporté.",
|
||||
unsupported_response_type: "Le `response_type` demandé n'est pas supporté.",
|
||||
provider_error: "Erreur interne de l'OIDC : {{message}}.",
|
||||
},
|
||||
user: {
|
||||
username_exists_register: "Le nom d'utilisateur a été enregistré.",
|
||||
email_exists_register: "L'adresse email a été enregistrée.",
|
||||
phone_exists_register: 'Le numéro de téléphone a été enregistré',
|
||||
invalid_email: 'Addresse email incorrecte.',
|
||||
invalid_phone: 'Numéro de téléphone incorrect.',
|
||||
email_not_exists: "L'adresse e-mail n'a pas encore été enregistrée.",
|
||||
phone_not_exists: "Le numéro de téléphone n'a pas encore été enregistré.",
|
||||
identity_not_exists: "Le compte social n'a pas encore été enregistré.",
|
||||
identity_exists: 'Le compte social a été enregistré.',
|
||||
invalid_role_names: 'les noms de rôles ({{roleNames}}) ne sont pas valides',
|
||||
},
|
||||
password: {
|
||||
unsupported_encryption_method: "La méthode de cryptage {{name}} n'est pas prise en charge.",
|
||||
pepper_not_found:
|
||||
'Mot de passe pepper non trouvé. Veuillez vérifier votre environnement de base.',
|
||||
},
|
||||
session: {
|
||||
not_found: 'Session non trouvée. Veuillez revenir en arrière et vous connecter à nouveau.',
|
||||
invalid_credentials:
|
||||
"Informations d'identification non valides. Veuillez vérifier votre saisie.",
|
||||
invalid_sign_in_method: "La méthode de connexion actuelle n'est pas disponible.",
|
||||
invalid_connector_id:
|
||||
"Impossible de trouver un connecteur disponible avec l'id {{connectorId}}.",
|
||||
insufficient_info: "Informations d'identification insuffisantes",
|
||||
connector_id_mismatch: "Le connectorId ne correspond pas à l'enregistrement de la session.",
|
||||
connector_session_not_found:
|
||||
"La session du connecteur n'a pas été trouvée. Veuillez revenir en arrière et vous connecter à nouveau.",
|
||||
unauthorized: "Veuillez vous enregistrer d'abord.",
|
||||
unsupported_prompt_name: "Nom d'invite non supporté.",
|
||||
},
|
||||
connector: {
|
||||
general: "Une erreur inattendue s'est produite dans le connecteur. {{errorDescription}}",
|
||||
not_found: 'Impossible de trouver un connecteur disponible pour le type : {{type}}.',
|
||||
not_enabled: "Le connecteur n'est pas activé.",
|
||||
insufficient_request_parameters: 'Certains paramètres peuvent manquer dans la requête.',
|
||||
invalid_config: "La configuration du connecteur n'est pas valide.",
|
||||
invalid_response: "La réponse du connecteur n'est pas valide.",
|
||||
template_not_found: 'Impossible de trouver le bon modèle dans la configuration du connecteur.',
|
||||
not_implemented: "{{method}} : n'a pas encore été mis en œuvre.",
|
||||
invalid_access_token: "Le jeton d'accès du connecteur n'est pas valide.",
|
||||
invalid_auth_code: "Le code d'authentification du connecteur n'est pas valide.",
|
||||
invalid_id_token: "Le jeton d'identification du connecteur n'est pas valide.",
|
||||
authorization_failed: "Le processus d'autorisation de l'utilisateur n'a pas abouti.",
|
||||
oauth_code_invalid:
|
||||
"Impossible d'obtenir le jeton d'accès, veuillez vérifier le code d'autorisation.",
|
||||
more_than_one_sms: 'Le nombre de connecteurs SMS est supérieur à 1.',
|
||||
more_than_one_email: 'Le nombre de connecteurs Email est supérieur à 1.',
|
||||
db_connector_type_mismatch:
|
||||
'Il y a un connecteur dans la base de donnée qui ne correspond pas au type.',
|
||||
},
|
||||
passcode: {
|
||||
phone_email_empty: "Le téléphone et l'email sont vides.",
|
||||
not_found: "Le code d'accès n'a pas été trouvé. Veuillez envoyer le code d'accès en premier.",
|
||||
phone_mismatch: "Le téléphone ne correspond pas. Veuillez demander un nouveau code d'accès.",
|
||||
email_mismatch: "Erreur d'email. Veuillez demander un nouveau code d'accès.",
|
||||
code_mismatch: "Code d'accès invalide.",
|
||||
expired: "Le code d'accès a expiré. Veuillez demander un nouveau code d'accès.",
|
||||
exceed_max_try:
|
||||
"La limite de vérification du code d'accès est dépassée. Veuillez demander un nouveau code d'accès.",
|
||||
},
|
||||
sign_in_experiences: {
|
||||
empty_content_url_of_terms_of_use:
|
||||
'URL de contenu "Conditions d\'utilisation" vide. Veuillez ajouter l\'URL du contenu si les "Conditions d\'utilisation" sont activées.',
|
||||
empty_logo: "Veuillez entrer l'URL de votre logo",
|
||||
empty_slogan:
|
||||
"Un slogan vide. Veuillez ajouter un slogan si un style d'interface utilisateur contenant le slogan est sélectionné.",
|
||||
empty_social_connectors:
|
||||
'Connecteurs sociaux vides. Veuillez ajouter des connecteurs sociaux activés lorsque la méthode de connexion sociale est activée.',
|
||||
enabled_connector_not_found: 'Le connecteur {{type}} activé est introuvable.',
|
||||
not_one_and_only_one_primary_sign_in_method:
|
||||
'Il doit y avoir une et une seule méthode de connexion primaire. Veuillez vérifier votre saisie.',
|
||||
},
|
||||
swagger: {
|
||||
invalid_zod_type: 'Type Zod non valide. Veuillez vérifier la configuration du garde-route.',
|
||||
not_supported_zod_type_for_params:
|
||||
'Type Zod non supporté pour les paramètres. Veuillez vérifier la configuration du garde-route.',
|
||||
},
|
||||
entity: {
|
||||
create_failed: 'Échec de la création de {{name}}.',
|
||||
not_exists: "Le {{name}} n'existe pas.",
|
||||
not_exists_with_id: "Le {{name}} avec l'ID `{{id}}` n'existe pas.",
|
||||
not_found: "La ressource n'existe pas.",
|
||||
},
|
||||
};
|
||||
|
||||
export default errors;
|
10
packages/phrases/src/locales/fr/index.ts
Normal file
10
packages/phrases/src/locales/fr/index.ts
Normal file
|
@ -0,0 +1,10 @@
|
|||
import en from '../en';
|
||||
import errors from './errors';
|
||||
import translation from './translation';
|
||||
|
||||
const fr: typeof en = Object.freeze({
|
||||
translation,
|
||||
errors,
|
||||
});
|
||||
|
||||
export default fr;
|
|
@ -0,0 +1,11 @@
|
|||
const api_resource_details = {
|
||||
back_to_api_resources: 'Retour aux ressources API',
|
||||
token_expiration_time_in_seconds: "Temps d'expiration du jeton (en secondes)",
|
||||
token_expiration_time_in_seconds_placeholder: "Entrez le délai d'expiration de votre jeton",
|
||||
delete_description:
|
||||
'Cette action ne peut pas être annulée. Elle supprimera définitivement la ressource API. Veuillez entrer le nom de la ressource API <span>{{name}}</span> pour confirmer.',
|
||||
enter_your_api_resource_name: 'Entrez le nom de votre ressource API',
|
||||
api_resource_deleted: 'La ressource API {{name}} a été supprimée avec succès',
|
||||
};
|
||||
|
||||
export default api_resource_details;
|
|
@ -0,0 +1,14 @@
|
|||
const api_resources = {
|
||||
title: 'Ressources API',
|
||||
subtitle: 'Définir les API que vous pouvez consommer à partir de vos applications autorisées',
|
||||
create: 'Créer une ressource API',
|
||||
api_name: "Nom de l'API",
|
||||
api_name_placeholder: "Entrez votre nom d'API",
|
||||
api_identifier: 'Identifiant API',
|
||||
api_identifier_tip:
|
||||
"L'identifiant unique de la ressource API. Il doit s'agir d'un URI absolu et ne doit pas comporter de fragment (#). Équivaut au paramètre de ressource dans OAuth 2.0.",
|
||||
api_resource_created: 'La ressource API {{name}} a été créée avec succès.',
|
||||
api_identifier_placeholder: 'https://votre-identifiant-api/',
|
||||
};
|
||||
|
||||
export default api_resources;
|
|
@ -0,0 +1,40 @@
|
|||
const application_details = {
|
||||
back_to_applications: 'Retour aux applications',
|
||||
check_guide: 'Aller voir le guide',
|
||||
advanced_settings: 'Paramètres avancés',
|
||||
application_name: "Nom de l'application",
|
||||
application_name_placeholder: 'Mon App',
|
||||
description: 'Description',
|
||||
description_placeholder: 'Entrez la description de votre application',
|
||||
authorization_endpoint: 'Authorization endpoint',
|
||||
authorization_endpoint_tip:
|
||||
"Le point de terminaison pour effectuer l'authentification et l'autorisation. Il est utilisé pour l'authentification OpenID Connect.",
|
||||
application_secret: 'App Secret',
|
||||
redirect_uri: 'Redirect URI',
|
||||
redirect_uris: 'Redirect URIs',
|
||||
redirect_uri_placeholder: 'https://votre.site.com/app',
|
||||
redirect_uri_placeholder_native: 'io.logto://callback',
|
||||
redirect_uri_tip:
|
||||
"L'URI de redirection après la connexion d'un utilisateur (qu'elle soit réussie ou non). Voir OpenID Connect AuthRequest pour plus d'informations.",
|
||||
post_sign_out_redirect_uri: 'URI de redirection post-signature',
|
||||
post_sign_out_redirect_uris: 'URI de redirection après la signature',
|
||||
post_sign_out_redirect_uri_placeholder: 'https://votre.site.com/home',
|
||||
post_sign_out_redirect_uri_tip:
|
||||
"L'URI de redirection après la déconnexion de l'utilisateur (facultatif). Cela peut n'avoir aucun effet pratique dans certains types d'applications.",
|
||||
cors_allowed_origins: 'Origines CORS autorisées',
|
||||
cors_allowed_origins_placeholder: 'https://votre.site.com',
|
||||
cors_allowed_origins_tip:
|
||||
"Par défaut, toutes les origines des URI de redirection seront autorisées. En général, aucune action n'est requise pour ce champ.",
|
||||
add_another: 'Ajouter un autre',
|
||||
id_token_expiration: "Expiration du jeton d'identification",
|
||||
refresh_token_expiration: "Rafraîchir l'expiration du jeton",
|
||||
token_endpoint: 'Token endpoint',
|
||||
user_info_endpoint: 'Userinfo endpoint',
|
||||
delete_description:
|
||||
"Cette action ne peut être annulée. Elle supprimera définitivement l'application. Veuillez entrer le nom de l'application <span>{{nom}}</span> pour confirmer.",
|
||||
enter_your_application_name: "Saisissez votre nom d'application",
|
||||
application_deleted: "L'application {{name}} a été supprimée avec succès.",
|
||||
redirect_uri_required: 'Vous devez entrer au moins un URI de redirection.',
|
||||
};
|
||||
|
||||
export default application_details;
|
|
@ -0,0 +1,45 @@
|
|||
const applications = {
|
||||
title: 'Applications',
|
||||
subtitle:
|
||||
"Configurez une application mobile, une page unique ou une application traditionnelle pour utiliser Logto pour l'authentification.",
|
||||
create: 'Créer une application',
|
||||
application_name: "Nom de l'application",
|
||||
application_name_placeholder: 'Mon app',
|
||||
application_description: "Description de l'application",
|
||||
application_description_placeholder: 'Entrer la description de votre application',
|
||||
select_application_type: "Sélectionner un type d'application",
|
||||
no_application_type_selected: "Vous n'avez pas encore sélectionné de type d'application",
|
||||
application_created:
|
||||
"L'application {{name}} a été créée avec succès ! \nMaintenant, terminez les paramètres de votre application",
|
||||
app_id: 'App ID',
|
||||
type: {
|
||||
native: {
|
||||
title: 'Application native',
|
||||
subtitle: 'Une application qui fonctionne dans un environnement natif',
|
||||
description: 'Exemple: iOS app, Android app',
|
||||
},
|
||||
spa: {
|
||||
title: 'Single Page App',
|
||||
subtitle:
|
||||
"Une application qui s'exécute dans un navigateur web et met dynamiquement à jour les données sur place.",
|
||||
description: 'Exemple: React app, Vue app',
|
||||
},
|
||||
traditional: {
|
||||
title: 'Web Traditionnel',
|
||||
subtitle: 'Une application qui met à jour les pages par le seul serveur web.',
|
||||
description: 'Exemple: Next.js, PHP',
|
||||
},
|
||||
},
|
||||
guide: {
|
||||
get_sample_file: 'Obtenir un exemple',
|
||||
header_description:
|
||||
'Suivez un guide étape par étape pour intégrer votre application ou cliquez sur le bouton de droite pour obtenir notre exemple de projet.',
|
||||
title: "L'application a été créée avec succès",
|
||||
subtitle:
|
||||
'Suivez maintenant les étapes ci-dessous pour terminer la configuration de votre application. Veuillez sélectionner le type de SDK pour continuer.',
|
||||
description_by_sdk:
|
||||
"Ce guide de démarrage rapide montre comment intégrer Logto dans l'application {{sdk}}.",
|
||||
},
|
||||
};
|
||||
|
||||
export default applications;
|
|
@ -0,0 +1,22 @@
|
|||
const connector_details = {
|
||||
back_to_connectors: 'Retour à Connecteurs',
|
||||
check_readme: 'Vérifier le README',
|
||||
save_error_empty_config: 'Veuillez entrer la configuration',
|
||||
send: 'Envoyer',
|
||||
send_error_invalid_format: 'Entrée non valide',
|
||||
edit_config_label: 'Entrez votre json ici',
|
||||
test_email_sender: 'Testez votre connecteur Email',
|
||||
test_sms_sender: 'Testez votre connecteur SMS',
|
||||
test_email_placeholder: 'Entrez une adresse email de test',
|
||||
test_sms_placeholder: 'Entrez un numéro de téléphone de test',
|
||||
test_message_sent: 'Message de test envoyé !',
|
||||
test_sender_description: 'Vous recevrez un message si votre json est correctement configuré.',
|
||||
options_change_email: 'Modifier le connecteur Email',
|
||||
options_change_sms: 'Changer le connecteur SMS',
|
||||
connector_deleted: 'Le connecteur a été supprimé avec succès',
|
||||
type_email: 'Connecteur Email',
|
||||
type_sms: 'Connecteur SMS',
|
||||
type_social: 'Connecteur Social',
|
||||
};
|
||||
|
||||
export default connector_details;
|
|
@ -0,0 +1,38 @@
|
|||
const connectors = {
|
||||
title: 'Connecteurs',
|
||||
subtitle:
|
||||
'Configurez des connecteurs pour permettre une expérience de connexion sans mot de passe et sociale.',
|
||||
create: 'Ajouter un connecteur social',
|
||||
tab_email_sms: 'Connecteurs Email et SMS',
|
||||
tab_social: 'Connecteurs sociaux',
|
||||
connector_name: 'Nom du connecteur',
|
||||
connector_type: 'Type',
|
||||
connector_status: 'Experience de connexion',
|
||||
connector_status_in_use: "En cours d'utilisation",
|
||||
connector_status_not_in_use: 'Non utilisé',
|
||||
social_connector_eg: 'Exemple : Google, Facebook, Github',
|
||||
save_and_done: 'Sauvegarder et Finis',
|
||||
type: {
|
||||
email: 'Connecteur Email',
|
||||
sms: 'Connecreur SMS',
|
||||
social: 'Connecteur Social',
|
||||
},
|
||||
setup_title: {
|
||||
email: 'Configurer le connecteur Email',
|
||||
sms: 'Configurer le connecteur SMS',
|
||||
social: 'Ajouter un connecteur Social',
|
||||
},
|
||||
guide: {
|
||||
subtitle: 'Un guide étape par étape pour configurer votre connecteur',
|
||||
},
|
||||
platform: {
|
||||
universal: 'Universel',
|
||||
web: 'Web',
|
||||
native: 'Natif',
|
||||
},
|
||||
add_multi_platform: ' supporte plusieurs plateformes, sélectionnez une plateforme pour continuer',
|
||||
drawer_title: 'Guide des connecteurs',
|
||||
drawer_subtitle: 'Suivez les instructions pour intégrer votre connecteur',
|
||||
};
|
||||
|
||||
export default connectors;
|
|
@ -0,0 +1,22 @@
|
|||
const contact = {
|
||||
title: 'Nous contacter',
|
||||
description:
|
||||
"Participez à notre communauté pour fournir des informations, demander de l'aide et partager vos idées avec d'autres développeurs.",
|
||||
discord: {
|
||||
title: 'Serveur Discord',
|
||||
description: "Rejoignez notre serveur public pour discuter avec d'autres développeurs",
|
||||
button: 'Rejoindre',
|
||||
},
|
||||
github: {
|
||||
title: 'GitHub',
|
||||
description: 'Créer un ticket GitHub',
|
||||
button: 'Ouvrir',
|
||||
},
|
||||
email: {
|
||||
title: 'Envoyer un email',
|
||||
description: "Envoyez nous un email pour plus d'information et d'aide",
|
||||
button: 'Envoyer',
|
||||
},
|
||||
};
|
||||
|
||||
export default contact;
|
|
@ -0,0 +1,23 @@
|
|||
const dashboard = {
|
||||
title: 'Tableau de bord',
|
||||
description: "Obtenez une vue d'ensemble des performances de votre application",
|
||||
total_users: 'Utilisateurs totaux',
|
||||
total_users_tip: 'Utilisateurs totaux',
|
||||
new_users_today: "Nouveaux utilisateurs aujourd'hui",
|
||||
new_users_today_tip:
|
||||
"Le nombre de nouveaux utilisateurs enregistrés sur vos applications aujourd'hui",
|
||||
new_users_7_days: 'Nouveaux utilisateurs des 7 derniers jours',
|
||||
new_users_7_days_tip:
|
||||
'Le nombre de nouveaux utilisateurs enregistrés sur vos applications au cours des 7 derniers jours.',
|
||||
daily_active_users: 'Utilisateurs actifs quotidiens',
|
||||
daily_active_users_tip:
|
||||
"Le nombre d'utilisateurs uniques qui ont échangé des jetons sur vos applications aujourd'hui.",
|
||||
weekly_active_users: 'Utilisateurs actifs hebdomadaires',
|
||||
weekly_active_users_tip:
|
||||
"Le nombre d'utilisateurs uniques ayant échangé des jetons sur vos applications au cours des 7 derniers jours.",
|
||||
monthly_active_users: 'Utilisateurs actifs mensuels',
|
||||
monthly_active_users_tip:
|
||||
"Le nombre d'utilisateurs uniques ayant échangé des jetons sur vos applications au cours des 30 derniers jours.",
|
||||
};
|
||||
|
||||
export default dashboard;
|
|
@ -0,0 +1,21 @@
|
|||
const errors = {
|
||||
something_went_wrong: 'Oups ! Quelque chose a mal tourné.',
|
||||
page_not_found: 'Page non trouvée',
|
||||
unknown_server_error: "Une erreur de serveur inconnu s'est produite",
|
||||
empty: 'Pas de données',
|
||||
missing_total_number: 'Impossible de trouver le nombre total dans les en-têtes de réponse',
|
||||
invalid_uri_format: "Format d'URI non valide",
|
||||
invalid_origin_format: "Format d'origine URI non valide",
|
||||
invalid_json_format: 'Format JSON non valide',
|
||||
invalid_error_message_format: "Le format du message d'erreur n'est pas valide.",
|
||||
required_field_missing: 'Veuillez saisir {{field}}',
|
||||
required_field_missing_plural: 'Vous devez entrer au moins un {{field}}.',
|
||||
more_details: 'Plus de détails',
|
||||
username_pattern_error:
|
||||
"Le nom d'utilisateur ne doit contenir que des lettres, des chiffres ou des traits de soulignement et ne doit pas commencer par un chiffre.",
|
||||
password_pattern_error: 'Le mot de passe doit comporter un minimum de 6 caractères',
|
||||
insecure_contexts: 'Les contextes non sécurisés (non HTTPS) ne sont pas pris en charge.',
|
||||
unexpected_error: "Une erreur inattendue s'est produite",
|
||||
};
|
||||
|
||||
export default errors;
|
|
@ -0,0 +1,41 @@
|
|||
const general = {
|
||||
placeholder: 'Placeholder',
|
||||
skip: 'Passer',
|
||||
next: 'Suivant',
|
||||
retry: 'Essayez à nouveau',
|
||||
done: 'Terminé',
|
||||
search: 'Rechercher',
|
||||
search_placeholder: 'Rechercher...',
|
||||
clear_result: 'Effacer les résultats',
|
||||
save: 'Sauvegarder',
|
||||
save_changes: 'Sauvegarder les modifications',
|
||||
saved: 'Sauvegardé !',
|
||||
loading: 'Chargement...',
|
||||
redirecting: 'Redirection...',
|
||||
add: 'Ajouter',
|
||||
added: 'Ajouté',
|
||||
cancel: 'Annuler',
|
||||
confirm: 'Confirmer',
|
||||
check_out: 'Vérifier',
|
||||
create: 'Créer',
|
||||
set_up: 'Configurer',
|
||||
customize: 'Customiser',
|
||||
enable: 'Activer',
|
||||
reminder: 'Rappeler',
|
||||
delete: 'Supprimer',
|
||||
more_options: "PLUS D'OPTIONS",
|
||||
close: 'Fermer',
|
||||
copy: 'Copier',
|
||||
copying: 'Copie',
|
||||
copied: 'Copié',
|
||||
required: 'Requis',
|
||||
add_another: '+ Ajouter un autre',
|
||||
deletion_confirmation: 'Êtes-vous sûr de vouloir supprimer ce {{title}} ?',
|
||||
settings_nav: 'Paramètres',
|
||||
unsaved_changes_warning:
|
||||
'Vous avez effectué des changements. Êtes-vous sûr de vouloir quitter cette page ?',
|
||||
leave_page: 'Quittez la page',
|
||||
stay_on_page: 'Rester sur la page',
|
||||
};
|
||||
|
||||
export default general;
|
|
@ -0,0 +1,31 @@
|
|||
const get_started = {
|
||||
progress: 'Guide de démarrage : {{completed}}/{{total}}',
|
||||
progress_dropdown_title: 'Il y a quelques choses que vous pouvez faire...',
|
||||
title: 'Comment voulez-vous démarrer avec Logto ?',
|
||||
subtitle_part1:
|
||||
'Voici quelques mesures que vous pouvez prendre pour tirer rapidement profit de Logto',
|
||||
subtitle_part2: "J'en ai fini avec cette installation. ",
|
||||
hide_this: 'Cacher cela',
|
||||
confirm_message:
|
||||
'Êtes-vous sûr de vouloir masquer cette page ? Cette action ne peut être annulée.',
|
||||
card1_title: 'Regardez la démo',
|
||||
card1_subtitle:
|
||||
"Essayez maintenant l'expérience de connexion Logto pour voir comment elle fonctionne.",
|
||||
card2_title: 'Créer et intégrer la première application',
|
||||
card2_subtitle:
|
||||
"Configurez une application mobile, une page unique ou une application traditionnelle pour utiliser Logto pour l'authentification.",
|
||||
card3_title: "Personnaliser l'expérience de connexion",
|
||||
card3_subtitle:
|
||||
"Personnalisez l'interface utilisateur pour qu'elle corresponde à votre marque et consultez-la en temps réel.",
|
||||
card4_title: 'Configurer le connecteur SMS et e-mail',
|
||||
card4_subtitle:
|
||||
"Essayez de vous connecter sans mot de passe à l'aide d'un numéro de téléphone ou d'une adresse email pour offrir une expérience client sécurisée et sans friction.",
|
||||
card5_title: 'Ajouter un connecteur social',
|
||||
card5_subtitle:
|
||||
'Permettez à vos clients de se connecter à votre application avec leurs identités sociales en un clic.',
|
||||
card6_title: 'Informations complémentaires',
|
||||
card6_subtitle:
|
||||
'Découvrez nos documents basés sur des scénarios, étape par étape, sans concepts fastidieux',
|
||||
};
|
||||
|
||||
export default get_started;
|
|
@ -0,0 +1,52 @@
|
|||
import api_resource_details from './api-resource-details';
|
||||
import api_resources from './api-resources';
|
||||
import application_details from './application-details';
|
||||
import applications from './applications';
|
||||
import connector_details from './connector-details';
|
||||
import connectors from './connectors';
|
||||
import contact from './contact';
|
||||
import dashboard from './dashboard';
|
||||
import errors from './errors';
|
||||
import general from './general';
|
||||
import get_started from './get-started';
|
||||
import log_details from './log-details';
|
||||
import logs from './logs';
|
||||
import session_expired from './session-expired';
|
||||
import settings from './settings';
|
||||
import sign_in_exp from './sign-in-exp';
|
||||
import tab_sections from './tab-sections';
|
||||
import tabs from './tabs';
|
||||
import user_details from './user-details';
|
||||
import users from './users';
|
||||
import welcome from './welcome';
|
||||
|
||||
const admin_console = {
|
||||
title: 'Admin Console',
|
||||
sign_out: 'Sign Out',
|
||||
profile: 'Profile',
|
||||
admin_user: 'Admin',
|
||||
system_app: 'System',
|
||||
general,
|
||||
errors,
|
||||
tab_sections,
|
||||
tabs,
|
||||
applications,
|
||||
application_details,
|
||||
api_resources,
|
||||
api_resource_details,
|
||||
connectors,
|
||||
connector_details,
|
||||
get_started,
|
||||
users,
|
||||
user_details,
|
||||
contact,
|
||||
sign_in_exp,
|
||||
settings,
|
||||
dashboard,
|
||||
logs,
|
||||
log_details,
|
||||
session_expired,
|
||||
welcome,
|
||||
};
|
||||
|
||||
export default admin_console;
|
|
@ -0,0 +1,17 @@
|
|||
const log_details = {
|
||||
back_to_logs: "Retour aux journaux d'audit",
|
||||
back_to_user: 'Retour à {{name}}',
|
||||
success: 'Succès',
|
||||
failed: 'Échoué',
|
||||
event_type: "Type d'événement",
|
||||
application: 'Application',
|
||||
ip_address: 'Addresse IP',
|
||||
user: 'Utilisateur',
|
||||
log_id: 'ID du journal',
|
||||
time: 'Temps',
|
||||
user_agent: "Agent de l'utilisateur",
|
||||
tab_details: 'Détails',
|
||||
raw_data: 'Données brutes',
|
||||
};
|
||||
|
||||
export default log_details;
|
|
@ -0,0 +1,12 @@
|
|||
const logs = {
|
||||
title: "Journaux d'audit",
|
||||
subtitle:
|
||||
"Visualisez les données du journal des événements d'authentification effectués par votre administrateur et vos utilisateurs.",
|
||||
event: 'Événement',
|
||||
user: 'Utilisateur',
|
||||
application: 'Application',
|
||||
time: 'Temps',
|
||||
filter_by: 'Filtrer par',
|
||||
};
|
||||
|
||||
export default logs;
|
|
@ -0,0 +1,8 @@
|
|||
const session_expired = {
|
||||
title: 'Session expirée',
|
||||
subtitle:
|
||||
"Votre session a peut-être expiré et vous avez été déconnecté. Cliquez sur le bouton ci-dessous pour vous reconnecter à la console d'administration.",
|
||||
button: 'Se reconnecter',
|
||||
};
|
||||
|
||||
export default session_expired;
|
|
@ -0,0 +1,27 @@
|
|||
const settings = {
|
||||
title: 'Paramètres',
|
||||
description: 'Gérer les paramètres globaux',
|
||||
tabs: {
|
||||
general: 'Général',
|
||||
},
|
||||
custom_domain: 'Domaine personnalisé',
|
||||
language: 'Langue',
|
||||
appearance: 'Apparence',
|
||||
appearance_system: 'Synchronisation avec le système',
|
||||
appearance_light: 'Mode clair',
|
||||
appearance_dark: 'Mode sombre',
|
||||
saved: 'Sauvegardé !',
|
||||
change_password: 'Changer le mot de passe',
|
||||
change_password_description:
|
||||
"Vous pouvez changer le mot de passe de ce compte. Vous utiliserez le nom d'utilisateur actuel avec le nouveau mot de passe pour vous connecter à la console d'administration.",
|
||||
change_modal_title: 'Changer le mot de passe du compte',
|
||||
change_modal_description:
|
||||
"Vous utiliserez votre nom d'utilisateur actuel et votre nouveau mot de passe pour vous connecter à la console d'administration.",
|
||||
new_password: 'Nouveau mot de passe',
|
||||
new_password_placeholder: 'Entrez votre mot de passe',
|
||||
confirm_password: 'Confirmez votre mot de passe',
|
||||
confirm_password_placeholder: 'Confirmez votre mot de passe',
|
||||
password_changed: 'Mot de passe changé !',
|
||||
};
|
||||
|
||||
export default settings;
|
|
@ -0,0 +1,112 @@
|
|||
const sign_in_exp = {
|
||||
title: 'Expérience de connexion',
|
||||
description:
|
||||
"Personnalisez l'interface utilisateur pour qu'elle corresponde à votre marque et consultez-la en temps réel.",
|
||||
tabs: {
|
||||
branding: 'Image de marque',
|
||||
methods: 'Méthodes de connexion',
|
||||
others: 'Autres',
|
||||
},
|
||||
welcome: {
|
||||
title:
|
||||
"C'est la première fois que vous définissez l'expérience de connexion. Ce guide vous aidera à passer par tous les paramètres nécessaires et à démarrer rapidement.",
|
||||
get_started: 'Commencez',
|
||||
apply_remind:
|
||||
"Veuillez noter que l'expérience de connexion s'appliquera à toutes les applications sous ce compte.",
|
||||
got_it: 'Compris.',
|
||||
},
|
||||
color: {
|
||||
title: 'COULEUR',
|
||||
primary_color: 'Couleur de la marque',
|
||||
dark_primary_color: 'Couleur de la marque (Sombre)',
|
||||
dark_mode: 'Activer le mode sombre',
|
||||
dark_mode_description:
|
||||
"Votre application aura un thème en mode sombre généré automatiquement en fonction de la couleur de votre marque et de l'algorithme de Logto. Vous êtes libre de le personnaliser.",
|
||||
dark_mode_reset_tip:
|
||||
'Recalculer la couleur du mode sombre en fonction de la couleur de la marque.',
|
||||
reset: 'Recalculer',
|
||||
},
|
||||
branding: {
|
||||
title: 'ZONE DE MARQUE',
|
||||
ui_style: 'Style',
|
||||
styles: {
|
||||
logo_slogan: "Logo de l'application avec slogan",
|
||||
logo: "Logo de l'application seulement",
|
||||
},
|
||||
logo_image_url: "URL de l'image du logo de l'application",
|
||||
logo_image_url_placeholder: 'https://votre.domaine.cdn/logo.png',
|
||||
dark_logo_image_url: "URL de l'image du logo de l'application (Sombre)",
|
||||
dark_logo_image_url_placeholder: 'https://votre.domaine.cdn/logo-dark.png',
|
||||
slogan: 'Slogan',
|
||||
slogan_placeholder: 'Libérez votre créativité',
|
||||
},
|
||||
terms_of_use: {
|
||||
title: "CONDITIONS D'UTILISATION",
|
||||
enable: "Activer les conditions d'utilisation",
|
||||
description: "Ajouter les accords juridiques pour l'utilisation de votre produit",
|
||||
terms_of_use: "Conditions d'utilisation",
|
||||
terms_of_use_placeholder: 'https://vos.conditions.utilisation/',
|
||||
terms_of_use_tip: "Conditions d'utilisation URL",
|
||||
},
|
||||
sign_in_methods: {
|
||||
title: 'METHODES DE CONNEXION',
|
||||
primary: 'Méthode de connexion principale',
|
||||
enable_secondary: 'Activer une seconde méthode de connexion',
|
||||
enable_secondary_description:
|
||||
"Une fois qu'elle est activée, votre application prend en charge d'autres méthodes de connexion que la méthode principale. ",
|
||||
methods: 'Méthode de connexion',
|
||||
methods_sms: 'Connexion avec numéro de téléphone',
|
||||
methods_email: 'Connexion avec email',
|
||||
methods_social: 'Connexion avec social',
|
||||
methods_username: "Connexion avec nom d'utilisateur et mot de passe",
|
||||
methods_primary_tag: '(Principale)',
|
||||
define_social_methods: "Définir les méthodes d'authentification sociale",
|
||||
transfer: {
|
||||
title: 'Connecteurs sociaux',
|
||||
footer: {
|
||||
not_in_list: 'Pas dans la liste ?',
|
||||
set_up_more: 'Configurer plus',
|
||||
go_to: 'connecteurs sociaux ou allez à la section "Connecteurs".',
|
||||
},
|
||||
},
|
||||
},
|
||||
others: {
|
||||
languages: {
|
||||
title: 'LANGAGES',
|
||||
mode: 'Mode langue',
|
||||
auto: 'Auto',
|
||||
fixed: 'Fixé',
|
||||
fallback_language: 'Langage par défaut',
|
||||
fallback_language_tip:
|
||||
'La langue de repli si Logto ne trouve pas de jeu de phrases dans la langue appropriée.',
|
||||
fixed_language: 'Langue fixe',
|
||||
},
|
||||
},
|
||||
setup_warning: {
|
||||
no_connector: '',
|
||||
no_connector_sms:
|
||||
"Vous n'avez pas encore configuré de connecteur SMS. Votre expérience de connexion ne sera pas disponible tant que vous n'aurez pas terminé les paramètres. ",
|
||||
no_connector_email:
|
||||
"Vous n'avez pas encore configuré de connecteur Email. Votre expérience de connexion ne sera pas disponible tant que vous n'aurez pas terminé les paramètres. ",
|
||||
no_connector_social:
|
||||
"Vous n'avez pas encore configuré de connecteurs sociaux. Votre expérience de connexion ne sera pas disponible tant que vous n'aurez pas terminé les paramètres. ",
|
||||
no_added_social_connector:
|
||||
"Vous avez maintenant configuré quelques connecteurs sociaux. Assurez-vous d'en ajouter quelques-uns à votre expérience de connexion.",
|
||||
},
|
||||
save_alert: {
|
||||
description:
|
||||
'Vous changez de méthode de connexion. Cela aura un impact sur certains de vos utilisateurs. Êtes-vous sûr de vouloir faire cela ?',
|
||||
before: 'Avant',
|
||||
after: 'Après',
|
||||
},
|
||||
preview: {
|
||||
title: "Aperçu de l'expérience de connexion",
|
||||
dark: 'Sombre',
|
||||
light: 'Clair',
|
||||
native: 'Natif',
|
||||
desktop_web: 'Web ordinateur',
|
||||
mobile_web: 'Web mobile',
|
||||
},
|
||||
};
|
||||
|
||||
export default sign_in_exp;
|
|
@ -0,0 +1,8 @@
|
|||
const tab_sections = {
|
||||
overview: "Vue d'ensemble",
|
||||
resource_management: 'Gestion des ressources',
|
||||
user_management: 'Gestion des utilisateurs',
|
||||
help_and_support: 'Aide et support',
|
||||
};
|
||||
|
||||
export default tab_sections;
|
|
@ -0,0 +1,15 @@
|
|||
const tabs = {
|
||||
get_started: 'Commencez',
|
||||
dashboard: 'Tableau de bord',
|
||||
applications: 'Applications',
|
||||
api_resources: 'Ressources API',
|
||||
sign_in_experience: 'Expérience de connexion',
|
||||
connectors: 'Connecteurs',
|
||||
users: 'Gestion des utilisateurs',
|
||||
audit_logs: "Journaux d'audit",
|
||||
docs: 'Documentation',
|
||||
contact_us: 'Contactez nous',
|
||||
settings: 'Paramètres',
|
||||
};
|
||||
|
||||
export default tabs;
|
|
@ -0,0 +1,41 @@
|
|||
const user_details = {
|
||||
back_to_users: 'Retour à la gestion des utilisateurs',
|
||||
created_title: 'Cet utilisateur a été créé avec succès',
|
||||
created_guide: "Vous pouvez envoyer à l'utilisateur les informations de connexion suivantes",
|
||||
created_username: "Nom d'utilisateur :",
|
||||
created_password: 'Mot de passe :',
|
||||
menu_delete: 'Supprimer',
|
||||
delete_description:
|
||||
"Cette action ne peut être annulée. Elle supprimera définitivement l'utilisateur.",
|
||||
deleted: "L'utilisateur a été supprimé avec succès",
|
||||
reset_password: {
|
||||
reset_password: 'Réinitialiser le mot de passe',
|
||||
title: 'Êtes-vous sûr de vouloir réinitialiser le mot de passe ?',
|
||||
content:
|
||||
"Cette action ne peut être annulée. Cette action réinitialisera les informations de connexion de l'utilisateur.",
|
||||
congratulations: 'Cet utilisateur a été réinitialisé',
|
||||
new_password: 'Nouveau mot de passe :',
|
||||
},
|
||||
tab_logs: "Journaux de l'utilisateur",
|
||||
field_email: 'Email principale',
|
||||
field_phone: 'Téléphone principal',
|
||||
field_username: "Nom d'utilisateur",
|
||||
field_name: 'Nom',
|
||||
field_avatar: "URL de l'image avatar",
|
||||
field_avatar_placeholder: 'https://votre.domaine.cdn/avatar.png',
|
||||
field_custom_data: 'Données personnalisées',
|
||||
field_custom_data_tip:
|
||||
"Informations supplémentaires sur l'utilisateur qui ne figurent pas dans les propriétés prédéfinies de l'utilisateur, telles que la couleur et la langue préférées de l'utilisateur.",
|
||||
field_connectors: 'Connecteurs sociaux',
|
||||
custom_data_invalid: 'Les données personnalisées doivent être un objet JSON valide.',
|
||||
connectors: {
|
||||
connectors: 'Connecteurs',
|
||||
user_id: 'ID utilisateur',
|
||||
remove: 'Supprimer',
|
||||
not_connected: "L'utilisateur n'est connecté à aucun connecteur social",
|
||||
deletion_confirmation:
|
||||
"Vous supprimez l'identité existante <nom/>. Etes-vous sûr de vouloir faire ça ?",
|
||||
},
|
||||
};
|
||||
|
||||
export default user_details;
|
|
@ -0,0 +1,15 @@
|
|||
const users = {
|
||||
title: 'Gestion des utilisateurs',
|
||||
subtitle:
|
||||
"Gérer les identités des utilisateurs, y compris la création d'utilisateurs, la modification des informations sur les utilisateurs, la consultation des journaux des utilisateurs, la réinitialisation des mots de passe et la suppression des utilisateurs.",
|
||||
create: 'Ajouter un utilisateur',
|
||||
user_name: 'Utilisateur',
|
||||
application_name: "De l'application",
|
||||
latest_sign_in: 'Dernière connexion',
|
||||
create_form_username: "Nom d'utilisateur",
|
||||
create_form_password: 'Mot de passe',
|
||||
create_form_name: 'Nom complet',
|
||||
unnamed: 'Sans nom',
|
||||
};
|
||||
|
||||
export default users;
|
|
@ -0,0 +1,8 @@
|
|||
const welcome = {
|
||||
title: "Bienvenue dans la console d'administration",
|
||||
description:
|
||||
"La console d'administration est une application web qui permet de gérer Logto sans avoir à coder. Commençons par créer un compte. Avec ce compte, vous pouvez gérer Logto par vous-même ou au nom de votre entreprise.",
|
||||
create_account: 'Créer un compte',
|
||||
};
|
||||
|
||||
export default welcome;
|
15
packages/phrases/src/locales/fr/translation/demo-app.ts
Normal file
15
packages/phrases/src/locales/fr/translation/demo-app.ts
Normal file
|
@ -0,0 +1,15 @@
|
|||
const demo_app = {
|
||||
notification:
|
||||
'Utilisez votre compte administrateur par défaut ou créez un nouveau compte pour vous connecter à la démo.',
|
||||
title: 'Vous avez réussi à vous connecter à la démo !',
|
||||
subtitle: 'Voici vos informations de connexion :',
|
||||
username: "Nom d'utilisateur : ",
|
||||
user_id: "ID de l'utilisateur :",
|
||||
sign_out: 'Déconnexion de la démo',
|
||||
continue_explore: 'Ou continuer à explorer',
|
||||
customize_sign_in_experience: "Personnaliser l'expérience de connexion",
|
||||
enable_passwordless: 'Activer la fonction sans mot de passe',
|
||||
add_social_connector: 'Ajouter un connecteur social',
|
||||
};
|
||||
|
||||
export default demo_app;
|
9
packages/phrases/src/locales/fr/translation/index.ts
Normal file
9
packages/phrases/src/locales/fr/translation/index.ts
Normal file
|
@ -0,0 +1,9 @@
|
|||
import admin_console from './admin-console';
|
||||
import demo_app from './demo-app';
|
||||
|
||||
const translation = {
|
||||
admin_console,
|
||||
demo_app,
|
||||
};
|
||||
|
||||
export default translation;
|
|
@ -9,6 +9,7 @@ export type ResourceKey = string | Record<string, unknown>;
|
|||
|
||||
export enum Language {
|
||||
English = 'en',
|
||||
French = 'fr',
|
||||
Chinese = 'zh-CN',
|
||||
Turkish = 'tr-TR',
|
||||
Korean = 'ko-KR',
|
||||
|
@ -18,6 +19,7 @@ export const languageEnumGuard = z.nativeEnum(Language);
|
|||
|
||||
const languageCodeAndDisplayNameMappings: Record<Language, string> = {
|
||||
[Language.English]: 'English',
|
||||
[Language.French]: 'Français',
|
||||
[Language.Chinese]: '简体中文',
|
||||
[Language.Turkish]: 'Türkçe',
|
||||
[Language.Korean]: '한국어',
|
||||
|
|
Loading…
Add table
Reference in a new issue