Nicht angemeldeter Benutzer - Bearbeiten von Seiten ist nur als angemeldeter Benutzer möglich.

Änderungen

Zur Navigation springen Zur Suche springen
8.791 Bytes hinzugefügt ,  18:03, 3. Nov. 2019
2019-11-01
Zeile 1: Zeile 1: −
local Multilingual = { suite = "Multilingual",
+
local Multilingual = { suite   = "Multilingual",
                       serial = "2019-06-01",
+
                       serial = "2019-11-01",
                       item   = 47541920 }
+
                       item   = 47541920,
local User = { sniffer = "showpreview" }
+
                      globals = { ISO15924 = 71584769,
 +
                                  WLink    = 19363224 }
 +
                    }
 +
local Failsafe  = Multilingual
 +
local GlobalMod = Multilingual
 +
local User     = { sniffer = "showpreview" }
 +
Multilingual.globals.Multilingual = Multilingual.item
      Zeile 28: Zeile 34:       −
local favorite = function ()
+
local foreignModule = function ( access, advanced, append, alt, alert )
 +
    -- Fetch global module
 +
    -- Precondition:
 +
    --    access    -- string, with name of base module
 +
    --    advanced  -- true, for require(); else mw.loadData()
 +
    --    append    -- string, with subpage part, if any; or false
 +
    --    alt      -- number, of wikidata item of root; or false
 +
    --    alert    -- true, for throwing error on data problem
 +
    -- Postcondition:
 +
    --    Returns whatever, probably table
 +
    -- 2019-10-29
 +
    local storage = access
 +
    local finer = function ()
 +
                      if append then
 +
                          storage = string.format( "%s/%s",
 +
                                                  storage,
 +
                                                  append )
 +
                      end
 +
                  end
 +
    local fun, lucky, r, suited
 +
    if advanced then
 +
        fun = require
 +
    else
 +
        fun = mw.loadData
 +
    end
 +
    GlobalMod.globalModules = GlobalMod.globalModules or { }
 +
    suited = GlobalMod.globalModules[ access ]
 +
    if not suited then
 +
        finer()
 +
        lucky, r = pcall( fun,  "Module:" .. storage )
 +
    end
 +
    if not lucky then
 +
        if not suited  and
 +
          type( alt ) == "number"  and
 +
          alt > 0 then
 +
            suited = string.format( "Q%d", alt )
 +
            suited = mw.wikibase.getSitelink( suited )
 +
            GlobalMod.globalModules[ access ] = suited or true
 +
        end
 +
        if type( suited ) == "string" then
 +
            storage = suited
 +
            finer()
 +
            lucky, r = pcall( fun, storage )
 +
        end
 +
        if not lucky and alert then
 +
            error( "Missing or invalid page: " .. storage, 0 )
 +
        end
 +
    end
 +
    return r
 +
end -- foreignModule()
 +
 
 +
 
 +
 
 +
local favorites = function ()
 +
    -- Provide fallback codes
 
     -- Postcondition:
 
     -- Postcondition:
     --    Returns code of current project language
+
     --    Returns table with sequence of preferred languages
     if not Multilingual.self then
+
    --    * ahead elements
         Multilingual.self = mw.language.getContentLanguage():getCode()
+
    --    * user (not yet accessible)
                                                            :lower()
+
    --    * page content language (not yet accessible)
 +
    --    * page name subpage
 +
    --    * project
 +
    --    * en
 +
    local r = Multilingual.polyglott
 +
    local f = function ( add )
 +
                  local s = add
 +
                  for i = 1, #r do
 +
                      if r[ i ] == s then
 +
                          s = false
 +
                          break -- for i
 +
                      end
 +
                  end -- for i
 +
                  if s then
 +
                      table.insert( r, s )
 +
                  end
 +
              end
 +
     if not r then
 +
         local self = mw.language.getContentLanguage():getCode():lower()
 +
        local sub  = mw.title.getCurrentTitle().subpageText
 +
        r = { }
 +
        if sub:find( "/", 2, true ) then
 +
            sub = sub:match( "/(%l%l%l?)$" )
 +
            if sub then
 +
                table.insert( r, sub )
 +
            end
 +
        end
 +
        f( self )
 +
        f( "en" )
 +
        Multilingual.polyglott = r
 
     end
 
     end
     return Multilingual.self
