Currently, I have a workaround:
function Translate(Player, Text, Context)
local Translator = Module.GetTranslator(Player)
local TranslatedText = Translator:Translate(Context, Text) -- will return the original Text if no translation found
if TranslatedText == Text then -- if the resulting text is different, it already indicates that translation exists, otherwise it manually searches for all entries
local Found = false
local Table = LocalizationService:GetTableEntries() -- list all translation entries
for Id, Item in ipairs(Table[1]) do -- search entry by entry to know if the translation exists or not
if Item.Source == Text then -- if there is the source text, check if there is a translation
for LocaleId in pairs(Item.Values) do -- search for translations in all languages
if LocaleId == Translator.LocaleId then -- if the translation found matches the player's localization
Found = true
break
end
end
if Found then
break
end
end
end
if not Found then
warn(Player, 'Translation not found for\n"' .. Text .. '"\nPlayer: ' .. Player.Name)
end
end
end