Skip to content

feat(lang): add all brazilian portuguese translations#416

Merged
jjmata merged 10 commits into
we-promise:mainfrom
marconneves:feature/translation-to-portuguese
Dec 9, 2025
Merged

feat(lang): add all brazilian portuguese translations#416
jjmata merged 10 commits into
we-promise:mainfrom
marconneves:feature/translation-to-portuguese

Conversation

@marconneves

@marconneves marconneves commented Dec 4, 2025

Copy link
Copy Markdown
Contributor

This is a continuation of PR:
#82

Summary by CodeRabbit

  • New Features
    • Added comprehensive Brazilian Portuguese (pt-BR) localization across UI views, emails, validation/error messages, model labels, number/currency formatting, and onboarding flows.
    • pt-BR is now available in the language selector so users can switch the interface to Brazilian Portuguese.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai

coderabbitai Bot commented Dec 4, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Adds Brazilian Portuguese (pt-BR) localization across the app: many new locale YAML files (models, views, mailers) and registers "pt-BR" in SUPPORTED_LOCALES. No runtime logic changes.

Changes

Cohort / File(s) Summary
Supported Locales
app/helpers/languages_helper.rb
Adds "pt-BR" to SUPPORTED_LOCALES and fixes array punctuation.
Mailers & Emails
config/locales/mailers/invitation_mailer/pt-BR.yml, config/locales/views/invitation_mailer/pt-BR.yml, config/locales/views/email_confirmation_mailer/pt-BR.yml, config/locales/views/password_mailer/pt-BR.yml
Adds pt-BR translations for invitation, email confirmation, and password mailer templates (subjects, bodies, CTAs, placeholders).
Models — attributes & errors
config/locales/models/*/pt-BR.yml (e.g. account, address, entry, import, time_series/value, transfer, trend, user)
Adds pt-BR ActiveRecord attribute labels and validation/error message translations for accounts, addresses, entries, imports, time_series/value, transfers, trends, and users.
Views — Authentication, Onboarding & Core UX
config/locales/views/{sessions,registrations,invitations,password_resets,passwords,layout,onboardings}/pt-BR.yml
Adds pt-BR UI strings for sessions, registrations, invitations, password flows, layout, and onboarding pages.
Views — Accounts & Financial UI
config/locales/views/{accounts,transactions,transfers,trades,holdings,credit_cards,investments,loans,properties,vehicles,other_assets,other_liabilities,recurring_transactions,valuations}/pt-BR.yml
Adds pt-BR translations for account management, transactions, transfers, trades, holdings, credit cards, investments, loans, properties, vehicles, other assets/liabilities, recurring transactions, and valuations.
Views — Reports, Pages & Shared
config/locales/views/{reports,pages,shared}/pt-BR.yml, config/locales/views/application/pt-BR.yml
Adds pt-BR translations for reports, dashboard/pages, shared components and currency formatting.
Views — Management (merchants/categories/tags)
config/locales/views/{merchants,categories,tags,category/deletions,tag/deletions,category/dropdowns}/pt-BR.yml
Adds pt-BR UI strings for merchant, category, and tag management including deletion/recategorization flows and dropdowns.
Views — Imports & Integrations
config/locales/views/{imports,plaid_items,simplefin_items,family_exports}/pt-BR.yml
Adds pt-BR translations for CSV import flows, Plaid/SimpleFin item setup, and family export statuses.
Views — Settings & Admin
config/locales/views/settings/{pt-BR,api_keys,hostings,securities}/pt-BR.yml, config/locales/views/impersonation_sessions/pt-BR.yml
Adds pt-BR translations for settings pages, API keys UI, hosting/OpenAI/Yahoo/12Data settings, security (MFA), and impersonation session flows.
Views — Miscellaneous
config/locales/views/{cryptos,depositories,entries,investments,invite_codes,subscriptions,shared,simplefin_items,users}/pt-BR.yml
Adds various additional pt-BR view translations (cryptos, depositories, entries, investments, invite codes, subscriptions, shared components, SimpleFin items, users).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Focus points:
    • app/helpers/languages_helper.rb SUPPORTED_LOCALES update.
    • Interpolation token consistency (%{...}) across YAMLs.
    • Large locale files (reports, pages, transactions, trades) for missing/mismatched keys or indentation.

Possibly related PRs

Suggested labels

enhancement

Suggested reviewers

  • jjmata

Poem

🐇 Trago pt‑BR em cada chave e canto,
Traduções pulam alto num salto tanto,
Labels, emails e páginas a cantar,
A língua nova pronta para usar,
🥕 Viva o texto — venha celebrar!

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat(lang): add all brazilian portuguese translations' directly and accurately describes the main change: adding comprehensive Brazilian Portuguese language support across the entire codebase.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f5ab230 and 9a4ac16.

📒 Files selected for processing (1)
  • app/helpers/languages_helper.rb (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • app/helpers/languages_helper.rb

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
config/locales/views/investments/pt-BR.yml (1)

4-5: Minor: Consider reviewing the nested key redundancy in edit.edit.

The key structure has edit > edit where both parent and child share the same name. While this may be intentional to match the view template structure, verify this aligns with how the translation is called in the view (e.g., t('investments.edit.edit')). If there's a clearer naming convention across other views in the codebase, consider consistency.

config/locales/views/family_exports/pt-BR.yml (1)

5-5: Remove trailing whitespace on line 5.

Line 5 contains trailing whitespace after Em andamento, which can cause YAML parsing issues and is generally considered poor practice.

-      in_progress: Em andamento 
+      in_progress: Em andamento
config/locales/views/pages/pt-BR.yml (1)

5-36: Minor: Inconsistent quote usage in YAML values.

Some values use quotes (e.g., lines 7–8, 20–22, 25–26) while others do not (e.g., lines 5, 9–11, 13–14). For consistency and safety, consider quoting all values that contain whitespace, interpolation, or special characters. While YAML parsers handle unquoted values correctly here, quoted values are more explicit.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a91a439 and 8d6aba2.

📒 Files selected for processing (59)
  • config/locales/mailers/invitation_mailer/pt-BR.yml (1 hunks)
  • config/locales/models/account/pt-BR.yml (1 hunks)
  • config/locales/models/address/pt-BR.yml (1 hunks)
  • config/locales/models/entry/pt-BR.yml (1 hunks)
  • config/locales/models/import/pt-BR.yml (1 hunks)
  • config/locales/models/time_series/value/pt-BR.yml (1 hunks)
  • config/locales/models/transfer/pt-BR.yml (1 hunks)
  • config/locales/models/trend/pt-BR.yml (1 hunks)
  • config/locales/models/user/pt-BR.yml (1 hunks)
  • config/locales/views/accounts/pt-BR.yml (1 hunks)
  • config/locales/views/application/pt-BR.yml (1 hunks)
  • config/locales/views/categories/pt-BR.yml (1 hunks)
  • config/locales/views/category/deletions/pt-BR.yml (1 hunks)
  • config/locales/views/category/dropdowns/pt-BR.yml (1 hunks)
  • config/locales/views/credit_cards/pt-BR.yml (1 hunks)
  • config/locales/views/cryptos/pt-BR.yml (1 hunks)
  • config/locales/views/depositories/pt-BR.yml (1 hunks)
  • config/locales/views/email_confirmation_mailer/pt-BR.yml (1 hunks)
  • config/locales/views/entries/pt-BR.yml (1 hunks)
  • config/locales/views/family_exports/pt-BR.yml (1 hunks)
  • config/locales/views/holdings/pt-BR.yml (1 hunks)
  • config/locales/views/impersonation_sessions/pt-BR.yml (1 hunks)
  • config/locales/views/imports/pt-BR.yml (1 hunks)
  • config/locales/views/investments/pt-BR.yml (1 hunks)
  • config/locales/views/invitation_mailer/pt-BR.yml (1 hunks)
  • config/locales/views/invitations/pt-BR.yml (1 hunks)
  • config/locales/views/invite_codes/pt-BR.yml (1 hunks)
  • config/locales/views/layout/pt-BR.yml (1 hunks)
  • config/locales/views/loans/pt-BR.yml (1 hunks)
  • config/locales/views/merchants/pt-BR.yml (1 hunks)
  • config/locales/views/mfa/pt-BR.yml (1 hunks)
  • config/locales/views/onboardings/pt-BR.yml (1 hunks)
  • config/locales/views/other_assets/pt-BR.yml (1 hunks)
  • config/locales/views/other_liabilities/pt-BR.yml (1 hunks)
  • config/locales/views/pages/pt-BR.yml (1 hunks)
  • config/locales/views/password_mailer/pt-BR.yml (1 hunks)
  • config/locales/views/password_resets/pt-BR.yml (1 hunks)
  • config/locales/views/passwords/pt-BR.yml (1 hunks)
  • config/locales/views/plaid_items/pt-BR.yml (1 hunks)
  • config/locales/views/properties/pt-BR.yml (1 hunks)
  • config/locales/views/recurring_transactions/pt-BR.yml (1 hunks)
  • config/locales/views/registrations/pt-BR.yml (1 hunks)
  • config/locales/views/reports/pt-BR.yml (1 hunks)
  • config/locales/views/sessions/pt-BR.yml (1 hunks)
  • config/locales/views/settings/api_keys/pt-BR.yml (1 hunks)
  • config/locales/views/settings/hostings/pt-BR.yml (1 hunks)
  • config/locales/views/settings/pt-BR.yml (1 hunks)
  • config/locales/views/settings/securities/pt-BR.yml (1 hunks)
  • config/locales/views/shared/pt-BR.yml (1 hunks)
  • config/locales/views/simplefin_items/pt-BR.yml (1 hunks)
  • config/locales/views/subscriptions/pt-BR.yml (1 hunks)
  • config/locales/views/tag/deletions/pt-BR.yml (1 hunks)
  • config/locales/views/tags/pt-BR.yml (1 hunks)
  • config/locales/views/trades/pt-BR.yml (1 hunks)
  • config/locales/views/transactions/pt-BR.yml (1 hunks)
  • config/locales/views/transfers/pt-BR.yml (1 hunks)
  • config/locales/views/users/pt-BR.yml (1 hunks)
  • config/locales/views/valuations/pt-BR.yml (1 hunks)
  • config/locales/views/vehicles/pt-BR.yml (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
config/locales/**/*.yml