+
     return r
end -- favorite()
+
end -- favorites()
         −
function feasible( ask, accept )
+
local feasible = function ( ask, accept )
 
     -- Is ask to be supported by application?
 
     -- Is ask to be supported by application?
 
     -- Precondition:
 
     -- Precondition:
Zeile 59: Zeile 148:       −
local fetch = function ( access, allow, ahead )
+
local fetch = function ( access, append )
 
     -- Attach config or library module
 
     -- Attach config or library module
 
     -- Precondition:
 
     -- Precondition:
 
     --    access  -- module title
 
     --    access  -- module title
     --    allow  -- permit non-existence
+
     --    append  -- string, with subpage part of this; or false
    --    ahead  -- name of startup procedure, if not access;
  −
    --                false for mw.loadData
   
     -- Postcondition:
 
     -- Postcondition:
     --    Returns  table or false, with library
+
     --    Returns: table, with library, or false
     --     Throws error, if not available
+
     local got, sign
 +
     if append then
 +
        sign = string.format( "%s/%s", access, append )
 +
    else
 +
        sign = access
 +
    end
 
     if type( Multilingual.ext ) ~= "table" then
 
     if type( Multilingual.ext ) ~= "table" then
 
         Multilingual.ext = { }
 
         Multilingual.ext = { }
 
     end
 
     end
     if Multilingual.ext[ access ] == false then
+
     got = Multilingual.ext[ sign ]
     elseif not Multilingual.ext[ access ] then
+
     if not got  and  got ~= false then
         local src = "Module:" .. access
+
         local global = Multilingual.globals[ access ]
         local lucky, got
+
         got = foreignModule( access, not append, append, global )
        if ahead == false then
  −
            lucky, got = pcall( mw.loadData, src )
  −
        else
  −
            lucky, got = pcall( require, src )
  −
        end
  −
        Multilingual.ext[ access ] = false
   
         if type( got ) == "table" then
 
         if type( got ) == "table" then
             local startup = ahead or access
+
             if not append then
            Multilingual.ext[ access ] = got
+
                local startup = got[ access ]
            if type( got[ startup ] ) == "function" then
+
                if type( startup ) == "function" then
                Multilingual.ext[ access ] = got[ startup ]()
+
                    got = startup()
 +
                end
 
             end
 
             end
 +
        else
 +
            got = false
 
         end
 
         end
         if type( Multilingual.ext[ access ] ) ~= "table"  and
+
         Multilingual.ext[ sign ] = got
          not allow then
  −
            got = string.format( "Module:%s invalid", access )
  −
            error( got, 0 )
  −
        end
   
     end
 
     end
     return Multilingual.ext[ access ]
+
     return got
 
end -- fetch()
 
end -- fetch()
         −
local function fill( access, alien, frame )
+
local fill = function ( access, alien, frame )
 
     -- Expand language name template
 
     -- Expand language name template
 
     -- Precondition:
 
     -- Precondition:
Zeile 111: Zeile 196:  
     local r
 
     local r
 
     if type( template ) ~= "table" then
 
     if type( template ) ~= "table" then
         local cnf = fetch( "Multilingual/config", true, true )
+
         local cnf = fetch( "Multilingual", "config" )
         if type( cnf ) == "table" then
+
         if cnf then
 
             template = cnf.tmplLang
 
             template = cnf.tmplLang
 
         end
 
         end
Zeile 148: Zeile 233:       −
function find( ask, alien )
+
local find = function ( ask, alien )
 
     -- Derive language code from name
 
     -- Derive language code from name
 
     -- Precondition:
 
     -- Precondition:
Zeile 168: Zeile 253:  
     return r
 
     return r
 
end -- find()
 
end -- find()
 +
 +
 +
 +
local fold = function ( frame )
 +
    -- Merge template and #invoke arglist
 +
    -- Precondition:
 +
    --    frame  -- template frame
 +
    -- Postcondition:
 +
    --    table, with combined arglist
 +
    local r = { }
 +
    local f = function ( apply )
 +
                  if type( apply ) == "table"  and
 +
                    type( apply.args ) == "table" then
 +
                      for k, v in pairs( apply.args ) do
 +
                          v = mw.text.trim( v )
 +
                          if v ~= "" then
 +
                              r[ tostring( k ) ] = v
 +
                          end
 +
                      end -- for k, v
 +
                  end
 +
              end -- f()
 +
    f( frame:getParent() )
 +
    f( frame )
 +
    return r
 +
end -- fold()
      Zeile 291: Zeile 401:  
     if #seek > 1 then
 
     if #seek > 1 then
 
         if seek:find( "[", 1, true ) then
 
         if seek:find( "[", 1, true ) then
             seek = fetch( "WLink" ).getPlain( seek )
+
             local wlink = fetch( "WLink" )
 +
            if wlink  and
 +
              type( wlink.getPlain ) == "function" then
 +
                seek = wlink.getPlain( seek )
 +
            end
 
         end
 
         end
 
         seek = mw.ustring.lower( seek )
 
         seek = mw.ustring.lower( seek )
Zeile 297: Zeile 411:  
             r = Multilingual.fair( seek )
 
             r = Multilingual.fair( seek )
 
         else
 
         else
             local slang = favorite()
+
             local collection = favorites()
             r = find( seek, slang )
+
             for i = 1, #collection do
            if not r and  slang ~= "en" then
+
                r = find( seek, collection[ i ] )
                 r = find( seek, "en" )
+
                if r then
             end
+
                    break -- for i
 +
                 end
 +
             end -- for i
 
         end
 
         end
 
     end
 
     end
Zeile 392: Zeile 508:  
                             if slot then
 
                             if slot then
 
                                 local wlink = fetch( "WLink" )
 
                                 local wlink = fetch( "WLink" )
                                 slot = wlink.getTarget( slot )
+
                                 if wlink  and
 +
                                  type( wlink.getTarget )
 +
                                                      == "function" then
 +
                                    slot = wlink.getTarget( slot )
 +
                                end
 
                             else
 
                             else
 
                                 lapsus = alert
 
                                 lapsus = alert
Zeile 546: Zeile 666:  
     end
 
     end
 
     if not r.legal then
 
     if not r.legal then
         local cnf = fetch( "Multilingual/config", true, true )
+
         local cnf = fetch( "Multilingual", "config" )
         if type( cnf ) == "table" and
+
         if cnf  and type( cnf.scream ) == "string" then
          type( cnf.scream ) == "string" then
   
             r.scream = cnf.scream
 
             r.scream = cnf.scream
 
         end
 
         end
Zeile 570: Zeile 689:  
     if ask then
 
     if ask then
 
         local slang  = alien
 
         local slang  = alien
        local support = "Multilingual/names"
   
         local tLang
 
         local tLang
 
         if slang then
 
         if slang then
Zeile 576: Zeile 694:  
                 slang = Multilingual.fair( ask )
 
                 slang = Multilingual.fair( ask )
 
             elseif slang == "!" then
 
             elseif slang == "!" then
                 slang = favorite()
+
                 slang = favorites()[ 1 ]
 
             else
 
             else
 
                 slang = Multilingual.fair( slang )
 
                 slang = Multilingual.fair( slang )
Zeile 587: Zeile 705:  
         end
 
         end
 
         slang = slang:lower()
 
         slang = slang:lower()
         tLang = fetch( support, true )
+
         tLang = fetch( "Multilingual", "names" )
 
         if tLang then
 
         if tLang then
 
             tLang = tLang[ slang ]
 
             tLang = tLang[ slang ]
Zeile 633: Zeile 751:  
     -- Postcondition:
 
     -- Postcondition:
 
     --    Returns string
 
     --    Returns string
     local = assigned
+
     local bib = fetch( "ISO15924" )
     local src = "Multilingual/scripting"
+
     local r
    if not Multilingual[ src ] then
+
    if bib  and
         Multilingual[ src ] = fetch( src, true, "MultiScript" )
+
      type( bib.getScriptName ) == "function" then
 +
         r = bib.getScriptName( assigned, alien, add )
 
     end
 
     end
    if Multilingual[ src ] then
+
     return r or ""
        r = Multilingual[ src ].Text.scriptName( assigned, alien, add )
  −
    end
  −
     return r
   
end -- Multilingual.getScriptName()
 
end -- Multilingual.getScriptName()
   Zeile 769: Zeile 885:  
     local r  = true
 
     local r  = true
 
     if ask then
 
     if ask then
         local cnf = fetch( "Multilingual/config", true, true )
+
         local cnf = fetch( "Multilingual", "config" )
 
         if cnf then
 
         if cnf then
 
             local s = string.format( " %s ", ask:lower() )
 
             local s = string.format( " %s ", ask:lower() )
Zeile 800: Zeile 916:  
     -- Postcondition:
 
     -- Postcondition:
 
     --    Returns boolean
 
     --    Returns boolean
     local r = false
+
     local bib = fetch( "ISO15924" )
     local t
+
     local r
     if type( Multilingual.trans ) ~= "table" then
+
     if type( bib ) == "table" and
        t = fetch( "Multilingual/scripts", true, false )
+
      type( bib.isTrans ) == "function" then
        if type( t ) == "table" then
+
        r = bib.isTrans( ask, assign, about )
            Multilingual.trans = t.trans  or  { }
  −
        else
  −
            Multilingual.trans = { }
  −
        end
   
     end
 
     end
     t = Multilingual.trans[ assign ]
+
     return r or false
     if type( t ) == "table" then
+
end -- Multilingual.isTrans()
         for k, v in pairs( t ) do
+
 
             if v == ask then
+
 
                 r = true
+
 
                 break    -- for i
+
Multilingual.message = function ( arglist, frame )
 +
    -- Show text in best match of user language like system message
 +
    -- Precondition:
 +
    --    arglist  -- template arguments
 +
    --    frame    -- frame, if available
 +
    -- Postcondition:
 +
    --    Returns string with appropriate text
 +
    local r
 +
     if type( arglist ) == "table" then
 +
        local t = { }
 +
        local m, p
 +
         for k, v in pairs( arglist ) do
 +
             if type( k ) == "string"  and
 +
              type( v ) == "string" then
 +
                 v = mw.text.trim( v )
 +
                if v ~= "" then
 +
                    if k:match( "^%l%l" ) then
 +
                        t[ k ] = v
 +
                    elseif k:match( "^%$%d$" )  and  k ~= "$0" then
 +
                        p = p or { }
 +
                        k = tonumber( k:match( "^%$(%d)$" ) )
 +
                        p[ k ] = v
 +
                        if not m  or  k > m then
 +
                            m = k
 +
                        end
 +
                    end
 +
                 end
 
             end
 
             end
 
         end -- for k, v
 
         end -- for k, v
 +
        r = Multilingual.i18n( t, nil, frame )
 +
        if p  and  r  and  r:find( "$", 1, true ) then
 +
            t = { }
 +
            for i = 1, m do
 +
                t[ i ] = p[ i ]  or  ""
 +
            end -- for i
 +
            r = mw.message.newRawMessage( r, t ):plain()
 +
        end
 +
    end
 +
    return r  or  ""
 +
end -- Multilingual.message()
 +
 +
 +
 +
