Overriding Localization Bundles in Infinity 25

Infinity 25 deprecates pyGenerics for localization.

Historically, pyGenerics was used to extend categories like MESSAGES, PULSE, and similar keys. Teams relied on it to add custom messages, and Pulse filters.

Here’s the problem with that approach.

When a client overrides pyGenerics, in their ruleset their rule always took precedence due to rule resolution. Any new labels or updates delivered by the platform were silently ignored. Over time, this led to missing messages, and painful merges during upgrades.

Infinity 25 fixes this by introducing override localization bundles.

Instead of replacing the platform bundle, overrides are merged with the base bundle generated from the application. The merge happens at the end of the base bundle creation, and only the overridden keys take precedence. Everything else continues to flow in from the platform.

This gives you the best of both worlds:

  • Platform updates are preserved

  • Client-specific labels override only what they need to

How Override Localization Bundles Work

At runtime:

  1. The platform generates the base localization bundle

  2. Your override bundle is merged on top

  3. In case of conflicts, the override bundle wins

No more shadowing the entire bundle just to add one label.

Creating an Override Localization Bundle

Step 1: Create the localization rule

  • Create a new Localization rule

  • Set Context to overrides

  • Set Applies To as @baseclass

  • The label can be anything meaningful

Step 2: Add your labels

Define only what you want to add or change.

Example:

{

"MESSAGES": {

"msg 1": "msg 1"

}

}

Avoid copying existing platform keys unless you actually want to override them.

Step 3: Attach the override to the application

  • Open Application Definition

  • Scroll to localization configuration section

  • In the Overrides for localization dropdown, select your newly created override bundle from the list, list will be shown when you click down arrow.

  • Save the application definition

This step is mandatory. Without it, the override bundle is ignored.

Step 4: Generate language packs

  • Go to Application Studio

  • Regenerate the language packs

Your overrides will now be merged correctly with the base bundle.

What This Really Means

If you’re still carrying forward a pyGenerics override in Infinity 25, you’re blocking platform improvements without realizing it.

Override bundles are not just a replacement. They’re a safer, upgrade-friendly model that aligns localization with how modern platforms evolve.

Use them. Your future upgrades will thank you.

Use Cases:

Customising Component Static Labels

One common use case for localization bundle overrides is changing static labels that are shipped as part of Constellation components.

For example, if you want to change the Create label displayed in the App Shell, this label is not user-provided data but a static component label.

As a general rule, if a label is not coming from user input, field configuration, or case data, there is a high chance that it is defined as a static component localization entry.

Finding Component Localization Keys

All static component labels are available through the Constellation CDN.

  1. Launch your Constellation portal.

  2. Open the browser Developer Tools and reload the page.

  3. Navigate to the Network tab.

  4. Select any JavaScript request and inspect the Request URL from the request headers.

You will typically find a URL similar to:

https://release.constellation.pega.com/25.1.2-HFIX-20260618162429/25.1.2-397/react/prod/pega-bootstrap-component.js?v=2512HFIX20260618162429

Replace the file name with:

components/componentslocalization.json

Resulting in:

https://release.constellation.pega.com/25.1.2-HFIX-20260618162429/25.1.2-397/react/prod/components/componentslocalization.json

Opening this URL returns a JSON document containing all static localization entries used by Constellation components.

Sample response looks like below:

Identifying the Required Key

Search within the JSON for the label that you want to customize. Once located, note both the localization key and its parent object hierarchy.

For example, the App Shell Create button is represented as:

{
  "CosmosFields": {
    ....
    "app_shell_create": "Create"
    ....
  }
}

To override this label, add the following entry to your localization override bundle:

{
  "CosmosFields": {
    "app_shell_create": "Your Custom String"
  }
}

Important: Preserve the JSON hierarchy exactly as defined in componentslocalization.json. In this example, app_shell_create is nested under CosmosFields; therefore, the override must maintain the same structure.

After applying the override, the App Shell button will display Your Custom String instead of Create.

Additional Notes

This technique can be used to customize many other Constellation-provided static labels without modifying the underlying component implementation. Any localization entry present in componentslocalization.json can potentially be overridden through localization bundles.

Caution: During Infinity upgrades or hotfix updates, always review the latest componentslocalization.json file. Localization keys may be renamed, moved to different parent objects, or reorganized as part of component changes. If the JSON structure changes, existing overrides may stop working and need to be updated accordingly.

Upgrade Recommendation: Include validation of localization overrides as part of your Constellation upgrade checklist. Verify that:

  • The localization key still exists.

  • The parent hierarchy remains unchanged.

  • The label still belongs to the same component namespace.

Performing this validation proactively can prevent unexpected fallback labels or missing translations after an upgrade.

Constellation 101 Series

Enjoyed this article? See more similar articles in Constellation 101 series.

2 Likes

Thanks for sharing, very information. For interested in Localization topic, might be beneficial to watch webinar recording: Internationalization & Localization with Constellation | Pega

1 Like

Very informative article. This has been instrumental in resolving an assignment label that is not included in the localization bundle, particularly when the stage is created through the “Stage rule type.” Thank you.

1 Like

glad it helped