Toggle menu
15
236
70
27.5K
Kenshi Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Contains functions linked to Module:TNT, which at the same time make calls to multilingual tables, located in Commons, for the creation of modules and multilingual templates.

TNTTools has:

  • Question functions: with boolean or numerical indexed return. To be called from other modules or from templates. With:
    • Case sensitive option.
    • Possibility of more than one translated text value (where each value is separated by "|").
  • To put aside write, adding "I18n/" as a prefix and ".tab" extension as a suffix for the table names.



require('strict')
local p = {}

local TNT = require('Module:TNT')

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

local 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('en',TNTTab, S, unpack(params))
		if IsMsg then
			local icon = '[[File:Arbcom ru editing.svg|12px|Not found "'..S..'" in current language. Click here for to edit it.|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('Found %s translations for "%s". Search in [[:commons:data:%s]]',#tab,S,FN)) 
							-- Translation not required
	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..'"') --It doesn't require translation, only for 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..'"') --It doesn't require translation, only for 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