Complete French translations for views, models, and settings (#1501)

* i18n(fr): complete provider_sync_summary translations

Add 13 missing French translations under provider_sync_summary in
config/locales/views/components/fr.yml to bring it to parity with en.yml.

Covers: transactions.fetching/protected/view_protected, full skip_reasons
section, full trades section (investment activities), and
health.view_error_details.

* chore(i18n): fix i18n-tasks scanner config

Add app/components to i18n-tasks relative_roots so component .erb files
using t(".relative_key") are correctly resolved by the scanner. Without
this, the scanner crashed on any component using relative i18n keys.

* i18n(fr): complete high-impact view translations

Bring full FR parity to the 5 most-visited user-facing screens:
- accounts (+25 keys)
- transactions (+168)
- holdings (+53)
- settings (+81)
- reports (+20)

Vocabulary aligned with docs/i18n/fr-glossary.md (Holding → Avoir,
Trade → Transaction boursière, Brokerage → Courtier, Posted → Validée,
Merchant → Commerçant, Net worth → Patrimoine net, etc.).

* i18n(fr): complete remaining incomplete view translations

Bring full FR parity to 23 partially-translated view locale files:

Mid-size (8-68 keys each): investments, pages, merchants, imports,
coinstats_items, sessions, cryptos, rules, transfers, trades,
invitations, entries, onboardings, simplefin_items.

Small (1-4 keys each): plaid_items, recurring_transactions, users,
password_resets, other_assets, loans, shared, registrations,
oidc_accounts.

Total: ~430 new FR keys. Existing FR translations preserved where
already in place; only missing keys were added.

Note: shared/fr.yml retains a `breadcrumbs:` block not present in EN
(used by FR breadcrumb controllers — removing would regress).

* i18n(fr): complete nested admin & settings translations

Cover the nested view subdirectories missed by the top-level scan:
- defaults/fr.yml (+3 custom keys: global.expand,
  helpers.select.default_label, helpers.select.search_placeholder)
- admin/sso_providers (+2 keys: role_guest, guest_groups)
- admin/users (+25 keys: section title, family/role/trial filters,
  table columns, summary, role descriptions, invitations)
- settings/api_keys (+1 key + structural fix: no_api_key and
  current_api_key were nested incorrectly, now match en.yml)
- settings/hostings (+93 keys: assistant_settings, provider_selection,
  tiingo/eodhd/alpha_vantage/openai blocks, twelve_data plan upgrade)

* i18n(fr): add fr.yml for 11 previously untranslated views

Create French locale files for all view directories that had no fr.yml:

Core features (6 files, 112 keys):
- account_sharings, budgets, splits, pdf_import_mailer (view scope),
  pending_duplicate_merges, securities

Provider integrations (5 files, 575 keys):
- binance_items (Binance crypto exchange)
- coinbase_items (Coinbase crypto exchange)
- indexa_capital_items (Indexa Capital robo-advisor)
- mercury_items (Mercury business banking)
- snaptrade_items (SnapTrade broker aggregator)

Provider names kept in English. Domain vocabulary follows
docs/i18n/fr-glossary.md (Reconnect → Reconnecter, Refresh →
Actualiser, Wallet → Portefeuille, Cost basis → Coût d'acquisition,
Canadian retirement accounts mapped to official FR-CA acronyms
RRSP→REER, TFSA→CELI, RRIF→FERR).

* i18n(fr): add models, mailer, breadcrumb & Doorkeeper translations

Create French locale files for the remaining non-view scopes:

- models/coinbase_account/fr.yml (1 key)
- models/transaction/fr.yml (3 keys)
- mailers/pdf_import_mailer/fr.yml (1 key)
- breadcrumbs/fr.yml (5 root-level breadcrumb labels)
- doorkeeper.fr.yml (89 keys: full OAuth2 UI translation
  modeled on the doorkeeper-i18n FR conventions; PKCE/scope/
  Client Credentials kept in English as proper grant names;
  date_format adjusted to %d/%m/%Y %H:%M:%S)

* i18n(fr): use "Inscription des utilisateurs" for invite_codes onboarding

In the invite_codes settings section, EN "Onboarding" was translated as
"Intégration" — wrong context. The page controls how new people sign up
to the instance, so "Inscription des utilisateurs" is the natural
French term for this UX flow.

* i18n(fr): use "Marchand" consistently for Merchant

Aligns transactions/, settings/, and settings/hostings/ with the FR
fintech convention (Lydia, Revolut FR, Boursorama, N26 FR all use
"Marchand"). Earlier waves had introduced "Commerçant" via a glossary
choice that turned out to imply a small physical retailer rather than
a generic transaction payee.

Net effect: a single consistent term across all FR screens.

* i18n(fr): address CodeRabbit review feedback

Fixes 9 of 17 actionable items from the CodeRabbit review:

- Remove duplicate breadcrumbs block from shared/fr.yml (item 2)
- Standardize "Indexa Capital" naming throughout (item 6)
- Pluralize merchants.perform_merge.success in EN+FR (item 7)
- Add rel="noopener noreferrer" to Coinbase + Binance external links
  in EN+FR settings (item 9, security)
- Replace "rappeler" with "invoquer" for MCP tool calling (item 10)
- Localize Doorkeeper "Single Page Apps" + grant names with FR-first
  phrasing (item 12)
- Reorder twelve_data_settings to put title first (item 14)
- Enrich IRA/SEP/SIMPLE/ISA/LISA/SIPP long labels with FR expansion
  + acronym in parens (item 15)
- Use "Transfert" (not "Virement") for investment activity_labels.transfer
  to disambiguate from banking transfers (item 16)

Items deferred (require non-FR code changes or are pre-existing EN bugs):
1, 3, 4, 5, 8, 11, 13.

* i18n(fr): address second-wave CodeRabbit review feedback

- transactions: fix gender agreement on one_time_title
  ("%{type} ponctuel" → "Transaction ponctuelle (%{type})") so that
  "Dépense" no longer renders as "Dépense ponctuel"
- transactions: fix bare-noun-modifier in rule_description_prefix
  ("Les futures transactions %{type}…" → "…de type %{type}…")
- settings/hostings: clarify email_confirmation_description
  ("lors du changement" → "lorsqu'ils la modifient")
- settings/hostings: fix dangling "Utilisé de préférence" in EODHD
  and Alpha Vantage rate_limit_warning ("À utiliser de préférence")
This commit is contained in:
Nicolas
2026-04-19 00:18:40 +02:00
committed by GitHub
parent 0a96bf199d
commit c962b1f420
53 changed files with 2214 additions and 189 deletions

View File

@@ -11,6 +11,7 @@ search:
paths:
- app/
relative_roots:
- app/components
- app/controllers
- app/controllers/concerns
- app/helpers

View File

@@ -0,0 +1,8 @@
---
fr:
breadcrumbs:
categorize: Catégoriser
exports: Exports
home: Accueil
imports: Imports
transactions: Transactions

View File

@@ -152,9 +152,13 @@ fr:
header:
one: 'Impossible d''enregistrer ce(tte) %{model} : %{count} erreur'
other: 'Impossible d''enregistrer ce(tte) %{model} : %{count} erreurs'
global:
expand: Développer
helpers:
select:
prompt: Veuillez sélectionner
default_label: Sélectionner…
search_placeholder: Rechercher
submit:
create: Créer un(e) %{model}
submit: Enregistrer ce(tte) %{model}

View File

@@ -0,0 +1,156 @@
---
fr:
activerecord:
attributes:
doorkeeper/application:
name: 'Nom'
redirect_uri: 'URI de redirection'
errors:
models:
doorkeeper/application:
attributes:
redirect_uri:
fragment_present: 'ne peut pas contenir de fragment.'
invalid_uri: 'doit être une URI valide.'
unspecified_scheme: 'doit spécifier un schéma.'
relative_uri: 'doit être une URI absolue.'
secured_uri: 'doit être une URI HTTPS/SSL.'
forbidden_uri: 'est interdit par le serveur.'
scopes:
not_match_configured: "ne correspond pas à ceux configurés sur le serveur."
doorkeeper:
applications:
confirmations:
destroy: 'Êtes-vous sûr ?'
buttons:
edit: 'Modifier'
destroy: 'Supprimer'
submit: 'Envoyer'
cancel: 'Annuler'
authorize: 'Autoriser'
form:
error: 'Oups ! Vérifiez votre formulaire pour d''éventuelles erreurs'
help:
confidential: 'L''application sera utilisée dans un contexte où le client secret peut être gardé confidentiel. Les applications mobiles natives et les applications monopage (SPA) sont considérées comme non confidentielles.'
redirect_uri: 'Utilisez une ligne par URI'
blank_redirect_uri: "Laissez vide si vous avez configuré votre fournisseur pour utiliser les identifiants client (Client Credentials), le mot de passe du propriétaire de la ressource (Resource Owner Password Credentials) ou tout autre type d'octroi qui ne nécessite pas d'URI de redirection."
scopes: 'Séparez les scopes par des espaces. Laissez vide pour utiliser les scopes par défaut.'
edit:
title: 'Modifier l''application'
index:
title: 'Vos applications'
new: 'Nouvelle application'
name: 'Nom'
callback_url: 'URL de rappel'
confidential: 'Confidentielle ?'
actions: 'Actions'
confidentiality:
'yes': 'Oui'
'no': 'Non'
new:
title: 'Nouvelle application'
show:
title: 'Application : %{name}'
application_id: 'UID'
secret: 'Secret'
secret_hashed: 'Secret haché'
scopes: 'Scopes'
confidential: 'Confidentielle'
callback_urls: 'URL de rappel'
actions: 'Actions'
not_defined: 'Non défini'
authorizations:
buttons:
authorize: 'Autoriser'
deny: 'Refuser'
error:
title: 'Une erreur s''est produite'
new:
title: 'Autorisation requise'
prompt: 'Autoriser %{client_name} à utiliser votre compte ?'
able_to: 'Cette application pourra'
show:
title: 'Code d''autorisation'
form_post:
title: 'Envoyer ce formulaire'
authorized_applications:
confirmations:
revoke: 'Êtes-vous sûr ?'
buttons:
revoke: 'Révoquer'
index:
title: 'Vos applications autorisées'
application: 'Application'
created_at: 'Créée le'
date_format: '%d/%m/%Y %H:%M:%S'
pre_authorization:
status: 'Pré-autorisation'
errors:
messages:
# Common error messages
invalid_request:
unknown: 'La requête ne comporte pas un paramètre obligatoire, inclut une valeur de paramètre non prise en charge ou est malformée d''une autre manière.'
missing_param: 'Paramètre obligatoire manquant : %{value}.'
request_not_authorized: 'La requête doit être autorisée. Le paramètre obligatoire pour autoriser la requête est manquant ou invalide.'
invalid_code_challenge: 'Le code challenge est obligatoire.'
invalid_redirect_uri: "L'URI de redirection demandée est malformée ou ne correspond pas à l'URI de redirection du client."
unauthorized_client: 'Le client n''est pas autorisé à effectuer cette requête avec cette méthode.'
access_denied: 'Le propriétaire de la ressource ou le serveur d''autorisation a refusé la requête.'
invalid_scope: 'Le scope demandé est invalide, inconnu ou malformé.'
invalid_code_challenge_method:
zero: 'Le serveur d''autorisation ne prend pas en charge PKCE car aucune valeur de code_challenge_method n''est acceptée.'
one: 'Le code_challenge_method doit être %{challenge_methods}.'
other: 'Le code_challenge_method doit être l''un des suivants : %{challenge_methods}.'
server_error: 'Le serveur d''autorisation a rencontré une condition inattendue qui l''a empêché de traiter la requête.'
temporarily_unavailable: 'Le serveur d''autorisation est actuellement incapable de traiter la requête en raison d''une surcharge temporaire ou d''une maintenance du serveur.'
# Configuration error messages
credential_flow_not_configured: 'Le flux Resource Owner Password Credentials a échoué car Doorkeeper.configure.resource_owner_from_credentials n''est pas configuré.'
resource_owner_authenticator_not_configured: 'La recherche de Resource Owner a échoué car Doorkeeper.configure.resource_owner_authenticator n''est pas configuré.'
admin_authenticator_not_configured: 'L''accès au panneau d''administration est interdit car Doorkeeper.configure.admin_authenticator n''est pas configuré.'
# Access grant errors
unsupported_response_type: 'Le serveur d''autorisation ne prend pas en charge ce type de réponse.'
unsupported_response_mode: 'Le serveur d''autorisation ne prend pas en charge ce mode de réponse.'
# Access token errors
invalid_client: 'L''authentification du client a échoué en raison d''un client inconnu, d''une authentification client manquante ou d''une méthode d''authentification non prise en charge.'
invalid_grant: 'L''octroi d''autorisation fourni est invalide, expiré, révoqué, ne correspond pas à l''URI de redirection utilisée dans la requête d''autorisation, ou a été émis pour un autre client.'
unsupported_grant_type: 'Le type d''octroi d''autorisation n''est pas pris en charge par le serveur d''autorisation.'
invalid_token:
revoked: "Le jeton d'accès a été révoqué"
expired: "Le jeton d'accès a expiré"
unknown: "Le jeton d'accès est invalide"
revoke:
unauthorized: "Vous n'êtes pas autorisé à révoquer ce jeton"
forbidden_token:
missing_scope: 'L''accès à cette ressource requiert le scope "%{oauth_scopes}".'
flash:
applications:
create:
notice: 'Application créée.'
destroy:
notice: 'Application supprimée.'
update:
notice: 'Application mise à jour.'
authorized_applications:
destroy:
notice: 'Application révoquée.'
layouts:
admin:
title: 'Doorkeeper'
nav:
oauth2_provider: 'Fournisseur OAuth2'
applications: 'Applications'
home: 'Accueil'
application:
title: 'Autorisation OAuth requise'

View File

@@ -0,0 +1,5 @@
---
fr:
pdf_import_mailer:
next_steps:
subject: "Votre document PDF a été analysé - %{product_name}"

View File

@@ -0,0 +1,5 @@
---
fr:
coinbase:
processor:
paid_via: "Payé via %{method}"

View File

@@ -0,0 +1,11 @@
---
fr:
activerecord:
errors:
models:
transaction:
attributes:
attachments:
too_many: "ne peut pas dépasser %{max} fichiers par transaction"
too_large: "le fichier %{index} est trop volumineux (maximum %{max_mb} Mo)"
invalid_format: "le fichier %{index} a un format non pris en charge (%{file_format})"

View File

@@ -0,0 +1,29 @@
---
fr:
account_sharings:
show:
title: Partage de compte
subtitle: Contrôlez qui peut voir ce compte et interagir avec lui
member: Membre
permission: Permission
shared: Partagé
no_members: Aucun autre membre dans votre %{moniker} avec qui partager
permissions:
full_control: Contrôle total
full_control_description: Peut voir, modifier et gérer les transactions
read_write: Peut annoter
read_write_description: Peut catégoriser, étiqueter et ajouter des notes
read_only: Lecture seule
read_only_description: Peut uniquement voir les données du compte
save: Enregistrer les paramètres de partage
owner_label: "Propriétaire : %{name}"
shared_with_count:
one: Partagé avec 1 membre
other: "Partagé avec %{count} membres"
include_in_finances: Inclure dans mes budgets et rapports
exclude_from_finances: Exclure de mes budgets et rapports
finance_toggle_description: Compter ce compte dans votre patrimoine net, vos budgets et vos rapports
update:
success: Paramètres de partage mis à jour
not_owner: Seul le propriétaire du compte peut gérer le partage
finance_toggle_success: Préférence d'inclusion financière mise à jour

View File

@@ -1,11 +1,13 @@
---
fr:
accounts:
not_authorized: "Vous n'avez pas la permission de gérer ce compte"
account:
edit: Modifier
link_lunchflow: Lier avec Lunch Flow
link_provider: Lier avec un fournisseur
unlink_provider: Délier du fournisseur
change_simplefin_account: Changer le compte SimpleFIN
troubleshoot: Dépannage
enable: Activer le compte
disable: Désactiver le compte
@@ -13,6 +15,7 @@ fr:
remove_default: Retirer par défaut
default_label: Par défaut
delete: Supprimer le compte
sharing: Partage
chart:
data_not_available: Données non disponibles pour la période sélectionnée
create:
@@ -22,12 +25,14 @@ fr:
destroy:
success: "Le compte %{type} a été préparé à la suppression"
cannot_delete_linked: "Impossible de supprimer un compte lié. Veuillez d'abord le délier."
failed: "La suppression de la ressource a échoué. Veuillez réessayer plus tard."
empty:
empty_message: Ajoutez un compte via une connexion, une importation ou en entrant manuellement.
new_account: Nouveau compte
no_accounts: Aucun compte pour l'instant
form:
balance: Solde actuel
balance: "Solde à la date :"
opening_balance_date_label: Date du solde d'ouverture
name_label: Nom du compte
name_placeholder: Nom de compte d'exemple
additional_details: Détails supplémentaires
@@ -44,7 +49,7 @@ fr:
new_account: Nouveau compte
sync: Tout synchroniser
sync_all:
syncing: "Synchronisation des comptes..."
syncing: "Synchronisation des comptes"
new:
import_accounts: Importer des comptes
method_selector:
@@ -56,6 +61,7 @@ fr:
title: Comment voulez-vous l'ajouter ?
title: Que voulez-vous ajouter ?
show:
limited_fx_history_warning: "L'historique des taux de change n'est disponible qu'à partir du %{date}. Les transactions antérieures à cette date utilisent des conversions de devises approximatives — cela peut se produire lorsque le fournisseur FX n'offre qu'une fenêtre historique limitée."
activity:
amount: Montant
balance: Solde
@@ -65,8 +71,11 @@ fr:
entry: entrée
filter: Filtrer
new: Nouveau
new_activity: Nouvelle activité
new_balance: Nouveau solde
new_trade: Nouvelle transaction boursière
new_transaction: Nouvelle transaction
new_transfer: Nouveau virement
no_entries: Aucune entrée trouvée
pending: En attente
search:
@@ -83,6 +92,8 @@ fr:
confirm_title: Supprimer le compte ?
edit: Modifier
import: Importer des transactions
import_trades: Importer des transactions boursières
import_transactions: Importer des transactions
manage: Gérer les comptes
update:
success: "Compte %{type} mis à jour"
@@ -102,12 +113,29 @@ fr:
depository: Liquidités
investment: Investissement
crypto: Crypto
property: Propriété
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
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 <strong>%{account_name}</strong> de <strong>%{provider_name}</strong>. Cela le convertira en compte manuel."

View File

@@ -76,6 +76,7 @@ fr:
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"
@@ -83,6 +84,7 @@ fr:
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"

View File

@@ -5,20 +5,49 @@ fr:
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: "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"
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."
invitations:
pending_label: "Invité (en attente)"
expires: "Expire le %{date}"
delete: "Supprimer"
delete_all: "Tout supprimer"
update:
success: "Rôle de l'utilisateur mis à jour avec succès."
failure: "Échec de la mise à jour du rôle de l'utilisateur."

View File

@@ -0,0 +1,75 @@
---
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…

View File

@@ -0,0 +1,33 @@
---
fr:
budgets:
name:
custom_range: "%{start} - %{end_date}"
month_year: "%{month}"
show:
categories:
amount: Montant
edit: Modifier
title: Catégories
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é"

View File

@@ -0,0 +1,78 @@
---
fr:
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
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
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…

View File

@@ -17,17 +17,31 @@ fr:
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: Lier le portefeuille crypto
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, vous devez d'abord configurer la connexion au fournisseur CoinStats.
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 <strong>Paramètres → Fournisseurs</strong>
not_configured_step2_html: Localisez le fournisseur <strong>CoinStats</strong>
not_configured_step3_html: Suivez les <strong>instructions de configuration</strong> fournies pour terminer la configuration du fournisseur

View File

@@ -15,12 +15,28 @@ fr:
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…"
health:
title: Santé
view_error_details: Voir les détails de l'erreur
rate_limited: "Limité %{time_ago}"
recently: récemment
errors: "Erreurs : %{count}"

View File

@@ -3,5 +3,18 @@ fr:
cryptos:
edit:
edit: Éditer %{account}
form:
subtype_label: Type de compte
subtype_prompt: Sélectionner un type de compte
subtype_none: Aucun
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

View File

@@ -12,3 +12,12 @@ fr:
loading: Chargement des entrées...
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.

View File

@@ -4,36 +4,97 @@ fr:
cash:
brokerage_cash: Liquidités de courtage
destroy:
success: Position supprimée
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
overwrite_confirm_title: Écraser le coût de revient ?
overwrite_confirm_body: "Cela remplacera le coût de revient actuel de %{current}."
holding:
per_share: par action
shares: "%{qty} actions"
unknown: "--"
no_cost_basis: Aucun coût de revient
index:
average_cost: Coût moyen
holdings: Positions
holdings: Avoirs
name: Nom
new_holding: Nouvelle position
no_holdings: Aucune position à afficher.
new_holding: Nouvelle activité
no_holdings: Aucun avoir à afficher.
return: Rendement total
weight: Poids
missing_price_tooltip:
description: Cet investissement a des valeurs manquantes et nous ne pouvons pas calculer
son retour ou sa valeur.
son rendement ou sa valeur.
missing_data: Données manquantes
show:
avg_cost_label: Coût moyen
current_market_price_label: Prix de marché actuel
delete: Supprimer
delete_subtitle: Cela supprimera la position et toutes vos opérations associées sur ce compte. Cette action ne peut pas être annulée.
delete_title: Supprimer la position
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
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
unknown: Inconnu
market_data_label: Données de marché
market_data_sync_button: Actualiser
last_price_update: Dernière mise à jour du cours
syncing: Synchronisation…
never: Jamais

View File

@@ -19,12 +19,12 @@ fr:
txn_count:
one: "1 opération"
other: "%{count} opérations"
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
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:
description: Modifiez vos données dans le tableau ci-dessous. Les cellules rouges sont invalides.
@@ -111,6 +111,17 @@ fr:
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
@@ -120,7 +131,6 @@ fr:
select: Sélectionner
index:
title: Importations
imports: Imports
new: Nouvelle importation
table:
title: Imports
@@ -130,6 +140,17 @@ fr:
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
@@ -144,7 +165,11 @@ fr:
view: Afficher
empty: Aucune importation pour l'instant.
new:
description: Vous pouvez manuellement importer divers types de données via CSV ou utiliser un des modèles d'importation que nous proposons comme Mint.
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
coming_soon: Bientôt disponible
import_ynab: Importer depuis YNAB
import_accounts: Importer les comptes
import_categories: Importer les catégories
import_mint: Importer depuis Mint
@@ -152,16 +177,19 @@ fr:
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 PDFs et téléversement avec recherche pour les autres fichiers pris en charge
import_file_description: Analyse par IA pour les PDF et téléversement de fichiers avec recherche
requires_account: Importez d'abord des comptes pour débloquer cette option.
resume: Reprendre %{type}
sources: Sources
title: Nouvelle importation CSV
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.
@@ -169,10 +197,19 @@ fr:
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.
ready:
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:
@@ -202,11 +239,3 @@ fr:
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}"
ready:
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

