local function getCategoryByNamespace(namespace)
    if namespace == 0 then
        return '[[বিষয়শ্রেণী:উইকিপিডিয়ার নিবন্ধসমূহ অনুবাদ করা প্রয়োজন]]'
    elseif namespace == 6 then
        return '[[বিষয়শ্রেণী:চিত্রের সারাংশ বাংলায় অনুবাদ করা প্রয়োজন]]'
    elseif namespace == 10 then
        return '[[বিষয়শ্রেণী:টেমপ্লেট বাংলায় অনুবাদ করা প্রয়োজন]]'
    else
        return ''
    end
end

local commonCategory = '[[বিষয়শ্রেণী:বাংলায় অনুবাদ করা প্রয়োজন পাতাসমূহ]]'
local span = '<span style="color:red"><abbr title="অনুগ্রহ করে এখানকার ইংরেজি লেখা বাংলায় অনুবাদ করুন">'
local close = '</abbr></span>'

local function main(frame)
    local args = frame:getParent().args
    local text = args[1] or ''

    local t = {} -- table of html-like tags removed from text

    for tag in text:gmatch ('%b<>') do
        table.insert(t, tag)
        text = text:gsub(tag, '~', 1)
    end

    local result, count = text:gsub('(%a+)', span .. '%1' .. close)
    local namespace = mw.title.getCurrentTitle().namespace
    local category = getCategoryByNamespace(namespace)

    for _, tag in ipairs(t) do
        result = result:gsub('~', tag, 1)
    end

    if count > 0 then
        if category ~= '' then
            category = category .. ' ' .. commonCategory
        else
            category = commonCategory
        end
    end

    if category ~= '' then
        return result .. category
    else
        return result
    end
end

return { main = main }