Module:I18n

From Bodhicitta
Revision as of 17:54, 23 September 2025 by Jeremi (talk | contribs) ((by SublimeText.Mediawiker))

Documentation for this module may be created at Module:I18n/doc

-- Module:I18n
local p = {}

function p.text(frame)
    local args = frame:getParent().args
    local en = args.en or args[1] or ''
    local tib = args.tib or args[2] or ''
    local bo = args.bo or tib  -- Tibetan in Tibetan script
    local default = args.default or 'en'
    
    -- Get user language preference (fallback to default if not available)
    local lang = default
    if mw.user and mw.user.getOption then
        lang = mw.user.getOption('bca-language') or default
    end
    
    -- Create the HTML structure
    local html = mw.html.create('span')
        :addClass('i18n-text')
        :attr('data-lang-en', en)
        :attr('data-lang-tib', tib)
        :attr('data-lang-bo', bo)
    
    -- Set initial display based on user preference or default
    if lang == 'bo' and bo ~= '' then
        html:wikitext(bo)
    elseif lang == 'tib' and tib ~= '' then
        html:wikitext(tib)
    else
        html:wikitext(en)
    end
    
    return tostring(html)
end

-- Alternative simpler version that just returns the appropriate language
function p.simple(frame)
    local args = frame:getParent().args
    local en = args.en or args[1] or ''
    local tib = args.tib or args[2] or ''
    local bo = args.bo or tib
    local lang = args.lang or 'en'
    
    if lang == 'bo' and bo ~= '' then
        return bo
    elseif lang == 'tib' and tib ~= '' then
        return tib
    else
        return en
    end
end

-- Function to get current user's language preference
function p.getUserLang(frame)
    local default = frame.args.default or 'en'
    
    if mw.user and mw.user.getOption then
        return mw.user.getOption('bca-language') or default
    end
    
    return default
end

return p