diff --git a/.gitignore b/.gitignore index 19cc81a3a..dd7707feb 100644 --- a/.gitignore +++ b/.gitignore @@ -69,6 +69,9 @@ coverage .cursor/rules/structure.mdc .cursor/rules/agent.mdc +# Ignore Redis dump file +dump.rdb + # Ignore node related files node_modules diff --git a/app/components/DS/dialog.rb b/app/components/DS/dialog.rb index d1f17e310..4a917b91e 100644 --- a/app/components/DS/dialog.rb +++ b/app/components/DS/dialog.rb @@ -48,11 +48,15 @@ class DS::Dialog < DesignSystemComponent }.freeze VALID_HEADING_LEVELS = (1..6).freeze - def initialize(variant: "modal", auto_open: true, reload_on_close: false, width: "md", frame: nil, disable_frame: false, content_class: nil, disable_click_outside: false, responsive: false, scrollable: true, heading_level: 2, **opts) + class_attribute :defaults_provider, default: nil + + def initialize(variant: "modal", auto_open: true, reload_on_close: false, width: "md", frame: nil, disable_frame: false, content_class: nil, disable_click_outside: nil, responsive: false, scrollable: true, heading_level: 2, **opts) unless heading_level.is_a?(Integer) && VALID_HEADING_LEVELS.cover?(heading_level) raise ArgumentError, "heading_level must be an Integer between 1 and 6, got: #{heading_level.inspect}" end + defaults = self.class.defaults_provider&.call || {} + @variant = variant.to_sym @auto_open = auto_open @reload_on_close = reload_on_close @@ -60,7 +64,7 @@ class DS::Dialog < DesignSystemComponent @frame = frame @disable_frame = disable_frame @content_class = content_class - @disable_click_outside = disable_click_outside + @disable_click_outside = disable_click_outside.nil? ? defaults.fetch(:disable_click_outside, false) : disable_click_outside @responsive = responsive @scrollable = scrollable @heading_level = heading_level diff --git a/app/controllers/settings/appearances_controller.rb b/app/controllers/settings/appearances_controller.rb index 51ae26739..c9a0ccbc9 100644 --- a/app/controllers/settings/appearances_controller.rb +++ b/app/controllers/settings/appearances_controller.rb @@ -12,6 +12,7 @@ class Settings::AppearancesController < ApplicationController updated_prefs = (@user.preferences || {}).deep_dup updated_prefs["show_split_grouped"] = params.dig(:user, :show_split_grouped) == "1" if params.dig(:user, :show_split_grouped) updated_prefs["dashboard_two_column"] = params.dig(:user, :dashboard_two_column) == "1" if params.dig(:user, :dashboard_two_column) + updated_prefs["disable_modal_click_outside"] = params.dig(:user, :disable_modal_click_outside) == "1" if params.dig(:user, :disable_modal_click_outside) @user.update!(preferences: updated_prefs) end redirect_to settings_appearance_path diff --git a/app/models/user.rb b/app/models/user.rb index 1955a64fb..f1c6fbb9a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -387,6 +387,10 @@ class User < ApplicationRecord preferences&.dig("dashboard_two_column") == true end + def disable_modal_click_outside? + preferences&.dig("disable_modal_click_outside") == true + end + def preview_features_enabled? preferences&.dig("preview_features_enabled") == true end diff --git a/app/views/settings/appearances/show.html.erb b/app/views/settings/appearances/show.html.erb index 88646f8a1..230c5e92a 100644 --- a/app/views/settings/appearances/show.html.erb +++ b/app/views/settings/appearances/show.html.erb @@ -49,6 +49,27 @@ <% end %> +<%= settings_section title: t(".modals_title"), subtitle: t(".modals_subtitle") do %> +
<%= t(".disable_modal_click_outside_description") %>
+En supprimant ce compte, vous effacerez son historique de valeur, - affectant divers aspects de votre solde global. Cette action aura un impact direct sur vos calculs de valeur nette et les graphiques des comptes.
Après la suppression, il n'y a aucun moyen de restaurer l'information du compte car vous aurez besoin d'en ajouter un nouveau.
" + confirm_body_html: "En supprimant ce compte, vous effacerez son historique de valeur, affectant divers aspects de votre solde global. Cette action aura un impact direct sur vos calculs de valeur nette et les graphiques des comptes.
Après la suppression, il n'y a aucun moyen de restaurer l'information du compte car vous aurez besoin d'en ajouter un nouveau.
" confirm_title: Supprimer le compte ? + delete_account: Supprimer le compte edit: Modifier + exclude_from_reports: Exclure de tous les rapports import: Importer des transactions import_trades: Importer des transactions boursières import_transactions: Importer des transactions + include_in_reports: Inclure dans les rapports manage: Gérer les comptes - update: - success: "Compte %{type} mis à jour" + sharing: Partage + statements: Déclarations + tabs: + activity: Activité + holdings: Holdings + overview: Aperçu + statements: Déclarations sidebar: + configure_providers: Configurez vos fournisseurs ici. missing_data: Données historiques manquantes missing_data_description: "%{product} utilise des fournisseurs tiers pour récupérer l'historique des taux de change, des cours des titres, etc. Ces données sont nécessaires au calcul précis des soldes historiques des comptes." - configure_providers: Configurez vos fournisseurs ici. + new_account: Nouveau compte + new_account_group: Nouveau %{account_group} + new_asset: Nouvel actif + new_debt: Nouvelle dette tabs: all: Tout assets: Actifs debts: Dettes - new_asset: Nouvel actif - new_debt: Nouvelle dette - new_account: Nouveau compte - new_account_group: "Nouveau %{account_group}" - types: - depository: Liquidités - investment: Investissement - crypto: Crypto - property: Bien immobilier - vehicle: Véhicule - other_asset: Autre actif - credit_card: Carte de crédit - loan: Prêt - other_liability: Autre passif - tax_treatments: - taxable: Imposable - tax_deferred: Imposition différée - tax_exempt: Exonéré d'impôt - tax_advantaged: Fiscalement avantagé - tax_treatment_descriptions: - taxable: Gains imposés lors de leur réalisation - tax_deferred: Contributions déductibles, imposées au retrait - tax_exempt: Contributions après impôt, gains non imposés - tax_advantaged: Avantages fiscaux particuliers sous conditions subtype_regions: - us: États-Unis - uk: Royaume-Uni - ca: Canada au: Australie + ca: Canada eu: Europe generic: Général - confirm_unlink: - title: Délier le compte du fournisseur ? - description_html: "Vous êtes sur le point de délier %{account_name} de %{provider_name}. Cela le convertira en compte manuel." - warning_title: Ce que cela signifie - warning_no_sync: Le compte ne se synchronisera plus automatiquement avec votre fournisseur - warning_manual_updates: Vous devrez ajouter des transactions et mettre à jour les soldes manuellement - warning_transactions_kept: Toutes les transactions et soldes existants seront conservés - warning_can_delete: Après la déliaison, vous pourrez supprimer le compte si nécessaire - confirm_button: Confirmer et délier + in: Inde + uk: Royaume-Uni + us: États-Unis + sync_all: + syncing: Synchronisation des comptes… + tax_treatment_descriptions: + tax_advantaged: Avantages fiscaux particuliers sous conditions + tax_deferred: Contributions déductibles, imposées au retrait + tax_exempt: Contributions après impôt, gains non imposés + taxable: Gains imposés lors de leur réalisation + tax_treatments: + tax_advantaged: Fiscalement avantagé + tax_deferred: Imposition différée + tax_exempt: Exonéré d'impôt + taxable: Imposable + types: + credit_card: Carte de crédit + crypto: Crypto + depository: Liquidités + investment: Investissement + loan: Prêt + other_asset: Autre actif + other_liability: Autre passif + property: Bien immobilier + vehicle: Véhicule + types_plural: + credit_card: Cartes de crédit + crypto: Cryptomonnaies + depository: Espèces + investment: Investissements + loan: Prêts + other_asset: Autres actifs + other_liability: Autres passifs + property: Propriétés + vehicle: Véhicules unlink: - success: "Compte délié avec succès. C'est maintenant un compte manuel." - not_linked: "Le compte n'est pas lié à un fournisseur" - error: "Échec de la déliaison du compte : %{error}" - generic_error: "Une erreur inattendue s'est produite. Veuillez réessayer." - select_provider: - title: Sélectionner un fournisseur à lier - description: "Choisissez le fournisseur que vous souhaitez utiliser pour lier %{account_name}" - already_linked: "Le compte est déjà lié à un fournisseur" - no_providers: "Aucun fournisseur n'est actuellement configuré" - + error: 'Échec de la déliaison du compte : %{error}' + generic_error: Une erreur inattendue s'est produite. Veuillez réessayer. + not_linked: Le compte n'est pas lié à un fournisseur + success: Compte délié avec succès. C'est maintenant un compte manuel. + update: + success: Compte %{type} mis à jour email_confirmations: new: invalid_token: Lien de confirmation invalide ou expiré. diff --git a/config/locales/views/admin/invitations/fr.yml b/config/locales/views/admin/invitations/fr.yml new file mode 100644 index 000000000..60edf3ce3 --- /dev/null +++ b/config/locales/views/admin/invitations/fr.yml @@ -0,0 +1,8 @@ +--- +fr: + admin: + invitations: + destroy: + success: Invitation supprimée. + destroy_all: + success: Toutes les invitations pour cette famille ont été supprimées. diff --git a/config/locales/views/admin/sso_providers/fr.yml b/config/locales/views/admin/sso_providers/fr.yml index 28e1337a6..5137f46bd 100644 --- a/config/locales/views/admin/sso_providers/fr.yml +++ b/config/locales/views/admin/sso_providers/fr.yml @@ -1,115 +1,138 @@ --- fr: admin: - unauthorized: "Vous n'êtes pas autorisé(e) à accéder à cette zone." sso_providers: - index: - title: "Fournisseurs SSO" - description: "Gérez les fournisseurs d'authentification unique pour votre instance" - add_provider: "Ajouter un fournisseur" - no_providers_title: "Aucun fournisseur SSO" - no_providers_message: "Commencez par ajouter votre premier fournisseur SSO." - note: "Les modifications des fournisseurs SSO nécessitent un redémarrage du serveur pour prendre effet. Vous pouvez également activer le flag AUTH_PROVIDERS_SOURCE=db pour charger les fournisseurs depuis la base de données dynamiquement." - table: - name: "Nom" - strategy: "Stratégie" - status: "Statut" - issuer: "Émetteur" - actions: "Actions" - enabled: "Activé" - disabled: "Désactivé" - legacy_providers_title: "Fournisseurs configurés par environnement" - legacy_providers_notice: "Ces fournisseurs sont configurés via des variables d'environnement ou YAML et ne peuvent pas être gérés via cette interface. Pour les gérer ici, migrez-les vers des fournisseurs sauvegardés en base de données en activant AUTH_PROVIDERS_SOURCE=db et en les recréant dans l'interface." - env_configured: "Env/YAML" - new: - title: "Ajouter un fournisseur SSO" - description: "Configurer un nouveau fournisseur d'authentification unique" - edit: - title: "Modifier le fournisseur SSO" - description: "Mettre à jour la configuration pour %{label}" create: - success: "Fournisseur SSO créé avec succès." - update: - success: "Fournisseur SSO mis à jour avec succès." + success: Fournisseur SSO créé avec succès. destroy: - success: "Fournisseur SSO supprimé avec succès." - confirm: "Êtes-vous sûr(e) de vouloir supprimer ce fournisseur ? Cette action ne peut pas être annulée." - toggle: - success_enabled: "Fournisseur SSO activé avec succès." - success_disabled: "Fournisseur SSO désactivé avec succès." - confirm_enable: "Êtes-vous sûr(e) de vouloir activer ce fournisseur ?" - confirm_disable: "Êtes-vous sûr(e) de vouloir désactiver ce fournisseur ?" + confirm: Êtes-vous sûr(e) de vouloir supprimer ce fournisseur ? Cette action ne peut pas être annulée. + success: Fournisseur SSO supprimé avec succès. + edit: + description: Mettre à jour la configuration pour %{label} + title: Modifier le fournisseur SSO form: - basic_information: "Informations de base" - oauth_configuration: "Configuration OAuth/OIDC" - strategy_label: "Stratégie" - strategy_help: "La stratégie d'authentification à utiliser" - name_label: "Nom" - name_placeholder: "ex., openid_connect, keycloak, authentik" - name_help: "Identifiant unique (minuscules, chiffres, underscores uniquement)" - label_label: "Libellé" - label_placeholder: "ex., Se connecter avec Keycloak" - label_help: "Texte du bouton affiché aux utilisateurs" - icon_label: "Icône" - icon_placeholder: "ex., key, google, github" - icon_help: "Nom de l'icône Lucide (optionnel)" - enabled_label: "Activer ce fournisseur" - enabled_help: "Les utilisateurs peuvent se connecter avec ce fournisseur lorsqu'il est activé" - issuer_label: "Émetteur" - issuer_placeholder: "https://accounts.google.com" - issuer_help: "URL de l'émetteur OIDC (validera le endpoint .well-known/openid-configuration)" - client_id_label: "ID Client" - client_id_placeholder: "votre-id-client" - client_id_help: "ID client OAuth de votre fournisseur d'identité" - client_secret_label: "Secret Client" - client_secret_placeholder_new: "votre-secret-client" - client_secret_placeholder_existing: "••••••••••••••••" - client_secret_help: "Secret client OAuth (chiffré en base de données)" + admin_groups: Groupes Admin + advanced_title: Paramètres OIDC avancés + basic_information: Informations de base + cancel: Annuler + client_id_help: ID client OAuth de votre fournisseur d'identité + client_id_label: ID Client + client_id_placeholder: votre-id-client + client_secret_help: Secret client OAuth (chiffré en base de données) client_secret_help_existing: " - laisser vide pour conserver l'existant" - redirect_uri_label: "URI de redirection" - redirect_uri_placeholder: "https://votredomaine.com/auth/openid_connect/callback" - redirect_uri_help: "URL de callback à configurer chez votre fournisseur d'identité" - copy_button: "Copier" - cancel: "Annuler" - submit: "Enregistrer le fournisseur" - errors_title: "%{count} erreur(s) ont empêché l'enregistrement de ce fournisseur :" - provisioning_title: "Provisionnement des utilisateurs" - default_role_label: "Rôle par défaut pour les nouveaux utilisateurs" - default_role_help: "Rôle attribué aux utilisateurs créés via le provisionnement SSO juste-à-temps (JIT). Par défaut : Membre." - role_guest: "Invité" - role_member: "Membre" - role_admin: "Administrateur" - role_super_admin: "Super Administrateur" - role_mapping_title: "Mappage groupe vers rôle (Optionnel)" - role_mapping_help: "Mappez les groupes/claims IdP aux rôles de l'application. Les utilisateurs se voient attribuer le rôle correspondant le plus élevé. Laisser vide pour utiliser le rôle par défaut ci-dessus." - super_admin_groups: "Groupes Super Admin" - admin_groups: "Groupes Admin" - guest_groups: "Groupes Invité" - member_groups: "Groupes Membre" - groups_help: "Liste de noms de groupes IdP séparés par des virgules. Utilisez * pour correspondre à tous les groupes." - advanced_title: "Paramètres OIDC avancés" - scopes_label: "Scopes personnalisés" - scopes_help: "Liste de scopes OIDC séparés par des espaces. Laisser vide pour les valeurs par défaut (openid email profile). Ajouter 'groups' pour récupérer les claims de groupe." - prompt_label: "Invite d'authentification" - prompt_default: "Par défaut (l'IdP décide)" - prompt_login: "Forcer la connexion (ré-authentifier)" - prompt_consent: "Forcer le consentement (ré-autoriser)" - prompt_select_account: "Sélection de compte (choisir un compte)" - prompt_none: "Pas d'invite (auth silencieuse)" - prompt_help: "Contrôle comment l'IdP invite l'utilisateur pendant l'authentification." - test_connection: "Tester la connexion" - saml_configuration: "Configuration SAML" - idp_metadata_url: "URL des métadonnées IdP" - idp_metadata_url_help: "URL vers les métadonnées SAML de votre IdP. Si fournie, les autres paramètres SAML seront auto-configurés." - manual_saml_config: "Configuration manuelle (si vous n'utilisez pas l'URL de métadonnées)" - manual_saml_help: "N'utilisez ces paramètres que si votre IdP ne fournit pas d'URL de métadonnées." - idp_sso_url: "URL SSO IdP" - idp_slo_url: "URL SLO IdP (optionnel)" - idp_certificate: "Certificat IdP" - idp_certificate_help: "Certificat X.509 au format PEM. Requis si vous n'utilisez pas l'URL de métadonnées." - idp_cert_fingerprint: "Empreinte du certificat (alternative)" - name_id_format: "Format NameID" - name_id_email: "Adresse email (par défaut)" - name_id_persistent: "Persistant" - name_id_transient: "Transitoire" - name_id_unspecified: "Non spécifié" + client_secret_label: Secret Client + client_secret_placeholder_existing: "••••••••••••••••" + client_secret_placeholder_new: votre-secret-client + copy_button: Copier + create_provider: Créer un fournisseur + default_role_help: 'Rôle attribué aux utilisateurs créés via le provisionnement SSO juste-à-temps (JIT). Par défaut : Membre.' + default_role_label: Rôle par défaut pour les nouveaux utilisateurs + enabled_help: Les utilisateurs peuvent se connecter avec ce fournisseur lorsqu'il est activé + enabled_label: Activer ce fournisseur + errors_title: + one: 'Une erreur a empêché la sauvegarde de ce fournisseur :' + other: "%{count} erreurs ont empêché la sauvegarde de ce fournisseur :" + groups_help: Liste de noms de groupes IdP séparés par des virgules. Utilisez * pour correspondre à tous les groupes. + guest_groups: Groupes Invité + icon_help: Nom de l'icône Lucide (optionnel) + icon_label: Icône + icon_placeholder: ex., key, google, github + idp_cert_fingerprint: Empreinte du certificat (alternative) + idp_certificate: Certificat IdP + idp_certificate_help: Certificat X.509 au format PEM. Requis si vous n'utilisez pas l'URL de métadonnées. + idp_metadata_url: URL des métadonnées IdP + idp_metadata_url_help: URL vers les métadonnées SAML de votre IdP. Si fournie, les autres paramètres SAML seront auto-configurés. + idp_slo_url: URL SLO IdP (optionnel) + idp_sso_url: URL SSO IdP + issuer_help: URL de l'émetteur OIDC (validera le endpoint .well-known/openid-configuration) + issuer_label: Émetteur + issuer_placeholder: https://accounts.google.com + label_help: Texte du bouton affiché aux utilisateurs + label_label: Libellé + label_placeholder: ex., Se connecter avec Keycloak + manual_saml_config: Configuration manuelle (si vous n'utilisez pas l'URL de métadonnées) + manual_saml_help: N'utilisez ces paramètres que si votre IdP ne fournit pas d'URL de métadonnées. + member_groups: Groupes Membre + name_help: Identifiant unique (minuscules, chiffres, underscores uniquement) + name_id_email: Adresse email (par défaut) + name_id_format: Format NameID + name_id_persistent: Persistant + name_id_transient: Transitoire + name_id_unspecified: Non spécifié + name_label: Nom + name_placeholder: ex., openid_connect, keycloak, authentik + oauth_configuration: Configuration OAuth/OIDC + prompt_consent: Forcer le consentement (ré-autoriser) + prompt_default: Par défaut (l'IdP décide) + prompt_help: Contrôle comment l'IdP invite l'utilisateur pendant l'authentification. + prompt_label: Invite d'authentification + prompt_login: Forcer la connexion (ré-authentifier) + prompt_none: Pas d'invite (auth silencieuse) + prompt_select_account: Sélection de compte (choisir un compte) + provisioning_title: Provisionnement des utilisateurs + redirect_uri_help: URL de callback à configurer chez votre fournisseur d'identité + redirect_uri_label: URI de redirection + redirect_uri_placeholder: https://votredomaine.com/auth/openid_connect/callback + role_admin: Administrateur + role_guest: Invité + role_mapping_help: Mappez les groupes/claims IdP aux rôles de l'application. Les utilisateurs se voient attribuer le rôle correspondant le plus élevé. Laisser vide pour utiliser le rôle par défaut ci-dessus. + role_mapping_title: Mappage groupe vers rôle (Optionnel) + role_member: Membre + role_super_admin: Super Administrateur + saml_configuration: Configuration SAML + saml_sp_callback_url_help: Configurez cette URL en tant qu'URL du service de consommation d'assertion dans votre IdP. + saml_sp_callback_url_label: URL de rappel SP (URL ACS) + scopes_help: Liste de scopes OIDC séparés par des espaces. Laisser vide pour les valeurs par défaut (openid email profile). Ajouter 'groups' pour récupérer les claims de groupe. + scopes_label: Scopes personnalisés + strategy_github: GitHub + strategy_google_oauth2: Google OAuth2 + strategy_help: La stratégie d'authentification à utiliser + strategy_label: Stratégie + strategy_openid_connect: Connexion OpenID + strategy_saml: SAML2.0 + submit: Enregistrer le fournisseur + super_admin_groups: Groupes Super Admin + test_connection: Tester la connexion + update_provider: Fournisseur de mise à jour + index: + add_provider: Ajouter un fournisseur + configuration_mode: Mode de configuration + configured_providers: Fournisseurs configurés + db_backed_providers: Fournisseurs basés sur des bases de données + db_backed_providers_description: Charger les fournisseurs à partir de la base de données au lieu de la configuration YAML + db_backed_providers_help_html: DéfinissezAUTH_PROVIDERS_SOURCE=db pour activer les fournisseurs basés sur une base de données. Cela permet des modifications sans redémarrage du serveur.
+ delete: Supprimer
+ description: Gérez les fournisseurs d'authentification unique pour votre instance
+ disable: Désactiver
+ disabled: Désactivé
+ edit: Modifier
+ enable: Activer
+ enabled: Activé
+ env_configured: Env/YAML
+ legacy_providers_notice: Ces fournisseurs sont configurés via des variables d'environnement ou YAML et ne peuvent pas être gérés via cette interface. Pour les gérer ici, migrez-les vers des fournisseurs sauvegardés en base de données en activant AUTH_PROVIDERS_SOURCE=db et en les recréant dans l'interface.
+ legacy_providers_title: Fournisseurs configurés par environnement
+ no_providers_message: Commencez par ajouter votre premier fournisseur SSO.
+ no_providers_title: Aucun fournisseur SSO
+ note: Les modifications des fournisseurs SSO nécessitent un redémarrage du serveur pour prendre effet. Vous pouvez également activer le flag AUTH_PROVIDERS_SOURCE=db pour charger les fournisseurs depuis la base de données dynamiquement.
+ page_title: Fournisseurs SSO
+ restart_required: Les modifications nécessitent un redémarrage du serveur pour prendre effet.
+ table:
+ actions: Actions
+ disabled: Désactivé
+ enabled: Activé
+ issuer: Émetteur
+ name: Nom
+ status: Statut
+ strategy: Stratégie
+ title: Fournisseurs SSO
+ new:
+ description: Configurer un nouveau fournisseur d'authentification unique
+ title: Ajouter un fournisseur SSO
+ toggle:
+ confirm_disable: Êtes-vous sûr(e) de vouloir désactiver ce fournisseur ?
+ confirm_enable: Êtes-vous sûr(e) de vouloir activer ce fournisseur ?
+ success_disabled: Fournisseur SSO désactivé avec succès.
+ success_enabled: Fournisseur SSO activé avec succès.
+ update:
+ success: Fournisseur SSO mis à jour avec succès.
+ unauthorized: Vous n'êtes pas autorisé(e) à accéder à cette zone.
diff --git a/config/locales/views/admin/users/fr.yml b/config/locales/views/admin/users/fr.yml
index 41ca3c2a8..9389bcdfe 100644
--- a/config/locales/views/admin/users/fr.yml
+++ b/config/locales/views/admin/users/fr.yml
@@ -3,51 +3,59 @@ fr:
admin:
users:
index:
- title: "Gestion des utilisateurs"
- description: "Gérez les rôles des utilisateurs pour votre instance. Les super administrateurs peuvent accéder aux paramètres des fournisseurs SSO et à la gestion des utilisateurs."
- section_title: "Familles / Groupes"
- you: "(Vous)"
- trial_ends_at: "Fin de l'essai"
- not_available: "n/a"
- no_users: "Aucun utilisateur trouvé."
- unnamed_family: "Famille/Groupe sans nom"
- no_subscription: "Aucun abonnement"
- family_summary: "%{members} membres · %{accounts} comptes · %{transactions} transactions"
+ description: Gérez les rôles des utilisateurs pour votre instance. Les super
+ administrateurs peuvent accéder aux paramètres des fournisseurs SSO et à
+ la gestion des utilisateurs.
+ family_summary: "%{members} membres · %{accounts} comptes · %{transactions}
+ transactions"
filters:
- role: "Rôle"
- role_all: "Tous les rôles"
- trial_status: "Statut de l'essai"
- trial_all: "Tous"
- trial_expiring_soon: "Expire dans 7 jours"
- trial_trialing: "En essai"
- submit: "Filtrer"
- summary:
- trials_expiring_7_days: "Essais expirant dans les 7 prochains jours"
- table:
- user: "Utilisateur"
- trial_ends_at: "Fin de l'essai"
- family_accounts: "Comptes de la famille"
- family_transactions: "Transactions de la famille"
- last_login: "Dernière connexion"
- session_count: "Nombre de sessions"
- never: "Jamais"
- role: "Rôle"
- role_descriptions_title: "Description des rôles"
- roles:
- guest: "Invité"
- member: "Membre"
- admin: "Administrateur"
- super_admin: "Super Administrateur"
- role_descriptions:
- guest: "Expérience axée sur l'assistant avec des permissions volontairement restreintes pour les parcours d'introduction."
- member: "Accès utilisateur de base. Peut gérer ses propres comptes, transactions et paramètres."
- admin: "Administrateur familial. Peut accéder aux paramètres avancés comme les clés API, les importations et les prompts IA."
- super_admin: "Administrateur de l'instance. Peut gérer les fournisseurs SSO, les rôles des utilisateurs et usurper l'identité des utilisateurs pour le support."
+ role: Rôle
+ role_all: Tous les rôles
+ submit: Filtrer
+ trial_all: Tous
+ trial_expiring_soon: Expire dans 7 jours
+ trial_status: Statut de l'essai
+ trial_trialing: En essai
invitations:
- pending_label: "Invité (en attente)"
- expires: "Expire le %{date}"
- delete: "Supprimer"
- delete_all: "Tout supprimer"
+ delete: Supprimer
+ delete_all: Tout supprimer
+ expires: Expire le %{date}
+ pending_label: Invité (en attente)
+ no_subscription: Aucun abonnement
+ no_users: Aucun utilisateur trouvé.
+ not_available: n/a
+ role_descriptions:
+ admin: Administrateur familial. Peut accéder aux paramètres avancés comme
+ les clés API, les importations et les prompts IA.
+ guest: Expérience axée sur l'assistant avec des permissions volontairement
+ restreintes pour les parcours d'introduction.
+ member: Accès utilisateur de base. Peut gérer ses propres comptes, transactions
+ et paramètres.
+ super_admin: Administrateur de l'instance. Peut gérer les fournisseurs SSO,
+ les rôles des utilisateurs et usurper l'identité des utilisateurs pour
+ le support.
+ role_descriptions_title: Description des rôles
+ roles:
+ admin: Administrateur
+ guest: Invité
+ member: Membre
+ super_admin: Super Administrateur
+ section_title: Familles / Groupes
+ summary:
+ trials_expiring_7_days: Essais expirant dans les 7 prochains jours
+ table:
+ family_accounts: Comptes de la famille
+ family_transactions: Transactions de la famille
+ last_login: Dernière connexion
+ never: Jamais
+ role: Rôle
+ session_count: Nombre de sessions
+ trial_ends_at: Fin de l'essai
+ user: Utilisateur
+ title: Gestion des utilisateurs
+ trial_ends_at: Fin de l'essai
+ unnamed_family: Famille/Groupe sans nom
+ you: "(Vous)"
update:
- success: "Rôle de l'utilisateur mis à jour avec succès."
- failure: "Échec de la mise à jour du rôle de l'utilisateur."
+ failure: Échec de la mise à jour du rôle de l'utilisateur.
+ success: Rôle de l'utilisateur mis à jour avec succès.
diff --git a/config/locales/views/akahu_items/fr.yml b/config/locales/views/akahu_items/fr.yml
new file mode 100644
index 000000000..3023087fd
--- /dev/null
+++ b/config/locales/views/akahu_items/fr.yml
@@ -0,0 +1,127 @@
+---
+fr:
+ akahu_account:
+ fallback: Compte Akahu
+ akahu_entry:
+ notes:
+ code: Code
+ other_account: Autre compte
+ particulars: Détails
+ reference: Référence
+ akahu_item:
+ errors:
+ account_processing_failed: Impossible de synchroniser le compte Akahu
+ account_sync_schedule_failed: Impossible de planifier la synchronisation du compte Akahu
+ pending_transactions_failed: Impossible de récupérer les transactions Akahu en attente
+ sync_failed: Impossible de synchroniser la connexion Akahu
+ transactions_failed: Impossible de récupérer les transactions Akahu
+ institution_summary:
+ count:
+ one: 1 institution
+ other: "%{count} institutions"
+ none: Aucune institution connectée
+ one: 1 institution
+ sync_status:
+ all_synced:
+ one: 1 compte synchronisé
+ other: "%{count} comptes synchronisés"
+ no_accounts: Aucun compte trouvé
+ partial: "%{linked} synchronisés, %{unlinked} à configurer"
+ akahu_items:
+ akahu_item:
+ delete: Supprimer
+ deletion_in_progress: Suppression en cours
+ error: Erreur
+ no_accounts_description: Récupérez les comptes Akahu et choisissez ceux à lier.
+ no_accounts_title: Aucun compte importé pour l'instant
+ setup_action: Configurer les comptes
+ setup_description: "%{linked} sur %{total} comptes liés."
+ setup_needed: Configuration requise
+ status_never: Jamais synchronisé
+ status_with_summary: Synchronisé il y a %{timestamp} · %{summary}
+ syncing: Synchronisation
+ complete_account_setup:
+ all_skipped: Aucun compte Akahu n'a été créé.
+ creation_failed: Impossible de créer les comptes Akahu.
+ no_accounts: Aucun compte Akahu n'a été sélectionné.
+ success:
+ one: 1 compte Akahu créé.
+ other: "%{count} comptes Akahu créés."
+ create:
+ success: Connexion Akahu enregistrée.
+ destroy:
+ success: Suppression de la connexion Akahu planifiée.
+ unlink_failed: Impossible de déconnecter la connexion Akahu
+ link_accounts:
+ link_failed: Aucun compte n'a été lié.
+ no_accounts_selected: Sélectionnez au moins un compte.
+ no_credentials_configured: Configurez d'abord Akahu dans les paramètres des fournisseurs.
+ success:
+ one: 1 compte Akahu lié.
+ other: "%{count} comptes Akahu liés."
+ unsupported_account_type: Akahu ne prend pas en charge ce type de compte.
+ link_existing_account:
+ account_already_linked: Ce compte est déjà lié à un fournisseur.
+ akahu_account_already_linked: Ce compte Akahu est déjà lié.
+ success: Compte Akahu lié à %{account_name}.
+ provider_panel:
+ add_connection: Ajouter une connexion Akahu
+ app_token_label: App Token
+ app_token_placeholder: Collez votre jeton d'application Akahu
+ connection_name_label: Nom de la connexion
+ connection_name_placeholder: Akahu principal
+ default_connection_name: Connexion Akahu
+ disconnect: Déconnecter
+ disconnect_confirm: Voulez-vous vraiment déconnecter %{name} ?
+ keep_app_token_placeholder: Laissez vide pour conserver le jeton d'application existant
+ keep_user_token_placeholder: Laissez vide pour conserver le jeton utilisateur existant
+ setup_accounts: Configurer les comptes
+ sync: Synchroniser
+ syncing: Synchronisation...
+ update_connection: Mettre à jour la connexion
+ user_token_label: User Token
+ user_token_placeholder: Collez votre jeton utilisateur Akahu
+ select_accounts:
+ cancel: Annuler
+ description: Choisissez les comptes Akahu à ajouter.
+ link_accounts: Lier les comptes
+ no_accounts_found: Aucun compte Akahu non lié n'a été trouvé.
+ no_credentials_configured: Configurez d'abord Akahu dans les paramètres des fournisseurs.
+ title: Lier les comptes Akahu
+ select_existing_account:
+ account_already_linked: Ce compte est déjà lié à un fournisseur.
+ cancel: Annuler
+ description: Choisissez un compte Akahu non lié pour le connecter à ce compte.
+ link_account: Lier le compte
+ no_accounts_found: Aucun compte Akahu non lié n'a été trouvé.
+ no_credentials_configured: Configurez d'abord Akahu dans les paramètres des fournisseurs.
+ title: Lier le compte Akahu à %{account_name}
+ setup_accounts:
+ account_type_label: Type de compte
+ account_types:
+ credit_card: Carte de crédit
+ depository: Trésorerie
+ investment: Investissement
+ loan: Emprunt
+ skip: Ignorer
+ all_accounts_linked: Tous les comptes Akahu sont déjà liés.
+ api_error: Impossible de récupérer les comptes Akahu.
+ cancel: Annuler
+ choose_account_type: Choisissez un type de compte
+ choose_account_type_description: Ignorez les comptes que vous ne souhaitez pas suivre.
+ create_accounts: Créer les comptes
+ fetch_failed: Impossible de récupérer les comptes
+ no_accounts_to_setup: Aucun compte à configurer
+ no_credentials: Configurez d'abord les identifiants Akahu.
+ subtitle: Choisissez comment chaque compte Akahu doit apparaître dans Sure.
+ title: Configurer les comptes Akahu
+ update:
+ success: Connexion Akahu mise à jour.
+ family:
+ akahu:
+ create_akahu_item:
+ default_name: Connexion Akahu
+ providers:
+ akahu:
+ description: Connectez des comptes bancaires néo-zélandais via Akahu
+ name: Akahu
diff --git a/config/locales/views/application/fr.yml b/config/locales/views/application/fr.yml
index dd2daf2b3..2b55cac33 100644
--- a/config/locales/views/application/fr.yml
+++ b/config/locales/views/application/fr.yml
@@ -1,5 +1,18 @@
---
fr:
+ import:
+ uploads:
+ handle_qif_upload:
+ qif_uploaded: Aucun
+ lunchflow_items:
+ link_accounts:
+ no_api_key: Aucun
+ link_existing_account:
+ no_api_key: Aucun
+ select_accounts:
+ no_credentials_configured: Aucun
+ select_existing_account:
+ no_credentials_configured: Aucun
number:
currency:
format:
@@ -8,3 +21,255 @@ fr:
precision: 2
separator: ","
unit: "€"
+ settings:
+ hostings:
+ ensure_admin:
+ not_authorized: Aucun
+ providers:
+ binance_panel:
+ no_withdraw_body: N'activez pas les autorisations de retrait lors de la création
+ de votre clé API Binance. Bien sûr, il suffit d'un accès en lecture.
+ no_withdraw_title: Clé en lecture seule uniquement
+ clear_filter: Effacer les filtres
+ connect: Se connecter
+ drawer_trust_statement: Accès en lecture seule. Bien sûr, vous ne pourrez jamais
+ transférer d’argent et vos informations d’identification sont stockées cryptées.
+ empty_filter: Aucun fournisseur ne correspond à votre filtre.
+ enable_banking_panel:
+ add_connection: Ajouter une connexion
+ application_id_label: Identifiant de la demande
+ application_id_placeholder_new: Entrez l'ID de la demande
+ application_id_placeholder_update: Entrez le nouvel identifiant à mettre à
+ jour
+ client_certificate_label: Certificat client (avec clé privée)
+ config_locked_message: Déconnectez toutes les banques liées avant de modifier
+ ces informations d'identification.
+ config_locked_title: Configuration verrouillée
+ configured: Configuré
+ connect_bank: Connecter la banque
+ connected_bank: Banque connectée
+ connection: Connexion
+ country_label: Pays
+ ready_to_link: Prêt à lier des comptes
+ reconnect: Reconnecter
+ remove: Supprimer
+ remove_confirm: Êtes-vous sûr de vouloir supprimer cette connexion ?
+ save_and_connect: Enregistrez et connectez-vous
+ select_country: Sélectionnez le pays...
+ session_expired_reconnect: Session expirée - reconnectez-vous
+ session_expires: 'Expiration de la session : %{date}'
+ step_1_html: Accédez à %{link} et récupérez vos informations d'identification
+ de développeur.
+ step_2: Choisissez votre pays et collez l'ID d'application + le certificat
+ client ci-dessous.
+ step_3: Enregistrez, puis utilisez Ajouter une connexion pour lier votre banque.
+ sync: Synchroniser
+ syncing: Synchronisation
+ unknown: Inconnu
+ update_connection: Mettre à jour la connexion
+ groups:
+ available: Disponible
+ empty_available: Tous les fournisseurs disponibles sont connectés.
+ your_connections: Vos connexions
+ health_strip:
+ accounts_syncing: synchronisation des comptes
+ connected: connecté
+ last_synced: Dernière synchronisation il y a %{time}
+ needs_attention: a besoin d'attention
+ ibkr_panel:
+ accounts_tab: Comptes
+ configuration:
+ all_other_options: 'Toutes les autres options de configuration : "Non"'
+ date_format: 'Format de date : aaaa-MM-jj'
+ date_time_separator: Séparateur date/heure : ; (point-virgule)
+ format: 'Format : XML'
+ models: Modèles : facultatif
+ period: 'Période : 365 derniers jours calendaires'
+ profit_and_loss: Profits et pertes : par défaut
+ time_format: Format de l'heure : HH : mm : ss
+ disconnect_confirm: Déconnecter Interactive Brokers ?
+ flex_query_details:
+ configuration_heading: Définir ces options de requête
+ eyebrow: Requête flexible
+ sections_heading: Activer ces sections et champs
+ summary: Développez pour voir les sections, champs et paramètres exacts
+ que votre requête IBKR Activity Flex doit inclure.
+ title: Sections, champs et configuration
+ not_configured: Non configuré.
+ query_id_label: ID de requête
+ query_id_placeholder_existing: Laissez vide pour conserver l'ID de requête
+ actuel
+ query_id_placeholder_new: Entrez votre ID de requête IBKR Flex
+ report_window_note: Les rapports IBKR Flex sont limités à la fenêtre de requête
+ que vous avez configurée dans IBKR. Bien sûr, l'intégralité des fonds actuels
+ ainsi que les 365 derniers jours d'activité de ce rapport seront importés.
+ save_configuration: Enregistrer la configuration
+ sections:
+ account_information: 'Informations sur le compte : identifiant de compte,
+ devise'
+ cash_report: 'Rapport de caisse :'
+ cash_report_fields: 'Champs : Devise, Liquidités de fin'
+ cash_report_options: 'Options : Aucune'
+ cash_transactions: 'Opérations en espèces :'
+ cash_transactions_fields: 'Champs : Montant, Conid, Devise, Taux de change
+ par rapport à la base, Date du rapport, ID de transaction, Type'
+ cash_transactions_options: 'Options : Dividendes, Dépôts et retraits, Détail'
+ change_in_position_value_summary: 'Récapitulatif des modifications de la
+ valeur de position : devise, valeur de fin de période'
+ net_asset_value: 'Valeur Liquidative (VNI) en Base :'
+ net_asset_value_fields: 'Champs : Devise, Date du rapport, Total'
+ net_asset_value_options: 'Options : Aucune'
+ open_positions: 'Postes ouverts :'
+ open_positions_fields: 'Champs : Classe d''actifs, Conid, Prix de base,
+ Devise, Taux de change par rapport à la base, Prix de référence, Quantité,
+ Date du rapport, ID de titre, Type d''ID de titre, Côté, Symbole'
+ open_positions_options: Options : Résumé
+ trades: 'Métiers :'
+ trades_fields: 'Champs : Classe d''actifs, Achat/Vente, Conid, Devise, Taux
+ de change à la base, Commission IB, Devise de la Commission IB, Quantité,
+ Symbole, Date de transaction, ID de transaction, TradePrice, ID de transaction'
+ trades_options: 'Options : Exécution'
+ status_configured_prefix: "%{summary}. Visitez le"
+ status_configured_suffix: onglet pour gérer les comptes découverts.
+ steps:
+ step_1: Dans votre portail client IBKR, accédez à « Performances et rapports
+ » > « Requêtes flexibles ».
+ step_2: Cliquez sur l'icône "+" dans la section "Activity Flex Query" pour
+ créer une nouvelle requête.
+ step_3: Nommez votre requête (par exemple, « Sure Sync »), puis examinez
+ les détails de la requête Flex ci-dessous et activez les sections, champs
+ et options de configuration répertoriés.
+ step_4: Enregistrez la requête, notez votre « ID de requête », puis utilisez
+ l'icône d'engrenage dans la section « Configuration du service Web Flex
+ » pour générer un jeton d'accès.
+ step_5: Collez votre ID de requête et votre jeton ci-dessous, enregistrez
+ la configuration, puis accédez à Comptes pour lier les comptes IBKR découverts.
+ sync: Synchroniser
+ token_label: Jeton
+ token_placeholder_existing: Laisser vide pour conserver le jeton actuel
+ token_placeholder_new: Entrez votre jeton de service Web IBKR Flex
+ update_configuration: Mettre à jour la configuration
+ kraken_panel:
+ add_connection: Ajouter une connexion Kraken
+ api_key_label: Clé API
+ api_key_placeholder: Collez votre clé API Kraken
+ api_secret_label: Clé privée
+ api_secret_placeholder: Collez votre clé privée Kraken
+ connection_name_label: Nom de la connexion
+ connection_name_placeholder: Kraken principal
+ default_connection_name: Kraken
+ disconnect: Déconnecter
+ disconnect_confirm: Êtes-vous sûr de vouloir déconnecter %{name} ?
+ keep_api_key_placeholder: Laissez vide pour conserver la clé API existante
+ keep_api_secret_placeholder: Laisser vide pour conserver la clé privée existante
+ read_only_body: N’accordez pas d’autorisations de négociation, d’annulation,
+ de retrait, d’exportation, de grand livre, de gain, de jalonnement ou de
+ transfert. Bien sûr, n'importe que les soldes, les holdings et les transactions
+ au comptant.
+ read_only_title: Synchronisation d'échange en lecture seule uniquement
+ setup_accounts: Configurer le compte
+ step1_html: Accédez aux Paramètres de
+ l'API Kraken
+ step2: Créez une clé API avec Query Funds et Query Closed Orders & Trades
+ uniquement.
+ step3: Collez la clé API et la clé privée ci-dessous.
+ sync: Synchroniser
+ syncing: Synchronisation...
+ update_connection: Mettre à jour la connexion
+ lunchflow_panel:
+ api_key_label: Clé API
+ api_key_placeholder_new: Collez la clé API ici
+ api_key_placeholder_update: Saisissez la nouvelle clé API à mettre à jour
+ base_url_label: URL de base (facultatif)
+ base_url_placeholder: https://lunchflow.app/api/v1 (par défaut)
+ save_and_connect: Enregistrez et connectez-vous
+ step_1_html: Accédez à %{link} et créez une clé API.
+ step_2: Collez votre clé ci-dessous et connectez-vous.
+ step_3: Dirigez-vous ensuite vers Comptes pour lier vos comptes synchronisés.
+ update_connection: Mettre à jour la connexion
+ maturity:
+ alpha: Alpha
+ beta: Bêta
+ meta:
+ last_synced: Synchronisé il y a %{time}
+ no_recent_sync: Synchronisation en retard
+ reconsent_needed:
+ one: Re-consentement nécessaire dans 1 jour
+ other: Renouvellement du consentement requis dans %{count} jours
+ reconsent_required: Re-consentement requis
+ registration_needed: Inscription nécessaire
+ sync_error: Erreur de synchronisation
+ not_found: Fournisseur introuvable.
+ plaid_eu_panel:
+ step_1_html: Ouvrez le %{link} et copiez votre identifiant client européen
+ et votre clé secrète.
+ plaid_panel:
+ step_1_html: Ouvrez le %{link} et copiez votre identifiant client et votre
+ clé secrète.
+ step_2: Choisissez un environnement. Utilisez le bac à sable pour les tests
+ et la production de comptes réels.
+ step_3: Collez vos identifiants ci-dessous et connectez-vous.
+ provider_form:
+ save_and_connect: Enregistrez et connectez-vous
+ recently_synced: Synchronisé récemment. Réessayez dans un instant.
+ search_filters:
+ aria_label: Fournisseurs de recherche
+ chips:
+ all: Tout
+ bank: Banques
+ crypto: Cryptomonnaie
+ investment: Investissements
+ placeholder: Fournisseurs de recherche
+ setup_steps:
+ eyebrow: Configuration
+ need_help: Besoin d'aide ?
+ simplefin_panel:
+ save_and_connect: Enregistrez et connectez-vous
+ setup_token_label: Jeton de configuration
+ setup_token_placeholder: Coller le jeton de configuration SimpleFIN
+ step_1_html: Accédez à %{link} pour un jeton de configuration unique.
+ step_2: Collez le jeton ci-dessous et connectez-vous.
+ step_3: Dirigez-vous ensuite vers Comptes pour lier vos comptes synchronisés.
+ status:
+ 'false': Non configuré
+ sync_all: Synchroniser tout
+ sync_all_in_progress: Synchronisation de tous les fournisseurs connectés…
+ sync_all_recently: Synchronisation déjà en cours. Réessayez dans un instant.
+ sync_provider: Synchronisez maintenant
+ sync_provider_in_progress: La synchronisation a commencé.
+ sync_provider_no_items: Aucune connexion disponible pour synchroniser.
+ taglines:
+ binance: Synchronisez vos soldes spot Binance à l'aide d'une clé API en lecture
+ seule.
+ brex: Synchronisez l'activité des espèces Brex et des cartes d'entreprise
+ avec un accès en lecture seule.
+ coinbase: Importez vos holdings cryptographiques Coinbase et suivez les performances.
+ coinstats: Suivez l’intégralité de votre portefeuille de crypto-monnaies sur
+ les portefeuilles et les échanges.
+ enable_banking: Synchronisez les comptes bancaires européens via l'open banking
+ PSD2.
+ ibkr: Synchronisez les comptes d'investissement Interactive Brokers via les
+ importations Flex Query.
+ indexa_capital: Suivez votre portefeuille d'investissement automatisé Indexa
+ Capital.
+ kraken: Synchronisez les soldes Kraken et les transactions au comptant à l'aide
+ d'une clé API en lecture seule.
+ lunchflow: Connectez plus de 20 000 banques dans plus de 40 pays (Royaume-Uni,
+ UE, États-Unis et plus !)
+ mercury: Synchronisez automatiquement vos comptes bancaires professionnels
+ Mercury.
+ plaid: Connectez des milliers d'institutions financières américaines via Plaid.
+ plaid_eu: Connectez les institutions financières européennes via Plaid (PSD2
+ / Open Banking).
+ simplefin: Connectez les comptes bancaires américains via le protocole ouvert
+ SimpleFIN.
+ snaptrade: Connectez les comptes de courtage via le réseau d'agrégation SnapTrade.
+ sophtron: Connectez les banques et les services publics américains et canadiens.
+ simplefin_items:
+ select_existing_account:
+ check_provider_health: Aucun
+ valuations:
+ new:
+ amount: Aucun
+ submit: Aucun
diff --git a/config/locales/views/binance_items/fr.yml b/config/locales/views/binance_items/fr.yml
index 9ec085aa4..3bab2b20f 100644
--- a/config/locales/views/binance_items/fr.yml
+++ b/config/locales/views/binance_items/fr.yml
@@ -1,75 +1,79 @@
---
fr:
- binance_items:
- create:
- default_name: Binance
- success: Connexion à Binance réussie. Votre compte est en cours de synchronisation.
- update:
- success: Configuration Binance mise à jour.
- destroy:
- success: Connexion Binance mise en file d'attente pour suppression.
- setup_accounts:
- title: Importer le compte Binance
- subtitle: Sélectionnez les portefeuilles à suivre
- instructions: Sélectionnez les portefeuilles Binance que vous souhaitez importer. Seuls les portefeuilles avec un solde sont affichés.
- no_accounts: Tous les comptes ont été importés.
- accounts_count:
- one: "%{count} compte disponible"
- other: "%{count} comptes disponibles"
- select_all: Tout sélectionner
- import_selected: Importer la sélection
- cancel: Annuler
- creating: Importation…
- complete_account_setup:
- success:
- one: "%{count} compte importé"
- other: "%{count} comptes importés"
- none_selected: Aucun compte sélectionné
- no_accounts: Aucun compte à importer
- binance_item:
- provider_name: Binance
- syncing: Synchronisation…
- reconnect: Identifiants à mettre à jour
- deletion_in_progress: Suppression…
- sync_status:
- no_accounts: Aucun compte trouvé
- all_synced:
- one: "%{count} compte synchronisé"
- other: "%{count} comptes synchronisés"
- partial_sync: "%{linked_count} synchronisé(s), %{unlinked_count} à configurer"
- status: "Dernière synchronisation il y a %{timestamp}"
- status_with_summary: "Dernière synchronisation il y a %{timestamp} - %{summary}"
- status_never: Jamais synchronisé
- update_credentials: Mettre à jour les identifiants
- delete: Supprimer
- no_accounts_title: Aucun compte trouvé
- no_accounts_message: Votre portefeuille Binance apparaîtra ici après la synchronisation.
- setup_needed: Compte prêt à être importé
- setup_description: Sélectionnez les portefeuilles Binance que vous souhaitez suivre.
- setup_action: Importer le compte
- import_accounts_menu: Importer le compte
- stale_rate_warning: "Solde approximatif — le taux de change exact du %{date} n'était pas disponible. Il sera mis à jour lors de la prochaine synchronisation."
- select_existing_account:
- title: Lier un compte Binance
- no_accounts_found: Aucun compte Binance trouvé.
- wait_for_sync: Attendez que Binance termine la synchronisation
- check_provider_health: Vérifiez que vos identifiants API Binance sont valides
- currently_linked_to: "Actuellement lié à : %{account_name}"
- link: Lier
- cancel: Annuler
- link_existing_account:
- success: Compte Binance lié avec succès
- errors:
- only_manual: Seuls les comptes manuels peuvent être liés à Binance
- invalid_binance_account: Compte Binance invalide
binance_item:
syncer:
- checking_credentials: Vérification des identifiants…
- credentials_invalid: Identifiants API invalides. Veuillez vérifier votre clé API et votre secret.
- importing_accounts: Importation des comptes depuis Binance…
- checking_configuration: Vérification de la configuration du compte…
accounts_need_setup:
one: "%{count} compte à configurer"
other: "%{count} comptes à configurer"
- processing_accounts: Traitement des données du compte…
calculating_balances: Calcul des soldes…
+ checking_configuration: Vérification de la configuration du compte…
+ checking_credentials: Vérification des identifiants…
+ credentials_invalid: Identifiants API invalides. Veuillez vérifier votre clé
+ API et votre secret.
+ importing_accounts: Importation des comptes depuis Binance…
+ processing_accounts: Traitement des données du compte…
+ binance_items:
+ binance_item:
+ delete: Supprimer
+ deletion_in_progress: Suppression…
+ import_accounts_menu: Importer le compte
+ no_accounts_message: Votre portefeuille Binance apparaîtra ici après la synchronisation.
+ no_accounts_title: Aucun compte trouvé
+ provider_name: Binance
+ reconnect: Identifiants à mettre à jour
+ setup_action: Importer le compte
+ setup_description: Sélectionnez les portefeuilles Binance que vous souhaitez
+ suivre.
+ setup_needed: Compte prêt à être importé
+ stale_rate_warning: Solde approximatif — le taux de change exact du %{date}
+ n'était pas disponible. Il sera mis à jour lors de la prochaine synchronisation.
+ status: Dernière synchronisation il y a %{timestamp}
+ status_never: Jamais synchronisé
+ status_with_summary: Dernière synchronisation il y a %{timestamp} - %{summary}
+ sync_status:
+ all_synced:
+ one: "%{count} compte synchronisé"
+ other: "%{count} comptes synchronisés"
+ no_accounts: Aucun compte trouvé
+ partial_sync: "%{linked_count} synchronisé(s), %{unlinked_count} à configurer"
+ syncing: Synchronisation…
+ update_credentials: Mettre à jour les identifiants
+ complete_account_setup:
+ no_accounts: Aucun compte à importer
+ none_selected: Aucun compte sélectionné
+ success:
+ one: "%{count} compte importé"
+ other: "%{count} comptes importés"
+ create:
+ default_name: Binance
+ success: Connexion à Binance réussie. Votre compte est en cours de synchronisation.
+ destroy:
+ success: Connexion Binance mise en file d'attente pour suppression.
+ link_existing_account:
+ errors:
+ invalid_binance_account: Compte Binance invalide
+ only_manual: Seuls les comptes manuels peuvent être liés à Binance
+ success: Compte Binance lié avec succès
+ select_existing_account:
+ cancel: Annuler
+ check_provider_health: Vérifiez que vos identifiants API Binance sont valides
+ currently_linked_to: 'Actuellement lié à : %{account_name}'
+ link: Lier
+ no_accounts_found: Aucun compte Binance trouvé.
+ title: Lier un compte Binance
+ wait_for_sync: Attendez que Binance termine la synchronisation
+ setup_accounts:
+ accounts_count:
+ one: "%{count} compte disponible"
+ other: "%{count} comptes disponibles"
+ cancel: Annuler
+ creating: Importation…
+ import_selected: Importer la sélection
+ instructions: Sélectionnez les portefeuilles Binance que vous souhaitez importer.
+ Seuls les portefeuilles avec un solde sont affichés.
+ no_accounts: Tous les comptes ont été importés.
+ select_all: Tout sélectionner
+ subtitle: Sélectionnez les portefeuilles à suivre
+ title: Importer le compte Binance
+ update:
+ success: Configuration Binance mise à jour.
diff --git a/config/locales/views/brex_items/fr.yml b/config/locales/views/brex_items/fr.yml
new file mode 100644
index 000000000..52f481972
--- /dev/null
+++ b/config/locales/views/brex_items/fr.yml
@@ -0,0 +1,317 @@
+---
+fr:
+ brex_items:
+ account_metadata:
+ provider: Brex
+ separator: "•"
+ api_error:
+ common_issues: 'Problèmes courants :'
+ expired_credentials: Générez un nouveau jeton API depuis Brex.
+ expired_credentials_label: 'Identifiants expirés :'
+ heading: Impossible de se connecter au Brex
+ invalid_token: Vérifiez votre jeton API dans les paramètres du fournisseur.
+ invalid_token_label: 'Jeton API non valide :'
+ network: Vérifiez votre connexion Internet.
+ network_label: 'Problème de réseau :'
+ permissions: Assurez-vous que votre jeton dispose des étendues de compte et
+ de transaction en lecture seule requises.
+ permissions_label: 'Autorisations insuffisantes :'
+ service: L'API Brex peut être temporairement indisponible.
+ service_label: 'Service en panne :'
+ settings_link: Vérifier les paramètres du fournisseur
+ title: Erreur de connexion Brex
+ brex_item:
+ accounts_need_setup: Les comptes doivent être configurés
+ delete: Supprimer la connexion
+ deletion_in_progress: suppression en cours...
+ error: Erreur
+ no_accounts_description: Cette connexion n'a pas encore de compte associé.
+ no_accounts_title: Aucun compte
+ setup_action: Créer de nouveaux comptes
+ setup_description: "%{linked} comptes sur %{total} associés. Choisissez les
+ types de comptes pour vos comptes Brex nouvellement importés."
+ setup_needed: Nouveaux comptes prêts à être créés
+ status: Synchronisé il y a %{timestamp}
+ status_never: Jamais synchronisé
+ status_with_summary: Dernière synchronisation il y a %{timestamp} - %{summary}
+ syncing: Synchronisation...
+ total: Total
+ unlinked: Sans lien
+ complete_account_setup:
+ all_skipped: Tous les comptes ont été ignorés. Aucun compte n'a été créé.
+ creation_failed: 'Échec de la création des comptes : %{error}'
+ creation_failed_count: Échec de la création du ou des comptes %{count}.
+ no_accounts: Aucun compte à créer.
+ partial_skipped: Compte(s) %{created_count} créé avec succès ; %{skipped_count} compte(s)
+ ont été ignorés.
+ partial_success: "%{created_count} compte(s) a été créé avec succès, mais %{failed_count}
+ compte(s) a échoué."
+ success: Compte(s) %{count} créé avec succès.
+ unexpected_error: Une erreur inattendue s'est produite.
+ create:
+ success: Connexion Brex créée avec succès
+ default_card_name: Carte Brex
+ default_cash_name: Brex Cash %{id}
+ default_connection_name: Connexion Brex
+ destroy:
+ success: Connexion Brex supprimée
+ entries:
+ default_name: Opération Brex
+ errors:
+ unexpected_error: Une erreur inattendue s'est produite. Veuillez réessayer plus
+ tard.
+ index:
+ title: Connexions Brex
+ institution_summary:
+ count:
+ one: "%{count} établissement"
+ other: "%{count} établissements"
+ none: Aucune institution connectée
+ one: "%{name}"
+ kinds:
+ card: Carte
+ cash: Espèces
+ link_accounts:
+ all_already_linked:
+ one: Le compte sélectionné (%{names}) est déjà associé
+ other: 'Tous les %{count} comptes sélectionnés sont déjà associés : %{names}'
+ api_error: 'Erreur API : %{message}'
+ invalid_account_names:
+ one: Impossible de lier un compte avec un nom vide
+ other: Impossible d'associer les comptes %{count} avec des noms vides
+ invalid_account_type: Type de compte Brex non pris en charge
+ link_failed: Échec de l'association des comptes
+ no_accounts_selected: Veuillez sélectionner au moins un compte
+ no_api_token: Jeton API Brex introuvable. Veuillez le configurer dans les paramètres
+ du fournisseur.
+ partial_invalid: "%{created_count} comptes ont été associés avec succès, %{already_linked_count}
+ comptes étaient déjà associés, %{invalid_count} comptes avaient des noms non
+ valides"
+ partial_success: 'Compte(s) %{created_count} associé(s) avec succès. %{already_linked_count}
+ comptes étaient déjà associés : %{already_linked_names}'
+ select_connection: Choisissez une connexion Brex avant de lier des comptes.
+ success:
+ one: Compte %{count} associé avec succès
+ other: Comptes %{count} associés avec succès
+ link_existing_account:
+ account_already_linked: Ce compte est déjà lié à un fournisseur
+ api_error: 'Erreur API : %{message}'
+ invalid_account_name: Impossible de lier un compte avec un nom vide
+ missing_parameters: Paramètres requis manquants
+ no_account_specified: Aucun compte spécifié
+ no_api_token: Jeton API Brex introuvable. Veuillez le configurer dans les paramètres
+ du fournisseur.
+ provider_account_already_linked: Ce compte Brex est déjà lié à un autre compte
+ provider_account_not_found: Compte Brex introuvable
+ select_connection: Choisissez une connexion Brex avant de lier des comptes.
+ success: Liaison réussie de %{account_name} avec le Brex
+ loading:
+ loading_message: Chargement des comptes Brex...
+ loading_title: Chargement
+ provider_connection:
+ default_description: Connectez-vous à votre compte Brex
+ default_name: Brex
+ description: Connectez-vous en utilisant %{name}
+ name: Brex-%{name}
+ provider_panel:
+ accounts_link: Comptes
+ add_connection: Ajouter une connexion Brex
+ base_url_label: URL de base (facultatif)
+ base_url_placeholder: https://api.brex.com
+ configured_html: Configuré et prêt à l'emploi. Visitez l'onglet %{accounts_link}
+ pour gérer et configurer des comptes.
+ connection_name_label: Nom de la connexion
+ connection_name_placeholder: Vérification commerciale
+ default_connection_name: Connexion Brex
+ disconnect_confirm: Déconnecter %{name} ?
+ disconnect_label: Déconnecter %{name}
+ encryption_warning:
+ message: Configurez les clés de chiffrement Active Record avant d’ajouter
+ des jetons Brex en production. Sans clés de chiffrement, Sure stocke les
+ informations d’identification et les instantanés du fournisseur Brex en
+ texte brut, comme les enregistrements des autres fournisseurs.
+ title: Le chiffrement de la base de données n'est pas configuré
+ instructions:
+ copy_token_html: Copiez le jeton et ajoutez-le en tant que connexion nommée
+ ci-dessous. Bien sûr, stocke le jeton uniquement pour synchroniser cette
+ famille.
+ create_token: 'Créez un jeton API avec ces étendues en lecture seule : comptes.cash.readonly,
+ comptes.card.readonly, transactions.cash.readonly, transactions.card.readonly'
+ open_tokens: Accédez aux paramètres du développeur Brex/du jeton API de l'entreprise
+ que vous souhaitez connecter.
+ sign_in_html: Visitez %{link} et connectez-vous au compte que vous souhaitez
+ connecter
+ keep_token_placeholder: Laisser vide pour conserver le jeton actuel
+ not_configured: Non configuré
+ sandbox_note_html: Utilisez une connexion nommée distincte pour chaque jeton
+ d'entreprise/API Brex que vous souhaitez synchroniser. Laissez l’URL de base
+ vide pour la production. La mise en scène est limitée aux tests approuvés
+ par le Brex et ne fonctionne pas avec les jetons client.
+ setup_accounts: Configurer des comptes
+ setup_title: 'Instructions de configuration :'
+ sync: Synchroniser
+ token_label: Jeton
+ token_placeholder: Collez le jeton ici
+ update_connection: Mettre à jour la connexion
+ select_accounts:
+ accounts_selected: comptes sélectionnés
+ api_error: 'Erreur API : %{message}'
+ cancel: Annuler
+ configure_name_in_brex: Impossible d'importer - veuillez configurer le nom du
+ compte dans Brex
+ description: Sélectionnez les comptes que vous souhaitez associer à votre compte
+ %{product_name}.
+ link_accounts: Associer les comptes sélectionnés
+ no_accounts_found: Aucun compte trouvé. Veuillez vérifier la configuration de
+ votre jeton API.
+ no_api_token: Jeton API Brex introuvable. Veuillez le configurer dans les paramètres
+ du fournisseur.
+ no_credentials_configured: Veuillez d'abord configurer votre jeton API Brex
+ dans les paramètres du fournisseur.
+ no_name_placeholder: "(Pas de nom)"
+ select_connection: Choisissez une connexion Brex dans les paramètres du fournisseur.
+ title: Sélectionnez les comptes Brex
+ unexpected_error: Une erreur inattendue s'est produite. Veuillez réessayer plus
+ tard.
+ select_existing_account:
+ account_already_linked: Ce compte est déjà lié à un fournisseur
+ all_accounts_already_linked: Tous les comptes Brex sont déjà liés
+ api_error: 'Erreur API : %{message}'
+ cancel: Annuler
+ configure_name_in_brex: Impossible d'importer - veuillez configurer le nom du
+ compte dans Brex
+ description: Sélectionnez un compte Brex à associer à ce compte. Les transactions
+ seront synchronisées et dédupliquées automatiquement.
+ link_account: Lier le compte
+ no_account_specified: Aucun compte spécifié
+ no_accounts_found: Aucun compte Brex trouvé. Veuillez vérifier la configuration
+ de votre jeton API.
+ no_api_token: Jeton API Brex introuvable. Veuillez le configurer dans les paramètres
+ du fournisseur.
+ no_credentials_configured: Veuillez d'abord configurer votre jeton API Brex
+ dans les paramètres du fournisseur.
+ no_name_placeholder: "(Pas de nom)"
+ select_connection: Choisissez une connexion Brex dans les paramètres du fournisseur.
+ title: Lier %{account_name} au Brex
+ unexpected_error: Une erreur inattendue s'est produite. Veuillez réessayer plus
+ tard.
+ setup_accounts:
+ account_type_label: 'Type de compte :'
+ account_types:
+ credit_card: Carte de crédit
+ depository: Compte chèque ou compte d'épargne
+ investment: Compte d'investissement
+ loan: Prêt ou hypothèque
+ other_asset: Autre actif
+ skip: Ignorer ce compte
+ all_accounts_linked: Tous vos comptes Brex ont déjà été créés.
+ api_error: 'Erreur API : %{message}'
+ balance: Solde
+ cancel: Annuler
+ choose_account_type: 'Choisissez le type de compte correct pour chaque compte
+ Brex :'
+ create_accounts: Créer des comptes
+ creating_accounts: Création de comptes...
+ fetch_failed: Échec de la récupération des comptes
+ historical_data_range: 'Plage de données historiques :'
+ no_accounts_to_setup: Aucun compte à configurer
+ no_api_token: Jeton API Brex introuvable. Veuillez le configurer dans les paramètres
+ du fournisseur.
+ subtitle: Choisissez les types de comptes corrects pour vos comptes importés
+ subtype_labels:
+ credit_card: ''
+ depository: 'Sous-type de compte :'
+ investment: 'Type d''investissement :'
+ loan: 'Type de prêt :'
+ other_asset: ''
+ subtype_messages:
+ credit_card: Les cartes de crédit seront automatiquement configurées en tant
+ que comptes de carte de crédit.
+ other_asset: Aucune option supplémentaire n'est nécessaire pour les autres
+ actifs.
+ subtypes:
+ depository:
+ cd: Certificat de dépôt
+ checking: Vérification
+ hsa: Compte d'épargne santé
+ money_market: Marché monétaire
+ savings: Économies
+ investment:
+ 401k: 401(k)
+ 403b: 403b)
+ 529_plan: Régime 529
+ angel: Ange
+ brokerage: Courtage
+ hsa: Compte d'épargne santé
+ ira: IRA traditionnel
+ mutual_fund: Fonds commun de placement
+ pension: Pension
+ retirement: Retraite
+ roth_401k: Roth 401(k)
+ roth_ira: Roth IRA
+ tsp: Plan d'épargne-épargne
+ loan:
+ auto: Prêt automobile
+ mortgage: Hypothèque
+ other: Autre prêt
+ student: Prêt étudiant
+ sync_start_date_help: Sélectionnez jusqu'où vous souhaitez synchroniser l'historique
+ des transactions. Maximum 3 ans d’historique disponible.
+ sync_start_date_label: 'Commencez à synchroniser les transactions à partir de :'
+ title: Configurez vos comptes Brex
+ setup_required:
+ description: Avant de pouvoir lier des comptes Brex, vous devez configurer votre
+ jeton API Brex.
+ heading: Jeton API non configuré
+ settings_link: Accédez aux paramètres du fournisseur
+ setup_steps: 'Étapes de configuration :'
+ steps:
+ enter_token: Entrez votre jeton API Brex
+ find_section_html: Retrouvez la rubrique Brex
+ open_settings_html: Accédez à Paramètres > Fournisseurs.
+ return_to_link: Revenez ici pour lier vos comptes
+ title: Configuration Brex requise
+ statuses:
+ ACTIVE: Actif
+ CLOSED: Fermé
+ FROZEN: Congelé
+ active: Actif
+ closed: Fermé
+ frozen: Congelé
+ subtype_select:
+ placeholder:
+ subtype: Sélectionnez le sous-type
+ type: Sélectionnez le type
+ sync:
+ success: La synchronisation a commencé
+ sync_status:
+ all_synced:
+ one: Compte %{count} synchronisé
+ other: "%{count} comptes synchronisés"
+ no_accounts: Aucun compte trouvé
+ partial_setup: "%{synced} synchronisé, %{pending} doit être configuré"
+ syncer:
+ account_processing_failed:
+ one: "%{count} Le compte Brex a échoué lors du traitement."
+ other: "%{count} Les comptes Brex ont échoué lors du traitement."
+ account_sync_failed:
+ one: "%{count} La synchronisation du compte Brex n'a pas pu être planifiée."
+ other: "%{count} Les synchronisations des comptes Brex n'ont pas pu être planifiées."
+ accounts_failed:
+ one: L'importation du compte Brex %{count} a échoué.
+ other: "%{count} L'importation des comptes Brex a échoué."
+ accounts_need_setup:
+ one: Le compte %{count} doit être configuré...
+ other: Les comptes %{count} doivent être configurés...
+ calculating_balances: Calcul des soldes...
+ checking_account_configuration: Vérification de la configuration du compte...
+ credentials_invalid: Jeton API Brex ou autorisations de compte non valides
+ failed: La synchronisation a échoué. Veuillez réessayer ou contacter l'assistance.
+ import_failed: L’importation Brex a échoué.
+ importing_accounts: Importation de comptes depuis le Brex...
+ processing_transactions: Traitement des transactions...
+ transactions_failed:
+ one: Le compte %{count} Brex a connu des échecs d'importation de transactions.
+ other: "%{count} Les comptes Brex ont connu des échecs d'importation de transactions."
+ update:
+ success: Connexion Brex mise à jour
diff --git a/config/locales/views/budgets/fr.yml b/config/locales/views/budgets/fr.yml
index cf0fe89f6..42cab3ed4 100644
--- a/config/locales/views/budgets/fr.yml
+++ b/config/locales/views/budgets/fr.yml
@@ -1,33 +1,98 @@
---
fr:
+ budget_categories:
+ allocation_progress:
+ budget_exceeded_html: Budget dépassé par %{amount}
+ left_to_allocate: reste à attribuer
+ over_set: "> 100 % réglé"
+ percent_set: "%{percent} défini"
+ budget_category_form:
+ monthly_average: "%{amount}/mois en moyenne"
+ shared_placeholder: Partagé
+ shared_title: Laisser vide pour partager le budget des parents
+ confirm_button:
+ confirm: Confirmer
+ index:
+ description: Ajustez les budgets des catégories pour fixer des limites de dépenses. Les fonds non alloués seront automatiquement attribués comme non classés.
+ title: Modifiez vos budgets de catégorie
+ no_categories:
+ new_category: Nouvelle catégorie
+ no_categories_message: Vous n'avez pas encore créé ou attribué de catégories de dépenses à vos transactions.
+ oops: Oups !
+ use_defaults: Utiliser les valeurs par défaut (recommandé)
+ show:
+ budgeted: Budgétisé
+ category: Catégorie
+ left: à gauche
+ monthly_average_spending: Dépenses moyennes mensuelles
+ monthly_median_spending: Dépenses médianes mensuelles
+ no_transactions: Aucune transaction trouvée pour cette période budgétaire.
+ overspent: trop dépensé
+ overview: Aperçu
+ recent_transactions: Transactions récentes
+ spending: "%{date} dépenses"
+ status: Statut
+ view_all_transactions: Voir toutes les transactions de catégorie
budgets:
+ actuals_summary:
+ expenses: Dépenses
+ income: Revenu
+ budget_donut:
+ new_budget: Nouveau budget
+ of_budget: de %{amount}
+ spent: Dépensé
+ unused: Inutilisé
+ budget_header:
+ today: Aujourd'hui
+ budget_nav:
+ categories: Catégories
+ setup: Configuration
+ budgeted_summary:
+ budgeted: Budgétisé
+ earned: "%{amount} gagné"
+ expected_income: Revenu attendu
+ left: "%{amount} restant"
+ over: "%{amount} terminé"
+ spent: "%{amount} dépensé"
+ copy_previous:
+ already_initialized: Ce budget a déjà été configuré
+ no_source: Aucun budget précédent trouvé à copier
+ success: Budget copié depuis %{source_name}
+ copy_previous_prompt:
+ copy_button: Copier depuis %{source_name}
+ description: Vous pouvez copier votre budget depuis %{source_name} ou repartir de zéro.
+ fresh_button: Repartir de zéro
+ title: Configurez votre budget
+ edit:
+ autosuggest_description: Cela sera basé sur l’historique des transactions. L'IA peut faire des erreurs, vérifiez avant de continuer.
+ autosuggest_title: Suggestion automatique de revenus et de budget de dépenses
+ budgeted_spending: Dépenses budgétisées
+ continue: Continuer
+ expected_income: Revenu attendu
+ setup_description: Entrez vos revenus mensuels et vos dépenses prévues ci-dessous pour configurer votre budget.
+ setup_title: Configurez votre budget
name:
custom_range: "%{start} - %{end_date}"
month_year: "%{month}"
+ over_allocation_warning:
+ fix_allocations: Corriger les allocations
+ over_allocated_message: Vous avez surutilisé votre budget. Veuillez corriger vos allocations.
show:
categories:
amount: Montant
edit: Modifier
title: Catégories
+ filter:
+ all: Tous
+ aria_label: Filtrer les catégories de budget
+ on_track: Dans les clous
+ over_budget: Budget dépassé
on_track_categories:
short_title: Dans les clous
title: Dans les clous
over_budget_categories:
short_title: Dépassement
title: Budget dépassé
- filter:
- all: Tous
- on_track: Dans les clous
- over_budget: Budget dépassé
tabs:
actual: Réel
budgeted: Budgété
- copy_previous_prompt:
- title: "Configurez votre budget"
- description: "Vous pouvez copier votre budget depuis %{source_name} ou repartir de zéro."
- copy_button: "Copier depuis %{source_name}"
- fresh_button: "Repartir de zéro"
- copy_previous:
- success: "Budget copié depuis %{source_name}"
- no_source: "Aucun budget précédent trouvé à copier"
- already_initialized: "Ce budget a déjà été configuré"
diff --git a/config/locales/views/categories/fr.yml b/config/locales/views/categories/fr.yml
index fb128e309..336c45b6f 100644
--- a/config/locales/views/categories/fr.yml
+++ b/config/locales/views/categories/fr.yml
@@ -10,25 +10,60 @@ fr:
success: Catégorie créée avec succès
destroy:
success: Catégorie supprimée avec succès
+ destroy_all:
+ success: Toutes les catégories supprimées
edit:
edit: Éditer la catégorie
form:
+ auto_adjust: réglage automatique.
+ color: Couleur
+ icon: Icône
+ name_label: Nom
+ parent_category_label: Catégorie parent (facultatif)
placeholder: Nom de la catégorie
+ poor_contrast: Mauvais contraste, choisissez une couleur plus foncée ou
+ unassigned: "(non attribué)"
index:
bootstrap: Utiliser les valeurs par défaut (recommandé)
categories: Catégories
categories_expenses: Catégories de dépenses
categories_incomes: Catégories de revenus
+ delete_all: Supprimer tout
empty: Aucune catégorie trouvée
+ merge: Fusionner les catégories
new: Nouvelle catégorie
menu:
loading: Chargement...
+ merge:
+ description: Sélectionnez une catégorie cible et les catégories à y fusionner. Les transactions et lignes budgétaires correspondantes seront déplacées vers la cible.
+ select_target: Sélectionner la catégorie cible...
+ sources_hint: Les catégories sélectionnées seront supprimées une fois leurs transactions et lignes budgétaires déplacées vers la cible. Ne sélectionnez pas la cible comme source.
+ sources_label: Catégories à fusionner
+ submit: Fusionner la sélection
+ target_label: Fusionner dans (cible)
+ title: Fusionner les catégories
new:
new_category: Nouvelle catégorie
+ perform_merge:
+ invalid_categories: Catégories sélectionnées invalides
+ no_categories_selected: Aucune catégorie sélectionnée à fusionner
+ success:
+ one: Catégorie fusionnée avec succès
+ other: "%{count} catégories fusionnées avec succès"
+ target_not_found: Catégorie cible non trouvée
+ target_selected_as_source: Choisissez des catégories différentes pour la cible et les sources.
update:
success: Catégorie mise à jour avec succès
+ virtual:
+ payment: Paiement
+ trade: Commerce
+ transfer: Transfert
category:
dropdowns:
show:
bootstrap: Générer les catégories par défaut
empty: Aucune catégorie trouvée
+ expense: dépense
+ income: revenu
+ match_transfer: Correspondance transfert/paiement
+ one_time: "%{type} unique"
diff --git a/config/locales/views/category/deletions/fr.yml b/config/locales/views/category/deletions/fr.yml
index e82b7cbbb..def0cf070 100644
--- a/config/locales/views/category/deletions/fr.yml
+++ b/config/locales/views/category/deletions/fr.yml
@@ -6,9 +6,12 @@ fr:
success: Catégorie de transaction supprimée avec succès
new:
category: Catégorie
- delete_and_leave_uncategorized: Supprimer "%{category_name}" et laisser non catégorisée
- delete_and_recategorize: Supprimer "%{category_name}" et attribuer une nouvelle catégorie
+ delete_and_leave_uncategorized: Supprimer "%{category_name}" et laisser non
+ catégorisée
+ delete_and_recategorize: Supprimer "%{category_name}" et attribuer une nouvelle
+ catégorie
delete_category: Supprimer la catégorie ?
- explanation: En supprimant cette catégorie, chaque transaction qui a la catégorie "%{category_name}"
- sera non catégorisée. Au lieu de les laisser non catégorisées, vous pouvez également attribuer une nouvelle catégorie ci-dessous.
+ explanation: En supprimant cette catégorie, chaque transaction qui a la catégorie
+ "%{category_name}" sera non catégorisée. Au lieu de les laisser non catégorisées,
+ vous pouvez également attribuer une nouvelle catégorie ci-dessous.
replacement_category_prompt: Sélectionnez la catégorie
diff --git a/config/locales/views/chats/fr.yml b/config/locales/views/chats/fr.yml
index bb7a4d7e4..34b217292 100644
--- a/config/locales/views/chats/fr.yml
+++ b/config/locales/views/chats/fr.yml
@@ -1,6 +1,45 @@
---
fr:
+ assistant_messages:
+ assistant_message:
+ assistant_reasoning: Assistant de raisonnement
+ tool_calls:
+ arguments: 'Arguments :'
+ function: 'Fonction :'
+ tool_calls: Appels d'outils
chats:
- demo_banner_title: "Mode Démo Actif"
- demo_banner_message: "Vous utilisez un LLM Qwen3 open-weights avec des crédits fournis par Cloudflare Workers AI. Les résultats peuvent varier car le code a été principalement testé sur `gpt-4.1` mais vos tokens ne sont envoyés nulle part ailleurs pour être entraînés !"
- thinking: "Traitement en cours ..."
+ ai_consent:
+ available_description: Le chat IA peut répondre aux questions financières et fournir des informations basées sur vos données. Pour utiliser cette fonctionnalité, vous devrez l'activer explicitement.
+ disable_note: Désactivez à tout moment. Toutes les données envoyées à nos prestataires LLM sont anonymisées.
+ enable_button: Activer les discussions IA
+ title: Activer les discussions IA
+ unavailable_description_html: Pour utiliser l'assistant AI, vous devez définir la variable d'environnement OPENAI_ACCESS_TOKEN ou la configurer dans les paramètres d'auto-hébergement de votre instance.
+ ai_greeting:
+ commands_hint_html: Vous pouvez utiliser / pour accéder aux commandes
+ evaluate_portfolio: Évaluer le portefeuille d'investissement
+ greeting: Hé %{name} ! Je suis un modèle d'IA/grand langage qui peut vous aider avec vos finances. J'ai accès au Web et aux données de votre compte.
+ questions_intro: 'Voici quelques questions que vous pouvez poser :'
+ spending_insights: Afficher des informations sur les dépenses
+ there: là
+ unusual_patterns: Trouver des modèles inhabituels
+ chat:
+ delete_chat: Supprimer le chat
+ edit_chat_title: Modifier le titre du chat
+ chat_nav:
+ all_chats: Toutes les discussions
+ delete_chat: Supprimer le chat
+ edit_chat_title: Modifier le titre du chat
+ start_new_chat: Démarrer une nouvelle discussion
+ demo_banner_message: Vous utilisez un LLM Qwen3 open-weights avec des crédits fournis par Cloudflare Workers AI. Les résultats peuvent varier car le code a été principalement testé sur `gpt-4.1` mais vos tokens ne sont envoyés nulle part ailleurs pour être entraînés !
+ demo_banner_title: Mode Démo Actif
+ destroy:
+ notice: Le chat a été supprimé avec succès
+ error:
+ retry: Réessayer
+ index:
+ chats: Discussions
+ new_chat: Nouvelle discussion
+ thinking: Traitement en cours ...
+ update:
+ success: Chat mis à jour
+ worker_unhealthy_warning: Les réponses de l'IA peuvent ne pas être distribuées actuellement — le worker en arrière-plan semble arrêté ou surchargé. Vérifiez que votre worker Sidekiq est bien démarré.
diff --git a/config/locales/views/coinbase_items/fr.yml b/config/locales/views/coinbase_items/fr.yml
index 28fc47638..ed45f40b5 100644
--- a/config/locales/views/coinbase_items/fr.yml
+++ b/config/locales/views/coinbase_items/fr.yml
@@ -1,78 +1,82 @@
---
fr:
+ coinbase_item:
+ syncer:
+ accounts_need_setup:
+ one: "%{count} compte à configurer"
+ other: "%{count} comptes à configurer"
+ calculating_balances: Calcul des soldes…
+ checking_configuration: Vérification de la configuration du compte…
+ checking_credentials: Vérification des identifiants…
+ credentials_invalid: Identifiants API invalides. Veuillez vérifier votre clé
+ API et votre secret.
+ importing_accounts: Importation des comptes depuis Coinbase…
+ processing_accounts: Traitement des données du compte…
coinbase_items:
- create:
- default_name: Coinbase
- success: Connexion à Coinbase réussie. Vos comptes sont en cours de synchronisation.
- update:
- success: Configuration Coinbase mise à jour.
- destroy:
- success: Connexion Coinbase mise en file d'attente pour suppression.
- setup_accounts:
- title: Importer les portefeuilles Coinbase
- subtitle: Sélectionnez les portefeuilles à suivre
- instructions: Sélectionnez les portefeuilles que vous souhaitez importer. Les portefeuilles non sélectionnés resteront disponibles si vous souhaitez les ajouter plus tard.
- no_accounts: Tous les portefeuilles ont été importés.
- accounts_count:
- one: "%{count} portefeuille disponible"
- other: "%{count} portefeuilles disponibles"
- select_all: Tout sélectionner
- import_selected: Importer la sélection
- cancel: Annuler
- creating: Importation…
- complete_account_setup:
- success:
- one: "%{count} portefeuille importé"
- other: "%{count} portefeuilles importés"
- none_selected: Aucun portefeuille sélectionné
- no_accounts: Aucun portefeuille à importer
coinbase_item:
- provider_name: Coinbase
- syncing: Synchronisation…
- reconnect: Identifiants à mettre à jour
- deletion_in_progress: Suppression…
- sync_status:
- no_accounts: Aucun compte trouvé
- all_synced:
- one: "%{count} compte synchronisé"
- other: "%{count} comptes synchronisés"
- partial_sync: "%{linked_count} synchronisé(s), %{unlinked_count} à configurer"
- status: "Dernière synchronisation il y a %{timestamp}"
- status_with_summary: "Dernière synchronisation il y a %{timestamp} - %{summary}"
- status_never: Jamais synchronisé
- update_credentials: Mettre à jour les identifiants
delete: Supprimer
- no_accounts_title: Aucun compte trouvé
- no_accounts_message: Vos portefeuilles Coinbase apparaîtront ici après la synchronisation.
- setup_needed: Portefeuilles prêts à être importés
- setup_description: Sélectionnez les portefeuilles Coinbase que vous souhaitez suivre.
- setup_action: Importer les portefeuilles
+ deletion_in_progress: Suppression…
import_wallets_menu: Importer les portefeuilles
more_wallets_available:
one: "%{count} portefeuille supplémentaire disponible à l'importation"
other: "%{count} portefeuilles supplémentaires disponibles à l'importation"
- select_existing_account:
- title: Lier un compte Coinbase
- no_accounts_found: Aucun compte Coinbase trouvé.
- wait_for_sync: Attendez que Coinbase termine la synchronisation
- check_provider_health: Vérifiez que vos identifiants API Coinbase sont valides
- balance: Solde
- currently_linked_to: "Actuellement lié à : %{account_name}"
- link: Lier
- cancel: Annuler
+ no_accounts_message: Vos portefeuilles Coinbase apparaîtront ici après la synchronisation.
+ no_accounts_title: Aucun compte trouvé
+ provider_name: Coinbase
+ reconnect: Identifiants à mettre à jour
+ setup_action: Importer les portefeuilles
+ setup_description: Sélectionnez les portefeuilles Coinbase que vous souhaitez
+ suivre.
+ setup_needed: Portefeuilles prêts à être importés
+ status: Dernière synchronisation il y a %{timestamp}
+ status_never: Jamais synchronisé
+ status_with_summary: Dernière synchronisation il y a %{timestamp} - %{summary}
+ sync_status:
+ all_synced:
+ one: "%{count} compte synchronisé"
+ other: "%{count} comptes synchronisés"
+ no_accounts: Aucun compte trouvé
+ partial_sync: "%{linked_count} synchronisé(s), %{unlinked_count} à configurer"
+ syncing: Synchronisation…
+ update_credentials: Mettre à jour les identifiants
+ complete_account_setup:
+ no_accounts: Aucun portefeuille à importer
+ none_selected: Aucun portefeuille sélectionné
+ success:
+ one: "%{count} portefeuille importé"
+ other: "%{count} portefeuilles importés"
+ create:
+ default_name: Coinbase
+ success: Connexion à Coinbase réussie. Vos comptes sont en cours de synchronisation.
+ destroy:
+ success: Connexion Coinbase mise en file d'attente pour suppression.
link_existing_account:
- success: Compte Coinbase lié avec succès
errors:
- only_manual: Seuls les comptes manuels peuvent être liés à Coinbase
invalid_coinbase_account: Compte Coinbase invalide
- coinbase_item:
- syncer:
- checking_credentials: Vérification des identifiants…
- credentials_invalid: Identifiants API invalides. Veuillez vérifier votre clé API et votre secret.
- importing_accounts: Importation des comptes depuis Coinbase…
- checking_configuration: Vérification de la configuration du compte…
- accounts_need_setup:
- one: "%{count} compte à configurer"
- other: "%{count} comptes à configurer"
- processing_accounts: Traitement des données du compte…
- calculating_balances: Calcul des soldes…
+ only_manual: Seuls les comptes manuels peuvent être liés à Coinbase
+ success: Compte Coinbase lié avec succès
+ select_existing_account:
+ balance: Solde
+ cancel: Annuler
+ check_provider_health: Vérifiez que vos identifiants API Coinbase sont valides
+ currently_linked_to: 'Actuellement lié à : %{account_name}'
+ link: Lier
+ no_accounts_found: Aucun compte Coinbase trouvé.
+ title: Lier un compte Coinbase
+ wait_for_sync: Attendez que Coinbase termine la synchronisation
+ setup_accounts:
+ accounts_count:
+ one: "%{count} portefeuille disponible"
+ other: "%{count} portefeuilles disponibles"
+ cancel: Annuler
+ creating: Importation…
+ import_selected: Importer la sélection
+ instructions: Sélectionnez les portefeuilles que vous souhaitez importer. Les
+ portefeuilles non sélectionnés resteront disponibles si vous souhaitez les
+ ajouter plus tard.
+ no_accounts: Tous les portefeuilles ont été importés.
+ select_all: Tout sélectionner
+ subtitle: Sélectionnez les portefeuilles à suivre
+ title: Importer les portefeuilles Coinbase
+ update:
+ success: Configuration Coinbase mise à jour.
diff --git a/config/locales/views/coinstats_items/fr.yml b/config/locales/views/coinstats_items/fr.yml
index 84a89d621..3fc08aafe 100644
--- a/config/locales/views/coinstats_items/fr.yml
+++ b/config/locales/views/coinstats_items/fr.yml
@@ -1,75 +1,89 @@
---
fr:
coinstats_items:
- create:
- success: Connexion au fournisseur CoinStats configurée avec succès.
- default_name: Connexion CoinStats
- errors:
- validation_failed: "Validation échouée : %{message}."
- update:
- success: Connexion au fournisseur CoinStats mise à jour avec succès.
- errors:
- validation_failed: "Validation échouée : %{message}."
- destroy:
- success: Connexion au fournisseur CoinStats planifiée pour suppression.
- link_wallet:
- success: "%{count} portefeuille(s) crypto lié(s) avec succès."
- missing_params: "Paramètres requis manquants : adresse et blockchain."
- failed: Échec de la liaison du portefeuille crypto.
- error: "Échec de la liaison du portefeuille crypto : %{message}."
- link_exchange:
- success: "Plateforme d'échange %{name} liée."
- missing_params: La plateforme d'échange et les identifiants sont requis.
- invalid_exchange: La plateforme d'échange sélectionnée n'est plus prise en charge.
- failed: Échec de la liaison de la plateforme d'échange.
- error: "Échec de la liaison de la plateforme d'échange : %{message}."
- new:
- title: Lier un portefeuille crypto avec CoinStats
- blockchain_fetch_error: Échec du chargement des blockchains. Veuillez réessayer plus tard.
- link_wallet_title: Lier une adresse de portefeuille
- link_wallet_description: Suivez un portefeuille en auto-conservation ou une adresse on-chain unique via CoinStats.
- address_label: Adresse
- address_placeholder: Requis
- blockchain_label: Blockchain
- blockchain_placeholder: Requis
- blockchain_select_blank: Sélectionnez une blockchain
- link_wallet_submit: Lier le portefeuille crypto
- link_exchange_title: Lier l'API d'une plateforme d'échange
- link_exchange_description: Utilisez une clé API de plateforme d'échange en lecture seule pour que CoinStats puisse synchroniser les soldes et les transactions depuis Bitvavo, Binance et d'autres plateformes prises en charge.
- link_exchange_note: Si votre plateforme d'échange nécessite l'activation de la clé API ou la confirmation par e-mail, effectuez cette étape avant de la lier ici.
- exchange_select_blank: Sélectionnez une plateforme d'échange
- exchange_label: Plateforme d'échange
- link_exchange_submit: Lier la plateforme d'échange
- not_configured_title: Connexion au fournisseur CoinStats non configurée
- not_configured_message: Pour lier un portefeuille crypto ou une plateforme d'échange, vous devez d'abord configurer la connexion au fournisseur CoinStats.
- not_configured_step1_html: Allez dans Paramètres → Fournisseurs
- not_configured_step2_html: Localisez le fournisseur CoinStats
- not_configured_step3_html: Suivez les instructions de configuration fournies pour terminer la configuration du fournisseur
- go_to_settings: Aller aux paramètres du fournisseur
- setup_instructions: "Instructions de configuration :"
- step1_html: Visitez le tableau de bord de l'API publique CoinStats pour obtenir une clé API.
- step2: Entrez votre clé API ci-dessous et cliquez sur Configurer.
- step3_html: Après une connexion réussie, visitez l'onglet Comptes pour configurer les portefeuilles crypto.
- api_key_label: Clé API
- api_key_placeholder: Requis
- configure: Configurer
- update_configuration: Reconfigurer
- default_name: Connexion CoinStats
coinstats_item:
+ delete: Supprimer
deletion_in_progress: Les données du portefeuille crypto sont en cours de suppression…
+ no_wallets_message: Aucun portefeuille crypto n'est actuellement connecté à
+ CoinStats.
+ no_wallets_title: Aucun portefeuille crypto connecté
provider_name: CoinStats
- syncing: Synchronisation…
- sync_status:
- no_accounts: Aucun portefeuille crypto trouvé
- all_synced:
- one: "%{count} portefeuille crypto synchronisé"
- other: "%{count} portefeuilles crypto synchronisés"
- partial_sync: "%{linked_count} portefeuilles crypto synchronisés, %{unlinked_count} nécessitent une configuration"
reconnect: Reconnecter
status: Dernière synchronisation il y a %{timestamp}
status_never: Jamais synchronisé
- status_with_summary: "Dernière synchronisation il y a %{timestamp} • %{summary}"
+ status_with_summary: Dernière synchronisation il y a %{timestamp} • %{summary}
+ sync_status:
+ all_synced:
+ one: "%{count} portefeuille crypto synchronisé"
+ other: "%{count} portefeuilles crypto synchronisés"
+ no_accounts: Aucun portefeuille crypto trouvé
+ partial_sync: "%{linked_count} portefeuilles crypto synchronisés, %{unlinked_count}
+ nécessitent une configuration"
+ syncing: Synchronisation…
update_api_key: Mettre à jour la clé API
- delete: Supprimer
- no_wallets_title: Aucun portefeuille crypto connecté
- no_wallets_message: Aucun portefeuille crypto n'est actuellement connecté à CoinStats.
+ create:
+ default_name: Connexion CoinStats
+ errors:
+ validation_failed: 'Validation échouée : %{message}.'
+ success: Connexion au fournisseur CoinStats configurée avec succès.
+ destroy:
+ success: Connexion au fournisseur CoinStats planifiée pour suppression.
+ link_exchange:
+ error: 'Échec de la liaison de la plateforme d''échange : %{message}.'
+ failed: Échec de la liaison de la plateforme d'échange.
+ invalid_exchange: La plateforme d'échange sélectionnée n'est plus prise en charge.
+ missing_params: La plateforme d'échange et les identifiants sont requis.
+ success: Plateforme d'échange %{name} liée.
+ link_wallet:
+ error: 'Échec de la liaison du portefeuille crypto : %{message}.'
+ failed: Échec de la liaison du portefeuille crypto.
+ missing_params: 'Paramètres requis manquants : adresse et blockchain.'
+ success: "%{count} portefeuille(s) crypto lié(s) avec succès."
+ new:
+ address_label: Adresse
+ address_placeholder: Requis
+ api_key_label: Clé API
+ api_key_placeholder: Requis
+ blockchain_fetch_error: Échec du chargement des blockchains. Veuillez réessayer
+ plus tard.
+ blockchain_label: Blockchain
+ blockchain_placeholder: Requis
+ blockchain_select_blank: Sélectionnez une blockchain
+ configure: Configurer
+ default_name: Connexion CoinStats
+ exchange_label: Plateforme d'échange
+ exchange_select_blank: Sélectionnez une plateforme d'échange
+ go_to_settings: Aller aux paramètres du fournisseur
+ link_exchange_description: Utilisez une clé API de plateforme d'échange en lecture
+ seule pour que CoinStats puisse synchroniser les soldes et les transactions
+ depuis Bitvavo, Binance et d'autres plateformes prises en charge.
+ link_exchange_note: Si votre plateforme d'échange nécessite l'activation de
+ la clé API ou la confirmation par e-mail, effectuez cette étape avant de la
+ lier ici.
+ link_exchange_submit: Lier la plateforme d'échange
+ link_exchange_title: Lier l'API d'une plateforme d'échange
+ link_wallet_description: Suivez un portefeuille en auto-conservation ou une
+ adresse on-chain unique via CoinStats.
+ link_wallet_submit: Lier le portefeuille crypto
+ link_wallet_title: Lier une adresse de portefeuille
+ not_configured_message: Pour lier un portefeuille crypto ou une plateforme d'échange,
+ vous devez d'abord configurer la connexion au fournisseur CoinStats.
+ not_configured_step1_html: Allez dans Paramètres → Fournisseurs
+ not_configured_step2_html: Localisez le fournisseur CoinStats
+ not_configured_step3_html: Suivez les instructions de configuration
+ fournies pour terminer la configuration du fournisseur
+ not_configured_title: Connexion au fournisseur CoinStats non configurée
+ setup_instructions: 'Instructions de configuration :'
+ step1_html: Visitez le tableau de bord de l'API publique
+ CoinStats pour obtenir une clé API.
+ step2: Entrez votre clé API ci-dessous et cliquez sur Configurer.
+ step3_html: Après une connexion réussie, visitez l'onglet Comptes pour configurer les portefeuilles
+ crypto.
+ title: Lier un portefeuille crypto avec CoinStats
+ update_configuration: Reconfigurer
+ update:
+ errors:
+ validation_failed: 'Validation échouée : %{message}.'
+ success: Connexion au fournisseur CoinStats mise à jour avec succès.
diff --git a/config/locales/views/components/fr.yml b/config/locales/views/components/fr.yml
index 7774ddd38..84f6dc08a 100644
--- a/config/locales/views/components/fr.yml
+++ b/config/locales/views/components/fr.yml
@@ -1,67 +1,164 @@
---
fr:
+ UI:
+ account:
+ activity_date:
+ balance_tooltip: Le solde de fin de journée, après toutes les transactions et ajustements
+ no_balance_data: Aucune donnée de solde disponible pour cette date
+ activity_feed:
+ toggle_selection_checkboxes: Basculer la sélection
+ balance_reconciliation:
+ labels:
+ adjustments: Ajustements
+ buys: Achète
+ change_in_brokerage_cash: Variation des liquidités de courtage
+ change_in_holdings_market: Variation des holdings (activité des prix du marché)
+ change_in_holdings_trades: Evolution des holdings (achats/ventes)
+ charges: Frais
+ end_balance: Fin du solde
+ end_principal: Fin du principal
+ end_value: Valeur finale
+ final_balance: Solde final
+ final_principal: Principal final
+ final_value: Valeur finale
+ market_changes: Changements du marché
+ net_cash_flow: Flux de trésorerie net
+ net_principal_change: Variation nette du capital
+ net_value_change: Variation de la valeur nette
+ payments: Paiements
+ sells: Vend
+ start_balance: Début du solde
+ start_principal: Démarrer le principal
+ start_value: Valeur de départ
+ tooltips:
+ adjustments: Rapprochements manuels ou autres ajustements
+ adjustments_asset: Corrections de valeur ou expertises manuelles
+ buys: Achats de crypto pendant la journée
+ change_in_brokerage_cash: Variation nette des liquidités provenant des dépôts, des retraits et des transactions
+ change_in_holdings_market: Variation de la valeur des holdings en raison des mouvements des prix du marché
+ change_in_holdings_trades: Impact sur les holdings de l'achat et de la vente de titres
+ charges: Nouvelles charges effectuées dans la journée
+ end_balance: Le solde calculé après toutes les transactions
+ end_balance_investment: Le solde calculé après toute activité
+ end_principal: Le principal calculé après toutes les transactions
+ end_value: La valeur calculée après tous les changements
+ final_balance: Le solde final du compte pour la journée
+ final_balance_credit: Le solde final dû pour la journée
+ final_balance_crypto: La valeur finale des holdings cryptographiques pour la journée
+ final_balance_investment: La valeur finale du portefeuille pour la journée
+ final_principal: Le solde principal final de la journée
+ final_value: La valeur finale de l'actif pour la journée
+ market_changes: Changements de valeur dus aux mouvements des prix du marché
+ net_cash_flow: Variation nette du solde de toutes les transactions de la journée
+ net_principal_change: Remboursements du capital et nouveaux emprunts dans la journée
+ net_value_change: Tous les changements de valeur, y compris les améliorations et la dépréciation
+ payments: Paiements effectués sur la carte pendant la journée
+ sells: Ventes de crypto en journée
+ start_balance: Le solde du compte au début de cette journée
+ start_balance_credit: Le solde dû en début de journée
+ start_balance_crypto: La valeur des holdings cryptographiques au début de cette journée
+ start_balance_investment: La valeur totale du portefeuille au début de cette journée
+ start_principal: Le solde principal au début de cette journée
+ start_value: La valeur de l'actif au début de cette journée
+ chart:
+ no_data_available: Aucune donnée disponible
+ title:
+ balance: Solde
+ cash_value: Valeur de rachat
+ debt_balance: Solde de la dette
+ estimated_property_value: Valeur estimée de la propriété
+ estimated_vehicle_value: Valeur estimée du véhicule
+ holdings_value: Valeur des holdings
+ remaining_principal_balance: Solde principal restant
+ total_account_value: Valeur totale du compte
+ views:
+ cash: Espèces
+ holdings: Holdings
+ total_value: Valeur totale
+ vs_available_history: par rapport à l'historique disponible
+ period_picker:
+ aria_label: 'Période : %{period}'
+ ds:
+ alert:
+ variants:
+ destructive: Erreur
+ error: Erreur
+ info: Informations
+ success: Succès
+ warning: Avertissement
+ dialog:
+ close: Fermer
+ link:
+ opens_in_new_tab: "(ouvre dans un nouvel onglet)"
+ pill:
+ aria_label: "%{label}"
+ default_label: Aperçu
+ popover:
+ avatar_default_label: Ouvrir le menu
+ tooltip:
+ trigger_label: Plus d'informations
provider_sync_summary:
- title: Résumé de la synchronisation
- last_sync: "Dernière synchronisation : il y a %{time_ago}"
accounts:
+ institutions: 'Institutions : %{count}'
+ linked: 'Liés : %{count}'
title: Comptes
- total: "Total : %{count}"
- linked: "Liés : %{count}"
- unlinked: "Non liés : %{count}"
- institutions: "Institutions : %{count}"
- transactions:
- title: Transactions
- seen: "Vues : %{count}"
- imported: "Importées : %{count}"
- updated: "Mises à jour : %{count}"
- skipped: "Ignorées : %{count}"
- fetching: "Récupération depuis le courtier…"
- protected:
- one: "%{count} entrée protégée (non écrasée)"
- other: "%{count} entrées protégées (non écrasées)"
- view_protected: Voir les entrées protégées
- skip_reasons:
- excluded: Exclu
- user_modified: Modifié par l'utilisateur
- import_locked: Import CSV
- protected: Protégé
- holdings:
- title: Avoirs
- found: "Trouvés : %{count}"
- processed: "Traités : %{count}"
- trades:
- title: Transactions boursières
- imported: "Importées : %{count}"
- skipped: "Ignorées : %{count}"
- fetching: "Récupération des activités depuis le courtier…"
+ total: 'Total : %{count}'
+ unlinked: 'Non liés : %{count}'
health:
- title: Santé
- view_error_details: Voir les détails de l'erreur
- rate_limited: "Limité %{time_ago}"
- recently: récemment
- errors: "Erreurs : %{count}"
- pending_reconciled:
- one: "%{count} transaction en attente dupliquée réconciliée"
- other: "%{count} transactions en attente dupliquées réconciliées"
- view_reconciled: Voir les transactions réconciliées
+ data_warnings: 'Avertissements de données : %{count}'
duplicate_suggestions:
one: "%{count} doublon possible nécessite une vérification"
other: "%{count} doublons possibles nécessitent une vérification"
- view_duplicate_suggestions: Voir les doublons suggérés
+ errors: 'Erreurs : %{count}'
+ notices: 'Notifications : %{count}'
+ pending_reconciled:
+ one: "%{count} transaction en attente dupliquée réconciliée"
+ other: "%{count} transactions en attente dupliquées réconciliées"
+ rate_limited: Limité %{time_ago}
+ recently: récemment
stale_pending:
one: "%{count} transaction en attente obsolète (exclue des budgets)"
other: "%{count} transactions en attente obsolètes (exclues des budgets)"
- view_stale_pending: Voir les comptes affectés
stale_pending_count:
one: "%{count} transaction"
other: "%{count} transactions"
stale_unmatched:
one: "%{count} transaction en attente nécessite une vérification manuelle"
other: "%{count} transactions en attente nécessitent une vérification manuelle"
- view_stale_unmatched: Voir les transactions à vérifier
stale_unmatched_count:
one: "%{count} transaction"
other: "%{count} transactions"
- data_warnings: "Avertissements de données : %{count}"
- notices: "Notifications : %{count}"
+ title: Santé
view_data_quality: Voir les détails de qualité des données
+ view_duplicate_suggestions: Voir les doublons suggérés
+ view_error_details: Voir les détails de l'erreur
+ view_reconciled: Voir les transactions réconciliées
+ view_stale_pending: Voir les comptes affectés
+ view_stale_unmatched: Voir les transactions à vérifier
+ holdings:
+ found: 'Trouvés : %{count}'
+ processed: 'Traités : %{count}'
+ title: Holdings
+ last_sync: 'Dernière synchronisation : il y a %{time_ago}'
+ skip_reasons:
+ excluded: Exclu
+ import_locked: Import CSV
+ protected: Protégé
+ user_modified: Modifié par l'utilisateur
+ title: Résumé de la synchronisation
+ trades:
+ fetching: Récupération des activités depuis le courtier…
+ imported: 'Importées : %{count}'
+ skipped: 'Ignorées : %{count}'
+ title: Transactions boursières
+ transactions:
+ fetching: Récupération depuis le courtier…
+ imported: 'Importées : %{count}'
+ protected:
+ one: "%{count} entrée protégée (non écrasée)"
+ other: "%{count} entrées protégées (non écrasées)"
+ seen: 'Vues : %{count}'
+ skipped: 'Ignorées : %{count}'
+ title: Transactions
+ updated: 'Mises à jour : %{count}'
+ view_protected: Voir les entrées protégées
diff --git a/config/locales/views/credit_cards/fr.yml b/config/locales/views/credit_cards/fr.yml
index 106ce0c5a..826bc814e 100644
--- a/config/locales/views/credit_cards/fr.yml
+++ b/config/locales/views/credit_cards/fr.yml
@@ -20,6 +20,7 @@ fr:
annual_fee: Frais annuels
apr: TAEG
available_credit: Crédit disponible
+ edit_account_details: Modifier les détails du compte
expiration_date: Date d'expiration
minimum_payment: Paiement minimum
unknown: Inconnu
diff --git a/config/locales/views/cryptos/fr.yml b/config/locales/views/cryptos/fr.yml
index acef7c30a..2191919e1 100644
--- a/config/locales/views/cryptos/fr.yml
+++ b/config/locales/views/cryptos/fr.yml
@@ -5,16 +5,18 @@ fr:
edit: Éditer %{account}
form:
subtype_label: Type de compte
- subtype_prompt: Sélectionner un type de compte
subtype_none: Aucun
+ subtype_prompt: Sélectionner un type de compte
+ tax_treatment_hint: La plupart des cryptomonnaies sont détenues dans des comptes
+ imposables. Sélectionnez une autre option si elles sont détenues dans un compte
+ fiscalement avantageux.
tax_treatment_label: Traitement fiscal
- tax_treatment_hint: La plupart des cryptomonnaies sont détenues dans des comptes imposables. Sélectionnez une autre option si elles sont détenues dans un compte fiscalement avantageux.
new:
title: Saisir le solde du compte
subtypes:
- wallet:
- short: Portefeuille
- long: Portefeuille crypto
exchange:
- short: Plateforme d'échange
long: Plateforme d'échange crypto
+ short: Plateforme d'échange
+ wallet:
+ long: Portefeuille crypto
+ short: Portefeuille
diff --git a/config/locales/views/depositories/fr.yml b/config/locales/views/depositories/fr.yml
index 0a3d2eae6..d5a84a114 100644
--- a/config/locales/views/depositories/fr.yml
+++ b/config/locales/views/depositories/fr.yml
@@ -8,3 +8,19 @@ fr:
subtype_prompt: Sélectionnez le type de compte
new:
title: Saisir le solde du compte
+ subtypes:
+ cd:
+ long: Certificat de dépôt
+ short: CD
+ checking:
+ long: Compte courant
+ short: Compte courant
+ hsa:
+ long: Compte d'épargne santé
+ short: HSA
+ money_market:
+ long: Marché monétaire
+ short: MM
+ savings:
+ long: Compte d'épargne
+ short: Compte d'épargne
diff --git a/config/locales/views/email_confirmation_mailer/fr.yml b/config/locales/views/email_confirmation_mailer/fr.yml
index d32cc9b99..54bbab831 100644
--- a/config/locales/views/email_confirmation_mailer/fr.yml
+++ b/config/locales/views/email_confirmation_mailer/fr.yml
@@ -2,8 +2,9 @@
fr:
email_confirmation_mailer:
confirmation_email:
- body: Vous avez récemment demandé à modifier votre adresse e-mail. Cliquez sur le bouton ci-dessous pour confirmer cette modification.
+ body: Vous avez récemment demandé à modifier votre adresse e-mail. Cliquez sur
+ le bouton ci-dessous pour confirmer cette modification.
cta: Confirmer la modification de l'e-mail
expiry_notice: Ce lien expirera dans %{hours} heures.
greeting: Bonjour !
- subject: '%{product_name} : Confirmez le changement de votre adresse mail'
+ subject: "%{product_name} : Confirmez le changement de votre adresse mail"
diff --git a/config/locales/views/enable_banking_items/fr.yml b/config/locales/views/enable_banking_items/fr.yml
index 2b012a169..82d7fa5d0 100644
--- a/config/locales/views/enable_banking_items/fr.yml
+++ b/config/locales/views/enable_banking_items/fr.yml
@@ -1,16 +1,13 @@
---
fr:
enable_banking_items:
- errors:
- api_error: "Erreur de communication avec la banque."
- network_unreachable: "Le service bancaire est temporairement injoignable. Veuillez réessayer plus tard."
- session_invalid: "Session expirée. Veuillez reconnecter votre banque."
- unexpected: "Une erreur inattendue est survenue lors de la synchronisation."
authorize:
authorization_failed: Échec de l'initiation de l'autorisation
bank_required: Veuillez sélectionner une banque.
invalid_redirect: L'URL d'autorisation reçue est invalide. Veuillez réessayer.
- redirect_uri_not_allowed: Redirection non autorisée. Veuillez configurer `%{callback_url}` dans les paramètres de votre application Enable Banking.
+ redirect_uri_not_allowed:
+ Redirection non autorisée. Veuillez configurer `%{callback_url}`
+ dans les paramètres de votre application Enable Banking.
unexpected_error: Une erreur inattendue s'est produite. Veuillez réessayer.
callback:
authorization_error: Échec de l'autorisation
@@ -20,26 +17,78 @@ fr:
success: Connexion réussie à votre banque. Vos comptes sont en cours de synchronisation.
unexpected_error: Une erreur inattendue s'est produite. Veuillez réessayer.
complete_account_setup:
- all_skipped: Tous les comptes ont été ignorés. Vous pouvez les configurer plus tard sur la page des comptes.
+ all_skipped:
+ Tous les comptes ont été ignorés. Vous pouvez les configurer plus
+ tard sur la page des comptes.
no_accounts: Aucun compte disponible à configurer.
success: "%{count} compte(s) créé(s) avec succès !"
create:
success: Configuration d'Enable Banking réussie.
destroy:
success: La connexion Enable Banking a été mise en file d'attente pour suppression.
+ enable_banking_item:
+ delete: Supprimer
+ deletion_in_progress: Suppression en cours
+ last_synced: Dernière synchronisation il y a %{time}
+ never_synced: Jamais synchronisé
+ no_accounts_found: Aucun compte trouvé
+ no_accounts_found_description:
+ Aucun compte n'a été trouvé à partir d'Enable
+ Banking. Essayez à nouveau de synchroniser.
+ provider_name: Enable Banking
+ reconnect: Reconnecter
+ set_up_accounts: Configurer des comptes
+ setup_needed: Configuration nécessaire
+ setup_needed_description:
+ one: 1 compte importé depuis Enable Banking doit être configuré
+ other: "%{count} comptes importés depuis Enable Banking doivent être configurés"
+ syncing: Synchronisation...
+ update: Mise à jour
+ errors:
+ api_error: Erreur de communication avec la banque.
+ network_unreachable:
+ Le service bancaire est temporairement injoignable. Veuillez
+ réessayer plus tard.
+ session_invalid: Session expirée. Veuillez reconnecter votre banque.
+ unexpected: Une erreur inattendue est survenue lors de la synchronisation.
link_accounts:
already_linked: Les comptes sélectionnés sont déjà liés.
link_failed: Échec de la liaison des comptes
no_accounts_selected: Aucun compte sélectionné.
- no_session: Aucune connexion Enable Banking active. Veuillez d'abord vous connecter à une banque.
+ no_session:
+ Aucune connexion Enable Banking active. Veuillez d'abord vous connecter
+ à une banque.
success: "%{count} compte(s) lié(s) avec succès."
link_existing_account:
- success: Compte lié avec succès à Enable Banking
errors:
- only_manual: Seuls les comptes manuels peuvent être liés
invalid_enable_banking_account: Compte Enable Banking sélectionné invalide
+ only_manual: Seuls les comptes manuels peuvent être liés
+ success: Compte lié avec succès à Enable Banking
new:
+ add_connection: Ajouter une connexion
+ configured: Configuré
+ connect_bank: Connecter la banque
+ connected_bank: Banque connectée
+ connection: Connexion
+ go_to_provider_settings: Accédez aux paramètres du fournisseur
link_enable_banking_title: Lier Enable Banking
+ not_configured: Connexion Enable Banking non configurée
+ not_configured_description:
+ Avant de pouvoir associer des comptes Enable Banking,
+ vous devez configurer votre connexion Enable Banking.
+ ready_to_connect: Prêt à connecter une banque
+ reconnect: Reconnecter
+ remove: Supprimer
+ remove_confirm: Êtes-vous sûr de vouloir supprimer cette connexion ?
+ session_expired: Session expirée - réautorisation requise
+ session_expires: La session expire
+ setup_step_1_html: Accédez à Paramètres → Fournisseurs.
+ setup_step_2_html: Recherchez la section Enable Banking.
+ setup_step_3: Entrez vos identifiants Enable Banking
+ setup_step_4: Revenez ici pour lier vos comptes
+ setup_steps_title: "Étapes de configuration :"
+ sync: Synchroniser
+ unknown: Inconnu
reauthorize:
invalid_redirect: L'URL d'autorisation reçue est invalide. Veuillez réessayer.
reauthorization_failed: Échec de la réautorisation
@@ -50,11 +99,42 @@ fr:
credentials_required: Veuillez d'abord configurer vos identifiants Enable Banking.
description: Sélectionnez la banque que vous souhaitez connecter à vos comptes.
no_banks: Aucune banque disponible pour ce pays/région.
- no_search_results: "Aucun établissement ne correspond à votre recherche."
+ no_search_results: Aucun établissement ne correspond à votre recherche.
+ search_label: Rechercher votre banque
search_placeholder: Recherchez votre banque...
- search_label: "Rechercher votre banque"
title: Sélectionnez votre banque
+ select_existing_account:
+ all_linked: Tous les comptes Enable Banking semblent déjà liés.
+ balance: Solde
+ cancel: Annuler
+ link: Lier
+ title: Lier le compte Enable Banking
+ try_after_sync:
+ Si vous venez de vous connecter ou de synchroniser, réessayez
+ une fois la synchronisation terminée.
+ unlink_to_move:
+ Pour associer un autre compte, dissociez-le d'abord à partir
+ du menu d'actions du compte.
setup_accounts:
- psd2_savings_notice: "Remarque : Certains comptes d'épargne réglementés français (Livret A, PEL, LEP, LDDS) peuvent avoir un accès limité ou inexistant via l'Open Banking (DSP2). Si un compte d'épargne est manquant, vous pouvez l'ajouter manuellement."
+ account_type_label: "Type de compte :"
+ balance: Solde
+ cancel: Annuler
+ choose_account_type:
+ "Choisissez le type de compte correct pour chaque compte
+ Enable Banking :"
+ create_accounts: Créer des comptes
+ creating_accounts: Création de comptes...
+ header_subtitle: Choisissez les types de comptes corrects pour vos comptes importés
+ historical_data_range: "Plage de données historiques :"
+ psd2_savings_notice:
+ "Remarque : Certains comptes d'épargne réglementés français
+ (Livret A, PEL, LEP, LDDS) peuvent avoir un accès limité ou inexistant via
+ l'Open Banking (DSP2). Si un compte d'épargne est manquant, vous pouvez
+ l'ajouter manuellement."
+ sync_start_date_help:
+ Sélectionnez jusqu'où vous souhaitez synchroniser l'historique
+ des transactions. Maximum 2 ans d'historique disponible.
+ sync_start_date_label: "Commencez à synchroniser les transactions à partir de :"
+ title: Configurer vos comptes Enable Banking
update:
success: Configuration d'Enable Banking mise à jour.
diff --git a/config/locales/views/entries/fr.yml b/config/locales/views/entries/fr.yml
index 9130dcba3..5c37f859f 100644
--- a/config/locales/views/entries/fr.yml
+++ b/config/locales/views/entries/fr.yml
@@ -6,18 +6,22 @@ fr:
destroy:
success: Entrée supprimée
empty:
- description: Essayez d'ajouter une entrée, de modifier les filtres ou d'affiner votre recherche
+ description: Essayez d'ajouter une entrée, de modifier les filtres ou d'affiner
+ votre recherche
title: Aucune entrée trouvée
loading:
loading: Chargement des entrées...
+ protection:
+ description: Vos modifications sur cette entrée ne seront pas écrasées par la
+ synchronisation du fournisseur.
+ locked_fields_label: 'Champs verrouillés :'
+ title: Protégée contre la synchronisation
+ tooltip: Protégée contre la synchronisation
+ unlock_button: Autoriser la mise à jour par la synchronisation
+ unlock_confirm: Autoriser la synchronisation à mettre à jour cette entrée ?
+ Vos modifications pourraient être écrasées lors de la prochaine synchronisation.
+ unlock:
+ success: Entrée déverrouillée. Elle pourra être mise à jour lors de la prochaine
+ synchronisation.
update:
success: Entrée mise à jour
- unlock:
- success: Entrée déverrouillée. Elle pourra être mise à jour lors de la prochaine synchronisation.
- protection:
- tooltip: Protégée contre la synchronisation
- title: Protégée contre la synchronisation
- description: Vos modifications sur cette entrée ne seront pas écrasées par la synchronisation du fournisseur.
- locked_fields_label: "Champs verrouillés :"
- unlock_button: Autoriser la mise à jour par la synchronisation
- unlock_confirm: Autoriser la synchronisation à mettre à jour cette entrée ? Vos modifications pourraient être écrasées lors de la prochaine synchronisation.
diff --git a/config/locales/views/family_exports/fr.yml b/config/locales/views/family_exports/fr.yml
index 1d5b4b601..9b979fc6d 100644
--- a/config/locales/views/family_exports/fr.yml
+++ b/config/locales/views/family_exports/fr.yml
@@ -4,28 +4,46 @@ fr:
access_denied: Accès refusé
create:
success: L'exportation a commencé. Vous pourrez bientôt la télécharger.
- delete_confirmation: Êtes-vous sûr de vouloir supprimer cette exportation ? Cette action est irréversible.
- delete_failed_confirmation: Êtes-vous sûr de vouloir supprimer cette exportation qui a échoué ?
+ delete_confirmation: Êtes-vous sûr de vouloir supprimer cette exportation ? Cette
+ action est irréversible.
+ delete_failed_confirmation: Êtes-vous sûr de vouloir supprimer cette exportation
+ qui a échoué ?
destroy:
success: Exportation supprimée avec succès
export_not_ready: Exportation non prête pour le téléchargement
exporting: Exporte...
index:
- title: Exportations
new: Nouvelle exportation
- table:
title: Exportations
+ new:
+ accounts_and_balances: Tous les comptes et soldes
+ cancel: Annuler
+ categories_tags_rules: Catégories, balises et règles
+ dialog_subtitle: Téléchargez toutes vos données financières
+ dialog_title: Exportez vos données
+ export_data: Exporter des données
+ investment_trades: Métiers d'investissement
+ note_description: Cette exportation inclut toutes vos données, mais seules certaines
+ d'entre elles peuvent être réimportées via la fonction d'importation CSV.
+ Nous prenons en charge les importations de comptes, de transactions (avec
+ catégorie et balises) et commerciales. Les autres données du compte ne peuvent
+ pas être importées et sont uniquement destinées à vos dossiers.
+ note_label: Remarque
+ transaction_history: Historique des transactions
+ whats_included: 'Ce qui est inclus :'
+ table:
+ empty: Aucune exportation pour l'instant.
header:
+ actions: Actions
date: Date
filename: Nom de fichier
status: Statut
- actions: Actions
row:
- status:
- in_progress: En cours
- complete: Terminé
- failed: Échoué
actions:
delete: Supprimer
download: Télécharger
- empty: Aucune exportation pour l'instant.
+ status:
+ complete: Terminé
+ failed: Échoué
+ in_progress: En cours
+ title: Exportations
diff --git a/config/locales/views/goal_pledges/fr.yml b/config/locales/views/goal_pledges/fr.yml
new file mode 100644
index 000000000..93a6ab3c6
--- /dev/null
+++ b/config/locales/views/goal_pledges/fr.yml
@@ -0,0 +1,20 @@
+---
+fr:
+ goal_pledges:
+ create:
+ success: Promesse enregistrée. Sure la confirmera lors de la prochaine synchronisation.
+ destroy:
+ not_open: Seules les promesses en cours peuvent être annulées.
+ success: Promesse annulée.
+ new:
+ account_label: Sur le compte
+ amount_label: Montant
+ helper_manual: Sure enregistrera cela lors de votre prochaine modification manuelle de solde et confirmera la contribution.
+ helper_transfer: Sure recherchera un dépôt correspondant sur votre compte lié. La promesse reste en attente pendant 7 jours, puis se confirme automatiquement dès que Sure le détecte.
+ preview_nonzero: Atteindra {percent}%, {newTotal} sur {target}.
+ preview_reached: Atteint votre objectif de {target}. Objectif atteint !
+ preview_zero: Actuellement {current} sur {target} enregistrés.
+ submit: Enregistrer la promesse
+ renew:
+ not_open: Seules les promesses en cours peuvent être prolongées.
+ success: Fenêtre de promesse prolongée de 7 jours.
diff --git a/config/locales/views/goals/fr.yml b/config/locales/views/goals/fr.yml
new file mode 100644
index 000000000..840659ef9
--- /dev/null
+++ b/config/locales/views/goals/fr.yml
@@ -0,0 +1,277 @@
+---
+fr:
+ goals:
+ archive:
+ invalid_transition: L'objectif ne peut pas être archivé dans son état actuel.
+ success: Objectif archivé.
+ color_picker:
+ auto_adjust: ajustement automatique.
+ color_heading: Couleur
+ icon_heading: Icône
+ poor_contrast: Contraste faible, choisissez une couleur plus sombre ou
+ trigger_label: Choisir la couleur et l'icône
+ complete:
+ invalid_transition: L'objectif ne peut pas être marqué comme terminé dans son état actuel.
+ success: Objectif marqué comme terminé.
+ create:
+ success: Objectif créé.
+ destroy:
+ archive_first: Archivez l'objectif avant de le supprimer.
+ success: Objectif supprimé.
+ edit:
+ heading: Modifier l'objectif
+ save: Enregistrer les modifications
+ empty_state:
+ add_account: Ajouter un compte
+ body: Définissez un objectif, liez les comptes sur lesquels vous épargnez et suivez vos progrès.
+ heading: Aucun objectif pour le moment
+ new_goal: Créer votre premier objectif
+ no_depository_accounts: Vous devez posséder au moins un compte de dépôt (chèque, épargne, HSA, compte à terme) avant de créer un objectif.
+ subtitle: Définissez un objectif et commencez à épargner pour l'atteindre.
+ errors:
+ not_found: Cet objectif n'a pas pu être trouvé. Il a peut-être été supprimé.
+ form:
+ create: Créer l'objectif
+ errors:
+ accounts_required: Sélectionnez au moins un compte de financement.
+ amount_required: Définissez une cible supérieure à zéro.
+ name_required: Donnez un nom à votre objectif.
+ fields:
+ color: Couleur
+ earmark_for: Affecter un montant pour %{account}
+ earmark_hint: Laissez le montant vide pour dédier la totalité du solde de ce compte.
+ funding_accounts: Comptes de financement
+ funding_accounts_hint: Le solde de cet objectif correspond au solde (ou à la part affectée) de ces comptes.
+ name: Nom
+ name_placeholder: Fonds d'urgence, Apport maison…
+ notes: Notes (facultatif)
+ notes_placeholder: Un rappel pour plus tard…
+ target_amount: Montant cible
+ target_date: Date cible
+ whole_balance: Solde total
+ save: Enregistrer les modifications
+ subtypes:
+ cd: Compte à terme
+ checking: Compte courant
+ hsa: HSA
+ money_market: Marché monétaire
+ other: Autre
+ savings: Épargne
+ suggested_no_date: Définissez une date cible pour projeter la fin.
+ suggested_with_date: Épargnez {monthly}/mois sur {accounts} pour l'atteindre à temps.
+ goal_card:
+ accounts:
+ one: 1 compte
+ other: "%{count} comptes"
+ aria_progress: "%{percent}% sur %{target}"
+ completed: Terminé
+ days_left:
+ one: 1 jour restant
+ other: "%{count} jours restants"
+ footer_archived: Archivé
+ footer_catch_up: Épargnez %{amount}/mois pour rattraper
+ footer_last_days:
+ one: Dernière promesse rapprochée il y a 1 jour
+ other: Dernière promesse rapprochée il y a %{count} jours
+ footer_last_today: Dernière promesse rapprochée aujourd'hui
+ footer_no_deadline: Ouvert
+ footer_no_pledges: Aucune promesse rapprochée
+ footer_paused: En pause
+ footer_reached: Objectif atteint
+ left: restant
+ n_accounts: "%{first} +%{count}"
+ no_accounts: Aucun compte lié
+ no_target_date: Ouvert
+ pace_no_target: Moy. %{avg}/mois
+ pace_with_target: "%{avg}/mois · cible %{target}/mois"
+ past_due: Échu
+ pending_count:
+ one: 1 en attente
+ other: "%{count} en en attente"
+ pending_pledge: Promesse en attente
+ index:
+ archived_section:
+ heading: Archivés
+ chips:
+ all: Tous
+ behind: En retard
+ completed: Terminé
+ no_target_date: Ouvert
+ on_track: En bonne voie
+ paused: En pause
+ empty_filtered: Aucun objectif ne correspond.
+ goals_section:
+ heading: Objectifs
+ subtitle: Épargnez pour ce qui compte.
+ kpi:
+ contributed_label: Contribué · 30 derniers jours
+ needs_this_month_label: Requis ce mois-ci
+ needs_this_month_sub:
+ one: 1 objectif en retard
+ other: "%{count} objectifs en retard"
+ needs_this_month_zero_sub: Aucun objectif en retard
+ on_track_all_caught_up: À jour
+ on_track_label: Objectifs en bonne voie
+ on_track_sub_all_good: Tous les objectifs actifs sont en bonne voie
+ on_track_sub_parts:
+ behind:
+ one: 1 en retard
+ other: "%{count} en retard"
+ no_date:
+ one: 1 sans date limite
+ other: "%{count} sans date limite"
+ paused:
+ one: 1 en pause
+ other: "%{count} en pause"
+ reached:
+ one: 1 atteint
+ other: "%{count} atteints"
+ on_track_value: "%{on_track} sur %{total}"
+ velocity_delta_down: "↓ %{percent}%% vs 30 jours précédents"
+ velocity_delta_flat: vs 30 jours précédents
+ velocity_delta_up: "↑ %{percent}%% vs 30 jours précédents"
+ velocity_delta_zero_base: Premiers 30 jours d'activité
+ new_goal: Nouvel objectif
+ ongoing_section:
+ heading: Objectifs
+ pending_pledges_callout: Vous avez des promesses en attente. Sure les confirmera lors de la prochaine synchronisation.
+ search:
+ aria_label: Rechercher des objectifs
+ clear_search: Effacer la recherche
+ empty: Aucun objectif ne correspond.
+ empty_with_both: Aucun objectif ne correspond à "%{query}" avec ce filtre.
+ empty_with_filter: Aucun objectif ne correspond à ce filtre.
+ empty_with_query: Aucun objectif ne correspond à "%{query}".
+ placeholder: Rechercher des objectifs…
+ show_all: Tout afficher
+ subtitle: Épargnez pour ce qui compte.
+ title: Objectifs
+ new:
+ heading: Nouvel objectif
+ subtitle: Épargnez pour un projet spécifique.
+ pause:
+ invalid_transition: L'objectif ne peut pas être mis en pause dans son état actuel.
+ success: Objectif mis en pause.
+ reopen:
+ invalid_transition: L'objectif ne peut pas être réouvert dans son état actuel.
+ success: Objectif réouvert.
+ resume:
+ invalid_transition: L'objectif ne peut pas être repris dans son état actuel.
+ success: Objectif repris.
+ show:
+ archive: Archiver
+ archived_banner:
+ body: Restaurez-le pour continuer à y contribuer, ou conservez-le comme archive.
+ restore_cta: Restaurer l'objectif
+ title: Cet objectif est archivé
+ catch_up:
+ adjust_target_cta: Ajuster l'objectif à la place
+ body: Rythme actuel %{avg}/mois · requis %{required}/mois pour atteindre votre objectif.
+ title: Épargnez %{amount}/mois de plus pour rattraper le retard
+ celebration:
+ archive_cta: Archiver l'objectif
+ body: Objectif clôturé à %{saved} sur %{target}. Conservez-le, ou archivez-le dès maintenant.
+ heading: Objectif atteint. Bon travail !
+ complete: Marquer comme terminé
+ confirm_archive_body: Les objectifs archivés disparaissent de la liste principale. Vous pourrez les restaurer plus tard.
+ confirm_archive_cta: Archiver
+ confirm_archive_title: Archiver cet objectif ?
+ confirm_complete_body: Il quittera la liste En cours. Vous pourrez toujours l'archiver ou le restaurer plus tard.
+ confirm_complete_body_short: Vous êtes à %{progress}%, %{saved} sur %{target}. Marquer comme terminé enregistrera cela comme votre réussite à la place de l'objectif initial. Continuer, ou fermer ceci et ajuster l'objectif à la place ?
+ confirm_complete_cta: Marquer comme terminé
+ confirm_complete_title: Marquer cet objectif comme terminé ?
+ delete: Supprimer définitivement
+ edit: Modifier
+ empty:
+ body: Effectuez un virement sur votre compte lié. Sure le détectera lors de la prochaine synchronisation. Ou mettez à jour manuellement le solde du compte.
+ heading: Aucun dépôt pour l'instant
+ funding_accounts:
+ earmarked_of: "%{earmarked} affectés sur %{balance}"
+ empty:
+ body: Modifiez l'objectif pour lier les comptes de dépôt sur lesquels vous épargnez.
+ heading: Aucun compte de financement lié pour l'instant
+ funding_accounts_heading: Comptes de financement
+ funding_last_30d: 30 derniers jours
+ funding_last_90d: 90 derniers jours
+ header:
+ target: 'Cible : %{amount}'
+ target_by: 'Objectif : %{amount} d''ici le %{date}'
+ target_by_past: 'Objectif : %{amount} · attendu le %{date}'
+ inactive:
+ body: "%{saved} sur %{target} épargnés pour l'instant."
+ heading_archived: Cet objectif est archivé
+ heading_paused: Cet objectif est en pause
+ no_target_date:
+ body: Définissez une date limite pour projeter une fin et suivre le rythme requis.
+ cta: Définir la date cible
+ heading: Ajouter une date cible
+ notes: Notes
+ pause: Pause
+ paused_banner:
+ body: Reprenez-le pour continuer à suivre vos progrès.
+ resume_cta: Reprendre l'objectif
+ title: Cet objectif est en pause
+ pending_pledge:
+ body_manual: Se confirme lors de votre prochaine modification manuelle de solde.
+ body_transfer: Se confirme automatiquement lorsque Sure détecte un dépôt correspondant lors de la prochaine synchronisation.
+ cancel: Annuler
+ confirm_cancel_body: La promesse de %{amount} sera supprimée. Vous pourrez en enregistrer une nouvelle à tout moment.
+ confirm_cancel_cta: Annuler la promesse
+ confirm_cancel_title: Annuler cette promesse ?
+ extend: Prolonger de 7 jours
+ pledged_at: Promesse faite il y a %{time_ago}
+ title:
+ one: 'En attente : %{amount} vers %{account} · 1 jour restant'
+ other: 'En attente : %{amount} vers %{account} · %{count} jours restants'
+ zero: 'En attente : %{amount} vers %{account} · expire aujourd''hui'
+ pledge_just_saved: Enregistrer l'argent mis de côté
+ pledge_just_transferred: Enregistrer un virement effectué
+ projection:
+ aria_label: Graphique de projection pour %{name}
+ behind: Insuffisant au rythme actuel.
+ heading: Projection
+ legend_projection: Projection
+ legend_required: Requis
+ legend_saved: Épargné
+ no_pace: Aucun dépôt pour le moment. Ajoutez de l'argent sur un compte lié pour démarrer la projection.
+ no_target_date: Aucune date cible définie. Définissez-en une pour projeter la fin.
+ on_track_html: Au rythme actuel, vous atteindrez cet objectif vers le %{date}.
+ reached: Vous avez atteint l'objectif. Aucune projection nécessaire.
+ today_marker: Aujourd'hui
+ tooltip_projected: 'Projeté : %{amount}'
+ tooltip_saved: 'Épargné : %{amount}'
+ tooltip_target_relation: "%{percent}% de la cible de %{target}"
+ record_pledge_cta: Enregistrer une promesse
+ reopen: Réouvrir l'objectif
+ resume: Reprendre
+ ring:
+ aria_label: Objectif complété à %{percent}%. %{amount} sur %{target} épargnés.
+ market_value: Valeur de marché %{amount}
+ of: sur %{target}
+ of_target: de l'objectif
+ saved: Épargné
+ to_go: "%{amount} restant(s)"
+ status_callout:
+ behind: épargnez %{amount}/mois de plus pour rattraper le retard
+ behind_covered: les promesses en attente comblent le retard
+ no_target_date: définissez une date cible pour projeter une date de fin
+ on_track: atteindra l'objectif vers %{date}
+ unarchive: Restaurer
+ states:
+ active: Actif
+ archived: Archivé
+ completed: Terminé
+ paused: En pause
+ status:
+ archived: Archivé
+ behind: En retard
+ completed: Terminé
+ no_target_date: Ouvert
+ on_track: En bonne voie
+ paused: En pause
+ reached: Atteint
+ unarchive:
+ invalid_transition: L'objectif ne peut pas être restauré dans son état actuel.
+ success: Objectif restauré.
+ update:
+ success: Objectif mis à jour.
diff --git a/config/locales/views/holdings/fr.yml b/config/locales/views/holdings/fr.yml
index 4d2c360d0..2f92109db 100644
--- a/config/locales/views/holdings/fr.yml
+++ b/config/locales/views/holdings/fr.yml
@@ -3,98 +3,117 @@ fr:
holdings:
cash:
brokerage_cash: Liquidités de courtage
- destroy:
- success: Avoir supprimé
- update:
- success: Coût de revient enregistré.
- error: Valeur de coût de revient invalide.
- unlock_cost_basis:
- success: Coût de revient déverrouillé. Il pourra être mis à jour lors de la prochaine synchronisation.
- remap_security:
- success: Titre mis à jour avec succès.
- security_not_found: Impossible de trouver le titre sélectionné.
- reset_security:
- success: Titre réinitialisé à la valeur du fournisseur.
- sync_prices:
- success: Données de marché synchronisées avec succès.
- unavailable: La synchronisation des données de marché n'est pas disponible pour les titres hors ligne.
- provider_error: Impossible de récupérer les derniers cours. Veuillez réessayer dans quelques minutes.
- errors:
- security_collision: "Réaffectation impossible : vous avez déjà un avoir pour %{ticker} au %{date}."
- cost_basis_sources:
- manual: Défini par l'utilisateur
- calculated: À partir des transactions boursières
- provider: Depuis le fournisseur
cost_basis_cell:
- unknown: "--"
- set_cost_basis_header: "Définir le coût de revient pour %{ticker} (%{qty} actions)"
- total_cost_basis_label: Coût de revient total
- or_per_share_label: "Ou saisir par action :"
- per_share: par action
cancel: Annuler
- save: Enregistrer
+ or_per_share_label: 'Ou saisir par action :'
+ overwrite_confirm_body: Cela remplacera le coût de revient actuel de %{current}.
overwrite_confirm_title: Écraser le coût de revient ?
- overwrite_confirm_body: "Cela remplacera le coût de revient actuel de %{current}."
+ per_share: par action
+ save: Enregistrer
+ set: Ensemble
+ set_cost_basis_header: Définir le coût de revient pour %{ticker} (%{qty} actions)
+ total_cost_basis_label: Coût de revient total
+ unknown: "--"
+ cost_basis_sources:
+ calculated: À partir des transactions boursières
+ manual: Défini par l'utilisateur
+ provider: Depuis le fournisseur
+ destroy:
+ cannot_delete: Vous ne pouvez pas supprimer cette exploitation
+ success: Holding supprimé
+ errors:
+ security_collision: 'Réaffectation impossible : vous avez déjà un holding pour
+ %{ticker} au %{date}.'
holding:
+ no_cost_basis: Aucun coût de revient
per_share: par action
shares: "%{qty} actions"
unknown: "--"
- no_cost_basis: Aucun coût de revient
index:
average_cost: Coût moyen
- holdings: Avoirs
+ holdings: Holdings
name: Nom
new_holding: Nouvelle activité
- no_holdings: Aucun avoir à afficher.
+ no_holdings: Aucun holding à afficher.
return: Rendement total
weight: Poids
missing_price_tooltip:
- description: Cet investissement a des valeurs manquantes et nous ne pouvons pas calculer
- son rendement ou sa valeur.
+ description: Cet investissement a des valeurs manquantes et nous ne pouvons
+ pas calculer son rendement ou sa valeur.
missing_data: Données manquantes
+ remap_security:
+ security_not_found: Impossible de trouver le titre sélectionné.
+ success: Titre mis à jour avec succès.
+ reset_security:
+ success: Titre réinitialisé à la valeur du fournisseur.
show:
avg_cost_label: Coût moyen
+ book_value_label: Valeur comptable
+ cancel: Annuler
+ cost_basis_locked_description: Votre coût de revient défini manuellement ne
+ sera pas modifié par les synchronisations.
+ cost_basis_locked_label: Le coût de revient est verrouillé
current_market_price_label: Prix de marché actuel
delete: Supprimer
- delete_subtitle: Cela supprimera l'avoir et toutes vos transactions boursières associées sur ce compte. Cette action ne peut pas être annulée.
- delete_title: Supprimer l'avoir
+ delete_subtitle: Cela supprimera l'holding et toutes vos transactions boursières
+ associées sur ce compte. Cette action ne peut pas être annulée.
+ delete_title: Supprimer l'holding
edit_security: Modifier le titre
history: Historique
- no_trade_history: Aucun historique de transactions boursières disponible pour cet avoir.
- overview: Aperçu
- portfolio_weight_label: Poids du portefeuille
- settings: Paramètres
- security_label: Titre
- originally: "était %{ticker}"
- search_security: Rechercher un titre
- search_security_placeholder: Rechercher par ticker ou par nom
- cancel: Annuler
- remap_security: Enregistrer
- provider_disabled_warning: "Mises à jour des cours en pause — le fournisseur %{provider} est désactivé. Passez à un autre fournisseur ci-dessous ou réactivez-le dans les Paramètres."
- truncated_history_warning: "L'historique des cours n'est disponible qu'à partir du %{date}. Les dates antérieures ne disposent d'aucune donnée du fournisseur sélectionné — cela peut se produire lorsque l'actif a été coté après la date de votre transaction boursière, ou lorsque le fournisseur n'offre qu'une fenêtre historique limitée avec son forfait actuel."
- switch_provider_label: Changer de fournisseur
- switch_provider_description: "%{provider} est désactivé. Recherchez ce titre auprès d'un autre fournisseur activé."
- switch_provider_button: Changer
- no_security_provider: Aucun fournisseur de titres configuré. Impossible de rechercher des titres.
- security_remapped_label: Titre réaffecté
- provider_sent: "Envoyé par le fournisseur : %{ticker}"
- reset_to_provider: Réinitialiser au fournisseur
- reset_confirm_title: Réinitialiser le titre au fournisseur ?
- reset_confirm_body: "Cela changera le titre de %{current} à %{original} et déplacera toutes les transactions boursières associées."
- ticker_label: Ticker
- trade_history_entry: "%{qty} actions de %{security} à %{price}"
- total_return_label: Rendement total
- unknown: Inconnu
- cost_basis_locked_label: Le coût de revient est verrouillé
- cost_basis_locked_description: Votre coût de revient défini manuellement ne sera pas modifié par les synchronisations.
- unlock_cost_basis: Déverrouiller
- unlock_confirm_title: Déverrouiller le coût de revient ?
- unlock_confirm_body: Cela permettra au coût de revient d'être mis à jour par les synchronisations du fournisseur ou les calculs de transactions boursières.
- shares_label: Actions
- book_value_label: Valeur comptable
- market_value_label: Valeur marchande
+ last_price_update: Dernière mise à jour du cours
market_data_label: Données de marché
market_data_sync_button: Actualiser
- last_price_update: Dernière mise à jour du cours
- syncing: Synchronisation…
+ market_value_label: Valeur marchande
never: Jamais
+ no_security_provider: Aucun fournisseur de titres configuré. Impossible de rechercher
+ des titres.
+ no_trade_history: Aucun historique de transactions boursières disponible pour
+ cet holding.
+ originally: était %{ticker}
+ overview: Aperçu
+ portfolio_weight_label: Poids du portefeuille
+ provider_disabled_warning: Mises à jour des cours en pause — le fournisseur
+ %{provider} est désactivé. Passez à un autre fournisseur ci-dessous ou réactivez-le
+ dans les Paramètres.
+ provider_sent: 'Envoyé par le fournisseur : %{ticker}'
+ remap_security: Enregistrer
+ reset_confirm_body: Cela changera le titre de %{current} à %{original} et déplacera
+ toutes les transactions boursières associées.
+ reset_confirm_title: Réinitialiser le titre au fournisseur ?
+ reset_to_provider: Réinitialiser au fournisseur
+ search_security: Rechercher un titre
+ search_security_placeholder: Rechercher par ticker ou par nom
+ security_label: Titre
+ security_remapped_label: Titre réaffecté
+ settings: Paramètres
+ shares_label: Actions
+ switch_provider_button: Changer
+ switch_provider_description: "%{provider} est désactivé. Recherchez ce titre
+ auprès d'un autre fournisseur activé."
+ switch_provider_label: Changer de fournisseur
+ syncing: Synchronisation…
+ ticker_label: Ticker
+ total_return_label: Rendement total
+ trade_history_entry: "%{qty} actions de %{security} à %{price}"
+ truncated_history_warning: L'historique des cours n'est disponible qu'à partir
+ du %{date}. Les dates antérieures ne disposent d'aucune donnée du fournisseur
+ sélectionné — cela peut se produire lorsque l'actif a été coté après la date
+ de votre transaction boursière, ou lorsque le fournisseur n'offre qu'une fenêtre
+ historique limitée avec son forfait actuel.
+ unknown: Inconnu
+ unlock_confirm_body: Cela permettra au coût de revient d'être mis à jour par
+ les synchronisations du fournisseur ou les calculs de transactions boursières.
+ unlock_confirm_title: Déverrouiller le coût de revient ?
+ unlock_cost_basis: Déverrouiller
+ sync_prices:
+ provider_error: Impossible de récupérer les derniers cours. Veuillez réessayer
+ dans quelques minutes.
+ success: Données de marché synchronisées avec succès.
+ unavailable: La synchronisation des données de marché n'est pas disponible pour
+ les titres hors ligne.
+ unlock_cost_basis:
+ success: Coût de revient déverrouillé. Il pourra être mis à jour lors de la
+ prochaine synchronisation.
+ update:
+ error: Valeur de coût de revient invalide.
+ success: Coût de revient enregistré.
diff --git a/config/locales/views/ibkr_items/fr.yml b/config/locales/views/ibkr_items/fr.yml
new file mode 100644
index 000000000..59461cf56
--- /dev/null
+++ b/config/locales/views/ibkr_items/fr.yml
@@ -0,0 +1,102 @@
+---
+fr:
+ ibkr_items:
+ complete_account_setup:
+ none_created: Aucun compte n'a été créé.
+ none_selected: Aucun compte n'a été sélectionné.
+ success:
+ one: Le compte %{count} Interactive Brokers a été créé avec succès.
+ other: Comptes %{count} Interactive Brokers créés avec succès.
+ create:
+ success: Interactive Brokers configuré avec succès.
+ defaults:
+ name: Courtiers interactifs
+ destroy:
+ success: Connexion Interactive Brokers planifiée pour suppression.
+ ibkr_item:
+ accounts_need_setup: Les comptes doivent être configurés
+ accounts_need_setup_description: Certains comptes d'IBKR doivent être liés à
+ des comptes Sure.
+ delete: Supprimer
+ deletion_in_progress: Suppression en cours
+ error: Erreur
+ flex_web_service: Service Web flexible
+ never_synced: Jamais synchronisé.
+ no_accounts_discovered: Aucun compte IBKR découvert pour l'instant.
+ no_accounts_discovered_description: Exécutez une synchronisation après holding
+ configuré votre requête Flex pour découvrir les comptes.
+ requires_update: Les informations d'identification nécessitent une attention
+ particulière
+ setup_accounts: Configurer des comptes
+ synced: Synchronisé il y a %{time}. %{summary}.
+ syncing: Synchronisation
+ link_existing_account:
+ already_linked: Ce compte Interactive Brokers est déjà lié.
+ failed: Échec de l'association du compte Interactive Brokers.
+ not_found: Configuration du compte ou d'Interactive Brokers introuvable.
+ only_manual_investment: Seuls les comptes d'investissement manuels peuvent être
+ liés à Interactive Brokers.
+ success: Lié avec succès au compte Interactive Brokers.
+ select_accounts:
+ not_configured: Interactive Brokers n'est pas configuré.
+ select_existing_account:
+ balance: Solde
+ cancel: Annuler
+ link: Lien
+ no_accounts_available: Aucun compte Interactive Brokers non lié n’est encore
+ disponible.
+ run_sync_hint: Exécutez une synchronisation depuis Paramètres > Fournisseurs
+ après avoir mis à jour votre requête Flex.
+ title: Associer un compte Interactive Brokers
+ wait_for_sync: Attendez la fin de la synchronisation de la découverte du compte.
+ setup_accounts:
+ available_accounts:
+ account_id: 'Identifiant de compte : %{account_id}'
+ account_summary: "%{account_type} • Solde : %{balance}"
+ account_type_investment: Investissement
+ title: Comptes disponibles
+ buttons:
+ back_to_settings: Retour aux paramètres
+ cancel: Annuler
+ create_selected_accounts: Créer les comptes sélectionnés
+ done: Terminé
+ link: Lien
+ refresh: Actualiser
+ dialog_title: Configurez vos comptes Interactive Brokers
+ info_box:
+ items:
+ item_1: Fonds avec prix et quantités actuels
+ item_2: Base de coût par poste
+ item_3: Transactions, dividendes, commissions et dépôts ou retraits en espèces
+ title: Importation de requêtes IBKR Flex
+ warning: L'activité historique est limitée à la fenêtre de rapport de Flex
+ Query
+ link_existing:
+ description: Ou associez un compte IBKR découvert à un compte d'investissement
+ manuel existant.
+ manual_account_option: "%{name} (%{balance})"
+ select_prompt: Sélectionnez un compte...
+ linked_accounts:
+ linked_to_html: 'Lié à : %{account}'
+ title: Déjà lié
+ page_title: Configurer des comptes Interactive Brokers
+ status:
+ fetching_accounts: Récupération de comptes auprès d'Interactive Brokers...
+ no_accounts_found_description: Bien sûr, aucun compte IBKR n’a été trouvé
+ dans le dernier rapport Flex.
+ no_accounts_found_title: Aucun compte trouvé.
+ subtitle: Sélectionnez les comptes de courtage IBKR à lier.
+ sync_status:
+ all_linked:
+ one: 1 compte lié
+ other: "%{count} comptes associés"
+ no_accounts: Aucun compte IBKR découvert pour l'instant
+ partial: "%{linked} lié, %{unlinked} doit être configuré"
+ update:
+ success: La configuration d'Interactive Brokers a été mise à jour avec succès.
+ providers:
+ ibkr:
+ connection_description: Connecter un rapport de service Web Flex d'Interactive
+ Brokers
+ institution_name: Courtiers interactifs
+ name: Courtiers interactifs
diff --git a/config/locales/views/impersonation_sessions/fr.yml b/config/locales/views/impersonation_sessions/fr.yml
index e5a58194b..581465561 100644
--- a/config/locales/views/impersonation_sessions/fr.yml
+++ b/config/locales/views/impersonation_sessions/fr.yml
@@ -13,3 +13,13 @@ fr:
success: Session quittée
reject:
success: Demande rejetée
+ super_admin_bar:
+ impersonating: Usurpation d'identité
+ jobs: Emplois
+ join: Rejoindre
+ join_a_session: Rejoindre une session
+ leave: Partir
+ request_impersonation: Demander une usurpation d'identité
+ super_admin: Super administrateur
+ terminate: Terminer
+ uuid_placeholder: UUID
diff --git a/config/locales/views/imports/fr.yml b/config/locales/views/imports/fr.yml
index 51ec9b48d..eb4576e68 100644
--- a/config/locales/views/imports/fr.yml
+++ b/config/locales/views/imports/fr.yml
@@ -1,43 +1,51 @@
---
fr:
import:
- qif_category_selections:
- show:
- title: "Configurer et sélectionner"
- description: "Vérifiez le format de date détecté, puis choisissez les catégories et étiquettes de votre fichier QIF à importer dans %{product_name}."
- categories_heading: Catégories
- categories_found:
- one: "1 catégorie trouvée"
- other: "%{count} catégories trouvées"
- category_name_col: Nom de la catégorie
- transactions_col: Transactions
- tags_heading: Étiquettes
- tags_found:
- one: "1 étiquette trouvée"
- other: "%{count} étiquettes trouvées"
- tag_name_col: Nom de l'étiquette
- txn_count:
- one: "1 opération"
- other: "%{count} opérations"
- split_warning_title: Transactions scindées détectées
- split_warning_description: "Ce fichier QIF contient des transactions scindées. Les transactions scindées ne sont pas encore prises en charge : chaque transaction scindée sera importée comme une transaction unique avec son montant total et sans catégorie. Les ventilations individuelles ne seront pas conservées."
- split_badge: scindée
- empty_state_primary: Aucune catégorie ou étiquette trouvée dans ce fichier QIF.
- empty_state_secondary: Toutes les transactions seront importées sans catégories ni étiquettes.
- submit: Continuer vers la revue
cleans:
show:
+ all_rows: Toutes les lignes
+ data_cleaned: Vos données ont été nettoyées
description: Modifiez vos données dans le tableau ci-dessous. Les cellules rouges sont invalides.
+ error_rows: Lignes d'erreur
errors_notice: Vous avez des erreurs dans vos données. Survolez l'erreur pour voir les détails.
errors_notice_mobile: Vous avez des erreurs dans vos données. Cliquez sur l'icône d'aide de l'erreur pour voir les détails.
+ next_step: Étape suivante
+ not_configured: Veuillez configurer votre importation avant de continuer.
title: Nettoyez vos données
configurations:
- update:
- success: Importation configurée avec succès.
+ account_import:
+ apply_configuration: Appliquer la configuration
+ balance: Solde
+ balance_date: Date du solde
+ currency: Devise
+ date_format: Format des dates
+ default: Par défaut
+ entity_type: Type d'entité
+ leave_empty: Laisser vide
+ name: Nom
+ select_format: Sélectionnez le format
+ actual_import:
+ account_label: Compte (facultatif)
+ amount_label: Montant
+ apply_configuration: Appliquer la configuration
+ category_label: Catégorie (facultatif)
+ date_format_label: Format des dates
+ date_label: Date
+ incomes_are_negative: Les revenus sont négatifs
+ incomes_are_positive: Les revenus sont positifs
+ leave_empty: Laisser vide
+ name_label: Bénéficiaire (facultatif)
+ notes_label: Remarques (facultatif)
+ preconfigured_notice: Nous avons préconfiguré votre importation de budget réel pour vous. Veuillez passer à l'étape suivante.
+ signage_convention_label: Convention de signalétique
category_import:
button_label: Continuer
description: Téléversez un fichier CSV simple (comme celui que nous générons lorsque vous exportez vos données). Nous mapperons automatiquement les colonnes pour vous.
instructions: Sélectionnez continuer pour analyser votre CSV et passer à l'étape de nettoyage.
+ merchant_import:
+ button_label: Continuer
+ description: Téléversez un fichier CSV avec vos commerçants. Nous mapperons automatiquement les colonnes pour vous.
+ instructions: Sélectionnez continuer pour analyser votre CSV et passer à l'étape de nettoyage.
mint_import:
date_format_label: Format de date
rule_import:
@@ -48,24 +56,77 @@ fr:
description: Sélectionnez les colonnes qui correspondent à chaque champ dans votre CSV.
title: Configurez votre importation
trade_import:
+ account_label: Compte
+ apply_configuration: Appliquer la configuration
+ buys_are_negative: Les achats sont en quantité négative
+ buys_are_positive: Les achats sont en quantité positive
+ currency_label: Devise
date_format_label: Format de date
+ date_label: Date
+ default: Par défaut
+ format_label: Formater
+ leave_empty: Laisser vide
+ name_label: Nom
+ no_security_provider_warning: Le fournisseur de prix de sécurité n'est pas configuré. Vos importations commerciales fonctionneront, mais bien sûr, elles ne rempliront pas l'historique des prix. Veuillez accéder à vos paramètres pour configurer cela.
+ note_label: Remarque
+ price_label: Prix
+ quantity_label: Quantité
+ select_column: Sélectionner une colonne
+ select_format: Sélectionnez le format
+ stock_exchange_code_label: Code de bourse
+ ticker_label: Ticker
transaction_import:
+ account_label: Compte
+ amount_label: Montant
+ amount_type_label: Type de montant
+ amount_type_strategy_label: Stratégie de type de montant
+ apply_configuration: Appliquer la configuration
+ as_amount_type_column: comme colonne de type de montant
+ as_identifier_value: comme valeur d'identifiant
+ category_label: Catégorie
+ currency_label: Devise
date_format_label: Format de date
+ date_label: Date
+ default: Par défaut
+ expense_outflow: Dépense (sortie)
+ format_label: Formater
+ income_inflow: Revenu (entrée)
+ incomes_are_negative: Les revenus sont négatifs
+ incomes_are_positive: Les revenus sont positifs
+ leave_empty: Laisser vide
+ name_label: Nom
+ notes_label: Remarques
rows_to_skip_label: Ignorer les n premières lignes
+ select_column: Sélectionner une colonne
+ select_convention: Sélectionnez une convention
+ select_format: Sélectionnez le format
+ select_strategy: Sélectionnez une stratégie
+ select_type: Sélectionnez le type
+ select_value: Sélectionner une valeur
+ set: Ensemble
+ tags_label: Balises
+ treat_as_html: Traitez "%{value}" comme
+ update:
+ success: Importation configurée avec succès.
+ ynab_import:
+ account_label: Compte (facultatif)
+ amount_notice: Les montants sont détectés automatiquement à partir des colonnes Débit (Outflow) et Crédit (Inflow).
+ apply_configuration: Appliquer la configuration
+ category_label: Catégorie (facultatif)
+ date_format_label: Format de date
+ date_label: Date
+ leave_empty: Laisser vide
+ name_label: Bénéficiaire (facultatif)
+ notes_label: Mémo (facultatif)
+ preconfigured_notice: Nous avons préconfiguré votre importation YNAB pour vous. Veuillez passer à l'étape suivante.
confirms:
- sure_import:
- title: Confirmer votre importation
- description: Vérifiez les données qui seront importées depuis votre fichier d'export.
- summary: Résumé de l'importation
- empty_summary: Aucun enregistrement importable n'a été trouvé dans ce fichier. Il est peut-être vide, ou les lignes ne correspondent pas au format d'export attendu (chaque ligne doit être un objet JSON avec les clés « type » et « data », pour des types pris en charge par cet import).
- publish_button: Démarrer l'importation
- cancel: Annuler
mappings:
create_account: Créer un compte
csv_mapping_label: "%{mapping} dans le CSV"
- sure_mapping_label: "%{mapping} dans %{product_name}"
+ next: Suivant
no_accounts: Vous n'avez pas encore de comptes. Veuillez créer un compte que nous pouvons utiliser pour les lignes non affectées de votre CSV ou retournez à l'étape Nettoyer et fournissez un nom de compte que nous pouvons utiliser.
rows_label: Lignes
+ sure_mapping_label: "%{mapping} dans %{product_name}"
unassigned_account: Avez-vous besoin de créer un nouveau compte pour les lignes non affectées ?
show:
account_mapping_description: Affectez tous les comptes de votre fichier importé aux comptes existants. Vous pouvez également ajouter de nouveaux comptes ou les laisser sans catégorie.
@@ -74,167 +135,327 @@ fr:
account_type_mapping_title: Attribuez vos types de comptes
category_mapping_description: Affectez toutes les catégories importées dans votre fichier aux catégories existantes. Vous pouvez également ajouter de nouvelles catégories ou les laisser non catégorisées.
category_mapping_title: Attribuez vos catégories
+ invalid_data: Vous avez des données invalides, veuillez les modifier jusqu'à ce que toutes les erreurs soient résolues
tag_mapping_description: Affectez toutes les étiquettes importées dans votre fichier aux étiquettes existantes. Vous pouvez également ajouter de nouvelles étiquettes ou les laisser non catégorisées.
tag_mapping_title: Attribuez vos étiquettes
- uploads:
+ sure_import:
+ cancel: Annuler
+ description: Vérifiez les données qui seront importées depuis votre fichier d'export.
+ empty_summary: Aucun enregistrement importable n'a été trouvé dans ce fichier. Il est peut-être vide, ou les lignes ne correspondent pas au format d'export attendu (chaque ligne doit être un objet JSON avec les clés « type » et « data », pour des types pris en charge par cet import).
+ publish_button: Démarrer l'importation
+ summary: Résumé de l'importation
+ title: Confirmer votre importation
+ qif_category_selections:
show:
- qif_title: Téléverser le fichier QIF
- qif_description: Sélectionnez le compte auquel appartient ce fichier QIF, puis téléversez votre export .qif depuis Quicken.
- qif_account_label: Compte
- qif_account_placeholder: Sélectionner un compte…
- qif_file_prompt: pour ajouter votre fichier QIF ici
- qif_file_hint: Fichiers .qif uniquement
- qif_submit: Téléverser le QIF
+ categories_found:
+ one: 1 catégorie trouvée
+ other: "%{count} catégories trouvées"
+ categories_heading: Catégories
+ category_name_col: Nom de la catégorie
+ description: Vérifiez le format de date détecté, puis choisissez les catégories et étiquettes de votre fichier QIF à importer dans %{product_name}.
+ empty_state_primary: Aucune catégorie ou étiquette trouvée dans ce fichier QIF.
+ empty_state_secondary: Toutes les transactions seront importées sans catégories ni étiquettes.
+ split_badge: scindée
+ split_warning_description: 'Ce fichier QIF contient des transactions scindées. Les transactions scindées ne sont pas encore prises en charge : chaque transaction scindée sera importée comme une transaction unique avec son montant total et sans catégorie. Les ventilations individuelles ne seront pas conservées.'
+ split_warning_title: Transactions scindées détectées
+ submit: Continuer vers la revue
+ tag_name_col: Nom de l'étiquette
+ tags_found:
+ one: 1 étiquette trouvée
+ other: "%{count} étiquettes trouvées"
+ tags_heading: Étiquettes
+ title: Configurer et sélectionner
+ transactions_col: Transactions
+ txn_count:
+ one: 1 opération
+ other: "%{count} opérations"
+ update:
+ success: Catégories et balises enregistrées.
+ uploads:
+ handle_qif_upload:
+ qif_uploaded: Fichier QIF téléversé avec succès.
+ show:
+ account_optional_label: Compte (facultatif)
browse: Parcourir
+ copy_paste_tab: Copier et coller
csv_file_prompt: pour ajouter votre fichier CSV ici
+ csv_invalid: Doit être un CSV valide avec des en-têtes et au moins une ligne de données
description: Collez ou téléversez votre fichier CSV ci-dessous. Veuillez examiner les instructions dans le tableau ci-dessous avant de commencer.
+ download_sample_csv: Téléchargez un exemple de fichier CSV
+ drop_csv_subtitle: Votre fichier sera téléchargé automatiquement
+ drop_csv_title: Déposez le CSV pour télécharger
instructions_1: Voici un exemple de CSV avec des colonnes disponibles pour l'importation.
instructions_2: Votre CSV doit avoir une ligne d'en-tête
instructions_3: Vous pouvez nommer vos colonnes comme vous le souhaitez. Vous les associerez à un stade ultérieur.
instructions_4: Les colonnes marquées avec une étoile (*) sont des données requises.
instructions_5: Pas de virgules, pas de symboles monétaires et pas de parenthèses dans les nombres.
+ multi_account_import: Importation multi-comptes
+ paste_csv_placeholder: Collez le contenu de votre fichier CSV ici
+ qif_account_label: Compte
+ qif_account_placeholder: Sélectionner un compte…
+ qif_description: Sélectionnez le compte auquel appartient ce fichier QIF, puis téléversez votre export .qif depuis Quicken.
+ qif_file_hint: Fichiers .qif uniquement
+ qif_file_prompt: pour ajouter votre fichier QIF ici
+ qif_submit: Téléverser le QIF
+ qif_title: Téléverser le fichier QIF
title: Importez vos données
+ to_see_format: pour voir le format CSV requis
+ upload_csv_button: Télécharger CSV
+ upload_csv_tab: Télécharger CSV
sure_import:
- title: Importer depuis l'export
- description: Téléversez le fichier all.ndjson de votre export de données pour restaurer vos comptes, transactions, catégories et plus encore.
- drop_title: Déposez le NDJSON pour téléverser
- drop_subtitle: Votre fichier sera téléversé automatiquement
browse: Parcourir
browse_hint: pour ajouter votre fichier all.ndjson ici
- upload_button: Téléverser le NDJSON
+ description: Téléversez le fichier all.ndjson de votre export de données pour restaurer vos comptes, transactions, catégories et plus encore.
+ drop_subtitle: Votre fichier sera téléversé automatiquement
+ drop_title: Déposez le NDJSON pour téléverser
hint_html: Téléversez le fichier all.ndjson de l'archive ZIP d'export de vos données
ndjson_invalid: Le fichier doit être un NDJSON valide avec au moins un enregistrement
+ title: Importer depuis l'export
+ upload_button: Téléverser le NDJSON
+ update:
+ qif_uploaded: Fichier QIF téléchargé avec succès.
imports:
+ apply_template:
+ no_template_found: Aucun modèle trouvé, veuillez configurer manuellement votre importation.
+ template_applied: Modèle appliqué.
+ column_labels:
+ account: Compte
+ amount: Montant
+ category: Catégorie
+ category_color: Couleur
+ category_icon: Icône Lucide
+ category_parent: Catégorie parente
+ currency: Devise
+ date: Date
+ entity_type: Type
+ exchange: Échange
+ merchant_color: Couleur
+ merchant_website: URL du site web
+ name: Nom
+ notes: Remarques
+ price: Prix
+ qty: Quantité
+ tags: Balises
+ ticker: Ticker
+ create:
+ csv_uploaded: CSV téléversé avec succès.
+ document_provider_not_configured: Aucun magasin de vecteurs n'est configuré pour les téléversements de documents.
+ document_too_large: Le document est trop volumineux. La taille maximale est de %{max_size} Mo.
+ document_upload_failed: Nous n'avons pas pu téléverser le document dans le magasin de vecteurs. Veuillez réessayer.
+ document_uploaded: Document téléversé avec succès.
+ duplicate_pdf_unavailable: Ce PDF est déjà enregistré comme un relevé auquel vous ne pouvez pas accéder.
+ file_too_large: Le fichier est trop volumineux. La taille maximale est de %{max_size} Mo.
+ invalid_document_file_type: Type de fichier de document invalide pour le magasin de vecteurs actif.
+ invalid_file_type: Type de fichier invalide. Veuillez téléverser un fichier CSV.
+ invalid_ndjson_file_type: Type ou format de fichier invalide. Veuillez téléverser un fichier d'export .ndjson ou .json valide.
+ invalid_pdf: Le fichier téléversé n'est pas un PDF valide.
+ ndjson_uploaded: Fichier NDJSON téléversé avec succès.
+ pdf_processing: Votre PDF est en cours de traitement. Vous recevrez un e-mail lorsque l'analyse sera terminée.
+ pdf_too_large: Le fichier PDF est trop volumineux. La taille maximale est de %{max_size} Mo.
date_format:
+ description: Le format de date a été détecté automatiquement depuis votre fichier. Modifiez-le si les dates semblent incorrectes.
+ error_description: Aucun des formats de date pris en charge n'a pu analyser les dates dans ce fichier. Veuillez vérifier que le fichier contient des entrées de date valides.
+ error_title: Impossible de détecter le format de date
heading: Format de date
- description: "Le format de date a été détecté automatiquement depuis votre fichier. Modifiez-le si les dates semblent incorrectes."
- preview: "Première date analysée"
- error_title: "Impossible de détecter le format de date"
- error_description: "Aucun des formats de date pris en charge n'a pu analyser les dates dans ce fichier. Veuillez vérifier que le fichier contient des entrées de date valides."
- type_labels:
- transaction_import: "Import de transactions"
- trade_import: "Import de transactions boursières"
- account_import: "Import de comptes"
- mint_import: "Import Mint"
- qif_import: "Import QIF"
- category_import: "Import de catégories"
- rule_import: "Import de règles"
- pdf_import: "Import PDF"
- document_import: "Import de document"
- sure_import: "Import Sure"
- steps:
- upload: Téléverser
- configure: Configurer
- clean: Nettoyer
- map: Mapper
- confirm: Confirmer
- select: Sélectionner
+ preview: Première date analysée
+ destroy:
+ deleted: Votre importation a été supprimée.
+ document_types:
+ bank_statement: Relevé bancaire
+ contract: Contrat
+ credit_card_statement: Relevé de carte de crédit
+ financial_document: Document financier
+ investment_statement: Relevé d'investissement
+ other: Autre document
+ unknown: Document inconnu
+ dry_run_resources:
+ accounts: Comptes
+ balances: Soldes
+ budget_categories: Catégories budgétaires
+ budgets: Budgets
+ categories: Catégories
+ holdings: Holdings
+ merchants: Marchands
+ recurring_transactions: Transactions récurrentes
+ rejected_transfers: Transferts rejetés
+ rules: Règles
+ tags: Balises
+ trades: Métiers
+ transactions: Opérations
+ transfers: Transferts
+ valuations: Évaluations
+ empty:
+ message: Aucune importation trouvée.
+ errors:
+ custom_column_requires_inflow: Les importations de colonnes personnalisées nécessitent la sélection d'une colonne d'entrée
+ failure:
+ description: Veuillez vérifier le format de votre fichier, détecter d'éventuelles erreurs et que tous les champs obligatoires sont remplis, puis revenez et réessayez.
+ title: Échec de l'importation
+ try_again: Réessayez
+ importing:
+ back_to_dashboard: Retour au tableau de bord
+ check_status: Vérifier l'état
+ description: Votre importation est en cours. Consultez le menu des importations pour les mises à jour de statut ou cliquez sur « Vérifier le statut » pour actualiser la page pour les mises à jour. N'hésitez pas à continuer à utiliser l'application.
+ title: Importation en cours
index:
- title: Importations
new: Nouvelle importation
- table:
- title: Imports
- header:
- date: Date
- operation: Opération
- status: Statut
- actions: Actions
- row:
- type_labels:
- transaction_import: "Transaction"
- trade_import: "Transaction boursière"
- account_import: "Compte"
- mint_import: "Mint"
- qif_import: "QIF"
- category_import: "Catégorie"
- rule_import: "Règle"
- pdf_import: "PDF"
- document_import: "Document"
- sure_import: "Sure"
- status:
- in_progress: En cours
- uploading: Traitement des lignes
- reverting: Annulation en cours
- revert_failed: Annulation échouée
- complete: Terminé
- failed: Échoué
- actions:
- revert: Revenir
- confirm_revert: Cette opération supprimera les transactions importées, mais vous pourrez toujours consulter et réimporter vos données à tout moment.
- delete: Supprimer
- view: Afficher
- empty: Aucune importation pour l'instant.
+ title: Importations
+ mapping_labels:
+ account: Compte
+ account_type: Type de compte
+ category: Catégorie
+ tag: Étiquette
new:
description: Importez depuis un outil financier ou téléversez des fichiers de données bruts.
- tab_financial_tools: Outils financiers et fichiers
- tab_raw_data: Données brutes
- import_ynab: Importer depuis YNAB
import_accounts: Importer les comptes
+ import_actual: Importer à partir du budget réel
import_categories: Importer les catégories
- import_mint: Importer depuis Mint
- import_portfolio: Importer les investissements
- import_rules: Importer les règles
- import_transactions: Importer les transactions
- import_qif: Importer depuis Quicken (QIF)
- import_sure: Importer depuis Sure
- import_sure_description: Fichier .ndjson d'export complet
import_file: Importer un document
import_file_description: Analyse par IA pour les PDF et téléversement de fichiers avec recherche
+ import_merchants: Importer des commerçants
+ import_mint: Importer depuis Mint
+ import_portfolio: Importer les investissements
+ import_qif: Importer depuis Quicken (QIF)
+ import_rules: Importer les règles
+ import_sure: Importer depuis Sure
+ import_sure_description: Fichier .ndjson d'export complet
+ import_transactions: Importer les transactions
+ import_ynab: Importer depuis YNAB
requires_account: Importez d'abord des comptes pour débloquer cette option.
resume: Reprendre %{type}
sources: Sources
+ tab_financial_tools: Outils financiers et fichiers
+ tab_raw_data: Données brutes
title: Nouvelle importation
- create:
- file_too_large: Le fichier est trop volumineux. La taille maximale est de %{max_size} Mo.
- invalid_file_type: Type de fichier invalide. Veuillez téléverser un fichier CSV.
- csv_uploaded: CSV téléversé avec succès.
- ndjson_uploaded: Fichier NDJSON téléversé avec succès.
- pdf_too_large: Le fichier PDF est trop volumineux. La taille maximale est de %{max_size} Mo.
- pdf_processing: Votre PDF est en cours de traitement. Vous recevrez un e-mail lorsque l'analyse sera terminée.
- invalid_pdf: Le fichier téléversé n'est pas un PDF valide.
- document_too_large: Le document est trop volumineux. La taille maximale est de %{max_size} Mo.
- invalid_document_file_type: Type de fichier de document invalide pour le magasin de vecteurs actif.
- document_uploaded: Document téléversé avec succès.
- document_upload_failed: Nous n'avons pas pu téléverser le document dans le magasin de vecteurs. Veuillez réessayer.
- invalid_ndjson_file_type: Type ou format de fichier invalide. Veuillez téléverser un fichier d'export .ndjson ou .json valide.
- document_provider_not_configured: Aucun magasin de vecteurs n'est configuré pour les téléversements de documents.
- show:
- finalize_upload: Veuillez finaliser le téléversement de votre fichier.
- finalize_mappings: Veuillez finaliser vos correspondances avant de continuer.
+ pdf_import:
+ back_to_dashboard: Retour au tableau de bord
+ back_to_imports: Retour aux importations
+ check_status: Vérifier le statut
+ complete_description: Nous avons analysé votre PDF et voici ce que nous avons trouvé.
+ complete_title: Document analysé
+ create_account: Créer un compte
+ delete_import: Supprimer l'importation
+ document_type_label: Type de document
+ email_sent_notice: Un e-mail vous a été envoyé avec les prochaines étapes.
+ failed_description: Nous n'avons pas pu traiter votre document PDF. Veuillez réessayer ou contacter le support.
+ failed_title: Traitement échoué
+ no_accounts: Aucun compte disponible. Veuillez d'abord créer un compte.
+ processing_description: Nous analysons votre document à l'aide de l'IA. Cela peut prendre un moment. Vous recevrez un e-mail lorsque l'analyse sera terminée.
+ processing_failed_generic: 'Traitement échoué : %{error}'
+ processing_failed_with_message: "%{message}"
+ processing_title: Traitement de votre PDF
+ publish_transactions:
+ one: Publier la transaction %{count}
+ other: Publier %{count} Transactions
+ ready_for_review_description: Nous avons extrait %{count} transactions de votre relevé. Examinez-les et publiez-les pour les ajouter à votre compte.
+ ready_for_review_title: Prêt pour l'examen
+ review_transactions: Examiner les transactions
+ save_account: Enregistrer
+ select_account: Importer vers le compte
+ select_account_hint: Choisissez dans quel compte importer ces transactions.
+ select_account_placeholder: Sélectionnez un compte...
+ select_account_to_continue: Veuillez sélectionner un compte ci-dessus pour continuer.
+ source_statement: Relevé source
+ summary_label: Résumé
+ transactions_extracted: Transactions extraites
+ transactions_extracted_count:
+ one: "%{count} transaction"
+ other: "%{count} transactions"
+ try_again: Réessayer
+ unknown_document_type: Inconnu
+ unknown_state_description: Cette importation est dans un état inattendu. Veuillez retourner aux importations.
+ unknown_state_title: État inconnu
+ publish:
+ max_rows_exceeded: Votre importation dépasse le nombre maximal de lignes de %{max}.
+ started: Votre importation a démarré en arrière-plan.
ready:
+ back_to_imports: Retour aux importations
description: Voici un résumé des nouveaux éléments qui seront ajoutés à votre compte une fois que vous aurez publié cette importation.
- title: Confirmez vos données d'importation
- summary_item_label: Élément
- summary_count_label: Nombre
empty_summary: Aucun enregistrement importable n'a été trouvé dans ce fichier. Il est peut-être vide, ou les lignes ne correspondent pas au format d'export attendu (chaque ligne doit être un objet JSON avec les clés « type » et « data », pour des types pris en charge par cet import).
publish_import: Publier l'importation
- back_to_imports: Retour aux importations
- errors:
- custom_column_requires_inflow: "Les importations de colonnes personnalisées nécessitent la sélection d'une colonne d'entrée"
- document_types:
- bank_statement: Relevé bancaire
- credit_card_statement: Relevé de carte de crédit
- investment_statement: Relevé d'investissement
- financial_document: Document financier
- contract: Contrat
- other: Autre document
- unknown: Document inconnu
- pdf_import:
- processing_title: Traitement de votre PDF
- processing_description: Nous analysons votre document à l'aide de l'IA. Cela peut prendre un moment. Vous recevrez un e-mail lorsque l'analyse sera terminée.
- check_status: Vérifier le statut
+ summary_count_label: Nombre
+ summary_item_label: Élément
+ title: Confirmez vos données d'importation
+ revert:
+ started: L'importation est rétablie en arrière-plan.
+ revert_failure:
+ description: Veuillez réessayer
+ title: L'annulation de l'importation a échoué
+ try_again: Réessayez
+ show:
+ finalize_mappings: Veuillez finaliser vos correspondances avant de continuer.
+ finalize_upload: Veuillez finaliser le téléversement de votre fichier.
+ steps:
+ clean: Nettoyer
+ configure: Configurer
+ confirm: Confirmer
+ map: Mapper
+ progress: Étape %{step} de %{total}
+ select: Sélectionner
+ upload: Téléverser
+ success:
back_to_dashboard: Retour au tableau de bord
- failed_title: Traitement échoué
- failed_description: Nous n'avons pas pu traiter votre document PDF. Veuillez réessayer ou contacter le support.
- try_again: Réessayer
- delete_import: Supprimer l'importation
- complete_title: Document analysé
- complete_description: Nous avons analysé votre PDF et voici ce que nous avons trouvé.
- document_type_label: Type de document
- summary_label: Résumé
- email_sent_notice: Un e-mail vous a été envoyé avec les prochaines étapes.
- back_to_imports: Retour aux importations
- unknown_state_title: État inconnu
- unknown_state_description: Cette importation est dans un état inattendu. Veuillez retourner aux importations.
- processing_failed_with_message: "%{message}"
- processing_failed_generic: "Traitement échoué : %{error}"
+ description: Vos données importées ont été ajoutées avec succès à l'application et sont maintenant prêtes à être utilisées.
+ title: Importation réussie
+ verification:
+ checked: Vérifié
+ mismatches: Inadéquations
+ status:
+ failed: Échec
+ matched: Correspondant
+ mismatch: Inadéquation
+ not_verified: Non vérifié
+ reverted: Rétabli
+ title: Vérification de la relecture
+ table:
+ empty: Aucune importation pour l'instant.
+ header:
+ actions: Actions
+ date: Date
+ operation: Opération
+ status: Statut
+ row:
+ actions:
+ confirm_revert: Cette opération supprimera les transactions importées, mais vous pourrez toujours consulter et réimporter vos données à tout moment.
+ delete: Supprimer
+ revert: Revenir
+ view: Afficher
+ status:
+ complete: Terminé
+ failed: Échoué
+ in_progress: En cours
+ revert_failed: Annulation échouée
+ reverting: Annulation en cours
+ uploading: Traitement des lignes
+ type_labels:
+ account_import: Compte
+ actual_import: Réel
+ category_import: Catégorie
+ document_import: Document
+ merchant_import: Commerçant
+ mint_import: Mint
+ pdf_import: PDF
+ qif_import: QIF
+ rule_import: Règle
+ sure_import: Sure
+ trade_import: Transaction boursière
+ transaction_import: Transaction
+ ynab_import: YNAB
+ title: Imports
+ type_labels:
+ account_import: Import de comptes
+ actual_import: Importation réelle
+ category_import: Import de catégories
+ document_import: Import de document
+ merchant_import: Importation de commerçants
+ mint_import: Import Mint
+ pdf_import: Import PDF
+ qif_import: Import QIF
+ rule_import: Import de règles
+ sure_import: Import Sure
+ trade_import: Import de transactions boursières
+ transaction_import: Import de transactions
+ ynab_import: Importation YNAB
+ update:
+ account_saved: Compte enregistré.
+ invalid_account: Compte introuvable.
diff --git a/config/locales/views/indexa_capital_items/fr.yml b/config/locales/views/indexa_capital_items/fr.yml
index 66dce0d18..e87eeaffa 100644
--- a/config/locales/views/indexa_capital_items/fr.yml
+++ b/config/locales/views/indexa_capital_items/fr.yml
@@ -1,252 +1,258 @@
---
fr:
indexa_capital_items:
- # Model method strings (i18n for item_model.rb)
+ complete_account_setup:
+ all_skipped: Tous les comptes ont été ignorés. Aucun compte n'a été créé.
+ creation_failed: 'Échec de la création des comptes : %{error}'
+ no_accounts: Aucun compte à configurer.
+ success: "%{count} compte(s) créé(s) avec succès."
+ create:
+ success: Connexion Indexa Capital créée avec succès
+ destroy:
+ success: Connexion Indexa Capital supprimée
+ errors:
+ provider_not_configured: Le fournisseur Indexa Capital n'est pas configuré
+ index:
+ title: Connexions Indexa Capital
+ indexa_capital_item:
+ accounts_need_setup: Des comptes doivent être configurés
+ delete: Supprimer la connexion
+ deletion_in_progress: suppression en cours…
+ error: Erreur
+ more_accounts_available:
+ one: "%{count} compte supplémentaire disponible"
+ other: "%{count} comptes supplémentaires disponibles"
+ no_accounts_description: Cette connexion n'a pas encore de comptes liés.
+ no_accounts_title: Aucun compte
+ provider_name: Indexa Capital
+ requires_update: Connexion à mettre à jour
+ setup_action: Configurer les nouveaux comptes
+ setup_description: "%{linked} sur %{total} comptes liés. Choisissez les types
+ de compte pour vos comptes Indexa Capital nouvellement importés."
+ setup_needed: Nouveaux comptes prêts à être configurés
+ status: Synchronisé il y a %{timestamp} — %{summary}
+ status_never: Jamais synchronisé
+ syncing: Synchronisation…
+ total: Total
+ unlinked: Non lié
+ update_credentials: Mettre à jour les identifiants
+ institution_summary:
+ count:
+ one: "%{count} institution"
+ other: "%{count} institutions"
+ none: Aucune institution connectée
+ link_accounts:
+ all_already_linked:
+ one: Le compte sélectionné (%{names}) est déjà lié
+ other: 'Les %{count} comptes sélectionnés sont déjà liés : %{names}'
+ api_error: 'Erreur API : %{message}'
+ invalid_account_names:
+ one: Impossible de lier un compte sans nom
+ other: Impossible de lier %{count} comptes sans nom
+ link_failed: Échec de la liaison des comptes
+ no_accounts_selected: Veuillez sélectionner au moins un compte
+ no_api_key: Identifiants Indexa Capital introuvables. Veuillez les configurer
+ dans les paramètres du fournisseur.
+ partial_invalid: "%{created_count} compte(s) lié(s) avec succès, %{already_linked_count}
+ étaient déjà liés, %{invalid_count} compte(s) avaient des noms invalides"
+ partial_success: "%{created_count} compte(s) lié(s) avec succès. %{already_linked_count}
+ compte(s) étaient déjà liés : %{already_linked_names}"
+ success:
+ one: "%{count} compte lié avec succès"
+ other: "%{count} comptes liés avec succès"
+ link_existing_account:
+ account_already_linked: Ce compte est déjà lié à un fournisseur
+ api_error: 'Erreur API : %{message}'
+ invalid_account_name: Impossible de lier un compte sans nom
+ missing_parameters: Paramètres requis manquants
+ no_api_key: Identifiants Indexa Capital introuvables. Veuillez les configurer
+ dans les paramètres du fournisseur.
+ provider_account_already_linked: Ce compte Indexa Capital est déjà lié à un
+ autre compte
+ provider_account_not_found: Compte Indexa Capital introuvable
+ success: "%{account_name} lié avec succès à Indexa Capital"
+ loading:
+ loading_message: Chargement des comptes Indexa Capital…
+ loading_title: Chargement
+ panel:
+ alternative_auth: Ou utilisez plutôt l'authentification par nom d'utilisateur
+ / mot de passe…
+ field_descriptions: 'Description des champs :'
+ fields:
+ api_token:
+ description: Votre jeton API en lecture seule depuis le tableau de bord
+ Indexa Capital
+ label: Jeton API
+ placeholder_new: Collez votre jeton API ici
+ placeholder_update: Saisissez un nouveau jeton API pour mettre à jour
+ document:
+ description: Votre document / identifiant Indexa Capital
+ label: Identifiant du document
+ placeholder_new: Collez l'identifiant du document ici
+ placeholder_update: Saisissez un nouvel identifiant de document pour mettre
+ à jour
+ password:
+ description: Votre mot de passe Indexa Capital
+ label: Mot de passe
+ placeholder_new: Collez le mot de passe ici
+ placeholder_update: Saisissez un nouveau mot de passe pour mettre à jour
+ username:
+ description: Votre nom d'utilisateur / e-mail Indexa Capital
+ label: Nom d'utilisateur
+ placeholder_new: Collez le nom d'utilisateur ici
+ placeholder_update: Saisissez un nouveau nom d'utilisateur pour mettre à
+ jour
+ optional: "(Facultatif)"
+ optional_with_default: "(facultatif, valeur par défaut : %{default_value})"
+ required: "(obligatoire)"
+ save_button: Enregistrer la configuration
+ setup_instructions: 'Instructions de configuration :'
+ step_1: Rendez-vous sur votre tableau de bord Indexa Capital pour générer un
+ jeton API en lecture seule
+ step_2: Collez votre jeton API ci-dessous et cliquez sur Enregistrer
+ step_3: Après une connexion réussie, rendez-vous sur l'onglet Comptes pour configurer
+ les nouveaux comptes
+ update_button: Mettre à jour la configuration
+ preload_accounts:
+ no_credentials_configured: Veuillez d'abord configurer vos identifiants Indexa
+ Capital dans les paramètres du fournisseur.
+ select_accounts:
+ accounts_selected: comptes sélectionnés
+ api_error: 'Erreur API : %{message}'
+ cancel: Annuler
+ configure_name_in_provider: Impossible d'importer - veuillez configurer le nom
+ du compte dans Indexa Capital
+ description: Sélectionnez les comptes que vous souhaitez lier à votre compte
+ %{product_name}.
+ link_accounts: Lier les comptes sélectionnés
+ no_accounts_found: Aucun compte trouvé. Veuillez vérifier vos identifiants Indexa
+ Capital.
+ no_api_key: Les identifiants Indexa Capital ne sont pas configurés. Veuillez
+ les configurer dans les Paramètres.
+ no_credentials_configured: Veuillez d'abord configurer vos identifiants Indexa
+ Capital dans les paramètres du fournisseur.
+ no_name_placeholder: "(Sans nom)"
+ title: Sélectionner les comptes Indexa Capital
+ select_existing_account:
+ account_already_linked: Ce compte est déjà lié à un fournisseur
+ all_accounts_already_linked: Tous les comptes Indexa Capital sont déjà liés
+ api_error: 'Erreur API : %{message}'
+ balance_label: 'Solde :'
+ cancel: Annuler
+ cancel_button: Annuler
+ configure_name_in_provider: Impossible d'importer - veuillez configurer le nom
+ du compte dans Indexa Capital
+ connect_hint: Connectez un compte Indexa Capital pour activer la synchronisation
+ automatique.
+ description: Sélectionnez un compte Indexa Capital à lier avec ce compte. Les
+ transactions seront synchronisées et dédupliquées automatiquement.
+ header: Lier avec Indexa Capital
+ link_account: Lier le compte
+ link_button: Lier ce compte
+ linking_to: 'Liaison à :'
+ no_account_specified: Aucun compte spécifié
+ no_accounts: Aucun compte Indexa Capital non lié trouvé.
+ no_accounts_found: Aucun compte Indexa Capital trouvé. Veuillez vérifier vos
+ identifiants.
+ no_api_key: Les identifiants Indexa Capital ne sont pas configurés. Veuillez
+ les configurer dans les Paramètres.
+ no_credentials_configured: Veuillez d'abord configurer vos identifiants Indexa
+ Capital dans les paramètres du fournisseur.
+ no_name_placeholder: "(Sans nom)"
+ settings_link: Aller aux paramètres du fournisseur
+ subtitle: Choisissez un compte Indexa Capital
+ title: Lier %{account_name} avec Indexa Capital
+ setup_accounts:
+ account_type_label: 'Type de compte :'
+ account_types:
+ credit_card: Carte de crédit
+ crypto: Compte de cryptomonnaie
+ depository: Compte courant ou épargne
+ investment: Compte d'investissement
+ loan: Prêt ou hypothèque
+ other_asset: Autre actif
+ skip: Ignorer ce compte
+ accounts_count:
+ one: "%{count} compte disponible"
+ other: "%{count} comptes disponibles"
+ all_accounts_linked: Tous vos comptes Indexa Capital ont déjà été configurés.
+ api_error: 'Erreur API : %{message}'
+ balance: Solde
+ cancel: Annuler
+ choose_account_type: 'Choisissez le type de compte correct pour chaque compte
+ Indexa Capital :'
+ create_accounts: Créer les comptes
+ creating: Création des comptes…
+ creating_accounts: Création des comptes…
+ fetch_failed: Échec de la récupération des comptes
+ historical_data_range: 'Plage de données historiques :'
+ import_selected: Importer les comptes sélectionnés
+ instructions: Sélectionnez les comptes que vous souhaitez importer depuis Indexa
+ Capital. Vous pouvez choisir plusieurs comptes.
+ no_accounts: Aucun compte non lié trouvé pour cette connexion Indexa Capital.
+ no_accounts_to_setup: Aucun compte à configurer
+ no_api_key: Les identifiants Indexa Capital ne sont pas configurés. Veuillez
+ vérifier les paramètres de connexion.
+ select_all: Tout sélectionner
+ subtitle: Choisissez les types de compte corrects pour vos comptes importés
+ subtype_labels:
+ credit_card: ''
+ crypto: ''
+ depository: 'Sous-type de compte :'
+ investment: 'Type d''investissement :'
+ loan: 'Type de prêt :'
+ other_asset: ''
+ subtype_messages:
+ credit_card: Les cartes de crédit seront automatiquement configurées comme
+ comptes de carte de crédit.
+ crypto: Les comptes de cryptomonnaie seront configurés pour suivre les holdings
+ et les transactions.
+ other_asset: Aucune option supplémentaire nécessaire pour les autres actifs.
+ subtypes:
+ depository:
+ cd: Certificat de dépôt
+ checking: Compte courant
+ hsa: Compte épargne santé
+ money_market: Compte du marché monétaire
+ savings: Compte épargne
+ investment:
+ 401k: 401(k)
+ 403b: 403(b)
+ 529_plan: Plan 529
+ angel: Investissement providentiel
+ brokerage: Courtage
+ hsa: Compte épargne santé
+ ira: IRA traditionnel
+ mutual_fund: Fonds commun de placement
+ pension: Pension
+ retirement: Retraite
+ roth_401k: Roth 401(k)
+ roth_ira: Roth IRA
+ tsp: Plan d'épargne Thrift
+ loan:
+ auto: Prêt auto
+ mortgage: Hypothèque
+ other: Autre prêt
+ student: Prêt étudiant
+ sync_start_date_help: Sélectionnez jusqu'où vous souhaitez synchroniser l'historique
+ des transactions.
+ sync_start_date_label: 'Commencer la synchronisation des transactions à partir
+ de :'
+ title: Configurer vos comptes Indexa Capital
+ sync:
+ status:
+ calculating: Calcul des soldes…
+ checking_setup: Vérification de la configuration du compte…
+ importing: Importation des comptes depuis Indexa Capital…
+ importing_data: Importation des données du compte…
+ needs_setup: "%{count} comptes à configurer…"
+ processing: Traitement des holdings et des activités…
+ success: Synchronisation démarrée
sync_status:
- no_accounts: "Aucun compte trouvé"
+ no_accounts: Aucun compte trouvé
synced:
one: "%{count} compte synchronisé"
other: "%{count} comptes synchronisés"
synced_with_setup: "%{linked} synchronisé(s), %{unlinked} à configurer"
- institution_summary:
- none: "Aucune institution connectée"
- count:
- one: "%{count} institution"
- other: "%{count} institutions"
- errors:
- provider_not_configured: "Le fournisseur Indexa Capital n'est pas configuré"
-
- # Syncer status messages
- sync:
- status:
- importing: "Importation des comptes depuis Indexa Capital…"
- processing: "Traitement des avoirs et des activités…"
- calculating: "Calcul des soldes…"
- importing_data: "Importation des données du compte…"
- checking_setup: "Vérification de la configuration du compte…"
- needs_setup: "%{count} comptes à configurer…"
- success: "Synchronisation démarrée"
-
- # Panel (settings view)
- panel:
- setup_instructions: "Instructions de configuration :"
- step_1: "Rendez-vous sur votre tableau de bord Indexa Capital pour générer un jeton API en lecture seule"
- step_2: "Collez votre jeton API ci-dessous et cliquez sur Enregistrer"
- step_3: "Après une connexion réussie, rendez-vous sur l'onglet Comptes pour configurer les nouveaux comptes"
- field_descriptions: "Description des champs :"
- optional: "(Facultatif)"
- required: "(obligatoire)"
- optional_with_default: "(facultatif, valeur par défaut : %{default_value})"
- alternative_auth: "Ou utilisez plutôt l'authentification par nom d'utilisateur / mot de passe…"
- save_button: "Enregistrer la configuration"
- update_button: "Mettre à jour la configuration"
- fields:
- api_token:
- label: "Jeton API"
- description: "Votre jeton API en lecture seule depuis le tableau de bord Indexa Capital"
- placeholder_new: "Collez votre jeton API ici"
- placeholder_update: "Saisissez un nouveau jeton API pour mettre à jour"
- username:
- label: "Nom d'utilisateur"
- description: "Votre nom d'utilisateur / e-mail Indexa Capital"
- placeholder_new: "Collez le nom d'utilisateur ici"
- placeholder_update: "Saisissez un nouveau nom d'utilisateur pour mettre à jour"
- document:
- label: "Identifiant du document"
- description: "Votre document / identifiant Indexa Capital"
- placeholder_new: "Collez l'identifiant du document ici"
- placeholder_update: "Saisissez un nouvel identifiant de document pour mettre à jour"
- password:
- label: "Mot de passe"
- description: "Votre mot de passe Indexa Capital"
- placeholder_new: "Collez le mot de passe ici"
- placeholder_update: "Saisissez un nouveau mot de passe pour mettre à jour"
-
- # CRUD success messages
- create:
- success: "Connexion Indexa Capital créée avec succès"
update:
- success: "Connexion Indexa Capital mise à jour"
- destroy:
- success: "Connexion Indexa Capital supprimée"
- index:
- title: "Connexions Indexa Capital"
-
- # Loading states
- loading:
- loading_message: "Chargement des comptes Indexa Capital…"
- loading_title: "Chargement"
-
- # Account linking
- link_accounts:
- all_already_linked:
- one: "Le compte sélectionné (%{names}) est déjà lié"
- other: "Les %{count} comptes sélectionnés sont déjà liés : %{names}"
- api_error: "Erreur API : %{message}"
- invalid_account_names:
- one: "Impossible de lier un compte sans nom"
- other: "Impossible de lier %{count} comptes sans nom"
- link_failed: "Échec de la liaison des comptes"
- no_accounts_selected: "Veuillez sélectionner au moins un compte"
- no_api_key: "Identifiants Indexa Capital introuvables. Veuillez les configurer dans les paramètres du fournisseur."
- partial_invalid: "%{created_count} compte(s) lié(s) avec succès, %{already_linked_count} étaient déjà liés, %{invalid_count} compte(s) avaient des noms invalides"
- partial_success: "%{created_count} compte(s) lié(s) avec succès. %{already_linked_count} compte(s) étaient déjà liés : %{already_linked_names}"
- success:
- one: "%{count} compte lié avec succès"
- other: "%{count} comptes liés avec succès"
-
- # Provider item display (used in _item partial)
- indexa_capital_item:
- accounts_need_setup: "Des comptes doivent être configurés"
- delete: "Supprimer la connexion"
- deletion_in_progress: "suppression en cours…"
- error: "Erreur"
- more_accounts_available:
- one: "%{count} compte supplémentaire disponible"
- other: "%{count} comptes supplémentaires disponibles"
- no_accounts_description: "Cette connexion n'a pas encore de comptes liés."
- no_accounts_title: "Aucun compte"
- provider_name: "Indexa Capital"
- requires_update: "Connexion à mettre à jour"
- setup_action: "Configurer les nouveaux comptes"
- setup_description: "%{linked} sur %{total} comptes liés. Choisissez les types de compte pour vos comptes Indexa Capital nouvellement importés."
- setup_needed: "Nouveaux comptes prêts à être configurés"
- status: "Synchronisé il y a %{timestamp} — %{summary}"
- status_never: "Jamais synchronisé"
- syncing: "Synchronisation…"
- total: "Total"
- unlinked: "Non lié"
- update_credentials: "Mettre à jour les identifiants"
-
- # Select accounts view
- select_accounts:
- accounts_selected: "comptes sélectionnés"
- api_error: "Erreur API : %{message}"
- cancel: "Annuler"
- configure_name_in_provider: "Impossible d'importer - veuillez configurer le nom du compte dans Indexa Capital"
- description: "Sélectionnez les comptes que vous souhaitez lier à votre compte %{product_name}."
- link_accounts: "Lier les comptes sélectionnés"
- no_accounts_found: "Aucun compte trouvé. Veuillez vérifier vos identifiants Indexa Capital."
- no_api_key: "Les identifiants Indexa Capital ne sont pas configurés. Veuillez les configurer dans les Paramètres."
- no_credentials_configured: "Veuillez d'abord configurer vos identifiants Indexa Capital dans les paramètres du fournisseur."
- no_name_placeholder: "(Sans nom)"
- title: "Sélectionner les comptes Indexa Capital"
-
- # Select existing account view
- select_existing_account:
- account_already_linked: "Ce compte est déjà lié à un fournisseur"
- all_accounts_already_linked: "Tous les comptes Indexa Capital sont déjà liés"
- api_error: "Erreur API : %{message}"
- balance_label: "Solde :"
- cancel: "Annuler"
- cancel_button: "Annuler"
- configure_name_in_provider: "Impossible d'importer - veuillez configurer le nom du compte dans Indexa Capital"
- connect_hint: "Connectez un compte Indexa Capital pour activer la synchronisation automatique."
- description: "Sélectionnez un compte Indexa Capital à lier avec ce compte. Les transactions seront synchronisées et dédupliquées automatiquement."
- header: "Lier avec Indexa Capital"
- link_account: "Lier le compte"
- link_button: "Lier ce compte"
- linking_to: "Liaison à :"
- no_account_specified: "Aucun compte spécifié"
- no_accounts: "Aucun compte Indexa Capital non lié trouvé."
- no_accounts_found: "Aucun compte Indexa Capital trouvé. Veuillez vérifier vos identifiants."
- no_api_key: "Les identifiants Indexa Capital ne sont pas configurés. Veuillez les configurer dans les Paramètres."
- no_credentials_configured: "Veuillez d'abord configurer vos identifiants Indexa Capital dans les paramètres du fournisseur."
- no_name_placeholder: "(Sans nom)"
- settings_link: "Aller aux paramètres du fournisseur"
- subtitle: "Choisissez un compte Indexa Capital"
- title: "Lier %{account_name} avec Indexa Capital"
-
- # Link existing account
- link_existing_account:
- account_already_linked: "Ce compte est déjà lié à un fournisseur"
- api_error: "Erreur API : %{message}"
- invalid_account_name: "Impossible de lier un compte sans nom"
- provider_account_already_linked: "Ce compte Indexa Capital est déjà lié à un autre compte"
- provider_account_not_found: "Compte Indexa Capital introuvable"
- missing_parameters: "Paramètres requis manquants"
- no_api_key: "Identifiants Indexa Capital introuvables. Veuillez les configurer dans les paramètres du fournisseur."
- success: "%{account_name} lié avec succès à Indexa Capital"
-
- # Setup accounts wizard
- setup_accounts:
- account_type_label: "Type de compte :"
- accounts_count:
- one: "%{count} compte disponible"
- other: "%{count} comptes disponibles"
- all_accounts_linked: "Tous vos comptes Indexa Capital ont déjà été configurés."
- api_error: "Erreur API : %{message}"
- creating: "Création des comptes…"
- fetch_failed: "Échec de la récupération des comptes"
- import_selected: "Importer les comptes sélectionnés"
- instructions: "Sélectionnez les comptes que vous souhaitez importer depuis Indexa Capital. Vous pouvez choisir plusieurs comptes."
- no_accounts: "Aucun compte non lié trouvé pour cette connexion Indexa Capital."
- no_accounts_to_setup: "Aucun compte à configurer"
- no_api_key: "Les identifiants Indexa Capital ne sont pas configurés. Veuillez vérifier les paramètres de connexion."
- select_all: "Tout sélectionner"
- account_types:
- skip: "Ignorer ce compte"
- depository: "Compte courant ou épargne"
- credit_card: "Carte de crédit"
- investment: "Compte d'investissement"
- crypto: "Compte de cryptomonnaie"
- loan: "Prêt ou hypothèque"
- other_asset: "Autre actif"
- subtype_labels:
- depository: "Sous-type de compte :"
- credit_card: ""
- investment: "Type d'investissement :"
- crypto: ""
- loan: "Type de prêt :"
- other_asset: ""
- subtype_messages:
- credit_card: "Les cartes de crédit seront automatiquement configurées comme comptes de carte de crédit."
- other_asset: "Aucune option supplémentaire nécessaire pour les autres actifs."
- crypto: "Les comptes de cryptomonnaie seront configurés pour suivre les avoirs et les transactions."
- subtypes:
- depository:
- checking: "Compte courant"
- savings: "Compte épargne"
- hsa: "Compte épargne santé"
- cd: "Certificat de dépôt"
- money_market: "Compte du marché monétaire"
- investment:
- brokerage: "Courtage"
- pension: "Pension"
- retirement: "Retraite"
- "401k": "401(k)"
- roth_401k: "Roth 401(k)"
- "403b": "403(b)"
- tsp: "Plan d'épargne Thrift"
- "529_plan": "Plan 529"
- hsa: "Compte épargne santé"
- mutual_fund: "Fonds commun de placement"
- ira: "IRA traditionnel"
- roth_ira: "Roth IRA"
- angel: "Investissement providentiel"
- loan:
- mortgage: "Hypothèque"
- student: "Prêt étudiant"
- auto: "Prêt auto"
- other: "Autre prêt"
- balance: "Solde"
- cancel: "Annuler"
- choose_account_type: "Choisissez le type de compte correct pour chaque compte Indexa Capital :"
- create_accounts: "Créer les comptes"
- creating_accounts: "Création des comptes…"
- historical_data_range: "Plage de données historiques :"
- subtitle: "Choisissez les types de compte corrects pour vos comptes importés"
- sync_start_date_help: "Sélectionnez jusqu'où vous souhaitez synchroniser l'historique des transactions."
- sync_start_date_label: "Commencer la synchronisation des transactions à partir de :"
- title: "Configurer vos comptes Indexa Capital"
-
- # Complete account setup
- complete_account_setup:
- all_skipped: "Tous les comptes ont été ignorés. Aucun compte n'a été créé."
- creation_failed: "Échec de la création des comptes : %{error}"
- no_accounts: "Aucun compte à configurer."
- success: "%{count} compte(s) créé(s) avec succès."
-
- # Preload accounts
- preload_accounts:
- no_credentials_configured: "Veuillez d'abord configurer vos identifiants Indexa Capital dans les paramètres du fournisseur."
+ success: Connexion Indexa Capital mise à jour
diff --git a/config/locales/views/investments/fr.yml b/config/locales/views/investments/fr.yml
index 865bb546b..543753dd8 100644
--- a/config/locales/views/investments/fr.yml
+++ b/config/locales/views/investments/fr.yml
@@ -11,116 +11,181 @@ fr:
show:
chart_title: Valeur totale
subtypes:
- # United States
- brokerage:
- short: Courtier
- long: Courtier
401k:
- short: 401(k)
long: 401(k)
- roth_401k:
- short: Roth 401(k)
- long: Roth 401(k)
+ short: 401(k)
403b:
- short: 403(b)
long: 403(b)
+ short: 403(b)
457b:
- short: 457(b)
long: 457(b)
- tsp:
- short: TSP
- long: Plan d'épargne fédéral américain (TSP)
- ira:
- short: IRA
- long: Compte de retraite individuel (IRA)
- roth_ira:
- short: Roth IRA
- long: Compte de retraite individuel Roth (Roth IRA)
- sep_ira:
- short: SEP IRA
- long: Plan de retraite simplifié pour employés (SEP-IRA)
- simple_ira:
- short: SIMPLE IRA
- long: Plan d'épargne salariale (SIMPLE IRA)
+ short: 457(b)
529_plan:
- short: Plan 529
long: Plan 529 d'épargne-études
- hsa:
- short: HSA
- long: Compte d'épargne santé
- ugma:
- short: UGMA
- long: Compte de garde UGMA
- utma:
- short: UTMA
- long: Compte de garde UTMA
- # United Kingdom
- isa:
- short: ISA
- long: Plan d'épargne individuel britannique (ISA)
- lisa:
- short: LISA
- long: Plan d'épargne individuel à vie (LISA)
- sipp:
- short: SIPP
- long: Plan de retraite individuel auto-géré (SIPP)
- workplace_pension_uk:
- short: Pension
- long: Pension d'entreprise
- # Canada
- rrsp:
- short: REER
- long: Régime enregistré d'épargne-retraite
- tfsa:
- short: CELI
- long: Compte d'épargne libre d'impôt
- resp:
- short: REEE
- long: Régime enregistré d'épargne-études
- lira:
- short: CRI
- long: Compte de retraite immobilisé
- rrif:
- short: FERR
- long: Fonds enregistré de revenu de retraite
- # Australia
- super:
- short: Super
- long: Superannuation
- smsf:
- short: SMSF
- long: Self-Managed Super Fund
- # Europe
- pea:
- short: PEA
- long: Plan d'Épargne en Actions
- pillar_3a:
- short: Pilier 3a
- long: Prévoyance privée (Pilier 3a)
- riester:
- short: Riester
- long: Riester-Rente
- # Generic
- pension:
- short: Retraite
- long: Retraite
- retirement:
- short: Retraite
- long: Compte de retraite
- mutual_fund:
- short: Fonds commun
- long: Fonds commun de placement
+ short: Plan 529
angel:
- short: Business angel
long: Investissement providentiel
- trust:
- short: Fiducie
- long: Fiducie
+ short: Business angel
+ apy:
+ long: Atal Pension Yojana
+ short: APY
+ brokerage:
+ long: Courtier
+ short: Courtier
+ corporate_bond:
+ long: Obligation d'entreprise
+ short: Obligation d'entreprise
+ fd:
+ long: Dépôt fixe
+ short: FD
+ g_sec:
+ long: Titres d'État (G-Secs)
+ short: G-Sec
+ gold:
+ long: Or (physique ou numérique)
+ short: Or
+ gold_etf:
+ long: FNB sur l'or
+ short: FNB sur l'or
+ gold_mf:
+ long: Fonds commun de placement en or
+ short: Or MF
+ hsa:
+ long: Compte d'épargne santé
+ short: HSA
+ indian_equity:
+ long: Actions indiennes
+ short: Actions indiennes
+ indian_etf:
+ long: ETF indien
+ short: ETF indien
+ indian_stocks:
+ long: Actions indiennes (Demat)
+ short: Actions indiennes
+ infrastructure_bond:
+ long: Obligation d'infrastructure
+ short: Lien Infra
+ ira:
+ long: Compte de retraite individuel (IRA)
+ short: IRA
+ isa:
+ long: Plan d'épargne individuel britannique (ISA)
+ short: ISA
+ kvp:
+ long: Kisan Vikas Patra
+ short: KVP
+ life_insurance:
+ long: Assurance vie
+ short: Assurance vie
+ lira:
+ long: Compte de retraite immobilisé
+ short: CRI
+ lisa:
+ long: Plan d'épargne individuel à vie (LISA)
+ short: LISA
+ mutual_fund:
+ long: Fonds commun de placement
+ short: Fonds commun
+ nps:
+ long: Système national de retraite
+ short: NPS
+ nsc:
+ long: Certificat d'épargne national
+ short: CNS
other:
- short: Autre
long: Autre investissement
+ short: Autre
+ pea:
+ long: Plan d'Épargne en Actions
+ short: PEA
+ pension:
+ long: Retraite
+ short: Retraite
+ pillar_3a:
+ long: Prévoyance privée (Pilier 3a)
+ short: Pilier 3a
+ pomis:
+ long: Régime de revenu mensuel de la poste
+ short: POMIS
+ ppf:
+ long: Fonds de prévoyance publique
+ short: FPP
+ rd:
+ long: Dépôt récurrent
+ short: DR
+ resp:
+ long: Régime enregistré d'épargne-études
+ short: REEE
+ retirement:
+ long: Compte de retraite
+ short: Retraite
+ riester:
+ long: Riester-Rente
+ short: Riester
+ roth_401k:
+ long: Roth 401(k)
+ short: Roth 401(k)
+ roth_ira:
+ long: Compte de retraite individuel Roth (Roth IRA)
+ short: Roth IRA
+ rrif:
+ long: Fonds enregistré de revenu de retraite
+ short: FERR
+ rrsp:
+ long: Régime enregistré d'épargne-retraite
+ short: REER
+ scss:
+ long: Plan d'épargne pour les seniors
+ short: SCSS
+ sdl:
+ long: Prêts de développement de l'État (SDL)
+ short: SDL
+ sep_ira:
+ long: Plan de retraite simplifié pour employés (SEP-IRA)
+ short: SEP IRA
+ sgb:
+ long: Obligation souveraine en or
+ short: SGB
+ simple_ira:
+ long: Plan d'épargne salariale (SIMPLE IRA)
+ short: SIMPLE IRA
+ sipp:
+ long: Plan de retraite individuel auto-géré (SIPP)
+ short: SIPP
+ smsf:
+ long: Self-Managed Super Fund
+ short: SMSF
+ ssy:
+ long: Sukanya Samriddhi Yojana
+ short: SSY
+ super:
+ long: Superannuation
+ short: Super
+ tax_free_bond:
+ long: Obligation non imposable
+ short: Obligation non imposable
+ tfsa:
+ long: Compte d'épargne libre d'impôt
+ short: CELI
+ trust:
+ long: Fiducie
+ short: Fiducie
+ tsp:
+ long: Plan d'épargne fédéral américain (TSP)
+ short: TSP
+ ugma:
+ long: Compte de garde UGMA
+ short: UGMA
+ utma:
+ long: Compte de garde UTMA
+ short: UTMA
+ workplace_pension_uk:
+ long: Pension d'entreprise
+ short: Pension
value_tooltip:
cash: Liquidités
holdings: Titres
total: Valeur totale du portefeuille
- total_value_tooltip: Le solde total du portefeuille correspond à la somme des liquidités (disponibles pour la négociation) et de la valeur marchande actuelle de vos titres.
+ total_value_tooltip: Le solde total du portefeuille correspond à la somme des
+ liquidités (disponibles pour la négociation) et de la valeur marchande actuelle
+ de vos titres.
diff --git a/config/locales/views/invitation_mailer/fr.yml b/config/locales/views/invitation_mailer/fr.yml
index c34494313..9fe58eccc 100644
--- a/config/locales/views/invitation_mailer/fr.yml
+++ b/config/locales/views/invitation_mailer/fr.yml
@@ -3,6 +3,7 @@ fr:
invitation_mailer:
invite_email:
accept_button: Accepter l'invitation
- body: "%{inviter} vous a invité à rejoindre sa famille %{family} sur %{product_name} !"
+ body: "%{inviter} vous a invité à rejoindre sa famille %{family} sur %{product_name}
+ !"
expiry_notice: Cette invitation expire dans %{days} jours
greeting: Bienvenue sur %{product_name} !
diff --git a/config/locales/views/invitations/fr.yml b/config/locales/views/invitations/fr.yml
index 89901ea69..d548909d4 100644
--- a/config/locales/views/invitations/fr.yml
+++ b/config/locales/views/invitations/fr.yml
@@ -9,6 +9,7 @@ fr:
title: Rejoindre %{family}
create:
existing_user_added: L'utilisateur a été ajouté à votre foyer.
+ existing_user_has_family_data: Cet utilisateur possède déjà un foyer avec des comptes. Il doit supprimer ou transférer ces comptes avant de rejoindre le vôtre.
failure: Impossible d'envoyer l'invitation
success: Invitation envoyée avec succès
destroy:
diff --git a/config/locales/views/invite_codes/fr.yml b/config/locales/views/invite_codes/fr.yml
index a222d3737..2faffaccf 100644
--- a/config/locales/views/invite_codes/fr.yml
+++ b/config/locales/views/invite_codes/fr.yml
@@ -1,6 +1,11 @@
---
fr:
invite_codes:
+ create:
+ success: Code généré
+ destroy:
+ success: Code supprimé
index:
- invite_code_description: Générez un nouveau code pour le voir affiché ici. Les codes générés qui ont été utilisés ne seront plus affichés.
+ invite_code_description: Générez un nouveau code pour le voir affiché ici. Les
+ codes générés qui ont été utilisés ne seront plus affichés.
no_invite_codes: Aucun code à afficher
diff --git a/config/locales/views/kraken_items/fr.yml b/config/locales/views/kraken_items/fr.yml
new file mode 100644
index 000000000..b04a5ee14
--- /dev/null
+++ b/config/locales/views/kraken_items/fr.yml
@@ -0,0 +1,92 @@
+---
+fr:
+ kraken_item:
+ syncer:
+ accounts_need_setup:
+ one: Le compte %{count} doit être configuré
+ other: "%{count} comptes doivent être configurés"
+ calculating_balances: Calcul des soldes...
+ checking_configuration: Vérification de la configuration du compte...
+ checking_credentials: Vérification des informations d'identification...
+ credentials_invalid: Informations d'identification de l'API Kraken invalides.
+ Veuillez vérifier votre clé API et votre secret.
+ importing_accounts: Importation de comptes depuis Kraken...
+ processing_accounts: Traitement des données du compte...
+ kraken_items:
+ complete_account_setup:
+ no_accounts: Aucun compte à importer
+ none_selected: Aucun compte sélectionné
+ success:
+ one: Compte %{count} importé
+ other: Comptes %{count} importés
+ create:
+ default_name: Kraken
+ success: Connexion réussie à Kraken. Votre compte Exchange est en cours de synchronisation.
+ destroy:
+ success: Connexion Kraken programmée pour suppression.
+ kraken_item:
+ delete: Supprimer
+ deletion_in_progress: Suppression...
+ import_accounts_menu: Compte d'importation
+ no_accounts_message: Votre compte d'échange Kraken apparaîtra ici après la synchronisation.
+ no_accounts_title: Aucun compte trouvé
+ provider_name: Kraken
+ reconnect: Les informations d'identification doivent être mises à jour
+ setup_action: Compte d'importation
+ setup_description: Importez cette connexion Kraken en tant que compte d'échange
+ Crypto.
+ setup_needed: Compte prêt à importer
+ stale_rate_warning: Le solde est approximatif car le taux de change exact pour
+ %{date} n'était pas disponible. Sera mis à jour lors de la prochaine synchronisation.
+ status: Dernière synchronisation il y a %{timestamp}
+ status_never: Jamais synchronisé
+ status_with_summary: Dernière synchronisation il y a %{timestamp} - %{summary}
+ sync_status:
+ all_synced:
+ one: Compte %{count} synchronisé
+ other: "%{count} comptes synchronisés"
+ no_accounts: Aucun compte trouvé
+ partial_sync: "%{linked_count} synchronisé, %{unlinked_count} doit être configuré"
+ syncing: Synchronisation...
+ link_accounts:
+ select_connection: Choisissez une connexion Kraken avant de lier des comptes.
+ link_existing_account:
+ errors:
+ invalid_kraken_account: Compte Kraken invalide
+ kraken_account_already_linked: Ce compte Kraken est déjà lié
+ only_manual: Seuls les comptes d'échange Crypto manuels sans lien de fournisseur
+ existant peuvent être liés à Kraken
+ select_connection: Choisissez une connexion Kraken avant de lier des comptes.
+ success: Lié avec succès au compte Kraken
+ provider_connection:
+ default_description: Lien vers un compte d'échange Kraken
+ default_name: Kraken
+ description: Lien vers %{name}
+ name: Kraken-%{name}
+ select_accounts:
+ no_credentials_configured: Ajoutez les informations d'identification de l'API
+ Kraken avant de configurer des comptes.
+ select_connection: Choisissez une connexion Kraken dans les paramètres du fournisseur.
+ select_existing_account:
+ cancel: Annuler
+ check_provider_health: Vérifiez que vos informations d'identification de l'API
+ Kraken sont valides.
+ link: Lien
+ no_accounts_found: Aucun compte Kraken trouvé.
+ title: Associer un compte Kraken
+ wait_for_sync: Attendez que Kraken termine la synchronisation.
+ setup_accounts:
+ accounts_count:
+ one: Compte %{count} disponible
+ other: "%{count} comptes disponibles"
+ cancel: Annuler
+ creating: Importation...
+ import_selected: Importer la sélection
+ instructions: Kraken importe un compte d'échange Crypto combiné pour cette connexion,
+ avec des holdings et des transactions au comptant uniquement.
+ no_accounts: Tous les comptes Kraken ont été importés.
+ select_all: Tout sélectionner
+ subtitle: Sélectionnez le compte d'échange à suivre
+ title: Importer un compte Kraken
+ update:
+ success: Connexion Kraken mise à jour avec succès.
diff --git a/config/locales/views/layout/fr.yml b/config/locales/views/layout/fr.yml
index 0cec20575..73208128b 100644
--- a/config/locales/views/layout/fr.yml
+++ b/config/locales/views/layout/fr.yml
@@ -2,24 +2,31 @@
fr:
layouts:
application:
- privacy_mode: Activer/désactiver le mode confidentialité
- skip_to_main: Aller au contenu principal
nav:
assistant: Assistant
budgets: Budgets
+ goals: Objectifs
home: Accueil
reports: Rapports
transactions: Transactions
+ privacy_mode: Activer/désactiver le mode confidentialité
+ resize_left_sidebar: Redimensionner la barre latérale des comptes
+ resize_right_sidebar: Redimensionner la barre latérale de l'assistant
+ skip_to_main: Aller au contenu principal
auth:
existing_account: Déjà un compte ?
no_account: Nouveau sur %{product_name} ?
sign_in: Se connecter
sign_up: Créer un compte
shared:
+ confirm_dialog:
+ are_you_sure: Êtes-vous sûr?
+ cannot_be_undone: Cette action ne peut pas être annulée.
+ confirm: Confirmer
footer:
privacy_policy: Politique de confidentialité
terms_of_service: Conditions d'utilisation
trial:
- open_demo: Démo ouverte
+ contribute: Contribuer
data_deleted_in_days: Les données seront supprimées dans %{days} jours
- contribute: Contribuer
\ No newline at end of file
+ open_demo: Démo ouverte
diff --git a/config/locales/views/loans/fr.yml b/config/locales/views/loans/fr.yml
index fb3d14b0e..077af5414 100644
--- a/config/locales/views/loans/fr.yml
+++ b/config/locales/views/loans/fr.yml
@@ -4,14 +4,15 @@ fr:
edit:
edit: Modifier %{account}
form:
+ initial_balance: Solde initial du prêt
interest_rate: Taux d'intérêt
interest_rate_placeholder: '5,25'
- initial_balance: Solde initial du prêt
+ none: Aucun
rate_type: Type de taux
+ subtype_none: Aucun
+ subtype_prompt: Sélectionner le type de prêt
term_months: Durée (mois)
term_months_placeholder: '360'
- subtype_prompt: Sélectionner le type de prêt
- subtype_none: Aucun
new:
title: Saisir les détails du prêt
overview:
@@ -23,3 +24,14 @@ fr:
term: Durée
type: Type
unknown: Inconnu
+ tabs:
+ overview:
+ edit_loan_details: Modifier les détails du prêt
+ interest_rate: Taux d'intérêt
+ monthly_payment: Paiement mensuel
+ not_applicable: N/D
+ original_principal: Capital d'origine
+ remaining_principal: Capital restant
+ term: Durée
+ type: Type
+ unknown: Inconnu
diff --git a/config/locales/views/lunchflow_items/fr.yml b/config/locales/views/lunchflow_items/fr.yml
index f01bf47ae..ea41f2334 100644
--- a/config/locales/views/lunchflow_items/fr.yml
+++ b/config/locales/views/lunchflow_items/fr.yml
@@ -1,30 +1,59 @@
---
fr:
lunchflow_items:
+ api_error:
+ check_provider_settings: Vérifier les paramètres du fournisseur
+ common_issues: 'Problèmes courants :'
+ expired_credentials_desc: Générer une nouvelle clé API à partir de Lunch Flow
+ expired_credentials_label: Identifiants expirés
+ invalid_api_key_desc: Vérifiez votre clé API dans les paramètres du fournisseur
+ invalid_api_key_label: Clé API invalide
+ network_issue_desc: Vérifiez votre connexion Internet
+ network_issue_label: Problème de réseau
+ service_down_desc: L'API Lunch Flow peut être temporairement indisponible
+ service_down_label: Service en panne
+ title: Erreur de connexion au flux de déjeuner
+ unable_to_connect: Impossible de se connecter à Lunch Flow
+ complete_account_setup:
+ all_skipped: Tous les comptes ont été ignorés. Aucun compte n'a été créé.
+ creation_failed: 'Échec de la création des comptes : %{error}'
+ no_accounts: Aucun compte à configurer.
+ success: "%{count} compte(s) créé(s) avec succès."
create:
success: Connexion Lunch Flow créée avec succès
destroy:
success: Connexion Lunch Flow supprimée
index:
title: Connexions Lunch Flow
- loading:
- loading_message: Chargement des comptes Lunch Flow...
- loading_title: Chargement
link_accounts:
all_already_linked:
- one: "Le compte sélectionné (%{names}) est déjà lié"
- other: "Les %{count} comptes sélectionnés sont déjà liés : %{names}"
- api_error: "Erreur API : %{message}"
+ one: Le compte sélectionné (%{names}) est déjà lié
+ other: 'Les %{count} comptes sélectionnés sont déjà liés : %{names}'
+ api_error: 'Erreur API : %{message}'
invalid_account_names:
- one: "Impossible de lier un compte sans nom"
- other: "Impossible de lier %{count} comptes sans nom"
+ one: Impossible de lier un compte sans nom
+ other: Impossible de lier %{count} comptes sans nom
link_failed: Échec de la liaison des comptes
no_accounts_selected: Veuillez sélectionner au moins un compte
- partial_invalid: "%{created_count} compte(s) lié(s) avec succès, %{already_linked_count} étaient déjà liés, %{invalid_count} compte(s) avaient des noms invalides"
- partial_success: "%{created_count} compte(s) lié(s) avec succès. %{already_linked_count} compte(s) étaient déjà liés : %{already_linked_names}"
+ partial_invalid: "%{created_count} compte(s) lié(s) avec succès, %{already_linked_count}
+ étaient déjà liés, %{invalid_count} compte(s) avaient des noms invalides"
+ partial_success: "%{created_count} compte(s) lié(s) avec succès. %{already_linked_count}
+ compte(s) étaient déjà liés : %{already_linked_names}"
success:
one: "%{count} compte lié avec succès"
other: "%{count} comptes liés avec succès"
+ link_existing_account:
+ account_already_linked: Ce compte est déjà lié à un fournisseur
+ api_error: 'Erreur API : %{message}'
+ invalid_account_name: Impossible de lier un compte sans nom
+ lunchflow_account_already_linked: Ce compte Lunch Flow est déjà lié à un autre
+ compte
+ lunchflow_account_not_found: Compte Lunch Flow introuvable
+ missing_parameters: Paramètres requis manquants
+ success: "%{account_name} lié avec succès à Lunch Flow"
+ loading:
+ loading_message: Chargement des comptes Lunch Flow...
+ loading_title: Chargement
lunchflow_item:
accounts_need_setup: Des comptes doivent être configurés
delete: Supprimer la connexion
@@ -33,110 +62,122 @@ fr:
no_accounts_description: Cette connexion n'a pas encore de comptes liés.
no_accounts_title: Aucun compte
setup_action: Configurer les nouveaux comptes
- setup_description: "%{linked} sur %{total} comptes liés. Choisissez les types de compte pour vos comptes Lunch Flow nouvellement importés."
+ setup_description: "%{linked} sur %{total} comptes liés. Choisissez les types
+ de compte pour vos comptes Lunch Flow nouvellement importés."
setup_needed: Nouveaux comptes prêts à être configurés
- status: "Synchronisé il y a %{timestamp}"
+ status: Synchronisé il y a %{timestamp}
status_never: Jamais synchronisé
- status_with_summary: "Dernière synchronisation il y a %{timestamp} • %{summary}"
+ status_with_summary: Dernière synchronisation il y a %{timestamp} • %{summary}
syncing: Synchronisation...
total: Total
unlinked: Non lié
select_accounts:
accounts_selected: comptes sélectionnés
- api_error: "Erreur API : %{message}"
+ api_error: 'Erreur API : %{message}'
cancel: Annuler
- configure_name_in_lunchflow: Impossible d'importer - veuillez configurer le nom du compte dans Lunchflow
- description: Sélectionnez les comptes que vous souhaitez lier à votre compte %{product_name}.
+ configure_name_in_lunchflow: Impossible d'importer - veuillez configurer le
+ nom du compte dans Lunchflow
+ description: Sélectionnez les comptes que vous souhaitez lier à votre compte
+ %{product_name}.
link_accounts: Lier les comptes sélectionnés
- no_accounts_found: Aucun compte trouvé. Veuillez vérifier la configuration de votre clé API.
- no_api_key: La clé API Lunch Flow n'est pas configurée. Veuillez la configurer dans les Paramètres.
+ no_accounts_found: Aucun compte trouvé. Veuillez vérifier la configuration de
+ votre clé API.
+ no_api_key: La clé API Lunch Flow n'est pas configurée. Veuillez la configurer
+ dans les Paramètres.
no_name_placeholder: "(Sans nom)"
title: Sélectionner les comptes Lunch Flow
select_existing_account:
account_already_linked: Ce compte est déjà lié à un fournisseur
all_accounts_already_linked: Tous les comptes Lunch Flow sont déjà liés
- api_error: "Erreur API : %{message}"
+ api_error: 'Erreur API : %{message}'
cancel: Annuler
- configure_name_in_lunchflow: Impossible d'importer - veuillez configurer le nom du compte dans Lunchflow
- description: Sélectionnez un compte Lunch Flow à lier avec ce compte. Les transactions seront synchronisées et dédupliquées automatiquement.
+ configure_name_in_lunchflow: Impossible d'importer - veuillez configurer le
+ nom du compte dans Lunchflow
+ description: Sélectionnez un compte Lunch Flow à lier avec ce compte. Les transactions
+ seront synchronisées et dédupliquées automatiquement.
link_account: Lier le compte
no_account_specified: Aucun compte spécifié
- no_accounts_found: Aucun compte Lunch Flow trouvé. Veuillez vérifier la configuration de votre clé API.
- no_api_key: La clé API Lunch Flow n'est pas configurée. Veuillez la configurer dans les Paramètres.
+ no_accounts_found: Aucun compte Lunch Flow trouvé. Veuillez vérifier la configuration
+ de votre clé API.
+ no_api_key: La clé API Lunch Flow n'est pas configurée. Veuillez la configurer
+ dans les Paramètres.
no_name_placeholder: "(Sans nom)"
- title: "Lier %{account_name} avec Lunch Flow"
- link_existing_account:
- account_already_linked: Ce compte est déjà lié à un fournisseur
- api_error: "Erreur API : %{message}"
- invalid_account_name: Impossible de lier un compte sans nom
- lunchflow_account_already_linked: Ce compte Lunch Flow est déjà lié à un autre compte
- lunchflow_account_not_found: Compte Lunch Flow introuvable
- missing_parameters: Paramètres requis manquants
- success: "%{account_name} lié avec succès à Lunch Flow"
+ title: Lier %{account_name} avec Lunch Flow
setup_accounts:
- account_type_label: "Type de compte :"
- all_accounts_linked: "Tous vos comptes Lunch Flow ont déjà été configurés."
- api_error: "Erreur API : %{message}"
- fetch_failed: "Échec de la récupération des comptes"
- no_accounts_to_setup: "Aucun compte à configurer"
- no_api_key: "La clé API Lunch Flow n'est pas configurée. Veuillez vérifier les paramètres de connexion."
+ account_type_label: 'Type de compte :'
account_types:
- skip: Ignorer ce compte
- depository: Compte courant ou épargne
credit_card: Carte de crédit
+ depository: Compte courant ou épargne
investment: Compte d'investissement
loan: Prêt ou hypothèque
other_asset: Autre actif
- subtype_labels:
- depository: "Sous-type de compte :"
- credit_card: ""
- investment: "Type d'investissement :"
- loan: "Type de prêt :"
- other_asset: ""
- subtype_messages:
- credit_card: "Les cartes de crédit seront automatiquement configurées comme comptes de carte de crédit."
- other_asset: "Aucune option supplémentaire nécessaire pour les autres actifs."
- subtypes:
- depository:
- checking: Compte courant
- savings: Compte épargne
- hsa: Compte épargne santé
- cd: Certificat de dépôt
- money_market: Compte du marché monétaire
- investment:
- brokerage: Courtage
- pension: Pension
- retirement: Retraite
- "401k": "401(k)"
- roth_401k: "Roth 401(k)"
- "403b": "403(b)"
- tsp: Plan d'épargne Thrift
- "529_plan": "Plan 529"
- hsa: Compte épargne santé
- mutual_fund: Fonds commun de placement
- ira: IRA traditionnel
- roth_ira: Roth IRA
- angel: Investissement providentiel
- loan:
- mortgage: Hypothèque
- student: Prêt étudiant
- auto: Prêt auto
- other: Autre prêt
+ skip: Ignorer ce compte
+ all_accounts_linked: Tous vos comptes Lunch Flow ont déjà été configurés.
+ api_error: 'Erreur API : %{message}'
balance: Solde
cancel: Annuler
- choose_account_type: "Choisissez le type de compte correct pour chaque compte Lunch Flow :"
+ choose_account_type: 'Choisissez le type de compte correct pour chaque compte
+ Lunch Flow :'
create_accounts: Créer les comptes
creating_accounts: Création des comptes...
- historical_data_range: "Plage de données historiques :"
+ fetch_failed: Échec de la récupération des comptes
+ historical_data_range: 'Plage de données historiques :'
+ no_accounts_to_setup: Aucun compte à configurer
+ no_api_key: La clé API Lunch Flow n'est pas configurée. Veuillez vérifier les
+ paramètres de connexion.
subtitle: Choisissez les types de compte corrects pour vos comptes importés
- sync_start_date_help: Sélectionnez jusqu'où vous souhaitez synchroniser l'historique des transactions. Maximum 3 ans d'historique disponible.
- sync_start_date_label: "Commencer la synchronisation des transactions à partir de :"
+ subtype_labels:
+ credit_card: ''
+ depository: 'Sous-type de compte :'
+ investment: 'Type d''investissement :'
+ loan: 'Type de prêt :'
+ other_asset: ''
+ subtype_messages:
+ credit_card: Les cartes de crédit seront automatiquement configurées comme
+ comptes de carte de crédit.
+ other_asset: Aucune option supplémentaire nécessaire pour les autres actifs.
+ subtypes:
+ depository:
+ cd: Certificat de dépôt
+ checking: Compte courant
+ hsa: Compte épargne santé
+ money_market: Compte du marché monétaire
+ savings: Compte épargne
+ investment:
+ 401k: 401(k)
+ 403b: 403(b)
+ 529_plan: Plan 529
+ angel: Investissement providentiel
+ brokerage: Courtage
+ hsa: Compte épargne santé
+ ira: IRA traditionnel
+ mutual_fund: Fonds commun de placement
+ pension: Pension
+ retirement: Retraite
+ roth_401k: Roth 401(k)
+ roth_ira: Roth IRA
+ tsp: Plan d'épargne Thrift
+ loan:
+ auto: Prêt auto
+ mortgage: Hypothèque
+ other: Autre prêt
+ student: Prêt étudiant
+ sync_start_date_help: Sélectionnez jusqu'où vous souhaitez synchroniser l'historique
+ des transactions. Maximum 3 ans d'historique disponible.
+ sync_start_date_label: 'Commencer la synchronisation des transactions à partir
+ de :'
title: Configurer vos comptes Lunch Flow
- complete_account_setup:
- all_skipped: "Tous les comptes ont été ignorés. Aucun compte n'a été créé."
- creation_failed: "Échec de la création des comptes : %{error}"
- no_accounts: "Aucun compte à configurer."
- success: "%{count} compte(s) créé(s) avec succès."
+ setup_required:
+ api_key_description: Avant de pouvoir lier des comptes Lunch Flow, vous devez
+ configurer votre clé API Lunch Flow.
+ api_key_not_configured: Clé API non configurée
+ go_to_provider_settings: Accédez aux paramètres du fournisseur
+ setup_step_1_html: Accédez à Paramètres → Fournisseurs.
+ setup_step_2_html: Recherchez la section Lunch Flow
+ setup_step_3: Entrez votre clé API Lunch Flow
+ setup_step_4: Revenez ici pour lier vos comptes
+ setup_steps_title: 'Étapes de configuration :'
+ title: Configuration du flux de déjeuner requise
sync:
success: Synchronisation démarrée
update:
diff --git a/config/locales/views/merchants/fr.yml b/config/locales/views/merchants/fr.yml
index e395d388b..eeaa20b9b 100644
--- a/config/locales/views/merchants/fr.yml
+++ b/config/locales/views/merchants/fr.yml
@@ -9,63 +9,66 @@ fr:
unlinked_success: Marchand retiré de vos transactions
edit:
title: Modifier le marchand
+ enhance:
+ already_running: Une amélioration est déjà en cours. Veuillez attendre qu'elle se termine.
+ success: L'amélioration des marchands du fournisseur a démarré. Les marchands seront améliorés et les doublons fusionnés sous peu.
+ family_merchant:
+ delete: Supprimer
+ edit: Modifier
form:
name_placeholder: Nom du marchand
- website_placeholder: "Site web (ex. : starbucks.com)"
website_hint: Saisissez le site web du marchand pour afficher automatiquement son logo
+ website_placeholder: 'Site web (ex. : starbucks.com)'
index:
empty: Aucun marchand pour l'instant
- new: Nouveau marchand
- merge: Fusionner des marchands
- title: Marchands
- family_title: "Marchands %{moniker}"
- family_empty: "Aucun marchand %{moniker} pour l'instant"
- provider_title: Marchands du fournisseur
- provider_empty: "Aucun marchand du fournisseur lié à ce %{moniker} pour l'instant"
- provider_read_only: Les marchands du fournisseur sont synchronisés depuis vos institutions connectées. Ils ne peuvent pas être modifiés ici.
- provider_info: Ces marchands ont été détectés automatiquement par vos connexions bancaires ou par l'IA. Vous pouvez les modifier pour créer votre propre copie, ou les retirer pour les dissocier de vos transactions.
+ enhance_button: Améliorer avec l'IA
enhance_info:
one: "%{count} marchand du fournisseur n'a pas d'informations de site web. Améliorez avec l'IA pour détecter les sites web, afficher les logos et fusionner les marchands en double."
other: "%{count} marchands du fournisseur n'ont pas d'informations de site web. Améliorez avec l'IA pour détecter les sites web, afficher les logos et fusionner les marchands en double."
- enhance_button: Améliorer avec l'IA
- unlinked_title: Récemment dissociés
- unlinked_info: Ces marchands ont été récemment retirés de vos transactions. Ils disparaîtront de cette liste après 30 jours s'ils ne sont pas réaffectés à une transaction.
+ family_empty: Aucun marchand %{moniker} pour l'instant
+ family_title: Marchands %{moniker}
+ import: Importer des commerçants
+ merge: Fusionner des marchands
+ new: Nouveau marchand
+ provider_empty: Aucun marchand du fournisseur lié à ce %{moniker} pour l'instant
+ provider_info: Ces marchands ont été détectés automatiquement par vos connexions bancaires ou par l'IA. Vous pouvez les modifier pour créer votre propre copie, ou les retirer pour les dissocier de vos transactions.
+ provider_read_only: Les marchands du fournisseur sont synchronisés depuis vos institutions connectées. Ils ne peuvent pas être modifiés ici.
+ provider_title: Marchands du fournisseur
table:
- merchant: Marchand
actions: Actions
+ merchant: Marchand
source: Source
+ title: Marchands
+ unlinked_info: Ces marchands ont été récemment retirés de vos transactions. Ils disparaîtront de cette liste après 30 jours s'ils ne sont pas réaffectés à une transaction.
+ unlinked_title: Récemment dissociés
merchant:
confirm_accept: Supprimer le marchand
- confirm_body: Êtes-vous sûr de vouloir supprimer ce marchand ? La suppression de ce marchand
- dissocierait toutes les transactions associées et pourrait affecter vos rapports.
+ confirm_body: Êtes-vous sûr de vouloir supprimer ce marchand ? La suppression de ce marchand dissocierait toutes les transactions associées et pourrait affecter vos rapports.
confirm_title: Supprimer le marchand ?
delete: Supprimer le marchand
edit: Modifier le marchand
merge:
- title: Fusionner des marchands
description: Sélectionnez un marchand cible et les marchands à fusionner avec lui. Toutes les transactions des marchands fusionnés seront réaffectées à la cible.
- target_label: Fusionner vers (cible)
select_target: Sélectionnez le marchand cible…
- sources_label: Marchands à fusionner
sources_hint: Les marchands sélectionnés seront fusionnés avec la cible. Les marchands de la famille seront supprimés, les marchands du fournisseur seront dissociés.
+ sources_label: Marchands à fusionner
submit: Fusionner la sélection
+ target_label: Fusionner vers (cible)
+ title: Fusionner des marchands
new:
title: Nouveau marchand
perform_merge:
+ invalid_merchants: Marchands sélectionnés invalides
+ no_merchants_selected: Aucun marchand sélectionné à fusionner
success:
one: "%{count} marchand fusionné avec succès"
other: "%{count} marchands fusionnés avec succès"
- no_merchants_selected: Aucun marchand sélectionné à fusionner
target_not_found: Marchand cible introuvable
- invalid_merchants: Marchands sélectionnés invalides
provider_merchant:
edit: Modifier
remove: Retirer
- remove_confirm_title: Retirer le marchand ?
remove_confirm_body: Êtes-vous sûr de vouloir retirer %{name} ? Cela dissociera toutes les transactions associées à ce marchand, mais ne supprimera pas le marchand lui-même.
- enhance:
- success: L'amélioration des marchands du fournisseur a démarré. Les marchands seront améliorés et les doublons fusionnés sous peu.
- already_running: Une amélioration est déjà en cours. Veuillez attendre qu'elle se termine.
+ remove_confirm_title: Retirer le marchand ?
update:
- success: Marchand mis à jour avec succès
converted_success: Marchand converti et mis à jour avec succès
+ success: Marchand mis à jour avec succès
diff --git a/config/locales/views/mercury_items/fr.yml b/config/locales/views/mercury_items/fr.yml
index 3a879a11d..ce8592275 100644
--- a/config/locales/views/mercury_items/fr.yml
+++ b/config/locales/views/mercury_items/fr.yml
@@ -1,31 +1,67 @@
---
fr:
mercury_items:
+ api_error:
+ check_provider_settings: Vérifier les paramètres du fournisseur
+ common_issues: 'Problèmes courants :'
+ expired_credentials_desc: Générer un nouveau jeton API à partir de Mercury
+ expired_credentials_label: Identifiants expirés
+ insufficient_permissions_desc: Assurez-vous que votre jeton dispose d'un accès
+ en lecture seule
+ insufficient_permissions_label: Autorisations insuffisantes
+ invalid_api_token_desc: Vérifiez votre jeton API dans les paramètres du fournisseur
+ invalid_api_token_label: Jeton API invalide
+ network_issue_desc: Vérifiez votre connexion Internet
+ network_issue_label: Problème de réseau
+ service_down_desc: L'API Mercury peut être temporairement indisponible
+ service_down_label: Service en panne
+ title: Erreur de connexion Mercure
+ unable_to_connect: Impossible de se connecter à Mercury
+ complete_account_setup:
+ all_skipped: Tous les comptes ont été ignorés. Aucun compte n'a été créé.
+ creation_failed: 'Échec de la création des comptes : %{error}'
+ no_accounts: Aucun compte à configurer.
+ success: "%{count} compte(s) créé(s) avec succès."
create:
success: Connexion Mercury créée avec succès
destroy:
success: Connexion Mercury supprimée
index:
title: Connexions Mercury
- loading:
- loading_message: Chargement des comptes Mercury…
- loading_title: Chargement
link_accounts:
all_already_linked:
- one: "Le compte sélectionné (%{names}) est déjà lié"
- other: "Les %{count} comptes sélectionnés sont déjà liés : %{names}"
- api_error: "Erreur API : %{message}"
+ one: Le compte sélectionné (%{names}) est déjà lié
+ other: 'Les %{count} comptes sélectionnés sont déjà liés : %{names}'
+ api_error: 'Erreur API : %{message}'
invalid_account_names:
- one: "Impossible de lier un compte sans nom"
- other: "Impossible de lier %{count} comptes sans nom"
+ one: Impossible de lier un compte sans nom
+ other: Impossible de lier %{count} comptes sans nom
link_failed: Échec de la liaison des comptes
no_accounts_selected: Veuillez sélectionner au moins un compte
- no_api_token: Jeton API Mercury introuvable. Veuillez le configurer dans les paramètres du fournisseur.
- partial_invalid: "%{created_count} compte(s) lié(s) avec succès, %{already_linked_count} étaient déjà liés, %{invalid_count} compte(s) avaient des noms invalides"
- partial_success: "%{created_count} compte(s) lié(s) avec succès. %{already_linked_count} compte(s) étaient déjà liés : %{already_linked_names}"
+ no_api_token: Jeton API Mercury introuvable. Veuillez le configurer dans les
+ paramètres du fournisseur.
+ partial_invalid: "%{created_count} compte(s) lié(s) avec succès, %{already_linked_count}
+ étaient déjà liés, %{invalid_count} compte(s) avaient des noms invalides"
+ partial_success: "%{created_count} compte(s) lié(s) avec succès. %{already_linked_count}
+ compte(s) étaient déjà liés : %{already_linked_names}"
+ select_connection: Choisissez une connexion Mercury avant de lier des comptes.
success:
one: "%{count} compte lié avec succès"
other: "%{count} comptes liés avec succès"
+ link_existing_account:
+ account_already_linked: Ce compte est déjà lié à un fournisseur
+ api_error: 'Erreur API : %{message}'
+ invalid_account_name: Impossible de lier un compte sans nom
+ mercury_account_already_linked: Ce compte Mercury est déjà lié à un autre compte
+ mercury_account_not_found: Compte Mercury introuvable
+ missing_parameters: Paramètres requis manquants
+ no_api_token: Jeton API Mercury introuvable. Veuillez le configurer dans les
+ paramètres du fournisseur.
+ select_connection: Choisissez une connexion Mercury avant de lier des comptes.
+ success: "%{account_name} lié avec succès à Mercury"
+ loading:
+ loading_message: Chargement des comptes Mercury…
+ loading_title: Chargement
mercury_item:
accounts_need_setup: Des comptes doivent être configurés
delete: Supprimer la connexion
@@ -34,113 +70,169 @@ fr:
no_accounts_description: Cette connexion n'a pas encore de comptes liés.
no_accounts_title: Aucun compte
setup_action: Configurer les nouveaux comptes
- setup_description: "%{linked} sur %{total} comptes liés. Choisissez les types de compte pour vos comptes Mercury nouvellement importés."
+ setup_description: "%{linked} sur %{total} comptes liés. Choisissez les types
+ de compte pour vos comptes Mercury nouvellement importés."
setup_needed: Nouveaux comptes prêts à être configurés
- status: "Synchronisé il y a %{timestamp}"
+ status: Synchronisé il y a %{timestamp}
status_never: Jamais synchronisé
- status_with_summary: "Dernière synchronisation il y a %{timestamp} - %{summary}"
+ status_with_summary: Dernière synchronisation il y a %{timestamp} - %{summary}
syncing: Synchronisation…
total: Total
unlinked: Non lié
+ mercury_item_selection_error_payload:
+ select_connection: Choisissez une connexion Mercury avant de charger les comptes.
+ provider_connection:
+ default_description: Connectez-vous à votre banque via Mercury
+ default_name: Mercure
+ description: Connectez-vous en utilisant %{name}
+ name: Mercure - %{name}
+ provider_panel:
+ add_connection: Ajouter une connexion Mercury
+ base_url_label: URL de base (facultatif)
+ base_url_placeholder: https://api.mercury.com/api/v1 (par défaut)
+ connection_name_label: Nom de la connexion
+ connection_name_placeholder: Vérification commerciale
+ default_connection_name: Connexion Mercure
+ disconnect_confirm: Déconnecter %{name} ?
+ instructions:
+ copy_token_html: Copiez le jeton complet (y compris le préfixe
+ secret-token :) et ajoutez-le en tant que connexion nommée
+ ci-dessous.
+ create_token: Créez un nouveau jeton API avec un accès "Lecture seule"
+ open_tokens: Accédez à Paramètres > Développeur > Jetons API
+ sign_in_html: Visitez %{link} et connectez-vous au compte que vous souhaitez
+ connecter
+ whitelist_ip_html: "Important : Ajoutez l'adresse IP de votre
+ serveur à la liste blanche du token"
+ keep_token_placeholder: Laisser vide pour conserver le jeton actuel
+ sandbox_note_html: Utilisez une connexion nommée distincte pour chaque jeton
+ de connexion/API Mercury que vous souhaitez synchroniser. Pour les tests sandbox,
+ utilisez https://api-sandbox.mercury.com/api/v1 comme URL de
+ base. Mercury nécessite une liste blanche d'adresses IP - assurez-vous d'ajouter
+ votre adresse IP dans le tableau de bord Mercury.
+ setup_accounts: Configurer des comptes
+ setup_title: 'Instructions de configuration :'
+ sync: Synchroniser
+ token_label: Jeton
+ token_placeholder: Collez le jeton ici
+ update_connection: Mettre à jour la connexion
+ render_mercury_item_selection_failure:
+ no_credentials_configured: Veuillez d'abord configurer votre jeton API Mercury
+ dans les paramètres du fournisseur.
+ select_connection: Choisissez une connexion Mercury dans les paramètres du fournisseur.
select_accounts:
accounts_selected: comptes sélectionnés
- api_error: "Erreur API : %{message}"
+ api_error: 'Erreur API : %{message}'
cancel: Annuler
- configure_name_in_mercury: Impossible d'importer - veuillez configurer le nom du compte dans Mercury
- description: Sélectionnez les comptes que vous souhaitez lier à votre compte %{product_name}.
+ configure_name_in_mercury: Impossible d'importer - veuillez configurer le nom
+ du compte dans Mercury
+ description: Sélectionnez les comptes que vous souhaitez lier à votre compte
+ %{product_name}.
link_accounts: Lier les comptes sélectionnés
- no_accounts_found: Aucun compte trouvé. Veuillez vérifier la configuration de votre jeton API.
- no_api_token: Le jeton API Mercury n'est pas configuré. Veuillez le configurer dans les Paramètres.
- no_credentials_configured: Veuillez d'abord configurer votre jeton API Mercury dans les paramètres du fournisseur.
+ no_accounts_found: Aucun compte trouvé. Veuillez vérifier la configuration de
+ votre jeton API.
+ no_api_token: Le jeton API Mercury n'est pas configuré. Veuillez le configurer
+ dans les Paramètres.
+ no_credentials_configured: Veuillez d'abord configurer votre jeton API Mercury
+ dans les paramètres du fournisseur.
no_name_placeholder: "(Sans nom)"
+ select_connection: Choisissez une connexion Mercury dans les paramètres du fournisseur.
title: Sélectionner les comptes Mercury
select_existing_account:
account_already_linked: Ce compte est déjà lié à un fournisseur
all_accounts_already_linked: Tous les comptes Mercury sont déjà liés
- api_error: "Erreur API : %{message}"
+ api_error: 'Erreur API : %{message}'
cancel: Annuler
- configure_name_in_mercury: Impossible d'importer - veuillez configurer le nom du compte dans Mercury
- description: Sélectionnez un compte Mercury à lier avec ce compte. Les transactions seront synchronisées et dédupliquées automatiquement.
+ configure_name_in_mercury: Impossible d'importer - veuillez configurer le nom
+ du compte dans Mercury
+ description: Sélectionnez un compte Mercury à lier avec ce compte. Les transactions
+ seront synchronisées et dédupliquées automatiquement.
link_account: Lier le compte
no_account_specified: Aucun compte spécifié
- no_accounts_found: Aucun compte Mercury trouvé. Veuillez vérifier la configuration de votre jeton API.
- no_api_token: Le jeton API Mercury n'est pas configuré. Veuillez le configurer dans les Paramètres.
- no_credentials_configured: Veuillez d'abord configurer votre jeton API Mercury dans les paramètres du fournisseur.
+ no_accounts_found: Aucun compte Mercury trouvé. Veuillez vérifier la configuration
+ de votre jeton API.
+ no_api_token: Le jeton API Mercury n'est pas configuré. Veuillez le configurer
+ dans les Paramètres.
+ no_credentials_configured: Veuillez d'abord configurer votre jeton API Mercury
+ dans les paramètres du fournisseur.
no_name_placeholder: "(Sans nom)"
- title: "Lier %{account_name} avec Mercury"
- link_existing_account:
- account_already_linked: Ce compte est déjà lié à un fournisseur
- api_error: "Erreur API : %{message}"
- invalid_account_name: Impossible de lier un compte sans nom
- mercury_account_already_linked: Ce compte Mercury est déjà lié à un autre compte
- mercury_account_not_found: Compte Mercury introuvable
- missing_parameters: Paramètres requis manquants
- no_api_token: Jeton API Mercury introuvable. Veuillez le configurer dans les paramètres du fournisseur.
- success: "%{account_name} lié avec succès à Mercury"
+ select_connection: Choisissez une connexion Mercury dans les paramètres du fournisseur.
+ title: Lier %{account_name} avec Mercury
setup_accounts:
- account_type_label: "Type de compte :"
- all_accounts_linked: "Tous vos comptes Mercury ont déjà été configurés."
- api_error: "Erreur API : %{message}"
- fetch_failed: "Échec de la récupération des comptes"
- no_accounts_to_setup: "Aucun compte à configurer"
- no_api_token: "Le jeton API Mercury n'est pas configuré. Veuillez vérifier les paramètres de connexion."
+ account_type_label: 'Type de compte :'
account_types:
- skip: Ignorer ce compte
- depository: Compte courant ou épargne
credit_card: Carte de crédit
+ depository: Compte courant ou épargne
investment: Compte d'investissement
loan: Prêt ou hypothèque
other_asset: Autre actif
- subtype_labels:
- depository: "Sous-type de compte :"
- credit_card: ""
- investment: "Type d'investissement :"
- loan: "Type de prêt :"
- other_asset: ""
- subtype_messages:
- credit_card: "Les cartes de crédit seront automatiquement configurées comme comptes de carte de crédit."
- other_asset: "Aucune option supplémentaire nécessaire pour les autres actifs."
- subtypes:
- depository:
- checking: Compte courant
- savings: Compte épargne
- hsa: Compte épargne santé
- cd: Certificat de dépôt
- money_market: Compte du marché monétaire
- investment:
- brokerage: Courtage
- pension: Pension
- retirement: Retraite
- "401k": "401(k)"
- roth_401k: "Roth 401(k)"
- "403b": "403(b)"
- tsp: Plan d'épargne Thrift
- "529_plan": "Plan 529"
- hsa: Compte épargne santé
- mutual_fund: Fonds commun de placement
- ira: IRA traditionnel
- roth_ira: Roth IRA
- angel: Investissement providentiel
- loan:
- mortgage: Hypothèque
- student: Prêt étudiant
- auto: Prêt auto
- other: Autre prêt
+ skip: Ignorer ce compte
+ all_accounts_linked: Tous vos comptes Mercury ont déjà été configurés.
+ api_error: 'Erreur API : %{message}'
balance: Solde
cancel: Annuler
- choose_account_type: "Choisissez le type de compte correct pour chaque compte Mercury :"
+ choose_account_type: 'Choisissez le type de compte correct pour chaque compte
+ Mercury :'
create_accounts: Créer les comptes
creating_accounts: Création des comptes…
- historical_data_range: "Plage de données historiques :"
+ fetch_failed: Échec de la récupération des comptes
+ historical_data_range: 'Plage de données historiques :'
+ no_accounts_to_setup: Aucun compte à configurer
+ no_api_token: Le jeton API Mercury n'est pas configuré. Veuillez vérifier les
+ paramètres de connexion.
subtitle: Choisissez les types de compte corrects pour vos comptes importés
- sync_start_date_help: Sélectionnez jusqu'où vous souhaitez synchroniser l'historique des transactions. Maximum 3 ans d'historique disponible.
- sync_start_date_label: "Commencer la synchronisation des transactions à partir de :"
+ subtype_labels:
+ credit_card: ''
+ depository: 'Sous-type de compte :'
+ investment: 'Type d''investissement :'
+ loan: 'Type de prêt :'
+ other_asset: ''
+ subtype_messages:
+ credit_card: Les cartes de crédit seront automatiquement configurées comme
+ comptes de carte de crédit.
+ other_asset: Aucune option supplémentaire nécessaire pour les autres actifs.
+ subtypes:
+ depository:
+ cd: Certificat de dépôt
+ checking: Compte courant
+ hsa: Compte épargne santé
+ money_market: Compte du marché monétaire
+ savings: Compte épargne
+ investment:
+ 401k: 401(k)
+ 403b: 403(b)
+ 529_plan: Plan 529
+ angel: Investissement providentiel
+ brokerage: Courtage
+ hsa: Compte épargne santé
+ ira: IRA traditionnel
+ mutual_fund: Fonds commun de placement
+ pension: Pension
+ retirement: Retraite
+ roth_401k: Roth 401(k)
+ roth_ira: Roth IRA
+ tsp: Plan d'épargne Thrift
+ loan:
+ auto: Prêt auto
+ mortgage: Hypothèque
+ other: Autre prêt
+ student: Prêt étudiant
+ sync_start_date_help: Sélectionnez jusqu'où vous souhaitez synchroniser l'historique
+ des transactions. Maximum 3 ans d'historique disponible.
+ sync_start_date_label: 'Commencer la synchronisation des transactions à partir
+ de :'
title: Configurer vos comptes Mercury
- complete_account_setup:
- all_skipped: "Tous les comptes ont été ignorés. Aucun compte n'a été créé."
- creation_failed: "Échec de la création des comptes : %{error}"
- no_accounts: "Aucun compte à configurer."
- success: "%{count} compte(s) créé(s) avec succès."
+ setup_required:
+ api_token_description: Avant de pouvoir lier des comptes Mercury, vous devez
+ configurer votre jeton API Mercury.
+ api_token_not_configured: Jeton API non configuré
+ go_to_provider_settings: Accédez aux paramètres du fournisseur
+ setup_step_1_html: Accédez à Paramètres > Fournisseurs.
+ setup_step_2_html: Retrouvez la rubrique Mercure
+ setup_step_3: Entrez votre jeton API Mercury
+ setup_step_4: Revenez ici pour lier vos comptes
+ setup_steps_title: 'Étapes de configuration :'
+ title: Configuration Mercury requise
sync:
success: Synchronisation démarrée
update:
diff --git a/config/locales/views/messages/fr.yml b/config/locales/views/messages/fr.yml
new file mode 100644
index 000000000..c42098e3c
--- /dev/null
+++ b/config/locales/views/messages/fr.yml
@@ -0,0 +1,7 @@
+---
+fr:
+ messages:
+ chat_form:
+ disclaimer: Les réponses de l’IA sont uniquement informatives. Pas de conseils
+ financiers !
+ placeholder: Demandez n'importe quoi...
diff --git a/config/locales/views/mfa/fr.yml b/config/locales/views/mfa/fr.yml
index e01939430..8154b55bc 100644
--- a/config/locales/views/mfa/fr.yml
+++ b/config/locales/views/mfa/fr.yml
@@ -2,12 +2,12 @@
fr:
mfa:
backup_codes:
- backup_codes_description: Chaque code ne peut être utilisé qu'une seule fois. Gardez ces codes
- en sécurité et protégés.
+ backup_codes_description: Chaque code ne peut être utilisé qu'une seule fois.
+ Gardez ces codes en sécurité et protégés.
backup_codes_title: Vos Codes de Sauvegarde
continue: Continuer vers les paramètres de sécurité
- description: Enregistrez ces codes de sauvegarde dans un endroit sûr - vous en aurez besoin si
- vous perdez l'accès à votre application d'authentification.
+ description: Enregistrez ces codes de sauvegarde dans un endroit sûr - vous
+ en aurez besoin si vous perdez l'accès à votre application d'authentification.
page_title: Codes de Sauvegarde
title: Enregistrer vos Codes de Sauvegarde
create:
@@ -17,13 +17,14 @@ fr:
new:
code_label: Code de vérification
code_placeholder: Saisissez un code à 6 chiffres
- description: Améliorez la sécurité de votre compte en configurant l'authentification à deux facteurs.
+ description: Améliorez la sécurité de votre compte en configurant l'authentification
+ à deux facteurs.
page_title: Configuration de l'authentification à deux facteurs
- scan_description: Utilisez une application d'authentification comme Google Authenticator ou 1Password
- pour scanner ce code QR.
+ scan_description: Utilisez une application d'authentification comme Google Authenticator
+ ou 1Password pour scanner ce code QR.
scan_title: 1. Scanner le code QR
- secret_description: Si vous ne pouvez pas scanner le code QR, entrez cette clé secrète manuellement
- dans votre application d'authentification.
+ secret_description: Si vous ne pouvez pas scanner le code QR, entrez cette clé
+ secrète manuellement dans votre application d'authentification.
secret_title: Clé secrète (saisie manuelle)
title: Configurer l’authentification à deux facteurs
verify_button: Vérifier et activer l’authentification à deux facteurs
@@ -31,8 +32,18 @@ fr:
verify_title: 2. Saisissez le code de vérification
verify:
description: Entrez le code de votre application d'authentification pour continuer.
+ or: ou
page_title: Vérifier l'Authentification à Deux Facteurs
title: Authentification à Deux Facteurs
verify_button: Vérifier
+ webauthn_button: Utiliser un mot de passe ou une clé de sécurité
+ webauthn_unsupported: Ce navigateur ne prend pas en charge les mots de passe
+ ou les clés de sécurité.
verify_code:
invalid_code: Code d'authentification invalide. Veuillez essayer à nouveau.
+ verify_webauthn:
+ invalid_credential: Impossible de vérifier ce mot de passe ou cette clé de sécurité.
+ Veuillez réessayer.
+ webauthn_options:
+ unavailable: Aucun mot de passe ou clé de sécurité n'est disponible pour ce
+ compte.
diff --git a/config/locales/views/oidc_accounts/fr.yml b/config/locales/views/oidc_accounts/fr.yml
index 771ee1884..c9d92a2e9 100644
--- a/config/locales/views/oidc_accounts/fr.yml
+++ b/config/locales/views/oidc_accounts/fr.yml
@@ -1,34 +1,48 @@
---
fr:
oidc_accounts:
+ create_link:
+ no_pending_oidc: Aucune authentification OIDC en attente trouvée
+ create_user:
+ account_created: Bienvenue ! Votre compte a été créé.
+ account_creation_disabled: La création de compte SSO est désactivée. Veuillez
+ contacter un administrateur.
+ no_pending_oidc: Aucune authentification OIDC en attente trouvée
link:
- title_link: Associer un compte OIDC
- title_create: Créer un compte
- verify_heading: Vérifier votre identité
- verify_description_html: "Pour associer votre compte %{provider}%{email_suffix}, veuillez vérifier votre identité en saisissant votre mot de passe."
- email_suffix_html: " (%{email})"
+ account_creation_disabled: La création de compte via l'authentification unique
+ est désactivée. Veuillez contacter un administrateur.
+ cancel: Annuler
+ create_description_html: Aucun compte trouvé avec l'adresse e-mail %{email}.
+ Cliquez ci-dessous pour créer un nouveau compte avec votre identité %{provider}.
+ create_heading: Créer un nouveau compte
email_label: Adresse e-mail
email_placeholder: Saisissez votre adresse e-mail
+ email_suffix_html: " (%{email})"
+ info_email: 'E-mail :'
+ info_name: 'Nom :'
+ no_pending_oidc: Aucune authentification OIDC en attente trouvée
password_label: Mot de passe
password_placeholder: Saisissez votre mot de passe
- verify_hint: Cela garantit que vous seul pouvez associer des comptes externes à votre profil.
- submit_link: Associer le compte
- create_heading: Créer un nouveau compte
- create_description_html: "Aucun compte trouvé avec l'adresse e-mail %{email}. Cliquez ci-dessous pour créer un nouveau compte avec votre identité %{provider}."
- info_email: "E-mail :"
- info_name: "Nom :"
- submit_create: Créer un compte
submit_accept_invitation: Accepter l'invitation
- account_creation_disabled: La création de compte via l'authentification unique est désactivée. Veuillez contacter un administrateur.
- cancel: Annuler
+ submit_create: Créer un compte
+ submit_link: Associer le compte
+ title_create: Créer un compte
+ title_link: Associer un compte OIDC
+ verify_description_html: Pour associer votre compte %{provider}%{email_suffix},
+ veuillez vérifier votre identité en saisissant votre mot de passe.
+ verify_heading: Vérifier votre identité
+ verify_hint: Cela garantit que vous seul pouvez associer des comptes externes
+ à votre profil.
new_user:
- title: Compléter votre compte
- heading: Créer votre compte
- description: Veuillez confirmer vos informations pour finaliser la création de compte avec votre identité %{provider}.
+ cancel: Annuler
+ description: Veuillez confirmer vos informations pour finaliser la création
+ de compte avec votre identité %{provider}.
email_label: E-mail (du fournisseur SSO)
first_name_label: Prénom
first_name_placeholder: Saisissez votre prénom
+ heading: Créer votre compte
last_name_label: Nom de famille
last_name_placeholder: Saisissez votre nom de famille
+ no_pending_oidc: Aucune authentification OIDC en attente trouvée
submit: Créer un compte
- cancel: Annuler
+ title: Compléter votre compte
diff --git a/config/locales/views/onboardings/fr.yml b/config/locales/views/onboardings/fr.yml
index d93acd519..f147940ba 100644
--- a/config/locales/views/onboardings/fr.yml
+++ b/config/locales/views/onboardings/fr.yml
@@ -1,66 +1,74 @@
---
fr:
onboardings:
+ goals:
+ ai_insights: Laisser l'IA m'aider à comprendre mes finances
+ budgeting: Gérer les plans financiers et les budgets
+ cashflow: Comprendre les flux de trésorerie et les dépenses
+ investments: Suivre les investissements
+ optimization: Analyser et optimiser les comptes
+ partner: Gérer les finances avec un partenaire
+ reduce_stress: Réduire le stress financier ou l'anxiété
+ submit: Suivant
+ subtitle: Sélectionnez un ou plusieurs objectifs que vous souhaitez atteindre
+ avec %{product_name} comme outil de finances personnelles.
+ title: Qu'est-ce qui vous amène ici ?
+ unified_accounts: Voir tous mes comptes en un seul endroit
header:
- sign_out: Se déconnecter
- setup: Configuration
- preferences: Préférences
goals: Objectifs
+ preferences: Préférences
+ setup: Configuration
+ sign_out: Se déconnecter
start: Démarrer
logout:
sign_out: Se déconnecter
+ preferences:
+ color_theme: Thème de couleur
+ currency: Devise
+ date_format: Format de date
+ example: Compte exemple
+ locale: Langue
+ preview: Aperçu de l'affichage des données selon vos préférences.
+ submit: Terminer
+ subtitle: Configurons vos préférences.
+ theme_dark: Sombre
+ theme_light: Clair
+ theme_system: Système
+ title: Configurez vos préférences
show:
- title: Configurons votre compte
- subtitle: Commençons par compléter votre profil.
+ country: Pays
first_name: Prénom
first_name_placeholder: Prénom
- last_name: Nom de famille
- last_name_placeholder: Nom de famille
group_name: Nom du groupe
group_name_placeholder: Nom du groupe
household_name: Nom du foyer
household_name_placeholder: Nom du foyer
- moniker_prompt: "Vous utiliserez %{product_name} avec…"
- moniker_family: Membres de la famille (seul ou avec votre partenaire, vos enfants, etc.)
- moniker_group: Groupe de personnes (entreprise, club, association, ou tout autre type)
- country: Pays
+ last_name: Nom de famille
+ last_name_placeholder: Nom de famille
+ moniker_family: Membres de la famille (seul ou avec votre partenaire, vos enfants,
+ etc.)
+ moniker_group: Groupe de personnes (entreprise, club, association, ou tout autre
+ type)
+ moniker_prompt: Vous utiliserez %{product_name} avec…
submit: Continuer
- preferences:
- title: Configurez vos préférences
- subtitle: Configurons vos préférences.
- example: Compte exemple
- preview: Aperçu de l'affichage des données selon vos préférences.
- color_theme: Thème de couleur
- theme_system: Système
- theme_light: Clair
- theme_dark: Sombre
- locale: Langue
- currency: Devise
- date_format: Format de date
- submit: Terminer
- goals:
- title: Qu'est-ce qui vous amène ici ?
- subtitle: Sélectionnez un ou plusieurs objectifs que vous souhaitez atteindre avec %{product_name} comme outil de finances personnelles.
- unified_accounts: Voir tous mes comptes en un seul endroit
- cashflow: Comprendre les flux de trésorerie et les dépenses
- budgeting: Gérer les plans financiers et les budgets
- partner: Gérer les finances avec un partenaire
- investments: Suivre les investissements
- ai_insights: Laisser l'IA m'aider à comprendre mes finances
- optimization: Analyser et optimiser les comptes
- reduce_stress: Réduire le stress financier ou l'anxiété
- submit: Suivant
+ subtitle: Commençons par compléter votre profil.
+ title: Configurons votre compte
trial:
- title: Essayez Sure pendant 45 jours
- data_deletion: Les données seront supprimées ensuite
- description_html: À partir d'aujourd'hui, vous pouvez tester le produit en profondeur.Impossible de récupérer les dernières notes de mise à jour pour le moment. Veuillez réessayer plus tard ou visiter directement notre page de versions GitHub.
" + name: Notes de mise à jour indisponibles + terms: + heading: Conditions d'utilisation + placeholder: Le contenu des conditions d'utilisation sera affiché ici. + title: Conditions d'utilisation diff --git a/config/locales/views/password_mailer/fr.yml b/config/locales/views/password_mailer/fr.yml index 9d0d148e8..c60bc4e8f 100644 --- a/config/locales/views/password_mailer/fr.yml +++ b/config/locales/views/password_mailer/fr.yml @@ -3,6 +3,8 @@ fr: password_mailer: password_reset: cta: Réinitialiser votre mot de passe - ignore_if_not_requested: Si vous n'avez pas fait cette demande, vous pouvez ignorer cet e-mail. - request_made: Une demande a été faite pour réinitialiser votre mot de passe %{product_name}. Cliquez sur le lien pour le réinitialiser. - subject: '%{product_name} : Réinitialiser votre mot de passe' + ignore_if_not_requested: Si vous n'avez pas fait cette demande, vous pouvez + ignorer cet e-mail. + request_made: Une demande a été faite pour réinitialiser votre mot de passe + %{product_name}. Cliquez sur le lien pour le réinitialiser. + subject: "%{product_name} : Réinitialiser votre mot de passe" diff --git a/config/locales/views/password_resets/fr.yml b/config/locales/views/password_resets/fr.yml index df1fbe5c9..12e88d602 100644 --- a/config/locales/views/password_resets/fr.yml +++ b/config/locales/views/password_resets/fr.yml @@ -1,15 +1,18 @@ --- fr: password_resets: - disabled: La réinitialisation du mot de passe via Sure est désactivée. Veuillez réinitialiser votre mot de passe via votre fournisseur d'identité. - sso_only_user: Votre compte utilise le SSO pour l'authentification. Veuillez contacter votre administrateur pour gérer vos identifiants. + disabled: La réinitialisation du mot de passe via Sure est désactivée. Veuillez + réinitialiser votre mot de passe via votre fournisseur d'identité. edit: title: Réinitialiser votre mot de passe new: - requested: Veuillez vérifier votre boîte mail pour un lien de réinitialisation de votre mot de passe. + back: Retour + requested: Veuillez vérifier votre boîte mail pour un lien de réinitialisation + de votre mot de passe. submit: Réinitialiser votre mot de passe title: Réinitialiser votre mot de passe - back: Retour + sso_only_user: Votre compte utilise le SSO pour l'authentification. Veuillez contacter + votre administrateur pour gérer vos identifiants. update: invalid_token: Jeton invalide. success: Votre mot de passe a été réinitialisé. diff --git a/config/locales/views/pdf_import_mailer/fr.yml b/config/locales/views/pdf_import_mailer/fr.yml index 93115a3c5..184e6c3f0 100644 --- a/config/locales/views/pdf_import_mailer/fr.yml +++ b/config/locales/views/pdf_import_mailer/fr.yml @@ -2,16 +2,22 @@ fr: pdf_import_mailer: next_steps: - greeting: "Bonjour %{name}," - intro: "Nous avons terminé l'analyse du document PDF que vous avez téléversé sur %{product}." + document_stored_note: Ce document a été stocké pour votre référence. Il peut + être utilisé pour fournir du contexte dans vos futures conversations avec + l'IA. document_type_label: Type de document - summary_label: Résumé IA - transactions_note: Ce document semble contenir des transactions. Vous pouvez les extraire et les consulter maintenant. - document_stored_note: Ce document a été stocké pour votre référence. Il peut être utilisé pour fournir du contexte dans vos futures conversations avec l'IA. + footer_note: Ceci est un message automatique. Veuillez ne pas répondre directement + à cet e-mail. + greeting: Bonjour %{name}, + intro: Nous avons terminé l'analyse du document PDF que vous avez téléversé + sur %{product}. + next_steps_intro: 'Plusieurs options s''offrent à vous :' next_steps_label: Et maintenant ? - next_steps_intro: "Plusieurs options s'offrent à vous :" - option_extract_transactions: Extraire les transactions de ce relevé - option_keep_reference: Conserver ce document pour référence dans vos futures conversations avec l'IA option_delete: Supprimer cet import si vous n'en avez plus besoin + option_extract_transactions: Extraire les transactions de ce relevé + option_keep_reference: Conserver ce document pour référence dans vos futures + conversations avec l'IA + summary_label: Résumé IA + transactions_note: Ce document semble contenir des transactions. Vous pouvez + les extraire et les consulter maintenant. view_import_button: Voir les détails de l'import - footer_note: Ceci est un message automatique. Veuillez ne pas répondre directement à cet e-mail. diff --git a/config/locales/views/pending_duplicate_merges/fr.yml b/config/locales/views/pending_duplicate_merges/fr.yml index 16aeabdbc..0ff463d60 100644 --- a/config/locales/views/pending_duplicate_merges/fr.yml +++ b/config/locales/views/pending_duplicate_merges/fr.yml @@ -1,14 +1,25 @@ --- fr: pending_duplicate_merges: + create: + invalid_transaction: Transaction non valide sélectionnée pour la fusion + merge_failed: Impossible de fusionner les transactions + merge_success: Transaction en attente fusionnée avec la transaction publiée + no_posted_selected: Veuillez sélectionner une transaction publiée avec laquelle + fusionner new: - title: Fusionner avec une transaction validée - warning_title: Fusion manuelle de doublons - warning_description: Utilisez cette option pour fusionner manuellement une transaction en attente avec sa version validée. Cela supprimera la transaction en attente et ne conservera que la version validée. - pending_transaction: Transaction en attente - select_posted: Sélectionner la transaction validée à fusionner - showing_range: "Affichage de %{start} - %{end}" - previous: "← 10 précédentes" - next: "10 suivantes →" + next: 10 suivantes → no_candidates: Aucune transaction validée trouvée sur ce compte. + pending_transaction: Transaction en attente + previous: "← 10 précédentes" + select_posted: Sélectionner la transaction validée à fusionner + showing_range: Affichage de %{start} - %{end} submit_button: Fusionner les transactions + title: Fusionner avec une transaction validée + warning_description: Utilisez cette option pour fusionner manuellement une transaction + en attente avec sa version validée. Cela supprimera la transaction en attente + et ne conservera que la version validée. + warning_title: Fusion manuelle de doublons + set_transaction: + pending_only: Cette fonctionnalité n'est disponible que pour les transactions + en attente diff --git a/config/locales/views/plaid_items/fr.yml b/config/locales/views/plaid_items/fr.yml index 64a627f9f..eff83bb22 100644 --- a/config/locales/views/plaid_items/fr.yml +++ b/config/locales/views/plaid_items/fr.yml @@ -5,6 +5,13 @@ fr: success: Compte lié avec succès. Veuillez patienter pendant que les comptes se synchronisent. destroy: success: Les comptes prévus pour la suppression ont été marqués. + errors: + link_token_generic: Nous n'avons pas pu ouvrir Plaid pour le moment. Veuillez réessayer, et si le problème persiste, vérifiez les journaux du serveur pour plus de détails. + link_token_with_message: 'Plaid n''a pas pu ouvrir la connexion : %{message}' + link_existing_account: + already_linked: Ce compte Plaid est déjà lié + invalid_account: Compte Plaid non valide sélectionné + success: Compte lié avec succès à Plaid plaid_item: add_new: Ajouter une nouvelle connexion confirm_accept: Supprimer l'institution @@ -13,6 +20,7 @@ fr: connection_lost: Connexion perdue connection_lost_description: Cette connexion n'est plus valide. Vous devrez la supprimer et en ajouter une nouvelle pour pouvoir continuer la synchronisation des données. delete: Supprimer + deletion_in_progress: "(suppression en cours...)" error: Une erreur s'est produite lors de la synchronisation des données no_accounts_description: Nous ne pouvons pas charger des comptes depuis cette institution financière. no_accounts_title: Aucun compte trouvé @@ -22,7 +30,8 @@ fr: syncing: Synchronisation... update: Mettre à jour la connexion select_existing_account: - title: "Lier %{account_name} à Plaid" - description: Sélectionnez un compte Plaid à lier à votre compte existant cancel: Annuler + description: Sélectionnez un compte Plaid à lier à votre compte existant link_account: Lier le compte + no_available_accounts: Aucun compte Plaid disponible à lier. Veuillez d'abord connecter un nouveau compte Plaid. + title: Lier %{account_name} à Plaid diff --git a/config/locales/views/preview/fr.yml b/config/locales/views/preview/fr.yml new file mode 100644 index 000000000..a5c9ce32e --- /dev/null +++ b/config/locales/views/preview/fr.yml @@ -0,0 +1,5 @@ +--- +fr: + preview: + not_enabled: Cette fonctionnalité est en avant-première. Activez les fonctionnalités + d'aperçu dans Paramètres → Préférences pour l'essayer. diff --git a/config/locales/views/properties/fr.yml b/config/locales/views/properties/fr.yml index 5061213e8..5ae681f8e 100644 --- a/config/locales/views/properties/fr.yml +++ b/config/locales/views/properties/fr.yml @@ -1,6 +1,27 @@ --- fr: properties: + address: + address_line1_label: Ligne d'adresse 1 + address_line1_placeholder: 123, rue Principale + city_label: Ville + city_placeholder: San Francisco + country_label: Pays + country_placeholder: États-Unis + postal_code_label: Code postal + postal_code_placeholder: '12345' + save: Enregistrer + state_region_label: État/Région + state_region_placeholder: CA + title: Saisir la propriété manuellement + balances: + market_value_label: Valeur marchande estimée + market_value_tooltip: La valeur marchande estimée de votre propriété. Ce numéro + peut souvent être trouvé sur des sites comme Zillow ou Redfin, et n'est jamais + un nombre exact. + next: Suivant + save: Enregistrer + title: Saisir la propriété manuellement edit: edit: Modifier %{account} form: @@ -22,6 +43,7 @@ fr: year_built: Année de construction year_built_placeholder: '2000' new: + next: Suivant title: Saisir les détails de la propriété overview: living_area: Surface habitable @@ -30,3 +52,40 @@ fr: trend: Tendance unknown: Inconnu year_built: Année de construction + overview_fields: + area_label: Zone (facultatif) + area_placeholder: '1200' + area_unit_label: Unité de surface + name_label: Nom + name_placeholder: Maison de vacances + property_type_label: Type de propriété + square_feet: Pieds carrés + square_meters: Mètres carrés + subtype_prompt: Sélectionnez le type + year_built_label: Année de construction (facultatif) + year_built_placeholder: '1990' + subtypes: + agri_land: + long: Terrain agricole + short: Terre agricole + apartment: + long: Appartement + short: Appartement + commercial: + long: Propriété commerciale + short: Commercial + plot: + long: Terrain / Terrain + short: Terrain + rented: + long: Propriété louée + short: Loué + tabs: + overview: + edit_account_details: Modifier les détails du compte + living_area: Surface habitable + market_value: Valeur marchande + purchase_price: Prix d'achat + trend: Tendance + unknown: Inconnu + year_built: Année de construction diff --git a/config/locales/views/recurring_transactions/fr.yml b/config/locales/views/recurring_transactions/fr.yml index 462db1e1d..53b985f40 100644 --- a/config/locales/views/recurring_transactions/fr.yml +++ b/config/locales/views/recurring_transactions/fr.yml @@ -1,52 +1,66 @@ --- fr: recurring_transactions: - title: Transactions récurrentes - upcoming: Transactions récurrentes à venir + already_exists: Une transaction récurrente manuelle existe déjà pour ce modèle + amount_range: 'Plage : %{min} à %{max}' + badges: + manual: Manuel + cleaned_up: "%{count} transactions récurrentes obsolètes nettoyées" + cleanup_stale: Nettoyer les obsolètes + confirm_delete: Êtes-vous sûr(e) de vouloir supprimer cette transaction récurrente + ? + creation_failed: Échec de la création de la transaction récurrente. Veuillez vérifier + les détails de la transaction et réessayer. + day_of_month: Jour %{day} du mois + deleted: Transaction récurrente supprimée + empty: + description: Cliquez sur "Identifier les modèles" pour détecter automatiquement + les transactions récurrentes à partir de votre historique de transactions. + title: Aucune transaction récurrente trouvée + expected_in: + one: Attendue dans %{count} jour + other: Attendue dans %{count} jours + expected_today: Attendue aujourd'hui + identified: "%{count} modèles de transactions récurrentes identifiés" + identify_patterns: Identifier les modèles + info: + automatic_description: 'L''identification automatique s''exécute également après + :' + manual_description: Vous pouvez identifier manuellement les modèles ou nettoyer + les transactions récurrentes obsolètes en utilisant les boutons ci-dessus. + title: Détection automatique des modèles + triggers: + - Les importations CSV sont terminées (transactions, trades, comptes, etc.) + - Toute synchronisation de fournisseur est terminée (Plaid, SimpleFIN, etc.) + marked_active: Transaction récurrente marquée comme active + marked_as_recurring: Transaction marquée comme récurrente + marked_inactive: Transaction récurrente marquée comme inactive projected: Projeté recurring: Récurrent - expected_today: "Attendue aujourd'hui" - expected_in: - one: "Attendue dans %{count} jour" - other: "Attendue dans %{count} jours" - day_of_month: Jour %{day} du mois - identify_patterns: Identifier les modèles - cleanup_stale: Nettoyer les obsolètes settings: + enable_description: Détecter automatiquement les modèles de transactions récurrentes + et afficher les transactions projetées à venir. enable_label: Activer les transactions récurrentes - enable_description: Détecter automatiquement les modèles de transactions récurrentes et afficher les transactions projetées à venir. settings_updated: Paramètres des transactions récurrentes mis à jour - info: - title: Détection automatique des modèles - manual_description: Vous pouvez identifier manuellement les modèles ou nettoyer les transactions récurrentes obsolètes en utilisant les boutons ci-dessus. - automatic_description: "L'identification automatique s'exécute également après :" - triggers: - - Les importations CSV sont terminées (transactions, trades, comptes, etc.) - - Toute synchronisation de fournisseur est terminée (Plaid, SimpleFIN, etc.) - identified: "%{count} modèles de transactions récurrentes identifiés" - cleaned_up: "%{count} transactions récurrentes obsolètes nettoyées" - marked_inactive: Transaction récurrente marquée comme inactive - marked_active: Transaction récurrente marquée comme active - deleted: Transaction récurrente supprimée - confirm_delete: Êtes-vous sûr(e) de vouloir supprimer cette transaction récurrente ? - marked_as_recurring: Transaction marquée comme récurrente - already_exists: Une transaction récurrente manuelle existe déjà pour ce modèle - creation_failed: Échec de la création de la transaction récurrente. Veuillez vérifier les détails de la transaction et réessayer. - unexpected_error: Une erreur inattendue s'est produite lors de la création de la transaction récurrente - amount_range: "Plage : %{min} à %{max}" - empty: - title: Aucune transaction récurrente trouvée - description: Cliquez sur "Identifier les modèles" pour détecter automatiquement les transactions récurrentes à partir de votre historique de transactions. - table: - merchant: Nom - amount: Montant - expected_day: Jour prévu - next_date: Prochaine date - last_occurrence: Dernière occurrence - status: Statut - actions: Actions status: active: Actif inactive: Inactif - badges: - manual: Manuel + table: + actions: Actions + amount: Montant + expected_day: Jour prévu + last_occurrence: Dernière occurrence + merchant: Nom + next_date: Prochaine date + status: Statut + title: Transactions récurrentes + transfer_already_exists: Un transfert récurrent existe déjà pour cette paire de + comptes + transfer_creation_failed: Échec de la création du transfert récurrent. Veuillez + vérifier les détails du transfert et réessayer. + transfer_feature_disabled: Les transactions récurrentes sont désactivées pour + cette famille + transfer_marked_as_recurring: Transfert marqué comme récurrent + unexpected_error: Une erreur inattendue s'est produite lors de la création de + la transaction récurrente + upcoming: Transactions récurrentes à venir diff --git a/config/locales/views/registrations/fr.yml b/config/locales/views/registrations/fr.yml index f5ab94380..c2c5c15fa 100644 --- a/config/locales/views/registrations/fr.yml +++ b/config/locales/views/registrations/fr.yml @@ -16,16 +16,17 @@ fr: new: invitation_message: "%{inviter} vous a invité à rejoindre en tant que %{role}" join_family_title: Rejoindre %{family} %{moniker} + password_placeholder: Entrez votre mot de passe + password_requirements: + case: Majuscules et minuscules + length: Minimum 8 caractères + number: Un chiffre (0-9) + special: 'Un caractère spécial (!, @, #, $, %, etc)' role_admin: administrateur role_guest: invité role_member: membre submit: Créer un compte title: Créez votre compte - welcome_body: Pour commencer, vous devez créer un nouveau compte. Vous pourrez ensuite configurer des paramètres supplémentaires à l'intérieur de l'application. + welcome_body: Pour commencer, vous devez créer un nouveau compte. Vous pourrez + ensuite configurer des paramètres supplémentaires à l'intérieur de l'application. welcome_title: Bienvenue sur %{product_name} ! - password_placeholder: Entrez votre mot de passe - password_requirements: - length: Minimum 8 caractères - case: Majuscules et minuscules - number: Un chiffre (0-9) - special: "Un caractère spécial (!, @, #, $, %, etc)" diff --git a/config/locales/views/reports/fr.yml b/config/locales/views/reports/fr.yml index fc9d964f0..03d6214f7 100644 --- a/config/locales/views/reports/fr.yml +++ b/config/locales/views/reports/fr.yml @@ -1,224 +1,254 @@ --- fr: reports: + budget_performance: + budgeted: Budgété + no_budgets: Aucune catégorie de budget définie pour ce mois + over_by: Dépassé de + remaining: Restant + shared: partagé + spent: Dépensé + status: + good: En bonne voie + over: Budget dépassé + warning: Proche de la limite + suggested_daily: "%{amount} suggéré par jour pour les %{days} jours restants" + title: Performance budgétaire + empty_state: + add_account: Ajouter un compte + add_transaction: Ajouter une transaction + description: Commencez à suivre vos finances en ajoutant des transactions ou + en connectant vos comptes pour voir des rapports complets + title: Aucune donnée disponible + google_sheets_instructions: + close: Compris + example: Exemple + go_to_api_keys: Aller aux clés API + need_key: Pour importer des données dans Google Sheets, vous avez besoin d'une + clé API. + open_sheets: Ouvrir Google Sheets + ready: Votre URL CSV (avec clé API) est prête. + security_warning: Cette URL inclut votre clé API. Gardez-la en sécurité ! + step1: Allez dans Paramètres → Clés API + step2: Créez une nouvelle clé API avec la permission "lecture" + step3: Copiez la clé API + step4: 'Ajoutez-la à cette URL comme : ?api_key=VOTRE_CLÉ' + steps: |- + Pour importer dans Google Sheets : + 1. Créez une nouvelle feuille Google + 2. Dans la cellule A1, entrez la formule ci-dessous + 3. Appuyez sur Entrée + then_use: Ensuite, utilisez l'URL complète avec =IMPORTDATA() dans Google Sheets. + title_no_key: "⚠️ Clé API requise" + title_with_key: "✅ Copier l'URL pour Google Sheets" index: - title: Rapports - subtitle: Aperçus complets de votre santé financière - export: Exporter CSV - print_report: Imprimer le rapport - drag_to_reorder: "Glisser pour réorganiser la section" - toggle_section: "Basculer la visibilité de la section" - periods: - monthly: Mensuel - quarterly: Trimestriel - ytd: Depuis le début de l'année - last_6_months: 6 derniers mois - custom: Plage personnalisée date_range: from: Du to: Au - showing_period: "Affichage des données du %{start} au %{end}" - invalid_date_range: "La date de fin ne peut pas être antérieure à la date de début. Les dates ont été inversées." - summary: - total_income: Revenus totaux - total_expenses: Dépenses totales - net_savings: Épargne nette - budget_performance: Performance budgétaire - vs_previous: vs période précédente - income_minus_expenses: Revenus moins dépenses - of_budget_used: du budget utilisé - no_budget_data: Aucune donnée budgétaire pour cette période - budget_performance: - title: Performance budgétaire - spent: Dépensé - budgeted: Budgété - remaining: Restant - over_by: Dépassé de - shared: partagé - suggested_daily: "%{amount} suggéré par jour pour les %{days} jours restants" - no_budgets: Aucune catégorie de budget définie pour ce mois - status: - good: En bonne voie - warning: Proche de la limite - over: Budget dépassé - trends: - title: Tendances et aperçus - monthly_breakdown: Répartition mensuelle - month: Mois - income: Revenus - expenses: Dépenses - net: Net - savings_rate: Taux d'épargne - current: actuel - avg_monthly_income: Revenu mensuel moyen - avg_monthly_expenses: Dépenses mensuelles moyennes - avg_monthly_savings: Épargne mensuelle moyenne - no_data: Aucune donnée de tendance disponible - spending_patterns: Modèles de dépenses - weekday_spending: Dépenses en semaine - weekend_spending: Dépenses le week-end - total: Total - avg_per_transaction: Moy. par transaction - transactions: Transactions - insight_title: Aperçu - insight_higher_weekend: "Vous dépensez %{percent}% de plus par transaction le week-end qu'en semaine" - insight_higher_weekday: "Vous dépensez %{percent}% de plus par transaction en semaine que le week-end" - insight_similar: "Vos dépenses par transaction sont similaires en semaine et le week-end" - no_spending_data: Aucune donnée de dépenses disponible pour cette période - empty_state: - title: Aucune donnée disponible - description: Commencez à suivre vos finances en ajoutant des transactions ou en connectant vos comptes pour voir des rapports complets - add_transaction: Ajouter une transaction - add_account: Ajouter un compte - transactions_breakdown: - title: Répartition des activités - no_transactions: Aucune activité trouvée pour la période et les filtres sélectionnés - filters: - title: Filtres - category: Catégorie - account: Compte - tag: Étiquette - amount_min: Montant min - amount_max: Montant max - date_range: Plage de dates - all_categories: Toutes les catégories - all_accounts: Tous les comptes - all_tags: Toutes les étiquettes - apply: Appliquer les filtres - clear: Effacer les filtres - sort: - label: Trier par - date_desc: Date (Plus récent) - amount_desc: Montant (Élevé à faible) - amount_asc: Montant (Faible à élevé) - export: - label: Exporter - csv: CSV - excel: Excel - pdf: PDF - google_sheets: Ouvrir dans Google Sheets - table: - category: Catégorie - amount: Montant - type: Type - expense: Dépenses - income: Revenus - uncategorized: Non catégorisé - entries: - one: "%{count} entrée" - other: "%{count} entrées" - percentage: "% du total" - pagination: - showing: - one: Affichage de %{count} entrée - other: Affichage de %{count} entrées - previous: Précédent - next: Suivant - net_worth: - title: Patrimoine net - current_net_worth: Patrimoine net actuel - period_change: Variation sur la période - assets_vs_liabilities: Actifs vs Passifs - total_assets: Actifs - total_liabilities: Passifs - no_assets: Aucun actif - no_liabilities: Aucun passif + drag_to_reorder: Glisser pour réorganiser la section + export: Exporter CSV + next_decade: La prochaine décennie + next_period: Période suivante + next_year: L'année prochaine + period_label: + last_6_months: "%{start} – %{end}" + past_year: "%{year}" + quarterly: Q%{quarter} %{year} + ytd: Cumul cumulatif %{year} + period_picker: + quarter: Q%{quarter} %{year} + ytd: Cumul cumulatif %{year} + periods: + custom: Plage personnalisée + last_6_months: 6 derniers mois + monthly: Mensuel + quarterly: Trimestriel + ytd: Depuis le début de l'année + previous_decade: Décennie précédente + previous_period: Période précédente + previous_year: Année précédente + print_report: Imprimer le rapport + showing_period: Affichage des données du %{start} au %{end} + subtitle: Aperçus complets de votre santé financière + title: Rapports + today: Aujourd'hui + toggle_section: Basculer la visibilité de la section + invalid_date_range: La date de fin ne peut pas être antérieure à la date de début. + Les dates ont été inversées. + investment_flows: + contributions: Contributions + contributions_description: Argent ajouté aux investissements + description: Suivez les flux d'argent entrants et sortants de vos comptes d'investissement + net_flow: Flux net + net_flow_description: Variation nette totale + title: Flux d'investissement + withdrawals: Retraits + withdrawals_description: Argent retiré des investissements investment_performance: - title: Performance des investissements - portfolio_value: Valeur du portefeuille - total_return: Rendement total - contributions: Contributions de la période - withdrawals: Retraits de la période - top_holdings: Principaux avoirs - holding: Avoir - weight: Poids - value: Valeur - return: Rendement accounts: Comptes d'investissement + and_more: "+%{count} de plus" + contributions: Contributions de la période gains_by_tax_treatment: Gains par traitement fiscal - unrealized_gains: Plus-values latentes - realized_gains: Plus-values réalisées - total_gains: Gains totaux - taxable_realized_note: Ces gains peuvent être soumis à l'impôt - no_data: "-" - view_details: Voir les détails + holding: Holding + holdings: Holdings holdings_count: - one: "%{count} avoir" - other: "%{count} avoirs" + one: "%{count} holding" + other: "%{count} holdings" + no_data: "-" + period_return: Rendement de la période + portfolio_value: Valeur du portefeuille + realized_gains: Plus-values réalisées + return: Rendement + sell_trades: Transactions boursières de vente sells_count: one: "%{count} vente" other: "%{count} ventes" - holdings: Avoirs - sell_trades: Transactions boursières de vente - and_more: "+%{count} de plus" - investment_flows: - title: Flux d'investissement - description: Suivez les flux d'argent entrants et sortants de vos comptes d'investissement - contributions: Contributions - withdrawals: Retraits - net_flow: Flux net - google_sheets_instructions: - title_with_key: "✅ Copier l'URL pour Google Sheets" - title_no_key: "⚠️ Clé API requise" - ready: Votre URL CSV (avec clé API) est prête. - steps: "Pour importer dans Google Sheets :\n1. Créez une nouvelle feuille Google\n2. Dans la cellule A1, entrez la formule ci-dessous\n3. Appuyez sur Entrée" - security_warning: "Cette URL inclut votre clé API. Gardez-la en sécurité !" - need_key: Pour importer des données dans Google Sheets, vous avez besoin d'une clé API. - step1: "Allez dans Paramètres → Clés API" - step2: "Créez une nouvelle clé API avec la permission \"lecture\"" - step3: Copiez la clé API - step4: "Ajoutez-la à cette URL comme : ?api_key=VOTRE_CLÉ" - example: Exemple - then_use: Ensuite, utilisez l'URL complète avec =IMPORTDATA() dans Google Sheets. - open_sheets: Ouvrir Google Sheets - go_to_api_keys: Aller aux clés API - close: Compris + taxable_realized_note: Ces gains peuvent être soumis à l'impôt + title: Performance des investissements + top_holdings: Principaux holdings + total_gains: Gains totaux + total_return: Rendement total + unrealized_gains: Plus-values latentes + value: Valeur + view_details: Voir les détails + weight: Poids + withdrawals: Retraits de la période + net_worth: + assets_vs_liabilities: Actifs vs Passifs + current_net_worth: Patrimoine net actuel + no_assets: Aucun actif + no_liabilities: Aucun passif + period_change: Variation sur la période + title: Patrimoine net + total_assets: Actifs + total_liabilities: Passifs print: document_title: Rapport financier - title: Rapport financier - generated_on: "Généré le %{date}" - summary: - title: Résumé - income: Revenus - expenses: Dépenses - net_savings: Épargne nette - budget: Budget - vs_prior: "%{percent}% vs précédent" - of_income: "%{percent}% des revenus" - used: utilisé - net_worth: - title: Patrimoine net - current_balance: Solde actuel + generated_on: Généré le %{date} + investments: + contributions: Contributions + holding: Holding + period_return: Rendement de la période + portfolio_value: Valeur du portefeuille + return: Rendement this_period: cette période + title: Investissements + top_holdings: Principaux holdings + total_return: Rendement total + value: Valeur + weight: Poids + withdrawals: Retraits + net_worth: assets: Actifs + current_balance: Solde actuel liabilities: Passifs no_liabilities: Aucun passif - trends: - title: Tendances mensuelles - month: Mois - income: Revenus + this_period: cette période + title: Patrimoine net + spending: + amount: Montant + category: Catégorie expenses: Dépenses - net: Net - savings_rate: Taux d'épargne + income: Revenus + more_categories: "+ %{count} autres catégories" + percent: "%" + title: Dépenses par catégorie + summary: + budget: Budget + expenses: Dépenses + income: Revenus + net_savings: Épargne nette + of_income: "%{percent}% des revenus" + title: Résumé + used: utilisé + vs_prior: "%{percent}% vs précédent" + title: Rapport financier + trends: average: Moyenne current_month_note: "* Mois en cours (données partielles)" - investments: - title: Investissements - portfolio_value: Valeur du portefeuille - total_return: Rendement total - contributions: Contributions - withdrawals: Retraits - this_period: cette période - top_holdings: Principaux avoirs - holding: Avoir - weight: Poids - value: Valeur - return: Rendement - spending: - title: Dépenses par catégorie - income: Revenus expenses: Dépenses + income: Revenus + month: Mois + net: Net + savings_rate: Taux d'épargne + title: Tendances mensuelles + summary: + budget_performance: Performance budgétaire + income_minus_expenses: Revenus moins dépenses + net_savings: Épargne nette + no_budget_data: Aucune donnée budgétaire pour cette période + of_budget_used: du budget utilisé + total_expenses: Dépenses totales + total_income: Revenus totaux + vs_previous: vs période précédente + transactions_breakdown: + export: + csv: CSV + excel: Excel + google_sheets: Ouvrir dans Google Sheets + label: Exporter + pdf: PDF + filters: + account: Compte + all_accounts: Tous les comptes + all_categories: Toutes les catégories + all_tags: Toutes les étiquettes + amount_max: Montant max + amount_min: Montant min + apply: Appliquer les filtres category: Catégorie + clear: Effacer les filtres + date_range: Plage de dates + tag: Étiquette + title: Filtres + no_transactions: Aucune activité trouvée pour la période et les filtres sélectionnés + pagination: + next: Suivant + previous: Précédent + showing: + one: Affichage de %{count} entrée + other: Affichage de %{count} entrées + sort: + amount_asc: Montant (Faible à élevé) + amount_desc: Montant (Élevé à faible) + date_desc: Date (Plus récent) + label: Trier par + table: amount: Montant - percent: "%" - more_categories: "+ %{count} autres catégories" + category: Catégorie + entries: + one: "%{count} entrée" + other: "%{count} entrées" + expense: Dépenses + income: Revenus + percentage: "% du total" + type: Type + uncategorized: Non catégorisé + title: Répartition des activités + trends: + avg_monthly_expenses: Dépenses mensuelles moyennes + avg_monthly_income: Revenu mensuel moyen + avg_monthly_savings: Épargne mensuelle moyenne + avg_per_transaction: Moy. par transaction + current: actuel + expenses: Dépenses + income: Revenus + insight_higher_weekday: Vous dépensez %{percent}% de plus par transaction en + semaine que le week-end + insight_higher_weekend: Vous dépensez %{percent}% de plus par transaction le + week-end qu'en semaine + insight_similar: Vos dépenses par transaction sont similaires en semaine et + le week-end + insight_title: Aperçu + month: Mois + monthly_breakdown: Répartition mensuelle + net: Net + no_data: Aucune donnée de tendance disponible + no_spending_data: Aucune donnée de dépenses disponible pour cette période + savings_rate: Taux d'épargne + spending_patterns: Modèles de dépenses + title: Tendances et aperçus + total: Total + transactions: Transactions + weekday_spending: Dépenses en semaine + weekend_spending: Dépenses le week-end diff --git a/config/locales/views/rules/fr.yml b/config/locales/views/rules/fr.yml index fac2d1c9d..7a756a1ab 100644 --- a/config/locales/views/rules/fr.yml +++ b/config/locales/views/rules/fr.yml @@ -1,52 +1,134 @@ --- fr: + rule: + conditions: + condition_group: + add_condition: Ajouter une condition + all: tout + and_prefix: et + any: n'importe quel + match: correspondre + of_the_following_conditions: des conditions suivantes rules: - no_action: Aucune action - no_condition: Aucune condition actions: value_placeholder: Entrez une valeur apply_all: - button: Appliquer tout - confirm_title: Appliquer toutes les règles - confirm_message: Vous êtes sur le point d'appliquer %{count} règles affectant %{transactions} transactions uniques. Veuillez confirmer si vous souhaitez continuer. - confirm_button: Confirmer et appliquer tout - success: Toutes les règles ont été mises en file d'attente pour exécution + ai_cost_message: Cela utilisera l'IA pour catégoriser jusqu'à %{transactions} + transactions. ai_cost_title: Estimation du coût IA - ai_cost_message: Cela utilisera l'IA pour catégoriser jusqu'à %{transactions} transactions. - estimated_cost: "Coût estimé : ~%{cost} $" + button: Appliquer tout + confirm_button: Confirmer et appliquer tout + confirm_message: Vous êtes sur le point d'appliquer %{count} règles affectant + %{transactions} transactions uniques. Veuillez confirmer si vous souhaitez + continuer. + confirm_title: Appliquer toutes les règles cost_unavailable_model: Estimation du coût non disponible pour le modèle "%{model}". - cost_unavailable_no_provider: Estimation du coût non disponible (aucun fournisseur LLM configuré). - cost_warning: Vous pourriez encourir des frais, veuillez vérifier auprès du fournisseur du modèle pour les prix les plus récents. + cost_unavailable_no_provider: Estimation du coût non disponible (aucun fournisseur + LLM configuré). + cost_warning: Vous pourriez encourir des frais, veuillez vérifier auprès du + fournisseur du modèle pour les prix les plus récents. + estimated_cost: 'Coût estimé : ~%{cost} $' + success: Toutes les règles ont été mises en file d'attente pour exécution view_usage: Voir l'historique d'utilisation + clear_ai_cache: + button: Réinitialiser le cache IA + confirm_body: Êtes-vous sûr de vouloir réinitialiser le cache IA ? Cela permettra + aux règles IA de retraiter toutes les transactions. Cela pourrait engendrer + des coûts API supplémentaires. + confirm_button: Réinitialiser le cache + confirm_title: Réinitialiser le cache IA ? + success: Le cache IA est en cours de suppression. Cela peut prendre quelques + instants. + condition_filters: + transaction_type: + equal_to: Égal à + expense: Dépense + income: Revenu + transfer: Virement + confirm: + ai_cost_no_estimate_html: Cela utilisera l’IA pour catégoriser les transactions + %{count}. + ai_cost_title: Estimation des coûts de l'IA + ai_cost_with_estimate_html: 'Cela utilisera l’IA pour catégoriser les transactions + %{count}. Coût estimé : ~$%{cost}' + apply_notice_html: Vous êtes sur le point d'appliquer cette règle aux %{count} %{resource} qui répondent + aux critères de règle spécifiés. Veuillez confirmer si vous souhaitez procéder + à ce changement. + confirm_changes: Confirmer les modifications + cost_unavailable_model: L'estimation des coûts n'est pas disponible pour le + modèle "%{model}". + cost_unavailable_no_provider: Estimation des coûts non disponible (aucun fournisseur + LLM configuré). + cost_warning: Vous pouvez encourir des frais, veuillez vérifier auprès du fournisseur + de modèles pour connaître les prix les plus récents. + title: Confirmer les modifications + title_with_name: Confirmez les modifications apportées à "%{name}" + view_usage_history: Afficher l'historique d'utilisation + destroy: + success: Règle supprimée + destroy_all: + success: Toutes les règles supprimées + form: + add_action: Ajouter une action + add_condition: Ajouter une condition + add_condition_group: Ajouter un groupe de conditions + all_past_and_future: Tout le passé et le futur %{resource} + rule_name_label: Nom de la règle (facultatif) + rule_name_placeholder: Entrez un nom pour cette règle + starting_from: À partir de + then: ALORS + index: + ai_cost_warning: Les actions de règles basées sur l’IA coûteront de l’argent. Assurez-vous + de filtrer le plus étroitement possible pour éviter des coûts inutiles. + delete_all_rules: Supprimer toutes les règles + new_rule: Nouvelle règle + no_rules_description: Configurez des règles pour effectuer des actions sur vos + transactions et autres données à chaque synchronisation de compte. + no_rules_title: Pas encore de règles + page_title: Règles + rules_heading: Règles + sort_by: 'Trier par :' + sort_name: Nom + sort_updated_at: Mis à jour à + toggle_sort_direction: Changer le sens du tri + no_action: Aucune action + no_condition: Aucune condition recent_runs: - title: Exécutions récentes - description: Consultez l'historique d'exécution de vos règles, y compris le statut de réussite/échec et le nombre de transactions. - unnamed_rule: Règle sans nom columns: date_time: Date/Heure execution_type: Type - status: Statut rule_name: Nom de la règle + status: Statut transactions_counts: - queued: En file d'attente - processed: Traitées + blocked: Bloqué modified: Modifiées + processed: Traitées + queued: En file d'attente + description: Consultez l'historique d'exécution de vos règles, y compris le + statut de réussite/échec et le nombre de transactions. execution_types: manual: Manuel scheduled: Planifié statuses: + failed: Échoué pending: En attente success: Réussi - failed: Échoué - clear_ai_cache: - button: Réinitialiser le cache IA - confirm_title: Réinitialiser le cache IA ? - confirm_body: Êtes-vous sûr de vouloir réinitialiser le cache IA ? Cela permettra aux règles IA de retraiter toutes les transactions. Cela pourrait engendrer des coûts API supplémentaires. - confirm_button: Réinitialiser le cache - success: Le cache IA est en cours de suppression. Cela peut prendre quelques instants. - condition_filters: - transaction_type: - income: Revenu - expense: Dépense - transfer: Virement - equal_to: Égal à + title: Exécutions récentes + unnamed_rule: Règle sans nom + rule: + action_label_to: "%{label} à %{value}" + all_past_and_future: Tout le passé et le futur %{resource} + and_more_actions: + one: et 1 action supplémentaire + other: et %{count} actions supplémentaires + and_more_conditions: + one: et 1 autre condition + other: et %{count} conditions supplémentaires + delete: Supprimer + edit: Modifier + on_or_after: "%{resource} le %{date} ou après" + re_apply_rule: Réappliquer la règle + then: ALORS + update: + success: Règle mise à jour diff --git a/config/locales/views/securities/fr.yml b/config/locales/views/securities/fr.yml index 9271633ad..0afe46d6f 100644 --- a/config/locales/views/securities/fr.yml +++ b/config/locales/views/securities/fr.yml @@ -5,6 +5,11 @@ fr: display: "%{symbol} - %{name} (%{exchange})" exchange_label: "%{symbol} (%{exchange})" providers: + alpha_vantage: Alpha Vantage + binance_public: Binance + eodhd: EODHD + mfapi: MFAPI.in + tiingo: Tiingo twelve_data: Twelve Data yahoo_finance: Yahoo Finance tiingo: Tiingo diff --git a/config/locales/views/sessions/fr.yml b/config/locales/views/sessions/fr.yml index 3f76019af..d312081b0 100644 --- a/config/locales/views/sessions/fr.yml +++ b/config/locales/views/sessions/fr.yml @@ -3,31 +3,39 @@ fr: sessions: create: invalid_credentials: Adresse e-mail ou mot de passe invalide. - local_login_disabled: La connexion locale par mot de passe est désactivée. Veuillez utiliser l'authentification unique. + local_login_disabled: La connexion locale par mot de passe est désactivée. Veuillez + utiliser l'authentification unique. destroy: logout_successful: Vous avez été déconnecté avec succès. - post_logout: - logout_successful: Vous avez été déconnecté avec succès. - openid_connect: - account_linked: "Compte lié avec succès à %{provider}" - failed: Impossible de s'authentifier via OpenID Connect. failure: failed: Impossible de s'authentifier. - sso_provider_unavailable: "Le fournisseur SSO est actuellement indisponible. Veuillez réessayer plus tard ou contacter un administrateur." - sso_invalid_response: "Réponse invalide reçue du fournisseur SSO. Veuillez réessayer." - sso_failed: "Échec de l'authentification unique. Veuillez réessayer." + sso_failed: Échec de l'authentification unique. Veuillez réessayer. + sso_invalid_response: Réponse invalide reçue du fournisseur SSO. Veuillez réessayer. + sso_provider_unavailable: Le fournisseur SSO est actuellement indisponible. + Veuillez réessayer plus tard ou contacter un administrateur. + mobile_sso_start: + redirecting_html: Redirection pour vous connecter... Cliquez + ici si vous n'êtes pas redirigé. new: + demo_banner_message: Ceci est un environnement de démonstration. Les identifiants + de connexion ont été pré-remplis par commodité. Veuillez ne pas saisir d'informations + réelles ou sensibles. + demo_banner_title: Mode démo activé email: Adresse e-mail email_placeholder: nom@exemple.fr forgot_password: Mot de passe oublié ? - password: Mot de passe - submit: Se connecter - title: Connectez-vous à votre compte - password_placeholder: Entrez votre mot de passe - openid_connect: Se connecter avec OpenID Connect - oidc: Se connecter avec OpenID Connect google_auth_connect: Se connecter avec Google local_login_admin_only: La connexion locale est réservée aux administrateurs. - no_auth_methods_enabled: Aucune méthode d'authentification n'est actuellement activée. Veuillez contacter un administrateur. - demo_banner_title: "Mode démo activé" - demo_banner_message: "Ceci est un environnement de démonstration. Les identifiants de connexion ont été pré-remplis par commodité. Veuillez ne pas saisir d'informations réelles ou sensibles." + no_auth_methods_enabled: Aucune méthode d'authentification n'est actuellement + activée. Veuillez contacter un administrateur. + oidc: Se connecter avec OpenID Connect + openid_connect: Se connecter avec OpenID Connect + password: Mot de passe + password_placeholder: Entrez votre mot de passe + submit: Se connecter + title: Connectez-vous à votre compte + openid_connect: + account_linked: Compte lié avec succès à %{provider} + failed: Impossible de s'authentifier via OpenID Connect. + post_logout: + logout_successful: Vous avez été déconnecté avec succès. diff --git a/config/locales/views/settings/api_keys/fr.yml b/config/locales/views/settings/api_keys/fr.yml index 9851ab654..205672a18 100644 --- a/config/locales/views/settings/api_keys/fr.yml +++ b/config/locales/views/settings/api_keys/fr.yml @@ -1,76 +1,132 @@ --- fr: settings: - api_keys_controller: - success: "Votre clé API a été créée avec succès." - revoked_successfully: "La clé API a été révoquée avec succès." - revoke_failed: "Échec de la révocation de la clé API." - scope_descriptions: - read_accounts: "Afficher les comptes" - read_transactions: "Afficher les transactions" - read_balances: "Afficher les soldes" - write_transactions: "Créer des transactions" api_keys: - show: - title: "Gestion des clés API" - no_api_key: - title: "Clé API" - heading: "Accédez à vos données de compte par programmation" - description: "Accédez de manière programmée à vos données Sure avec une clé API sécurisée." - what_you_can_do: "Ce que vous pouvez faire avec l'API :" - feature_1: "Accéder à vos données de compte de manière automatisée" - feature_2: "Construire des intégrations et applications personnalisées" - feature_3: "Automatiser la récupération et l'analyse des données" - security_note_title: "Sécurité avant tout" - security_note: "Votre clé API aura des autorisations limitées en fonction des domaines que vous sélectionnez. Vous ne pouvez avoir qu'une seule clé API active à la fois." - create_api_key: "Créer une clé API" - current_api_key: - title: "Votre Clé API" - description: "Votre clé API active est prête à être utilisée. Gardez-la en sécurité et ne la partagez jamais publiquement." - active: "Active" - key_name: "Nom" - created_at: "Créée le" - last_used: "Dernière utilisation" - expires: "Expire le" - ago: "il y a" - never_used: "Jamais utilisée" - never_expires: "N'expire jamais" - permissions: "Autorisations" - usage_instructions_title: "Comment utiliser votre clé API" - usage_instructions: "Incluez votre clé API dans l'en-tête X-Api-Key lors des requêtes à l'API %{product_name} :" - regenerate_key: "Créer une nouvelle clé" - revoke_key: "Révoquer la clé" - revoke_confirmation: "Êtes-vous sûr(e) de vouloir révoquer cette clé API ? Cette action ne peut pas être annulée et désactivera immédiatement toutes les applications utilisant cette clé." - new: - title: "Créer une clé API" - create_new_key: "Créer une nouvelle clé API" - description: "Configurez votre nouvelle clé API avec un nom descriptif et des autorisations appropriées." - name_label: "Nom de la clé API" - name_placeholder: "ex., Application de production, Tableau de bord analytique" - name_help: "Choisissez un nom descriptif pour vous aider à identifier l'objectif de cette clé." - permissions_label: "Autorisations" - permissions_help: "Sélectionnez les autorisations nécessaires pour votre clé API. Vous pouvez toujours créer une nouvelle clé avec des autorisations différentes." - scope_details: - read_accounts: "Afficher les informations du compte, les soldes et les données au niveau du compte" - read_transactions: "Afficher les données de transaction, les catégories et les détails des transactions" - read_balances: "Afficher les données historiques des soldes et les tendances des valeurs des comptes" - write_transactions: "Créer et mettre à jour des enregistrements de transaction (prochainement disponible)" - security_warning_title: "Avertissement important de sécurité" - security_warning: "Votre clé API sera affichée uniquement une fois après sa création. Gardez-la en sécurité et ne la partagez jamais publiquement. Si vous l'avez perdue, vous devrez en créer une nouvelle." - create_key: "Créer une clé API" - cancel: "Annuler" + create: + success: Votre clé API a été créée avec succès created: - title: "Clé API créée" - success_title: "Clé API créée avec succès" - success_description: "Votre nouvelle clé API est prête à être utilisée. Assurez-vous de la copier maintenant, car vous ne pourrez plus l'afficher par la suite." - your_api_key: "Votre clé API" - key_name: "Nom" - permissions: "Autorisations" + continue: Continuer vers les paramètres de la clé API + copy_key: Copier la clé API + copy_store_securely: Copiez et conservez cette clé en toute sécurité. Vous en aurez besoin pour authentifier vos requêtes API. + created_label: 'Créé :' + critical_warning_1: C'est le seul moment où vous verrez votre clé API en clair. + critical_warning_2: Copiez-la et stockez-la de manière sécurisée dans votre gestionnaire de mots de passe ou dans l'application. + critical_warning_3: Si vous l'avez perdue, vous devrez en créer une nouvelle. critical_warning_title: "⚠️ Critique : Sauvegardez votre clé API maintenant" - critical_warning_1: "C'est le seul moment où vous verrez votre clé API en clair." - critical_warning_2: "Copiez-la et stockez-la de manière sécurisée dans votre gestionnaire de mots de passe ou dans l'application." - critical_warning_3: "Si vous l'avez perdue, vous devrez en créer une nouvelle." - usage_instructions_title: "Démarrage rapide" - usage_instructions: "Utilisez votre clé API en l'incluant dans l'en-tête X-Api-Key :" - copy_key: "Copier la clé API" - continue: "Continuer vers les paramètres de la clé API" + key_details_title: Détails clés + key_name: Nom + key_name_label: 'Nom :' + key_ready: Votre nouvelle clé API "%{name}" a été créée et est prête à être utilisée. + page_title: Clé API créée + permissions: Autorisations + permissions_label: 'Autorisations :' + security_note_body: C'est la seule fois où votre clé API sera affichée. Assurez-vous de le copier maintenant et de le stocker en toute sécurité. Si vous perdez cette clé, vous devrez en générer une nouvelle. + security_note_title: Note de sécurité importante + success_description: Votre nouvelle clé API est prête à être utilisée. Assurez-vous de la copier maintenant, car vous ne pourrez plus l'afficher par la suite. + success_title: Clé API créée avec succès + title: Clé API créée + usage_instructions: 'Utilisez votre clé API en l''incluant dans l''en-tête X-Api-Key :' + usage_instructions_title: Démarrage rapide + your_api_key: Votre clé API + destroy: + cannot_revoke: Cette clé API ne peut pas être révoquée + not_found: Clé API introuvable + revoke_failed: Échec de la révocation de la clé API + revoked_successfully: La clé API a été révoquée avec succès + index: + empty_description: Créez une clé API pour accéder à vos données par programmation. + empty_heading: Aucune clé API pour l'instant + new_key: Nouvelle clé API + revoke_confirmation: Voulez-vous vraiment révoquer "%{name}" ? Cela désactivera immédiatement toute application utilisant cette clé. + revoke_key: Révoquer + subtitle: Gérez les clés API pour l'accès programmatique à vos données. + title: Clés API + new: + cancel: Annuler + create_key: Créer une clé API + create_new_api_key: Créer une nouvelle clé API + create_new_key: Créer une nouvelle clé API + description: Configurez votre nouvelle clé API avec un nom descriptif et des autorisations appropriées. + name_help: Choisissez un nom descriptif pour vous aider à identifier l'objectif de cette clé. + name_help_text: Choisissez un nom descriptif pour vous aider à identifier cette clé ultérieurement. + name_label: Nom de la clé API + name_placeholder: ex., Application de production, Tableau de bord analytique + permissions_help: Sélectionnez les autorisations nécessaires pour votre clé API. Vous pouvez toujours créer une nouvelle clé avec des autorisations différentes. + permissions_label: Autorisations + save_api_key: Enregistrer la clé API + scope_details: + read_accounts: Afficher les informations du compte, les soldes et les données au niveau du compte + read_balances: Afficher les données historiques des soldes et les tendances des valeurs des comptes + read_transactions: Afficher les données de transaction, les catégories et les détails des transactions + write_transactions: Créer et mettre à jour des enregistrements de transaction (prochainement disponible) + scope_read_only: Lecture seule + scope_read_only_description: Consultez vos comptes, transactions et soldes + scope_read_write: Lire/écrire + scope_read_write_description: Consultez vos données et créez de nouvelles transactions + security_warning: Votre clé API sera affichée uniquement une fois après sa création. Gardez-la en sécurité et ne la partagez jamais publiquement. Si vous l'avez perdue, vous devrez en créer une nouvelle. + security_warning_body: Votre clé API ne sera affichée qu'une seule fois après sa création. Assurez-vous de le copier et de le stocker en toute sécurité. Toute personne ayant accès à cette clé peut accéder à vos données selon les autorisations que vous sélectionnez. + security_warning_title: Avertissement important de sécurité + subtitle: Générez une nouvelle clé API pour accéder à vos données Sure par programmation. + title: Créer une clé API + shared: + active: Actif + created_ago: Créé il y a %{time} + last_used_ago: Utilisé il y a %{time} + never_used: Jamais utilisé + scope_read_only: Lecture seule + scope_read_write: Lecture/Écriture + show: + current_api_key: + active: Active + ago: il y a + back_to_keys: Retour aux clés API + copy_api_key: Copier la clé API + copy_store_securely: Copiez et conservez cette clé en toute sécurité. Vous en aurez besoin pour authentifier vos requêtes API. + created_ago: Créé il y a %{time} + created_at: Créée le + description: Votre clé API active est prête à être utilisée. Gardez-la en sécurité et ne la partagez jamais publiquement. + expires: Expire le + key_name: Nom + last_used: Dernière utilisation + last_used_ago: Dernière utilisation il y a %{time} + never_expires: N'expire jamais + never_used: Jamais utilisée + permissions: Autorisations + regenerate_key: Créer une nouvelle clé + revoke_confirmation: Êtes-vous sûr(e) de vouloir révoquer cette clé API ? Cette action ne peut pas être annulée et désactivera immédiatement toutes les applications utilisant cette clé. + revoke_key: Révoquer la clé + scope_read_only: Lecture seule + scope_read_write: Lire/écrire + title: Votre Clé API + usage_instructions: 'Incluez votre clé API dans l''en-tête X-Api-Key lors des requêtes à l''API %{product_name} :' + usage_instructions_title: Comment utiliser votre clé API + newly_created: + continue: Continuer vers les paramètres de la clé API + copy_api_key: Copier la clé API + copy_store_securely: Copiez et conservez cette clé en toute sécurité. Vous en aurez besoin pour authentifier vos requêtes API. + heading: Clé API créée avec succès ! + how_to_use: Comment utiliser votre clé API + key_ready: Votre nouvelle clé API "%{name}" a été créée et est prête à être utilisée. + page_title: Clé API créée avec succès + your_api_key: Votre clé API + no_api_key: + create_api_key: Créer une clé API + description: Accédez de manière programmée à vos données Sure avec une clé API sécurisée. + feature_1: Accéder à vos données de compte de manière automatisée + feature_2: Construire des intégrations et applications personnalisées + feature_3: Automatiser la récupération et l'analyse des données + heading: Accédez à vos données de compte par programmation + security_note: Votre clé API aura des autorisations limitées en fonction des domaines que vous sélectionnez. Vous ne pouvez avoir qu'une seule clé API active à la fois. + security_note_title: Sécurité avant tout + title: Clé API + what_you_can_do: 'Ce que vous pouvez faire avec l''API :' + title: Gestion des clés API + api_keys_controller: + revoke_failed: Échec de la révocation de la clé API. + revoked_successfully: La clé API a été révoquée avec succès. + scope_descriptions: + read_accounts: Afficher les comptes + read_balances: Afficher les soldes + read_transactions: Afficher les transactions + write_transactions: Créer des transactions + success: Votre clé API a été créée avec succès. diff --git a/config/locales/views/settings/ca.yml b/config/locales/views/settings/ca.yml index 9df987673..a7db87d3e 100644 --- a/config/locales/views/settings/ca.yml +++ b/config/locales/views/settings/ca.yml @@ -35,6 +35,10 @@ ca: theme_light: Clar theme_subtitle: Tria el tema preferit per a l'aplicació theme_system: Sistema + modals_title: Modals + modals_subtitle: Personalitza el comportament dels modals + disable_modal_click_outside_title: Mantén els modals oberts en fer clic fora + disable_modal_click_outside_description: Evita que els modals es tanquin en fer clic fora. Útil per evitar perdre canvis no desats accidentalment. theme_title: Tema transactions_subtitle: Personalitza com es mostren les transaccions transactions_title: Transaccions diff --git a/config/locales/views/settings/de.yml b/config/locales/views/settings/de.yml index eb17807f2..f0fbe7708 100644 --- a/config/locales/views/settings/de.yml +++ b/config/locales/views/settings/de.yml @@ -46,6 +46,12 @@ de: month_start_day: Budgetmonat beginnt am month_start_day_hint: Lege fest, wann dein Budgetmonat beginnt (z. B. Gehaltstag) month_start_day_warning: Deine Budgets und MTD-Berechnungen verwenden diesen benutzerdefinierten Starttag anstelle des 1. jedes Monats. + appearances: + show: + modals_title: Modale Fenster + modals_subtitle: Verhalten der modalen Fenster anpassen + disable_modal_click_outside_title: Modale Fenster bei Klick außerhalb geöffnet lassen + disable_modal_click_outside_description: Verhindert das Schließen modaler Fenster beim Klicken außerhalb. Nützlich, um ungespeicherte Änderungen nicht versehentlich zu verlieren. profiles: destroy: cannot_remove_self: Du kannst dich nicht selbst aus dem Konto entfernen. diff --git a/config/locales/views/settings/en.yml b/config/locales/views/settings/en.yml index ee825a7d0..c5f1706d5 100644 --- a/config/locales/views/settings/en.yml +++ b/config/locales/views/settings/en.yml @@ -107,6 +107,10 @@ en: theme_dark: Dark theme_light: Light theme_system: System + modals_title: Modals + modals_subtitle: Customize modal behavior + disable_modal_click_outside_title: Keep modals open on outside click + disable_modal_click_outside_description: Prevent modals from closing when clicking outside. Useful to avoid accidentally losing unsaved changes. transactions_title: Transactions transactions_subtitle: Customize how transactions are displayed dashboard_title: Dashboard diff --git a/config/locales/views/settings/es.yml b/config/locales/views/settings/es.yml index 1ff5af650..d0db5bc13 100644 --- a/config/locales/views/settings/es.yml +++ b/config/locales/views/settings/es.yml @@ -50,6 +50,12 @@ es: preview: title: Habilitar funciones experimentales description: Activa las funciones en desarrollo etiquetadas como experimentales o canary. + appearances: + show: + modals_title: Modales + modals_subtitle: Personalizar el comportamiento de los modales + disable_modal_click_outside_title: Mantener modales abiertos al hacer clic fuera + disable_modal_click_outside_description: Evita que los modales se cierren al hacer clic fuera. Útil para evitar perder cambios no guardados accidentalmente. profiles: destroy: cannot_remove_self: No puedes eliminarte a ti mismo de la cuenta. diff --git a/config/locales/views/settings/fr.yml b/config/locales/views/settings/fr.yml index 6faca441d..9695b8415 100644 --- a/config/locales/views/settings/fr.yml +++ b/config/locales/views/settings/fr.yml @@ -1,88 +1,186 @@ --- fr: - views: - settings: - payments: - renewal: "Votre contribution se poursuit le %{date}." - cancellation: "Votre contribution se termine le %{date}." settings: ai_prompts: show: - page_title: Prompts IA - openai_label: OpenAI disable_ai: Désactiver l'assistant IA - prompt_instructions: Instructions pour les prompts main_system_prompt: - title: Prompt Système Principal subtitle: Instructions fondamentales qui définissent le comportement de l'assistant AI dans toutes les conversations de chat - transaction_categorizer: - title: Catégorisation des transactions - subtitle: L'IA catégorise automatiquement vos transactions en fonction de vos catégories définies + title: Prompt Système Principal merchant_detector: - title: Détection du marchand subtitle: L'IA identifie et enrichit les données de transaction avec des informations sur le marchand - payments: - show: - page_title: Paiements - subscription_subtitle: Mettez à jour les détails de votre carte de crédit - subscription_title: Gérer les contributions + title: Détection du marchand + openai_label: OpenAI + page_title: Prompts IA + prompt_instructions: Instructions pour les prompts + transaction_categorizer: + subtitle: L'IA catégorise automatiquement vos transactions en fonction de vos catégories définies + title: Catégorisation des transactions appearances: show: + dashboard_subtitle: Personnalisez l'affichage du tableau de bord + dashboard_title: Tableau de bord + dashboard_two_column_description: Affiche les widgets du tableau de bord sur deux colonnes sur les grands écrans. Lorsque cette option est désactivée, les widgets sont empilés dans une seule colonne. + dashboard_two_column_title: Mise en page à deux colonnes page_title: Apparence - theme_title: Thème - theme_subtitle: Choisissez un thème préféré pour l'application + split_grouped_description: Affiche les transactions fractionnées groupées sous leur parent dans la liste des transactions. Lorsque cette option est désactivée, les enfants fractionnés apparaissent comme des lignes individuelles. + split_grouped_title: Grouper les transactions fractionnées theme_dark: Sombre theme_light: Clair + theme_subtitle: Choisissez un thème préféré pour l'application theme_system: Système + theme_title: Thème + modals_title: Fenêtres modales + modals_subtitle: Personnaliser le comportement des fenêtres modales + disable_modal_click_outside_title: Garder les fenêtres modales ouvertes au clic extérieur + disable_modal_click_outside_description: Empêche les fenêtres modales de se fermer en cliquant à l'extérieur. Utile pour éviter de perdre accidentellement des modifications non sauvegardées. transactions_title: Transactions transactions_subtitle: Personnalisez l'affichage des transactions - dashboard_title: Tableau de bord - dashboard_subtitle: Personnalisez l'affichage du tableau de bord - dashboard_two_column_title: Mise en page à deux colonnes - dashboard_two_column_description: Affiche les widgets du tableau de bord sur deux colonnes sur les grands écrans. Lorsque cette option est désactivée, les widgets sont empilés dans une seule colonne. - split_grouped_title: Grouper les transactions fractionnées - split_grouped_description: Affiche les transactions fractionnées groupées sous leur parent dans la liste des transactions. Lorsque cette option est désactivée, les enfants fractionnés apparaissent comme des lignes individuelles. + transactions_title: Transactions + debugs: + show: + context: + account: compte=%{value} + account_provider: account_provider=%{value} + family: famille=%{value} + provider: fournisseur=%{value} + user: utilisateur=%{value} + empty: Aucun événement de débogage trouvé. + filters: + account_id: Identifiant du compte + account_provider_id: ID du fournisseur de compte + all: Tout + category: Catégorie + end_date: À + family_id: Carte d'identité familiale + level: Niveau + provider: Fournisseur + reset: Réinitialiser + source: Origine + start_date: De + submit: Filtrer + user_id: Identifiant utilisateur + missing_value: "-" + page_title: Débogage + subtitle: Événements opérationnels significatifs pour les super administrateurs. Le plus récent en premier. + table: + category: Catégorie + context: Contexte + level: Niveau + message: Message + metadata: Métadonnées + source: Origine + time: Temps + view_metadata: Voir + title: Journal des événements de débogage + llm_usages: + show: + avg_cost_per_request: Coût moyen/demande + based_on_requests: Basé sur %{with_cost} requêtes sur %{total} avec données de coût + col_cost: Coût + col_date: Date + col_model: Modèle + col_operation: Fonctionnement + col_tokens: Jetons + completion: achèvement + cost_by_model: Coût par modèle + cost_by_operation: Coût par opération + cost_estimates_description: Les coûts sont estimés sur la base des tarifs d'OpenAI à partir de 2025. Les coûts réels peuvent varier. Le prix est par million de jetons et varie selon le modèle. Les modèles personnalisés ou auto-hébergés afficheront « N/A » et ne seront pas inclus dans le coût total. + cost_estimates_title: À propos des estimations de coûts + end_date: Date de fin + failed: Échec + filter: Filtrer + no_usage_data: Aucune donnée d'utilisation trouvée pour la période sélectionnée + page_title: Utilisation et coûts du LLM + prompt: invite + recent_usage: Utilisation récente + start_date: Date de début + subtitle: Suivez votre utilisation de l'IA et les coûts estimés + total_cost: Coût total + total_requests: Total demandes + total_tokens: Total jetons + mcp: + revoke: + revoked: Connexion révoquée. + show: + connect_subtitle: Collez cette URL dans Claude.ai (ou tout client compatible MCP) pour le connecter à votre compte Sure. + connect_title: Connecter un assistant IA + connected_ago: Connecté il y a %{time} + connected_subtitle: Ces applications ont actuellement accès à vos données Sure. Révoquez celles que vous n'utilisez plus. + connected_title: Clients connectés + copied: Copié ! + copy_url: Copier + how_to_connect_title: Comment connecter Claude + page_title: Serveur MCP + revoke: Révoquer + revoke_confirm: Révoquer l'accès pour ce client ? + step_1: Ouvrez Claude.ai et allez dans Paramètres → Intégrations. + step_2: Cliquez sur "Ajouter l'intégration" et collez l'URL du serveur MCP ci-dessus. + step_3: Cliquez sur Connecter — vous serez redirigé vers Sure pour vous connecter et autoriser l'accès. + step_4: Une fois autorisé, Claude peut lire vos comptes, transactions et données de solde. + unknown_client: Client inconnu + payments: + show: + choose_level: Choisir le niveau + contributions_note: Les contributions à %{product_name} s'afficheront ici. + currently_on_plan: Actuellement sur le + manage: Gérer + not_contributing_emphasis: ne pas contribuer + not_contributing_prefix: Vous êtes actuellement + page_title: Paiements + payment_via_stripe: Paiement via Stripe + subscription_subtitle: Mettez à jour les détails de votre carte de crédit + subscription_title: Gérer les contributions + trial_days_left: + one: Les données seront supprimées dans %{count} jour + other: Les données seront supprimées dans %{count} jours + trialing: J'utilise actuellement la démo ouverte de %{product_name} preferences: show: + additional_currencies_label: Devises supplémentaires + base_currency_badge: Devise de base + base_currency_label: Devise de base country: Pays + currencies_more: "+%{count} de plus" + currencies_subtitle: Choisissez les devises qui apparaissent dans les champs monétaires de votre %{moniker} + currencies_title: Devises de %{moniker} currency: Devise + currency_search_placeholder: Rechercher des devises date_format: Format de date + default_account_order: Ordre d'affichage des comptes par défaut + default_period: Période par défaut general_subtitle: Configurez vos préférences general_title: Général - default_period: Période par défaut - default_account_order: Ordre d'affichage des comptes par défaut language: Langue language_auto: Langue du navigateur - page_title: Préférences - timezone: Fuseau horaire + manage_currencies: Gérer les devises + manage_currencies_subtitle: Désélectionnez les devises que vous n'utilisez jamais, ou réduisez la liste à quelques-unes seulement. month_start_day: Le mois budgétaire commence le month_start_day_hint: Définissez le jour de début de votre mois budgétaire (ex. jour de paie) month_start_day_warning: Vos budgets et vos calculs MTD utiliseront ce jour de début personnalisé au lieu du 1er de chaque mois. - currencies_title: "Devises de %{moniker}" - currencies_subtitle: Choisissez les devises qui apparaissent dans les champs monétaires de votre %{moniker} - base_currency_label: Devise de base - base_currency_badge: Devise de base - additional_currencies_label: Devises supplémentaires no_additional_currencies: Aucune sélectionnée - currencies_more: "+%{count} de plus" - manage_currencies: Gérer les devises - manage_currencies_subtitle: Désélectionnez les devises que vous n'utilisez jamais, ou réduisez la liste à quelques-unes seulement. + no_matching_currencies: Aucune devise trouvée + page_title: Préférences + preview: + description: Activez les fonctionnalités en cours étiquetées Aperçu ou Canary. + title: Activer les fonctionnalités d'aperçu + save_currencies: Enregistrer les devises select_all_currencies: Tout sélectionner select_base_only: Devise de base uniquement - currency_search_placeholder: Rechercher des devises - no_matching_currencies: Aucune devise trouvée selected_currencies_count: one: "%{count} sélectionnée" other: "%{count} sélectionnées" - save_currencies: Enregistrer les devises - sharing_title: "Partage de %{moniker}" - sharing_subtitle: "Contrôlez comment les comptes sont partagés dans votre %{moniker}" sharing_default_label: Partage par défaut pour les nouveaux comptes - sharing_shared: Partager avec tous les membres sharing_private: Garder privé par défaut + sharing_shared: Partager avec tous les membres + sharing_subtitle: Contrôlez comment les comptes sont partagés dans votre %{moniker} + sharing_title: Partage de %{moniker} + timezone: Fuseau horaire + translations_notice: Veuillez noter que nous travaillons toujours sur des traductions dans différentes langues. profiles: destroy: cannot_remove_self: Vous ne pouvez pas vous enlever de votre compte. + member_owns_other_family_data: Ce membre possède toujours des comptes dans un autre foyer et ne peut pas être supprimé. Transférez ou supprimez ces comptes d'abord. member_removal_failed: Il y a eu un problème lors de la suppression du membre. member_removed: Le membre a été supprimé avec succès. not_authorized: Vous n'êtes pas autorisé à supprimer les membres. @@ -90,25 +188,21 @@ fr: confirm_delete: body: Êtes-vous sûr(e) de vouloir supprimer définitivement votre compte ? Cette action est irréversible. title: Supprimer le compte? - confirm_reset: - body: Êtes-vous sûr(e) de vouloir réinitialiser votre compte ? Cela supprimera tous vos comptes, catégories, marchands, étiquettes et autres données. Cette action ne peut pas être annulée. - title: Réinitialiser le compte? - confirm_reset_with_sample_data: - body: Êtes-vous sûr(e) de vouloir réinitialiser votre compte et charger des données d'exemple ? Cela supprimera vos données existantes et les remplacera par des données de démonstration afin que vous puissiez explorer Sure en toute sécurité. - title: Réinitialiser le compte et charger des données d'exemple ? confirm_remove_invitation: body: Êtes-vous sûr(e) de vouloir supprimer l'invitation pour %{email}? title: Supprimer l'invitation confirm_remove_member: body: Êtes-vous sûr(e) de vouloir supprimer %{name} de votre compte? title: Supprimer le membre + confirm_reset: + body: Êtes-vous sûr(e) de vouloir réinitialiser votre compte ? Cela supprimera tous vos comptes, catégories, marchands, étiquettes et autres données. Cette action ne peut pas être annulée. + title: Réinitialiser le compte? + confirm_reset_with_sample_data: + body: Êtes-vous sûr(e) de vouloir réinitialiser votre compte et charger des données d'exemple ? Cela supprimera vos données existantes et les remplacera par des données de démonstration afin que vous puissiez explorer Sure en toute sécurité. + title: Réinitialiser le compte et charger des données d'exemple ? danger_zone_title: Zone dangereuse delete_account: Supprimer le compte delete_account_warning: La suppression de votre compte entraînera la suppression permanente de toutes vos données et ne pourra pas être annulée. - reset_account: Réinitialiser le compte - reset_account_warning: La réinitialisation de votre compte supprimera tous vos comptes, catégories, marchands, étiquettes et autres données, mais gardera votre compte utilisateur intact. - reset_account_with_sample_data: Réinitialiser et précharger - reset_account_with_sample_data_warning: Supprime toutes vos données existantes puis charge des données d'exemple afin que vous puissiez explorer avec un environnement pré-rempli. email: E-mail first_name: Prénom group_form_input_placeholder: Entrez le nom du groupe @@ -127,101 +221,340 @@ fr: profile_title: Personnel remove_invitation: Supprimer l'invitation remove_member: Supprimer le membre + resend_confirmation_link: demander un nouvel e-mail de confirmation + reset_account: Réinitialiser le compte + reset_account_warning: La réinitialisation de votre compte supprimera tous vos comptes, catégories, marchands, étiquettes et autres données, mais gardera votre compte utilisateur intact. + reset_account_with_sample_data: Réinitialiser et précharger + reset_account_with_sample_data_warning: Supprime toutes vos données existantes puis charge des données d'exemple afin que vous puissiez explorer avec un environnement pré-rempli. save: Enregistrer + unconfirmed_email_notice_html: Vous avez demandé à changer votre e-mail pour %{email}. Veuillez confirmer via l'e-mail reçu pour que le changement prenne effet. Si vous n'avez pas reçu l'e-mail, vérifiez vos spams ou %{resend_link}. + providers: + akahu_panel: + step_1_html: Allez sur %{link} et créez une application personnelle. + step_2: Copiez votre jeton d'application (App Token) et votre jeton d'utilisateur (User Token). + step_3: Collez les jetons ci-dessous, enregistrez, puis liez vos comptes synchronisés. + bank_sync: + lede: Connectez des comptes externes pour que les transactions, les soldes et les holdings soient automatiquement transférés vers Sure. + page_title: Synchronisation bancaire + binance_panel: + api_key_label: Clé API + api_key_placeholder: Collez votre clé API Binance + api_secret_label: Secret API + api_secret_placeholder: Collez votre secret API Binance + connect_button: Connecter Binance + disconnect_confirm: Êtes-vous sûr(e) de vouloir déconnecter Binance ? + historical_import: Paramètres d'importation historique + ip_hint_body: 'Ajoutez l''IP de sortie du serveur de l''application à la liste blanche de la clé API Binance :' + ip_hint_contact_admin: Contactez votre administrateur pour obtenir l'adresse IP de sortie du serveur de l'application. + ip_hint_title: Liste blanche d'IP requise + no_withdraw_body: N'activez pas les permissions de retrait lors de la création de votre clé API Binance. Sure requiert uniquement un accès en lecture. + no_withdraw_title: Clé en lecture seule uniquement + no_withdraw_warning: 'Attention : n''activez PAS les permissions de retrait' + setup_instructions: 'Pour connecter Binance, créez une clé API en lecture seule :' + step1_html: Allez dans la Gestion des API Binance + step2: Créez une nouvelle clé API avec la permission Enable Reading uniquement + step3: Collez votre clé API et votre secret ci-dessous + sync: Synchroniser + sync_start_date_help: Sélectionnez l'ancienneté des transactions à importer. + sync_start_date_label: Importer les données depuis + syncing: Synchronisation… + clear_filter: Effacer les filtres + coinbase_panel: + api_key_label: Clé API + api_key_placeholder: Entrez votre clé API Coinbase + api_secret_label: Secret API + api_secret_placeholder: Entrez votre secret API Coinbase + connect_button: Connecter Coinbase + disconnect_confirm: Êtes-vous sûr(e) de vouloir déconnecter cette connexion Coinbase ? Vos comptes synchronisés deviendront des comptes manuels. + setup_instructions: 'Pour connecter Coinbase :' + step1_html: Allez dans les Paramètres API de Coinbase + step2: Créez une nouvelle clé API avec des permissions en lecture seule (voir les comptes, voir les transactions) + step3: Copiez votre clé API et votre secret API et collez-les ci-dessous + sync: Synchroniser + syncing: Synchronisation… + connect: Se connecter + drawer_trust_statement: Accès en lecture seule. Sure ne peut jamais déplacer d'argent, et vos identifiants sont stockés de manière chiffrée. + empty_filter: Aucun fournisseur ne correspond à votre filtre. + enable_banking_panel: + add_connection: Ajouter une connexion + application_id_label: Application ID + application_id_placeholder_new: Saisissez l'identifiant de l'application + application_id_placeholder_update: Saisissez le nouvel identifiant pour mettre à jour + callback_url_instruction: Pour l'URL de rappel, utilisez %{callback_url}. + client_certificate_label: Certificat client (avec clé privée) + config_locked_message: Déconnectez toutes les banques liées avant de modifier ces identifiants. + config_locked_title: Configuration verrouillée + configured: Configuré + connect_bank: Connecter la banque + connected_bank: Banque connectée + connection: Connexion + connection_error: Erreur de connexion + country_label: Pays + ready_to_link: Prêt à lier les comptes + reconnect: Reconnecter + remove: Supprimer + remove_confirm: Voulez-vous vraiment supprimer cette connexion ? + save_and_connect: Enregistrer et connecter + select_country: Sélectionner le pays... + session_expired_reconnect: Session expirée - reconnecter + session_expires: 'La session expire le : %{date}' + step_1_html: Allez sur %{link} et récupérez vos identifiants de développeur. + step_2: Choisissez votre pays et collez l'identifiant de l'application (Application ID) et le certificat client ci-dessous. + step_3: Enregistrez, puis utilisez Ajouter une connexion pour lier votre banque. + sync: Synchroniser + syncing: Synchronisation... + unknown: Inconnu + update_connection: Mettre à jour la connexion + encryption_error: + message: Les clés de chiffrement Active Record ne sont pas configurées. Veuillez vous assurer que les identifiants de chiffrement (active_record_encryption.primary_key, active_record_encryption.deterministic_key et active_record_encryption.key_derivation_salt) sont correctement définis dans vos identifiants Rails ou variables d'environnement avant d'utiliser les fournisseurs de synchronisation. + title: Configuration de chiffrement requise + groups: + available: Disponibles + empty_available: Tous les fournisseurs disponibles sont connectés. + your_connections: Vos connexions + health_strip: + accounts_syncing: synchronisation des comptes + connected: connecté + last_synced: Dernière synchronisation il y a %{time} + needs_attention: requiert de l'attention + ibkr_panel: + accounts_tab: Comptes + configuration: + all_other_options: 'All other configuration options : "No"' + date_format: 'Date Format : yyyy-MM-dd' + date_time_separator: 'Date/Time Separator : ; (semi-colon)' + format: 'Format : XML' + models: 'Models : Optional' + period: 'Period : Last 365 Calendar Days' + profit_and_loss: 'Profit and Loss : Default' + time_format: 'Time Format : HH:mm:ss' + disconnect_confirm: Déconnecter Interactive Brokers ? + flex_query_details: + configuration_heading: Définissez ces options de requête + eyebrow: Requête Flex + sections_heading: Activez ces sections et ces champs + summary: Développez pour voir les sections, champs et paramètres exacts que votre requête Flex d'activité IBKR doit inclure. + title: Sections, champs et configuration + not_configured: Non configuré. + query_id_label: ID de requête (Query ID) + query_id_placeholder_existing: Laissez vide pour conserver l'ID de requête actuel + query_id_placeholder_new: Saisissez votre ID de requête IBKR Flex + report_window_note: Les rapports IBKR Flex sont limités à la fenêtre de requête que vous avez configurée dans IBKR. Sure importera la totalité des positions actuelles ainsi que jusqu'aux 365 derniers jours d'activité de ce rapport. + save_configuration: Enregistrer la configuration + sections: + account_information: 'Account Information: Account ID, Currency' + cash_report: 'Cash Report :' + cash_report_fields: 'Fields : Currency, Ending Cash' + cash_report_options: 'Options : None' + cash_transactions: 'Cash Transactions :' + cash_transactions_fields: 'Fields : Amount, Conid, Currency, FX Rate To Base, Report Date, Transaction ID, Type' + cash_transactions_options: 'Options : Dividends, Deposits & Withdrawals, Detail' + change_in_position_value_summary: 'Change In Position Value Summary : Currency, End Of Period Value' + net_asset_value: 'Net Asset Value (NAV) in Base :' + net_asset_value_fields: 'Fields : Currency, Report Date, Total' + net_asset_value_options: 'Options : None' + open_positions: 'Open Positions :' + open_positions_fields: 'Fields : Asset Class, Conid, Cost Basis Price, Currency, FX Rate To Base, Mark Price, Quantity, Report Date, Security ID, Security ID Type, Side, Symbol' + open_positions_options: 'Options : Summary' + trades: 'Trades :' + trades_fields: 'Fields : Asset Class, Buy/Sell, Conid, Currency, FX Rate To Base, IB Commission, IB Commission Currency, Quantity, Symbol, Trade Date, Trade ID, TradePrice, Transaction ID' + trades_options: 'Options : Execution' + status_configured_prefix: "%{summary}. Visitez l'onglet" + status_configured_suffix: pour gérer les comptes découverts. + steps: + step_1: Dans votre portail client IBKR, accédez à "Performance & Rapports" > "Requêtes Flex". + step_2: Cliquez sur l'icône "+" dans la section "Activity Flex Query" pour créer une nouvelle requête. + step_3: 'Nommez votre requête (ex: "Sure Sync"), puis passez en revue les détails de la requête Flex ci-dessous et activez les sections, champs et options de configuration répertoriés.' + step_4: Enregistrez la requête, notez votre "Query ID", puis utilisez l'icône d'engrenage dans la section "Flex Web Service Configuration" pour générer un jeton d'accès (Token). + step_5: Collez votre Query ID et votre Token ci-dessous, enregistrez la configuration, puis allez dans Comptes pour lier les comptes IBKR découverts. + sync: Synchroniser + token_label: Jeton (Token) + token_placeholder_existing: Laissez vide pour conserver le jeton actuel + token_placeholder_new: Saisissez votre jeton de service web IBKR Flex + update_configuration: Mettre à jour la configuration + kraken_panel: + add_connection: Ajouter une connexion Kraken + api_key_label: Clé API + api_key_placeholder: Collez votre clé API Kraken + api_secret_label: Clé privée + api_secret_placeholder: Collez votre clé privée Kraken + connection_name_label: Nom de la connexion + connection_name_placeholder: Kraken principal + default_connection_name: Kraken + disconnect: Déconnecter + disconnect_confirm: Voulez-vous vraiment déconnecter %{name} ? + keep_api_key_placeholder: Laissez vide pour conserver la clé API existante + keep_api_secret_placeholder: Laissez vide pour conserver la clé privée existante + read_only_body: N'accordez pas de droits de trading, d'annulation, de retrait, d'exportation, de grand livre, de gain, de jalonnement ou de transfert. Sure importe uniquement les soldes, actifs et transactions spot exécutées. + read_only_title: Synchronisation d'échange en lecture seule uniquement + setup_accounts: Configurer le compte + step1_html: Allez dans les paramètres d'API Kraken + step2: Créez une clé API avec uniquement les droits Query Funds et Query Closed Orders & Trades. + step3: Collez la clé API et la clé privée ci-dessous. + sync: Synchroniser + syncing: Synchronisation... + update_connection: Mettre à jour la connexion + lunchflow_panel: + api_key_label: Clé API + api_key_placeholder_new: Collez la clé API ici + api_key_placeholder_update: Saisissez la nouvelle clé API pour mettre à jour + base_url_label: URL de base (Facultatif) + base_url_placeholder: https://lunchflow.app/api/v1 (par défaut) + save_and_connect: Enregistrer et connecter + step_1_html: Allez sur %{link} et créez une clé API. + step_2: Collez votre clé ci-dessous et connectez-vous. + step_3: Ensuite, allez dans Comptes pour lier vos comptes synchronisés. + update_connection: Mettre à jour la connexion + maturity: + alpha: Alpha + beta: Bêta + meta: + last_synced: Synchronisé il y a %{time} + no_recent_sync: Synchro en retard + reconsent_needed: + one: Consentement requis dans 1 jour + other: Consentement requis dans %{count} jours + reconsent_required: Consentement requis + registration_needed: Enregistrement requis + sync_error: Erreur de synchro + not_authorized: Non autorisé + not_found: Fournisseur non trouvé. + plaid_eu_panel: + step_1_html: Ouvrez %{link} et copiez votre EU Client ID et Secret Key. + plaid_panel: + step_1_html: Ouvrez %{link} et copiez votre Client ID et Secret Key. + step_2: Choisissez un environnement. Utilisez sandbox pour les tests et production pour les comptes réels. + step_3: Collez vos identifiants ci-dessous et connectez-vous. + provider_form: + save_and_connect: Enregistrer et connecter + recently_synced: Synchronisé récemment. Réessayez dans un instant. + search_filters: + aria_label: Rechercher des fournisseurs + chips: + all: Tous + bank: Banques + crypto: Crypto + investment: Investissements + placeholder: Rechercher des fournisseurs + setup_steps: + eyebrow: Configuration + need_help: Besoin d'aide ? + show: + coinbase_title: Coinbase + simplefin_panel: + save_and_connect: Enregistrer et connecter + setup_token_label: Jeton de configuration (Setup Token) + setup_token_placeholder: Collez le jeton de configuration SimpleFIN + step_1_html: Allez sur %{link} pour obtenir un jeton de configuration à usage unique. + step_2: Collez le jeton ci-dessous et connectez-vous. + step_3: Ensuite, allez dans Comptes pour lier vos comptes synchronisés. + status: + err: Erreur + 'false': Non configuré + ok: Connecté + warn: Action nécessaire + sync_all: Tout synchroniser + sync_all_in_progress: Synchronisation de tous les fournisseurs connectés… + sync_all_recently: Synchronisation déjà en cours. Réessayez dans un instant. + sync_provider: Synchroniser maintenant + sync_provider_in_progress: Synchronisation démarrée. + sync_provider_no_items: Aucune connexion disponible pour la synchronisation. + taglines: + akahu: Synchronisez les institutions financières de Nouvelle-Zélande via Akahu. + binance: Synchronisez vos soldes Binance spot à l'aide d'une clé API en lecture seule. + brex: Synchronisez l'activité de vos cartes de crédit et comptes de trésorerie Brex en lecture seule. + coinbase: Importez vos actifs crypto Coinbase et suivez leur performance. + coinstats: Suivez l'intégralité de votre portefeuille crypto sur vos portefeuilles et plateformes. + enable_banking: Synchronisez les comptes bancaires européens via l'open banking PSD2. + ibkr: Synchronisez vos comptes d'investissement Interactive Brokers via l'import Flex Query. + indexa_capital: Suivez votre portefeuille d'investissement automatisé Indexa Capital. + kraken: Synchronisez vos soldes Kraken et transactions spot à l'aide d'une clé API en lecture seule. + lunchflow: Connectez plus de 20k banques dans plus de 40 pays (UK, UE, USA, etc.) + mercury: Synchronisez automatiquement vos comptes professionnels Mercury. + plaid: Connectez des milliers d'institutions financières américaines via Plaid. + plaid_eu: Connectez des institutions financières européennes via Plaid (PSD2 / Open Banking). + simplefin: Connectez des comptes bancaires américains via le protocole ouvert SimpleFIN. + snaptrade: Connectez vos comptes de courtage via le réseau d'agrégation SnapTrade. + sophtron: Connectez vos banques et services publics américains et canadiens. + up_panel: + step_1_html: Allez sur %{link} et générez un jeton d'accès personnel. + step_2: Copiez votre jeton d'accès personnel. + step_3: Collez le jeton ci-dessous, enregistrez, puis liez vos comptes synchronisés. + update: + no_changes: Aucune modification n'a été apportée + updated_successfully: Paramètres du fournisseur mis à jour avec succès securities: show: - page_title: Sécurité - mfa_title: Authentification à deux facteurs + disable_mfa: Désactiver la 2FA + disable_mfa_confirm: Voulez-vous vraiment désactiver l'authentification à deux facteurs ? + enable_mfa: Activer la 2FA + encryption_warning: + generate: 'Générez un ensemble avec : bin/rails db:encryption:init' + intro: 'Les données sensibles (clés API, jetons de fournisseur, secrets MFA et PII) sont stockées non chiffrées au repos. Pour activer le chiffrement, définissez les clés suivantes dans vos variables d''environnement ou identifiants Rails :' + keys: + - ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY + - ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY + - ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT + title: Clés de chiffrement manquantes mfa_description: Ajoutez une couche de sécurité supplémentaire à votre compte en exigeant un code de votre application d'authentification lors de la connexion - enable_mfa: Activer 2FA - disable_mfa: Désactiver 2FA - disable_mfa_confirm: Êtes-vous sûr(e) de vouloir désactiver l'authentification à deux facteurs ? - sso_title: Comptes connectés - sso_subtitle: Gérez vos connexions de compte à authentification unique + mfa_title: Authentification à deux facteurs + page_title: Sécurité + sso_confirm_body: Êtes-vous sûr(e) de vouloir déconnecter votre compte %{provider} ? Vous pourrez le reconnecter ultérieurement en vous connectant avec ce fournisseur. + sso_confirm_button: Déconnecter + sso_confirm_title: Déconnecter le compte ? + sso_connect_hint: Déconnectez-vous et connectez-vous avec un fournisseur SSO pour connecter un compte. sso_disconnect: Déconnecter sso_last_used: Dernière utilisation sso_never: Jamais sso_no_email: Pas d'email sso_no_identities: Aucun compte SSO connecté - sso_connect_hint: Déconnectez-vous et connectez-vous avec un fournisseur SSO pour connecter un compte. - sso_confirm_title: Déconnecter le compte ? - sso_confirm_body: Êtes-vous sûr(e) de vouloir déconnecter votre compte %{provider} ? Vous pourrez le reconnecter ultérieurement en vous connectant avec ce fournisseur. - sso_confirm_button: Déconnecter + sso_subtitle: Gérez vos connexions de compte à authentification unique + sso_title: Comptes connectés sso_warning_message: C'est votre seule méthode de connexion. Vous devriez définir un mot de passe dans vos paramètres de sécurité avant de déconnecter, sinon vous pourriez être bloqué(e) hors de votre compte. settings_nav: accounts_label: Comptes advanced_section_title: Avancé ai_prompts_label: Prompts IA api_key_label: Clé API - payment_label: Paiement + api_keys_label: Clés API + appearance_label: Apparence + bank_sync_label: Synchronisation bancaire categories_label: Catégories + debug_label: Débogage + exports_label: Exportations feedback_label: Retour d'information general_section_title: Général + guides_label: Guides imports_label: Importations - exports_label: Exportations llm_usage_label: Utilisation LLM logout: Se déconnecter + mcp_label: MCP merchants_label: Marchands - providers_label: Fournisseurs - guides_label: Guides other_section_title: Plus + payment_label: Paiement preferences_label: Préférences profile_label: Informations du profil + providers_label: Fournisseurs recurring_transactions_label: Récurrentes rules_label: Règles security_label: Sécurité self_hosting_label: Auto-hébergement + sso_providers_label: Fournisseurs SSO statement_vault_label: Coffre des relevés tags_label: Étiquettes transactions_section_title: Transactions + users_label: Utilisateurs whats_new_label: Dernières nouvelles - api_keys_label: Clés API - appearance_label: Apparence - bank_sync_label: Synchronisation bancaire settings_nav_link_large: next: Suivant previous: Précédent user_avatar_field: accepted_formats: JPG ou PNG. 5MB max. - choose: Charger une photo - choose_label: (facultatif) change: Changer de photo - providers: - show: - coinbase_title: Coinbase - encryption_error: - title: Configuration de chiffrement requise - message: Les clés de chiffrement Active Record ne sont pas configurées. Veuillez vous assurer que les identifiants de chiffrement (active_record_encryption.primary_key, active_record_encryption.deterministic_key et active_record_encryption.key_derivation_salt) sont correctement définis dans vos identifiants Rails ou variables d'environnement avant d'utiliser les fournisseurs de synchronisation. - coinbase_panel: - setup_instructions: "Pour connecter Coinbase :" - step1_html: Allez dans les Paramètres API de Coinbase - step2: Créez une nouvelle clé API avec des permissions en lecture seule (voir les comptes, voir les transactions) - step3: Copiez votre clé API et votre secret API et collez-les ci-dessous - api_key_label: Clé API - api_key_placeholder: Entrez votre clé API Coinbase - api_secret_label: Secret API - api_secret_placeholder: Entrez votre secret API Coinbase - connect_button: Connecter Coinbase - syncing: Synchronisation… - sync: Synchroniser - disconnect_confirm: Êtes-vous sûr(e) de vouloir déconnecter cette connexion Coinbase ? Vos comptes synchronisés deviendront des comptes manuels. - binance_panel: - setup_instructions: "Pour connecter Binance, créez une clé API en lecture seule :" - step1_html: 'Allez dans la Gestion des API Binance' - step2: "Créez une nouvelle clé API avec la permission Enable Reading uniquement" - step3: "Collez votre clé API et votre secret ci-dessous" - no_withdraw_warning: "Attention : n'activez PAS les permissions de retrait" - ip_hint_title: "Liste blanche d'IP requise" - ip_hint_body: "Ajoutez l'IP de sortie du serveur de l'application à la liste blanche de la clé API Binance :" - ip_hint_contact_admin: "Contactez votre administrateur pour obtenir l'adresse IP de sortie du serveur de l'application." - api_key_label: Clé API - api_key_placeholder: Collez votre clé API Binance - api_secret_label: Secret API - api_secret_placeholder: Collez votre secret API Binance - connect_button: Connecter Binance - syncing: Synchronisation… - sync: Synchroniser - disconnect_confirm: "Êtes-vous sûr(e) de vouloir déconnecter Binance ?" - enable_banking_panel: - callback_url_instruction: "Pour l'URL de rappel, utilisez %{callback_url}." - connection_error: Erreur de connexion + choose: Charger une photo + choose_label: "(facultatif)" + views: + settings: + payments: + cancellation: Votre contribution se termine le %{date}. + renewal: Votre contribution se poursuit le %{date}. diff --git a/config/locales/views/settings/guides/fr.yml b/config/locales/views/settings/guides/fr.yml new file mode 100644 index 000000000..221016685 --- /dev/null +++ b/config/locales/views/settings/guides/fr.yml @@ -0,0 +1,6 @@ +--- +fr: + settings: + guides: + show: + page_title: Guides diff --git a/config/locales/views/settings/hostings/fr.yml b/config/locales/views/settings/hostings/fr.yml index 729c04ee1..972694ff2 100644 --- a/config/locales/views/settings/hostings/fr.yml +++ b/config/locales/views/settings/hostings/fr.yml @@ -2,186 +2,233 @@ fr: settings: hostings: - invite_code_settings: - description: "Contrôlez comment les nouvelles personnes s'inscrivent à votre instance de %{product}." - email_confirmation_description: "Lorsque cette option est activée, les utilisateurs doivent confirmer leur nouvelle adresse e-mail lorsqu'ils la modifient." - email_confirmation_title: "Exiger la confirmation de l'e-mail" - default_family_title: "Famille par défaut pour les nouveaux utilisateurs" - default_family_description: "Placer les nouveaux utilisateurs dans cette famille/groupe uniquement s'ils n'ont pas d'invitation." - default_family_none: "Aucune (créer une nouvelle famille)" - generate_tokens: "Générer un nouveau code" - generated_tokens: "Codes générés" - title: "Inscription des utilisateurs" - states: - open: "Ouvert" - closed: "Fermé" - invite_only: "Sur invitation uniquement" - show: - general: "Paramètres généraux" - ai_assistant: "Assistant IA" - financial_data_providers: "Fournisseurs de données financières" - sync_settings: "Paramètres de synchronisation" - invites: "Codes d'invitation" - title: "Auto-hébergement" - danger_zone: "Zone dangereuse" - clear_cache: "Effacer le cache de données" - clear_cache_warning: "L'effacement du cache de données supprimera tous les taux de change, les cours des titres, les soldes des comptes et d'autres données. Cela ne supprimera pas les comptes, les transactions, les catégories ou d'autres données possédées par les utilisateurs." - confirm_clear_cache: - title: "Effacer le cache de données ?" - body: "Êtes-vous sûr(e) de vouloir effacer le cache de données ? Cela supprimera tous les taux de change, les cours des titres, les soldes des comptes et d'autres données. Cette action ne peut pas être annulée." - provider_selection: - exchange_rate_title: "Fournisseur de taux de change" - exchange_rate_description: "Sélectionnez un seul fournisseur pour récupérer les taux de change des devises." - exchange_rate_provider_label: "Fournisseur de taux de change" - securities_title: "Fournisseurs de titres" - securities_description: "Activez un ou plusieurs fournisseurs pour récupérer les cours des actions, ETF et fonds communs. Lors d'une recherche, tous les fournisseurs activés sont interrogés et les résultats sont fusionnés." - env_configured_message: "La sélection du fournisseur est désactivée car des variables d'environnement sont définies. Pour activer la sélection ici, supprimez ces variables d'environnement de votre configuration." - twelve_data_hint: "nécessite une clé API, 800 crédits/jour" - yahoo_finance_hint: "gratuit, aucune clé API requise" - requires_api_key: "nécessite une clé API" - requires_api_key_eodhd: "nécessite une clé API, limite de 20 appels/jour" - requires_api_key_alpha_vantage: "nécessite une clé API, limite de 25 appels/jour" - mfapi_hint: "gratuit, aucune clé API -- fonds communs indiens uniquement" - binance_public_hint: "gratuit, aucune clé API -- crypto uniquement (BTC, ETH, etc.)" - moex_public_hint: "gratuit, aucune clé API -- actions, fonds et obligations russes (MOEX), incl. change RUB" - providers: - twelve_data: "Twelve Data" - yahoo_finance: "Yahoo Finance" - tiingo: "Tiingo" - eodhd: "EODHD" - alpha_vantage: "Alpha Vantage" - mfapi: "MFAPI.in" - binance_public: "Binance" - moex_public: "MOEX" - assistant_settings: - title: "Assistant IA" - description: "Choisissez comment l'assistant de discussion répond. Intégré utilise directement votre fournisseur LLM configuré. Externe délègue à un agent IA distant qui peut invoquer les outils financiers de Sure via MCP." - type_label: "Type d'assistant" - type_builtin: "Intégré (LLM direct)" - type_external: "Externe (agent distant)" - external_status: "Endpoint de l'assistant externe" - external_configured: "Configuré" - external_not_configured: "Non configuré. Saisissez l'URL et le token ci-dessous, ou définissez les variables d'environnement EXTERNAL_ASSISTANT_URL et EXTERNAL_ASSISTANT_TOKEN." - env_notice: "Le type d'assistant est verrouillé sur '%{type}' via la variable d'environnement ASSISTANT_TYPE." - env_configured_external: "Configuré avec succès via les variables d'environnement." - url_label: "URL du endpoint" - url_placeholder: "https://your-agent-host/v1/chat" - url_help: "L'URL complète du endpoint de l'API de votre agent. Votre fournisseur d'agent vous la fournira." - token_label: "Token API" - token_placeholder: "Saisissez le token de votre fournisseur d'agent" - token_help: "Le token d'authentification fourni par votre agent externe. Il est envoyé en tant que Bearer token avec chaque requête." - agent_id_label: "ID de l'agent (Optionnel)" - agent_id_placeholder: "main (par défaut)" - agent_id_help: "Route vers un agent spécifique lorsque le fournisseur en héberge plusieurs. Laisser vide pour la valeur par défaut." - disconnect_title: "Connexion externe" - disconnect_description: "Supprimer la connexion à l'assistant externe et revenir à l'assistant intégré." - disconnect_button: "Déconnecter" - confirm_disconnect: - title: "Déconnecter l'assistant externe ?" - body: "Cela supprimera l'URL, le token et l'ID de l'agent enregistrés, et basculera vers l'assistant intégré. Vous pourrez vous reconnecter ultérieurement en saisissant de nouvelles informations d'identification." - brand_fetch_settings: - description: "Saisissez l'ID client fourni par Brand Fetch" - label: "ID client" - placeholder: "Entrez votre ID client ici" - title: "Paramètres Brand Fetch" - high_res_label: "Activer les logos haute résolution" - high_res_description: "Lorsque cette option est activée, les logos seront récupérés en résolution 120x120 au lieu de 40x40. Cela offre des images plus nettes sur les écrans à haute densité de pixels." - openai_settings: - description: "Saisissez le jeton d'accès et configurez éventuellement un fournisseur compatible OpenAI personnalisé" - env_configured_message: "Configuré avec succès via les variables d'environnement." - access_token_label: "Jeton d'accès" - access_token_placeholder: "Entrez votre jeton d'accès ici" - uri_base_label: "URL de base de l'API (Optionnel)" - uri_base_placeholder: "https://api.openai.com/v1 (par défaut)" - model_label: "Modèle (Optionnel)" - model_placeholder: "gpt-4.1 (par défaut)" - json_mode_label: "Mode JSON" - json_mode_auto: "Auto (recommandé)" - json_mode_strict: "Strict (meilleur pour les modèles de raisonnement)" - json_mode_none: "Aucun (meilleur pour les modèles standard)" - json_mode_json_object: "Objet JSON" - json_mode_help: "Le mode strict fonctionne mieux avec les modèles de raisonnement (qwen-thinking, deepseek-reasoner). Le mode aucun fonctionne mieux avec les modèles standard (llama, mistral, gpt-oss)." - budget_heading: "Budget de tokens" - budget_description: "S'applique à chaque appel LLM — historique de discussion, auto-catégorisation, détection de marchand et traitement PDF. Les valeurs par défaut sont conservatrices pour les modèles locaux à petit contexte. Augmentez-les pour les modèles cloud avec des fenêtres de contexte plus grandes." - context_window_label: "Fenêtre de contexte (Optionnel)" - context_window_help: "Nombre total de tokens que le modèle acceptera. Par défaut : 2048 — augmenter à 8192+ pour OpenAI cloud ou les modèles locaux à grand contexte." - max_response_tokens_label: "Tokens de réponse max (Optionnel)" - max_response_tokens_help: "Tokens réservés à la réponse du modèle. Par défaut : 512. Abaisser pour libérer de l'espace pour un historique plus long." - max_items_per_call_label: "Nombre maximum d'éléments par lot (Optionnel)" - max_items_per_call_help: "Limite supérieure pour les lots d'auto-catégorisation / détection de marchand. Par défaut : 25. Les lots plus grands sont automatiquement découpés pour tenir dans la fenêtre de contexte." - title: "OpenAI" - yahoo_finance_settings: - title: "Yahoo Finance" - description: "Yahoo Finance fournit un accès gratuit aux cours boursiers, taux de change et données financières sans nécessiter de clé API." - status_active: "Yahoo Finance est actif et fonctionne" - status_inactive: "La connexion à Yahoo Finance a échoué" - connection_failed: "Impossible de se connecter à Yahoo Finance" - troubleshooting: "Vérifiez votre connexion Internet et les paramètres de votre pare-feu. Yahoo Finance peut être temporairement indisponible." - tiingo_settings: - title: "Tiingo" - description: "Saisissez le token API fourni par Tiingo. Le forfait gratuit supporte 50 symboles uniques par heure avec plus de 30 ans de données historiques." - env_configured_message: "Configuré avec succès via la variable d'environnement TIINGO_API_KEY." - label: "Token API" - placeholder: "Entrez votre token API Tiingo ici" - show_details: "(afficher les détails)" - step_1_html: 'Visitez tiingo.com et créez un compte gratuit.' - step_2_html: 'Accédez à la page Token API.' - step_3: "Copiez votre token API et collez-le ci-dessous." - eodhd_settings: - title: "EODHD" - description: "Saisissez le token API fourni par EODHD. Supporte les ETF européens sur LSE, XETRA et d'autres places boursières internationales." - env_configured_message: "Configuré avec succès via la variable d'environnement EODHD_API_KEY." - label: "Token API" - placeholder: "Entrez votre token API EODHD ici" - show_details: "(afficher les détails)" - step_1_html: 'Visitez eodhd.com et créez un compte gratuit.' - step_2_html: 'Accédez à votre Tableau de bord pour trouver votre token API.' - step_3: "Copiez votre token API et collez-le ci-dessous." - rate_limit_warning: "Le forfait gratuit EODHD est limité à 20 appels API par jour. À utiliser de préférence comme fournisseur complémentaire pour les ETF européens non disponibles chez d'autres fournisseurs." alpha_vantage_settings: - title: "Alpha Vantage" - description: "Saisissez la clé API d'Alpha Vantage. Supporte les ETF européens sur la Bourse de Londres, XETRA et d'autres places boursières." - env_configured_message: "Configuré avec succès via la variable d'environnement ALPHA_VANTAGE_API_KEY." - label: "Clé API" - placeholder: "Entrez votre clé API Alpha Vantage ici" + description: Saisissez la clé API d'Alpha Vantage. Prend en charge les ETF de l'UE sur la Bourse de Londres, XETRA et d'autres places boursières. + env_configured_message: Configuré avec succès via la variable d'environnement ALPHA_VANTAGE_API_KEY. + label: Clé API + no_health_check_note: La vérification de l'état de la connexion est indisponible pour ce fournisseur en raison de la limite stricte de taux. + placeholder: Saisissez votre clé API Alpha Vantage ici + rate_limit_warning: L'offre gratuite d'Alpha Vantage est limitée à 25 appels d'API par jour. Idéal comme fournisseur supplémentaire pour les ETF de l'UE non disponibles chez d'autres fournisseurs. show_details: "(afficher les détails)" - step_1_html: 'Visitez alphavantage.co et réclamez votre clé API gratuite.' - step_2: "Copiez la clé API et collez-la ci-dessous." - rate_limit_warning: "Le forfait gratuit Alpha Vantage est limité à 25 appels API par jour. À utiliser de préférence comme fournisseur complémentaire pour les ETF européens non disponibles chez d'autres fournisseurs." - no_health_check_note: "La vérification de l'état de la connexion n'est pas disponible pour ce fournisseur en raison de la limite de débit stricte." - twelve_data_settings: - title: "Twelve Data" - api_calls_used: "%{used} / %{limit} appels API quotidiens utilisés (%{percentage})" - description: "Saisissez la clé API fournie par Twelve Data" - env_configured_message: "Configurée avec succès via la variable d'environnement TWELVE_DATA_API_KEY." - label: "Clé API" - placeholder: "Entrez votre clé API ici" + step_1_html: Visitez alphavantage.co pour obtenir votre clé API gratuite. + step_2: Copiez la clé API et collez-la ci-dessous. + title: Alpha Vantage + anthropic_settings: + access_token_label: Clé API + access_token_placeholder: Saisissez votre clé API Anthropic + base_url_label: URL de base (Facultatif) + base_url_placeholder: https://api.anthropic.com (par défaut) + description: Saisissez votre clé API Anthropic. Pointez éventuellement l'URL de base vers AWS Bedrock ou GCP Vertex. + env_configured_message: Configuré avec succès via les variables d'environnement. + model_help: Utilisé pour le chat et le traitement des PDF. Les opérations par lots (catégorisation, détection des commerçants) utilisent par défaut Haiku pour des raisons de coût. + model_label: Modèle par défaut (Facultatif) + model_placeholder: claude-sonnet-4-6 (par défaut) + title: Anthropic (Claude) + assistant_settings: + agent_id_help: Route vers un agent spécifique lorsque le fournisseur en héberge plusieurs. Laisser vide pour la valeur par défaut. + agent_id_label: ID de l'agent (Optionnel) + agent_id_placeholder: main (par défaut) + confirm_disconnect: + body: Cela supprimera l'URL, le token et l'ID de l'agent enregistrés, et basculera vers l'assistant intégré. Vous pourrez vous reconnecter ultérieurement en saisissant de nouvelles informations d'identification. + title: Déconnecter l'assistant externe ? + description: Choisissez comment l'assistant de discussion répond. Intégré utilise directement votre fournisseur LLM configuré. Externe délègue à un agent IA distant qui peut invoquer les outils financiers de Sure via MCP. + disconnect_button: Déconnecter + disconnect_description: Supprimer la connexion à l'assistant externe et revenir à l'assistant intégré. + disconnect_title: Connexion externe + env_configured_external: Configuré avec succès via les variables d'environnement. + env_notice: Le type d'assistant est verrouillé sur '%{type}' via la variable d'environnement ASSISTANT_TYPE. + external_configured: Configuré + external_not_configured: Non configuré. Saisissez l'URL et le token ci-dessous, ou définissez les variables d'environnement EXTERNAL_ASSISTANT_URL et EXTERNAL_ASSISTANT_TOKEN. + external_status: Endpoint de l'assistant externe + title: Assistant IA + token_help: Le token d'authentification fourni par votre agent externe. Il est envoyé en tant que Bearer token avec chaque requête. + token_label: Token API + token_placeholder: Saisissez le token de votre fournisseur d'agent + type_builtin: Intégré (LLM direct) + type_external: Externe (agent distant) + type_label: Type d'assistant + url_help: L'URL complète du endpoint de l'API de votre agent. Votre fournisseur d'agent vous la fournira. + url_label: URL du endpoint + url_placeholder: https://your-agent-host/v1/chat + brand_fetch_settings: + description: Saisissez l'ID client fourni par Brand Fetch + env_configured_message: Vous avez configuré avec succès votre ID client Brand Fetch via la variable d'environnement BRAND_FETCH_CLIENT_ID. + high_res_description: Lorsque cette option est activée, les logos seront récupérés en résolution 120x120 au lieu de 40x40. Cela offre des images plus nettes sur les écrans à haute densité de pixels. + high_res_label: Activer les logos haute résolution + label: ID client + placeholder: Entrez votre ID client ici + setup_step_1_html: Visitez brandfetch.com et créez un compte de développeur Brand Fetch gratuit. + setup_step_2_html: Accédez à la page API du logo. + setup_step_3: Appuyez sur l'icône en forme d'œil sous la section « Votre ID client » pour révéler votre ID client et collez-le ci-dessous. show_details: "(afficher les détails)" - step_1_html: 'Visitez twelvedata.com et créez un compte Twelve Data Developer gratuit.' - step_2_html: 'Accédez à la page Clés API.' - step_3: "Révélez votre clé secrète et collez-la ci-dessous." - plan: "Forfait %{plan}" - plan_upgrade_warning_title: "Certains tickers nécessitent un forfait payant" - plan_upgrade_warning_description: "Les tickers suivants de votre portefeuille ne peuvent pas synchroniser leurs cours avec votre forfait Twelve Data actuel." - requires_plan: "nécessite le forfait %{plan}" - view_pricing: "Voir les tarifs Twelve Data" - update: - failure: "Valeur de paramètre invalide" - success: "Paramètres mis à jour" - invalid_onboarding_state: "État d'intégration invalide" - invalid_sync_time: "Format d'heure de synchronisation invalide. Veuillez utiliser le format HH:MM (ex. 02:30)." - invalid_llm_budget: "%{field} doit être un nombre entier ≥ %{minimum}." - scheduler_sync_failed: "Paramètres enregistrés, mais la mise à jour du planning de synchronisation a échoué. Veuillez réessayer ou vérifier les journaux du serveur." - disconnect_external_assistant: - external_assistant_disconnected: "Assistant externe déconnecté" + title: Paramètres Brand Fetch clear_cache: - cache_cleared: "Le cache de données a été effacé. Cela peut prendre quelques instants." - not_authorized: "Vous n'êtes pas autorisé(e) à effectuer cette action" + cache_cleared: Le cache de données a été effacé. Cela peut prendre quelques instants. + disconnect_external_assistant: + external_assistant_disconnected: Assistant externe déconnecté + ensure_admin: + not_authorized: Vous n'êtes pas autorisé à effectuer cette action + ensure_super_admin_for_onboarding: + not_authorized: Vous n'êtes pas autorisé à effectuer cette action + eodhd_settings: + description: Saisissez le token API fourni par EODHD. Supporte les ETF européens sur LSE, XETRA et d'autres places boursières internationales. + env_configured_message: Configuré avec succès via la variable d'environnement EODHD_API_KEY. + label: Token API + placeholder: Entrez votre token API EODHD ici + rate_limit_warning: Le forfait gratuit EODHD est limité à 20 appels API par jour. À utiliser de préférence comme fournisseur complémentaire pour les ETF européens non disponibles chez d'autres fournisseurs. + show_details: "(afficher les détails)" + step_1_html: Visitez eodhd.com et créez un compte gratuit. + step_2_html: Accédez à votre Tableau de bord pour trouver votre token API. + step_3: Copiez votre token API et collez-le ci-dessous. + title: EODHD + invite_code_settings: + default_family_description: Placer les nouveaux utilisateurs dans cette famille/groupe uniquement s'ils n'ont pas d'invitation. + default_family_none: Aucune (créer une nouvelle famille) + default_family_title: Famille par défaut pour les nouveaux utilisateurs + description: Contrôlez comment les nouvelles personnes s'inscrivent à votre instance de %{product}. + email_confirmation_description: Lorsque cette option est activée, les utilisateurs doivent confirmer leur nouvelle adresse e-mail lorsqu'ils la modifient. + email_confirmation_title: Exiger la confirmation de l'e-mail + generate_tokens: Générer un nouveau code + generated_tokens: Codes générés + states: + closed: Fermé + invite_only: Sur invitation uniquement + open: Ouvert + title: Inscription des utilisateurs + llm_provider_selector: + data_retention: Les entrées de l'API ne sont pas utilisées pour entraîner les modèles par défaut ; les API hébergées des fournisseurs conservent les données pendant environ 30 jours pour des raisons de confiance et de sécurité. Les terminaux personnalisés ou auto-hébergés suivent votre propre politique. + data_retention_heading: Traitement des données + description: Choisissez quel LLM alimente le chat IA. Les opérations par lots (catégorisation des transactions, détection des commerçants et traitement des PDF) utilisent actuellement toujours OpenAI. + env_configured_message: Configuré avec succès via la variable d'environnement LLM_PROVIDER. + not_configured_hint: Ajoutez une clé API %{provider} ci-dessous pour l'activer. + provider_anthropic: Anthropic (Claude) + provider_help: Le changement de fournisseur prend effet lors du prochain chat. Configurez les identifiants du fournisseur actif ci-dessous. + provider_label: Fournisseur de LLM actif + provider_openai: OpenAI + title: Fournisseur d'IA + not_authorized: Vous n'êtes pas autorisé(e) à effectuer cette action + openai_settings: + access_token_label: Jeton d'accès + access_token_placeholder: Entrez votre jeton d'accès ici + budget_description: S'applique à chaque appel LLM — historique de discussion, auto-catégorisation, détection de marchand et traitement PDF. Les valeurs par défaut sont conservatrices pour les modèles locaux à petit contexte. Augmentez-les pour les modèles cloud avec des fenêtres de contexte plus grandes. + budget_heading: Budget de tokens + context_window_help: 'Nombre total de tokens que le modèle acceptera. Par défaut : 2048 — augmenter à 8192+ pour OpenAI cloud ou les modèles locaux à grand contexte.' + context_window_label: Fenêtre de contexte (Optionnel) + description: Saisissez le jeton d'accès et configurez éventuellement un fournisseur compatible OpenAI personnalisé + env_configured_message: Configuré avec succès via les variables d'environnement. + json_mode_auto: Auto (recommandé) + json_mode_help: Le mode strict fonctionne mieux avec les modèles de raisonnement (qwen-thinking, deepseek-reasoner). Le mode aucun fonctionne mieux avec les modèles standard (llama, mistral, gpt-oss). + json_mode_json_object: Objet JSON + json_mode_label: Mode JSON + json_mode_none: Aucun (meilleur pour les modèles standard) + json_mode_strict: Strict (meilleur pour les modèles de raisonnement) + max_items_per_call_help: 'Limite supérieure pour les lots d''auto-catégorisation / détection de marchand. Par défaut : 25. Les lots plus grands sont automatiquement découpés pour tenir dans la fenêtre de contexte.' + max_items_per_call_label: Nombre maximum d'éléments par lot (Optionnel) + max_response_tokens_help: 'Tokens réservés à la réponse du modèle. Par défaut : 512. Abaisser pour libérer de l''espace pour un historique plus long.' + max_response_tokens_label: Tokens de réponse max (Optionnel) + model_label: Modèle (Optionnel) + model_placeholder: gpt-4.1 (par défaut) + title: OpenAI + uri_base_label: URL de base de l'API (Optionnel) + uri_base_placeholder: https://api.openai.com/v1 (par défaut) + provider_selection: + binance_public_hint: gratuit, aucune clé API -- crypto uniquement (BTC, ETH, etc.) + env_configured_message: La sélection du fournisseur est désactivée car des variables d'environnement sont définies. Pour activer la sélection ici, supprimez ces variables d'environnement de votre configuration. + exchange_rate_description: Sélectionnez un seul fournisseur pour récupérer les taux de change des devises. + exchange_rate_provider_label: Fournisseur de taux de change + exchange_rate_title: Fournisseur de taux de change + mfapi_hint: gratuit, aucune clé API -- fonds communs indiens uniquement + moex_public_hint: gratuit, pas de clé API -- actions, fonds et obligations russes (MOEX), y compris change RUB + providers: + alpha_vantage: Alpha Vantage + binance_public: Binance + eodhd: EODHD + mfapi: MFAPI.in + moex_public: MOEX + tiingo: Tiingo + tinkoff_invest: T-Invest (T-Bank) + twelve_data: Twelve Data + yahoo_finance: Yahoo Finance + requires_api_key: nécessite une clé API + requires_api_key_alpha_vantage: nécessite une clé API, limite de 25 appels/jour + requires_api_key_eodhd: nécessite une clé API, limite de 20 appels/jour + securities_description: Activez un ou plusieurs fournisseurs pour récupérer les cours des actions, ETF et fonds communs. Lors d'une recherche, tous les fournisseurs activés sont interrogés et les résultats sont fusionnés. + securities_title: Fournisseurs de titres + tinkoff_invest_hint: requiert un jeton en lecture seule -- cours des actions/fonds/obligations russes + logos des marques + twelve_data_hint: nécessite une clé API, 800 crédits/jour + yahoo_finance_hint: gratuit, aucune clé API requise + show: + ai_assistant: Assistant IA + clear_cache: Effacer le cache de données + clear_cache_warning: L'effacement du cache de données supprimera tous les taux de change, les cours des titres, les soldes des comptes et d'autres données. Cela ne supprimera pas les comptes, les transactions, les catégories ou d'autres données possédées par les utilisateurs. + confirm_clear_cache: + body: Êtes-vous sûr(e) de vouloir effacer le cache de données ? Cela supprimera tous les taux de change, les cours des titres, les soldes des comptes et d'autres données. Cette action ne peut pas être annulée. + title: Effacer le cache de données ? + danger_zone: Zone dangereuse + financial_data_providers: Fournisseurs de données financières + general: Paramètres généraux + invites: Codes d'invitation + sync_settings: Paramètres de synchronisation + title: Auto-hébergement + sync_auto_sync_scheduler!: + scheduler_sync_failed: Paramètres enregistrés, mais échec de la mise à jour de la planification de synchronisation. Veuillez réessayer ou vérifier les journaux du serveur. sync_settings: - auto_sync_label: "Activer la synchronisation automatique" - auto_sync_description: "Lorsque cette option est activée, tous les comptes seront automatiquement synchronisés quotidiennement à l'heure spécifiée." - auto_sync_time_label: "Heure de synchronisation (HH:MM)" - auto_sync_time_description: "Spécifiez l'heure à laquelle la synchronisation automatique doit se produire." - include_pending_label: "Inclure les transactions en attente" - include_pending_description: "Lorsque cette option est activée, les transactions en attente (non confirmées) seront importées et automatiquement réconciliées lors de leur validation. Désactivez si votre banque fournit des données de transactions en attente peu fiables." - env_configured_message: "Ce paramètre est désactivé car une variable d'environnement du fournisseur (SIMPLEFIN_INCLUDE_PENDING ou PLAID_INCLUDE_PENDING) est définie. Supprimez-la pour activer ce paramètre." + auto_sync_description: Lorsque cette option est activée, tous les comptes seront automatiquement synchronisés quotidiennement à l'heure spécifiée. + auto_sync_label: Activer la synchronisation automatique + auto_sync_time_description: Spécifiez l'heure à laquelle la synchronisation automatique doit se produire. + auto_sync_time_label: Heure de synchronisation (HH:MM) + env_configured_message: Ce paramètre est désactivé car une variable d'environnement du fournisseur (SIMPLEFIN_INCLUDE_PENDING ou PLAID_INCLUDE_PENDING) est définie. Supprimez-la pour activer ce paramètre. + include_pending_description: Lorsque cette option est activée, les transactions en attente (non confirmées) seront importées et automatiquement réconciliées lors de leur validation. Désactivez si votre banque fournit des données de transactions en attente peu fiables. + include_pending_label: Inclure les transactions en attente + tiingo_settings: + description: Saisissez le token API fourni par Tiingo. Le forfait gratuit supporte 50 symboles uniques par heure avec plus de 30 ans de données historiques. + env_configured_message: Configuré avec succès via la variable d'environnement TIINGO_API_KEY. + label: Token API + placeholder: Entrez votre token API Tiingo ici + show_details: "(afficher les détails)" + step_1_html: Visitez tiingo.com et créez un compte gratuit. + step_2_html: Accédez à la page Token API. + step_3: Copiez votre token API et collez-le ci-dessous. + title: Tiingo + tinkoff_invest_settings: + description: Saisissez un jeton API T-Invest en lecture seule. Utilisé pour récupérer les logos de marque des titres (y compris les fonds et obligations, même lorsque MOEX les évalue) et, lorsqu'il est activé ci-dessus, les prix des instruments russes. + env_configured_message: Configuré avec succès via la variable d'environnement TINKOFF_INVEST_API_KEY. + label: Jeton API + placeholder: Saisissez votre jeton API T-Invest ici + show_details: "(afficher les détails)" + step_1: Ouvrez T-Bank investissements, puis Paramètres, puis jetons API (nécessite un compte de courtage T-Bank ouvert). + step_2: Créez un jeton avec un accès en lecture seule. + step_3: Copiez le jeton et collez-le ci-dessous. + title: T-Invest (T-Bank) + twelve_data_settings: + api_calls_used: "%{used} / %{limit} appels API quotidiens utilisés (%{percentage})" + description: Saisissez la clé API fournie par Twelve Data + env_configured_message: Configurée avec succès via la variable d'environnement TWELVE_DATA_API_KEY. + label: Clé API + placeholder: Entrez votre clé API ici + plan: Forfait %{plan} + plan_upgrade_warning_description: Les tickers suivants de votre portefeuille ne peuvent pas synchroniser leurs cours avec votre forfait Twelve Data actuel. + plan_upgrade_warning_title: Certains tickers nécessitent un forfait payant + requires_plan: nécessite le forfait %{plan} + show_details: "(afficher les détails)" + step_1_html: Visitez twelvedata.com et créez un compte Twelve Data Developer gratuit. + step_2_html: Accédez à la page Clés API. + step_3: Révélez votre clé secrète et collez-la ci-dessous. + title: Twelve Data + view_pricing: Voir les tarifs Twelve Data + update: + anthropic_model_required_for_base_url: Le modèle Anthropic est requis lorsqu'une URL de base personnalisée est définie. + failure: Valeur de paramètre invalide + invalid_anthropic_base_url: L'URL de base d'Anthropic doit être une URL http(s). + invalid_llm_budget: "%{field} doit être un nombre entier ≥ %{minimum}." + invalid_onboarding_state: État d'intégration invalide + invalid_sync_time: Format d'heure de synchronisation invalide. Veuillez utiliser le format HH:MM (ex. 02:30). + scheduler_sync_failed: Paramètres enregistrés, mais la mise à jour du planning de synchronisation a échoué. Veuillez réessayer ou vérifier les journaux du serveur. + success: Paramètres mis à jour + yahoo_finance_settings: + connection_failed: Impossible de se connecter à Yahoo Finance + description: Yahoo Finance fournit un accès gratuit aux cours boursiers, taux de change et données financières sans nécessiter de clé API. + status_active: Yahoo Finance est actif et fonctionne + status_inactive: La connexion à Yahoo Finance a échoué + title: Yahoo Finance + troubleshooting: Vérifiez votre connexion Internet et les paramètres de votre pare-feu. Yahoo Finance peut être temporairement indisponible. diff --git a/config/locales/views/settings/hu.yml b/config/locales/views/settings/hu.yml index b43b6cc97..583ef42a8 100644 --- a/config/locales/views/settings/hu.yml +++ b/config/locales/views/settings/hu.yml @@ -71,6 +71,10 @@ hu: theme_dark: Sötét theme_light: Világos theme_system: Rendszer + modals_title: Modális ablakok + modals_subtitle: Modális ablakok viselkedésének testreszabása + disable_modal_click_outside_title: Modális ablakok nyitva tartása külső kattintáskor + disable_modal_click_outside_description: Megakadályozza, hogy a modális ablakok bezáródjanak külső kattintáskor. Hasznos a nem mentett változtatások véletlen elvesztésének elkerülésére. transactions_title: Tranzakciók transactions_subtitle: Szabd testre a tranzakciók megjelenítését dashboard_title: Irányítópult diff --git a/config/locales/views/settings/nb.yml b/config/locales/views/settings/nb.yml index ed759aae6..6e7e5c972 100644 --- a/config/locales/views/settings/nb.yml +++ b/config/locales/views/settings/nb.yml @@ -27,6 +27,12 @@ nb: theme_system: System theme_title: Tema timezone: Tidssone + appearances: + show: + modals_title: Modaler + modals_subtitle: Tilpass oppførselen til modaler + disable_modal_click_outside_title: Hold modaler åpne ved klikk utenfor + disable_modal_click_outside_description: Forhindrer at modaler lukkes ved klikk utenfor. Nyttig for å unngå å miste ulagrede endringer ved et uhell. profiles: destroy: cannot_remove_self: Du kan ikke fjerne deg selv fra din egen konto. diff --git a/config/locales/views/settings/nl.yml b/config/locales/views/settings/nl.yml index a74136bbe..40361ff69 100644 --- a/config/locales/views/settings/nl.yml +++ b/config/locales/views/settings/nl.yml @@ -43,6 +43,12 @@ nl: theme_system: Systeem theme_title: Thema timezone: Tijdzone + appearances: + show: + modals_title: Modals + modals_subtitle: Gedrag van modals aanpassen + disable_modal_click_outside_title: Modals open houden bij klikken buiten + disable_modal_click_outside_description: Voorkomt dat modals sluiten bij klikken buiten. Handig om te voorkomen dat niet-opgeslagen wijzigingen per ongeluk verloren gaan. profiles: destroy: cannot_remove_self: U kunt uzelf niet van het account verwijderen. diff --git a/config/locales/views/settings/pl.yml b/config/locales/views/settings/pl.yml index 8acfe1772..2ab682b8e 100644 --- a/config/locales/views/settings/pl.yml +++ b/config/locales/views/settings/pl.yml @@ -34,6 +34,10 @@ pl: theme_dark: Ciemny theme_light: Jasny theme_system: Systemowy + modals_title: Okna modalne + modals_subtitle: Dostosuj zachowanie okien modalnych + disable_modal_click_outside_title: Utrzymuj okna modalne otwarte po kliknięciu poza nimi + disable_modal_click_outside_description: Zapobiega zamykaniu okien modalnych po kliknięciu poza nimi. Przydatne, aby uniknąć przypadkowej utraty niezapisanych zmian. transactions_title: Transakcje transactions_subtitle: Dostosuj sposób wyświetlania transakcji dashboard_title: Pulpit diff --git a/config/locales/views/settings/pt-BR.yml b/config/locales/views/settings/pt-BR.yml index 65962871b..7b5bd4f35 100644 --- a/config/locales/views/settings/pt-BR.yml +++ b/config/locales/views/settings/pt-BR.yml @@ -34,6 +34,10 @@ pt-BR: theme_dark: Escuro theme_light: Claro theme_system: Sistema + modals_title: Modais + modals_subtitle: Personalizar o comportamento dos modais + disable_modal_click_outside_title: Manter modais abertos ao clicar fora + disable_modal_click_outside_description: Impede que os modais fechem ao clicar fora deles. Útil para evitar perder alterações não salvas acidentalmente. transactions_title: Transações transactions_subtitle: Personalize como as transações são exibidas dashboard_title: Painel diff --git a/config/locales/views/settings/ro.yml b/config/locales/views/settings/ro.yml index 758bb7d5c..96a82a481 100644 --- a/config/locales/views/settings/ro.yml +++ b/config/locales/views/settings/ro.yml @@ -43,6 +43,12 @@ ro: theme_system: Sistem theme_title: Temă timezone: Fus orar + appearances: + show: + modals_title: Ferestre modale + modals_subtitle: Personalizați comportamentul ferestrelor modale + disable_modal_click_outside_title: Mențineți ferestrele modale deschise la clic exterior + disable_modal_click_outside_description: Previne închiderea ferestrelor modale la clic în afara lor. Util pentru a evita pierderea accidentală a modificărilor nesalvate. profiles: destroy: cannot_remove_self: Nu te poți elimina singur din cont. diff --git a/config/locales/views/settings/securities/fr.yml b/config/locales/views/settings/securities/fr.yml index 2c72ed9e7..8891d4840 100644 --- a/config/locales/views/settings/securities/fr.yml +++ b/config/locales/views/settings/securities/fr.yml @@ -4,7 +4,41 @@ fr: securities: show: disable_mfa: Désactiver la 2FA - disable_mfa_confirm: Êtes-vous sûr(e) de vouloir désactiver l'authentification à deux facteurs ? Cela rendra votre compte moins sécurisé. + disable_mfa_confirm: Êtes-vous sûr(e) de vouloir désactiver l'authentification + à deux facteurs ? Cela rendra votre compte moins sécurisé. enable_mfa: Activer la 2FA - mfa_description: Ajoutez une couche supplémentaire de sécurité à votre compte en exigeant un code de votre application d'authentificateur lors de la connexion + mfa_description: Ajoutez une couche supplémentaire de sécurité à votre compte + en exigeant un code de votre application d'authentificateur lors de la connexion + mfa_disabled_description: Activez 2FA pour ajouter une couche de sécurité + supplémentaire à votre compte. + mfa_disabled_status_html: L'authentification à deux facteurs est désactivée + mfa_enabled_description: Votre compte est protégé par une couche de sécurité + supplémentaire. + mfa_enabled_status_html: L'authentification à deux facteurs est activée mfa_title: Authentification à deux facteurs + webauthn_add: Ajouter un mot de passe ou une clé de sécurité + webauthn_added: "%{date} ajouté" + webauthn_description: Utilisez un mot de passe, Touch ID, Windows Hello ou + une clé de sécurité matérielle comme deuxième facteur lors de la connexion. + webauthn_empty: Aucun mot de passe ou clé de sécurité n'est encore enregistré. + webauthn_last_used: Dernière utilisation il y a %{time_ago} + webauthn_name_label: Nom de la clé + webauthn_name_placeholder: MacBook Touch ID, YubiKey, etc. + webauthn_remove: Supprimer + webauthn_remove_confirm: Êtes-vous sûr de vouloir supprimer ce mot de passe + ou cette clé de sécurité ? + webauthn_remove_confirm_body: Vous devrez enregistrer à nouveau ce mot de + passe ou cette clé de sécurité avant de pouvoir l'utiliser pour la vérification + de la connexion. + webauthn_title: Clés d'accès et clés de sécurité + webauthn_unsupported: Ce navigateur ne prend pas en charge les mots de passe + ou les clés de sécurité. + webauthn_credentials: + default_name: Clé de sécurité + failure: Impossible d'enregistrer ce mot de passe ou cette clé de sécurité. Veuillez + réessayer. + mfa_required: Activez l'authentification à deux facteurs avant d'ajouter un mot + de passe ou une clé de sécurité. + success: Clé d'accès ou clé de sécurité supprimée. diff --git a/config/locales/views/settings/sso_identities/fr.yml b/config/locales/views/settings/sso_identities/fr.yml new file mode 100644 index 000000000..bfa1df5da --- /dev/null +++ b/config/locales/views/settings/sso_identities/fr.yml @@ -0,0 +1,7 @@ +--- +fr: + settings: + sso_identities: + destroy: + cannot_unlink_last: Impossible de dissocier la dernière identité + success: Succès diff --git a/config/locales/views/settings/tr.yml b/config/locales/views/settings/tr.yml index 7ad52df99..217cc9888 100644 --- a/config/locales/views/settings/tr.yml +++ b/config/locales/views/settings/tr.yml @@ -27,6 +27,12 @@ tr: theme_system: Sistem theme_title: Tema timezone: Zaman dilimi + appearances: + show: + modals_title: Modaller + modals_subtitle: Modal davranışını özelleştir + disable_modal_click_outside_title: Dışarı tıklandığında modalleri açık tut + disable_modal_click_outside_description: Modalların dışına tıklandığında kapanmasını engeller. Kaydedilmemiş değişiklikleri yanlışlıkla kaybetmemek için kullanışlıdır. profiles: destroy: cannot_remove_self: Kendinizi hesaptan çıkaramazsınız. diff --git a/config/locales/views/settings/vi.yml b/config/locales/views/settings/vi.yml index a5ac5f5e1..a0ac7956f 100644 --- a/config/locales/views/settings/vi.yml +++ b/config/locales/views/settings/vi.yml @@ -107,6 +107,10 @@ vi: theme_dark: Tối theme_light: Sáng theme_system: Hệ thống + modals_title: Hộp thoại + modals_subtitle: Tùy chỉnh hành vi hộp thoại + disable_modal_click_outside_title: Giữ hộp thoại mở khi nhấp bên ngoài + disable_modal_click_outside_description: Ngăn hộp thoại đóng khi nhấp bên ngoài. Hữu ích để tránh vô tình mất các thay đổi chưa lưu. transactions_title: Giao dịch transactions_subtitle: Tùy chỉnh cách hiển thị giao dịch dashboard_title: Bảng điều khiển diff --git a/config/locales/views/settings/zh-CN.yml b/config/locales/views/settings/zh-CN.yml index 296573b34..af218042f 100644 --- a/config/locales/views/settings/zh-CN.yml +++ b/config/locales/views/settings/zh-CN.yml @@ -107,6 +107,10 @@ zh-CN: theme_dark: 深色 theme_light: 浅色 theme_system: 跟随系统 + modals_title: 模态框 + modals_subtitle: 自定义模态框行为 + disable_modal_click_outside_title: 点击外部时保持模态框打开 + disable_modal_click_outside_description: 防止点击外部时关闭模态框。有助于避免意外丢失未保存的更改。 transactions_title: 交易 transactions_subtitle: 自定义交易的显示方式 dashboard_title: 仪表盘 diff --git a/config/locales/views/settings/zh-TW.yml b/config/locales/views/settings/zh-TW.yml index 4d544f479..a3ac0fae1 100644 --- a/config/locales/views/settings/zh-TW.yml +++ b/config/locales/views/settings/zh-TW.yml @@ -43,6 +43,12 @@ zh-TW: theme_system: 系統設定 theme_title: 主題 timezone: 時區 + appearances: + show: + modals_title: 模態視窗 + modals_subtitle: 自訂模態視窗行為 + disable_modal_click_outside_title: 點擊外部時保持模態視窗開啟 + disable_modal_click_outside_description: 防止點擊外部時關閉模態視窗。有助於避免意外遺失未儲存的變更。 profiles: destroy: cannot_remove_self: 您無法將自己從帳號中移除。 diff --git a/config/locales/views/shared/fr.yml b/config/locales/views/shared/fr.yml index 106ededa6..975646aae 100644 --- a/config/locales/views/shared/fr.yml +++ b/config/locales/views/shared/fr.yml @@ -1,21 +1,42 @@ --- fr: + concerns: + self_hostable: + redis_configured: Redis est maintenant correctement configuré ! Vous pouvez maintenant configurer votre application Sure. shared: + cancel: Annuler confirm_modal: accept: Confirmer body_html: "Vous ne pourrez pas annuler cette action
" cancel: Annuler title: Êtes-vous sûr ? - money_field: - label: Montant + custom_confirm: + default_body: Ceci n’est pas réversible. + default_btn_text: Confirmer + default_title: Êtes-vous sûr? exchange_rate_tabs: calculate_rate_tab: Calculer le taux FX convert_tab: Convertir avec le taux FX destination_amount: Montant de destination exchange_rate: Taux de change exchange_rate_help: Choisissez comment entrer le montant. + family_moniker: + group_plural: Groupes + group_singular: Groupe + plural: Familles + singular: Famille + money_field: + label: Montant + preview: Aperçu + require_admin: Seuls les administrateurs peuvent effectuer cette action + sync_toast: + message: Nouvelles données disponibles + refresh: Actualiser syncing_notice: syncing: Synchronisation des données de compte... - require_admin: "Seuls les administrateurs peuvent effectuer cette action" + transaction_tabs: + expense: Dépense + income: Revenu + transfer: Transfert trend_change: - no_change: "pas de changement" + no_change: pas de changement diff --git a/config/locales/views/simplefin_items/fr.yml b/config/locales/views/simplefin_items/fr.yml index 64a94d364..79d9dff8a 100644 --- a/config/locales/views/simplefin_items/fr.yml +++ b/config/locales/views/simplefin_items/fr.yml @@ -1,132 +1,193 @@ --- fr: simplefin_items: - new: - title: Connecter SimpleFIN - setup_token: Jeton de configuration - setup_token_placeholder: collez votre jeton de configuration SimpleFIN - connect: Connecter - cancel: Annuler + complete_account_setup: + all_skipped: Tous les comptes ont été ignorés. Aucun compte n'a été créé. + no_accounts: Aucun compte à configurer. + stale_accounts_errors: + one: "%{count} action sur un compte obsolète a échoué. Consultez les journaux + pour plus de détails." + other: "%{count} actions sur des comptes obsolètes ont échoué. Consultez les + journaux pour plus de détails." + stale_accounts_processed: 'Comptes obsolètes : %{deleted} supprimés, %{moved} + déplacés.' + success: + one: "%{count} compte SimpleFIN créé avec succès ! Vos transactions et holdings + sont en cours d'importation en arrière-plan." + other: "%{count} comptes SimpleFIN créés avec succès ! Vos transactions et + holdings sont en cours d'importation en arrière-plan." create: - success: Connexion SimpleFIN ajoutée avec succès ! Vos comptes apparaîtront sous peu lors de la synchronisation en arrière-plan. errors: blank_token: Veuillez entrer un jeton de configuration SimpleFIN. - invalid_token: Jeton de configuration invalide. Veuillez vérifier que vous avez copié le jeton complet depuis SimpleFIN Bridge. - token_compromised: Le jeton de configuration est peut-être compromis, expiré ou déjà utilisé. Veuillez en créer un nouveau. - create_failed: "Échec de la connexion : %{message}" + create_failed: 'Échec de la connexion : %{message}' + invalid_token: Jeton de configuration invalide. Veuillez vérifier que vous + avez copié le jeton complet depuis SimpleFIN Bridge. + token_compromised: Le jeton de configuration est peut-être compromis, expiré + ou déjà utilisé. Veuillez en créer un nouveau. unexpected: Une erreur inattendue s'est produite. Veuillez réessayer. + success: Connexion SimpleFIN ajoutée avec succès ! Vos comptes apparaîtront + sous peu lors de la synchronisation en arrière-plan. destroy: success: La connexion SimpleFIN va être supprimée - update: - success: Connexion SimpleFIN mise à jour avec succès ! Vos comptes sont en cours de reconnexion. - errors: - blank_token: Veuillez entrer un jeton de configuration SimpleFIN. - invalid_token: Jeton de configuration invalide. Veuillez vérifier que vous avez copié le jeton complet depuis SimpleFIN Bridge. - token_compromised: Le jeton de configuration est peut-être compromis, expiré ou déjà utilisé. Veuillez en créer un nouveau. - update_failed: "Échec de la mise à jour de la connexion : %{message}" - unexpected: Une erreur inattendue s'est produite. Veuillez réessayer. - edit: - setup_token: - label: "Jeton de configuration SimpleFIN :" - placeholder: "Collez votre jeton de configuration SimpleFIN ici..." - help_text: "Le jeton doit être une longue chaîne commençant par des lettres et des chiffres" - setup_accounts: - account_card: - balance: "Solde" - activity: - recent: - one: "1 transaction • dernière %{when}" - other: "%{count} transactions • dernière %{when}" - dormant: "Aucune activité depuis %{days} jours" - empty: "Aucune transaction importée pour le moment" - likely_closed: "Aucune activité récente et solde à zéro — il peut s'agir d'une carte fermée ou remplacée" - today: "aujourd'hui" - yesterday: "hier" - days_ago: - one: "il y a 1 jour" - other: "il y a %{count} jours" - stale_accounts: - title: "Comptes qui ne sont plus dans SimpleFIN" - description: "Ces comptes existent dans votre base de données mais ne sont plus fournis par SimpleFIN. Cela peut se produire lorsque la configuration des comptes change en amont." - action_prompt: "Que souhaitez-vous faire ?" - action_delete: "Supprimer le compte et toutes les transactions" - action_move: "Déplacer les transactions vers :" - action_skip: "Ignorer pour l'instant" - transaction_count: - one: "%{count} transaction" - other: "%{count} transactions" - complete_account_setup: - all_skipped: "Tous les comptes ont été ignorés. Aucun compte n'a été créé." - no_accounts: "Aucun compte à configurer." - success: - one: "%{count} compte SimpleFIN créé avec succès ! Vos transactions et avoirs sont en cours d'importation en arrière-plan." - other: "%{count} comptes SimpleFIN créés avec succès ! Vos transactions et avoirs sont en cours d'importation en arrière-plan." - stale_accounts_processed: "Comptes obsolètes : %{deleted} supprimés, %{moved} déplacés." - stale_accounts_errors: - one: "%{count} action sur un compte obsolète a échoué. Consultez les journaux pour plus de détails." - other: "%{count} actions sur des comptes obsolètes ont échoué. Consultez les journaux pour plus de détails." - simplefin_item: - add_new: Ajouter une nouvelle connexion - confirm_accept: Supprimer la connexion - confirm_body: Cela supprimera définitivement tous les comptes de ce groupe et toutes les données associées. - confirm_title: Supprimer la connexion SimpleFIN ? - delete: Supprimer - deletion_in_progress: "(suppression en cours...)" - error: Une erreur s'est produite lors de la synchronisation des données - no_accounts_description: Cette connexion n'a pas encore de comptes synchronisés. - no_accounts_title: Aucun compte trouvé - requires_update: Reconnecter - setup_needed: Nouveaux comptes prêts à être configurés - setup_description: Choisissez les types de comptes pour vos comptes SimpleFIN nouvellement importés. - setup_action: Configurer les nouveaux comptes - setup_accounts_menu: Configurer les comptes - more_accounts_available: - one: "%{count} compte supplémentaire disponible à configurer" - other: "%{count} comptes supplémentaires disponibles à configurer" - accounts_skipped_tooltip: "Certains comptes ont été ignorés en raison d'erreurs lors de la synchronisation" - accounts_skipped_label: "Ignorés : %{count}" - rate_limited_ago: "Limite de débit atteinte (il y a %{time})" - rate_limited_recently: "Limite de débit atteinte récemment" - status: Dernière synchronisation il y a %{timestamp} - status_never: Jamais synchronisé - status_with_summary: "Dernière synchronisation il y a %{timestamp} • %{summary}" - syncing: Synchronisation... - update: Mettre à jour - stale_pending_note: "(exclues des budgets)" - stale_pending_accounts: "dans : %{accounts}" - reconciled_details_note: "(voir le résumé de synchronisation pour plus de détails)" - duplicate_accounts_skipped: "Certains comptes ont été ignorés comme doublons — utilisez 'Lier des comptes existants' pour fusionner." - select_existing_account: - title: "Lier %{account_name} à SimpleFIN" - description: Sélectionnez un compte SimpleFIN à lier à votre compte existant - cancel: Annuler - link_account: Lier le compte - no_accounts_found: "Aucun compte SimpleFIN trouvé pour ce %{moniker}." - wait_for_sync: Si vous venez de connecter ou de synchroniser, réessayez une fois la synchronisation terminée. - unlink_to_move: Pour déplacer un lien, détachez-le d'abord depuis le menu d'actions du compte. - all_accounts_already_linked: Tous les comptes SimpleFIN semblent déjà liés. - currently_linked_to: "Actuellement lié à : %{account_name}" - - link_existing_account: - success: Compte lié à SimpleFIN avec succès - errors: - only_manual: Seuls les comptes manuels peuvent être liés - different_provider: Ce compte est lié à un autre fournisseur. Détachez-le d'abord de ce fournisseur, puis liez-le à SimpleFIN. - invalid_simplefin_account: Compte SimpleFIN sélectionné invalide dismiss_replacement_suggestion: dismissed: Suggestion de remplacement ignorée - replacement_prompt: - title: "Votre carte %{institution} a peut-être été remplacée" - description: "« %{account_name} » est liée à « %{old_name} », qui n'a eu aucune activité récente et un solde à zéro. Une nouvelle carte, « %{new_name} », est désormais active dans la même institution. Reliez-la pour conserver votre historique intact." - relink: Relier à la nouvelle carte - confirm_title: Relier à la nouvelle carte ? - confirm_body: "« %{account_name} » sera liée à « %{new_name} ». Votre historique de transactions est conservé ; les transactions futures proviendront de la nouvelle carte." - dismiss_aria: Ignorer la suggestion de remplacement + edit: + cancel: Annuler + connection_needs_update: 'Votre connexion SimpleFIN doit être mise à jour :' + header_subtitle: Obtenez un nouveau jeton de configuration pour reconnecter + votre compte SimpleFIN + setup_token: + help_text: Le jeton doit être une longue chaîne commençant par des lettres + et des chiffres + label: 'Jeton de configuration SimpleFIN :' + placeholder: Collez votre jeton de configuration SimpleFIN ici... + step_1_html: Visitez SimpleFIN Bridge pour créer un nouveau jeton de configuration. + step_2: Copiez le jeton et collez-le ci-dessous + step_3: Cliquez sur "Mettre à jour" pour restaurer l'accès + title: Mettre à jour la connexion SimpleFIN + update: Mise à jour + link_existing_account: + errors: + different_provider: Ce compte est lié à un autre fournisseur. Détachez-le + d'abord de ce fournisseur, puis liez-le à SimpleFIN. + invalid_simplefin_account: Compte SimpleFIN sélectionné invalide + only_manual: Seuls les comptes manuels peuvent être liés + success: Compte lié à SimpleFIN avec succès + new: + cancel: Annuler + connect: Connecter + setup_token: Jeton de configuration + setup_token_placeholder: collez votre jeton de configuration SimpleFIN + title: Connecter SimpleFIN reconciled_status: message: one: "%{count} transaction en attente en doublon réconciliée" other: "%{count} transactions en attente en doublon réconciliées" + replacement_prompt: + confirm_body: "« %{account_name} » sera liée à « %{new_name} ». Votre historique + de transactions est conservé ; les transactions futures proviendront de la + nouvelle carte." + confirm_title: Relier à la nouvelle carte ? + description: "« %{account_name} » est liée à « %{old_name} », qui n'a eu aucune + activité récente et un solde à zéro. Une nouvelle carte, « %{new_name} », + est désormais active dans la même institution. Reliez-la pour conserver votre + historique intact." + dismiss_aria: Ignorer la suggestion de remplacement + relink: Relier à la nouvelle carte + title: Votre carte %{institution} a peut-être été remplacée + select_existing_account: + all_accounts_already_linked: Tous les comptes SimpleFIN semblent déjà liés. + cancel: Annuler + currently_linked_to: 'Actuellement lié à : %{account_name}' + description: Sélectionnez un compte SimpleFIN à lier à votre compte existant + link_account: Lier le compte + no_accounts_found: Aucun compte SimpleFIN trouvé pour ce %{moniker}. + title: Lier %{account_name} à SimpleFIN + unlink_to_move: Pour déplacer un lien, détachez-le d'abord depuis le menu d'actions + du compte. + wait_for_sync: Si vous venez de connecter ou de synchroniser, réessayez une + fois la synchronisation terminée. + setup_accounts: + account_card: + balance: Solde + account_type_checking_savings: Chèque ou épargne + account_type_checking_savings_desc: Comptes bancaires réguliers + account_type_credit_card: Carte de crédit + account_type_credit_card_desc: Comptes de carte de crédit + account_type_investment: Investissement + account_type_investment_desc: Courtage, 401(k), comptes IRA + account_type_label: 'Type de compte :' + account_type_loan: Prêt ou hypothèque + account_type_loan_desc: Comptes de dette + account_type_other_asset: Autre actif + account_type_other_asset_desc: Tout le reste + activity: + days_ago: + one: il y a 1 jour + other: il y a %{count} jours + dormant: Aucune activité depuis %{days} jours + empty: Aucune transaction importée pour le moment + likely_closed: Aucune activité récente et solde à zéro — il peut s'agir d'une + carte fermée ou remplacée + recent: + one: 1 transaction • dernière %{when} + other: "%{count} transactions • dernière %{when}" + today: aujourd'hui + yesterday: hier + cancel: Annuler + choose_account_type: 'Choisissez le type de compte correct pour chaque compte + SimpleFIN :' + create_accounts: Créer des comptes + creating_accounts: Création de comptes... + header_subtitle: Choisissez les types de comptes corrects pour vos comptes importés + stale_accounts: + action_delete: Supprimer le compte et toutes les transactions + action_move: 'Déplacer les transactions vers :' + action_prompt: Que souhaitez-vous faire ? + action_skip: Ignorer pour l'instant + description: Ces comptes existent dans votre base de données mais ne sont + plus fournis par SimpleFIN. Cela peut se produire lorsque la configuration + des comptes change en amont. + title: Comptes qui ne sont plus dans SimpleFIN + transaction_count: + one: "%{count} transaction" + other: "%{count} transactions" + title: Configurez vos comptes SimpleFIN + transaction_history_description_html: SimpleFIN fournit généralement 60 + à 90 jours d'historique des transactions, en fonction de votre banque. + Après la configuration initiale, les nouvelles transactions seront automatiquement + synchronisées. La disponibilité des données historiques varie selon l'institution + et le type de compte. + transaction_history_title: 'Historique des transactions :' + simplefin_item: + accounts_skipped_label: 'Ignorés : %{count}' + accounts_skipped_tooltip: Certains comptes ont été ignorés en raison d'erreurs + lors de la synchronisation + add_new: Ajouter une nouvelle connexion + confirm_accept: Supprimer la connexion + confirm_body: Cela supprimera définitivement tous les comptes de ce groupe et + toutes les données associées. + confirm_title: Supprimer la connexion SimpleFIN ? + delete: Supprimer + deletion_in_progress: "(suppression en cours...)" + duplicate_accounts_skipped: Certains comptes ont été ignorés comme doublons + — utilisez 'Lier des comptes existants' pour fusionner. + error: Une erreur s'est produite lors de la synchronisation des données + more_accounts_available: + one: "%{count} compte supplémentaire disponible à configurer" + other: "%{count} comptes supplémentaires disponibles à configurer" + no_accounts_description: Cette connexion n'a pas encore de comptes synchronisés. + no_accounts_title: Aucun compte trouvé + rate_limited_ago: Limite de débit atteinte (il y a %{time}) + rate_limited_recently: Limite de débit atteinte récemment + reconciled_details_note: "(voir le résumé de synchronisation pour plus de détails)" + requires_update: Reconnecter + setup_accounts_menu: Configurer les comptes + setup_action: Configurer les nouveaux comptes + setup_description: Choisissez les types de comptes pour vos comptes SimpleFIN + nouvellement importés. + setup_needed: Nouveaux comptes prêts à être configurés + stale_pending_accounts: 'dans : %{accounts}' + stale_pending_note: "(exclues des budgets)" + status: Dernière synchronisation il y a %{timestamp} + status_never: Jamais synchronisé + status_with_summary: Dernière synchronisation il y a %{timestamp} • %{summary} + syncing: Synchronisation... + update: Mettre à jour stale_pending_status: message: one: "%{count} transaction en attente depuis plus de %{days} jours" other: "%{count} transactions en attente depuis plus de %{days} jours" + update: + errors: + blank_token: Veuillez entrer un jeton de configuration SimpleFIN. + invalid_token: Jeton de configuration invalide. Veuillez vérifier que vous + avez copié le jeton complet depuis SimpleFIN Bridge. + token_compromised: Le jeton de configuration est peut-être compromis, expiré + ou déjà utilisé. Veuillez en créer un nouveau. + unexpected: Une erreur inattendue s'est produite. Veuillez réessayer. + update_failed: 'Échec de la mise à jour de la connexion : %{message}' + success: Connexion SimpleFIN mise à jour avec succès ! Vos comptes sont en cours + de reconnexion. diff --git a/config/locales/views/snaptrade_items/fr.yml b/config/locales/views/snaptrade_items/fr.yml index 65183408e..02452712f 100644 --- a/config/locales/views/snaptrade_items/fr.yml +++ b/config/locales/views/snaptrade_items/fr.yml @@ -1,188 +1,214 @@ --- fr: - snaptrade_items: - default_name: "Connexion SnapTrade" - create: - success: "Configuration SnapTrade réussie." - update: - success: "Configuration SnapTrade mise à jour." - destroy: - success: "Connexion SnapTrade mise en file d'attente pour suppression." - connect: - decryption_failed: "Impossible de lire les identifiants SnapTrade. Veuillez supprimer et recréer cette connexion." - connection_failed: "Échec de la connexion à SnapTrade : %{message}" - callback: - success: "Courtier connecté. Veuillez sélectionner les comptes à lier." - no_item: "Configuration SnapTrade introuvable." - complete_account_setup: - success: - one: "%{count} compte lié avec succès." - other: "%{count} comptes liés avec succès." - partial_success: - one: "%{count} compte lié. Échec de la liaison de %{failed_count}." - other: "%{count} comptes liés. Échec de la liaison de %{failed_count}." - link_failed: "Échec de la liaison des comptes : %{errors}" - no_accounts: "Aucun compte n'a été sélectionné pour la liaison." - preload_accounts: - not_configured: "SnapTrade n'est pas configuré." - select_accounts: - not_configured: "SnapTrade n'est pas configuré." - select_existing_account: - not_found: "Compte ou configuration SnapTrade introuvable." - title: "Lier à un compte SnapTrade" - header: "Lier un compte existant" - subtitle: "Sélectionnez un compte SnapTrade à lier" - no_accounts: "Aucun compte SnapTrade non lié disponible." - connect_hint: "Vous devrez peut-être d'abord connecter un courtier." - settings_link: "Aller aux paramètres du fournisseur" - linking_to: "Liaison au compte :" - balance_label: "Solde :" - link_button: "Lier" - cancel_button: "Annuler" - link_existing_account: - success: "Compte SnapTrade lié avec succès." - failed: "Échec de la liaison du compte : %{message}" - not_found: "Compte introuvable." - connections: - unknown_brokerage: "Courtier inconnu" - delete_connection: - success: "Connexion supprimée avec succès. Un emplacement libéré." - failed: "Échec de la suppression de la connexion : %{message}" - missing_authorization_id: "Identifiant d'autorisation manquant" - api_deletion_failed: "Impossible de supprimer la connexion de SnapTrade - identifiants manquants. La connexion peut toujours exister dans votre compte SnapTrade." - delete_orphaned_user: - success: "Enregistrement orphelin supprimé avec succès." - failed: "Échec de la suppression de l'enregistrement orphelin." - setup_accounts: - title: "Configurer les comptes SnapTrade" - header: "Configurer vos comptes SnapTrade" - subtitle: "Sélectionnez les comptes de courtage à lier" - syncing: "Récupération de vos comptes…" - loading: "Récupération des comptes depuis SnapTrade…" - loading_hint: "Cliquez sur Actualiser pour vérifier les comptes." - refresh: "Actualiser" - info_title: "Données d'investissement SnapTrade" - info_holdings: "Avoirs avec prix actuels et quantités" - info_cost_basis: "Coût d'acquisition par position (lorsque disponible)" - info_activities: "Historique des transactions boursières avec libellés d'activité (Achat, Vente, Dividende, etc.)" - info_history: "Jusqu'à 3 ans d'historique des transactions" - free_tier_note: "L'offre gratuite SnapTrade autorise 5 connexions de courtier. Consultez votre tableau de bord SnapTrade pour l'utilisation actuelle." - no_accounts_title: "Aucun compte trouvé" - no_accounts_message: "Aucun compte de courtage n'a été trouvé. Cela peut se produire si vous avez annulé la connexion ou si votre courtier n'est pas pris en charge." - try_again: "Connecter un courtier" - back_to_settings: "Retour aux paramètres" - available_accounts: "Comptes disponibles" - balance_label: "Solde :" - account_number: "Compte :" - create_button: "Créer les comptes sélectionnés" - cancel_button: "Annuler" - creating: "Création des comptes…" - done_button: "Terminé" - or_link_existing: "Ou liez à un compte existant au lieu d'en créer un nouveau :" - select_account: "Sélectionnez un compte…" - link_button: "Lier" - linked_accounts: "Déjà liés" - linked_to: "Lié à :" - snaptrade_item: - accounts_need_setup: - one: "%{count} compte à configurer" - other: "%{count} comptes à configurer" - deletion_in_progress: "Suppression en cours…" - syncing: "Synchronisation…" - requires_update: "Connexion à mettre à jour" - error: "Erreur de synchronisation" - status: "Dernière synchronisation il y a %{timestamp} - %{summary}" - status_never: "Jamais synchronisé" - reconnect: "Reconnecter" - connect_brokerage: "Connecter un courtier" - add_another_brokerage: "Connecter un autre courtier" - delete: "Supprimer" - setup_needed: "Comptes à configurer" - setup_description: "Certains comptes de SnapTrade doivent être liés à des comptes Sure." - setup_action: "Configurer les comptes" - setup_accounts_menu: "Configurer les comptes" - manage_connections: "Gérer les connexions" - more_accounts_available: - one: "%{count} compte supplémentaire disponible à configurer" - other: "%{count} comptes supplémentaires disponibles à configurer" - no_accounts_title: "Aucun compte découvert" - no_accounts_description: "Connectez un courtier pour importer vos comptes d'investissement." - providers: snaptrade: - name: "SnapTrade" - connection_description: "Connectez-vous à votre courtier via SnapTrade (plus de 25 courtiers pris en charge)" - description: "SnapTrade se connecte à plus de 25 courtiers majeurs (Fidelity, Vanguard, Schwab, Robinhood, etc.) et fournit l'historique complet des transactions avec des libellés d'activité et le coût d'acquisition." - setup_title: "Instructions de configuration :" - step_1_html: "Créez un compte sur dashboard.snaptrade.com" - step_2: "Copiez votre Client ID et votre Consumer Key depuis le tableau de bord" - step_3: "Saisissez vos identifiants ci-dessous et cliquez sur Enregistrer" - step_4: "Rendez-vous sur la page Comptes et utilisez « Connecter un autre courtier » pour lier vos comptes d'investissement" - free_tier_warning: "L'offre gratuite inclut 5 connexions de courtier. Les connexions supplémentaires nécessitent un forfait SnapTrade payant." - client_id_label: "Client ID" - client_id_placeholder: "Saisissez votre Client ID SnapTrade" - client_id_update_placeholder: "Saisissez un nouveau Client ID pour mettre à jour" - consumer_key_label: "Consumer Key" - consumer_key_placeholder: "Saisissez votre Consumer Key SnapTrade" - consumer_key_update_placeholder: "Saisissez une nouvelle Consumer Key pour mettre à jour" - save_button: "Enregistrer la configuration" - update_button: "Mettre à jour la configuration" - status_connected: - one: "%{count} compte depuis SnapTrade" - other: "%{count} comptes depuis SnapTrade" - needs_setup: - one: "%{count} à configurer" - other: "%{count} à configurer" - status_ready: "Prêt à connecter des courtiers" - setup_accounts_button: "Configurer les comptes" - connect_button: "Connecter un courtier" - connected_brokerages: "Connectés :" - manage_connections: "Gérer les connexions" - connection_limit_info: "L'offre gratuite SnapTrade autorise 5 connexions de courtier. Supprimez les connexions inutilisées pour libérer des emplacements." - loading_connections: "Chargement des connexions…" - connections_error: "Échec du chargement des connexions : %{message}" accounts_count: one: "%{count} compte" other: "%{count} comptes" - orphaned_connection: "Connexion orpheline (non synchronisée localement)" - needs_linking: "à lier" - no_connections: "Aucune connexion de courtier trouvée." - delete_connection: "Supprimer" - delete_connection_title: "Supprimer la connexion de courtier ?" - delete_connection_body: "Cela supprimera définitivement la connexion %{brokerage} de SnapTrade. Tous les comptes de ce courtier seront déliés. Vous devrez vous reconnecter pour synchroniser à nouveau ces comptes." - delete_connection_confirm: "Supprimer la connexion" + client_id_label: Client ID + client_id_placeholder: Saisissez votre Client ID SnapTrade + client_id_update_placeholder: Saisissez un nouveau Client ID pour mettre à jour + connect_button: Connecter un courtier + connected_brokerages: 'Connectés :' + connection_description: Connectez-vous à votre courtier via SnapTrade (plus de 25 courtiers pris en charge) + connection_limit_info: L'offre gratuite SnapTrade autorise 5 connexions de courtier. Supprimez les connexions inutilisées pour libérer des emplacements. + connections_error: 'Échec du chargement des connexions : %{message}' + consumer_key_label: Consumer Key + consumer_key_placeholder: Saisissez votre Consumer Key SnapTrade + consumer_key_update_placeholder: Saisissez une nouvelle Consumer Key pour mettre à jour + delete_connection: Supprimer + delete_connection_body: Cela supprimera définitivement la connexion %{brokerage} de SnapTrade. Tous les comptes de ce courtier seront déliés. Vous devrez vous reconnecter pour synchroniser à nouveau ces comptes. + delete_connection_confirm: Supprimer la connexion + delete_connection_title: Supprimer la connexion de courtier ? + delete_orphaned_user: Supprimer + delete_orphaned_user_body: Cela supprimera définitivement cet utilisateur SnapTrade orphelin et toutes ses connexions de courtier, libérant ainsi des emplacements de connexion. + delete_orphaned_user_confirm: Supprimer l'enregistrement + delete_orphaned_user_title: Supprimer l'enregistrement orphelin ? + description: SnapTrade se connecte à plus de 25 courtiers majeurs (Fidelity, Vanguard, Schwab, Robinhood, etc.) et fournit l'historique complet des transactions avec des libellés d'activité et le coût d'acquisition. + free_tier_warning: L'offre gratuite inclut 5 connexions de courtier. Les connexions supplémentaires nécessitent un forfait SnapTrade payant. + legacy_credentials_description: Utilisez la configuration Client ID et Consumer Key si votre compte SnapTrade n'a pas activé OAuth. + legacy_credentials_title: Utiliser les identifiants API hérités + loading_connections: Chargement des connexions… + manage_connections: Gérer les connexions + name: SnapTrade + needs_linking: à lier + needs_setup: + one: "%{count} à configurer" + other: "%{count} à configurer" + no_connections: Aucune connexion de courtier trouvée. + oauth_connect_button: Se connecter avec SnapTrade + oauth_reauthorize_button: Réautoriser + oauth_status_authorized: Autorisé avec SnapTrade. + oauth_status_ready: Utilisez un code d'appareil pour autoriser Sure pour SnapTrade. + oauth_title: SnapTrade OAuth + orphaned_connection: Connexion orpheline (non synchronisée localement) + orphaned_user: Enregistrement orphelin + orphaned_users_description: Il s'agit d'anciens enregistrements d'utilisateurs SnapTrade qui occupent vos emplacements de connexion. Supprimez-les pour libérer des emplacements. orphaned_users_title: one: "%{count} enregistrement orphelin" other: "%{count} enregistrements orphelins" - orphaned_users_description: "Il s'agit d'anciens enregistrements d'utilisateurs SnapTrade qui occupent vos emplacements de connexion. Supprimez-les pour libérer des emplacements." - orphaned_user: "Enregistrement orphelin" - delete_orphaned_user: "Supprimer" - delete_orphaned_user_title: "Supprimer l'enregistrement orphelin ?" - delete_orphaned_user_body: "Cela supprimera définitivement cet utilisateur SnapTrade orphelin et toutes ses connexions de courtier, libérant ainsi des emplacements de connexion." - delete_orphaned_user_confirm: "Supprimer l'enregistrement" - + save_button: Enregistrer la configuration + setup_accounts_button: Configurer les comptes + setup_title: 'Instructions de configuration :' + status_connected: + one: "%{count} compte depuis SnapTrade" + other: "%{count} comptes depuis SnapTrade" + status_needs_registration: Identifiants enregistrés. Terminez la configuration pour connecter une maison de courtage. + status_ready: Prêt à connecter des courtiers + step_1_html: Créez un compte sur dashboard.snaptrade.com + step_2: Copiez votre Client ID et votre Consumer Key depuis le tableau de bord + step_3: Saisissez vos identifiants ci-dessous et cliquez sur Enregistrer + step_4: Rendez-vous sur la page Comptes et utilisez « Connecter un autre courtier » pour lier vos comptes d'investissement + update_button: Mettre à jour la configuration snaptrade_item: + brokerage_summary: + count: + one: "%{count} courtier" + other: "%{count} courtiers" + none: Aucun courtier connecté + institution_summary: + count: + one: "%{count} institution" + other: "%{count} institutions" + none: Aucune institution connectée sync_status: - no_accounts: "Aucun compte trouvé" + no_accounts: Aucun compte trouvé synced: one: "%{count} compte synchronisé" other: "%{count} comptes synchronisés" synced_with_setup: "%{linked} synchronisé(s), %{unlinked} à configurer" - institution_summary: - none: "Aucune institution connectée" - count: - one: "%{count} institution" - other: "%{count} institutions" - brokerage_summary: - none: "Aucun courtier connecté" - count: - one: "%{count} courtier" - other: "%{count} courtiers" syncer: - discovering: "Découverte des comptes…" - importing: "Importation des comptes depuis SnapTrade…" - processing: "Traitement des avoirs et des activités…" - calculating: "Calcul des soldes…" - checking_config: "Vérification de la configuration du compte…" + activities_fetching_async: Les activités sont récupérées en arrière-plan. Cela peut prendre jusqu'à une minute pour les nouvelles connexions de courtier. + calculating: Calcul des soldes… + checking_config: Vérification de la configuration du compte… + discovering: Découverte des comptes… + importing: Importation des comptes depuis SnapTrade… needs_setup: "%{count} comptes à configurer…" - activities_fetching_async: "Les activités sont récupérées en arrière-plan. Cela peut prendre jusqu'à une minute pour les nouvelles connexions de courtier." + processing: Traitement des holdings et des activités… + snaptrade_items: + callback: + no_item: Configuration SnapTrade introuvable. + success: Courtier connecté. Veuillez sélectionner les comptes à lier. + complete_account_setup: + link_failed: 'Échec de la liaison des comptes : %{errors}' + no_accounts: Aucun compte n'a été sélectionné pour la liaison. + partial_success: + one: "%{count} compte lié. Échec de la liaison de %{failed_count}." + other: "%{count} comptes liés. Échec de la liaison de %{failed_count}." + success: + one: "%{count} compte lié avec succès." + other: "%{count} comptes liés avec succès." + complete_oauth_device_flow: + failed: Impossible de terminer l'autorisation d'appareil SnapTrade OAuth. Veuillez réessayer. + setup_incomplete: L'autorisation SnapTrade est terminée, mais des identifiants API sont requis avant de pouvoir synchroniser les comptes. + success: Autorisation SnapTrade terminée. + connect: + connection_failed: 'Échec de la connexion à SnapTrade : %{message}' + decryption_failed: Impossible de lire les identifiants SnapTrade. Veuillez supprimer et recréer cette connexion. + connections: + unknown_brokerage: Courtier inconnu + create: + success: Configuration SnapTrade réussie. + default_name: Connexion SnapTrade + delete_connection: + api_deletion_failed: Impossible de supprimer la connexion de SnapTrade - identifiants manquants. La connexion peut toujours exister dans votre compte SnapTrade. + failed: 'Échec de la suppression de la connexion : %{message}' + missing_authorization_id: Identifiant d'autorisation manquant + success: Connexion supprimée avec succès. Un emplacement libéré. + delete_orphaned_user: + failed: Échec de la suppression de l'enregistrement orphelin. + success: Enregistrement orphelin supprimé avec succès. + destroy: + success: Connexion SnapTrade mise en file d'attente pour suppression. + link_accounts: + use_setup_flow: Utilisez plutôt le flux de configuration du compte + link_existing_account: + failed: 'Échec de la liaison du compte : %{message}' + not_found: Compte introuvable. + success: Compte SnapTrade lié avec succès. + oauth_device_flow: + cancel_button: Annuler + code_label: Code d'appareil + complete_button: J'ai autorisé SnapTrade + instructions: Ouvrez SnapTrade et confirmez ce code d'appareil, puis revenez ici pour terminer l'autorisation. + missing_client_id: L'identifiant client SnapTrade OAuth n'est pas configuré. Ajoutez SNAPTRADE_OAUTH_CLIENT_ID dans .env.local, redémarrez l'application, puis réessayez. + open_snaptrade: Ouvrir SnapTrade + start_button: Démarrer l'autorisation + subtitle: Autoriser Sure pour SnapTrade + title: Connecter SnapTrade + preload_accounts: + not_configured: SnapTrade n'est pas configuré. + select_accounts: + not_configured: SnapTrade n'est pas configuré. + select_existing_account: + balance_label: 'Solde :' + cancel_button: Annuler + connect_hint: Vous devrez peut-être d'abord connecter un courtier. + header: Lier un compte existant + link_button: Lier + linking_to: 'Liaison au compte :' + no_accounts: Aucun compte SnapTrade non lié disponible. + not_found: Compte ou configuration SnapTrade introuvable. + settings_link: Aller aux paramètres du fournisseur + subtitle: Sélectionnez un compte SnapTrade à lier + title: Lier à un compte SnapTrade + setup_accounts: + account_number: 'Compte :' + available_accounts: Comptes disponibles + back_to_settings: Retour aux paramètres + balance_label: 'Solde :' + cancel_button: Annuler + create_button: Créer les comptes sélectionnés + creating: Création des comptes… + done_button: Terminé + free_tier_note: L'offre gratuite SnapTrade autorise 5 connexions de courtier. Consultez votre tableau de bord SnapTrade pour l'utilisation actuelle. + header: Configurer vos comptes SnapTrade + info_activities: Historique des transactions boursières avec libellés d'activité (Achat, Vente, Dividende, etc.) + info_cost_basis: Coût d'acquisition par position (lorsque disponible) + info_history: Jusqu'à 3 ans d'historique des transactions + info_holdings: Holdings avec prix actuels et quantités + info_title: Données d'investissement SnapTrade + link_button: Lier + linked_accounts: Déjà liés + linked_to: 'Lié à :' + loading: Récupération des comptes depuis SnapTrade… + loading_hint: Cliquez sur Actualiser pour vérifier les comptes. + no_accounts_message: Aucun compte de courtage n'a été trouvé. Cela peut se produire si vous avez annulé la connexion ou si votre courtier n'est pas pris en charge. + no_accounts_title: Aucun compte trouvé + or_link_existing: 'Ou liez à un compte existant au lieu d''en créer un nouveau :' + refresh: Actualiser + select_account: Sélectionnez un compte… + subtitle: Sélectionnez les comptes de courtage à lier + sync_start_date_help: Laisser vide pour tout l'historique disponible + sync_start_date_label: 'Importer des transactions depuis :' + syncing: Récupération de vos comptes… + title: Configurer les comptes SnapTrade + try_again: Connecter un courtier + snaptrade_item: + accounts_need_setup: + one: "%{count} compte à configurer" + other: "%{count} comptes à configurer" + add_another_brokerage: Connecter un autre courtier + connect_brokerage: Connecter un courtier + delete: Supprimer + deletion_in_progress: Suppression en cours… + error: Erreur de synchronisation + manage_connections: Gérer les connexions + more_accounts_available: + one: "%{count} compte supplémentaire disponible à configurer" + other: "%{count} comptes supplémentaires disponibles à configurer" + no_accounts_description: Connectez un courtier pour importer vos comptes d'investissement. + no_accounts_title: Aucun compte découvert + reconnect: Reconnecter + requires_update: Connexion à mettre à jour + setup_accounts_menu: Configurer les comptes + setup_action: Configurer les comptes + setup_description: Certains comptes de SnapTrade doivent être liés à des comptes Sure. + setup_needed: Comptes à configurer + status: Dernière synchronisation il y a %{timestamp} - %{summary} + status_never: Jamais synchronisé + syncing: Synchronisation… + start_oauth_device_flow: + failed: Impossible de démarrer l'autorisation d'appareil SnapTrade OAuth. Veuillez réessayer. + update: + success: Configuration SnapTrade mise à jour. diff --git a/config/locales/views/sophtron_items/fr.yml b/config/locales/views/sophtron_items/fr.yml new file mode 100644 index 000000000..459654275 --- /dev/null +++ b/config/locales/views/sophtron_items/fr.yml @@ -0,0 +1,379 @@ +--- +fr: + sophtron_items: + api_error: + bad_credentials: 'Identifiants bancaires : vérifiez que le nom d''utilisateur + et le mot de passe sont corrects' + check_provider_settings: Vérifier les paramètres du fournisseur + common_issues_title: 'Problèmes courants :' + expired_credentials: 'Informations d''identification expirées : générez un nouvel + identifiant utilisateur et une nouvelle clé d''accès à partir de Sophtron' + incorrect_user_id: 'ID utilisateur incorrect : vérifiez votre ID utilisateur + dans les paramètres du fournisseur' + institution_timeout: 'Timeout de l''institution : la page de connexion à la + banque ne s''est pas terminée à temps' + institution_unable_to_connect: Impossible de se connecter à l'établissement + invalid_access_key: 'Clé d''accès invalide : vérifiez votre clé d''accès dans + les paramètres du fournisseur' + network_issue: 'Problème de réseau : vérifiez votre connexion Internet' + service_down: 'Service en panne : l''API Sophtron peut être temporairement indisponible' + title: Erreur de connexion Sophtron + try_again: Essayez de vous connecter à nouveau + unable_to_connect: Impossible de se connecter à Sophtron + unsupported_mfa: 'Prise en charge MFA : Sophtron peut ne pas prendre en charge + le flux de vérification actuel de cette institution' + verification_code: 'Code de vérification : assurez-vous que le dernier code + a été saisi avant son expiration' + complete_account_setup: + all_skipped: Tous les comptes ont été ignorés. Aucun compte n'a été créé. + api_error: Erreur de connexion API + creation_failed: Échec de la création de comptes + no_accounts: Aucun compte à créer. + success: Compte(s) %{count} créé avec succès. + unexpected_error: Une erreur inattendue s'est produite + connect: + cancel: Annuler + captcha: Captcha + connect: Se connecter + institution_search_label: Établissement + institution_search_placeholder: Rechercher par nom de banque + no_institutions: Aucune institution correspondante trouvée. + password: Mot de passe + search: Rechercher + search_too_short: Entrez au moins deux caractères à rechercher. + title: Connecter l'établissement Sophtron + username: Nom d'utilisateur + connect_institution: + api_error: 'Échec de la connexion Sophtron : %{message}' + missing_parameters: Sélectionnez une institution et saisissez vos identifiants + de connexion bancaire. + connection_status: + api_error: 'Erreur de connexion API : %{message}' + attempt: Tentative %{attempt} de %{max} + check_again: Vérifiez à nouveau + failed: Sophtron n'a pas pu compléter cette connexion institutionnelle. + failed_timeout: Sophtron a expiré pendant que l'institution terminait sa connexion. + timeout: Sophtron n'a pas fini de se connecter dans le délai prévu. Vous pouvez + vérifier à nouveau ou essayer de vous reconnecter plus tard. + title: Connexion de Sophtron + waiting: Sophtron est toujours connecté à votre établissement. + create: + success: Connexion Sophtron créée avec succès + defaults: + name: Connexion Sophtron + destroy: + success: Connexion Sophtron supprimée + edit: + access_key: + help_text: La clé d'accès doit être une longue chaîne commençant par des lettres + et des chiffres. + label: 'Clé d''accès Sophtron :' + placeholder: Collez votre clé d'accès Sophtron ici... + user_id: + help_text: L'ID utilisateur doit être une longue chaîne commençant par des + lettres et des chiffres. + label: 'Identifiant utilisateur Sophtron :' + placeholder: Collez votre identifiant Sophtron ici... + index: + title: Connexions Sophtron + link_accounts: + all_already_linked: + one: Le compte sélectionné (%{names}) est déjà associé + other: 'Tous les %{count} comptes sélectionnés sont déjà associés : %{names}' + api_error: Erreur de connexion API + invalid_account_names: + one: Impossible de lier un compte avec un nom vide + other: Impossible d'associer les comptes %{count} avec des noms vides + link_failed: Échec de l'association des comptes + no_access_key: La clé d’accès Sophtron n’est pas configurée. Veuillez le configurer + dans Paramètres. + no_accounts_found: Aucun compte trouvé. Veuillez vérifier la configuration de + votre clé API. + no_accounts_selected: Veuillez sélectionner au moins un compte + no_credentials_configured: Veuillez d'abord configurer votre identifiant utilisateur + et votre clé d'accès de l'API Sophtron dans les paramètres du fournisseur. + no_institution_connected: Veuillez d'abord connecter une institution bancaire + à Sophtron. + no_user_id: L’ID utilisateur Sophtron n’est pas configuré. Veuillez le configurer + dans Paramètres. + partial_invalid: "%{created_count} comptes ont été associés avec succès, %{already_linked_count} + étaient déjà associés, %{invalid_count} comptes avaient des noms non valides" + partial_success: 'Compte(s) %{created_count} associé(s) avec succès. %{already_linked_count} + comptes étaient déjà associés : %{already_linked_names}' + success: + one: Compte %{count} associé avec succès + other: Comptes %{count} associés avec succès + link_existing_account: + account_already_linked: Ce compte est déjà lié à un fournisseur + api_error: Erreur de connexion API + invalid_account_name: Impossible de lier un compte avec un nom vide + missing_parameters: Paramètres requis manquants + no_institution_connected: Veuillez d'abord connecter une institution bancaire + à Sophtron. + sophtron_account_already_linked: Ce compte Sophtron est déjà lié à un autre + compte + sophtron_account_not_found: Compte Sophtron introuvable + success: Liaison réussie de %{account_name} avec Sophtron + unexpected_error: Une erreur inattendue s'est produite + loading: + loading_message: Chargement des comptes Sophtron... + loading_title: Chargement + manual_sync_complete: + close: Fermer + description: Les soldes des comptes finiront de se mettre à jour en arrière-plan. + message: Les transactions ont été téléchargées après vérification Sophtron. + title: Synchronisation Sophtron démarrée + mfa: + captcha: Texte captcha + captcha_alt: Captcha Sophtron + phone_confirmed: J'ai confirmé par téléphone + submit: Soumettre + title: Vérification Sophtron + token: Code de vérification + new: + access_key: Clé d'accès + access_key_placeholder: collez votre clé d'accès Sophtron + cancel: Annuler + connect: Se connecter + title: Connecter Sophtron + user_id: Identifiant utilisateur + user_id_placeholder: collez votre identifiant Sophtron + preload_accounts: + api_error: Erreur de connexion API + no_access_key: La clé d’accès Sophtron n’est pas configurée. Veuillez le configurer + dans Paramètres. + no_accounts_found: Aucun compte trouvé. Veuillez vérifier la configuration de + votre clé API. + no_credentials_configured: Veuillez d'abord configurer votre identifiant utilisateur + et votre clé d'accès de l'API Sophtron dans les paramètres du fournisseur. + no_user_id: L’ID utilisateur Sophtron n’est pas configuré. Veuillez le configurer + dans Paramètres. + preload_accounts: précharger les comptes + unexpected_error: Une erreur inattendue s'est produite + redirect_after_account_link: + all_already_linked: + one: Le compte sélectionné est déjà lié + other: Tous les %{count} comptes sélectionnés sont déjà associés + invalid_account_names: + one: Impossible d'associer le compte %{count} avec un nom vide + other: Impossible d'associer les comptes %{count} avec des noms vides + link_failed: Échec de l'association des comptes + partial_invalid: Compte(s) %{created_count} lié(s). %{already_linked_count} + était déjà associé, %{invalid_count} avait des noms non valides. + partial_success: Compte(s) %{created_count} lié(s). %{already_linked_count} + comptes étaient déjà associés. + success: + one: Compte %{count} associé avec succès. + other: Comptes %{count} associés avec succès. + render_connection_timeout: + timeout: La connexion a expiré. Veuillez réessayer. + select_accounts: + accounts_selected: comptes sélectionnés + api_error: Erreur de connexion API + cancel: Annuler + configure_name_in_sophtron: Impossible d'importer - veuillez configurer le nom + du compte dans Sophtron + description: Sélectionnez les comptes que vous souhaitez associer à votre compte + %{product_name}. + link_accounts: Associer les comptes sélectionnés + no_access_key: La clé d’accès Sophtron n’est pas configurée. Veuillez le configurer + dans Paramètres. + no_accounts_found: Aucun compte trouvé. Veuillez vérifier la configuration de + votre clé API. + no_credentials_configured: Veuillez d'abord configurer votre identifiant utilisateur + et votre clé d'accès de l'API Sophtron dans les paramètres du fournisseur. + no_institution_connected: Veuillez d'abord connecter une institution bancaire + à Sophtron. + no_name_placeholder: "(Pas de nom)" + no_user_id: L’ID utilisateur Sophtron n’est pas configuré. Veuillez le configurer + dans Paramètres. + title: Sélectionnez les comptes Sophtron + unexpected_error: Une erreur inattendue s'est produite + select_existing_account: + account_already_linked: Ce compte est déjà lié à un fournisseur + all_accounts_already_linked: Tous les comptes Sophtron sont déjà liés + api_error: Erreur de connexion API + cancel: Annuler + configure_name_in_sophtron: Impossible d'importer - veuillez configurer le nom + du compte dans Sophtron + description: Sélectionnez un compte Sophtron à associer à ce compte. Les transactions + seront synchronisées et dédupliquées automatiquement. + link_account: Lier le compte + no_access_key: La clé d’accès Sophtron n’est pas configurée. Veuillez le configurer + dans Paramètres. + no_account_specified: Aucun compte spécifié + no_accounts_found: Aucun compte Sophtron trouvé. Veuillez vérifier la configuration + de votre clé API. + no_institution_connected: Veuillez d'abord connecter une institution bancaire + à Sophtron. + no_name_placeholder: "(Pas de nom)" + no_user_id: L’ID utilisateur Sophtron n’est pas configuré. Veuillez le configurer + dans Paramètres. + title: Associer %{account_name} à Sophtron + unexpected_error: Une erreur inattendue s'est produite + select_option: Sélectionnez %{type} + setup_accounts: + account_type_label: 'Type de compte :' + account_types: + credit_card: Carte de crédit + depository: Compte chèque ou compte d'épargne + investment: Compte d'investissement + loan: Prêt ou hypothèque + other_asset: Autre actif + skip: Ignorer ce compte + all_accounts_linked: Tous vos comptes Sophtron ont déjà été configurés. + api_error: Erreur de connexion API + balance: Solde + cancel: Annuler + choose_account_type: 'Choisissez le type de compte correct pour chaque compte + Sophtron :' + create_accounts: Créer des comptes + creating_accounts: Création de comptes... + fetch_failed: Échec de la récupération des comptes + historical_data_range: 'Plage de données historiques :' + no_access_key: La clé d’accès Sophtron n’est pas configurée. Veuillez vérifier + vos paramètres de connexion. + no_accounts_to_setup: Aucun compte à configurer + no_institution_connected: L'institution Sophtron n'est pas encore connectée. + no_user_id: L’ID utilisateur Sophtron n’est pas configuré. Veuillez vérifier + vos paramètres de connexion. + subtitle: Choisissez les types de comptes corrects pour vos comptes importés + subtype_labels: + credit_card: '' + depository: 'Sous-type de compte :' + investment: 'Type d''investissement :' + loan: 'Type de prêt :' + other_asset: '' + subtype_messages: + credit_card: Les cartes de crédit seront automatiquement configurées en tant + que comptes de carte de crédit. + other_asset: Aucune option supplémentaire n'est nécessaire pour les autres + actifs. + sync_start_date_help: Sélectionnez jusqu'où vous souhaitez synchroniser l'historique + des transactions. Maximum 3 ans d’historique disponible. + sync_start_date_label: 'Commencez à synchroniser les transactions à partir de :' + title: Configurez vos comptes Sophtron + unexpected_error: Une erreur inattendue s'est produite + sophtron_entry: + processor: + unknown_transaction: Transaction inconnue + sophtron_item: + accounts_need_setup: Les comptes doivent être configurés + automatic_sync: Utiliser la synchronisation automatique + automatic_sync_for: Utiliser la synchronisation automatique pour %{institution} + delete: Supprimer la connexion + deletion_in_progress: suppression en cours... + error: Erreur + manual_sync: Synchronisation manuelle + manual_sync_action: Exiger une synchronisation manuelle + manual_sync_action_for: Exiger une synchronisation manuelle pour %{institution} + no_accounts_description: Cette connexion n'a pas encore de compte associé. + no_accounts_title: Aucun compte + setup_action: Créer de nouveaux comptes + setup_description: "%{linked} comptes sur %{total} associés. Choisissez les + types de comptes pour vos comptes Sophtron nouvellement importés." + setup_needed: Nouveaux comptes prêts à être créés + status: Synchronisé il y a %{timestamp} + status_never: Jamais synchronisé + status_with_summary: Dernière synchronisation il y a %{timestamp} • %{summary} + sync_now: Synchronisez maintenant + syncing: Synchronisation... + total: Total + unlinked: Sans lien + sophtron_panel: + field_descriptions: + access_key_html: "Clé d'accès : votre identifiant de clé + d'accès Sophtron" + base_url_html: "URL de base : l'URL du point de terminaison + de l'API Sophtron, généralement https://api.sophtron.com/api" + user_id_html: "ID utilisateur : votre identifiant d'utilisateur + Sophtron" + field_descriptions_title: 'Description des champs :' + fields: + access_key: + label: Clé d'accès + placeholder_edit: "••••••••" + placeholder_new: Collez votre clé d'accès Sophtron + base_url: + label: URL de base + placeholder: https://api.sophtron.com/api + user_id: + label: Identifiant utilisateur + placeholder_edit: "••••••••" + placeholder_new: Collez votre identifiant Sophtron + save: Enregistrer la configuration + setup_instructions: + step_1_html: Visitez Sophtron pour obtenir vos informations d'identification + API. + step_2: Copiez votre identifiant utilisateur et votre clé d'accès à partir + des paramètres de votre compte Sophtron + step_3: Collez les informations d'identification ci-dessous et cliquez sur + Enregistrer ; Bien sûr, votre identifiant client Sophtron sera automatiquement + créé ou réutilisé. + setup_instructions_title: 'Instructions de configuration :' + update: Mettre à jour la configuration + sophtron_setup_required: + description: Avant de pouvoir lier des comptes Sophtron, vous devez configurer + votre identifiant utilisateur et votre clé d'accès Sophtron. + go_to_provider_settings: Accédez aux paramètres du fournisseur + heading: ID utilisateur et clé d'accès non configurés + message: Pour terminer la configuration de votre connexion Sophtron, veuillez + vous rendre sur la page Paramètres du fournisseur et suivez les instructions + pour autoriser et configurer votre connexion Sophtron. + setup_steps_title: 'Étapes de configuration :' + step_1_html: Accédez à Paramètres → Fournisseurs de synchronisation + bancaire. + step_2_html: Retrouvez la rubrique Sophtron + step_3_html: Entrez votre identifiant utilisateur Sophtron et votre clé d'accès + step_4: Revenez ici pour lier vos comptes + title: Configuration Sophtron requise + start_manual_sync: + already_running: Une synchronisation est déjà en cours. + api_error: 'Erreur API : %{message}' + no_linked_accounts: Aucun compte lié disponible pour la synchronisation. + start_manual_sync_for_account: + failed: Échec de la synchronisation du compte + submit_mfa: + api_error: 'Échec de la vérification : %{message}' + invalid_security_answers: Les réponses de sécurité sont manquantes ou trop longues. + unknown_challenge: Étape de vérification Sophtron inconnue. + subtype: sous-type + sync: + already_running: La synchronisation manuelle Sophtron est déjà en cours. + api_error: 'Échec de la synchronisation manuelle Sophtron : %{message}' + failed: La synchronisation manuelle de Sophtron a échoué + no_linked_accounts: Cette institution Sophtron n'a aucun compte lié à synchroniser. + processing_failed: La synchronisation manuelle Sophtron n'a pas pu traiter les + transactions actualisées. + success: La synchronisation a commencé + syncer: + accounts_need_setup: "%{count} compte(s) doivent être configurés" + calculating_balances: Calcul des soldes des comptes liés... + checking_account_configuration: Vérification de la configuration du compte... + importing_accounts: Importation de comptes depuis Sophtron... + manual_sync_required: La synchronisation manuelle Sophtron est requise pour + cette institution ; ignorer ces comptes lors de la synchronisation automatique. + processing_transactions: Traitement des transactions pour les comptes liés... + toggle_manual_sync: + success_disabled: L'institution Sophtron se synchronisera automatiquement. + success_enabled: L'institution Sophtron nécessite désormais une synchronisation + manuelle. + type: type + update: + errors: + access_key_compromised: La clé d'accès peut être compromise, expirée ou déjà + utilisée. Veuillez en créer un nouveau. + blank_access_key: Veuillez saisir une clé d'accès Sophtron. + blank_user_id: Veuillez saisir un identifiant utilisateur Sophtron. + invalid_access_key: Clé d'accès invalide. Veuillez vérifier que vous avez + copié la clé d'accès complète de Sophtron. + invalid_user_id: ID utilisateur invalide. Veuillez vérifier que vous avez + copié l'ID utilisateur complet de Sophtron. + unexpected: Une erreur inattendue s'est produite. Veuillez réessayer ou contacter + l'assistance. + update_failed: 'Échec de la mise à jour de la connexion : %{message}' + user_id_compromised: L'ID utilisateur peut être compromis, expiré ou déjà + utilisé. Veuillez en créer un nouveau. + success: Connexion Sophtron mise à jour avec succès ! Vos comptes sont en cours + de reconnexion. diff --git a/config/locales/views/splits/fr.yml b/config/locales/views/splits/fr.yml index 5e899f513..343b72fd8 100644 --- a/config/locales/views/splits/fr.yml +++ b/config/locales/views/splits/fr.yml @@ -1,47 +1,51 @@ --- fr: splits: - new: - title: Diviser la transaction - description: Divisez cette transaction en plusieurs entrées avec différentes catégories et montants. - submit: Diviser la transaction - cancel: Annuler - add_row: Ajouter une division - remove_row: Retirer - remaining: Restant - amounts_must_match: Les montants des divisions doivent être égaux au montant initial de la transaction. - name_label: Nom - name_placeholder: Nom de la division - amount_label: Montant - category_label: Catégorie - uncategorized: "(sans catégorie)" - original_name: "Nom :" - original_date: "Date :" - original_amount: "Montant" - split_number: "Division n°%{number}" - create: - success: Transaction divisée avec succès - not_splittable: Cette transaction ne peut pas être divisée. - destroy: - success: Division de la transaction annulée avec succès - show: - title: Entrées de la division - description: Cette transaction a été divisée en plusieurs entrées. - button_title: Diviser la transaction - button_description: Divisez cette transaction en plusieurs entrées avec différentes catégories et montants. - button: Diviser - unsplit_title: Annuler la division - unsplit_button: Annuler la division - unsplit_confirm: Cela supprimera toutes les entrées de division et restaurera la transaction initiale. - edit: - title: Modifier la division - description: Modifiez les entrées de division de cette transaction. - submit: Mettre à jour la division - not_split: Cette transaction n'est pas divisée. - update: - success: Division mise à jour avec succès child: - title: Partie d'une division description: Cette entrée fait partie d'une transaction divisée. edit_split: Modifier la division + title: Partie d'une division unsplit: Annuler la division + create: + not_splittable: Cette transaction ne peut pas être divisée. + success: Transaction divisée avec succès + destroy: + success: Division de la transaction annulée avec succès + edit: + description: Modifiez les entrées de division de cette transaction. + not_split: Cette transaction n'est pas divisée. + submit: Mettre à jour la division + title: Modifier la division + new: + add_row: Ajouter une division + amount_label: Montant + amounts_must_match: Les montants des divisions doivent être égaux au montant + initial de la transaction. + cancel: Annuler + category_label: Catégorie + description: Divisez cette transaction en plusieurs entrées avec différentes + catégories et montants. + name_label: Nom + name_placeholder: Nom de la division + original_amount: Montant + original_date: 'Date :' + original_name: 'Nom :' + remaining: Restant + remove_row: Retirer + split_number: Division n°%{number} + submit: Diviser la transaction + title: Diviser la transaction + uncategorized: "(sans catégorie)" + show: + button: Diviser + button_description: Divisez cette transaction en plusieurs entrées avec différentes + catégories et montants. + button_title: Diviser la transaction + description: Cette transaction a été divisée en plusieurs entrées. + title: Entrées de la division + unsplit_button: Annuler la division + unsplit_confirm: Cela supprimera toutes les entrées de division et restaurera + la transaction initiale. + unsplit_title: Annuler la division + update: + success: Division mise à jour avec succès diff --git a/config/locales/views/subscriptions/fr.yml b/config/locales/views/subscriptions/fr.yml index 61965fc21..3e916b331 100644 --- a/config/locales/views/subscriptions/fr.yml +++ b/config/locales/views/subscriptions/fr.yml @@ -1,13 +1,28 @@ +--- fr: subscriptions: + create: + trial_already_used: Vous avez déjà commencé ou terminé un essai. Veuillez mettre + à niveau pour continuer. + welcome: Bienvenue sur Bien sûr ! self_hosted_alert: "%{product_name} n'est pas disponible en mode auto-hébergé." + success: + contribution_failed: Une erreur s'est produite lors du traitement de votre contribution. + Veuillez réessayer. + welcome_with_contribution: Bienvenue sur Bien sûr ! Votre contribution est + appréciée. upgrade: - contribute_and_support_sure: "Contribuer et soutenir Sure" - cta: "Continuez à soutenir le développement de cette base de code !" + account_settings: Paramètres du compte + already_contributing: Vous contribuez déjà. Merci! + contribute_and_support_sure: Contribuer et soutenir Sure + cta: Continuez à soutenir le développement de cette base de code ! header: - support: "Soutenir" - sure: "Sure" - today: "aujourd'hui" - redirect_to_stripe: "Dans l'étape suivante, vous serez redirigé vers Stripe, qui gère les cartes de crédit pour nous." - trialing: "Vos données seront supprimées dans %{days} jours" - trial_over: "Votre période d'essai est terminée" \ No newline at end of file + support: Soutenir + sure: Sure + today: aujourd'hui + page_title: Mise à niveau + redirect_to_stripe: Dans l'étape suivante, vous serez redirigé vers Stripe, + qui gère les cartes de crédit pour nous. + sign_out: Se déconnecter + trial_over: Votre période d'essai est terminée + trialing: Vos données seront supprimées dans %{days} jours diff --git a/config/locales/views/tag/deletions/fr.yml b/config/locales/views/tag/deletions/fr.yml index 1cee1ee9a..e93b186fb 100644 --- a/config/locales/views/tag/deletions/fr.yml +++ b/config/locales/views/tag/deletions/fr.yml @@ -6,8 +6,12 @@ fr: deleted: Étiquette supprimée new: delete_and_leave_uncategorized: Supprimer "%{tag_name}" - delete_and_recategorize: Supprimer "%{tag_name}" et attribuer une nouvelle étiquette + delete_and_reassign: Supprimer et réaffecter + delete_and_recategorize: Supprimer "%{tag_name}" et attribuer une nouvelle + étiquette delete_tag: Supprimer l'étiquette ? - explanation: "%{tag_name} sera supprimé des transactions et d'autres entités catégorisables. Au lieu de les laisser non catégorisées, vous pouvez également attribuer une nouvelle étiquette ci-dessous." + explanation: "%{tag_name} sera supprimé des transactions et d'autres entités + catégorisables. Au lieu de les laisser non catégorisées, vous pouvez également + attribuer une nouvelle étiquette ci-dessous." replacement_tag_prompt: Sélectionnez l'étiquette tag: Étiquette diff --git a/config/locales/views/tags/fr.yml b/config/locales/views/tags/fr.yml index 898cc97f6..1f8f15a71 100644 --- a/config/locales/views/tags/fr.yml +++ b/config/locales/views/tags/fr.yml @@ -3,14 +3,17 @@ fr: tags: create: created: Étiquette créée - error: "Erreur lors de la création de l'étiquette : %{error}" + error: 'Erreur lors de la création de l''étiquette : %{error}' destroy: deleted: Étiquette supprimée + destroy_all: + all_deleted: Toutes les balises supprimées edit: edit: Éditer l'étiquette form: placeholder: Nom de l'étiquette index: + delete_all: Supprimer tout empty: Aucune étiquette pour le moment new: Nouvelle étiquette tags: Étiquettes diff --git a/config/locales/views/trades/fr.yml b/config/locales/views/trades/fr.yml index a39330e14..19c4a5bea 100644 --- a/config/locales/views/trades/fr.yml +++ b/config/locales/views/trades/fr.yml @@ -5,6 +5,7 @@ fr: account: Compte de transfert (facultatif) account_prompt: Rechercher un compte amount: Montant + dividend_requires_security: Un titre est requis pour les dividendes fee: Frais de transaction holding: Symbole boursier holding_optional: Symbole boursier (facultatif) @@ -12,23 +13,23 @@ fr: qty: Quantité submit: Ajouter la transaction ticker_placeholder: AAPL + trade_requires_security: Un titre (ticker) est requis pour les transactions d'achat et de vente type: Type type_buy: Acheter - type_sell: Vendre type_deposit: Dépôt - type_withdrawal: Retrait type_dividend: Dividende type_interest: Intérêts - dividend_requires_security: Un titre est requis pour les dividendes + type_sell: Vendre + type_withdrawal: Retrait header: buy: Acheter - sell: Vendre + current_market_price_label: Prix du marché actuel dividend: Dividende interest: Intérêts - current_market_price_label: Prix du marché actuel overview: Aperçu purchase_price_label: Prix d'achat purchase_qty_label: Quantité achetée + sell: Vendre symbol_label: Symbole total_return_label: Gain/perte non réalisé(e) new: @@ -41,16 +42,16 @@ fr: cost_per_share_label: Coût par action date_label: Date delete: Supprimer - fee_label: Frais de transaction delete_subtitle: Cette action ne peut pas être annulée delete_title: Supprimer la transaction boursière details: Détails - provider_disabled_warning: "Mises à jour des prix en pause — le fournisseur %{provider} est désactivé. Réactivez-le dans les paramètres ou réassociez l'avoir à un autre fournisseur." exclude_subtitle: Cette transaction ne sera pas incluse dans les rapports et les calculs exclude_title: Exclure des analyses + fee_label: Frais de transaction no_category: Aucune catégorie note_label: Note note_placeholder: Ajoutez tout commentaire supplémentaire ici... + provider_disabled_warning: Mises à jour des prix en pause — le fournisseur %{provider} est désactivé. Réactivez-le dans les paramètres ou réassociez l'holding à un autre fournisseur. quantity_label: Quantité sell: Vendre settings: Paramètres diff --git a/config/locales/views/transactions/fr.yml b/config/locales/views/transactions/fr.yml index ae93c78ca..5e5c29187 100644 --- a/config/locales/views/transactions/fr.yml +++ b/config/locales/views/transactions/fr.yml @@ -1,120 +1,158 @@ --- fr: transactions: - unknown_name: Transaction inconnue - selection_bar: - duplicate: Dupliquer - edit: Modifier + activity_labels: + buy: Achat + contribution: Contribution + dividend: Dividende + exchange: Échange + fee: Frais + interest: Intérêts + other: Autre + reinvestment: Réinvestissement + sell: Vente + sweep_in: Balayage entrant + sweep_out: Balayage sortant + transfer: Transfert + withdrawal: Retrait + attachments: + attachment_deleted: Pièce jointe supprimée avec succès + browse_to_add: Parcourir pour ajouter des fichiers + cannot_exceed: Ne peut dépasser %{count} pièces jointes par transaction + delete_failed: Échec de la suppression de la pièce jointe. Veuillez réessayer ou contacter le support. + failed_delete: 'Échec de la suppression de la pièce jointe : %{error}' + failed_upload: 'Échec du téléversement de la pièce jointe : %{error}' + files: + one: Fichier (1) + other: Fichiers (%{count}) + max_reached: Limite maximale de fichiers atteinte (%{count}/%{max}). Supprimez un fichier existant pour en téléverser un autre. + no_attachments: Aucune pièce jointe pour l'instant + no_files_selected: Aucun fichier sélectionné pour le téléversement + select_up_to: Sélectionnez jusqu'à %{count} fichiers (images ou PDF, %{size} Mo max chacun) • %{used} sur %{count} utilisés + upload: Téléverser + upload_failed: Échec du téléversement de la pièce jointe. Veuillez réessayer ou contacter le support. + uploaded_many: "%{count} pièces jointes téléversées avec succès" + uploaded_one: Pièce jointe téléversée avec succès + bulk_updates: + new: + cancel: Annuler + category_label: Catégorie + category_prompt: Sélectionnez une catégorie + date_label: Date + header_title: Modifier les transactions + merchant_label: Marchand + merchant_prompt: Sélectionnez un commerçant + name_label: Nom + name_placeholder: Entrez un nom qui sera appliqué aux transactions sélectionnées + none: "(aucun)" + notes_label: Remarques + notes_placeholder: Saisissez une note qui sera appliquée aux transactions sélectionnées + overview: Aperçu + save: Enregistrer + tags_label: Balises + transactions_section: Opérations + categorizes: + create: + categorized: + one: 1 transaction catégorisée + other: "%{count} transactions catégorisées" + rule_creation_failed: Transactions catégorisées, mais la règle n'a pas pu être créée (elle existe peut-être déjà). + entry_row: + assign_category_select: Assigner une catégorie pour %{name} + include_checkbox: Inclure %{name} + show: + all_done: Toutes les transactions sont catégorisées + assign_category: Assigner une catégorie + assign_category_prompt: "→ assigner" + col_amount: Montant + col_category: Catégorie + col_date: Date + col_transaction: Transaction + create_rule_label: Créer une règle de catégorisation + exit: Quitter + filter_placeholder: Rechercher des catégories… + no_categories: Aucune catégorie correspondante + remaining: + one: 1 transaction non catégorisée restante + other: "%{count} transactions non catégorisées restantes" + rule_description_prefix: Les futures transactions de type %{type} dont le nom contient + rule_description_suffix: devraient également recevoir cette catégorie. + skip: Ignorer + transaction_count: + one: 1 transaction + other: "%{count} transactions" + transactions_hint: Décochez pour exclure une transaction, ou assignez-lui une catégorie différente directement dans sa ligne. + type_expense: Dépense + type_income: Revenu + convert_to_trade: + account_label: 'Compte :' + amount_label: 'Montant :' + cancel: Annuler + conversion_note: 'Convertie depuis la transaction : %{original_name} (%{original_date})' + date_label: 'Date :' + description: Convertir cette transaction en une transaction boursière avec les détails du titre + errors: + already_converted: Cette transaction a déjà été convertie ou exclue + conversion_failed: 'Échec de la conversion de la transaction : %{error}' + enter_qty_or_price: Veuillez saisir la quantité ou le prix par action. L'autre sera calculé à partir du montant de la transaction. + enter_ticker: Veuillez saisir un symbole ticker + invalid_qty_or_price: Quantité ou prix invalide. Veuillez saisir des valeurs positives valides. + not_investment_account: Seules les transactions des comptes d'investissement peuvent être converties en transactions boursières + security_not_found: Le titre sélectionné n'existe plus. Veuillez en sélectionner un autre. + select_security: Veuillez sélectionner ou saisir un titre + unexpected_error: 'Erreur inattendue lors de la conversion : %{error}' + exchange_hint: Laissez vide pour une détection automatique + exchange_label: Place de cotation (Facultatif) + exchange_placeholder: XNAS + price_hint: Prix par action (%{currency}) + price_label: Prix par action + price_mismatch_message: Votre prix (%{entered_price}/action) diffère significativement du prix de marché actuel de %{ticker} (%{market_price}). Si cela semble erroné, il se peut que vous ayez sélectionné le mauvais titre — essayez « Saisir un ticker personnalisé » pour indiquer le bon. + price_mismatch_title: Le prix ne correspond peut-être pas + price_placeholder: ex. 52.15 + qty_or_price_hint: Saisissez au moins la quantité OU le prix. L'autre sera calculé à partir du montant de la transaction (%{amount}). + quantity_hint: Nombre d'actions négociées + quantity_label: Quantité (Actions) + quantity_placeholder: ex. 20 + security_custom: "+ Saisir un ticker personnalisé" + security_label: Titre + security_not_listed_hint: Vous ne voyez pas votre titre ? Sélectionnez « Saisir un ticker personnalisé » au bas de la liste. + security_prompt: Sélectionnez un titre… + submit: Convertir en transaction boursière + success: Transaction convertie en transaction boursière + ticker_hint: Saisissez le symbole ticker de l'action ou de l'ETF (ex. AAPL, MSFT) + ticker_placeholder: AAPL + ticker_search_hint: Recherchez par symbole ticker ou nom d'entreprise, ou saisissez un ticker personnalisé + ticker_search_placeholder: Rechercher un ticker… + title: Convertir en transaction boursière + trade_type_hint: Acheter ou vendre des actions d'un titre + trade_type_label: Type de transaction boursière + create: + created: Transaction créée + dismiss_duplicate: + failure: Impossible d'écarter la suggestion de doublon + success: Conservées comme transactions distinctes form: account: Compte account_prompt: Sélectionnez un compte amount: Montant category: Catégorie + category_label: Catégorie category_prompt: Sélectionnez une catégorie + create_tag: Créer date: Date description: Libellé description_placeholder: Libellé de la transaction + details: Détails expense: Dépense income: Revenu merchant_label: Marchand - none: (aucun) + none: "(aucun)" note_label: Notes note_placeholder: Entrez une note - create_tag: Créer submit: Ajouter la transaction tag_search_placeholder: Rechercher ou créer une étiquette tags_label: Étiquettes transfer: Virement - new: - new_transaction: Nouvelle transaction - show: - account_label: Compte - amount: Montant - category_label: Catégorie - date_label: Date - delete: Supprimer - delete_subtitle: Cette action supprime définitivement la transaction, affecte vos soldes historiques et ne peut pas être annulée. - delete_title: Supprimer la transaction - details: Détails - attachments: Pièces jointes - exclude: Exclure - exclude_description: Les transactions exclues seront retirées des calculs budgétaires et des rapports. - activity_type: Type d'activité - activity_type_description: Type d'activité d'investissement (Achat, Vente, Dividende, etc.). Détecté automatiquement ou défini manuellement. - one_time_title: "Transaction ponctuelle (%{type})" - one_time_description: Les transactions ponctuelles seront exclues de certains calculs budgétaires et rapports afin de vous aider à voir ce qui compte vraiment. - convert_to_trade_title: Convertir en transaction boursière - convert_to_trade_description: Convertissez cette transaction en une transaction boursière d'achat ou de vente avec les détails du titre pour le suivi du portefeuille. - convert_to_trade_button: Convertir en transaction boursière - pending_duplicate_merger_title: Doublon d'une transaction validée ? - pending_duplicate_merger_description: Fusionnez manuellement cette transaction en attente avec sa version validée. - pending_duplicate_merger_button: Ouvrir la fusion - merchant_label: Marchand - name_label: Nom - nature: Type - none: "(aucun)" - note_label: Notes - note_placeholder: Entrez une note - overview: Aperçu - settings: Paramètres - tags_label: Étiquettes - tab_transactions: Transactions - tab_upcoming: À venir - uncategorized: "(non catégorisée)" - activity_labels: - buy: Achat - sell: Vente - sweep_in: Balayage entrant - sweep_out: Balayage sortant - dividend: Dividende - reinvestment: Réinvestissement - interest: Intérêts - fee: Frais - transfer: Transfert - contribution: Contribution - withdrawal: Retrait - exchange: Échange - other: Autre - mark_recurring: Marquer comme récurrente - mark_recurring_subtitle: Suivez cette transaction comme récurrente. La variance du montant est calculée automatiquement à partir des 6 derniers mois de transactions similaires. - mark_recurring_title: Transaction récurrente - potential_duplicate_title: Doublon possible détecté - potential_duplicate_description: Cette transaction en attente peut être identique à la transaction validée ci-dessous. Si c'est le cas, fusionnez-les pour éviter le double comptage. - merge_duplicate: Oui, les fusionner - keep_both: Non, garder les deux - split_parent_row: - split_label: "Fractionner" - transaction: - pending: En attente - pending_tooltip: Transaction en attente — peut changer une fois validée - linked_with_provider: Lié avec %{provider} - activity_type_tooltip: Type d'activité d'investissement - possible_duplicate: Doublon ? - potential_duplicate_tooltip: Cette transaction peut être un doublon d'une autre transaction - review_recommended: Vérifier - review_recommended_tooltip: Écart de montant important — vérification recommandée pour vérifier s'il s'agit d'un doublon - split: Fractionner - split_tooltip: Cette transaction a été fractionnée en plusieurs entrées - split_child_tooltip: Partie d'une transaction fractionnée - merge_duplicate: - success: Transactions fusionnées avec succès - failure: Impossible de fusionner les transactions - dismiss_duplicate: - success: Conservées comme transactions distinctes - failure: Impossible d'écarter la suggestion de doublon - pending_duplicate_merge: - possible_duplicate: Doublon ? - possible_duplicate_short: Dbl ? - review_recommended: Vérifier - review_recommended_short: Vérif - confirm_title: "Fusionner avec la transaction validée (%{posted_amount})" - reject_title: Conserver comme transactions distinctes - summary: - total_transactions: Total des transactions - income: Revenus - expenses: Dépenses - inflow: Entrées - outflow: Sorties header: edit_categories: Modifier les catégories edit_imports: Modifier les importations @@ -122,125 +160,90 @@ fr: edit_tags: Modifier les étiquettes import: Importer index: - transaction: transaction - transactions: transactions - import: Importer categorize_button: - one: "Catégoriser (1)" - other: "Catégoriser (%{count})" - categorizes: - show: - exit: "Quitter" - skip: "Ignorer" - remaining: - one: "1 transaction non catégorisée restante" - other: "%{count} transactions non catégorisées restantes" - transaction_count: - one: "1 transaction" - other: "%{count} transactions" - transactions_hint: "Décochez pour exclure une transaction, ou assignez-lui une catégorie différente directement dans sa ligne." - assign_category: "Assigner une catégorie" - assign_category_prompt: "→ assigner" - filter_placeholder: "Rechercher des catégories…" - col_transaction: "Transaction" - col_date: "Date" - col_amount: "Montant" - col_category: "Catégorie" - type_income: "Revenu" - type_expense: "Dépense" - create_rule_label: "Créer une règle de catégorisation" - rule_description_prefix: "Les futures transactions de type %{type} dont le nom contient" - rule_description_suffix: "devraient également recevoir cette catégorie." - no_categories: "Aucune catégorie correspondante" - all_done: "Toutes les transactions sont catégorisées" - create: - categorized: - one: "1 transaction catégorisée" - other: "%{count} transactions catégorisées" - rule_creation_failed: "Transactions catégorisées, mais la règle n'a pas pu être créée (elle existe peut-être déjà)." - entry_row: - include_checkbox: "Inclure %{name}" - assign_category_select: "Assigner une catégorie pour %{name}" - list: - drag_drop_title: Déposez un CSV à importer - drag_drop_subtitle: Téléversez directement les transactions + one: Catégoriser (1) + other: Catégoriser (%{count}) + edit_categories: Modifier les catégories + edit_imports: Modifier les importations + edit_merchants: Modifier les marchands + edit_rules: Modifier les règles + edit_tags: Modifier les balises + import: Importer + new_rule: Nouvelle règle + new_transaction: Nouvelle transaction + title: Opérations transaction: transaction transactions: transactions - toggle_recurring_section: Afficher/masquer les transactions récurrentes à venir + keep_both: Non, garder les deux + list: + drag_drop_subtitle: Téléversez directement les transactions + drag_drop_title: Déposez un CSV à importer + transaction: transaction + transactions: transactions + mark_recurring: Marquer comme récurrente + mark_recurring_subtitle: Suivez cette transaction comme récurrente. La variance du montant est calculée automatiquement à partir des 6 derniers mois de transactions similaires. + mark_recurring_title: Transaction récurrente + merge_duplicate: + failure: Impossible de fusionner les transactions + success: Transactions fusionnées avec succès + new: + new_transaction: Nouvelle transaction + pending_duplicate_merge: + confirm_title: Fusionner avec la transaction validée (%{posted_amount}) + possible_duplicate: Doublon ? + possible_duplicate_short: Dbl ? + reject_title: Conserver comme transactions distinctes + review_recommended: Vérifier + review_recommended_short: Vérif + potential_duplicate_description: Cette transaction en attente peut être identique à la transaction validée ci-dessous. Si c'est le cas, fusionnez-les pour éviter le double comptage. + potential_duplicate_title: Doublon possible détecté search: filters: account: Compte - date: Date - type: Type - status: Statut amount: Montant category: Catégorie - tag: Étiquette + date: Date merchant: Marchand - convert_to_trade: - title: Convertir en transaction boursière - description: Convertir cette transaction en une transaction boursière avec les détails du titre - date_label: "Date :" - account_label: "Compte :" - amount_label: "Montant :" - security_label: Titre - security_prompt: Sélectionnez un titre… - security_custom: "+ Saisir un ticker personnalisé" - security_not_listed_hint: Vous ne voyez pas votre titre ? Sélectionnez « Saisir un ticker personnalisé » au bas de la liste. - ticker_placeholder: AAPL - ticker_hint: Saisissez le symbole ticker de l'action ou de l'ETF (ex. AAPL, MSFT) - ticker_search_placeholder: Rechercher un ticker… - ticker_search_hint: Recherchez par symbole ticker ou nom d'entreprise, ou saisissez un ticker personnalisé - price_mismatch_title: Le prix ne correspond peut-être pas - price_mismatch_message: "Votre prix (%{entered_price}/action) diffère significativement du prix de marché actuel de %{ticker} (%{market_price}). Si cela semble erroné, il se peut que vous ayez sélectionné le mauvais titre — essayez « Saisir un ticker personnalisé » pour indiquer le bon." - quantity_label: Quantité (Actions) - quantity_placeholder: ex. 20 - quantity_hint: Nombre d'actions négociées - price_label: Prix par action - price_placeholder: ex. 52.15 - price_hint: Prix par action (%{currency}) - qty_or_price_hint: Saisissez au moins la quantité OU le prix. L'autre sera calculé à partir du montant de la transaction (%{amount}). - trade_type_label: Type de transaction boursière - trade_type_hint: Acheter ou vendre des actions d'un titre - exchange_label: Place de cotation (Facultatif) - exchange_placeholder: XNAS - exchange_hint: Laissez vide pour une détection automatique - cancel: Annuler - submit: Convertir en transaction boursière - success: Transaction convertie en transaction boursière - conversion_note: "Convertie depuis la transaction : %{original_name} (%{original_date})" - errors: - not_investment_account: Seules les transactions des comptes d'investissement peuvent être converties en transactions boursières - already_converted: Cette transaction a déjà été convertie ou exclue - enter_ticker: Veuillez saisir un symbole ticker - security_not_found: Le titre sélectionné n'existe plus. Veuillez en sélectionner un autre. - select_security: Veuillez sélectionner ou saisir un titre - enter_qty_or_price: Veuillez saisir la quantité ou le prix par action. L'autre sera calculé à partir du montant de la transaction. - invalid_qty_or_price: Quantité ou prix invalide. Veuillez saisir des valeurs positives valides. - conversion_failed: "Échec de la conversion de la transaction : %{error}" - unexpected_error: "Erreur inattendue lors de la conversion : %{error}" + status: Statut + tag: Étiquette + type: Type searches: filters: + account_filter: + filter_accounts: Filtrer les comptes amount_filter: equal_to: Égal à greater_than: Supérieur à less_than: Inférieur à placeholder: '0' badge: + confirmed: Confirmée expense: Dépense income: Revenu on_or_after: le %{date} et après on_or_before: le %{date} et avant + pending: En attente transfer: Virement + category_filter: + filter_category: Filtrer les catégories + date_filter: + end_date: Date de fin + start_date: Date de début + merchant_filter: + filter_merchants: Filtrer les commerçants + status_filter: confirmed: Confirmée pending: En attente + tag_filter: + filter_tags: Filtrer les étiquettes type_filter: expense: Dépense income: Revenu transfer: Virement - status_filter: - confirmed: Confirmée - pending: En attente + form: + filter: Filtrer + search_placeholder: Rechercher des transactions... + toggle_selection_checkboxes: Basculer toutes les cases à cocher menu: account_filter: Compte amount_filter: Montant @@ -257,23 +260,90 @@ fr: equal_to: égal à greater_than: supérieur à less_than: inférieur à - form: - toggle_selection_checkboxes: Basculer toutes les cases à cocher - attachments: - cannot_exceed: "Ne peut dépasser %{count} pièces jointes par transaction" - uploaded_one: "Pièce jointe téléversée avec succès" - uploaded_many: "%{count} pièces jointes téléversées avec succès" - failed_upload: "Échec du téléversement de la pièce jointe : %{error}" - no_files_selected: "Aucun fichier sélectionné pour le téléversement" - attachment_deleted: "Pièce jointe supprimée avec succès" - failed_delete: "Échec de la suppression de la pièce jointe : %{error}" - upload_failed: "Échec du téléversement de la pièce jointe. Veuillez réessayer ou contacter le support." - delete_failed: "Échec de la suppression de la pièce jointe. Veuillez réessayer ou contacter le support." - upload: "Téléverser" - no_attachments: "Aucune pièce jointe pour l'instant" - select_up_to: "Sélectionnez jusqu'à %{count} fichiers (images ou PDF, %{size} Mo max chacun) • %{used} sur %{count} utilisés" - files: - one: "Fichier (1)" - other: "Fichiers (%{count})" - browse_to_add: "Parcourir pour ajouter des fichiers" - max_reached: "Limite maximale de fichiers atteinte (%{count}/%{max}). Supprimez un fichier existant pour en téléverser un autre." + selection_bar: + duplicate: Dupliquer + edit: Modifier + selected: sélectionné + show: + account_label: Compte + activity_type: Type d'activité + activity_type_description: Type d'activité d'investissement (Achat, Vente, Dividende, etc.). Détecté automatiquement ou défini manuellement. + additional_details: Détails supplémentaires + amount: Montant + attachments: Pièces jointes + category_label: Catégorie + convert: Convertir + convert_to_trade_button: Convertir en transaction boursière + convert_to_trade_description: Convertissez cette transaction en une transaction boursière d'achat ou de vente avec les détails du titre pour le suivi du portefeuille. + convert_to_trade_title: Convertir en transaction boursière + date_label: Date + delete: Supprimer + delete_subtitle: Cette action supprime définitivement la transaction, affecte vos soldes historiques et ne peut pas être annulée. + delete_title: Supprimer la transaction + description: Descriptif + details: Détails + exclude: Exclure + exclude_description: Les transactions exclues seront retirées des calculs budgétaires et des rapports. + keep_both: Non, garde les deux + loan_payment: Paiement du prêt + mark_recurring: Marquer comme récurrent + mark_recurring_subtitle: Suivez cela comme une transaction récurrente. L’écart de montant est automatiquement calculé à partir des 6 derniers mois de transactions similaires. + mark_recurring_title: Transaction récurrente + memo: Mémo + merchant_label: Marchand + merge_duplicate: Oui, fusionne-les + name_label: Nom + nature: Type + none: "(aucun)" + note_label: Notes + note_placeholder: Entrez une note + one_time_description: Les transactions ponctuelles seront exclues de certains calculs budgétaires et rapports afin de vous aider à voir ce qui compte vraiment. + one_time_title: Transaction ponctuelle (%{type}) + open_matcher: Matcheur ouvert + overview: Aperçu + payee: Bénéficiaire + pending_duplicate_merger_button: Ouvrir la fusion + pending_duplicate_merger_description: Fusionnez manuellement cette transaction en attente avec sa version validée. + pending_duplicate_merger_title: Doublon d'une transaction validée ? + potential_duplicate_description: Cette transaction en attente peut être la même que la transaction publiée ci-dessous. Si tel est le cas, fusionnez-les pour éviter un double comptage. + potential_duplicate_title: Double possible détecté + provider_extras: Suppléments du fournisseur + settings: Paramètres + tab_transactions: Transactions + tab_upcoming: À venir + tags_label: Étiquettes + transfer: Transfert + transfer_matcher_description: Connectez cette transaction à sa contrepartie dans un autre compte. + transfer_or_debt_payment: Transfert ou paiement de la dette ? + uncategorized: "(non catégorisée)" + split_parent_row: + split_label: Fractionner + summary: + expenses: Dépenses + income: Revenus + inflow: Entrées + outflow: Sorties + total_transactions: Total des transactions + toggle_recurring_section: Afficher/masquer les transactions récurrentes à venir + transaction: + activity_type_tooltip: Type d'activité d'investissement + linked_with_provider: Lié avec %{provider} + pending: En attente + pending_tooltip: Transaction en attente — peut changer une fois validée + possible_duplicate: Doublon ? + potential_duplicate_tooltip: Cette transaction peut être un doublon d'une autre transaction + review_recommended: Vérifier + review_recommended_tooltip: Écart de montant important — vérification recommandée pour vérifier s'il s'agit d'un doublon + split: Fractionner + split_child_tooltip: Partie d'une transaction fractionnée + split_tooltip: Cette transaction a été fractionnée en plusieurs entrées + transfer_match: + auto_matched: Correspondance automatique + auto_matched_short: A/M + confirm_match: Confirmer la correspondance + payment_confirmed: Le paiement est confirmé + reject_match: Rejeter la correspondance + transfer_confirmed: Le transfert est confirmé + unknown_name: Transaction inconnue + update: + updated: Transaction mise à jour diff --git a/config/locales/views/transfer_matches/fr.yml b/config/locales/views/transfer_matches/fr.yml new file mode 100644 index 000000000..29f4240d9 --- /dev/null +++ b/config/locales/views/transfer_matches/fr.yml @@ -0,0 +1,27 @@ +--- +fr: + transfer_matches: + create: + success: Transfert créé + matching_fields: + create_new_transaction: Créer une nouvelle transaction + match_existing_recommended: Faire correspondre la transaction existante (recommandé) + matching_method: Méthode de correspondance + matching_transaction: Transaction correspondante + no_matching_transactions: Nous n'avons trouvé aucune transaction correspondant + à vos autres comptes. Veuillez sélectionner un compte et nous créerons une + nouvelle transaction d'entrée pour vous. + select_method: Sélectionnez une méthode pour faire correspondre vos transactions. + target_account: Compte cible + new: + create_transfer_match: Créer une correspondance de transfert + from_account: Depuis le compte + from_account_named: 'Depuis le compte : %{name}' + header: + subtitle: Faites correspondre la transaction correspondante dans un autre + compte ou créez-en une si elle n'existe pas. + title: Correspondre au transfert ou au paiement + inflow_transaction: Opération d'entrée + outflow_transaction: Opération de sortie + to_account: Pour rendre compte + to_account_named: 'Au compte : %{name}' diff --git a/config/locales/views/transfers/fr.yml b/config/locales/views/transfers/fr.yml index c63399400..c59876136 100644 --- a/config/locales/views/transfers/fr.yml +++ b/config/locales/views/transfers/fr.yml @@ -12,8 +12,11 @@ fr: destination_amount_display: "Montant de destination : %{amount}" exchange_rate_display: "Taux de change : %{rate}" expense: Dépense + bank_charges: Frais bancaires from: De income: Revenu + incoming_fee: Frais de transfert entrant + outgoing_fee: Frais de transfert sortant select_account: Sélectionner un compte source_amount: Montant source submit: Créer le transfert @@ -22,15 +25,31 @@ fr: new: title: Nouveau transfert show: + amount: Montant + category: Catégorie + date: Date delete: Supprimer le transfert - delete_subtitle: Ce transfert est supprimé. Il ne supprimera pas les transactions sous-jacentes. + delete_subtitle: + Ce transfert est supprimé. Il ne supprimera pas les transactions + sous-jacentes. delete_title: Voulez-vous vraiment supprimer ce transfert? details: Détails + from: De + mark_recurring: Marquer comme récurrent + mark_recurring_subtitle: + Suivez ce transfert comme un modèle récurrent dans + le prochain flux et la page récurrente. + mark_recurring_title: Marquer le transfert comme récurrent note_label: Notes note_placeholder: Ajoutez une note à ce transfert overview: Aperçu settings: Paramètres + bank_charges: Frais bancaires + destination_fee: Frais de destination + source_fee: Frais d'origine + to: À total: Total transfer_amount: Montant du transfert + uncategorized: Non classé update: success: Transfert mis à jour diff --git a/config/locales/views/up_items/fr.yml b/config/locales/views/up_items/fr.yml new file mode 100644 index 000000000..e0cc8dd59 --- /dev/null +++ b/config/locales/views/up_items/fr.yml @@ -0,0 +1,116 @@ +--- +fr: + family: + up: + create_up_item: + default_name: Connexion Up + providers: + up: + description: Connectez des comptes bancaires australiens Up via un jeton d'accès personnel + name: Up + up_account: + fallback: Compte Up + up_item: + errors: + account_processing_failed: Impossible de synchroniser le compte Up + account_sync_schedule_failed: Impossible de planifier la synchronisation du compte Up + sync_failed: Impossible de synchroniser la connexion Up + transactions_failed: Impossible de récupérer les transactions Up + institution_summary: + count: + one: 1 institution + other: "%{count} institutions" + none: Aucune institution connectée + one: 1 institution + sync_status: + all_synced: + one: 1 compte synchronisé + other: "%{count} comptes synchronisés" + no_accounts: Aucun compte trouvé + partial: "%{linked} synchronisés, %{unlinked} à configurer" + up_items: + complete_account_setup: + all_skipped: Aucun compte Up n'a été créé. + creation_failed: Impossible de créer les comptes Up. + no_accounts: Aucun compte Up n'a été sélectionné. + success: + one: 1 compte Up créé. + other: "%{count} comptes Up créés." + create: + success: Connexion Up enregistrée. + destroy: + success: Suppression de la connexion Up planifiée. + unlink_failed: Impossible de déconnecter la connexion Up + link_accounts: + link_failed: Aucun compte n'a été lié. + no_accounts_selected: Sélectionnez au moins un compte. + no_credentials_configured: Configurez d'abord Up dans les paramètres des fournisseurs. + success: + one: 1 compte Up lié. + other: "%{count} comptes Up liés." + unsupported_account_type: Up ne prend pas en charge ce type de compte. + link_existing_account: + account_already_linked: Ce compte est déjà lié à un fournisseur. + no_account_selected: Sélectionnez un compte Up à lier. + success: Compte Up lié à %{account_name}. + up_account_already_linked: Ce compte Up est déjà lié. + provider_panel: + access_token_label: Personal Access Token + access_token_placeholder: Collez votre jeton d'accès personnel Up + add_connection: Ajouter une connexion Up + connection_name_label: Nom de la connexion + connection_name_placeholder: Up principal + default_connection_name: Connexion Up + disconnect: Déconnecter + disconnect_confirm: Voulez-vous vraiment déconnecter %{name} ? + keep_access_token_placeholder: Laissez vide pour conserver le jeton existant + setup_accounts: Configurer les comptes + sync: Synchroniser + syncing: Synchronisation... + update_connection: Mettre à jour la connexion + select_accounts: + cancel: Annuler + description: Choisissez les comptes Up à ajouter. + link_accounts: Lier les comptes + no_accounts_found: Aucun compte Up non lié n'a été trouvé. + no_credentials_configured: Configurez d'abord Up dans les paramètres des fournisseurs. + title: Lier les comptes Up + select_existing_account: + account_already_linked: Ce compte est déjà lié à un fournisseur. + cancel: Annuler + description: Choisissez un compte Up non lié pour le connecter à ce compte. + link_account: Lier le compte + no_accounts_found: Aucun compte Up non lié n'a été trouvé. + no_credentials_configured: Configurez d'abord Up dans les paramètres des fournisseurs. + title: Lier le compte Up à %{account_name} + setup_accounts: + account_type_label: Type de compte + account_types: + depository: Trésorerie + loan: Emprunt + skip: Ignorer + all_accounts_linked: Tous les comptes Up sont déjà liés. + api_error: Impossible de récupérer les comptes Up. + cancel: Annuler + choose_account_type: Choisissez un type de compte + choose_account_type_description: Ignorez les comptes que vous ne souhaitez pas suivre. + create_accounts: Créer les comptes + fetch_failed: Impossible de récupérer les comptes + no_accounts_to_setup: Aucun compte à configurer + no_credentials: Configurez d'abord les identifiants Up. + subtitle: Choisissez comment chaque compte Up doit apparaître dans Sure. + title: Lier les comptes Up + up_item: + delete: Supprimer + deletion_in_progress: Suppression en cours + error: Erreur + no_accounts_description: Récupérez les comptes Up et choisissez ceux à lier. + no_accounts_title: Aucun compte importé pour l'instant + setup_action: Configurer les comptes + setup_description: "%{linked} sur %{total} comptes liés." + setup_needed: Configuration requise + status_never: Jamais synchronisé + status_with_summary: Synchronisé il y a %{timestamp} · %{summary} + syncing: Synchronisation + update: + success: Connexion Up mise à jour. diff --git a/config/locales/views/users/fr.yml b/config/locales/views/users/fr.yml index f411a4869..15ef8b2c9 100644 --- a/config/locales/views/users/fr.yml +++ b/config/locales/views/users/fr.yml @@ -3,15 +3,31 @@ fr: users: destroy: success: Votre compte a été supprimé. - update: - email_change_failed: Échec du changement d'adresse e-mail. - email_change_initiated: Veuillez vérifier votre nouvelle adresse e-mail pour les instructions de confirmation. - success: Votre profil a été mis à jour. resend_confirmation_email: + no_pending_change: Aucun changement d'adresse e-mail n'est actuellement en attente + ! success: Un nouvel e-mail de confirmation est en file d'attente pour être envoyé. - no_pending_change: Aucun changement d'adresse e-mail n'est actuellement en attente ! reset: - success: Votre compte a été réinitialisé. Les données seront supprimées en arrière-plan dans un certain temps. + success: Votre compte a été réinitialisé. Les données seront supprimées en arrière-plan + dans un certain temps. unauthorized: Vous n'êtes pas autorisé à effectuer cette action. reset_with_sample_data: - success: Votre compte a été réinitialisé et les données d'exemple sont en cours de préparation. Vous verrez les données de démonstration sous peu. + success: Votre compte a été réinitialisé et les données d'exemple sont en cours + de préparation. Vous verrez les données de démonstration sous peu. + roles: + admin: Administrateur + member: Membre + super_admin: Super administrateur + update: + email_change_failed: Échec du changement d'adresse e-mail. + email_change_initiated: Veuillez vérifier votre nouvelle adresse e-mail pour + les instructions de confirmation. + success: Votre profil a été mis à jour. + user_menu: + aria_label: Menu Ouvrir un compte + changelog: Journal des modifications + contact: Contacter + feedback: Commentaires + log_out: Se déconnecter + settings: Paramètres + version: Version diff --git a/config/locales/views/valuations/fr.yml b/config/locales/views/valuations/fr.yml index ccd22d4af..4e62801e9 100644 --- a/config/locales/views/valuations/fr.yml +++ b/config/locales/views/valuations/fr.yml @@ -1,6 +1,31 @@ --- fr: valuations: + confirmation_contents: + account_balance: solde du compte + asset_value: valeur de l'actif + balance: équilibre + brokerage_cash: Trésorerie de courtage + change: changement + credit_card_balance: solde de la carte de crédit + crypto_balance: solde cryptographique + holdings_value: Valeur des holdings + liability_balance: solde du passif + loan_balance: solde du prêt + 'on': sur + property_value: valeur de la propriété + recalculate_notice: Toutes les transactions et soldes futurs seront recalculés + sur la base de ce %{change_or_update}. + this_will: Cela %{action_verb} la valeur du compte sur + to: à + to_colon: 'à:' + total_account_value: Valeur totale du compte + update: mise à jour + vehicle_value: valeur du véhicule + create: + account_updated: Compte mis à jour + errors: + amount_required: Le montant est requis form: amount: Montant submit: Ajouter une mise à jour du solde @@ -17,6 +42,7 @@ fr: title: Nouveau solde show: amount: Montant + amount_label: Valeur du compte à ce jour date_label: Date delete: Supprimer delete_subtitle: Cette action ne peut pas être annulée @@ -26,6 +52,10 @@ fr: name_placeholder: Entrez un nom pour cette entrée note_label: Notes note_placeholder: Ajoutez tout détail supplémentaire à ce bilan + opening_balance: Solde d'ouverture overview: Aperçu settings: Paramètres - opening_balance: Solde d'ouverture + update_value: Mettre à jour la valeur + update: + account_updated: Compte mis à jour + entry_updated: Entrée mise à jour diff --git a/config/locales/views/vehicles/fr.yml b/config/locales/views/vehicles/fr.yml index 5d99e2809..e44c11b9a 100644 --- a/config/locales/views/vehicles/fr.yml +++ b/config/locales/views/vehicles/fr.yml @@ -23,3 +23,13 @@ fr: trend: Tendance unknown: Inconnu year: Année + tabs: + overview: + current_price: Prix actuel + edit_account_details: Modifier les détails du compte + make_model: Marque et modèle + mileage: Kilométrage + purchase_price: Prix d'achat + trend: Tendance + unknown: Inconnu + year: Année diff --git a/docs/hosting/docker.md b/docs/hosting/docker.md index 575ef7db5..1b337d36c 100644 --- a/docs/hosting/docker.md +++ b/docs/hosting/docker.md @@ -180,6 +180,16 @@ The first time you run the app, you will need to register a new account by hitti 1. Enter your email 2. Enter a password +### Step 5a: Restrict future signups (optional) + +After creating your initial admin account, you can control how other people join your self-hosted instance from **Settings > Self-Hosting > Onboarding**. + +- **Open**: Anyone can create an account from the registration page. +- **Invite-only**: New account creation stays enabled, but signups require a valid invite code. +- **Closed**: The registration page is disabled for new signups. + +If you do not want additional self-service registrations, switch the instance to **Closed** after the initial setup. + ### Step 6: Run the app in the background Most self-hosting users will want the Sure app to run in the background on their computer so they can access it at all times. To do this, hit `Ctrl+C` to stop the running process, and then run the following command: diff --git a/docs/hosting/hetzner.md b/docs/hosting/hetzner.md index b9693d635..c75ab76e5 100644 --- a/docs/hosting/hetzner.md +++ b/docs/hosting/hetzner.md @@ -176,6 +176,16 @@ Now you can: 2. **Create your admin account**: Click "Create your account" on the login page 3. **Set up your first family**: Follow the onboarding process +### Optional: Disable self-service registration + +Once your initial admin account is ready, open **Settings > Self-Hosting > Onboarding** to choose how signups should work: + +- **Open**: Anyone can register. +- **Invite-only**: New signups require a valid invite code. +- **Closed**: New signups from the registration page are blocked. + +For single-admin or tightly controlled deployments, set the onboarding mode to **Closed** after the initial setup. + ## Step 7: Set Up Automated Backups Create a backup script to protect your data: diff --git a/test/models/investment_statement_test.rb b/test/models/investment_statement_test.rb index 12c34e10f..d8260a421 100644 --- a/test/models/investment_statement_test.rb +++ b/test/models/investment_statement_test.rb @@ -235,7 +235,9 @@ class InvestmentStatementTest < ActiveSupport::TestCase end test "totals aggregate directly from trade entries" do - period = Period.custom(start_date: Date.current.beginning_of_month, end_date: Date.current) + # Use the full current month: a month-to-date period collapses to a single + # day on the 1st, which would drop the start_date + 1.day trade below. + period = Period.custom(start_date: Date.current.beginning_of_month, end_date: Date.current.end_of_month) shared_user = users(:new_email) investment_account = create_investment_account(balance: 500) hidden_account = create_investment_account(balance: 500)