This could be used to create a language learning game… I’m currently using LingoDeer to learn Japanese, but it’d be fun to create an interactive learning experience.
I don’t see many of those on Roblox.
+1 If you think there should be a “Learning” category/genre.
Small issue here is that whether or not the game stays up is up to some random person. No obligation to keep it up. It’s a small issue, but it makes other resources more feasible.
At least officially, at the moment our only “supported” locale ids are en-us and es-es. “Officially.”
More generally we use IETF RFC 5646 language tags. Conventionally the country code is upper cased, but here at Roblox we lower case the whole thing (don’t ask).
As an example here’s one more exhaustive list. No guarantees that we will support the one-part two letter generic language codes, which this list does include. We’re still having debates about that.
If you stick to the more popular two-part codes here you should be golden. No guarantees on the more exceptional cases, like where the same language can be used in two different scripts (e.g. Serbian, or even Chinese). The standards here are a little bit loose unfortunately, which means different companies have implemented things slightly differently. We’re still working on locking down our standards on these more complex cases.
The fact that you told me not to ask about the fact the country code is lowercased makes me want to ask.
Please, feel free to provide an answer whos own existence forces me to question my understanding and capacity to continue in the field of Computer Science and Engineering.
Have you considered streaming fonts as if they were assets? If download size is the problem, the only thing the client really needs from an api-standpoint is data on character spacing (for TextService:GetTextSize() and .TextBounds), then maybe bundle a low-res variant of the font that gets updated in quality when they see that font in-game for the first time.
If you want to simply scrape all of the text from your game and put it into this, here’s some ROUGH code that you need to customise for your own usage
local tableLocal = game.LocalizationService.GeneratedLocalizationTable
local newTable = tableLocal:GetEntries()
for _, value in pairs (game.ServerStorage.Questions:GetDescendants()) do
pcall(function()
if value.Value ~= nil and string.len(value.Value) > 1 then
table.insert(newTable, {Source = value.Value, Context = "Workspace.Questions.QuestionScreen.SurfaceGui.Back.Question", Example = "", Key = "", Values = {}})
end
end)
end
tableLocal:SetEntries(newTable)
I have a question, according to the video, we have to play out the games so it can capture the text it has seen. What if there is a lot of text in the game, that would take forever to play all the rounds! Is there any way to just capture all the text so none gets left out? Am I missing any information? Please respond, thanks!
There’s a ton of LocalizationTable APIs that will let you do all the same things that the text scraper tool does. Particularly SetEntryValue.
Those tools that we provide are the most general purpose tools that we could devise. You know your game, we don’t. It’s your job to make the assumptions we can’t make.
If you use the dialog editor it would be easy to write a plugin to stuff all that into a table at once and set up keys for them (if you do, share it!). If you store your strings in custom module scripts you can write some custom code to add those all at once easily as well.