mirror of
https://github.com/qbcore-fivem/qb-core.git
synced 2026-08-28 17:01:16 +00:00
Add locale convar and locale fallback
This commit is contained in:
+2
-1
@@ -7,7 +7,8 @@ version '1.1.0'
|
|||||||
shared_scripts {
|
shared_scripts {
|
||||||
'config.lua',
|
'config.lua',
|
||||||
'shared/locale.lua',
|
'shared/locale.lua',
|
||||||
'locale/en.lua', -- replace with desired language
|
'locale/en.lua',
|
||||||
|
'locale/*.lua',
|
||||||
'shared/main.lua',
|
'shared/main.lua',
|
||||||
'shared/items.lua',
|
'shared/items.lua',
|
||||||
'shared/jobs.lua',
|
'shared/jobs.lua',
|
||||||
|
|||||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'ar' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'bg' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'cn' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'cs' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'da' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -118,7 +118,10 @@ local Translations = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'de' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'ee' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+1
-1
@@ -118,7 +118,7 @@ local Translations = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
Lang = Lang or Locale:new({
|
||||||
phrases = Translations,
|
phrases = Translations,
|
||||||
warnOnMissing = true
|
warnOnMissing = true
|
||||||
})
|
})
|
||||||
|
|||||||
+7
-4
@@ -30,7 +30,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'es' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'et' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'fa' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'fi' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -120,7 +120,10 @@ local Translations = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'fr' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'ge' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+8
-4
@@ -118,7 +118,11 @@ local Translations = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'he' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
|||||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'hu' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'in' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -118,7 +118,10 @@ local Translations = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'is' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -123,7 +123,10 @@ error = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'it' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'lv' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'nl' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'pl' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'pt-br' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'pt' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -115,7 +115,10 @@ local Translations = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'ro' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'rs' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -118,7 +118,10 @@ local Translations = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'ru' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'sl' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'sv' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'th' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -25,7 +25,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'tr' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+7
-4
@@ -19,7 +19,10 @@ local Translations = {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lang = Locale:new({
|
if GetConvar('qb_locale', 'en') == 'vn' then
|
||||||
phrases = Translations,
|
Lang = Locale:new({
|
||||||
warnOnMissing = true
|
phrases = Translations,
|
||||||
})
|
warnOnMissing = true,
|
||||||
|
fallbackLang = Lang,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|||||||
+10
-1
@@ -32,7 +32,13 @@ end
|
|||||||
--- @return Locale
|
--- @return Locale
|
||||||
function Locale:new(opts)
|
function Locale:new(opts)
|
||||||
setmetatable(self, Locale)
|
setmetatable(self, Locale)
|
||||||
self.warnOnMissing = opts.warnOnMissing or true
|
|
||||||
|
self.fallback = opts.fallbackLang and Locale.new({}, {
|
||||||
|
warnOnMissing = false,
|
||||||
|
phrases = opts.fallbackLang.phrases,
|
||||||
|
}) or false
|
||||||
|
|
||||||
|
self.warnOnMissing = type(opts.warnOnMissing) ~= 'boolean' and true or opts.warnOnMissing
|
||||||
|
|
||||||
self.phrases = {}
|
self.phrases = {}
|
||||||
self:extend(opts.phrases or {})
|
self:extend(opts.phrases or {})
|
||||||
@@ -98,6 +104,9 @@ function Locale:t(key, subs)
|
|||||||
if self.warnOnMissing then
|
if self.warnOnMissing then
|
||||||
print(('^3Warning: Missing phrase for key: "%s"'):format(key))
|
print(('^3Warning: Missing phrase for key: "%s"'):format(key))
|
||||||
end
|
end
|
||||||
|
if self.fallback then
|
||||||
|
return self.fallback:t(key, subs)
|
||||||
|
end
|
||||||
result = key
|
result = key
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user