View File

@@ -0,0 +1,254 @@
---
fr:
indexa_capital_items:
# Model method strings (i18n for item_model.rb)
sync_status:
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"
status_configured_html: "Configuré et prêt à l'emploi. Rendez-vous sur l'onglet <a href=\"%{accounts_path}\" class=\"link\">Comptes</a> pour gérer et configurer les comptes."
status_not_configured: "Non configuré"
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."

View File

@@ -10,6 +10,115 @@ fr:
title: Saisir le solde du compte
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)
403b:
short: 403(b)
long: 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)
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
angel:
short: Business angel
long: Investissement providentiel
trust:
short: Fiducie
long: Fiducie
other:
short: Autre
long: Autre investissement
value_tooltip:
cash: Liquidités
holdings: Titres

View File

@@ -1,7 +1,14 @@
---
fr:
invitations:
accept_choice:
create_account: Créer un nouveau compte
joined_household: Vous avez rejoint le foyer.
message: "%{inviter} vous a invité(e) à rejoindre en tant que %{role}."
sign_in_existing: J'ai déjà un compte
title: Rejoindre %{family}
create:
existing_user_added: L'utilisateur a été ajouté à votre foyer.
failure: Impossible d'envoyer l'invitation
success: Invitation envoyée avec succès
destroy:
@@ -12,8 +19,9 @@ fr:
email_label: Adresse e-mail
email_placeholder: Saisissez une adresse e-mail
role_admin: Administrateur
role_guest: Invité
role_label: Rôle
role_member: Membre
submit: Envoyer l'invitation
subtitle: Envoyez une invitation pour rejoindre votre compte familial sur %{product_name}
subtitle: Envoyez une invitation pour rejoindre votre compte %{moniker} sur %{product_name}
title: Inviter quelqu'un

