Модуль:Langs: различия между версиями

Материал из Викиновостей, свободного источника новостей
Содержимое удалено Содержимое добавлено
+be +ka
Нет описания правки
(не показано 6 промежуточных версий этого же участника)
Строка 18: Строка 18:


function Langs.getPrefixByCode(code)
function Langs.getPrefixByCode(code)
local l1, l2, l3, l4 = Langs.processCode(code)
local l1, l2, l3, l4, l5 = Langs.processCode(code)
return mw.ustring.lower(l1)
return mw.ustring.lower(l1)
end
end
Строка 32: Строка 32:
if(text == nil) then text = "Module:Langs.launch Error: empty text" end
if(text == nil) then text = "Module:Langs.launch Error: empty text" end
if(code == nil) then code = "Module:Langs.launch Error: empty code" end
if(code == nil) then code = "Module:Langs.launch Error: empty code" end
local l1, l2, l3, l4 = Langs.processCode(code)
local l1, l2, l3, l4, l5 = Langs.processCode(code)
if(l4 == false) then return "[[" .. l1 .. " язык|" .. l2 .. "]] ''" .. text .. "''[[Категория:Содержат текст на " .. l3 .. " языке]][[Категория:В модуле Langs отсутствует описание языка]]"
if(l4 == false) then return "[[" .. l1 .. " язык|" .. l2 .. "]] ''" .. text .. "''[[Категория:Содержат текст на " .. l3 .. " языке]][[Категория:В модуле Langs отсутствует описание языка]]"
elseif (code == "ar") then return "[[" .. l1 .. " язык|" .. l2 .. "]]" .. " ‏" .. text .. "‎[[Категория:Содержат текст на " .. l3 .. " языке]]"
elseif (code == "ar") then return "[[" .. l1 .. " язык|" .. l2 .. "]]" .. " ‏" .. text .. "‎[[Категория:Содержат текст на " .. l3 .. " языке]]"
elseif (code == "he") 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 == "yi") then return "[[" .. l1 .. "|" .. l2 .. "]]" .. " ''‏" .. text .. "‎''[[Категория:Содержат текст на " .. l3 .. "]]"
elseif (code == "yi") then return "[[" .. l1 .. "|" .. l2 .. "]]" .. " ''‏" .. text .. "‎''[[Категория:Содержат текст на " .. l3 .. "]]"
end
end
return "[[" .. l1 .. " язык|" .. l2 .. "]]" .. " ''" .. text .. "''[[Категория:Содержат текст на " .. l3 .. " языке]]"
if(l5 == false) then return "[[" .. l1 .. "|" .. l2 .. "]]" .. " ''" .. text .. "''[[Категория:Содержат текст на " .. l3 .. "]]"
else return "[[" .. l1 .. " язык|" .. l2 .. "]]" .. " ''" .. text .. "''[[Категория:Содержат текст на " .. l3 .. " языке]]"
end
end
end


