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

225 lines
8.1 KiB
YAML

---
fr:
reports:
index:
title: Rapports
subtitle: Aperçus complets de votre santé financière
export: Exporter CSV
print_report: Imprimer le rapport
drag_to_reorder: "Glisser pour réorganiser la section"
toggle_section: "Basculer la visibilité de la section"
periods:
monthly: Mensuel
quarterly: Trimestriel
ytd: Depuis le début de l'année
last_6_months: 6 derniers mois
custom: Plage personnalisée
date_range:
from: Du
to: Au
showing_period: "Affichage des données du %{start} au %{end}"
invalid_date_range: "La date de fin ne peut pas être antérieure à la date de début. Les dates ont été inversées."
summary:
total_income: Revenus totaux
total_expenses: Dépenses totales
net_savings: Épargne nette
budget_performance: Performance budgétaire
vs_previous: vs période précédente
income_minus_expenses: Revenus moins dépenses
of_budget_used: du budget utilisé
no_budget_data: Aucune donnée budgétaire pour cette période
budget_performance:
title: Performance budgétaire
spent: Dépensé
budgeted: Budgété
remaining: Restant
over_by: Dépassé de
shared: partagé
suggested_daily: "%{amount} suggéré par jour pour les %{days} jours restants"
no_budgets: Aucune catégorie de budget définie pour ce mois
status:
good: En bonne voie
warning: Proche de la limite
over: Budget dépassé
trends:
title: Tendances et aperçus
monthly_breakdown: Répartition mensuelle
month: Mois
income: Revenus
expenses: Dépenses
net: Net
savings_rate: Taux d'épargne
current: actuel
avg_monthly_income: Revenu mensuel moyen
avg_monthly_expenses: Dépenses mensuelles moyennes
avg_monthly_savings: Épargne mensuelle moyenne
no_data: Aucune donnée de tendance disponible
spending_patterns: Modèles de dépenses
weekday_spending: Dépenses en semaine
weekend_spending: Dépenses le week-end
total: Total
avg_per_transaction: Moy. par transaction
transactions: Transactions
insight_title: Aperçu
insight_higher_weekend: "Vous dépensez %{percent}% de plus par transaction le week-end qu'en semaine"
insight_higher_weekday: "Vous dépensez %{percent}% de plus par transaction en semaine que le week-end"
insight_similar: "Vos dépenses par transaction sont similaires en semaine et le week-end"
no_spending_data: Aucune donnée de dépenses disponible pour cette période
empty_state:
title: Aucune donnée disponible
description: Commencez à suivre vos finances en ajoutant des transactions ou en connectant vos comptes pour voir des rapports complets
add_transaction: Ajouter une transaction
add_account: Ajouter un compte
transactions_breakdown:
title: Répartition des activités
no_transactions: Aucune activité trouvée pour la période et les filtres sélectionnés
filters:
title: Filtres
category: Catégorie
account: Compte
tag: Étiquette
amount_min: Montant min
amount_max: Montant max
date_range: Plage de dates
all_categories: Toutes les catégories
all_accounts: Tous les comptes
all_tags: Toutes les étiquettes
apply: Appliquer les filtres
clear: Effacer les filtres
sort:
label: Trier par
date_desc: Date (Plus récent)
amount_desc: Montant (Élevé à faible)
amount_asc: Montant (Faible à élevé)
export:
label: Exporter
csv: CSV
excel: Excel
pdf: PDF
google_sheets: Ouvrir dans Google Sheets
table:
category: Catégorie
amount: Montant
type: Type
expense: Dépenses
income: Revenus
uncategorized: Non catégorisé
entries:
one: "%{count} entrée"
other: "%{count} entrées"
percentage: "% du total"
pagination:
showing:
one: Affichage de %{count} entrée
other: Affichage de %{count} entrées
previous: Précédent
next: Suivant
net_worth:
title: Patrimoine net
current_net_worth: Patrimoine net actuel
period_change: Variation sur la période
assets_vs_liabilities: Actifs vs Passifs
total_assets: Actifs
total_liabilities: Passifs
no_assets: Aucun actif
no_liabilities: Aucun passif
investment_performance:
title: Performance des investissements
portfolio_value: Valeur du portefeuille
total_return: Rendement total
contributions: Contributions de la période
withdrawals: Retraits de la période
top_holdings: Principaux avoirs
holding: Avoir
weight: Poids
value: Valeur
return: Rendement
accounts: Comptes d'investissement
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"
ready: Votre URL CSV (avec clé API) est prête.
steps: "Pour importer dans Google Sheets :\n1. Créez une nouvelle feuille Google\n2. Dans la cellule A1, entrez la formule ci-dessous\n3. Appuyez sur Entrée"
security_warning: "Cette URL inclut votre clé API. Gardez-la en sécurité !"
need_key: Pour importer des données dans Google Sheets, vous avez besoin d'une clé API.
step1: "Allez dans Paramètres → Clés API"
step2: "Créez une nouvelle clé API avec la permission \"lecture\""
step3: Copiez la clé API
step4: "Ajoutez-la à cette URL comme : ?api_key=VOTRE_CLÉ"
example: Exemple
then_use: Ensuite, utilisez l'URL complète avec =IMPORTDATA() dans Google Sheets.
open_sheets: Ouvrir Google Sheets
go_to_api_keys: Aller aux clés API
close: Compris
print:
document_title: Rapport financier
title: Rapport financier
generated_on: "Généré le %{date}"
summary:
title: Résumé
income: Revenus
expenses: Dépenses
net_savings: Épargne nette
budget: Budget
vs_prior: "%{percent}% vs précédent"
of_income: "%{percent}% des revenus"
used: utilisé
net_worth:
title: Patrimoine net
current_balance: Solde actuel
this_period: cette période
assets: Actifs
liabilities: Passifs
no_liabilities: Aucun passif
trends:
title: Tendances mensuelles
month: Mois
income: Revenus
expenses: Dépenses
net: Net
savings_rate: Taux d'épargne
average: Moyenne
current_month_note: "* Mois en cours (données partielles)"
investments:
title: Investissements
portfolio_value: Valeur du portefeuille
total_return: Rendement total
contributions: Contributions
withdrawals: Retraits
this_period: cette période
top_holdings: Principaux avoirs
holding: Avoir
weight: Poids
value: Valeur
return: Rendement
spending:
title: Dépenses par catégorie
income: Revenus
expenses: Dépenses
category: Catégorie
amount: Montant
percent: "%"
more_categories: "+ %{count} autres catégories"