shivaansh0610-LUFFY opened a new pull request, #644:
URL: https://github.com/apache/fineract-backoffice-ui/pull/644
## What and why
Switching to Hindi gives a translated sidebar and then English forms, tabs
and dialogs: `hi.json` covers 469 of 2,529 `en.json` keys (18.5%). This PR
translates the `CLIENTS` section into Hindi, one section per PR as #255 asks.
| | Before | After |
| --- | --- | --- |
| `CLIENTS` keys translated | 7 / 118 | 118 / 118 |
| All of `hi.json` | 469 / 2,529 (18.5%) | 580 / 2,529 (22.9%) |
Counts are at the branch point; upstream has since added one unrelated key.
Part of #255. It does not close the issue: the other `hi` sections and all
of `ko` are still open.
**Translation review:** <!-- Say who checked the Hindi wording, or delete
this line. #255 asks for a fluent speaker to vouch for it. -->
## Changes
- `src/assets/i18n/hi.json`: 111 `CLIENTS` keys added. The 7 already
translated are untouched, and the nesting matches `en.json`.
- No code changes.
The wording reuses terms already in `hi.json` (ग्राहक, कार्यालय, बचत/ऋण
खाता, स्थायी निर्देश, संपादित करें). Judgement calls for a Hindi reader to
check:
- `CONFIRM_ACCEPT_TRANSFER`, `CONFIRM_REJECT_TRANSFER`,
`CONFIRM_WITHDRAW_TRANSFER`, `CONFIRM_UNASSIGN_STAFF`: the confirmation text
shown before a transfer is accepted, rejected or withdrawn, or staff is
unassigned. "On hold" is "होल्ड पर".
- `FROM_*`, `TO_*`, `TRANSFER_FROM`, `TRANSFER_TO`: "स्रोत" / "गंतव्य". The
longer "प्रेषक" / "प्राप्तकर्ता" clips in the standing-instructions table
headers.
- `IDENTIFIERS` is "पहचान पत्र". `DOCUMENT_KEY` is kept literal ("दस्तावेज़
कुंजी"), so a more idiomatic term may exist.
- `LEGAL_FORM` is "कानूनी स्वरूप", `QUALIFICATION` is "शैक्षिक योग्यता",
`COUNTY_DISTRICT` is "काउंटी/जिला", and `POSTAL_CODE` is "डाक कोड" (not "पिन
कोड", to keep it generic).
## Not in this PR
- Korean: `ko.json` is unchanged at 469 keys.
- Other sections: English remains where these screens use their keys, for
example `COMMON.CONFIRM` (dialog button) and `ACTIONS.CLOSE_CLIENT` (actions
menu).
- The hardcoded `Create Client` button on the clients list: tracked in #251.
- `scripts/i18n-coverage.json`: it only fails on a drop, and parallel
one-section PRs editing the same lines would conflict with each other.
## Verification
Mocked API on the dev server, language set to Hindi from the header
selector. Not run against a real Fineract backend or at a mobile width.
Method: one script run before and after the change, 32 screens each. It
covers the clients list, create wizard steps 1-3, client view and every tab,
actions menu, the transfer / staff / default-savings dialogs, the five KYC
forms, the not-found state, and standing instructions. All data is fictional.
Checks:
- `npm run i18n:check`: passes, also with this `hi.json` on current
`upstream/main` (2,530 keys)
- `npm run lint`, `npm run check:icons`, `npm run check:a11y-names`, `npm
run test:scripts`: pass
- `npx prettier --check src/assets/i18n/hi.json`: passes
- Unit tests for `core/adapters/i18n`, `features/clients` and
`guidance.service`: 18 files, 140 tests pass (full suite not run)
- `npx playwright test --project=mocked e2e/client-servicing-gaps.spec.ts
e2e/client-load-error.spec.ts`: 16 passed
To try it locally:
1. Run `npm start` and sign in.
2. Choose "हिंदी (Hindi)" in the header language selector. It is not
persisted, so select it again after a full reload.
3. Open Clients, then a client (tabs, Actions menu, Add forms), then
Transfers, Standing Instructions.
## Screenshots
### Recording, before and after
Same script, same mocked data, Hindi selected. Left is upstream `main`,
right is this PR.
https://github.com/user-attachments/assets/875973cd-2f98-40df-89db-f6ba562a33f5
<details>
<summary>Separate before and after recordings</summary>
**Before** (upstream `main`):
https://github.com/user-attachments/assets/872d07b3-1eff-4cc3-b6b8-689435b5faf3
**After** (this PR):
https://github.com/user-attachments/assets/e5c9ff33-d97c-4b26-97e0-d48cc0f4b1bf
</details>
### Stills
<!-- Fill the four rows with the matching files from
pr-255-evidence/comparison, or delete this whole Stills section. -->
| Screen | Before | After |
| --- | --- | --- |
| Client details | <!-- 05-view-details, before --> | <!-- 05-view-details,
after --> |
| Actions menu | <!-- 06-view-actions-menu, before --> | <!--
06-view-actions-menu, after --> |
| Add address form | <!-- 27-address-form, before --> | <!--
27-address-form, after --> |
| Standing instructions | <!-- 32-standing-instructions, before --> | <!--
32-standing-instructions, after --> |
## AI assistance (optional)
<!-- If generative AI materially assisted this contribution, optionally
state the tool or model and
the harness or workflow used. The contributor remains responsible for the
submitted change. -->
- Tool / model:
- Harness / workflow:
## Checklist
<!-- Check each item, or explain why it does not apply. -->
- [x] I did not hand-edit generated files under `src/app/api/`.
- [x] New component or service code uses the adapter boundary in
`src/app/core/adapters/` instead of direct browser globals or imperative
third-party APIs. (Not applicable: catalogue-only change, no component or
service code.)
- [x] User-facing strings use translation keys. (This PR only adds values
for keys that already exist in `en.json`.)
- [x] I added or updated tests appropriate to this change, or explained why
tests were not needed. (Not needed: the change is catalogue data. `i18n:check`
guards it and the existing unit and mocked e2e runs above pass.)
- [x] UI workflow changes include suitable e2e coverage, including
real-backend testing where relevant. (Not applicable: no workflow changed.)
- [x] Commits are signed — see [Commit
Signing](CONTRIBUTING.md#commit-signing) in CONTRIBUTING.md.
- [ ] I followed the [AI-assisted contributions
guidance](CONTRIBUTING.md#ai-assisted-contributions).
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]