Модуль:TNTTools
Документація модуля[перегляд] [редагувати] [історія] [очистити кеш]
Цей модуль позначений як К:бета-модуль (24), і готовий до широкого вжитку. Він і досі новий і його слід використовувати з певною обережністю, щоб гарантувати, передбачувані результати. |
Містить функції, пов'язані з Module:TNT, які одночасно здійснюють виклики багатомовних таблиць, розташованих у Commons, для створення модулів і багатомовних шаблонів.
TNTTools містить:
- Функції питання: з булевим чи числовим індексованим поверненням. Викликаються з інших модулів або шаблонів. З допомогою:
- опції з урахуванням регістру.
- можливості мати більше одного перекладеного значення тексту (де кожне значення розділене знаком "|").
- Щоб не писати, додайте "I18n/" як префікс і розширення ".tab" як суфікс для імен таблиць.
- Декілька прикладів.
Документація вище включена з Модуль:TNTTools/документація. (ред. | історія) Дописувачі можуть експериментувати на підсторінках пісочниця (створити | дзеркало) та тести (створити) цього модуля. Будь ласка, додавайте категорії до підсторінки /документація. Підсторінки цієї сторінки. |
local p = {}
local TNT = require('Модуль:TNT')
--local SD = require('Модуль:SimpleDebug')
function p.TNTTabFull (TNTTab)
if (string.sub(TNTTab, 1, 5)) ~= 'I18n/' then
TNTTab = 'I18n/'..TNTTab
end
if (string.sub(TNTTab, string.len(TNTTab)-3)) ~= '.tab' then
TNTTab = TNTTab..'.tab'
end
return TNTTab
end --TNTTabFull
function p.TNTTabCommons (TNTTab)
return 'Commons:Data:'..p.TNTTabFull(TNTTab)
end
function p.LnkTNTTab (TNTTab)
return '[['..p.TNTTabCommons(TNTTab)..']]'
end
function I18nStr (TNTTab, S, IsMsg, params)
TNTTab = p.TNTTabFull (TNTTab)
local SEnd = TNT.format(TNTTab, S, unpack(params)) or ''
if SEnd == '' then
SEnd = TNT.formatInLanguage('uk',TNTTab, S, unpack(params))
if IsMsg then
local icon = '[[Файл:Arbcom ru editing.svg|12px|Не знайдено "'..S..'" поточною мовою. Натисніть тут, щоб відредагувати його.|link='..p.TNTTabCommons(TNTTab)..']]'
SEnd = SEnd..icon
end
end
return SEnd
end --I18nStr
function p.GetMsgP (TNTTab, S, ...)
return I18nStr (TNTTab, S, true, {...})
end
function p.GetStrP (TNTTab, S, ...)
return I18nStr (TNTTab, S, false, {...})
end
function p.TabTransCS (TNTTab, S, CaseSensitive)
CaseSensitive = ((CaseSensitive ~= nil) and (CaseSensitive == true)) or true
local Wds = TNT.format (p.TNTTabFull(TNTTab), S)
if not CaseSensitive then
Wds = string.lower (Wds)
end
return mw.text.split (Wds, '|')
end --TabTransCS
function p.TabTransMT (TNTTab, S, MaxTrans)
local FN = p.TNTTabFull(TNTTab)
local tab = mw.text.split (TNT.format (FN, S), '|')
if #tab > MaxTrans then
error (string.format('Знайдено %s перекладів для "%s". Пошук у [[:commons:data:%s]]',#tab,S,FN))
-- Переклад не потрібний
end
return tab
end --TabTransMT
function p.SFoundInTNTArr (TNTTab, val, CaseSensitive, S)
if (S == nil) or (S == '') then
error('Not arguments trying to find "'..val..'"') --Він не вимагає перекладу, тільки для degug
end
local Arr = p.TabTransCS (TNTTab, S, CaseSensitive)
if not CaseSensitive then
val = string.lower (val)
end
for I, W in ipairs(Arr) do
if W == val then
return true
end
end
return false
end --SFoundInTNTArr
function p.IdxFromTabTrans (TNTTab, val, CaseSensitive, ...)
local Arr = unpack(arg)
if Arr == nil then
error('Not arguments trying to find "'..val..'"') --Він не вимагає перекладу, тільки для degug
end
local Idx = 0
for I, W in ipairs(Arr) do
if p.SFoundInTNTArr (TNTTab, val, CaseSensitive, W) then
Idx = I
break
end
end
return Idx
end --IdxFromTabTrans
return p