Files
ox_lib/imports/locale/shared.lua
Linden a8b9f8cde5 fix(locale/shared): phrase-construction for strings without placeholders
string.gsub returns two variables, the updated string and the pattern occurrences.
The outer string.gsub would replace n occurrences, or nothing if the string did not
contain '%'.
2023-02-01 03:20:04 +11:00

45 lines
946 B
Lua

local dict = {}
---@param str string
---@param ... string | number
---@return string
function locale(str, ...)
local lstr = dict[str]
if lstr then
if ... then
return lstr and lstr:format(...)
end
return lstr
end
return str
end
---@return { [string]: string }
function lib.getLocales()
return dict
end
function lib.loadLocale()
local locales = json.decode(LoadResourceFile(cache.resource, ('locales/%s.json'):format(GetConvar('ox:locale', 'en'))) or LoadResourceFile(cache.resource, 'locales/en.json') or '[]')
for k, v in pairs(locales) do
if type(v) == 'string' then
for var in v:gmatch('${[%w%s%p]-}') do
local locale = locales[var:sub(3, -2)]
if locale then
locale = locale:gsub('%%', '%%%%')
v = v:gsub(var, locale)
end
end
end
dict[k] = v
end
end
return lib.loadLocale