Roblox localization
Give your AI coding agent a Roblox brain. Curated skills for Roblox Studio development.
npx -y skills add TabooHarmony/roblox-brain --skill roblox-localizationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 18 stars18 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when implementing Roblox multi-language support, translation tables, auto-translation, locale-specific content, or region detection.
SKILL.md
2.9 KB, as published. Nobody here has run it
Roblox Localization
When to Load
Load when implementing multi-language support, translation systems, locale-specific content, or region detection. Covers LocalizationService, LocalizationTable, auto-translation, and country/region detection.
Quick Reference
Locale Detection
player.LocaleId— locale the player set for their Roblox account (e.g.en-us,pt-br,ja-jp)LocalizationService.RobloxLocaleId— locale for core/internal featuresLocalizationService.SystemLocaleId— player's OS localeLocalizationService:GetCountryRegionForPlayerAsync(player)— country code from IP geolocation (e.g.US,BR,JP)
Translation Tables
LocalizationTable— stores translation entries (key → translations per locale)- Parent
LocalizationTableunderLocalizationServicefor auto-translation - Set
GuiBase2d.RootLocalizationTableon GUI objects for per-element tables - Studio can auto-extract strings into a table via the Localization Tools plugin
Auto-Translation
- Roblox auto-translates GUI text if
RootLocalizationTableis set and entries exist - Set
TextLabel.Textnormally — the engine replaces it with the translated string for the player's locale - Missing translations fall back to the source text
Manual Translation
local translator = LocalizationService:GetTranslatorForPlayerAsync(player)
local translated = translator:Translate(game, "Welcome!")
local formatted = translator:FormatTranslate(game, "Coins: {0}", {count})
Country/Region Detection
local country = LocalizationService:GetCountryRegionForPlayerAsync(player)
if country == "US" then -- USD pricing
elseif country == "GB" then -- GBP pricing end
Key Rules
GetCountryRegionForPlayerAsyncis async — wrap in pcall, may failGetTranslatorForPlayerAsyncis async — cache the translator- Auto-translation only works on GUI elements with
RootLocalizationTableset - Translation entries:
SourceText,SourceLocaleId, thenen-us,pt-br, etc. columns - Export/import tables as CSV from Studio for bulk editing
- Test with different locales using Studio's locale simulator
Pitfalls
- Not all locales supported — check
player.LocaleId - Auto-translation does NOT work on non-GUI text — use manual
Translator:Translate GetCountryRegionForPlayerAsyncuses IP geolocation — VPNs give wrong results- Missing entries fall back to source text silently
Need more detail? Load references/full.md.