function Langs.processCode(code)
function Langs.processCode(code)
if (code == "ar") then return "Арабский", "араб.", "арабском", true
if (code == "ar") then return "Арабский", "араб.", "арабском", true, true
elseif (code == "az") then return "Азербайджанский", "азерб.", "азербайджанском", true
elseif (code == "az") then return "Азербайджанский", "азерб.", "азербайджанском", true, true
elseif (code == "be") then return "Белорусский", "бел.", "белорусском", true
elseif (code == "be") then return "Белорусский", "бел.", "белорусском", true, true
elseif (code == "bg") then return "Болгарский", "болг.", "болгарском", true
elseif (code == "bg") then return "Болгарский", "болг.", "болгарском", true, true
elseif (code == "co") then return "Корейский", "кор.", "корейском", true
elseif (code == "co") then return "Корейский", "кор.", "корейском", true, true
elseif (code == "de") then return "Немецкий", "нем.", "немецком", true
elseif (code == "de") then return "Немецкий", "нем.", "немецком", true, true
elseif (code == "el") then return "Греческий", "греч.", "греческом", true
elseif (code == "el") then return "Греческий", "греч.", "греческом", true, true
elseif (code == "en") then return "Английский", "англ.", "английском", true
elseif (code == "en") then return "Английский", "англ.", "английском", true, true
elseif (code == "es") then return "Испанский", "исп.", "испанском", true
elseif (code == "en-gb") then return "Британский вариант английского языка", "брит. англ.", "британском варианте английского языка", true, false
elseif (code == "fr") then return "Французский", "фр.", "французском", true
elseif (code == "en-us") then return "Американский вариант английского языка", "амер. англ.", "американском варианте английского языка", true, false
elseif (code == "haw") then return "Гавайский", "гав.", "гавайском", true
elseif (code == "es") then return "Испанский", "исп.", "испанском", true, true
elseif (code == "he") then return "Иврит", "ивр.", "иврите", true
elseif (code == "fr") then return "Французский", "фр.", "французском", true, true
elseif (code == "hy") then return "Армянский", "арм.", "армянском", true
elseif (code == "haw") then return "Гавайский", "гав.", "гавайском", true, true
elseif (code == "it") then return "Итальянский", "итал.", "итальянском", true
elseif (code == "he") then return "Иврит", "ивр.", "иврите", true, true
elseif (code == "ka") then return "Грузинский", "груз.", "грузинском", true
elseif (code == "hy") then return "Армянский", "арм.", "армянском", true, true
elseif (code == "kk") then return "Казахский", "каз.", "казахском", true
elseif (code == "it") then return "Итальянский", "итал.", "итальянском", true, true
elseif (code == "lv") then return "Латышский", "латыш.", "латышском", true
elseif (code == "ka") then return "Грузинский", "груз.", "грузинском", true, true
elseif (code == "pl") then return "Польский", "польск.", "польском", true
elseif (code == "kk") then return "Казахский", "каз.", "казахском", true, true
elseif (code == "pt") then return "Португальский", "порт.", "португальском", true
elseif (code == "lv") then return "Латышский", "латыш.", "латышском", true, true
elseif (code == "rm") then return "Романшский", "ромш.", "романшском", true
elseif (code == "pl") then return "Польский", "польск.", "польском", true, true
elseif (code == "ro") then return "Румынский", "рум.", "румынском", true
elseif (code == "ps") then return "Пушту", "пушту", "пушту", true, true
elseif (code == "ru") then return "Русский", "рус.", "русском", true
elseif (code == "pt") then return "Португальский", "порт.", "португальском", true, true
elseif (code == "sv") then return "Шведский", "швед.", "шведском", true
elseif (code == "rm") then return "Романшский", "ромш.", "романшском", true, true
elseif (code == "tr") then return "Турецкий", "тур.", "турецком", true
elseif (code == "ro") then return "Румынский", "рум.", "румынском", true, true
elseif (code == "uk") then return "Украинский", "укр.", "украинском", true
elseif (code == "ru") then return "Русский", "рус.", "русском", true, true
elseif (code == "yi") then return "Идиш", "идиш", "идише", true
elseif (code == "sv") then return "Шведский", "швед.", "шведском", true, true
elseif (code == "zh") then return "Китайский", "кит.", "китайском", true
elseif (code == "tr") then return "Турецкий", "тур.", "турецком", true, true
elseif (code == "uk") then return "Украинский", "укр.", "украинском", true, true
else return code, code..".", code, false
elseif (code == "yi") then return "Идиш", "идиш", "идише", true, true
elseif (code == "zh") then return "Китайский", "кит.", "китайском", true, true
else return code, code..".", code, false, false
end
end
end
end

Версия от 22:38, 6 сентября 2018

Документация
Страница документации: Модуль: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}}

Вывод:

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 == "he") then return "[[" .. l1 .. "|" .. l2 .. "]]" .. " ''‏" .. text .. "‎''[[Категория:Содержат текст на " .. l3 .. "]]" 
  elseif (code == "ps") 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 == "be") then return "Белорусский", "бел.", "белорусском", true, true
  elseif (code == "bg") then return "Болгарский", "болг.", "болгарском", true, true
  elseif (code == "co") 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 == "fr") then return "Французский", "фр.", "французском", true, true
  elseif (code == "haw") then return "Гавайский", "гав.", "гавайском", true, true
  elseif (code == "he") then return "Иврит", "ивр.", "иврите", true, true
  elseif (code == "hy") then return "Армянский", "арм.", "армянском", true, true
  elseif (code == "it") then return "Итальянский", "итал.", "итальянском", true, true
  elseif (code == "ka") then return "Грузинский", "груз.", "грузинском", true, true
  elseif (code == "kk") then return "Казахский", "каз.", "казахском", true, true
  elseif (code == "lv") 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 == "sv") then return "Шведский", "швед.", "шведском", true, true
  elseif (code == "tr") then return "Турецкий", "тур.", "турецком", true, true
  elseif (code == "uk") then return "Украинский", "укр.", "украинском", true, true
  elseif (code == "yi") then return "Идиш", "идиш", "идише", true, true
  elseif (code == "zh") then return "Китайский", "кит.", "китайском", true, true 
  else return code, code..".", code, false, false
 end
end

return Langs