Files
sure/config/locales/views/mercury_items/fr.yml
Nicolas c962b1f420 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")
2026-04-19 00:18:40 +02:00

148 lines
7.4 KiB
YAML

---
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