<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://kryptowiki.eu/index.php?action=history&amp;feed=atom&amp;title=Modul%3AVorlage%3Alang</id>
	<title>Modul:Vorlage:lang - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://kryptowiki.eu/index.php?action=history&amp;feed=atom&amp;title=Modul%3AVorlage%3Alang"/>
	<link rel="alternate" type="text/html" href="https://kryptowiki.eu/index.php?title=Modul:Vorlage:lang&amp;action=history"/>
	<updated>2026-06-30T05:26:48Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Kryptowiki - Die freie Enzyklopädie der Kryptowährungen</subtitle>
	<generator>MediaWiki 1.39.15</generator>
	<entry>
		<id>https://kryptowiki.eu/index.php?title=Modul:Vorlage:lang&amp;diff=248&amp;oldid=prev</id>
		<title>C1ph4: 1 Version importiert</title>
		<link rel="alternate" type="text/html" href="https://kryptowiki.eu/index.php?title=Modul:Vorlage:lang&amp;diff=248&amp;oldid=prev"/>
		<updated>2017-08-18T15:51:32Z</updated>

		<summary type="html">&lt;p&gt;1 Version importiert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local Export = { serial = &amp;quot;2017-04-24&amp;quot;,&lt;br /&gt;
                 suite  = &amp;quot;lang&amp;quot; }&lt;br /&gt;
