Configuration
Every lation ui option in config.lua with its default, the convars it reads, language files, the admin permission, commands and key bindings.
lation ui is configured in three places: config.lua for a few defaults, convars in server.cfg for per-server switches, and the JSON files in locales/ for its text. config.lua and locales/ aren't escrowed, so you can edit them. The look itself is the theme, set in game: see theming.
config.lua
Config = {}
-- Print a notice in the server console when a newer version is out
Config.version = true
Config.notify = {
-- Play the type's sound for every notification that has a type
-- A notification that passes its own `sound` plays it either way
play_sound = false,
-- The sound for each type while play_sound is on
default_sound = {
info = { bank = '', set = 'HUD_FRONTEND_DEFAULT_SOUNDSET', name = 'SELECT' },
warning = { bank = '', set = 'HUD_FRONTEND_DEFAULT_SOUNDSET', name = 'SELECT' },
error = { bank = '', set = 'HUD_FRONTEND_DEFAULT_SOUNDSET', name = 'SELECT' },
success = { bank = '', set = 'HUD_FRONTEND_DEFAULT_SOUNDSET', name = 'SELECT' },
}
}
Config.radial = {
-- Default key for the Open Radial Menu binding
default_key = 'z'
}
Config.skillcheck = {
-- Skill check layout when a script passes no size: 'normal' or 'compact'
default_size = 'normal'
}| Option | Default | What it does |
|---|---|---|
Config.version | true | Checks for a newer version on start and prints a notice in the server console when one is out. |
Config.notify.play_sound | false | When true, every notification with a type plays that type's sound from default_sound. |
Config.notify.default_sound | SELECT from HUD_FRONTEND_DEFAULT_SOUNDSET for all four types | One sound per type (info, warning, error, success). Each has bank (an audio bank to load first, '' for none), set (the sound set) and name (the sound). An entry with an empty set or name plays nothing. |
Config.radial.default_key | 'z' | The default key for the Open Radial Menu binding. Any key name from FiveM's keyboard mapper. |
Config.skillcheck.default_size | 'normal' | The skill check layout when a script passes no size. 'normal' shows the panel with instructions, 'compact' only the ring. Any other value counts as 'normal'. |
A notification's own sound always wins over default_sound. See notification sounds.
Convars
Set these in server.cfg. A convar the client reads must be set with setr so it reaches players.
| Convar | Default | Read by | What it does |
|---|---|---|---|
lation_ui:allowUserThemes | 0 | Server | 1 (or true) lets players open their own theme editor with /uisettings. When off, saved personal themes are ignored. A player picks up a change when they next join, or when an admin next saves or resets the server theme. |
lation_ui:progressPropLimit | 2 | Server and client | The most props one progress bar attaches from a list. The client uses it for the player's own props and the server caps what it shares with other players. Read on start. |
lation:locale | en | Client | The language file to load from locales/. |
lation:position:notify | none | Client | One position for every notification, whatever scripts pass. |
lation:position:menu | none | Client | One position for every context menu. |
lation:position:listmenu | none | Client | One position for every list menu. |
lation:position:textui | none | Client | One position for every text UI. |
The values each component accepts are listed under positions.
setr lation_ui:allowUserThemes 1
setr lation_ui:progressPropLimit 2
setr lation:locale "de"
setr lation:position:notify "top-right"
setr lation:position:textui "left-center"setr works for all of them, so it's the simplest to use everywhere.
Language
lation ui ships these files in locales/: cs, da, de, en, es, fr, it, nl, no, pl, pt, sv and zh, each with the full set of lines, the theme editor included. Pick one with the lation:locale convar. If there is no file for the code you set, English is used.
To reword any built-in text, edit the line in the file you use. A key missing from the file falls back to its built-in English text, and so does every line of a file that isn't valid JSON. Lines with %s get a value put in its place, for example "Press %s to cancel".
Permissions
| Permission | Grants |
|---|---|
lation_ui.admin | Opening the server theme editor with /uitheme, and saving or resetting the server theme. The server checks it on every open, save and reset. |
add_ace group.admin lation_ui.admin allowCommands and key bindings
| Command or binding | Who | What it does |
|---|---|---|
/uitheme | Players with lation_ui.admin | Opens the theme editor on the server theme. Others get "You do not have permission to edit the server theme". |
/uisettings | Everyone, while lation_ui:allowUserThemes is on | Opens the theme editor on the player's own theme. While it's off, the player gets "Theme customization is disabled on this server". |
| Open Radial Menu | Everyone | Opens the radial menu, and closes it while it's open. Default key from Config.radial.default_key. |
| Cancel Progress | Everyone | Cancels the running progress bar when it allows cancelling. Default key X. |

Players can rebind both under Settings > Key Bindings > FiveM, and the progress bar's cancel hint shows the key they chose. FiveM keeps each player's own binding, so changing Config.radial.default_key later only reaches players who haven't bound it yet.
Files
| File | What it holds |
|---|---|
data/theme.json | The server theme. Created the first time an admin saves in the theme editor; Reset to defaults writes {}. It isn't part of the download, so an update doesn't overwrite it. |
Still stuck? Ask in our Discord: the people who write the scripts answer.
Last updated