Every script ships with 15 locale files, already filled in. They sit outside the escrow, so you can read them, edit them, and keep your edits through an update.
The 15 locales shipped
These are the languages your players see in game, which is a different list from the six this website is published in. Each file lives in locales/ and is named by its code.
arArabic
csCzech
deGerman
enEnglish
esSpanish
frFrench
idIndonesian
itItalian
nlDutch
plPolish
pt-brBrazilian Portuguese
roRomanian
ruRussian
thThai
trTurkish
Choosing the one your server uses
One line in the config, and it is the single setting worth checking before you open. The file is loaded at start, so a restart applies it.
lua
-- config/config.lua
Config.Locale = 'en'
Editing the wording
Open the file and change the strings. locales/*.lua is listed in the escrow exemptions, so the file is plain readable Lua, not encrypted, and your version survives the next update as long as you keep the file when you replace the folder.
Adding a language that is not in the list
Copy en.lua to your own locale code, translate the values, and point Config.Locale at it. Keep the keys untouched: the code looks them up by name, and a missing key shows the key itself to your players rather than a sentence.
Are these translations reviewed by native speakers
Not all of them. English, French and German are written and reviewed in house. The other twelve are produced with translation assistance and corrected when a customer reports something off. We would rather write that than claim fifteen native reviews we have not done, and a report from you is genuinely useful.
What is not translated, and why
Export names, event names and config keys stay in English in every locale. That is the FiveM convention, and translating them would break every integration written against them.
Questions
Can players pick their own language?
Not out of the box. The locale is a server setting, one line in the config, because the strings are loaded once at start rather than per player. A per-player selector is a reasonable request, tell us on Discord if you need it.
Will my edits survive an update?
Yes, as long as you keep your locales/ folder when you replace the resource. Those files sit outside the escrow for that reason. The changelog names any key that was added or renamed.
What happens if a key is missing from my file?
Your players see the key name instead of a sentence, which is ugly but harmless and easy to spot. Copy the missing line from en.lua, which is always complete.