Kontent qismiga oʻtish

Modul:tili/andozalar

Vikilug‘atdan olingan

Ushbu modul uchun foydalanish imkonini beradi Module:tili andozalari, shunday qilib ular u erda saqlangan maʼlumot foydalanish mumkin.

Foydalanish

[tahrirlash]

Agar bir tilni kodi bilish (masalan, "uz" uchun) va uning kanonik nomini bilib boʻlsangiz, siz bu foydalanishingiz mumkin:

  • {{#invoke:tili/andozalar|getByCode|uz|getCanonicalName}} (qaytadi "Oʻzbek")

Agar bir tilni, uning kanonik nom (masalan, "Oʻzbek tili") bilish va uning kodini topish boʻlsangiz, bu foydalaning:

  • {{#invoke:tili/andozalar|getByCanonicalName|Oʻzbek|getCode}} (qaytadi "uz")

Bu funktsiyalarni ikkalasi ham subst bor: ega (type {{subst:#invoke:...).

eksport vazifalari

[tahrirlash]

mavjud

[tahrirlash]

{{#invoke:tili/andozalar|exists|(language code)}}

A til kodi mavjud va tegishli yoki yoʻqligini tekshiring. U yoʻq boʻlsa, u til kodi mavjud boʻlsa, "1" qaytib, va boʻsh string "" qiladi.

Kimdir haqiqiy emas kodni foydalanadi qachon bir skript xato sabab boʻladi, chunki, bu kamdan-kam hollarda, zarur, shuning uchun siz faqat xatolar uchun nazorat qilish, bu shart emas. Shu bilan birga, ishda maʼlum bir oʻlchov bir til kodi yoki boshqa biror narsa yoki yoʻqligini asosida turli harakatlar qaror qabul qilish kerak, bu funktsiya foydali boʻlishi mumkin.

getByCode

[tahrirlash]

{{#invoke:tili/andozalar|getByCode|(language code)|(item to look up)|(index)}}

A til kodi haqida maʼlumot surishtiruv.

  • Tillar maʼlumotlar: til kodi moduli Module:tili belgilangan kodlar biri boʻlishi kerak. U yoʻqolgan yoki boʻlmasa, natija bir skript xato boʻladi.
  • Tovar bunday getCanonicalName yoki getScripts kabi til obʼekt funktsiyalari, biri nomidir. No xabar berilgan boʻlsa, natija bir skript xato boʻladi.
  • Indeks ixtiyoriy boʻlib, bunday getOtherNames yoki getScripts sifatida roʻyxati bor obʼektlar uchun ishlatiladi. Bu qaytish uchun roʻyxatda qaysi yangilik tanlaydi. getFamily kabi yagona satrlari bor obʼektlar, kuni u hech qanday taʼsiri yoʻq. Bir indeks roʻyxatida obʼektlar sonidan yuqori ekanligini berilgan boʻlsa, natija boʻsh tor boʻladi.

Misol uchun, kod tilining kanonik nomini talab qilish uz:

{{#invoke:tili/andozalar|getByCode|uz|getCanonicalName}}
  • Natija: Oʻzbek

Agar mavjud boʻlsa, uning ikkinchi nomi soʻrash uchun:

{{#invoke:tili/andozalar|getByCode|uz|getOtherNames|1}}
  • Natija: Hozirgi oʻzbek

Uning oilasini soʻrash uchun:

{{#invoke:tili/andozalar|getByCode|uz|getFamily}}
  • Natija: hzg-uzb

getByCanonicalName

[tahrirlash]
Ushbu template hujjatiga kerak.
Hujjatlar sahifasida uning maqsadi va foydalanish tasvirlab, bu shablonni hujjatlarni qiling.

Shuningdek qarang

[tahrirlash]

local concat = table.concat
local insert = table.insert
local sort = table.sort

local export = {}

function export.exists(frame)
	return require("Module:tili").getByCode(
		require("Module:parameters").process(frame.args, {
			[1] = {required = true}
		})[1]
	) and "1" or ""
end

do
	local function getByCode(frame, allow_etym)
		local plain = {}
		local args = require("Module:parameters").process(frame.args, {
			[1] = {required = true, type = allow_etym and "language" or "full language"},
			[2] = {required = true},
			[3] = plain,
			[4] = {type = "script"},
			[5] = plain,
		})
		return require("Module:language-like").templateGetByCode(args,
			function(itemname)
				local list
				if itemname == "getWikimediaLanguages" then
					list = args[1]:getWikimediaLanguages()
				elseif itemname == "getScripts" then
					list = args[1]:getScriptCodes()
				elseif itemname == "getAncestors" then
					list = args[1]:getAncestors()
				end
				if list then
					local retval = list[tonumber(args[3]) or error("Please specify the numeric index of the desired item.")]
					if retval then
						if type(retval) == "string" then
							return retval
						else
							return retval:getCode()
						end
					else
						return ""
					end
				end
				if itemname == "transliterate" then
					return (args[1]:transliterate(args[3], args[4], args[5])) or ""
				elseif itemname == "makeDisplayText" then
					return (args[1]:makeDisplayText(args[3], args[4])) or ""
				elseif itemname == "makeEntryName" then
					return (args[1]:makeEntryName(args[3], args[4])) or ""
				elseif itemname == "makeSortKey" then
					return (args[1]:makeSortKey(args[3], args[4])) or ""
				elseif itemname == "countCharacters" then
					return args[4]:countCharacters(args[3] or "")
				elseif itemname == "findBestScript" then
					return args[1]:findBestScript(args[3] or ""):getCode()
				end
			end
		)
	end
	
	-- Used by the following JS:
	-- * [[WT:ACCEL]]
	-- * [[WT:EDIT]]
	-- * [[WT:NEC]]
	function export.getByCode(frame)
		return getByCode(frame, false)
	end
	
	function export.getByCodeAllowEtym(frame)
		return getByCode(frame, true)
	end
end

function export.getByCanonicalName(frame)
	local lang = require("Module:tili").getByCanonicalName(
		require("Module:parameters").process(frame.args, {
			[1] = {required = true}
		})[1],
		nil,
		true
	)
	return lang and lang:getCode() or ""
end

function export.getCanonicalName(frame)
	local args = require("Module:parameters").process(
		require("Module:yesno")(frame.args.parent) and frame:getParent().args or frame.args,
		{
			[1] = {required = true},
			["return_if_invalid"] = {type = "boolean"},
		}
	)
	local lang = require("Module:tili").getByCode(args[1], nil, true)
	return lang and lang:getCanonicalName() or not args.return_if_invalid and "" or args[1]
end

function export.getFull(frame)
	local args = require("Module:parameters").process(
		require("Module:yesno")(frame.args.parent) and frame:getParent().args or frame.args,
		{
			[1] = {required = true, type = "language"},
		}
	)
	return args[1]:getFullCode()
end

function export.getChildren(frame)
	local args = require("Module:parameters").process(
		require("Module:yesno")(frame.args.parent) and frame:getParent().args or frame.args,
		{
			[1] = {required = true, type = "language"},
		}
	)
	local children = args[1]:getChildren()
	
	sort(children, function(a, b)
		return a:getCanonicalName() < b:getCanonicalName()
	end)
	
	local list = {}
	for _, child in ipairs(children) do
		insert(list, "* " .. child:makeWikipediaLink() .. ": " .. "<code>" .. child:getCode() .. "</code>")
	end
	
	return concat(list, "\n")
end

return export