Modul:TranslateTemplate
Utseende
Moduldokumentasjon
![]() | Denne siden er under arbeid. Som leser bør du være forberedt på at innholdet kan endre seg fra dag til dag. Som bidragsyter bør du være forberedt på redigeringskollisjoner. |
TranslateTemplate er en modul for oversettelsesmaler. Vi har lenge hatt oversettelsesmaler, som en har kunnet substituere for å få ut en norsk mal (f.eks. {{subst:Cite web|…}} → {{Kilde www|…}}
). Ved oversettelse av artikler kan dette være veldig tidsbesparende, men tidligere fikk en med masse tomme parametre som en måtte fjerne i etterkant. Denne modulen er primært ment å løse det problemet. I fremtiden kan det også være den får støtte for f.eks. å automatisk konvertere datoer fra engelsk til norsk.
Eksempel
[rediger kilde]For å oversette fra {{Cite web}} på enwp til {{Kilde www}} har vi lagt inn:
- Oversettelsesmalen {{Cite web}}:
<includeonly> {{ {{{|safesubst:}}}ifsubst | {{{{{|safesubst:}}}#invoke:TranslateTemplate|translate|Cite web|raw}} | {{#invoke:TranslateTemplate|translate|Cite web}} }}</includeonly><noinclude>{{dokumentasjon}}</noinclude>
- En konfigurasjonsfil med oversikt over hvordan argumentene skal oversettes:
Modul:TranslateTemplate/configuration/Cite web
local p = {}
function p.translate(frame)
local template
local argtable = {}
for k, v in pairs(frame.args) do
if k == 1 then template = v
else argtable[k] = v end
end
local pframe = frame:getParent()
if pframe ~= nil then
for k, v in pairs(pframe.args) do
if k == 1 then template = v
else argtable[k] = v end
end
end
-- Last inn konfigurasjonsfilen basert på malnavn gitt som 1= eller template=
if template == nil then
return frame:preprocess('{{Feil|Ingen mal angitt}}')
end
local nb = mw.language.new('nb')
local normName = string.gsub(nb:ucfirst(template), '_', ' ')
local filename = 'Modul:TranslateTemplate/configuration/' .. normName
local status, config = pcall(require, filename)
if status == false then
return frame:preprocess('{{Feil|Konfigurasjonsfilen [[:' .. filename .. ']] ble ikke funnet}}')
end
-- Oversett navngitte parametere basert på mapping fra konfigurasjonsfilen
local args = ''
for key, val in pairs( argtable ) do
if string.match( key, '^[0-9]+$' ) == nil and val ~= '' then
newkey = config['args'][key]
if newkey == nil then
return frame:preprocess('{{Feil|Argumentet "' .. key .. '" ble ikke funnet i konfigurasjonsfilen [[:' .. filename .. ']]}}')
end
args = args .. '|' .. newkey .. '=' .. val
end
end
local out = '{{' .. config['name'] .. args .. '}}'
if argtable[2] == nil then
return frame:preprocess(out)
end
if argtable[2] == 'raw' then
return out
end
return frame:preprocess('{{Feil|TranslateTemplate forstår ikke: ' .. argtable[2] .. '}}')
end
return p