View File

@@ -10,6 +10,8 @@ fr:
rate_type: Type de taux
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:

View File

@@ -52,7 +52,9 @@ en:
new:
title: New merchant
perform_merge:
success: Successfully merged %{count} merchants
success:
one: Successfully merged %{count} merchant
other: Successfully merged %{count} merchants
no_merchants_selected: No merchants selected to merge
target_not_found: Target merchant not found
invalid_merchants: Invalid merchants selected

View File

@@ -6,14 +6,34 @@ fr:
success: Marchand créé avec succès
destroy:
success: Marchand supprimé avec succès
unlinked_success: Marchand retiré de vos transactions
edit:
title: Modifier le marchand
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
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_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.
table:
merchant: Marchand
actions: Actions
source: Source
merchant:
confirm_accept: Supprimer le marchand
confirm_body: Êtes-vous sûr de vouloir supprimer ce marchand ? La suppression de ce marchand
@@ -21,7 +41,31 @@ fr:
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.
submit: Fusionner la sélection
new:
title: Nouveau marchand
perform_merge:
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.
update:
success: Marchand mis à jour avec succès
converted_success: Marchand converti et mis à jour avec succès

View File

@@ -0,0 +1,147 @@
---
fr:
mercury_items:
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}"
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_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}"
success:
one: "%{count} compte lié avec succès"
other: "%{count} comptes liés avec succès"
mercury_item:
accounts_need_setup: Des 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 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_needed: Nouveaux comptes prêts à être configuré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: Non lié
select_accounts:
accounts_selected: comptes sélectionnés
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}.
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_name_placeholder: "(Sans nom)"
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}"
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.
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_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"
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_types:
skip: Ignorer ce compte
depository: Compte courant ou épargne
credit_card: Carte de crédit
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
balance: Solde
cancel: Annuler
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 :"
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 :"
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."
sync:
success: Synchronisation démarrée
update:
success: Connexion Mercury mise à jour

