| @@ -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.", |