پرش به محتوا

پودمان:Header/lang

از سورسکال

توضیحات این پودمان می‌تواند در پودمان:Header/lang/توضیحات قرار گیرد.

require('strict')

local p = {}

local ISO_639_language_name = require('Module:ISO 639').language_name
local TableTools = require('Module:TableTools')

p.project_language = mw.language.getContentLanguage().code
p.project_language_name = ISO_639_language_name(p.project_language)

p.interwiki_prefixes = {}

--[=[
ساختنِ ردهٔ خودکار برای سربرگ
]=]
function p.language_category_name(cat_works_start, lang, is_translation)
	local cat_language_name = ISO_639_language_name(lang) or 'زبان نامشخص'
	if lang == 'el' then
		cat_language_name = 'یونانی نو' -- برای تمایز از یونانیِ باستان (grc)
	elseif lang == p.project_language and not is_translation then
		cat_language_name = p.project_language_name .. ' (تصریح‌شده)'
	end
	return cat_works_start .. ' ' .. cat_language_name
end

function p.get_languages(args, prefix)
	prefix = (prefix and prefix .. '%-') or ''
	
	-- رسیدگی به زبان‌ها
	local languages = {}
	for k, v in pairs(args) do
		local n
		local nText = string.match(k, '^' .. prefix .. 'language%d*$') or string.match(k, '^' .. prefix .. 'lang%d*$')
		if nText and type(v) == 'string' then
			n = string.gsub(string.gsub(nText, 'language', ''), 'lang', '')
			n = tonumber(n) or 1
			languages[n] = mw.text.split(v, '%s*,%s*')
		end
	end
	languages = TableTools.compressSparseArray(languages)
	if #languages == 0 then
		return {}
	end
	
	local flat_languages = {}
	local language_name
	local language_names = {}
	for i, langs in ipairs(languages) do
		for j, lang in ipairs(langs) do
			table.insert(flat_languages, lang)
			local name = ISO_639_language_name(lang)
			if name then
				table.insert(language_names, name)
			end
		end
	end
	
	if #language_names == 1 then
		language_name = language_names[1]
	elseif #language_names > 1 then
		language_name = table.concat(language_names, '، ', 1, #language_names - 1) .. ' و ' .. language_names[#language_names]
	end
	
	return {
		languages = flat_languages,
		language_name = language_name
	}
end

return p