diff --git a/packages/core/src/routes/well-known.phrases.test.ts b/packages/core/src/routes/well-known.phrases.test.ts
index 819772fbb..aa96088bb 100644
--- a/packages/core/src/routes/well-known.phrases.test.ts
+++ b/packages/core/src/routes/well-known.phrases.test.ts
@@ -1,4 +1,4 @@
-import zhCN from '@logto/phrases-ui/lib/locales/zh-cn.js';
+import zhCN from '@logto/phrases-ui/lib/locales/zh-cn/index.js';
import type { CustomPhrase, SignInExperience } from '@logto/schemas';
import { pickDefault, createMockUtils } from '@logto/shared/esm';
diff --git a/packages/core/src/utils/translation.test.ts b/packages/core/src/utils/translation.test.ts
index 3fbdbf3fb..fc465f566 100644
--- a/packages/core/src/utils/translation.test.ts
+++ b/packages/core/src/utils/translation.test.ts
@@ -1,5 +1,5 @@
import en from '@logto/phrases-ui/lib/locales/en/index.js';
-import fr from '@logto/phrases-ui/lib/locales/fr.js';
+import fr from '@logto/phrases-ui/lib/locales/fr/index.js';
import { isStrictlyPartial } from '#src/utils/translation.js';
diff --git a/packages/phrases-ui/src/index.ts b/packages/phrases-ui/src/index.ts
index 536ebe752..1c64d5eb5 100644
--- a/packages/phrases-ui/src/index.ts
+++ b/packages/phrases-ui/src/index.ts
@@ -3,16 +3,16 @@ import { languages, fallback } from '@logto/language-kit';
import type { NormalizeKeyPaths } from '@silverhand/essentials';
import { z } from 'zod';
-import de from './locales/de.js';
+import de from './locales/de/index.js';
import en from './locales/en/index.js';
-import fr from './locales/fr.js';
+import fr from './locales/fr/index.js';
import ja from './locales/ja/index.js';
-import ko from './locales/ko.js';
-import ptBR from './locales/pt-br.js';
-import ptPT from './locales/pt-pt.js';
-import ru from './locales/ru.js';
-import trTR from './locales/tr-tr.js';
-import zhCN from './locales/zh-cn.js';
+import ko from './locales/ko/index.js';
+import ptBR from './locales/pt-br/index.js';
+import ptPT from './locales/pt-pt/index.js';
+import ru from './locales/ru/index.js';
+import trTR from './locales/tr-tr/index.js';
+import zhCN from './locales/zh-cn/index.js';
import type { LocalePhrase } from './types.js';
export type { LocalePhrase } from './types.js';
diff --git a/packages/phrases-ui/src/locales/de.ts b/packages/phrases-ui/src/locales/de.ts
deleted file mode 100644
index 3b80015ec..000000000
--- a/packages/phrases-ui/src/locales/de.ts
+++ /dev/null
@@ -1,137 +0,0 @@
-import type { LocalePhrase } from '../types.js';
-
-const translation = {
- input: {
- username: 'Benutzername',
- password: 'Passwort',
- email: 'Email',
- phone_number: 'Telefonnummer',
- confirm_password: 'Passwort bestätigen',
- search_region_code: 'Suche region code',
- },
- secondary: {
- social_bind_with:
- 'Besitzt du schon ein Konto? Melde dich an, um {{methods, list(type: disjunction;)}} mit deiner Identität zu verbinden.',
- },
- action: {
- sign_in: 'Anmelden',
- continue: 'Weiter',
- create_account: 'Konto erstellen',
- create_account_without_linking: 'Erstelle ein Konto ohne Verknüpfung',
- create: 'Erstellen',
- enter_passcode: 'Bestätigungscode eingeben',
- confirm: 'Bestätigen',
- cancel: 'Abbrechen',
- save_password: 'Passwort speichern',
- bind: 'Mit {{address}} verknüpfen',
- bind_and_continue: 'Verknüpfen und weiter',
- back: 'Gehe zurück',
- nav_back: 'Zurück',
- agree: 'Zustimmen',
- got_it: 'Alles klar',
- sign_in_with: 'Mit {{name}} anmelden',
- forgot_password: 'Passwort vergessen?',
- switch_to: 'Zu {{method}} wechseln',
- sign_in_via_passcode: 'Mit Bestätigungscode anmelden',
- sign_in_via_password: 'Mit Passwort anmelden',
- change: '{{method}} ändern',
- link_another_email: 'Andere Email verknüpfen',
- link_another_phone: 'Andere Telefonnummer verknüpfen',
- link_another_email_or_phone: 'Andere Email oder Telefonnummer verknüpfen',
- show_password: 'Passwort anzeigen',
- },
- description: {
- email: 'Email',
- phone_number: 'Telefonnummer',
- username: 'Benutzername',
- reminder: 'Erinnerung',
- not_found: '404 Nicht gefunden',
- agree_with_terms: 'Ich akzeptiere die ',
- agree_with_terms_modal: 'Bitte akzeptiere die .',
- terms_of_use: 'Nutzungsbedingungen',
- sign_in: 'Anmelden',
- privacy_policy: 'Datenschutzrichtlinien',
- create_account: 'Konto erstellen',
- or: 'oder',
- and: 'und',
- enter_passcode: 'Der Bestätigungscode wurde an deine {{address}} gesendet',
- passcode_sent: 'Der Bestätigungscode wurde erneut gesendet',
- resend_after_seconds: 'Nach {{seconds}} Sekunden erneut senden',
- resend_passcode: 'Bestätigungscode erneut senden',
- create_account_id_exists:
- 'Das Konto mit {{type}} {{value}} existiert bereits, möchtest du dich anmelden?',
- link_account_id_exists:
- 'Das Konto mit {{type}} {{value}} existiert bereits, möchtest du es mit deinem Konto verknüpfen?',
- sign_in_id_does_not_exist:
- 'Das Konto mit {{type}} {{value}} existiert nicht, möchtest du ein neues Konto erstellen?',
- sign_in_id_does_not_exist_alert: 'Das Konto mit {{type}} {{value}} existiert nicht',
- create_account_id_exists_alert:
- 'Das Konto mit {{type}} {{value}} ist mit einem anderen Konto verknüpft. Bitte versuche es mit einem anderen {{type}} erneut',
- social_identity_exist:
- '{{type}} {{value}} ist mit einem anderen Konto verknüpft. Bitte versuche ein(e(n)) andere(n/s) {{type}}',
- bind_account_title: 'Verlinke oder erstelle ein Konto',
- social_create_account: 'Sie können ein neues Konto erstellen.',
- social_link_email: 'Du kannst eine weitere Email verknüpfen',
- social_link_phone: 'Du kannst eine weitere Telefonnummer verknüpfen',
- social_link_email_or_phone: 'Du kannst eine weitere Email oder Telefonnummer verknüpfen',
- social_bind_with_existing:
- 'Wir haben eine verwandte {{method}} gefunden, die bereits registriert wurde, und Sie können sie direkt verknüpfen.',
- reset_password: 'Passwort vergessen',
- reset_password_description:
- 'Gib die {{types, list(type: disjunction;)}} deines Kontos ein und wir senden dir einen Bestätigungscode um dein Passwort zurückzusetzen.',
- new_password: 'Neues Passwort',
- set_password: 'Passwort setzen',
- password_changed: 'Passwort geändert',
- no_account: 'Noch kein Konto? ',
- have_account: 'Hast du schon ein Konto?',
- enter_password: 'Passwort eingeben',
- enter_password_for: 'Passwort für {{method}} {{value}} eingeben',
- enter_username: 'Benutzernamen festlegen',
- enter_username_description:
- 'Der Benutzername kann für die Anmeldung verwendet werden. Der Benutzername darf nur Buchstaben, Zahlen und Unterstriche enthalten.',
- link_email: 'Email verknüpfen',
- link_phone: 'Telefonnummer verknüpfen',
- link_email_or_phone: 'Email oder Telefonnummer verknüpfen',
- link_email_description:
- 'Für zusätzliche Sicherheit, verknüpfe bitte deine Email mit dem Konto.',
- link_phone_description:
- 'Für zusätzliche Sicherheit, verknüpfe bitte deine Telefonnummer mit dem Konto.',
- link_email_or_phone_description:
- 'Für zusätzliche Sicherheit, verknüpfe bitte deine Email oder Telefonnummer mit dem Konto.',
- continue_with_more_information:
- 'Für zusätzliche Sicherheit, vervollständige bitte deine Informationen.',
- create_your_account: 'Erstelle dein Konto',
- sign_in_to_your_account: 'Melde dich in deinem Konto an',
- no_region_code_found: 'Kein Regionencode gefunden',
- },
- error: {
- general_required: `{{types, list(type: disjunction;)}} ist erforderlich`,
- general_invalid: `Die {{types, list(type: disjunction;)}} is ungültig`,
- username_required: 'Benutzername ist erforderlich',
- password_required: 'Passwort ist erforderlich',
- username_exists: 'Benutzername existiert bereits',
- username_should_not_start_with_number: 'Benutzername darf nicht mit einer Zahl beginnen',
- username_invalid_charset: 'Benutzername darf nur Buchstaben, Zahlen und Unterstriche enthalten',
- invalid_email: 'Die Email ist ungültig',
- invalid_phone: 'Die Telefonnummer ist ungültig',
- password_min_length: 'Passwort muss mindestens {{min}} Zeichen lang sein',
- passwords_do_not_match: 'Passwörter stimmen nicht überein',
- invalid_password:
- 'Passwort erfordert mindestens {{min}} Zeichen und enthält eine Kombination aus Buchstaben, Zahlen und Symbolen.',
- invalid_passcode: 'Der Bestätigungscode ist ungültig',
- invalid_connector_auth: 'Die Autorisierung ist ungültig',
- invalid_connector_request: 'Connector Daten sind ungültig',
- unknown: 'Unbekannter Fehler. Versuche es später noch einmal.',
- invalid_session: 'Die Sitzung ist ungültig. Bitte melde dich erneut an.',
- timeout: 'Zeitüberschreitung. Bitte melde dich erneut an.',
- },
- demo_app: {
- notification: 'Tipp: Erstelle zuerst ein Konto, um die Anmeldeerfahrung zu testen.',
- },
-};
-
-const de: LocalePhrase = Object.freeze({
- translation,
-});
-
-export default de;
diff --git a/packages/phrases-ui/src/locales/de/action.ts b/packages/phrases-ui/src/locales/de/action.ts
new file mode 100644
index 000000000..4866d65a0
--- /dev/null
+++ b/packages/phrases-ui/src/locales/de/action.ts
@@ -0,0 +1,29 @@
+const action = {
+ sign_in: 'Anmelden',
+ continue: 'Weiter',
+ create_account: 'Konto erstellen',
+ create_account_without_linking: 'Erstelle ein Konto ohne Verknüpfung',
+ create: 'Erstellen',
+ enter_passcode: 'Bestätigungscode eingeben',
+ confirm: 'Bestätigen',
+ cancel: 'Abbrechen',
+ save_password: 'Passwort speichern',
+ bind: 'Mit {{address}} verknüpfen',
+ bind_and_continue: 'Verknüpfen und weiter',
+ back: 'Gehe zurück',
+ nav_back: 'Zurück',
+ agree: 'Zustimmen',
+ got_it: 'Alles klar',
+ sign_in_with: 'Mit {{name}} anmelden',
+ forgot_password: 'Passwort vergessen?',
+ switch_to: 'Zu {{method}} wechseln',
+ sign_in_via_passcode: 'Mit Bestätigungscode anmelden',
+ sign_in_via_password: 'Mit Passwort anmelden',
+ change: '{{method}} ändern',
+ link_another_email: 'Andere Email verknüpfen',
+ link_another_phone: 'Andere Telefonnummer verknüpfen',
+ link_another_email_or_phone: 'Andere Email oder Telefonnummer verknüpfen',
+ show_password: 'Passwort anzeigen',
+};
+
+export default action;
diff --git a/packages/phrases-ui/src/locales/de/demo-app.ts b/packages/phrases-ui/src/locales/de/demo-app.ts
new file mode 100644
index 000000000..3df969374
--- /dev/null
+++ b/packages/phrases-ui/src/locales/de/demo-app.ts
@@ -0,0 +1,5 @@
+const demo_app = {
+ notification: 'Tipp: Erstelle zuerst ein Konto, um die Anmeldeerfahrung zu testen.',
+};
+
+export default demo_app;
diff --git a/packages/phrases-ui/src/locales/de/description.ts b/packages/phrases-ui/src/locales/de/description.ts
new file mode 100644
index 000000000..d2bba651f
--- /dev/null
+++ b/packages/phrases-ui/src/locales/de/description.ts
@@ -0,0 +1,65 @@
+const description = {
+ email: 'Email',
+ phone_number: 'Telefonnummer',
+ username: 'Benutzername',
+ reminder: 'Erinnerung',
+ not_found: '404 Nicht gefunden',
+ agree_with_terms: 'Ich akzeptiere die ',
+ agree_with_terms_modal: 'Bitte akzeptiere die .',
+ terms_of_use: 'Nutzungsbedingungen',
+ sign_in: 'Anmelden',
+ privacy_policy: 'Datenschutzrichtlinien',
+ create_account: 'Konto erstellen',
+ or: 'oder',
+ and: 'und',
+ enter_passcode: 'Der Bestätigungscode wurde an deine {{address}} gesendet',
+ passcode_sent: 'Der Bestätigungscode wurde erneut gesendet',
+ resend_after_seconds: 'Nach {{seconds}} Sekunden erneut senden',
+ resend_passcode: 'Bestätigungscode erneut senden',
+ create_account_id_exists:
+ 'Das Konto mit {{type}} {{value}} existiert bereits, möchtest du dich anmelden?',
+ link_account_id_exists:
+ 'Das Konto mit {{type}} {{value}} existiert bereits, möchtest du es mit deinem Konto verknüpfen?',
+ sign_in_id_does_not_exist:
+ 'Das Konto mit {{type}} {{value}} existiert nicht, möchtest du ein neues Konto erstellen?',
+ sign_in_id_does_not_exist_alert: 'Das Konto mit {{type}} {{value}} existiert nicht',
+ create_account_id_exists_alert:
+ 'Das Konto mit {{type}} {{value}} ist mit einem anderen Konto verknüpft. Bitte versuche es mit einem anderen {{type}} erneut',
+ social_identity_exist:
+ '{{type}} {{value}} ist mit einem anderen Konto verknüpft. Bitte versuche ein(e(n)) andere(n/s) {{type}}',
+ bind_account_title: 'Verlinke oder erstelle ein Konto',
+ social_create_account: 'Sie können ein neues Konto erstellen.',
+ social_link_email: 'Du kannst eine weitere Email verknüpfen',
+ social_link_phone: 'Du kannst eine weitere Telefonnummer verknüpfen',
+ social_link_email_or_phone: 'Du kannst eine weitere Email oder Telefonnummer verknüpfen',
+ social_bind_with_existing:
+ 'Wir haben eine verwandte {{method}} gefunden, die bereits registriert wurde, und Sie können sie direkt verknüpfen.',
+ reset_password: 'Passwort vergessen',
+ reset_password_description:
+ 'Gib die {{types, list(type: disjunction;)}} deines Kontos ein und wir senden dir einen Bestätigungscode um dein Passwort zurückzusetzen.',
+ new_password: 'Neues Passwort',
+ set_password: 'Passwort setzen',
+ password_changed: 'Passwort geändert',
+ no_account: 'Noch kein Konto? ',
+ have_account: 'Hast du schon ein Konto?',
+ enter_password: 'Passwort eingeben',
+ enter_password_for: 'Passwort für {{method}} {{value}} eingeben',
+ enter_username: 'Benutzernamen festlegen',
+ enter_username_description:
+ 'Der Benutzername kann für die Anmeldung verwendet werden. Der Benutzername darf nur Buchstaben, Zahlen und Unterstriche enthalten.',
+ link_email: 'Email verknüpfen',
+ link_phone: 'Telefonnummer verknüpfen',
+ link_email_or_phone: 'Email oder Telefonnummer verknüpfen',
+ link_email_description: 'Für zusätzliche Sicherheit, verknüpfe bitte deine Email mit dem Konto.',
+ link_phone_description:
+ 'Für zusätzliche Sicherheit, verknüpfe bitte deine Telefonnummer mit dem Konto.',
+ link_email_or_phone_description:
+ 'Für zusätzliche Sicherheit, verknüpfe bitte deine Email oder Telefonnummer mit dem Konto.',
+ continue_with_more_information:
+ 'Für zusätzliche Sicherheit, vervollständige bitte deine Informationen.',
+ create_your_account: 'Erstelle dein Konto',
+ sign_in_to_your_account: 'Melde dich in deinem Konto an',
+ no_region_code_found: 'Kein Regionencode gefunden',
+};
+
+export default description;
diff --git a/packages/phrases-ui/src/locales/de/error.ts b/packages/phrases-ui/src/locales/de/error.ts
new file mode 100644
index 000000000..2335888fa
--- /dev/null
+++ b/packages/phrases-ui/src/locales/de/error.ts
@@ -0,0 +1,23 @@
+const error = {
+ general_required: '{{types, list(type: disjunction;)}} ist erforderlich',
+ general_invalid: 'Die {{types, list(type: disjunction;)}} is ungültig',
+ username_required: 'Benutzername ist erforderlich',
+ password_required: 'Passwort ist erforderlich',
+ username_exists: 'Benutzername existiert bereits',
+ username_should_not_start_with_number: 'Benutzername darf nicht mit einer Zahl beginnen',
+ username_invalid_charset: 'Benutzername darf nur Buchstaben, Zahlen und Unterstriche enthalten',
+ invalid_email: 'Die Email ist ungültig',
+ invalid_phone: 'Die Telefonnummer ist ungültig',
+ password_min_length: 'Passwort muss mindestens {{min}} Zeichen lang sein',
+ passwords_do_not_match: 'Passwörter stimmen nicht überein',
+ invalid_password:
+ 'Passwort erfordert mindestens {{min}} Zeichen und enthält eine Kombination aus Buchstaben, Zahlen und Symbolen.',
+ invalid_passcode: 'Der Bestätigungscode ist ungültig',
+ invalid_connector_auth: 'Die Autorisierung ist ungültig',
+ invalid_connector_request: 'Connector Daten sind ungültig',
+ unknown: 'Unbekannter Fehler. Versuche es später noch einmal.',
+ invalid_session: 'Die Sitzung ist ungültig. Bitte melde dich erneut an.',
+ timeout: 'Zeitüberschreitung. Bitte melde dich erneut an.',
+};
+
+export default error;
diff --git a/packages/phrases-ui/src/locales/de/index.ts b/packages/phrases-ui/src/locales/de/index.ts
new file mode 100644
index 000000000..02e39bbea
--- /dev/null
+++ b/packages/phrases-ui/src/locales/de/index.ts
@@ -0,0 +1,21 @@
+import { type LocalePhrase } from '../../types.js';
+
+import action from './action.js';
+import demo_app from './demo-app.js';
+import description from './description.js';
+import error from './error.js';
+import input from './input.js';
+import secondary from './secondary.js';
+
+const de: LocalePhrase = Object.freeze({
+ translation: {
+ input,
+ secondary,
+ action,
+ description,
+ error,
+ demo_app,
+ },
+});
+
+export default de;
diff --git a/packages/phrases-ui/src/locales/de/input.ts b/packages/phrases-ui/src/locales/de/input.ts
new file mode 100644
index 000000000..c53083d21
--- /dev/null
+++ b/packages/phrases-ui/src/locales/de/input.ts
@@ -0,0 +1,10 @@
+const input = {
+ username: 'Benutzername',
+ password: 'Passwort',
+ email: 'Email',
+ phone_number: 'Telefonnummer',
+ confirm_password: 'Passwort bestätigen',
+ search_region_code: 'Suche region code',
+};
+
+export default input;
diff --git a/packages/phrases-ui/src/locales/de/secondary.ts b/packages/phrases-ui/src/locales/de/secondary.ts
new file mode 100644
index 000000000..dfae1cfb5
--- /dev/null
+++ b/packages/phrases-ui/src/locales/de/secondary.ts
@@ -0,0 +1,6 @@
+const secondary = {
+ social_bind_with:
+ 'Besitzt du schon ein Konto? Melde dich an, um {{methods, list(type: disjunction;)}} mit deiner Identität zu verbinden.',
+};
+
+export default secondary;
diff --git a/packages/phrases-ui/src/locales/fr.ts b/packages/phrases-ui/src/locales/fr.ts
deleted file mode 100644
index ed81a01d8..000000000
--- a/packages/phrases-ui/src/locales/fr.ts
+++ /dev/null
@@ -1,140 +0,0 @@
-import type { LocalePhrase } from '../types.js';
-
-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',
- search_region_code: 'Rechercher le code de région',
- },
- secondary: {
- 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_account_without_linking: 'Créer un compte sans lier',
- create: 'Créer',
- enter_passcode: 'Entrer le code',
- confirm: 'Confirmer',
- cancel: 'Annuler',
- save_password: 'Enregistrer le mot de passe',
- bind: 'Lier avec {{address}}',
- bind_and_continue: 'Lier et continuer',
- back: 'Aller en arrière',
- nav_back: 'Retour',
- agree: 'Accepter',
- got_it: 'Compris',
- sign_in_with: 'Continuer avec {{name}}',
- forgot_password: 'Mot de passe oublié?',
- switch_to: 'Passer au {{method}}',
- sign_in_via_passcode: 'Se connecter avec le code de vérification',
- sign_in_via_password: 'Se connecter avec le mot de passe',
- change: 'Changer {{method}}',
- link_another_email: 'Lier une autre adresse e-mail',
- link_another_phone: 'Lier un autre numéro de téléphone',
- link_another_email_or_phone: 'Lier une autre adresse e-mail ou un autre numéro de téléphone',
- show_password: 'Afficher le mot de passe',
- },
- description: {
- email: 'email',
- phone_number: 'numéro de téléphone',
- username: "nom d'utilisateur",
- 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 .',
- terms_of_use: "Conditions d'utilisation",
- sign_in: 'Connexion',
- privacy_policy: 'Politique de confidentialité',
- create_account: 'Créer un compte',
- or: 'ou',
- and: 'et',
- enter_passcode: 'Le code a été envoyé à {{address}} {{target}}',
- passcode_sent: 'Le code a été renvoyé',
- resend_after_seconds: 'Renvoyer après {{seconds}} secondes',
- resend_passcode: 'Renvoyer le code',
- create_account_id_exists:
- 'Le compte avec {{type}} {{value}} existe déjà, voulez-vous vous connecter?',
- link_account_id_exists: 'Le compte avec {{type}} {{value}} existe déjà, voulez-vous le lier?',
- sign_in_id_does_not_exist:
- "Le compte avec {{type}} {{value}} n'existe pas, voulez-vous créer un nouveau compte?",
- sign_in_id_does_not_exist_alert: 'Nous ne trouvons aucun compte associé à {{type}} {{value}}.',
- create_account_id_exists_alert:
- 'Le compte avec {{type}} {{value}} est lié à un autre compte. Veuillez essayer un autre {{type}}.',
- social_identity_exist:
- 'Le {{type}} {{value}} est lié à un autre compte. Veuillez essayer un autre {{type}}.',
- bind_account_title: 'Lier ou créer un compte',
- social_create_account: 'Vous pouvez créer un nouveau compte',
- social_link_email: 'Vous pouvez lier une autre adresse e-mail',
- social_link_phone: 'Vous pouvez lier un autre numéro de téléphone',
- social_link_email_or_phone:
- 'Vous pouvez lier une autre adresse e-mail ou un autre numéro de téléphone',
- social_bind_with_existing:
- 'Nous avons trouvé une {{method}} connexe qui a été enregistrée, et vous pouvez la lier directement.',
- reset_password: 'Mot de passe oublié',
- reset_password_description:
- 'Entrez le {{types, list(type: disjunction;)}} associé à votre compte et nous vous enverrons le code de vérification pour réinitialiser votre mot de passe.',
- new_password: 'Nouveau mot de passe',
- set_password: 'Définir un mot de passe',
- password_changed: 'Mot de passe modifié',
- no_account: 'Pas encore de compte? ',
- have_account: 'Déjà un compte?',
- enter_password: 'Entrer le mot de passe',
- enter_password_for: 'Connectez-vous avec le mot de passe pour {{method}} {{value}}',
- enter_username: "Définir un nom d'utilisateur",
- enter_username_description:
- "Le nom d'utilisateur est une alternative pour la connexion. Le nom d'utilisateur doit contenir uniquement des lettres, des chiffres et des underscores.", // UNTRANSLATED
- link_email: "Lier l'adresse e-mail",
- link_phone: 'Lier le numéro de téléphone',
- link_email_or_phone: "Lier l'adresse e-mail ou le numéro de téléphone",
- link_email_description:
- 'Pour une sécurité accrue, veuillez lier votre adresse e-mail au compte.',
- link_phone_description:
- 'Pour une sécurité accrue, veuillez lier votre numéro de téléphone au compte.',
- link_email_or_phone_description:
- 'Pour une sécurité accrue, veuillez lier votre adresse e-mail ou votre numéro de téléphone au compte.',
- continue_with_more_information:
- 'Pour une sécurité accrue, veuillez compléter les détails du compte ci-dessous.',
- create_your_account: 'Créer votre compte',
- sign_in_to_your_account: 'Connecte-toi à ton compte',
- no_region_code_found: 'Aucun code de région trouvé',
- },
- error: {
- general_required: `Le {{types, list(type: disjunction;)}} est requis`,
- general_invalid: `Le {{types, list(type: disjunction;)}} n'est pas valide`,
- 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_invalid_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_password:
- 'Le mot de passe doit contenir au minimum {{min}} caractères et doit inclure une combinaison de lettres, de chiffres et de symboles.',
- 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.',
- timeout: 'Request timeout. Please try again later.', // UNTRANSLATED
- },
- demo_app: {
- notification: "Astuce : Créez d'abord un compte pour tester l'expérience de connexion.",
- },
-};
-
-const fr: LocalePhrase = Object.freeze({
- translation,
-});
-
-export default fr;
diff --git a/packages/phrases-ui/src/locales/fr/action.ts b/packages/phrases-ui/src/locales/fr/action.ts
new file mode 100644
index 000000000..37a1e61d4
--- /dev/null
+++ b/packages/phrases-ui/src/locales/fr/action.ts
@@ -0,0 +1,29 @@
+const action = {
+ sign_in: 'Connexion',
+ continue: 'Continuer',
+ create_account: 'Créer un compte',
+ create_account_without_linking: 'Créer un compte sans lier',
+ create: 'Créer',
+ enter_passcode: 'Entrer le code',
+ confirm: 'Confirmer',
+ cancel: 'Annuler',
+ save_password: 'Enregistrer le mot de passe',
+ bind: 'Lier avec {{address}}',
+ bind_and_continue: 'Lier et continuer',
+ back: 'Aller en arrière',
+ nav_back: 'Retour',
+ agree: 'Accepter',
+ got_it: 'Compris',
+ sign_in_with: 'Continuer avec {{name}}',
+ forgot_password: 'Mot de passe oublié?',
+ switch_to: 'Passer au {{method}}',
+ sign_in_via_passcode: 'Se connecter avec le code de vérification',
+ sign_in_via_password: 'Se connecter avec le mot de passe',
+ change: 'Changer {{method}}',
+ link_another_email: 'Lier une autre adresse e-mail',
+ link_another_phone: 'Lier un autre numéro de téléphone',
+ link_another_email_or_phone: 'Lier une autre adresse e-mail ou un autre numéro de téléphone',
+ show_password: 'Afficher le mot de passe',
+};
+
+export default action;
diff --git a/packages/phrases-ui/src/locales/fr/demo-app.ts b/packages/phrases-ui/src/locales/fr/demo-app.ts
new file mode 100644
index 000000000..514b2e111
--- /dev/null
+++ b/packages/phrases-ui/src/locales/fr/demo-app.ts
@@ -0,0 +1,5 @@
+const demo_app = {
+ notification: "Astuce : Créez d'abord un compte pour tester l'expérience de connexion.",
+};
+
+export default demo_app;
diff --git a/packages/phrases-ui/src/locales/fr/description.ts b/packages/phrases-ui/src/locales/fr/description.ts
new file mode 100644
index 000000000..09ae2ce3a
--- /dev/null
+++ b/packages/phrases-ui/src/locales/fr/description.ts
@@ -0,0 +1,65 @@
+const description = {
+ email: 'email',
+ phone_number: 'numéro de téléphone',
+ username: "nom d'utilisateur",
+ 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 .',
+ terms_of_use: "Conditions d'utilisation",
+ sign_in: 'Connexion',
+ privacy_policy: 'Politique de confidentialité',
+ create_account: 'Créer un compte',
+ or: 'ou',
+ and: 'et',
+ enter_passcode: 'Le code a été envoyé à {{address}} {{target}}',
+ passcode_sent: 'Le code a été renvoyé',
+ resend_after_seconds: 'Renvoyer après {{seconds}} secondes',
+ resend_passcode: 'Renvoyer le code',
+ create_account_id_exists:
+ 'Le compte avec {{type}} {{value}} existe déjà, voulez-vous vous connecter?',
+ link_account_id_exists: 'Le compte avec {{type}} {{value}} existe déjà, voulez-vous le lier?',
+ sign_in_id_does_not_exist:
+ "Le compte avec {{type}} {{value}} n'existe pas, voulez-vous créer un nouveau compte?",
+ sign_in_id_does_not_exist_alert: 'Nous ne trouvons aucun compte associé à {{type}} {{value}}.',
+ create_account_id_exists_alert:
+ 'Le compte avec {{type}} {{value}} est lié à un autre compte. Veuillez essayer un autre {{type}}.',
+ social_identity_exist:
+ 'Le {{type}} {{value}} est lié à un autre compte. Veuillez essayer un autre {{type}}.',
+ bind_account_title: 'Lier ou créer un compte',
+ social_create_account: 'Vous pouvez créer un nouveau compte',
+ social_link_email: 'Vous pouvez lier une autre adresse e-mail',
+ social_link_phone: 'Vous pouvez lier un autre numéro de téléphone',
+ social_link_email_or_phone:
+ 'Vous pouvez lier une autre adresse e-mail ou un autre numéro de téléphone',
+ social_bind_with_existing:
+ 'Nous avons trouvé une {{method}} connexe qui a été enregistrée, et vous pouvez la lier directement.',
+ reset_password: 'Mot de passe oublié',
+ reset_password_description:
+ 'Entrez le {{types, list(type: disjunction;)}} associé à votre compte et nous vous enverrons le code de vérification pour réinitialiser votre mot de passe.',
+ new_password: 'Nouveau mot de passe',
+ set_password: 'Définir un mot de passe',
+ password_changed: 'Mot de passe modifié',
+ no_account: 'Pas encore de compte? ',
+ have_account: 'Déjà un compte?',
+ enter_password: 'Entrer le mot de passe',
+ enter_password_for: 'Connectez-vous avec le mot de passe pour {{method}} {{value}}',
+ enter_username: "Définir un nom d'utilisateur",
+ enter_username_description:
+ "Le nom d'utilisateur est une alternative pour la connexion. Le nom d'utilisateur doit contenir uniquement des lettres, des chiffres et des underscores.",
+ link_email: "Lier l'adresse e-mail",
+ link_phone: 'Lier le numéro de téléphone',
+ link_email_or_phone: "Lier l'adresse e-mail ou le numéro de téléphone",
+ link_email_description: 'Pour une sécurité accrue, veuillez lier votre adresse e-mail au compte.',
+ link_phone_description:
+ 'Pour une sécurité accrue, veuillez lier votre numéro de téléphone au compte.',
+ link_email_or_phone_description:
+ 'Pour une sécurité accrue, veuillez lier votre adresse e-mail ou votre numéro de téléphone au compte.',
+ continue_with_more_information:
+ 'Pour une sécurité accrue, veuillez compléter les détails du compte ci-dessous.',
+ create_your_account: 'Créer votre compte',
+ sign_in_to_your_account: 'Connecte-toi à ton compte',
+ no_region_code_found: 'Aucun code de région trouvé',
+};
+
+export default description;
diff --git a/packages/phrases-ui/src/locales/fr/error.ts b/packages/phrases-ui/src/locales/fr/error.ts
new file mode 100644
index 000000000..9827435c9
--- /dev/null
+++ b/packages/phrases-ui/src/locales/fr/error.ts
@@ -0,0 +1,25 @@
+const error = {
+ general_required: 'Le {{types, list(type: disjunction;)}} est requis',
+ general_invalid: "Le {{types, list(type: disjunction;)}} n'est pas valide",
+ 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_invalid_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_password:
+ 'Le mot de passe doit contenir au minimum {{min}} caractères et doit inclure une combinaison de lettres, de chiffres et de symboles.',
+ 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.',
+ timeout: 'Request timeout. Please try again later.',
+};
+
+export default error;
diff --git a/packages/phrases-ui/src/locales/fr/index.ts b/packages/phrases-ui/src/locales/fr/index.ts
new file mode 100644
index 000000000..c7710bc52
--- /dev/null
+++ b/packages/phrases-ui/src/locales/fr/index.ts
@@ -0,0 +1,21 @@
+import { type LocalePhrase } from '../../types.js';
+
+import action from './action.js';
+import demo_app from './demo-app.js';
+import description from './description.js';
+import error from './error.js';
+import input from './input.js';
+import secondary from './secondary.js';
+
+const fr: LocalePhrase = Object.freeze({
+ translation: {
+ input,
+ secondary,
+ action,
+ description,
+ error,
+ demo_app,
+ },
+});
+
+export default fr;
diff --git a/packages/phrases-ui/src/locales/fr/input.ts b/packages/phrases-ui/src/locales/fr/input.ts
new file mode 100644
index 000000000..b6875a4be
--- /dev/null
+++ b/packages/phrases-ui/src/locales/fr/input.ts
@@ -0,0 +1,10 @@
+const 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',
+ search_region_code: 'Rechercher le code de région',
+};
+
+export default input;
diff --git a/packages/phrases-ui/src/locales/fr/secondary.ts b/packages/phrases-ui/src/locales/fr/secondary.ts
new file mode 100644
index 000000000..8b3088699
--- /dev/null
+++ b/packages/phrases-ui/src/locales/fr/secondary.ts
@@ -0,0 +1,6 @@
+const secondary = {
+ social_bind_with:
+ 'Vous avez déjà un compte? Connectez-vous pour lier {{methods, list(type: disjunction;)}} avec votre identité sociale.',
+};
+
+export default secondary;
diff --git a/packages/phrases-ui/src/locales/ja/index.ts b/packages/phrases-ui/src/locales/ja/index.ts
index 66b42b769..79efab9a5 100644
--- a/packages/phrases-ui/src/locales/ja/index.ts
+++ b/packages/phrases-ui/src/locales/ja/index.ts
@@ -1,3 +1,5 @@
+import { type LocalePhrase } from '../../types.js';
+
import action from './action.js';
import demo_app from './demo-app.js';
import description from './description.js';
@@ -5,7 +7,7 @@ import error from './error.js';
import input from './input.js';
import secondary from './secondary.js';
-const en = Object.freeze({
+const ja: LocalePhrase = Object.freeze({
translation: {
input,
secondary,
@@ -16,4 +18,4 @@ const en = Object.freeze({
},
});
-export default en;
+export default ja;
diff --git a/packages/phrases-ui/src/locales/ko.ts b/packages/phrases-ui/src/locales/ko.ts
deleted file mode 100644
index ec654e83b..000000000
--- a/packages/phrases-ui/src/locales/ko.ts
+++ /dev/null
@@ -1,129 +0,0 @@
-import type { LocalePhrase } from '../types.js';
-
-const translation = {
- input: {
- username: '사용자 이름',
- password: '비밀번호',
- email: '이메일',
- phone_number: '휴대전화번호',
- confirm_password: '비밀번호 확인',
- search_region_code: '지역 코드 검색',
- },
- secondary: {
- social_bind_with:
- '이미 계정이 있으신가요? {{methods, list(type: disjunction;)}}로 로그인 해보세요!',
- },
- action: {
- sign_in: '로그인',
- continue: '계속',
- create_account: '계정 생성',
- create_account_without_linking: '연동 없이 계정 생성하기',
- create: '생성',
- enter_passcode: '비밀번호 입력',
- confirm: '확인',
- cancel: '취소',
- save_password: '저장',
- bind: '{{address}}로 연동',
- bind_and_continue: '연동하고 계속하기',
- back: '뒤로 가기',
- nav_back: '뒤로',
- agree: '동의',
- got_it: '알겠습니다',
- sign_in_with: '{{name}} 계속',
- forgot_password: '비밀번호를 잊어버리셨나요?',
- switch_to: '{{method}}로 전환',
- sign_in_via_passcode: '인증번호로 로그인',
- sign_in_via_password: '비밀번호로 로그인',
- change: '변경 {{method}}',
- link_another_email: '다른 이메일 연동',
- link_another_phone: '다른 전화번호 연동',
- link_another_email_or_phone: '다른 이메일 또는 전화번호 연동',
- show_password: '비밀번호 보기',
- },
- description: {
- email: '이메일',
- phone_number: '휴대전화번호',
- username: '사용자 이름',
- reminder: '리마인더',
- not_found: '404 찾을 수 없음',
- agree_with_terms: '나는 내용을 읽었으며, 이에 동의합니다.',
- agree_with_terms_modal: '진행하기 위해서는, 다음을 동의해주세요 .',
- terms_of_use: '이용약관',
- sign_in: '로그인',
- privacy_policy: '개인정보처리방침',
- create_account: '계정 생성',
- or: '또는',
- and: '그리고',
- enter_passcode: '{{address}} {{target}} 으로 비밀번호가 전송되었어요.',
- passcode_sent: '비밀번호가 재전송되었어요.',
- resend_after_seconds: '{{seconds}} 초 후에 재전송',
- resend_passcode: '비밀번호 재전송',
- create_account_id_exists:
- '{{type}} {{value}} 계정은 다른 계정과 연결되어 있습니다. 다른 {{type}}을(를) 시도해주세요.',
- link_account_id_exists: '{{type}} {{value}}와/과 연동된 계정이 이미 존재해요. 연동할까요?',
- sign_in_id_does_not_exist: '{type}} {{value}} 계정이 존재하지 않아요. 새로 만드시겠어요?',
- sign_in_id_does_not_exist_alert: '{{type}} {{value}} 계정이 존재하지 않아요.',
- create_account_id_exists_alert: '{{type}} {{value}} 이미 존재해요.',
- social_identity_exist:
- '{{type}} {{value}}이/가 다른 계정과 연동되어 있어요. 다른 {{type}}을/를 시도해 보세요.',
- bind_account_title: '계정 만들거나 연동하기',
- social_create_account: '새로운 계정을 만들 수 있습니다.',
- social_link_email: '다른 이메일을 연동할 수 있어요',
- social_link_phone: '다른 휴대전화를 연동할 수 있어요',
- social_link_email_or_phone: '다른 이메일이나 휴대전화를 연동할 수 있어요',
- social_bind_with_existing: '등록된 관련 {{method}}이 있습니다. 직접 연결할 수 있습니다.',
- reset_password: '비밀번호를 잊으셨나요',
- reset_password_description:
- '귀하의 계정과 연결된 {{types, list(type: disjunction;)}}를 입력하면 비밀번호 재설정을 위한 인증 코드를 보내드립니다.',
- new_password: '새 비밀번호',
- set_password: '비밀번호 설정',
- password_changed: '비밀번호 변경됨',
- no_account: '계정이 없나요?',
- have_account: '이미 계정이 있나요?',
- enter_password: '비밀번호 입력',
- enter_password_for: '{{method}} {{value}} 비밀번호 로그인',
- enter_username: '사용자 이름 설정하기',
- enter_username_description:
- '사용자 이름은 로그인을 할 때 사용되요. 사용자 이름에는 문자, 숫자 및 밑줄만 포함되어야 해요.',
- link_email: '이메일 연동',
- link_phone: '휴대전화번호 연동',
- link_email_or_phone: '이메일 또는 휴대전화번호 연동',
- link_email_description: '더 나은 보안을 위해 이메일을 연동해 주세요.',
- link_phone_description: '더 나은 보안을 위해 휴대전화번호를 연동해 주세요.',
- link_email_or_phone_description:
- '더 나은 보안을 위해 이메일 또는 휴대전화번호를 연동해 주세요.',
- continue_with_more_information: '더 나은 보안을 위해 아래 자세한 내용을 따라 주세요.',
- create_your_account: '계정 생성하기',
- sign_in_to_your_account: '계정에 로그인하세요',
- no_region_code_found: '지역 코드를 찾을 수 없습니다.',
- },
- error: {
- general_required: `{{types, list(type: disjunction;)}}은/는 필수예요.`,
- general_invalid: `{{types, list(type: disjunction;)}}은/는 유효하지 않아요.`,
- username_required: '사용자 이름은 필수예요.',
- password_required: '비밀번호는 필수예요.',
- username_exists: '사용자 이름이 이미 존재해요.',
- username_should_not_start_with_number: '사용자 이름은 숫자로 시작하면 안 돼요.',
- username_invalid_charset: '사용자 이름은 문자, 숫자, _(밑줄 문자) 로만 이루어져야 해요.',
- invalid_email: '이메일이 유효하지 않아요.',
- invalid_phone: '휴대전화번호가 유효하지 않아요.',
- password_min_length: '비밀번호는 최소 {{min}} 자리로 이루어져야 해요.',
- passwords_do_not_match: '비밀번호가 일치하지 않아요.',
- invalid_password: '비밀번호는 최소 {{min}}자 이상이며 문자, 숫자 및 기호의 조합이어야 해요.',
- invalid_passcode: '비밀번호가 유효하지 않아요.',
- invalid_connector_auth: '인증이 유효하지 않아요.',
- invalid_connector_request: '연동 정보가 유효하지 않아요.',
- unknown: '알 수 없는 오류가 발생했어요. 잠시 후에 시도해 주세요.',
- invalid_session: '세션을 찾을 수 없어요. 다시 로그인해 주세요.',
- timeout: '요청 시간이 초과되었어요. 잠시 후에 다시 시도해 주세요.',
- },
- demo_app: {
- notification: '알림:로그인 경험을 테스트하기 위해 먼저 계정을 만드는 것이 좋아요.',
- },
-};
-
-const ko: LocalePhrase = Object.freeze({
- translation,
-});
-
-export default ko;
diff --git a/packages/phrases-ui/src/locales/ko/action.ts b/packages/phrases-ui/src/locales/ko/action.ts
new file mode 100644
index 000000000..de77ea12b
--- /dev/null
+++ b/packages/phrases-ui/src/locales/ko/action.ts
@@ -0,0 +1,29 @@
+const action = {
+ sign_in: '로그인',
+ continue: '계속',
+ create_account: '계정 생성',
+ create_account_without_linking: '연동 없이 계정 생성하기',
+ create: '생성',
+ enter_passcode: '비밀번호 입력',
+ confirm: '확인',
+ cancel: '취소',
+ save_password: '저장',
+ bind: '{{address}}로 연동',
+ bind_and_continue: '연동하고 계속하기',
+ back: '뒤로 가기',
+ nav_back: '뒤로',
+ agree: '동의',
+ got_it: '알겠습니다',
+ sign_in_with: '{{name}} 계속',
+ forgot_password: '비밀번호를 잊어버리셨나요?',
+ switch_to: '{{method}}로 전환',
+ sign_in_via_passcode: '인증번호로 로그인',
+ sign_in_via_password: '비밀번호로 로그인',
+ change: '변경 {{method}}',
+ link_another_email: '다른 이메일 연동',
+ link_another_phone: '다른 전화번호 연동',
+ link_another_email_or_phone: '다른 이메일 또는 전화번호 연동',
+ show_password: '비밀번호 보기',
+};
+
+export default action;
diff --git a/packages/phrases-ui/src/locales/ko/demo-app.ts b/packages/phrases-ui/src/locales/ko/demo-app.ts
new file mode 100644
index 000000000..7d037614c
--- /dev/null
+++ b/packages/phrases-ui/src/locales/ko/demo-app.ts
@@ -0,0 +1,5 @@
+const demo_app = {
+ notification: '알림:로그인 경험을 테스트하기 위해 먼저 계정을 만드는 것이 좋아요.',
+};
+
+export default demo_app;
diff --git a/packages/phrases-ui/src/locales/ko/description.ts b/packages/phrases-ui/src/locales/ko/description.ts
new file mode 100644
index 000000000..d41368a3f
--- /dev/null
+++ b/packages/phrases-ui/src/locales/ko/description.ts
@@ -0,0 +1,58 @@
+const description = {
+ email: '이메일',
+ phone_number: '휴대전화번호',
+ username: '사용자 이름',
+ reminder: '리마인더',
+ not_found: '404 찾을 수 없음',
+ agree_with_terms: '나는 내용을 읽었으며, 이에 동의합니다.',
+ agree_with_terms_modal: '진행하기 위해서는, 다음을 동의해주세요 .',
+ terms_of_use: '이용약관',
+ sign_in: '로그인',
+ privacy_policy: '개인정보처리방침',
+ create_account: '계정 생성',
+ or: '또는',
+ and: '그리고',
+ enter_passcode: '{{address}} {{target}} 으로 비밀번호가 전송되었어요.',
+ passcode_sent: '비밀번호가 재전송되었어요.',
+ resend_after_seconds: '{{seconds}} 초 후에 재전송',
+ resend_passcode: '비밀번호 재전송',
+ create_account_id_exists:
+ '{{type}} {{value}} 계정은 다른 계정과 연결되어 있습니다. 다른 {{type}}을(를) 시도해주세요.',
+ link_account_id_exists: '{{type}} {{value}}와/과 연동된 계정이 이미 존재해요. 연동할까요?',
+ sign_in_id_does_not_exist: '{type}} {{value}} 계정이 존재하지 않아요. 새로 만드시겠어요?',
+ sign_in_id_does_not_exist_alert: '{{type}} {{value}} 계정이 존재하지 않아요.',
+ create_account_id_exists_alert: '{{type}} {{value}} 이미 존재해요.',
+ social_identity_exist:
+ '{{type}} {{value}}이/가 다른 계정과 연동되어 있어요. 다른 {{type}}을/를 시도해 보세요.',
+ bind_account_title: '계정 만들거나 연동하기',
+ social_create_account: '새로운 계정을 만들 수 있습니다.',
+ social_link_email: '다른 이메일을 연동할 수 있어요',
+ social_link_phone: '다른 휴대전화를 연동할 수 있어요',
+ social_link_email_or_phone: '다른 이메일이나 휴대전화를 연동할 수 있어요',
+ social_bind_with_existing: '등록된 관련 {{method}}이 있습니다. 직접 연결할 수 있습니다.',
+ reset_password: '비밀번호를 잊으셨나요',
+ reset_password_description:
+ '귀하의 계정과 연결된 {{types, list(type: disjunction;)}}를 입력하면 비밀번호 재설정을 위한 인증 코드를 보내드립니다.',
+ new_password: '새 비밀번호',
+ set_password: '비밀번호 설정',
+ password_changed: '비밀번호 변경됨',
+ no_account: '계정이 없나요?',
+ have_account: '이미 계정이 있나요?',
+ enter_password: '비밀번호 입력',
+ enter_password_for: '{{method}} {{value}} 비밀번호 로그인',
+ enter_username: '사용자 이름 설정하기',
+ enter_username_description:
+ '사용자 이름은 로그인을 할 때 사용되요. 사용자 이름에는 문자, 숫자 및 밑줄만 포함되어야 해요.',
+ link_email: '이메일 연동',
+ link_phone: '휴대전화번호 연동',
+ link_email_or_phone: '이메일 또는 휴대전화번호 연동',
+ link_email_description: '더 나은 보안을 위해 이메일을 연동해 주세요.',
+ link_phone_description: '더 나은 보안을 위해 휴대전화번호를 연동해 주세요.',
+ link_email_or_phone_description: '더 나은 보안을 위해 이메일 또는 휴대전화번호를 연동해 주세요.',
+ continue_with_more_information: '더 나은 보안을 위해 아래 자세한 내용을 따라 주세요.',
+ create_your_account: '계정 생성하기',
+ sign_in_to_your_account: '계정에 로그인하세요',
+ no_region_code_found: '지역 코드를 찾을 수 없습니다.',
+};
+
+export default description;
diff --git a/packages/phrases-ui/src/locales/ko/error.ts b/packages/phrases-ui/src/locales/ko/error.ts
new file mode 100644
index 000000000..2dfad679e
--- /dev/null
+++ b/packages/phrases-ui/src/locales/ko/error.ts
@@ -0,0 +1,22 @@
+const error = {
+ general_required: '{{types, list(type: disjunction;)}}은/는 필수예요.',
+ general_invalid: '{{types, list(type: disjunction;)}}은/는 유효하지 않아요.',
+ username_required: '사용자 이름은 필수예요.',
+ password_required: '비밀번호는 필수예요.',
+ username_exists: '사용자 이름이 이미 존재해요.',
+ username_should_not_start_with_number: '사용자 이름은 숫자로 시작하면 안 돼요.',
+ username_invalid_charset: '사용자 이름은 문자, 숫자, _(밑줄 문자) 로만 이루어져야 해요.',
+ invalid_email: '이메일이 유효하지 않아요.',
+ invalid_phone: '휴대전화번호가 유효하지 않아요.',
+ password_min_length: '비밀번호는 최소 {{min}} 자리로 이루어져야 해요.',
+ passwords_do_not_match: '비밀번호가 일치하지 않아요.',
+ invalid_password: '비밀번호는 최소 {{min}}자 이상이며 문자, 숫자 및 기호의 조합이어야 해요.',
+ invalid_passcode: '비밀번호가 유효하지 않아요.',
+ invalid_connector_auth: '인증이 유효하지 않아요.',
+ invalid_connector_request: '연동 정보가 유효하지 않아요.',
+ unknown: '알 수 없는 오류가 발생했어요. 잠시 후에 시도해 주세요.',
+ invalid_session: '세션을 찾을 수 없어요. 다시 로그인해 주세요.',
+ timeout: '요청 시간이 초과되었어요. 잠시 후에 다시 시도해 주세요.',
+};
+
+export default error;
diff --git a/packages/phrases-ui/src/locales/ko/index.ts b/packages/phrases-ui/src/locales/ko/index.ts
new file mode 100644
index 000000000..b7c2f21eb
--- /dev/null
+++ b/packages/phrases-ui/src/locales/ko/index.ts
@@ -0,0 +1,21 @@
+import { type LocalePhrase } from '../../types.js';
+
+import action from './action.js';
+import demo_app from './demo-app.js';
+import description from './description.js';
+import error from './error.js';
+import input from './input.js';
+import secondary from './secondary.js';
+
+const ko: LocalePhrase = Object.freeze({
+ translation: {
+ input,
+ secondary,
+ action,
+ description,
+ error,
+ demo_app,
+ },
+});
+
+export default ko;
diff --git a/packages/phrases-ui/src/locales/ko/input.ts b/packages/phrases-ui/src/locales/ko/input.ts
new file mode 100644
index 000000000..eb68b0df3
--- /dev/null
+++ b/packages/phrases-ui/src/locales/ko/input.ts
@@ -0,0 +1,10 @@
+const input = {
+ username: '사용자 이름',
+ password: '비밀번호',
+ email: '이메일',
+ phone_number: '휴대전화번호',
+ confirm_password: '비밀번호 확인',
+ search_region_code: '지역 코드 검색',
+};
+
+export default input;
diff --git a/packages/phrases-ui/src/locales/ko/secondary.ts b/packages/phrases-ui/src/locales/ko/secondary.ts
new file mode 100644
index 000000000..d06f85e6c
--- /dev/null
+++ b/packages/phrases-ui/src/locales/ko/secondary.ts
@@ -0,0 +1,6 @@
+const secondary = {
+ social_bind_with:
+ '이미 계정이 있으신가요? {{methods, list(type: disjunction;)}}로 로그인 해보세요!',
+};
+
+export default secondary;
diff --git a/packages/phrases-ui/src/locales/pt-br.ts b/packages/phrases-ui/src/locales/pt-br.ts
deleted file mode 100644
index 78d43ec6b..000000000
--- a/packages/phrases-ui/src/locales/pt-br.ts
+++ /dev/null
@@ -1,133 +0,0 @@
-import type { LocalePhrase } from '../types.js';
-
-const translation = {
- input: {
- username: 'Nome de usuário',
- password: 'Senha',
- email: 'E-mail',
- phone_number: 'Número de telefone',
- confirm_password: 'Confirme a senha',
- search_region_code: 'Pesquisar código de região',
- },
- secondary: {
- social_bind_with:
- 'Já tinha uma conta? Faça login no link {{methods, list(type: disjunction;)}} com sua identidade social.',
- },
- action: {
- sign_in: 'Entrar',
- continue: 'Continuar',
- create_account: 'Criar conta',
- create_account_without_linking: 'Criar conta sem vincular',
- create: 'Criar',
- enter_passcode: 'Inserir código de verificação',
- confirm: 'Confirmar',
- cancel: 'Cancelar',
- save_password: 'Salvar senha',
- bind: 'Link com {{address}}',
- bind_and_continue: 'Linkar e continuar',
- back: 'Voltar',
- nav_back: 'Voltar',
- agree: 'Aceito',
- got_it: 'Entendido',
- sign_in_with: 'Continuar com {{name}}',
- forgot_password: 'Esqueceu sua senha?',
- switch_to: 'Trocar para {{method}}',
- sign_in_via_passcode: 'Fazer login com código de verificação',
- sign_in_via_password: 'Fazer login com senha',
- change: 'Alterar {{change}}',
- link_another_email: 'Vincular outro e-mail',
- link_another_phone: 'Vincular outro telefone',
- link_another_email_or_phone: 'Vincular outro e-mail ou telefone',
- show_password: 'Mostrar senha',
- },
- description: {
- email: 'e-mail',
- phone_number: 'número de telefone',
- username: 'nome de usuário',
- reminder: 'Lembrete',
- not_found: '404 Não Encontrado',
- agree_with_terms: 'Eu li e concordo com os ',
- agree_with_terms_modal: 'Para continuar, por favor, concorde com os .',
- terms_of_use: 'Termos de uso',
- sign_in: 'Entrar',
- privacy_policy: 'Política de privacidade',
- create_account: 'Criar conta',
- or: 'ou',
- and: 'e',
- enter_passcode: 'O código de verificação foi enviado para o seu {{address}} {{target}}',
- passcode_sent: 'O código de verificação foi reenviado',
- resend_after_seconds: 'Reenviar depois {{seconds}} segundos',
- resend_passcode: 'Reenviar código de verificação',
- create_account_id_exists: 'A conta com {{type}} {{value}} já existe, gostaria de entrar?',
- link_account_id_exists: 'A conta com {{type}} {{value}} já existe, gostaria de vincular?',
- sign_in_id_does_not_exist:
- 'A conta com {{type}} {{value}} não existe, gostaria de criar uma nova conta?',
- sign_in_id_does_not_exist_alert: 'A conta com {{type}} {{value}} não existe.',
- create_account_id_exists_alert:
- 'A conta com {{type}} {{value}} está vinculada a outra conta. Por favor, tente outro {{type}}.',
- social_identity_exist:
- 'O {{type}} {{value}} está vinculado a outra conta. Por favor, tente outro {{type}}.',
- bind_account_title: 'Vincular ou criar conta',
- social_create_account: 'Você pode criar uma nova conta.',
- social_link_email: 'É possível vincular outro e-mail',
- social_link_phone: 'É possível vincular outro telefone',
- social_link_email_or_phone: 'É possível vincular outro e-mail ou telefone',
- social_bind_with_existing:
- 'Encontramos uma conta relacionada registrada e você pode vinculá-la diretamente.',
- reset_password: 'Esqueceu a senha',
- reset_password_description:
- 'Digite o {{types, list(type: disjunction;)}} à sua conta e enviaremos a você o código de verificação para redefinir sua senha.',
- new_password: 'Nova senha',
- set_password: 'Configurar senha',
- password_changed: 'Senha alterada',
- no_account: 'Ainda não tem conta? ',
- have_account: 'Já tinha uma conta?',
- enter_password: 'Digite a senha',
- enter_password_for: 'Entre com a senha para {{method}} {{value}}',
- enter_username: 'Definir nome de usuário',
- enter_username_description:
- 'O nome de usuário é uma alternativa para fazer login. O nome de usuário deve conter apenas letras, números e sublinhados.',
- link_email: 'Linkar e-mail',
- link_phone: 'Linkar telefone',
- link_email_or_phone: 'Linkar e-mail ou telefone',
- link_email_description: 'Para maior segurança, vincule seu e-mail à conta.',
- link_phone_description: 'Para maior segurança, vincule seu telefone à conta.',
- link_email_or_phone_description:
- 'Para maior segurança, vincule seu e-mail ou telefone à conta.',
- continue_with_more_information: 'Para maior segurança, preencha os detalhes da conta abaixo.',
- create_your_account: 'Crie sua conta',
- sign_in_to_your_account: 'Faça login na sua conta',
- no_region_code_found: 'Não foi possível encontrar o código de região do seu telefone.',
- },
- error: {
- general_required: `{{types, list(type: disjunction;)}} é obrigatório`,
- general_invalid: `O {{types, list(type: disjunction;)}} é inválido`,
- username_required: 'Nome de usuário é obrigatório',
- password_required: 'Senha é obrigatório',
- username_exists: 'O nome de usuário já existe',
- username_should_not_start_with_number: 'O nome de usuário não deve começar com um número',
- username_invalid_charset:
- 'O nome de usuário deve conter apenas letras, números ou sublinhados.',
- invalid_email: 'O e-mail é inválido',
- invalid_phone: 'O número de telefone é inválido',
- password_min_length: 'A senha requer um mínimo de {{min}} caracteres',
- passwords_do_not_match: 'Suas senhas não correspondem. Por favor, tente novamente.',
- invalid_password:
- 'A senha requer um mínimo de {{min}} caracteres e contém uma mistura de letras, números e símbolos.',
- invalid_passcode: 'O código de verificação é inválido',
- invalid_connector_auth: 'A autorização é inválida',
- invalid_connector_request: 'Os dados do conector são inválidos',
- unknown: 'Erro desconhecido. Por favor, tente novamente mais tarde.',
- invalid_session: 'Sessão não encontrada. Volte e faça login novamente.',
- timeout: 'Tempo limite excedido. Por favor, tente novamente mais tarde.',
- },
- demo_app: {
- notification: 'Dica: Crie uma conta primeiro para testar a experiência de login.',
- },
-};
-
-const ptBR: LocalePhrase = Object.freeze({
- translation,
-});
-
-export default ptBR;
diff --git a/packages/phrases-ui/src/locales/pt-br/action.ts b/packages/phrases-ui/src/locales/pt-br/action.ts
new file mode 100644
index 000000000..a26304505
--- /dev/null
+++ b/packages/phrases-ui/src/locales/pt-br/action.ts
@@ -0,0 +1,29 @@
+const action = {
+ sign_in: 'Entrar',
+ continue: 'Continuar',
+ create_account: 'Criar conta',
+ create_account_without_linking: 'Criar conta sem vincular',
+ create: 'Criar',
+ enter_passcode: 'Inserir código de verificação',
+ confirm: 'Confirmar',
+ cancel: 'Cancelar',
+ save_password: 'Salvar senha',
+ bind: 'Link com {{address}}',
+ bind_and_continue: 'Linkar e continuar',
+ back: 'Voltar',
+ nav_back: 'Voltar',
+ agree: 'Aceito',
+ got_it: 'Entendido',
+ sign_in_with: 'Continuar com {{name}}',
+ forgot_password: 'Esqueceu sua senha?',
+ switch_to: 'Trocar para {{method}}',
+ sign_in_via_passcode: 'Fazer login com código de verificação',
+ sign_in_via_password: 'Fazer login com senha',
+ change: 'Alterar {{change}}',
+ link_another_email: 'Vincular outro e-mail',
+ link_another_phone: 'Vincular outro telefone',
+ link_another_email_or_phone: 'Vincular outro e-mail ou telefone',
+ show_password: 'Mostrar senha',
+};
+
+export default action;
diff --git a/packages/phrases-ui/src/locales/pt-br/demo-app.ts b/packages/phrases-ui/src/locales/pt-br/demo-app.ts
new file mode 100644
index 000000000..357b91716
--- /dev/null
+++ b/packages/phrases-ui/src/locales/pt-br/demo-app.ts
@@ -0,0 +1,5 @@
+const demo_app = {
+ notification: 'Dica: Crie uma conta primeiro para testar a experiência de login.',
+};
+
+export default demo_app;
diff --git a/packages/phrases-ui/src/locales/pt-br/description.ts b/packages/phrases-ui/src/locales/pt-br/description.ts
new file mode 100644
index 000000000..22d9298ee
--- /dev/null
+++ b/packages/phrases-ui/src/locales/pt-br/description.ts
@@ -0,0 +1,60 @@
+const description = {
+ email: 'e-mail',
+ phone_number: 'número de telefone',
+ username: 'nome de usuário',
+ reminder: 'Lembrete',
+ not_found: '404 Não Encontrado',
+ agree_with_terms: 'Eu li e concordo com os ',
+ agree_with_terms_modal: 'Para continuar, por favor, concorde com os .',
+ terms_of_use: 'Termos de uso',
+ sign_in: 'Entrar',
+ privacy_policy: 'Política de privacidade',
+ create_account: 'Criar conta',
+ or: 'ou',
+ and: 'e',
+ enter_passcode: 'O código de verificação foi enviado para o seu {{address}} {{target}}',
+ passcode_sent: 'O código de verificação foi reenviado',
+ resend_after_seconds: 'Reenviar depois {{seconds}} segundos',
+ resend_passcode: 'Reenviar código de verificação',
+ create_account_id_exists: 'A conta com {{type}} {{value}} já existe, gostaria de entrar?',
+ link_account_id_exists: 'A conta com {{type}} {{value}} já existe, gostaria de vincular?',
+ sign_in_id_does_not_exist:
+ 'A conta com {{type}} {{value}} não existe, gostaria de criar uma nova conta?',
+ sign_in_id_does_not_exist_alert: 'A conta com {{type}} {{value}} não existe.',
+ create_account_id_exists_alert:
+ 'A conta com {{type}} {{value}} está vinculada a outra conta. Por favor, tente outro {{type}}.',
+ social_identity_exist:
+ 'O {{type}} {{value}} está vinculado a outra conta. Por favor, tente outro {{type}}.',
+ bind_account_title: 'Vincular ou criar conta',
+ social_create_account: 'Você pode criar uma nova conta.',
+ social_link_email: 'É possível vincular outro e-mail',
+ social_link_phone: 'É possível vincular outro telefone',
+ social_link_email_or_phone: 'É possível vincular outro e-mail ou telefone',
+ social_bind_with_existing:
+ 'Encontramos uma conta relacionada registrada e você pode vinculá-la diretamente.',
+ reset_password: 'Esqueceu a senha',
+ reset_password_description:
+ 'Digite o {{types, list(type: disjunction;)}} à sua conta e enviaremos a você o código de verificação para redefinir sua senha.',
+ new_password: 'Nova senha',
+ set_password: 'Configurar senha',
+ password_changed: 'Senha alterada',
+ no_account: 'Ainda não tem conta? ',
+ have_account: 'Já tinha uma conta?',
+ enter_password: 'Digite a senha',
+ enter_password_for: 'Entre com a senha para {{method}} {{value}}',
+ enter_username: 'Definir nome de usuário',
+ enter_username_description:
+ 'O nome de usuário é uma alternativa para fazer login. O nome de usuário deve conter apenas letras, números e sublinhados.',
+ link_email: 'Linkar e-mail',
+ link_phone: 'Linkar telefone',
+ link_email_or_phone: 'Linkar e-mail ou telefone',
+ link_email_description: 'Para maior segurança, vincule seu e-mail à conta.',
+ link_phone_description: 'Para maior segurança, vincule seu telefone à conta.',
+ link_email_or_phone_description: 'Para maior segurança, vincule seu e-mail ou telefone à conta.',
+ continue_with_more_information: 'Para maior segurança, preencha os detalhes da conta abaixo.',
+ create_your_account: 'Crie sua conta',
+ sign_in_to_your_account: 'Faça login na sua conta',
+ no_region_code_found: 'Não foi possível encontrar o código de região do seu telefone.',
+};
+
+export default description;
diff --git a/packages/phrases-ui/src/locales/pt-br/error.ts b/packages/phrases-ui/src/locales/pt-br/error.ts
new file mode 100644
index 000000000..aed99f4c1
--- /dev/null
+++ b/packages/phrases-ui/src/locales/pt-br/error.ts
@@ -0,0 +1,23 @@
+const error = {
+ general_required: '{{types, list(type: disjunction;)}} é obrigatório',
+ general_invalid: 'O {{types, list(type: disjunction;)}} é inválido',
+ username_required: 'Nome de usuário é obrigatório',
+ password_required: 'Senha é obrigatório',
+ username_exists: 'O nome de usuário já existe',
+ username_should_not_start_with_number: 'O nome de usuário não deve começar com um número',
+ username_invalid_charset: 'O nome de usuário deve conter apenas letras, números ou sublinhados.',
+ invalid_email: 'O e-mail é inválido',
+ invalid_phone: 'O número de telefone é inválido',
+ password_min_length: 'A senha requer um mínimo de {{min}} caracteres',
+ passwords_do_not_match: 'Suas senhas não correspondem. Por favor, tente novamente.',
+ invalid_password:
+ 'A senha requer um mínimo de {{min}} caracteres e contém uma mistura de letras, números e símbolos.',
+ invalid_passcode: 'O código de verificação é inválido',
+ invalid_connector_auth: 'A autorização é inválida',
+ invalid_connector_request: 'Os dados do conector são inválidos',
+ unknown: 'Erro desconhecido. Por favor, tente novamente mais tarde.',
+ invalid_session: 'Sessão não encontrada. Volte e faça login novamente.',
+ timeout: 'Tempo limite excedido. Por favor, tente novamente mais tarde.',
+};
+
+export default error;
diff --git a/packages/phrases-ui/src/locales/pt-br/index.ts b/packages/phrases-ui/src/locales/pt-br/index.ts
new file mode 100644
index 000000000..05cc434f9
--- /dev/null
+++ b/packages/phrases-ui/src/locales/pt-br/index.ts
@@ -0,0 +1,21 @@
+import { type LocalePhrase } from '../../types.js';
+
+import action from './action.js';
+import demo_app from './demo-app.js';
+import description from './description.js';
+import error from './error.js';
+import input from './input.js';
+import secondary from './secondary.js';
+
+const ptBR: LocalePhrase = Object.freeze({
+ translation: {
+ input,
+ secondary,
+ action,
+ description,
+ error,
+ demo_app,
+ },
+});
+
+export default ptBR;
diff --git a/packages/phrases-ui/src/locales/pt-br/input.ts b/packages/phrases-ui/src/locales/pt-br/input.ts
new file mode 100644
index 000000000..f09b7d20b
--- /dev/null
+++ b/packages/phrases-ui/src/locales/pt-br/input.ts
@@ -0,0 +1,10 @@
+const input = {
+ username: 'Nome de usuário',
+ password: 'Senha',
+ email: 'E-mail',
+ phone_number: 'Número de telefone',
+ confirm_password: 'Confirme a senha',
+ search_region_code: 'Pesquisar código de região',
+};
+
+export default input;
diff --git a/packages/phrases-ui/src/locales/pt-br/secondary.ts b/packages/phrases-ui/src/locales/pt-br/secondary.ts
new file mode 100644
index 000000000..aad433f42
--- /dev/null
+++ b/packages/phrases-ui/src/locales/pt-br/secondary.ts
@@ -0,0 +1,6 @@
+const secondary = {
+ social_bind_with:
+ 'Já tinha uma conta? Faça login no link {{methods, list(type: disjunction;)}} com sua identidade social.',
+};
+
+export default secondary;
diff --git a/packages/phrases-ui/src/locales/pt-pt.ts b/packages/phrases-ui/src/locales/pt-pt.ts
deleted file mode 100644
index d173c355c..000000000
--- a/packages/phrases-ui/src/locales/pt-pt.ts
+++ /dev/null
@@ -1,133 +0,0 @@
-import type { LocalePhrase } from '../types.js';
-
-const translation = {
- input: {
- username: 'Utilizador',
- password: 'Palavra-passe',
- email: 'Email',
- phone_number: 'Telefone',
- confirm_password: 'Confirmar palavra-passe',
- search_region_code: 'Procurar código de região',
- },
- secondary: {
- social_bind_with:
- 'Já tem uma conta? Faça login para agregar {{methods, list(type: disjunction;)}} com a sua identidade social.',
- },
- action: {
- sign_in: 'Entrar',
- continue: 'Continuar',
- create_account: 'Criar uma conta',
- create_account_without_linking: 'Criar conta sem vinculação',
- create: 'Criar',
- enter_passcode: 'Introduzir código de verificação',
- confirm: 'Confirmar',
- cancel: 'Cancelar',
- save_password: 'Guardar palavra-passe',
- bind: 'Agregar a {{address}}',
- bind_and_continue: 'Ligar e continuar',
- back: 'Voltar',
- nav_back: 'Anterior',
- agree: 'Aceito',
- got_it: 'Entendi',
- sign_in_with: 'Continuar com {{name}}',
- forgot_password: 'Esqueceu-se da palavra-passe?',
- switch_to: 'Mudar para {{method}}',
- sign_in_via_passcode: 'Iniciar sessão com código de verificação',
- sign_in_via_password: 'Iniciar sessão com palavra-passe',
- change: 'Alterar {{method}}',
- link_another_email: 'Vincular outro email',
- link_another_phone: 'Vincular outro telefone',
- link_another_email_or_phone: 'Vincular outro email ou telefone',
- show_password: 'Mostrar palavra-passe',
- },
- description: {
- email: 'email',
- phone_number: 'telefone',
- username: 'utilizador',
- reminder: 'Lembrete',
- not_found: '404 Não encontrado',
- agree_with_terms: 'Eu li e concordo com os ',
- agree_with_terms_modal: 'Para prosseguir, por favor, concorde com o .',
- terms_of_use: 'Termos de uso',
- sign_in: 'Entrar',
- privacy_policy: 'Política de privacidade',
- create_account: 'Criar uma conta',
- or: 'ou',
- and: 'e',
- enter_passcode: 'O código de verificação foi enviado para o seu {{address}} {{target}}',
- passcode_sent: 'O código de verificação foi reenviado',
- resend_after_seconds: 'Reenviar após {{seconds}} segundos',
- resend_passcode: 'Reenviar código de verificação',
- create_account_id_exists: 'A conta com {{type}} {{value}} já existe, gostaria de fazer login?',
- link_account_id_exists: 'A conta com {{type}} {{value}} já existe, gostaria de vinculá-la?',
- sign_in_id_does_not_exist: 'A conta com {{type}} {{value}} não existe, gostaria de criar uma?',
- sign_in_id_does_not_exist_alert: 'A conta com {{type}} {{value}} não existe.',
- create_account_id_exists_alert:
- 'A conta com {{type}} {{value}} está vinculada a outra conta. Por favor, tente outro {{type}}.',
- social_identity_exist:
- 'O {{type}} {{value}} está vinculado a outra conta. Por favor, tente outro {{type}}.',
- bind_account_title: 'Vincular ou criar conta',
- social_create_account: 'Pode criar uma nova conta.',
- social_link_email: 'Pode vincular outro email',
- social_link_phone: 'Pode vincular outro telefone',
- social_link_email_or_phone: 'Pode vincular outro email ou telefone',
- social_bind_with_existing:
- 'Encontramos uma conta relacionada registrada e você pode vinculá-la diretamente.',
- reset_password: 'Esqueceu a senha',
- reset_password_description:
- 'Insira os {{types, list(type: disjunction;)}} associados à sua conta e enviaremos o código de verificação para redefinir sua senha.',
- new_password: 'Nova Senha',
- set_password: 'Definir senha',
- password_changed: 'Senha alterada',
- no_account: 'Ainda não tem conta?',
- have_account: 'Já tem conta?',
- enter_password: 'Digite a senha',
- enter_password_for: 'Faça login com a senha do {{method}} {{value}}',
- enter_username: 'Definir nome de usuário',
- enter_username_description:
- 'O nome de usuário é uma alternativa para o login. O nome de usuário deve conter apenas letras, números e sublinhados.',
- link_email: 'Vincular email',
- link_phone: 'Vincular telefone',
- link_email_or_phone: 'Vincular email ou telefone',
- link_email_description: 'Para maior segurança, vincule o seu email à conta.',
- link_phone_description: 'Para maior segurança, vincule o seu telefone à conta.',
- link_email_or_phone_description:
- 'Para maior segurança, vincule o seu email ou telefone à conta.',
- continue_with_more_information:
- 'Para maior segurança, por favor complete os detalhes da conta abaixo.',
- create_your_account: 'Crie a sua conta',
- sign_in_to_your_account: 'Inicie sessão na sua conta',
- no_region_code_found: 'Não foi possível encontrar o código de região do seu telefone.',
- },
- error: {
- general_required: `{{types, list(type: disjunction;)}} is necessário`,
- general_invalid: `O {{types, list(type: disjunction;)}} é inválido`,
- username_required: 'Utilizador necessário',
- password_required: 'Password necessária',
- username_exists: 'O nome de utilizador já existe',
- username_should_not_start_with_number: 'O nome de utilizador não deve começar com um número',
- username_invalid_charset:
- 'O nome de utilizador deve conter apenas letras, números ou underscores.',
- invalid_email: 'O email é inválido',
- invalid_phone: 'O número de telefone é inválido',
- password_min_length: 'A password requer um mínimo de {{min}} caracteres',
- invalid_password:
- 'A senha requer um mínimo de {{min}} caracteres e contém uma mistura de letras, números e símbolos.',
- passwords_do_not_match: 'As passwords não coincidem',
- invalid_passcode: 'O código de verificação é inválido.',
- invalid_connector_auth: 'A autorização é inválida',
- invalid_connector_request: 'Os dados do conector são inválidos',
- unknown: 'Erro desconhecido. Por favor, tente novamente mais tarde.',
- invalid_session: 'Sessão não encontrada. Volte e faça login novamente.',
- timeout: 'Tempo limite de sessão. Volte e faça login novamente.',
- },
- demo_app: {
- notification: 'Dica: Crie uma conta primeiro para testar a experiência de login.',
- },
-};
-
-const ptPT: LocalePhrase = Object.freeze({
- translation,
-});
-
-export default ptPT;
diff --git a/packages/phrases-ui/src/locales/pt-pt/action.ts b/packages/phrases-ui/src/locales/pt-pt/action.ts
new file mode 100644
index 000000000..a8ecefa07
--- /dev/null
+++ b/packages/phrases-ui/src/locales/pt-pt/action.ts
@@ -0,0 +1,29 @@
+const action = {
+ sign_in: 'Entrar',
+ continue: 'Continuar',
+ create_account: 'Criar uma conta',
+ create_account_without_linking: 'Criar conta sem vinculação',
+ create: 'Criar',
+ enter_passcode: 'Introduzir código de verificação',
+ confirm: 'Confirmar',
+ cancel: 'Cancelar',
+ save_password: 'Guardar palavra-passe',
+ bind: 'Agregar a {{address}}',
+ bind_and_continue: 'Ligar e continuar',
+ back: 'Voltar',
+ nav_back: 'Anterior',
+ agree: 'Aceito',
+ got_it: 'Entendi',
+ sign_in_with: 'Continuar com {{name}}',
+ forgot_password: 'Esqueceu-se da palavra-passe?',
+ switch_to: 'Mudar para {{method}}',
+ sign_in_via_passcode: 'Iniciar sessão com código de verificação',
+ sign_in_via_password: 'Iniciar sessão com palavra-passe',
+ change: 'Alterar {{method}}',
+ link_another_email: 'Vincular outro email',
+ link_another_phone: 'Vincular outro telefone',
+ link_another_email_or_phone: 'Vincular outro email ou telefone',
+ show_password: 'Mostrar palavra-passe',
+};
+
+export default action;
diff --git a/packages/phrases-ui/src/locales/pt-pt/demo-app.ts b/packages/phrases-ui/src/locales/pt-pt/demo-app.ts
new file mode 100644
index 000000000..357b91716
--- /dev/null
+++ b/packages/phrases-ui/src/locales/pt-pt/demo-app.ts
@@ -0,0 +1,5 @@
+const demo_app = {
+ notification: 'Dica: Crie uma conta primeiro para testar a experiência de login.',
+};
+
+export default demo_app;
diff --git a/packages/phrases-ui/src/locales/pt-pt/description.ts b/packages/phrases-ui/src/locales/pt-pt/description.ts
new file mode 100644
index 000000000..b716a8c48
--- /dev/null
+++ b/packages/phrases-ui/src/locales/pt-pt/description.ts
@@ -0,0 +1,60 @@
+const description = {
+ email: 'email',
+ phone_number: 'telefone',
+ username: 'utilizador',
+ reminder: 'Lembrete',
+ not_found: '404 Não encontrado',
+ agree_with_terms: 'Eu li e concordo com os ',
+ agree_with_terms_modal: 'Para prosseguir, por favor, concorde com o .',
+ terms_of_use: 'Termos de uso',
+ sign_in: 'Entrar',
+ privacy_policy: 'Política de privacidade',
+ create_account: 'Criar uma conta',
+ or: 'ou',
+ and: 'e',
+ enter_passcode: 'O código de verificação foi enviado para o seu {{address}} {{target}}',
+ passcode_sent: 'O código de verificação foi reenviado',
+ resend_after_seconds: 'Reenviar após {{seconds}} segundos',
+ resend_passcode: 'Reenviar código de verificação',
+ create_account_id_exists: 'A conta com {{type}} {{value}} já existe, gostaria de fazer login?',
+ link_account_id_exists: 'A conta com {{type}} {{value}} já existe, gostaria de vinculá-la?',
+ sign_in_id_does_not_exist: 'A conta com {{type}} {{value}} não existe, gostaria de criar uma?',
+ sign_in_id_does_not_exist_alert: 'A conta com {{type}} {{value}} não existe.',
+ create_account_id_exists_alert:
+ 'A conta com {{type}} {{value}} está vinculada a outra conta. Por favor, tente outro {{type}}.',
+ social_identity_exist:
+ 'O {{type}} {{value}} está vinculado a outra conta. Por favor, tente outro {{type}}.',
+ bind_account_title: 'Vincular ou criar conta',
+ social_create_account: 'Pode criar uma nova conta.',
+ social_link_email: 'Pode vincular outro email',
+ social_link_phone: 'Pode vincular outro telefone',
+ social_link_email_or_phone: 'Pode vincular outro email ou telefone',
+ social_bind_with_existing:
+ 'Encontramos uma conta relacionada registrada e você pode vinculá-la diretamente.',
+ reset_password: 'Esqueceu a senha',
+ reset_password_description:
+ 'Insira os {{types, list(type: disjunction;)}} associados à sua conta e enviaremos o código de verificação para redefinir sua senha.',
+ new_password: 'Nova Senha',
+ set_password: 'Definir senha',
+ password_changed: 'Senha alterada',
+ no_account: 'Ainda não tem conta?',
+ have_account: 'Já tem conta?',
+ enter_password: 'Digite a senha',
+ enter_password_for: 'Faça login com a senha do {{method}} {{value}}',
+ enter_username: 'Definir nome de usuário',
+ enter_username_description:
+ 'O nome de usuário é uma alternativa para o login. O nome de usuário deve conter apenas letras, números e sublinhados.',
+ link_email: 'Vincular email',
+ link_phone: 'Vincular telefone',
+ link_email_or_phone: 'Vincular email ou telefone',
+ link_email_description: 'Para maior segurança, vincule o seu email à conta.',
+ link_phone_description: 'Para maior segurança, vincule o seu telefone à conta.',
+ link_email_or_phone_description: 'Para maior segurança, vincule o seu email ou telefone à conta.',
+ continue_with_more_information:
+ 'Para maior segurança, por favor complete os detalhes da conta abaixo.',
+ create_your_account: 'Crie a sua conta',
+ sign_in_to_your_account: 'Inicie sessão na sua conta',
+ no_region_code_found: 'Não foi possível encontrar o código de região do seu telefone.',
+};
+
+export default description;
diff --git a/packages/phrases-ui/src/locales/pt-pt/error.ts b/packages/phrases-ui/src/locales/pt-pt/error.ts
new file mode 100644
index 000000000..a14227a21
--- /dev/null
+++ b/packages/phrases-ui/src/locales/pt-pt/error.ts
@@ -0,0 +1,24 @@
+const error = {
+ general_required: '{{types, list(type: disjunction;)}} is necessário',
+ general_invalid: 'O {{types, list(type: disjunction;)}} é inválido',
+ username_required: 'Utilizador necessário',
+ password_required: 'Password necessária',
+ username_exists: 'O nome de utilizador já existe',
+ username_should_not_start_with_number: 'O nome de utilizador não deve começar com um número',
+ username_invalid_charset:
+ 'O nome de utilizador deve conter apenas letras, números ou underscores.',
+ invalid_email: 'O email é inválido',
+ invalid_phone: 'O número de telefone é inválido',
+ password_min_length: 'A password requer um mínimo de {{min}} caracteres',
+ invalid_password:
+ 'A senha requer um mínimo de {{min}} caracteres e contém uma mistura de letras, números e símbolos.',
+ passwords_do_not_match: 'As passwords não coincidem',
+ invalid_passcode: 'O código de verificação é inválido.',
+ invalid_connector_auth: 'A autorização é inválida',
+ invalid_connector_request: 'Os dados do conector são inválidos',
+ unknown: 'Erro desconhecido. Por favor, tente novamente mais tarde.',
+ invalid_session: 'Sessão não encontrada. Volte e faça login novamente.',
+ timeout: 'Tempo limite de sessão. Volte e faça login novamente.',
+};
+
+export default error;
diff --git a/packages/phrases-ui/src/locales/pt-pt/index.ts b/packages/phrases-ui/src/locales/pt-pt/index.ts
new file mode 100644
index 000000000..32ba202f4
--- /dev/null
+++ b/packages/phrases-ui/src/locales/pt-pt/index.ts
@@ -0,0 +1,21 @@
+import { type LocalePhrase } from '../../types.js';
+
+import action from './action.js';
+import demo_app from './demo-app.js';
+import description from './description.js';
+import error from './error.js';
+import input from './input.js';
+import secondary from './secondary.js';
+
+const ptPT: LocalePhrase = Object.freeze({
+ translation: {
+ input,
+ secondary,
+ action,
+ description,
+ error,
+ demo_app,
+ },
+});
+
+export default ptPT;
diff --git a/packages/phrases-ui/src/locales/pt-pt/input.ts b/packages/phrases-ui/src/locales/pt-pt/input.ts
new file mode 100644
index 000000000..11089ac8e
--- /dev/null
+++ b/packages/phrases-ui/src/locales/pt-pt/input.ts
@@ -0,0 +1,10 @@
+const input = {
+ username: 'Utilizador',
+ password: 'Palavra-passe',
+ email: 'Email',
+ phone_number: 'Telefone',
+ confirm_password: 'Confirmar palavra-passe',
+ search_region_code: 'Procurar código de região',
+};
+
+export default input;
diff --git a/packages/phrases-ui/src/locales/pt-pt/secondary.ts b/packages/phrases-ui/src/locales/pt-pt/secondary.ts
new file mode 100644
index 000000000..cc09ff846
--- /dev/null
+++ b/packages/phrases-ui/src/locales/pt-pt/secondary.ts
@@ -0,0 +1,6 @@
+const secondary = {
+ social_bind_with:
+ 'Já tem uma conta? Faça login para agregar {{methods, list(type: disjunction;)}} com a sua identidade social.',
+};
+
+export default secondary;
diff --git a/packages/phrases-ui/src/locales/ru.ts b/packages/phrases-ui/src/locales/ru.ts
deleted file mode 100644
index 95c5665a3..000000000
--- a/packages/phrases-ui/src/locales/ru.ts
+++ /dev/null
@@ -1,136 +0,0 @@
-import type { LocalePhrase } from '../types.js';
-
-const translation = {
- input: {
- username: 'Имя пользователя',
- password: 'Пароль',
- email: 'Электронная почта',
- phone_number: 'Номер телефона',
- confirm_password: 'Подтверждение пароля',
- search_region_code: 'Поиск кода региона',
- },
- secondary: {
- social_bind_with:
- 'Уже есть аккаунт? Войдите, чтобы привязать {{methods, list(type: disjunction;)}}.',
- },
- action: {
- sign_in: 'Войти',
- continue: 'Продолжить',
- create_account: 'Создать аккаунт',
- create_account_without_linking: 'Создать аккаунт без связывания',
- create: 'Создать',
- enter_passcode: 'Введите код подтверждения',
- confirm: 'Подтвердить',
- cancel: 'Отменить',
- save_password: 'Сохраните пароль',
- bind: 'Привязать к {{address}}',
- bind_and_continue: 'Привязать и продолжить',
- back: 'Назад',
- nav_back: 'Назад',
- agree: 'Согласен',
- got_it: 'Понял',
- sign_in_with: 'Войти через {{name}}',
- forgot_password: 'Забыли пароль?',
- switch_to: 'Изменить на {{method}}',
- sign_in_via_passcode: 'Войти с кодом подтверждения',
- sign_in_via_password: 'Войти с паролем',
- change: 'Изменить {{method}}',
- link_another_email: 'Привязать другую почту',
- link_another_phone: 'Привязать другой номер',
- link_another_email_or_phone: 'Привязать другую почту или номер',
- show_password: 'Показать пароль',
- },
- description: {
- email: 'адрес электронной почты',
- phone_number: 'номер телефона',
- username: 'имя пользователя',
- reminder: 'Напоминание',
- not_found: '404 Не найдено',
- agree_with_terms: 'Я прочитал и согласен с ',
- agree_with_terms_modal: 'Чтобы продолжить, пожалуйста, согласитесь с ',
- terms_of_use: 'Условиями использования',
- sign_in: 'Войти',
- privacy_policy: 'Политикой конфиденциальности',
- create_account: 'Создать аккаунт',
- or: 'или',
- and: 'и',
- enter_passcode: 'Код подтверждения был отправлен на {{address}}',
- passcode_sent: 'Код подтверждения был отправлен повторно',
- resend_after_seconds: 'Отправить повторно через {{seconds}} сек.',
- resend_passcode: 'Отправить повторно',
- create_account_id_exists: 'Учетная запись для {{value}} уже существует, хотите войти?',
- link_account_id_exists: 'Учетная запись для {{value}} уже существует, хотите привязать?',
- sign_in_id_does_not_exist:
- 'Учетная запись для {{value}} не существует, хотите зарегистрироваться?',
- sign_in_id_does_not_exist_alert: 'Учетная запись для {{value}} не существует.',
- create_account_id_exists_alert:
- 'Аккаунт с {{type}} {{value}} связан с другим аккаунтом. Пожалуйста, попробуйте другой {{type}}.',
- social_identity_exist:
- '{{type}} {{value}} связан с другим аккаунтом. Пожалуйста, попробуйте другой {{type}}.',
- bind_account_title: 'Привязать или создать аккаунт',
- social_create_account: 'Вы можете создать новую учетную запись.',
- social_link_email: 'Вы можете привязать другой адрес электронной почты',
- social_link_phone: 'Вы можете привязать другой номер телефона',
- social_link_email_or_phone: 'Вы можете привязать другой адрес электронной почты или телефон',
- social_bind_with_existing:
- 'Мы находим зарегистрированную связанную учетную запись, и вы можете связать ее напрямую.',
- reset_password: 'Забыли пароль',
- reset_password_description:
- 'Введите {{types, list(type: disjunction;)}} от вашей учетной записи, и мы вышлем вам код для восстановления пароля.',
- new_password: 'Новый пароль',
- set_password: 'Задать пароль',
- password_changed: 'Пароль изменен',
- no_account: 'Еще не зарегистрированы? ',
- have_account: 'Уже есть аккаунт?',
- enter_password: 'Введите пароль',
- enter_password_for: 'Введите пароль для {{value}}',
- enter_username: 'Установить имя пользователя',
- enter_username_description:
- 'Имя пользователя является альтернативой для входа в систему. Имя пользователя должно содержать только буквы, цифры и символы подчеркивания.',
- link_email: 'Привязать почту',
- link_phone: 'Привязать номер телефона',
- link_email_or_phone: 'Привязать почту или номер телефона',
- link_email_description:
- 'Для дополнительной безопасности, пожалуйста, привяжите свою электронную почту к учетной записи.',
- link_phone_description:
- 'Для дополнительной безопасности, пожалуйста, привяжите свой номер телефона к учетной записи.',
- link_email_or_phone_description:
- 'Для дополнительной безопасности, пожалуйста, привяжите свою электронную почту или номер телефона к учетной записи.',
- continue_with_more_information:
- 'Для дополнительной безопасности, пожалуйста, заполните приведенные ниже данные учетной записи.',
- create_your_account: 'Создайте свой аккаунт',
- sign_in_to_your_account: 'Войди в свой аккаунт',
- no_region_code_found: 'Не удалось определить код региона',
- },
- error: {
- general_required: `Введите {{types, list(type: disjunction;)}}`,
- general_invalid: `Проверьте {{types, list(type: disjunction;)}}`,
- username_required: 'Введите имя пользователя',
- password_required: 'Введите пароль',
- username_exists: 'Имя пользователя занято',
- username_should_not_start_with_number: 'Имя пользователя не должно начинаться с цифры',
- username_invalid_charset:
- 'Имя пользователя должно содержать только буквы, цифры или символы подчеркивания',
- invalid_email: 'Электронная почта указана неправильно',
- invalid_phone: 'Номер телефона указан неправильно',
- password_min_length: 'Пароль должен быть минимум {{min}} символов',
- passwords_do_not_match: 'Пароли не совпадают. Пожалуйста, попробуйте еще раз.',
- invalid_password:
- 'Пароль должен содержать минимум {{min}} символов, включая буквы, цифры и символы.',
- invalid_passcode: 'Неправильный код подтверждения',
- invalid_connector_auth: 'Авторизация недействительна',
- invalid_connector_request: 'Данные коннектора недействительны.',
- unknown: 'Неизвестная ошибка. Пожалуйста, повторите попытку позднее.',
- invalid_session: 'Сессия не найдена. Пожалуйста, войдите снова.',
- timeout: 'Время ожидания истекло. Пожалуйста, повторите попытку позднее.',
- },
- demo_app: {
- notification: 'Совет: Создайте аккаунт сначала, чтобы протестировать процесс входа.',
- },
-};
-
-const ru: LocalePhrase = Object.freeze({
- translation,
-});
-
-export default ru;
diff --git a/packages/phrases-ui/src/locales/ru/action.ts b/packages/phrases-ui/src/locales/ru/action.ts
new file mode 100644
index 000000000..25094ad2c
--- /dev/null
+++ b/packages/phrases-ui/src/locales/ru/action.ts
@@ -0,0 +1,29 @@
+const action = {
+ sign_in: 'Войти',
+ continue: 'Продолжить',
+ create_account: 'Создать аккаунт',
+ create_account_without_linking: 'Создать аккаунт без связывания',
+ create: 'Создать',
+ enter_passcode: 'Введите код подтверждения',
+ confirm: 'Подтвердить',
+ cancel: 'Отменить',
+ save_password: 'Сохраните пароль',
+ bind: 'Привязать к {{address}}',
+ bind_and_continue: 'Привязать и продолжить',
+ back: 'Назад',
+ nav_back: 'Назад',
+ agree: 'Согласен',
+ got_it: 'Понял',
+ sign_in_with: 'Войти через {{name}}',
+ forgot_password: 'Забыли пароль?',
+ switch_to: 'Изменить на {{method}}',
+ sign_in_via_passcode: 'Войти с кодом подтверждения',
+ sign_in_via_password: 'Войти с паролем',
+ change: 'Изменить {{method}}',
+ link_another_email: 'Привязать другую почту',
+ link_another_phone: 'Привязать другой номер',
+ link_another_email_or_phone: 'Привязать другую почту или номер',
+ show_password: 'Показать пароль',
+};
+
+export default action;
diff --git a/packages/phrases-ui/src/locales/ru/demo-app.ts b/packages/phrases-ui/src/locales/ru/demo-app.ts
new file mode 100644
index 000000000..4ab37d87d
--- /dev/null
+++ b/packages/phrases-ui/src/locales/ru/demo-app.ts
@@ -0,0 +1,5 @@
+const demo_app = {
+ notification: 'Совет: Создайте аккаунт сначала, чтобы протестировать процесс входа.',
+};
+
+export default demo_app;
diff --git a/packages/phrases-ui/src/locales/ru/description.ts b/packages/phrases-ui/src/locales/ru/description.ts
new file mode 100644
index 000000000..689e68b13
--- /dev/null
+++ b/packages/phrases-ui/src/locales/ru/description.ts
@@ -0,0 +1,64 @@
+const description = {
+ email: 'адрес электронной почты',
+ phone_number: 'номер телефона',
+ username: 'имя пользователя',
+ reminder: 'Напоминание',
+ not_found: '404 Не найдено',
+ agree_with_terms: 'Я прочитал и согласен с ',
+ agree_with_terms_modal: 'Чтобы продолжить, пожалуйста, согласитесь с ',
+ terms_of_use: 'Условиями использования',
+ sign_in: 'Войти',
+ privacy_policy: 'Политикой конфиденциальности',
+ create_account: 'Создать аккаунт',
+ or: 'или',
+ and: 'и',
+ enter_passcode: 'Код подтверждения был отправлен на {{address}}',
+ passcode_sent: 'Код подтверждения был отправлен повторно',
+ resend_after_seconds: 'Отправить повторно через {{seconds}} сек.',
+ resend_passcode: 'Отправить повторно',
+ create_account_id_exists: 'Учетная запись для {{value}} уже существует, хотите войти?',
+ link_account_id_exists: 'Учетная запись для {{value}} уже существует, хотите привязать?',
+ sign_in_id_does_not_exist:
+ 'Учетная запись для {{value}} не существует, хотите зарегистрироваться?',
+ sign_in_id_does_not_exist_alert: 'Учетная запись для {{value}} не существует.',
+ create_account_id_exists_alert:
+ 'Аккаунт с {{type}} {{value}} связан с другим аккаунтом. Пожалуйста, попробуйте другой {{type}}.',
+ social_identity_exist:
+ '{{type}} {{value}} связан с другим аккаунтом. Пожалуйста, попробуйте другой {{type}}.',
+ bind_account_title: 'Привязать или создать аккаунт',
+ social_create_account: 'Вы можете создать новую учетную запись.',
+ social_link_email: 'Вы можете привязать другой адрес электронной почты',
+ social_link_phone: 'Вы можете привязать другой номер телефона',
+ social_link_email_or_phone: 'Вы можете привязать другой адрес электронной почты или телефон',
+ social_bind_with_existing:
+ 'Мы находим зарегистрированную связанную учетную запись, и вы можете связать ее напрямую.',
+ reset_password: 'Забыли пароль',
+ reset_password_description:
+ 'Введите {{types, list(type: disjunction;)}} от вашей учетной записи, и мы вышлем вам код для восстановления пароля.',
+ new_password: 'Новый пароль',
+ set_password: 'Задать пароль',
+ password_changed: 'Пароль изменен',
+ no_account: 'Еще не зарегистрированы? ',
+ have_account: 'Уже есть аккаунт?',
+ enter_password: 'Введите пароль',
+ enter_password_for: 'Введите пароль для {{value}}',
+ enter_username: 'Установить имя пользователя',
+ enter_username_description:
+ 'Имя пользователя является альтернативой для входа в систему. Имя пользователя должно содержать только буквы, цифры и символы подчеркивания.',
+ link_email: 'Привязать почту',
+ link_phone: 'Привязать номер телефона',
+ link_email_or_phone: 'Привязать почту или номер телефона',
+ link_email_description:
+ 'Для дополнительной безопасности, пожалуйста, привяжите свою электронную почту к учетной записи.',
+ link_phone_description:
+ 'Для дополнительной безопасности, пожалуйста, привяжите свой номер телефона к учетной записи.',
+ link_email_or_phone_description:
+ 'Для дополнительной безопасности, пожалуйста, привяжите свою электронную почту или номер телефона к учетной записи.',
+ continue_with_more_information:
+ 'Для дополнительной безопасности, пожалуйста, заполните приведенные ниже данные учетной записи.',
+ create_your_account: 'Создайте свой аккаунт',
+ sign_in_to_your_account: 'Войди в свой аккаунт',
+ no_region_code_found: 'Не удалось определить код региона',
+};
+
+export default description;
diff --git a/packages/phrases-ui/src/locales/ru/error.ts b/packages/phrases-ui/src/locales/ru/error.ts
new file mode 100644
index 000000000..39b337a77
--- /dev/null
+++ b/packages/phrases-ui/src/locales/ru/error.ts
@@ -0,0 +1,24 @@
+const error = {
+ general_required: 'Введите {{types, list(type: disjunction;)}}',
+ general_invalid: 'Проверьте {{types, list(type: disjunction;)}}',
+ username_required: 'Введите имя пользователя',
+ password_required: 'Введите пароль',
+ username_exists: 'Имя пользователя занято',
+ username_should_not_start_with_number: 'Имя пользователя не должно начинаться с цифры',
+ username_invalid_charset:
+ 'Имя пользователя должно содержать только буквы, цифры или символы подчеркивания',
+ invalid_email: 'Электронная почта указана неправильно',
+ invalid_phone: 'Номер телефона указан неправильно',
+ password_min_length: 'Пароль должен быть минимум {{min}} символов',
+ passwords_do_not_match: 'Пароли не совпадают. Пожалуйста, попробуйте еще раз.',
+ invalid_password:
+ 'Пароль должен содержать минимум {{min}} символов, включая буквы, цифры и символы.',
+ invalid_passcode: 'Неправильный код подтверждения',
+ invalid_connector_auth: 'Авторизация недействительна',
+ invalid_connector_request: 'Данные коннектора недействительны.',
+ unknown: 'Неизвестная ошибка. Пожалуйста, повторите попытку позднее.',
+ invalid_session: 'Сессия не найдена. Пожалуйста, войдите снова.',
+ timeout: 'Время ожидания истекло. Пожалуйста, повторите попытку позднее.',
+};
+
+export default error;
diff --git a/packages/phrases-ui/src/locales/ru/index.ts b/packages/phrases-ui/src/locales/ru/index.ts
new file mode 100644
index 000000000..6709e4487
--- /dev/null
+++ b/packages/phrases-ui/src/locales/ru/index.ts
@@ -0,0 +1,21 @@
+import { type LocalePhrase } from '../../types.js';
+
+import action from './action.js';
+import demo_app from './demo-app.js';
+import description from './description.js';
+import error from './error.js';
+import input from './input.js';
+import secondary from './secondary.js';
+
+const ru: LocalePhrase = Object.freeze({
+ translation: {
+ input,
+ secondary,
+ action,
+ description,
+ error,
+ demo_app,
+ },
+});
+
+export default ru;
diff --git a/packages/phrases-ui/src/locales/ru/input.ts b/packages/phrases-ui/src/locales/ru/input.ts
new file mode 100644
index 000000000..0324c6974
--- /dev/null
+++ b/packages/phrases-ui/src/locales/ru/input.ts
@@ -0,0 +1,10 @@
+const input = {
+ username: 'Имя пользователя',
+ password: 'Пароль',
+ email: 'Электронная почта',
+ phone_number: 'Номер телефона',
+ confirm_password: 'Подтверждение пароля',
+ search_region_code: 'Поиск кода региона',
+};
+
+export default input;
diff --git a/packages/phrases-ui/src/locales/ru/secondary.ts b/packages/phrases-ui/src/locales/ru/secondary.ts
new file mode 100644
index 000000000..1456462ba
--- /dev/null
+++ b/packages/phrases-ui/src/locales/ru/secondary.ts
@@ -0,0 +1,6 @@
+const secondary = {
+ social_bind_with:
+ 'Уже есть аккаунт? Войдите, чтобы привязать {{methods, list(type: disjunction;)}}.',
+};
+
+export default secondary;
diff --git a/packages/phrases-ui/src/locales/tr-tr.ts b/packages/phrases-ui/src/locales/tr-tr.ts
deleted file mode 100644
index ed8d5e0c2..000000000
--- a/packages/phrases-ui/src/locales/tr-tr.ts
+++ /dev/null
@@ -1,132 +0,0 @@
-import type { LocalePhrase } from '../types.js';
-
-const translation = {
- input: {
- username: 'Kullanıcı Adı',
- password: 'Şifre',
- email: 'E-posta Adresi',
- phone_number: 'Telefon Numarası',
- confirm_password: 'Şifreyi Doğrula',
- search_region_code: 'Bölge kodunu ara',
- },
- secondary: {
- social_bind_with:
- 'Hesabınız zaten var mı? {{methods, list(type: disjunction;)}} bağlantısına tıklayarak giriş yapabilirsiniz',
- },
- action: {
- sign_in: 'Giriş Yap',
- continue: 'İlerle',
- create_account: 'Hesap Oluştur',
- create_account_without_linking: 'Bağlamadan hesap oluştur',
- create: 'Oluştur',
- enter_passcode: 'Doğrulama kodunu girin',
- confirm: 'Onayla',
- cancel: 'İptal Et',
- save_password: 'Şifreyi kaydet',
- bind: '{{address}} ile birleştir',
- bind_and_continue: 'Bağla ve devam et',
- back: 'Geri Dön',
- nav_back: 'Geri',
- agree: 'Kabul Et',
- got_it: 'Anladım',
- sign_in_with: '{{name}} ile ilerle',
- forgot_password: 'Şifremi Unuttum?',
- switch_to: '{{method}} yöntemine geç',
- sign_in_via_passcode: 'Doğrulama koduyla oturum açın',
- sign_in_via_password: 'şifre ile giriş yap',
- change: '{{method}} değiştir',
- link_another_email: 'Başka bir e-postayı bağla',
- link_another_phone: 'Başka bir telefon bağla',
- link_another_email_or_phone: 'Başka bir e-posta veya telefon bağlayın',
- show_password: 'Şifreyi göster',
- },
- description: {
- email: 'e-posta adresi',
- phone_number: 'telefon numarası',
- username: 'kullanıcı Adı',
- reminder: 'Hatırlatıcı',
- not_found: '404 Bulunamadı',
- agree_with_terms: 'Okudum ve anladım',
- agree_with_terms_modal: "Devam etmek için lütfen 'i kabul edin.",
- terms_of_use: 'Kullanım Koşulları',
- sign_in: 'Giriş Yap',
- privacy_policy: 'Gizlilik Politikası',
- create_account: 'Hesap Oluştur',
- or: 'veya',
- and: 've',
- enter_passcode: 'Doğrulama kodu {{address}} {{target}} adresinize gönderildi',
- passcode_sent: 'Doğrulama kodu yeniden gönderildi',
- resend_after_seconds: '{{seconds}} saniye sonra tekrar gönder',
- resend_passcode: 'Doğrulama kodunu tekrar gönder',
- create_account_id_exists: '{{type}} {{value}} ile hesap mevcut, giriş yapmak ister misiniz?',
- link_account_id_exists: '{{type}} {{value}} olan hesap zaten var, bağlamak ister misiniz?',
- sign_in_id_does_not_exist:
- '{{type}} {{value}} ile hesap mevcut değil, yeni bir hesap oluşturmak ister misiniz?',
- sign_in_id_does_not_exist_alert: '{{type}} {{value}} olan hesap mevcut değil.',
- create_account_id_exists_alert:
- '{{type}} {{value}} olan hesap başka bir hesaba bağlı. Lütfen başka bir {{type}} deneyin.',
- social_identity_exist:
- '{{type}} {{value}} başka bir hesaba bağlı. Lütfen başka bir {{type}} deneyin.',
- bind_account_title: 'Bağla veya hesap oluştur',
- social_create_account: 'Yeni bir hesap oluşturabilirsiniz.',
- social_link_email: 'Başka bir e-posta bağlayabilirsiniz',
- social_link_phone: 'Başka bir telefon bağlayabilirsiniz',
- social_link_email_or_phone: 'Başka bir e-posta veya telefon bağlayabilirsiniz',
- social_bind_with_existing: 'Kayıtlı ilgili bir hesap bulduk ve onu doğrudan bağlayabilirsiniz.',
- reset_password: 'Parolanızı mı unuttunuz',
- reset_password_description:
- 'Hesabınızla ilişkili {{types, list(type: disjunction;)}} girin, şifrenizi sıfırlamanız için size doğrulama kodunu göndereceğiz.',
- new_password: 'Yeni Şifre',
- set_password: 'Şifreyi belirle',
- password_changed: 'Şifre değişti',
- no_account: 'Henüz hesap yok mu?',
- have_account: 'Zaten bir hesabınız var mıydı?',
- enter_password: 'Parolanı Gir',
- enter_password_for: '{{method}} {{value}} şifresiyle oturum açın',
- enter_username: 'Kullanıcı adını ayarla',
- enter_username_description:
- 'Kullanıcı adı, oturum açmak için bir alternatiftir. Kullanıcı adı yalnızca harf, sayı ve alt çizgi içermelidir.',
- link_email: 'E-postayı bağla',
- link_phone: 'Telefonu bağla',
- link_email_or_phone: 'E-posta veya telefon bağlantısı',
- link_email_description: 'Daha fazla güvenlik için lütfen e-postanızı hesapla ilişkilendirin.',
- link_phone_description: 'Daha fazla güvenlik için lütfen telefonunuzu hesaba bağlayın.',
- link_email_or_phone_description:
- 'Daha fazla güvenlik için lütfen e-postanızı veya telefonunuzu hesaba bağlayın.',
- continue_with_more_information:
- 'Daha fazla güvenlik için lütfen aşağıdaki hesap ayrıntılarını tamamlayın.',
- create_your_account: 'Hesabını oluştur',
- sign_in_to_your_account: 'Hesabına giriş yap',
- no_region_code_found: 'Bölge kodu bulunamadı',
- },
- error: {
- general_required: `{{types, list(type: disjunction;)}} gerekli`,
- general_invalid: `{{types, list(type: disjunction;)}} geçersiz`,
- username_required: 'Kullanıcı adı gerekli.',
- password_required: 'Şifre gerekli.',
- username_exists: 'Kullanıcı adı mevcut.',
- username_should_not_start_with_number: 'Kullanıcı adı sayı ile başlayamaz.',
- username_invalid_charset: 'Kullanıcı adı yalnızca harf,sayı veya alt çizgi içermeli.',
- invalid_email: 'E-posta adresi geçersiz',
- invalid_phone: 'Telefon numarası geçersiz',
- password_min_length: 'Şifre en az {{min}} karakterden oluşmalıdır',
- passwords_do_not_match: 'Şifreler eşleşmiyor',
- invalid_password:
- 'Şifre en az {{min}} karakter gerektirir ve harf, sayı ve sembol karışımı içerir.',
- invalid_passcode: 'Doğrulama kodu geçersiz',
- invalid_connector_auth: 'Yetki geçersiz',
- invalid_connector_request: 'Bağlayıcı veri geçersiz',
- unknown: 'Bilinmeyen hata. Lütfen daha sonra tekrar deneyiniz.',
- invalid_session: 'Oturum bulunamadı. Lütfen geri dönüp tekrar giriş yapınız.',
- timeout: 'Oturum zaman aşımına uğradı. Lütfen geri dönüp tekrar giriş yapınız.',
- },
- demo_app: {
- notification: 'İpucu: Oturum açma deneyimini test etmek için önce bir hesap oluşturun.',
- },
-};
-
-const trTR: LocalePhrase = Object.freeze({
- translation,
-});
-
-export default trTR;
diff --git a/packages/phrases-ui/src/locales/tr-tr/action.ts b/packages/phrases-ui/src/locales/tr-tr/action.ts
new file mode 100644
index 000000000..ad11ffb12
--- /dev/null
+++ b/packages/phrases-ui/src/locales/tr-tr/action.ts
@@ -0,0 +1,29 @@
+const action = {
+ sign_in: 'Giriş Yap',
+ continue: 'İlerle',
+ create_account: 'Hesap Oluştur',
+ create_account_without_linking: 'Bağlamadan hesap oluştur',
+ create: 'Oluştur',
+ enter_passcode: 'Doğrulama kodunu girin',
+ confirm: 'Onayla',
+ cancel: 'İptal Et',
+ save_password: 'Şifreyi kaydet',
+ bind: '{{address}} ile birleştir',
+ bind_and_continue: 'Bağla ve devam et',
+ back: 'Geri Dön',
+ nav_back: 'Geri',
+ agree: 'Kabul Et',
+ got_it: 'Anladım',
+ sign_in_with: '{{name}} ile ilerle',
+ forgot_password: 'Şifremi Unuttum?',
+ switch_to: '{{method}} yöntemine geç',
+ sign_in_via_passcode: 'Doğrulama koduyla oturum açın',
+ sign_in_via_password: 'şifre ile giriş yap',
+ change: '{{method}} değiştir',
+ link_another_email: 'Başka bir e-postayı bağla',
+ link_another_phone: 'Başka bir telefon bağla',
+ link_another_email_or_phone: 'Başka bir e-posta veya telefon bağlayın',
+ show_password: 'Şifreyi göster',
+};
+
+export default action;
diff --git a/packages/phrases-ui/src/locales/tr-tr/demo-app.ts b/packages/phrases-ui/src/locales/tr-tr/demo-app.ts
new file mode 100644
index 000000000..387ded37b
--- /dev/null
+++ b/packages/phrases-ui/src/locales/tr-tr/demo-app.ts
@@ -0,0 +1,5 @@
+const demo_app = {
+ notification: 'İpucu: Oturum açma deneyimini test etmek için önce bir hesap oluşturun.',
+};
+
+export default demo_app;
diff --git a/packages/phrases-ui/src/locales/tr-tr/description.ts b/packages/phrases-ui/src/locales/tr-tr/description.ts
new file mode 100644
index 000000000..315b313d7
--- /dev/null
+++ b/packages/phrases-ui/src/locales/tr-tr/description.ts
@@ -0,0 +1,61 @@
+const description = {
+ email: 'e-posta adresi',
+ phone_number: 'telefon numarası',
+ username: 'kullanıcı Adı',
+ reminder: 'Hatırlatıcı',
+ not_found: '404 Bulunamadı',
+ agree_with_terms: 'Okudum ve anladım',
+ agree_with_terms_modal: "Devam etmek için lütfen 'i kabul edin.",
+ terms_of_use: 'Kullanım Koşulları',
+ sign_in: 'Giriş Yap',
+ privacy_policy: 'Gizlilik Politikası',
+ create_account: 'Hesap Oluştur',
+ or: 'veya',
+ and: 've',
+ enter_passcode: 'Doğrulama kodu {{address}} {{target}} adresinize gönderildi',
+ passcode_sent: 'Doğrulama kodu yeniden gönderildi',
+ resend_after_seconds: '{{seconds}} saniye sonra tekrar gönder',
+ resend_passcode: 'Doğrulama kodunu tekrar gönder',
+ create_account_id_exists: '{{type}} {{value}} ile hesap mevcut, giriş yapmak ister misiniz?',
+ link_account_id_exists: '{{type}} {{value}} olan hesap zaten var, bağlamak ister misiniz?',
+ sign_in_id_does_not_exist:
+ '{{type}} {{value}} ile hesap mevcut değil, yeni bir hesap oluşturmak ister misiniz?',
+ sign_in_id_does_not_exist_alert: '{{type}} {{value}} olan hesap mevcut değil.',
+ create_account_id_exists_alert:
+ '{{type}} {{value}} olan hesap başka bir hesaba bağlı. Lütfen başka bir {{type}} deneyin.',
+ social_identity_exist:
+ '{{type}} {{value}} başka bir hesaba bağlı. Lütfen başka bir {{type}} deneyin.',
+ bind_account_title: 'Bağla veya hesap oluştur',
+ social_create_account: 'Yeni bir hesap oluşturabilirsiniz.',
+ social_link_email: 'Başka bir e-posta bağlayabilirsiniz',
+ social_link_phone: 'Başka bir telefon bağlayabilirsiniz',
+ social_link_email_or_phone: 'Başka bir e-posta veya telefon bağlayabilirsiniz',
+ social_bind_with_existing: 'Kayıtlı ilgili bir hesap bulduk ve onu doğrudan bağlayabilirsiniz.',
+ reset_password: 'Parolanızı mı unuttunuz',
+ reset_password_description:
+ 'Hesabınızla ilişkili {{types, list(type: disjunction;)}} girin, şifrenizi sıfırlamanız için size doğrulama kodunu göndereceğiz.',
+ new_password: 'Yeni Şifre',
+ set_password: 'Şifreyi belirle',
+ password_changed: 'Şifre değişti',
+ no_account: 'Henüz hesap yok mu?',
+ have_account: 'Zaten bir hesabınız var mıydı?',
+ enter_password: 'Parolanı Gir',
+ enter_password_for: '{{method}} {{value}} şifresiyle oturum açın',
+ enter_username: 'Kullanıcı adını ayarla',
+ enter_username_description:
+ 'Kullanıcı adı, oturum açmak için bir alternatiftir. Kullanıcı adı yalnızca harf, sayı ve alt çizgi içermelidir.',
+ link_email: 'E-postayı bağla',
+ link_phone: 'Telefonu bağla',
+ link_email_or_phone: 'E-posta veya telefon bağlantısı',
+ link_email_description: 'Daha fazla güvenlik için lütfen e-postanızı hesapla ilişkilendirin.',
+ link_phone_description: 'Daha fazla güvenlik için lütfen telefonunuzu hesaba bağlayın.',
+ link_email_or_phone_description:
+ 'Daha fazla güvenlik için lütfen e-postanızı veya telefonunuzu hesaba bağlayın.',
+ continue_with_more_information:
+ 'Daha fazla güvenlik için lütfen aşağıdaki hesap ayrıntılarını tamamlayın.',
+ create_your_account: 'Hesabını oluştur',
+ sign_in_to_your_account: 'Hesabına giriş yap',
+ no_region_code_found: 'Bölge kodu bulunamadı',
+};
+
+export default description;
diff --git a/packages/phrases-ui/src/locales/tr-tr/error.ts b/packages/phrases-ui/src/locales/tr-tr/error.ts
new file mode 100644
index 000000000..5105930eb
--- /dev/null
+++ b/packages/phrases-ui/src/locales/tr-tr/error.ts
@@ -0,0 +1,23 @@
+const error = {
+ general_required: '{{types, list(type: disjunction;)}} gerekli',
+ general_invalid: '{{types, list(type: disjunction;)}} geçersiz',
+ username_required: 'Kullanıcı adı gerekli.',
+ password_required: 'Şifre gerekli.',
+ username_exists: 'Kullanıcı adı mevcut.',
+ username_should_not_start_with_number: 'Kullanıcı adı sayı ile başlayamaz.',
+ username_invalid_charset: 'Kullanıcı adı yalnızca harf,sayı veya alt çizgi içermeli.',
+ invalid_email: 'E-posta adresi geçersiz',
+ invalid_phone: 'Telefon numarası geçersiz',
+ password_min_length: 'Şifre en az {{min}} karakterden oluşmalıdır',
+ passwords_do_not_match: 'Şifreler eşleşmiyor',
+ invalid_password:
+ 'Şifre en az {{min}} karakter gerektirir ve harf, sayı ve sembol karışımı içerir.',
+ invalid_passcode: 'Doğrulama kodu geçersiz',
+ invalid_connector_auth: 'Yetki geçersiz',
+ invalid_connector_request: 'Bağlayıcı veri geçersiz',
+ unknown: 'Bilinmeyen hata. Lütfen daha sonra tekrar deneyiniz.',
+ invalid_session: 'Oturum bulunamadı. Lütfen geri dönüp tekrar giriş yapınız.',
+ timeout: 'Oturum zaman aşımına uğradı. Lütfen geri dönüp tekrar giriş yapınız.',
+};
+
+export default error;
diff --git a/packages/phrases-ui/src/locales/tr-tr/index.ts b/packages/phrases-ui/src/locales/tr-tr/index.ts
new file mode 100644
index 000000000..e4eace505
--- /dev/null
+++ b/packages/phrases-ui/src/locales/tr-tr/index.ts
@@ -0,0 +1,21 @@
+import { type LocalePhrase } from '../../types.js';
+
+import action from './action.js';
+import demo_app from './demo-app.js';
+import description from './description.js';
+import error from './error.js';
+import input from './input.js';
+import secondary from './secondary.js';
+
+const trTR: LocalePhrase = Object.freeze({
+ translation: {
+ input,
+ secondary,
+ action,
+ description,
+ error,
+ demo_app,
+ },
+});
+
+export default trTR;
diff --git a/packages/phrases-ui/src/locales/tr-tr/input.ts b/packages/phrases-ui/src/locales/tr-tr/input.ts
new file mode 100644
index 000000000..c3010d6fa
--- /dev/null
+++ b/packages/phrases-ui/src/locales/tr-tr/input.ts
@@ -0,0 +1,10 @@
+const input = {
+ username: 'Kullanıcı Adı',
+ password: 'Şifre',
+ email: 'E-posta Adresi',
+ phone_number: 'Telefon Numarası',
+ confirm_password: 'Şifreyi Doğrula',
+ search_region_code: 'Bölge kodunu ara',
+};
+
+export default input;
diff --git a/packages/phrases-ui/src/locales/tr-tr/secondary.ts b/packages/phrases-ui/src/locales/tr-tr/secondary.ts
new file mode 100644
index 000000000..ded85a418
--- /dev/null
+++ b/packages/phrases-ui/src/locales/tr-tr/secondary.ts
@@ -0,0 +1,6 @@
+const secondary = {
+ social_bind_with:
+ 'Hesabınız zaten var mı? {{methods, list(type: disjunction;)}} bağlantısına tıklayarak giriş yapabilirsiniz',
+};
+
+export default secondary;
diff --git a/packages/phrases-ui/src/locales/zh-cn.ts b/packages/phrases-ui/src/locales/zh-cn.ts
deleted file mode 100644
index c4fd27bd9..000000000
--- a/packages/phrases-ui/src/locales/zh-cn.ts
+++ /dev/null
@@ -1,124 +0,0 @@
-import type { LocalePhrase } from '../types.js';
-
-const translation = {
- input: {
- username: '用户名',
- password: '密码',
- email: '邮箱',
- phone_number: '手机号',
- confirm_password: '确认密码',
- search_region_code: '搜索区域码',
- },
- secondary: {
- social_bind_with:
- '绑定到已有账户? 使用 {{methods, list(type: disjunction;), zhOrSpaces}} 登录并绑定。',
- },
- action: {
- sign_in: '登录',
- continue: '继续',
- create_account: '注册',
- create_account_without_linking: '注册新的账号',
- create: '注册',
- enter_passcode: '输入验证码',
- cancel: '取消',
- confirm: '确认',
- save_password: '保存密码',
- bind: '绑定到 {{address}}',
- bind_and_continue: '绑定并继续',
- back: '返回',
- nav_back: '返回',
- agree: '同意',
- got_it: '知道了',
- sign_in_with: '通过 {{name}} 继续',
- forgot_password: '忘记密码?',
- switch_to: '切换到{{method}}',
- sign_in_via_passcode: '用验证码登录',
- sign_in_via_password: '密码登录',
- change: '更改{{method}}',
- link_another_email: '绑定其它邮箱',
- link_another_phone: '绑定其它手机',
- link_another_email_or_phone: '绑定邮箱或手机号',
- show_password: '显示密码',
- },
- description: {
- email: '邮箱',
- phone_number: '手机号',
- username: '用户名',
- reminder: '提示',
- not_found: '404 页面不存在',
- agree_with_terms: '我已阅读并同意 ',
- agree_with_terms_modal: '请先同意 以继续',
- terms_of_use: '使用条款',
- sign_in: '登录',
- privacy_policy: '隐私政策',
- create_account: '创建帐号',
- or: '或',
- and: '和',
- enter_passcode: '验证码已经发送至你的{{ address }} {{target}}',
- passcode_sent: '验证码已经发送',
- resend_after_seconds: '在 {{ seconds }} 秒后重发',
- resend_passcode: '重发验证码',
- create_account_id_exists: '{{type}}为 {{value}} 的帐号已存在,你要登录吗?',
- link_account_id_exists: ' {{type}}为 {{value}} 的账号已注册,你要绑定至这个账号吗?',
- sign_in_id_does_not_exist: '{{type}}为 {{value}} 的帐号不存在,你要创建一个新帐号吗?',
- sign_in_id_does_not_exist_alert: '{{type}}为 {{value}} 的帐号不存在。',
- create_account_id_exists_alert: '{{type}} {{value}} 已绑定其他账号。请尝试其他{{type}}。',
- social_identity_exist: ' {{type}} {{value}} 已绑定其他账号。请尝试其他{{type}}',
- bind_account_title: '绑定或注册帐号',
- social_create_account: '你可以注册一个新的账号。',
- social_link_email: '你可以绑定其他邮箱',
- social_link_phone: '你可以绑定其他手机号',
- social_link_email_or_phone: '你可以绑定其他邮箱或手机号',
- social_bind_with_existing: '找到了一个已注册的账号,你可以直接绑定。',
- reset_password: '忘记密码',
- reset_password_description: '输入{{types, list(type: disjunction;)}},获取验证码以重设密码。',
- new_password: '新密码',
- set_password: '设置密码',
- password_changed: '已重置密码!',
- no_account: '还没有账号?',
- have_account: ' 已有账号?',
- enter_password: '输入密码',
- enter_password_for: '输入{{method}} {{value}} 对应的密码进行登录',
- enter_username: '设置用户名',
- enter_username_description: '用户名可以用来进行登录。用户名仅可以包含字母、数字和下划线。',
- link_email: '绑定邮箱',
- link_phone: '绑定手机',
- link_email_or_phone: '绑定邮箱或手机号',
- link_email_description: '绑定邮箱以保障你的账号安全',
- link_phone_description: '绑定手机号以保障你的账号安全',
- link_email_or_phone_description: '绑定邮箱或手机号以保障你的账号安全',
- continue_with_more_information: '为保障你的账号安全,需要你补充以下信息。',
- create_your_account: '注册你的账号',
- sign_in_to_your_account: '登录你的账号',
- no_region_code_found: '没有找到区域码',
- },
- error: {
- general_required: `{{types, list(type: disjunction;)}}必填`,
- general_invalid: `无效的{{types, list(type: disjunction;)}}`,
- username_required: '用户名必填',
- password_required: '密码必填',
- username_exists: '用户名已存在',
- username_should_not_start_with_number: '用户名不能以数字开头',
- username_invalid_charset: '用户名只能包含英文字母、数字或下划线。',
- invalid_email: '无效的邮箱',
- invalid_phone: '无效的手机号',
- password_min_length: '密码最少需要 {{min}} 个字符',
- passwords_do_not_match: '两次输入的密码不一致,请重试。',
- invalid_password: '密码至少需要 {{min}} 个字符,并包含字母、数字和符号的组合。',
- invalid_passcode: '无效的验证码',
- invalid_connector_auth: '登录失败',
- invalid_connector_request: '无效的登录请求',
- unknown: '未知错误,请稍后重试。',
- invalid_session: '未找到会话,请返回并重新登录。',
- timeout: '请求超时,请稍后重试。',
- },
- demo_app: {
- notification: '提示:先注册一个账号,再测试登录体验。',
- },
-};
-
-const zhCN: LocalePhrase = Object.freeze({
- translation,
-});
-
-export default zhCN;
diff --git a/packages/phrases-ui/src/locales/zh-cn/action.ts b/packages/phrases-ui/src/locales/zh-cn/action.ts
new file mode 100644
index 000000000..4a248bac7
--- /dev/null
+++ b/packages/phrases-ui/src/locales/zh-cn/action.ts
@@ -0,0 +1,29 @@
+const action = {
+ sign_in: '登录',
+ continue: '继续',
+ create_account: '注册',
+ create_account_without_linking: '注册新的账号',
+ create: '注册',
+ enter_passcode: '输入验证码',
+ cancel: '取消',
+ confirm: '确认',
+ save_password: '保存密码',
+ bind: '绑定到 {{address}}',
+ bind_and_continue: '绑定并继续',
+ back: '返回',
+ nav_back: '返回',
+ agree: '同意',
+ got_it: '知道了',
+ sign_in_with: '通过 {{name}} 继续',
+ forgot_password: '忘记密码?',
+ switch_to: '切换到{{method}}',
+ sign_in_via_passcode: '用验证码登录',
+ sign_in_via_password: '密码登录',
+ change: '更改{{method}}',
+ link_another_email: '绑定其它邮箱',
+ link_another_phone: '绑定其它手机',
+ link_another_email_or_phone: '绑定邮箱或手机号',
+ show_password: '显示密码',
+};
+
+export default action;
diff --git a/packages/phrases-ui/src/locales/zh-cn/demo-app.ts b/packages/phrases-ui/src/locales/zh-cn/demo-app.ts
new file mode 100644
index 000000000..4eb2346ef
--- /dev/null
+++ b/packages/phrases-ui/src/locales/zh-cn/demo-app.ts
@@ -0,0 +1,5 @@
+const demo_app = {
+ notification: '提示:先注册一个账号,再测试登录体验。',
+};
+
+export default demo_app;
diff --git a/packages/phrases-ui/src/locales/zh-cn/description.ts b/packages/phrases-ui/src/locales/zh-cn/description.ts
new file mode 100644
index 000000000..f898ea36d
--- /dev/null
+++ b/packages/phrases-ui/src/locales/zh-cn/description.ts
@@ -0,0 +1,54 @@
+const description = {
+ email: '邮箱',
+ phone_number: '手机号',
+ username: '用户名',
+ reminder: '提示',
+ not_found: '404 页面不存在',
+ agree_with_terms: '我已阅读并同意 ',
+ agree_with_terms_modal: '请先同意 以继续',
+ terms_of_use: '使用条款',
+ sign_in: '登录',
+ privacy_policy: '隐私政策',
+ create_account: '创建帐号',
+ or: '或',
+ and: '和',
+ enter_passcode: '验证码已经发送至你的{{ address }} {{target}}',
+ passcode_sent: '验证码已经发送',
+ resend_after_seconds: '在 {{ seconds }} 秒后重发',
+ resend_passcode: '重发验证码',
+ create_account_id_exists: '{{type}}为 {{value}} 的帐号已存在,你要登录吗?',
+ link_account_id_exists: ' {{type}}为 {{value}} 的账号已注册,你要绑定至这个账号吗?',
+ sign_in_id_does_not_exist: '{{type}}为 {{value}} 的帐号不存在,你要创建一个新帐号吗?',
+ sign_in_id_does_not_exist_alert: '{{type}}为 {{value}} 的帐号不存在。',
+ create_account_id_exists_alert: '{{type}} {{value}} 已绑定其他账号。请尝试其他{{type}}。',
+ social_identity_exist: ' {{type}} {{value}} 已绑定其他账号。请尝试其他{{type}}',
+ bind_account_title: '绑定或注册帐号',
+ social_create_account: '你可以注册一个新的账号。',
+ social_link_email: '你可以绑定其他邮箱',
+ social_link_phone: '你可以绑定其他手机号',
+ social_link_email_or_phone: '你可以绑定其他邮箱或手机号',
+ social_bind_with_existing: '找到了一个已注册的账号,你可以直接绑定。',
+ reset_password: '忘记密码',
+ reset_password_description: '输入{{types, list(type: disjunction;)}},获取验证码以重设密码。',
+ new_password: '新密码',
+ set_password: '设置密码',
+ password_changed: '已重置密码!',
+ no_account: '还没有账号?',
+ have_account: ' 已有账号?',
+ enter_password: '输入密码',
+ enter_password_for: '输入{{method}} {{value}} 对应的密码进行登录',
+ enter_username: '设置用户名',
+ enter_username_description: '用户名可以用来进行登录。用户名仅可以包含字母、数字和下划线。',
+ link_email: '绑定邮箱',
+ link_phone: '绑定手机',
+ link_email_or_phone: '绑定邮箱或手机号',
+ link_email_description: '绑定邮箱以保障你的账号安全',
+ link_phone_description: '绑定手机号以保障你的账号安全',
+ link_email_or_phone_description: '绑定邮箱或手机号以保障你的账号安全',
+ continue_with_more_information: '为保障你的账号安全,需要你补充以下信息。',
+ create_your_account: '注册你的账号',
+ sign_in_to_your_account: '登录你的账号',
+ no_region_code_found: '没有找到区域码',
+};
+
+export default description;
diff --git a/packages/phrases-ui/src/locales/zh-cn/error.ts b/packages/phrases-ui/src/locales/zh-cn/error.ts
new file mode 100644
index 000000000..041c3e14f
--- /dev/null
+++ b/packages/phrases-ui/src/locales/zh-cn/error.ts
@@ -0,0 +1,22 @@
+const error = {
+ general_required: '{{types, list(type: disjunction;)}}必填',
+ general_invalid: '无效的{{types, list(type: disjunction;)}}',
+ username_required: '用户名必填',
+ password_required: '密码必填',
+ username_exists: '用户名已存在',
+ username_should_not_start_with_number: '用户名不能以数字开头',
+ username_invalid_charset: '用户名只能包含英文字母、数字或下划线。',
+ invalid_email: '无效的邮箱',
+ invalid_phone: '无效的手机号',
+ password_min_length: '密码最少需要 {{min}} 个字符',
+ passwords_do_not_match: '两次输入的密码不一致,请重试。',
+ invalid_password: '密码至少需要 {{min}} 个字符,并包含字母、数字和符号的组合。',
+ invalid_passcode: '无效的验证码',
+ invalid_connector_auth: '登录失败',
+ invalid_connector_request: '无效的登录请求',
+ unknown: '未知错误,请稍后重试。',
+ invalid_session: '未找到会话,请返回并重新登录。',
+ timeout: '请求超时,请稍后重试。',
+};
+
+export default error;
diff --git a/packages/phrases-ui/src/locales/zh-cn/index.ts b/packages/phrases-ui/src/locales/zh-cn/index.ts
new file mode 100644
index 000000000..9194441b7
--- /dev/null
+++ b/packages/phrases-ui/src/locales/zh-cn/index.ts
@@ -0,0 +1,21 @@
+import { type LocalePhrase } from '../../types.js';
+
+import action from './action.js';
+import demo_app from './demo-app.js';
+import description from './description.js';
+import error from './error.js';
+import input from './input.js';
+import secondary from './secondary.js';
+
+const zhCN: LocalePhrase = Object.freeze({
+ translation: {
+ input,
+ secondary,
+ action,
+ description,
+ error,
+ demo_app,
+ },
+});
+
+export default zhCN;
diff --git a/packages/phrases-ui/src/locales/zh-cn/input.ts b/packages/phrases-ui/src/locales/zh-cn/input.ts
new file mode 100644
index 000000000..f9a702e2a
--- /dev/null
+++ b/packages/phrases-ui/src/locales/zh-cn/input.ts
@@ -0,0 +1,10 @@
+const input = {
+ username: '用户名',
+ password: '密码',
+ email: '邮箱',
+ phone_number: '手机号',
+ confirm_password: '确认密码',
+ search_region_code: '搜索区域码',
+};
+
+export default input;
diff --git a/packages/phrases-ui/src/locales/zh-cn/secondary.ts b/packages/phrases-ui/src/locales/zh-cn/secondary.ts
new file mode 100644
index 000000000..914461c94
--- /dev/null
+++ b/packages/phrases-ui/src/locales/zh-cn/secondary.ts
@@ -0,0 +1,6 @@
+const secondary = {
+ social_bind_with:
+ '绑定到已有账户? 使用 {{methods, list(type: disjunction;), zhOrSpaces}} 登录并绑定。',
+};
+
+export default secondary;
diff --git a/packages/phrases/src/locales/de/errors.ts b/packages/phrases/src/locales/de/errors.ts
deleted file mode 100644
index c9d9addd3..000000000
--- a/packages/phrases/src/locales/de/errors.ts
+++ /dev/null
@@ -1,221 +0,0 @@
-const errors = {
- request: {
- invalid_input: 'Eingabe ist ungültig. {{details}}',
- general: 'Es ist ein Fehler bei der Anfrage aufgetreten.',
- },
- auth: {
- authorization_header_missing: 'Autorisierungs-Header fehlt.',
- authorization_token_type_not_supported: 'Autorisierungs-Typ wird nicht unterstützt.',
- unauthorized: 'Unautorisiert. Bitte überprüfe deine Zugangsdaten.',
- forbidden: 'Verboten. Bitte überprüfe deine Rollen und Berechtigungen.',
- expected_role_not_found:
- 'Erwartete Rolle nicht gefunden. Bitte überprüfe deine Rollen und Berechtigungen.',
- jwt_sub_missing: '`sub` fehlt in JWT.',
- require_re_authentication:
- 'Zur Durchführung einer geschützten Aktion ist eine erneute Authentifizierung erforderlich.',
- },
- guard: {
- invalid_input: 'Die Anfrage {{type}} ist ungültig.',
- invalid_pagination: 'Die Paginierung der Anfrage ist ungültig.',
- can_not_get_tenant_id: 'Die tenant_id konnte nicht aus der Anfrage abgerufen werden.',
- file_size_exceeded: 'Dateigröße überschritten.',
- mime_type_not_allowed: 'Der MIME-Typ ist nicht erlaubt.',
- },
- oidc: {
- aborted: 'Der Endnutzer hat die Interaktion abgebrochen.',
- invalid_scope: 'Scope {{scope}} wird nicht unterstützt.',
- invalid_scope_plural: 'Scopes {{scopes}} werden nicht unterstützt.',
- invalid_token: 'Ungültiger Token übermittelt.',
- invalid_client_metadata: 'Ungültige Client Metadaten übermittelt.',
- insufficient_scope: 'Access token fehlen angefragte scope {{scopes}}.',
- invalid_request: 'Anfrage ist ungültig.',
- invalid_grant: 'Grant request ist ungültig.',
- invalid_redirect_uri:
- '`redirect_uri` stimmt nicht mit den registrierten `redirect_uris` des Clients überein.',
- access_denied: 'Zugang verweigert.',
- invalid_target: 'Ungültiger resource indicator.',
- unsupported_grant_type: 'Nicht unterstützter `grant_type` angefragt.',
- unsupported_response_mode: 'Nicht unterstützter `response_mode` angefragt.',
- unsupported_response_type: 'Nicht unterstützter `response_type` angefragt.',
- provider_error: 'OIDC interner Fehler: {{message}}.',
- },
- user: {
- username_already_in_use: 'Dieser Benutzername wird bereits verwendet.',
- email_already_in_use: 'Diese E-Mail-Adresse ist mit einem vorhandenen Konto verknüpft.',
- phone_already_in_use: 'Diese Telefonnummer ist mit einem vorhandenen Konto verknüpft.',
- invalid_email: 'Ungültige E-Mail.',
- invalid_phone: 'Ungültige Telefonnummer.',
- email_not_exist: 'Die E-Mail wurde noch nicht registriert.',
- phone_not_exist: 'Die Telefonnummer wurde noch nicht registriert.',
- identity_not_exist: 'Die Identität wurde noch nicht registriert.',
- identity_already_in_use: 'Die Identität wurde registriert.',
- social_account_exists_in_profile: 'Sie haben diesen Social-Media-Account bereits verknüpft.',
- cannot_delete_self: 'Du kannst dich nicht selbst löschen.',
- sign_up_method_not_enabled: 'Diese Anmeldeart ist nicht aktiviert.',
- sign_in_method_not_enabled: 'Diese Anmeldemethode ist nicht aktiviert.',
- same_password: 'Das neue Passwort muss sich vom alten unterscheiden.',
- password_required_in_profile:
- 'Sie müssen ein Passwort festlegen, bevor Sie sich anmelden können.',
- new_password_required_in_profile: 'Sie müssen ein neues Passwort festlegen.',
- password_exists_in_profile: 'Das Passwort ist bereits in Ihrem Profil vorhanden.',
- username_required_in_profile:
- 'Sie müssen einen Benutzernamen festlegen, bevor Sie sich anmelden können.',
- username_exists_in_profile: 'Der Benutzername ist bereits in Ihrem Profil vorhanden.',
- email_required_in_profile:
- 'Sie müssen eine E-Mail-Adresse hinzufügen, bevor Sie sich anmelden können.',
- email_exists_in_profile: 'Ihr Profil ist bereits mit einer E-Mail-Adresse verknüpft.',
- phone_required_in_profile:
- 'Sie müssen eine Telefonnummer hinzufügen, bevor Sie sich anmelden können.',
- phone_exists_in_profile: 'Ihr Profil ist bereits mit einer Telefonnummer verknüpft.',
- email_or_phone_required_in_profile:
- 'Sie müssen eine E-Mail-Adresse oder eine Telefonnummer hinzufügen, bevor Sie sich anmelden können.',
- suspended: 'Dieses Konto wurde gesperrt.',
- user_not_exist: 'Der Benutzer mit {{ identifier }} existiert nicht.',
- missing_profile:
- 'Sie müssen zusätzliche Informationen angeben, bevor Sie sich anmelden können.',
- role_exists: 'Die Rollen-ID {{roleId}} wurde diesem Benutzer bereits hinzugefügt.',
- },
- password: {
- unsupported_encryption_method: 'Die Verschlüsselungsmethode {{name}} wird nicht unterstützt.',
- pepper_not_found: 'Password pepper not found. Please check your core envs.',
- },
- session: {
- not_found: 'Sitzung nicht gefunden. Bitte melde dich erneut an.',
- invalid_credentials: 'Ungültige Zugangsdaten. Überprüfe deine Eingaben.',
- invalid_sign_in_method: 'Aktuelle Anmeldemethode ist ungültig.',
- invalid_connector_id: 'Connector mit ID {{connectorId}} wurde nicht gefunden.',
- insufficient_info: 'Unzureichende Informationen für die Anmeldung.',
- connector_id_mismatch: 'Connector ID stimmt nicht mit Sitzung überein.',
- connector_session_not_found: 'Connector Sitzung nicht gefunden. Bitte melde dich erneut an.',
- verification_session_not_found:
- 'Die Verifizierung war nicht erfolgreich. Starte die Verifizierung neu und versuche es erneut.',
- verification_expired:
- 'Die Verbindung wurde unterbrochen. Verifiziere erneut, um die Sicherheit deines Kontos zu gewährleisten.',
- unauthorized: 'Bitte melde dich erst an.',
- unsupported_prompt_name: 'Nicht unterstützter prompt Name.',
- forgot_password_not_enabled: 'Forgot password is not enabled.',
- verification_failed:
- 'Die Verifizierung war nicht erfolgreich. Starte die Verifizierung neu und versuche es erneut.',
- connector_validation_session_not_found:
- 'Die Connector-Sitzung zur Token-Validierung wurde nicht gefunden.',
- identifier_not_found:
- 'Benutzerkennung nicht gefunden. Bitte gehen Sie zurück und melden Sie sich erneut an.',
- interaction_not_found:
- 'Interaktionssitzung nicht gefunden. Bitte gehen Sie zurück und starten Sie die Sitzung erneut.',
- },
- connector: {
- // UNTRANSLATED
- general: 'Fehler aufgetreten im Connector: {{errorDescription}}',
- not_found: 'Kein verfügbarer Connector für Typ {{type}} gefunden.',
- not_enabled: 'Der Connector ist nicht aktiviert.',
- invalid_metadata: 'Die Metadaten des Connectors sind ungültig.',
- invalid_config_guard: 'Die Konfiguration des Connectors ist ungültig.',
- unexpected_type: 'Der Typ des Connectors ist unerwartet.',
- invalid_request_parameters: 'Die Anfrage enthält falsche Eingabeparameter.',
- insufficient_request_parameters:
- 'Die Anfrage enthält möglicherweise nicht alle erforderlichen Eingabeparameter.',
- invalid_config: 'Die Konfiguration des Connectors ist ungültig.',
- invalid_response: 'Die Antwort des Connectors ist ungültig.',
- template_not_found:
- 'Die richtige Vorlage in der Connector-Konfiguration konnte nicht gefunden werden.',
- not_implemented: '{{method}}: wurde noch nicht implementiert.',
- social_invalid_access_token: 'Der Access Token des Connectors ist ungültig.',
- invalid_auth_code: 'Der Authentifizierungscode des Connectors ist ungültig.',
- social_invalid_id_token: 'Der ID-Token des Connectors ist ungültig.',
- authorization_failed: 'Der Autorisierungsprozess des Benutzers war erfolglos.',
- social_auth_code_invalid:
- 'Es konnte kein Access Token abgerufen werden. Bitte prüfen Sie den Autorisierungscode.',
- more_than_one_sms: 'Die Anzahl der SMS-Connectors ist größer als 1.',
- more_than_one_email: 'Die Anzahl der E-Mail-Connectors ist größer als 1.',
- more_than_one_connector_factory:
- 'Mehrere Connector-Fabriken gefunden (mit ID {{connectorIds}}). Sie können unnötige Fabriken deinstallieren.',
- db_connector_type_mismatch:
- 'Es gibt einen Connector in der Datenbank, der nicht dem Typ entspricht.',
- not_found_with_connector_id:
- 'Connector mit der angegebenen Standard-Connector-ID konnte nicht gefunden werden.',
- multiple_instances_not_supported:
- 'Es können keine mehreren Instanzen mit dem ausgewählten Standard-Connector erstellt werden.',
- invalid_type_for_syncing_profile:
- 'Sie können nur Benutzerprofile mit sozialen Connectors synchronisieren.',
- can_not_modify_target: "Der 'target'-Connector kann nicht geändert werden.",
- should_specify_target: "Sie sollten den 'target' angeben.",
- multiple_target_with_same_platform:
- 'Sie können keine mehreren sozialen Connectors haben, die das gleiche Ziel und die gleiche Plattform haben.',
- cannot_overwrite_metadata_for_non_standard_connector:
- "Die 'Metadaten' dieses Connectors können nicht überschrieben werden.",
- },
- verification_code: {
- phone_email_empty: 'Sowohl Telefon als auch E-Mail sind leer.',
- not_found: 'Bestätigungscode nicht gefunden. Bitte senden Sie zuerst den Bestätigungscode.',
- phone_mismatch:
- 'Telefonnummer stimmt nicht überein. Bitte fordern Sie einen neuen Bestätigungscode an.',
- email_mismatch:
- 'E-Mail stimmt nicht überein. Bitte fordern Sie einen neuen Bestätigungscode an.',
- code_mismatch: 'Ungültiger Bestätigungscode.',
- expired: 'Bestätigungscode ist abgelaufen. Bitte fordern Sie einen neuen Bestätigungscode an.',
- exceed_max_try:
- 'Die Begrenzung für die Anzahl der Bestätigungscode-Wiederholungen wurde überschritten. Bitte fordern Sie einen neuen Bestätigungscode an.',
- },
- sign_in_experiences: {
- empty_content_url_of_terms_of_use:
- 'Leere "Nutzungsbedingungen" URL. Bitte füge die URL hinzu, wenn "Nutzungsbedingungen" aktiviert ist.',
- empty_social_connectors:
- 'Leere Social Connectors. Bitte füge aktivierte Social Connectoren hinzu, wenn Social Anmeldung aktiviert ist.',
- enabled_connector_not_found: 'Aktivierter {{type}} Connector nicht gefunden.',
- not_one_and_only_one_primary_sign_in_method:
- 'Es darf nur eine primäre Anmeldemethode geben. Bitte überprüfe deine Eingabe.',
- username_requires_password:
- 'Muss ein Passwort für den Benutzernamen zur Registrierung aktivieren.',
- passwordless_requires_verify:
- 'Muss die Verifizierung für die Registrierung per E-Mail/Telefon aktivieren.',
- miss_sign_up_identifier_in_sign_in:
- 'Anmeldeverfahren müssen den Registrierungs-Identifier enthalten.',
- password_sign_in_must_be_enabled:
- 'Die Passwort-Anmeldung muss aktiviert sein, wenn bei der Registrierung ein Passwort festgelegt wird.',
- code_sign_in_must_be_enabled:
- 'Die Anmeldung mit Bestätigungscode muss aktiviert sein, wenn bei der Registrierung kein Passwort festgelegt wird.',
-
- unsupported_default_language: 'Die Sprache - {{language}} wird momentan nicht unterstützt.',
- at_least_one_authentication_factor:
- 'Sie müssen mindestens einen Authentifizierungsfaktor auswählen.',
- },
- localization: {
- cannot_delete_default_language:
- '{{languageTag}} ist die Standard-Sprache und kann nicht gelöscht werden.',
- invalid_translation_structure: 'Ungültige Übersetzungsstruktur. Bitte überprüfe deine Eingabe.',
- },
- swagger: {
- invalid_zod_type: 'Ungültiger Zod Typ. Überprüfe deine route guard Konfiguration.',
- not_supported_zod_type_for_params:
- 'Nicht unterstützter Zod Typ für diese Parameter. Überprüfe deine route guard Konfiguration.',
- },
- entity: {
- create_failed: 'Fehler beim erstellen von {{name}}.',
- not_exists: '{{name}} existiert nicht.',
- not_exists_with_id: '{{name}} mit ID `{{id}}` existiert nicht.',
- not_found: 'Die Ressource wurde nicht gefunden.',
- },
- log: {
- invalid_type: 'Der Log Typ ist ungültig.',
- },
- role: {
- name_in_use: 'Dieser Rollenname {{name}} wird bereits verwendet.',
- scope_exists: 'Die Scope-ID {{scopeId}} wurde bereits zu dieser Rolle hinzugefügt.',
- user_exists: 'Die Benutzer-ID {{userId}} wurde bereits zu dieser Rolle hinzugefügt.',
- default_role_missing:
- 'Einige der Standardrollennamen sind in der Datenbank nicht vorhanden. Bitte stellen Sie sicher, dass Sie zuerst Rollen erstellen.',
- internal_role_violation:
- 'Sie versuchen möglicherweise, eine interne Rolle zu aktualisieren oder zu löschen, was von Logto verboten ist. Wenn Sie eine neue Rolle erstellen, versuchen Sie es mit einem anderen Namen, der nicht mit "#internal:" beginnt.',
- },
- scope: {
- name_exists: 'Der Scope-Name {{name}} ist bereits in Verwendung',
- name_with_space: 'Der Name des Scopes darf keine Leerzeichen enthalten.',
- },
- storage: {
- not_configured: 'Der Storage-Anbieter ist nicht konfiguriert.',
- missing_parameter: 'Fehlender Parameter {{parameter}} für den Storage-Anbieter.',
- upload_error: 'Das Hochladen der Datei zum Storage-Anbieter ist fehlgeschlagen.',
- },
-};
-
-export default errors;
diff --git a/packages/phrases/src/locales/de/errors/auth.ts b/packages/phrases/src/locales/de/errors/auth.ts
new file mode 100644
index 000000000..7023f24ca
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/auth.ts
@@ -0,0 +1,13 @@
+const auth = {
+ authorization_header_missing: 'Autorisierungs-Header fehlt.',
+ authorization_token_type_not_supported: 'Autorisierungs-Typ wird nicht unterstützt.',
+ unauthorized: 'Unautorisiert. Bitte überprüfe deine Zugangsdaten.',
+ forbidden: 'Verboten. Bitte überprüfe deine Rollen und Berechtigungen.',
+ expected_role_not_found:
+ 'Erwartete Rolle nicht gefunden. Bitte überprüfe deine Rollen und Berechtigungen.',
+ jwt_sub_missing: '`sub` fehlt in JWT.',
+ require_re_authentication:
+ 'Zur Durchführung einer geschützten Aktion ist eine erneute Authentifizierung erforderlich.',
+};
+
+export default auth;
diff --git a/packages/phrases/src/locales/de/errors/connector.ts b/packages/phrases/src/locales/de/errors/connector.ts
new file mode 100644
index 000000000..478d9b6a0
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/connector.ts
@@ -0,0 +1,42 @@
+const connector = {
+ general: 'Fehler aufgetreten im Connector: {{errorDescription}}',
+ not_found: 'Kein verfügbarer Connector für Typ {{type}} gefunden.',
+ not_enabled: 'Der Connector ist nicht aktiviert.',
+ invalid_metadata: 'Die Metadaten des Connectors sind ungültig.',
+ invalid_config_guard: 'Die Konfiguration des Connectors ist ungültig.',
+ unexpected_type: 'Der Typ des Connectors ist unerwartet.',
+ invalid_request_parameters: 'Die Anfrage enthält falsche Eingabeparameter.',
+ insufficient_request_parameters:
+ 'Die Anfrage enthält möglicherweise nicht alle erforderlichen Eingabeparameter.',
+ invalid_config: 'Die Konfiguration des Connectors ist ungültig.',
+ invalid_response: 'Die Antwort des Connectors ist ungültig.',
+ template_not_found:
+ 'Die richtige Vorlage in der Connector-Konfiguration konnte nicht gefunden werden.',
+ not_implemented: '{{method}}: wurde noch nicht implementiert.',
+ social_invalid_access_token: 'Der Access Token des Connectors ist ungültig.',
+ invalid_auth_code: 'Der Authentifizierungscode des Connectors ist ungültig.',
+ social_invalid_id_token: 'Der ID-Token des Connectors ist ungültig.',
+ authorization_failed: 'Der Autorisierungsprozess des Benutzers war erfolglos.',
+ social_auth_code_invalid:
+ 'Es konnte kein Access Token abgerufen werden. Bitte prüfen Sie den Autorisierungscode.',
+ more_than_one_sms: 'Die Anzahl der SMS-Connectors ist größer als 1.',
+ more_than_one_email: 'Die Anzahl der E-Mail-Connectors ist größer als 1.',
+ more_than_one_connector_factory:
+ 'Mehrere Connector-Fabriken gefunden (mit ID {{connectorIds}}). Sie können unnötige Fabriken deinstallieren.',
+ db_connector_type_mismatch:
+ 'Es gibt einen Connector in der Datenbank, der nicht dem Typ entspricht.',
+ not_found_with_connector_id:
+ 'Connector mit der angegebenen Standard-Connector-ID konnte nicht gefunden werden.',
+ multiple_instances_not_supported:
+ 'Es können keine mehreren Instanzen mit dem ausgewählten Standard-Connector erstellt werden.',
+ invalid_type_for_syncing_profile:
+ 'Sie können nur Benutzerprofile mit sozialen Connectors synchronisieren.',
+ can_not_modify_target: "Der 'target'-Connector kann nicht geändert werden.",
+ should_specify_target: "Sie sollten den 'target' angeben.",
+ multiple_target_with_same_platform:
+ 'Sie können keine mehreren sozialen Connectors haben, die das gleiche Ziel und die gleiche Plattform haben.',
+ cannot_overwrite_metadata_for_non_standard_connector:
+ "Die 'Metadaten' dieses Connectors können nicht überschrieben werden.",
+};
+
+export default connector;
diff --git a/packages/phrases/src/locales/de/errors/entity.ts b/packages/phrases/src/locales/de/errors/entity.ts
new file mode 100644
index 000000000..109ab7512
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/entity.ts
@@ -0,0 +1,8 @@
+const entity = {
+ create_failed: 'Fehler beim erstellen von {{name}}.',
+ not_exists: '{{name}} existiert nicht.',
+ not_exists_with_id: '{{name}} mit ID `{{id}}` existiert nicht.',
+ not_found: 'Die Ressource wurde nicht gefunden.',
+};
+
+export default entity;
diff --git a/packages/phrases/src/locales/de/errors/guard.ts b/packages/phrases/src/locales/de/errors/guard.ts
new file mode 100644
index 000000000..4d0f4aea2
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/guard.ts
@@ -0,0 +1,9 @@
+const guard = {
+ invalid_input: 'Die Anfrage {{type}} ist ungültig.',
+ invalid_pagination: 'Die Paginierung der Anfrage ist ungültig.',
+ can_not_get_tenant_id: 'Die tenant_id konnte nicht aus der Anfrage abgerufen werden.',
+ file_size_exceeded: 'Dateigröße überschritten.',
+ mime_type_not_allowed: 'Der MIME-Typ ist nicht erlaubt.',
+};
+
+export default guard;
diff --git a/packages/phrases/src/locales/de/errors/index.ts b/packages/phrases/src/locales/de/errors/index.ts
new file mode 100644
index 000000000..c3f5e05ec
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/index.ts
@@ -0,0 +1,39 @@
+import auth from './auth.js';
+import connector from './connector.js';
+import entity from './entity.js';
+import guard from './guard.js';
+import localization from './localization.js';
+import log from './log.js';
+import oidc from './oidc.js';
+import password from './password.js';
+import request from './request.js';
+import role from './role.js';
+import scope from './scope.js';
+import session from './session.js';
+import sign_in_experiences from './sign-in-experiences.js';
+import storage from './storage.js';
+import swagger from './swagger.js';
+import user from './user.js';
+import verification_code from './verification-code.js';
+
+const errors = {
+ request,
+ auth,
+ guard,
+ oidc,
+ user,
+ password,
+ session,
+ connector,
+ verification_code,
+ sign_in_experiences,
+ localization,
+ swagger,
+ entity,
+ log,
+ role,
+ scope,
+ storage,
+};
+
+export default errors;
diff --git a/packages/phrases/src/locales/de/errors/localization.ts b/packages/phrases/src/locales/de/errors/localization.ts
new file mode 100644
index 000000000..99fc8aa0b
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/localization.ts
@@ -0,0 +1,7 @@
+const localization = {
+ cannot_delete_default_language:
+ '{{languageTag}} ist die Standard-Sprache und kann nicht gelöscht werden.',
+ invalid_translation_structure: 'Ungültige Übersetzungsstruktur. Bitte überprüfe deine Eingabe.',
+};
+
+export default localization;
diff --git a/packages/phrases/src/locales/de/errors/log.ts b/packages/phrases/src/locales/de/errors/log.ts
new file mode 100644
index 000000000..cfac065e4
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/log.ts
@@ -0,0 +1,5 @@
+const log = {
+ invalid_type: 'Der Log Typ ist ungültig.',
+};
+
+export default log;
diff --git a/packages/phrases/src/locales/de/errors/oidc.ts b/packages/phrases/src/locales/de/errors/oidc.ts
new file mode 100644
index 000000000..c3e8e2bf8
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/oidc.ts
@@ -0,0 +1,20 @@
+const oidc = {
+ aborted: 'Der Endnutzer hat die Interaktion abgebrochen.',
+ invalid_scope: 'Scope {{scope}} wird nicht unterstützt.',
+ invalid_scope_plural: 'Scopes {{scopes}} werden nicht unterstützt.',
+ invalid_token: 'Ungültiger Token übermittelt.',
+ invalid_client_metadata: 'Ungültige Client Metadaten übermittelt.',
+ insufficient_scope: 'Access token fehlen angefragte scope {{scopes}}.',
+ invalid_request: 'Anfrage ist ungültig.',
+ invalid_grant: 'Grant request ist ungültig.',
+ invalid_redirect_uri:
+ '`redirect_uri` stimmt nicht mit den registrierten `redirect_uris` des Clients überein.',
+ access_denied: 'Zugang verweigert.',
+ invalid_target: 'Ungültiger resource indicator.',
+ unsupported_grant_type: 'Nicht unterstützter `grant_type` angefragt.',
+ unsupported_response_mode: 'Nicht unterstützter `response_mode` angefragt.',
+ unsupported_response_type: 'Nicht unterstützter `response_type` angefragt.',
+ provider_error: 'OIDC interner Fehler: {{message}}.',
+};
+
+export default oidc;
diff --git a/packages/phrases/src/locales/de/errors/password.ts b/packages/phrases/src/locales/de/errors/password.ts
new file mode 100644
index 000000000..7630bc610
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/password.ts
@@ -0,0 +1,6 @@
+const password = {
+ unsupported_encryption_method: 'Die Verschlüsselungsmethode {{name}} wird nicht unterstützt.',
+ pepper_not_found: 'Password pepper not found. Please check your core envs.',
+};
+
+export default password;
diff --git a/packages/phrases/src/locales/de/errors/request.ts b/packages/phrases/src/locales/de/errors/request.ts
new file mode 100644
index 000000000..f98d59d9a
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/request.ts
@@ -0,0 +1,6 @@
+const request = {
+ invalid_input: 'Eingabe ist ungültig. {{details}}',
+ general: 'Es ist ein Fehler bei der Anfrage aufgetreten.',
+};
+
+export default request;
diff --git a/packages/phrases/src/locales/de/errors/role.ts b/packages/phrases/src/locales/de/errors/role.ts
new file mode 100644
index 000000000..d3d8baddb
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/role.ts
@@ -0,0 +1,11 @@
+const role = {
+ name_in_use: 'Dieser Rollenname {{name}} wird bereits verwendet.',
+ scope_exists: 'Die Scope-ID {{scopeId}} wurde bereits zu dieser Rolle hinzugefügt.',
+ user_exists: 'Die Benutzer-ID {{userId}} wurde bereits zu dieser Rolle hinzugefügt.',
+ default_role_missing:
+ 'Einige der Standardrollennamen sind in der Datenbank nicht vorhanden. Bitte stellen Sie sicher, dass Sie zuerst Rollen erstellen.',
+ internal_role_violation:
+ 'Sie versuchen möglicherweise, eine interne Rolle zu aktualisieren oder zu löschen, was von Logto verboten ist. Wenn Sie eine neue Rolle erstellen, versuchen Sie es mit einem anderen Namen, der nicht mit "#internal:" beginnt.',
+};
+
+export default role;
diff --git a/packages/phrases/src/locales/de/errors/scope.ts b/packages/phrases/src/locales/de/errors/scope.ts
new file mode 100644
index 000000000..337e187db
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/scope.ts
@@ -0,0 +1,6 @@
+const scope = {
+ name_exists: 'Der Scope-Name {{name}} ist bereits in Verwendung',
+ name_with_space: 'Der Name des Scopes darf keine Leerzeichen enthalten.',
+};
+
+export default scope;
diff --git a/packages/phrases/src/locales/de/errors/session.ts b/packages/phrases/src/locales/de/errors/session.ts
new file mode 100644
index 000000000..d204a5fe4
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/session.ts
@@ -0,0 +1,26 @@
+const session = {
+ not_found: 'Sitzung nicht gefunden. Bitte melde dich erneut an.',
+ invalid_credentials: 'Ungültige Zugangsdaten. Überprüfe deine Eingaben.',
+ invalid_sign_in_method: 'Aktuelle Anmeldemethode ist ungültig.',
+ invalid_connector_id: 'Connector mit ID {{connectorId}} wurde nicht gefunden.',
+ insufficient_info: 'Unzureichende Informationen für die Anmeldung.',
+ connector_id_mismatch: 'Connector ID stimmt nicht mit Sitzung überein.',
+ connector_session_not_found: 'Connector Sitzung nicht gefunden. Bitte melde dich erneut an.',
+ verification_session_not_found:
+ 'Die Verifizierung war nicht erfolgreich. Starte die Verifizierung neu und versuche es erneut.',
+ verification_expired:
+ 'Die Verbindung wurde unterbrochen. Verifiziere erneut, um die Sicherheit deines Kontos zu gewährleisten.',
+ unauthorized: 'Bitte melde dich erst an.',
+ unsupported_prompt_name: 'Nicht unterstützter prompt Name.',
+ forgot_password_not_enabled: 'Forgot password is not enabled.',
+ verification_failed:
+ 'Die Verifizierung war nicht erfolgreich. Starte die Verifizierung neu und versuche es erneut.',
+ connector_validation_session_not_found:
+ 'Die Connector-Sitzung zur Token-Validierung wurde nicht gefunden.',
+ identifier_not_found:
+ 'Benutzerkennung nicht gefunden. Bitte gehen Sie zurück und melden Sie sich erneut an.',
+ interaction_not_found:
+ 'Interaktionssitzung nicht gefunden. Bitte gehen Sie zurück und starten Sie die Sitzung erneut.',
+};
+
+export default session;
diff --git a/packages/phrases/src/locales/de/errors/sign-in-experiences.ts b/packages/phrases/src/locales/de/errors/sign-in-experiences.ts
new file mode 100644
index 000000000..07d9c5acc
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/sign-in-experiences.ts
@@ -0,0 +1,24 @@
+const sign_in_experiences = {
+ empty_content_url_of_terms_of_use:
+ 'Leere "Nutzungsbedingungen" URL. Bitte füge die URL hinzu, wenn "Nutzungsbedingungen" aktiviert ist.',
+ empty_social_connectors:
+ 'Leere Social Connectors. Bitte füge aktivierte Social Connectoren hinzu, wenn Social Anmeldung aktiviert ist.',
+ enabled_connector_not_found: 'Aktivierter {{type}} Connector nicht gefunden.',
+ not_one_and_only_one_primary_sign_in_method:
+ 'Es darf nur eine primäre Anmeldemethode geben. Bitte überprüfe deine Eingabe.',
+ username_requires_password:
+ 'Muss ein Passwort für den Benutzernamen zur Registrierung aktivieren.',
+ passwordless_requires_verify:
+ 'Muss die Verifizierung für die Registrierung per E-Mail/Telefon aktivieren.',
+ miss_sign_up_identifier_in_sign_in:
+ 'Anmeldeverfahren müssen den Registrierungs-Identifier enthalten.',
+ password_sign_in_must_be_enabled:
+ 'Die Passwort-Anmeldung muss aktiviert sein, wenn bei der Registrierung ein Passwort festgelegt wird.',
+ code_sign_in_must_be_enabled:
+ 'Die Anmeldung mit Bestätigungscode muss aktiviert sein, wenn bei der Registrierung kein Passwort festgelegt wird.',
+ unsupported_default_language: 'Die Sprache - {{language}} wird momentan nicht unterstützt.',
+ at_least_one_authentication_factor:
+ 'Sie müssen mindestens einen Authentifizierungsfaktor auswählen.',
+};
+
+export default sign_in_experiences;
diff --git a/packages/phrases/src/locales/de/errors/storage.ts b/packages/phrases/src/locales/de/errors/storage.ts
new file mode 100644
index 000000000..54652b14a
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/storage.ts
@@ -0,0 +1,7 @@
+const storage = {
+ not_configured: 'Der Storage-Anbieter ist nicht konfiguriert.',
+ missing_parameter: 'Fehlender Parameter {{parameter}} für den Storage-Anbieter.',
+ upload_error: 'Das Hochladen der Datei zum Storage-Anbieter ist fehlgeschlagen.',
+};
+
+export default storage;
diff --git a/packages/phrases/src/locales/de/errors/swagger.ts b/packages/phrases/src/locales/de/errors/swagger.ts
new file mode 100644
index 000000000..700fa41fd
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/swagger.ts
@@ -0,0 +1,7 @@
+const swagger = {
+ invalid_zod_type: 'Ungültiger Zod Typ. Überprüfe deine route guard Konfiguration.',
+ not_supported_zod_type_for_params:
+ 'Nicht unterstützter Zod Typ für diese Parameter. Überprüfe deine route guard Konfiguration.',
+};
+
+export default swagger;
diff --git a/packages/phrases/src/locales/de/errors/user.ts b/packages/phrases/src/locales/de/errors/user.ts
new file mode 100644
index 000000000..d502cedd9
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/user.ts
@@ -0,0 +1,37 @@
+const user = {
+ username_already_in_use: 'Dieser Benutzername wird bereits verwendet.',
+ email_already_in_use: 'Diese E-Mail-Adresse ist mit einem vorhandenen Konto verknüpft.',
+ phone_already_in_use: 'Diese Telefonnummer ist mit einem vorhandenen Konto verknüpft.',
+ invalid_email: 'Ungültige E-Mail.',
+ invalid_phone: 'Ungültige Telefonnummer.',
+ email_not_exist: 'Die E-Mail wurde noch nicht registriert.',
+ phone_not_exist: 'Die Telefonnummer wurde noch nicht registriert.',
+ identity_not_exist: 'Die Identität wurde noch nicht registriert.',
+ identity_already_in_use: 'Die Identität wurde registriert.',
+ social_account_exists_in_profile: 'Sie haben diesen Social-Media-Account bereits verknüpft.',
+ cannot_delete_self: 'Du kannst dich nicht selbst löschen.',
+ sign_up_method_not_enabled: 'Diese Anmeldeart ist nicht aktiviert.',
+ sign_in_method_not_enabled: 'Diese Anmeldemethode ist nicht aktiviert.',
+ same_password: 'Das neue Passwort muss sich vom alten unterscheiden.',
+ password_required_in_profile:
+ 'Sie müssen ein Passwort festlegen, bevor Sie sich anmelden können.',
+ new_password_required_in_profile: 'Sie müssen ein neues Passwort festlegen.',
+ password_exists_in_profile: 'Das Passwort ist bereits in Ihrem Profil vorhanden.',
+ username_required_in_profile:
+ 'Sie müssen einen Benutzernamen festlegen, bevor Sie sich anmelden können.',
+ username_exists_in_profile: 'Der Benutzername ist bereits in Ihrem Profil vorhanden.',
+ email_required_in_profile:
+ 'Sie müssen eine E-Mail-Adresse hinzufügen, bevor Sie sich anmelden können.',
+ email_exists_in_profile: 'Ihr Profil ist bereits mit einer E-Mail-Adresse verknüpft.',
+ phone_required_in_profile:
+ 'Sie müssen eine Telefonnummer hinzufügen, bevor Sie sich anmelden können.',
+ phone_exists_in_profile: 'Ihr Profil ist bereits mit einer Telefonnummer verknüpft.',
+ email_or_phone_required_in_profile:
+ 'Sie müssen eine E-Mail-Adresse oder eine Telefonnummer hinzufügen, bevor Sie sich anmelden können.',
+ suspended: 'Dieses Konto wurde gesperrt.',
+ user_not_exist: 'Der Benutzer mit {{ identifier }} existiert nicht.',
+ missing_profile: 'Sie müssen zusätzliche Informationen angeben, bevor Sie sich anmelden können.',
+ role_exists: 'Die Rollen-ID {{roleId}} wurde diesem Benutzer bereits hinzugefügt.',
+};
+
+export default user;
diff --git a/packages/phrases/src/locales/de/errors/verification-code.ts b/packages/phrases/src/locales/de/errors/verification-code.ts
new file mode 100644
index 000000000..8e491f024
--- /dev/null
+++ b/packages/phrases/src/locales/de/errors/verification-code.ts
@@ -0,0 +1,13 @@
+const verification_code = {
+ phone_email_empty: 'Sowohl Telefon als auch E-Mail sind leer.',
+ not_found: 'Bestätigungscode nicht gefunden. Bitte senden Sie zuerst den Bestätigungscode.',
+ phone_mismatch:
+ 'Telefonnummer stimmt nicht überein. Bitte fordern Sie einen neuen Bestätigungscode an.',
+ email_mismatch: 'E-Mail stimmt nicht überein. Bitte fordern Sie einen neuen Bestätigungscode an.',
+ code_mismatch: 'Ungültiger Bestätigungscode.',
+ expired: 'Bestätigungscode ist abgelaufen. Bitte fordern Sie einen neuen Bestätigungscode an.',
+ exceed_max_try:
+ 'Die Begrenzung für die Anzahl der Bestätigungscode-Wiederholungen wurde überschritten. Bitte fordern Sie einen neuen Bestätigungscode an.',
+};
+
+export default verification_code;
diff --git a/packages/phrases/src/locales/de/index.ts b/packages/phrases/src/locales/de/index.ts
index 3c9e36cc2..351be138c 100644
--- a/packages/phrases/src/locales/de/index.ts
+++ b/packages/phrases/src/locales/de/index.ts
@@ -1,6 +1,6 @@
import type { LocalePhrase } from '../../types.js';
-import errors from './errors.js';
+import errors from './errors/index.js';
import translation from './translation/index.js';
const de: LocalePhrase = Object.freeze({
diff --git a/packages/phrases/src/locales/de/translation/admin-console/index.ts b/packages/phrases/src/locales/de/translation/admin-console/index.ts
index bc1b949ef..a5736b82f 100644
--- a/packages/phrases/src/locales/de/translation/admin-console/index.ts
+++ b/packages/phrases/src/locales/de/translation/admin-console/index.ts
@@ -19,7 +19,7 @@ import profile from './profile.js';
import role_details from './role-details.js';
import roles from './roles.js';
import session_expired from './session-expired.js';
-import sign_in_exp from './sign-in-exp.js';
+import sign_in_exp from './sign-in-exp/index.js';
import tab_sections from './tab-sections.js';
import tabs from './tabs.js';
import user_details from './user-details.js';
diff --git a/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp.ts
deleted file mode 100644
index 4387885da..000000000
--- a/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp.ts
+++ /dev/null
@@ -1,187 +0,0 @@
-const sign_in_exp = {
- page_title: 'Anmeldeoberfläche',
- title: 'Anmeldeoberfläche',
- description:
- 'Passe die Benutzeroberfläche für die Anmeldung an deine Marke an und zeige eine Vorschau in Echtzeit an',
- tabs: {
- branding: 'Branding',
- methods: 'Anmeldemethoden',
- sign_up_and_sign_in: 'Sign-up and Sign-in', // UNTRANSLATED
- others: 'Andere',
- },
- welcome: {
- title: 'Customize sign-in experience', // UNTRANSLATED
- description:
- 'Get started fast with your first sign-in setup. This guide walks you through all the necessary settings.', // UNTRANSLATED
- get_started: 'Erste Schritte',
- apply_remind:
- 'Bitte beachte, dass die Anmeldeoberfläche für alle Anwendungen unter diesem Konto gilt.',
- },
- sign_up_and_sign_in: {
- identifiers_email: 'Email address', // UNTRANSLATED
- identifiers_phone: 'Phone number', // UNTRANSLATED
- identifiers_username: 'Username', // UNTRANSLATED
- identifiers_email_or_sms: 'Email address or phone number', // UNTRANSLATED
- identifiers_none: 'Not applicable', // UNTRANSLATED
- and: 'and', // UNTRANSLATED
- or: 'or', // UNTRANSLATED
- sign_up: {
- title: 'SIGN-UP', // UNTRANSLATED
- sign_up_identifier: 'Sign-up identifier', // UNTRANSLATED
- identifier_description:
- 'The sign-up identifier is required for account creation and must be included in your sign-in screen.', // UNTRANSLATED
- sign_up_authentication: 'Authentication setting for sign-up', // UNTRANSLATED
- authentication_description:
- 'All selected actions will be obligatory for users to complete the flow.', // UNTRANSLATED
- set_a_password_option: 'Create your password', // UNTRANSLATED
- verify_at_sign_up_option: 'Verify at sign-up', // UNTRANSLATED
- social_only_creation_description: '(This apply to social only account creation)', // UNTRANSLATED
- },
- sign_in: {
- title: 'SIGN-IN', // UNTRANSLATED
- sign_in_identifier_and_auth: 'Identifier and authentication settings for sign-in', // UNTRANSLATED
- description:
- 'Users can sign in using any of the options available. Adjust the layout by drag and dropping below options.', // UNTRANSLATED
- add_sign_in_method: 'Add Sign-in Method', // UNTRANSLATED
- password_auth: 'Password', // UNTRANSLATED
- verification_code_auth: 'Verification code', // UNTRANSLATED
- auth_swap_tip: 'Swap the options below to determine which appears first in the flow.', // UNTRANSLATED
- require_auth_factor: 'You have to select at least one authentication factor.', // UNTRANSLATED
- },
- social_sign_in: {
- title: 'SOCIAL SIGN-IN', // UNTRANSLATED
- social_sign_in: 'Social sign-in', // UNTRANSLATED
- description:
- 'Depending on the mandatory identifier you set up, your user may be asked to provide an identifier when signing up via social connector.', // UNTRANSLATED
- add_social_connector: 'Add Social Connector', // UNTRANSLATED
- set_up_hint: {
- not_in_list: 'Not in the list?', // UNTRANSLATED
- set_up_more: 'Set up', // UNTRANSLATED
- go_to: 'other social connectors now.', // UNTRANSLATED
- },
- },
- tip: {
- set_a_password: 'A unique set of a password to your username is a must.', // UNTRANSLATED
- verify_at_sign_up:
- 'We currently only support verified email. Your user base may contain a large number of poor-quality email addresses if no validation.', // UNTRANSLATED
- password_auth:
- 'This is essential as you have enabled the option to set a password during the sign-up process.', // UNTRANSLATED
- verification_code_auth:
- 'This is essential as you have only enabled the option to provide verification code when signing up. You’re free to uncheck the box when password set-up is allowed at the sign-up process.', // UNTRANSLATED
- delete_sign_in_method:
- 'This is essential as you have selected {{identifier}} as a required identifier.', // UNTRANSLATED
- },
- },
- color: {
- title: 'FARBE',
- primary_color: 'Markenfarbe',
- dark_primary_color: 'Markenfarbe (Dunkler Modus)',
- dark_mode: 'Aktiviere Dunklen Modus',
- dark_mode_description:
- 'Deine App erhält einen automatisch generierten Dunklen Modus, der auf deiner Markenfarbe und dem Logto-Algorithmus basiert. Du kannst diesen nach Belieben anpassen.',
- dark_mode_reset_tip: 'Neuberechnung der Farbe des dunklen Modus basierend auf der Markenfarbe.',
- reset: 'Neuberechnen',
- },
- branding: {
- title: 'BRANDING',
- ui_style: 'Stil',
- favicon: 'Favicon', // UNTRANSLATED
- logo_image_url: 'App logo URL',
- logo_image_url_placeholder: 'https://dein.cdn.domain/logo.png',
- dark_logo_image_url: 'App logo URL (Dunkler Modus)',
- dark_logo_image_url_placeholder: 'https://dein.cdn.domain/logo-dark.png',
- logo_image: 'App logo',
- dark_logo_image: 'App logo (Dunkler Modus)',
- logo_image_error: 'App logo: {{error}}', // UNTRANSLATED
- favicon_error: 'Favicon: {{error}}', // UNTRANSLATED
- },
- custom_css: {
- title: 'Custom CSS', // UNTRANSLATED
- css_code_editor_title: 'Personalize your UI with Custom CSS', // UNTRANSLATED
- css_code_editor_description1: 'See the example of Custom CSS.', // UNTRANSLATED
- css_code_editor_description2: '{{link}}', // UNTRANSLATED
- css_code_editor_description_link_content: 'Learn more', // UNTRANSLATED
- css_code_editor_content_placeholder:
- 'Enter your custom CSS to tailor the styles of anything to your exact specifications. Express your creativity and make your UI stand out.', // UNTRANSLATED
- },
- others: {
- terms_of_use: {
- title: 'Terms', // UNTRANSLATED
- terms_of_use: 'URL zu den Nutzungsbedingungen',
- terms_of_use_placeholder: 'https://beispiel.de/nutzungsbedingungen',
- privacy_policy: 'URL zu den Datenschutzrichtlinien',
- privacy_policy_placeholder: 'https://beispiel.de/datenschutzrichtlinien',
- },
- languages: {
- title: 'SPRACHEN',
- enable_auto_detect: 'Aktiviere automatische Spracherkennung',
- description:
- 'Deine Software erkennt die Sprach-Einstellung des Nutzers und schaltet auf die lokale Sprache um. Du kannst neue Sprachen hinzufügen, indem du die Benutzeroberfläche vom Englischen in eine andere Sprache übersetzt.',
- manage_language: 'Sprachen verwalten',
- default_language: 'Standard-Sprache',
- default_language_description_auto:
- 'Die Standardsprache wird verwendet, wenn die erkannte Benutzersprache nicht in der aktuellen Sprachbibliothek enthalten ist.',
- default_language_description_fixed:
- 'Wenn die automatische Erkennung deaktiviert ist, ist die Standardsprache die einzige Sprache, die deine Software anzeigt. Schalte die automatische Erkennung ein um weitere Sprachen anzuzeigen.',
- },
- manage_language: {
- title: 'Sprachen verwalten',
- subtitle:
- 'Erweitere die Anmeldeoberfläche durch neue Sprachen und Übersetzungen. Deine Übersetzung kann als Standard-Sprache verwendet werden.',
- add_language: 'Sprache hinzufügen',
- logto_provided: 'Von Logto bereitgestellt',
- key: 'Schlüssel',
- logto_source_values: 'Logto Übersetzungen',
- custom_values: 'Benutzerdefinierte Übersetzungen',
- clear_all_tip: 'Alle benutzerdefinierten Übersetzungen löschen',
- unsaved_description:
- 'Wenn du diese Seite verlässt, ohne zu speichern, werden die Änderungen nicht gespeichert.',
- deletion_tip: 'Sprache löschen',
- deletion_title: 'Willst du diese Sprache wirklich löschen?',
- deletion_description:
- 'Nach dem Löschen können deine Benutzer diese Sprache nicht mehr nutzen.',
- default_language_deletion_title: 'Die Standardsprache kann nicht gelöscht werden.',
- default_language_deletion_description:
- '{{language}} ist als Standardsprache eingestellt und kann nicht gelöscht werden. ',
- },
- advanced_options: {
- title: 'ERWEITERTE OPTIONEN',
- enable_create_account: 'Aktiviere Registrierung',
- enable_create_account_description:
- 'Aktiviere oder deaktiviere Konto Registrierung. Wenn diese Funktion deaktiviert ist, können deine Kunden keine Konten über die Anmeldeoberfläche erstellen, aber du kannst immer noch Benutzer in der Admin Konsole hinzufügen.',
- enable_user_registration: 'Enable user registration', // UNTRANSLATED
- enable_user_registration_description:
- 'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.', // UNTRANSLATED
- },
- },
- setup_warning: {
- no_connector_sms:
- 'No SMS connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"', // UNTRANSLATED
- no_connector_email:
- 'No email connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"', // UNTRANSLATED
- no_connector_social:
- 'No social connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"', // UNTRANSLATED
- no_added_social_connector:
- 'Du hast jetzt ein paar Social Connectoren eingerichtet. Füge jetzt einige zu deinem Anmeldeerlebnis hinzu.',
- setup_link: 'Set up',
- },
- save_alert: {
- description:
- 'You are implementing new sign-in and sign-up procedures. All of your users may be affected by the new set-up. Are you sure to commit to the change?', // UNTRANSLATED
- before: 'Vorher',
- after: 'Nachher',
- sign_up: 'Sign-up', // UNTRANSLATED
- sign_in: 'Sign-in', // UNTRANSLATED
- social: 'Social', // UNTRANSLATED
- },
- preview: {
- title: 'Vorschau',
- live_preview: 'Live preview', // UNTRANSLATED
- live_preview_tip: 'Save to preview changes', // UNTRANSLATED
- native: 'Nativ',
- desktop_web: 'Desktop Web',
- mobile_web: 'Mobil Web',
- },
-};
-
-export default sign_in_exp;
diff --git a/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp/index.ts b/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp/index.ts
new file mode 100644
index 000000000..aaaa534a6
--- /dev/null
+++ b/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp/index.ts
@@ -0,0 +1,87 @@
+import others from './others.js';
+import sign_up_and_sign_in from './sign-up-and-sign-in.js';
+
+const sign_in_exp = {
+ page_title: 'Anmeldeoberfläche',
+ title: 'Anmeldeoberfläche',
+ description:
+ 'Passe die Benutzeroberfläche für die Anmeldung an deine Marke an und zeige eine Vorschau in Echtzeit an',
+ tabs: {
+ branding: 'Branding',
+ methods: 'Anmeldemethoden',
+ sign_up_and_sign_in: 'Sign up and Sign in',
+ others: 'Andere',
+ },
+ welcome: {
+ title: 'Customize sign-in experience',
+ description:
+ 'Get started fast with your first sign-in setup. This guide walks you through all the necessary settings.',
+ get_started: 'Erste Schritte',
+ apply_remind:
+ 'Bitte beachte, dass die Anmeldeoberfläche für alle Anwendungen unter diesem Konto gilt.',
+ },
+ color: {
+ title: 'FARBE',
+ primary_color: 'Markenfarbe',
+ dark_primary_color: 'Markenfarbe (Dunkler Modus)',
+ dark_mode: 'Aktiviere Dunklen Modus',
+ dark_mode_description:
+ 'Deine App erhält einen automatisch generierten Dunklen Modus, der auf deiner Markenfarbe und dem Logto-Algorithmus basiert. Du kannst diesen nach Belieben anpassen.',
+ dark_mode_reset_tip: 'Neuberechnung der Farbe des dunklen Modus basierend auf der Markenfarbe.',
+ reset: 'Neuberechnen',
+ },
+ branding: {
+ title: 'BRANDING',
+ ui_style: 'Stil',
+ favicon: 'Favicon',
+ logo_image_url: 'App logo URL',
+ logo_image_url_placeholder: 'https://dein.cdn.domain/logo.png',
+ dark_logo_image_url: 'App logo URL (Dunkler Modus)',
+ dark_logo_image_url_placeholder: 'https://dein.cdn.domain/logo-dark.png',
+ logo_image: 'App logo',
+ dark_logo_image: 'App logo (Dunkler Modus)',
+ logo_image_error: 'App logo: {{error}}',
+ favicon_error: 'Favicon: {{error}}',
+ },
+ custom_css: {
+ title: 'Custom CSS',
+ css_code_editor_title: 'Personalize your UI with Custom CSS',
+ css_code_editor_description1: 'See the example of Custom CSS.',
+ css_code_editor_description2: '{{link}}',
+ css_code_editor_description_link_content: 'Learn more',
+ css_code_editor_content_placeholder:
+ 'Enter your custom CSS to tailor the styles of anything to your exact specifications. Express your creativity and make your UI stand out.',
+ },
+ setup_warning: {
+ no_connector_sms:
+ 'No SMS connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"',
+ no_connector_email:
+ 'No email connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"',
+ no_connector_social:
+ 'No social connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"',
+ no_added_social_connector:
+ 'Du hast jetzt ein paar Social Connectoren eingerichtet. Füge jetzt einige zu deinem Anmeldeerlebnis hinzu.',
+ setup_link: 'Set up',
+ },
+ save_alert: {
+ description:
+ 'You are implementing new sign-in and sign-up procedures. All of your users may be affected by the new set-up. Are you sure to commit to the change?',
+ before: 'Vorher',
+ after: 'Nachher',
+ sign_up: 'Sign-up',
+ sign_in: 'Sign-in',
+ social: 'Social',
+ },
+ preview: {
+ title: 'Vorschau',
+ live_preview: 'Live preview',
+ live_preview_tip: 'Save to preview changes',
+ native: 'Nativ',
+ desktop_web: 'Desktop Web',
+ mobile_web: 'Mobil Web',
+ },
+ others,
+ sign_up_and_sign_in,
+};
+
+export default sign_in_exp;
diff --git a/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp/others.ts b/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp/others.ts
new file mode 100644
index 000000000..cfe2aaa0a
--- /dev/null
+++ b/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp/others.ts
@@ -0,0 +1,51 @@
+const others = {
+ terms_of_use: {
+ title: 'Terms',
+ terms_of_use: 'URL zu den Nutzungsbedingungen',
+ terms_of_use_placeholder: 'https://beispiel.de/nutzungsbedingungen',
+ privacy_policy: 'URL zu den Datenschutzrichtlinien',
+ privacy_policy_placeholder: 'https://beispiel.de/datenschutzrichtlinien',
+ },
+ languages: {
+ title: 'SPRACHEN',
+ enable_auto_detect: 'Aktiviere automatische Spracherkennung',
+ description:
+ 'Deine Software erkennt die Sprach-Einstellung des Nutzers und schaltet auf die lokale Sprache um. Du kannst neue Sprachen hinzufügen, indem du die Benutzeroberfläche vom Englischen in eine andere Sprache übersetzt.',
+ manage_language: 'Sprachen verwalten',
+ default_language: 'Standard-Sprache',
+ default_language_description_auto:
+ 'Die Standardsprache wird verwendet, wenn die erkannte Benutzersprache nicht in der aktuellen Sprachbibliothek enthalten ist.',
+ default_language_description_fixed:
+ 'Wenn die automatische Erkennung deaktiviert ist, ist die Standardsprache die einzige Sprache, die deine Software anzeigt. Schalte die automatische Erkennung ein um weitere Sprachen anzuzeigen.',
+ },
+ manage_language: {
+ title: 'Sprachen verwalten',
+ subtitle:
+ 'Erweitere die Anmeldeoberfläche durch neue Sprachen und Übersetzungen. Deine Übersetzung kann als Standard-Sprache verwendet werden.',
+ add_language: 'Sprache hinzufügen',
+ logto_provided: 'Von Logto bereitgestellt',
+ key: 'Schlüssel',
+ logto_source_values: 'Logto Übersetzungen',
+ custom_values: 'Benutzerdefinierte Übersetzungen',
+ clear_all_tip: 'Alle benutzerdefinierten Übersetzungen löschen',
+ unsaved_description:
+ 'Wenn du diese Seite verlässt, ohne zu speichern, werden die Änderungen nicht gespeichert.',
+ deletion_tip: 'Sprache löschen',
+ deletion_title: 'Willst du diese Sprache wirklich löschen?',
+ deletion_description: 'Nach dem Löschen können deine Benutzer diese Sprache nicht mehr nutzen.',
+ default_language_deletion_title: 'Die Standardsprache kann nicht gelöscht werden.',
+ default_language_deletion_description:
+ '{{language}} ist als Standardsprache eingestellt und kann nicht gelöscht werden. ',
+ },
+ advanced_options: {
+ title: 'ERWEITERTE OPTIONEN',
+ enable_create_account: 'Aktiviere Registrierung',
+ enable_create_account_description:
+ 'Aktiviere oder deaktiviere Konto Registrierung. Wenn diese Funktion deaktiviert ist, können deine Kunden keine Konten über die Anmeldeoberfläche erstellen, aber du kannst immer noch Benutzer in der Admin Konsole hinzufügen.',
+ enable_user_registration: 'Enable user registration',
+ enable_user_registration_description:
+ 'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
+ },
+};
+
+export default others;
diff --git a/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts b/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts
new file mode 100644
index 000000000..3dd26b12c
--- /dev/null
+++ b/packages/phrases/src/locales/de/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts
@@ -0,0 +1,57 @@
+const sign_up_and_sign_in = {
+ identifiers_email: 'Email address',
+ identifiers_phone: 'Phone number',
+ identifiers_username: 'Username',
+ identifiers_email_or_sms: 'Email address or phone number',
+ identifiers_none: 'Not applicable',
+ and: 'and',
+ or: 'or',
+ sign_up: {
+ title: 'SIGN UP',
+ sign_up_identifier: 'Sign-up identifier',
+ identifier_description:
+ 'The sign-up identifier is required for account creation and must be included in your sign-in screen.',
+ sign_up_authentication: 'Authentication setting for sign-up',
+ authentication_description:
+ 'All selected actions will be obligatory for users to complete the flow.',
+ set_a_password_option: 'Create your password',
+ verify_at_sign_up_option: 'Verify at sign-up',
+ social_only_creation_description: '(This apply to social only account creation)',
+ },
+ sign_in: {
+ title: 'SIGN IN',
+ sign_in_identifier_and_auth: 'Identifier and authentication settings for sign-in',
+ description:
+ 'Users can sign in using any of the options available. Adjust the layout by drag and dropping below options.',
+ add_sign_in_method: 'Add Sign-in Method',
+ password_auth: 'Password',
+ verification_code_auth: 'Verification code',
+ auth_swap_tip: 'Swap the options below to determine which appears first in the flow.',
+ require_auth_factor: 'You have to select at least one authentication factor.',
+ },
+ social_sign_in: {
+ title: 'SOCIAL SIGN-IN',
+ social_sign_in: 'Social sign-in',
+ description:
+ 'Depending on the mandatory identifier you set up, your user may be asked to provide an identifier when signing up via social connector.',
+ add_social_connector: 'Add Social Connector',
+ set_up_hint: {
+ not_in_list: 'Not in the list?',
+ set_up_more: 'Set up',
+ go_to: 'other social connectors now.',
+ },
+ },
+ tip: {
+ set_a_password: 'A unique set of a password to your username is a must.',
+ verify_at_sign_up:
+ 'We currently only support verified email. Your user base may contain a large number of poor-quality email addresses if no validation.',
+ password_auth:
+ 'This is essential as you have enabled the option to set a password during the sign-up process.',
+ verification_code_auth:
+ 'This is essential as you have only enabled the option to provide verification code when signing up. You’re free to uncheck the box when password set-up is allowed at the sign-up process.',
+ delete_sign_in_method:
+ 'This is essential as you have selected {{identifier}} as a required identifier.',
+ },
+};
+
+export default sign_up_and_sign_in;
diff --git a/packages/phrases/src/locales/fr/errors.ts b/packages/phrases/src/locales/fr/errors.ts
deleted file mode 100644
index c27f1e11c..000000000
--- a/packages/phrases/src/locales/fr/errors.ts
+++ /dev/null
@@ -1,222 +0,0 @@
-const errors = {
- request: {
- invalid_input: "L'entrée est invalide. {{details}}",
- general: "Une erreur de requête s'est produite.",
- },
- 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.",
- expected_role_not_found:
- 'Expected role not found. Please check your user roles and permissions.',
- jwt_sub_missing: '`sub` manquant dans JWT.',
- require_re_authentication:
- 'La ré-authentification est requise pour effectuer une action protégée.',
- },
- 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.",
- can_not_get_tenant_id:
- "Impossible de récupérer l'identifiant du locataire à partir de la demande.",
- file_size_exceeded: 'Taille du fichier dépassée.',
- mime_type_not_allowed: "Le type MIME n'est pas autorisé.",
- },
- 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_already_in_use: "Ce nom d'utilisateur est déjà utilisé.",
- email_already_in_use: 'Cet e-mail est associé à un compte existant.',
- phone_already_in_use: 'Ce numéro de téléphone est associé à un compte existant.',
- invalid_email: 'Addresse email incorrecte.',
- invalid_phone: 'Numéro de téléphone incorrect.',
- email_not_exist: "L'adresse e-mail n'a pas encore été enregistrée.",
- phone_not_exist: "Le numéro de téléphone n'a pas encore été enregistré.",
- identity_not_exist: "Le compte social n'a pas encore été enregistré.",
- identity_already_in_use: 'Le compte social a été enregistré.',
- social_account_exists_in_profile: 'Vous avez déjà associé ce compte social.',
- cannot_delete_self: 'Vous ne pouvez pas vous supprimer vous-même.',
- sign_up_method_not_enabled: "Cette méthode d'inscription n'est pas activée.",
- sign_in_method_not_enabled: "Cette méthode de connexion n'est pas activée.",
- same_password: "Le nouveau mot de passe ne peut pas être identique à l'ancien.",
- password_required_in_profile: 'Vous devez définir un mot de passe avant de vous connecter.',
- new_password_required_in_profile: 'Vous devez définir un nouveau mot de passe.',
- password_exists_in_profile: 'Le mot de passe existe déjà dans votre profil.',
- username_required_in_profile:
- "Vous devez définir un nom d'utilisateur avant de vous connecter.",
- username_exists_in_profile: "Le nom d'utilisateur existe déjà dans votre profil.",
- email_required_in_profile: 'Vous devez ajouter une adresse e-mail avant de vous connecter.',
- email_exists_in_profile: 'Votre profil est déjà associé à une adresse e-mail.',
- phone_required_in_profile: 'Vous devez ajouter un numéro de téléphone avant de vous connecter.',
- phone_exists_in_profile: 'Votre profil est déjà associé à un numéro de téléphone.',
- email_or_phone_required_in_profile:
- 'Vous devez ajouter une adresse e-mail ou un numéro de téléphone avant de vous connecter.',
- suspended: 'Ce compte est suspendu.',
- user_not_exist: "L'utilisateur avec {{ identifier }} n'existe pas.",
- missing_profile: 'Vous devez fournir des informations supplémentaires avant de vous connecter.',
- role_exists: "L'ID de rôle {{roleId}} a déjà été ajouté à cet utilisateur",
- },
- 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.",
- verification_session_not_found:
- "La vérification n'a pas abouti. Redémarrez le processus de vérification et réessayez.",
- verification_expired:
- 'La connexion a expiré. Vérifiez à nouveau pour assurer la sécurité de votre compte.',
- unauthorized: "Veuillez vous enregistrer d'abord.",
- unsupported_prompt_name: "Nom d'invite non supporté.",
- forgot_password_not_enabled:
- "La fonctionnalité de réinitialisation de mot de passe n'est pas activée.",
- verification_failed:
- "La vérification n'a pas réussi. Veuillez recommencer le processus de vérification.",
- connector_validation_session_not_found:
- 'La session de validation de jeton de connecteur est introuvable.',
- identifier_not_found:
- 'Identifiant utilisateur introuvable. Veuillez retourner en arrière et vous connecter à nouveau.',
- interaction_not_found:
- "Session d'interaction introuvable. Veuillez retourner en arrière et recommencer la session.",
- },
- connector: {
- general: "Une erreur 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é.",
- invalid_metadata: 'Les métadonnées du connecteur sont invalides.',
- invalid_config_guard: 'La configuration du connecteur est invalide.',
- unexpected_type: 'Le type de connecteur est inattendu.',
- invalid_request_parameters: "La requête contient des paramètres d'entrée incorrects.",
- 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.",
- social_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.",
- social_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.",
- social_auth_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.',
- more_than_one_connector_factory:
- 'Plusieurs fabriques de connecteurs ont été trouvées (avec les identifiants {{connectorIds}}), vous pouvez désinstaller ceux qui ne sont pas nécessaires.',
- db_connector_type_mismatch:
- 'Il y a un connecteur dans la base de donnée qui ne correspond pas au type.',
- not_found_with_connector_id:
- "Impossible de trouver le connecteur avec l'identifiant de connecteur standard fourni.",
- multiple_instances_not_supported:
- 'Impossible de créer plusieurs instances avec le connecteur standard sélectionné.',
- invalid_type_for_syncing_profile:
- "Vous ne pouvez synchroniser le profil utilisateur qu'avec les connecteurs sociaux.",
- can_not_modify_target: 'Le "target" du connecteur ne peut pas être modifié.',
- should_specify_target: 'Vous devez spécifier le "target".',
- multiple_target_with_same_platform:
- 'Vous ne pouvez pas avoir plusieurs connecteurs sociaux ayant la même "target" et la même plateforme.',
- cannot_overwrite_metadata_for_non_standard_connector:
- 'Les "metadata" de ce connecteur ne peuvent pas être modifiés.',
- },
- verification_code: {
- phone_email_empty: "Les deux le téléphone et l'email sont vides.",
- not_found:
- "Le code de vérification n'a pas été trouvé. Veuillez d'abord envoyer le code de vérification.",
- phone_mismatch:
- 'Téléphone ne correspond pas. Veuillez demander un nouveau code de vérification.',
- email_mismatch: 'Email ne correspond pas. Veuillez demander un nouveau code de vérification.',
- code_mismatch: 'Code de vérification invalide.',
- expired: 'Le code de vérification a expiré. Veuillez demander un nouveau code de vérification.',
- exceed_max_try:
- 'La limite de tentatives de code de vérification a été dépassée. Veuillez demander un nouveau code de vérification.',
- },
- 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_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.',
- username_requires_password:
- "Vous devez activer la définition d'un mot de passe pour l'identifiant d'inscription de nom d'utilisateur.",
- passwordless_requires_verify:
- "Vous devez activer la vérification pour l'identifiant d'inscription par e-mail/numéro de téléphone.",
- miss_sign_up_identifier_in_sign_in:
- "Les méthodes de connexion doivent contenir l'identifiant d'inscription.",
- password_sign_in_must_be_enabled:
- "La connexion par mot de passe doit être activée lorsque la définition d'un mot de passe est requise lors de l'inscription.",
- code_sign_in_must_be_enabled:
- "La connexion par code de vérification doit être activée lorsque la définition d'un mot de passe n'est pas requise lors de l'inscription.",
- unsupported_default_language:
- "Cette langue - {{language}} n'est pas prise en charge pour le moment.",
- at_least_one_authentication_factor:
- "Vous devez sélectionner au moins un facteur d'authentification.",
- },
- localization: {
- cannot_delete_default_language:
- '{{languageTag}} est défini comme votre langue par défaut et ne peut pas être supprimé.',
- invalid_translation_structure:
- 'Schémas de données invalides. Veuillez vérifier votre entrée et réessayer.',
- },
- 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.",
- },
- log: {
- invalid_type: 'Type de journalisation invalide.',
- },
- role: {
- name_in_use: 'Ce nom de rôle {{name}} est déjà utilisé',
- scope_exists: "L'identifiant de portée {{scopeId}} a déjà été ajouté à ce rôle",
- user_exists: "L'identifiant d'utilisateur {{userId}} a déjà été ajouté à ce rôle",
- default_role_missing:
- "Certains noms de rôles par défaut n'existent pas dans la base de données, veuillez vous assurer de créer d'abord des rôles",
- internal_role_violation:
- 'Vous essayez peut-être de mettre à jour ou de supprimer un rôle interne, ce qui est interdit par Logto. Si vous créez un nouveau rôle, essayez un autre nom qui ne commence pas par "#internal:".',
- },
- scope: {
- name_exists: 'Le nom de portée {{name}} est déjà utilisé',
- name_with_space: "Le nom de la portée ne peut pas contenir d'espace.",
- },
- storage: {
- not_configured: "Le fournisseur de stockage n'est pas configuré.",
- missing_parameter: 'Paramètre manquant {{parameter}} pour le fournisseur de stockage.',
- upload_error: "Échec de l'envoi du fichier au fournisseur de stockage.",
- },
-};
-
-export default errors;
diff --git a/packages/phrases/src/locales/fr/errors/auth.ts b/packages/phrases/src/locales/fr/errors/auth.ts
new file mode 100644
index 000000000..f6124150e
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/auth.ts
@@ -0,0 +1,13 @@
+const 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.",
+ expected_role_not_found: 'Expected role not found. Please check your user roles and permissions.',
+ jwt_sub_missing: '`sub` manquant dans JWT.',
+ require_re_authentication:
+ 'La ré-authentification est requise pour effectuer une action protégée.',
+};
+
+export default auth;
diff --git a/packages/phrases/src/locales/fr/errors/connector.ts b/packages/phrases/src/locales/fr/errors/connector.ts
new file mode 100644
index 000000000..ccce4fa1d
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/connector.ts
@@ -0,0 +1,40 @@
+const connector = {
+ general: "Une erreur 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é.",
+ invalid_metadata: 'Les métadonnées du connecteur sont invalides.',
+ invalid_config_guard: 'La configuration du connecteur est invalide.',
+ unexpected_type: 'Le type de connecteur est inattendu.',
+ invalid_request_parameters: "La requête contient des paramètres d'entrée incorrects.",
+ 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.",
+ social_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.",
+ social_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.",
+ social_auth_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.',
+ more_than_one_connector_factory:
+ 'Plusieurs fabriques de connecteurs ont été trouvées (avec les identifiants {{connectorIds}}), vous pouvez désinstaller ceux qui ne sont pas nécessaires.',
+ db_connector_type_mismatch:
+ 'Il y a un connecteur dans la base de donnée qui ne correspond pas au type.',
+ not_found_with_connector_id:
+ "Impossible de trouver le connecteur avec l'identifiant de connecteur standard fourni.",
+ multiple_instances_not_supported:
+ 'Impossible de créer plusieurs instances avec le connecteur standard sélectionné.',
+ invalid_type_for_syncing_profile:
+ "Vous ne pouvez synchroniser le profil utilisateur qu'avec les connecteurs sociaux.",
+ can_not_modify_target: 'Le "target" du connecteur ne peut pas être modifié.',
+ should_specify_target: 'Vous devez spécifier le "target".',
+ multiple_target_with_same_platform:
+ 'Vous ne pouvez pas avoir plusieurs connecteurs sociaux ayant la même "target" et la même plateforme.',
+ cannot_overwrite_metadata_for_non_standard_connector:
+ 'Les "metadata" de ce connecteur ne peuvent pas être modifiés.',
+};
+
+export default connector;
diff --git a/packages/phrases/src/locales/fr/errors/entity.ts b/packages/phrases/src/locales/fr/errors/entity.ts
new file mode 100644
index 000000000..14d3dad63
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/entity.ts
@@ -0,0 +1,8 @@
+const 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 entity;
diff --git a/packages/phrases/src/locales/fr/errors/guard.ts b/packages/phrases/src/locales/fr/errors/guard.ts
new file mode 100644
index 000000000..1bd85830e
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/guard.ts
@@ -0,0 +1,10 @@
+const 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.",
+ can_not_get_tenant_id:
+ "Impossible de récupérer l'identifiant du locataire à partir de la demande.",
+ file_size_exceeded: 'Taille du fichier dépassée.',
+ mime_type_not_allowed: "Le type MIME n'est pas autorisé.",
+};
+
+export default guard;
diff --git a/packages/phrases/src/locales/fr/errors/index.ts b/packages/phrases/src/locales/fr/errors/index.ts
new file mode 100644
index 000000000..c3f5e05ec
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/index.ts
@@ -0,0 +1,39 @@
+import auth from './auth.js';
+import connector from './connector.js';
+import entity from './entity.js';
+import guard from './guard.js';
+import localization from './localization.js';
+import log from './log.js';
+import oidc from './oidc.js';
+import password from './password.js';
+import request from './request.js';
+import role from './role.js';
+import scope from './scope.js';
+import session from './session.js';
+import sign_in_experiences from './sign-in-experiences.js';
+import storage from './storage.js';
+import swagger from './swagger.js';
+import user from './user.js';
+import verification_code from './verification-code.js';
+
+const errors = {
+ request,
+ auth,
+ guard,
+ oidc,
+ user,
+ password,
+ session,
+ connector,
+ verification_code,
+ sign_in_experiences,
+ localization,
+ swagger,
+ entity,
+ log,
+ role,
+ scope,
+ storage,
+};
+
+export default errors;
diff --git a/packages/phrases/src/locales/fr/errors/localization.ts b/packages/phrases/src/locales/fr/errors/localization.ts
new file mode 100644
index 000000000..64cb3f770
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/localization.ts
@@ -0,0 +1,8 @@
+const localization = {
+ cannot_delete_default_language:
+ '{{languageTag}} est défini comme votre langue par défaut et ne peut pas être supprimé.',
+ invalid_translation_structure:
+ 'Schémas de données invalides. Veuillez vérifier votre entrée et réessayer.',
+};
+
+export default localization;
diff --git a/packages/phrases/src/locales/fr/errors/log.ts b/packages/phrases/src/locales/fr/errors/log.ts
new file mode 100644
index 000000000..1cee6f296
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/log.ts
@@ -0,0 +1,5 @@
+const log = {
+ invalid_type: 'Type de journalisation invalide.',
+};
+
+export default log;
diff --git a/packages/phrases/src/locales/fr/errors/oidc.ts b/packages/phrases/src/locales/fr/errors/oidc.ts
new file mode 100644
index 000000000..af551aed1
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/oidc.ts
@@ -0,0 +1,20 @@
+const 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}}.",
+};
+
+export default oidc;
diff --git a/packages/phrases/src/locales/fr/errors/password.ts b/packages/phrases/src/locales/fr/errors/password.ts
new file mode 100644
index 000000000..ece59c04d
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/password.ts
@@ -0,0 +1,7 @@
+const 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.',
+};
+
+export default password;
diff --git a/packages/phrases/src/locales/fr/errors/request.ts b/packages/phrases/src/locales/fr/errors/request.ts
new file mode 100644
index 000000000..c8c730681
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/request.ts
@@ -0,0 +1,6 @@
+const request = {
+ invalid_input: "L'entrée est invalide. {{details}}",
+ general: "Une erreur de requête s'est produite.",
+};
+
+export default request;
diff --git a/packages/phrases/src/locales/fr/errors/role.ts b/packages/phrases/src/locales/fr/errors/role.ts
new file mode 100644
index 000000000..dec004fc3
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/role.ts
@@ -0,0 +1,11 @@
+const role = {
+ name_in_use: 'Ce nom de rôle {{name}} est déjà utilisé',
+ scope_exists: "L'identifiant de portée {{scopeId}} a déjà été ajouté à ce rôle",
+ user_exists: "L'identifiant d'utilisateur {{userId}} a déjà été ajouté à ce rôle",
+ default_role_missing:
+ "Certains noms de rôles par défaut n'existent pas dans la base de données, veuillez vous assurer de créer d'abord des rôles",
+ internal_role_violation:
+ 'Vous essayez peut-être de mettre à jour ou de supprimer un rôle interne, ce qui est interdit par Logto. Si vous créez un nouveau rôle, essayez un autre nom qui ne commence pas par "#internal:".',
+};
+
+export default role;
diff --git a/packages/phrases/src/locales/fr/errors/scope.ts b/packages/phrases/src/locales/fr/errors/scope.ts
new file mode 100644
index 000000000..c8b0b19dd
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/scope.ts
@@ -0,0 +1,6 @@
+const scope = {
+ name_exists: 'Le nom de portée {{name}} est déjà utilisé',
+ name_with_space: "Le nom de la portée ne peut pas contenir d'espace.",
+};
+
+export default scope;
diff --git a/packages/phrases/src/locales/fr/errors/session.ts b/packages/phrases/src/locales/fr/errors/session.ts
new file mode 100644
index 000000000..759f513c3
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/session.ts
@@ -0,0 +1,28 @@
+const 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.",
+ verification_session_not_found:
+ "La vérification n'a pas abouti. Redémarrez le processus de vérification et réessayez.",
+ verification_expired:
+ 'La connexion a expiré. Vérifiez à nouveau pour assurer la sécurité de votre compte.',
+ unauthorized: "Veuillez vous enregistrer d'abord.",
+ unsupported_prompt_name: "Nom d'invite non supporté.",
+ forgot_password_not_enabled:
+ "La fonctionnalité de réinitialisation de mot de passe n'est pas activée.",
+ verification_failed:
+ "La vérification n'a pas réussi. Veuillez recommencer le processus de vérification.",
+ connector_validation_session_not_found:
+ 'La session de validation de jeton de connecteur est introuvable.',
+ identifier_not_found:
+ 'Identifiant utilisateur introuvable. Veuillez retourner en arrière et vous connecter à nouveau.',
+ interaction_not_found:
+ "Session d'interaction introuvable. Veuillez retourner en arrière et recommencer la session.",
+};
+
+export default session;
diff --git a/packages/phrases/src/locales/fr/errors/sign-in-experiences.ts b/packages/phrases/src/locales/fr/errors/sign-in-experiences.ts
new file mode 100644
index 000000000..eddb2c097
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/sign-in-experiences.ts
@@ -0,0 +1,25 @@
+const 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_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.',
+ username_requires_password:
+ "Vous devez activer la définition d'un mot de passe pour l'identifiant d'inscription de nom d'utilisateur.",
+ passwordless_requires_verify:
+ "Vous devez activer la vérification pour l'identifiant d'inscription par e-mail/numéro de téléphone.",
+ miss_sign_up_identifier_in_sign_in:
+ "Les méthodes de connexion doivent contenir l'identifiant d'inscription.",
+ password_sign_in_must_be_enabled:
+ "La connexion par mot de passe doit être activée lorsque la définition d'un mot de passe est requise lors de l'inscription.",
+ code_sign_in_must_be_enabled:
+ "La connexion par code de vérification doit être activée lorsque la définition d'un mot de passe n'est pas requise lors de l'inscription.",
+ unsupported_default_language:
+ "Cette langue - {{language}} n'est pas prise en charge pour le moment.",
+ at_least_one_authentication_factor:
+ "Vous devez sélectionner au moins un facteur d'authentification.",
+};
+
+export default sign_in_experiences;
diff --git a/packages/phrases/src/locales/fr/errors/storage.ts b/packages/phrases/src/locales/fr/errors/storage.ts
new file mode 100644
index 000000000..407c2354f
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/storage.ts
@@ -0,0 +1,7 @@
+const storage = {
+ not_configured: "Le fournisseur de stockage n'est pas configuré.",
+ missing_parameter: 'Paramètre manquant {{parameter}} pour le fournisseur de stockage.',
+ upload_error: "Échec de l'envoi du fichier au fournisseur de stockage.",
+};
+
+export default storage;
diff --git a/packages/phrases/src/locales/fr/errors/swagger.ts b/packages/phrases/src/locales/fr/errors/swagger.ts
new file mode 100644
index 000000000..c49bfa431
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/swagger.ts
@@ -0,0 +1,7 @@
+const 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.',
+};
+
+export default swagger;
diff --git a/packages/phrases/src/locales/fr/errors/user.ts b/packages/phrases/src/locales/fr/errors/user.ts
new file mode 100644
index 000000000..584eaabea
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/user.ts
@@ -0,0 +1,33 @@
+const user = {
+ username_already_in_use: "Ce nom d'utilisateur est déjà utilisé.",
+ email_already_in_use: 'Cet e-mail est associé à un compte existant.',
+ phone_already_in_use: 'Ce numéro de téléphone est associé à un compte existant.',
+ invalid_email: 'Addresse email incorrecte.',
+ invalid_phone: 'Numéro de téléphone incorrect.',
+ email_not_exist: "L'adresse e-mail n'a pas encore été enregistrée.",
+ phone_not_exist: "Le numéro de téléphone n'a pas encore été enregistré.",
+ identity_not_exist: "Le compte social n'a pas encore été enregistré.",
+ identity_already_in_use: 'Le compte social a été enregistré.',
+ social_account_exists_in_profile: 'Vous avez déjà associé ce compte social.',
+ cannot_delete_self: 'Vous ne pouvez pas vous supprimer vous-même.',
+ sign_up_method_not_enabled: "Cette méthode d'inscription n'est pas activée.",
+ sign_in_method_not_enabled: "Cette méthode de connexion n'est pas activée.",
+ same_password: "Le nouveau mot de passe ne peut pas être identique à l'ancien.",
+ password_required_in_profile: 'Vous devez définir un mot de passe avant de vous connecter.',
+ new_password_required_in_profile: 'Vous devez définir un nouveau mot de passe.',
+ password_exists_in_profile: 'Le mot de passe existe déjà dans votre profil.',
+ username_required_in_profile: "Vous devez définir un nom d'utilisateur avant de vous connecter.",
+ username_exists_in_profile: "Le nom d'utilisateur existe déjà dans votre profil.",
+ email_required_in_profile: 'Vous devez ajouter une adresse e-mail avant de vous connecter.',
+ email_exists_in_profile: 'Votre profil est déjà associé à une adresse e-mail.',
+ phone_required_in_profile: 'Vous devez ajouter un numéro de téléphone avant de vous connecter.',
+ phone_exists_in_profile: 'Votre profil est déjà associé à un numéro de téléphone.',
+ email_or_phone_required_in_profile:
+ 'Vous devez ajouter une adresse e-mail ou un numéro de téléphone avant de vous connecter.',
+ suspended: 'Ce compte est suspendu.',
+ user_not_exist: "L'utilisateur avec {{ identifier }} n'existe pas.",
+ missing_profile: 'Vous devez fournir des informations supplémentaires avant de vous connecter.',
+ role_exists: "L'ID de rôle {{roleId}} a déjà été ajouté à cet utilisateur",
+};
+
+export default user;
diff --git a/packages/phrases/src/locales/fr/errors/verification-code.ts b/packages/phrases/src/locales/fr/errors/verification-code.ts
new file mode 100644
index 000000000..c8494a610
--- /dev/null
+++ b/packages/phrases/src/locales/fr/errors/verification-code.ts
@@ -0,0 +1,13 @@
+const verification_code = {
+ phone_email_empty: "Les deux le téléphone et l'email sont vides.",
+ not_found:
+ "Le code de vérification n'a pas été trouvé. Veuillez d'abord envoyer le code de vérification.",
+ phone_mismatch: 'Téléphone ne correspond pas. Veuillez demander un nouveau code de vérification.',
+ email_mismatch: 'Email ne correspond pas. Veuillez demander un nouveau code de vérification.',
+ code_mismatch: 'Code de vérification invalide.',
+ expired: 'Le code de vérification a expiré. Veuillez demander un nouveau code de vérification.',
+ exceed_max_try:
+ 'La limite de tentatives de code de vérification a été dépassée. Veuillez demander un nouveau code de vérification.',
+};
+
+export default verification_code;
diff --git a/packages/phrases/src/locales/fr/index.ts b/packages/phrases/src/locales/fr/index.ts
index 32a4cb4f8..e8fcec578 100644
--- a/packages/phrases/src/locales/fr/index.ts
+++ b/packages/phrases/src/locales/fr/index.ts
@@ -1,6 +1,6 @@
import type { LocalePhrase } from '../../types.js';
-import errors from './errors.js';
+import errors from './errors/index.js';
import translation from './translation/index.js';
const fr: LocalePhrase = Object.freeze({
diff --git a/packages/phrases/src/locales/fr/translation/admin-console/index.ts b/packages/phrases/src/locales/fr/translation/admin-console/index.ts
index d0c1a8151..07500c9e5 100644
--- a/packages/phrases/src/locales/fr/translation/admin-console/index.ts
+++ b/packages/phrases/src/locales/fr/translation/admin-console/index.ts
@@ -19,7 +19,7 @@ import profile from './profile.js';
import role_details from './role-details.js';
import roles from './roles.js';
import session_expired from './session-expired.js';
-import sign_in_exp from './sign-in-exp.js';
+import sign_in_exp from './sign-in-exp/index.js';
import tab_sections from './tab-sections.js';
import tabs from './tabs.js';
import user_details from './user-details.js';
diff --git a/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp.ts
deleted file mode 100644
index f8222fbb7..000000000
--- a/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp.ts
+++ /dev/null
@@ -1,184 +0,0 @@
-const sign_in_exp = {
- page_title: 'Expérience de connexion',
- 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',
- sign_up_and_sign_in: 'Sign-up and Sign-in', // UNTRANSLATED
- others: 'Autres',
- },
- welcome: {
- title: 'Customize sign-in experience', // UNTRANSLATED
- description:
- 'Get started fast with your first sign-in setup. This guide walks you through all the necessary settings.', // UNTRANSLATED
- get_started: 'Commencez',
- apply_remind:
- "Veuillez noter que l'expérience de connexion s'appliquera à toutes les applications sous ce compte.",
- },
- 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',
- favicon: 'Favicon', // UNTRANSLATED
- 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',
- logo_image: 'App logo', // UNTRANSLATED
- dark_logo_image: 'App logo (Dark)', // UNTRANSLATED
- logo_image_error: 'App logo: {{error}}', // UNTRANSLATED
- favicon_error: 'Favicon: {{error}}', // UNTRANSLATED
- },
- custom_css: {
- title: 'Custom CSS', // UNTRANSLATED
- css_code_editor_title: 'Personalize your UI with Custom CSS', // UNTRANSLATED
- css_code_editor_description1: 'See the example of Custom CSS.', // UNTRANSLATED
- css_code_editor_description2: '{{link}}', // UNTRANSLATED
-
- css_code_editor_description_link_content: 'Learn more', // UNTRANSLATED
- css_code_editor_content_placeholder:
- 'Enter your custom CSS to tailor the styles of anything to your exact specifications. Express your creativity and make your UI stand out.', // UNTRANSLATED
- },
- sign_up_and_sign_in: {
- identifiers_email: 'Email address', // UNTRANSLATED
- identifiers_phone: 'Phone number', // UNTRANSLATED
- identifiers_username: 'Username', // UNTRANSLATED
- identifiers_email_or_sms: 'Email address or phone number', // UNTRANSLATED
- identifiers_none: 'Not applicable', // UNTRANSLATED
- and: 'and', // UNTRANSLATED
- or: 'or', // UNTRANSLATED
- sign_up: {
- title: 'SIGN-UP', // UNTRANSLATED
- sign_up_identifier: 'Sign-up identifier', // UNTRANSLATED
- identifier_description:
- 'The sign-up identifier is required for account creation and must be included in your sign-in screen.', // UNTRANSLATED
- sign_up_authentication: 'Authentication setting for sign-up', // UNTRANSLATED
- authentication_description:
- 'All selected actions will be obligatory for users to complete the flow.', // UNTRANSLATED
- set_a_password_option: 'Create your password', // UNTRANSLATED
- verify_at_sign_up_option: 'Verify at sign-up', // UNTRANSLATED
- social_only_creation_description: '(This apply to social only account creation)', // UNTRANSLATED
- },
- sign_in: {
- title: 'SIGN-IN', // UNTRANSLATED
- sign_in_identifier_and_auth: 'Identifier and authentication settings for sign-in', // UNTRANSLATED
- description:
- 'Users can sign in using any of the options available. Adjust the layout by drag and dropping below options.', // UNTRANSLATED
- add_sign_in_method: 'Add Sign-in Method', // UNTRANSLATED
- password_auth: 'Password', // UNTRANSLATED
- verification_code_auth: 'Verification code', // UNTRANSLATED
- auth_swap_tip: 'Swap the options below to determine which appears first in the flow.', // UNTRANSLATED
- require_auth_factor: 'You have to select at least one authentication factor.', // UNTRANSLATED
- },
- social_sign_in: {
- title: 'SOCIAL SIGN-IN', // UNTRANSLATED
- social_sign_in: 'Social sign-in', // UNTRANSLATED
- description:
- 'Depending on the mandatory identifier you set up, your user may be asked to provide an identifier when signing up via social connector.', // UNTRANSLATED
- add_social_connector: 'Add Social Connector', // UNTRANSLATED
- set_up_hint: {
- not_in_list: 'Not in the list?', // UNTRANSLATED
- set_up_more: 'Set up', // UNTRANSLATED
- go_to: 'other social connectors now.', // UNTRANSLATED
- },
- },
- tip: {
- set_a_password: 'A unique set of a password to your username is a must.', // UNTRANSLATED
- verify_at_sign_up:
- 'We currently only support verified email. Your user base may contain a large number of poor-quality email addresses if no validation.', // UNTRANSLATED
- password_auth:
- 'This is essential as you have enabled the option to set a password during the sign-up process.', // UNTRANSLATED
- verification_code_auth:
- 'This is essential as you have only enabled the option to provide verification code when signing up. You’re free to uncheck the box when password set-up is allowed at the sign-up process.', // UNTRANSLATED
- delete_sign_in_method:
- 'This is essential as you have selected {{identifier}} as a required identifier.', // UNTRANSLATED
- },
- },
- others: {
- terms_of_use: {
- title: "CONDITIONS D'UTILISATION",
- terms_of_use: "Conditions d'utilisation URL",
- terms_of_use_placeholder: 'https://vos.conditions.utilisation/',
- privacy_policy: 'Politique de confidentialité URL',
- privacy_policy_placeholder: 'https://votre.politique.confidentialite/',
- },
- languages: {
- title: 'LANGAGES',
- enable_auto_detect: 'Enable auto-detect', // UNTRANSLATED
- description:
- "Your software detects the user's locale setting and switches to the local language. You can add new languages by translating UI from English to another language.", // UNTRANSLATED
- manage_language: 'Manage language', // UNTRANSLATED
- default_language: 'Default language', // UNTRANSLATED
- default_language_description_auto:
- 'The default language will be used when the detected user language isn’t covered in the current language library.', // UNTRANSLATED
- default_language_description_fixed:
- 'When auto-detect is off, the default language is the only language your software will show. Turn on auto-detect for language extension.', // UNTRANSLATED
- },
- manage_language: {
- title: 'Manage language', // UNTRANSLATED
- subtitle:
- 'Localize the product experience by adding languages and translations. Your contribution can be set as the default language.', // UNTRANSLATED
- add_language: 'Add Language', // UNTRANSLATED
- logto_provided: 'Logto provided', // UNTRANSLATED
- key: 'Key', // UNTRANSLATED
- logto_source_values: 'Logto source values', // UNTRANSLATED
- custom_values: 'Custom values', // UNTRANSLATED
- clear_all_tip: 'Clear all values', // UNTRANSLATED
- unsaved_description: 'Changes won’t be saved if you leave this page without saving.', // UNTRANSLATED
- deletion_tip: 'Delete the language', // UNTRANSLATED
- deletion_title: 'Do you want to delete the added language?', // UNTRANSLATED
- deletion_description:
- 'After deletion, your users won’t be able to browse in that language again.', // UNTRANSLATED
- default_language_deletion_title: 'Default language can’t be deleted.', // UNTRANSLATED
- default_language_deletion_description:
- '{{language}} is set as your default language and can’t be deleted. ', // UNTRANSLATED
- },
- advanced_options: {
- title: 'OPTIONS AVANCÉES',
- enable_user_registration: 'Enable user registration', // UNTRANSLATED
- enable_user_registration_description:
- 'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.', // UNTRANSLATED
- },
- },
- setup_warning: {
- no_connector_sms:
- 'No SMS connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"', // UNTRANSLATED
- no_connector_email:
- 'No email connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"', // UNTRANSLATED
- no_connector_social:
- 'No social connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"', // UNTRANSLATED
- no_added_social_connector:
- "Vous avez maintenant configuré quelques connecteurs sociaux. Assurez-vous d'en ajouter quelques-uns à votre expérience de connexion.", // UNTRANSLATED
- setup_link: 'Set up',
- },
- save_alert: {
- description:
- 'You are implementing new sign-in and sign-up procedures. All of your users may be affected by the new set-up. Are you sure to commit to the change?', // UNTRANSLATED
- before: 'Avant',
- after: 'Après',
- sign_up: 'Sign-up', // UNTRANSLATED
- sign_in: 'Sign-in', // UNTRANSLATED
- social: 'Social', // UNTRANSLATED
- },
- preview: {
- title: "Aperçu de l'expérience de connexion",
- live_preview: 'Live preview', // UNTRANSLATED
- live_preview_tip: 'Save to preview changes', // UNTRANSLATED
- native: 'Natif',
- desktop_web: 'Web ordinateur',
- mobile_web: 'Web mobile',
- },
-};
-
-export default sign_in_exp;
diff --git a/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp/index.ts b/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp/index.ts
new file mode 100644
index 000000000..45fc5a545
--- /dev/null
+++ b/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp/index.ts
@@ -0,0 +1,87 @@
+import others from './others.js';
+import sign_up_and_sign_in from './sign-up-and-sign-in.js';
+
+const sign_in_exp = {
+ page_title: 'Expérience de connexion',
+ 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',
+ sign_up_and_sign_in: 'Sign up and Sign in',
+ others: 'Autres',
+ },
+ welcome: {
+ title: 'Customize sign-in experience',
+ description:
+ 'Get started fast with your first sign-in setup. This guide walks you through all the necessary settings.',
+ get_started: 'Commencez',
+ apply_remind:
+ "Veuillez noter que l'expérience de connexion s'appliquera à toutes les applications sous ce compte.",
+ },
+ 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',
+ favicon: 'Favicon',
+ 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',
+ logo_image: 'App logo',
+ dark_logo_image: 'App logo (Dark)',
+ logo_image_error: 'App logo: {{error}}',
+ favicon_error: 'Favicon: {{error}}',
+ },
+ custom_css: {
+ title: 'Custom CSS',
+ css_code_editor_title: 'Personalize your UI with Custom CSS',
+ css_code_editor_description1: 'See the example of Custom CSS.',
+ css_code_editor_description2: '{{link}}',
+ css_code_editor_description_link_content: 'Learn more',
+ css_code_editor_content_placeholder:
+ 'Enter your custom CSS to tailor the styles of anything to your exact specifications. Express your creativity and make your UI stand out.',
+ },
+ setup_warning: {
+ no_connector_sms:
+ 'No SMS connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"',
+ no_connector_email:
+ 'No email connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"',
+ no_connector_social:
+ 'No social connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"',
+ no_added_social_connector:
+ "Vous avez maintenant configuré quelques connecteurs sociaux. Assurez-vous d'en ajouter quelques-uns à votre expérience de connexion.",
+ setup_link: 'Set up',
+ },
+ save_alert: {
+ description:
+ 'You are implementing new sign-in and sign-up procedures. All of your users may be affected by the new set-up. Are you sure to commit to the change?',
+ before: 'Avant',
+ after: 'Après',
+ sign_up: 'Sign-up',
+ sign_in: 'Sign-in',
+ social: 'Social',
+ },
+ preview: {
+ title: "Aperçu de l'expérience de connexion",
+ live_preview: 'Live preview',
+ live_preview_tip: 'Save to preview changes',
+ native: 'Natif',
+ desktop_web: 'Web ordinateur',
+ mobile_web: 'Web mobile',
+ },
+ others,
+ sign_up_and_sign_in,
+};
+
+export default sign_in_exp;
diff --git a/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp/others.ts b/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp/others.ts
new file mode 100644
index 000000000..d11e45221
--- /dev/null
+++ b/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp/others.ts
@@ -0,0 +1,48 @@
+const others = {
+ terms_of_use: {
+ title: "CONDITIONS D'UTILISATION",
+ terms_of_use: "Conditions d'utilisation URL",
+ terms_of_use_placeholder: 'https://vos.conditions.utilisation/',
+ privacy_policy: 'Politique de confidentialité URL',
+ privacy_policy_placeholder: 'https://votre.politique.confidentialite/',
+ },
+ languages: {
+ title: 'LANGAGES',
+ enable_auto_detect: 'Enable auto-detect',
+ description:
+ "Your software detects the user's locale setting and switches to the local language. You can add new languages by translating UI from English to another language.",
+ manage_language: 'Manage language',
+ default_language: 'Default language',
+ default_language_description_auto:
+ 'The default language will be used when the detected user language isn’t covered in the current language library.',
+ default_language_description_fixed:
+ 'When auto-detect is off, the default language is the only language your software will show. Turn on auto-detect for language extension.',
+ },
+ manage_language: {
+ title: 'Manage language',
+ subtitle:
+ 'Localize the product experience by adding languages and translations. Your contribution can be set as the default language.',
+ add_language: 'Add Language',
+ logto_provided: 'Logto provided',
+ key: 'Key',
+ logto_source_values: 'Logto source values',
+ custom_values: 'Custom values',
+ clear_all_tip: 'Clear all values',
+ unsaved_description: 'Changes won’t be saved if you leave this page without saving.',
+ deletion_tip: 'Delete the language',
+ deletion_title: 'Do you want to delete the added language?',
+ deletion_description:
+ 'After deletion, your users won’t be able to browse in that language again.',
+ default_language_deletion_title: 'Default language can’t be deleted.',
+ default_language_deletion_description:
+ '{{language}} is set as your default language and can’t be deleted. ',
+ },
+ advanced_options: {
+ title: 'OPTIONS AVANCÉES',
+ enable_user_registration: 'Enable user registration',
+ enable_user_registration_description:
+ 'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
+ },
+};
+
+export default others;
diff --git a/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts b/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts
new file mode 100644
index 000000000..3dd26b12c
--- /dev/null
+++ b/packages/phrases/src/locales/fr/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts
@@ -0,0 +1,57 @@
+const sign_up_and_sign_in = {
+ identifiers_email: 'Email address',
+ identifiers_phone: 'Phone number',
+ identifiers_username: 'Username',
+ identifiers_email_or_sms: 'Email address or phone number',
+ identifiers_none: 'Not applicable',
+ and: 'and',
+ or: 'or',
+ sign_up: {
+ title: 'SIGN UP',
+ sign_up_identifier: 'Sign-up identifier',
+ identifier_description:
+ 'The sign-up identifier is required for account creation and must be included in your sign-in screen.',
+ sign_up_authentication: 'Authentication setting for sign-up',
+ authentication_description:
+ 'All selected actions will be obligatory for users to complete the flow.',
+ set_a_password_option: 'Create your password',
+ verify_at_sign_up_option: 'Verify at sign-up',
+ social_only_creation_description: '(This apply to social only account creation)',
+ },
+ sign_in: {
+ title: 'SIGN IN',
+ sign_in_identifier_and_auth: 'Identifier and authentication settings for sign-in',
+ description:
+ 'Users can sign in using any of the options available. Adjust the layout by drag and dropping below options.',
+ add_sign_in_method: 'Add Sign-in Method',
+ password_auth: 'Password',
+ verification_code_auth: 'Verification code',
+ auth_swap_tip: 'Swap the options below to determine which appears first in the flow.',
+ require_auth_factor: 'You have to select at least one authentication factor.',
+ },
+ social_sign_in: {
+ title: 'SOCIAL SIGN-IN',
+ social_sign_in: 'Social sign-in',
+ description:
+ 'Depending on the mandatory identifier you set up, your user may be asked to provide an identifier when signing up via social connector.',
+ add_social_connector: 'Add Social Connector',
+ set_up_hint: {
+ not_in_list: 'Not in the list?',
+ set_up_more: 'Set up',
+ go_to: 'other social connectors now.',
+ },
+ },
+ tip: {
+ set_a_password: 'A unique set of a password to your username is a must.',
+ verify_at_sign_up:
+ 'We currently only support verified email. Your user base may contain a large number of poor-quality email addresses if no validation.',
+ password_auth:
+ 'This is essential as you have enabled the option to set a password during the sign-up process.',
+ verification_code_auth:
+ 'This is essential as you have only enabled the option to provide verification code when signing up. You’re free to uncheck the box when password set-up is allowed at the sign-up process.',
+ delete_sign_in_method:
+ 'This is essential as you have selected {{identifier}} as a required identifier.',
+ },
+};
+
+export default sign_up_and_sign_in;
diff --git a/packages/phrases/src/locales/ja/index.ts b/packages/phrases/src/locales/ja/index.ts
index f085d71ef..62dd11f4c 100644
--- a/packages/phrases/src/locales/ja/index.ts
+++ b/packages/phrases/src/locales/ja/index.ts
@@ -1,7 +1,9 @@
+import type { LocalePhrase } from '../../types.js';
+
import errors from './errors/index.js';
import translation from './translation/index.js';
-const en = Object.freeze({
+const en: LocalePhrase = Object.freeze({
translation,
errors,
});
diff --git a/packages/phrases/src/locales/ko/errors.ts b/packages/phrases/src/locales/ko/errors.ts
deleted file mode 100644
index 7bd0ffd6b..000000000
--- a/packages/phrases/src/locales/ko/errors.ts
+++ /dev/null
@@ -1,194 +0,0 @@
-const errors = {
- request: {
- invalid_input: '입력된 값이 유효하지 않아요. {{details}}',
- general: '요청 중에 오류가 발생했어요.',
- },
- auth: {
- authorization_header_missing: '인증 헤더가 존재하지 않아요.',
- authorization_token_type_not_supported: '해당 인증 방법을 지원하지 않아요.',
- unauthorized: '인증되지 않았어요. 로그인 정보와 범위를 확인해 주세요.',
- forbidden: '접근이 금지되었어요. 로그인 권한과 역할을 확인해 주세요.',
- expected_role_not_found:
- '예상되는 역할을 찾을 수 없어요. 해당 사용자의 권한 또는 역할을 확인해 주세요.',
- jwt_sub_missing: 'JWT에서 `sub`를 찾을 수 없어요.',
- require_re_authentication: '보호된 작업을 수행하려면 재인증이 필요해요.',
- },
- guard: {
- invalid_input: '{{type}} 요청 타입은 유효하지 않아요.',
- invalid_pagination: '요청의 Pagination 값이 유효하지 않아요.',
- can_not_get_tenant_id: '요청에서 테넌트 ID를 가져올 수 없습니다.',
- file_size_exceeded: '파일 크기가 초과되었습니다.',
- mime_type_not_allowed: 'MIME 타입이 허용되지 않습니다.',
- },
- oidc: {
- aborted: 'End 사용자가 상호 작용을 중단했어요.',
- invalid_scope: '{{scope}} 범위를 지원하지 않아요.',
- invalid_scope_plural: '{{scopes}} 범위들을 지원하지 않아요.',
- invalid_token: '유효하지 않은 토큰이 제공되었어요.',
- invalid_client_metadata: '유효하지 않은 클라이언트 메타데이터가 제공되었어요.',
- insufficient_scope: '요청된 {{scopes}} 범위에서 액세스 토큰을 찾을 수 없어요.',
- invalid_request: '요청이 유효하지 않아요.',
- invalid_grant: '승인 요청이 유효하지 않아요.',
- invalid_redirect_uri: '`redirect_uri`가 등록된 클라이언트의 `redirect_uris`와 일치하지 않아요.',
- access_denied: '접근이 금지되었어요.',
- invalid_target: '유효하지 않은 리소스 표시예요.',
- unsupported_grant_type: '지원하지 않는 `grant_type` 요청이에요.',
- unsupported_response_mode: '지원하지 않는 `response_mode` 요청이에요.',
- unsupported_response_type: '지원하지 않은 `response_type` 요청이에요.',
- provider_error: 'OIDC 내부 오류: {{message}}.',
- },
- user: {
- username_already_in_use: '이 사용자 이름은 다른 사람이 이미 사용 중이에요.',
- email_already_in_use: '이 이메일은 다른 계정에서 이미 사용 중이에요.',
- phone_already_in_use: '이 휴대전화번호는 다른 계정에서 이미 사용 중이에요.',
- invalid_email: '유효하지 않은 이메일이에요.',
- invalid_phone: '유효하지 않은 휴대전화번호예요.',
- email_not_exist: '이메일 주소가 아직 등록되지 않았어요.',
- phone_not_exist: '휴대전화번호가 아직 등록되지 않았어요.',
- identity_not_exist: '소셜 계정이 아직 등록되지 않았어요.',
- identity_already_in_use: '소셜 계정이 이미 등록되어 있어요.',
- social_account_exists_in_profile: '이 소셜 계정은 이미 연동되어 있습니다.',
- cannot_delete_self: '자기 자신을 삭제할 수 없어요.',
- sign_up_method_not_enabled: '이 회원가입 방법은 활성화되어있지 않아요.',
- sign_in_method_not_enabled: '이 로그인 방법은 활성화되어있지 않아요.',
- same_password: '새로운 비밀번호는 이전 비밀번호와 같으면 안 돼요.',
- password_required_in_profile: '로그인 전에 비밀번호를 설정해야 해요.',
- new_password_required_in_profile: '새로운 비밀번호를 설정해야 해요.',
- password_exists_in_profile: '이미 비밀번호가 설정되어 있어요.',
- username_required_in_profile: '로그인 전에 사용자 이름을 설정해야 해요.',
- username_exists_in_profile: '이미 사용자 이름이 설정되어 있어요.',
- email_required_in_profile: '로그인 전에 이메일 주소를 설정해야 해요.',
- email_exists_in_profile: '이미 이메일 주소가 설정되어 있어요.',
- phone_required_in_profile: '로그인 전에 휴대전화번호를 설정해야 해요.',
- phone_exists_in_profile: '이미 휴대전화번호가 설정되어 있어요.',
- email_or_phone_required_in_profile:
- '로그인 전에 이메일 주소 또는 휴대전화번호를 설정해야 해요.',
- suspended: '이 계정은 일시 정지되었어요.',
- user_not_exist: '{{identifier}}의 사용자가 아직 등록되지 않았어요.',
- missing_profile: '로그인 전에 추가 정보를 제공해야 해요.',
- role_exists: '역할 ID {{roleId}}은/는 이미 이 사용자에게 할당되어 있어요.',
- },
- password: {
- unsupported_encryption_method: '{{name}} 암호화 방법을 지원하지 않아요.',
- pepper_not_found: '비밀번호 Pepper를 찾을 수 없어요. Core 환경설정을 확인해 주세요.',
- },
- session: {
- not_found: '세션을 찾을 수 없어요. 다시 로그인해 주세요.',
- invalid_credentials: '유효하지 않은 로그인 정보예요. 입력된 값을 다시 확인해 주세요.',
- invalid_sign_in_method: '현재 로그인 방법을 지원하지 않아요.',
- invalid_connector_id: '소셜 ID {{connectorId}}를 찾을 수 없어요.',
- insufficient_info: '로그인 정보가 충분하지 않아요.',
- connector_id_mismatch: '연동 ID가 세션 정보와 일치하지 않아요.',
- connector_session_not_found: '연동 세션을 찾을 수 없어요. 다시 로그인해 주세요.',
- verification_session_not_found:
- '검증을 실패했어요. 검증 과정을 다시 시작하고 다시 시도해 주세요.',
- verification_expired:
- '연결 시간이 초과되었어요. 검증을 다시 시작하고, 계정이 안전한지 확인해 주세요.',
- unauthorized: '로그인을 먼저 해 주세요.',
- unsupported_prompt_name: '지원하지 않는 Prompt 이름이에요.',
- forgot_password_not_enabled: '비밀번호 찾기가 활성화되어있지 않아요.',
- verification_failed:
- '인증이 성공적으로 완료되지 않았어요. 처음부터 다시 인증 과정을 거쳐 주세요.',
- connector_validation_session_not_found: '연동 세션 유효성 검증을 위한 토큰을 찾을 수 없어요.',
- identifier_not_found: '사용자 식별자를 찾을 수 없어요. 처음부터 다시 로그인을 시도해 주세요.',
- interaction_not_found: '인터렉션 세션을 찾을 수 없어요. 처음부터 다시 세션을 시작해 주세요.',
- },
- connector: {
- general: '커넥터에서 오류가 발생했습니다: {{errorDescription}}',
- not_found: '{{type}} 값을 가진 연동 종류를 찾을 수 없어요.',
- not_enabled: '연동이 활성화되지 않았어요.',
- invalid_metadata: '연동 메타데이터가 유효하지 않아요.',
- invalid_config_guard: '연동 설정 데이터가 유효하지 않아요.',
- unexpected_type: '예상하지 않은 연동 종류에요.',
- invalid_request_parameters: '잘못된 요청 파라미터가 있어요.',
- insufficient_request_parameters: '요청 데이터에서 일부 정보가 없어요.',
- invalid_config: '연동 설정이 유효하지 않아요.',
- invalid_response: '연동 응답이 유효하지 않아요.',
- template_not_found: '연동 예제 설정을 찾을 수 없어요.',
- not_implemented: '{{method}}은 아직 구현되지 않았어요.',
- social_invalid_access_token: '연동 서비스의 Access 토큰이 유효하지 않아요.',
- invalid_auth_code: '연동 서비스의 Auth 코드가 유효하지 않아요.',
- social_invalid_id_token: '연동 서비스의 ID 토큰이 유효하지 않아요.',
- authorization_failed: '사용자의 인증 과정이 성공적으로 마무리되지 않았어요.',
- social_auth_code_invalid: 'Access 토큰을 가져올 수 없어요. Authorization 코드를 확인해 주세요.',
- more_than_one_sms: 'SMS 서비스는 1개만 연동되어야 해요.',
- more_than_one_email: '이메일 서비스는 1개만 연동되어야 해요.',
- more_than_one_connector_factory:
- '다수의 커넥터 팩토리가 발견되었습니다 (ID {{connectorIds}}). 불필요한 팩토리는 제거해주세요.',
- db_connector_type_mismatch: '종류가 일치하지 않은 연동 서비스가 DB에 존재해요.',
- not_found_with_connector_id: '주어진 연동 ID로 연동 설정을 찾을 수 없어요.',
- multiple_instances_not_supported: '선택된 연동 기준으로 여러 인스턴스를 생성할 수 없어요.',
- invalid_type_for_syncing_profile: '소셜 연동만 사용자 프로파일을 동기화 할 수 있어요.',
- can_not_modify_target: '연동 목표를 수정할 수 없어요.',
- should_specify_target: "'목표'를 반드시 지정해야 해요.",
- multiple_target_with_same_platform: '같은 목표와 플랫폼에 여러 소셜 연동을 가질 수 없어요.',
- cannot_overwrite_metadata_for_non_standard_connector:
- '이 연동의 메타데이터를 덮어쓸 수 없어요.',
- },
- verification_code: {
- phone_email_empty: '전화번호와 이메일이 모두 비어 있어요.',
- not_found: '인증 코드를 찾을 수 없어요. 인증 코드를 먼저 요청하세요.',
- phone_mismatch: '전화번호가 맞지 않아요. 새 인증 코드를 요청해 주세요.',
- email_mismatch: '이메일이 맞지 않아요. 새 인증 코드를 요청해 주세요.',
- code_mismatch: '인증 코드가 일치하지 않아요.',
- expired: '인증 코드가 만료되었어요. 새 인증 코드를 요청해 주세요.',
- exceed_max_try: '인증 코드 재시도 한도에 도달했어요. 새 인증 코드를 요청해 주세요.',
- },
- sign_in_experiences: {
- empty_content_url_of_terms_of_use:
- '이용 약관 URL이 비어 있어요. 이용 약관이 활성화되어 있다면, 이용 약관 URL를 설정해 주세요.',
- empty_social_connectors: '연동된 소셜이 없어요. 소셜 로그인을 사용한다면, 연동해 주세요.',
- enabled_connector_not_found: '활성된 {{type}} 연동을 찾을 수 없어요.',
- not_one_and_only_one_primary_sign_in_method:
- '반드시 하나의 메인 로그인 방법이 설정되어야 해요. 입력된 값을 확인해주세요.',
- username_requires_password: '회원가입 식별자에 대한 비밀번호 설정을 사용하도록 설정해야 해요.',
- passwordless_requires_verify:
- '이메일/휴대전화번호 가입 식별자에 대해 확인을 사용하도록 설정해야 해요.',
- miss_sign_up_identifier_in_sign_in: '로그인 방법에는 회원가입 ID가 포함되어야 해요.',
- password_sign_in_must_be_enabled:
- '회원가입 시 비밀번호를 설정해야 할 경우 비밀번호 로그인을 사용하도록 설정해야 해요.',
- code_sign_in_must_be_enabled:
- '비밀번호를 설정할 필요가 없을 때는 인증 코드 로그인을 활성화해야 해요.',
- unsupported_default_language: '{{language}} 언어는 아직 지원하지 않아요.',
- at_least_one_authentication_factor: '최소한 하나의 인증 방법을 선택해야 해요.',
- },
- localization: {
- cannot_delete_default_language: '{{languageTag}} 언어는 기본 언어이므로 삭제할 수 없어요.',
- invalid_translation_structure:
- '유효하지 않은 데이터 스키마예요. 입력된 값을 다시 확인해 주세요.',
- },
- swagger: {
- invalid_zod_type: '유효하지 않은 Zod 종류에요. Route Guard 설정을 확인해 주세요.',
- not_supported_zod_type_for_params:
- '지원되지 않는 Zod 종류예요. Route Guard 설정을 확인해 주세요.',
- },
- entity: {
- create_failed: '{{name}} 생성을 실패하였어요.',
- not_exists: '{{name}}는 존재하지 않아요.',
- not_exists_with_id: '{{id}} ID를 가진 {{name}}는 존재하지 않아요.',
- not_found: '리소스가 존재하지 않아요.',
- },
- log: {
- invalid_type: '로그 종류가 유효하지 않아요.',
- },
- role: {
- name_in_use: '역할 이름 {{name}}이/가 이미 사용 중이에요.',
- scope_exists: '범위 ID {{scopeId}}이/가 이미 이 역할에 추가되어 있어요.',
- user_exists: '사용자 ID {{userId}}이/가 이미 이 역할에 추가되어 있어요.',
- default_role_missing:
- '기본 역할 이름의 일부가 데이터베이스에 존재하지 않아요. 먼저 역할을 생성해 주세요.',
- internal_role_violation:
- '내부 역할 위반: Logto에서 금지되는 내부 역할을 업데이트하거나 삭제하려고 할 수 있습니다. 새 역할을 만드는 경우 "#internal:"으로 시작하지 않는 다른 이름을 시도해보세요.',
- },
- scope: {
- name_exists: '범위 이름 {{name}}이/가 이미 사용 중이에요.',
- name_with_space: '범위 이름에 공백을 포함할 수 없어요.',
- },
- storage: {
- not_configured: '저장소 공급자가 구성되지 않았습니다.',
- missing_parameter: '저장소 공급자에 대한 누락된 매개변수 {{parameter}}.',
- upload_error: '파일을 저장소 공급자에 업로드하지 못했습니다.',
- },
-};
-
-export default errors;
diff --git a/packages/phrases/src/locales/ko/errors/auth.ts b/packages/phrases/src/locales/ko/errors/auth.ts
new file mode 100644
index 000000000..ce80f09a2
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/auth.ts
@@ -0,0 +1,12 @@
+const auth = {
+ authorization_header_missing: '인증 헤더가 존재하지 않아요.',
+ authorization_token_type_not_supported: '해당 인증 방법을 지원하지 않아요.',
+ unauthorized: '인증되지 않았어요. 로그인 정보와 범위를 확인해 주세요.',
+ forbidden: '접근이 금지되었어요. 로그인 권한과 역할을 확인해 주세요.',
+ expected_role_not_found:
+ '예상되는 역할을 찾을 수 없어요. 해당 사용자의 권한 또는 역할을 확인해 주세요.',
+ jwt_sub_missing: 'JWT에서 `sub`를 찾을 수 없어요.',
+ require_re_authentication: '보호된 작업을 수행하려면 재인증이 필요해요.',
+};
+
+export default auth;
diff --git a/packages/phrases/src/locales/ko/errors/connector.ts b/packages/phrases/src/locales/ko/errors/connector.ts
new file mode 100644
index 000000000..ba0cf54bd
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/connector.ts
@@ -0,0 +1,33 @@
+const connector = {
+ general: '커넥터에서 오류가 발생했습니다: {{errorDescription}}',
+ not_found: '{{type}} 값을 가진 연동 종류를 찾을 수 없어요.',
+ not_enabled: '연동이 활성화되지 않았어요.',
+ invalid_metadata: '연동 메타데이터가 유효하지 않아요.',
+ invalid_config_guard: '연동 설정 데이터가 유효하지 않아요.',
+ unexpected_type: '예상하지 않은 연동 종류에요.',
+ invalid_request_parameters: '잘못된 요청 파라미터가 있어요.',
+ insufficient_request_parameters: '요청 데이터에서 일부 정보가 없어요.',
+ invalid_config: '연동 설정이 유효하지 않아요.',
+ invalid_response: '연동 응답이 유효하지 않아요.',
+ template_not_found: '연동 예제 설정을 찾을 수 없어요.',
+ not_implemented: '{{method}}은 아직 구현되지 않았어요.',
+ social_invalid_access_token: '연동 서비스의 Access 토큰이 유효하지 않아요.',
+ invalid_auth_code: '연동 서비스의 Auth 코드가 유효하지 않아요.',
+ social_invalid_id_token: '연동 서비스의 ID 토큰이 유효하지 않아요.',
+ authorization_failed: '사용자의 인증 과정이 성공적으로 마무리되지 않았어요.',
+ social_auth_code_invalid: 'Access 토큰을 가져올 수 없어요. Authorization 코드를 확인해 주세요.',
+ more_than_one_sms: 'SMS 서비스는 1개만 연동되어야 해요.',
+ more_than_one_email: '이메일 서비스는 1개만 연동되어야 해요.',
+ more_than_one_connector_factory:
+ '다수의 커넥터 팩토리가 발견되었습니다 (ID {{connectorIds}}). 불필요한 팩토리는 제거해주세요.',
+ db_connector_type_mismatch: '종류가 일치하지 않은 연동 서비스가 DB에 존재해요.',
+ not_found_with_connector_id: '주어진 연동 ID로 연동 설정을 찾을 수 없어요.',
+ multiple_instances_not_supported: '선택된 연동 기준으로 여러 인스턴스를 생성할 수 없어요.',
+ invalid_type_for_syncing_profile: '소셜 연동만 사용자 프로파일을 동기화 할 수 있어요.',
+ can_not_modify_target: '연동 목표를 수정할 수 없어요.',
+ should_specify_target: "'목표'를 반드시 지정해야 해요.",
+ multiple_target_with_same_platform: '같은 목표와 플랫폼에 여러 소셜 연동을 가질 수 없어요.',
+ cannot_overwrite_metadata_for_non_standard_connector: '이 연동의 메타데이터를 덮어쓸 수 없어요.',
+};
+
+export default connector;
diff --git a/packages/phrases/src/locales/ko/errors/entity.ts b/packages/phrases/src/locales/ko/errors/entity.ts
new file mode 100644
index 000000000..b083a61cb
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/entity.ts
@@ -0,0 +1,8 @@
+const entity = {
+ create_failed: '{{name}} 생성을 실패하였어요.',
+ not_exists: '{{name}}는 존재하지 않아요.',
+ not_exists_with_id: '{{id}} ID를 가진 {{name}}는 존재하지 않아요.',
+ not_found: '리소스가 존재하지 않아요.',
+};
+
+export default entity;
diff --git a/packages/phrases/src/locales/ko/errors/guard.ts b/packages/phrases/src/locales/ko/errors/guard.ts
new file mode 100644
index 000000000..3f2695d28
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/guard.ts
@@ -0,0 +1,9 @@
+const guard = {
+ invalid_input: '{{type}} 요청 타입은 유효하지 않아요.',
+ invalid_pagination: '요청의 Pagination 값이 유효하지 않아요.',
+ can_not_get_tenant_id: '요청에서 테넌트 ID를 가져올 수 없습니다.',
+ file_size_exceeded: '파일 크기가 초과되었습니다.',
+ mime_type_not_allowed: 'MIME 타입이 허용되지 않습니다.',
+};
+
+export default guard;
diff --git a/packages/phrases/src/locales/ko/errors/index.ts b/packages/phrases/src/locales/ko/errors/index.ts
new file mode 100644
index 000000000..c3f5e05ec
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/index.ts
@@ -0,0 +1,39 @@
+import auth from './auth.js';
+import connector from './connector.js';
+import entity from './entity.js';
+import guard from './guard.js';
+import localization from './localization.js';
+import log from './log.js';
+import oidc from './oidc.js';
+import password from './password.js';
+import request from './request.js';
+import role from './role.js';
+import scope from './scope.js';
+import session from './session.js';
+import sign_in_experiences from './sign-in-experiences.js';
+import storage from './storage.js';
+import swagger from './swagger.js';
+import user from './user.js';
+import verification_code from './verification-code.js';
+
+const errors = {
+ request,
+ auth,
+ guard,
+ oidc,
+ user,
+ password,
+ session,
+ connector,
+ verification_code,
+ sign_in_experiences,
+ localization,
+ swagger,
+ entity,
+ log,
+ role,
+ scope,
+ storage,
+};
+
+export default errors;
diff --git a/packages/phrases/src/locales/ko/errors/localization.ts b/packages/phrases/src/locales/ko/errors/localization.ts
new file mode 100644
index 000000000..e369aa579
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/localization.ts
@@ -0,0 +1,6 @@
+const localization = {
+ cannot_delete_default_language: '{{languageTag}} 언어는 기본 언어이므로 삭제할 수 없어요.',
+ invalid_translation_structure: '유효하지 않은 데이터 스키마예요. 입력된 값을 다시 확인해 주세요.',
+};
+
+export default localization;
diff --git a/packages/phrases/src/locales/ko/errors/log.ts b/packages/phrases/src/locales/ko/errors/log.ts
new file mode 100644
index 000000000..0e513b9b7
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/log.ts
@@ -0,0 +1,5 @@
+const log = {
+ invalid_type: '로그 종류가 유효하지 않아요.',
+};
+
+export default log;
diff --git a/packages/phrases/src/locales/ko/errors/oidc.ts b/packages/phrases/src/locales/ko/errors/oidc.ts
new file mode 100644
index 000000000..91e75545e
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/oidc.ts
@@ -0,0 +1,19 @@
+const oidc = {
+ aborted: 'End 사용자가 상호 작용을 중단했어요.',
+ invalid_scope: '{{scope}} 범위를 지원하지 않아요.',
+ invalid_scope_plural: '{{scopes}} 범위들을 지원하지 않아요.',
+ invalid_token: '유효하지 않은 토큰이 제공되었어요.',
+ invalid_client_metadata: '유효하지 않은 클라이언트 메타데이터가 제공되었어요.',
+ insufficient_scope: '요청된 {{scopes}} 범위에서 액세스 토큰을 찾을 수 없어요.',
+ invalid_request: '요청이 유효하지 않아요.',
+ invalid_grant: '승인 요청이 유효하지 않아요.',
+ invalid_redirect_uri: '`redirect_uri`가 등록된 클라이언트의 `redirect_uris`와 일치하지 않아요.',
+ access_denied: '접근이 금지되었어요.',
+ invalid_target: '유효하지 않은 리소스 표시예요.',
+ unsupported_grant_type: '지원하지 않는 `grant_type` 요청이에요.',
+ unsupported_response_mode: '지원하지 않는 `response_mode` 요청이에요.',
+ unsupported_response_type: '지원하지 않은 `response_type` 요청이에요.',
+ provider_error: 'OIDC 내부 오류: {{message}}.',
+};
+
+export default oidc;
diff --git a/packages/phrases/src/locales/ko/errors/password.ts b/packages/phrases/src/locales/ko/errors/password.ts
new file mode 100644
index 000000000..45c9e2c96
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/password.ts
@@ -0,0 +1,6 @@
+const password = {
+ unsupported_encryption_method: '{{name}} 암호화 방법을 지원하지 않아요.',
+ pepper_not_found: '비밀번호 Pepper를 찾을 수 없어요. Core 환경설정을 확인해 주세요.',
+};
+
+export default password;
diff --git a/packages/phrases/src/locales/ko/errors/request.ts b/packages/phrases/src/locales/ko/errors/request.ts
new file mode 100644
index 000000000..0853924e5
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/request.ts
@@ -0,0 +1,6 @@
+const request = {
+ invalid_input: '입력된 값이 유효하지 않아요. {{details}}',
+ general: '요청 중에 오류가 발생했어요.',
+};
+
+export default request;
diff --git a/packages/phrases/src/locales/ko/errors/role.ts b/packages/phrases/src/locales/ko/errors/role.ts
new file mode 100644
index 000000000..110462c6d
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/role.ts
@@ -0,0 +1,11 @@
+const role = {
+ name_in_use: '역할 이름 {{name}}이/가 이미 사용 중이에요.',
+ scope_exists: '범위 ID {{scopeId}}이/가 이미 이 역할에 추가되어 있어요.',
+ user_exists: '사용자 ID {{userId}}이/가 이미 이 역할에 추가되어 있어요.',
+ default_role_missing:
+ '기본 역할 이름의 일부가 데이터베이스에 존재하지 않아요. 먼저 역할을 생성해 주세요.',
+ internal_role_violation:
+ '내부 역할 위반: Logto에서 금지되는 내부 역할을 업데이트하거나 삭제하려고 할 수 있습니다. 새 역할을 만드는 경우 "#internal:"으로 시작하지 않는 다른 이름을 시도해보세요.',
+};
+
+export default role;
diff --git a/packages/phrases/src/locales/ko/errors/scope.ts b/packages/phrases/src/locales/ko/errors/scope.ts
new file mode 100644
index 000000000..7b1991b30
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/scope.ts
@@ -0,0 +1,6 @@
+const scope = {
+ name_exists: '범위 이름 {{name}}이/가 이미 사용 중이에요.',
+ name_with_space: '범위 이름에 공백을 포함할 수 없어요.',
+};
+
+export default scope;
diff --git a/packages/phrases/src/locales/ko/errors/session.ts b/packages/phrases/src/locales/ko/errors/session.ts
new file mode 100644
index 000000000..f815797e6
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/session.ts
@@ -0,0 +1,23 @@
+const session = {
+ not_found: '세션을 찾을 수 없어요. 다시 로그인해 주세요.',
+ invalid_credentials: '유효하지 않은 로그인 정보예요. 입력된 값을 다시 확인해 주세요.',
+ invalid_sign_in_method: '현재 로그인 방법을 지원하지 않아요.',
+ invalid_connector_id: '소셜 ID {{connectorId}}를 찾을 수 없어요.',
+ insufficient_info: '로그인 정보가 충분하지 않아요.',
+ connector_id_mismatch: '연동 ID가 세션 정보와 일치하지 않아요.',
+ connector_session_not_found: '연동 세션을 찾을 수 없어요. 다시 로그인해 주세요.',
+ verification_session_not_found:
+ '검증을 실패했어요. 검증 과정을 다시 시작하고 다시 시도해 주세요.',
+ verification_expired:
+ '연결 시간이 초과되었어요. 검증을 다시 시작하고, 계정이 안전한지 확인해 주세요.',
+ unauthorized: '로그인을 먼저 해 주세요.',
+ unsupported_prompt_name: '지원하지 않는 Prompt 이름이에요.',
+ forgot_password_not_enabled: '비밀번호 찾기가 활성화되어있지 않아요.',
+ verification_failed:
+ '인증이 성공적으로 완료되지 않았어요. 처음부터 다시 인증 과정을 거쳐 주세요.',
+ connector_validation_session_not_found: '연동 세션 유효성 검증을 위한 토큰을 찾을 수 없어요.',
+ identifier_not_found: '사용자 식별자를 찾을 수 없어요. 처음부터 다시 로그인을 시도해 주세요.',
+ interaction_not_found: '인터렉션 세션을 찾을 수 없어요. 처음부터 다시 세션을 시작해 주세요.',
+};
+
+export default session;
diff --git a/packages/phrases/src/locales/ko/errors/sign-in-experiences.ts b/packages/phrases/src/locales/ko/errors/sign-in-experiences.ts
new file mode 100644
index 000000000..f06c5c181
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/sign-in-experiences.ts
@@ -0,0 +1,20 @@
+const sign_in_experiences = {
+ empty_content_url_of_terms_of_use:
+ '이용 약관 URL이 비어 있어요. 이용 약관이 활성화되어 있다면, 이용 약관 URL를 설정해 주세요.',
+ empty_social_connectors: '연동된 소셜이 없어요. 소셜 로그인을 사용한다면, 연동해 주세요.',
+ enabled_connector_not_found: '활성된 {{type}} 연동을 찾을 수 없어요.',
+ not_one_and_only_one_primary_sign_in_method:
+ '반드시 하나의 메인 로그인 방법이 설정되어야 해요. 입력된 값을 확인해주세요.',
+ username_requires_password: '회원가입 식별자에 대한 비밀번호 설정을 사용하도록 설정해야 해요.',
+ passwordless_requires_verify:
+ '이메일/휴대전화번호 가입 식별자에 대해 확인을 사용하도록 설정해야 해요.',
+ miss_sign_up_identifier_in_sign_in: '로그인 방법에는 회원가입 ID가 포함되어야 해요.',
+ password_sign_in_must_be_enabled:
+ '회원가입 시 비밀번호를 설정해야 할 경우 비밀번호 로그인을 사용하도록 설정해야 해요.',
+ code_sign_in_must_be_enabled:
+ '비밀번호를 설정할 필요가 없을 때는 인증 코드 로그인을 활성화해야 해요.',
+ unsupported_default_language: '{{language}} 언어는 아직 지원하지 않아요.',
+ at_least_one_authentication_factor: '최소한 하나의 인증 방법을 선택해야 해요.',
+};
+
+export default sign_in_experiences;
diff --git a/packages/phrases/src/locales/ko/errors/storage.ts b/packages/phrases/src/locales/ko/errors/storage.ts
new file mode 100644
index 000000000..2a70bc3c2
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/storage.ts
@@ -0,0 +1,7 @@
+const storage = {
+ not_configured: '저장소 공급자가 구성되지 않았습니다.',
+ missing_parameter: '저장소 공급자에 대한 누락된 매개변수 {{parameter}}.',
+ upload_error: '파일을 저장소 공급자에 업로드하지 못했습니다.',
+};
+
+export default storage;
diff --git a/packages/phrases/src/locales/ko/errors/swagger.ts b/packages/phrases/src/locales/ko/errors/swagger.ts
new file mode 100644
index 000000000..f1672cb00
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/swagger.ts
@@ -0,0 +1,7 @@
+const swagger = {
+ invalid_zod_type: '유효하지 않은 Zod 종류에요. Route Guard 설정을 확인해 주세요.',
+ not_supported_zod_type_for_params:
+ '지원되지 않는 Zod 종류예요. Route Guard 설정을 확인해 주세요.',
+};
+
+export default swagger;
diff --git a/packages/phrases/src/locales/ko/errors/user.ts b/packages/phrases/src/locales/ko/errors/user.ts
new file mode 100644
index 000000000..df73fb0fb
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/user.ts
@@ -0,0 +1,32 @@
+const user = {
+ username_already_in_use: '이 사용자 이름은 다른 사람이 이미 사용 중이에요.',
+ email_already_in_use: '이 이메일은 다른 계정에서 이미 사용 중이에요.',
+ phone_already_in_use: '이 휴대전화번호는 다른 계정에서 이미 사용 중이에요.',
+ invalid_email: '유효하지 않은 이메일이에요.',
+ invalid_phone: '유효하지 않은 휴대전화번호예요.',
+ email_not_exist: '이메일 주소가 아직 등록되지 않았어요.',
+ phone_not_exist: '휴대전화번호가 아직 등록되지 않았어요.',
+ identity_not_exist: '소셜 계정이 아직 등록되지 않았어요.',
+ identity_already_in_use: '소셜 계정이 이미 등록되어 있어요.',
+ social_account_exists_in_profile: '이 소셜 계정은 이미 연동되어 있습니다.',
+ cannot_delete_self: '자기 자신을 삭제할 수 없어요.',
+ sign_up_method_not_enabled: '이 회원가입 방법은 활성화되어있지 않아요.',
+ sign_in_method_not_enabled: '이 로그인 방법은 활성화되어있지 않아요.',
+ same_password: '새로운 비밀번호는 이전 비밀번호와 같으면 안 돼요.',
+ password_required_in_profile: '로그인 전에 비밀번호를 설정해야 해요.',
+ new_password_required_in_profile: '새로운 비밀번호를 설정해야 해요.',
+ password_exists_in_profile: '이미 비밀번호가 설정되어 있어요.',
+ username_required_in_profile: '로그인 전에 사용자 이름을 설정해야 해요.',
+ username_exists_in_profile: '이미 사용자 이름이 설정되어 있어요.',
+ email_required_in_profile: '로그인 전에 이메일 주소를 설정해야 해요.',
+ email_exists_in_profile: '이미 이메일 주소가 설정되어 있어요.',
+ phone_required_in_profile: '로그인 전에 휴대전화번호를 설정해야 해요.',
+ phone_exists_in_profile: '이미 휴대전화번호가 설정되어 있어요.',
+ email_or_phone_required_in_profile: '로그인 전에 이메일 주소 또는 휴대전화번호를 설정해야 해요.',
+ suspended: '이 계정은 일시 정지되었어요.',
+ user_not_exist: '{{identifier}}의 사용자가 아직 등록되지 않았어요.',
+ missing_profile: '로그인 전에 추가 정보를 제공해야 해요.',
+ role_exists: '역할 ID {{roleId}}은/는 이미 이 사용자에게 할당되어 있어요.',
+};
+
+export default user;
diff --git a/packages/phrases/src/locales/ko/errors/verification-code.ts b/packages/phrases/src/locales/ko/errors/verification-code.ts
new file mode 100644
index 000000000..ecc1db17c
--- /dev/null
+++ b/packages/phrases/src/locales/ko/errors/verification-code.ts
@@ -0,0 +1,11 @@
+const verification_code = {
+ phone_email_empty: '전화번호와 이메일이 모두 비어 있어요.',
+ not_found: '인증 코드를 찾을 수 없어요. 인증 코드를 먼저 요청하세요.',
+ phone_mismatch: '전화번호가 맞지 않아요. 새 인증 코드를 요청해 주세요.',
+ email_mismatch: '이메일이 맞지 않아요. 새 인증 코드를 요청해 주세요.',
+ code_mismatch: '인증 코드가 일치하지 않아요.',
+ expired: '인증 코드가 만료되었어요. 새 인증 코드를 요청해 주세요.',
+ exceed_max_try: '인증 코드 재시도 한도에 도달했어요. 새 인증 코드를 요청해 주세요.',
+};
+
+export default verification_code;
diff --git a/packages/phrases/src/locales/ko/index.ts b/packages/phrases/src/locales/ko/index.ts
index 1a004415f..e72afdcb6 100644
--- a/packages/phrases/src/locales/ko/index.ts
+++ b/packages/phrases/src/locales/ko/index.ts
@@ -1,6 +1,6 @@
import type { LocalePhrase } from '../../types.js';
-import errors from './errors.js';
+import errors from './errors/index.js';
import translation from './translation/index.js';
const ko: LocalePhrase = Object.freeze({
diff --git a/packages/phrases/src/locales/ko/translation/admin-console/index.ts b/packages/phrases/src/locales/ko/translation/admin-console/index.ts
index 493cd02a9..8ffecb483 100644
--- a/packages/phrases/src/locales/ko/translation/admin-console/index.ts
+++ b/packages/phrases/src/locales/ko/translation/admin-console/index.ts
@@ -19,7 +19,7 @@ import profile from './profile.js';
import role_details from './role-details.js';
import roles from './roles.js';
import session_expired from './session-expired.js';
-import sign_in_exp from './sign-in-exp.js';
+import sign_in_exp from './sign-in-exp/index.js';
import tab_sections from './tab-sections.js';
import tabs from './tabs.js';
import user_details from './user-details.js';
diff --git a/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp.ts
deleted file mode 100644
index f63924ae1..000000000
--- a/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp.ts
+++ /dev/null
@@ -1,177 +0,0 @@
-const sign_in_exp = {
- page_title: '로그인 경험',
- title: '로그인 경험',
- description: '로그인 화면을 브랜드에 맞게 사용자화하고 실시간으로 확인해 보세요.',
- tabs: {
- branding: '브랜딩',
- sign_up_and_sign_in: '회원가입/로그인',
- others: '기타',
- },
- welcome: {
- title: '로그인 경험 사용자화',
- description:
- '첫 로그인 설정으로 빠르게 시작하세요. 이 가이드가 필요한 모든 설정에 대해 안내할 거예요.',
- get_started: '시작하기',
- apply_remind: '이 계정이 관리하는 모든 앱의 로그인 경험이 수정되는 것을 주의해 주세요.',
- },
- color: {
- title: '색상',
- primary_color: '브랜드 색상',
- dark_primary_color: '브랜드 색상 (다크 모드)',
- dark_mode: '다크 모드 활성화',
- dark_mode_description: 'Logto가 브랜드 색상에 알맞게 자동으로 다크 모드 테마를 생성해요.',
- dark_mode_reset_tip: '브랜드 색상에 알맞게 다크 모드 색상',
- reset: '재생성',
- },
- branding: {
- title: '브랜딩 영역',
- ui_style: '스타일',
- favicon: '파비콘',
- logo_image_url: '앱 로고 이미지 URL',
- logo_image_url_placeholder: 'https://your.cdn.domain/logo.png',
- dark_logo_image_url: '앱 로고 이미지 URL (다크 모드)',
- dark_logo_image_url_placeholder: 'https://your.cdn.domain/logo-dark.png',
- logo_image: '앱 로고',
- dark_logo_image: '앱 로고 (다크 모드)',
- logo_image_error: '앱 로고: {{error}}',
- favicon_error: '파비콘: {{error}}',
- },
- custom_css: {
- title: '사용자 정의 CSS',
- css_code_editor_title: '사용자 정의 CSS로 UI 개인화',
- css_code_editor_description1: '사용자 정의 CSS의 예시를 확인하세요.',
- css_code_editor_description2: '{{link}}',
-
- css_code_editor_description_link_content: '더 알아보기',
- css_code_editor_content_placeholder:
- '사용자 정의 CSS를 입력하여 원하는 대로 스타일을 조정할 수 있어요. 창의성을 표현하고 UI를 돋보이게 만드세요.',
- },
- sign_up_and_sign_in: {
- identifiers_email: '이메일 주소',
- identifiers_phone: '휴대전화번호',
- identifiers_username: '사용자 이름',
- identifiers_email_or_sms: '이메일 주소 또는 휴대전화번호',
- identifiers_none: '해당 없음',
- and: '그리고',
- or: '또는',
- sign_up: {
- title: '회원가입',
- sign_up_identifier: '회원가입 ID',
- identifier_description:
- '회원가입 ID는 계정을 생성하기 위해 필수이며, 회원가입 화면에서 반드시 포함되어야 해요.',
- sign_up_authentication: '회원가입 인증 설정',
- authentication_description: '선택된 모든 작업들은 사용자가 모두 마무리해야 해요.',
- set_a_password_option: '비밀번호 생성',
- verify_at_sign_up_option: '회원가입 인증',
- social_only_creation_description: '(이것은 소셜 전용 계정 생성에 적용돼요.)',
- },
- sign_in: {
- title: '로그인',
- sign_in_identifier_and_auth: '로그인을 위한 ID 그리고 인증 설정',
- description:
- '사용자는 주어진 옵션 중에 아무 방법으로 로그인할 수 있어요. 주어진 옵션을 드래그하여 조절해 주세요.',
- add_sign_in_method: '로그인 방법 추가',
- password_auth: '비밀번호',
- verification_code_auth: '인증 코드',
- auth_swap_tip: '아래 옵션을 변경하여 흐름에 가장 먼저 나타나는 옵션을 설정할 수 있어요.',
- require_auth_factor: '반드시 최소 하나의 인증 방법을 선택해야 해요.',
- },
- social_sign_in: {
- title: '소셜 로그인',
- social_sign_in: '소셜 로그인',
- description:
- '설정된 필수 ID에 따라서 사용자가 소셜 연동을 통해 회원가입, 로그인을 할 수 있어요.',
- add_social_connector: '소셜 연동으로',
- set_up_hint: {
- not_in_list: '리스트에 없나요?',
- set_up_more: '다른 소셜 연동',
- go_to: '을 설정해 보세요.',
- },
- },
- tip: {
- set_a_password: '사용자 이름에 대한 고유한 암호 집합은 필수예요.',
- verify_at_sign_up:
- '현재 확인된 이메일만 지원해요. 유효성 검사가 없는 경우 사용자 기반에 품질이 낮은 전자 메일 주소가 많이 포함되어 있을 수 있어요.',
- password_auth:
- '회원가입 중에 비밀번호를 설정하는 옵션을 사용으로 설정했기 때문에 이 옵션은 필수예요.',
- verification_code_auth:
- '가입 시 인증 코드를 제공하는 옵션만 활성화했기 때문에 이것은 필수예요. 회원가입에서 비밀번호 설정이 허용되면 이 옵션을 취소할 수 있어요.',
- delete_sign_in_method: '{{identifier}}를 필수 ID로 설정했기 때문에 이 옵션은 필수예요.',
- },
- },
- others: {
- terms_of_use: {
- title: '이용 약관',
- terms_of_use: '이용 약관 URL',
- terms_of_use_placeholder: 'https://your.terms.of.use/',
- privacy_policy: '개인정보 처리방침 URL',
- privacy_policy_placeholder: 'https://your.privacy.policy/',
- },
- languages: {
- title: '언어',
- enable_auto_detect: '자동 감지 활성화',
- description:
- '사용자의 언어 설정을 감지하고, 해당 언어로 자동으로 변경해요. 직접 번역하여 새로운 언어를 추가할 수도 있어요.',
- manage_language: '언어 관리',
- default_language: '기본 언어',
- default_language_description_auto:
- '사용자의 언어를 지원하지 않을 경우, 기본 언어로 사용자에게 보여줘요.',
- default_language_description_fixed:
- '자동 감지가 꺼져있을 경우, 기본 언어로만 사용자에게 보여줘요. 더욱 나은 경험을 위해, 자동 감지를 켜 주세요.',
- },
- manage_language: {
- title: '언어 관리',
- subtitle:
- '언어와 번역을 추가하여 제품 경험을 현지화해요. 사용자의 기여를 기본 언어로 설정할 수 있어요.',
- add_language: '언어 추가',
- logto_provided: 'Logto 제공',
- key: '키',
- logto_source_values: 'Logto 소스 값',
- custom_values: '사용자 정의 값',
- clear_all_tip: '모든 값 삭제',
- unsaved_description: '이 페이지를 벗어날 경우, 변경점이 적용되지 않아요.',
- deletion_tip: '언어 삭제',
- deletion_title: '추가된 언어를 삭제할까요?',
- deletion_description: '삭제된 후에 사용자들이 더 이상 해당 언어로 볼 수 없어요.',
- default_language_deletion_title: '기본 언어는 삭제할 수 없어요.',
- default_language_deletion_description:
- '{{language}} 언어는 기본 언어로 설정되어 있어요. 기본 언어를 변경한 후에 삭제할 수 있어요.',
- },
- advanced_options: {
- title: '고급 옵션',
- enable_user_registration: '회원가입 활성화',
- enable_user_registration_description:
- '사용자 등록을 활성화하거나 비활성화해요. 비활성화된 후에도 사용자를 관리 콘솔에서 추가할 수 있지만 사용자는 더 이상 로그인 UI를 통해 계정을 설정할 수 없어요.',
- },
- },
- setup_warning: {
- no_connector_sms:
- 'SMS 연동 설정이 아직 없어요. 이 구성을 완료하기 전에는 사용자가 이 로그인 방식으로 로그인 할 수 없어요. "연동 설정"에서 {{link}}하세요.',
- no_connector_email:
- '이메일 연동 설정이 아직 없어요. 이 구성을 완료하기 전에는 사용자가 이 로그인 방식으로 로그인 할 수 없어요. "연동 설정"에서 {{link}}하세요.',
- no_connector_social:
- '소셜 연동 설정이 아직 없어요. 이 구성을 완료하기 전에는 사용자가 이 로그인 방식으로 로그인 할 수 없어요. "연동 설정"에서 {{link}}하세요.',
- no_added_social_connector:
- '보다 많은 소셜 연동들을 설정하여 고객에게 보다 나은 경험을 제공해보세요.',
- setup_link: '설정',
- },
- save_alert: {
- description:
- '새 로그인 및 회원가입 방법을 추가하고 있어요. 모든 사용자가 새 설정의 영향을 받을 수 있어요. 정말로 추가할까요?',
- before: '이전',
- after: '이후',
- sign_up: '회원가입',
- sign_in: '로그인',
- social: '소셜',
- },
- preview: {
- title: '로그인 화면 미리보기',
- live_preview: 'Live Preview',
- live_preview_tip: '저장하여 변경 사항 미리보기',
- native: '네이티브',
- desktop_web: '데스크톱 웹',
- mobile_web: '모바일 웹',
- },
-};
-
-export default sign_in_exp;
diff --git a/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp/index.ts b/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp/index.ts
new file mode 100644
index 000000000..6a628958c
--- /dev/null
+++ b/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp/index.ts
@@ -0,0 +1,83 @@
+import others from './others.js';
+import sign_up_and_sign_in from './sign-up-and-sign-in.js';
+
+const sign_in_exp = {
+ page_title: '로그인 경험',
+ title: '로그인 경험',
+ description: '로그인 화면을 브랜드에 맞게 사용자화하고 실시간으로 확인해 보세요.',
+ tabs: {
+ branding: '브랜딩',
+ sign_up_and_sign_in: '회원가입/로그인',
+ others: '기타',
+ },
+ welcome: {
+ title: '로그인 경험 사용자화',
+ description:
+ '첫 로그인 설정으로 빠르게 시작하세요. 이 가이드가 필요한 모든 설정에 대해 안내할 거예요.',
+ get_started: '시작하기',
+ apply_remind: '이 계정이 관리하는 모든 앱의 로그인 경험이 수정되는 것을 주의해 주세요.',
+ },
+ color: {
+ title: '색상',
+ primary_color: '브랜드 색상',
+ dark_primary_color: '브랜드 색상 (다크 모드)',
+ dark_mode: '다크 모드 활성화',
+ dark_mode_description: 'Logto가 브랜드 색상에 알맞게 자동으로 다크 모드 테마를 생성해요.',
+ dark_mode_reset_tip: '브랜드 색상에 알맞게 다크 모드 색상',
+ reset: '재생성',
+ },
+ branding: {
+ title: '브랜딩 영역',
+ ui_style: '스타일',
+ favicon: '파비콘',
+ logo_image_url: '앱 로고 이미지 URL',
+ logo_image_url_placeholder: 'https://your.cdn.domain/logo.png',
+ dark_logo_image_url: '앱 로고 이미지 URL (다크 모드)',
+ dark_logo_image_url_placeholder: 'https://your.cdn.domain/logo-dark.png',
+ logo_image: '앱 로고',
+ dark_logo_image: '앱 로고 (다크 모드)',
+ logo_image_error: '앱 로고: {{error}}',
+ favicon_error: '파비콘: {{error}}',
+ },
+ custom_css: {
+ title: '사용자 정의 CSS',
+ css_code_editor_title: '사용자 정의 CSS로 UI 개인화',
+ css_code_editor_description1: '사용자 정의 CSS의 예시를 확인하세요.',
+ css_code_editor_description2: '{{link}}',
+ css_code_editor_description_link_content: '더 알아보기',
+ css_code_editor_content_placeholder:
+ '사용자 정의 CSS를 입력하여 원하는 대로 스타일을 조정할 수 있어요. 창의성을 표현하고 UI를 돋보이게 만드세요.',
+ },
+ setup_warning: {
+ no_connector_sms:
+ 'SMS 연동 설정이 아직 없어요. 이 구성을 완료하기 전에는 사용자가 이 로그인 방식으로 로그인 할 수 없어요. "연동 설정"에서 {{link}}하세요.',
+ no_connector_email:
+ '이메일 연동 설정이 아직 없어요. 이 구성을 완료하기 전에는 사용자가 이 로그인 방식으로 로그인 할 수 없어요. "연동 설정"에서 {{link}}하세요.',
+ no_connector_social:
+ '소셜 연동 설정이 아직 없어요. 이 구성을 완료하기 전에는 사용자가 이 로그인 방식으로 로그인 할 수 없어요. "연동 설정"에서 {{link}}하세요.',
+ no_added_social_connector:
+ '보다 많은 소셜 연동들을 설정하여 고객에게 보다 나은 경험을 제공해보세요.',
+ setup_link: '설정',
+ },
+ save_alert: {
+ description:
+ '새 로그인 및 회원가입 방법을 추가하고 있어요. 모든 사용자가 새 설정의 영향을 받을 수 있어요. 정말로 추가할까요?',
+ before: '이전',
+ after: '이후',
+ sign_up: '회원가입',
+ sign_in: '로그인',
+ social: '소셜',
+ },
+ preview: {
+ title: '로그인 화면 미리보기',
+ live_preview: 'Live Preview',
+ live_preview_tip: '저장하여 변경 사항 미리보기',
+ native: '네이티브',
+ desktop_web: '데스크톱 웹',
+ mobile_web: '모바일 웹',
+ },
+ others,
+ sign_up_and_sign_in,
+};
+
+export default sign_in_exp;
diff --git a/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp/others.ts b/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp/others.ts
new file mode 100644
index 000000000..84ccd2d54
--- /dev/null
+++ b/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp/others.ts
@@ -0,0 +1,47 @@
+const others = {
+ terms_of_use: {
+ title: '이용 약관',
+ terms_of_use: '이용 약관 URL',
+ terms_of_use_placeholder: 'https://your.terms.of.use/',
+ privacy_policy: '개인정보 처리방침 URL',
+ privacy_policy_placeholder: 'https://your.privacy.policy/',
+ },
+ languages: {
+ title: '언어',
+ enable_auto_detect: '자동 감지 활성화',
+ description:
+ '사용자의 언어 설정을 감지하고, 해당 언어로 자동으로 변경해요. 직접 번역하여 새로운 언어를 추가할 수도 있어요.',
+ manage_language: '언어 관리',
+ default_language: '기본 언어',
+ default_language_description_auto:
+ '사용자의 언어를 지원하지 않을 경우, 기본 언어로 사용자에게 보여줘요.',
+ default_language_description_fixed:
+ '자동 감지가 꺼져있을 경우, 기본 언어로만 사용자에게 보여줘요. 더욱 나은 경험을 위해, 자동 감지를 켜 주세요.',
+ },
+ manage_language: {
+ title: '언어 관리',
+ subtitle:
+ '언어와 번역을 추가하여 제품 경험을 현지화해요. 사용자의 기여를 기본 언어로 설정할 수 있어요.',
+ add_language: '언어 추가',
+ logto_provided: 'Logto 제공',
+ key: '키',
+ logto_source_values: 'Logto 소스 값',
+ custom_values: '사용자 정의 값',
+ clear_all_tip: '모든 값 삭제',
+ unsaved_description: '이 페이지를 벗어날 경우, 변경점이 적용되지 않아요.',
+ deletion_tip: '언어 삭제',
+ deletion_title: '추가된 언어를 삭제할까요?',
+ deletion_description: '삭제된 후에 사용자들이 더 이상 해당 언어로 볼 수 없어요.',
+ default_language_deletion_title: '기본 언어는 삭제할 수 없어요.',
+ default_language_deletion_description:
+ '{{language}} 언어는 기본 언어로 설정되어 있어요. 기본 언어를 변경한 후에 삭제할 수 있어요.',
+ },
+ advanced_options: {
+ title: '고급 옵션',
+ enable_user_registration: '회원가입 활성화',
+ enable_user_registration_description:
+ '사용자 등록을 활성화하거나 비활성화해요. 비활성화된 후에도 사용자를 관리 콘솔에서 추가할 수 있지만 사용자는 더 이상 로그인 UI를 통해 계정을 설정할 수 없어요.',
+ },
+};
+
+export default others;
diff --git a/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts b/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts
new file mode 100644
index 000000000..8e00a865f
--- /dev/null
+++ b/packages/phrases/src/locales/ko/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts
@@ -0,0 +1,55 @@
+const sign_up_and_sign_in = {
+ identifiers_email: '이메일 주소',
+ identifiers_phone: '휴대전화번호',
+ identifiers_username: '사용자 이름',
+ identifiers_email_or_sms: '이메일 주소 또는 휴대전화번호',
+ identifiers_none: '해당 없음',
+ and: '그리고',
+ or: '또는',
+ sign_up: {
+ title: '회원가입',
+ sign_up_identifier: '회원가입 ID',
+ identifier_description:
+ '회원가입 ID는 계정을 생성하기 위해 필수이며, 회원가입 화면에서 반드시 포함되어야 해요.',
+ sign_up_authentication: '회원가입 인증 설정',
+ authentication_description: '선택된 모든 작업들은 사용자가 모두 마무리해야 해요.',
+ set_a_password_option: '비밀번호 생성',
+ verify_at_sign_up_option: '회원가입 인증',
+ social_only_creation_description: '(이것은 소셜 전용 계정 생성에 적용돼요.)',
+ },
+ sign_in: {
+ title: '로그인',
+ sign_in_identifier_and_auth: '로그인을 위한 ID 그리고 인증 설정',
+ description:
+ '사용자는 주어진 옵션 중에 아무 방법으로 로그인할 수 있어요. 주어진 옵션을 드래그하여 조절해 주세요.',
+ add_sign_in_method: '로그인 방법 추가',
+ password_auth: '비밀번호',
+ verification_code_auth: '인증 코드',
+ auth_swap_tip: '아래 옵션을 변경하여 흐름에 가장 먼저 나타나는 옵션을 설정할 수 있어요.',
+ require_auth_factor: '반드시 최소 하나의 인증 방법을 선택해야 해요.',
+ },
+ social_sign_in: {
+ title: '소셜 로그인',
+ social_sign_in: '소셜 로그인',
+ description:
+ '설정된 필수 ID에 따라서 사용자가 소셜 연동을 통해 회원가입, 로그인을 할 수 있어요.',
+ add_social_connector: '소셜 연동으로',
+ set_up_hint: {
+ not_in_list: '리스트에 없나요?',
+ set_up_more: '다른 소셜 연동',
+ go_to: '을 설정해 보세요.',
+ },
+ },
+ tip: {
+ set_a_password: '사용자 이름에 대한 고유한 암호 집합은 필수예요.',
+ verify_at_sign_up:
+ '현재 확인된 이메일만 지원해요. 유효성 검사가 없는 경우 사용자 기반에 품질이 낮은 전자 메일 주소가 많이 포함되어 있을 수 있어요.',
+ password_auth:
+ '회원가입 중에 비밀번호를 설정하는 옵션을 사용으로 설정했기 때문에 이 옵션은 필수예요.',
+ verification_code_auth:
+ '가입 시 인증 코드를 제공하는 옵션만 활성화했기 때문에 이것은 필수예요. 회원가입에서 비밀번호 설정이 허용되면 이 옵션을 취소할 수 있어요.',
+ delete_sign_in_method: '{{identifier}}를 필수 ID로 설정했기 때문에 이 옵션은 필수예요.',
+ },
+};
+
+export default sign_up_and_sign_in;
diff --git a/packages/phrases/src/locales/pt-br/errors.ts b/packages/phrases/src/locales/pt-br/errors.ts
deleted file mode 100644
index 1488052ed..000000000
--- a/packages/phrases/src/locales/pt-br/errors.ts
+++ /dev/null
@@ -1,210 +0,0 @@
-const errors = {
- request: {
- invalid_input: 'Entrada inválida. {{details}}',
- general: 'Ocorreu um erro no pedido.',
- },
- auth: {
- authorization_header_missing: 'O cabeçalho de autorização está ausente.',
- authorization_token_type_not_supported: 'O tipo de autorização não é suportado.',
- unauthorized: 'Não autorizado. Verifique as credenciais e seu escopo.',
- forbidden: 'Proibido. Verifique suas funções e permissões de usuário.',
- expected_role_not_found:
- 'Regra esperada não encontrada. Verifique suas regras e permissões de usuário.',
- jwt_sub_missing: '`sub` ausente no JWT.',
- require_re_authentication: 'A reautenticação é necessária para executar uma ação protegida.',
- },
- guard: {
- invalid_input: 'A solicitação {{type}} é inválida.',
- invalid_pagination: 'O valor de paginação da solicitação é inválido.',
- can_not_get_tenant_id: 'Não foi possível obter o ID do inquilino na solicitação.',
- file_size_exceeded: 'Tamanho do arquivo excedido.',
- mime_type_not_allowed: 'Tipo MIME não permitido.',
- },
- oidc: {
- aborted: 'A interação abortada pelo end-user',
- invalid_scope: 'Escopo {{scope}} não é suportado.',
- invalid_scope_plural: 'Escopo {{scopes}} não são suportados.',
- invalid_token: 'Token inválido.',
- invalid_client_metadata: 'Metadados de cliente inválidos.',
- insufficient_scope: 'Escopo solicitado ausente {{scopes}} do token de acesso.',
- invalid_request: 'A solicitação é inválida.',
- invalid_grant: 'A solicitação de concessão é inválida.',
- invalid_redirect_uri:
- '`redirect_uri` não correspondeu a nenhum `redirect_uris` registrado do cliente.',
- access_denied: 'Acesso negado.',
- invalid_target: 'Indicador de recurso inválido.',
- unsupported_grant_type: '`grant_type` não suportado.',
- unsupported_response_mode: '`response_mode` não suportado.',
- unsupported_response_type: '`response_type` não suportado.',
- provider_error: 'Erro interno OIDC: {{message}}.',
- },
- user: {
- username_already_in_use: 'Este nome de usuário já está em uso.',
- email_already_in_use: 'Este e-mail está associado a uma conta existente.',
- phone_already_in_use: 'Este número de telefone está associado a uma conta existente.',
- invalid_email: 'Endereço de e-mail inválido.',
- invalid_phone: 'Número de telefone inválido.',
- email_not_exist: 'O endereço de e-mail ainda não foi registrado.',
- phone_not_exist: 'O número de telefone ainda não foi registrado.',
- identity_not_exist: 'A conta social ainda não foi registrada.',
- identity_already_in_use: 'A conta social foi associada a uma conta existente.',
- social_account_exists_in_profile: 'A conta social já está associada ao seu perfil.',
- cannot_delete_self: 'Você não pode excluir a si mesmo.',
- sign_up_method_not_enabled: 'Este método de inscrição não está ativado',
- sign_in_method_not_enabled: 'Este método de login não está habilitado.',
- same_password: 'A nova senha não pode ser igual à senha antiga.',
- password_required_in_profile: 'Você precisa definir uma senha antes de entrar.',
- new_password_required_in_profile: 'Você precisa definir uma nova senha.',
- password_exists_in_profile: 'A senha já existe em seu perfil.',
- username_required_in_profile: 'Você precisa definir um nome de usuário antes de entrar.',
- username_exists_in_profile: 'O nome de usuário já existe em seu perfil.',
- email_required_in_profile: 'Você precisa adicionar um endereço de e-mail antes de fazer login.',
- email_exists_in_profile: 'Seu perfil já foi associado a um endereço de e-mail.',
- phone_required_in_profile: 'Você precisa adicionar um número de telefone antes de fazer login.',
- phone_exists_in_profile: 'Seu perfil já foi associado a um número de telefone.',
- email_or_phone_required_in_profile:
- 'Você precisa adicionar um endereço de e-mail ou número de telefone antes de fazer login.',
- suspended: 'Esta conta está suspensa.',
- user_not_exist: 'O usuário com {{ identifier }} não existe',
- missing_profile: 'Você precisa fornecer informações adicionais antes de fazer login.',
- role_exists: 'O id da função {{roleId}} já foi adicionado a este usuário',
- },
- password: {
- unsupported_encryption_method: 'O método de criptografia {{name}} não é suportado.',
- pepper_not_found: 'Password pepper não encontrada. Por favor, verifique seus envs principais.',
- },
- session: {
- not_found: 'Sessão não encontrada. Volte e faça login novamente.',
- invalid_credentials: 'Credenciais inválidas. Verifique sua entrada.',
- invalid_sign_in_method: 'O método de login atual não está disponível.',
- invalid_connector_id:
- 'Não foi possível encontrar o conector disponível com id {{connectorId}}.',
- insufficient_info: 'Informações de login insuficientes.',
- connector_id_mismatch: 'O connectorId é incompatível com o registro da sessão.',
- connector_session_not_found: 'Sessão do conector não encontrada. Volte e faça login novamente.',
- verification_session_not_found:
- 'A verificação não foi bem-sucedida. Reinicie o fluxo de verificação e tente novamente.',
- verification_expired:
- 'A conexão expirou. Verifique novamente para garantir a segurança da sua conta.',
- unauthorized: 'Faça login primeiro.',
- unsupported_prompt_name: 'Prompt name incompatível.',
- forgot_password_not_enabled: 'Esqueceu a senha não está ativado.',
- verification_failed:
- 'A verificação não foi bem-sucedida. Reinicie o fluxo de verificação e tente novamente.',
- connector_validation_session_not_found:
- 'A sessão de validação do token do conector não foi encontrada.',
- identifier_not_found:
- 'Identificador de usuário não encontrado. Por favor, volte e faça o login novamente.',
- interaction_not_found:
- 'Sessão de interação não encontrada. Por favor, volte e inicie a sessão novamente.',
- },
- connector: {
- general: 'Ocorreu um erro no conector: {{errorDescription}}',
- not_found: 'Não foi possível encontrar nenhum conector disponível para o tipo: {{type}}.',
- not_enabled: 'O conector não está ativado.',
- invalid_metadata: 'Os metadados do conector são inválidos.',
- invalid_config_guard: 'A proteção de configuração do conector é inválida.',
- unexpected_type: 'O tipo do conector é inesperado.',
- invalid_request_parameters: 'A solicitação está com parâmetro(s) de entrada incorreto(s).',
- insufficient_request_parameters: 'A solicitação pode perder alguns parâmetros de entrada.',
- invalid_config: 'A configuração do conector é inválida.',
- invalid_response: 'A resposta do conector é inválida.',
- template_not_found: 'Não foi possível encontrar o modelo correto na configuração do conector.',
- not_implemented: '{{method}}: ainda não foi implementado.',
- social_invalid_access_token: 'O token de acesso do conector é inválido.',
- invalid_auth_code: 'O código de autenticação do conector é inválido.',
- social_invalid_id_token: 'O token de id do conector é inválido.',
- authorization_failed: 'O processo de autorização do usuário não foi bem-sucedido.',
- social_auth_code_invalid:
- 'Não foi possível obter o token de acesso, verifique o código de autorização.',
- more_than_one_sms: 'O número de conectores SMS é maior que 1.',
- more_than_one_email: 'O número de conectores de e-mail é maior que 1.',
- more_than_one_connector_factory:
- 'Foram encontradas várias fábricas de conectores (com os ids {{connectorIds}}), você pode desinstalar as desnecessárias.',
- db_connector_type_mismatch: 'Existe um conector no banco de dados que não corresponde ao tipo.',
- not_found_with_connector_id:
- 'Não é possível encontrar o conector com o ID de conector padrão fornecido.',
- multiple_instances_not_supported:
- 'Não é possível criar várias instâncias com conector padrão escolhido.',
- invalid_type_for_syncing_profile:
- 'Você só pode sincronizar o perfil do usuário com conectores sociais.',
- can_not_modify_target: 'O destino do conector não pode ser modificado.',
- should_specify_target: "Você deve especificar o 'destino'.",
- multiple_target_with_same_platform:
- 'Você não pode ter vários conectores sociais com o mesmo destino e plataforma.',
- cannot_overwrite_metadata_for_non_standard_connector:
- "Esta 'metadata' do conector não pode ser sobrescrita.",
- },
- verification_code: {
- phone_email_empty: 'Tanto o telefone quanto o e-mail estão vazios.',
- not_found:
- 'Código de verificação não encontrado. Por favor, envie um código de verificação primeiro.',
- phone_mismatch: 'Telefone não corresponde. Por favor, solicite um novo código de verificação.',
- email_mismatch: 'E-mail não corresponde. Por favor, solicite um novo código de verificação.',
- code_mismatch: 'Código de verificação inválido.',
- expired: 'O código de verificação expirou. Por favor, solicite um novo código de verificação.',
- exceed_max_try:
- 'Excedido o limite de tentativas de código de verificação. Por favor, solicite um novo código de verificação.',
- },
- sign_in_experiences: {
- empty_content_url_of_terms_of_use:
- 'URL de conteúdo "Termos de uso" vazia. Adicione o URL do conteúdo se "Termos de uso" estiver ativado.',
- empty_social_connectors:
- 'Conectores sociais vazios. Adicione conectores sociais ativados quando o método de login social estiver ativado.',
- enabled_connector_not_found: 'Conector {{type}} ativado não encontrado.',
- not_one_and_only_one_primary_sign_in_method:
- 'Deve haver um método de login principal. Verifique sua entrada.',
- username_requires_password:
- 'Deve permitir definir uma senha para o identificador de inscrição do nome de usuário.',
- passwordless_requires_verify:
- 'Deve ativar a verificação do identificador de inscrição de e-mail/telefone.',
- miss_sign_up_identifier_in_sign_in:
- 'Os métodos de login devem conter o identificador de inscrição.',
- password_sign_in_must_be_enabled:
- 'O login com senha deve ser ativado quando definir uma senha é necessária na inscrição.',
- code_sign_in_must_be_enabled:
- 'O login do código de verificação deve ser ativado quando definir uma senha não é necessária na inscrição.',
- unsupported_default_language: 'Este idioma - {{language}} não é suportado no momento.',
- at_least_one_authentication_factor: 'Você deve selecionar pelo menos um fator de autenticação.',
- },
- localization: {
- cannot_delete_default_language:
- '{{languageTag}} está definido como seu idioma padrão e não pode ser excluído.',
- invalid_translation_structure:
- 'Esquemas de dados inválidos. Verifique sua entrada e tente novamente.',
- },
- swagger: {
- invalid_zod_type: 'Zod type inválido. Verifique a configuração do protetor de rota.',
- not_supported_zod_type_for_params:
- 'Zod type não suportado para os parâmetros. Verifique a configuração do protetor de rota.',
- },
- entity: {
- create_failed: 'Falha ao criar {{name}}.',
- not_exists: 'O {{name}} não existe.',
- not_exists_with_id: 'O {{name}} com ID `{{id}}` não existe.',
- not_found: 'O recurso não existe.',
- },
- log: {
- invalid_type: 'O tipo de registro é inválido.',
- },
- role: {
- name_in_use: 'Este nome de papel {{name}} já está em uso',
- scope_exists: 'O id de escopo {{scopeId}} já foi adicionado a este papel',
- user_exists: 'O id de usuário {{userId}} já foi adicionado a este papel',
- default_role_missing:
- 'Alguns dos nomes de função padrão não existem no banco de dados, certifique-se de criar funções primeiro',
- internal_role_violation:
- 'Você pode estar tentando atualizar ou excluir uma função interna que é proibida pelo Logto. Se você estiver criando uma nova função, tente outro nome que não comece com "#internal:".',
- },
- scope: {
- name_exists: 'O nome do escopo {{name}} já está em uso',
- name_with_space: 'O nome do escopo não pode conter espaços.',
- },
- storage: {
- not_configured: 'O provedor de armazenamento não está configurado.',
- missing_parameter: 'Parâmetro {{parameter}} ausente para o provedor de armazenamento.',
- upload_error: 'Falha ao fazer upload do arquivo para o provedor de armazenamento.',
- },
-};
-
-export default errors;
diff --git a/packages/phrases/src/locales/pt-br/errors/auth.ts b/packages/phrases/src/locales/pt-br/errors/auth.ts
new file mode 100644
index 000000000..15e45e38d
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/auth.ts
@@ -0,0 +1,12 @@
+const auth = {
+ authorization_header_missing: 'O cabeçalho de autorização está ausente.',
+ authorization_token_type_not_supported: 'O tipo de autorização não é suportado.',
+ unauthorized: 'Não autorizado. Verifique as credenciais e seu escopo.',
+ forbidden: 'Proibido. Verifique suas funções e permissões de usuário.',
+ expected_role_not_found:
+ 'Regra esperada não encontrada. Verifique suas regras e permissões de usuário.',
+ jwt_sub_missing: '`sub` ausente no JWT.',
+ require_re_authentication: 'A reautenticação é necessária para executar uma ação protegida.',
+};
+
+export default auth;
diff --git a/packages/phrases/src/locales/pt-br/errors/connector.ts b/packages/phrases/src/locales/pt-br/errors/connector.ts
new file mode 100644
index 000000000..8f30b3175
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/connector.ts
@@ -0,0 +1,39 @@
+const connector = {
+ general: 'Ocorreu um erro no conector: {{errorDescription}}',
+ not_found: 'Não foi possível encontrar nenhum conector disponível para o tipo: {{type}}.',
+ not_enabled: 'O conector não está ativado.',
+ invalid_metadata: 'Os metadados do conector são inválidos.',
+ invalid_config_guard: 'A proteção de configuração do conector é inválida.',
+ unexpected_type: 'O tipo do conector é inesperado.',
+ invalid_request_parameters: 'A solicitação está com parâmetro(s) de entrada incorreto(s).',
+ insufficient_request_parameters: 'A solicitação pode perder alguns parâmetros de entrada.',
+ invalid_config: 'A configuração do conector é inválida.',
+ invalid_response: 'A resposta do conector é inválida.',
+ template_not_found: 'Não foi possível encontrar o modelo correto na configuração do conector.',
+ not_implemented: '{{method}}: ainda não foi implementado.',
+ social_invalid_access_token: 'O token de acesso do conector é inválido.',
+ invalid_auth_code: 'O código de autenticação do conector é inválido.',
+ social_invalid_id_token: 'O token de id do conector é inválido.',
+ authorization_failed: 'O processo de autorização do usuário não foi bem-sucedido.',
+ social_auth_code_invalid:
+ 'Não foi possível obter o token de acesso, verifique o código de autorização.',
+ more_than_one_sms: 'O número de conectores SMS é maior que 1.',
+ more_than_one_email: 'O número de conectores de e-mail é maior que 1.',
+ more_than_one_connector_factory:
+ 'Foram encontradas várias fábricas de conectores (com os ids {{connectorIds}}), você pode desinstalar as desnecessárias.',
+ db_connector_type_mismatch: 'Existe um conector no banco de dados que não corresponde ao tipo.',
+ not_found_with_connector_id:
+ 'Não é possível encontrar o conector com o ID de conector padrão fornecido.',
+ multiple_instances_not_supported:
+ 'Não é possível criar várias instâncias com conector padrão escolhido.',
+ invalid_type_for_syncing_profile:
+ 'Você só pode sincronizar o perfil do usuário com conectores sociais.',
+ can_not_modify_target: 'O destino do conector não pode ser modificado.',
+ should_specify_target: "Você deve especificar o 'destino'.",
+ multiple_target_with_same_platform:
+ 'Você não pode ter vários conectores sociais com o mesmo destino e plataforma.',
+ cannot_overwrite_metadata_for_non_standard_connector:
+ "Esta 'metadata' do conector não pode ser sobrescrita.",
+};
+
+export default connector;
diff --git a/packages/phrases/src/locales/pt-br/errors/entity.ts b/packages/phrases/src/locales/pt-br/errors/entity.ts
new file mode 100644
index 000000000..afe28ead1
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/entity.ts
@@ -0,0 +1,8 @@
+const entity = {
+ create_failed: 'Falha ao criar {{name}}.',
+ not_exists: 'O {{name}} não existe.',
+ not_exists_with_id: 'O {{name}} com ID `{{id}}` não existe.',
+ not_found: 'O recurso não existe.',
+};
+
+export default entity;
diff --git a/packages/phrases/src/locales/pt-br/errors/guard.ts b/packages/phrases/src/locales/pt-br/errors/guard.ts
new file mode 100644
index 000000000..078dcbd23
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/guard.ts
@@ -0,0 +1,9 @@
+const guard = {
+ invalid_input: 'A solicitação {{type}} é inválida.',
+ invalid_pagination: 'O valor de paginação da solicitação é inválido.',
+ can_not_get_tenant_id: 'Não foi possível obter o ID do inquilino na solicitação.',
+ file_size_exceeded: 'Tamanho do arquivo excedido.',
+ mime_type_not_allowed: 'Tipo MIME não permitido.',
+};
+
+export default guard;
diff --git a/packages/phrases/src/locales/pt-br/errors/index.ts b/packages/phrases/src/locales/pt-br/errors/index.ts
new file mode 100644
index 000000000..c3f5e05ec
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/index.ts
@@ -0,0 +1,39 @@
+import auth from './auth.js';
+import connector from './connector.js';
+import entity from './entity.js';
+import guard from './guard.js';
+import localization from './localization.js';
+import log from './log.js';
+import oidc from './oidc.js';
+import password from './password.js';
+import request from './request.js';
+import role from './role.js';
+import scope from './scope.js';
+import session from './session.js';
+import sign_in_experiences from './sign-in-experiences.js';
+import storage from './storage.js';
+import swagger from './swagger.js';
+import user from './user.js';
+import verification_code from './verification-code.js';
+
+const errors = {
+ request,
+ auth,
+ guard,
+ oidc,
+ user,
+ password,
+ session,
+ connector,
+ verification_code,
+ sign_in_experiences,
+ localization,
+ swagger,
+ entity,
+ log,
+ role,
+ scope,
+ storage,
+};
+
+export default errors;
diff --git a/packages/phrases/src/locales/pt-br/errors/localization.ts b/packages/phrases/src/locales/pt-br/errors/localization.ts
new file mode 100644
index 000000000..a75062b11
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/localization.ts
@@ -0,0 +1,8 @@
+const localization = {
+ cannot_delete_default_language:
+ '{{languageTag}} está definido como seu idioma padrão e não pode ser excluído.',
+ invalid_translation_structure:
+ 'Esquemas de dados inválidos. Verifique sua entrada e tente novamente.',
+};
+
+export default localization;
diff --git a/packages/phrases/src/locales/pt-br/errors/log.ts b/packages/phrases/src/locales/pt-br/errors/log.ts
new file mode 100644
index 000000000..87fba5ac7
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/log.ts
@@ -0,0 +1,5 @@
+const log = {
+ invalid_type: 'O tipo de registro é inválido.',
+};
+
+export default log;
diff --git a/packages/phrases/src/locales/pt-br/errors/oidc.ts b/packages/phrases/src/locales/pt-br/errors/oidc.ts
new file mode 100644
index 000000000..1beee9319
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/oidc.ts
@@ -0,0 +1,20 @@
+const oidc = {
+ aborted: 'A interação abortada pelo end-user',
+ invalid_scope: 'Escopo {{scope}} não é suportado.',
+ invalid_scope_plural: 'Escopo {{scopes}} não são suportados.',
+ invalid_token: 'Token inválido.',
+ invalid_client_metadata: 'Metadados de cliente inválidos.',
+ insufficient_scope: 'Escopo solicitado ausente {{scopes}} do token de acesso.',
+ invalid_request: 'A solicitação é inválida.',
+ invalid_grant: 'A solicitação de concessão é inválida.',
+ invalid_redirect_uri:
+ '`redirect_uri` não correspondeu a nenhum `redirect_uris` registrado do cliente.',
+ access_denied: 'Acesso negado.',
+ invalid_target: 'Indicador de recurso inválido.',
+ unsupported_grant_type: '`grant_type` não suportado.',
+ unsupported_response_mode: '`response_mode` não suportado.',
+ unsupported_response_type: '`response_type` não suportado.',
+ provider_error: 'Erro interno OIDC: {{message}}.',
+};
+
+export default oidc;
diff --git a/packages/phrases/src/locales/pt-br/errors/password.ts b/packages/phrases/src/locales/pt-br/errors/password.ts
new file mode 100644
index 000000000..63c02f567
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/password.ts
@@ -0,0 +1,6 @@
+const password = {
+ unsupported_encryption_method: 'O método de criptografia {{name}} não é suportado.',
+ pepper_not_found: 'Password pepper não encontrada. Por favor, verifique seus envs principais.',
+};
+
+export default password;
diff --git a/packages/phrases/src/locales/pt-br/errors/request.ts b/packages/phrases/src/locales/pt-br/errors/request.ts
new file mode 100644
index 000000000..84279d27e
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/request.ts
@@ -0,0 +1,6 @@
+const request = {
+ invalid_input: 'Entrada inválida. {{details}}',
+ general: 'Ocorreu um erro no pedido.',
+};
+
+export default request;
diff --git a/packages/phrases/src/locales/pt-br/errors/role.ts b/packages/phrases/src/locales/pt-br/errors/role.ts
new file mode 100644
index 000000000..81b3b5a7f
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/role.ts
@@ -0,0 +1,11 @@
+const role = {
+ name_in_use: 'Este nome de papel {{name}} já está em uso',
+ scope_exists: 'O id de escopo {{scopeId}} já foi adicionado a este papel',
+ user_exists: 'O id de usuário {{userId}} já foi adicionado a este papel',
+ default_role_missing:
+ 'Alguns dos nomes de função padrão não existem no banco de dados, certifique-se de criar funções primeiro',
+ internal_role_violation:
+ 'Você pode estar tentando atualizar ou excluir uma função interna que é proibida pelo Logto. Se você estiver criando uma nova função, tente outro nome que não comece com "#internal:".',
+};
+
+export default role;
diff --git a/packages/phrases/src/locales/pt-br/errors/scope.ts b/packages/phrases/src/locales/pt-br/errors/scope.ts
new file mode 100644
index 000000000..8938904fb
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/scope.ts
@@ -0,0 +1,6 @@
+const scope = {
+ name_exists: 'O nome do escopo {{name}} já está em uso',
+ name_with_space: 'O nome do escopo não pode conter espaços.',
+};
+
+export default scope;
diff --git a/packages/phrases/src/locales/pt-br/errors/session.ts b/packages/phrases/src/locales/pt-br/errors/session.ts
new file mode 100644
index 000000000..dfaf0d365
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/session.ts
@@ -0,0 +1,26 @@
+const session = {
+ not_found: 'Sessão não encontrada. Volte e faça login novamente.',
+ invalid_credentials: 'Credenciais inválidas. Verifique sua entrada.',
+ invalid_sign_in_method: 'O método de login atual não está disponível.',
+ invalid_connector_id: 'Não foi possível encontrar o conector disponível com id {{connectorId}}.',
+ insufficient_info: 'Informações de login insuficientes.',
+ connector_id_mismatch: 'O connectorId é incompatível com o registro da sessão.',
+ connector_session_not_found: 'Sessão do conector não encontrada. Volte e faça login novamente.',
+ verification_session_not_found:
+ 'A verificação não foi bem-sucedida. Reinicie o fluxo de verificação e tente novamente.',
+ verification_expired:
+ 'A conexão expirou. Verifique novamente para garantir a segurança da sua conta.',
+ unauthorized: 'Faça login primeiro.',
+ unsupported_prompt_name: 'Prompt name incompatível.',
+ forgot_password_not_enabled: 'Esqueceu a senha não está ativado.',
+ verification_failed:
+ 'A verificação não foi bem-sucedida. Reinicie o fluxo de verificação e tente novamente.',
+ connector_validation_session_not_found:
+ 'A sessão de validação do token do conector não foi encontrada.',
+ identifier_not_found:
+ 'Identificador de usuário não encontrado. Por favor, volte e faça o login novamente.',
+ interaction_not_found:
+ 'Sessão de interação não encontrada. Por favor, volte e inicie a sessão novamente.',
+};
+
+export default session;
diff --git a/packages/phrases/src/locales/pt-br/errors/sign-in-experiences.ts b/packages/phrases/src/locales/pt-br/errors/sign-in-experiences.ts
new file mode 100644
index 000000000..bfba7f1f8
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/sign-in-experiences.ts
@@ -0,0 +1,23 @@
+const sign_in_experiences = {
+ empty_content_url_of_terms_of_use:
+ 'URL de conteúdo "Termos de uso" vazia. Adicione o URL do conteúdo se "Termos de uso" estiver ativado.',
+ empty_social_connectors:
+ 'Conectores sociais vazios. Adicione conectores sociais ativados quando o método de login social estiver ativado.',
+ enabled_connector_not_found: 'Conector {{type}} ativado não encontrado.',
+ not_one_and_only_one_primary_sign_in_method:
+ 'Deve haver um método de login principal. Verifique sua entrada.',
+ username_requires_password:
+ 'Deve permitir definir uma senha para o identificador de inscrição do nome de usuário.',
+ passwordless_requires_verify:
+ 'Deve ativar a verificação do identificador de inscrição de e-mail/telefone.',
+ miss_sign_up_identifier_in_sign_in:
+ 'Os métodos de login devem conter o identificador de inscrição.',
+ password_sign_in_must_be_enabled:
+ 'O login com senha deve ser ativado quando definir uma senha é necessária na inscrição.',
+ code_sign_in_must_be_enabled:
+ 'O login do código de verificação deve ser ativado quando definir uma senha não é necessária na inscrição.',
+ unsupported_default_language: 'Este idioma - {{language}} não é suportado no momento.',
+ at_least_one_authentication_factor: 'Você deve selecionar pelo menos um fator de autenticação.',
+};
+
+export default sign_in_experiences;
diff --git a/packages/phrases/src/locales/pt-br/errors/storage.ts b/packages/phrases/src/locales/pt-br/errors/storage.ts
new file mode 100644
index 000000000..bae1baf1a
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/storage.ts
@@ -0,0 +1,7 @@
+const storage = {
+ not_configured: 'O provedor de armazenamento não está configurado.',
+ missing_parameter: 'Parâmetro {{parameter}} ausente para o provedor de armazenamento.',
+ upload_error: 'Falha ao fazer upload do arquivo para o provedor de armazenamento.',
+};
+
+export default storage;
diff --git a/packages/phrases/src/locales/pt-br/errors/swagger.ts b/packages/phrases/src/locales/pt-br/errors/swagger.ts
new file mode 100644
index 000000000..c3dda9f9a
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/swagger.ts
@@ -0,0 +1,7 @@
+const swagger = {
+ invalid_zod_type: 'Zod type inválido. Verifique a configuração do protetor de rota.',
+ not_supported_zod_type_for_params:
+ 'Zod type não suportado para os parâmetros. Verifique a configuração do protetor de rota.',
+};
+
+export default swagger;
diff --git a/packages/phrases/src/locales/pt-br/errors/user.ts b/packages/phrases/src/locales/pt-br/errors/user.ts
new file mode 100644
index 000000000..774e95620
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/user.ts
@@ -0,0 +1,33 @@
+const user = {
+ username_already_in_use: 'Este nome de usuário já está em uso.',
+ email_already_in_use: 'Este e-mail está associado a uma conta existente.',
+ phone_already_in_use: 'Este número de telefone está associado a uma conta existente.',
+ invalid_email: 'Endereço de e-mail inválido.',
+ invalid_phone: 'Número de telefone inválido.',
+ email_not_exist: 'O endereço de e-mail ainda não foi registrado.',
+ phone_not_exist: 'O número de telefone ainda não foi registrado.',
+ identity_not_exist: 'A conta social ainda não foi registrada.',
+ identity_already_in_use: 'A conta social foi associada a uma conta existente.',
+ social_account_exists_in_profile: 'A conta social já está associada ao seu perfil.',
+ cannot_delete_self: 'Você não pode excluir a si mesmo.',
+ sign_up_method_not_enabled: 'Este método de inscrição não está ativado',
+ sign_in_method_not_enabled: 'Este método de login não está habilitado.',
+ same_password: 'A nova senha não pode ser igual à senha antiga.',
+ password_required_in_profile: 'Você precisa definir uma senha antes de entrar.',
+ new_password_required_in_profile: 'Você precisa definir uma nova senha.',
+ password_exists_in_profile: 'A senha já existe em seu perfil.',
+ username_required_in_profile: 'Você precisa definir um nome de usuário antes de entrar.',
+ username_exists_in_profile: 'O nome de usuário já existe em seu perfil.',
+ email_required_in_profile: 'Você precisa adicionar um endereço de e-mail antes de fazer login.',
+ email_exists_in_profile: 'Seu perfil já foi associado a um endereço de e-mail.',
+ phone_required_in_profile: 'Você precisa adicionar um número de telefone antes de fazer login.',
+ phone_exists_in_profile: 'Seu perfil já foi associado a um número de telefone.',
+ email_or_phone_required_in_profile:
+ 'Você precisa adicionar um endereço de e-mail ou número de telefone antes de fazer login.',
+ suspended: 'Esta conta está suspensa.',
+ user_not_exist: 'O usuário com {{ identifier }} não existe',
+ missing_profile: 'Você precisa fornecer informações adicionais antes de fazer login.',
+ role_exists: 'O id da função {{roleId}} já foi adicionado a este usuário',
+};
+
+export default user;
diff --git a/packages/phrases/src/locales/pt-br/errors/verification-code.ts b/packages/phrases/src/locales/pt-br/errors/verification-code.ts
new file mode 100644
index 000000000..9798bd091
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/errors/verification-code.ts
@@ -0,0 +1,13 @@
+const verification_code = {
+ phone_email_empty: 'Tanto o telefone quanto o e-mail estão vazios.',
+ not_found:
+ 'Código de verificação não encontrado. Por favor, envie um código de verificação primeiro.',
+ phone_mismatch: 'Telefone não corresponde. Por favor, solicite um novo código de verificação.',
+ email_mismatch: 'E-mail não corresponde. Por favor, solicite um novo código de verificação.',
+ code_mismatch: 'Código de verificação inválido.',
+ expired: 'O código de verificação expirou. Por favor, solicite um novo código de verificação.',
+ exceed_max_try:
+ 'Excedido o limite de tentativas de código de verificação. Por favor, solicite um novo código de verificação.',
+};
+
+export default verification_code;
diff --git a/packages/phrases/src/locales/pt-br/index.ts b/packages/phrases/src/locales/pt-br/index.ts
index d77ad8218..1a4354f6f 100644
--- a/packages/phrases/src/locales/pt-br/index.ts
+++ b/packages/phrases/src/locales/pt-br/index.ts
@@ -1,6 +1,6 @@
import type { LocalePhrase } from '../../types.js';
-import errors from './errors.js';
+import errors from './errors/index.js';
import translation from './translation/index.js';
const ptBR: LocalePhrase = Object.freeze({
diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/index.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/index.ts
index 11ab86ac0..9827d36ad 100644
--- a/packages/phrases/src/locales/pt-br/translation/admin-console/index.ts
+++ b/packages/phrases/src/locales/pt-br/translation/admin-console/index.ts
@@ -19,7 +19,7 @@ import profile from './profile.js';
import role_details from './role-details.js';
import roles from './roles.js';
import session_expired from './session-expired.js';
-import sign_in_exp from './sign-in-exp.js';
+import sign_in_exp from './sign-in-exp/index.js';
import tab_sections from './tab-sections.js';
import tabs from './tabs.js';
import user_details from './user-details.js';
diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp.ts
deleted file mode 100644
index 8691a90b8..000000000
--- a/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp.ts
+++ /dev/null
@@ -1,184 +0,0 @@
-const sign_in_exp = {
- page_title: 'Experiência de login',
- title: 'Experiência de login',
- description:
- 'Personalize a interface do usuário de login para corresponder à sua marca e visualize em tempo real',
- tabs: {
- branding: 'Marca',
- sign_up_and_sign_in: 'Inscreva-se e faça login',
- others: 'Outros',
- },
- welcome: {
- title: 'Customize sign-in experience', // UNTRANSLATED
- description:
- 'Get started fast with your first sign-in setup. This guide walks you through all the necessary settings.', // UNTRANSLATED
- get_started: 'Iniciar',
- apply_remind:
- 'Observe que a experiência de login será aplicada a todos os aplicativos nesta conta.',
- },
- color: {
- title: 'COR',
- primary_color: 'Cor da marca',
- dark_primary_color: 'Cor da marca (Escuro)',
- dark_mode: 'Ativar modo escuro',
- dark_mode_description:
- 'Seu aplicativo terá um tema de modo escuro gerado automaticamente com base na cor da sua marca e no algoritmo Logto. Você é livre para personalizar.',
- dark_mode_reset_tip: 'Recalcule a cor do modo escuro com base na cor da marca.',
- reset: 'Recalcular',
- },
- branding: {
- title: 'ÁREA DE MARCA',
- ui_style: 'Estilo',
- favicon: 'Favicon', // UNTRANSLATED
- logo_image_url: 'URL da imagem do logotipo do aplicativo',
- logo_image_url_placeholder: 'https://your.cdn.domain/logo.png',
- dark_logo_image_url: 'URL da imagem do logotipo do aplicativo (Escuro)',
- dark_logo_image_url_placeholder: 'https://your.cdn.domain/logo-dark.png',
- logo_image: 'App logo', // UNTRANSLATED
- dark_logo_image: 'App logo (Dark)', // UNTRANSLATED
- logo_image_error: 'App logo: {{error}}', // UNTRANSLATED
- favicon_error: 'Favicon: {{error}}', // UNTRANSLATED
- },
- custom_css: {
- title: 'Custom CSS', // UNTRANSLATED
- css_code_editor_title: 'Personalize your UI with Custom CSS', // UNTRANSLATED
- css_code_editor_description1: 'See the example of Custom CSS.', // UNTRANSLATED
- css_code_editor_description2: '{{link}}', // UNTRANSLATED
-
- css_code_editor_description_link_content: 'Learn more', // UNTRANSLATED
- css_code_editor_content_placeholder:
- 'Enter your custom CSS to tailor the styles of anything to your exact specifications. Express your creativity and make your UI stand out.', // UNTRANSLATED
- },
- sign_up_and_sign_in: {
- identifiers_email: 'Endereço de e-mail',
- identifiers_phone: 'Número de telefone',
- identifiers_username: 'Nome de usuário',
- identifiers_email_or_sms: 'Endereço de e-mail ou número de telefone',
- identifiers_none: 'Não aplicável',
- and: 'e',
- or: 'ou',
- sign_up: {
- title: 'INSCREVER-SE',
- sign_up_identifier: 'Identificador de inscrição',
- identifier_description:
- 'O identificador de inscrição é necessário para a criação da conta e deve ser incluído na tela de login.',
- sign_up_authentication: 'Configuração de autenticação para inscrição',
- authentication_description:
- 'Todas as ações selecionadas serão obrigatórias para os usuários completarem o fluxo.',
- set_a_password_option: 'Crie sua senha',
- verify_at_sign_up_option: 'Visualize na inscrição',
- social_only_creation_description: '(Isso se aplica apenas à criação de contas sociais)',
- },
- sign_in: {
- title: 'ENTRAR',
- sign_in_identifier_and_auth: 'Configurações de identificador e autenticação para login',
- description:
- 'Os usuários podem entrar usando qualquer uma das opções disponíveis. Ajuste o layout arrastando e soltando as opções abaixo.',
- add_sign_in_method: 'Adicionar método de login',
- password_auth: 'Senha',
- verification_code_auth: 'Código de verificação',
- auth_swap_tip: 'Troque as opções abaixo para determinar qual aparece primeiro no fluxo.',
- require_auth_factor: 'Você deve selecionar pelo menos um fator de autenticação.',
- },
- social_sign_in: {
- title: 'LOGIN SOCIAL',
- social_sign_in: 'Login social',
- description:
- 'Dependendo do identificador obrigatório que você configurou, seu usuário pode ser solicitado a fornecer um identificador ao se inscrever via conector social.',
- add_social_connector: 'Adicionar Conector Social',
- set_up_hint: {
- not_in_list: 'Não está na lista?',
- set_up_more: 'Configurar',
- go_to: 'outros conectores sociais agora.',
- },
- },
- tip: {
- set_a_password:
- 'Um conjunto exclusivo de uma senha para o seu nome de usuário é obrigatório.',
- verify_at_sign_up:
- 'No momento, suportamos apenas e-mail verificado. Sua base de usuários pode conter um grande número de endereços de e-mail de baixa qualidade se não houver validação.',
- password_auth:
- 'Isso é essencial, pois você habilitou a opção de definir uma senha durante o processo de inscrição.',
- verification_code_auth:
- 'Isso é essencial, pois você habilitou apenas a opção de fornecer o código de verificação ao se inscrever. Você pode desmarcar a caixa quando a configuração de senha for permitida no processo de inscrição.',
- delete_sign_in_method:
- 'Isso é essencial, pois você selecionou {{identifier}} como um identificador obrigatório.',
- },
- },
- others: {
- terms_of_use: {
- title: 'TERMOS DE USO',
- terms_of_use: 'URL dos termos de uso',
- terms_of_use_placeholder: 'https://your.terms.of.use/',
- privacy_policy: 'URL da política de privacidade',
- privacy_policy_placeholder: 'https://your.privacy.policy/',
- },
- languages: {
- title: 'IDIOMAS',
- enable_auto_detect: 'Ativar detecção automática',
- description:
- 'Seu software detecta a configuração de localidade do usuário e muda para o idioma local. Você pode adicionar novos idiomas traduzindo a interface do usuário do inglês para outro idioma.',
- manage_language: 'Gerenciar idioma',
- default_language: 'Idioma padrão',
- default_language_description_auto:
- 'O idioma padrão será usado quando o idioma do usuário detectado não estiver coberto na biblioteca de idiomas atual.',
- default_language_description_fixed:
- 'Quando a detecção automática está desativada, o idioma padrão é o único idioma que seu software mostrará. Ative a detecção automática de extensão de idioma.',
- },
- manage_language: {
- title: 'Gerenciar idioma',
- subtitle:
- 'Localize a experiência do produto adicionando idiomas e traduções. Sua contribuição pode ser definida como o idioma padrão.',
- add_language: 'Adicionar idioma',
- logto_provided: 'Fornecido por Logto',
- key: 'Chave',
- logto_source_values: 'Valores Logto',
- custom_values: 'Valores personalizados',
- clear_all_tip: 'Limpar todos os valores',
- unsaved_description: 'As alterações não serão salvas se você sair desta página sem salvar.',
- deletion_tip: 'Excluir o idioma',
- deletion_title: 'Deseja excluir o idioma adicionado?',
- deletion_description:
- 'Após a exclusão, seus usuários não poderão navegar naquele idioma novamente.',
- default_language_deletion_title: 'O idioma padrão não pode ser excluído.',
- default_language_deletion_description:
- '{{language}} está definido como seu idioma padrão e não pode ser excluído. ',
- },
- advanced_options: {
- title: 'OPÇÕES AVANÇADAS',
- enable_user_registration: 'Ativar registro de usuário',
- enable_user_registration_description:
- 'Habilitar ou desabilitar o registro do usuário. Depois de desativados, os usuários ainda podem ser adicionados no Admin Console, mas os usuários não podem mais estabelecer contas por meio da interface do usuário de login.',
- },
- },
- setup_warning: {
- no_connector_sms:
- 'Nenhum conector SMS configurado ainda. Até terminar de configurar seu conector SMS, seus usuários não poderá fazer login. {{link}} em "Conectores"',
- no_connector_email:
- 'Nenhum conector e-mail configurado ainda. Até terminar de configurar seu conector SMS, seus usuários não poderá fazer login. {{link}} em "Conectores"',
- no_connector_social:
- 'Nenhum conector social configurado ainda. Até terminar de configurar seu conector SMS, seus usuários não poderá fazer login. {{link}} em "Conectores"',
- no_added_social_connector:
- 'Você configurou alguns conectores sociais agora. Certifique-se de adicionar alguns à sua experiência de login.',
- setup_link: 'Configurar',
- },
- save_alert: {
- description:
- 'Você está implementando novos procedimentos de entrada e inscrição. Todos os seus usuários podem ser afetados pela nova configuração. Tem certeza de se comprometer com a mudança?',
- before: 'Antes',
- after: 'Depois',
- sign_up: 'Inscrever-se',
- sign_in: 'Entrar',
- social: 'Social',
- },
- preview: {
- title: 'Visualização de login',
- live_preview: 'Live preview', // UNTRANSLATED
- live_preview_tip: 'Save to preview changes', // UNTRANSLATED
- native: 'Native',
- desktop_web: 'Desktop Web',
- mobile_web: 'Mobile Web',
- },
-};
-
-export default sign_in_exp;
diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp/index.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp/index.ts
new file mode 100644
index 000000000..1da6843af
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp/index.ts
@@ -0,0 +1,86 @@
+import others from './others.js';
+import sign_up_and_sign_in from './sign-up-and-sign-in.js';
+
+const sign_in_exp = {
+ page_title: 'Experiência de login',
+ title: 'Experiência de login',
+ description:
+ 'Personalize a interface do usuário de login para corresponder à sua marca e visualize em tempo real',
+ tabs: {
+ branding: 'Marca',
+ sign_up_and_sign_in: 'Inscreva-se e faça login',
+ others: 'Outros',
+ },
+ welcome: {
+ title: 'Customize sign-in experience',
+ description:
+ 'Get started fast with your first sign-in setup. This guide walks you through all the necessary settings.',
+ get_started: 'Iniciar',
+ apply_remind:
+ 'Observe que a experiência de login será aplicada a todos os aplicativos nesta conta.',
+ },
+ color: {
+ title: 'COR',
+ primary_color: 'Cor da marca',
+ dark_primary_color: 'Cor da marca (Escuro)',
+ dark_mode: 'Ativar modo escuro',
+ dark_mode_description:
+ 'Seu aplicativo terá um tema de modo escuro gerado automaticamente com base na cor da sua marca e no algoritmo Logto. Você é livre para personalizar.',
+ dark_mode_reset_tip: 'Recalcule a cor do modo escuro com base na cor da marca.',
+ reset: 'Recalcular',
+ },
+ branding: {
+ title: 'ÁREA DE MARCA',
+ ui_style: 'Estilo',
+ favicon: 'Favicon',
+ logo_image_url: 'URL da imagem do logotipo do aplicativo',
+ logo_image_url_placeholder: 'https://your.cdn.domain/logo.png',
+ dark_logo_image_url: 'URL da imagem do logotipo do aplicativo (Escuro)',
+ dark_logo_image_url_placeholder: 'https://your.cdn.domain/logo-dark.png',
+ logo_image: 'App logo',
+ dark_logo_image: 'App logo (Dark)',
+ logo_image_error: 'App logo: {{error}}',
+ favicon_error: 'Favicon: {{error}}',
+ },
+ custom_css: {
+ title: 'Custom CSS',
+ css_code_editor_title: 'Personalize your UI with Custom CSS',
+ css_code_editor_description1: 'See the example of Custom CSS.',
+ css_code_editor_description2: '{{link}}',
+ css_code_editor_description_link_content: 'Learn more',
+ css_code_editor_content_placeholder:
+ 'Enter your custom CSS to tailor the styles of anything to your exact specifications. Express your creativity and make your UI stand out.',
+ },
+ setup_warning: {
+ no_connector_sms:
+ 'Nenhum conector SMS configurado ainda. Até terminar de configurar seu conector SMS, seus usuários não poderá fazer login. {{link}} em "Conectores"',
+ no_connector_email:
+ 'Nenhum conector e-mail configurado ainda. Até terminar de configurar seu conector SMS, seus usuários não poderá fazer login. {{link}} em "Conectores"',
+ no_connector_social:
+ 'Nenhum conector social configurado ainda. Até terminar de configurar seu conector SMS, seus usuários não poderá fazer login. {{link}} em "Conectores"',
+ no_added_social_connector:
+ 'Você configurou alguns conectores sociais agora. Certifique-se de adicionar alguns à sua experiência de login.',
+ setup_link: 'Configurar',
+ },
+ save_alert: {
+ description:
+ 'Você está implementando novos procedimentos de entrada e inscrição. Todos os seus usuários podem ser afetados pela nova configuração. Tem certeza de se comprometer com a mudança?',
+ before: 'Antes',
+ after: 'Depois',
+ sign_up: 'Inscrever-se',
+ sign_in: 'Entrar',
+ social: 'Social',
+ },
+ preview: {
+ title: 'Visualização de login',
+ live_preview: 'Live preview',
+ live_preview_tip: 'Save to preview changes',
+ native: 'Native',
+ desktop_web: 'Desktop Web',
+ mobile_web: 'Mobile Web',
+ },
+ others,
+ sign_up_and_sign_in,
+};
+
+export default sign_in_exp;
diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp/others.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp/others.ts
new file mode 100644
index 000000000..404db2c0c
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp/others.ts
@@ -0,0 +1,48 @@
+const others = {
+ terms_of_use: {
+ title: 'TERMOS DE USO',
+ terms_of_use: 'URL dos termos de uso',
+ terms_of_use_placeholder: 'https://your.terms.of.use/',
+ privacy_policy: 'URL da política de privacidade',
+ privacy_policy_placeholder: 'https://your.privacy.policy/',
+ },
+ languages: {
+ title: 'IDIOMAS',
+ enable_auto_detect: 'Ativar detecção automática',
+ description:
+ 'Seu software detecta a configuração de localidade do usuário e muda para o idioma local. Você pode adicionar novos idiomas traduzindo a interface do usuário do inglês para outro idioma.',
+ manage_language: 'Gerenciar idioma',
+ default_language: 'Idioma padrão',
+ default_language_description_auto:
+ 'O idioma padrão será usado quando o idioma do usuário detectado não estiver coberto na biblioteca de idiomas atual.',
+ default_language_description_fixed:
+ 'Quando a detecção automática está desativada, o idioma padrão é o único idioma que seu software mostrará. Ative a detecção automática de extensão de idioma.',
+ },
+ manage_language: {
+ title: 'Gerenciar idioma',
+ subtitle:
+ 'Localize a experiência do produto adicionando idiomas e traduções. Sua contribuição pode ser definida como o idioma padrão.',
+ add_language: 'Adicionar idioma',
+ logto_provided: 'Fornecido por Logto',
+ key: 'Chave',
+ logto_source_values: 'Valores Logto',
+ custom_values: 'Valores personalizados',
+ clear_all_tip: 'Limpar todos os valores',
+ unsaved_description: 'As alterações não serão salvas se você sair desta página sem salvar.',
+ deletion_tip: 'Excluir o idioma',
+ deletion_title: 'Deseja excluir o idioma adicionado?',
+ deletion_description:
+ 'Após a exclusão, seus usuários não poderão navegar naquele idioma novamente.',
+ default_language_deletion_title: 'O idioma padrão não pode ser excluído.',
+ default_language_deletion_description:
+ '{{language}} está definido como seu idioma padrão e não pode ser excluído. ',
+ },
+ advanced_options: {
+ title: 'OPÇÕES AVANÇADAS',
+ enable_user_registration: 'Ativar registro de usuário',
+ enable_user_registration_description:
+ 'Habilitar ou desabilitar o registro do usuário. Depois de desativados, os usuários ainda podem ser adicionados no Admin Console, mas os usuários não podem mais estabelecer contas por meio da interface do usuário de login.',
+ },
+};
+
+export default others;
diff --git a/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts b/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts
new file mode 100644
index 000000000..e95f55ae0
--- /dev/null
+++ b/packages/phrases/src/locales/pt-br/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts
@@ -0,0 +1,57 @@
+const sign_up_and_sign_in = {
+ identifiers_email: 'Endereço de e-mail',
+ identifiers_phone: 'Número de telefone',
+ identifiers_username: 'Nome de usuário',
+ identifiers_email_or_sms: 'Endereço de e-mail ou número de telefone',
+ identifiers_none: 'Não aplicável',
+ and: 'e',
+ or: 'ou',
+ sign_up: {
+ title: 'INSCREVER-SE',
+ sign_up_identifier: 'Identificador de inscrição',
+ identifier_description:
+ 'O identificador de inscrição é necessário para a criação da conta e deve ser incluído na tela de login.',
+ sign_up_authentication: 'Configuração de autenticação para inscrição',
+ authentication_description:
+ 'Todas as ações selecionadas serão obrigatórias para os usuários completarem o fluxo.',
+ set_a_password_option: 'Crie sua senha',
+ verify_at_sign_up_option: 'Visualize na inscrição',
+ social_only_creation_description: '(Isso se aplica apenas à criação de contas sociais)',
+ },
+ sign_in: {
+ title: 'ENTRAR',
+ sign_in_identifier_and_auth: 'Configurações de identificador e autenticação para login',
+ description:
+ 'Os usuários podem entrar usando qualquer uma das opções disponíveis. Ajuste o layout arrastando e soltando as opções abaixo.',
+ add_sign_in_method: 'Adicionar método de login',
+ password_auth: 'Senha',
+ verification_code_auth: 'Código de verificação',
+ auth_swap_tip: 'Troque as opções abaixo para determinar qual aparece primeiro no fluxo.',
+ require_auth_factor: 'Você deve selecionar pelo menos um fator de autenticação.',
+ },
+ social_sign_in: {
+ title: 'LOGIN SOCIAL',
+ social_sign_in: 'Login social',
+ description:
+ 'Dependendo do identificador obrigatório que você configurou, seu usuário pode ser solicitado a fornecer um identificador ao se inscrever via conector social.',
+ add_social_connector: 'Adicionar Conector Social',
+ set_up_hint: {
+ not_in_list: 'Não está na lista?',
+ set_up_more: 'Configurar',
+ go_to: 'outros conectores sociais agora.',
+ },
+ },
+ tip: {
+ set_a_password: 'Um conjunto exclusivo de uma senha para o seu nome de usuário é obrigatório.',
+ verify_at_sign_up:
+ 'No momento, suportamos apenas e-mail verificado. Sua base de usuários pode conter um grande número de endereços de e-mail de baixa qualidade se não houver validação.',
+ password_auth:
+ 'Isso é essencial, pois você habilitou a opção de definir uma senha durante o processo de inscrição.',
+ verification_code_auth:
+ 'Isso é essencial, pois você habilitou apenas a opção de fornecer o código de verificação ao se inscrever. Você pode desmarcar a caixa quando a configuração de senha for permitida no processo de inscrição.',
+ delete_sign_in_method:
+ 'Isso é essencial, pois você selecionou {{identifier}} como um identificador obrigatório.',
+ },
+};
+
+export default sign_up_and_sign_in;
diff --git a/packages/phrases/src/locales/pt-pt/errors.ts b/packages/phrases/src/locales/pt-pt/errors.ts
deleted file mode 100644
index 9260b97c6..000000000
--- a/packages/phrases/src/locales/pt-pt/errors.ts
+++ /dev/null
@@ -1,213 +0,0 @@
-const errors = {
- request: {
- invalid_input: 'Input inválido. {{details}}',
- general: 'Ocorreu um erro no pedido.',
- },
- auth: {
- authorization_header_missing: 'O cabeçalho de autorização está ausente.',
- authorization_token_type_not_supported: 'O tipo de autorização não é suportado.',
- unauthorized: 'Não autorizado. Verifique as credenciais e o scope.',
- forbidden: 'Proibido. Verifique os seus cargos e permissões.',
- expected_role_not_found: 'Role esperado não encontrado. Verifique os seus cargos e permissões.',
- jwt_sub_missing: 'Campo `sub` está ausente no JWT.',
- require_re_authentication:
- 'É necessária uma nova autenticação para executar uma ação protegida.',
- },
- guard: {
- invalid_input: 'O pedido {{type}} é inválido.',
- invalid_pagination: 'O valor de paginação enviado é inválido.',
- can_not_get_tenant_id: 'Não é possível obter o ID do inquilino a partir do pedido.',
- file_size_exceeded: 'Tamanho do ficheiro excedido.',
- mime_type_not_allowed: 'Tipo MIME não permitido.',
- },
- oidc: {
- aborted: 'O utilizador final abortou a interação.',
- invalid_scope: 'Scope {{scope}} não é suportado.',
- invalid_scope_plural: 'Scope {{scopes}} não são suportados.',
- invalid_token: 'O Token fornecido é inválido.',
- invalid_client_metadata: 'Metadados de cliente inválidos fornecidos.',
- insufficient_scope: 'Token de acesso sem scope solicitado {{scopes}}.',
- invalid_request: 'Pedido inválido.',
- invalid_grant: 'Pedido Grant inválido.',
- invalid_redirect_uri:
- '`redirect_uri` não correspondeu a nenhum dos `redirect_uris` registados.',
- access_denied: 'Acesso negado.',
- invalid_target: 'Indicador de recurso inválido.',
- unsupported_grant_type: '`grant_type` solicitado não é suportado.',
- unsupported_response_mode: '`response_mode` solicitado não é suportado.',
- unsupported_response_type: '`response_type` solicitado não é suportado.',
- provider_error: 'Erro interno OIDC: {{message}}.',
- },
- user: {
- username_already_in_use: 'Este nome de usuário já está em uso.',
- email_already_in_use: 'Este email já está associado a uma conta existente.',
- phone_already_in_use: 'Este número de telefone já está associado a uma conta existente.',
- invalid_email: 'Endereço de email inválido.',
- invalid_phone: 'Número de telefone inválido.',
- email_not_exist: 'O endereço de email ainda não foi registada.',
- phone_not_exist: 'O numero do telefone ainda não foi registada.',
- identity_not_exist: 'A conta social ainda não foi registada.',
- identity_already_in_use: 'A conta social foi registada.',
- social_account_exists_in_profile: 'A conta social já foi associada a este perfil.',
- cannot_delete_self: 'Não se pode remover a si mesmo.',
- sign_up_method_not_enabled: 'Este método de registo não está ativo.',
- sign_in_method_not_enabled: 'Este método de início de sessão não está ativo.',
- same_password: 'A nova palavra-passe não pode ser igual à antiga.',
- password_required_in_profile: 'Precisa de definir uma palavra-passe antes de iniciar sessão.',
- new_password_required_in_profile: 'Precisa de definir uma nova palavra-passe.',
- password_exists_in_profile: 'A palavra-passe já existe no seu perfil.',
- username_required_in_profile:
- 'Precisa de definir um nome de utilizador antes de iniciar sessão.',
- username_exists_in_profile: 'O nome de utilizador já existe no seu perfil.',
- email_required_in_profile: 'Precisa de adicionar um endereço de email antes de iniciar sessão.',
- email_exists_in_profile: 'O seu perfil já está associado a um endereço de email.',
- phone_required_in_profile:
- 'Precisa de adicionar um número de telefone antes de iniciar sessão.',
- phone_exists_in_profile: 'O seu perfil já está associado a um número de telefone.',
- email_or_phone_required_in_profile:
- 'Precisa de adicionar um endereço de email ou um número de telefone antes de iniciar sessão.',
- suspended: 'Esta conta está suspensa.',
- user_not_exist: 'O utilizador com {{ identifier }} não existe.',
- missing_profile: 'Precisa de fornecer informações adicionais antes de iniciar sessão.',
- role_exists: 'O id da função {{roleId}} já foi adicionado a este utilizador.',
- },
- password: {
- unsupported_encryption_method: 'O método de enncriptação {{name}} não é suportado.',
- pepper_not_found: 'pepper da Password não encontrada. Por favor, verifique os envs.',
- },
- session: {
- not_found: 'Sessão não encontrada. Por favor, volte e faça login novamente.',
- invalid_credentials: 'Credenciais inválidas. Por favor, verifique os dados.',
- invalid_sign_in_method: 'O método de login atual não está disponível.',
- invalid_connector_id:
- 'Não foi possível encontrar um conector disponível com o id {{connectorId}}.',
- insufficient_info: 'Informações de login insuficientes.',
- connector_id_mismatch: 'O connectorId não corresponde ao registado na sessão.',
- connector_session_not_found:
- 'Sessão do conector não encontrada. Por favor, volte e faça login novamente.',
- verification_session_not_found:
- 'A verificação não foi bem-sucedida. Reinicie o processo de verificação e tente novamente.',
- verification_expired:
- 'A conexão expirou. Verifique novamente para garantir a segurança de sua conta.',
- unauthorized: 'Faça login primeiro.',
- unsupported_prompt_name: 'Nome de prompt não suportado.',
- forgot_password_not_enabled: 'Recuperação de senha não está habilitada.',
- verification_failed:
- 'A verificação não foi bem-sucedida. Reinicie o processo de verificação e tente novamente.',
- connector_validation_session_not_found:
- 'A sessão do conector para validação do token não foi encontrada.',
- identifier_not_found:
- 'Identificador do usuário não encontrado. Por favor, volte e faça login novamente.',
- interaction_not_found:
- 'Sessão de interação não encontrada. Por favor, volte e inicie a sessão novamente.',
- },
- connector: {
- general: 'Ocorreu um erro no conector: {{errorDescription}}',
- not_found: 'Não é possível encontrar nenhum conector disponível para o tipo: {{type}}.',
- not_enabled: 'O conector não está ativo.',
- invalid_metadata: 'Os metadados do conector são inválidos.',
- invalid_config_guard: 'A configuração de proteção do conector é inválida.',
- unexpected_type: 'O tipo do conector é inesperado.',
- invalid_request_parameters: 'O pedido tem parâmetros de entrada inválidos.',
- insufficient_request_parameters: 'A solicitação pode perder alguns parâmetros de entrada.',
- invalid_config: 'A configuração do conector é inválida.',
- invalid_response: 'A resposta do conector é inválida.',
- template_not_found: 'Não foi possível encontrar o modelo correto na configuração do conector.',
- not_implemented: '{{method}}: ainda não foi implementado.',
- social_invalid_access_token: 'O token de acesso do conector é inválido.',
- invalid_auth_code: 'O código de autenticação do conector é inválido.',
- social_invalid_id_token: 'O token de ID do conector é inválido.',
- authorization_failed: 'O processo de autorização do usuário não foi bem-sucedido.',
- social_auth_code_invalid:
- 'Não foi possível obter o token de acesso, verifique o código de autorização.',
- more_than_one_sms: 'O número de conectores SMS é maior que 1.',
- more_than_one_email: 'O número de conectores de e-mail é maior que 1.',
- more_than_one_connector_factory:
- 'Foram encontradas várias fábricas de conectores (com id {{connectorIds}}), pode desinstalar as desnecessárias.',
- db_connector_type_mismatch: 'Há um conector no banco de dados que não corresponde ao tipo.',
- not_found_with_connector_id:
- 'Não foi possível encontrar o conector com o id do conector padrão fornecido.',
- multiple_instances_not_supported:
- 'Não é possível criar várias instâncias com o conector padrão selecionado.',
- invalid_type_for_syncing_profile:
- 'Você só pode sincronizar o perfil do usuário com conectores sociais.',
- can_not_modify_target: "O 'target' do conector não pode ser modificado.",
- should_specify_target: 'Você deve especificar o alvo (target).',
- multiple_target_with_same_platform:
- 'Não é possível ter vários conectores sociais com o mesmo alvo e plataforma.',
- cannot_overwrite_metadata_for_non_standard_connector:
- 'Os metadados deste conector não podem ser sobrescritos.',
- },
- verification_code: {
- phone_email_empty: 'Tanto o telefone como o e-mail estão vazios.',
- not_found:
- 'Código de verificação não encontrado. Por favor, envie primeiro o código de verificação.',
- phone_mismatch: 'Telefone não corresponde. Por favor, solicite um novo código de verificação.',
- email_mismatch: 'E-mail não corresponde. Por favor, solicite um novo código de verificação.',
- code_mismatch: 'Código de verificação inválido.',
- expired: 'O código de verificação expirou. Por favor, solicite um novo código de verificação.',
- exceed_max_try:
- 'Limite máximo de tentativas de verificação excedido. Por favor, solicite um novo código de verificação.',
- },
- sign_in_experiences: {
- empty_content_url_of_terms_of_use:
- 'URL dos "Termos de uso" vazio. Adicione o URL se os "Termos de uso" estiverem ativados.',
- empty_social_connectors:
- 'Conectores sociais vazios. Adicione conectores sociais e ative os quando o método de login social estiver ativado.',
- enabled_connector_not_found: 'Conector {{type}} ativado não encontrado.',
- not_one_and_only_one_primary_sign_in_method:
- 'Deve haver um e apenas um método de login principal. Por favor, verifique sua entrada.',
- username_requires_password:
- 'É necessário habilitar a configuração de uma senha para o identificador de inscrição por nome de usuário.',
- passwordless_requires_verify:
- 'É necessário habilitar a verificação para o identificador de inscrição por e-mail/telefone.',
- miss_sign_up_identifier_in_sign_in:
- 'Os métodos de login devem conter o identificador de inscrição.',
- password_sign_in_must_be_enabled:
- 'O login com senha deve ser habilitado quando é requerido configurar uma senha na inscrição.',
- code_sign_in_must_be_enabled:
- 'O login com código de verificação deve ser habilitado quando não é requerido configurar uma senha na inscrição.',
- unsupported_default_language: 'Este idioma - {{language}} não é suportado no momento.',
- at_least_one_authentication_factor: 'Você deve selecionar pelo menos um fator de autenticação.',
- },
- localization: {
- cannot_delete_default_language:
- '{{languageTag}} é o seu idioma padrão e não pode ser excluído.',
- invalid_translation_structure:
- 'Estrutura de dados inválida. Verifique sua entrada e tente novamente.',
- },
- swagger: {
- invalid_zod_type: 'Tipo de Zod inválido. Verifique a configuração do protetor de rota.',
- not_supported_zod_type_for_params:
- 'Tipo Zod não suportado para os parâmetros. Verifique a configuração do protetor de rota.',
- },
- entity: {
- create_failed: 'Falha ao criar {{name}}.',
- not_exists: '{{name}} não existe.',
- not_exists_with_id: '{{name}} com o ID `{{id}}` não existe.',
- not_found: 'O recurso não existe.',
- },
- log: {
- invalid_type: 'O tipo de registro é inválido.',
- },
- role: {
- name_in_use: 'Este nome de função {{name}} já está em uso',
- scope_exists: 'O id do escopo {{scopeId}} já foi adicionado a esta função',
- user_exists: 'O id do usuário {{userId}} já foi adicionado a esta função',
- default_role_missing:
- 'Alguns dos nomes de função padrão não existem no banco de dados, por favor, certifique-se de criar as funções primeiro',
- internal_role_violation:
- 'Você pode estar tentando atualizar ou excluir uma função interna que é proibida pelo Logto. Se você estiver criando uma nova função, tente outro nome que não comece com "#internal:". ',
- },
- scope: {
- name_exists: 'O nome do escopo {{name}} já está em uso',
- name_with_space: 'O nome do escopo não pode conter espaços.',
- },
- storage: {
- not_configured: 'O provedor de armazenamento não está configurado.',
- missing_parameter: 'Faltando o parâmetro {{parameter}} para o provedor de armazenamento.',
- upload_error: 'Falha ao enviar o arquivo para o provedor de armazenamento.',
- },
-};
-
-export default errors;
diff --git a/packages/phrases/src/locales/pt-pt/errors/auth.ts b/packages/phrases/src/locales/pt-pt/errors/auth.ts
new file mode 100644
index 000000000..d7ab405b6
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/auth.ts
@@ -0,0 +1,11 @@
+const auth = {
+ authorization_header_missing: 'O cabeçalho de autorização está ausente.',
+ authorization_token_type_not_supported: 'O tipo de autorização não é suportado.',
+ unauthorized: 'Não autorizado. Verifique as credenciais e o scope.',
+ forbidden: 'Proibido. Verifique os seus cargos e permissões.',
+ expected_role_not_found: 'Role esperado não encontrado. Verifique os seus cargos e permissões.',
+ jwt_sub_missing: 'Campo `sub` está ausente no JWT.',
+ require_re_authentication: 'É necessária uma nova autenticação para executar uma ação protegida.',
+};
+
+export default auth;
diff --git a/packages/phrases/src/locales/pt-pt/errors/connector.ts b/packages/phrases/src/locales/pt-pt/errors/connector.ts
new file mode 100644
index 000000000..720027c5f
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/connector.ts
@@ -0,0 +1,39 @@
+const connector = {
+ general: 'Ocorreu um erro no conector: {{errorDescription}}',
+ not_found: 'Não é possível encontrar nenhum conector disponível para o tipo: {{type}}.',
+ not_enabled: 'O conector não está ativo.',
+ invalid_metadata: 'Os metadados do conector são inválidos.',
+ invalid_config_guard: 'A configuração de proteção do conector é inválida.',
+ unexpected_type: 'O tipo do conector é inesperado.',
+ invalid_request_parameters: 'O pedido tem parâmetros de entrada inválidos.',
+ insufficient_request_parameters: 'A solicitação pode perder alguns parâmetros de entrada.',
+ invalid_config: 'A configuração do conector é inválida.',
+ invalid_response: 'A resposta do conector é inválida.',
+ template_not_found: 'Não foi possível encontrar o modelo correto na configuração do conector.',
+ not_implemented: '{{method}}: ainda não foi implementado.',
+ social_invalid_access_token: 'O token de acesso do conector é inválido.',
+ invalid_auth_code: 'O código de autenticação do conector é inválido.',
+ social_invalid_id_token: 'O token de ID do conector é inválido.',
+ authorization_failed: 'O processo de autorização do usuário não foi bem-sucedido.',
+ social_auth_code_invalid:
+ 'Não foi possível obter o token de acesso, verifique o código de autorização.',
+ more_than_one_sms: 'O número de conectores SMS é maior que 1.',
+ more_than_one_email: 'O número de conectores de e-mail é maior que 1.',
+ more_than_one_connector_factory:
+ 'Foram encontradas várias fábricas de conectores (com id {{connectorIds}}), pode desinstalar as desnecessárias.',
+ db_connector_type_mismatch: 'Há um conector no banco de dados que não corresponde ao tipo.',
+ not_found_with_connector_id:
+ 'Não foi possível encontrar o conector com o id do conector padrão fornecido.',
+ multiple_instances_not_supported:
+ 'Não é possível criar várias instâncias com o conector padrão selecionado.',
+ invalid_type_for_syncing_profile:
+ 'Você só pode sincronizar o perfil do usuário com conectores sociais.',
+ can_not_modify_target: "O 'target' do conector não pode ser modificado.",
+ should_specify_target: 'Você deve especificar o alvo (target).',
+ multiple_target_with_same_platform:
+ 'Não é possível ter vários conectores sociais com o mesmo alvo e plataforma.',
+ cannot_overwrite_metadata_for_non_standard_connector:
+ 'Os metadados deste conector não podem ser sobrescritos.',
+};
+
+export default connector;
diff --git a/packages/phrases/src/locales/pt-pt/errors/entity.ts b/packages/phrases/src/locales/pt-pt/errors/entity.ts
new file mode 100644
index 000000000..762ce6e2c
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/entity.ts
@@ -0,0 +1,8 @@
+const entity = {
+ create_failed: 'Falha ao criar {{name}}.',
+ not_exists: '{{name}} não existe.',
+ not_exists_with_id: '{{name}} com o ID `{{id}}` não existe.',
+ not_found: 'O recurso não existe.',
+};
+
+export default entity;
diff --git a/packages/phrases/src/locales/pt-pt/errors/guard.ts b/packages/phrases/src/locales/pt-pt/errors/guard.ts
new file mode 100644
index 000000000..beed3a701
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/guard.ts
@@ -0,0 +1,9 @@
+const guard = {
+ invalid_input: 'O pedido {{type}} é inválido.',
+ invalid_pagination: 'O valor de paginação enviado é inválido.',
+ can_not_get_tenant_id: 'Não é possível obter o ID do inquilino a partir do pedido.',
+ file_size_exceeded: 'Tamanho do ficheiro excedido.',
+ mime_type_not_allowed: 'Tipo MIME não permitido.',
+};
+
+export default guard;
diff --git a/packages/phrases/src/locales/pt-pt/errors/index.ts b/packages/phrases/src/locales/pt-pt/errors/index.ts
new file mode 100644
index 000000000..c3f5e05ec
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/index.ts
@@ -0,0 +1,39 @@
+import auth from './auth.js';
+import connector from './connector.js';
+import entity from './entity.js';
+import guard from './guard.js';
+import localization from './localization.js';
+import log from './log.js';
+import oidc from './oidc.js';
+import password from './password.js';
+import request from './request.js';
+import role from './role.js';
+import scope from './scope.js';
+import session from './session.js';
+import sign_in_experiences from './sign-in-experiences.js';
+import storage from './storage.js';
+import swagger from './swagger.js';
+import user from './user.js';
+import verification_code from './verification-code.js';
+
+const errors = {
+ request,
+ auth,
+ guard,
+ oidc,
+ user,
+ password,
+ session,
+ connector,
+ verification_code,
+ sign_in_experiences,
+ localization,
+ swagger,
+ entity,
+ log,
+ role,
+ scope,
+ storage,
+};
+
+export default errors;
diff --git a/packages/phrases/src/locales/pt-pt/errors/localization.ts b/packages/phrases/src/locales/pt-pt/errors/localization.ts
new file mode 100644
index 000000000..b5494bb82
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/localization.ts
@@ -0,0 +1,7 @@
+const localization = {
+ cannot_delete_default_language: '{{languageTag}} é o seu idioma padrão e não pode ser excluído.',
+ invalid_translation_structure:
+ 'Estrutura de dados inválida. Verifique sua entrada e tente novamente.',
+};
+
+export default localization;
diff --git a/packages/phrases/src/locales/pt-pt/errors/log.ts b/packages/phrases/src/locales/pt-pt/errors/log.ts
new file mode 100644
index 000000000..87fba5ac7
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/log.ts
@@ -0,0 +1,5 @@
+const log = {
+ invalid_type: 'O tipo de registro é inválido.',
+};
+
+export default log;
diff --git a/packages/phrases/src/locales/pt-pt/errors/oidc.ts b/packages/phrases/src/locales/pt-pt/errors/oidc.ts
new file mode 100644
index 000000000..09ef691c7
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/oidc.ts
@@ -0,0 +1,19 @@
+const oidc = {
+ aborted: 'O utilizador final abortou a interação.',
+ invalid_scope: 'Scope {{scope}} não é suportado.',
+ invalid_scope_plural: 'Scope {{scopes}} não são suportados.',
+ invalid_token: 'O Token fornecido é inválido.',
+ invalid_client_metadata: 'Metadados de cliente inválidos fornecidos.',
+ insufficient_scope: 'Token de acesso sem scope solicitado {{scopes}}.',
+ invalid_request: 'Pedido inválido.',
+ invalid_grant: 'Pedido Grant inválido.',
+ invalid_redirect_uri: '`redirect_uri` não correspondeu a nenhum dos `redirect_uris` registados.',
+ access_denied: 'Acesso negado.',
+ invalid_target: 'Indicador de recurso inválido.',
+ unsupported_grant_type: '`grant_type` solicitado não é suportado.',
+ unsupported_response_mode: '`response_mode` solicitado não é suportado.',
+ unsupported_response_type: '`response_type` solicitado não é suportado.',
+ provider_error: 'Erro interno OIDC: {{message}}.',
+};
+
+export default oidc;
diff --git a/packages/phrases/src/locales/pt-pt/errors/password.ts b/packages/phrases/src/locales/pt-pt/errors/password.ts
new file mode 100644
index 000000000..87e81c630
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/password.ts
@@ -0,0 +1,6 @@
+const password = {
+ unsupported_encryption_method: 'O método de enncriptação {{name}} não é suportado.',
+ pepper_not_found: 'pepper da Password não encontrada. Por favor, verifique os envs.',
+};
+
+export default password;
diff --git a/packages/phrases/src/locales/pt-pt/errors/request.ts b/packages/phrases/src/locales/pt-pt/errors/request.ts
new file mode 100644
index 000000000..2168e4eb4
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/request.ts
@@ -0,0 +1,6 @@
+const request = {
+ invalid_input: 'Input inválido. {{details}}',
+ general: 'Ocorreu um erro no pedido.',
+};
+
+export default request;
diff --git a/packages/phrases/src/locales/pt-pt/errors/role.ts b/packages/phrases/src/locales/pt-pt/errors/role.ts
new file mode 100644
index 000000000..c4aad17e4
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/role.ts
@@ -0,0 +1,11 @@
+const role = {
+ name_in_use: 'Este nome de função {{name}} já está em uso',
+ scope_exists: 'O id do escopo {{scopeId}} já foi adicionado a esta função',
+ user_exists: 'O id do usuário {{userId}} já foi adicionado a esta função',
+ default_role_missing:
+ 'Alguns dos nomes de função padrão não existem no banco de dados, por favor, certifique-se de criar as funções primeiro',
+ internal_role_violation:
+ 'Você pode estar tentando atualizar ou excluir uma função interna que é proibida pelo Logto. Se você estiver criando uma nova função, tente outro nome que não comece com "#internal:". ',
+};
+
+export default role;
diff --git a/packages/phrases/src/locales/pt-pt/errors/scope.ts b/packages/phrases/src/locales/pt-pt/errors/scope.ts
new file mode 100644
index 000000000..8938904fb
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/scope.ts
@@ -0,0 +1,6 @@
+const scope = {
+ name_exists: 'O nome do escopo {{name}} já está em uso',
+ name_with_space: 'O nome do escopo não pode conter espaços.',
+};
+
+export default scope;
diff --git a/packages/phrases/src/locales/pt-pt/errors/session.ts b/packages/phrases/src/locales/pt-pt/errors/session.ts
new file mode 100644
index 000000000..914826cb9
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/session.ts
@@ -0,0 +1,28 @@
+const session = {
+ not_found: 'Sessão não encontrada. Por favor, volte e faça login novamente.',
+ invalid_credentials: 'Credenciais inválidas. Por favor, verifique os dados.',
+ invalid_sign_in_method: 'O método de login atual não está disponível.',
+ invalid_connector_id:
+ 'Não foi possível encontrar um conector disponível com o id {{connectorId}}.',
+ insufficient_info: 'Informações de login insuficientes.',
+ connector_id_mismatch: 'O connectorId não corresponde ao registado na sessão.',
+ connector_session_not_found:
+ 'Sessão do conector não encontrada. Por favor, volte e faça login novamente.',
+ verification_session_not_found:
+ 'A verificação não foi bem-sucedida. Reinicie o processo de verificação e tente novamente.',
+ verification_expired:
+ 'A conexão expirou. Verifique novamente para garantir a segurança de sua conta.',
+ unauthorized: 'Faça login primeiro.',
+ unsupported_prompt_name: 'Nome de prompt não suportado.',
+ forgot_password_not_enabled: 'Recuperação de senha não está habilitada.',
+ verification_failed:
+ 'A verificação não foi bem-sucedida. Reinicie o processo de verificação e tente novamente.',
+ connector_validation_session_not_found:
+ 'A sessão do conector para validação do token não foi encontrada.',
+ identifier_not_found:
+ 'Identificador do usuário não encontrado. Por favor, volte e faça login novamente.',
+ interaction_not_found:
+ 'Sessão de interação não encontrada. Por favor, volte e inicie a sessão novamente.',
+};
+
+export default session;
diff --git a/packages/phrases/src/locales/pt-pt/errors/sign-in-experiences.ts b/packages/phrases/src/locales/pt-pt/errors/sign-in-experiences.ts
new file mode 100644
index 000000000..a7918c5f8
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/sign-in-experiences.ts
@@ -0,0 +1,23 @@
+const sign_in_experiences = {
+ empty_content_url_of_terms_of_use:
+ 'URL dos "Termos de uso" vazio. Adicione o URL se os "Termos de uso" estiverem ativados.',
+ empty_social_connectors:
+ 'Conectores sociais vazios. Adicione conectores sociais e ative os quando o método de login social estiver ativado.',
+ enabled_connector_not_found: 'Conector {{type}} ativado não encontrado.',
+ not_one_and_only_one_primary_sign_in_method:
+ 'Deve haver um e apenas um método de login principal. Por favor, verifique sua entrada.',
+ username_requires_password:
+ 'É necessário habilitar a configuração de uma senha para o identificador de inscrição por nome de usuário.',
+ passwordless_requires_verify:
+ 'É necessário habilitar a verificação para o identificador de inscrição por e-mail/telefone.',
+ miss_sign_up_identifier_in_sign_in:
+ 'Os métodos de login devem conter o identificador de inscrição.',
+ password_sign_in_must_be_enabled:
+ 'O login com senha deve ser habilitado quando é requerido configurar uma senha na inscrição.',
+ code_sign_in_must_be_enabled:
+ 'O login com código de verificação deve ser habilitado quando não é requerido configurar uma senha na inscrição.',
+ unsupported_default_language: 'Este idioma - {{language}} não é suportado no momento.',
+ at_least_one_authentication_factor: 'Você deve selecionar pelo menos um fator de autenticação.',
+};
+
+export default sign_in_experiences;
diff --git a/packages/phrases/src/locales/pt-pt/errors/storage.ts b/packages/phrases/src/locales/pt-pt/errors/storage.ts
new file mode 100644
index 000000000..01aed8951
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/storage.ts
@@ -0,0 +1,7 @@
+const storage = {
+ not_configured: 'O provedor de armazenamento não está configurado.',
+ missing_parameter: 'Faltando o parâmetro {{parameter}} para o provedor de armazenamento.',
+ upload_error: 'Falha ao enviar o arquivo para o provedor de armazenamento.',
+};
+
+export default storage;
diff --git a/packages/phrases/src/locales/pt-pt/errors/swagger.ts b/packages/phrases/src/locales/pt-pt/errors/swagger.ts
new file mode 100644
index 000000000..960f5b863
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/swagger.ts
@@ -0,0 +1,7 @@
+const swagger = {
+ invalid_zod_type: 'Tipo de Zod inválido. Verifique a configuração do protetor de rota.',
+ not_supported_zod_type_for_params:
+ 'Tipo Zod não suportado para os parâmetros. Verifique a configuração do protetor de rota.',
+};
+
+export default swagger;
diff --git a/packages/phrases/src/locales/pt-pt/errors/user.ts b/packages/phrases/src/locales/pt-pt/errors/user.ts
new file mode 100644
index 000000000..f43fab7e8
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/user.ts
@@ -0,0 +1,33 @@
+const user = {
+ username_already_in_use: 'Este nome de usuário já está em uso.',
+ email_already_in_use: 'Este email já está associado a uma conta existente.',
+ phone_already_in_use: 'Este número de telefone já está associado a uma conta existente.',
+ invalid_email: 'Endereço de email inválido.',
+ invalid_phone: 'Número de telefone inválido.',
+ email_not_exist: 'O endereço de email ainda não foi registada.',
+ phone_not_exist: 'O numero do telefone ainda não foi registada.',
+ identity_not_exist: 'A conta social ainda não foi registada.',
+ identity_already_in_use: 'A conta social foi registada.',
+ social_account_exists_in_profile: 'A conta social já foi associada a este perfil.',
+ cannot_delete_self: 'Não se pode remover a si mesmo.',
+ sign_up_method_not_enabled: 'Este método de registo não está ativo.',
+ sign_in_method_not_enabled: 'Este método de início de sessão não está ativo.',
+ same_password: 'A nova palavra-passe não pode ser igual à antiga.',
+ password_required_in_profile: 'Precisa de definir uma palavra-passe antes de iniciar sessão.',
+ new_password_required_in_profile: 'Precisa de definir uma nova palavra-passe.',
+ password_exists_in_profile: 'A palavra-passe já existe no seu perfil.',
+ username_required_in_profile: 'Precisa de definir um nome de utilizador antes de iniciar sessão.',
+ username_exists_in_profile: 'O nome de utilizador já existe no seu perfil.',
+ email_required_in_profile: 'Precisa de adicionar um endereço de email antes de iniciar sessão.',
+ email_exists_in_profile: 'O seu perfil já está associado a um endereço de email.',
+ phone_required_in_profile: 'Precisa de adicionar um número de telefone antes de iniciar sessão.',
+ phone_exists_in_profile: 'O seu perfil já está associado a um número de telefone.',
+ email_or_phone_required_in_profile:
+ 'Precisa de adicionar um endereço de email ou um número de telefone antes de iniciar sessão.',
+ suspended: 'Esta conta está suspensa.',
+ user_not_exist: 'O utilizador com {{ identifier }} não existe.',
+ missing_profile: 'Precisa de fornecer informações adicionais antes de iniciar sessão.',
+ role_exists: 'O id da função {{roleId}} já foi adicionado a este utilizador.',
+};
+
+export default user;
diff --git a/packages/phrases/src/locales/pt-pt/errors/verification-code.ts b/packages/phrases/src/locales/pt-pt/errors/verification-code.ts
new file mode 100644
index 000000000..b87cdee33
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/errors/verification-code.ts
@@ -0,0 +1,13 @@
+const verification_code = {
+ phone_email_empty: 'Tanto o telefone como o e-mail estão vazios.',
+ not_found:
+ 'Código de verificação não encontrado. Por favor, envie primeiro o código de verificação.',
+ phone_mismatch: 'Telefone não corresponde. Por favor, solicite um novo código de verificação.',
+ email_mismatch: 'E-mail não corresponde. Por favor, solicite um novo código de verificação.',
+ code_mismatch: 'Código de verificação inválido.',
+ expired: 'O código de verificação expirou. Por favor, solicite um novo código de verificação.',
+ exceed_max_try:
+ 'Limite máximo de tentativas de verificação excedido. Por favor, solicite um novo código de verificação.',
+};
+
+export default verification_code;
diff --git a/packages/phrases/src/locales/pt-pt/index.ts b/packages/phrases/src/locales/pt-pt/index.ts
index ee4ae5bd7..135395cfc 100644
--- a/packages/phrases/src/locales/pt-pt/index.ts
+++ b/packages/phrases/src/locales/pt-pt/index.ts
@@ -1,6 +1,6 @@
import type { LocalePhrase } from '../../types.js';
-import errors from './errors.js';
+import errors from './errors/index.js';
import translation from './translation/index.js';
const ptPT: LocalePhrase = Object.freeze({
diff --git a/packages/phrases/src/locales/pt-pt/translation/admin-console/index.ts b/packages/phrases/src/locales/pt-pt/translation/admin-console/index.ts
index 81cc4d752..2ef5ef861 100644
--- a/packages/phrases/src/locales/pt-pt/translation/admin-console/index.ts
+++ b/packages/phrases/src/locales/pt-pt/translation/admin-console/index.ts
@@ -19,7 +19,7 @@ import profile from './profile.js';
import role_details from './role-details.js';
import roles from './roles.js';
import session_expired from './session-expired.js';
-import sign_in_exp from './sign-in-exp.js';
+import sign_in_exp from './sign-in-exp/index.js';
import tab_sections from './tab-sections.js';
import tabs from './tabs.js';
import user_details from './user-details.js';
diff --git a/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp.ts
deleted file mode 100644
index 0a5b858ee..000000000
--- a/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp.ts
+++ /dev/null
@@ -1,182 +0,0 @@
-const sign_in_exp = {
- page_title: 'Experiência de login',
- title: 'Experiência de login',
- description:
- 'Personalize a interface de login para corresponder a sua marca e visualize em tempo real',
- tabs: {
- branding: 'Marca',
- sign_up_and_sign_in: 'Sign-up and Sign-in', // UNTRANSLATED
- others: 'Outros',
- },
- welcome: {
- title: 'Customize sign-in experience', // UNTRANSLATED
- description:
- 'Get started fast with your first sign-in setup. This guide walks you through all the necessary settings.', // UNTRANSLATED
- get_started: 'Começar',
- apply_remind: 'Observe que a experiência de login será aplicada a todos os apps nesta conta.',
- },
- color: {
- title: 'COR',
- primary_color: 'Cor da marca',
- dark_primary_color: 'Cor da marca (tema escuro)',
- dark_mode: 'Ativar tema escuro',
- dark_mode_description:
- 'O app terá um tema escuro gerado automaticamente com base na cor da marca e no algoritmo Logto. contudo é livre de personalizar.',
- dark_mode_reset_tip: 'Recalcular a cor do tema escuro com base na cor da marca.',
- reset: 'Recalcular',
- },
- branding: {
- title: 'ÁREA DE MARCA',
- ui_style: 'Estilo',
- favicon: 'Favicon', // UNTRANSLATED
- logo_image_url: 'URL do logotipo da app',
- logo_image_url_placeholder: 'https://your.cdn.domain/logo.png',
- dark_logo_image_url: 'URL do logotipo da app (tema escuro)',
- dark_logo_image_url_placeholder: 'https://your.cdn.domain/logo-dark.png',
- logo_image: 'App logo', // UNTRANSLATED
- dark_logo_image: 'App logo (Dark)', // UNTRANSLATED
- logo_image_error: 'App logo: {{error}}', // UNTRANSLATED
- favicon_error: 'Favicon: {{error}}', // UNTRANSLATED
- },
- custom_css: {
- title: 'Custom CSS', // UNTRANSLATED
- css_code_editor_title: 'Personalize your UI with Custom CSS', // UNTRANSLATED
- css_code_editor_description1: 'See the example of Custom CSS.', // UNTRANSLATED
- css_code_editor_description2: '{{link}}', // UNTRANSLATED
-
- css_code_editor_description_link_content: 'Learn more', // UNTRANSLATED
- css_code_editor_content_placeholder:
- 'Enter your custom CSS to tailor the styles of anything to your exact specifications. Express your creativity and make your UI stand out.', // UNTRANSLATED
- },
- sign_up_and_sign_in: {
- identifiers_email: 'Email address', // UNTRANSLATED
- identifiers_phone: 'Phone number', // UNTRANSLATED
- identifiers_username: 'Username', // UNTRANSLATED
- identifiers_email_or_sms: 'Email address or phone number', // UNTRANSLATED
- identifiers_none: 'Not applicable', // UNTRANSLATED
- and: 'and', // UNTRANSLATED
- or: 'or', // UNTRANSLATED
- sign_up: {
- title: 'SIGN-UP', // UNTRANSLATED
- sign_up_identifier: 'Sign-up identifier', // UNTRANSLATED
- identifier_description:
- 'The sign-up identifier is required for account creation and must be included in your sign-in screen.', // UNTRANSLATED
- sign_up_authentication: 'Authentication setting for sign-up', // UNTRANSLATED
- authentication_description:
- 'All selected actions will be obligatory for users to complete the flow.', // UNTRANSLATED
- set_a_password_option: 'Create your password', // UNTRANSLATED
- verify_at_sign_up_option: 'Verify at sign-up', // UNTRANSLATED
- social_only_creation_description: '(This apply to social only account creation)', // UNTRANSLATED
- },
- sign_in: {
- title: 'SIGN-IN', // UNTRANSLATED
- sign_in_identifier_and_auth: 'Identifier and authentication settings for sign-in', // UNTRANSLATED
- description:
- 'Users can sign in using any of the options available. Adjust the layout by drag and dropping below options.', // UNTRANSLATED
- add_sign_in_method: 'Add Sign-in Method', // UNTRANSLATED
- password_auth: 'Password', // UNTRANSLATED
- verification_code_auth: 'Verification code', // UNTRANSLATED
- auth_swap_tip: 'Swap the options below to determine which appears first in the flow.', // UNTRANSLATED
- require_auth_factor: 'You have to select at least one authentication factor.', // UNTRANSLATED
- },
- social_sign_in: {
- title: 'SOCIAL SIGN-IN', // UNTRANSLATED
- social_sign_in: 'Social sign-in', // UNTRANSLATED
- description:
- 'Depending on the mandatory identifier you set up, your user may be asked to provide an identifier when signing up via social connector.', // UNTRANSLATED
- add_social_connector: 'Adicionar Conector Social',
- set_up_hint: {
- not_in_list: 'Not in the list?', // UNTRANSLATED
- set_up_more: 'Set up', // UNTRANSLATED
- go_to: 'other social connectors now.', // UNTRANSLATED
- },
- },
- tip: {
- set_a_password: 'A unique set of a password to your username is a must.', // UNTRANSLATED
- verify_at_sign_up:
- 'We currently only support verified email. Your user base may contain a large number of poor-quality email addresses if no validation.', // UNTRANSLATED
- password_auth:
- 'This is essential as you have enabled the option to set a password during the sign-up process.', // UNTRANSLATED
- verification_code_auth:
- 'This is essential as you have only enabled the option to provide verification code when signing up. You’re free to uncheck the box when password set-up is allowed at the sign-up process.', // UNTRANSLATED
- delete_sign_in_method:
- 'This is essential as you have selected {{identifier}} as a required identifier.', // UNTRANSLATED
- },
- },
- others: {
- terms_of_use: {
- title: 'TERMOS DE USO',
- terms_of_use: 'URL dos termos de uso',
- terms_of_use_placeholder: 'https://your.terms.of.use/',
- privacy_policy: 'URL da política de privacidade',
- privacy_policy_placeholder: 'https://your.privacy.policy/',
- },
- languages: {
- title: 'LÍNGUAS',
- enable_auto_detect: 'Enable auto-detect', // UNTRANSLATED
- description:
- "Your software detects the user's locale setting and switches to the local language. You can add new languages by translating UI from English to another language.", // UNTRANSLATED
- manage_language: 'Manage language', // UNTRANSLATED
- default_language: 'Default language', // UNTRANSLATED
- default_language_description_auto:
- 'The default language will be used when the detected user language isn’t covered in the current language library.', // UNTRANSLATED
- default_language_description_fixed:
- 'When auto-detect is off, the default language is the only language your software will show. Turn on auto-detect for language extension.', // UNTRANSLATED
- },
- manage_language: {
- title: 'Manage language', // UNTRANSLATED
- subtitle:
- 'Localize the product experience by adding languages and translations. Your contribution can be set as the default language.', // UNTRANSLATED
- add_language: 'Add Language', // UNTRANSLATED
- logto_provided: 'Logto provided', // UNTRANSLATED
- key: 'Key', // UNTRANSLATED
- logto_source_values: 'Logto source values', // UNTRANSLATED
- custom_values: 'Custom values', // UNTRANSLATED
- clear_all_tip: 'Clear all values', // UNTRANSLATED
- unsaved_description: 'Changes won’t be saved if you leave this page without saving.', // UNTRANSLATED
- deletion_tip: 'Delete the language', // UNTRANSLATED
- deletion_title: 'Do you want to delete the added language?', // UNTRANSLATED
- deletion_description:
- 'After deletion, your users won’t be able to browse in that language again.', // UNTRANSLATED
- default_language_deletion_title: 'Default language can’t be deleted.', // UNTRANSLATED
- default_language_deletion_description:
- '{{language}} is set as your default language and can’t be deleted. ', // UNTRANSLATED
- },
- advanced_options: {
- title: 'OPÇÕES AVANÇADAS',
- enable_user_registration: 'Enable user registration', // UNTRANSLATED
- enable_user_registration_description:
- 'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.', // UNTRANSLATED
- },
- },
- setup_warning: {
- no_connector_sms:
- 'No SMS connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"', // UNTRANSLATED
- no_connector_email:
- 'No email connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"', // UNTRANSLATED
- no_connector_social:
- 'No social connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"', // UNTRANSLATED
- no_added_social_connector:
- 'Configurou alguns conectores sociais agora. Certifique-se de adicionar alguns a experiência de login.',
- setup_link: 'Set up',
- },
- save_alert: {
- description:
- 'You are implementing new sign-in and sign-up procedures. All of your users may be affected by the new set-up. Are you sure to commit to the change?', // UNTRANSLATED
- before: 'Antes',
- after: 'Depois',
- sign_up: 'Sign-up', // UNTRANSLATED
- sign_in: 'Sign-in', // UNTRANSLATED
- social: 'Social', // UNTRANSLATED
- },
- preview: {
- title: 'Pre-visualização do login',
- live_preview: 'Live preview', // UNTRANSLATED
- live_preview_tip: 'Save to preview changes', // UNTRANSLATED
- native: 'Nativo',
- desktop_web: 'Web computador',
- mobile_web: 'Web móvel',
- },
-};
-
-export default sign_in_exp;
diff --git a/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp/index.ts b/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp/index.ts
new file mode 100644
index 000000000..34e73e52d
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp/index.ts
@@ -0,0 +1,85 @@
+import others from './others.js';
+import sign_up_and_sign_in from './sign-up-and-sign-in.js';
+
+const sign_in_exp = {
+ page_title: 'Experiência de login',
+ title: 'Experiência de login',
+ description:
+ 'Personalize a interface de login para corresponder a sua marca e visualize em tempo real',
+ tabs: {
+ branding: 'Marca',
+ sign_up_and_sign_in: 'Sign up and Sign in',
+ others: 'Outros',
+ },
+ welcome: {
+ title: 'Customize sign-in experience',
+ description:
+ 'Get started fast with your first sign-in setup. This guide walks you through all the necessary settings.',
+ get_started: 'Começar',
+ apply_remind: 'Observe que a experiência de login será aplicada a todos os apps nesta conta.',
+ },
+ color: {
+ title: 'COR',
+ primary_color: 'Cor da marca',
+ dark_primary_color: 'Cor da marca (tema escuro)',
+ dark_mode: 'Ativar tema escuro',
+ dark_mode_description:
+ 'O app terá um tema escuro gerado automaticamente com base na cor da marca e no algoritmo Logto. contudo é livre de personalizar.',
+ dark_mode_reset_tip: 'Recalcular a cor do tema escuro com base na cor da marca.',
+ reset: 'Recalcular',
+ },
+ branding: {
+ title: 'ÁREA DE MARCA',
+ ui_style: 'Estilo',
+ favicon: 'Favicon',
+ logo_image_url: 'URL do logotipo da app',
+ logo_image_url_placeholder: 'https://your.cdn.domain/logo.png',
+ dark_logo_image_url: 'URL do logotipo da app (tema escuro)',
+ dark_logo_image_url_placeholder: 'https://your.cdn.domain/logo-dark.png',
+ logo_image: 'App logo',
+ dark_logo_image: 'App logo (Dark)',
+ logo_image_error: 'App logo: {{error}}',
+ favicon_error: 'Favicon: {{error}}',
+ },
+ custom_css: {
+ title: 'Custom CSS',
+ css_code_editor_title: 'Personalize your UI with Custom CSS',
+ css_code_editor_description1: 'See the example of Custom CSS.',
+ css_code_editor_description2: '{{link}}',
+ css_code_editor_description_link_content: 'Learn more',
+ css_code_editor_content_placeholder:
+ 'Enter your custom CSS to tailor the styles of anything to your exact specifications. Express your creativity and make your UI stand out.',
+ },
+ setup_warning: {
+ no_connector_sms:
+ 'No SMS connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"',
+ no_connector_email:
+ 'No email connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"',
+ no_connector_social:
+ 'No social connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"',
+ no_added_social_connector:
+ 'Configurou alguns conectores sociais agora. Certifique-se de adicionar alguns a experiência de login.',
+ setup_link: 'Set up',
+ },
+ save_alert: {
+ description:
+ 'You are implementing new sign-in and sign-up procedures. All of your users may be affected by the new set-up. Are you sure to commit to the change?',
+ before: 'Antes',
+ after: 'Depois',
+ sign_up: 'Sign-up',
+ sign_in: 'Sign-in',
+ social: 'Social',
+ },
+ preview: {
+ title: 'Pre-visualização do login',
+ live_preview: 'Live preview',
+ live_preview_tip: 'Save to preview changes',
+ native: 'Nativo',
+ desktop_web: 'Web computador',
+ mobile_web: 'Web móvel',
+ },
+ others,
+ sign_up_and_sign_in,
+};
+
+export default sign_in_exp;
diff --git a/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp/others.ts b/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp/others.ts
new file mode 100644
index 000000000..1ac03d85a
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp/others.ts
@@ -0,0 +1,48 @@
+const others = {
+ terms_of_use: {
+ title: 'TERMOS DE USO',
+ terms_of_use: 'URL dos termos de uso',
+ terms_of_use_placeholder: 'https://your.terms.of.use/',
+ privacy_policy: 'URL da política de privacidade',
+ privacy_policy_placeholder: 'https://your.privacy.policy/',
+ },
+ languages: {
+ title: 'LÍNGUAS',
+ enable_auto_detect: 'Enable auto-detect',
+ description:
+ "Your software detects the user's locale setting and switches to the local language. You can add new languages by translating UI from English to another language.",
+ manage_language: 'Manage language',
+ default_language: 'Default language',
+ default_language_description_auto:
+ 'The default language will be used when the detected user language isn’t covered in the current language library.',
+ default_language_description_fixed:
+ 'When auto-detect is off, the default language is the only language your software will show. Turn on auto-detect for language extension.',
+ },
+ manage_language: {
+ title: 'Manage language',
+ subtitle:
+ 'Localize the product experience by adding languages and translations. Your contribution can be set as the default language.',
+ add_language: 'Add Language',
+ logto_provided: 'Logto provided',
+ key: 'Key',
+ logto_source_values: 'Logto source values',
+ custom_values: 'Custom values',
+ clear_all_tip: 'Clear all values',
+ unsaved_description: 'Changes won’t be saved if you leave this page without saving.',
+ deletion_tip: 'Delete the language',
+ deletion_title: 'Do you want to delete the added language?',
+ deletion_description:
+ 'After deletion, your users won’t be able to browse in that language again.',
+ default_language_deletion_title: 'Default language can’t be deleted.',
+ default_language_deletion_description:
+ '{{language}} is set as your default language and can’t be deleted. ',
+ },
+ advanced_options: {
+ title: 'OPÇÕES AVANÇADAS',
+ enable_user_registration: 'Enable user registration',
+ enable_user_registration_description:
+ 'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
+ },
+};
+
+export default others;
diff --git a/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts b/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts
new file mode 100644
index 000000000..03550cf37
--- /dev/null
+++ b/packages/phrases/src/locales/pt-pt/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts
@@ -0,0 +1,57 @@
+const sign_up_and_sign_in = {
+ identifiers_email: 'Email address',
+ identifiers_phone: 'Phone number',
+ identifiers_username: 'Username',
+ identifiers_email_or_sms: 'Email address or phone number',
+ identifiers_none: 'Not applicable',
+ and: 'and',
+ or: 'or',
+ sign_up: {
+ title: 'SIGN UP',
+ sign_up_identifier: 'Sign-up identifier',
+ identifier_description:
+ 'The sign-up identifier is required for account creation and must be included in your sign-in screen.',
+ sign_up_authentication: 'Authentication setting for sign-up',
+ authentication_description:
+ 'All selected actions will be obligatory for users to complete the flow.',
+ set_a_password_option: 'Create your password',
+ verify_at_sign_up_option: 'Verify at sign-up',
+ social_only_creation_description: '(This apply to social only account creation)',
+ },
+ sign_in: {
+ title: 'SIGN IN',
+ sign_in_identifier_and_auth: 'Identifier and authentication settings for sign-in',
+ description:
+ 'Users can sign in using any of the options available. Adjust the layout by drag and dropping below options.',
+ add_sign_in_method: 'Add Sign-in Method',
+ password_auth: 'Password',
+ verification_code_auth: 'Verification code',
+ auth_swap_tip: 'Swap the options below to determine which appears first in the flow.',
+ require_auth_factor: 'You have to select at least one authentication factor.',
+ },
+ social_sign_in: {
+ title: 'SOCIAL SIGN-IN',
+ social_sign_in: 'Social sign-in',
+ description:
+ 'Depending on the mandatory identifier you set up, your user may be asked to provide an identifier when signing up via social connector.',
+ add_social_connector: 'Adicionar Conector Social',
+ set_up_hint: {
+ not_in_list: 'Not in the list?',
+ set_up_more: 'Set up',
+ go_to: 'other social connectors now.',
+ },
+ },
+ tip: {
+ set_a_password: 'A unique set of a password to your username is a must.',
+ verify_at_sign_up:
+ 'We currently only support verified email. Your user base may contain a large number of poor-quality email addresses if no validation.',
+ password_auth:
+ 'This is essential as you have enabled the option to set a password during the sign-up process.',
+ verification_code_auth:
+ 'This is essential as you have only enabled the option to provide verification code when signing up. You’re free to uncheck the box when password set-up is allowed at the sign-up process.',
+ delete_sign_in_method:
+ 'This is essential as you have selected {{identifier}} as a required identifier.',
+ },
+};
+
+export default sign_up_and_sign_in;
diff --git a/packages/phrases/src/locales/tr-tr/errors.ts b/packages/phrases/src/locales/tr-tr/errors.ts
deleted file mode 100644
index 94cd8c99c..000000000
--- a/packages/phrases/src/locales/tr-tr/errors.ts
+++ /dev/null
@@ -1,204 +0,0 @@
-const errors = {
- request: {
- invalid_input: 'Girdi geçersiz. {{details}}',
- general: 'İstek hatası oluştu.',
- },
- auth: {
- authorization_header_missing: 'Yetkilendirme başlığı eksik.',
- authorization_token_type_not_supported: 'Yetkilendirme tipi desteklenmiyor.',
- unauthorized: 'Yetki yok. Lütfen kimlik bilgilerini ve kapsamını kontrol edin.',
- forbidden: 'Yasak. Lütfen kullanıcı rollerinizi ve izinlerinizi kontrol edin.',
- expected_role_not_found:
- 'Expected role not found. Please check your user roles and permissions.',
- jwt_sub_missing: 'JWTde `sub` eksik.',
- require_re_authentication:
- 'Korumalı bir işlem gerçekleştirmek için yeniden doğrulama gereklidir.',
- },
- guard: {
- invalid_input: 'İstek {{type}} geçersiz.',
- invalid_pagination: 'İstenen sayfalandırma değeri geçersiz.',
- can_not_get_tenant_id: 'İstekten kiracı kimliği alınamadı.',
- file_size_exceeded: 'Dosya boyutu aşıldı.',
- mime_type_not_allowed: 'MIME türü izin verilmiyor.',
- },
- oidc: {
- aborted: 'Son kullanıcı etkileşimi iptal etti.',
- invalid_scope: '{{scope}} kapsamı desteklenmiyor.',
- invalid_scope_plural: '{{scopes}} kapsamları desteklenmiyor.',
- invalid_token: 'Sağlanan token geçersiz.',
- invalid_client_metadata: 'Sağlanan müşteri metadatası geçersiz.',
- insufficient_scope: 'Erişim tokenı istenen {{scopes}} kapsamında eksik.',
- invalid_request: 'İstek geçersiz.',
- invalid_grant: 'Hibe talebi geçersiz.',
- invalid_redirect_uri:
- '`redirect_uri` müşterilerin kayıtlı `redirect_uris` Lerinin hiçbiri ile eşleşmedi',
- access_denied: 'Erişim engellendi.',
- invalid_target: 'Geçersiz kaynak göstergesi.',
- unsupported_grant_type: 'Desteklenmeyen `grant_type` istendi.',
- unsupported_response_mode: 'Desteklenmeye `response_mode` istendi.',
- unsupported_response_type: 'Desteklenmeyen `response_type` istendi.',
- provider_error: 'Dahili OIDC Hatası: {{message}}.',
- },
- user: {
- username_already_in_use: 'Bu kullanıcı adı zaten kullanımda.',
- email_already_in_use: 'Bu e-posta mevcut bir hesapla ilişkilendirilmiştir.',
- phone_already_in_use: 'Bu telefon numarası mevcut bir hesapla ilişkilendirilmiştir.',
- invalid_email: 'Geçersiz e-posta adresi.',
- invalid_phone: 'Geçersiz telefon numarası.',
- email_not_exist: 'E-posta adresi henüz kaydedilmedi.',
- phone_not_exist: 'Telefon numarası henüz kaydedilmedi',
- identity_not_exist: 'Sosyal platform hesabı henüz kaydedilmedi.',
- identity_already_in_use: 'Sosyal platform hesabı kaydedildi.',
- social_account_exists_in_profile: 'Bu sosyal hesap zaten ilişkilendirilmiş.',
- cannot_delete_self: 'Kendinizi silemezsiniz.',
- sign_up_method_not_enabled: 'Bu kayıt yöntemi etkin değil.',
- sign_in_method_not_enabled: 'Bu oturum açma yöntemi etkin değil.',
- same_password: 'Yeni şifre, eski şifrenizle aynı olamaz.',
- password_required_in_profile: 'Oturum açmadan önce bir şifre belirlemeniz gerekiyor.',
- new_password_required_in_profile: 'Yeni bir şifre belirlemeniz gerekiyor.',
- password_exists_in_profile: 'Şifre profilinizde zaten mevcut.',
- username_required_in_profile: 'Oturum açmadan önce bir kullanıcı adı belirlemeniz gerekiyor.',
- username_exists_in_profile: 'Kullanıcı adı profilinizde zaten mevcut.',
- email_required_in_profile: 'Oturum açmadan önce bir e-posta adresi eklemeniz gerekiyor.',
- email_exists_in_profile: 'Profiliniz zaten bir e-posta adresi ile ilişkilendirilmiştir.',
- phone_required_in_profile: 'Oturum açmadan önce bir telefon numarası eklemeniz gerekiyor.',
- phone_exists_in_profile: 'Profiliniz zaten bir telefon numarası ile ilişkilendirilmiştir.',
- email_or_phone_required_in_profile:
- 'Oturum açmadan önce bir e-posta adresi veya telefon numarası eklemeniz gerekiyor.',
- suspended: 'Bu hesap askıya alındı.',
- user_not_exist: '{{identifier}} kimliğine sahip kullanıcı mevcut değil.',
- missing_profile: 'Oturum açmadan önce ek bilgi sağlamanız gerekiyor.',
- role_exists: '{{roleId}} rol kimliği bu kullanıcıya zaten eklenmiştir.',
- },
- password: {
- unsupported_encryption_method: '{{name}} şifreleme metodu desteklenmiyor.',
- pepper_not_found: 'Şifre pepperı bulunamadı. Lütfen core envs.i kontrol edin.',
- },
- session: {
- not_found: 'Oturum bulunamadı. Lütfen geri dönüp giriş yapınız.',
- invalid_credentials: 'Geçersiz kimlik bilgileri. Lütfen girdinizi kontrol ediniz.',
- invalid_sign_in_method: 'Geçerli oturum açma yöntemi kullanılamıyor.',
- invalid_connector_id: '{{connectorId}} idsi ile kullanılabilir bağlayıcı bulunamıyor.',
- insufficient_info: 'Yetersiz oturum açma bilgisi.',
- connector_id_mismatch: 'connectorId, oturum kaydı ile eşleşmiyor.',
- connector_session_not_found:
- 'Bağlayıcı oturum bulunamadı. Lütfen geri dönüp tekrardan giriş yapınız.',
- verification_session_not_found:
- 'Doğrulama başarısız oldu. Lütfen doğrulama işlemini yeniden başlatın ve tekrar deneyin.',
- verification_expired:
- 'Bağlantı zaman aşımına uğradı. Hesap güvenliğiniz için yeniden doğrulama yapın.',
- unauthorized: 'Lütfen önce oturum açın.',
- unsupported_prompt_name: 'Desteklenmeyen prompt adı.',
- forgot_password_not_enabled: 'Parolamı unuttum özelliği etkin değil.',
- verification_failed:
- 'Doğrulama başarısız oldu. Lütfen doğrulama işlemini yeniden başlatın ve tekrar deneyin.',
- connector_validation_session_not_found: 'Token doğrulama için bağlayıcı oturumu bulunamadı.',
- identifier_not_found: 'Kullanıcı kimliği bulunamadı. Lütfen geri gidin ve yeniden giriş yapın.',
- interaction_not_found:
- 'Etkileşim oturumu bulunamadı. Lütfen geri gidin ve oturumu yeniden başlatın.',
- },
- connector: {
- general: 'Bağdaştırıcıda bir hata oluştu: {{errorDescription}}',
- not_found: '{{type}} tipi icin uygun bağlayıcı bulunamadı.',
- not_enabled: 'Bağlayıcı etkin değil.',
- invalid_metadata: 'Bağlayıcının meta verileri geçersizdir.',
- invalid_config_guard: 'Bağlayıcının yapılandırma koruyucusu geçersizdir.',
- unexpected_type: 'Bağlayıcının türü beklenmedik.',
- invalid_request_parameters: 'İstek yanlış girdi parametreleri ile gönderildi.',
- insufficient_request_parameters: 'İstek, bazı input parametrelerini atlayabilir.',
- invalid_config: 'Bağlayıcının ayarları geçersiz.',
- invalid_response: 'Bağlayıcının yanıtı geçersiz.',
- template_not_found: 'Bağlayıcı yapılandırmasında doğru şablon bulunamıyor.',
- not_implemented: '{{method}}: henüz uygulanmadı.',
- social_invalid_access_token: 'Bağlayıcının erişim tokenı geçersiz.',
- invalid_auth_code: 'Bağlayıcının yetki kodu geçersiz.',
- social_invalid_id_token: 'Bağlayıcının idsi geçersiz.',
- authorization_failed: 'Kullanıcının yetkilendirme işlemi başarısız oldu.',
- social_auth_code_invalid: 'Erişim tokenı alınamıyor, lütfen yetkilendirme kodunu kontrol edin.',
- more_than_one_sms: 'SMS bağlayıcılarının sayısı 1den fazla.',
- more_than_one_email: 'E-posta adresi bağlayıcılarının sayısı 1den fazla.',
- db_connector_type_mismatch: 'Dbde türle eşleşmeyen bir bağlayıcı var.',
- more_than_one_connector_factory:
- 'Birden fazla bağlayıcı fabrikası bulundu ({{connectorIds}} ID numarasıyla), gereksiz olanları kaldırabilirsiniz.',
- not_found_with_connector_id: 'Belirtilen standart bağlayıcı kimliğiyle bağlayıcı bulunamadı.',
- multiple_instances_not_supported:
- 'Seçilen standart bağlayıcı ile birden fazla örnek oluşturulamaz.',
- invalid_type_for_syncing_profile:
- 'Kullanıcı profili yalnızca sosyal bağlayıcılarla senkronize edilebilir.',
- can_not_modify_target: "'Hedef' bağlayıcı değiştirilemez.",
- should_specify_target: "'Hedef' belirtilmelidir.",
- multiple_target_with_same_platform:
- 'Aynı hedefe ve platforma sahip birden fazla sosyal bağlayıcıya sahip olamazsınız.',
- cannot_overwrite_metadata_for_non_standard_connector:
- "Bu bağlayıcının 'metadata'sı üzerine yazılamaz.",
- },
- verification_code: {
- phone_email_empty: 'Telefon ve e-posta alanları boş.',
- not_found: 'Doğrulama kodu bulunamadı. Lütfen önce doğrulama kodu gönderin.',
- phone_mismatch: 'Telefon eşleşmiyor. Lütfen yeni bir doğrulama kodu isteyin.',
- email_mismatch: 'E-posta eşleşmiyor. Lütfen yeni bir doğrulama kodu isteyin.',
- code_mismatch: 'Geçersiz doğrulama kodu.',
- expired: 'Doğrulama kodu süresi dolmuştur. Lütfen yeni bir doğrulama kodu isteyin.',
- exceed_max_try: 'Doğrulama kodu deneme sınırı aşıldı. Lütfen yeni bir doğrulama kodu isteyin.',
- },
- sign_in_experiences: {
- empty_content_url_of_terms_of_use:
- '"Kullanım Koşulları" İçerik URLi yok. Lütfen "Kullanım Koşulları" etkinse içerik URLi ekleyiniz.',
- empty_social_connectors:
- 'Social connectors yok. Sosyal oturum açma yöntemi etkinleştirildiğinde lütfen etkin social connectorları ekleyiniz.',
- enabled_connector_not_found: 'Etkin {{type}} bağlayıcı bulunamadı.',
- not_one_and_only_one_primary_sign_in_method:
- 'Yalnızca bir tane birincil oturum açma yöntemi olmalıdır. Lütfen inputu kontrol ediniz.',
- username_requires_password: 'Kullanıcı adı kayıt kimliği için bir şifre belirlemek zorunludur.',
- passwordless_requires_verify:
- 'E-posta/telefon kayıt kimliği için doğrulama etkinleştirilmelidir.',
- miss_sign_up_identifier_in_sign_in: 'Oturum açma yöntemleri, kayıt kimliğini içermelidir.',
- password_sign_in_must_be_enabled:
- 'Kayıtta şifre belirleme zorunlu olduğunda şifreyle oturum açma etkinleştirilmelidir.',
- code_sign_in_must_be_enabled:
- 'Kayıtta şifre belirleme zorunlu olmadığında doğrulama koduyla oturum açma etkinleştirilmelidir.',
- unsupported_default_language: 'Bu dil - {{language}}, şu anda desteklenmemektedir.',
- at_least_one_authentication_factor: 'En az bir doğrulama faktörü seçmelisiniz.',
- },
- localization: {
- cannot_delete_default_language:
- '{{languageTag}} varsayılan dil olarak ayarlanmıştır ve silinemez.',
- invalid_translation_structure:
- 'Geçersiz veri şemaları. Lütfen girdilerinizi kontrol edin ve tekrar deneyin.',
- },
- swagger: {
- invalid_zod_type:
- 'Geçersiz Zod tipi. Lütfen yönlendirici koruma yapılandırmasını kontrol ediniz.',
- not_supported_zod_type_for_params:
- 'Parametreler için desteklenmeyen Zod tipi. Lütfen yönlendirici koruma yapılandırmasını kontrol ediniz.',
- },
- entity: {
- create_failed: '{{name}} oluşturulamadı.',
- not_exists: '{{name}} mevcut değil.',
- not_exists_with_id: ' `{{id}}` id kimliğine sahip {{name}} mevcut değil.',
- not_found: 'Kaynak mevcut değil.',
- },
- log: {
- invalid_type: 'Geçersiz günlük türü.',
- },
- role: {
- name_in_use: 'Bu rol adı {{name}} zaten kullanımda',
- scope_exists: 'Bu kapsam kimliği {{scopeId}} zaten bu role eklendi',
- user_exists: 'Bu kullanıcı kimliği {{userId}} zaten bu role eklendi',
- default_role_missing:
- 'Varsayılan rol adlarından bazıları veritabanında mevcut değil, lütfen önce rolleri oluşturduğunuzdan emin olun',
- internal_role_violation:
- 'Logto tarafından yasaklanan dahili bir rolü güncelleme veya silmeye çalışıyor olabilirsiniz. Yeni bir rol oluşturuyorsanız, "#internal:" ile başlamayan başka bir isim deneyin.',
- },
- scope: {
- name_exists: 'Bu kapsam adı {{name}} zaten kullanımda',
- name_with_space: 'Kapsam adı boşluk içeremez.',
- },
- storage: {
- not_configured: 'Depolama sağlayıcısı yapılandırılmamış.',
- missing_parameter: 'Depolama sağlayıcısı için eksik parametre {{parameter}}.',
- upload_error: 'Dosya yüklenemedi.',
- },
-};
-
-export default errors;
diff --git a/packages/phrases/src/locales/tr-tr/errors/auth.ts b/packages/phrases/src/locales/tr-tr/errors/auth.ts
new file mode 100644
index 000000000..fcf09d19f
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/auth.ts
@@ -0,0 +1,12 @@
+const auth = {
+ authorization_header_missing: 'Yetkilendirme başlığı eksik.',
+ authorization_token_type_not_supported: 'Yetkilendirme tipi desteklenmiyor.',
+ unauthorized: 'Yetki yok. Lütfen kimlik bilgilerini ve kapsamını kontrol edin.',
+ forbidden: 'Yasak. Lütfen kullanıcı rollerinizi ve izinlerinizi kontrol edin.',
+ expected_role_not_found: 'Expected role not found. Please check your user roles and permissions.',
+ jwt_sub_missing: 'JWTde `sub` eksik.',
+ require_re_authentication:
+ 'Korumalı bir işlem gerçekleştirmek için yeniden doğrulama gereklidir.',
+};
+
+export default auth;
diff --git a/packages/phrases/src/locales/tr-tr/errors/connector.ts b/packages/phrases/src/locales/tr-tr/errors/connector.ts
new file mode 100644
index 000000000..a16657f34
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/connector.ts
@@ -0,0 +1,37 @@
+const connector = {
+ general: 'Bağdaştırıcıda bir hata oluştu: {{errorDescription}}',
+ not_found: '{{type}} tipi icin uygun bağlayıcı bulunamadı.',
+ not_enabled: 'Bağlayıcı etkin değil.',
+ invalid_metadata: 'Bağlayıcının meta verileri geçersizdir.',
+ invalid_config_guard: 'Bağlayıcının yapılandırma koruyucusu geçersizdir.',
+ unexpected_type: 'Bağlayıcının türü beklenmedik.',
+ invalid_request_parameters: 'İstek yanlış girdi parametreleri ile gönderildi.',
+ insufficient_request_parameters: 'İstek, bazı input parametrelerini atlayabilir.',
+ invalid_config: 'Bağlayıcının ayarları geçersiz.',
+ invalid_response: 'Bağlayıcının yanıtı geçersiz.',
+ template_not_found: 'Bağlayıcı yapılandırmasında doğru şablon bulunamıyor.',
+ not_implemented: '{{method}}: henüz uygulanmadı.',
+ social_invalid_access_token: 'Bağlayıcının erişim tokenı geçersiz.',
+ invalid_auth_code: 'Bağlayıcının yetki kodu geçersiz.',
+ social_invalid_id_token: 'Bağlayıcının idsi geçersiz.',
+ authorization_failed: 'Kullanıcının yetkilendirme işlemi başarısız oldu.',
+ social_auth_code_invalid: 'Erişim tokenı alınamıyor, lütfen yetkilendirme kodunu kontrol edin.',
+ more_than_one_sms: 'SMS bağlayıcılarının sayısı 1den fazla.',
+ more_than_one_email: 'E-posta adresi bağlayıcılarının sayısı 1den fazla.',
+ db_connector_type_mismatch: 'Dbde türle eşleşmeyen bir bağlayıcı var.',
+ more_than_one_connector_factory:
+ 'Birden fazla bağlayıcı fabrikası bulundu ({{connectorIds}} ID numarasıyla), gereksiz olanları kaldırabilirsiniz.',
+ not_found_with_connector_id: 'Belirtilen standart bağlayıcı kimliğiyle bağlayıcı bulunamadı.',
+ multiple_instances_not_supported:
+ 'Seçilen standart bağlayıcı ile birden fazla örnek oluşturulamaz.',
+ invalid_type_for_syncing_profile:
+ 'Kullanıcı profili yalnızca sosyal bağlayıcılarla senkronize edilebilir.',
+ can_not_modify_target: "'Hedef' bağlayıcı değiştirilemez.",
+ should_specify_target: "'Hedef' belirtilmelidir.",
+ multiple_target_with_same_platform:
+ 'Aynı hedefe ve platforma sahip birden fazla sosyal bağlayıcıya sahip olamazsınız.',
+ cannot_overwrite_metadata_for_non_standard_connector:
+ "Bu bağlayıcının 'metadata'sı üzerine yazılamaz.",
+};
+
+export default connector;
diff --git a/packages/phrases/src/locales/tr-tr/errors/entity.ts b/packages/phrases/src/locales/tr-tr/errors/entity.ts
new file mode 100644
index 000000000..1c0c9da92
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/entity.ts
@@ -0,0 +1,8 @@
+const entity = {
+ create_failed: '{{name}} oluşturulamadı.',
+ not_exists: '{{name}} mevcut değil.',
+ not_exists_with_id: ' `{{id}}` id kimliğine sahip {{name}} mevcut değil.',
+ not_found: 'Kaynak mevcut değil.',
+};
+
+export default entity;
diff --git a/packages/phrases/src/locales/tr-tr/errors/guard.ts b/packages/phrases/src/locales/tr-tr/errors/guard.ts
new file mode 100644
index 000000000..a8e80c75c
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/guard.ts
@@ -0,0 +1,9 @@
+const guard = {
+ invalid_input: 'İstek {{type}} geçersiz.',
+ invalid_pagination: 'İstenen sayfalandırma değeri geçersiz.',
+ can_not_get_tenant_id: 'İstekten kiracı kimliği alınamadı.',
+ file_size_exceeded: 'Dosya boyutu aşıldı.',
+ mime_type_not_allowed: 'MIME türü izin verilmiyor.',
+};
+
+export default guard;
diff --git a/packages/phrases/src/locales/tr-tr/errors/index.ts b/packages/phrases/src/locales/tr-tr/errors/index.ts
new file mode 100644
index 000000000..c3f5e05ec
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/index.ts
@@ -0,0 +1,39 @@
+import auth from './auth.js';
+import connector from './connector.js';
+import entity from './entity.js';
+import guard from './guard.js';
+import localization from './localization.js';
+import log from './log.js';
+import oidc from './oidc.js';
+import password from './password.js';
+import request from './request.js';
+import role from './role.js';
+import scope from './scope.js';
+import session from './session.js';
+import sign_in_experiences from './sign-in-experiences.js';
+import storage from './storage.js';
+import swagger from './swagger.js';
+import user from './user.js';
+import verification_code from './verification-code.js';
+
+const errors = {
+ request,
+ auth,
+ guard,
+ oidc,
+ user,
+ password,
+ session,
+ connector,
+ verification_code,
+ sign_in_experiences,
+ localization,
+ swagger,
+ entity,
+ log,
+ role,
+ scope,
+ storage,
+};
+
+export default errors;
diff --git a/packages/phrases/src/locales/tr-tr/errors/localization.ts b/packages/phrases/src/locales/tr-tr/errors/localization.ts
new file mode 100644
index 000000000..83954d8db
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/localization.ts
@@ -0,0 +1,8 @@
+const localization = {
+ cannot_delete_default_language:
+ '{{languageTag}} varsayılan dil olarak ayarlanmıştır ve silinemez.',
+ invalid_translation_structure:
+ 'Geçersiz veri şemaları. Lütfen girdilerinizi kontrol edin ve tekrar deneyin.',
+};
+
+export default localization;
diff --git a/packages/phrases/src/locales/tr-tr/errors/log.ts b/packages/phrases/src/locales/tr-tr/errors/log.ts
new file mode 100644
index 000000000..1b8af891b
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/log.ts
@@ -0,0 +1,5 @@
+const log = {
+ invalid_type: 'Geçersiz günlük türü.',
+};
+
+export default log;
diff --git a/packages/phrases/src/locales/tr-tr/errors/oidc.ts b/packages/phrases/src/locales/tr-tr/errors/oidc.ts
new file mode 100644
index 000000000..3ea196f91
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/oidc.ts
@@ -0,0 +1,20 @@
+const oidc = {
+ aborted: 'Son kullanıcı etkileşimi iptal etti.',
+ invalid_scope: '{{scope}} kapsamı desteklenmiyor.',
+ invalid_scope_plural: '{{scopes}} kapsamları desteklenmiyor.',
+ invalid_token: 'Sağlanan token geçersiz.',
+ invalid_client_metadata: 'Sağlanan müşteri metadatası geçersiz.',
+ insufficient_scope: 'Erişim tokenı istenen {{scopes}} kapsamında eksik.',
+ invalid_request: 'İstek geçersiz.',
+ invalid_grant: 'Hibe talebi geçersiz.',
+ invalid_redirect_uri:
+ '`redirect_uri` müşterilerin kayıtlı `redirect_uris` Lerinin hiçbiri ile eşleşmedi',
+ access_denied: 'Erişim engellendi.',
+ invalid_target: 'Geçersiz kaynak göstergesi.',
+ unsupported_grant_type: 'Desteklenmeyen `grant_type` istendi.',
+ unsupported_response_mode: 'Desteklenmeye `response_mode` istendi.',
+ unsupported_response_type: 'Desteklenmeyen `response_type` istendi.',
+ provider_error: 'Dahili OIDC Hatası: {{message}}.',
+};
+
+export default oidc;
diff --git a/packages/phrases/src/locales/tr-tr/errors/password.ts b/packages/phrases/src/locales/tr-tr/errors/password.ts
new file mode 100644
index 000000000..1744f492e
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/password.ts
@@ -0,0 +1,6 @@
+const password = {
+ unsupported_encryption_method: '{{name}} şifreleme metodu desteklenmiyor.',
+ pepper_not_found: 'Şifre pepperı bulunamadı. Lütfen core envs.i kontrol edin.',
+};
+
+export default password;
diff --git a/packages/phrases/src/locales/tr-tr/errors/request.ts b/packages/phrases/src/locales/tr-tr/errors/request.ts
new file mode 100644
index 000000000..c684fad46
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/request.ts
@@ -0,0 +1,6 @@
+const request = {
+ invalid_input: 'Girdi geçersiz. {{details}}',
+ general: 'İstek hatası oluştu.',
+};
+
+export default request;
diff --git a/packages/phrases/src/locales/tr-tr/errors/role.ts b/packages/phrases/src/locales/tr-tr/errors/role.ts
new file mode 100644
index 000000000..8f6adde90
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/role.ts
@@ -0,0 +1,11 @@
+const role = {
+ name_in_use: 'Bu rol adı {{name}} zaten kullanımda',
+ scope_exists: 'Bu kapsam kimliği {{scopeId}} zaten bu role eklendi',
+ user_exists: 'Bu kullanıcı kimliği {{userId}} zaten bu role eklendi',
+ default_role_missing:
+ 'Varsayılan rol adlarından bazıları veritabanında mevcut değil, lütfen önce rolleri oluşturduğunuzdan emin olun',
+ internal_role_violation:
+ 'Logto tarafından yasaklanan dahili bir rolü güncelleme veya silmeye çalışıyor olabilirsiniz. Yeni bir rol oluşturuyorsanız, "#internal:" ile başlamayan başka bir isim deneyin.',
+};
+
+export default role;
diff --git a/packages/phrases/src/locales/tr-tr/errors/scope.ts b/packages/phrases/src/locales/tr-tr/errors/scope.ts
new file mode 100644
index 000000000..511c1e6d2
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/scope.ts
@@ -0,0 +1,6 @@
+const scope = {
+ name_exists: 'Bu kapsam adı {{name}} zaten kullanımda',
+ name_with_space: 'Kapsam adı boşluk içeremez.',
+};
+
+export default scope;
diff --git a/packages/phrases/src/locales/tr-tr/errors/session.ts b/packages/phrases/src/locales/tr-tr/errors/session.ts
new file mode 100644
index 000000000..1e5684f99
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/session.ts
@@ -0,0 +1,25 @@
+const session = {
+ not_found: 'Oturum bulunamadı. Lütfen geri dönüp giriş yapınız.',
+ invalid_credentials: 'Geçersiz kimlik bilgileri. Lütfen girdinizi kontrol ediniz.',
+ invalid_sign_in_method: 'Geçerli oturum açma yöntemi kullanılamıyor.',
+ invalid_connector_id: '{{connectorId}} idsi ile kullanılabilir bağlayıcı bulunamıyor.',
+ insufficient_info: 'Yetersiz oturum açma bilgisi.',
+ connector_id_mismatch: 'connectorId, oturum kaydı ile eşleşmiyor.',
+ connector_session_not_found:
+ 'Bağlayıcı oturum bulunamadı. Lütfen geri dönüp tekrardan giriş yapınız.',
+ verification_session_not_found:
+ 'Doğrulama başarısız oldu. Lütfen doğrulama işlemini yeniden başlatın ve tekrar deneyin.',
+ verification_expired:
+ 'Bağlantı zaman aşımına uğradı. Hesap güvenliğiniz için yeniden doğrulama yapın.',
+ unauthorized: 'Lütfen önce oturum açın.',
+ unsupported_prompt_name: 'Desteklenmeyen prompt adı.',
+ forgot_password_not_enabled: 'Parolamı unuttum özelliği etkin değil.',
+ verification_failed:
+ 'Doğrulama başarısız oldu. Lütfen doğrulama işlemini yeniden başlatın ve tekrar deneyin.',
+ connector_validation_session_not_found: 'Token doğrulama için bağlayıcı oturumu bulunamadı.',
+ identifier_not_found: 'Kullanıcı kimliği bulunamadı. Lütfen geri gidin ve yeniden giriş yapın.',
+ interaction_not_found:
+ 'Etkileşim oturumu bulunamadı. Lütfen geri gidin ve oturumu yeniden başlatın.',
+};
+
+export default session;
diff --git a/packages/phrases/src/locales/tr-tr/errors/sign-in-experiences.ts b/packages/phrases/src/locales/tr-tr/errors/sign-in-experiences.ts
new file mode 100644
index 000000000..55b722a42
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/sign-in-experiences.ts
@@ -0,0 +1,21 @@
+const sign_in_experiences = {
+ empty_content_url_of_terms_of_use:
+ '"Kullanım Koşulları" İçerik URLi yok. Lütfen "Kullanım Koşulları" etkinse içerik URLi ekleyiniz.',
+ empty_social_connectors:
+ 'Social connectors yok. Sosyal oturum açma yöntemi etkinleştirildiğinde lütfen etkin social connectorları ekleyiniz.',
+ enabled_connector_not_found: 'Etkin {{type}} bağlayıcı bulunamadı.',
+ not_one_and_only_one_primary_sign_in_method:
+ 'Yalnızca bir tane birincil oturum açma yöntemi olmalıdır. Lütfen inputu kontrol ediniz.',
+ username_requires_password: 'Kullanıcı adı kayıt kimliği için bir şifre belirlemek zorunludur.',
+ passwordless_requires_verify:
+ 'E-posta/telefon kayıt kimliği için doğrulama etkinleştirilmelidir.',
+ miss_sign_up_identifier_in_sign_in: 'Oturum açma yöntemleri, kayıt kimliğini içermelidir.',
+ password_sign_in_must_be_enabled:
+ 'Kayıtta şifre belirleme zorunlu olduğunda şifreyle oturum açma etkinleştirilmelidir.',
+ code_sign_in_must_be_enabled:
+ 'Kayıtta şifre belirleme zorunlu olmadığında doğrulama koduyla oturum açma etkinleştirilmelidir.',
+ unsupported_default_language: 'Bu dil - {{language}}, şu anda desteklenmemektedir.',
+ at_least_one_authentication_factor: 'En az bir doğrulama faktörü seçmelisiniz.',
+};
+
+export default sign_in_experiences;
diff --git a/packages/phrases/src/locales/tr-tr/errors/storage.ts b/packages/phrases/src/locales/tr-tr/errors/storage.ts
new file mode 100644
index 000000000..b1d134899
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/storage.ts
@@ -0,0 +1,7 @@
+const storage = {
+ not_configured: 'Depolama sağlayıcısı yapılandırılmamış.',
+ missing_parameter: 'Depolama sağlayıcısı için eksik parametre {{parameter}}.',
+ upload_error: 'Dosya yüklenemedi.',
+};
+
+export default storage;
diff --git a/packages/phrases/src/locales/tr-tr/errors/swagger.ts b/packages/phrases/src/locales/tr-tr/errors/swagger.ts
new file mode 100644
index 000000000..7ff172df8
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/swagger.ts
@@ -0,0 +1,8 @@
+const swagger = {
+ invalid_zod_type:
+ 'Geçersiz Zod tipi. Lütfen yönlendirici koruma yapılandırmasını kontrol ediniz.',
+ not_supported_zod_type_for_params:
+ 'Parametreler için desteklenmeyen Zod tipi. Lütfen yönlendirici koruma yapılandırmasını kontrol ediniz.',
+};
+
+export default swagger;
diff --git a/packages/phrases/src/locales/tr-tr/errors/user.ts b/packages/phrases/src/locales/tr-tr/errors/user.ts
new file mode 100644
index 000000000..f3627e24e
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/user.ts
@@ -0,0 +1,33 @@
+const user = {
+ username_already_in_use: 'Bu kullanıcı adı zaten kullanımda.',
+ email_already_in_use: 'Bu e-posta mevcut bir hesapla ilişkilendirilmiştir.',
+ phone_already_in_use: 'Bu telefon numarası mevcut bir hesapla ilişkilendirilmiştir.',
+ invalid_email: 'Geçersiz e-posta adresi.',
+ invalid_phone: 'Geçersiz telefon numarası.',
+ email_not_exist: 'E-posta adresi henüz kaydedilmedi.',
+ phone_not_exist: 'Telefon numarası henüz kaydedilmedi',
+ identity_not_exist: 'Sosyal platform hesabı henüz kaydedilmedi.',
+ identity_already_in_use: 'Sosyal platform hesabı kaydedildi.',
+ social_account_exists_in_profile: 'Bu sosyal hesap zaten ilişkilendirilmiş.',
+ cannot_delete_self: 'Kendinizi silemezsiniz.',
+ sign_up_method_not_enabled: 'Bu kayıt yöntemi etkin değil.',
+ sign_in_method_not_enabled: 'Bu oturum açma yöntemi etkin değil.',
+ same_password: 'Yeni şifre, eski şifrenizle aynı olamaz.',
+ password_required_in_profile: 'Oturum açmadan önce bir şifre belirlemeniz gerekiyor.',
+ new_password_required_in_profile: 'Yeni bir şifre belirlemeniz gerekiyor.',
+ password_exists_in_profile: 'Şifre profilinizde zaten mevcut.',
+ username_required_in_profile: 'Oturum açmadan önce bir kullanıcı adı belirlemeniz gerekiyor.',
+ username_exists_in_profile: 'Kullanıcı adı profilinizde zaten mevcut.',
+ email_required_in_profile: 'Oturum açmadan önce bir e-posta adresi eklemeniz gerekiyor.',
+ email_exists_in_profile: 'Profiliniz zaten bir e-posta adresi ile ilişkilendirilmiştir.',
+ phone_required_in_profile: 'Oturum açmadan önce bir telefon numarası eklemeniz gerekiyor.',
+ phone_exists_in_profile: 'Profiliniz zaten bir telefon numarası ile ilişkilendirilmiştir.',
+ email_or_phone_required_in_profile:
+ 'Oturum açmadan önce bir e-posta adresi veya telefon numarası eklemeniz gerekiyor.',
+ suspended: 'Bu hesap askıya alındı.',
+ user_not_exist: '{{identifier}} kimliğine sahip kullanıcı mevcut değil.',
+ missing_profile: 'Oturum açmadan önce ek bilgi sağlamanız gerekiyor.',
+ role_exists: '{{roleId}} rol kimliği bu kullanıcıya zaten eklenmiştir.',
+};
+
+export default user;
diff --git a/packages/phrases/src/locales/tr-tr/errors/verification-code.ts b/packages/phrases/src/locales/tr-tr/errors/verification-code.ts
new file mode 100644
index 000000000..68c825905
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/errors/verification-code.ts
@@ -0,0 +1,11 @@
+const verification_code = {
+ phone_email_empty: 'Telefon ve e-posta alanları boş.',
+ not_found: 'Doğrulama kodu bulunamadı. Lütfen önce doğrulama kodu gönderin.',
+ phone_mismatch: 'Telefon eşleşmiyor. Lütfen yeni bir doğrulama kodu isteyin.',
+ email_mismatch: 'E-posta eşleşmiyor. Lütfen yeni bir doğrulama kodu isteyin.',
+ code_mismatch: 'Geçersiz doğrulama kodu.',
+ expired: 'Doğrulama kodu süresi dolmuştur. Lütfen yeni bir doğrulama kodu isteyin.',
+ exceed_max_try: 'Doğrulama kodu deneme sınırı aşıldı. Lütfen yeni bir doğrulama kodu isteyin.',
+};
+
+export default verification_code;
diff --git a/packages/phrases/src/locales/tr-tr/index.ts b/packages/phrases/src/locales/tr-tr/index.ts
index de0515e61..08de05d9c 100644
--- a/packages/phrases/src/locales/tr-tr/index.ts
+++ b/packages/phrases/src/locales/tr-tr/index.ts
@@ -1,6 +1,6 @@
import type { LocalePhrase } from '../../types.js';
-import errors from './errors.js';
+import errors from './errors/index.js';
import translation from './translation/index.js';
const trTR: LocalePhrase = Object.freeze({
diff --git a/packages/phrases/src/locales/tr-tr/translation/admin-console/index.ts b/packages/phrases/src/locales/tr-tr/translation/admin-console/index.ts
index 997359803..57ed866c9 100644
--- a/packages/phrases/src/locales/tr-tr/translation/admin-console/index.ts
+++ b/packages/phrases/src/locales/tr-tr/translation/admin-console/index.ts
@@ -19,7 +19,7 @@ import profile from './profile.js';
import role_details from './role-details.js';
import roles from './roles.js';
import session_expired from './session-expired.js';
-import sign_in_exp from './sign-in-exp.js';
+import sign_in_exp from './sign-in-exp/index.js';
import tab_sections from './tab-sections.js';
import tabs from './tabs.js';
import user_details from './user-details.js';
diff --git a/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp.ts
deleted file mode 100644
index df58337c5..000000000
--- a/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp.ts
+++ /dev/null
@@ -1,183 +0,0 @@
-const sign_in_exp = {
- page_title: 'Oturum Açma Deneyimi',
- title: 'Oturum Açma Deneyimi',
- description:
- 'Oturum açma kullanıcı arayüzünü markanıza uyacak şekilde özelleştirin ve gerçek zamanlı olarak görüntüleyin',
- tabs: {
- branding: 'Markalaşma',
- sign_up_and_sign_in: 'Sign-up and Sign-in', // UNTRANSLATED
- others: 'Diğerleri',
- },
- welcome: {
- title: 'Customize sign-in experience', // UNTRANSLATED
- description:
- 'Get started fast with your first sign-in setup. This guide walks you through all the necessary settings.', // UNTRANSLATED
- get_started: 'Başla',
- apply_remind:
- 'Lütfen oturum açma deneyiminin bu hesap altındaki tüm uygulamalar için geçerli olacağını unutmayınız.',
- },
- color: {
- title: 'RENK',
- primary_color: 'Marka rengi',
- dark_primary_color: 'Marka rengi (Koyu)',
- dark_mode: 'Koyu modu etkinleştir',
- dark_mode_description:
- 'Uygulamanız, markanızın rengine ve logo algoritmasına göre otomatik olarak oluşturulmuş bir koyu mod temasına sahip olacaktır. Özelleştirmekte özgürsünüz.',
- dark_mode_reset_tip: 'Marka rengine göre koyu mod rengini yeniden hesaplayınız.',
- reset: 'Yeniden hesapla',
- },
- branding: {
- title: 'MARKA ALANI',
- ui_style: 'Stil',
- favicon: 'Favicon', // UNTRANSLATED
- logo_image_url: 'Uygulama logosu resim URLi',
- logo_image_url_placeholder: 'https://your.cdn.domain/logo.png',
- dark_logo_image_url: 'Uygulama logosu resim URLi (Koyu)',
- dark_logo_image_url_placeholder: 'https://your.cdn.domain/logo-dark.png',
- logo_image: 'App logo', // UNTRANSLATED
- dark_logo_image: 'App logo (Dark)', // UNTRANSLATED
- logo_image_error: 'App logo: {{error}}', // UNTRANSLATED
- favicon_error: 'Favicon: {{error}}', // UNTRANSLATED
- },
- custom_css: {
- title: 'Custom CSS', // UNTRANSLATED
- css_code_editor_title: 'Personalize your UI with Custom CSS', // UNTRANSLATED
- css_code_editor_description1: 'See the example of Custom CSS.', // UNTRANSLATED
- css_code_editor_description2: '{{link}}', // UNTRANSLATED
-
- css_code_editor_description_link_content: 'Learn more', // UNTRANSLATED
- css_code_editor_content_placeholder:
- 'Enter your custom CSS to tailor the styles of anything to your exact specifications. Express your creativity and make your UI stand out.', // UNTRANSLATED
- },
- sign_up_and_sign_in: {
- identifiers_email: 'Email address', // UNTRANSLATED
- identifiers_phone: 'Phone number', // UNTRANSLATED
- identifiers_username: 'Username', // UNTRANSLATED
- identifiers_email_or_sms: 'Email address or phone number', // UNTRANSLATED
- identifiers_none: 'Not applicable', // UNTRANSLATED
- and: 'and', // UNTRANSLATED
- or: 'or', // UNTRANSLATED
- sign_up: {
- title: 'SIGN-UP', // UNTRANSLATED
- sign_up_identifier: 'Sign-up identifier', // UNTRANSLATED
- identifier_description:
- 'The sign-up identifier is required for account creation and must be included in your sign-in screen.', // UNTRANSLATED
- sign_up_authentication: 'Authentication setting for sign-up', // UNTRANSLATED
- authentication_description:
- 'All selected actions will be obligatory for users to complete the flow.', // UNTRANSLATED
- set_a_password_option: 'Create your password', // UNTRANSLATED
- verify_at_sign_up_option: 'Verify at sign-up', // UNTRANSLATED
- social_only_creation_description: '(This apply to social only account creation)', // UNTRANSLATED
- },
- sign_in: {
- title: 'SIGN-IN', // UNTRANSLATED
- sign_in_identifier_and_auth: 'Identifier and authentication settings for sign-in', // UNTRANSLATED
- description:
- 'Users can sign in using any of the options available. Adjust the layout by drag and dropping below options.', // UNTRANSLATED
- add_sign_in_method: 'Add Sign-in Method', // UNTRANSLATED
- password_auth: 'Password', // UNTRANSLATED
- verification_code_auth: 'Verification code', // UNTRANSLATED
- auth_swap_tip: 'Swap the options below to determine which appears first in the flow.', // UNTRANSLATED
- require_auth_factor: 'You have to select at least one authentication factor.', // UNTRANSLATED
- },
- social_sign_in: {
- title: 'SOCIAL SIGN-IN', // UNTRANSLATED
- social_sign_in: 'Social sign-in', // UNTRANSLATED
- description:
- 'Depending on the mandatory identifier you set up, your user may be asked to provide an identifier when signing up via social connector.', // UNTRANSLATED
- add_social_connector: 'Add Social Connector', // UNTRANSLATED
- set_up_hint: {
- not_in_list: 'Not in the list?', // UNTRANSLATED
- set_up_more: 'Set up', // UNTRANSLATED
- go_to: 'other social connectors now.', // UNTRANSLATED
- },
- },
- tip: {
- set_a_password: 'A unique set of a password to your username is a must.', // UNTRANSLATED
- verify_at_sign_up:
- 'We currently only support verified email. Your user base may contain a large number of poor-quality email addresses if no validation.', // UNTRANSLATED
- password_auth:
- 'This is essential as you have enabled the option to set a password during the sign-up process.', // UNTRANSLATED
- verification_code_auth:
- 'This is essential as you have only enabled the option to provide verification code when signing up. You’re free to uncheck the box when password set-up is allowed at the sign-up process.', // UNTRANSLATED
- delete_sign_in_method:
- 'This is essential as you have selected {{identifier}} as a required identifier.', // UNTRANSLATED
- },
- },
- others: {
- terms_of_use: {
- title: 'KULLANIM KOŞULLARI',
- terms_of_use: 'Kullanım koşulları URLi',
- terms_of_use_placeholder: 'https://your.terms.of.use/',
- privacy_policy: 'Gizlilik politikası URLi',
- privacy_policy_placeholder: 'https://your.privacy.policy/',
- },
- languages: {
- title: 'DİLLER',
- enable_auto_detect: 'Enable auto-detect', // UNTRANSLATED
- description:
- "Your software detects the user's locale setting and switches to the local language. You can add new languages by translating UI from English to another language.", // UNTRANSLATED
- manage_language: 'Manage language', // UNTRANSLATED
- default_language: 'Default language', // UNTRANSLATED
- default_language_description_auto:
- 'The default language will be used when the detected user language isn’t covered in the current language library.', // UNTRANSLATED
- default_language_description_fixed:
- 'When auto-detect is off, the default language is the only language your software will show. Turn on auto-detect for language extension.', // UNTRANSLATED
- },
- manage_language: {
- title: 'Manage language', // UNTRANSLATED
- subtitle:
- 'Localize the product experience by adding languages and translations. Your contribution can be set as the default language.', // UNTRANSLATED
- add_language: 'Add Language', // UNTRANSLATED
- logto_provided: 'Logto provided', // UNTRANSLATED
- key: 'Key', // UNTRANSLATED
- logto_source_values: 'Logto source values', // UNTRANSLATED
- custom_values: 'Custom values', // UNTRANSLATED
- clear_all_tip: 'Clear all values', // UNTRANSLATED
- unsaved_description: 'Changes won’t be saved if you leave this page without saving.', // UNTRANSLATED
- deletion_title: 'Do you want to delete the added language?', // UNTRANSLATED
- deletion_tip: 'Delete the language', // UNTRANSLATED
- deletion_description:
- 'After deletion, your users won’t be able to browse in that language again.', // UNTRANSLATED
- default_language_deletion_title: 'Default language can’t be deleted.', // UNTRANSLATED
- default_language_deletion_description:
- '{{language}} is set as your default language and can’t be deleted. ', // UNTRANSLATED
- },
- advanced_options: {
- title: 'GELİŞMİŞ OPSİYONLAR',
- enable_user_registration: 'Enable user registration', // UNTRANSLATED
- enable_user_registration_description:
- 'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.', // UNTRANSLATED
- },
- },
- setup_warning: {
- no_connector_sms:
- 'No SMS connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"', // UNTRANSLATED
- no_connector_email:
- 'No email connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"', // UNTRANSLATED
- no_connector_social:
- 'No social connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"', // UNTRANSLATED
- no_added_social_connector:
- 'Şimdi birkaç social connector kurdunuz. Oturum açma deneyiminize bazı şeyler eklediğinizden emin olun.',
- setup_link: 'Set up',
- },
- save_alert: {
- description:
- 'You are implementing new sign-in and sign-up procedures. All of your users may be affected by the new set-up. Are you sure to commit to the change?', // UNTRANSLATED
- before: 'Önce',
- after: 'Sonra',
- sign_up: 'Sign-up', // UNTRANSLATED
- sign_in: 'Sign-in', // UNTRANSLATED
- social: 'Social', // UNTRANSLATED
- },
- preview: {
- title: 'Oturum Açma Önizlemesi',
- live_preview: 'Live preview', // UNTRANSLATED
- live_preview_tip: 'Save to preview changes', // UNTRANSLATED
- native: 'Doğal',
- desktop_web: 'Masaüstü Web',
- mobile_web: 'Mobil Web',
- },
-};
-
-export default sign_in_exp;
diff --git a/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp/index.ts b/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp/index.ts
new file mode 100644
index 000000000..c31af8107
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp/index.ts
@@ -0,0 +1,86 @@
+import others from './others.js';
+import sign_up_and_sign_in from './sign-up-and-sign-in.js';
+
+const sign_in_exp = {
+ page_title: 'Oturum Açma Deneyimi',
+ title: 'Oturum Açma Deneyimi',
+ description:
+ 'Oturum açma kullanıcı arayüzünü markanıza uyacak şekilde özelleştirin ve gerçek zamanlı olarak görüntüleyin',
+ tabs: {
+ branding: 'Markalaşma',
+ sign_up_and_sign_in: 'Sign up and Sign in',
+ others: 'Diğerleri',
+ },
+ welcome: {
+ title: 'Customize sign-in experience',
+ description:
+ 'Get started fast with your first sign-in setup. This guide walks you through all the necessary settings.',
+ get_started: 'Başla',
+ apply_remind:
+ 'Lütfen oturum açma deneyiminin bu hesap altındaki tüm uygulamalar için geçerli olacağını unutmayınız.',
+ },
+ color: {
+ title: 'RENK',
+ primary_color: 'Marka rengi',
+ dark_primary_color: 'Marka rengi (Koyu)',
+ dark_mode: 'Koyu modu etkinleştir',
+ dark_mode_description:
+ 'Uygulamanız, markanızın rengine ve logo algoritmasına göre otomatik olarak oluşturulmuş bir koyu mod temasına sahip olacaktır. Özelleştirmekte özgürsünüz.',
+ dark_mode_reset_tip: 'Marka rengine göre koyu mod rengini yeniden hesaplayınız.',
+ reset: 'Yeniden hesapla',
+ },
+ branding: {
+ title: 'MARKA ALANI',
+ ui_style: 'Stil',
+ favicon: 'Favicon',
+ logo_image_url: 'Uygulama logosu resim URLi',
+ logo_image_url_placeholder: 'https://your.cdn.domain/logo.png',
+ dark_logo_image_url: 'Uygulama logosu resim URLi (Koyu)',
+ dark_logo_image_url_placeholder: 'https://your.cdn.domain/logo-dark.png',
+ logo_image: 'App logo',
+ dark_logo_image: 'App logo (Dark)',
+ logo_image_error: 'App logo: {{error}}',
+ favicon_error: 'Favicon: {{error}}',
+ },
+ custom_css: {
+ title: 'Custom CSS',
+ css_code_editor_title: 'Personalize your UI with Custom CSS',
+ css_code_editor_description1: 'See the example of Custom CSS.',
+ css_code_editor_description2: '{{link}}',
+ css_code_editor_description_link_content: 'Learn more',
+ css_code_editor_content_placeholder:
+ 'Enter your custom CSS to tailor the styles of anything to your exact specifications. Express your creativity and make your UI stand out.',
+ },
+ setup_warning: {
+ no_connector_sms:
+ 'No SMS connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"',
+ no_connector_email:
+ 'No email connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"',
+ no_connector_social:
+ 'No social connector set-up yet. Before completing the configuration, users will not be able to sign in with this method. {{link}} in "Connectors"',
+ no_added_social_connector:
+ 'Şimdi birkaç social connector kurdunuz. Oturum açma deneyiminize bazı şeyler eklediğinizden emin olun.',
+ setup_link: 'Set up',
+ },
+ save_alert: {
+ description:
+ 'You are implementing new sign-in and sign-up procedures. All of your users may be affected by the new set-up. Are you sure to commit to the change?',
+ before: 'Önce',
+ after: 'Sonra',
+ sign_up: 'Sign-up',
+ sign_in: 'Sign-in',
+ social: 'Social',
+ },
+ preview: {
+ title: 'Oturum Açma Önizlemesi',
+ live_preview: 'Live preview',
+ live_preview_tip: 'Save to preview changes',
+ native: 'Doğal',
+ desktop_web: 'Masaüstü Web',
+ mobile_web: 'Mobil Web',
+ },
+ others,
+ sign_up_and_sign_in,
+};
+
+export default sign_in_exp;
diff --git a/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp/others.ts b/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp/others.ts
new file mode 100644
index 000000000..20e6f6357
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp/others.ts
@@ -0,0 +1,48 @@
+const others = {
+ terms_of_use: {
+ title: 'KULLANIM KOŞULLARI',
+ terms_of_use: 'Kullanım koşulları URLi',
+ terms_of_use_placeholder: 'https://your.terms.of.use/',
+ privacy_policy: 'Gizlilik politikası URLi',
+ privacy_policy_placeholder: 'https://your.privacy.policy/',
+ },
+ languages: {
+ title: 'DİLLER',
+ enable_auto_detect: 'Enable auto-detect',
+ description:
+ "Your software detects the user's locale setting and switches to the local language. You can add new languages by translating UI from English to another language.",
+ manage_language: 'Manage language',
+ default_language: 'Default language',
+ default_language_description_auto:
+ 'The default language will be used when the detected user language isn’t covered in the current language library.',
+ default_language_description_fixed:
+ 'When auto-detect is off, the default language is the only language your software will show. Turn on auto-detect for language extension.',
+ },
+ manage_language: {
+ title: 'Manage language',
+ subtitle:
+ 'Localize the product experience by adding languages and translations. Your contribution can be set as the default language.',
+ add_language: 'Add Language',
+ logto_provided: 'Logto provided',
+ key: 'Key',
+ logto_source_values: 'Logto source values',
+ custom_values: 'Custom values',
+ clear_all_tip: 'Clear all values',
+ unsaved_description: 'Changes won’t be saved if you leave this page without saving.',
+ deletion_title: 'Do you want to delete the added language?',
+ deletion_tip: 'Delete the language',
+ deletion_description:
+ 'After deletion, your users won’t be able to browse in that language again.',
+ default_language_deletion_title: 'Default language can’t be deleted.',
+ default_language_deletion_description:
+ '{{language}} is set as your default language and can’t be deleted. ',
+ },
+ advanced_options: {
+ title: 'GELİŞMİŞ OPSİYONLAR',
+ enable_user_registration: 'Enable user registration',
+ enable_user_registration_description:
+ 'Enable or disallow user registration. Once disabled, users can still be added in the admin console but users can no longer establish accounts through the sign-in UI.',
+ },
+};
+
+export default others;
diff --git a/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts b/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts
new file mode 100644
index 000000000..3dd26b12c
--- /dev/null
+++ b/packages/phrases/src/locales/tr-tr/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts
@@ -0,0 +1,57 @@
+const sign_up_and_sign_in = {
+ identifiers_email: 'Email address',
+ identifiers_phone: 'Phone number',
+ identifiers_username: 'Username',
+ identifiers_email_or_sms: 'Email address or phone number',
+ identifiers_none: 'Not applicable',
+ and: 'and',
+ or: 'or',
+ sign_up: {
+ title: 'SIGN UP',
+ sign_up_identifier: 'Sign-up identifier',
+ identifier_description:
+ 'The sign-up identifier is required for account creation and must be included in your sign-in screen.',
+ sign_up_authentication: 'Authentication setting for sign-up',
+ authentication_description:
+ 'All selected actions will be obligatory for users to complete the flow.',
+ set_a_password_option: 'Create your password',
+ verify_at_sign_up_option: 'Verify at sign-up',
+ social_only_creation_description: '(This apply to social only account creation)',
+ },
+ sign_in: {
+ title: 'SIGN IN',
+ sign_in_identifier_and_auth: 'Identifier and authentication settings for sign-in',
+ description:
+ 'Users can sign in using any of the options available. Adjust the layout by drag and dropping below options.',
+ add_sign_in_method: 'Add Sign-in Method',
+ password_auth: 'Password',
+ verification_code_auth: 'Verification code',
+ auth_swap_tip: 'Swap the options below to determine which appears first in the flow.',
+ require_auth_factor: 'You have to select at least one authentication factor.',
+ },
+ social_sign_in: {
+ title: 'SOCIAL SIGN-IN',
+ social_sign_in: 'Social sign-in',
+ description:
+ 'Depending on the mandatory identifier you set up, your user may be asked to provide an identifier when signing up via social connector.',
+ add_social_connector: 'Add Social Connector',
+ set_up_hint: {
+ not_in_list: 'Not in the list?',
+ set_up_more: 'Set up',
+ go_to: 'other social connectors now.',
+ },
+ },
+ tip: {
+ set_a_password: 'A unique set of a password to your username is a must.',
+ verify_at_sign_up:
+ 'We currently only support verified email. Your user base may contain a large number of poor-quality email addresses if no validation.',
+ password_auth:
+ 'This is essential as you have enabled the option to set a password during the sign-up process.',
+ verification_code_auth:
+ 'This is essential as you have only enabled the option to provide verification code when signing up. You’re free to uncheck the box when password set-up is allowed at the sign-up process.',
+ delete_sign_in_method:
+ 'This is essential as you have selected {{identifier}} as a required identifier.',
+ },
+};
+
+export default sign_up_and_sign_in;
diff --git a/packages/phrases/src/locales/zh-cn/errors.ts b/packages/phrases/src/locales/zh-cn/errors.ts
deleted file mode 100644
index 86d5dee56..000000000
--- a/packages/phrases/src/locales/zh-cn/errors.ts
+++ /dev/null
@@ -1,179 +0,0 @@
-const errors = {
- request: {
- invalid_input: '输入无效。{{details}}',
- general: '发生请求错误。',
- },
- auth: {
- authorization_header_missing: 'Authorization 请求头缺失。',
- authorization_token_type_not_supported: 'Authorization token 类型不支持',
- unauthorized: '未经授权。请检查凭据及其范围。',
- forbidden: '禁止访问。请检查用户 role 与权限。',
- expected_role_not_found: '未找到期望的 role。请检查用户 role 与权限。',
- jwt_sub_missing: 'JWT 缺失 `sub`',
- require_re_authentication: '需要重新认证以进行受保护操作。',
- },
- guard: {
- invalid_input: '请求中 {{type}} 无效',
- invalid_pagination: '分页参数无效',
- can_not_get_tenant_id: '无法从请求中获取租户 ID。',
- file_size_exceeded: '文件大小超过限制。',
- mime_type_not_allowed: '不允许使用此 MIME 类型。',
- },
- oidc: {
- aborted: '用户终止了交互。',
- invalid_scope: '不支持的 scope: {{scopes}}',
- invalid_scope_plural: '不支持的 scope: {{scopes}}',
- invalid_token: 'Token 无效',
- invalid_client_metadata: '无效的客户端元数据',
- insufficient_scope: '请求 token 缺少权限: {{scopes}}',
- invalid_request: '请求无效',
- invalid_grant: '授权请求无效',
- invalid_redirect_uri: '无效返回链接, 该 redirect_uri 未被此应用注册。',
- access_denied: '拒绝访问',
- invalid_target: '请求资源无效',
- unsupported_grant_type: '不支持的 grant_type',
- unsupported_response_mode: '不支持的 response_mode',
- unsupported_response_type: '不支持的 response_type',
- provider_error: 'OIDC 内部错误: {{message}}',
- },
- user: {
- username_already_in_use: '该用户名已被使用。',
- email_already_in_use: '该邮箱地址已被使用。',
- phone_already_in_use: '该手机号码已被使用。',
- invalid_email: '邮箱地址不正确。',
- invalid_phone: '手机号码不正确。',
- email_not_exist: '邮箱地址尚未注册。',
- phone_not_exist: '手机号码尚未注册。',
- identity_not_exist: '该社交帐号尚未注册。',
- identity_already_in_use: '该社交帐号已被注册。',
- social_account_exists_in_profile: '你已绑定当前社交账号,无需重复操作。',
- cannot_delete_self: '无法删除自己的账户。',
- sign_up_method_not_enabled: '注册方式尚未启用。',
- sign_in_method_not_enabled: '登录方式尚未启用。',
- same_password: '为确保账户安全,新密码不能与旧密码一致。',
- password_required_in_profile: '请设置登录密码。',
- new_password_required_in_profile: '请设置新密码。',
- password_exists_in_profile: '当前用户已设置密码,无需重复操作。',
- username_required_in_profile: '请设置用户名。',
- username_exists_in_profile: '当前用户已设置用户名,无需重复操作。',
- email_required_in_profile: '请绑定邮箱地址',
- email_exists_in_profile: '当前用户已绑定邮箱,无需重复操作。',
- phone_required_in_profile: '请绑定手机号码。',
- phone_exists_in_profile: '当前用户已绑定手机号,无需重复操作。',
- email_or_phone_required_in_profile: '请绑定邮箱地址或手机号码。',
- suspended: '账号已被禁用。',
- user_not_exist: '未找到与 {{identifier}} 相关联的用户。',
- missing_profile: '请于登录时提供必要的用户补充信息。',
- role_exists: '角色 ID {{roleId}} 已添加到此用户',
- },
- password: {
- unsupported_encryption_method: '不支持的加密方法 {{name}}',
- pepper_not_found: '密码 pepper 未找到。请检查 core 的环境变量。',
- },
- session: {
- not_found: '未找到会话。请返回并重新登录。',
- invalid_credentials: '账号或密码错误,请重新输入。',
- invalid_sign_in_method: '当前登录方式不可用',
- invalid_connector_id: '找不到 ID 为 {{connectorId}} 的可用连接器。',
- insufficient_info: '登录信息缺失,请检查你的输入。',
- connector_id_mismatch: '传入的连接器 ID 与 session 中保存的记录不一致',
- connector_session_not_found: '无法找到连接器登录信息,请尝试重新登录。',
- verification_session_not_found: '验证失败,请重新验证。',
- verification_expired: '当前页面已超时。为确保你的账号安全,请重新验证。',
- unauthorized: '请先登录',
- unsupported_prompt_name: '不支持的 prompt name',
- forgot_password_not_enabled: '忘记密码功能没有开启。',
- verification_failed: '验证失败,请重新验证。',
- connector_validation_session_not_found: '找不到连接器用于验证 token 的信息。',
- identifier_not_found: '找不到用户标识符。请返回并重新登录。',
- interaction_not_found: '找不到交互会话。请返回并重新开始会话。',
- },
- connector: {
- general: '连接器发生错误:{{errorDescription}}',
- not_found: '找不到可用的 {{type}} 类型的连接器',
- not_enabled: '连接器尚未启用',
- invalid_metadata: '连接器 metadata 参数错误',
- invalid_config_guard: '连接器配置 guard 错误',
- unexpected_type: '连接器类型错误',
- insufficient_request_parameters: '请求参数缺失',
- invalid_request_parameters: '请求参数错误',
- invalid_config: '连接器配置错误',
- invalid_response: '连接器错误响应',
- template_not_found: '无法从连接器配置中找到对应的模板',
- not_implemented: '方法 {{method}} 尚未实现',
- social_invalid_access_token: '当前连接器的 access_token 无效',
- invalid_auth_code: '当前连接器的授权码无效',
- social_invalid_id_token: '当前连接器的 id_token 无效',
- authorization_failed: '用户授权流程失败',
- social_auth_code_invalid: '无法获取 access_token,请检查授权 code 是否有效',
- more_than_one_sms: '同时存在超过 1 个短信连接器',
- more_than_one_email: '同时存在超过 1 个邮件连接器',
- more_than_one_connector_factory: '找到多个连接器工厂(id 为 {{connectorIds}}),请删除多余项。',
- db_connector_type_mismatch: '数据库中存在一个类型不匹配的连接。',
- not_found_with_connector_id: '找不到所给 connector id 对应的连接器',
- multiple_instances_not_supported: '你选择的连接器不支持创建多实例。',
- invalid_type_for_syncing_profile: '只有社交连接器可以开启用户档案同步。',
- can_not_modify_target: '不可修改连接器 target。',
- should_specify_target: '你需要声明 target 的值。',
- multiple_target_with_same_platform: '同一平台上,多个社交连接器不能重复使用相同的 “Target”。',
- cannot_overwrite_metadata_for_non_standard_connector: '不可覆盖该连接器的 metadata 参数。',
- },
- verification_code: {
- phone_email_empty: '手机号与邮箱地址均为空',
- not_found: '验证码不存在,请先请求发送验证码',
- phone_mismatch: '手机号码不匹配,请尝试请求新的验证码。',
- email_mismatch: '邮箱地址不匹配,请尝试请求新的验证码。',
- code_mismatch: '验证码不正确',
- expired: '验证码已过期,请尝试请求新的验证码。',
- exceed_max_try: '超过最大验证次数,请尝试请求新的验证码。',
- },
- sign_in_experiences: {
- empty_content_url_of_terms_of_use: '你启用了“使用条款”,请添加使用条款 URL。',
- empty_social_connectors: '你启用了社交登录的方式。请至少选择一个社交连接器。',
- enabled_connector_not_found: '未找到已启用的 {{type}} 连接器',
- not_one_and_only_one_primary_sign_in_method: '主要的登录方式必须有且仅有一个,请检查你的输入。',
- username_requires_password: '必须为用户名注册标识符启用设置密码。',
- passwordless_requires_verify: '必须为电子邮件/电话注册标识符启用验证。',
- miss_sign_up_identifier_in_sign_in: '登录方法必须包含注册标识符。',
- password_sign_in_must_be_enabled: '必须在注册中要求设置密码时启用密码登录。',
- code_sign_in_must_be_enabled: '必须在注册中不要求设置密码时启用验证码登录。',
- unsupported_default_language: '{{language}} 无法选择为默认语言。',
- at_least_one_authentication_factor: '至少要选择一个登录要素',
- },
- localization: {
- cannot_delete_default_language: '你已设置 {{languageTag}} 为你的默认语言,你无法删除默认语言。',
- invalid_translation_structure: '无效的数据格式,请检查你的输入并重试。',
- },
- swagger: {
- invalid_zod_type: '无效的 Zod 类型,请检查路由 guard 配置。',
- not_supported_zod_type_for_params: '请求参数不支持的 Zod 类型,请检查路由 guard 配置。',
- },
- entity: {
- create_failed: '创建 {{name}} 失败',
- not_exists: '该 {{name}} 不存在',
- not_exists_with_id: 'ID 为 `{{id}}` 的 {{name}} 不存在',
- not_found: '该资源不存在',
- },
- log: {
- invalid_type: '日志类型无效。',
- },
- role: {
- name_in_use: '此角色名称 {{name}} 已被使用',
- scope_exists: '作用域 ID {{scopeId}} 已添加到此角色',
- user_exists: '用户 ID {{userId}} 已添加到此角色',
- default_role_missing: '某些默认角色名称在数据库中不存在,请确保先创建角色',
- internal_role_violation:
- '你可能正在尝试更新或删除 Logto 禁止的内部角色。如果你要创建新角色,请尝试使用不以“#internal:”开头的名称。',
- },
- scope: {
- name_exists: '此作用域名称 {{name}} 已被使用',
- name_with_space: '作用域名称不能包含任何空格。',
- },
- storage: {
- not_configured: '未配置存储提供程序。',
- missing_parameter: '存储提供程序缺少参数 {{parameter}}。',
- upload_error: '无法将文件上传到存储提供程序。',
- },
-};
-
-export default errors;
diff --git a/packages/phrases/src/locales/zh-cn/errors/auth.ts b/packages/phrases/src/locales/zh-cn/errors/auth.ts
new file mode 100644
index 000000000..b58e686ad
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/auth.ts
@@ -0,0 +1,11 @@
+const auth = {
+ authorization_header_missing: 'Authorization 请求头缺失。',
+ authorization_token_type_not_supported: 'Authorization token 类型不支持',
+ unauthorized: '未经授权。请检查凭据及其范围。',
+ forbidden: '禁止访问。请检查用户 role 与权限。',
+ expected_role_not_found: '未找到期望的 role。请检查用户 role 与权限。',
+ jwt_sub_missing: 'JWT 缺失 `sub`',
+ require_re_authentication: '需要重新认证以进行受保护操作。',
+};
+
+export default auth;
diff --git a/packages/phrases/src/locales/zh-cn/errors/connector.ts b/packages/phrases/src/locales/zh-cn/errors/connector.ts
new file mode 100644
index 000000000..d518e43f2
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/connector.ts
@@ -0,0 +1,32 @@
+const connector = {
+ general: '连接器发生错误:{{errorDescription}}',
+ not_found: '找不到可用的 {{type}} 类型的连接器',
+ not_enabled: '连接器尚未启用',
+ invalid_metadata: '连接器 metadata 参数错误',
+ invalid_config_guard: '连接器配置 guard 错误',
+ unexpected_type: '连接器类型错误',
+ insufficient_request_parameters: '请求参数缺失',
+ invalid_request_parameters: '请求参数错误',
+ invalid_config: '连接器配置错误',
+ invalid_response: '连接器错误响应',
+ template_not_found: '无法从连接器配置中找到对应的模板',
+ not_implemented: '方法 {{method}} 尚未实现',
+ social_invalid_access_token: '当前连接器的 access_token 无效',
+ invalid_auth_code: '当前连接器的授权码无效',
+ social_invalid_id_token: '当前连接器的 id_token 无效',
+ authorization_failed: '用户授权流程失败',
+ social_auth_code_invalid: '无法获取 access_token,请检查授权 code 是否有效',
+ more_than_one_sms: '同时存在超过 1 个短信连接器',
+ more_than_one_email: '同时存在超过 1 个邮件连接器',
+ more_than_one_connector_factory: '找到多个连接器工厂(id 为 {{connectorIds}}),请删除多余项。',
+ db_connector_type_mismatch: '数据库中存在一个类型不匹配的连接。',
+ not_found_with_connector_id: '找不到所给 connector id 对应的连接器',
+ multiple_instances_not_supported: '你选择的连接器不支持创建多实例。',
+ invalid_type_for_syncing_profile: '只有社交连接器可以开启用户档案同步。',
+ can_not_modify_target: '不可修改连接器 target。',
+ should_specify_target: '你需要声明 target 的值。',
+ multiple_target_with_same_platform: '同一平台上,多个社交连接器不能重复使用相同的 “Target”。',
+ cannot_overwrite_metadata_for_non_standard_connector: '不可覆盖该连接器的 metadata 参数。',
+};
+
+export default connector;
diff --git a/packages/phrases/src/locales/zh-cn/errors/entity.ts b/packages/phrases/src/locales/zh-cn/errors/entity.ts
new file mode 100644
index 000000000..03b04aafc
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/entity.ts
@@ -0,0 +1,8 @@
+const entity = {
+ create_failed: '创建 {{name}} 失败',
+ not_exists: '该 {{name}} 不存在',
+ not_exists_with_id: 'ID 为 `{{id}}` 的 {{name}} 不存在',
+ not_found: '该资源不存在',
+};
+
+export default entity;
diff --git a/packages/phrases/src/locales/zh-cn/errors/guard.ts b/packages/phrases/src/locales/zh-cn/errors/guard.ts
new file mode 100644
index 000000000..87017e190
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/guard.ts
@@ -0,0 +1,9 @@
+const guard = {
+ invalid_input: '请求中 {{type}} 无效',
+ invalid_pagination: '分页参数无效',
+ can_not_get_tenant_id: '无法从请求中获取租户 ID。',
+ file_size_exceeded: '文件大小超过限制。',
+ mime_type_not_allowed: '不允许使用此 MIME 类型。',
+};
+
+export default guard;
diff --git a/packages/phrases/src/locales/zh-cn/errors/index.ts b/packages/phrases/src/locales/zh-cn/errors/index.ts
new file mode 100644
index 000000000..c3f5e05ec
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/index.ts
@@ -0,0 +1,39 @@
+import auth from './auth.js';
+import connector from './connector.js';
+import entity from './entity.js';
+import guard from './guard.js';
+import localization from './localization.js';
+import log from './log.js';
+import oidc from './oidc.js';
+import password from './password.js';
+import request from './request.js';
+import role from './role.js';
+import scope from './scope.js';
+import session from './session.js';
+import sign_in_experiences from './sign-in-experiences.js';
+import storage from './storage.js';
+import swagger from './swagger.js';
+import user from './user.js';
+import verification_code from './verification-code.js';
+
+const errors = {
+ request,
+ auth,
+ guard,
+ oidc,
+ user,
+ password,
+ session,
+ connector,
+ verification_code,
+ sign_in_experiences,
+ localization,
+ swagger,
+ entity,
+ log,
+ role,
+ scope,
+ storage,
+};
+
+export default errors;
diff --git a/packages/phrases/src/locales/zh-cn/errors/localization.ts b/packages/phrases/src/locales/zh-cn/errors/localization.ts
new file mode 100644
index 000000000..864f5c9a9
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/localization.ts
@@ -0,0 +1,6 @@
+const localization = {
+ cannot_delete_default_language: '你已设置 {{languageTag}} 为你的默认语言,你无法删除默认语言。',
+ invalid_translation_structure: '无效的数据格式,请检查你的输入并重试。',
+};
+
+export default localization;
diff --git a/packages/phrases/src/locales/zh-cn/errors/log.ts b/packages/phrases/src/locales/zh-cn/errors/log.ts
new file mode 100644
index 000000000..df5b3d0f8
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/log.ts
@@ -0,0 +1,5 @@
+const log = {
+ invalid_type: '日志类型无效。',
+};
+
+export default log;
diff --git a/packages/phrases/src/locales/zh-cn/errors/oidc.ts b/packages/phrases/src/locales/zh-cn/errors/oidc.ts
new file mode 100644
index 000000000..7d80acc9b
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/oidc.ts
@@ -0,0 +1,19 @@
+const oidc = {
+ aborted: '用户终止了交互。',
+ invalid_scope: '不支持的 scope: {{scopes}}',
+ invalid_scope_plural: '不支持的 scope: {{scopes}}',
+ invalid_token: 'Token 无效',
+ invalid_client_metadata: '无效的客户端元数据',
+ insufficient_scope: '请求 token 缺少权限: {{scopes}}',
+ invalid_request: '请求无效',
+ invalid_grant: '授权请求无效',
+ invalid_redirect_uri: '无效返回链接, 该 redirect_uri 未被此应用注册。',
+ access_denied: '拒绝访问',
+ invalid_target: '请求资源无效',
+ unsupported_grant_type: '不支持的 grant_type',
+ unsupported_response_mode: '不支持的 response_mode',
+ unsupported_response_type: '不支持的 response_type',
+ provider_error: 'OIDC 内部错误: {{message}}',
+};
+
+export default oidc;
diff --git a/packages/phrases/src/locales/zh-cn/errors/password.ts b/packages/phrases/src/locales/zh-cn/errors/password.ts
new file mode 100644
index 000000000..c2ce5075b
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/password.ts
@@ -0,0 +1,6 @@
+const password = {
+ unsupported_encryption_method: '不支持的加密方法 {{name}}',
+ pepper_not_found: '密码 pepper 未找到。请检查 core 的环境变量。',
+};
+
+export default password;
diff --git a/packages/phrases/src/locales/zh-cn/errors/request.ts b/packages/phrases/src/locales/zh-cn/errors/request.ts
new file mode 100644
index 000000000..cb10aa979
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/request.ts
@@ -0,0 +1,6 @@
+const request = {
+ invalid_input: '输入无效。{{details}}',
+ general: '发生请求错误。',
+};
+
+export default request;
diff --git a/packages/phrases/src/locales/zh-cn/errors/role.ts b/packages/phrases/src/locales/zh-cn/errors/role.ts
new file mode 100644
index 000000000..9fcf02788
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/role.ts
@@ -0,0 +1,10 @@
+const role = {
+ name_in_use: '此角色名称 {{name}} 已被使用',
+ scope_exists: '作用域 ID {{scopeId}} 已添加到此角色',
+ user_exists: '用户 ID {{userId}} 已添加到此角色',
+ default_role_missing: '某些默认角色名称在数据库中不存在,请确保先创建角色',
+ internal_role_violation:
+ '你可能正在尝试更新或删除 Logto 禁止的内部角色。如果你要创建新角色,请尝试使用不以“#internal:”开头的名称。',
+};
+
+export default role;
diff --git a/packages/phrases/src/locales/zh-cn/errors/scope.ts b/packages/phrases/src/locales/zh-cn/errors/scope.ts
new file mode 100644
index 000000000..1bc1c3092
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/scope.ts
@@ -0,0 +1,6 @@
+const scope = {
+ name_exists: '此作用域名称 {{name}} 已被使用',
+ name_with_space: '作用域名称不能包含任何空格。',
+};
+
+export default scope;
diff --git a/packages/phrases/src/locales/zh-cn/errors/session.ts b/packages/phrases/src/locales/zh-cn/errors/session.ts
new file mode 100644
index 000000000..2cc5cc70d
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/session.ts
@@ -0,0 +1,20 @@
+const session = {
+ not_found: '未找到会话。请返回并重新登录。',
+ invalid_credentials: '账号或密码错误,请重新输入。',
+ invalid_sign_in_method: '当前登录方式不可用',
+ invalid_connector_id: '找不到 ID 为 {{connectorId}} 的可用连接器。',
+ insufficient_info: '登录信息缺失,请检查你的输入。',
+ connector_id_mismatch: '传入的连接器 ID 与 session 中保存的记录不一致',
+ connector_session_not_found: '无法找到连接器登录信息,请尝试重新登录。',
+ verification_session_not_found: '验证失败,请重新验证。',
+ verification_expired: '当前页面已超时。为确保你的账号安全,请重新验证。',
+ unauthorized: '请先登录',
+ unsupported_prompt_name: '不支持的 prompt name',
+ forgot_password_not_enabled: '忘记密码功能没有开启。',
+ verification_failed: '验证失败,请重新验证。',
+ connector_validation_session_not_found: '找不到连接器用于验证 token 的信息。',
+ identifier_not_found: '找不到用户标识符。请返回并重新登录。',
+ interaction_not_found: '找不到交互会话。请返回并重新开始会话。',
+};
+
+export default session;
diff --git a/packages/phrases/src/locales/zh-cn/errors/sign-in-experiences.ts b/packages/phrases/src/locales/zh-cn/errors/sign-in-experiences.ts
new file mode 100644
index 000000000..c303cde44
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/sign-in-experiences.ts
@@ -0,0 +1,15 @@
+const sign_in_experiences = {
+ empty_content_url_of_terms_of_use: '你启用了“使用条款”,请添加使用条款 URL。',
+ empty_social_connectors: '你启用了社交登录的方式。请至少选择一个社交连接器。',
+ enabled_connector_not_found: '未找到已启用的 {{type}} 连接器',
+ not_one_and_only_one_primary_sign_in_method: '主要的登录方式必须有且仅有一个,请检查你的输入。',
+ username_requires_password: '必须为用户名注册标识符启用设置密码。',
+ passwordless_requires_verify: '必须为电子邮件/电话注册标识符启用验证。',
+ miss_sign_up_identifier_in_sign_in: '登录方法必须包含注册标识符。',
+ password_sign_in_must_be_enabled: '必须在注册中要求设置密码时启用密码登录。',
+ code_sign_in_must_be_enabled: '必须在注册中不要求设置密码时启用验证码登录。',
+ unsupported_default_language: '{{language}} 无法选择为默认语言。',
+ at_least_one_authentication_factor: '至少要选择一个登录要素',
+};
+
+export default sign_in_experiences;
diff --git a/packages/phrases/src/locales/zh-cn/errors/storage.ts b/packages/phrases/src/locales/zh-cn/errors/storage.ts
new file mode 100644
index 000000000..cd18a083e
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/storage.ts
@@ -0,0 +1,7 @@
+const storage = {
+ not_configured: '未配置存储提供程序。',
+ missing_parameter: '存储提供程序缺少参数 {{parameter}}。',
+ upload_error: '无法将文件上传到存储提供程序。',
+};
+
+export default storage;
diff --git a/packages/phrases/src/locales/zh-cn/errors/swagger.ts b/packages/phrases/src/locales/zh-cn/errors/swagger.ts
new file mode 100644
index 000000000..f3d1b0572
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/swagger.ts
@@ -0,0 +1,6 @@
+const swagger = {
+ invalid_zod_type: '无效的 Zod 类型,请检查路由 guard 配置。',
+ not_supported_zod_type_for_params: '请求参数不支持的 Zod 类型,请检查路由 guard 配置。',
+};
+
+export default swagger;
diff --git a/packages/phrases/src/locales/zh-cn/errors/user.ts b/packages/phrases/src/locales/zh-cn/errors/user.ts
new file mode 100644
index 000000000..6d8ef4216
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/user.ts
@@ -0,0 +1,32 @@
+const user = {
+ username_already_in_use: '该用户名已被使用。',
+ email_already_in_use: '该邮箱地址已被使用。',
+ phone_already_in_use: '该手机号码已被使用。',
+ invalid_email: '邮箱地址不正确。',
+ invalid_phone: '手机号码不正确。',
+ email_not_exist: '邮箱地址尚未注册。',
+ phone_not_exist: '手机号码尚未注册。',
+ identity_not_exist: '该社交帐号尚未注册。',
+ identity_already_in_use: '该社交帐号已被注册。',
+ social_account_exists_in_profile: '你已绑定当前社交账号,无需重复操作。',
+ cannot_delete_self: '无法删除自己的账户。',
+ sign_up_method_not_enabled: '注册方式尚未启用。',
+ sign_in_method_not_enabled: '登录方式尚未启用。',
+ same_password: '为确保账户安全,新密码不能与旧密码一致。',
+ password_required_in_profile: '请设置登录密码。',
+ new_password_required_in_profile: '请设置新密码。',
+ password_exists_in_profile: '当前用户已设置密码,无需重复操作。',
+ username_required_in_profile: '请设置用户名。',
+ username_exists_in_profile: '当前用户已设置用户名,无需重复操作。',
+ email_required_in_profile: '请绑定邮箱地址',
+ email_exists_in_profile: '当前用户已绑定邮箱,无需重复操作。',
+ phone_required_in_profile: '请绑定手机号码。',
+ phone_exists_in_profile: '当前用户已绑定手机号,无需重复操作。',
+ email_or_phone_required_in_profile: '请绑定邮箱地址或手机号码。',
+ suspended: '账号已被禁用。',
+ user_not_exist: '未找到与 {{identifier}} 相关联的用户。',
+ missing_profile: '请于登录时提供必要的用户补充信息。',
+ role_exists: '角色 ID {{roleId}} 已添加到此用户',
+};
+
+export default user;
diff --git a/packages/phrases/src/locales/zh-cn/errors/verification-code.ts b/packages/phrases/src/locales/zh-cn/errors/verification-code.ts
new file mode 100644
index 000000000..915b32b5d
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/errors/verification-code.ts
@@ -0,0 +1,11 @@
+const verification_code = {
+ phone_email_empty: '手机号与邮箱地址均为空',
+ not_found: '验证码不存在,请先请求发送验证码',
+ phone_mismatch: '手机号码不匹配,请尝试请求新的验证码。',
+ email_mismatch: '邮箱地址不匹配,请尝试请求新的验证码。',
+ code_mismatch: '验证码不正确',
+ expired: '验证码已过期,请尝试请求新的验证码。',
+ exceed_max_try: '超过最大验证次数,请尝试请求新的验证码。',
+};
+
+export default verification_code;
diff --git a/packages/phrases/src/locales/zh-cn/index.ts b/packages/phrases/src/locales/zh-cn/index.ts
index 5003a7a44..7c1dee0b5 100644
--- a/packages/phrases/src/locales/zh-cn/index.ts
+++ b/packages/phrases/src/locales/zh-cn/index.ts
@@ -1,6 +1,6 @@
import type { LocalePhrase } from '../../types.js';
-import errors from './errors.js';
+import errors from './errors/index.js';
import translation from './translation/index.js';
const zhCN: LocalePhrase = Object.freeze({
diff --git a/packages/phrases/src/locales/zh-cn/translation/admin-console/index.ts b/packages/phrases/src/locales/zh-cn/translation/admin-console/index.ts
index 13e6bd61c..0d8d4d9f9 100644
--- a/packages/phrases/src/locales/zh-cn/translation/admin-console/index.ts
+++ b/packages/phrases/src/locales/zh-cn/translation/admin-console/index.ts
@@ -19,7 +19,7 @@ import profile from './profile.js';
import role_details from './role-details.js';
import roles from './roles.js';
import session_expired from './session-expired.js';
-import sign_in_exp from './sign-in-exp.js';
+import sign_in_exp from './sign-in-exp/index.js';
import tab_sections from './tab-sections.js';
import tabs from './tabs.js';
import user_details from './user-details.js';
diff --git a/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp.ts b/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp.ts
deleted file mode 100644
index e8c2dcc7c..000000000
--- a/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp.ts
+++ /dev/null
@@ -1,171 +0,0 @@
-const sign_in_exp = {
- page_title: '登录体验',
- title: '登录体验',
- description: '自定义登录界面,并实时预览真实效果',
- tabs: {
- branding: '品牌',
- sign_up_and_sign_in: '注册与登录',
- others: '其它',
- },
- welcome: {
- title: '自定义登录体验',
- description: '通过首次登录设置快速入门。本指南将带领你完成所有必要的设置。',
- get_started: '开始',
- apply_remind: '请注意,登录体验将会应用到当前帐户下的所有应用。',
- },
- color: {
- title: '颜色',
- primary_color: '品牌颜色',
- dark_primary_color: '品牌颜色 (深色)',
- dark_mode: '开启深色模式',
- dark_mode_description:
- '基于品牌颜色和 Logto 的算法,应用将会有一个自动生成的深色模式。当然,你可以自定义和修改。',
- dark_mode_reset_tip: '基于品牌颜色,重新生成深色模式颜色。',
- reset: '重新生成',
- },
- branding: {
- title: '品牌定制区',
- ui_style: '样式',
- favicon: '浏览器地址栏图标',
- logo_image_url: 'Logo 图片 URL',
- logo_image_url_placeholder: 'https://your.cdn.domain/logo.png',
- dark_logo_image_url: 'Logo 图片 URL (深色)',
- dark_logo_image_url_placeholder: 'https://your.cdn.domain/logo-dark.png',
- logo_image: 'Logo 图片',
- dark_logo_image: 'Logo 图片(深色)',
- logo_image_error: '应用 Logo:{{error}}',
- favicon_error: 'Favicon:{{error}}',
- },
- custom_css: {
- title: '自定义 CSS',
- css_code_editor_title: '自定义 CSS 个性化你的用户界面',
- css_code_editor_description1: '查看自定义 CSS 的例子。',
- css_code_editor_description2: '{{link}}',
- css_code_editor_description_link_content: '了解更多',
- css_code_editor_content_placeholder:
- '输入 CSS 代码,修改颜色、字体、组件样式、布局,定制你的登录、注册、忘记密码等页面。充分发挥创造力,让你的用户界面脱颖而出。',
- },
- sign_up_and_sign_in: {
- identifiers_email: '邮件地址',
- identifiers_phone: '手机号码',
- identifiers_username: '用户名',
- identifiers_email_or_sms: '邮件地址或手机号码',
- identifiers_none: '无',
- and: '与',
- or: '或',
- sign_up: {
- title: '注册',
- sign_up_identifier: '注册标识',
- identifier_description: '创建账户时你需要设定注册标识。这些信息在用户登录时,属于必选项。',
- sign_up_authentication: '注册身份认证设置',
- authentication_description: '注册时,你的用户将要完成以下所有勾选的任务。',
- set_a_password_option: '创建密码',
- verify_at_sign_up_option: '注册时验证身份',
- social_only_creation_description: '(仅对社交注册用户适用)',
- },
- sign_in: {
- title: '登录',
- sign_in_identifier_and_auth: '登录标识和身份认证设置',
- description: '用户可以使用任何可用的选项进行登录。拖拽选项即可调整页面布局。',
- add_sign_in_method: '添加登录方式',
- password_auth: '密码',
- verification_code_auth: '验证码',
- auth_swap_tip: '交换以下选项的位置即可设定它们在用户登录流程中出现的先后。',
- require_auth_factor: '请至少选择一种认证方式。',
- },
- social_sign_in: {
- title: '社交登录',
- social_sign_in: '社交登录',
- description: '你已设定特定的标识。用户在通过社交连接器注册时可能会被要求提供一个对应的标识。',
- add_social_connector: '添加社交连接器',
- set_up_hint: {
- not_in_list: '没有你想要的连接器?',
- set_up_more: '立即设置',
- go_to: '其他社交连接器。',
- },
- },
- tip: {
- set_a_password: '启用户名注册,必须设置密码。',
- verify_at_sign_up:
- '我们目前仅支持经过验证的邮件地址登录。如果没有验证,你的用户信息中可能出现大量无效电子邮件地址。',
- password_auth: '因注册设置里你启用了用户名密码标识。这个信息在用户登录时,属于必选项。',
- verification_code_auth:
- '因注册设置里你启用了验证码标识,验证码属于用户必选项。开启密码注册后,你可以选择关闭验证码登录。',
- delete_sign_in_method:
- '因注册设置里你启用了{{identifier}}标识。这些信息在用户登录时,属于必选项。',
- },
- },
- others: {
- terms_of_use: {
- title: '条款',
- terms_of_use: '使用条款 URL',
- terms_of_use_placeholder: 'https://your.terms.of.use/',
- privacy_policy: '隐私政策 URL',
- privacy_policy_placeholder: 'https://your.privacy.policy/',
- },
- languages: {
- title: '语言',
- enable_auto_detect: '开启语言自动适配',
- description:
- '基于用户自身的语言设定,产品将展示最符合用户使用习惯的语言。你可以为产品添加翻译内容、选择语言代码和设定自定义语言,来延展产品的本地化需求。',
- manage_language: '管理语言',
- default_language: '默认语言',
- default_language_description_auto:
- '语言自动适配已开启,当用户设定的语言无法匹配时,他们将看到默认语言。',
- default_language_description_fixed:
- '语言自动适配已关闭,你的应用将只展示默认语言。开启自动适配即可定制语言。',
- },
- manage_language: {
- title: '管理语言',
- subtitle: '你可以为产品添加翻译内容、选择语言代码和设定自定义语言,来延展产品的本地化需求。',
- add_language: '添加语言',
- logto_provided: 'Logto 提供',
- key: '键名',
- logto_source_values: 'Logto 源语言',
- custom_values: '翻译文本',
- clear_all_tip: '清空',
- unsaved_description: '离开页面前,记得保存你本次做的内容修改。',
- deletion_tip: '删除',
- deletion_title: '你确定你要删除新加的语言吗?',
- deletion_description: '删除后,你的用户将无法使用该语言查看内容。',
- default_language_deletion_title: '你无法删除默认语言',
- default_language_deletion_description:
- '你已设置{{language}}为你的默认语言,你无法删除默认语言。',
- },
- advanced_options: {
- title: '高级选项',
- enable_user_registration: '启用用户注册',
- enable_user_registration_description:
- '开启或关闭用户注册功能。一旦关闭,用户将无法通过登录界面自行注册账号,但管理员仍可通过管理控制台添加用户。',
- },
- },
- setup_warning: {
- no_connector_sms:
- '尚未设置 SMS 短信连接器。在完成该配置前,用户将无法通过此登录方式登录。{{link}}连接器。',
- no_connector_email:
- '尚未设置电子邮件连接器。在完成该配置前,用户将无法通过此登录方式登录。{{link}}连接器。',
- no_connector_social:
- '尚未设置社交连接器。在完成该配置前,用户将无法通过此登录方式登录。{{link}}连接器。',
- no_added_social_connector: '你已经成功设置了一些社交连接器。点按「+」添加一些到你的登录体验。',
- setup_link: '立即设置',
- },
- save_alert: {
- description:
- '你正在进行登录注册设置的变更。当前你的所有用户会受到新设置的影响。确认保存该设置吗?',
- before: '设置前',
- after: '设置后',
- sign_up: '注册',
- sign_in: '登录',
- social: '社交',
- },
- preview: {
- title: '登录预览',
- live_preview: '实时预览',
- live_preview_tip: '保存以预览更改',
- native: '移动原生',
- desktop_web: '桌面网页',
- mobile_web: '移动网页',
- },
-};
-
-export default sign_in_exp;
diff --git a/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp/index.ts b/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp/index.ts
new file mode 100644
index 000000000..42d5eb2aa
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp/index.ts
@@ -0,0 +1,82 @@
+import others from './others.js';
+import sign_up_and_sign_in from './sign-up-and-sign-in.js';
+
+const sign_in_exp = {
+ page_title: '登录体验',
+ title: '登录体验',
+ description: '自定义登录界面,并实时预览真实效果',
+ tabs: {
+ branding: '品牌',
+ sign_up_and_sign_in: '注册与登录',
+ others: '其它',
+ },
+ welcome: {
+ title: '自定义登录体验',
+ description: '通过首次登录设置快速入门。本指南将带领你完成所有必要的设置。',
+ get_started: '开始',
+ apply_remind: '请注意,登录体验将会应用到当前帐户下的所有应用。',
+ },
+ color: {
+ title: '颜色',
+ primary_color: '品牌颜色',
+ dark_primary_color: '品牌颜色 (深色)',
+ dark_mode: '开启深色模式',
+ dark_mode_description:
+ '基于品牌颜色和 Logto 的算法,应用将会有一个自动生成的深色模式。当然,你可以自定义和修改。',
+ dark_mode_reset_tip: '基于品牌颜色,重新生成深色模式颜色。',
+ reset: '重新生成',
+ },
+ branding: {
+ title: '品牌定制区',
+ ui_style: '样式',
+ favicon: '浏览器地址栏图标',
+ logo_image_url: 'Logo 图片 URL',
+ logo_image_url_placeholder: 'https://your.cdn.domain/logo.png',
+ dark_logo_image_url: 'Logo 图片 URL (深色)',
+ dark_logo_image_url_placeholder: 'https://your.cdn.domain/logo-dark.png',
+ logo_image: 'Logo 图片',
+ dark_logo_image: 'Logo 图片(深色)',
+ logo_image_error: '应用 Logo:{{error}}',
+ favicon_error: 'Favicon:{{error}}',
+ },
+ custom_css: {
+ title: '自定义 CSS',
+ css_code_editor_title: '自定义 CSS 个性化你的用户界面',
+ css_code_editor_description1: '查看自定义 CSS 的例子。',
+ css_code_editor_description2: '{{link}}',
+ css_code_editor_description_link_content: '了解更多',
+ css_code_editor_content_placeholder:
+ '输入 CSS 代码,修改颜色、字体、组件样式、布局,定制你的登录、注册、忘记密码等页面。充分发挥创造力,让你的用户界面脱颖而出。',
+ },
+ setup_warning: {
+ no_connector_sms:
+ '尚未设置 SMS 短信连接器。在完成该配置前,用户将无法通过此登录方式登录。{{link}}连接器。',
+ no_connector_email:
+ '尚未设置电子邮件连接器。在完成该配置前,用户将无法通过此登录方式登录。{{link}}连接器。',
+ no_connector_social:
+ '尚未设置社交连接器。在完成该配置前,用户将无法通过此登录方式登录。{{link}}连接器。',
+ no_added_social_connector: '你已经成功设置了一些社交连接器。点按「+」添加一些到你的登录体验。',
+ setup_link: '立即设置',
+ },
+ save_alert: {
+ description:
+ '你正在进行登录注册设置的变更。当前你的所有用户会受到新设置的影响。确认保存该设置吗?',
+ before: '设置前',
+ after: '设置后',
+ sign_up: '注册',
+ sign_in: '登录',
+ social: '社交',
+ },
+ preview: {
+ title: '登录预览',
+ live_preview: '实时预览',
+ live_preview_tip: '保存以预览更改',
+ native: '移动原生',
+ desktop_web: '桌面网页',
+ mobile_web: '移动网页',
+ },
+ others,
+ sign_up_and_sign_in,
+};
+
+export default sign_in_exp;
diff --git a/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp/others.ts b/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp/others.ts
new file mode 100644
index 000000000..899a146fd
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp/others.ts
@@ -0,0 +1,46 @@
+const others = {
+ terms_of_use: {
+ title: '条款',
+ terms_of_use: '使用条款 URL',
+ terms_of_use_placeholder: 'https://your.terms.of.use/',
+ privacy_policy: '隐私政策 URL',
+ privacy_policy_placeholder: 'https://your.privacy.policy/',
+ },
+ languages: {
+ title: '语言',
+ enable_auto_detect: '开启语言自动适配',
+ description:
+ '基于用户自身的语言设定,产品将展示最符合用户使用习惯的语言。你可以为产品添加翻译内容、选择语言代码和设定自定义语言,来延展产品的本地化需求。',
+ manage_language: '管理语言',
+ default_language: '默认语言',
+ default_language_description_auto:
+ '语言自动适配已开启,当用户设定的语言无法匹配时,他们将看到默认语言。',
+ default_language_description_fixed:
+ '语言自动适配已关闭,你的应用将只展示默认语言。开启自动适配即可定制语言。',
+ },
+ manage_language: {
+ title: '管理语言',
+ subtitle: '你可以为产品添加翻译内容、选择语言代码和设定自定义语言,来延展产品的本地化需求。',
+ add_language: '添加语言',
+ logto_provided: 'Logto 提供',
+ key: '键名',
+ logto_source_values: 'Logto 源语言',
+ custom_values: '翻译文本',
+ clear_all_tip: '清空',
+ unsaved_description: '离开页面前,记得保存你本次做的内容修改。',
+ deletion_tip: '删除',
+ deletion_title: '你确定你要删除新加的语言吗?',
+ deletion_description: '删除后,你的用户将无法使用该语言查看内容。',
+ default_language_deletion_title: '你无法删除默认语言',
+ default_language_deletion_description:
+ '你已设置{{language}}为你的默认语言,你无法删除默认语言。',
+ },
+ advanced_options: {
+ title: '高级选项',
+ enable_user_registration: '启用用户注册',
+ enable_user_registration_description:
+ '开启或关闭用户注册功能。一旦关闭,用户将无法通过登录界面自行注册账号,但管理员仍可通过管理控制台添加用户。',
+ },
+};
+
+export default others;
diff --git a/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts b/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts
new file mode 100644
index 000000000..dce856bba
--- /dev/null
+++ b/packages/phrases/src/locales/zh-cn/translation/admin-console/sign-in-exp/sign-up-and-sign-in.ts
@@ -0,0 +1,52 @@
+const sign_up_and_sign_in = {
+ identifiers_email: '邮件地址',
+ identifiers_phone: '手机号码',
+ identifiers_username: '用户名',
+ identifiers_email_or_sms: '邮件地址或手机号码',
+ identifiers_none: '无',
+ and: '与',
+ or: '或',
+ sign_up: {
+ title: '注册',
+ sign_up_identifier: '注册标识',
+ identifier_description: '创建账户时你需要设定注册标识。这些信息在用户登录时,属于必选项。',
+ sign_up_authentication: '注册身份认证设置',
+ authentication_description: '注册时,你的用户将要完成以下所有勾选的任务。',
+ set_a_password_option: '创建密码',
+ verify_at_sign_up_option: '注册时验证身份',
+ social_only_creation_description: '(仅对社交注册用户适用)',
+ },
+ sign_in: {
+ title: '登录',
+ sign_in_identifier_and_auth: '登录标识和身份认证设置',
+ description: '用户可以使用任何可用的选项进行登录。拖拽选项即可调整页面布局。',
+ add_sign_in_method: '添加登录方式',
+ password_auth: '密码',
+ verification_code_auth: '验证码',
+ auth_swap_tip: '交换以下选项的位置即可设定它们在用户登录流程中出现的先后。',
+ require_auth_factor: '请至少选择一种认证方式。',
+ },
+ social_sign_in: {
+ title: '社交登录',
+ social_sign_in: '社交登录',
+ description: '你已设定特定的标识。用户在通过社交连接器注册时可能会被要求提供一个对应的标识。',
+ add_social_connector: '添加社交连接器',
+ set_up_hint: {
+ not_in_list: '没有你想要的连接器?',
+ set_up_more: '立即设置',
+ go_to: '其他社交连接器。',
+ },
+ },
+ tip: {
+ set_a_password: '启用户名注册,必须设置密码。',
+ verify_at_sign_up:
+ '我们目前仅支持经过验证的邮件地址登录。如果没有验证,你的用户信息中可能出现大量无效电子邮件地址。',
+ password_auth: '因注册设置里你启用了用户名密码标识。这个信息在用户登录时,属于必选项。',
+ verification_code_auth:
+ '因注册设置里你启用了验证码标识,验证码属于用户必选项。开启密码注册后,你可以选择关闭验证码登录。',
+ delete_sign_in_method:
+ '因注册设置里你启用了{{identifier}}标识。这些信息在用户登录时,属于必选项。',
+ },
+};
+
+export default sign_up_and_sign_in;