GetPropertyChangedSignal("LocaleId") on the server does not fire for Portuguese, but does fire for other languages.

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.

4 Likes

This is just an acknowledgment announcement!

We’ve filed a ticket into our internal database for this issue, and we will update you when we have further information!

Thanks for the report!

2 Likes

Hi, thanks again for the report!

We’ve implemented a fix for the issue and have confirmed that we can no longer reproduce it on any experience. Please let us know if you are still having any issues with this.

1 Like