Modul:TNTFallback: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
/>ExE Boss Create Module:TNTFallback in order to ease transition of {{Documentation}} to ext.translate+TNT |
K 2 Versionen importiert: Test |
||
(3 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 23: | Zeile 23: | ||
local params = { n = 0 }; | local params = { n = 0 }; | ||
local lang = nil; | local lang = nil; | ||
local fallback = | local fallback = nil; | ||
for k, v in pairs(frame.args) do | for k, v in pairs(frame.args) do | ||
Zeile 36: | Zeile 36: | ||
elseif ((k == "lang") and (v ~= "_")) then | elseif ((k == "lang") and (v ~= "_")) then | ||
lang = v; | lang = v; | ||
elseif (k == "fallback") then | elseif ((k == "fallback") and (v ~= "")) then | ||
fallback = v; | fallback = v; | ||
end | end | ||
Zeile 48: | Zeile 48: | ||
end | end | ||
if ( | if (fallback and ( | ||
-- not translated | -- not translated | ||
(result and result == TNT.formatInLanguage("en", dataset, key, unpack(params, 1, params.n))) | (result and result == TNT.formatInLanguage("en", dataset, key, unpack(params, 1, params.n))) | ||
-- no message | -- no message | ||
or (not result) | or (not result) | ||
) then | )) then | ||
if (not lang) then | if (not lang) then | ||
if (frame:callParserFunction("int:lang") ~= "en") then | if (frame:callParserFunction("int:lang") ~= "en") then |
Aktuelle Version vom 13. April 2022, 19:55 Uhr
Die Dokumentation für dieses Modul kann unter Modul:TNTFallback/Doku erstellt werden
--------------------------------------------------------------------------------
-- This module implements a wrapper for [[Module:TNT]] that allows returning
-- a fallback message; used by {{Documentation}}.
--
-- @module TNTFallback
-- @alias p
-- @author [[User:ExE Boss]]
-- @require [[Module:No globals]]
-- @require [[Module:TNT]]
--------------------------------------------------------------------------------
require("Module:No globals");
local TNT = require("Module:TNT");
local p = {};
--------------------------------------------------------------------------------
-- Based on [[Module:TNT]]'s `msg` function,
-- but takes an optional `fallback` parameter.
--------------------------------------------------------------------------------
function p.msg(frame)
local dataset, key;
local params = { n = 0 };
local lang = nil;
local fallback = nil;
for k, v in pairs(frame.args) do
if (k == 1) then
dataset = v;
elseif (k == 2) then
key = v;
elseif (type(k) == "number" and k > 2) then
local i = k - 2;
params[i] = v;
params.n = math.max(params.n, i);
elseif ((k == "lang") and (v ~= "_")) then
lang = v;
elseif ((k == "fallback") and (v ~= "")) then
fallback = v;
end
end
local result;
if (lang) then
result = TNT.formatInLanguage(lang, dataset, key, unpack(params, 1, params.n));
else
result = TNT.format(dataset, key, unpack(params, 1, params.n));
end
if (fallback and (
-- not translated
(result and result == TNT.formatInLanguage("en", dataset, key, unpack(params, 1, params.n)))
-- no message
or (not result)
)) then
if (not lang) then
if (frame:callParserFunction("int:lang") ~= "en") then
return mw.message.newRawMessage(fallback, unpack(params, 1, params.n)):plain();
end
elseif (lang ~= "en") then
return mw.message.newRawMessage(fallback, unpack(params, 1, params.n)):plain();
end
end
return result;
end
return p;