Files
sure/config/locales/views/components/ca.yml
Guillem Arias Fauste e8ce28648d refactor: rename beta features gate to preview features (#1837)
* refactor: rename beta features gate to preview features

Renames the opt-in gate introduced in PR #1829 from "beta" to "preview".
Same shape (per-user JSONB toggle, `before_action` concern, marker pill)
just retitled so the surface speaks the language Sure uses elsewhere
("preview" reads as in-progress, "beta" had baggage with provider
maturity copy and external testing programs).

Renames:
- BetaGateable -> PreviewGateable
- require_beta_features! -> require_preview_features!
- beta_features_enabled? -> preview_features_enabled?
- preferences["beta_features_enabled"] -> preferences["preview_features_enabled"]
- DS::Pill default label "Beta" -> "Preview"
- Settings -> Preferences toggle copy "beta features" -> "preview features"
- config/locales/views/beta/ -> config/locales/views/preview/
- docs/llm-guides/gating-a-beta-feature.md -> gating-a-preview-feature.md

Includes a data migration that copies any existing
`beta_features_enabled` JSONB key into `preview_features_enabled` so early
opt-ins survive the rename, then removes the old key. The migration is
fully reversible.

Provider maturity copy ("maturity.beta = Beta" under Settings -> Bank
sync) is intentionally untouched - that's a separate concept describing
a provider's integration stability, not Sure's feature gate.

* review: apply CodeRabbit findings on PR #1837

- Settings::PreferencesController#update now routes the
  `preview_features_enabled` input through strong params and casts via
  ActiveModel::Type::Boolean instead of reading raw params and string-
  comparing to "1". Matches Sure's controller convention for permitted
  params and avoids stringly-typed boolean handling.

- Rename migration now wraps the destination JSONB key write in COALESCE
  so a row that somehow ends up with both keys keeps the destination
  value instead of having it overwritten by the source. Up and down
  paths get the same defensive shape.

* 📝 CodeRabbit Chat: Implement requested code changes

* 📝 CodeRabbit Chat: Implement requested code changes

* fix: restore all missing translation keys; rename beta→preview label

* fix: restore all missing sections (appearances, debugs, llm_usages, providers, etc.); rename beta→preview

* fix: restore missing keys (member_removal_failed, confirm_delete, etc.); add preview section

* fix(i18n/ca): use 'està en vista prèvia' instead of 'és una vista prèvia'

* fix(i18n/ca): use 'en desenvolupament'; drop article in preview title

* fix(i18n/es): use 'en desarrollo' instead of 'en progreso'

* fix(i18n/ca): use 'funcions experimentals' instead of 'vista prèvia'

* fix(i18n/es): use 'funciones experimentales' instead of 'vista previa'

* fix(i18n/ca): use 'funcions experimentals' in preferences.show.preview

* fix(i18n/es): use 'funciones experimentales' in preferences.show.preview

* fix(i18n/ca): use 'Experimental' pill label instead of 'Vista prèvia'

* fix(i18n/es): use 'Experimental' pill label instead of 'Vista previa'

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-05-19 14:41:02 +02:00

161 lines
6.7 KiB
YAML

---
ca:
UI:
account:
activity_date:
balance_tooltip: Saldo al final del dia, després de totes les transaccions
i ajustos
no_balance_data: No hi ha dades de saldo per a aquesta data
activity_feed:
toggle_selection_checkboxes: Commuta la selecció
balance_reconciliation:
labels:
adjustments: Ajustos
buys: Compres
change_in_brokerage_cash: Variació de l'efectiu del broker
change_in_holdings_market: Variació de les posicions (preu de mercat)
change_in_holdings_trades: Variació de les posicions (compres/vendes)
charges: Càrrecs
end_balance: Saldo final
end_principal: Capital final
end_value: Valor final
final_balance: Saldo final del dia
final_principal: Capital final del dia
final_value: Valor final del dia
market_changes: Variacions de mercat
net_cash_flow: Flux net d'efectiu
net_principal_change: Variació neta del capital
net_value_change: Variació neta del valor
payments: Pagaments
sells: Vendes
start_balance: Saldo inicial
start_principal: Capital inicial
start_value: Valor inicial
tooltips:
adjustments: Conciliacions manuals o altres ajustos
adjustments_asset: Ajustos de valor manuals o taxacions
buys: Compres de cripto durant el dia
change_in_brokerage_cash: Variació neta de l'efectiu per dipòsits, retirades
i operacions
change_in_holdings_market: Variació del valor de les posicions per moviments
del preu de mercat
change_in_holdings_trades: Impacte sobre les posicions per compres i vendes
de valors
charges: Nous càrrecs realitzats durant el dia
end_balance: Saldo calculat després de totes les transaccions
end_balance_investment: Saldo calculat després de tota l'activitat
end_principal: Capital calculat després de totes les transaccions
end_value: Valor calculat després de tots els canvis
final_balance: Saldo final del compte del dia
final_balance_credit: Saldo deutor final del dia
final_balance_crypto: Valor final de les posicions cripto del dia
final_balance_investment: Valor final de la cartera del dia
final_principal: Capital final del préstec del dia
final_value: Valor final de l'actiu del dia
market_changes: Variacions de valor pels moviments del preu de mercat
net_cash_flow: Variació neta del saldo per totes les transaccions del dia
net_principal_change: Pagaments de capital i nous préstecs durant el dia
net_value_change: Totes les variacions de valor incloent millores i depreciació
payments: Pagaments fets a la targeta durant el dia
sells: Vendes de cripto durant el dia
start_balance: Saldo del compte a l'inici del dia
start_balance_credit: Saldo deutor a l'inici del dia
start_balance_crypto: Valor de les posicions cripto a l'inici del dia
start_balance_investment: Valor total de la cartera a l'inici del dia
start_principal: Saldo del capital a l'inici del dia
start_value: Valor de l'actiu a l'inici del dia
chart:
no_data_available: No hi ha dades disponibles
title:
balance: Saldo
cash_value: Valor de l'efectiu
debt_balance: Saldo del deute
estimated_property_value: Valor estimat de l'immoble
estimated_vehicle_value: Valor estimat del vehicle
holdings_value: Valor de les posicions
remaining_principal_balance: Capital pendent
total_account_value: Valor total del compte
views:
cash: Efectiu
holdings: Posicions
total_value: Valor total
vs_available_history: vs. historial disponible
ds:
alert:
variants:
destructive: Error
error: Error
info: Informació
success: Èxit
warning: Avís
dialog:
close: Tanca
pill:
aria_label: "%{label}"
default_label: Experimental
provider_sync_summary:
accounts:
institutions: 'Institucions: %{count}'
linked: 'Vinculats: %{count}'
title: Comptes
total: 'Total: %{count}'
unlinked: 'Desvinculats: %{count}'
health:
data_warnings: 'Avisos de dades: %{count}'
duplicate_suggestions:
one: "%{count} duplicada possible necessita revisió"
other: "%{count} duplicades possibles necessiten revisió"
errors: 'Errors: %{count}'
notices: 'Notificacions: %{count}'
pending_reconciled:
one: "%{count} transacció pendent duplicada conciliada"
other: "%{count} transaccions pendents duplicades conciliades"
rate_limited: Sota límit de %{time_ago}
recently: recentment
stale_pending:
one: "%{count} transacció pendent obsoleta (exclosa dels pressupostos)"
other: "%{count} transaccions pendents obsoletes (excloses dels pressupostos)"
stale_pending_count:
one: "%{count} transacció"
other: "%{count} transaccions"
stale_unmatched:
one: "%{count} transacció pendent necessita revisió manual"
other: "%{count} transaccions pendents necessiten revisió manual"
stale_unmatched_count:
one: "%{count} transacció"
other: "%{count} transaccions"
title: Estat
view_data_quality: Veure detalls de qualitat de dades
view_duplicate_suggestions: Veure duplicades suggerides
view_error_details: Veure detalls de l'error
view_reconciled: Veure transaccions conciliades
view_stale_pending: Veure comptes afectats
view_stale_unmatched: Veure transaccions que necessiten revisió
holdings:
found: 'Trobat: %{count}'
processed: 'Processat: %{count}'
title: Posicions
last_sync: 'Última sincronització: fa %{time_ago}'
skip_reasons:
excluded: Excloses
import_locked: Importació CSV
protected: Protegides
user_modified: Modificades per l'usuari
title: Resum de sincronització
trades:
fetching: Recuperant activitats del broker...
imported: 'Importat: %{count}'
skipped: 'Omès: %{count}'
title: Operacions
transactions:
fetching: Recuperant del broker...
imported: 'Importat: %{count}'
protected:
one: "%{count} entrada protegida (no sobreescrita)"
other: "%{count} entrades protegides (no sobreescrites)"
seen: 'Vist: %{count}'
skipped: 'Omès: %{count}'
title: Transaccions
updated: 'Actualitzat: %{count}'
view_protected: Veure entrades protegides