ماڈیوٗل:trans

وِکیٖلۄغَتھ پؠٹھٕ

"یَمہٕ ماڈیوٗلُک دَستاویز ییٚہِ ماڈیوٗل:trans/دَستاویز جاے بَناونہٕ"

local p = {}
local lang_codes = require("Module:lang name")
local codes = { --add languages here in the nastaliq alphabetic order. also add in Template:trans in the #invoke
	'ab',  'cch', 'ur', 'rup', 'or', 'uz', 'inc-ash', 'it', 'afh', 'af', 'akk', 'ak', 'ach', 'sq', 'arq', 'gsw', 'ale', 'ase', 'am', 'xaa', 'id', 'en', 'anp', 'awa', 'ae', 'itc-pro', 'afa-pro', 'sqj-pro', 'esx-inu-pro', 'urj-pro', 'ira-pro', 'esx-esk-pro', 'map-pro', 'euq-pro', 'ine-bsl-pro', 'bnt-pro', 'cel-bry-pro', 'tai-pro', 'trk-pro', 'gem-pro', 'sit-pro', 'dra-pro', 'inc-dar-pro', 'sem-pro', 'sla-pro', 'fiu-fin-pro', 'cel-pro', 'gmw-pro', 'poz-mly-pro', 'poz-pro', 'mkh-pro', 'cau-nkh-pro', 'iir-pro', 'inc-pro','ine-pro', 'mkh-vie-pro', 'grk-pro', 'io', 'eo', 'et', 'ug', 'xno', 'ace', 'ady', 'az', 'arp', 'an', 'arc', 'arw', 'hy', 'as', 'ast', 'aii', 'oc', 'av', 'ga', 'ain', 'is', 'ay', 'bas', 'eu', 'ba', 'bar', 'bej', 'abv', 'bra', 'my', 'br', 'bi', 'bik', 'bg', 'byn', 'bal', 'bm', 'bn', 'bin', 'bho', 'bua', 'bs', 'bug', 'nds', 'be', 'bem', 'pi', 'inc-pra', 'pt', 'ang', 'xcl', 'pro', 'sga', 'roa-opt', 
	'goh', 'ojp', 'oge', 'odt', 'non', 'cu', 'gmq-osw', 'peo', 'fro', 'itc-ola', 'orv', 'osp', 'inc-ohi', 'ps', 'pa', 'pl', 'tt', 'tg', 'ta', 'bo', 'tr', 'tk', 'aeb', 'te', 'th', 'ja', 'ka', 'jv', 'de', 'pga', 'alt', 'sma', 'ajp', 'shu', 'ch', 'chg', 'cho', 'chk', 'cv', 'chb', 'chp', 'ce', 'chr', 'cs', 'chn', 'zh', 'acw', 'mey', 'afb', 'dar', 'ada', 'dv', 'dyu', 'dak', 'nl', 'doi', 'da', 'ru', 'rm', 'ro', 'zu', 'sr', 'sh', 'bla', 'sco', 'gd', 'sk', 'sl', 'sat', 'sd',
	'sa', 'si', 'sw', 'apd', 'sv', 'ceb', 'chy', 'se', 'apc', 'psu', 'aec', 'aao', 'scn', 'sqr', 'la-vul', 'he', 'ota', 'acm', 'ar', 'aa', 'acx', 'fa', 'fo', 'fan', 'fj', 'fr', 'fi', 'acy', 'cop', 'egy', 'grc', 'ky', 'kk', 'ca', 'cad', 'car', 'co', 'kw', 'csb', 'ku', 'hr', 'cr', 'crh', 'km', 'kn', 'kok', 'gl', 'gu', 'kl', 'got', 'lv', 'la', 'lo', 'li', 'lt', 'lbj', 'lb', 'lij', 'ayl', 'liv', 'roa-leo', 'arn', 'mh', 'mwr', 'chm', 'mg', 'mt', 'mr', 'ary', 'nld', 'arz', 'vls', 'mk', 'ms' ,'ml', 'enm', 'ira-mid', 'mga', 'gml','gmh', 'dum', 
    'pal', 'frm', 'wlm', 'mn', 'ayp', 'mai', 'nap', 'nrf', 'nb', 'nn', 'ars', 'ne', 'wa', 'wo', 'vi', 'vsn', 'cy', 'vec', 'ha', 'es', 'hind', 'hi', 'hu', 'yi', 'ayn', 'uk', 'el', 'yhd'
}
local rtl = { --right to left languages
	'ur', 'fa', 'ar',
}
function p.split(s, delimiter)
    result = {}
    for match in (s..delimiter):gmatch("(.-)"..delimiter) do
        table.insert(result, match)
    end
    return result
end

function p.table_len(tab)
	length = 0
	for _ in pairs(tab) do
		length = length + 1
	end
	return length
end

function p.is_rtl(code)
	for c, v in pairs(rtl) do
		if v == code then
			return true
		end
	end
	return false
end

function p.add(params)
	local out = ''
	local translations = {}
	for _, code in ipairs(codes) do
		translations[code] = params.args[code]
	end
	
	for i = 1, p.table_len(codes) do
		c = codes[i]
		v = translations[c]
		local lang_name = lang_codes.get_lang_name(c)
		if v ~= "" and v ~= nil then
			if string.match(v, ",") then
				local defs = ""
				local def_list = p.split(v, ",")
				local length = p.table_len(def_list)
				for count, def in pairs(def_list) do
					if count ~= length then
						if p.is_rtl(c) then
							defs = defs .. "[[" .. def .. "#" ..  lang_name .. "|".. def .. "]]، "
						else
							defs = defs .. "[[" .. def .. "#" ..  lang_name .. "|".. def .. "]] ،"
						end
					else
						defs = defs .. "[[" .. def .. "#" ..  lang_name .. "|".. def .. "]]"
					end
				end
				out = out .. "<li>" .. lang_name .. " : " .. defs .. "</li>"
			else 
				out = out .. "<li>" .. lang_name .. " : " .. "[[" .. v .. "#" .. lang_name .. "|".. v .. "]] </li>"
			end
		end
	end
	return out
end
return p