- api: DeviceRegistration device-only, login/changePassword/resolveUser, interception 401 (purge) exonérée sur le login ; type User aligné sur le fil (is_admin) - SecureStore (expo-secure-store v57) : token + profil, jamais en SQLite ; miroir active_user_id - AuthContext : statut loading/signedOut/signedIn, bootstrap register→restore, signIn/signOut, garde-fou switch de compte - app/login.tsx + gate de routes dans _layout (Redirect signedOut) ; i18n fr/en - DB v5 : user_id sur pending_operations + resource_permissions (UNIQUE par user), repos scopés (user_id IS ? OR IS NULL) - syncOutbox : delta permissions par compte (Map), outbox poussée du compte actif uniquement - tests: register/login/401/resolve/changePassword, scoping outbox+permissions, migrations v5 ; e2e live revert register→login admin
25 lines
998 B
JSON
25 lines
998 B
JSON
{
|
|
"files": "Fichiers",
|
|
"search": "Recherche",
|
|
"configuration": "Configuration",
|
|
"add_folder": "Ajouter un dossier",
|
|
"no_folders_yet": "Aucun dossier pour le moment. Appuie sur « Ajouter un dossier » pour synchroniser un dossier.",
|
|
"folder": "Dossier",
|
|
"empty_folder": "Dossier vide — le prochain syncDevice l'actualisera.",
|
|
"bytes": "o",
|
|
"kilobytes": "Ko",
|
|
"megabytes": "Mo",
|
|
"login_title": "Connexion",
|
|
"login_subtitle": "Connecte-toi à ton compte",
|
|
"login_username": "Nom d'utilisateur",
|
|
"login_password": "Mot de passe",
|
|
"login_submit": "Se connecter",
|
|
"login_submitting": "Connexion…",
|
|
"login_error_required": "Nom d'utilisateur et mot de passe requis",
|
|
"login_error_generic": "Impossible de se connecter pour le moment",
|
|
"login_switch_title": "Compte déjà connecté",
|
|
"login_switch_message": "Cette connexion remplacera le compte actif sur cet appareil. Continuer ?",
|
|
"login_switch_confirm": "Remplacer",
|
|
"login_switch_cancel": "Annuler"
|
|
}
|