apache / apache/fineract-backoffice-ui

i18n: 14 hardcoded English headings, and two product lists showing the account label

Open
#388 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
15
Forks
60
Avg merge
10h 15m
Merged PRs (30d)
108

Description

Split out of #355 at @Aman-Mittal's suggestion. Both of these were found while building the `products` and `system` route titles, and neither is a titling bug, so they do not belong in that thread.

Nothing here is broken for an English user. Both are i18n correctness problems that show up the moment the UI is used in another language.

## 1. Fourteen headings are hardcoded English rather than translation keys

These render literal English regardless of the selected language. Everything else in the same templates goes through the translation pipeline, so these read as oversights rather than intent.

| File | Line | Value |
|---|---|---|
| `features/loans/rescheduling/reschedule-requests-list.component.ts` | 52 | `Loan Reschedule Requests` |
| `features/loans/rescheduling/reschedule-requests-list.component.ts` | 79 | `View Request Details` |
| `features/loans/collateral/collateral-list.component.ts` | 65 | `Edit Collateral` |
| `features/loans/collateral/collateral-list.component.ts` | 74 | `Delete Collateral` |
| `features/clients/clients-list.component.ts` | 127 | `Edit Client Details` |
| `features/products/recurring-deposits/recurring-deposits-list.component.ts` | 56 | `Recurring Deposit Accounts` |
| `features/products/recurring-deposits/recurring-deposits-list.component.ts` | 91 | `Edit Account Details` |
| `features/products/fixed-deposits/fixed-deposits-list.component.ts` | 50 | `Fixed Deposit Accounts` |
| `features/products/fixed-deposits/fixed-deposits-list.component.ts` | 89 | `Edit Account Details` |
| `features/products/shares/share-accounts-list.component.ts` | 52 | `Share Accounts` |
| `features/fintech/asset-owners-list.component.ts` | 46 | `External Asset Owners` |
| `features/fintech/asset-owner-view/asset-owner-view.component.ts` | 146 | `Journal Entries` |
| `features/security/users/users-list.component.ts` | 53 | `Edit User` |
| `features/centers/centers-list.component.ts` | 80 | `Edit Center` |

**Why CI does not catch this.** `check-translations.mjs` validates that strings which *are* keys resolve in every locale. A hardcoded English string is not a key, so there is nothing for it to look up and it passes silently. The check is working as designed; the gap is that it can only see strings already inside the system.

Worth deciding whether the guard should grow a rule for a bare `title="Capitalised English"` on these list components, or whether that is too noisy to be worth it. I have no strong view and would follow yours.

## 2. Two product lists show the account label instead of the product label

`products/recurring` and `products/share` are the **product** lists, but their on-screen headings render the **account** keys:

- `products/recurring-deposits/recurring-deposit-products-list.component.ts:47` renders `title="nav.recurringDeposits"`, should be `nav.recurringDepositProducts`
- `products/shares/share-products-list.component.ts:45` renders `title="nav.shares"`, should be `nav.shareProducts`

The route titles are already right, `nav.recurringDepositProducts` and `nav.shareProducts` in `products.routes.ts` at lines 115 and 143. So on those two pages the browser tab says "Recurring Deposit Products" while the heading below it says "Recurring Deposits". The tab and the heading disagree with each other, and the heading is the wrong one.

All four keys exist already, so this is a two-line fix with no new translation entries.

## Happy to take this

Both are small and I have the reproduction. Say the word and I will put them up as one PR with a commit each, matching how #9469 and friends were structured. Leaving it unclaimed for now in case you would rather it went to a newcomer, since item 2 in particular is about as self-contained as a first patch gets.

Contributor guide

Open the contributing guide

Research direction

Start with the fourteen listed component files and compare their headings with nearby translated titles. Then inspect recurring-deposit-products-list.component.ts, share-products-list.component.ts, products.routes.ts, and check-translations.mjs; item 2 should use existing product keys, while item 1 should use the translation pipeline. Done means all headings render correctly in another language and the translation check still passes.

Written by the indexing model from the issue text.

Assessment

Tech stack
angular, typescript
Domain
frontend, internationalization
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.