Модул:Translation
Изглед
Документацијата за овој модул можете да ја создадете на Модул:Translation/док
-- Module:traduction
-- Imported from fr.wiktionary
-- 2016-10-29 -- V1 -- last modified by DenisWasRight
-- Extended version for mk.wiktionary
b = require('Модул:Bases')
lang = require('Модул:Languages')
local p = {}
local cats = {}
-- Activer pour voir les catégories générées
-- Seulement pour déboguer avec l'aperçu : désactiver en sauvegardant
local isdebug = false
function _category_section(name_cat, key, writing)
if isdebug then
if key then
return b.done_category(name_cat, nil, true) .. '(' .. key .. ')'
else
return b.done_category(name_cat, nil, true)
end
else
return b.done_category_content(name_cat, key, writing)
end
end
function _done_span_trans(text, code)
if (text ~= nil and code ~= nil) then
return '<span class="trans-' .. code .. '">' .. text .. '</span>'
else
return ''
end
end
-- Fonction pour écrire l'équivalent du modèle T
function p.T(frame)
-- Récupération des variables nécessaires à la création du titre
local args = frame:getParent().args
args = b.trim_parameters(args)
local code = args[1]
local trier = false
if (args[2] == 'trier') then trier = true end
local article = mw.title.getCurrentTitle()
-- Pas de code de langue, indispensable
if code == nil or code == '' then
table.insert(cats, _category_section('Wiktionnaire:Traductions T sans langue précisée'))
return '[[ВР:Јазици|внесете јазик]]' .. table.concat(cats)
end
-- A-t-on une langue correspondant au code ?
local language = lang.get_name(code)
local texts = {}
-- Oui : écrit le texte
if (language ~= nil and language ~= '') then
table.insert(texts, b.ucfirst(language))
-- Catégories
local newcattext = trier and 'Wiktionnaire:Traductions à trier en ' or 'Преводи '
table.insert(cats, _category_section(newcattext .. '(' .. language ..')'))
-- Langue sans code! Catégorisée pour la retrouver
else
table.insert(texts, '<i><font color="red">' .. code .. '</font></i>[[ВР:Јазици|*]]')
table.insert(cats, _category_section('Страници со шаблони со грешен јазичен код/Translations', code))
end
text = _done_span_trans(table.concat(texts), code)
return text .. table.concat(cats)
end
---------------------------------------------------------------------------------------------------------
-- Fonctions pour créer les éléments de trad_defaut
function _done_link_local(code_language, word, dif)
local text_link
if dif ~= nil and dif ~= '' then
text_link = dif
else
text_link = word
end
local text_final = '[[' .. word .. '#' .. code_language .. '|' .. '<span lang="' .. code_language .. '">' .. text_link .. '</span>' .. ']]'
return text_final
-- Manque dif, et un <span lang="">, à faire par une fonction de base
end
function _done_asterisk(code_language, word, status)
-- Dessine l'astérisque selon le statut de l'article dans le Wiktionnaire correspondant
local asterisk = ''
-- Destination du lien
-- Corriger le lien pour les wikis spéciaux
local code_language_wikt = lang.get_link_Wikimedia(code_language) or code_language
word = mw.ustring.gsub(word, "’", "'") -- apostrophe dactylographique
local destination = ':' .. code_language_wikt .. ':' .. word
-- Pas de statut, ou statut du Wiki inconnu ? Ne rien afficher
if (status == '' or status == nil) then
asterisk = ''
destination = nil
-- Pas de Wiki ?
elseif (status == 'nowikt') then
asterisk = '<span class="trans-nowikt">(*)</span>'
destination = 'Wiktionnaire:Pas de wiktionnaire dans cette langue'
elseif (status == 'exists') then
asterisk = '<span class="trans-exists">(' .. code_language_wikt .. ')</span>'
elseif (status == 'unknown') then
asterisk = '<span class="trans-unknown">(' .. code_language_wikt .. ')</span>'
elseif (status == 'absent') then
asterisk = '<span class="trans-absent">(' .. code_language_wikt .. ')</span>'
end
local text_final = destination and '<span class="trans-exponent">[[' .. destination .. '|' .. asterisk .. ']]</span>' or ''
return text_final
end
function _done_writing_traditional(code_language, tradi)
if (tradi == nil or tradi == '') then return nil end
local destination = tradi .. '#' .. code_language
local affichage = ''
-- le chinois traditionnel s'affiche mieux dans les navigateurs avec le code zh-Hant
if code_language == 'zh' then
affichage = b.tag_language(tradi, 'zh-Hant')
else
affichage = b.tag_language(tradi, code_language)
end
-- signaler l'écriture traditionnelle comme telle pour les gadgets
affichage = '<span class="writing_tradi">' .. affichage .. '</span>'
local text_final = '[[' .. destination .. '|' .. affichage .. ']]'
return text_final
end
function _done_transcrit(code_language, transc, code_lang_R)
if (transc == nil or transc == '' or code_language == nil) then return nil end
local lang = code_lang_R or code_language .. '-Latn'
local text_final = '<span lang="' .. lang .. '">' .. transc .. '</span>'
return text_final
end
-- Genre : seulement les genres définis (sinon on invoque n'importe quel modèle, voire un modèle inexistant)
function _done_gender(gender)
if gender == nil or gender == '' then return nil end
-- Liste des genres autorisés
local listeg = {}
listeg['m'] = 'м'
listeg['f'] = 'ж'
listeg['n'] = 'ср'
listeg['c'] = 'општ'
listeg['s'] = 'еднина'
listeg['p'] = 'множина'
listeg['d'] = 'дуален'
listeg['mf'] = 'м и ж'
if listeg[gender] then
return "''" .. listeg[gender] .. "''"
else
table.insert(cats, _category_section("Страници со преводи со непостоечки род", gender))
return ''
end
end
-- Fonction pour écrire l'équivalent de trad/défaut
function p.trans_default(frame)
-- Récupération des variables
local args = frame.args
local argsnum = b.trim_parameters(args) -- trim les paramètres numériques
local code_language = argsnum[1] -- Code langue
local code_lang_s = args['lang-s'] -- Code langue plus précis (rare) PAS UTILISÉ ?
local code_lang_R = args['lang-R'] or args['lang-tr'] -- Code langue du terme traditionnel (chinois et coréen)
local word = argsnum[2] -- Le terme traduit
local dif = args['dif'] -- Affichage alternatif du terme traduit (rare)
local tradi = args['tradi'] -- Terme traditionnel (chinois et coréen)
local transc = args['R'] or args['tr'] -- Transcription du terme traduit
local status = args['status'] -- Remplace "color", voir les statuts possibles dans _fait_asterisque
local nocat = (args['nocat'] and true or false) -- Pas catégorisé (vraiment utile ?)
local gender = argsnum[3]
local error = argsnum[4]
-- Vérification des paramètres
if code_language == nil or code_language == '' then
table.insert(cats, _category_section("Страници со шаблони со грешен јазичен код/Translations"))
return '[[WT:Liste des langues|<span style="color:red;">грешен јазичен код</span>]] <span style="color:red;">(параметар 1)</span>'
elseif lang.get_name(code_language) == nil then
table.insert(cats, _category_section('Страници со шаблони со грешен јазичен код/Translations ', code))
end
-- Préparation du texte à afficher
local link_local = ''
local asterisk = ''
-- Pas de mot par défaut : si absent, c'est une erreur
if word == nil or word =='' then
table.insert(cats, _category_section("Страници со шаблони со грешен јазичен код/Translations"))
link_local = '<span style="color:red;">не е одреден превод (параметар 2)</span>'
else
link_local = _done_link_local(code_language, word, dif)
asterisk = _done_asterisk(code_language, word, status)
end
local writing_traditional = tradi and _done_writing_traditional(code_language, tradi) or nil
local transcrit = transc and _done_transcrit(code_language, transc, code_lang_R) or nil
local text_gender = _done_gender(gender)
-- Création du texte à afficher
local texts_final = {link_local}
if (asterisk) then table.insert(texts_final, ' ' .. asterisk) end
if (writing_traditional) then table.insert(texts_final, ' (' .. writing_traditional .. ')') end
if (transcrit) then table.insert(texts_final, ' (' .. transcrit .. ')') end
if (text_gender) then table.insert(texts_final, ' ' .. text_gender) end
if error ~= nil then table.insert(cats, _category_section("Страници со повеќе од еден преводи", error)) end
return table.concat(texts_final)
end
-- Interface à utiliser dans les modèles trad, trad+, trad-, trad--
function p.trans(frame)
-- Récupère les arguments du modèle
local pair_model = frame:getParent()
-- Ajoute le statut
pair_model.args['status'] = frame.args['status']
return p.trans_default(pair_model) .. table.concat(cats)
end
return p