mirror of
https://github.com/CommunityOx/ox_lib.git
synced 2026-08-16 22:46:03 +01:00
feat(locale): locale hotloading
This commit is contained in:
@@ -1,15 +1,33 @@
|
||||
local settings = require 'resource.settings'
|
||||
|
||||
local function loadLocaleFile(key)
|
||||
local file = LoadResourceFile(cache.resource, ('locales/%s.json'):format(key))
|
||||
or LoadResourceFile(cache.resource, 'locales/en.json')
|
||||
|
||||
return file and json.decode(file) or {}
|
||||
end
|
||||
|
||||
function lib.getLocaleKey() return settings.locale end
|
||||
|
||||
---@param key string
|
||||
function lib.setLocale(key)
|
||||
settings.locale = key
|
||||
|
||||
SetResourceKvp('locale', key)
|
||||
TriggerEvent('ox_lib:setLocale', key)
|
||||
SendNUIMessage({
|
||||
action = 'setLocale',
|
||||
data = loadLocaleFile(key)
|
||||
})
|
||||
end
|
||||
|
||||
RegisterNUICallback('init', function(_, cb)
|
||||
cb(1)
|
||||
|
||||
SendNUIMessage({
|
||||
action = 'loadLocales',
|
||||
data = {}
|
||||
})
|
||||
|
||||
local JSON = LoadResourceFile(cache.resource, ('locales/%s.json'):format(GetConvar('ox:locale', 'en'))) or LoadResourceFile(cache.resource, 'locales/en.json')
|
||||
|
||||
SendNUIMessage({
|
||||
action = 'setLocale',
|
||||
data = JSON and json.decode(JSON) or {}
|
||||
data = loadLocaleFile(settings.locale)
|
||||
})
|
||||
end)
|
||||
|
||||
lib.locale(settings.locale)
|
||||
|
||||
1
resource/locale/server.lua
Normal file
1
resource/locale/server.lua
Normal file
@@ -0,0 +1 @@
|
||||
function lib.getLocaleKey() return GetConvar('ox:locale', 'en') end
|
||||
14
resource/server.lua
Normal file
14
resource/server.lua
Normal file
@@ -0,0 +1,14 @@
|
||||
local locales, localesN = lib.getFilesInDirectory('locales', '%.json')
|
||||
|
||||
for i = 1, localesN do
|
||||
local key = locales[i]
|
||||
local value = key:gsub('%.json', '')
|
||||
local label = (json.decode(LoadResourceFile(lib.name, ('locales/%s'):format(key)) or '') or '').language or value
|
||||
locales[i] = { label = label, value = value }
|
||||
end
|
||||
|
||||
table.sort(locales, function(a, b)
|
||||
return a.label < b.label
|
||||
end)
|
||||
|
||||
GlobalState['ox_lib:locales'] = locales
|
||||
Reference in New Issue
Block a user