--[=[&lt;br /&gt;
Vorlage:lang und Sprachnamenvorlagen usw. unterstützen&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local Config = {&lt;br /&gt;
   errCat         = false,&lt;br /&gt;
   errClass       = &amp;quot;error_lang&amp;quot;,&lt;br /&gt;
   errClasses     = false,&lt;br /&gt;
   errHide        = true,&lt;br /&gt;
   errNS          = false,&lt;br /&gt;
   errDoubled     = { en = &amp;quot;Doubled:&amp;quot;,&lt;br /&gt;
                      de = &amp;quot;Doppelangabe:&amp;quot; },&lt;br /&gt;
   errInvalid     = { en = &amp;quot;Invalid:&amp;quot;,&lt;br /&gt;
                      de = &amp;quot;Ungültig:&amp;quot; },&lt;br /&gt;
   errMissing     = { en = &amp;quot;Missing parameter&amp;quot;,&lt;br /&gt;
                      de = &amp;quot;Parameter fehlt&amp;quot; },&lt;br /&gt;
   errUnkown      = { en = &amp;quot;Unkown parameter:&amp;quot;,&lt;br /&gt;
                      de = &amp;quot;Parameter unbekannt:&amp;quot; },&lt;br /&gt;
   iast           = { class = &amp;quot;IAST&amp;quot;,&lt;br /&gt;
                      lang = { as = true,&lt;br /&gt;
                               bn = true,&lt;br /&gt;
                               gu = true,&lt;br /&gt;
                               hi = true,&lt;br /&gt;
                               kn = true,&lt;br /&gt;
                               kok = true,&lt;br /&gt;
                               ks = true,&lt;br /&gt;
                               mai = true,&lt;br /&gt;
                               ml = true,&lt;br /&gt;
                               mr = true,&lt;br /&gt;
                               ne = true,&lt;br /&gt;
                               [&amp;quot;or&amp;quot;] = true,&lt;br /&gt;
                               pa = true,&lt;br /&gt;
                               sa = true,&lt;br /&gt;
                               sd = true,&lt;br /&gt;
                               ta = true,&lt;br /&gt;
                               te = true,&lt;br /&gt;
                               ur = true,&lt;br /&gt;
                               und = true },&lt;br /&gt;
                      support = &amp;quot;International Alphabet of Sanskrit Transliteration&amp;quot; },&lt;br /&gt;
   ipa            = &amp;quot;IPA&amp;quot;,&lt;br /&gt;
   params         = { &amp;quot;Text1&amp;quot;,&lt;br /&gt;
                      &amp;quot;Audio&amp;quot;,&lt;br /&gt;
                      &amp;quot;IPA&amp;quot;,&lt;br /&gt;
                      &amp;quot;class&amp;quot;,&lt;br /&gt;
                      &amp;quot;style&amp;quot;,&lt;br /&gt;
                      &amp;quot;nachgestellt&amp;quot;,&lt;br /&gt;
                      &amp;quot;demo&amp;quot;,&lt;br /&gt;
                      &amp;quot;NoCat&amp;quot; },&lt;br /&gt;
   percents       = { Arab = 120,&lt;br /&gt;
                      Hebr = 115 },&lt;br /&gt;
   orderOther     = { grc = 1,&lt;br /&gt;
                      hbo = 2,&lt;br /&gt;
                      la  = 3,&lt;br /&gt;
                      en  = 9 },&lt;br /&gt;
   owns           = { de = &amp;quot;&amp;amp;#8218;%s&amp;amp;#8216;&amp;quot; },&lt;br /&gt;
   tmplAudio      = false,    -- template for media player link&lt;br /&gt;
   tmplOtherLang  = false,    -- template for otherLanguaguage link&lt;br /&gt;
   transcriptions =&lt;br /&gt;
       { Arab = { en = &amp;quot;[[Arabic alphabet|arabic]]&amp;quot;,&lt;br /&gt;
                  de = &amp;quot;[[Arabisches Alphabet|arabisch]]&amp;quot; },&lt;br /&gt;
         Cyrl = { en = &amp;quot;[[Cyrillic alphabets|cyrillic]]&amp;quot;,&lt;br /&gt;
                  de = &amp;quot;[[Kyrillisches Alphabet|kyrillisch]]&amp;quot; }&lt;br /&gt;
       }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function Fetch( ask )&lt;br /&gt;
    -- Fetch module&lt;br /&gt;
    -- Parameter:&lt;br /&gt;
    --     ask  -- string, with name&lt;br /&gt;
    --                     &amp;quot;Multilingual&amp;quot;&lt;br /&gt;
    --                     &amp;quot;TemplUtl&amp;quot;&lt;br /&gt;
    -- Returns string, with error message, if not available&lt;br /&gt;
    local r&lt;br /&gt;
    if type( Config[ ask ] ) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
        local lucky, g = pcall( require, &amp;quot;Module:&amp;quot; .. ask )&lt;br /&gt;
        if type( g ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
            g = g[ ask ]&lt;br /&gt;
            if type( g ) == &amp;quot;function&amp;quot; then&lt;br /&gt;
                Config[ ask ] = g()&lt;br /&gt;
            end&lt;br /&gt;
            g = false&lt;br /&gt;
        else&lt;br /&gt;
            g = false&lt;br /&gt;
        end&lt;br /&gt;
        if type( Config[ ask ] ) ~= &amp;quot;table&amp;quot; then&lt;br /&gt;
            if not g then&lt;br /&gt;
                g = &amp;quot;Invalid library *** Module:&amp;quot; .. ask&lt;br /&gt;
            end&lt;br /&gt;
            g = mw.html.create( &amp;quot;span&amp;quot; )&lt;br /&gt;
                       :attr( &amp;quot;class&amp;quot;, &amp;quot;error&amp;quot; )&lt;br /&gt;
                       :wikitext( g )&lt;br /&gt;
            r = tostring( g )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- Fetch()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function facet( assign )&lt;br /&gt;
    -- Format language name&lt;br /&gt;
    --     apply  -- string, with language name, might be linked&lt;br /&gt;
    -- Returns string&lt;br /&gt;
    local e = mw.html.create( &amp;quot;span&amp;quot; )&lt;br /&gt;
                     :css( { [&amp;quot;font-style&amp;quot;]  = &amp;quot;normal&amp;quot;,&lt;br /&gt;
                             [&amp;quot;font-weight&amp;quot;] = &amp;quot;normal&amp;quot; } )&lt;br /&gt;
                     :wikitext( assign )&lt;br /&gt;
    return tostring( e )&lt;br /&gt;
end -- facet()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function facility()&lt;br /&gt;
    -- Fetch current site language&lt;br /&gt;
    -- Returns language code&lt;br /&gt;
    if not Config.standard then&lt;br /&gt;
        Config.standard = mw.language.getContentLanguage():getCode()&lt;br /&gt;
    end&lt;br /&gt;
    return Config.standard&lt;br /&gt;
end -- facility()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function factory( apply )&lt;br /&gt;
    -- Localization of messages&lt;br /&gt;
    --     apply  -- string, with message key&lt;br /&gt;
    -- Returns message text; at least english&lt;br /&gt;
    local r&lt;br /&gt;
    entry = Config[ apply ]&lt;br /&gt;
    if entry then&lt;br /&gt;
        r = entry[ facility() ]&lt;br /&gt;
        if not r then&lt;br /&gt;
            r = entry.en&lt;br /&gt;
        end&lt;br /&gt;
    else&lt;br /&gt;
        r = string.format( &amp;quot;&amp;lt;span class=\&amp;quot;error\&amp;quot;&amp;gt;????.%s.????&amp;lt;/span&amp;gt;&amp;quot;,&lt;br /&gt;
                           apply )&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- factory()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function faculty( adjust )&lt;br /&gt;
    -- Test template arg for boolean&lt;br /&gt;
    --     adjust  -- string or nil&lt;br /&gt;
    -- Returns boolean&lt;br /&gt;
    local s = type( adjust )&lt;br /&gt;
    local r&lt;br /&gt;
    if s == &amp;quot;string&amp;quot; then&lt;br /&gt;
        r = mw.text.trim( adjust )&lt;br /&gt;
        r = ( r ~= &amp;quot;&amp;quot;  and  r ~= &amp;quot;0&amp;quot; )&lt;br /&gt;
    elseif s == &amp;quot;boolean&amp;quot; then&lt;br /&gt;
        r = adjust&lt;br /&gt;
    else&lt;br /&gt;
        r = false&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- faculty()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function family()&lt;br /&gt;
    -- attempt to load local config&lt;br /&gt;
    if not Config.data then&lt;br /&gt;
        local lucky, sub&lt;br /&gt;
        if not Config.frame then&lt;br /&gt;
            Config.frame = mw.getCurrentFrame()&lt;br /&gt;
        end&lt;br /&gt;
        sub = string.format( &amp;quot;%s/config&amp;quot;, Config.frame:getTitle() )&lt;br /&gt;
        lucky, Config.data = pcall( mw.loadData, sub )&lt;br /&gt;
        if type( Config.data ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
            for k, v in pairs( Config.data ) do&lt;br /&gt;
                Config[ k ] = v&lt;br /&gt;
            end -- for k, v&lt;br /&gt;
        else&lt;br /&gt;
            Config.data = sub .. &amp;quot; not found&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end -- family()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function fault( alert, about )&lt;br /&gt;
    -- Format message with class=&amp;quot;error&amp;quot; or similar&lt;br /&gt;
    --     alert  -- string, with message key&lt;br /&gt;
    --     about  -- string, with explanation&lt;br /&gt;
    -- Returns message with markup&lt;br /&gt;
    local story = factory( alert )&lt;br /&gt;
    local err   = mw.html.create( &amp;quot;span&amp;quot; )&lt;br /&gt;
    local r&lt;br /&gt;
    err:addClass( Config.errClass )&lt;br /&gt;
       :css( { [&amp;quot;margin-left&amp;quot;]  = &amp;quot;1em&amp;quot;,&lt;br /&gt;
               [&amp;quot;margin-right&amp;quot;] = &amp;quot;1em&amp;quot; } )&lt;br /&gt;
    family()&lt;br /&gt;
    if not Config.frame then&lt;br /&gt;
        Config.frame = mw.getCurrentFrame()&lt;br /&gt;
    end&lt;br /&gt;
    story = string.format( &amp;quot;[[%s]] &amp;amp;#8211; %s&amp;quot;,&lt;br /&gt;
                           Config.frame:getParent():getTitle(),&lt;br /&gt;
                           story )&lt;br /&gt;
    if about then&lt;br /&gt;
        story = string.format( &amp;quot;%s %s&amp;quot;, story, about )&lt;br /&gt;
    end&lt;br /&gt;
    if Config.errClasses then&lt;br /&gt;
        err:addClass( Config.errClasses )&lt;br /&gt;
    end&lt;br /&gt;
    err:wikitext( story )&lt;br /&gt;
    r = Fetch( &amp;quot;TemplUtl&amp;quot; )&lt;br /&gt;
    if Config.TemplUtl then&lt;br /&gt;
        r = Config.TemplUtl.failure( tostring( err ),&lt;br /&gt;
                                     not Config.errHide )&lt;br /&gt;
    end&lt;br /&gt;
    if type( Config.errCat ) == &amp;quot;string&amp;quot; then&lt;br /&gt;
        if Config.errNS then&lt;br /&gt;
            local ns = mw.title.getCurrentTitle().namespace&lt;br /&gt;
            local st = type( Config.errNS )&lt;br /&gt;
            if st == &amp;quot;string&amp;quot; then&lt;br /&gt;
                local space  = string.format( &amp;quot;.*%%s%d%%s.*&amp;quot;, ns )&lt;br /&gt;
                local spaces = string.format( &amp;quot; %s &amp;quot;, Config.errNS )&lt;br /&gt;
                if spaces:match( space ) then&lt;br /&gt;
                    Config.errNS = false&lt;br /&gt;
                end&lt;br /&gt;
            elseif st == &amp;quot;table&amp;quot; then&lt;br /&gt;
                for i = 1, #Config.errNS do&lt;br /&gt;
                    if Config.errNS[ i ] == ns then&lt;br /&gt;
                        Config.errNS = false&lt;br /&gt;
                        break    -- for i&lt;br /&gt;
                    end&lt;br /&gt;
                end -- for i&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if not Config.errNS then&lt;br /&gt;
            r = string.format( &amp;quot;%s[[Category:%s]]&amp;quot;, r, Config.errCat )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- fault()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function fiast( apply )&lt;br /&gt;
    -- Link to IAST if supported&lt;br /&gt;
    --     apply     -- string, with text&lt;br /&gt;
    -- Returns string&lt;br /&gt;
    local r = apply&lt;br /&gt;
    if Config.iast.support then&lt;br /&gt;
        r = string.format( &amp;quot;[[%s|%s]]&amp;quot;, Config.iast.support, r )&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- fiast()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function foreign( apply, acquire, advanced )&lt;br /&gt;
    -- Format text in some language&lt;br /&gt;
    --     apply     -- string, with text&lt;br /&gt;
    --     acquire   -- string, with basic code of language&lt;br /&gt;
    --     advanced  -- string, with full code of language&lt;br /&gt;
    -- Returns string, starting with comma&lt;br /&gt;
    local story = apply&lt;br /&gt;
    local ltr, r&lt;br /&gt;
    if advanced == acquire then&lt;br /&gt;
        ltr = not mw.language.new( acquire ):isRTL()&lt;br /&gt;
    else&lt;br /&gt;
        ltr = not ( advanced:match( &amp;quot;-Arab$&amp;quot; )  or&lt;br /&gt;
                    advanced:match( &amp;quot;-Hebr$&amp;quot; ) )&lt;br /&gt;
    end&lt;br /&gt;
    if ltr then&lt;br /&gt;
        local e = mw.html.create( &amp;quot;span&amp;quot; )&lt;br /&gt;
                         :attr( &amp;quot;lang&amp;quot;, advanced )&lt;br /&gt;
        local p = { [&amp;quot;font-weight&amp;quot;] = &amp;quot;normal&amp;quot; }&lt;br /&gt;
        local s = &amp;quot;normal&amp;quot;&lt;br /&gt;
        if acquire == Config.standard&lt;br /&gt;
           and Config.owns[ acquire ]  then&lt;br /&gt;
            story = string.format( Config.owns[ acquire ], apply )&lt;br /&gt;
        elseif advanced == acquire  or&lt;br /&gt;
               advanced == acquire .. &amp;quot;-Latn&amp;quot; then&lt;br /&gt;
            s = &amp;quot;italic&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        p[&amp;quot;font-style&amp;quot;] = s&lt;br /&gt;
        e:css( p )&lt;br /&gt;
         :wikitext( story )&lt;br /&gt;
        r = tostring( e )&lt;br /&gt;
    else&lt;br /&gt;
        r = frame():expandTemplate{ title = advanced,&lt;br /&gt;
                                    args  = { [1] = apply } }&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- foreign()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function foreigns( aliens )&lt;br /&gt;
    -- Create list of translations&lt;br /&gt;
    --     aliens  -- sequence table, with assignment tables&lt;br /&gt;
    -- Returns string, starting with comma&lt;br /&gt;
    local r = &amp;quot;&amp;quot;&lt;br /&gt;
    local pars = { }&lt;br /&gt;
    local s, t&lt;br /&gt;
    family()&lt;br /&gt;
    facility()&lt;br /&gt;
    Fetch( &amp;quot;Multilingual&amp;quot; )&lt;br /&gt;
    for i = 1, #aliens do&lt;br /&gt;
        t = aliens[ i ]&lt;br /&gt;
        if t.short == Config.standard then&lt;br /&gt;
            t.n = 0&lt;br /&gt;
        else&lt;br /&gt;
            local o = Config.orderOther[ t.short ]&lt;br /&gt;
            if o then&lt;br /&gt;
                t.n = o&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end -- for i&lt;br /&gt;
    table.sort( aliens,&lt;br /&gt;
                function ( a1, a2 )&lt;br /&gt;
                    return ( a1.n &amp;lt; a2.n )&lt;br /&gt;
                end )&lt;br /&gt;
    if not Config.frame then&lt;br /&gt;
        Config.frame = mw.getCurrentFrame()&lt;br /&gt;
    end&lt;br /&gt;
    for i = 1, #aliens do&lt;br /&gt;
        t = aliens[ i ]&lt;br /&gt;
        if Config.tmplOtherLang and t.n &amp;gt; 0 then&lt;br /&gt;
            s = string.format( Config.tmplOtherLang.namePat, t.short )&lt;br /&gt;
            pars[ Config.tmplOtherLang.textpar ] = t.story&lt;br /&gt;
            s = Config.frame:expandTemplate{ title = s,&lt;br /&gt;
                                             args  = pars }&lt;br /&gt;
        else&lt;br /&gt;
            s = mw.language.fetchLanguageName( t.short, Config.standard )&lt;br /&gt;
            if Config.Multilingual  and&lt;br /&gt;
               Config.Multilingual.isMinusculable( s ) then&lt;br /&gt;
                s = mw.ustring.lower( mw.ustring.sub( s, 1, 1 ) )&lt;br /&gt;
                    .. mw.ustring.sub( s, 2 )&lt;br /&gt;
            end&lt;br /&gt;
            s = string.format( &amp;quot;%s %s&amp;quot;,&lt;br /&gt;
                               facet( s ),&lt;br /&gt;
                               foreign( t.story, t.short, t.slang ) )&lt;br /&gt;
        end&lt;br /&gt;
        r = string.format( &amp;quot;%s, %s&amp;quot;, r, s )&lt;br /&gt;
    end -- for i&lt;br /&gt;
    return r&lt;br /&gt;
end -- foreigns()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function frame()&lt;br /&gt;
    -- Fetch current frame&lt;br /&gt;
    -- Returns frame&lt;br /&gt;
    if not Config.frame then&lt;br /&gt;
        Config.frame = mw.getCurrentFrame()&lt;br /&gt;
    end&lt;br /&gt;
    return Config.frame&lt;br /&gt;
end -- frame()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function frontend( action, argsF, argsT, about )&lt;br /&gt;
    -- Template service&lt;br /&gt;
    --     action  -- string, &amp;quot;flat&amp;quot; or &amp;quot;full&amp;quot; etc.&lt;br /&gt;
    --     argsF   -- table, with #invoke parameters, or false&lt;br /&gt;
    --     argsT   -- table, with template parameters&lt;br /&gt;
    --     about   -- string or nil, invocation name&lt;br /&gt;
    -- Returns frame&lt;br /&gt;
    local lucky, r&lt;br /&gt;
    lucky, r = pcall( Export[ action ], argsF, argsT )&lt;br /&gt;
    if not lucky then&lt;br /&gt;
        local e = mw.html.create( &amp;quot;span&amp;quot; )&lt;br /&gt;
                         :attr( &amp;quot;class&amp;quot;, &amp;quot;error&amp;quot; )&lt;br /&gt;
        if about then&lt;br /&gt;
            r = string.format( &amp;quot;&amp;amp;#123;{%s}&amp;amp;#125; %s&amp;quot;,  about,  r )&lt;br /&gt;
        end&lt;br /&gt;
        e:wikitext( r )&lt;br /&gt;
        r = tostring( e )&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- frontend()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function frontier( frame, action )&lt;br /&gt;
    -- Template transclusion&lt;br /&gt;
    --     frame   -- object&lt;br /&gt;
    --     action  -- string, &amp;quot;flat&amp;quot; or &amp;quot;full&amp;quot; etc.&lt;br /&gt;
    -- Returns appropriate string&lt;br /&gt;
    Config.frame = frame&lt;br /&gt;
    return frontend( action,&lt;br /&gt;
                     frame.args,&lt;br /&gt;
                     frame:getParent().args,&lt;br /&gt;
                     frame:getTitle() )&lt;br /&gt;
end -- frontier()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function full( arglist )&lt;br /&gt;
    -- Invocation of template&lt;br /&gt;
    --     arglist  -- table, with parameters&lt;br /&gt;
    -- Returns appropriate string&lt;br /&gt;
    local r&lt;br /&gt;
    if arglist.Text1 then&lt;br /&gt;
        local slang = Config.slang&lt;br /&gt;
        local params, s&lt;br /&gt;
        if Config.scripting == &amp;quot;Latn&amp;quot; then&lt;br /&gt;
            if slang == facility() then&lt;br /&gt;
                arglist.style = false&lt;br /&gt;
            elseif not arglist.style then&lt;br /&gt;
                arglist.style = &amp;quot;font-style:italic&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
            if arglist.Text2 then&lt;br /&gt;
                arglist.Text2 = fault( &amp;quot;errInvalid&amp;quot;, &amp;quot;Latn+2=&amp;quot; )&lt;br /&gt;
            end&lt;br /&gt;
        elseif not Config.low  and  not arglist.style then&lt;br /&gt;
            arglist.style = &amp;quot;font-style:normal&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        if Config.state then&lt;br /&gt;
            slang = string.format( &amp;quot;%s-%s&amp;quot;, slang, Config.state )&lt;br /&gt;
        end&lt;br /&gt;
        if Config.scripting then&lt;br /&gt;
            slang = string.format( &amp;quot;%s-%s&amp;quot;, slang, Config.scripting )&lt;br /&gt;
        end&lt;br /&gt;
        r = Export.format( slang,&lt;br /&gt;
                           arglist.Text1,&lt;br /&gt;
                           arglist.style,&lt;br /&gt;
                           arglist.Audio,&lt;br /&gt;
                           arglist.class )&lt;br /&gt;
        if arglist.Text2 then&lt;br /&gt;
            params = { lang  = string.format( &amp;quot;%s-Latn&amp;quot;,&lt;br /&gt;
                                              Config.slang ),&lt;br /&gt;
                       style = &amp;quot;font-style:italic&amp;quot; }&lt;br /&gt;
            s = mw.text.tag( &amp;quot;span&amp;quot;, params, arglist.Text2 )&lt;br /&gt;
            r = string.format( &amp;quot;%s %s&amp;quot;, r, s )&lt;br /&gt;
        end&lt;br /&gt;
        if arglist.sanskrit then&lt;br /&gt;
            params = { lang  = string.format( &amp;quot;%s-Latn&amp;quot;,&lt;br /&gt;
                                              Config.slang ),&lt;br /&gt;
                       style = &amp;quot;font-style:italic&amp;quot; }&lt;br /&gt;
            if Config.iast.class then&lt;br /&gt;
                params.class = Config.iast.class&lt;br /&gt;
            end&lt;br /&gt;
            s = arglist.sanskrit&lt;br /&gt;
            if arglist.Text2 then&lt;br /&gt;
                r = string.format( &amp;quot;%s, %s: &amp;quot;, r, fiast( &amp;quot;IAST&amp;quot; ) )&lt;br /&gt;
            else&lt;br /&gt;
                r = r .. &amp;quot; &amp;quot;&lt;br /&gt;
                s = fiast( s )&lt;br /&gt;
            end&lt;br /&gt;
            r = r .. mw.text.tag( &amp;quot;span&amp;quot;, params, s )&lt;br /&gt;
        end&lt;br /&gt;
        if not Config.low then&lt;br /&gt;
            if Config.scripting then&lt;br /&gt;
                s = arglist[ Config.scripting ]&lt;br /&gt;
                if s  and&lt;br /&gt;
                   faculty( s )  and&lt;br /&gt;
                   not arglist.Text2  and&lt;br /&gt;
                   Config.transcriptions[ Config.scripting ] then&lt;br /&gt;
                    s = facility()&lt;br /&gt;
                    s = Config.transcriptions[ Config.scripting ][ s ]&lt;br /&gt;
                elseif Config.service then&lt;br /&gt;
                    s = facet( Config.service )&lt;br /&gt;
                else&lt;br /&gt;
                    s = &amp;quot;&amp;quot;&lt;br /&gt;
                end&lt;br /&gt;
            else&lt;br /&gt;
                s = Config.service or &amp;quot;&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
            if arglist.later then&lt;br /&gt;
                r = string.format( &amp;quot;%s (%s)&amp;quot;, r, s )&lt;br /&gt;
            else&lt;br /&gt;
                r = string.format( &amp;quot;%s %s&amp;quot;, s, r )&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if arglist.IPA then&lt;br /&gt;
            params = { [1] = arglist.IPA }&lt;br /&gt;
            s = frame():expandTemplate{ title = Config.ipa,&lt;br /&gt;
                                        args  = params }&lt;br /&gt;
            r = string.format( &amp;quot;%s [%s]&amp;quot;, r, s )&lt;br /&gt;
        end&lt;br /&gt;
        if arglist.trsl then&lt;br /&gt;
            r = r .. foreigns( arglist.trsl )&lt;br /&gt;
        end&lt;br /&gt;
    elseif arglist.Text2 then&lt;br /&gt;
        r = fault( &amp;quot;errInvalid&amp;quot;, &amp;quot;2=&amp;quot; )&lt;br /&gt;
    else&lt;br /&gt;
        if Config.sole then&lt;br /&gt;
            r = Config.sole&lt;br /&gt;
        else&lt;br /&gt;
            r = Config.service&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- full()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function furnish( argsF, argsT )&lt;br /&gt;
    -- General entry point; basic argument consumption&lt;br /&gt;
    --     argsF  -- table, with #invoke parameters, or false&lt;br /&gt;
    --     argsT  -- table, with template parameters&lt;br /&gt;
    -- Returns appropriate string&lt;br /&gt;
    local r = { }&lt;br /&gt;
    local s&lt;br /&gt;
    if argsF then&lt;br /&gt;
        if argsF.errHide ~= nil then&lt;br /&gt;
            Config.errHide = faculty( argsF.errHide )&lt;br /&gt;
        end&lt;br /&gt;
        Config.errCat     = argsF.errCat&lt;br /&gt;
        Config.errClasses = argsF.errClasses&lt;br /&gt;
        Config.errNS      = argsF.errNS&lt;br /&gt;
        if argsF.SUITABLE then&lt;br /&gt;
            local params = mw.text.split( argsF.SUITABLE, &amp;quot; &amp;quot;, true )&lt;br /&gt;
            for k, v in pairs( params ) do&lt;br /&gt;
                table.insert( Config.params, v )&lt;br /&gt;
            end -- for k, v&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if Config.scripting == &amp;quot;&amp;quot; then&lt;br /&gt;
        Config.scripting = false&lt;br /&gt;
    end&lt;br /&gt;
    if Config.scripting then&lt;br /&gt;
        table.insert( Config.params, Config.scripting )&lt;br /&gt;
    end&lt;br /&gt;
    if type( argsT ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
        local n = table.maxn( Config.params )&lt;br /&gt;
        local unknown&lt;br /&gt;
        for k, v in pairs( argsT ) do&lt;br /&gt;
            s = type( k )&lt;br /&gt;
            if s == &amp;quot;number&amp;quot; then&lt;br /&gt;
                if Config.low then&lt;br /&gt;
                    k = k - 1&lt;br /&gt;
                end&lt;br /&gt;
                if k &amp;lt;= 2 then&lt;br /&gt;
                    if k == 0 then&lt;br /&gt;
                        k = false&lt;br /&gt;
                    else&lt;br /&gt;
                        v = mw.text.trim( v )&lt;br /&gt;
                        if v == &amp;quot;&amp;quot; then&lt;br /&gt;
                            v = false&lt;br /&gt;
                        end&lt;br /&gt;
                        if k == 1 then&lt;br /&gt;
                            r.Text1 = v&lt;br /&gt;
                            k       = false&lt;br /&gt;
                        elseif Config.scripting == &amp;quot;Latn&amp;quot; then&lt;br /&gt;
                            k = &amp;quot;2&amp;quot;&lt;br /&gt;
                        else&lt;br /&gt;
                            r.Text2 = v&lt;br /&gt;
                            k       = false&lt;br /&gt;
                        end&lt;br /&gt;
                    end&lt;br /&gt;
                else&lt;br /&gt;
                    k = tostring( k )&lt;br /&gt;
                end&lt;br /&gt;
            elseif k:match( &amp;quot;^%l%l%l?-?&amp;quot; ) then&lt;br /&gt;
                s = k:match( &amp;quot;^(%l%l%l?)$&amp;quot; )  or&lt;br /&gt;
                    k:match( &amp;quot;^(%l%l%l?)-%u%u$&amp;quot; )  or&lt;br /&gt;
                    k:match( &amp;quot;^(%l%l%l?)-%u%l%l%l$&amp;quot; )&lt;br /&gt;
                v = mw.text.trim( v )&lt;br /&gt;
                if v == &amp;quot;&amp;quot; then&lt;br /&gt;
                    v = false&lt;br /&gt;
                end&lt;br /&gt;
                if v  and  s  and&lt;br /&gt;
                   s ~= Config.slang  and&lt;br /&gt;
                   mw.language.isSupportedLanguage( s ) then&lt;br /&gt;
                    if not r.trsl then&lt;br /&gt;
                        r.trsl = { }&lt;br /&gt;
                    end&lt;br /&gt;
                    table.insert( r.trsl,&lt;br /&gt;
                                  { n     = #r.trsl + 10,&lt;br /&gt;
                                    short = s,&lt;br /&gt;
                                    slang = k,&lt;br /&gt;
                                    story = v } )&lt;br /&gt;
                    k = false&lt;br /&gt;
                end&lt;br /&gt;
            elseif k == &amp;quot;IAST&amp;quot; then&lt;br /&gt;
                if Config.iast.lang[ Config.slang ] then&lt;br /&gt;
                    v = mw.text.trim( v )&lt;br /&gt;
                    if v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                        r.sanskrit = v&lt;br /&gt;
                    end&lt;br /&gt;
                    k = false&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            if k then&lt;br /&gt;
                for i = 1, n do&lt;br /&gt;
                    if Config.params[ i ] == k then&lt;br /&gt;
                        if v ~= &amp;quot;&amp;quot; then&lt;br /&gt;
                            r[ k ] = v&lt;br /&gt;
                        end&lt;br /&gt;
                        k = false&lt;br /&gt;
                        break -- for i&lt;br /&gt;
                    end&lt;br /&gt;
                end -- for i&lt;br /&gt;
            end&lt;br /&gt;
            if k then&lt;br /&gt;
                if not unknown then&lt;br /&gt;
                    unknown = { }&lt;br /&gt;
                end&lt;br /&gt;
                table.insert( unknown, k )&lt;br /&gt;
            end&lt;br /&gt;
        end -- for k, v&lt;br /&gt;
        if r.demo  or  faculty( r.NoCat ) then&lt;br /&gt;
            Config.errCat  = 0&lt;br /&gt;
            Config.errHide = false&lt;br /&gt;
        end&lt;br /&gt;
        r.later = faculty( r.nachgestellt )&lt;br /&gt;
        if r.b and Config[ &amp;quot;OBSOLETING-bw&amp;quot; ] then&lt;br /&gt;
            if r.de then&lt;br /&gt;
                r = fault( &amp;quot;errDoubled&amp;quot;, &amp;quot;'de=' und 'b='&amp;quot; )&lt;br /&gt;
            else&lt;br /&gt;
                r.de = r.b&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if unknown then&lt;br /&gt;
            r = string.format( &amp;quot;'&amp;lt;code&amp;gt;%s&amp;lt;/code&amp;gt;'&amp;quot;,&lt;br /&gt;
                               table.concat( unknown, &amp;quot; &amp;quot; ) )&lt;br /&gt;
            r = fault( &amp;quot;errUnkown&amp;quot;, r )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if type( r ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
        r = full( r )&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- furnish()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Export.failsafe = function ( assert )&lt;br /&gt;
    local r&lt;br /&gt;
    if not assert  or  assert &amp;lt;= Export.serial then&lt;br /&gt;
        r = Export.serial&lt;br /&gt;
    else&lt;br /&gt;
        r = false&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- Export.failsafe()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Export.flat = function ( argsF, argsT, auxilary )&lt;br /&gt;
    -- Invocation of basic language template&lt;br /&gt;
    --     argsF     -- table, with #invoke parameters, or false&lt;br /&gt;
    --     argsT     -- table, with template parameters&lt;br /&gt;
    --     auxilary  -- Multilingual library, or false&lt;br /&gt;
    -- Returns appropriate string&lt;br /&gt;
    local r&lt;br /&gt;
    if type( auxilary ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
        Config.Multilingual = auxilary&lt;br /&gt;
    else&lt;br /&gt;
        r = Fetch( &amp;quot;Multilingual&amp;quot; )&lt;br /&gt;
    end&lt;br /&gt;
    if Config.Multilingual then&lt;br /&gt;
        local slang = argsT[ 1 ]&lt;br /&gt;
        local show  = argsT[ 2 ]&lt;br /&gt;
        if slang then&lt;br /&gt;
            slang = mw.text.trim( slang )&lt;br /&gt;
            if slang == &amp;quot;&amp;quot; then&lt;br /&gt;
                slang = false&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if show then&lt;br /&gt;
            show = mw.text.trim( show )&lt;br /&gt;
            if show == &amp;quot;&amp;quot; then&lt;br /&gt;
                show = false&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if slang and show then&lt;br /&gt;
            local q = Config.Multilingual.getLang( slang )&lt;br /&gt;
            if q then&lt;br /&gt;
                Config.low       = true&lt;br /&gt;
                Config.slang     = q.base&lt;br /&gt;
                Config.state     = q.region&lt;br /&gt;
                Config.scripting = q.script&lt;br /&gt;
                r = furnish( argsF, argsT )&lt;br /&gt;
            else&lt;br /&gt;
                local e = mw.html.create( &amp;quot;span&amp;quot; )&lt;br /&gt;
                                 :attr( &amp;quot;lang&amp;quot;, slang )&lt;br /&gt;
                                 :wikitext( show )&lt;br /&gt;
                r = tostring( e )&lt;br /&gt;
            end&lt;br /&gt;
        else&lt;br /&gt;
            r = fault( &amp;quot;errMissing&amp;quot; )&lt;br /&gt;
            if show then&lt;br /&gt;
                r = show .. r&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- Export.flat()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Export.fold = function ( argsF, argsT )&lt;br /&gt;
    -- Invocation of RTL template&lt;br /&gt;
    --     argsF  -- table, with #invoke parameters, or false&lt;br /&gt;
    --     argsT  -- table, with template parameters&lt;br /&gt;
    -- Returns appropriate string, or nil&lt;br /&gt;
    local params = { argsT[ 1 ], argsT[ 2 ] }&lt;br /&gt;
    local r, s&lt;br /&gt;
    for i = 1, 2 do&lt;br /&gt;
        if params[ i ] then&lt;br /&gt;
            params[ i ] = mw.text.trim( params[ i ] )&lt;br /&gt;
            if params[ i ] == &amp;quot;&amp;quot; then&lt;br /&gt;
                params[ i ] = false&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end -- for i&lt;br /&gt;
    if params[ 2 ] then&lt;br /&gt;
        s = params[ 2 ]:gsub( mw.ustring.char( 8206 ), &amp;quot;&amp;amp;lrm;&amp;quot; )&lt;br /&gt;
                       :gsub( &amp;quot;&amp;amp;#0*8206;&amp;quot;,             &amp;quot;&amp;amp;lrm;&amp;quot; )&lt;br /&gt;
                       :gsub( &amp;quot;&amp;amp;#x0*200[Ee];&amp;quot;,         &amp;quot;&amp;amp;lrm;&amp;quot; )&lt;br /&gt;
                       :gsub( mw.ustring.char( 8207 ), &amp;quot;&amp;amp;rlm;&amp;quot; )&lt;br /&gt;
                       :gsub( &amp;quot;&amp;amp;#0*8207;&amp;quot;,             &amp;quot;&amp;amp;rlm;&amp;quot; )&lt;br /&gt;
                       :gsub( &amp;quot;&amp;amp;#x0*200[Ff];&amp;quot;,         &amp;quot;&amp;amp;rlm;&amp;quot; )&lt;br /&gt;
        if s:find( &amp;quot;&amp;amp;&amp;quot;, 1, true ) then&lt;br /&gt;
            local shift = &amp;quot;^&amp;amp;rlm;%s*&amp;quot;&lt;br /&gt;
            while s:match( shift ) do&lt;br /&gt;
                s = s:gsub( shift, &amp;quot;&amp;quot; )&lt;br /&gt;
            end -- while&lt;br /&gt;
            shift = &amp;quot;%s*&amp;amp;lrm;$&amp;quot;&lt;br /&gt;
            while s:match( shift ) do&lt;br /&gt;
                s = s:gsub( shift, &amp;quot;&amp;quot; )&lt;br /&gt;
            end -- while&lt;br /&gt;
            if s == &amp;quot;&amp;quot; then&lt;br /&gt;
                s = false&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    if s then&lt;br /&gt;
        local bdi = mw.html.create( &amp;quot;bdi&amp;quot; )&lt;br /&gt;
                           :attr( &amp;quot;dir&amp;quot;, &amp;quot;rtl&amp;quot; )&lt;br /&gt;
                           :attr( &amp;quot;lang&amp;quot;,  params[ 1 ] or &amp;quot;ar&amp;quot; )&lt;br /&gt;
                           :css( &amp;quot;unicode-bidi&amp;quot;, &amp;quot;isolate&amp;quot; )&lt;br /&gt;
                           :wikitext( s )&lt;br /&gt;
        local bdo = mw.html.create( &amp;quot;bdo&amp;quot; )&lt;br /&gt;
                           :attr( &amp;quot;dir&amp;quot;, &amp;quot;ltr&amp;quot; )&lt;br /&gt;
                           :node( bdi )&lt;br /&gt;
        if argsT.class  and  argsT.class ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            bdi:addClass( argsT.class )&lt;br /&gt;
        end&lt;br /&gt;
        if argsT.style  and  argsT.style ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            bdi:cssText( argsT.style )&lt;br /&gt;
        end&lt;br /&gt;
        r = tostring( bdo )&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- Export.fold()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Export.format = function ( alien, apply, appear, audio, alike )&lt;br /&gt;
    -- Markup foreign language text&lt;br /&gt;
    --     alien   -- string, with language code&lt;br /&gt;
    --     apply   -- string, with text&lt;br /&gt;
    --     appear  -- string, with additional CSS, or nil&lt;br /&gt;
    --     audio   -- string, with title of an audio file, or nil&lt;br /&gt;
    --     alike   -- string, with additional class(es), or nil&lt;br /&gt;
    -- Returns appropriate string with HTML tag&lt;br /&gt;
    local params   = { lang = alien }&lt;br /&gt;
    local r&lt;br /&gt;
    if appear then&lt;br /&gt;
        params.style = appear&lt;br /&gt;
    end&lt;br /&gt;
    if alike then&lt;br /&gt;
        params.class = alike&lt;br /&gt;
    end&lt;br /&gt;
    r = mw.text.tag( &amp;quot;span&amp;quot;, params, apply )&lt;br /&gt;
    family()&lt;br /&gt;
    if audio and Config.tmplAudio then&lt;br /&gt;
        params = { [ Config.tmplAudio.filepar ] = audio,&lt;br /&gt;
                   [ Config.tmplAudio.textpar ] = r }&lt;br /&gt;
        r = frame():expandTemplate{ title = Config.tmplAudio.title,&lt;br /&gt;
                                    args  = params }&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- Export.format()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Export.full = function ( argsF, argsT )&lt;br /&gt;
    -- Invocation of language name template&lt;br /&gt;
    --     argsF  -- table, with #invoke parameters, or false&lt;br /&gt;
    --     argsT  -- table, with template parameters&lt;br /&gt;
    -- Returns appropriate string&lt;br /&gt;
    if argsF then&lt;br /&gt;
        Config.long      = faculty( argsF.LONG )&lt;br /&gt;
        Config.scripting = argsF.SCRIPTING&lt;br /&gt;
        Config.service   = argsF.SERVICE&lt;br /&gt;
        Config.slang     = argsF.CODE&lt;br /&gt;
        Config.sole      = argsF.SOLE&lt;br /&gt;
        if Config[&amp;quot;OBSOLETING-bw&amp;quot;] then&lt;br /&gt;
            table.insert( Config.params, &amp;quot;b&amp;quot; )&lt;br /&gt;
            table.insert( Config.params, &amp;quot;w&amp;quot; )&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    Config.low = false&lt;br /&gt;
    return furnish( argsF, argsT )&lt;br /&gt;
end -- Export.full()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Export&lt;br /&gt;
local p = { }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.test = function ( action, argsF, argsT )&lt;br /&gt;
    --     action  -- string, &amp;quot;flat&amp;quot; or &amp;quot;full&amp;quot; etc.&lt;br /&gt;
    --     argsF   -- table, with #invoke parameters, or false&lt;br /&gt;
    --     argsT   -- table, with template parameters&lt;br /&gt;
    return frontend( action, argsF, argsT )&lt;br /&gt;
end -- p.test()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.feedIAST = function ( frame )&lt;br /&gt;
    Config.frame = frame&lt;br /&gt;
    return Config.iast.lang[ frame.args[ 1 ] ]  and  &amp;quot;1&amp;quot;   or   &amp;quot;&amp;quot;&lt;br /&gt;
end -- p.feedIAST()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.flat = function ( frame )&lt;br /&gt;
    return frontier( frame, &amp;quot;flat&amp;quot; )&lt;br /&gt;
end -- p.flat()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.fold = function ( frame )&lt;br /&gt;
    return frontier( frame, &amp;quot;fold&amp;quot; )  or   &amp;quot;&amp;quot;&lt;br /&gt;
end -- p.fold()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.full = function ( frame )&lt;br /&gt;
    return frontier( frame, &amp;quot;full&amp;quot; )&lt;br /&gt;
end -- p.full()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.failsafe = function ( frame )&lt;br /&gt;
    local s = type( frame )&lt;br /&gt;
    local since&lt;br /&gt;
    if s == &amp;quot;table&amp;quot; then&lt;br /&gt;
        since = frame.args[ 1 ]&lt;br /&gt;
    elseif s == &amp;quot;string&amp;quot; then&lt;br /&gt;
        since = frame&lt;br /&gt;
    end&lt;br /&gt;
    if since then&lt;br /&gt;
        since = mw.text.trim( since )&lt;br /&gt;
        if since == &amp;quot;&amp;quot; then&lt;br /&gt;
            since = false&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return Export.failsafe( since )  or  &amp;quot;&amp;quot;&lt;br /&gt;
end -- p.failsafe()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
p.lang = function ()&lt;br /&gt;
    return Export&lt;br /&gt;
end -- p.lang()&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>C1ph4</name></author>
	</entry>
</feed>