@@ -592,18 +592,21 @@ func (r *DesktopUsersProcessesRunner) Update(data io.Reader) error {
592592}
593593
594594// Ping handles notifications from the control service that a subscribed
595- // subsystem (e.g. localizations) has been updated. The runner re-writes the
596- // shared localization file so desktop child processes pick up the new
597- // translations on their next read, and refreshes the menu so any localized
598- // menu strings reflect the new locale as well.
595+ // subsystem (e.g. localizations) has been updated. Refreshing the menu
596+ // re-writes the shared localization file so desktop child processes pick up
597+ // the new translations on their next read, and refreshes any localized menu
598+ // strings so they reflect the new locale as well.
599+ //
600+ // We deliberately do not restart the desktop process here. Most localized
601+ // strings (menu items, and notification labels on Windows/Linux) are read
602+ // fresh and update live via the menu refresh. The one exception is the macOS
603+ // notification "Learn More" label, which is baked into the registered
604+ // notification category at listener startup and so only picks up a new locale
605+ // after the desktop process restarts. Since that label changes very rarely and
606+ // restarting is disruptive (drops the menu bar item, notification listener, and
607+ // presence sessions), we leave it to update on the next natural desktop
608+ // process restart rather than forcing one on every update.
599609func (r * DesktopUsersProcessesRunner ) Ping () {
600- if err := r .writeLocalizationFile (); err != nil {
601- r .slogger .Log (context .TODO (), slog .LevelWarn ,
602- "failed to write localization file after subsystem update" ,
603- "err" , err ,
604- )
605- }
606-
607610 r .refreshMenu ()
608611}
609612
0 commit comments