View File

@@ -18,6 +18,7 @@ fr:
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
new_user:
@@ -30,4 +31,4 @@ fr:
last_name_label: Nom de famille
last_name_placeholder: Saisissez votre nom de famille
submit: Créer un compte
cancel: Annuler
cancel: Annuler

View File

@@ -16,8 +16,13 @@ fr:
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
submit: Continuer
preferences:
@@ -58,4 +63,4 @@ fr:
in_40_days: Dans 40 jours (%{date})
in_40_days_description: Nous vous notifierons pour vous rappeler d'exporter vos données.
in_45_days: Dans 45 jours (%{date})
in_45_days_description: Nous supprimons vos données — contribuez pour continuer à utiliser Sure ici !
in_45_days_description: Nous supprimons vos données — contribuez pour continuer à utiliser Sure ici !

View File

@@ -3,5 +3,7 @@ fr:
other_assets:
edit:
edit: Modifier %{account}
balance_tracking_info: "Les autres actifs sont suivis via des valorisations manuelles à l'aide de 'Nouveau solde', et non via des transactions. Les flux de trésorerie n'affecteront pas le solde du compte."
new:
title: Saisir les détails de l'actif
balance_tracking_info: "Les autres actifs sont suivis via des valorisations manuelles à l'aide de 'Nouveau solde', et non via des transactions. Les flux de trésorerie n'affecteront pas le solde du compte."

