This module jbo-etym requires

  • the "Module:languages" and uses the getByCode function to get the Canonical name for the language.
  • the "Module:links" and uses the full_link function to
    • form strings if '_t' is passed as the last argument.
    • form strings if "_s" is passed as an argument
    • form strings if "_tr" is passed as an argument

The Module jbo-etym is called by the template jbo-etym The module is given an argument which is indexed by one of six strings, which are the six(6) strings used to identify the language that are in the etymology of the Lojban word for this page. These languages are: "zh" (Chinese) "en" (English) "hi" () "es" (Spanish) "ru" (Russian) "ar" (Arabic).

Initially the function export.show retrieves its arguments from the stack from the call to Template:jbo-etym (using frame:getParent().args ) and passes each table element to the function "append" with the language name associated with that argument.

The function append creates a string with the proper format to show the list of languages, and which string in those languages contributed to this lojban entity.


local export = {}

function export.show(frame)
	local args = frame:getParent().args
	
	return
		"''In Lojbanized spelling.''" ..
		append(args, "zh") ..
		append(args, "en") ..
		append(args, "hi") ..
		append(args, "es") ..
		append(args, "ru") ..
		append(args, "ar")
end

function append(args, code)
	local ret = ""
	
	if args[code] then
		local lang = require("Module:languages").getByCode(code)
		ret = ret .. "\n* " .. lang:getCanonicalName() .. ": " .. args[code]
		
		if args[code .. '_t'] then
			local m_links = require("Module:links")
			
			ret = ret ..  " — ".. m_links.full_link({lang = lang, term = args[code .. '_t'], tr = (args[code..'_tr'] and "")}, nil, true)
			
			-- It seems full_link({term="類"}) now produces something like "類/类" already,
			-- and this is causing jbo-etym to emit simplified forms twice, like "類/类/类 (lèi) (lèi)"
			-- so let's try skipping handling of '_s'.

			-- if args[code .. '_s'] then
			-- 	ret = ret .. "/" .. m_links.full_link({lang = lang, term = args[code .. '_s']}, nil, true)
			-- end
			
			if args[code..'_tr'] then
				if mw.ustring.find(args[code .. '_tr'],'[%[%](){}]') then error('unauthorized characters') end
				ret = ret .. " (" .. args[code .. '_tr'] .. ")"
			end
		end
	end
	
	return ret
end

return export