From 1a3aa824fafb7b02a2c3c9b8c0fb6883d94e9875 Mon Sep 17 00:00:00 2001 From: David Malchin Date: Sun, 4 Sep 2022 00:46:21 +0300 Subject: [PATCH] Add locale convar and locale fallback --- fxmanifest.lua | 3 ++- locale/ar.lua | 11 +++++++---- locale/bg.lua | 11 +++++++---- locale/cn.lua | 11 +++++++---- locale/cs.lua | 11 +++++++---- locale/da.lua | 11 +++++++---- locale/de.lua | 11 +++++++---- locale/ee.lua | 11 +++++++---- locale/en.lua | 2 +- locale/es.lua | 11 +++++++---- locale/et.lua | 11 +++++++---- locale/fa.lua | 11 +++++++---- locale/fi.lua | 11 +++++++---- locale/fr.lua | 11 +++++++---- locale/ge.lua | 11 +++++++---- locale/he.lua | 12 ++++++++---- locale/hu.lua | 11 +++++++---- locale/in.lua | 11 +++++++---- locale/is.lua | 11 +++++++---- locale/it.lua | 11 +++++++---- locale/lv.lua | 11 +++++++---- locale/nl.lua | 11 +++++++---- locale/pl.lua | 11 +++++++---- locale/pt-br.lua | 11 +++++++---- locale/pt.lua | 11 +++++++---- locale/ro.lua | 11 +++++++---- locale/rs.lua | 11 +++++++---- locale/ru.lua | 11 +++++++---- locale/sl.lua | 11 +++++++---- locale/sv.lua | 11 +++++++---- locale/th.lua | 11 +++++++---- locale/tr.lua | 11 +++++++---- locale/vn.lua | 11 +++++++---- shared/locale.lua | 11 ++++++++++- 34 files changed, 231 insertions(+), 127 deletions(-) diff --git a/fxmanifest.lua b/fxmanifest.lua index f4f5cc7..4ffd5bc 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -7,7 +7,8 @@ version '1.1.0' shared_scripts { 'config.lua', 'shared/locale.lua', - 'locale/en.lua', -- replace with desired language + 'locale/en.lua', + 'locale/*.lua', 'shared/main.lua', 'shared/items.lua', 'shared/jobs.lua', diff --git a/locale/ar.lua b/locale/ar.lua index d324072..ee91e13 100644 --- a/locale/ar.lua +++ b/locale/ar.lua @@ -25,7 +25,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'ar' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/bg.lua b/locale/bg.lua index 547139a..b2891f3 100644 --- a/locale/bg.lua +++ b/locale/bg.lua @@ -25,7 +25,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) \ No newline at end of file +if GetConvar('qb_locale', 'en') == 'bg' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/cn.lua b/locale/cn.lua index b0dd4bb..19d23b7 100644 --- a/locale/cn.lua +++ b/locale/cn.lua @@ -25,7 +25,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'cn' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/cs.lua b/locale/cs.lua index 616c13d..31f9780 100644 --- a/locale/cs.lua +++ b/locale/cs.lua @@ -25,7 +25,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'cs' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/da.lua b/locale/da.lua index 8476592..ff5730c 100644 --- a/locale/da.lua +++ b/locale/da.lua @@ -25,7 +25,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) \ No newline at end of file +if GetConvar('qb_locale', 'en') == 'da' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/de.lua b/locale/de.lua index 6efd915..74c851c 100644 --- a/locale/de.lua +++ b/locale/de.lua @@ -118,7 +118,10 @@ local Translations = { }, } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'de' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/ee.lua b/locale/ee.lua index 8bd5da0..5d57f0f 100644 --- a/locale/ee.lua +++ b/locale/ee.lua @@ -25,7 +25,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'ee' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/en.lua b/locale/en.lua index bb5d8c3..a41748e 100644 --- a/locale/en.lua +++ b/locale/en.lua @@ -118,7 +118,7 @@ local Translations = { }, } -Lang = Locale:new({ +Lang = Lang or Locale:new({ phrases = Translations, warnOnMissing = true }) diff --git a/locale/es.lua b/locale/es.lua index 93e4efd..b55ff56 100644 --- a/locale/es.lua +++ b/locale/es.lua @@ -30,7 +30,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'es' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/et.lua b/locale/et.lua index 98802c9..803c4ab 100644 --- a/locale/et.lua +++ b/locale/et.lua @@ -25,7 +25,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'et' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/fa.lua b/locale/fa.lua index f163a8c..1367dac 100644 --- a/locale/fa.lua +++ b/locale/fa.lua @@ -19,7 +19,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'fa' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/fi.lua b/locale/fi.lua index 6797b2c..b4e4939 100644 --- a/locale/fi.lua +++ b/locale/fi.lua @@ -19,7 +19,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'fi' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/fr.lua b/locale/fr.lua index 534fca8..3e011c3 100644 --- a/locale/fr.lua +++ b/locale/fr.lua @@ -120,7 +120,10 @@ local Translations = { }, } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'fr' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/ge.lua b/locale/ge.lua index 33b463a..e105039 100644 --- a/locale/ge.lua +++ b/locale/ge.lua @@ -19,7 +19,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'ge' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/he.lua b/locale/he.lua index 7248f4b..fb84e7f 100644 --- a/locale/he.lua +++ b/locale/he.lua @@ -118,7 +118,11 @@ local Translations = { }, } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'he' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end + diff --git a/locale/hu.lua b/locale/hu.lua index ca832ef..a0cd8b9 100644 --- a/locale/hu.lua +++ b/locale/hu.lua @@ -19,7 +19,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) \ No newline at end of file +if GetConvar('qb_locale', 'en') == 'hu' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/in.lua b/locale/in.lua index 3897291..ecb3403 100644 --- a/locale/in.lua +++ b/locale/in.lua @@ -19,7 +19,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'in' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/is.lua b/locale/is.lua index 4d956ba..8384930 100644 --- a/locale/is.lua +++ b/locale/is.lua @@ -118,7 +118,10 @@ local Translations = { }, } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'is' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/it.lua b/locale/it.lua index 99ad1d6..ea81719 100644 --- a/locale/it.lua +++ b/locale/it.lua @@ -123,7 +123,10 @@ error = { }, } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'it' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/lv.lua b/locale/lv.lua index c7b4c38..fe4a9ab 100644 --- a/locale/lv.lua +++ b/locale/lv.lua @@ -19,7 +19,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'lv' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/nl.lua b/locale/nl.lua index fd19d57..3d6e6bc 100644 --- a/locale/nl.lua +++ b/locale/nl.lua @@ -25,7 +25,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'nl' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/pl.lua b/locale/pl.lua index 5e1704c..ab67f9b 100644 --- a/locale/pl.lua +++ b/locale/pl.lua @@ -25,7 +25,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'pl' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/pt-br.lua b/locale/pt-br.lua index 9621437..782a4e8 100644 --- a/locale/pt-br.lua +++ b/locale/pt-br.lua @@ -25,7 +25,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'pt-br' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/pt.lua b/locale/pt.lua index 0fc86a7..8cbfebf 100644 --- a/locale/pt.lua +++ b/locale/pt.lua @@ -19,7 +19,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'pt' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/ro.lua b/locale/ro.lua index 162282f..d36cf65 100644 --- a/locale/ro.lua +++ b/locale/ro.lua @@ -115,7 +115,10 @@ local Translations = { }, } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'ro' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/rs.lua b/locale/rs.lua index bf20832..4dc9dc7 100644 --- a/locale/rs.lua +++ b/locale/rs.lua @@ -19,7 +19,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'rs' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/ru.lua b/locale/ru.lua index 762899e..a4e5167 100644 --- a/locale/ru.lua +++ b/locale/ru.lua @@ -118,7 +118,10 @@ local Translations = { }, } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'ru' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/sl.lua b/locale/sl.lua index c9ed1ba..e1ead5c 100644 --- a/locale/sl.lua +++ b/locale/sl.lua @@ -19,7 +19,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'sl' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/sv.lua b/locale/sv.lua index d43e289..2cad441 100644 --- a/locale/sv.lua +++ b/locale/sv.lua @@ -25,7 +25,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'sv' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/th.lua b/locale/th.lua index c070c7a..f665d1f 100644 --- a/locale/th.lua +++ b/locale/th.lua @@ -19,7 +19,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'th' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/tr.lua b/locale/tr.lua index 51e50d7..9acc97e 100644 --- a/locale/tr.lua +++ b/locale/tr.lua @@ -25,7 +25,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'tr' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/locale/vn.lua b/locale/vn.lua index 94003d5..f3ae841 100644 --- a/locale/vn.lua +++ b/locale/vn.lua @@ -19,7 +19,10 @@ local Translations = { } } -Lang = Locale:new({ - phrases = Translations, - warnOnMissing = true -}) +if GetConvar('qb_locale', 'en') == 'vn' then + Lang = Locale:new({ + phrases = Translations, + warnOnMissing = true, + fallbackLang = Lang, + }) +end diff --git a/shared/locale.lua b/shared/locale.lua index c24376c..ce7b2f5 100644 --- a/shared/locale.lua +++ b/shared/locale.lua @@ -32,7 +32,13 @@ end --- @return Locale function Locale:new(opts) 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:extend(opts.phrases or {}) @@ -98,6 +104,9 @@ function Locale:t(key, subs) if self.warnOnMissing then print(('^3Warning: Missing phrase for key: "%s"'):format(key)) end + if self.fallback then + return self.fallback:t(key, subs) + end result = key end