judu/ex-egopublic Fork
⑂ 8ea453c
Commits
⬇ Clone ▾
git clone https://git.rickub.com/judu/ex-ego.git
git clone ssh://git@rickub.com/judu/ex-ego.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP

feat(webauthn): chaînes i18n de la page Sécurité (fr/en/de/pt-br)Unverified

Julien Durillon committed 2026-08-26T14:03:51+02:00 Browse files
8ea453c parent: a3b8637
modified src/i18n.rs +136 -0
@@ -353,6 +353,38 @@ pub struct Tr {
353353 pub prio_normal: &'static str,
354354 pub prio_high: &'static str,
355355 pub prio_high_aria: &'static str,
356+ // ─── sécurité (page mot de passe + clés d'accès WebAuthn) ───
357+ pub title_security: &'static str,
358+ /// Carte d'entrée depuis Réglages (gabarit « Mes saisies »).
359+ pub security_card_desc: &'static str,
360+ pub security_hint: &'static str,
361+ pub passkeys_title: &'static str,
362+ pub passkeys_hint: &'static str,
363+ pub passkey_none: &'static str,
364+ pub passkey_name_label: &'static str,
365+ pub passkey_name_ph: &'static str,
366+ /// Pourquoi le mot de passe est redemandé pour ajouter/supprimer une clé.
367+ pub passkey_password_why: &'static str,
368+ pub passkey_add: &'static str,
369+ /// p2 : jour+mois (`period::day_month`) puis année — « Ajoutée le 6 août 2026 ».
370+ pub passkey_added_on_pat: &'static str,
371+ pub passkey_rename_aria: &'static str,
372+ pub passkey_delete: &'static str,
373+ pub passkey_delete_confirm: &'static str,
374+ pub passkey_delete_why: &'static str,
375+ /// Retombée zéro-JS du formulaire d'ajout — WebAuthn n'existe qu'en JS.
376+ pub passkey_js_required: &'static str,
377+ /// WEBAUTHN_ORIGIN absente mais des clés existent encore en base.
378+ pub passkey_disabled_note: &'static str,
379+ pub passkey_sign_in: &'static str,
380+ pub toast_passkey_added: &'static str,
381+ pub toast_passkey_renamed: &'static str,
382+ pub toast_passkey_deleted: &'static str,
383+ pub err_passkey_failed: &'static str,
384+ pub err_passkey_exists: &'static str,
385+ pub err_passkey_name_empty: &'static str,
386+ pub err_passkey_login: &'static str,
387+ pub back_settings: &'static str,
356388 // ─── erreurs ───
357389 pub err_404: &'static str,
358390 pub err_csrf: &'static str,
@@ -655,6 +687,32 @@ pub static FR: Tr = Tr {
655687 prio_normal: "Normale",
656688 prio_high: "Haute",
657689 prio_high_aria: "Priorité haute",
690+ title_security: "Sécurité",
691+ security_card_desc: "Mot de passe et clés d'accès",
692+ security_hint: "Ton mot de passe reste toujours valable — les clés d'accès s'y ajoutent, elles ne le remplacent pas.",
693+ passkeys_title: "Clés d'accès",
694+ passkeys_hint: "Connecte-toi sans mot de passe avec une clé de sécurité (Yubikey) ou un gestionnaire (1Password), déverrouillés par code ou empreinte.",
695+ passkey_none: "Aucune clé pour l'instant.",
696+ passkey_name_label: "Nom de la clé",
697+ passkey_name_ph: "Yubikey du bureau",
698+ passkey_password_why: "Ton mot de passe confirme que c'est bien toi : la session dure six mois.",
699+ passkey_add: "Ajouter une clé",
700+ passkey_added_on_pat: "Ajoutée le {} {}",
701+ passkey_rename_aria: "Renommer la clé",
702+ passkey_delete: "Supprimer",
703+ passkey_delete_confirm: "Confirmer la suppression",
704+ passkey_delete_why: "Le mot de passe est demandé pour supprimer une clé.",
705+ passkey_js_required: "L'ajout d'une clé demande JavaScript et un navigateur compatible.",
706+ passkey_disabled_note: "La connexion par clé est désactivée sur cette instance ; tu peux encore supprimer les clés enregistrées.",
707+ passkey_sign_in: "Se connecter avec une clé",
708+ toast_passkey_added: "Clé ajoutée",
709+ toast_passkey_renamed: "Clé renommée",
710+ toast_passkey_deleted: "Clé supprimée",
711+ err_passkey_failed: "L'enregistrement de la clé a échoué. Réessaie.",
712+ err_passkey_exists: "Cette clé est déjà enregistrée.",
713+ err_passkey_name_empty: "Donne un nom à la clé.",
714+ err_passkey_login: "La connexion par clé a échoué. Réessaie, ou connecte-toi avec ton mot de passe.",
715+ back_settings: "← Retour aux réglages",
658716 err_404: "Page introuvable.",
659717 err_csrf: "Formulaire expiré, veuillez réessayer.",
660718 err_500: "Erreur interne.",
@@ -928,6 +986,32 @@ pub static EN: Tr = Tr {
928986 prio_normal: "Normal",
929987 prio_high: "High",
930988 prio_high_aria: "High priority",
989+ title_security: "Security",
990+ security_card_desc: "Password and passkeys",
991+ security_hint: "Your password always keeps working — passkeys come on top of it, they don't replace it.",
992+ passkeys_title: "Passkeys",
993+ passkeys_hint: "Sign in without a password using a security key (Yubikey) or a manager (1Password), unlocked with a PIN or fingerprint.",
994+ passkey_none: "No passkey yet.",
995+ passkey_name_label: "Passkey name",
996+ passkey_name_ph: "Office Yubikey",
997+ passkey_password_why: "Your password confirms it's really you: the session lasts six months.",
998+ passkey_add: "Add a passkey",
999+ passkey_added_on_pat: "Added {} {}",
1000+ passkey_rename_aria: "Rename the passkey",
1001+ passkey_delete: "Delete",
1002+ passkey_delete_confirm: "Confirm deletion",
1003+ passkey_delete_why: "Your password is required to delete a passkey.",
1004+ passkey_js_required: "Adding a passkey requires JavaScript and a compatible browser.",
1005+ passkey_disabled_note: "Passkey sign-in is disabled on this instance; you can still delete the registered passkeys.",
1006+ passkey_sign_in: "Sign in with a passkey",
1007+ toast_passkey_added: "Passkey added",
1008+ toast_passkey_renamed: "Passkey renamed",
1009+ toast_passkey_deleted: "Passkey deleted",
1010+ err_passkey_failed: "Registering the passkey failed. Try again.",
1011+ err_passkey_exists: "This passkey is already registered.",
1012+ err_passkey_name_empty: "Give the passkey a name.",
1013+ err_passkey_login: "Passkey sign-in failed. Try again, or sign in with your password.",
1014+ back_settings: "← Back to settings",
9311015 err_404: "Page not found.",
9321016 err_csrf: "The form expired, please try again.",
9331017 err_500: "Internal error.",
@@ -1201,6 +1285,32 @@ pub static DE: Tr = Tr {
12011285 prio_normal: "Normal",
12021286 prio_high: "Hoch",
12031287 prio_high_aria: "Hohe Priorität",
1288+ title_security: "Sicherheit",
1289+ security_card_desc: "Passwort und Passkeys",
1290+ security_hint: "Dein Passwort gilt weiterhin — Passkeys kommen dazu, sie ersetzen es nicht.",
1291+ passkeys_title: "Passkeys",
1292+ passkeys_hint: "Melde dich ohne Passwort an, mit einem Sicherheitsschlüssel (Yubikey) oder einem Manager (1Password), entsperrt per PIN oder Fingerabdruck.",
1293+ passkey_none: "Noch kein Passkey.",
1294+ passkey_name_label: "Name des Passkeys",
1295+ passkey_name_ph: "Yubikey im Büro",
1296+ passkey_password_why: "Dein Passwort bestätigt, dass du es wirklich bist: die Sitzung hält sechs Monate.",
1297+ passkey_add: "Passkey hinzufügen",
1298+ passkey_added_on_pat: "Hinzugefügt am {} {}",
1299+ passkey_rename_aria: "Passkey umbenennen",
1300+ passkey_delete: "Löschen",
1301+ passkey_delete_confirm: "Löschen bestätigen",
1302+ passkey_delete_why: "Zum Löschen eines Passkeys wird das Passwort verlangt.",
1303+ passkey_js_required: "Einen Passkey hinzuzufügen braucht JavaScript und einen kompatiblen Browser.",
1304+ passkey_disabled_note: "Die Anmeldung per Passkey ist auf dieser Instanz abgeschaltet; die registrierten Passkeys kannst du weiterhin löschen.",
1305+ passkey_sign_in: "Mit Passkey anmelden",
1306+ toast_passkey_added: "Passkey hinzugefügt",
1307+ toast_passkey_renamed: "Passkey umbenannt",
1308+ toast_passkey_deleted: "Passkey gelöscht",
1309+ err_passkey_failed: "Die Registrierung des Passkeys ist fehlgeschlagen. Versuch es nochmal.",
1310+ err_passkey_exists: "Dieser Passkey ist schon registriert.",
1311+ err_passkey_name_empty: "Gib dem Passkey einen Namen.",
1312+ err_passkey_login: "Die Anmeldung per Passkey ist fehlgeschlagen. Versuch es nochmal oder melde dich mit deinem Passwort an.",
1313+ back_settings: "← Zurück zu den Einstellungen",
12041314 err_404: "Seite nicht gefunden.",
12051315 err_csrf: "Das Formular ist abgelaufen, bitte erneut versuchen.",
12061316 err_500: "Interner Fehler.",
@@ -1474,6 +1584,32 @@ pub static PT_BR: Tr = Tr {
14741584 prio_normal: "Normal",
14751585 prio_high: "Alta",
14761586 prio_high_aria: "Prioridade alta",
1587+ title_security: "Segurança",
1588+ security_card_desc: "Senha e chaves de acesso",
1589+ security_hint: "Sua senha continua valendo — as chaves de acesso se somam a ela, não a substituem.",
1590+ passkeys_title: "Chaves de acesso",
1591+ passkeys_hint: "Entre sem senha com uma chave de segurança (Yubikey) ou um gerenciador (1Password), desbloqueados por PIN ou digital.",
1592+ passkey_none: "Nenhuma chave por enquanto.",
1593+ passkey_name_label: "Nome da chave",
1594+ passkey_name_ph: "Yubikey do escritório",
1595+ passkey_password_why: "Sua senha confirma que é você mesmo: a sessão dura seis meses.",
1596+ passkey_add: "Adicionar uma chave",
1597+ passkey_added_on_pat: "Adicionada em {} de {}",
1598+ passkey_rename_aria: "Renomear a chave",
1599+ passkey_delete: "Excluir",
1600+ passkey_delete_confirm: "Confirmar a exclusão",
1601+ passkey_delete_why: "A senha é pedida para excluir uma chave.",
1602+ passkey_js_required: "Adicionar uma chave exige JavaScript e um navegador compatível.",
1603+ passkey_disabled_note: "A entrada por chave está desativada nesta instância; você ainda pode excluir as chaves registradas.",
1604+ passkey_sign_in: "Entrar com uma chave",
1605+ toast_passkey_added: "Chave adicionada",
1606+ toast_passkey_renamed: "Chave renomeada",
1607+ toast_passkey_deleted: "Chave excluída",
1608+ err_passkey_failed: "O registro da chave falhou. Tente de novo.",
1609+ err_passkey_exists: "Esta chave já está registrada.",
1610+ err_passkey_name_empty: "Dê um nome à chave.",
1611+ err_passkey_login: "A entrada por chave falhou. Tente de novo, ou entre com sua senha.",
1612+ back_settings: "← Voltar aos ajustes",
14771613 err_404: "Página não encontrada.",
14781614 err_csrf: "O formulário expirou, tente de novo.",
14791615 err_500: "Erro interno.",
@@ -353,6 +353,38 @@ pub struct Tr {
353 pub prio_normal: &'static str,353 pub prio_normal: &'static str,
354 pub prio_high: &'static str,354 pub prio_high: &'static str,
355 pub prio_high_aria: &'static str,355 pub prio_high_aria: &'static str,
356+ // ─── sécurité (page mot de passe + clés d'accès WebAuthn) ───
357+ pub title_security: &'static str,
358+ /// Carte d'entrée depuis Réglages (gabarit « Mes saisies »).
359+ pub security_card_desc: &'static str,
360+ pub security_hint: &'static str,
361+ pub passkeys_title: &'static str,
362+ pub passkeys_hint: &'static str,
363+ pub passkey_none: &'static str,
364+ pub passkey_name_label: &'static str,
365+ pub passkey_name_ph: &'static str,
366+ /// Pourquoi le mot de passe est redemandé pour ajouter/supprimer une clé.
367+ pub passkey_password_why: &'static str,
368+ pub passkey_add: &'static str,
369+ /// p2 : jour+mois (`period::day_month`) puis année — « Ajoutée le 6 août 2026 ».
370+ pub passkey_added_on_pat: &'static str,
371+ pub passkey_rename_aria: &'static str,
372+ pub passkey_delete: &'static str,
373+ pub passkey_delete_confirm: &'static str,
374+ pub passkey_delete_why: &'static str,
375+ /// Retombée zéro-JS du formulaire d'ajout — WebAuthn n'existe qu'en JS.
376+ pub passkey_js_required: &'static str,
377+ /// WEBAUTHN_ORIGIN absente mais des clés existent encore en base.
378+ pub passkey_disabled_note: &'static str,
379+ pub passkey_sign_in: &'static str,
380+ pub toast_passkey_added: &'static str,
381+ pub toast_passkey_renamed: &'static str,
382+ pub toast_passkey_deleted: &'static str,
383+ pub err_passkey_failed: &'static str,
384+ pub err_passkey_exists: &'static str,
385+ pub err_passkey_name_empty: &'static str,
386+ pub err_passkey_login: &'static str,
387+ pub back_settings: &'static str,
356 // ─── erreurs ───388 // ─── erreurs ───
357 pub err_404: &'static str,389 pub err_404: &'static str,
358 pub err_csrf: &'static str,390 pub err_csrf: &'static str,
@@ -655,6 +687,32 @@ pub static FR: Tr = Tr {
655 prio_normal: "Normale",687 prio_normal: "Normale",
656 prio_high: "Haute",688 prio_high: "Haute",
657 prio_high_aria: "Priorité haute",689 prio_high_aria: "Priorité haute",
690+ title_security: "Sécurité",
691+ security_card_desc: "Mot de passe et clés d'accès",
692+ security_hint: "Ton mot de passe reste toujours valable — les clés d'accès s'y ajoutent, elles ne le remplacent pas.",
693+ passkeys_title: "Clés d'accès",
694+ passkeys_hint: "Connecte-toi sans mot de passe avec une clé de sécurité (Yubikey) ou un gestionnaire (1Password), déverrouillés par code ou empreinte.",
695+ passkey_none: "Aucune clé pour l'instant.",
696+ passkey_name_label: "Nom de la clé",
697+ passkey_name_ph: "Yubikey du bureau",
698+ passkey_password_why: "Ton mot de passe confirme que c'est bien toi : la session dure six mois.",
699+ passkey_add: "Ajouter une clé",
700+ passkey_added_on_pat: "Ajoutée le {} {}",
701+ passkey_rename_aria: "Renommer la clé",
702+ passkey_delete: "Supprimer",
703+ passkey_delete_confirm: "Confirmer la suppression",
704+ passkey_delete_why: "Le mot de passe est demandé pour supprimer une clé.",
705+ passkey_js_required: "L'ajout d'une clé demande JavaScript et un navigateur compatible.",
706+ passkey_disabled_note: "La connexion par clé est désactivée sur cette instance ; tu peux encore supprimer les clés enregistrées.",
707+ passkey_sign_in: "Se connecter avec une clé",
708+ toast_passkey_added: "Clé ajoutée",
709+ toast_passkey_renamed: "Clé renommée",
710+ toast_passkey_deleted: "Clé supprimée",
711+ err_passkey_failed: "L'enregistrement de la clé a échoué. Réessaie.",
712+ err_passkey_exists: "Cette clé est déjà enregistrée.",
713+ err_passkey_name_empty: "Donne un nom à la clé.",
714+ err_passkey_login: "La connexion par clé a échoué. Réessaie, ou connecte-toi avec ton mot de passe.",
715+ back_settings: "← Retour aux réglages",
658 err_404: "Page introuvable.",716 err_404: "Page introuvable.",
659 err_csrf: "Formulaire expiré, veuillez réessayer.",717 err_csrf: "Formulaire expiré, veuillez réessayer.",
660 err_500: "Erreur interne.",718 err_500: "Erreur interne.",
@@ -928,6 +986,32 @@ pub static EN: Tr = Tr {
928 prio_normal: "Normal",986 prio_normal: "Normal",
929 prio_high: "High",987 prio_high: "High",
930 prio_high_aria: "High priority",988 prio_high_aria: "High priority",
989+ title_security: "Security",
990+ security_card_desc: "Password and passkeys",
991+ security_hint: "Your password always keeps working — passkeys come on top of it, they don't replace it.",
992+ passkeys_title: "Passkeys",
993+ passkeys_hint: "Sign in without a password using a security key (Yubikey) or a manager (1Password), unlocked with a PIN or fingerprint.",
994+ passkey_none: "No passkey yet.",
995+ passkey_name_label: "Passkey name",
996+ passkey_name_ph: "Office Yubikey",
997+ passkey_password_why: "Your password confirms it's really you: the session lasts six months.",
998+ passkey_add: "Add a passkey",
999+ passkey_added_on_pat: "Added {} {}",
1000+ passkey_rename_aria: "Rename the passkey",
1001+ passkey_delete: "Delete",
1002+ passkey_delete_confirm: "Confirm deletion",
1003+ passkey_delete_why: "Your password is required to delete a passkey.",
1004+ passkey_js_required: "Adding a passkey requires JavaScript and a compatible browser.",
1005+ passkey_disabled_note: "Passkey sign-in is disabled on this instance; you can still delete the registered passkeys.",
1006+ passkey_sign_in: "Sign in with a passkey",
1007+ toast_passkey_added: "Passkey added",
1008+ toast_passkey_renamed: "Passkey renamed",
1009+ toast_passkey_deleted: "Passkey deleted",
1010+ err_passkey_failed: "Registering the passkey failed. Try again.",
1011+ err_passkey_exists: "This passkey is already registered.",
1012+ err_passkey_name_empty: "Give the passkey a name.",
1013+ err_passkey_login: "Passkey sign-in failed. Try again, or sign in with your password.",
1014+ back_settings: "← Back to settings",
931 err_404: "Page not found.",1015 err_404: "Page not found.",
932 err_csrf: "The form expired, please try again.",1016 err_csrf: "The form expired, please try again.",
933 err_500: "Internal error.",1017 err_500: "Internal error.",
@@ -1201,6 +1285,32 @@ pub static DE: Tr = Tr {
1201 prio_normal: "Normal",1285 prio_normal: "Normal",
1202 prio_high: "Hoch",1286 prio_high: "Hoch",
1203 prio_high_aria: "Hohe Priorität",1287 prio_high_aria: "Hohe Priorität",
1288+ title_security: "Sicherheit",
1289+ security_card_desc: "Passwort und Passkeys",
1290+ security_hint: "Dein Passwort gilt weiterhin — Passkeys kommen dazu, sie ersetzen es nicht.",
1291+ passkeys_title: "Passkeys",
1292+ passkeys_hint: "Melde dich ohne Passwort an, mit einem Sicherheitsschlüssel (Yubikey) oder einem Manager (1Password), entsperrt per PIN oder Fingerabdruck.",
1293+ passkey_none: "Noch kein Passkey.",
1294+ passkey_name_label: "Name des Passkeys",
1295+ passkey_name_ph: "Yubikey im Büro",
1296+ passkey_password_why: "Dein Passwort bestätigt, dass du es wirklich bist: die Sitzung hält sechs Monate.",
1297+ passkey_add: "Passkey hinzufügen",
1298+ passkey_added_on_pat: "Hinzugefügt am {} {}",
1299+ passkey_rename_aria: "Passkey umbenennen",
1300+ passkey_delete: "Löschen",
1301+ passkey_delete_confirm: "Löschen bestätigen",
1302+ passkey_delete_why: "Zum Löschen eines Passkeys wird das Passwort verlangt.",
1303+ passkey_js_required: "Einen Passkey hinzuzufügen braucht JavaScript und einen kompatiblen Browser.",
1304+ passkey_disabled_note: "Die Anmeldung per Passkey ist auf dieser Instanz abgeschaltet; die registrierten Passkeys kannst du weiterhin löschen.",
1305+ passkey_sign_in: "Mit Passkey anmelden",
1306+ toast_passkey_added: "Passkey hinzugefügt",
1307+ toast_passkey_renamed: "Passkey umbenannt",
1308+ toast_passkey_deleted: "Passkey gelöscht",
1309+ err_passkey_failed: "Die Registrierung des Passkeys ist fehlgeschlagen. Versuch es nochmal.",
1310+ err_passkey_exists: "Dieser Passkey ist schon registriert.",
1311+ err_passkey_name_empty: "Gib dem Passkey einen Namen.",
1312+ err_passkey_login: "Die Anmeldung per Passkey ist fehlgeschlagen. Versuch es nochmal oder melde dich mit deinem Passwort an.",
1313+ back_settings: "← Zurück zu den Einstellungen",
1204 err_404: "Seite nicht gefunden.",1314 err_404: "Seite nicht gefunden.",
1205 err_csrf: "Das Formular ist abgelaufen, bitte erneut versuchen.",1315 err_csrf: "Das Formular ist abgelaufen, bitte erneut versuchen.",
1206 err_500: "Interner Fehler.",1316 err_500: "Interner Fehler.",
@@ -1474,6 +1584,32 @@ pub static PT_BR: Tr = Tr {
1474 prio_normal: "Normal",1584 prio_normal: "Normal",
1475 prio_high: "Alta",1585 prio_high: "Alta",
1476 prio_high_aria: "Prioridade alta",1586 prio_high_aria: "Prioridade alta",
1587+ title_security: "Segurança",
1588+ security_card_desc: "Senha e chaves de acesso",
1589+ security_hint: "Sua senha continua valendo — as chaves de acesso se somam a ela, não a substituem.",
1590+ passkeys_title: "Chaves de acesso",
1591+ passkeys_hint: "Entre sem senha com uma chave de segurança (Yubikey) ou um gerenciador (1Password), desbloqueados por PIN ou digital.",
1592+ passkey_none: "Nenhuma chave por enquanto.",
1593+ passkey_name_label: "Nome da chave",
1594+ passkey_name_ph: "Yubikey do escritório",
1595+ passkey_password_why: "Sua senha confirma que é você mesmo: a sessão dura seis meses.",
1596+ passkey_add: "Adicionar uma chave",
1597+ passkey_added_on_pat: "Adicionada em {} de {}",
1598+ passkey_rename_aria: "Renomear a chave",
1599+ passkey_delete: "Excluir",
1600+ passkey_delete_confirm: "Confirmar a exclusão",
1601+ passkey_delete_why: "A senha é pedida para excluir uma chave.",
1602+ passkey_js_required: "Adicionar uma chave exige JavaScript e um navegador compatível.",
1603+ passkey_disabled_note: "A entrada por chave está desativada nesta instância; você ainda pode excluir as chaves registradas.",
1604+ passkey_sign_in: "Entrar com uma chave",
1605+ toast_passkey_added: "Chave adicionada",
1606+ toast_passkey_renamed: "Chave renomeada",
1607+ toast_passkey_deleted: "Chave excluída",
1608+ err_passkey_failed: "O registro da chave falhou. Tente de novo.",
1609+ err_passkey_exists: "Esta chave já está registrada.",
1610+ err_passkey_name_empty: "Dê um nome à chave.",
1611+ err_passkey_login: "A entrada por chave falhou. Tente de novo, ou entre com sua senha.",
1612+ back_settings: "← Voltar aos ajustes",
1477 err_404: "Página não encontrada.",1613 err_404: "Página não encontrada.",
1478 err_csrf: "O formulário expirou, tente de novo.",1614 err_csrf: "O formulário expirou, tente de novo.",
1479 err_500: "Erro interno.",1615 err_500: "Erro interno.",