Мазмунга өтүү

Модуль:languages

Wiktionary дан

Бул модул Wiktionary жазуулары болушу мүмкүн болгон тилдерди жана алар менен байланышкан маалыматтарды алуу жана башкаруу үчүн колдонулат. Көбүрөөк маалымат үчүн Wiktionary:Languages ​​караңыз.

Этимологияларда колдонулушу мүмкүн болгон тилдер жана тил сорттору үчүн Module:etymology languages караңыз. Кээде этимологияларда да кездешүүчү тил үй-бүлөлөрү үчүн Module:families караңыз.

Бул модул башка модулдарга мүмкүнчүлүк берет. Шаблондун ичиндеги маалыматка жетүү үчүн, Module:languages/templates караңыз.

Маалыматтын өзү бул модулдун суббаракчалары болгон ар кандай маалымат модулдарында сакталат. Бул модулдар башка модулдар тарабынан түз колдонулбашы керек, маалыматтарга бул модулда каралган функциялар аркылуу гана жетүүгө болот.

Маалымат субмодулдары:

Кошумча маалымат субмодулдары (азыраак колдонулган маалыматтар үчүн):

Тилдерди табуу жана алуу

[түзөтүү]

Модуль тилдерди табуу үчүн колдонулган бир катар функцияларды экспорттойт.


Тил объектилери

[түзөтүү]

Тил объектиси жогорудагы функциялардын биринен кайтарылган. Бул тилдин жана аны менен байланышкан маалыматтардын Луа өкүлчүлүгү. Анын синтаксисин колдонуу менен чакыра турган бир нече ыкмалар бар. Мисалы:

local m_languages = require("Module:languages")
local lang = m_languages.getByCode("fr")
local name = lang:getCanonicalName()
-- "name" will now be "French"


Ката функциясы

[түзөтүү]

See Module:languages/error.

Кош барактар

[түзөтүү]

Ошондой эле

[түзөтүү]

local languages = mw.loadData("Module:languages/data");
local p = {};

local function trimstr(s)
  return (s:gsub("^%s*(.-)%s*$", "%1"));
end

local function formatLang(code, name, index, extention)
	local result = '';
    local margin = '';
	result = result .. "* [[" .. mw.ustring.lower(name) .. "#Орусча|" .. name .. "]]";
	if index ~= nil and index ~= "" then
		local indexes = {
		["к"] = "калыбына келтирилген тил",
		["ж"] = "жасалма тил",
		["р"] = "реконструкцияланган тил",
		["ф"] = "фантастикалык тил",
		["†"] = "өлгөн тил"
		}
		local title = indexes[index] or '';
		if title ~= '' then
			title = " title='" .. title .. "'";
		end
		result = result .. "<sup style='color:#66C033'" .. title .. ">" .. index .. "</sup>";
		margin = ';margin-left: -5px';
	end
	if code ~= nil and code ~= "" then
	result = result .. "<sub style='color:#33C066" .. margin .. "'>" .. code .. "</sub>";
	end
	if extention ~= nil and extention ~= "" then
	result = result .. " " .. extention;
	end
	return result;
end

function p.list(frame)
  local result = "";
  local names = {};
  local nnames = {};
  local key = "";
  local cnt = 0;
  local demo = frame.args['demo'];
  if demo ~= nil and demo ~= "" then
    for code,v in pairs(languages) do
      key = v[2];
      if v[4] ~= nil and v[4] ~= "" then
        key = key .. v[4];
      end
      table.insert(nnames, key);
      names[key] = { code = v[1], name = v[2], index = v[3],  extention = v[4], value =  code};
      cnt = cnt +1;
    end; 
  else
    for code,value in pairs(frame:getParent().args) do
      if type(code)=='string' then 
        local trimmed = trimstr(code);
        local v = trimstr(value);
        local l = languages[trimmed];
        if l ~= nil and l ~= "" and v ~= nil and v ~= "" then
          key = l[2];
          if l[4] ~= nil and l[4] ~= "" then
            key = key .. l[4];
          end
          table.insert(nnames, key);
          names[key] = { code = l[1], name = l[2], index = l[3],  extention = l[4], value = v};
          cnt = cnt +1;
        end
      end
    end
  end
  if cnt > 0 then
    table.sort(nnames);
    for i, key in ipairs(nnames) do
      local v = names[key];    
      result = result .. formatLang(v.code, v.name, v.index, v.extention);
      result = result .. ': <span lang="' .. v.code .. '">' .. v.value .. '</span>\n';
    end
  end
  return result
end

function p.ref(frame)
	local result = "";
	local args = frame.args;
	if args[1] == nil then
		args = frame:getParent().args;
	end
	local code = args[1];
	if type(code) == 'string' then
		local trimmed = trimstr(code);
		local l = languages[trimmed];
		if l ~= nil then
			result = result .. formatLang(l[1], l[2], l[3], l[4]);
		end
	end
	if result == '' then
		result = tostring(code);
	end
	return result;
end

return p