Implement search for translated item descriptions

This commit is contained in:
Paul Ouellette 2020-07-12 22:30:04 -04:00
parent 444485209d
commit 2ffbf1c714

View file

@ -300,6 +300,10 @@ local function get_formspec(player)
return table.concat(fs) return table.concat(fs)
end end
local function imatch(str, filter)
return str:lower():find(filter, 1, true) ~= nil
end
local function execute_search(data) local function execute_search(data)
local filter = data.filter local filter = data.filter
if filter == "" then if filter == "" then
@ -309,10 +313,10 @@ local function execute_search(data)
data.items = {} data.items = {}
for _, item in ipairs(init_items) do for _, item in ipairs(init_items) do
local itemdef = minetest.registered_items[item] local def = minetest.registered_items[item]
local desc = itemdef and itemdef.description:lower() or "" local desc = def and minetest.get_translated_string(data.lang_code, def.description)
if item:find(filter, 1, true) or desc:find(filter, 1, true) then if imatch(item, filter) or desc and imatch(desc, filter) then
table.insert(data.items, item) table.insert(data.items, item)
end end
end end
@ -391,10 +395,13 @@ end
minetest.register_on_joinplayer(function(player) minetest.register_on_joinplayer(function(player)
local name = player:get_player_name() local name = player:get_player_name()
local info = minetest.get_player_information(name)
player_data[name] = { player_data[name] = {
filter = "", filter = "",
pagenum = 1, pagenum = 1,
items = init_items items = init_items,
lang_code = info.lang_code
} }
end) end)