mirror of
https://github.com/ntop/ntopng.git
synced 2026-04-30 16:09:32 +00:00
84 lines
2 KiB
Lua
84 lines
2 KiB
Lua
--
|
|
-- (C) 2014-18 - ntop.org
|
|
--
|
|
|
|
i18n = require "i18n"
|
|
|
|
function i18n.loadLocaleFile(path, locale)
|
|
local chunk = assert(loadfile(path))
|
|
local data = chunk()
|
|
i18n.load({[locale]=data})
|
|
end
|
|
|
|
-- Provides a fallback for not already localized strings
|
|
i18n.loadLocaleFile(dirs.installdir..'/scripts/locales/en.lua', "en")
|
|
|
|
local locales = {}
|
|
|
|
locales.default_locale = "en"
|
|
|
|
-- language is a global variable set from C that corresponds to the user default language
|
|
-- it may be null when lua_utils are imported from periodic scripts
|
|
if language == nil then
|
|
local admin_lang = ntop.getPref("ntopng.user.admin.language")
|
|
language = ternary(isEmptyString(admin_lang), locales.default_locale, admin_lang)
|
|
end
|
|
|
|
i18n.setLocale(language)
|
|
|
|
local common_locales = {
|
|
{code="en", name=i18n("locales.en")},
|
|
}
|
|
|
|
local pro_only_locales = {
|
|
{code="it", name=i18n("locales.it")},
|
|
{code="de", name=i18n("locales.de")},
|
|
}
|
|
|
|
local function lookupLocale(localename, is_pro)
|
|
local base_path
|
|
local arr
|
|
|
|
if not is_pro then
|
|
base_path = dirs.installdir..'/scripts/locales/'
|
|
arr = common_locales
|
|
else
|
|
base_path = dirs.installdir..'/scripts/lua/pro/../locales/'
|
|
arr = pro_only_locales
|
|
end
|
|
|
|
for _, locale in pairs(arr) do
|
|
if locale.code == localename then
|
|
return base_path .. localename .. ".lua"
|
|
end
|
|
end
|
|
|
|
return nil
|
|
end
|
|
|
|
-- Note: en already loaded
|
|
if (language ~= "en") and (not ntop.isnEdge()) then
|
|
local locale_path = lookupLocale(language, false) or (ntop.isPro() and lookupLocale(language, true))
|
|
|
|
if locale_path then
|
|
i18n.loadLocaleFile(locale_path, language)
|
|
end
|
|
end
|
|
|
|
local available_locales = {}
|
|
|
|
for _, locale in ipairs(common_locales) do
|
|
available_locales[#available_locales + 1] = locale
|
|
end
|
|
|
|
if ntop.isPro() then
|
|
for _, locale in ipairs(pro_only_locales) do
|
|
available_locales[#available_locales + 1] = locale
|
|
end
|
|
end
|
|
|
|
function locales.getAvailableLocales()
|
|
return available_locales
|
|
end
|
|
|
|
return locales
|