Here is an interim solution to fix the behavior using a lua script:
local text_surface_keys_list = setmetatable({}, {__mode = "k"}) --list of text surfaces to update on language change
local text_surface_meta = sol.main.get_metatable("text_surface")
local old_set_text_key = text_surface_meta.set_text_key
function text_surface_meta:set_text_key(key, ...)
text_surface_keys_list[self] = key --add text surface to list to automatically update on language change and save key
return old_set_text_key(self, key, ...)
end
local old_set_text = text_surface_meta.set_text
function text_surface_meta:set_text(...)
text_surface_keys_list[self] = nil --no longer automatically update this text surface when language changed
return old_set_text(self, ...)
end
local old_set_lang = sol.language.set_language
function sol.language.set_language(...)
old_set_lang(...) --change the language
--update text of active text surfaces assigned a text key
for text_surface, text_key in pairs(text_surface_keys_list) do
text_surface:set_text_key(text_key)
end
end