-
Notifications
You must be signed in to change notification settings - Fork 93
Adding FR language #140
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Adding FR language #140
Changes from all commits
a691973
fe269ea
369111e
196adc0
bc52af7
2e927ef
3d369c1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -2,7 +2,7 @@ | |||||||||||||||||||||||||||
| <div id="cashflow-sankey-chart"> | ||||||||||||||||||||||||||||
| <div class="flex justify-between items-center gap-4 px-4 mb-4"> | ||||||||||||||||||||||||||||
| <h2 class="text-lg font-medium inline-flex items-center gap-1.5"> | ||||||||||||||||||||||||||||
| Cashflow | ||||||||||||||||||||||||||||
| <%= t(".title") %> | ||||||||||||||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Verification agent 🧩 Analysis chainFix i18n scope: relative t('.…') won’t resolve with current keys. This partial scopes t(".…") to pages.dashboard.cashflow_sankey., but en.yml defines pages.dashboard.cashflow.. Users will see missing translations. Apply minimal fix by using absolute keys: - <%= t(".title") %>
+ <%= t("pages.dashboard.cashflow.title") %>
- <p class="text-sm font-medium text-primary"><%= t(".no_cashflow") %></p>
- <p class="text-secondary text-sm"><%= t(".add_transactions_to_display_cashflow") %></p>
+ <p class="text-sm font-medium text-primary"><%= t("pages.dashboard.cashflow.no_cashflow") %></p>
+ <p class="text-secondary text-sm"><%= t("pages.dashboard.cashflow.add_transactions_to_display_cashflow") %></p>
- text: t(".new"),
+ text: t("pages.dashboard.cashflow.new"),Run a quick check that the keys exist in both locales: Also applies to: 33-34, 36-36 🏁 Script executed: #!/bin/bash
rg -n '^\s+cashflow:\s*$' config/locales/views/pages/en.yml
rg -n '^\s+cashflow:\s*$' config/locales/views/pages/fr.yml
rg -n '^\s+(title|no_cashflow|add_transactions_to_display_cashflow|new):' config/locales/views/pages/en.yml
rg -n '^\s+(title|no_cashflow|add_transactions_to_display_cashflow|new):' config/locales/views/pages/fr.ymlLength of output: 1117 In Apply: - <%= t(".title") %>
+ <%= t("pages.dashboard.cashflow.title") %>
- <p class="text-sm font-medium text-primary"><%= t(".no_cashflow") %></p>
- <p class="text-secondary text-sm"><%= t(".add_transactions_to_display_cashflow") %></p>
+ <p class="text-sm font-medium text-primary"><%= t("pages.dashboard.cashflow.no_cashflow") %></p>
+ <p class="text-secondary text-sm"><%= t("pages.dashboard.cashflow.add_transactions_to_display_cashflow") %></p>
- text: t(".new"),
+ text: t("pages.dashboard.cashflow.new"),Also update the same at lines 33–34 and 36. 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||
| </h2> | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| <%= form_with url: root_path, method: :get, data: { controller: "auto-submit-form", turbo_frame: "cashflow_sankey_section" } do |form| %> | ||||||||||||||||||||||||||||
|
|
@@ -30,10 +30,10 @@ | |||||||||||||||||||||||||||
| icon: "activity" # cashflow placeholder icon | ||||||||||||||||||||||||||||
| ) %> | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| <p class="text-sm font-medium text-primary">No cash flow data for this time period</p> | ||||||||||||||||||||||||||||
| <p class="text-secondary text-sm">Add transactions to display cash flow data or expand the time period</p> | ||||||||||||||||||||||||||||
| <p class="text-sm font-medium text-primary"><%= t(".no_cashflow") %></p> | ||||||||||||||||||||||||||||
| <p class="text-secondary text-sm"><%= t(".add_transactions_to_display_cashflow") %></p> | ||||||||||||||||||||||||||||
| <%= render DS::Link.new( | ||||||||||||||||||||||||||||
| text: "Add transaction", | ||||||||||||||||||||||||||||
| text: t(".new"), | ||||||||||||||||||||||||||||
| icon: "plus", | ||||||||||||||||||||||||||||
| href: new_transaction_path, | ||||||||||||||||||||||||||||
| frame: :modal | ||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -5,10 +5,10 @@ | |||||||||||
| icon: "layers", | ||||||||||||
| ) %> | ||||||||||||
|
|
||||||||||||
| <p class="text-sm font-medium text-primary">No accounts yet</p> | ||||||||||||
| <p class="text-secondary text-sm">Add accounts to display net worth data</p> | ||||||||||||
| <p class="text-sm font-medium text-primary"><%= t(".no_account_yet") %></p> | ||||||||||||
| <p class="text-secondary text-sm"><%= t(".add_account_to_display") %></p> | ||||||||||||
|
Comment on lines
+8
to
+9
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Verification agent 🧩 Analysis chainFix i18n scope: partial name is plural, YAML key is singular. This partial’s t(".…") resolves to pages.dashboard.no_accounts_graph_placeholder., but en.yml uses pages.dashboard.no_account_graph_placeholder.. Switch to absolute keys (minimal change). - <p class="text-sm font-medium text-primary"><%= t(".no_account_yet") %></p>
- <p class="text-secondary text-sm"><%= t(".add_account_to_display") %></p>
+ <p class="text-sm font-medium text-primary"><%= t("pages.dashboard.no_account_graph_placeholder.no_account_yet") %></p>
+ <p class="text-secondary text-sm"><%= t("pages.dashboard.no_account_graph_placeholder.add_account_to_display") %></p>
- text: t(".new"),
+ text: t("pages.dashboard.no_account_graph_placeholder.new"),Confirm the keys exist in both en/fr locale files with ripgrep (similar to the previous script). Also applies to: 11-11 🏁 Script executed: #!/bin/bash
# Search for singular placeholder key in locale YAML files
rg -n "pages\\.dashboard\\.no_account_graph_placeholder" -C1 -- "*.yml"
# Search for plural placeholder key in locale YAML files
rg -n "pages\\.dashboard\\.no_accounts_graph_placeholder" -C1 -- "*.yml"Length of output: 236 🏁 Script executed: #!/bin/bash
# Search for singular key in the repo
rg -n "no_account_graph_placeholder" -C2 .
# Search for plural key in the repo
rg -n "no_accounts_graph_placeholder" -C2 .Length of output: 1477 🏁 Script executed: #!/bin/bash
sed -n '1,50p' config/locales/views/pages/en.yml
sed -n '1,50p' config/locales/views/pages/fr.ymlLength of output: 2241 Fix i18n scope mismatch in no_accounts_graph_placeholder partial - <p class="text-sm font-medium text-primary"><%= t(".no_account_yet") %></p>
+ <p class="text-sm font-medium text-primary"><%= t("pages.dashboard.no_account_graph_placeholder.no_account_yet") %></p>
- <p class="text-secondary text-sm"><%= t(".add_account_to_display") %></p>
+ <p class="text-secondary text-sm"><%= t("pages.dashboard.no_account_graph_placeholder.add_account_to_display") %></p>
- text: t(".new"),
+ text: t("pages.dashboard.no_account_graph_placeholder.new"),📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||
| <%= render DS::Link.new( | ||||||||||||
| text: "Add account", | ||||||||||||
| text: t(".new"), | ||||||||||||
| icon: "plus", | ||||||||||||
| href: new_account_path, | ||||||||||||
| frame: :modal | ||||||||||||
|
|
||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| fr: | ||
| invitation_mailer: | ||
| invite_email: | ||
| subject: "%{inviter} vous a invité à rejoindre sa famille sur %{product_name} !" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| --- | ||
| fr: | ||
| activerecord: | ||
| attributes: | ||
| account: | ||
| balance: Solde | ||
| currency: Devise | ||
| family: Famille | ||
| family_id: Famille | ||
| name: Nom | ||
| subtype: Sous-type | ||
| models: | ||
| account: Compte | ||
| account/credit: Carte de Crédit | ||
| account/depository: Compte Bancaire | ||
| account/investment: Investissement | ||
| account/loan: Prêt | ||
| account/other_asset: Autre Actif | ||
| account/other_liability: Autre Passif | ||
| account/property: Immobilier | ||
| account/vehicle: Véhicule |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| --- | ||
| fr: | ||
| address: | ||
| attributes: | ||
| country: Pays | ||
| line1: Adresse ligne 1 | ||
| line2: Adresse ligne 2 | ||
| locality: Localité | ||
| postal_code: Code Postal | ||
| region: Région | ||
| format: "%{line1} %{line2}, %{locality}, %{region} %{postal_code} %{country}" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| --- | ||
| fr: | ||
| activerecord: | ||
| errors: | ||
| models: | ||
| entry: | ||
| attributes: | ||
| base: | ||
| invalid_sell_quantity: Vous ne pouvez pas vendre %{sell_qty} actions de %{ticker} car | ||
| vous en détenez que %{current_qty} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| --- | ||
| fr: | ||
| activerecord: | ||
| attributes: | ||
| import: | ||
| currency: Devise | ||
| number_format: Format numérique | ||
| errors: | ||
| models: | ||
| import: | ||
| attributes: | ||
| raw_file_str: | ||
| invalid_csv_format: n'est pas un format CSV valide |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| --- | ||
| fr: | ||
| activemodel: | ||
| errors: | ||
| models: | ||
| time_series/value: | ||
| attributes: | ||
| value: | ||
| must_be_a_money_or_numeric: doit être un Money ou un Nombre |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| --- | ||
| fr: | ||
| activerecord: | ||
| errors: | ||
| models: | ||
| transfer: | ||
| attributes: | ||
| base: | ||
| inflow_cannot_be_in_multiple_transfers: La transaction d'entrée ne peut pas être | ||
| partie de plusieurs transferts | ||
| must_be_from_different_accounts: Le transfert doit avoir des comptes différents | ||
| must_be_from_same_family: Le transfert doit provenir de la même famille | ||
| must_be_within_date_range: Les dates des transactions de transfert doivent être | ||
| dans une période d'4 jours | ||
| must_have_opposite_amounts: Les transactions de transfert doivent avoir des montants | ||
| opposés | ||
| must_have_single_currency: Le transfert doit avoir une seule devise | ||
| outflow_cannot_be_in_multiple_transfers: La transaction de dépense ne peut pas être | ||
| partie de plusieurs transferts | ||
| transfer: | ||
| name: Transfert vers %{to_account} | ||
| payment_name: Paiement vers %{to_account} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| --- | ||
| fr: | ||
| activemodel: | ||
| errors: | ||
| models: | ||
| trend: | ||
| attributes: | ||
| current: | ||
| must_be_of_the_same_type_as_previous: doit être du même type que le précédent | ||
| must_be_of_type_money_numeric_or_nil: doit être de type Money, Numeric, | ||
| ou nil | ||
| previous: | ||
| must_be_of_the_same_type_as_current: doit être du même type que le courant | ||
| must_be_of_type_money_numeric_or_nil: doit être de type Money, Numeric, | ||
| ou nil |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| --- | ||
| fr: | ||
| activerecord: | ||
| attributes: | ||
| user: | ||
| email: Adresse mail | ||
| family: Famille | ||
| family_id: Famille | ||
| first_name: Prénom | ||
| last_name: Nom | ||
| password: Mot de passe | ||
| password_confirmation: Confirmation du mot de passe | ||
| errors: | ||
| models: | ||
| user: | ||
| attributes: | ||
| base: | ||
| cannot_deactivate_admin_with_other_users: Un administrateur ne peut pas | ||
| désactiver son compte tant que d'autres utilisateurs sont présents. | ||
| Veuillez supprimer tous les membres en premier lieu. | ||
| profile_image: | ||
| invalid_file_size: La taille du fichier doit être inférieure à %{max_megabytes} Mo |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,72 @@ | ||
| --- | ||
| fr: | ||
| accounts: | ||
| account: | ||
| troubleshoot: Dépannage | ||
| account_sidebar_tabs: | ||
| missing_historical: Manque les données historiques | ||
| describe_party_provider: "%{product_name} utilise des fournisseurs tiers pour récupérer l'historique des taux de change, des cours des titres, etc. Ces données sont nécessaires au calcul précis des soldes historiques des comptes." | ||
| configure_provider: Configurez vos fournisseurs ici. | ||
| label_all: Tout | ||
| label_asset: Comptes | ||
| label_liability: Dettes | ||
| new_asset: Nouvel actif | ||
| new_debt: Nouvelle dette | ||
| new_account: Nouveau compte | ||
| chart: | ||
| data_not_available: Données non disponibles pour le période sélectionnée | ||
| create: | ||
| success: "Compte %{type} créé" | ||
| destroy: | ||
| success: "Le compte %{type} a été préparé à la suppression" | ||
| 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 | ||
| name_label: Nom du compte | ||
| name_placeholder: Nom de compte d'exemple | ||
| index: | ||
| accounts: Comptes | ||
| manual_accounts: | ||
| other_accounts: Autres comptes | ||
| new_account: Nouveau compte | ||
| sync: Synchroniser tous | ||
| new: | ||
| import_accounts: Importer des comptes | ||
| method_selector: | ||
| connected_entry: Lier un compte | ||
| connected_entry_eu: Lier un compte européen | ||
| manual_entry: Entrée du solde du compte | ||
| title: Comment voulez-vous l'ajouter ? | ||
| title: Que voudriez-vous ajouter ? | ||
| show: | ||
| activity: | ||
| amount: Montant | ||
| balance: Solde | ||
| date: Date | ||
| entries: entrées | ||
| entry: entrée | ||
| new: Nouveau | ||
| new_balance: Nouveau solde | ||
| new_transaction: Nouvelle transaction | ||
| no_entries: Aucune entrée trouvée | ||
| title: Activité | ||
| chart: | ||
| balance: Solde | ||
| owed: Montant dû | ||
| menu: | ||
| confirm_accept: Supprimer "%{name}" | ||
| confirm_body_html: "<p>En supprimant ce compte, vous effacerez son historique de valeur, | ||
| affectant divers aspects de votre solde global. Cette action aura un impact direct sur vos calculs de valeur nette et les graphiques des comptes.</p><br /> <p>Après la suppression, il n'y a aucun moyen de restaurer l'information du compte car vous aurez besoin d'en ajouter un nouveau.</p>" | ||
| confirm_title: Supprimer le compte ? | ||
| edit: Éditer | ||
| import: Importer des transactions | ||
| manage: Gérer les comptes | ||
| update: | ||
| success: "Compte %{type} mis à jour" | ||
| email_confirmations: | ||
| new: | ||
| invalid_token: Lien de confirmation invalide ou expiré. | ||
| success_login: Votre email a été confirmé. Veuillez vous identifier avec votre nouvelle adresse email. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,34 @@ | ||
| --- | ||
| fr: | ||
| categories: | ||
| bootstrap: | ||
| success: Catégories par défaut créées avec succès | ||
| category: | ||
| delete: Supprimer la catégorie | ||
| edit: Éditer la catégorie | ||
| create: | ||
| success: Catégorie créée avec succès | ||
| destroy: | ||
| success: Catégorie supprimée avec succès | ||
| edit: | ||
| edit: Éditer la catégorie | ||
| form: | ||
| placeholder: Nom de la catégorie | ||
| index: | ||
| bootstrap: Utiliser les valeurs par défaut (recommandé) | ||
| categories: Catégories | ||
| categories_expenses: Catégories de dépenses | ||
| categories_incomes: Catégories de revenus | ||
| empty: Aucune catégorie trouvée | ||
| new: Nouvelle catégorie | ||
| menu: | ||
| loading: Chargement... | ||
| new: | ||
| new_category: Nouvelle catégorie | ||
| update: | ||
| success: Catégorie mise à jour avec succès | ||
| category: | ||
| dropdowns: | ||
| show: | ||
| bootstrap: Générer les catégories par défaut | ||
| empty: Aucune catégorie trouvée |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| --- | ||
| fr: | ||
| category: | ||
| deletions: | ||
| create: | ||
| success: Catégorie de transaction supprimée avec succès | ||
| new: | ||
| category: Catégorie | ||
| delete_and_leave_uncategorized: Supprimer "%{category_name}" et laisser non catégorisée | ||
| delete_and_recategorize: Supprimer "%{category_name}" et attribuer une nouvelle catégorie | ||
| delete_category: Supprimer la catégorie ? | ||
| explanation: En supprimant cette catégorie, chaque transaction qui a la catégorie "%{category_name}" | ||
| sera non catégorisée. Au lieu de les laisser non catégorisées, vous pouvez également attribuer une nouvelle catégorie ci-dessous. | ||
| replacement_category_prompt: Sélectionnez la catégorie |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| --- | ||
| fr: | ||
| category: | ||
| dropdowns: | ||
| row: | ||
| delete: Supprimer la catégorie | ||
| edit: Éditer la catégorie | ||
| show: | ||
| clear: Effacer la catégorie | ||
| no_categories: Aucune catégorie trouvée | ||
| search_placeholder: Rechercher |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: Incorrect Text Key for Configuration Link
The link to configure data providers uses
t(".describe_party_provider")for its text. This key contains a long descriptive paragraph, causing the link to display that full text instead of the intended short phrase "Configure your providers here.", which is int(".configure_provider").