Skip to content

fix(i18n): unify terminology across locales and guard it (#7573) - #7574

Open
Romuald Lemesle (RomuDeuxfois) wants to merge 2 commits into
mainfrom
fix/i18n-glossary-terminology
Open

fix(i18n): unify terminology across locales and guard it (#7573)#7574
Romuald Lemesle (RomuDeuxfois) wants to merge 2 commits into
mainfrom
fix/i18n-glossary-terminology

Conversation

@RomuDeuxfois

@RomuDeuxfois Romuald Lemesle (RomuDeuxfois) commented Aug 24, 2026

Copy link
Copy Markdown
Member

Closes #7573

Adds scripts/i18n-glossary.json, 19 terms that must never be translated, enforced by i18n-checker.

WidgetUtils.tsx is touched to rename the legacy Mitre Coverage key to Security Coverage, which en.json already displayed.

Copilot AI lite review requested due to automatic review settings August 24, 2026 09:49
@github-actions github-actions Bot added the filigran team Item from the Filigran team. label Aug 24, 2026

Copilot AI 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.

Pull request overview

This PR addresses issue #7573 by enforcing consistent, non-translatable terminology across all locales (including English) and by hardening user identity/credential update paths so that email/password cannot be changed through administrative “update user” routes.

Changes:

  • Adds an i18n glossary (scripts/i18n-glossary.json) and extends i18n-checker to fail CI when protected terms are translated.
  • Normalizes multiple locale strings (notably “Chokepoint”, severity labels, product/acronym terms) and fixes the legacy “Mitre Coverage” key usage by switching to “Security Coverage”.
  • Removes tenant/platform-admin password change flows from frontend and backend, and ensures user email/password cannot be updated through profile updates.

Reviewed changes

Copilot reviewed 33 out of 33 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
openaev-front/src/utils/lang/zh.json Terminology consistency updates (e.g., Chokepoint, CVE, URL, XTM Hub) and adds “Security Coverage” / “Very high”.
openaev-front/src/utils/lang/ru.json Fixes severity/terminology inconsistencies and adds “Security Coverage” / “Very high”.
openaev-front/src/utils/lang/ko.json Fixes severity/terminology inconsistencies and adds “Security Coverage” / “Very high”.
openaev-front/src/utils/lang/ja.json Fixes severity/terminology inconsistencies and adds “Security Coverage” / “Very high”.
openaev-front/src/utils/lang/it.json Fixes “asset” wording and other terminology consistency issues; adds “Security Coverage” / “Very high”.
openaev-front/src/utils/lang/fr.json Terminology unification (notably “finding”, “endpoint”, “chokepoint”) and adds “Very high”.
openaev-front/src/utils/lang/es.json Fixes terminology drift (e.g., ISPM) and adds “Security Coverage” / “Very high”.
openaev-front/src/utils/lang/en.json Fixes legacy “Mitre Coverage” value and adds “Security Coverage” / “Very high”.
openaev-front/src/utils/lang/de.json Fixes finance-domain “asset” translations and other terminology; adds “Security Coverage” / “Very high”.
openaev-front/src/admin/components/workspaces/custom_dashboards/widgets/WidgetUtils.tsx Switches widget title from t('Mitre Coverage') to t('Security Coverage').
openaev-front/src/admin/components/settings/users/tenant_users/UserPopover.tsx Removes “Update password” action/Drawer wiring from tenant user popover.
openaev-front/src/admin/components/settings/users/tenant_users/UserPasswordForm.tsx Deletes the tenant user password update form component.
openaev-front/src/admin/components/settings/users/tenant_users/UserForm.tsx Disables email editing when updating an existing user (aligns UI with backend immutability).
openaev-front/src/admin/components/settings/users/tenant_users/TenantUsersTab.tsx Removes “Update password” option from tenant users list actions.
openaev-front/src/admin/components/settings/users/tenant_users/hooks/useTenantUsers.ts Removes tenant user password-change dispatch helper.
openaev-front/src/admin/components/settings/users/platform_users/PlatformUsersTab.tsx Removes “Update password” option from platform users list actions.
openaev-front/src/admin/components/settings/users/platform_users/PlatformUserPopover.tsx Removes platform user password-change dispatch and action wiring.
openaev-front/src/admin/components/settings/security_detail/UserDetail.tsx Removes password-change action wiring from user detail popovers.
openaev-front/src/actions/users/User.js Removes updateUserPassword action for /api/users/{id}/password.
openaev-front/src/actions/platform/users/platform-user-action.ts Removes updatePlatformUserPassword action for /api/platform-users/{id}/password.
openaev-front/scripts/i18n-glossary.json New glossary list of protected terms that must not be translated.
openaev-front/scripts/i18n-glossary.js New glossary validation logic consumed by i18n-checker.
openaev-front/scripts/i18n-checker.js Integrates glossary violations into the checker and fails CI accordingly.
openaev-api/src/test/java/io/openaev/rest/user/TenantUserApiTest.java Adds tests asserting tenant scope has no password route and cannot “smuggle” password/email via update.
openaev-api/src/test/java/io/openaev/rest/PlayerApiTest.java Adds test asserting player update cannot rewrite the email address.
openaev-api/src/main/java/io/openaev/service/UserService.java Removes password mutation on update; makes email/password immutable via applyProfile.
openaev-api/src/main/java/io/openaev/service/tenants/TenantUserService.java Removes tenant password update; prevents email rewrite by only applying profile fields.
openaev-api/src/main/java/io/openaev/rest/user/TenantUserApi.java Removes tenant user password endpoint.
openaev-api/src/main/java/io/openaev/rest/user/PlayerApi.java Prevents player email rewrite by applying only profile fields.
openaev-api/src/main/java/io/openaev/rest/user/form/user/UpdatePasswordInput.java Deletes unused password update input DTO.
openaev-api/src/main/java/io/openaev/api/users/dto/UserOutput.java Removes ALIAS_PLAIN_PASSWORD constant from output DTO.
openaev-api/src/main/java/io/openaev/api/users/dto/UserInput.java Keeps plainPassword as input-only and relocates ALIAS_PLAIN_PASSWORD constant to input DTO.
openaev-api/src/main/java/io/openaev/api/platform/users/PlatformUserApi.java Removes platform user password endpoint.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +27 to +28
for (const term of globalTerms) {
if (wordRe(term).test(key) && !value.toLowerCase().includes(term.toLowerCase())) {
Add scripts/i18n-glossary.json, the list of terms that must never be
translated, enforced by i18n-checker so a regression fails the check.

Rename the legacy `Mitre Coverage` key to `Security Coverage`: en.json
already displayed the latter, so every locale was translating a label
whose key still said MITRE.
@github-actions

Copy link
Copy Markdown
Contributor

📖 Documentation check — ✅ Passed

10 functional file(s), 0 doc file(s) changed.

No documentation gaps detected.

@RomuDeuxfois Romuald Lemesle (RomuDeuxfois) changed the title fix(i18n): unify terminology across locales and guard it fix(i18n): unify terminology across locales and guard it (#7573) Aug 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

filigran team Item from the Filigran team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(i18n): terminology is inconsistent across locales and nothing guards it

2 participants