ntopng/tools/locales.lua
emanuele-f e008a05586 Add script to find unused locale strings
Also remove some unused strings
2017-11-17 18:15:03 +01:00

94 lines
2.1 KiB
Lua

--
-- A script to find unused strings in en.lua localization script
--
package.path = "../scripts/locales/?.lua"
-- ************************************************************
-- The locale file to check
local locale = "en"
-- If true, only unused strings will be printed
local quiet = true
-- This contains a list of paths to search the localized strings uses
local search_paths = {
"../scripts/lua",
"../pro/scripts/lua",
}
-- This contains a list of key prefixes to ignore
local prefix_ignore = {
"alert_messages.",
"show_alerts.host_delete_config_confirm",
"show_alerts.network_delete_config_confirm",
"show_alerts.iface_delete_config_confirm",
"policy_presets.",
}
-- ************************************************************
local locale_strings = require(locale)
local function execCmd(command)
local handle = io.popen(command)
local result = handle:read("*a")
handle:close()
return result
end
-- Checks for unused strings
local function check_unused(key, value)
local paths = table.concat(search_paths, " ")
local found = false
for _, ignore in pairs(prefix_ignore) do
if string.sub(key, 1, string.len(ignore)) == ignore then
return
end
end
for _, quotes in ipairs({"\\\"", "'"}) do
local cmd = "find " .. paths .. " -name \"*.lua\" -type f -exec grep -m 1 -F \"i18n(" .. quotes .. key .. quotes .. "\" {} \\;"
local res = execCmd(cmd)
if res ~= "" and res ~= nil then
found = true
break
end
end
if not quiet or not found then
print(key)
end
if not found and not quiet then
print("\tNot Found!")
end
end
local function expand_keys(prefix, key_vals)
for k, v in pairs(key_vals) do
local value_type = type(v)
-- push
prefix[#prefix + 1] = k
if value_type == "string" then
local key = table.concat(prefix, ".")
check_unused(key, v)
elseif value_type == "table" then
-- recursion
expand_keys(prefix, v)
else
print("Error: unknown type '" .. value_type .. "'")
os.exit(1)
end
-- pop
prefix[#prefix] = nil
end
end
expand_keys({}, locale_strings[locale])