Repository navigation
Localization: two keys the dev-login page needs to stop lying in English - #2542
Conversation
`Memex.Portal.Gui`'s developer-login page renders its empty state as a hard-coded English
sentence — "No persons found. Add Person nodes to the graph to enable dev login." — and its
error state as an interpolated `$"Error loading persons: {ex.Message}"`. Every other string
on that page already goes through `Access.Localize`, so these two are the outliers, and a
German viewer reads them in English.
The empty-state wording is also wrong on the merits: the list is empty because the query runs
as Anonymous and a user's partition-root node is private, not because the mesh lacks users
(MeshWeaver.Plugins#712). The replacement states what is true after that fix — no users found —
rather than naming a cause that is not the cause.
`Mesh` stays English per the glossary. The catalogs are the only mirrors: `clients/react/src/i18n/`
was removed on 2026-08-25, so there is no second copy to keep in step.
Refs Systemorph/MeshWeaver.Plugins#712
There was a problem hiding this comment.
Pull request overview
Adds missing localization catalog entries so the Dev Login page in the plugins repo can render its empty/error states via Access.Localize instead of hard-coded English, and so the empty-state text reflects the actual condition (“no users on this mesh”) rather than suggesting incorrect remediation.
Changes:
- Added
auth.noUsersFoundkey to the localization catalogs (EN/DE). - Added
auth.errorLoadingUserskey (with{0}placeholder) to the localization catalogs (EN/DE).
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| src/MeshWeaver.Messaging.Hub/Localization/strings.en.json | Adds the new auth.* keys in English for Dev Login empty/error states. |
| src/MeshWeaver.Messaging.Hub/Localization/strings.de.json | Adds the matching new auth.* keys in German for Dev Login empty/error states. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Test Results (shard 3)1 109 tests 1 109 ✅ 16m 13s ⏱️ Results for commit 763e0b1. |
Test Results (shard 2)1 088 tests 896 ✅ 5m 8s ⏱️ Results for commit 763e0b1. |
Test Results (shard 5)1 599 tests 1 598 ✅ 7m 42s ⏱️ Results for commit 763e0b1. |
Platform half of Systemorph/MeshWeaver.Plugins#712.
The developer-login page (
src/Memex.Portal.Gui/Pages/DevLogin.razor, in the plugins repo) renders two strings outside the catalog:$"Error loading persons: {ex.Message}"Every other string on that page already goes through
Access.Localize, so these two are the outliers — a German viewer reads them in English regardless of their choice.The empty-state wording is also wrong on the merits, which is why this is not a pure i18n tidy-up. Plugins#712 root-causes the empty list: the page's user query runs as Anonymous (choosing whom to sign in as necessarily happens before anyone is signed in) and a user's partition-root
Usernode is private. So the list is empty on a portal that has users, and the message sends the reader off to create data that already exists.auth.noUsersFoundstates what is true once that fix lands, instead of naming a cause that is not the cause.auth.noUsersFoundauth.errorLoadingUsersMeshstays English per AGENTS.md's glossary.Mirrors: none.
clients/react/src/i18n/was removed on 2026-08-25 (AGENTS.md's instruction to mirror there was itself stale and was corrected in #2520), so the two server catalogs are the whole surface.Ordering. This lands first; the plugins repo floats
MW_PLATFORM_REF: main, so its next build picks the keys up. The plugins-side change (the impersonation fix plus these keys) follows — reversing the order would render the raw key strings to users in the window between.LocalizationTest: 56/56.dotnet build -c Release -warnaserror: 0 Warning(s), 0 Error(s).What's New: no entry — the dev-login page is gated behind
Authentication__EnableDevLoginand is not a surface a portal user reaches.