Modul:Multilingual: Unterschied zwischen den Versionen
2019-05-22
w>PerfektesChaos (2019-03-01) |
w>PerfektesChaos (2019-05-22) |
||
| Zeile 1: | Zeile 1: | ||
local Multilingual = { suite = "Multilingual", | local Multilingual = { suite = "Multilingual", | ||
serial = "2019- | serial = "2019-05-22", | ||
item = 47541920 } | item = 47541920 } | ||
local User = { sniffer = "showpreview" } | local User = { sniffer = "showpreview" } | ||
| Zeile 102: | Zeile 102: | ||
local function fill( access, alien, frame ) | local function fill( access, alien, frame ) | ||
-- Expand language name template | -- Expand language name template | ||
-- Precondition: | |||
-- access -- string, with language code | -- access -- string, with language code | ||
-- alien -- language code for which to be generated | -- alien -- language code for which to be generated | ||
-- frame -- frame, if available | -- frame -- frame, if available | ||
-- Returns string | -- Postcondition: | ||
-- Returns string | |||
local template = Multilingual.tmplLang | local template = Multilingual.tmplLang | ||
local r | local r | ||
| Zeile 624: | Zeile 626: | ||
Multilingual.getScriptName = function ( assigned, alien, add ) | Multilingual.getScriptName = function ( assigned, alien, add ) | ||
-- Retrieve script name, hopefully linked | -- Retrieve script name, hopefully linked | ||
-- Precondition: | |||
-- assigned -- string, with ISO 15924 script code | -- assigned -- string, with ISO 15924 script code | ||
-- alien -- string, with ISO language code, or not | -- alien -- string, with ISO language code, or not | ||
-- add -- arbitrary additional information | -- add -- arbitrary additional information | ||
-- Returns string | -- Postcondition: | ||
-- Returns string | |||
local r = assigned | local r = assigned | ||
local src = "Multilingual/scripting" | local src = "Multilingual/scripting" | ||
| Zeile 638: | Zeile 642: | ||
return r | return r | ||
end -- Multilingual.getScriptName() | end -- Multilingual.getScriptName() | ||
Multilingual.i18n = function ( available, alt, frame ) | |||
-- Select translatable message | |||
-- Precondition: | |||
-- available -- table, with mapping language code ./. text | |||
-- alt -- string|nil|false, with fallback | |||
-- frame -- frame, if available | |||
-- Returns string|nil|false | |||
local r | |||
if type( available ) == "table" then | |||
local codes = { } | |||
for k, v in pairs( available ) do | |||
if type( k ) == "string" and | |||
type( v ) == "string" then | |||
table.insert( codes, mw.text.trim( k:lower() ) ) | |||
end | |||
end -- for k, v | |||
r = available[ Multilingual.userLang( codes, frame ) ] | |||
end | |||
if not r and type( alt ) == "string" then | |||
r = mw.text.trim( alt ) | |||
end | |||
if r == "" then | |||
r = false | |||
else | |||
end | |||
return r | |||
end -- Multilingual.i18n() | |||
| Zeile 746: | Zeile 780: | ||
Multilingual.isTrans = function ( ask, assign, about ) | Multilingual.isTrans = function ( ask, assign, about ) | ||
-- Check whether valid transcription for context | -- Check whether valid transcription for context | ||
-- Precondition: | |||
-- ask -- string, with transcription key | -- ask -- string, with transcription key | ||
-- assign -- string, with language or scripting code | -- assign -- string, with language or scripting code | ||
-- about -- string or nil, with site scripting code | -- about -- string or nil, with site scripting code | ||
-- Returns boolean | -- Postcondition: | ||
-- Returns boolean | |||
local r = false | local r = false | ||
local t | local t | ||
| Zeile 780: | Zeile 816: | ||
-- Try to support user language by application | -- Try to support user language by application | ||
-- Precondition: | -- Precondition: | ||
-- accept -- space separated list of available ISO 639 codes | -- accept -- string or table | ||
-- space separated list of available ISO 639 codes | |||
-- Default: project language, or English | -- Default: project language, or English | ||
-- frame -- frame, if available | -- frame -- frame, if available | ||
| Zeile 828: | Zeile 865: | ||
if feasible( "en", codes ) then | if feasible( "en", codes ) then | ||
r = "en" | r = "en" | ||
elseif #codes > 1 and | |||
codes[ 1 ] and | |||
codes[ 1 ]~= "" then | |||
r = codes[ 1 ] | r = codes[ 1 ] | ||
end | end | ||
end | end | ||
end | end | ||
return r | return r or favorite() or "en" | ||
end -- Multilingual.userLang() | end -- Multilingual.userLang() | ||
| Zeile 847: | Zeile 886: | ||
Multilingual.failsafe = function ( | Multilingual.failsafe = function ( atleast ) | ||
-- Retrieve versioning and check for compliance | -- Retrieve versioning and check for compliance | ||
-- Precondition: | -- Precondition: | ||
-- | -- atleast -- string, with required version or "wikidata", | ||
-- or false | -- or false | ||
-- Postcondition: | -- Postcondition: | ||
-- Returns string with appropriate version, or false | -- Returns string with appropriate version, or false | ||
local since = | local since = atleast | ||
local r | local r | ||
if since == "wikidata" then | if since == "wikidata" then | ||