View File

@@ -3,23 +3,56 @@ fr:
pages:
changelog:
title: Nouveautés
privacy:
title: Politique de confidentialité
heading: Politique de confidentialité
placeholder: Le contenu de la politique de confidentialité sera affiché ici.
terms:
title: Conditions d'utilisation
heading: Conditions d'utilisation
placeholder: Le contenu des conditions d'utilisation sera affiché ici.
dashboard:
welcome_back: Content de vous revoir
happening_with_finance: Voici ce qui se passe avec vos finances
new: Nouveau
cashflow:
title: Flux de trésorerie
no_cashflow: Aucune donnée de flux de trésorerie pour cette période
add_transactions_to_display_cashflow: Ajoutez des transactions pour afficher les données de flux de trésorerie ou étendre la période
new: Ajouter une transaction
welcome: "Content de vous revoir, %{name}"
subtitle: "Voici ce qui se passe avec vos finances"
new: "Nouveau"
drag_to_reorder: "Glisser pour réorganiser la section"
toggle_section: "Afficher/masquer la section"
net_worth_chart:
data_not_available: Données indisponibles pour la période sélectionnée
title: Valeur nette
title: Patrimoine net
no_account_empty_state:
new_account: Nouveau compte
no_account_subtitle: Comme aucun compte n'a été ajouté, il n'y a pas de données à afficher. Ajoutez vos premiers comptes pour commencer à consulter les données du tableau de bord.
no_account_title: Pas encore de comptes
no_account_graph_placeholder:
no_account_yet: Pas encore de compte
add_account_to_display: Ajouter des comptes pour afficher les données de valeur nette
new: Ajouter un compte
balance_sheet:
title: "Bilan"
no_items: "Aucun %{name} pour l'instant"
add_accounts: "Ajoutez vos comptes %{name} pour voir une ventilation compte"
cashflow_sankey:
title: "Flux de trésorerie"
no_data_title: "Aucune donnée de flux de trésorerie pour cette période"
no_data_description: "Ajoutez des transactions pour afficher les données de flux de trésorerie ou étendez la période"
add_transaction: "Ajouter une transaction"
no_accounts:
title: "Pas encore de comptes"
description: "Ajoutez des comptes pour afficher les données de patrimoine net"
add_account: "Ajouter un compte"
outflows_donut:
title: "Sorties"
total_outflows: "Total des sorties"
categories: "Catégories"
value: "Valeur"
weight: "Poids"
investment_summary:
title: "Investissements"
total_return: "Rendement total"
holding: "Avoir"
weight: "Poids"
value: "Valeur"
return: "Rendement"
period_activity: "Activité %{period}"
contributions: "Apports"
withdrawals: "Retraits"
trades: "Transactions boursières"
no_investments: "Aucun compte d'investissement"
add_investment: "Ajoutez un compte d'investissement pour suivre votre portefeuille"