📄 CodeRabbit inference engine (CLAUDE.md)

Use hierarchical i18n keys by feature: accounts.index.title, transactions.form.amount_label. Use t() helper for all user-facing strings with interpolation for dynamic content.

Files:

  • config/locales/views/shared/pt-BR.yml
  • config/locales/views/valuations/pt-BR.yml
  • config/locales/views/loans/pt-BR.yml
  • config/locales/models/user/pt-BR.yml
  • config/locales/models/import/pt-BR.yml
  • config/locales/views/password_mailer/pt-BR.yml
  • config/locales/models/time_series/value/pt-BR.yml
  • config/locales/views/invitations/pt-BR.yml
  • config/locales/views/accounts/pt-BR.yml
  • config/locales/mailers/invitation_mailer/pt-BR.yml
  • config/locales/views/categories/pt-BR.yml
  • config/locales/views/invite_codes/pt-BR.yml
  • config/locales/views/holdings/pt-BR.yml
  • config/locales/views/settings/pt-BR.yml
  • config/locales/models/transfer/pt-BR.yml
  • config/locales/models/entry/pt-BR.yml
  • config/locales/views/depositories/pt-BR.yml
  • config/locales/views/mfa/pt-BR.yml
  • config/locales/views/pages/pt-BR.yml
  • config/locales/views/simplefin_items/pt-BR.yml
  • config/locales/views/family_exports/pt-BR.yml
  • config/locales/views/passwords/pt-BR.yml
  • config/locales/views/credit_cards/pt-BR.yml
  • config/locales/views/settings/api_keys/pt-BR.yml
  • config/locales/views/settings/securities/pt-BR.yml
  • config/locales/views/onboardings/pt-BR.yml
  • config/locales/views/vehicles/pt-BR.yml
  • config/locales/models/account/pt-BR.yml
  • config/locales/views/transfers/pt-BR.yml
  • config/locales/views/imports/pt-BR.yml
  • config/locales/views/transactions/pt-BR.yml
  • config/locales/views/properties/pt-BR.yml
  • config/locales/views/entries/pt-BR.yml
  • config/locales/views/sessions/pt-BR.yml
  • config/locales/views/password_resets/pt-BR.yml
  • config/locales/views/tags/pt-BR.yml
  • config/locales/models/address/pt-BR.yml
  • config/locales/views/other_assets/pt-BR.yml
  • config/locales/views/impersonation_sessions/pt-BR.yml
  • config/locales/views/layout/pt-BR.yml
  • config/locales/views/email_confirmation_mailer/pt-BR.yml
  • config/locales/views/invitation_mailer/pt-BR.yml
  • config/locales/views/tag/deletions/pt-BR.yml
  • config/locales/views/recurring_transactions/pt-BR.yml
  • config/locales/views/merchants/pt-BR.yml
  • config/locales/views/other_liabilities/pt-BR.yml
  • config/locales/models/trend/pt-BR.yml
  • config/locales/views/settings/hostings/pt-BR.yml
  • config/locales/views/trades/pt-BR.yml
  • config/locales/views/reports/pt-BR.yml
  • config/locales/views/category/dropdowns/pt-BR.yml
  • config/locales/views/users/pt-BR.yml
  • config/locales/views/category/deletions/pt-BR.yml
  • config/locales/views/application/pt-BR.yml
  • config/locales/views/plaid_items/pt-BR.yml
  • config/locales/views/cryptos/pt-BR.yml
  • config/locales/views/registrations/pt-BR.yml
  • config/locales/views/investments/pt-BR.yml
  • config/locales/views/subscriptions/pt-BR.yml
config/**/*.{rb,yml,yaml}

📄 CodeRabbit inference engine (AGENTS.md)

Configuration files should be placed in config/ directory, with environment examples in .env.local.example and .env.test.example

Files:

  • config/locales/views/shared/pt-BR.yml
  • config/locales/views/valuations/pt-BR.yml
  • config/locales/views/loans/pt-BR.yml
  • config/locales/models/user/pt-BR.yml
  • config/locales/models/import/pt-BR.yml
  • config/locales/views/password_mailer/pt-BR.yml
  • config/locales/models/time_series/value/pt-BR.yml
  • config/locales/views/invitations/pt-BR.yml
  • config/locales/views/accounts/pt-BR.yml
  • config/locales/mailers/invitation_mailer/pt-BR.yml
  • config/locales/views/categories/pt-BR.yml
  • config/locales/views/invite_codes/pt-BR.yml
  • config/locales/views/holdings/pt-BR.yml
  • config/locales/views/settings/pt-BR.yml
  • config/locales/models/transfer/pt-BR.yml
  • config/locales/models/entry/pt-BR.yml
  • config/locales/views/depositories/pt-BR.yml
  • config/locales/views/mfa/pt-BR.yml
  • config/locales/views/pages/pt-BR.yml
  • config/locales/views/simplefin_items/pt-BR.yml
  • config/locales/views/family_exports/pt-BR.yml
  • config/locales/views/passwords/pt-BR.yml
  • config/locales/views/credit_cards/pt-BR.yml
  • config/locales/views/settings/api_keys/pt-BR.yml
  • config/locales/views/settings/securities/pt-BR.yml
  • config/locales/views/onboardings/pt-BR.yml
  • config/locales/views/vehicles/pt-BR.yml
  • config/locales/models/account/pt-BR.yml
  • config/locales/views/transfers/pt-BR.yml
  • config/locales/views/imports/pt-BR.yml
  • config/locales/views/transactions/pt-BR.yml
  • config/locales/views/properties/pt-BR.yml
  • config/locales/views/entries/pt-BR.yml
  • config/locales/views/sessions/pt-BR.yml
  • config/locales/views/password_resets/pt-BR.yml
  • config/locales/views/tags/pt-BR.yml
  • config/locales/models/address/pt-BR.yml
  • config/locales/views/other_assets/pt-BR.yml
  • config/locales/views/impersonation_sessions/pt-BR.yml
  • config/locales/views/layout/pt-BR.yml
  • config/locales/views/email_confirmation_mailer/pt-BR.yml
  • config/locales/views/invitation_mailer/pt-BR.yml
  • config/locales/views/tag/deletions/pt-BR.yml
  • config/locales/views/recurring_transactions/pt-BR.yml
  • config/locales/views/merchants/pt-BR.yml
  • config/locales/views/other_liabilities/pt-BR.yml
  • config/locales/models/trend/pt-BR.yml
  • config/locales/views/settings/hostings/pt-BR.yml
  • config/locales/views/trades/pt-BR.yml
  • config/locales/views/reports/pt-BR.yml
  • config/locales/views/category/dropdowns/pt-BR.yml
  • config/locales/views/users/pt-BR.yml
  • config/locales/views/category/deletions/pt-BR.yml
  • config/locales/views/application/pt-BR.yml
  • config/locales/views/plaid_items/pt-BR.yml
  • config/locales/views/cryptos/pt-BR.yml
  • config/locales/views/registrations/pt-BR.yml
  • config/locales/views/investments/pt-BR.yml
  • config/locales/views/subscriptions/pt-BR.yml
