godotengine / godotengine/godot

NOTIFICATION_TRANSLATION_CHANGED doesn't get fired when translations are updated/added/removed

Open
#119,641 2 comments 0 reactions 0 assignees View on GitHub
bug needs testing topic:i18n
Dominant language
C++
Stars
117k
Forks
26.8k
PR merge metrics
PR metrics pending

Description

### Tested versions

v4.6.2.stable.mono.arch_linux [001aa128b]

### System information

Godot v4.6.2.stable.mono (001aa128b) - Arch Linux #1 SMP PREEMPT_DYNAMIC Thu, 02 Apr 2026 23:33:01 +0000 - X11 display driver, Multi-window, 2 monitors - OpenGL 3 (Compatibility) - NVIDIA GeForce GTX 1080 (nvidia; 580.142) - Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz (12 threads) - 31.20 GiB memory

### Issue description

I am writing a dialog system for my game. In the editor of this this system I show all possible translations of a string and I want this to automatically update when the `TranslationServer` gets updated.

The issue is that `NOTIFICATION_TRANSLATION_CHANGED` does not fired in the following situations:
- When a translation gets updated (no new strings added, but string content changed).
- When a translation/locale gets added or removed.

Right now I am using a plugin I wrote that digs deep into the editor internals to capture the relevant events and sends the notifcation to the editor's main screen. This works for my use case, but better would be being able to subscribe to relevant events in the `TranslationServer`. E.g. `TranslationServer.TranslationAdded`, `TranslationServer.TranslationRemoved`, `TranslationServer.TranslationChanged`, `TranslationServer.LocaleAdded`, `TranslationServer.LocaleRemoved`, etc. It being a plugin that digs into editor internals also means it's very likely to break when the engine updates.

If this is out of scope, I will file a proposal for being able to subscribe to `TranslationServer` events.

### Steps to reproduce

1. Create a node
2. Override `_notification`
3. Listen to `NOTIFICATION_TRANSLATION_CHANGED`
4. Add/remove a translation through the localization editor
5. No event is fired

--

1. Create a node
2. Override `_notification`
3. Listen to `NOTIFICATION_TRANSLATION_CHANGED`
4. Change a translation in a translation file
5. No event is fired

### Minimal reproduction project (MRP)

[translation-repro.zip](https://github.com/user-attachments/files/28117410/translation-repro.zip)

Contributor guide

Open the contributing guide

Research direction

Start by running the linked translation-repro.zip project and confirm the missing NOTIFICATION_TRANSLATION_CHANGED events for updated, added, and removed translations. Trace the TranslationServer update path and the notification delivery path. Done means the notification is emitted for all three cases without relying on editor-internal hooks.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
localization
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.