View File

@@ -1,6 +1,8 @@
---
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.
edit:
title: Réinitialiser votre mot de passe
new:

View File

@@ -0,0 +1,17 @@
---
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_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.
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
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.

View File

@@ -0,0 +1,14 @@
---
fr:
pending_duplicate_merges:
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 →"
no_candidates: Aucune transaction validée trouvée sur ce compte.
submit_button: Fusionner les transactions

View File

@@ -21,3 +21,8 @@ fr:
status_never: Synchronisation de données requise
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
link_account: Lier le compte

View File

@@ -5,7 +5,10 @@ fr:
upcoming: Transactions récurrentes à venir
projected: Projeté
recurring: Récurrent
expected_on: Attendu le %{date}
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

View File

@@ -15,8 +15,9 @@ fr:
success: Vous avez été inscrit avec succès.
new:
invitation_message: "%{inviter} vous a invité à rejoindre en tant que %{role}"
join_family_title: Rejoindre %{family}
join_family_title: Rejoindre %{family} %{moniker}
role_admin: administrateur
role_guest: invité
role_member: membre
submit: Créer un compte
title: Créez votre compte

View File

@@ -34,6 +34,7 @@ fr:
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:
@@ -104,8 +105,8 @@ fr:
income: Revenus
uncategorized: Non catégorisé
entries:
one: entrée
other: entrées
one: "%{count} entrée"
other: "%{count} entrées"
percentage: "% du total"
pagination:
showing:
@@ -114,8 +115,8 @@ fr:
previous: Précédent
next: Suivant
net_worth:
title: Valeur nette
current_net_worth: Valeur nette actuelle
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
@@ -134,6 +135,28 @@ fr:
value: Valeur
return: Rendement
accounts: Comptes d'investissement
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
holdings_count:
one: "%{count} avoir"
other: "%{count} avoirs"
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"
@@ -164,7 +187,7 @@ fr:
of_income: "%{percent}% des revenus"
used: utilisé
net_worth:
title: Valeur nette
title: Patrimoine net
current_balance: Solde actuel
this_period: cette période
assets: Actifs

View File

@@ -38,3 +38,15 @@ fr:
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 à

View File

@@ -0,0 +1,14 @@
---
fr:
securities:
combobox:
display: "%{symbol} - %{name} (%{exchange})"
exchange_label: "%{symbol} (%{exchange})"
providers:
twelve_data: Twelve Data
yahoo_finance: Yahoo Finance
tiingo: Tiingo
eodhd: EODHD
alpha_vantage: Alpha Vantage
mfapi: MFAPI.in
binance_public: Binance

View File

@@ -3,8 +3,19 @@ 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.
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."
new:
email: Adresse e-mail
email_placeholder: nom@exemple.fr
@@ -15,3 +26,8 @@ fr:
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."

View File

@@ -13,39 +13,40 @@ fr:
api_keys:
show:
title: "Gestion des clés API"
no_api_key:
title: "Clé API"
description: "Accédez de manière programmée à vos données %{product_name} 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 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é."
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 Maybe :"
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: "Application de production, Tableau de bord analytique"
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."

View File

@@ -193,7 +193,7 @@ en:
message: Active Record encryption keys are not configured. Please ensure the encryption credentials (active_record_encryption.primary_key, active_record_encryption.deterministic_key, and active_record_encryption.key_derivation_salt) are properly set up in your Rails credentials or environment variables before using sync providers.
coinbase_panel:
setup_instructions: "To connect Coinbase:"
step1_html: Go to <a href="https://portal.cdp.coinbase.com/projects/api-keys" target="_blank" class="text-primary underline">Coinbase API Settings</a>
step1_html: Go to <a href="https://portal.cdp.coinbase.com/projects/api-keys" target="_blank" rel="noopener noreferrer" class="text-primary underline">Coinbase API Settings</a>
step2: Create a new API key with read-only permissions (view accounts, view transactions)
step3: Copy your API key and API secret and paste them below
api_key_label: API Key
@@ -208,7 +208,7 @@ en:
status_not_connected: Not connected. Enter your API credentials above to get started.
binance_panel:
setup_instructions: "To connect Binance, create a read-only API key:"
step1_html: 'Go to <a href="https://www.binance.com/en/my/settings/api-management" target="_blank" class="underline">Binance API Management</a>'
step1_html: 'Go to <a href="https://www.binance.com/en/my/settings/api-management" target="_blank" rel="noopener noreferrer" class="underline">Binance API Management</a>'
step2: "Create a new API key with Enable Reading permission only"
step3: "Paste your API Key and Secret below"
no_withdraw_warning: "Warning: do NOT enable withdrawal permissions"

View File