🧠 Learnings (19)
📓 Common learnings
Learnt from: CR
Repo: we-promise/sure PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-24T16:55:43.069Z
Learning: Applies to config/locales/**/*.yml : Use hierarchical i18n keys by feature: `accounts.index.title`, `transactions.form.amount_label`. Use `t()` helper for all user-facing strings with interpolation for dynamic content.
Learnt from: CR
Repo: we-promise/sure PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-24T16:55:43.069Z
Learning: Applies to **/*.{erb,html.erb,rb} : All user-facing strings must use localization (i18n) via the `t()` helper. Update locale files for each new or changed element.
Learnt from: jjmata
Repo: we-promise/sure PR: 189
File: app/views/password_resets/new.html.erb:14-14
Timestamp: 2025-10-07T09:51:02.265Z
Learning: In the we-promise/sure repository, use i18n methods (like `t()` or `I18n.t`) for all user-facing strings to maintain proper internationalization infrastructure. While translations should be provided, extensive localization work is not a priority at this stage of development.
Learnt from: jjmata
Repo: we-promise/sure PR: 173
File: app/mailers/email_confirmation_mailer.rb:9-9
Timestamp: 2025-10-01T11:40:36.711Z
Learning: In the we-promise/sure repository, i18n (internationalization) is used throughout the application for translations. When making branding configurable (e.g., product names), it's appropriate to add parameters like `product: product_name` to existing `t()` translation calls rather than replacing them with hardcoded strings.
📚 Learning: 2025-11-24T16:55:43.069Z
Learnt from: CR
Repo: we-promise/sure PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-24T16:55:43.069Z
Learning: Applies to config/locales/**/*.yml : Use hierarchical i18n keys by feature: `accounts.index.title`, `transactions.form.amount_label`. Use `t()` helper for all user-facing strings with interpolation for dynamic content.

Applied to files:

  • config/locales/views/shared/pt-BR.yml
  • config/locales/views/valuations/pt-BR.yml
  • config/locales/views/loans/pt-BR.yml
  • config/locales/models/user/pt-BR.yml
  • config/locales/models/import/pt-BR.yml
  • config/locales/models/time_series/value/pt-BR.yml
  • config/locales/views/invitations/pt-BR.yml
  • config/locales/views/accounts/pt-BR.yml
  • config/locales/mailers/invitation_mailer/pt-BR.yml
  • config/locales/views/categories/pt-BR.yml
  • config/locales/views/invite_codes/pt-BR.yml
  • config/locales/views/holdings/pt-BR.yml
  • config/locales/views/settings/pt-BR.yml
  • config/locales/models/transfer/pt-BR.yml
  • config/locales/models/entry/pt-BR.yml
  • config/locales/views/depositories/pt-BR.yml
  • config/locales/views/mfa/pt-BR.yml
  • config/locales/views/pages/pt-BR.yml
  • config/locales/views/simplefin_items/pt-BR.yml
  • config/locales/views/credit_cards/pt-BR.yml
  • config/locales/views/settings/api_keys/pt-BR.yml
  • config/locales/views/settings/securities/pt-BR.yml
  • config/locales/views/onboardings/pt-BR.yml
  • config/locales/views/vehicles/pt-BR.yml
  • config/locales/models/account/pt-BR.yml
  • config/locales/views/transfers/pt-BR.yml
  • config/locales/views/imports/pt-BR.yml
  • config/locales/views/transactions/pt-BR.yml
  • config/locales/views/properties/pt-BR.yml
  • config/locales/views/tags/pt-BR.yml
  • config/locales/models/address/pt-BR.yml
  • config/locales/views/other_assets/pt-BR.yml
  • config/locales/views/layout/pt-BR.yml
  • config/locales/views/recurring_transactions/pt-BR.yml
  • config/locales/views/merchants/pt-BR.yml
  • config/locales/views/other_liabilities/pt-BR.yml
  • config/locales/models/trend/pt-BR.yml
  • config/locales/views/settings/hostings/pt-BR.yml
  • config/locales/views/trades/pt-BR.yml
  • config/locales/views/reports/pt-BR.yml
  • config/locales/views/users/pt-BR.yml
  • config/locales/views/application/pt-BR.yml
  • config/locales/views/plaid_items/pt-BR.yml
  • config/locales/views/cryptos/pt-BR.yml
  • config/locales/views/registrations/pt-BR.yml
  • config/locales/views/investments/pt-BR.yml
📚 Learning: 2025-11-24T16:55:43.069Z
Learnt from: CR
Repo: we-promise/sure PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-24T16:55:43.069Z
Learning: Applies to **/*.{erb,html.erb,rb} : All user-facing strings must use localization (i18n) via the `t()` helper. Update locale files for each new or changed element.

Applied to files:

  • config/locales/views/shared/pt-BR.yml
  • config/locales/views/valuations/pt-BR.yml
  • config/locales/views/loans/pt-BR.yml
  • config/locales/models/user/pt-BR.yml
  • config/locales/models/import/pt-BR.yml
  • config/locales/models/time_series/value/pt-BR.yml
  • config/locales/views/invitations/pt-BR.yml
  • config/locales/views/accounts/pt-BR.yml
  • config/locales/views/categories/pt-BR.yml
  • config/locales/views/invite_codes/pt-BR.yml
  • config/locales/views/holdings/pt-BR.yml
  • config/locales/views/settings/pt-BR.yml
  • config/locales/models/transfer/pt-BR.yml
  • config/locales/models/entry/pt-BR.yml
  • config/locales/views/depositories/pt-BR.yml
  • config/locales/views/mfa/pt-BR.yml
  • config/locales/views/pages/pt-BR.yml
  • config/locales/views/simplefin_items/pt-BR.yml
  • config/locales/views/credit_cards/pt-BR.yml
  • config/locales/views/settings/api_keys/pt-BR.yml
  • config/locales/views/onboardings/pt-BR.yml
  • config/locales/views/vehicles/pt-BR.yml
  • config/locales/models/account/pt-BR.yml
  • config/locales/views/transfers/pt-BR.yml
  • config/locales/views/imports/pt-BR.yml
  • config/locales/views/transactions/pt-BR.yml
  • config/locales/views/properties/pt-BR.yml
  • config/locales/views/entries/pt-BR.yml
  • config/locales/views/password_resets/pt-BR.yml
  • config/locales/views/tags/pt-BR.yml
  • config/locales/models/address/pt-BR.yml
  • config/locales/views/other_assets/pt-BR.yml
  • config/locales/views/layout/pt-BR.yml
  • config/locales/views/tag/deletions/pt-BR.yml
  • config/locales/views/recurring_transactions/pt-BR.yml
  • config/locales/views/merchants/pt-BR.yml
  • config/locales/views/other_liabilities/pt-BR.yml
  • config/locales/models/trend/pt-BR.yml
  • config/locales/views/settings/hostings/pt-BR.yml
  • config/locales/views/trades/pt-BR.yml
  • config/locales/views/reports/pt-BR.yml
  • config/locales/views/users/pt-BR.yml
  • config/locales/views/application/pt-BR.yml
  • config/locales/views/plaid_items/pt-BR.yml
  • config/locales/views/cryptos/pt-BR.yml
  • config/locales/views/registrations/pt-BR.yml
  • config/locales/views/investments/pt-BR.yml
📚 Learning: 2025-11-24T16:56:13.406Z
Learnt from: CR
Repo: we-promise/sure PR: 0
File: .cursor/rules/project-conventions.mdc:0-0
Timestamp: 2025-11-24T16:56:13.406Z
Learning: Applies to **/*.{rb,js,erb} : Format currencies, numbers, dates, and other values server-side, then pass to Stimulus controllers for display only

