Module:IPA/category documentation

Implements Template:IPA language category.

Module:IPA/category documentation

require('strict')

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

function p.lookup_name( name )
	for _, lect in ipairs(lects) do
		if (lect.name or lect.extName) == name then
			return lect.code, lect, lect.parent
		end
	end

	local code = mLang._tag_from_name({ name })
	if not code:find('^<span') then
		local regionCode = code:match('-(.+)')
		if regionCode and regionCode:sub(1, 2) ~= 'x-' then
			code = code:sub(1, #code - #regionCode) .. regionCode:upper()
		end
		for _, lect in ipairs(lects) do
			if lect.code == code then
				return code, lect, lect.parent
			end
		end
		return code, nil, nil
	end

	return nil, nil, nil
end

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.title.getCurrentTitle().text:sub(12, -5)
	local lect, parent
	local code = args.code
	if not code then
		code, lect, parent = p.lookup_name( name )
	end
	if not code and args.container ~= 'yes' then
		return frame:expandTemplate({ title = 'Hidden category' }) .. string.format('<span class="error" style="font-size: 100%%; font-style: normal;">Error: language code for "%s" not found. Please see [[Template talk:IPA]] for assistance.</span>[[Category:IPA template errors]]', name)
	end
	local isCollective = name:find(' languages$') 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 .. ' language'
	if not mw.title.new(link).exists then
		link = mLang._name_from_tag({ code, link = 'yes' })
			:match('^%[%[([^|%]]+)')
	end
	local key = lect and lect.key or parent and parent.key
	local langCat, langCatCount
	if code then
		langCat = mLang._category_from_tag({ code })
		if langCat:find('^<span') then
			langCat = nil
		else
			langCatCount = mw.site.stats.pagesInCategory(langCat:sub(10), 'pages')
		end
	end
	local parentName = args.parent
		or parent and (parent.name or mLang._name_from_tag({ parent.code, raw = 'yes' }))
		or code and code:find('-') and mLang._name_from_tag({ code:gsub('%-.*', ''), raw = 'yes' })
	if parentName == name or parentName and parentName:find('^<span') then
		parentName = nil
	end
	local cat = args.cat ~= 'no' and (
		parentName and 'Pages with ' .. parentName .. ' IPA' or 'Pages with IPA'
	)
	local sortkey = args.sort or name:find('^[ %l]+$') and ' ' .. name or name
	local ret = {}
	table.insert(ret, frame:expandTemplate({ title = 'Tracking category' }))
	table.insert(ret, string.format(
		'The following pages contain [[International Phonetic Alphabet|IPA]] transcriptions of [[%s|%s]] using %s. This category should never be added manually.',
		link,
		name,
		code
			and string.format('<code>{{[[Template:IPA|IPA]]|%s|...}}</code>', code)
			or '[[Template:IPA]]'
	))
	if key then
		table.insert(ret, string.format(
			'By default, the transcriptions are linked to the [[%s]] key. Transcriptions that do not adhere to the conventions of the key must have <code>|generic=yes</code>.',
			key
		))
	end
	if isCollective or args.collective == 'yes' then
		table.insert(ret, string.format(
			'%s a language collective. Please replace the code%s with those of more specific languages where possible.',
			isCollective and string.format('The %s are', name) or string.format('%s is', name),
			code and ' (' .. code .. ')' or ''
		))
	end
	if args.content then
		table.insert(ret, args.content)
	end
	if langCat and langCatCount ~= 0 then
		table.insert(ret, string.format(
			'==See also==\n*[[:%s]] (%s)',
			langCat,
			mw.language.new('en'):formatNum(langCatCount)
		))
	end
	if cat then
		table.insert(ret, string.format('[[Category:%s|%s]]', cat, sortkey))
	end
	return table.concat(ret, '\n\n')
end

return p

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.