Skip to content

Conversation

@cajieh
Copy link
Contributor

@cajieh cajieh commented Jan 5, 2026

No description provided.

@openshift-ci-robot openshift-ci-robot added jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Jan 5, 2026
@openshift-ci-robot
Copy link
Contributor

@cajieh: This pull request references Jira Issue OCPBUGS-70324, which is invalid:

  • expected the bug to target the "4.22.0" version, but no target version was set

Comment /jira refresh to re-evaluate validity if changes to the Jira bug are made, or edit the title of this pull request to link to a different bug.

The bug has been updated to refer to the pull request using the external bug tracker.

Details

In response to this:

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai
Copy link

coderabbitai bot commented Jan 5, 2026

Walkthrough

The "View all events" translation key is being relocated from the console-shared locale package to the public locale package across all supported languages (English, Spanish, French, Japanese, Korean, Chinese). Two component files are updated to reference the new translation key location.

Changes

Cohort / File(s) Summary
Console-shared locale removals
frontend/packages/console-shared/locales/{en,es,fr,ja,ko,zh}/console-shared.json
Removes "View all events" translation entry from all language variants.
Public locale additions
frontend/public/locales/{en,es,fr,ja,ko,zh}/public.json
Adds "View all events" translation entry to all language variants with corresponding localized strings.
Component translation key updates
frontend/public/components/dashboard/dashboards-page/cluster-dashboard/activity-card.tsx, frontend/public/components/dashboard/project-dashboard/activity-card.tsx
Updates translation key reference from console-shared~View all events to public~View all events for RecentEventFooter.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

✨ Finishing touches
  • 📝 Generate docstrings

📜 Recent review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between 150349e and 14a55a1.

📒 Files selected for processing (14)
  • frontend/packages/console-shared/locales/en/console-shared.json
  • frontend/packages/console-shared/locales/es/console-shared.json
  • frontend/packages/console-shared/locales/fr/console-shared.json
  • frontend/packages/console-shared/locales/ja/console-shared.json
  • frontend/packages/console-shared/locales/ko/console-shared.json
  • frontend/packages/console-shared/locales/zh/console-shared.json
  • frontend/public/components/dashboard/dashboards-page/cluster-dashboard/activity-card.tsx
  • frontend/public/components/dashboard/project-dashboard/activity-card.tsx
  • frontend/public/locales/en/public.json
  • frontend/public/locales/es/public.json
  • frontend/public/locales/fr/public.json
  • frontend/public/locales/ja/public.json
  • frontend/public/locales/ko/public.json
  • frontend/public/locales/zh/public.json
💤 Files with no reviewable changes (1)
  • frontend/packages/console-shared/locales/en/console-shared.json
🧰 Additional context used
📓 Path-based instructions (1)
**

⚙️ CodeRabbit configuration file

-Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity.

Files:

  • frontend/packages/console-shared/locales/ja/console-shared.json
  • frontend/public/locales/zh/public.json
  • frontend/public/locales/ko/public.json
  • frontend/public/components/dashboard/project-dashboard/activity-card.tsx
  • frontend/public/locales/en/public.json
  • frontend/public/locales/fr/public.json
  • frontend/public/components/dashboard/dashboards-page/cluster-dashboard/activity-card.tsx
  • frontend/public/locales/es/public.json
  • frontend/public/locales/ja/public.json
  • frontend/packages/console-shared/locales/es/console-shared.json
  • frontend/packages/console-shared/locales/zh/console-shared.json
  • frontend/packages/console-shared/locales/fr/console-shared.json
  • frontend/packages/console-shared/locales/ko/console-shared.json
🧬 Code graph analysis (2)
frontend/public/components/dashboard/project-dashboard/activity-card.tsx (1)
frontend/__mocks__/i18next.ts (1)
  • t (8-14)
frontend/public/components/dashboard/dashboards-page/cluster-dashboard/activity-card.tsx (1)
frontend/__mocks__/i18next.ts (1)
  • t (8-14)
🔇 Additional comments (13)
frontend/packages/console-shared/locales/ja/console-shared.json (1)

318-318: LGTM! Translation key migration is consistent.

The removal of "View all events" from the console-shared namespace aligns with the PR objective to migrate this translation to the public namespace. Ensure that:

  1. The corresponding entry has been added to frontend/public/locales/ja/public.json (confirmed at line 426 in that file)
  2. UI components using this translation have been updated to reference public~View all events instead of the console-shared namespace
frontend/packages/console-shared/locales/ko/console-shared.json (1)

318-318: LGTM! Korean locale migration is consistent.

The removal of "View all events" from the Korean console-shared locale follows the same pattern as other locales in this PR. Verify that the corresponding entry "모든 이벤트 표시" has been added to frontend/public/locales/ko/public.json as mentioned in the AI summary.

frontend/public/locales/ja/public.json (1)

426-426: LGTM! Public namespace addition completes the migration.

The addition of "View all events" with translation "すべてのイベントを表示" to the public locale properly completes the migration from the console-shared namespace. The translation value matches what was removed from frontend/packages/console-shared/locales/ja/console-shared.json, ensuring consistency.

frontend/packages/console-shared/locales/fr/console-shared.json (1)

318-318: LGTM! French locale migration is consistent.

The removal of "View all events" ("Afficher tous les événements") from the French console-shared locale aligns with the migration pattern. Verify that the corresponding entry has been added to frontend/public/locales/fr/public.json as indicated in the AI summary.

frontend/packages/console-shared/locales/zh/console-shared.json (1)

318-318: LGTM! Chinese locale migration completes the cross-locale changes.