Applied to files:

  • config/locales/models/import/pt-BR.yml
  • config/locales/models/time_series/value/pt-BR.yml
  • config/locales/views/application/pt-BR.yml
📚 Learning: 2025-11-24T16:54:59.198Z
Learnt from: CR
Repo: we-promise/sure PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-11-24T16:54:59.198Z
Learning: Applies to app/views/**/*.erb : Use server-side formatting for currencies, numbers, and dates instead of client-side

Applied to files:

  • config/locales/models/import/pt-BR.yml
  • config/locales/models/time_series/value/pt-BR.yml
  • config/locales/views/application/pt-BR.yml
📚 Learning: 2025-11-24T16:55:43.069Z
Learnt from: CR
Repo: we-promise/sure PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-24T16:55:43.069Z
Learning: Applies to **/*.{erb,html.erb,rb} : Use server-side formatting for currencies, numbers, and dates. Do not format in JavaScript.

Applied to files:

  • config/locales/models/import/pt-BR.yml
  • config/locales/models/time_series/value/pt-BR.yml
📚 Learning: 2025-11-24T16:55:43.069Z
Learnt from: CR
Repo: we-promise/sure PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-24T16:55:43.069Z
Learning: Applies to app/models/**/*.rb : All monetary values stored in base currency (user's primary currency). Use `Money` objects for currency conversion and formatting.

Applied to files:

  • config/locales/models/import/pt-BR.yml
  • config/locales/models/time_series/value/pt-BR.yml
  • config/locales/models/account/pt-BR.yml
📚 Learning: 2025-11-24T16:54:59.198Z
Learnt from: CR
Repo: we-promise/sure PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-11-24T16:54:59.198Z
Learning: Applies to app/models/**/*.rb : Store all monetary values in base currency (user's primary currency) and use Money objects for conversion

Applied to files:

  • config/locales/models/import/pt-BR.yml
  • config/locales/models/time_series/value/pt-BR.yml
  • config/locales/models/account/pt-BR.yml
📚 Learning: 2025-11-04T16:21:39.347Z
Learnt from: sokie
Repo: we-promise/sure PR: 276
File: app/controllers/reports_controller.rb:80-84
Timestamp: 2025-11-04T16:21:39.347Z
Learning: The we-promise/sure codebase uses a custom Money class (lib/money.rb) that treats numeric inputs as dollar amounts, not fractional units (cents). When Money.new receives a numeric value, it converts it directly to BigDecimal via BigDecimal(obj.to_s) without multiplication. This differs from the standard ruby-money gem which expects cents/fractional units.

Applied to files:

  • config/locales/models/time_series/value/pt-BR.yml
📚 Learning: 2025-10-01T11:40:36.711Z
Learnt from: jjmata
Repo: we-promise/sure PR: 173
File: app/mailers/email_confirmation_mailer.rb:9-9
Timestamp: 2025-10-01T11:40:36.711Z
Learning: In the we-promise/sure repository, i18n (internationalization) is used throughout the application for translations. When making branding configurable (e.g., product names), it's appropriate to add parameters like `product: product_name` to existing `t()` translation calls rather than replacing them with hardcoded strings.

Applied to files:

  • config/locales/views/invitations/pt-BR.yml
  • config/locales/mailers/invitation_mailer/pt-BR.yml
  • config/locales/views/onboardings/pt-BR.yml
  • config/locales/views/layout/pt-BR.yml
  • config/locales/views/settings/hostings/pt-BR.yml
  • config/locales/views/subscriptions/pt-BR.yml
📚 Learning: 2025-11-24T16:55:43.069Z
Learnt from: CR
Repo: we-promise/sure PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-24T16:55:43.069Z
Learning: Applies to **/*.rb : Use Rails pluralization in i18n: `t("transactions.count", count: transactions.count)`.

Applied to files:

  • config/locales/models/transfer/pt-BR.yml
  • config/locales/models/account/pt-BR.yml
  • config/locales/views/transactions/pt-BR.yml
📚 Learning: 2025-10-07T09:51:02.265Z
Learnt from: jjmata
Repo: we-promise/sure PR: 189
File: app/views/password_resets/new.html.erb:14-14
Timestamp: 2025-10-07T09:51:02.265Z
Learning: In the we-promise/sure repository, use i18n methods (like `t()` or `I18n.t`) for all user-facing strings to maintain proper internationalization infrastructure. While translations should be provided, extensive localization work is not a priority at this stage of development.

Applied to files:

  • config/locales/views/onboardings/pt-BR.yml
  • config/locales/views/layout/pt-BR.yml
📚 Learning: 2025-11-24T16:56:30.669Z
Learnt from: CR
Repo: we-promise/sure PR: 0
File: .cursor/rules/project-design.mdc:0-0
Timestamp: 2025-11-24T16:56:30.669Z
Learning: Account model is a Rails delegated type with subtypes: Depository, Investment, Crypto, Property, Vehicle, OtherAsset (assets) and CreditCard, Loan, OtherLiability (liabilities)

Applied to files:

  • config/locales/models/account/pt-BR.yml
📚 Learning: 2025-11-24T16:56:30.669Z
Learnt from: CR
Repo: we-promise/sure PR: 0
File: .cursor/rules/project-design.mdc:0-0
Timestamp: 2025-11-24T16:56:30.669Z
Learning: Entry model is a Rails delegated type with three subtypes: Valuation (absolute account value), Transaction (balance modification), and Trade (buy/sell for investment accounts)

Applied to files:

  • config/locales/models/account/pt-BR.yml
📚 Learning: 2025-11-24T16:54:59.198Z
Learnt from: CR
Repo: we-promise/sure PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-11-24T16:54:59.198Z
Learning: Domain model structure: User → has many Accounts → has many Transactions; Account types include checking, savings, credit cards, investments, crypto, loans, properties

Applied to files:

  • config/locales/models/account/pt-BR.yml
📚 Learning: 2025-11-24T16:56:13.406Z
Learnt from: CR
Repo: we-promise/sure PR: 0
File: .cursor/rules/project-conventions.mdc:0-0
Timestamp: 2025-11-24T16:56:13.406Z
Learning: Use Rails concerns for code organization around model 'traits' and shared functionality, not just for moving code to another location. Prefer models answering questions about themselves with methods like account.balance_series over service-like patterns

Applied to files:

  • config/locales/models/account/pt-BR.yml
📚 Learning: 2025-11-24T16:55:43.069Z
Learnt from: CR
Repo: we-promise/sure PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-24T16:55:43.069Z
Learning: Core domain model: User → Accounts → Transactions. Accounts support types: checking, savings, credit cards, investments, crypto, loans, properties. Transactions belong to Categories and may have Tags and Rules.

Applied to files:

  • config/locales/models/account/pt-BR.yml
📚 Learning: 2025-11-24T16:55:43.069Z
Learnt from: CR
Repo: we-promise/sure PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-11-24T16:55:43.069Z
Learning: Use Plaid integration for real-time bank account syncing via `PlaidItem`, `Sync` models, and background jobs for data updates.

Applied to files:

  • config/locales/views/plaid_items/pt-BR.yml
📚 Learning: 2025-11-24T16:54:59.198Z
Learnt from: CR
Repo: we-promise/sure PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-11-24T16:54:59.198Z
Learning: Use PlaidItem to manage Plaid connections and Sync to track sync operations for bank account syncing

Applied to files:

  • config/locales/views/plaid_items/pt-BR.yml
🪛 YAMLlint (1.37.1)
config/locales/views/accounts/pt-BR.yml

[error] 115-115: duplication of key "new" in mapping

(key-duplicates)

🔇 Additional comments (63)
config/locales/views/investments/pt-BR.yml (1)

1-18: Hierarchical i18n structure is well-organized and follows coding guidelines.

The Brazilian Portuguese translations for investments views are properly structured with clear hierarchical nesting (investments.edit.edit, investments.form.none, etc.) and appropriate use of interpolation for dynamic content (line 5: %{account}). The multi-line string for total_value_tooltip is correctly formatted in YAML.

config/locales/views/family_exports/pt-BR.yml (1)

1-7: Hierarchical i18n structure looks good.

The file follows proper YAML conventions and the hierarchical key structure (family_exports.list.<status>) aligns well with the coding guidelines. Portuguese translations are accurate and contextually appropriate. As per coding guidelines, ensure this file and similar locale files use t() helper calls in views to reference these keys.

config/locales/views/pages/pt-BR.yml (1)

1-37: Well-structured Brazilian Portuguese translations following i18n guidelines.

The file correctly implements hierarchical keys organized by feature (pages.changelog, pages.dashboard.*) and properly uses interpolation placeholders (%{name} on lines 7, 21, 22) for dynamic content. The YAML structure is valid with correct nesting and document markers.

config/locales/views/merchants/pt-BR.yml (2)

1-27: Good alignment with i18n guidelines and consistent hierarchical structure.

The file follows the established hierarchical i18n pattern (family_merchants.create.error, family_merchants.form.name_placeholder, etc.) as outlined in the coding guidelines. The organization by action (create, destroy, edit, index, update) and feature context is clean and maintainable. All user-facing strings are appropriately localized.


19-20: Verify YAML syntax for multi-line string value.

The confirm_body value spans lines 19-20 without explicit YAML multi-line markers (e.g., | for literal or > for folded). This implicit continuation may not parse correctly as a single string in all YAML processors.

Recommended fix — use explicit folded scalar syntax to ensure proper parsing:

  confirm_body: >
-   Tem certeza de que deseja excluir este comerciante? Remover este comerciante
-   desvinculará todas as transações associadas e pode afetar seus relatórios.
+   Tem certeza de que deseja excluir este comerciante? Remover este comerciante
+   desvinculará todas as transações associadas e pode afetar seus relatórios.

Alternatively, join into a single line if the message is not too long. Verify that existing translation files in config/locales/ use similar multi-line patterns or explicit syntax.

config/locales/views/settings/api_keys/pt-BR.yml (1)

1-76: Well-structured translation file following i18n best practices.

The Brazilian Portuguese translations are properly organized with hierarchical keys by feature (settings.api_keys_controller, settings.api_keys.show|new|created), correct YAML syntax, and appropriate use of Rails i18n interpolation syntax (%{product_name}). The translations cover all necessary UI elements including controller messages, view sections, labels, placeholders, help text, warnings, and actions.

config/locales/views/simplefin_items/pt-BR.yml (1)

1-60: Verify SimpleFin branding consistency against English locale files.

The translation file follows Rails i18n conventions and hierarchical structure well, with proper key organization and interpolation placeholders. However, brand name variations appear in the pt-BR file:

  • Lines 14, 24: "SimpleFin Bridge"
  • Lines 36, 57: "SimpleFIN" (all caps)
  • Other lines: "SimpleFin" (mixed case)

Compare against the English locale file to confirm whether these represent intentional product distinctions (SimpleFin Bridge is a separate service/API, SimpleFIN in all caps is official branding, etc.) or if standardization is needed throughout.

config/locales/views/onboardings/pt-BR.yml (1)

1-28: File structure follows i18n conventions; verify view integration separately.

The translation file properly uses hierarchical organization by feature/section (onboardings > header/preferences/profile/show) and correctly applies interpolation (%{product_name}) for dynamic content. YAML structure is valid with proper indentation.

Ensure that:

  • All translation keys defined here are used in corresponding onboarding view templates via the t() helper
  • The English locale file mirrors this key structure
  • Translations are reviewed by a native Brazilian Portuguese speaker for accuracy and cultural appropriateness
config/locales/views/properties/pt-BR.yml (4)

6-23: Form fields structure looks correct.

The form field translations follow a consistent pattern with labels and placeholders. The hierarchy (properties.form.address_line1, properties.form.area, etc.) properly mirrors the field structure as per coding guidelines.


24-32: Overview and new sections follow the pattern correctly.

The new and overview sections maintain proper hierarchical structure with descriptive keys. The translations appear semantically appropriate for property management UI.


4-5: Verify that the account variable is passed when using properties.edit.edit translation.

The interpolation variable %{account} requires the corresponding variable to be available in the rendering context. Search the codebase for calls to this translation key (e.g., t('properties.edit.edit', account: ...)) to ensure the variable is properly supplied.


1-32: Verify key consistency with the English locale file.

The hierarchical structure and YAML formatting follow the coding guidelines correctly. However, ensure the pt-BR keys match the structure in the English locale file (config/locales/views/properties/en.yml), and verify that the interpolation variable %{account} on line 5 is used consistently across all related locale files.

config/locales/views/depositories/pt-BR.yml (1)

1-10: Translation structure is sound and follows i18n conventions.

The hierarchical key organization (depositories.edit.edit, depositories.form.*, etc.) and appropriate use of interpolation (%{account}) align with established patterns.

config/locales/views/shared/pt-BR.yml (1)

1-14: Hierarchical organization and markup handling are appropriate.

The structure properly groups shared UI components, and the embedded HTML in body_html (Line 6) follows Rails convention for rich content in translation strings.

config/locales/views/subscriptions/pt-BR.yml (1)

1-4: Concise and appropriate use of interpolation.

The single translation key follows naming conventions, and the %{product_name} interpolation aligns with patterns for configurable branding mentioned in the learnings.

config/locales/views/application/pt-BR.yml (1)

1-10: Currency formatting values are correct for Brazil.

The number format configuration properly reflects Brazilian conventions: comma for decimals, period for thousands grouping, and R$ symbol. All precision and format settings are appropriate.

config/locales/views/password_mailer/pt-BR.yml (1)

1-10: Email translations are complete and properly structured.

Hierarchical keys, multi-line content, and appropriate use of %{product_name} interpolation follow established patterns. All necessary email elements (subject, body, CTA) are present.

config/locales/views/tags/pt-BR.yml (1)

1-23: Comprehensive CRUD translations with consistent messaging patterns.

The file covers all tag management operations (create, destroy, edit, update, index, form, new) with a consistent message structure. Interpolation for error details and clear, natural Portuguese phrasing make the UX translations effective.

config/locales/views/password_resets/pt-BR.yml (1)

1-12: Password reset flow translations are complete and appropriate.

All password reset views and state transitions (new, edit, update) have clear, natural Portuguese translations. Error and success messages are well-positioned for user guidance through the flow.

config/locales/models/time_series/value/pt-BR.yml (1)

1-9: Verify the activemodel namespace is appropriate for this model's validation.

The file uses activemodel: namespace for validation errors. Confirm that the Time Series::Value model is configured to use activemodel validations (e.g., via ActiveModel::Validations inclusion) rather than ActiveRecord validations, which would use the activerecord: namespace. Based on project conventions, complex business logic validations typically use ActiveRecord, suggesting activerecord: may be the correct namespace.

config/locales/views/valuations/pt-BR.yml (1)

1-30: Structure and hierarchy look solid.

The valuations translations follow the hierarchical i18n key pattern (valuations → form/header/index/new/show → individual labels) as expected per coding guidelines. Translations are complete and properly formatted.

config/locales/views/category/deletions/pt-BR.yml (1)

1-15: Deletion flow translations are well-structured with proper parameterization.

The category deletion translations correctly use interpolation for the category name (%{category_name}) in multiple contexts, enabling reusable translations per coding guidelines.

config/locales/views/passwords/pt-BR.yml (1)

1-10: Clear, minimal password form translations.

Structure is correct and translations are appropriately concise for form labels and feedback messages.

config/locales/views/email_confirmation_mailer/pt-BR.yml (1)

1-10: Email confirmation translations properly parameterized for branding and dynamic content.

Uses %{product_name} and %{hours} interpolations as expected per learnings. Structure and multi-line text formatting are correct.

config/locales/views/vehicles/pt-BR.yml (1)

1-25: Vehicle translations well-organized with realistic form placeholders.

Structure follows the feature-context-element hierarchy correctly. Form placeholders use practical examples, and overview sections are clearly labeled. The %{account} interpolation in the edit view is appropriate.

config/locales/views/layout/pt-BR.yml (1)

1-12: Verify dotted key structure matches existing locale files.

Line 4 uses a dotted key name ("auth.sign_up") while line 9 uses normal nesting ("shared" → "footer"). This inconsistency may indicate either a stylistic choice or a mismatch with how the views reference these keys. Without seeing the existing en-US structure or view code, I cannot confirm the intended key path.

To verify the structure is correct, please confirm:

  • Does the existing en-US file at config/locales/views/layout/en.yml use the same dotted key structure for "auth.sign_up"?
  • Are the keys referenced in view code as t('layouts.auth.sign_up.sign_in') or with a different path?

Alternatively, if this was intentional, consider documenting why the structure differs from the "shared" section.

config/locales/views/invite_codes/pt-BR.yml (1)

1-7: Index view translations are clear and concise.

Hierarchical structure is correct, and multi-line text is properly formatted. Descriptions are clear about invite code behavior.

config/locales/views/invitation_mailer/pt-BR.yml (1)

1-8: Invitation mailer translations are well-parameterized for reusability.

Correctly uses multiple interpolations (%{inviter}, %{family}, %{product_name}, %{days}) per the learning on parameterized branding. Structure and formatting are consistent with mailer i18n patterns.

config/locales/views/loans/pt-BR.yml (1)

1-23: LGTM!

The hierarchical i18n structure follows the coding guidelines correctly, with clear feature-specific keys. All Portuguese translations are contextually appropriate, and interpolation syntax is properly used.

config/locales/models/user/pt-BR.yml (1)

1-21: LGTM!

The file correctly follows Rails ActiveRecord i18n conventions for model attributes and error messages. Multi-line error strings are properly formatted, and dynamic content interpolation is correct.

config/locales/views/settings/securities/pt-BR.yml (1)

1-12: LGTM!

The hierarchical structure correctly nests settings → securities → show. Multi-line strings for confirmation prompts and descriptions are properly formatted with YAML continuation.

config/locales/views/other_assets/pt-BR.yml (1)

1-9: LGTM!

Hierarchical structure is correct. The duplication of balance_tracking_info across edit and new sections follows standard Rails i18n practice, allowing independent context management for identical text.

config/locales/views/cryptos/pt-BR.yml (1)

1-7: LGTM!

Concise and correctly structured with proper hierarchical nesting and interpolation syntax.

config/locales/views/other_liabilities/pt-BR.yml (1)

1-7: LGTM!

Consistent structure with related view locale files. Hierarchical nesting and interpolation are correct.

config/locales/views/categories/pt-BR.yml (1)

1-34: LGTM!

Comprehensive coverage with clear hierarchical nesting. The dual namespace (categories + category for dropdowns) is appropriately organized. Success messages and empty/loading states follow consistent patterns. Portuguese translations are contextually appropriate.

config/locales/models/address/pt-BR.yml (1)

1-11: Verify that the address: namespace matches the Address model name.

The singular form is standard Rails convention for i18n keys, but confirm this matches the actual model class definition in app/models/.

config/locales/views/category/dropdowns/pt-BR.yml (1)

1-11: LGTM!

The hierarchical structure follows coding guidelines with feature-based keys (category.dropdowns.row.delete, category.dropdowns.show.clear, etc.). All translations are complete and properly formatted.

config/locales/models/trend/pt-BR.yml (1)

1-15: LGTM!

The activemodel error structure follows Rails conventions correctly. Interpolation syntax with %{} placeholders is proper, and multi-line YAML strings are correctly indented.

config/locales/views/transfers/pt-BR.yml (1)

1-31: LGTM!

The hierarchical structure is well-organized with feature-based keys (transfers.create.success, transfers.form.amount, etc.). Multi-line strings are properly formatted with correct indentation.

config/locales/models/entry/pt-BR.yml (1)

1-10: LGTM!

Follows Rails activerecord error conventions. Interpolation with three placeholders (%{sell_qty}, %{ticker}, %{current_qty}) is syntactically correct, and multi-line formatting is proper.

config/locales/views/mfa/pt-BR.yml (1)

1-38: LGTM!

Comprehensive and well-organized MFA translations with proper hierarchical structure (mfa.backup_codes.backup_codes_description, mfa.new.code_label, etc.). Formatting and multi-line strings are correct throughout.

config/locales/views/users/pt-BR.yml (1)

1-17: LGTM!

Feature-based hierarchical keys are properly structured (users.destroy.success, users.update.email_change_initiated, etc.). Multi-line strings are correctly formatted.

config/locales/views/imports/pt-BR.yml (1)

1-47: LGTM (excluding the quotation mark issue above).

The rest of the file shows proper hierarchical structure with comprehensive imports translations. Interpolation syntax is correct elsewhere (e.g., lines 30, 39, 43, 45, 73, 93), and multi-line YAML formatting is proper throughout.

Also applies to: 53-99

config/locales/views/settings/pt-BR.yml (1)

1-112: LGTM!

Comprehensive settings translations with proper multi-level hierarchical structure (settings.ai_prompts.show.page_title, settings.profiles.show.confirm_delete.body, etc.). Interpolation syntax is correct (lines 78, 55), and multi-line strings are properly formatted throughout.

config/locales/views/credit_cards/pt-BR.yml (1)

1-25: Structure and translations look good.

The hierarchy follows best practices (e.g., credit_cards.form.annual_fee) and the interpolation parameter %{account} on line 5 is properly used. All keys are well-organized by feature section.

config/locales/views/tag/deletions/pt-BR.yml (1)

1-15: Proper hierarchy and multiline string handling.

The multiline strings on lines 11-13 are correctly formatted with preserved line breaks. The interpolation for %{tag_name} on lines 8-9 and 11 is properly set up. All keys follow the feature hierarchy pattern.

config/locales/views/impersonation_sessions/pt-BR.yml (1)

1-15: Simple, consistent structure.

Each action (approve, complete, create, etc.) has a single success key with appropriate Portuguese translations. The hierarchy follows the guideline pattern. Straight forward and well-organized.

config/locales/views/sessions/pt-BR.yml (1)

1-23: Well-structured authentication flows.

The hierarchy correctly groups session creation, destruction, OpenID Connect, and login form fields. Multiline content on lines 22-23 for the demo banner is properly quoted and formatted. All error and success messages are clearly organized by action and section.

config/locales/views/settings/hostings/pt-BR.yml (1)

1-73: Comprehensive hosting settings with proper interpolation.

Large and complex file with well-organized sections for various hosting configuration features (invite codes, provider selection, OpenAI settings, etc.). Interpolation parameters like %{product}, %{used}, %{limit}, %{percentage}, and %{plan} are consistently used for dynamic content. Multiline descriptions are properly formatted. Hierarchy correctly follows the pattern settings.hostings.{feature}.{key}.

config/locales/views/trades/pt-BR.yml (1)

1-38: Clean structure for investment trades.

The trades section is well-organized with form fields, headers, and trade details separated into appropriate subsections. Multiline descriptions on lines 30 and 33 are properly formatted. Placeholders like ticker_placeholder use realistic examples. Hierarchy follows best practices.

config/locales/views/plaid_items/pt-BR.yml (1)

1-31: Good structure for Plaid integration flows.

The hierarchy properly groups account linking operations, error states, and account selection flows. Interpolation parameters %{timestamp} (line 23) and %{account_name} (line 28) are correctly used for dynamic content. Multiline descriptions for error states and confirmations are properly formatted.

config/locales/views/holdings/pt-BR.yml (1)

1-37: Well-structured investment holdings interface.

The holdings translations properly organize portfolio components (cash, holdings overview, individual holding details). Interpolation parameters %{qty}, %{security}, and %{price} are correctly used on line 35 to display trade history entries. Multiline description for missing price data is properly formatted. All sections follow the hierarchy guideline pattern.

config/locales/models/import/pt-BR.yml (1)

1-13: LGTM!

Proper hierarchical i18n structure for Import model translations. Attributes and error messages are correctly organized under activerecord namespaces.

config/locales/views/entries/pt-BR.yml (1)

1-14: LGTM!

Clean hierarchical structure for entries view translations with proper action-based organization (create, destroy, empty, loading, update).

config/locales/views/invitations/pt-BR.yml (1)

1-19: LGTM!

Proper hierarchical structure with consistent use of interpolation parameters (%{product_name}) that align with related mailer translations and learnings about parameterized i18n keys.

config/locales/views/registrations/pt-BR.yml (1)

1-25: LGTM!

Well-structured registration view translations with consistent hierarchical organization and proper use of parameterized interpolation (%{inviter}, %{role}, %{family}, %{product_name}) aligned with the application's i18n conventions.

config/locales/mailers/invitation_mailer/pt-BR.yml (1)

1-5: LGTM!

Proper mailer translation structure with consistent interpolation parameters (%{inviter}, %{product_name}) that complement related invitation view and UI translations.

config/locales/models/account/pt-BR.yml (1)

1-21: LGTM!

Comprehensive Account model translations with proper hierarchical organization. Model subtypes (credit card, depository, investment, loan, etc.) are correctly nested following the delegated type structure.

config/locales/models/transfer/pt-BR.yml (1)

1-22: LGTM!

Well-organized Transfer model translations with comprehensive validation error messages under activerecord namespace. Proper multi-line YAML formatting and consistent interpolation for %{to_account} in transfer names.

config/locales/views/accounts/pt-BR.yml (1)

1-113: Comprehensive accounts view translations well-organized.

Lines 1-113 follow proper hierarchical i18n structure with consistent interpolation patterns (%{type}, %{provider}, %{account_name}, %{account_group}, %{product}, %{error}). Account type mappings and UI strings are well-organized by action and concern (create, destroy, form, index, show, sync, types, etc.).

config/locales/views/transactions/pt-BR.yml (1)

1-86: Proper i18n structure and compliance with guidelines.

The file follows hierarchical i18n key organization by feature (transactions.*), uses proper YAML structure, and employs correct Rails i18n interpolation syntax (%{...}). All sections are logically organized by view/feature (form, new, show, searches), and translations appear complete for the transactions domain.

To ensure completeness, please verify that all key paths in this file match their counterparts in the English locale file (config/locales/views/transactions/en.yml) and confirm that all view templates reference these exact keys via the t() helper.

config/locales/views/recurring_transactions/pt-BR.yml (1)

1-45: Proper i18n structure with complete section coverage.

The file follows hierarchical i18n organization under recurring_transactions.*, uses correct YAML structure (including proper list formatting under triggers), and employs Rails i18n interpolation syntax correctly (%{...}). All primary sections are covered: title, info, table headers, status values, and badges.

Please verify that this file's key paths align with the corresponding English locale file (config/locales/views/recurring_transactions/en.yml) and that all references in view templates use the exact keys defined here via the t() helper.

config/locales/views/reports/pt-BR.yml (1)

1-61: Comprehensive Brazilian Portuguese translation structure looks good.

The file follows the hierarchical i18n key convention with clear feature-based organization (reportsindex, summary, budget_performance, etc.). Interpolation placeholders are correctly formatted using %{var} syntax throughout, and the translations appropriately cover all UI sections with proper nesting for complex components like filters, sort options, and export formats. Based on coding guidelines, this aligns well with the required localization patterns.

Also applies to: 65-126

Comment thread config/locales/views/accounts/pt-BR.yml Outdated
Comment thread config/locales/views/imports/pt-BR.yml
Comment thread config/locales/views/reports/pt-BR.yml
@jjmata jjmata added this to the v0.6.6 milestone Dec 8, 2025
@jjmata jjmata moved this to In review in Old releases (v0.6.6) Dec 8, 2025
@jjmata jjmata merged commit ea35296 into we-promise:main Dec 9, 2025
6 checks passed
@github-project-automation github-project-automation Bot moved this from In review to Done in Old releases (v0.6.6) Dec 9, 2025
jjmata added a commit that referenced this pull request Dec 12, 2025
* feat: Allow account linking for Enable Banking accounts

* fix: Typo in function name

* fix: naming issue

* fix: Add missing Enable Banking route

* feat: Add ability to link Enable Banking when adding a new account

* Mispelling

* fix: typo in method call

* fix: typo in column name

* Review suggestions

* Linter noise

* Small copy changes to avoid mobile UI blowout

* Provider generator (#364)

* Move provider config to family

* Update schema.rb

* Add provier generator

* Add table creation also

* FIX generator namespace

* Add support for global providers also

* Remove over-engineered stuff

* FIX parser

* FIX linter

* Some generator fixes

* Update generator with fixes

* Update item_model.rb.tt

* Add missing linkable concern

* Add missing routes

* Update adapter.rb.tt

* Update connectable_concern.rb.tt

* Update unlinking_concern.rb.tt

* Update family_generator.rb

* Update family_generator.rb

* Delete .claude/settings.local.json

Signed-off-by: soky srm <sokysrm@gmail.com>

* Move docs under API related folder

* Rename Rails generator doc

* Light edits to LLM generated doc

* Small Lunch Flow config panel regressions.

---------

Signed-off-by: soky srm <sokysrm@gmail.com>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>

* Skip generators autoloading (#430)

* Include Enable Banking items in Syncer (#434)

* feat: Include Enable Banking items in Syncer

* feat: include only active Enable Banking accounts

* Fix budgets page UI (#427)

* fix: Budget UI improvements

* feat: Reduce padding for sub-categories

* fix: Adjust padding for sub-category arrow

* Revert "feat: Reduce padding for sub-categories"

This reverts commit 7516c5a.

* Revert "fix: Adjust padding for sub-category arrow"

This reverts commit ebc8254.

* fix: adjust padding for sub-categories

* fix: Add padding to uncategorized budget

* fix: Remove unnecessary HTML tag

* feat: Add translation keys for budgeted/actual

* feat(lang): add all brazilian portuguese translations (#416)

* feat(lang): add all brazilian portuguese translations

* feat: update pt-BR errors on translation

* fix: atualizar fix base

* feat: add reports translations

* feat: finish translation to brazilian portuguese

* fix: add to supported locales

* fix: number of translations

* fix: errors on translations

* fix: error on rubocop lint

---------

Co-authored-by: Leonardo Ralph <theleoralph@gmail.com>

* Add exclude transaction rule action (#437)

* Initial plan

* Add ExcludeTransaction rule action executor with tests

Co-authored-by: jjmata <187772+jjmata@users.noreply.github.com>

* Copy clarification

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jjmata <187772+jjmata@users.noreply.github.com>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>

* Preparing for v0.6.6-alpha.3

Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>

* fix: remove account_id clearing for Enable Banking accounts

* fix: Remove unexisting available_balance attribute and rename variable for consistency

---------

Signed-off-by: soky srm <sokysrm@gmail.com>
Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
Co-authored-by: soky srm <sokysrm@gmail.com>
Co-authored-by: Marcon Neves <marconwillian@icloud.com>
Co-authored-by: Leonardo Ralph <theleoralph@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jjmata <187772+jjmata@users.noreply.github.com>
itsLeonB referenced this pull request in itsLeonB/sure Jan 28, 2026
)

* feat(lang): add all brazilian portuguese translations

* feat: update pt-BR errors on translation

* fix: atualizar fix base

* feat: add reports translations

* feat: finish translation to brazilian portuguese

* fix: add to supported locales

* fix: number of translations

* fix: errors on translations

* fix: error on rubocop lint

---------

Co-authored-by: Leonardo Ralph <theleoralph@gmail.com>
itsLeonB referenced this pull request in itsLeonB/sure Jan 28, 2026
* feat: Allow account linking for Enable Banking accounts

* fix: Typo in function name

* fix: naming issue

* fix: Add missing Enable Banking route

* feat: Add ability to link Enable Banking when adding a new account

* Mispelling

* fix: typo in method call

* fix: typo in column name

* Review suggestions

* Linter noise

* Small copy changes to avoid mobile UI blowout

* Provider generator (maybe-finance#364)

* Move provider config to family

* Update schema.rb

* Add provier generator

* Add table creation also

* FIX generator namespace

* Add support for global providers also

* Remove over-engineered stuff

* FIX parser

* FIX linter

* Some generator fixes

* Update generator with fixes

* Update item_model.rb.tt

* Add missing linkable concern

* Add missing routes

* Update adapter.rb.tt

* Update connectable_concern.rb.tt

* Update unlinking_concern.rb.tt

* Update family_generator.rb

* Update family_generator.rb

* Delete .claude/settings.local.json

Signed-off-by: soky srm <sokysrm@gmail.com>

* Move docs under API related folder

* Rename Rails generator doc

* Light edits to LLM generated doc

* Small Lunch Flow config panel regressions.

---------

Signed-off-by: soky srm <sokysrm@gmail.com>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>

* Skip generators autoloading (maybe-finance#430)

* Include Enable Banking items in Syncer (maybe-finance#434)

* feat: Include Enable Banking items in Syncer

* feat: include only active Enable Banking accounts

* Fix budgets page UI (#427)

* fix: Budget UI improvements

* feat: Reduce padding for sub-categories

* fix: Adjust padding for sub-category arrow

* Revert "feat: Reduce padding for sub-categories"

This reverts commit 7516c5a.

* Revert "fix: Adjust padding for sub-category arrow"

This reverts commit ebc8254.

* fix: adjust padding for sub-categories

* fix: Add padding to uncategorized budget

* fix: Remove unnecessary HTML tag

* feat: Add translation keys for budgeted/actual

* feat(lang): add all brazilian portuguese translations (maybe-finance#416)

* feat(lang): add all brazilian portuguese translations

* feat: update pt-BR errors on translation

* fix: atualizar fix base

* feat: add reports translations

* feat: finish translation to brazilian portuguese

* fix: add to supported locales

* fix: number of translations

* fix: errors on translations

* fix: error on rubocop lint

---------

Co-authored-by: Leonardo Ralph <theleoralph@gmail.com>

* Add exclude transaction rule action (#437)

* Initial plan

* Add ExcludeTransaction rule action executor with tests

Co-authored-by: jjmata <187772+jjmata@users.noreply.github.com>

* Copy clarification

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jjmata <187772+jjmata@users.noreply.github.com>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>

* Preparing for v0.6.6-alpha.3

Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>

* fix: remove account_id clearing for Enable Banking accounts

* fix: Remove unexisting available_balance attribute and rename variable for consistency

---------

Signed-off-by: soky srm <sokysrm@gmail.com>
Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
Co-authored-by: soky srm <sokysrm@gmail.com>
Co-authored-by: Marcon Neves <marconwillian@icloud.com>
Co-authored-by: Leonardo Ralph <theleoralph@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jjmata <187772+jjmata@users.noreply.github.com>
jaxver pushed a commit to jaxver/sure that referenced this pull request May 31, 2026
* feat(lang): add all brazilian portuguese translations

* feat: update pt-BR errors on translation

* fix: atualizar fix base

* feat: add reports translations

* feat: finish translation to brazilian portuguese

* fix: add to supported locales

* fix: number of translations

* fix: errors on translations

* fix: error on rubocop lint

---------

Co-authored-by: Leonardo Ralph <theleoralph@gmail.com>
jaxver pushed a commit to jaxver/sure that referenced this pull request May 31, 2026
* feat: Allow account linking for Enable Banking accounts

* fix: Typo in function name

* fix: naming issue

* fix: Add missing Enable Banking route

* feat: Add ability to link Enable Banking when adding a new account

* Mispelling

* fix: typo in method call

* fix: typo in column name

* Review suggestions

* Linter noise

* Small copy changes to avoid mobile UI blowout

* Provider generator (we-promise#364)

* Move provider config to family

* Update schema.rb

* Add provier generator

* Add table creation also

* FIX generator namespace

* Add support for global providers also

* Remove over-engineered stuff

* FIX parser

* FIX linter

* Some generator fixes

* Update generator with fixes

* Update item_model.rb.tt

* Add missing linkable concern

* Add missing routes

* Update adapter.rb.tt

* Update connectable_concern.rb.tt

* Update unlinking_concern.rb.tt

* Update family_generator.rb

* Update family_generator.rb

* Delete .claude/settings.local.json

Signed-off-by: soky srm <sokysrm@gmail.com>

* Move docs under API related folder

* Rename Rails generator doc

* Light edits to LLM generated doc

* Small Lunch Flow config panel regressions.

---------

Signed-off-by: soky srm <sokysrm@gmail.com>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>

* Skip generators autoloading (we-promise#430)

* Include Enable Banking items in Syncer (we-promise#434)

* feat: Include Enable Banking items in Syncer

* feat: include only active Enable Banking accounts

* Fix budgets page UI (we-promise#427)

* fix: Budget UI improvements

* feat: Reduce padding for sub-categories

* fix: Adjust padding for sub-category arrow

* Revert "feat: Reduce padding for sub-categories"

This reverts commit 7516c5a.

* Revert "fix: Adjust padding for sub-category arrow"

This reverts commit ebc8254.

* fix: adjust padding for sub-categories

* fix: Add padding to uncategorized budget

* fix: Remove unnecessary HTML tag

* feat: Add translation keys for budgeted/actual

* feat(lang): add all brazilian portuguese translations (we-promise#416)

* feat(lang): add all brazilian portuguese translations

* feat: update pt-BR errors on translation

* fix: atualizar fix base

* feat: add reports translations

* feat: finish translation to brazilian portuguese

* fix: add to supported locales

* fix: number of translations

* fix: errors on translations

* fix: error on rubocop lint

---------

Co-authored-by: Leonardo Ralph <theleoralph@gmail.com>

* Add exclude transaction rule action (we-promise#437)

* Initial plan

* Add ExcludeTransaction rule action executor with tests

Co-authored-by: jjmata <187772+jjmata@users.noreply.github.com>

* Copy clarification

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jjmata <187772+jjmata@users.noreply.github.com>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>

* Preparing for v0.6.6-alpha.3

Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>

* fix: remove account_id clearing for Enable Banking accounts

* fix: Remove unexisting available_balance attribute and rename variable for consistency

---------

Signed-off-by: soky srm <sokysrm@gmail.com>
Signed-off-by: Juan José Mata <juanjo.mata@gmail.com>
Co-authored-by: Juan José Mata <juanjo.mata@gmail.com>
Co-authored-by: soky srm <sokysrm@gmail.com>
Co-authored-by: Marcon Neves <marconwillian@icloud.com>
Co-authored-by: Leonardo Ralph <theleoralph@gmail.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: jjmata <187772+jjmata@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects
Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants