Files
sure/config/locales/views/recurring_transactions/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

53 lines
2.6 KiB
YAML

---
fr:
recurring_transactions:
title: Transactions récurrentes
upcoming: Transactions récurrentes à venir
projected: Projeté
recurring: Récurrent
expected_today: "Attendue aujourd'hui"
expected_in:
one: "Attendue dans %{count} jour"
other: "Attendue dans %{count} jours"
day_of_month: Jour %{day} du mois
identify_patterns: Identifier les modèles
cleanup_stale: Nettoyer les obsolètes
settings:
enable_label: Activer les transactions récurrentes
enable_description: Détecter automatiquement les modèles de transactions récurrentes et afficher les transactions projetées à venir.
settings_updated: Paramètres des transactions récurrentes mis à jour
info:
title: Détection automatique des modèles
manual_description: Vous pouvez identifier manuellement les modèles ou nettoyer les transactions récurrentes obsolètes en utilisant les boutons ci-dessus.
automatic_description: "L'identification automatique s'exécute également après :"
triggers:
- Les importations CSV sont terminées (transactions, trades, comptes, etc.)
- Toute synchronisation de fournisseur est terminée (Plaid, SimpleFIN, etc.)
identified: "%{count} modèles de transactions récurrentes identifiés"
cleaned_up: "%{count} transactions récurrentes obsolètes nettoyées"
marked_inactive: Transaction récurrente marquée comme inactive
marked_active: Transaction récurrente marquée comme active
deleted: Transaction récurrente supprimée
confirm_delete: Êtes-vous sûr(e) de vouloir supprimer cette transaction récurrente ?
marked_as_recurring: Transaction marquée comme récurrente
already_exists: Une transaction récurrente manuelle existe déjà pour ce modèle
creation_failed: Échec de la création de la transaction récurrente. Veuillez vérifier les détails de la transaction et réessayer.
unexpected_error: Une erreur inattendue s'est produite lors de la création de la transaction récurrente
amount_range: "Plage : %{min} à %{max}"
empty:
title: Aucune transaction récurrente trouvée
description: Cliquez sur "Identifier les modèles" pour détecter automatiquement les transactions récurrentes à partir de votre historique de transactions.
table:
merchant: Nom
amount: Montant
expected_day: Jour prévu
next_date: Prochaine date
last_occurrence: Dernière occurrence
status: Statut
actions: Actions
status:
active: Actif
inactive: Inactif
badges:
manual: Manuel