Skip to content

TranslateService.set breaks the localization keys with . inside #1561

Open
@matthieu-crouzet

Description

@matthieu-crouzet

Current behavior

In our application we provide our localization with the following format

{
   "my-component-selector.key1": "value1",
   "my-component-selector.key2": "value2"
}

If I call TranslateService.set('my-component-selector.key1', 'new value').
It updates correctly my-component-selector.key1 but I lost the localization of my-component-selector.key2.
From what I understood it is because now localization keys are handled with hierarchy.
So after the update we should have something like:

{
  "my-component-selector": {
     "key1": "new value"
   },
   "my-component-selector.key2": "value2"
}

and now the translate service for my-component-selector.key2 returns undefined.

Expected behavior

I would expect my-component-selector.key2 to still be translated correctly as it works before the call to TranslateService.set

How do you think that we should fix this?

I think 2 options are possible here:

  • The resolution of keys should first check the hierarchy as for now, and if undefined then check for the key as is.
  • TranslateService.set could take an extra parameter to keep the format, in the example my-component-selector.key1 instead of {my-component-selector: {key1: 'new value'}}

Minimal reproduction of the problem with instructions

  • Define differents localization keys with the same prefix and . as separator.
  • Call TranslateService.set

Environment


ngx-translate version: 16.0.0
Angular version: 19.0.0

Browser:
- [x] Chrome (desktop) version XX
- [x] Chrome (Android) version XX
- [x] Chrome (iOS) version XX
- [x] Firefox version XX
- [x] Safari (desktop) version XX
- [x] Safari (iOS) version XX
- [x] IE version XX
- [x] Edge version XX
 
For Tooling issues:
- Node version: 20 || 22  
- Platform:   Mac, Linux, Windows

Others:
N/A

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions