The issue:
-
GetPropertyChangedSignal("LocaleId")
on a Translator object on the server seemingly fires for all languages except Portuguese (pt-br) - The Changed event does not fire when LocaleId is changed to pt-br
- Checking per frame does catch the change, so the LocaleId does actually change, it’s just not firing events for Portuguese.
Here is a repro place. It is open for downloading and editing in studio:
(This is a place uploaded to Roblox instead of an attached rbxl file so that I can pre-configure languages to make this easy to check.)
Here is the code from the repro place:
local player
while player == nil do
player = game.Players:GetPlayers()[1]
task.wait()
end
local translator = game.LocalizationService:GetTranslatorForPlayer(player)
translator:GetPropertyChangedSignal("LocaleId"):Connect(function()
print("new LocaleId from PropertyChangedSignal", translator.LocaleId)
player.PlayerGui.ReproGui.ChangedSignal.Text = "Last from ChangedSignal: " .. translator.LocaleId
end)
local translator = game.LocalizationService:GetTranslatorForPlayer(player)
translator.Changed:Connect(function(prop)
if prop ~= "LocaleId" then
return
end
print("new LocaleId from Changed", translator.LocaleId)
player.PlayerGui.ReproGui.ChangedEvent.Text = "Last from Changed: " .. translator.LocaleId
end)
local translator = game.LocalizationService:GetTranslatorForPlayer(player)
local last = translator.LocaleId
while true do
if last ~= translator.LocaleId then
last = translator.LocaleId
print("new LocaleId from heartbeat", translator.LocaleId)
player.PlayerGui.ReproGui.Heartbeat.Text = "Last from heartbeat: " .. translator.LocaleId
end
task.wait()
end
We have been able to repro this across multiple users, systems, and places. This occurs in the above test place, in Adopt Me, and in other test scenarios we set up.
In Adopt Me we use GetPropertyChangedSignal(“LocaleId”) as part of our custom localization pipeline to trigger sending the player localization strings for their selected language. Because the changed event fails to fire, players switching to Portuguese from another language never get updated localization and can’t see the game in Portuguese.