Multilingual.sitelink = function ( all, frame )
 +
    -- Make link at local or other site with optimal linktext translation
 +
    -- Precondition:
 +
    --    all    -- string or table or number, item ID or entity
 +
    --    frame  -- frame, if available
 +
    -- Postcondition:
 +
    --    Returns string with any helpful internal link, or plain text
 +
    local s = type( all )
 +
    local object, r
 +
    if s == "table" then
 +
        object = all
 +
    elseif s == "string" then
 +
        object = mw.wikibase.getEntity( all )
 +
    elseif s == "number" then
 +
        object = mw.wikibase.getEntity( string.format( "Q%d", all ) )
 
     end
 
     end
     if not r and  about == "Latn" then
+
     if type( object ) == "table" then
         r = ( ask == "BGN-PCGN" or  ask == "ALA-LC" )
+
        local collection = object.sitelinks
 +
        local entry
 +
        s = false
 +
        if type( collection ) == "table" then
 +
            Multilingual.site = Multilingual.site or
 +
                                mw.wikibase.getGlobalSiteId()
 +
            entry = collection[ Multilingual.site ]
 +
            if entry then
 +
                s = ":" .. entry.title
 +
            elseif collection.enwiki then
 +
                s = "w:en:" .. collection.enwiki.title
 +
            end
 +
        end
 +
         r = Multilingual.wikibase( object, "labels", frame )
 +
        if s then
 +
            if s == ":" .. r then
 +
                r = string.format( "[[%s]]", s )
 +
            else
 +
                r = string.format( "[[%s|%s]]", s, r )
 +
            end
 +
        end
 
     end
 
     end
     return r
+
     return r or  ""
end -- Multilingual.isTrans()
+
end -- Multilingual.sitelink()
      Zeile 839: Zeile 1.026:  
     local codes, r, slang
 
     local codes, r, slang
 
     if s == "string" then
 
     if s == "string" then
         codes = mw.text.split( accept:lower(), " " )
+
         codes = mw.text.split( accept:lower(), "%s+" )
 
     elseif s == "table" then
 
     elseif s == "table" then
 
         codes = { }
 
         codes = { }
 
         for i = 1, #accept do
 
         for i = 1, #accept do
 
             s = accept[ i ]
 
             s = accept[ i ]
             if type( s ) == "string"  then
+
             if type( s ) == "string"  and
 +
              s ~= "" then
 
                 table.insert( codes, s:lower() )
 
                 table.insert( codes, s:lower() )
 
             end
 
             end
 
         end -- for i
 
         end -- for i
    else
  −
        codes = { }
  −
        slang = favorite()
  −
        if mw.language.isKnownLanguageTag( slang ) then
  −
            table.insert( codes, slang )
  −
        end
   
     end
 
     end
 
     slang = User.favorize( codes, frame )
 
     slang = User.favorize( codes, frame )
     if not slang then
+
     if slang then
        slang = favorite()  or  "en"
  −
    end
  −
    if feasible( slang, codes ) then
  −
        r = slang
  −
    elseif slang:find( "-", 1, true ) then
  −
        slang = Multilingual.getBase( slang )
   
         if feasible( slang, codes ) then
 
         if feasible( slang, codes ) then
 
             r = slang
 
             r = slang
 +
        elseif slang:find( "-", 1, true ) then
 +
            slang = Multilingual.getBase( slang )
 +
            if feasible( slang, codes ) then
 +
                r = slang
 +
            end
 +
        end
 +
        if not r then
 +
            local others = mw.language.getFallbacksFor( slang )
 +
            for i = 1, #others do
 +
                slang = others[ i ]
 +
                if feasible( slang, codes ) then
 +
                    r = slang
 +
                    break -- for i
 +
                end
 +
            end -- for i
 
         end
 
         end
 
     end
 
     end
 
     if not r then
 
     if not r then
         local others = mw.language.getFallbacksFor( slang )
+
         local back = favorites()
         for i = 1, #others do
+
         for i = 1, #back do
             slang = others[ i ]
+
             slang = back[ i ]
 
             if feasible( slang, codes ) then
 
             if feasible( slang, codes ) then
 
                 r = slang
 
                 r = slang
Zeile 876: Zeile 1.067:  
             end
 
             end
 
         end -- for i
 
         end -- for i
         if not r then
+
         if not r  and  codes[ 1 ] then
            if feasible( "en", codes ) then
+
            r = codes[ 1 ]
                r = "en"
  −
            elseif #codes > 1 and
  −
                  codes[ 1 ] and
  −
                  codes[ 1 ]~= "" then
  −
                r = codes[ 1 ]
  −
            end
   
         end
 
         end
 
     end
 
     end
     return r or favorite() or "en"
+
     return r or favorites()[ 1 ]
 
end -- Multilingual.userLang()
 
end -- Multilingual.userLang()
   Zeile 895: Zeile 1.080:  
     -- Postcondition:
 
     -- Postcondition:
 
     --    Returns code of current best guess
 
     --    Returns code of current best guess
     return User.self  or  favorite() or  "en"
+
     return User.self  or  favorites()[ 1 ]
 
end -- Multilingual.userLangCode()
 
end -- Multilingual.userLangCode()
         −
Multilingual.failsafe = function ( atleast )
+
Multilingual.wikibase = function ( all, about, attempt, frame )
 +
    -- Optimal translation of wikibase component
 +
    -- Precondition:
 +
    --    all      -- string or table, object ID or entity
 +
    --    about    -- boolean, true "descriptions" or false "labels"
 +
    --    attempt  -- string or not, code of preferred language
 +
    --    frame    -- frame, if available
 +
    -- Postcondition:
 +
    --    Returns string with appropriate code
 +
    local s = type( all )
 +
    local object, r
 +
    if s == "table" then
 +
        object = all
 +
    elseif s == "string" then
 +
        object = mw.wikibase.getEntity( all )
 +
    end
 +
    if type( object ) == "table" then
 +
        if about then
 +
            s = "descriptions"
 +
        else
 +
            s = "labels"
 +
        end
 +
        object = object[ s ]
 +
        if type( object ) == "table" then
 +
            if object[ attempt ] then
 +
                r = object[ attempt ].value
 +
            else
 +
                local poly
 +
                for k, v in pairs( object ) do
 +
                    poly = poly or { }
 +
                    poly[ k ] = v.value
 +
                end -- for k, v
 +
                if poly then
 +
                    r = Multilingual.i18n( poly, nil, frame )
 +
                end
 +
            end
 +
        end
 +
    end
 +
    return r  or  ""
 +
end -- Multilingual.wikibase()
 +
 
 +
 
 +
 
 +
Failsafe.failsafe = function ( atleast )
 
     -- Retrieve versioning and check for compliance
 
     -- Retrieve versioning and check for compliance
 
     -- Precondition:
 
     -- Precondition:
     --    atleast  -- string, with required version or "wikidata",
+
     --    atleast  -- string, with required version or "wikidata" or "~"
     --               or false
+
     --                 or false
 
     -- Postcondition:
 
     -- Postcondition:
     --    Returns  string with appropriate version, or false
+
     --    Returns  string -- with queried version, also if problem
 +
    --              false   -- if appropriate
 +
    -- 2019-10-15
 +
    local last  = ( atleast == "~" )
 
     local since = atleast
 
     local since = atleast
 
     local r
 
     local r
     if since == "wikidata" then
+
     if last  or  since == "wikidata" then
         local item = Multilingual.item
+
         local item = Failsafe.item
 
         since = false
 
         since = false
 
         if type( item ) == "number"  and  item > 0 then
 
         if type( item ) == "number"  and  item > 0 then
Zeile 916: Zeile 1.147:  
                                                                 item ) )
 
                                                                 item ) )
 
             if type( entity ) == "table" then
 
             if type( entity ) == "table" then
                 local vsn = entity:formatPropertyValues( "P348" )
+
                local seek = Failsafe.serialProperty or "P348"
 +
                 local vsn = entity:formatPropertyValues( seek )
 
                 if type( vsn ) == "table"  and
 
                 if type( vsn ) == "table"  and
                   type( vsn.value ) == "string" and
+
                   type( vsn.value ) == "string" and
 
                   vsn.value ~= "" then
 
                   vsn.value ~= "" then
                     r = vsn.value
+
                     if last  and  vsn.value == Failsafe.serial then
 +
                        r = false
 +
                    else
 +
                        r = vsn.value
 +
                    end
 
                 end
 
                 end
 
             end
 
             end
 
         end
 
         end
 
     end
 
     end
     if not r then
+
     if type( r ) == "nil" then
         if not since  or  since <= Multilingual.serial then
+
         if not since  or  since <= Failsafe.serial then
             r = Multilingual.serial
+
             r = Failsafe.serial
 
         else
 
         else
 
             r = false
 
             r = false
Zeile 933: Zeile 1.169:  
     end
 
     end
 
     return r
 
     return r
end -- Multilingual.failsafe()
+
end -- Failsafe.failsafe()
      Zeile 1.044: Zeile 1.280:     
p.getScriptName = function ( frame )
 
p.getScriptName = function ( frame )
 +
    -- OBSOLETE
 
     -- Retrieve script name from ISO 15924 script code, hopefully linked
 
     -- Retrieve script name from ISO 15924 script code, hopefully linked
 
     --    1  -- code
 
     --    1  -- code
Zeile 1.121: Zeile 1.358:     
p.isTrans = function ( frame )
 
p.isTrans = function ( frame )
 +
    -- OBSOLETE
 
     -- Check whether valid transcription for context
 
     -- Check whether valid transcription for context
 
     --    1    -- string, with transcription key
 
     --    1    -- string, with transcription key
Zeile 1.130: Zeile 1.368:  
     return Multilingual.isTrans( s1, s2, site )  and  "1"  or  ""
 
     return Multilingual.isTrans( s1, s2, site )  and  "1"  or  ""
 
end -- p.isTrans
 
end -- p.isTrans
 +
 +
 +
 +
p.message = function ( frame )
 +
    -- Translation of text element
 +
    return Multilingual.message( fold( frame ), frame )
 +
end -- p.message
 +
 +
 +
 +
p.sitelink = function ( frame )
 +
    -- Make link at local or other site with optimal linktext translation
 +
    --    1  -- item ID
 +
    local s = mw.text.trim( frame.args[ 1 ]  or  "" )
 +
    local r
 +
    if s:match( "^%d+$") then
 +
        r = tonumber( s )
 +
    elseif s:match( "^Q%d+$") then
 +
        r = s
 +
    end
 +
    if r then
 +
        r = Multilingual.sitelink( r, frame )
 +
    end
 +
    return r or s
 +
end -- p.sitelink
      Zeile 1.139: Zeile 1.402:  
     return Multilingual.userLang( s, frame )
 
     return Multilingual.userLang( s, frame )
 
end -- p.userLang
 
end -- p.userLang
 +
 +
 +
 +
p.wikibase = function ( frame )
 +
    -- Optimal translation of wikibase component
 +
    --    1  -- object ID
 +
    --    2  -- either "descriptions" or "labels"
 +
    local r
 +
    local s = mw.text.trim( frame.args[ 1 ]  or  "" )
 +
    if s ~= "" then
 +
        local s2    = mw.text.trim( frame.args[ 2 ]  or  "0" )
 +
        local slang = mw.text.trim( frame.args.lang  or  "" )
 +
        local large = ( s2 ~= ""  and  s2 ~= "0" )
 +
        if slang == "" then
 +
            slang = false
 +
        end
 +
        r = Multilingual.wikibase( s, large, slang, frame )
 +
    end
 +
    return r or ""
 +
end -- p.wikibase
      Zeile 1.157: Zeile 1.440:  
         end
 
         end
 
     end
 
     end
     return Multilingual.failsafe( since )  or  ""
+
     return Failsafe.failsafe( since )  or  ""
 
end -- p.failsafe()
 
end -- p.failsafe()
  
Cookies helfen uns bei der Bereitstellung von imedwiki. Durch die Nutzung von imedwiki erklärst du dich damit einverstanden, dass wir Cookies speichern.

Navigationsmenü