The removal of "View all events" ("查看所有事件") from the Chinese console-shared locale is consistent with the migration pattern across all locales (ja, ko, fr, zh). Verify that:

  1. The corresponding entry has been added to frontend/public/locales/zh/public.json
  2. All UI components (particularly RecentEventFooter in activity-card.tsx files) have been updated to reference public~View all events

Based on the AI summaries, this migration also affects English (en) and Spanish (es) locales, but those files were not provided for review. Ensure those locales follow the same consistent pattern.

frontend/public/locales/en/public.json (1)

408-408: Public namespace string for "View all events" looks correct

Key and value are consistent with other nearby labels and match the usage in dashboard components.

frontend/public/components/dashboard/project-dashboard/activity-card.tsx (1)

165-165: Use of public~View all events is consistent with existing i18n usage

The footer now pulls from the public namespace like the rest of this card, matching the updated locale files.

frontend/packages/console-shared/locales/es/console-shared.json (1)

318-318: Removal of View all events from console-shared is aligned with namespace move

The Spanish string for this key now belongs in the public bundle; keeping it out of console-shared avoids duplication and stale entries.

frontend/public/components/dashboard/dashboards-page/cluster-dashboard/activity-card.tsx (1)

195-195: Cluster activity footer now correctly uses public~View all events

Matches the updated public locale key and keeps this card consistent with the project dashboard implementation.

frontend/public/locales/zh/public.json (1)

426-426: Chinese public translation for "View all events" is consistent and well-placed

The new key/value pair matches surrounding terminology and aligns with how the label is used in the dashboards.

Also applies to: 1751-1751

frontend/public/locales/ko/public.json (1)

426-426: LGTM! Translation correctly migrated to public namespace.

The Korean translation "모든 이벤트 표시" for "View all events" is accurate and properly formatted. This change aligns with the namespace migration from console-shared to public, as referenced in the UI components.

frontend/public/locales/es/public.json (1)

426-426: LGTM! Spanish translation correctly added.

The Spanish translation "Ver todos los eventos" for "View all events" is accurate and properly placed. This change is consistent with the namespace migration pattern applied across all locale files in this PR.

frontend/public/locales/fr/public.json (1)

426-426: LGTM! Correct French translation added.

The translation "Afficher tous les événements" for "View all events" is accurate and idiomatic. This change properly completes the migration of this translation key from the console-shared namespace to the public locale package as documented in the PR objectives.


Comment @coderabbitai help to get the list of available commands and usage tips.

@openshift-ci openshift-ci bot requested review from TheRealJon and jhadvig January 5, 2026 16:04
@openshift-ci openshift-ci bot added component/core Related to console core functionality component/shared Related to console-shared approved Indicates a PR has been approved by an approver from all required OWNERS files. kind/i18n Indicates issue or PR relates to internationalization or has content that needs to be translated labels Jan 5, 2026
@cajieh
Copy link
Contributor Author

cajieh commented Jan 5, 2026

/jira refresh

@openshift-ci-robot openshift-ci-robot added jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. and removed jira/invalid-bug Indicates that a referenced Jira bug is invalid for the branch this PR is targeting. labels Jan 5, 2026
@openshift-ci-robot
Copy link
Contributor

@cajieh: This pull request references Jira Issue OCPBUGS-70324, which is valid. The bug has been moved to the POST state.

3 validation(s) were run on this bug
  • bug is open, matching expected state (open)
  • bug target version (4.22.0) matches configured target version for branch (4.22.0)
  • bug is in the state ASSIGNED, which is one of the valid states (NEW, ASSIGNED, POST)

Requesting review from QA contact:
/cc @yapei

Details

In response to this:

/jira refresh

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci openshift-ci bot requested a review from yapei January 5, 2026 16:06
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Fix all issues with AI Agents 🤖
In @frontend/packages/console-shared/locales/en/console-shared.json:
- Line 312: The JSON entry "Set maxUnavaliable to 0" contains a typo; update the
key and its value to use the correct spelling "maxUnavailable" (i.e., change
"Set maxUnavaliable to 0" to "Set maxUnavailable to 0") so the user-facing
string and lookup key both reflect the correct term.
- Around line 1-320: Typo in the locale key "maxUnavaliable" (should be
"maxUnavailable") — update the JSON key/value to correct spelling. Locate the
entry with the text "Set maxUnavaliable to 0" (appearing in the
PodDisruptionBudget description block) and rename the key/value to "Set
maxUnavailable to 0" and adjust any related sentence occurrences
("maxUnavaliable" → "maxUnavailable") so i18n lookups use the correct term.
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Cache: Disabled due to data retention organization setting

Knowledge base: Disabled due to Reviews -> Disable Knowledge Base setting

📥 Commits

Reviewing files that changed from the base of the PR and between 24830e3 and 150349e.

📒 Files selected for processing (2)
  • frontend/packages/console-shared/locales/en/console-shared.json
  • frontend/public/locales/en/console-shared.json
💤 Files with no reviewable changes (1)
  • frontend/public/locales/en/console-shared.json
🧰 Additional context used
📓 Path-based instructions (1)
**

⚙️ CodeRabbit configuration file

-Focus on major issues impacting performance, readability, maintainability and security. Avoid nitpicks and avoid verbosity.

Files:

  • frontend/packages/console-shared/locales/en/console-shared.json

