forked from nalc/global_exchange
		
	WIP: not tested
add search in translated string add translate missing string
This commit is contained in:
		| @@ -135,12 +135,26 @@ minetest.after(0, function() | ||||
| 	pagemax = math.max(math.ceil(#selectable_list / pageitems), 1) | ||||
| end) | ||||
|  | ||||
| local function filter_list(filter) | ||||
| local function filter_list(p_name, filter) | ||||
| 	local filtered_list = {} | ||||
| 	if not filter or filter == "" then return nil, pagemax end | ||||
| 	 | ||||
| 	-- search by translated language | ||||
| 	local player_info = minetest.get_player_information(p_name) | ||||
| 	local lang = player_info and player_info.lang_code or "" | ||||
| 	local can_translate = minetest.get_translated_string and lang ~= "" | ||||
| 	 | ||||
| 	for index, name in ipairs(selectable_list) do | ||||
| 		local match = string.match(name, filter) or nil | ||||
| 		local match = string.find(name, filter) -- search in name | ||||
| 		if not match then -- si not found, search in description and translated description ie:(filter="pomme", description="pomme d'or" ) | ||||
| 			local def = minetest.registered_items[name] | ||||
| 			if def and def.description and def.description ~= "" then | ||||
| 				if string.find(string.lower(def.description), filter) or  | ||||
| 					can_translate and string.find(string.lower(minetest.get_translated_string(lang, def.description)), filter) then | ||||
| 					match = true | ||||
| 				end | ||||
| 			end | ||||
| 		end | ||||
| 		if match then | ||||
| 			filtered_list[#filtered_list+1] = name | ||||
| 		end | ||||
| @@ -459,14 +473,14 @@ local function handle_main(player, fields) | ||||
| 	end | ||||
|  | ||||
| 	if fields.filter then | ||||
| 		state.filtered_list, state.buy_pagemax = filter_list(state.buy_filter) | ||||
| 		state.filtered_list, state.buy_pagemax = filter_list(p_name, string.lower(minetest.formspec_escape(state.buy_filter))) | ||||
| 		state.buy_page = 1 | ||||
| 		show_main(p_name) | ||||
| 	end | ||||
|  | ||||
| 	if fields.reset_filter then | ||||
| 		state.buy_filter = "" | ||||
| 		state.filtered_list, state.buy_pagemax = filter_list(nil) | ||||
| 		state.filtered_list, state.buy_pagemax = filter_list(p_name, nil) | ||||
| 		state.buy_page = 1 | ||||
| 		show_main(p_name) | ||||
| 	end | ||||
|   | ||||
							
								
								
									
										10
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								init.lua
									
									
									
									
									
								
							| @@ -3,6 +3,8 @@ assert(insecure_env, "global_exchange needs to be trusted to run under mod secur | ||||
|  | ||||
| local modpath = minetest.get_modpath(minetest.get_current_modname()) .. "/" | ||||
|  | ||||
| local S = minetest.get_translator("global_exchange") | ||||
|  | ||||
| local exchange = assert(loadfile(modpath .. "exchange.lua"))(insecure_env). | ||||
|    open_exchange(minetest.get_worldpath() .. "/global_exchange.db") | ||||
|  | ||||
| @@ -17,13 +19,13 @@ local function handle_setbalance_command(caller, name, newbalance) | ||||
| end | ||||
|  | ||||
| minetest.register_privilege("balance", { | ||||
|    description = "Can use /setbalance", | ||||
|    description = S("Can use /setbalance"), | ||||
|    give_to_singleplayer = false | ||||
| }) | ||||
|  | ||||
| minetest.register_chatcommand("setbalance", { | ||||
|    params      = "[<name>] <balance>", | ||||
|    description = "set a player's trading balance", | ||||
|    params      = S("[<name>] <balance>"), | ||||
|    description = S("set a player's trading balance"), | ||||
|    privs       = {balance=true}, | ||||
|    func = function(caller, param) | ||||
|       local name, balancestr = string.match(param, "([^ ]+) ([0-9]+)") | ||||
| @@ -31,7 +33,7 @@ minetest.register_chatcommand("setbalance", { | ||||
|          name = caller | ||||
|          balancestr = string.match(param, "([0-9]+)") | ||||
|          if not balancestr then | ||||
|             return false, "Invalid parameters (see /help setbalance)" | ||||
|             return false, S("Invalid parameters (see /help setbalance)") | ||||
|          end | ||||
|       end | ||||
|       return handle_setbalance_command(caller, name, tonumber(balancestr)) | ||||
|   | ||||
| @@ -21,6 +21,7 @@ No such order.=Pas un tel ordre. | ||||
| Order does not exist.=L'ordre n'existe pas. | ||||
|  | ||||
| ### init.lua ### | ||||
| Can use /setbalance=Peut utiliser /setbalance | ||||
| set a player's trading balance=définir le solde commercial d'un joueur | ||||
| Invalid parameters (see /help setbalance)=Paramètres invalides (voir /help setbalance) | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user