Repository navigation
i18n: build translated sentences in code so they read correctly in every language (TBv3 + Mapper) #2877
Copy link
Copy link
Open
Labels
component/mapperMapping toolsMapping toolscomponent/webTermBrowser frontendTermBrowser frontendsignal/has-dependenciesRelies on other work or external inputsRelies on other work or external inputssignal/large-scopeAffects multiple areas or systemsAffects multiple areas or systemssignal/low-riskSafe to execute with minimal downsideSafe to execute with minimal downsidesignal/well-specifiedClear requirements and acceptance criteriaClear requirements and acceptance criteriastage/triagedAI triage complete — scored and classifiedAI triage complete — scored and classifiedtype/bugSomething is brokenSomething is broken
Milestone
Description
Summary
The pt-BR review of oclweb3#60 and oclmap#90 (#2866) found sentences that the UI builds by stitching translated fragments together, or by dropping raw English values into translated text. No catalog edit can make these read correctly in Portuguese (or Spanish). They need code changes so that each sentence is a single translatable string with interpolated values. This ticket holds the code-side fixes that were deliberately kept out of the translation PRs so those could merge.
Acceptance criteria
-
DeleteEntityDialog,ReleaseVersion,ResourceReferencesandrepo.version.form.*take a translated resource-type label instead of the raw API type (Collection,concept,Source Version). The hardcoded'versions, 'and'concepts and mappings'inRepoHomego through i18n. Sentences avoid gendered articles before{{resourceType}}, or use per-type keys. (The unusedcommon.object_typesmap added in oclweb3#60 can serve here; otherwise remove it.) - Activity feed (
Events.jsx,DashboardEvents.jsx): each event type × object type is a whole-sentence key with preposition and site name, e.g. "Entrou no OCL", "Entrou em uma Organização X". The no-object "Joined" event stops using the API's Englishdescription. Remove the unusedevent_types.updatedand.source. Addevent_types/event_object_typesfor es and zh. - Error pages (
Error401/403/404,ErrorUI): replace theplease+ link +or+ … fragments with<Trans>sentences. - Search placeholders (
SearchInputDrawer): replace the fragment chains with<Trans>sentences. - Relative times and dates follow the UI language: set the Moment locale at startup from the persisted language (both apps) and on change (oclweb3), and localize the
M/D/YYYYformats inconstants.js. -
<html lang>follows the selected language. - oclweb3: guard
UserMenuwhen the stored language isn't inLANGUAGES(a storedzhcurrently throws). Drop thei18n.languages = …overwrite in both apps. - Hardcoded English found near the touched code:
UserProfile.jsx"Joined {date}" and MapperProjectLogs.jsx"{user} at {date}".
Related: #2866, OpenConceptLab/oclweb3#60, OpenConceptLab/oclmap#90
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
component/mapperMapping toolsMapping toolscomponent/webTermBrowser frontendTermBrowser frontendsignal/has-dependenciesRelies on other work or external inputsRelies on other work or external inputssignal/large-scopeAffects multiple areas or systemsAffects multiple areas or systemssignal/low-riskSafe to execute with minimal downsideSafe to execute with minimal downsidesignal/well-specifiedClear requirements and acceptance criteriaClear requirements and acceptance criteriastage/triagedAI triage complete — scored and classifiedAI triage complete — scored and classifiedtype/bugSomething is brokenSomething is broken
Activity
ocl-automation commentedon Oct 5, 2026
Automated Triage — 2026-10-05
Decision:
decision/planning-neededType:
type/bugSignals:
signal/low-risk,signal/large-scope,signal/well-specified,signal/has-dependenciesThe body lists eight checklist items across two repos (oclweb3 and oclmap): whole-sentence i18n keys,
<Trans>rewrites, Moment locale setup,<html lang>and aUserMenuguard. Each is a well-understood pattern, so clarity is good. Dependency is moderate because oclweb3#60 and oclmap#90 are still open and this work builds on their catalogs and thecommon.object_typesmap. Risk is low because the changes are UI text and locale handling, and the milestone is P5 post-launch. The existingtype/buglabel fits, since sentences currently read wrongly in other languages and a storedzhthrows inUserMenu.Generated by ticket-triage pipeline v3. Model: anthropic/claude-sonnet-5.5 (openrouter).