Comment on lines 1 to 320
{
"View all events": "View all events",
"Actions": "Actions",
"An error occurred": "An error occurred",
"Note: Some fields may not be represented in this form view. Please select \"YAML view\" for full control.": "Note: Some fields may not be represented in this form view. Please select \"YAML view\" for full control.",
"Dev preview": "Dev preview",
"Tech preview": "Tech preview",
"No results found": "No results found",
"No results match the filter criteria. Remove filters or clear all filters to show results.": "No results match the filter criteria. Remove filters or clear all filters to show results.",
"Clear all filters": "Clear all filters",
"Relevance": "Relevance",
"A-Z": "A-Z",
"Z-A": "Z-A",
"None": "None",
"Filter by keyword...": "Filter by keyword...",
"Group by": "Group by",
"{{totalItems}} items": "{{totalItems}} items",
"Type": "Type",
"All items": "All items",
"Other": "Other",
"Software Catalog": "Software Catalog",
"Catalog items": "Catalog items",
"Provided by {{provider}}": "Provided by {{provider}}",
"N/A": "N/A",
"Provider": "Provider",
"Created at": "Created at",
"Support": "Support",
"Documentation": "Documentation",
"Get support": "Get support",
"Refer documentation": "Refer documentation",
"Could not load configuration.": "Could not load configuration.",
"Saved.": "Saved.",
"This config update requires a console rollout, this can take up to a minute and require a browser refresh.": "This config update requires a console rollout, this can take up to a minute and require a browser refresh.",
"Could not save configuration.": "Could not save configuration.",
"Started": "Started",
"There are no recent events.": "There are no recent events.",
"Resume": "Resume",
"Pause": "Pause",
"Recent events": "Recent events",
"There are no ongoing activities.": "There are no ongoing activities.",
"Ongoing": "Ongoing",
"Not available": "Not available",
"{{count}} resource_one": "{{count}} resource",
"{{count}} resource_other": "{{count}} resources",
"{{count}} resource reached quota_one": "{{count}} resource reached quota",
"{{count}} resource reached quota_other": "{{count}} resource reached quotas",
"none are at quota": "none are at quota",
"No ResourceQuotas": "No ResourceQuotas",
"Go to documentation": "Go to documentation",
"View details": "View details",
"Alerts could not be loaded.": "Alerts could not be loaded.",
"({{operatorStatusLength}} installed)": "({{operatorStatusLength}} installed)",
"Status": "Status",
"All {{status}}": "All {{status}}",
"View all": "View all",
"Unknown": "Unknown",
"Pending": "Pending",
"Updating": "Updating",
"Degraded": "Degraded",
"Loading": "Loading",
"Upgrade available": "Upgrade available",
"{{title}} breakdown": "{{title}} breakdown",
"Total capacity": "Total capacity",
"Total limit": "Total limit",
"Current utilization": "Current utilization",
"Current available capacity": "Current available capacity",
"Total requested": "Total requested",
"By {{label}}": "By {{label}}",
"Top consumer by {{label}}": "Top consumer by {{label}}",
"View more": "View more",
"Top {{label}} consumers": "Top {{label}} consumers",
"Top consumers": "Top consumers",
"Select consumer type": "Select consumer type",
"time axis": "time axis",
"Resource": "Resource",
"Usage": "Usage",
"1 hour": "1 hour",
"6 hours": "6 hours",
"24 hours": "24 hours",
"{{amount}} in": "{{amount}} in",
"{{amount}} out": "{{amount}} out",
"in": "in",
"out": "out",
"View {{title}} metrics in query browser": "View {{title}} metrics in query browser",
"{{humanAvailable}} available of {{humanMax}}": "{{humanAvailable}} available of {{humanMax}}",
"{{humanAvailable}} available": "{{humanAvailable}} available",
"{{humanLimit}} total limit": "{{humanLimit}} total limit",
"Error loading - {{placeholder}}": "Error loading - {{placeholder}}",
"Value": "Value",
"Resource requirements": "Resource requirements",
"Limits": "Limits",
"Requests": "Requests",
"Update strategy": "Update strategy",
"Node affinity": "Node affinity",
"Pod affinity": "Pod affinity",
"Expressions": "Expressions",
"Select {{title}}": "Select {{title}}",
"A form is not available for this resource. Please use the YAML view.": "A form is not available for this resource. Please use the YAML view.",
"There is some issue in this form view. Please select \"YAML view\" for full control.": "There is some issue in this form view. Please select \"YAML view\" for full control.",
"Create": "Create",
"Cancel": "Cancel",
"Advanced configuration": "Advanced configuration",
"Remove {{singularLabel}}": "Remove {{singularLabel}}",
"Add {{singularLabel}}": "Add {{singularLabel}}",
"Error": "Error",
"Fix the following errors:": "Fix the following errors:",
"true": "true",
"Select {{label}}": "Select {{label}}",
"Cluster does not have resource {{groupVersionKind}}": "Cluster does not have resource {{groupVersionKind}}",
"Copy code to clipboard": "Copy code to clipboard",
"Content copied to clipboard": "Content copied to clipboard",
"Download code": "Download code",
"Shortcuts": "Shortcuts",
"Upload code": "Upload code",
"Drag and drop a file or upload one.": "Drag and drop a file or upload one.",
"Browse": "Browse",
"Start from scratch": "Start from scratch",
"Start editing": "Start editing",
"Ask OpenShift Lightspeed": "Ask OpenShift Lightspeed",
"View all editor shortcuts": "View all editor shortcuts",
"Activate auto complete": "Activate auto complete",
"Toggle Tab action between insert Tab character and move focus out of editor": "Toggle Tab action between insert Tab character and move focus out of editor",
"View document outline": "View document outline",
"View property descriptions": "View property descriptions",
"Save": "Save",
"Hide sidebar": "Hide sidebar",
"Show sidebar": "Show sidebar",
"Restricted access": "Restricted access",
"You don't have access to this section due to cluster policy": "You don't have access to this section due to cluster policy",
"Error details": "Error details",
"No {{label}} found": "No {{label}} found",
"Not found": "Not found",
"Extension error": "Extension error",
"Something wrong happened": "Something wrong happened",
"An error occurred. Please try again.": "An error occurred. Please try again.",
"Reload page": "Reload page",
"You made changes to this page.": "You made changes to this page.",
"Click {{submit}} to save changes or {{reset}} to cancel changes.": "Click {{submit}} to save changes or {{reset}} to cancel changes.",
"Reload": "Reload",
"Download": "Download",
"Name": "Name",
"Add value": "Add value",
"Filter by type...": "Filter by type...",
"Filter by type": "Filter by type",
"{{count}} item_one": "{{count}} item",
"{{count}} item_other": "{{count}} items",
"No results match the filter criteria": "No results match the filter criteria",
"Clear filter": "Clear filter",
"Remove key/value": "Remove key/value",
"Key": "Key",
"Drag and drop file with your value here or browse to upload it.": "Drag and drop file with your value here or browse to upload it.",
"Add key/value": "Add key/value",
"Add values": "Add values",
"Remove": "Remove",
"Create new option \"{{option}}\"": "Create new option \"{{option}}\"",
"Current selections": "Current selections",
"Configure via:": "Configure via:",
"Form view": "Form view",
"YAML view": "YAML view",
"Invalid YAML cannot be persisted": "Invalid YAML cannot be persisted",
"Switching to form view will delete any invalid YAML.": "Switching to form view will delete any invalid YAML.",
"Switch and delete": "Switch and delete",
"Form view is disabled for this chart because the schema is not available": "Form view is disabled for this chart because the schema is not available",
"Getting started resources": "Getting started resources",
"Use our collection of resources to help you get started with the Console.": "Use our collection of resources to help you get started with the Console.",
"Close": "Close",
"Expandable details": "Expandable details",
"More info": "More info",
"View all quick starts": "View all quick starts",
"Build with guided documentation": "Build with guided documentation",
"Follow guided documentation to build applications and familiarize yourself with key features.": "Follow guided documentation to build applications and familiarize yourself with key features.",
"Show getting started resources": "Show getting started resources",
"Not all Containers have health checks to ensure your Application is running correctly.": "Not all Containers have health checks to ensure your Application is running correctly.",
"Container {{containersName}} does not have health checks to ensure your Application is running correctly.": "Container {{containersName}} does not have health checks to ensure your Application is running correctly.",
"Health checks": "Health checks",
"Add health checks": "Add health checks",
"Unknown error removing {{hpaLabel}} {{hpaName}}.": "Unknown error removing {{hpaLabel}} {{hpaName}}.",
"Remove {{label}}?": "Remove {{label}}?",
"Are you sure you want to remove the {{hpaLabel}}": "Are you sure you want to remove the {{hpaLabel}}",
"from": "from",
"The resources that are attached to the {{hpaLabel}} will be deleted.": "The resources that are attached to the {{hpaLabel}} will be deleted.",
"(Opens in new tab)": "(Opens in new tab)",
"Try again": "Try again",
"Error loading {{label}}": "Error loading {{label}}",
"Copy to clipboard": "Copy to clipboard",
"Run in Web Terminal": "Run in Web Terminal",
"Successfully copied to clipboard!": "Successfully copied to clipboard!",
"Running in Web Terminal": "Running in Web Terminal",
"Console plugin enablement - {{plugin}}": "Console plugin enablement - {{plugin}}",
"Console plugin enablement": "Console plugin enablement",
"This operator includes a console plugin which provides a custom interface that can be included in the console. Updating the enablement of this console plugin will prompt for the console to be refreshed once it has been updated. Make sure you trust this console plugin before enabling.": "This operator includes a console plugin which provides a custom interface that can be included in the console. Updating the enablement of this console plugin will prompt for the console to be refreshed once it has been updated. Make sure you trust this console plugin before enabling.",
"This console plugin provides a custom interface that can be included in the console. Updating the enablement of this console plugin will prompt for the console to be refreshed once it has been updated. Make sure you trust this console plugin before enabling.": "This console plugin provides a custom interface that can be included in the console. Updating the enablement of this console plugin will prompt for the console to be refreshed once it has been updated. Make sure you trust this console plugin before enabling.",
"No restrictions": "No restrictions",
"Deny all inbound traffic": "Deny all inbound traffic",
"Create Namespace": "Create Namespace",
"A Namespace name must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name' or '123-abc').": "A Namespace name must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name' or '123-abc').",
"You must create a Namespace to be able to create projects that begin with 'openshift-', 'kubernetes-', or 'kube-'.": "You must create a Namespace to be able to create projects that begin with 'openshift-', 'kubernetes-', or 'kube-'.",
"Labels": "Labels",
"Default network policy": "Default network policy",
"Create Project": "Create Project",
"An OpenShift project is an alternative representation of a Kubernetes namespace.": "An OpenShift project is an alternative representation of a Kubernetes namespace.",
"Learn more about working with projects": "Learn more about working with projects",
"A Project name must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name' or '123-abc').": "A Project name must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name' or '123-abc').",
"Display name": "Display name",
"Description": "Description",
"Delete": "Delete",
"This action cannot be undone. All associated Deployments, Routes, Builds, Pipelines, Storage/PVCs, Secrets, and ConfigMaps will be deleted.": "This action cannot be undone. All associated Deployments, Routes, Builds, Pipelines, Storage/PVCs, Secrets, and ConfigMaps will be deleted.",
"Confirm deletion by typing <1>{{resourceName}}</1> below:": "Confirm deletion by typing <1>{{resourceName}}</1> below:",
"Description:": "Description:",
"Component trace:": "Component trace:",
"Stack trace:": "Stack trace:",
"Show details": "Show details",
"No projects found": "No projects found",
"No namespaces found": "No namespaces found",
"No results match the filter criteria.": "No results match the filter criteria.",
"Clear filters": "Clear filters",
"Select project...": "Select project...",
"Select namespace...": "Select namespace...",
"Show default projects": "Show default projects",
"Show default namespaces": "Show default namespaces",
"Projects": "Projects",
"Namespaces": "Namespaces",
"Favorites": "Favorites",
"All Projects": "All Projects",
"All Namespaces": "All Namespaces",
"Project": "Project",
"Namespace": "Namespace",
"Enable Autoscale": "Enable Autoscale",
"Increase the Pod count": "Increase the Pod count",
"Decrease the Pod count": "Decrease the Pod count",
"No Pods found for this resource.": "No Pods found for this resource.",
"Hide waiting pods with errors": "Hide waiting pods with errors",
"Show waiting pods with errors": "Show waiting pods with errors",
"Waiting for the first build to run successfully. You may temporarily see \"ImagePullBackOff\" and \"ErrImagePull\" errors while waiting.": "Waiting for the first build to run successfully. You may temporarily see \"ImagePullBackOff\" and \"ErrImagePull\" errors while waiting.",
"View all {{podSize}}": "View all {{podSize}}",
"Quick search bar": "Quick search bar",
"No results": "No results",
"Quick search list": "Quick search list",
"Quick search": "Quick search",
"Hover": "Hover",
"Drag": "Drag",
"Click": "Click",
"Right click": "Right click",
"Drag + Drop": "Drag + Drop",
"{{labels}} content is not available in the catalog at this time due to loading failures.": "{{labels}} content is not available in the catalog at this time due to loading failures.",
"Timed out fetching new data. The data below is stale.": "Timed out fetching new data. The data below is stale.",
"Information": "Information",
"In progress": "In progress",
"Healthy": "Healthy",
"Warning": "Warning",
"Enable": "Enable",
"Disable": "Disable",
"Enabling console plugin": "Enabling console plugin",
"This console plugin will be able to provide a custom interface and run any Kubernetes command as the logged in user. Make sure you trust it before enabling.": "This console plugin will be able to provide a custom interface and run any Kubernetes command as the logged in user. Make sure you trust it before enabling.",
"OLSConfig": "OLSConfig",
"OLSConfigs": "OLSConfigs",
"{{label}} details": "{{label}} details",
"Provisioned as node": "Provisioned as node",
"Select options": "Select options",
"Select input": "Select input",
"Pod": "Pod",
"Pods": "Pods",
"Scaled to 0": "Scaled to 0",
"Scaling to {{podSubTitle}}": "Scaling to {{podSubTitle}}",
"Autoscaled": "Autoscaled",
"to 0": "to 0",
"Autoscaling": "Autoscaling",
"to {{count}} Pod_one": "to {{count}} Pod",
"to {{count}} Pod_other": "to {{count}} Pods",
"Allow reading Nodes in the core API groups (for ClusterRoleBinding)": "Allow reading Nodes in the core API groups (for ClusterRoleBinding)",
"This \"ClusterRole\" is allowed to read the resource \"Nodes\" in the core group (because a Node is cluster-scoped, this must be bound with a \"ClusterRoleBinding\" to be effective).": "This \"ClusterRole\" is allowed to read the resource \"Nodes\" in the core group (because a Node is cluster-scoped, this must be bound with a \"ClusterRoleBinding\" to be effective).",
"\"GET/POST\" requests to non-resource endpoint and all subpaths (for ClusterRoleBinding)": "\"GET/POST\" requests to non-resource endpoint and all subpaths (for ClusterRoleBinding)",
"This \"ClusterRole\" is allowed to \"GET\" and \"POST\" requests to the non-resource endpoint \"/healthz\" and all subpaths (must be in the \"ClusterRole\" bound with a \"ClusterRoleBinding\" to be effective).": "This \"ClusterRole\" is allowed to \"GET\" and \"POST\" requests to the non-resource endpoint \"/healthz\" and all subpaths (must be in the \"ClusterRole\" bound with a \"ClusterRoleBinding\" to be effective).",
"Build from Dockerfile": "Build from Dockerfile",
"A Dockerfile build performs an image build using a Dockerfile in the source repository or specified in build configuration.": "A Dockerfile build performs an image build using a Dockerfile in the source repository or specified in build configuration.",
"Source-to-Image (S2I) build": "Source-to-Image (S2I) build",
"S2I is a tool for building reproducible container images. It produces ready-to-run images by injecting the application source into a container image and assembling a new image.": "S2I is a tool for building reproducible container images. It produces ready-to-run images by injecting the application source into a container image and assembling a new image.",
"Set compute resource quota": "Set compute resource quota",
"Limit the total amount of memory and CPU that can be used in a namespace.": "Limit the total amount of memory and CPU that can be used in a namespace.",
"Set maximum count for any resource": "Set maximum count for any resource",
"Restrict maximum count of each resource so users cannot create more than the allotted amount.": "Restrict maximum count of each resource so users cannot create more than the allotted amount.",
"Specify resource quotas for a given storage class": "Specify resource quotas for a given storage class",
"Limit the size and number of persistent volume claims that can be created with a storage class.": "Limit the size and number of persistent volume claims that can be created with a storage class.",
"Allow reading the resource in API group": "Allow reading the resource in API group",
"This \"Role\" is allowed to read the resource \"Pods\" in the core API group.": "This \"Role\" is allowed to read the resource \"Pods\" in the core API group.",
"Allow reading/writing the resource in API group": "Allow reading/writing the resource in API group",
"This \"Role\" is allowed to read and write the \"Deployments\" in both the \"extensions\" and \"apps\" API groups.": "This \"Role\" is allowed to read and write the \"Deployments\" in both the \"extensions\" and \"apps\" API groups.",
"Allow different access rights to different types of resource and API groups": "Allow different access rights to different types of resource and API groups",
"This \"Role\" is allowed to read \"Pods\" and read/write \"Jobs\" resources in API groups.": "This \"Role\" is allowed to read \"Pods\" and read/write \"Jobs\" resources in API groups.",
"Allow reading a ConfigMap in a specific namespace (for RoleBinding)": "Allow reading a ConfigMap in a specific namespace (for RoleBinding)",
"This \"Role\" is allowed to read a \"ConfigMap\" named \"my-config\" (must be bound with a \"RoleBinding\" to limit to a single \"ConfigMap\" in a single namespace).": "This \"Role\" is allowed to read a \"ConfigMap\" named \"my-config\" (must be bound with a \"RoleBinding\" to limit to a single \"ConfigMap\" in a single namespace).",
"Add a link to the user menu": "Add a link to the user menu",
"The user menu appears in the right side of the masthead below the username.": "The user menu appears in the right side of the masthead below the username.",
"Add a link to the application menu": "Add a link to the application menu",
"The application menu appears in the masthead below the 9x9 grid icon. Application menu links can include an optional image and section heading.": "The application menu appears in the masthead below the 9x9 grid icon. Application menu links can include an optional image and section heading.",
"Add a link to the namespace dashboard": "Add a link to the namespace dashboard",
"Namespace dashboard links appear on the project dashboard and namespace details pages in a section called \"Launcher\". Namespace dashboard links can optionally be restricted to a specific namespace or namespaces.": "Namespace dashboard links appear on the project dashboard and namespace details pages in a section called \"Launcher\". Namespace dashboard links can optionally be restricted to a specific namespace or namespaces.",
"Add a link to the contact mail": "Add a link to the contact mail",
"The contact mail link appears in the user menu below the username. The link will open the default email client with the email address filled in.": "The contact mail link appears in the user menu below the username. The link will open the default email client with the email address filled in.",
"Add catalog categories": "Add catalog categories",
"Provides a list of default categories which are shown in the Software Catalog. The categories must be added below customization developerCatalog.": "Provides a list of default categories which are shown in the Software Catalog. The categories must be added below customization developerCatalog.",
"Add project access roles": "Add project access roles",
"Provides a list of default roles which are shown in the Project Access. The roles must be added below customization projectAccess.": "Provides a list of default roles which are shown in the Project Access. The roles must be added below customization projectAccess.",
"Add page actions": "Add page actions",
"Provides a list of all available actions on the Add page in the Developer perspective. The IDs must be added below customization addPage disabledActions to hide these actions.": "Provides a list of all available actions on the Add page in the Developer perspective. The IDs must be added below customization addPage disabledActions to hide these actions.",
"Add sub-catalog types": "Add sub-catalog types",
"Provides a list of all the available sub-catalog types which are shown in the Software Catalog. The types must be added below spec customization developerCatalog": "Provides a list of all the available sub-catalog types which are shown in the Software Catalog. The types must be added below spec customization developerCatalog",
"Add user perspectives": "Add user perspectives",
"Provides a list of all the available user perspectives which are shown in the perspective dropdown. The perspectives must be added below spec customization.": "Provides a list of all the available user perspectives which are shown in the perspective dropdown. The perspectives must be added below spec customization.",
"Add pinned resources": "Add pinned resources",
"Provides a list of resources to be pinned on the Developer perspective navigation. The pinned resources must be added below spec customization perspectives.": "Provides a list of resources to be pinned on the Developer perspective navigation. The pinned resources must be added below spec customization perspectives.",
"Set maxUnavaliable to 0": "Set maxUnavaliable to 0",
"An eviction is allowed if at most 0 pods selected by \"selector\" are unavailable after the eviction.": "An eviction is allowed if at most 0 pods selected by \"selector\" are unavailable after the eviction.",
"Set minAvailable to 25%": "Set minAvailable to 25%",
"An eviction is allowed if at least 25% of pods selected by \"selector\" will still be available after the eviction.": "An eviction is allowed if at least 25% of pods selected by \"selector\" will still be available after the eviction.",
"Helm Release": "Helm Release",
"Name must consist of lower-case letters, numbers and hyphens. It must start with a letter and end with a letter or number.": "Name must consist of lower-case letters, numbers and hyphens. It must start with a letter and end with a letter or number.",
"Cannot be longer than {{characterCount}} characters.": "Cannot be longer than {{characterCount}} characters.",
"Required": "Required"
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash

# Verify JSON validity
echo "=== Checking JSON validity ==="
cat frontend/packages/console-shared/locales/en/console-shared.json | python3 -m json.tool > /dev/null && echo "JSON is valid" || echo "JSON is INVALID"

# Search for i18n configuration in the codebase
echo -e "\n=== Searching for i18n configuration files ==="
fd -type f \( -name "*i18n*" -o -name "*config*" \) | head -20

# Check for references to locale paths in TypeScript/JavaScript files
echo -e "\n=== Checking for references to console-shared locale ==="
rg -l 'console-shared' --type ts --type js | head -20

# Search for old public path references that should be removed
echo -e "\n=== Checking for stale references to old public/locales path ==="
rg 'public/locales.*console-shared|console-shared.*public/locales' || echo "No old path references found"

# Check for new package path references
echo -e "\n=== Checking for new package path references ==="
rg 'packages/console-shared.*locale|@console-shared.*locale' -n | head -20

# Verify the typo claim on line 312
echo -e "\n=== Checking line 312 for typo ==="
sed -n '312p' frontend/packages/console-shared/locales/en/console-shared.json

Repository: openshift/console

Length of output: 147


🏁 Script executed:

#!/bin/bash

# First, verify the file exists and is valid JSON
echo "=== Checking file existence and JSON validity ==="
if [ -f "frontend/packages/console-shared/locales/en/console-shared.json" ]; then
  echo "File exists"
  python3 -c "import json; json.load(open('frontend/packages/console-shared/locales/en/console-shared.json'))" && echo "JSON is valid" || echo "JSON is INVALID"
else
  echo "File not found"
fi

# Check line count to verify it's 320 lines as claimed
echo -e "\n=== Line count ==="
wc -l frontend/packages/console-shared/locales/en/console-shared.json

# Check the specific line with the alleged typo
echo -e "\n=== Checking for typo (line around 312) ==="
grep -n "maxUnav" frontend/packages/console-shared/locales/en/console-shared.json

# Check if old path exists
echo -e "\n=== Checking old path ==="
if [ -f "frontend/public/locales/en/console-shared.json" ]; then
  echo "Old path still exists"
else
  echo "Old path does not exist"
fi

Repository: openshift/console

Length of output: 382


🏁 Script executed:

#!/bin/bash

# Search for i18n configuration and package.json files
echo "=== Checking package.json in console-shared ==="
if [ -f "frontend/packages/console-shared/package.json" ]; then
  cat frontend/packages/console-shared/package.json | head -30
fi

# Search for i18n loader configuration
echo -e "\n=== Searching for i18n configuration or references ==="
rg -i 'locales|i18n' frontend/packages/console-shared/package.json 2>/dev/null || echo "No matches in package.json"

# Check for index or entry files that might export locales
echo -e "\n=== Checking for index files in console-shared ==="
ls -la frontend/packages/console-shared/ 2>/dev/null | head -20

# Search for how locale files are imported in the main console
echo -e "\n=== Searching for locale imports in main console ==="
rg 'console-shared' frontend/public/index.html 2>/dev/null | head -5

# Check webpack or build configuration
echo -e "\n=== Checking webpack configuration ==="
fd webpack.config.js | head -3
</parameter>

Repository: openshift/console

Length of output: 1047


🏁 Script executed:

#!/bin/bash

# Search for how locales are imported/required across the codebase
echo "=== Searching for locale file imports ==="
rg -n "locales/en/console-shared" --type ts --type js | head -20

# Check if there's an index or export from console-shared
echo -e "\n=== Checking for locale exports in console-shared src ==="
ls -la frontend/packages/console-shared/src/ | head -20

# Search for i18n setup in main app
echo -e "\n=== Searching for i18n initialization ==="
rg -n "i18n\\.init|i18n\\.use|i18next" --type ts --type js | head -20

# Check locales directory structure
echo -e "\n=== Checking locales directory structure ==="
find frontend/packages/console-shared/locales -type f | head -20

# Search for any direct references to the locale file path
echo -e "\n=== Searching for direct locale file path references ==="
rg -n "packages/console-shared/locales" --type ts --type js --type json | head -20

Repository: openshift/console

Length of output: 3602


🏁 Script executed:

#!/bin/bash

# Check the webpack configuration to see how locales are loaded
echo "=== Checking webpack.config.ts for locale loading ==="
sed -n '290,310p' frontend/webpack.config.ts

# Search for where i18n loads the locale files
echo -e "\n=== Searching for i18n.loadNamespace or locale loading patterns ==="
rg -n "loadNamespace|namespaces|console-shared" frontend/public/index.tsx frontend/public/index.html 2>/dev/null | head -20

# Check for dynamic locale file loading
echo -e "\n=== Searching for locale file loading mechanism ==="
rg -n "locales/" --type ts --type js -A 2 -B 2 | head -40

# Check if there's a manifest or namespace configuration
echo -e "\n=== Checking for i18n namespace configuration ==="
rg -n "console-shared|namespaces" frontend/public/i18n.ts frontend/public/init-plugins.ts 2>/dev/null | head -20

Repository: openshift/console

Length of output: 4314


🏁 Script executed:

#!/bin/bash

# Check the i18n.js to understand how locales are loaded
echo "=== Checking i18n.js loading mechanism ==="
cat frontend/public/i18n.js | head -50

# Verify the consolidate-public-folders script to understand the build process
echo -e "\n=== Checking consolidation script ==="
cat frontend/i18n-scripts/consolidate-public-folders.js

Repository: openshift/console

Length of output: 4323


Fix typo: "maxUnavaliable" should be "maxUnavailable" on line 312.

The locale file relocation is properly configured in the webpack build (copy plugin includes the new path), and the i18n consolidation script will correctly merge these locales with the public locales during the build process. However, fix the misspelling in the PodDisruptionBudget description string.

🤖 Prompt for AI Agents
In @frontend/packages/console-shared/locales/en/console-shared.json around lines
1-320, Typo in the locale key "maxUnavaliable" (should be "maxUnavailable") —
update the JSON key/value to correct spelling. Locate the entry with the text
"Set maxUnavaliable to 0" (appearing in the PodDisruptionBudget description
block) and rename the key/value to "Set maxUnavailable to 0" and adjust any
related sentence occurrences ("maxUnavaliable" → "maxUnavailable") so i18n
lookups use the correct term.

"Provides a list of all the available user perspectives which are shown in the perspective dropdown. The perspectives must be added below spec customization.": "Provides a list of all the available user perspectives which are shown in the perspective dropdown. The perspectives must be added below spec customization.",
"Add pinned resources": "Add pinned resources",
"Provides a list of resources to be pinned on the Developer perspective navigation. The pinned resources must be added below spec customization perspectives.": "Provides a list of resources to be pinned on the Developer perspective navigation. The pinned resources must be added below spec customization perspectives.",
"Set maxUnavaliable to 0": "Set maxUnavaliable to 0",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix typo in user-facing string.

The key contains a typo: "maxUnavaliable" should be "maxUnavailable".

🔎 Proposed fix
-    "Set maxUnavaliable to 0": "An eviction is allowed if at most 0 pods selected by \"selector\" are unavailable after the eviction.",
+    "Set maxUnavailable to 0": "An eviction is allowed if at most 0 pods selected by \"selector\" are unavailable after the eviction.",
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"Set maxUnavaliable to 0": "Set maxUnavaliable to 0",
"Set maxUnavailable to 0": "Set maxUnavailable to 0",
🤖 Prompt for AI Agents
In @frontend/packages/console-shared/locales/en/console-shared.json around line
312, The JSON entry "Set maxUnavaliable to 0" contains a typo; update the key
and its value to use the correct spelling "maxUnavailable" (i.e., change "Set
maxUnavaliable to 0" to "Set maxUnavailable to 0") so the user-facing string and
lookup key both reflect the correct term.

Copy link
Member

@logonoff logonoff left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You need to modify frontend/public/components/dashboard/project-dashboard/activity-card.tsx to fix the bug in #15606

@cajieh cajieh force-pushed the revert-console-shared.json-console-shared-directory branch from 150349e to 14a55a1 Compare January 5, 2026 16:58
@openshift-ci openshift-ci bot added the component/dashboard Related to dashboard label Jan 5, 2026
Copy link
Member

@logonoff logonoff left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Jan 5, 2026
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Jan 5, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: cajieh, logonoff

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@cajieh
Copy link
Contributor Author

cajieh commented Jan 5, 2026

/verified later @yapei

@openshift-ci-robot openshift-ci-robot added verified-later verified Signifies that the PR passed pre-merge verification criteria labels Jan 5, 2026
@openshift-ci-robot
Copy link
Contributor

@cajieh: This PR has been marked to be verified later by @yapei.

Details

In response to this:

/verified later @yapei

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@cajieh
Copy link
Contributor Author

cajieh commented Jan 5, 2026

/test okd-scos-images

@openshift-ci-robot
Copy link
Contributor

/retest-required

Remaining retests: 0 against base HEAD 24830e3 and 2 for PR HEAD 14a55a1 in total

@cajieh
Copy link
Contributor Author

cajieh commented Jan 5, 2026

/test okd-scos-images

1 similar comment
@cajieh
Copy link
Contributor Author

cajieh commented Jan 6, 2026

/test okd-scos-images

@openshift-ci-robot
Copy link
Contributor

/retest-required

Remaining retests: 0 against base HEAD d00353d and 1 for PR HEAD 14a55a1 in total

@jhadvig
Copy link
Member

jhadvig commented Jan 6, 2026

/override ci/prow/okd-scos-images

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Jan 6, 2026

@jhadvig: Overrode contexts on behalf of jhadvig: ci/prow/okd-scos-images

Details

In response to this:

/override ci/prow/okd-scos-images

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@jhadvig jhadvig added the plugin-api-approved Indicates a PR with plugin API changes has been approved by an API reviewer label Jan 6, 2026
@logonoff
Copy link
Member

logonoff commented Jan 6, 2026

/retest

@openshift-ci-robot
Copy link
Contributor

/retest-required

Remaining retests: 0 against base HEAD 9c70ba0 and 0 for PR HEAD 14a55a1 in total

@openshift-ci-robot
Copy link
Contributor

/hold

Revision 14a55a1 was retested 3 times: holding

@openshift-ci openshift-ci bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Jan 7, 2026
@cajieh
Copy link
Contributor Author

cajieh commented Jan 7, 2026

/cancel hold

@cajieh
Copy link
Contributor Author

cajieh commented Jan 7, 2026

/retest

@cajieh
Copy link
Contributor Author

cajieh commented Jan 7, 2026

/test okd-scos-images

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Jan 7, 2026

@cajieh: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/okd-scos-images 14a55a1 link true /test okd-scos-images

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. component/core Related to console core functionality component/dashboard Related to dashboard component/shared Related to console-shared do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. jira/valid-bug Indicates that a referenced Jira bug is valid for the branch this PR is targeting. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. kind/i18n Indicates issue or PR relates to internationalization or has content that needs to be translated lgtm Indicates that a PR is ready to be merged. plugin-api-approved Indicates a PR with plugin API changes has been approved by an API reviewer verified Signifies that the PR passed pre-merge verification criteria verified-later

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants