پرش به محتوا

پودمان:IPA/category documentation

از ویکی‌پدیا، دانشنامهٔ آزاد
توضیحات پودمان[ایجاد] [پاکسازی]
require('strict')

local p = {}
local lects = mw.loadData('Module:IPA/data/export')
local mLang = require('Module:Lang')

function p.main(frame)
	local args = {}
	for k, v in pairs(frame:getParent().args) do
		if v ~= '' then
			args[k] = v
		end
	end
	local name = mw.ustring.sub(mw.title.getCurrentTitle().text, 43)
	local lect, parent
	local code = args.code
	if not code then
		for _, lect2 in ipairs(lects) do
			if (lect2.name or lect2.extName) == name then
				lect = lect2
				parent = lect.parent
				code = lect.code
				break
			end
		end
	end
	if not code then
		code = mLang._tag_from_name({ name })
		if code:find('^<span') then
			code = nil
		else
			local regionCode = code:match('-(.+)')
			if regionCode and regionCode:sub(1, 2) ~= 'x-' then
				code = code:sub(1, #code - #regionCode) .. regionCode:upper()
			end
			for _, lect2 in ipairs(lects) do
				if lect2.code == code then
					lect = lect2
					parent = lect.parent
					break
				end
			end
		end
	end
	local isCollective = name:find('^زبان‌های ') and true
	local link = lect and (lect.link or lect.generatedLink or lect.extLink) or
		parent and (parent.link or parent.generatedLink or parent.extLink) or
		isCollective and name or
		'زبان ' .. name
	local key = lect and lect.key or parent and parent.key
	local langCat, langCatCount
	if code then
		langCat = mLang._category_from_tag({ code })
		if mw.ustring.find(langCat, '^<span') then
			langCat = nil
		else
			langCatCount = mw.site.stats.pagesInCategory(langCat:sub(5), 'pages')
		end
	end
	local parentName = args.parent or
		parent and (parent.name or parent.extName) or
		code and code:find('-') and mLang._name_from_tag({ code:gsub('%-.*', '') })
	if parentName == name or
		parentName and parentName:find('^<span')
	then
		parentName = nil
	end
	local cat = args.cat ~= 'no' and (
		parentName and 'صفحه‌های دارای الفبای آوانگاری بین‌المللی ' .. parentName or
			'صفحه‌های دارای الفبای آوانگاری بین‌المللی'
	)
	local sortkey = args.sort or
		name:find('^[ %l]+$') and ' ' .. name or
		name
	local ret = {
		mw.ustring.format(
			'صفحه‌های زیر حاوی رونوشت‌های [[الفبای آوانگاری بین‌المللی]] برای [[%s|%s]] با استفاده از %s هستند. این رده هرگز نباید به‌صورت دستی به صفحه‌ها افزوده شود.',
			link,
			name,
			code
				and mw.ustring.format('<code>{{[[الگو:آوا|آوا]]|%s|...}}</code>', code)
				or '[[الگو:آوا]]'
		)
	}
	if key then
		table.insert(ret, mw.ustring.format(
			'به‌طور پیش‌فرض، رونوشت‌ها به کلید [[%s]] پیوند دارند. رونوشت‌هایی که از قواعد کلید پیروی نمی‌کنند باید دارای پارامتر <code>|generic=yes</code> باشند.',
			key
		))
	end
	if isCollective then
		table.insert(ret, mw.ustring.format(
			'%s یک مجموعهٔ زبان هستند. لطفاً شناسه%s را با در صورت امکان با شناسهٔ زبان‌هایی اختصاصی‌تر جایگزین کنید.',
			name,
			code and ' (' .. code .. ')' or ''
		))
	end
	if not code and args.container ~= 'yes' then
		table.insert(ret, mw.ustring.format(
			'<small>خطای مستندسازی: شناسهٔ زبان برای «%s» یافت نشد.</small>',
			name
		))
	end
	if args.content then
		table.insert(ret, args.content)
	end
	if langCat and langCatCount ~= 0 then
		table.insert(ret, mw.ustring.format(
			'== صفحه‌های وابسته ==\n*[[:%s]] (%s)',
			langCat,
			mw.language.new('fa'):formatNum(langCatCount)
		))
	end
	if cat then
		table.insert(ret, mw.ustring.format('[[رده:%s|%s]]', cat, sortkey))
	end
	return table.concat(ret, '\n\n')
end

return p