Conversation
Pegasystems Inc.
IN
Last activity: 19 Jan 2026 18:04 EST
Localization in Infinity 25: Bundles, not scattered rules
Infinity 25 changes localization in a big way. Instead of maintaining individual localization rules per view, portal, or paragraph, localization is now handled through bundles. A bundle is a centralized localization rule that aggregates labels for an application. Internally, bundles are instances of Rule-UI-Localization. This makes localization easier to manage, export, translate, and serve at runtime.
The three localization bundles in Infinity 25
Infinity 25 uses three bundle types.
1) Base bundle (system-generated)
The base bundle is the source-of-truth catalog of labels for the application.
-
Type:
Rule-UI-Localization -
Context:
bundle -
Naming: typically
<pyProductName> -
Created in:
@baseclass. -
Creation:
-
Created when you run the Localization Wizard, or
-
From Application Definition → Generate base bundle
-
-
Used for:
-
Exporting labels to Excel/JSON via the wizard
-
Acting as the baseline for translation generation
-
-
Important: do not edit manually. Treat it as generated output.
2) Language bundle (runtime-served)
The language bundle stores translations and is what the runtime uses to render localized UI for a user.
-
Type:
Rule-UI-Localization -
Context:
bundle -
Naming: typically
<pyProductName>_<langCode>(example:AcmeClaims_fr) -
Created in:
@baseclass. -
Populated by: importing translated Excel/JSON
-
Runtime behavior:
-
Stored in language rulesets
-
Those rulesets are automatically applied to the user profile at runtime
-
3) Overrides bundle (client-owned extension)
The overrides bundle is a client-owned extension point. It’s where clients add their own message groups (like MESSAGES, STATUSWORK, etc.) so those labels participate in the standard export/import workflow.
-
Type:
Rule-UI-Localization -
Context:
overrides -
Naming: client-defined
-
Created in:
@baseclass. -
Must be created by: the client
-
Critical ordering:
-
Create the overrides bundle before generating the base bundle
-
Select it in Application Definition → Localization Configurations → Overrides for localizatio
-
-
Language requirement: overrides must be authored in the base language (typically English)
-
Effect: labels from overrides are included when the base bundle is generated
Example overrides format:
{ "MESSAGES": { "my custom message": "my custom message" }, ... }
Built-on applications: the recommended approach (centralized translations)
Bundle localization also changes how translation is handled in built-on stacks. To keep things simple and predictable, the recommended pattern is to centralize translations in the top-most application.
Example built-on stack
| Layer | Application | Purpose |
|---|---|---|
| Top | AcmeClaims |
Client-specific claims experience and UI customization |
| Middle | ClaimsAccel |
Shared claims accelerators and patterns |
| Base | Constellation / platform |
Constellation UI foundation |
In this model:
-
Labels can originate in any layer (platform, accelerators, or client app).
-
Translation ownership stays in one place: the top-most application.
What you do
-
Generate a base bundle for each application in the stack
-
ClaimsAccel→ base bundle -
AcmeClaims→ base bundle (Base bundles are only applicable for Constellation-based apps.)
-
-
Create language bundles only for the top-most application
-
Example:
AcmeClaims_fr,AcmeClaims_de, etc.
-
-
When generating translations from the top-most application, set:
-
Re-translate all layers = true
-
What this really means
-
The top app becomes the single place where translation files are produced and imported.
-
When labels change in lower layers, you regenerate translation inputs from the top and keep your workflow consistent.
-
Teams don’t have to coordinate translations per layer.
Migration From Infinity 24
Most existing applications will need a one-time migration step to move from legacy localization artifacts to bundles.
-
Migration activity: Rule-UI-Localization.pxMigrateToLocalizationV2
-
What it does: T
his will merge the existing translations to make it a bundle. Always provide the -
When to run: Once environment is migrated.
-
Validation:
Success message from the activity
Important notes :
-
During localization work, always use an open ruleset (or enable branching) so bundle generation and updates can be saved cleanly without ruleset lock issues.
-
Before you start, verify that the top-most ruleset in the application ruleset stack actually exists in the application (and is available). If it’s missing, rule creation can fail or land in an unexpected ruleset.
-
If you’re using branching and you create a language bundle inside a branch, you have two clean ways to test it:
-
Merge the branch so the language bundle lands in the base ruleset and is picked up normally at runtime.
-
Or, for quick validation, add the language ruleset to the bottom of the application ruleset stack so the runtime can resolve the bundle while the change is still in the branch.
-
-
Any issues with "re-translate all layers", please install HFIX-C4425 in your system..