Модуль:Langs

Материал из Викиновостей, свободного источника новостей
Документация
Страница документации: Модуль:FillLang/doc.

Модуль Langs предназначен для для форматирования включения текста на иностранных языках в шаблоны и модули. Является базовым для шаблона {{Langs}}, с помощью которого включается в статьи.

Если модуль встретил незнакомый язык он представляет его кодом и добавляет страницы с такими ошибками в Категория:В модуле Langs отсутствует описание языка.

Инструкцию по исправлению смотрите в Модуль:Langs/Улучшение.

Функции

launch

Основная функция launch(code, text) выводит форматированный текст.

Обязательными являются два параметра:

  • code — код языка.
  • text — выводимый текст.

Использование в модулях:

require("Module:Langs").launch(code, text)

Использование в шаблонах:

{{#invoke:Langs|launchInvoke|code|text}}

Пример:

{{#invoke:Langs|launchInvoke|uk|мова}}

Вывод:

укр. мова

getPrefixByCode

Функция getPrefixByCode возвращает название языка по его двухбуквенному коду.

Обязательными является один параметр:

  • code — код языка.

Использование в модулях:

require("Module:Langs").getPrefixByCode(code)

Использование в шаблонах:

{{#invoke:Langs|getPrefixByCode|code}}

Пример:

{{#invoke:Langs|getPrefixByCodeInvoke|sr}}

Вывод:

сербский
--[[
------------------------------------------
--             Langs
-- Модуль для заполнения в модулях шабона lang. 
------------------------------------------
--]]

local Langs = {}

local Declension = require("Module:Declension")

-- Wrapper for invoke
-- Usage:
-- {{#invoke:Langs|getPrefixByCodeInvoke|code}}
function Langs.getPrefixByCodeInvoke(frame) 
 return Langs.getPrefixByCode(frame.args[1])
end

function Langs.getPrefixByCode(code)
 local l1, l2, l3, l4, l5 = Langs.processCode(code)
 return mw.ustring.lower(l1)
end

-- Wrapper for invoke
-- Usage:
-- {{#invoke:Langs|launch|code|text}}
function Langs.launchInvoke(frame) 
 return Langs.launch(frame.args[1], frame.args[2])
end

function Langs.launch(code, text)
 if(text == nil) then text = "Module:Langs.launch Error: empty text" end
 if(code == nil) then code = "Module:Langs.launch Error: empty code" end
 local l1, l2, l3, l4, l5 = Langs.processCode(code)
 if(l4 == false)  then return "[[" .. l1 ..  " язык|" .. l2 ..  "]] ''" .. text .. "''[[Категория:Содержат текст на " .. l3 .. " языке]][[Категория:В модуле Langs отсутствует описание языка]]" 
  elseif (code == "ar") then return "[[" .. l1 ..  " язык|" .. l2 ..  "]]" .. " ‏" .. text .. "‎[[Категория:Содержат текст на " .. l3 .. " языке]]" 
  elseif (code == "fa") then return "[[" .. l1 ..  " язык|" .. l2 ..  "]]" .. " ‏" .. text .. "‎[[Категория:Содержат текст на " .. l3 .. " языке]]" 
  elseif (code == "he") then return "[[" .. l1 .. "|" .. l2 .. "]]" .. " ''‏" .. text .. "‎''[[Категория:Содержат текст на " .. l3 .. "]]" 
  elseif (code == "ps") then return "[[" .. l1 .. "|" .. l2 .. "]]" .. " ''‏" .. text .. "‎''[[Категория:Содержат текст на " .. l3 .. "]]" 
  elseif (code == "sah") then return "[[Язык " .. l1 .. "|" .. l2 .. "]]" .. " ''‏" .. text .. "‎''[[Категория:Содержат текст на языке " .. l3 .. "]]" 
  elseif (code == "yi") then return "[[" .. l1 .. "|" .. l2 .. "]]" .. " ''‏" .. text .. "‎''[[Категория:Содержат текст на " .. l3 .. "]]"  
 end
-- Не добавлять слово "язык" при его названии, например "хинди" - "Содержит текст на хинди".
 if(l5 == false) then return "[[" .. l1 ..  "|" .. l2 ..  "]]" .. " ''" .. text .. "''[[Категория:Содержат текст на " .. l3 .. "]]"
  else return "[[" .. l1 ..  " язык|" .. l2 ..  "]]" .. " ''" .. text .. "''[[Категория:Содержат текст на " .. l3 .. " языке]]"
 end
end

function Langs.processCode(code)
 if (code == "ar") then return "Арабский", "араб.", "арабском", true, true
  elseif (code == "az") then return "Азербайджанский", "азерб.", "азербайджанском", true, true
  elseif (code == "ba") then return "Башкирский", "баш.", "башкирском", true, true
  elseif (code == "be") then return "Белорусский", "бел.", "белорусском", true, true
  elseif (code == "bg") then return "Болгарский", "болг.", "болгарском", true, true
  elseif (code == "bn") then return "Бенгальский", "бенг.", "бенгальском", true, true
  elseif (code == "bua") then return "Бурятский", "бур.", "бурятском", true, true
  elseif (code == "ca") then return "Каталанский", "кат.", "каталанском", true, true
  elseif (code == "ce") then return "Чеченский", "чеч.", "чеченском", true, true
  elseif (code == "cs") then return "Чешский", "чешск.", "чешском", true, true
  elseif (code == "da") then return "Датский", "дат.", "датском", true, true
  elseif (code == "de") then return "Немецкий", "нем.", "немецком", true, true
  elseif (code == "el") then return "Греческий", "греч.", "греческом", true, true
  elseif (code == "en") then return "Английский", "англ.", "английском", true, true
  elseif (code == "en-gb") then return "Британский вариант английского языка", "брит. англ.", "британском варианте английского языка", true, false
  elseif (code == "en-us") then return "Американский вариант английского языка", "амер. англ.", "американском варианте английского языка", true, false
  elseif (code == "es") then return "Испанский", "исп.", "испанском", true, true
  elseif (code == "eu") then return "Баскский", "баск.", "баскском", true, true
  elseif (code == "et") then return "Эстонский", "эст.", "эстонском", true, true
  elseif (code == "fa") then return "Персидский", "перс.", "персидском", true, true
  elseif (code == "fi") then return "Финский", "фин.", "финском", true, true
  elseif (code == "fr") then return "Французский", "фр.", "французском", true, true
  elseif (code == "haw") then return "Гавайский", "гав.", "гавайском", true, true
  elseif (code == "he") then return "Иврит", "ивр.", "иврите", true, true
  elseif (code == "hi") then return "Хинди", "хинди", "хинди", true, false
  elseif (code == "hr") then return "Хорватский", "хорв.", "хорватском", true, true
  elseif (code == "hu") then return "Венгерский", "венг.", "венгерском", true, true
  elseif (code == "hy") then return "Армянский", "арм.", "армянском", true, true
  elseif (code == "id") then return "Индонезийский", "индон.", "индонезийском", true, true
  elseif (code == "inh") then return "Ингушский", "инг.", "ингушском", true, true
  elseif (code == "it") then return "Итальянский", "итал.", "итальянском", true, true
  elseif (code == "ja") then return "Японский", "яп.", "японском", true, true
  elseif (code == "ka") then return "Грузинский", "груз.", "грузинском", true, true
  elseif (code == "kk") then return "Казахский", "каз.", "казахском", true, true
  elseif (code == "ko") then return "Корейский", "кор.", "корейском", true, true
  elseif (code == "kv") then return "Коми", "коми", "коми", true, true
  elseif (code == "ky") then return "Киргизский", "кирг.", "киргизском", true, true
  elseif (code == "la") then return "Латинский", "лат.", "латинском", true, true
  elseif (code == "lez") then return "Лезгинский", "лезг.", "лезгинском", true, true
  elseif (code == "lt") then return "Литовский", "лит.", "литовском", true, true
  elseif (code == "lv") then return "Латышский", "латыш.", "латышском", true, true
  elseif (code == "mi") then return "Маори", "маори", "маори", true, false
  elseif (code == "mk") then return "Македонский", "макед.", "македонском", true, true
  elseif (code == "mn") then return "Монгольский", "монг.", "монгольском", true, true
  elseif (code == "ms") then return "Малайский", "малайск.", "малайском", true, true
  elseif (code == "nl") then return "Нидерландский", "нидерл.", "нидерландском", true, true
  elseif (code == "no") then return "Норвежский", "норв.", "норвежском", true, true
  elseif (code == "nor") then return "Норвежский", "норв.", "норвежском", true, true
  elseif (code == "oc") then return "Окситанский", "окс.", "окситанском", true, true
  elseif (code == "pl") then return "Польский", "польск.", "польском", true, true
  elseif (code == "ps") then return "Пушту", "пушту", "пушту", true, true
  elseif (code == "pt") then return "Португальский", "порт.", "португальском", true, true
  elseif (code == "rm") then return "Романшский", "ромш.", "романшском", true, true
  elseif (code == "ro") then return "Румынский", "рум.", "румынском", true, true
  elseif (code == "ru") then return "Русский", "рус.", "русском", true, true
  elseif (code == "sah") then return "Саха", "саха", "саха", true, true
  elseif (code == "sk") then return "Словацкий", "словац.", "словацком", true, true
  elseif (code == "sl") then return "Словенский", "словен.", "словенском", true, true	
  elseif (code == "sr") then return "Сербский", "серб.", "сербском", true, true
  elseif (code == "sv") then return "Шведский", "швед.", "шведском", true, true
  elseif (code == "tr") then return "Турецкий", "тур.", "турецком", true, true
  elseif (code == "tt") then return "Татарский", "тат.", "татарском", true, true
  elseif (code == "tt-cyrl") then return "Татарский", "тат.", "татарском", true, true
  elseif (code == "uz") then return "Узбекский", "узб.", "узбекском", true, true
  elseif (code == "uk") then return "Украинский", "укр.", "украинском", true, true
  elseif (code == "vec") then return "Венетский", "вен.", "венетском", true, true
  elseif (code == "vi") then return "Вьетнамский", "вьетн.", "вьетнамском", true, true
  elseif (code == "yi") then return "Идиш", "идиш", "идише", true, false
  elseif (code == "zh") then return "Китайский", "кит.", "китайском", true, true 
  else return code, code..".", code, false, false
 end
end

return Langs