پودمان:Header/lang
ظاهر
توضیحات این پودمان میتواند در پودمان:Header/lang/توضیحات قرار گیرد.
require('strict')
local p = {}
local ISO_639_language_name = require('Module:ISO 639').language_name
local TableTools = require('Module:TableTools')
p.project_language = mw.language.getContentLanguage().code
p.project_language_name = ISO_639_language_name(p.project_language)
p.interwiki_prefixes = {}
--[=[
ساختنِ ردهٔ خودکار برای سربرگ
]=]
function p.language_category_name(cat_works_start, lang, is_translation)
local cat_language_name = ISO_639_language_name(lang) or 'زبان نامشخص'
if lang == 'el' then
cat_language_name = 'یونانی نو' -- برای تمایز از یونانیِ باستان (grc)
elseif lang == p.project_language and not is_translation then
cat_language_name = p.project_language_name .. ' (تصریحشده)'
end
return cat_works_start .. ' ' .. cat_language_name
end
function p.get_languages(args, prefix)
prefix = (prefix and prefix .. '%-') or ''
-- رسیدگی به زبانها
local languages = {}
for k, v in pairs(args) do
local n
local nText = string.match(k, '^' .. prefix .. 'language%d*$') or string.match(k, '^' .. prefix .. 'lang%d*$')
if nText and type(v) == 'string' then
n = string.gsub(string.gsub(nText, 'language', ''), 'lang', '')
n = tonumber(n) or 1
languages[n] = mw.text.split(v, '%s*,%s*')
end
end
languages = TableTools.compressSparseArray(languages)
if #languages == 0 then
return {}
end
local flat_languages = {}
local language_name
local language_names = {}
for i, langs in ipairs(languages) do
for j, lang in ipairs(langs) do
table.insert(flat_languages, lang)
local name = ISO_639_language_name(lang)
if name then
table.insert(language_names, name)
end
end
end
if #language_names == 1 then
language_name = language_names[1]
elseif #language_names > 1 then
language_name = table.concat(language_names, '، ', 1, #language_names - 1) .. ' و ' .. language_names[#language_names]
end
return {
languages = flat_languages,
language_name = language_name
}
end
return p