@@ -4,6 +4,7 @@ fr:
settings:
payments:
renewal: "Votre contribution se poursuit le %{date}."
cancellation: "Votre contribution se termine le %{date}."
settings:
ai_prompts:
show:
@@ -18,13 +19,29 @@ fr:
title: Catégorisation des transactions
subtitle: L'IA catégorise automatiquement vos transactions en fonction de vos catégories définies
merchant_detector:
title: Détection du vendeur
subtitle: L'IA identifie et enrichit les données de transaction avec des informations sur le vendeur
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: Paiement
subscription_subtitle: Mettez à jour votre abonnement et vos détails de paiement
subscription_title: Gérer l'abonnement
page_title: Paiements
subscription_subtitle: Mettez à jour les détails de votre carte de crédit
subscription_title: Gérer les contributions
appearances:
show:
page_title: Apparence
theme_title: Thème
theme_subtitle: Choisissez un thème préféré pour l'application
theme_dark: Sombre
theme_light: Clair
theme_system: Système
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.
preferences:
show:
country: Pays
@@ -37,12 +54,32 @@ fr:
language: Langue
language_auto: Langue du navigateur
page_title: Préférences
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
timezone: Fuseau horaire
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.
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
profiles:
destroy:
cannot_remove_self: Vous ne pouvez pas vous enlever de votre compte.
@@ -54,7 +91,7 @@ fr:
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, vendeurs, étiquettes et autres données. Cette action ne peut pas être annulée.
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é.
@@ -69,21 +106,24 @@ fr:
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, vendeurs, étiquettes et autres données, mais gardera votre compte utilisateur intact.
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
group_form_label: Nom du groupe
group_title: Membres du groupe
household_form_input_placeholder: Entrez le nom du foyer
household_form_label: Nom du foyer
household_subtitle: Invitez des membres de la famille, des partenaires et d'autres personnes. Les personnes invitées peuvent se connecter à votre foyer et accéder aux comptes partagés.
household_subtitle: Les personnes invitées peuvent se connecter à votre compte %{moniker} et accéder aux ressources partagées.
household_title: Foyer
invitation_link: Lien d'invitation
invite_member: Ajouter un membre
last_name: Nom de famille
page_title: Informations du profil
pending: En attente
profile_subtitle: Personnalisez l'apparence de votre profil sur %{product_name}
profile_subtitle: Personnalisez votre apparence sur %{product_name}
profile_title: Personnel
remove_invitation: Supprimer l'invitation
remove_member: Supprimer le membre
@@ -117,9 +157,10 @@ fr:
categories_label: Catégories
feedback_label: Retour d'information
general_section_title: Général
imports_label: Importer/Exporter
imports_label: Importations
exports_label: Exportations
logout: Se déconnecter
merchants_label: Vendeurs
merchants_label: Marchands
guides_label: Guides
other_section_title: Plus
preferences_label: Préférences
@@ -132,7 +173,8 @@ fr:
transactions_section_title: Transactions
whats_new_label: Dernières nouvelles
api_keys_label: Clés API
bank_sync_label: Synchronisation de la banque
appearance_label: Apparence
bank_sync_label: Synchronisation bancaire
settings_nav_link_large:
next: Suivant
previous: Précédent
@@ -141,3 +183,46 @@ fr:
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 <a href="https://portal.cdp.coinbase.com/projects/api-keys" target="_blank" rel="noopener noreferrer" class="text-primary underline">Paramètres API de Coinbase</a>
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.
status_connected: Coinbase est connecté et synchronise vos avoirs en crypto.
status_not_connected: Non connecté. Saisissez vos identifiants API ci-dessus pour commencer.
binance_panel:
setup_instructions: "Pour connecter Binance, créez une clé API en lecture seule :"
step1_html: 'Allez dans la <a href="https://www.binance.com/en/my/settings/api-management" target="_blank" rel="noopener noreferrer" class="underline">Gestion des API Binance</a>'
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 ?"
status_connected: Binance connecté
status_not_connected: Binance non connecté
enable_banking_panel:
callback_url_instruction: "Pour l'URL de rappel, utilisez %{callback_url}."
connection_error: Erreur de connexion

View File

@@ -3,87 +3,183 @@ 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 adresse e-mail lors du changement.
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
title: Inscription
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
open: "Ouvert"
closed: "Fermé"
invite_only: "Sur invitation uniquement"
show:
general: Paramètres généraux
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.
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.
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:
title: Sélection du fournisseur
description: Choisissez le service à utiliser pour récupérer les taux de change et les cours des titres. Yahoo Finance est gratuit et ne nécessite pas de clé API. Twelve Data nécessite une clé API gratuite mais peut offrir une meilleure couverture des données.
exchange_rate_provider_label: Fournisseur de taux de change
securities_provider_label: Fournisseur de titres (cours boursiers)
env_configured_message: La sélection du fournisseur est désactivée car des variables d'environnement (EXCHANGE_RATE_PROVIDER ou SECURITIES_PROVIDER) sont définies. Pour activer la sélection ici, supprimez ces variables d'environnement de votre configuration.
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.)"
providers:
twelve_data: Twelve Data
yahoo_finance: Yahoo Finance
twelve_data: "Twelve Data"
yahoo_finance: "Yahoo Finance"
tiingo: "Tiingo"
eodhd: "EODHD"
alpha_vantage: "Alpha Vantage"
mfapi: "MFAPI.in"
binance_public: "Binance"
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: Brand Fetch
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)
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_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_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)."
title: OpenAI
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.
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 <a href="https://www.tiingo.com" target="_blank" rel="noopener noreferrer" class="underline">tiingo.com</a> et créez un compte gratuit.'
step_2_html: 'Accédez à la page <a href="https://www.tiingo.com/account/api/token" target="_blank" rel="noopener noreferrer" class="underline">Token API</a>.'
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 <a href="https://eodhd.com/register" target="_blank" rel="noopener noreferrer" class="underline">eodhd.com</a> et créez un compte gratuit.'
step_2_html: 'Accédez à votre <a href="https://eodhd.com/cp/dashboard" target="_blank" rel="noopener noreferrer" class="underline">Tableau de bord</a> 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"
show_details: "(afficher les détails)"
step_1_html: 'Visitez <a href="https://www.alphavantage.co/support/#api-key" target="_blank" rel="noopener noreferrer" class="underline">alphavantage.co</a> 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
plan: "Plan %{plan}"
title: Twelve Data
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"
show_details: "(afficher les détails)"
step_1_html: 'Visitez <a href="https://twelvedata.com/register" target="_blank" rel="noopener noreferrer" class="underline">twelvedata.com</a> et créez un compte Twelve Data Developer gratuit.'
step_2_html: 'Accédez à la page <a href="https://twelvedata.com/account/api-keys" target="_blank" rel="noopener noreferrer" class="underline">Clés API</a>.'
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'inscription 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.
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é"
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."
not_authorized: "Vous n'êtes pas autorisé(e) à effectuer cette action"
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_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."

View File

@@ -1,17 +1,5 @@
---
fr:
breadcrumbs:
home: Accueil
dashboard: Tableau de bord
accounts: Comptes
merchants: Marchands
categories: Catégories
tags: Étiquettes
rules: Règles
transactions: Transactions
budgets: Budgets
imports: Importations
chats: Assistant
shared:
confirm_modal:
accept: Confirmer
@@ -28,5 +16,6 @@ fr:
exchange_rate_help: Choisissez comment entrer le montant.
syncing_notice:
syncing: Synchronisation des données de compte...
require_admin: "Seuls les administrateurs peuvent effectuer cette action"
trend_change:
no_change: "pas de changement"

View File

@@ -1,6 +1,12 @@
---
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
create:
success: Connexion SimpleFIN ajoutée avec succès ! Vos comptes apparaîtront sous peu lors de la synchronisation en arrière-plan.
errors:
@@ -24,8 +30,41 @@ fr:
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:
success: Les comptes SimpleFIN ont été configurés avec succès ! Vos transactions et positions sont en cours d'importation en arrière-plan.
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
@@ -36,12 +75,58 @@ fr:
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: Nécessite une ré-authentification
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 la connexion
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
reconciled_status:
message:
one: "%{count} transaction en attente en doublon réconciliée"
other: "%{count} transactions en attente en doublon réconciliées"
stale_pending_status:
message:
one: "%{count} transaction en attente depuis plus de %{days} jours"
other: "%{count} transactions en attente depuis plus de %{days} jours"

View File

@@ -0,0 +1,190 @@
---
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 <a href=\"https://dashboard.snaptrade.com\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"text-primary underline\">dashboard.snaptrade.com</a>"
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"
status_needs_registration: "Identifiants enregistrés. Rendez-vous sur la page Comptes pour connecter des courtiers."
status_not_configured: "Non configuré"
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"
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"
snaptrade_item:
sync_status:
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…"
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."

View File

@@ -0,0 +1,47 @@
---
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
unsplit: Annuler la division

View File

@@ -5,6 +5,7 @@ fr:
account: Compte de transfert (facultatif)
account_prompt: Rechercher un compte
amount: Montant
fee: Frais de transaction
holding: Symbole boursier
holding_optional: Symbole boursier (facultatif)
price: Prix par action
@@ -35,15 +36,22 @@ fr:
show:
additional: Détails supplémentaires
amount_label: Montant
buy: Acheter
category_label: Catégorie
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
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
no_category: Aucune catégorie
note_label: Note
note_placeholder: Ajoutez tout commentaire supplémentaire ici...
quantity_label: Quantité
sell: Vendre
settings: Paramètres
type_label: Type

View File

@@ -1,6 +1,10 @@
---
fr:
transactions:
unknown_name: Transaction inconnue
selection_bar:
duplicate: Dupliquer
edit: Modifier
form:
account: Compte
account_prompt: Sélectionnez un compte
@@ -12,12 +16,13 @@ fr:
description_placeholder: Libellé de la transaction
expense: Dépense
income: Revenu
merchant_label: Marchand
none: (aucun)
note_label: Notes
note_placeholder: Entrez une note
submit: Ajouter la transaction
tags_label: Étiquettes
transfer: Transfert
transfer: Virement
new:
new_transaction: Nouvelle transaction
show:
@@ -29,6 +34,19 @@ fr:
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
@@ -38,18 +56,167 @@ fr:
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
edit_merchants: Modifier les marchands
edit_tags: Modifier les étiquettes
import: Importer
transaction:
linked_with_provider: Lié avec %{provider}
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
transaction: transaction
transactions: transactions
toggle_recurring_section: Afficher/masquer les transactions récurrentes à venir
search:
filters:
account: Compte
date: Date
type: Type
status: Statut
amount: Montant
category: Catégorie
tag: Étiquette
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}"
searches:
filters:
amount_filter:
@@ -62,11 +229,16 @@ fr:
income: Revenu
on_or_after: le %{date} et après
on_or_before: le %{date} et avant
transfer: Transfert
transfer: Virement
confirmed: Confirmée
pending: En attente
type_filter:
expense: Dépense
income: Revenu
transfer: Transfert
transfer: Virement
status_filter:
confirmed: Confirmée
pending: En attente
menu:
account_filter: Compte
amount_filter: Montant
@@ -76,9 +248,30 @@ fr:
clear_filters: Effacer les filtres
date_filter: Date
merchant_filter: Marchand
status_filter: Statut
tag_filter: Étiquette
type_filter: Type
search:
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."

View File

@@ -7,11 +7,19 @@ fr:
success: Transfert supprimé
form:
amount: Montant
calculate_rate_tab: Calculer le taux de change
convert_tab: Convertir avec taux de change
date: Date
destination_amount: Montant de destination
destination_amount_display: "Montant de destination : %{amount}"
exchange_rate: Taux de change
exchange_rate_display: "Taux de change : %{rate}"
exchange_rate_help: Choisissez comment saisir le montant du transfert.
expense: Dépense
from: De
income: Revenu
select_account: Sélectionner un compte
source_amount: Montant source
submit: Créer le transfert
to: Vers
transfer: Transfert

View File

@@ -7,6 +7,9 @@ fr:
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:
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.
unauthorized: Vous n'êtes pas autorisé à effectuer cette action.