<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://marovi.ai/index.php?action=history&amp;feed=atom&amp;title=Module%3AGlossary</id>
	<title>Module:Glossary - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://marovi.ai/index.php?action=history&amp;feed=atom&amp;title=Module%3AGlossary"/>
	<link rel="alternate" type="text/html" href="https://marovi.ai/index.php?title=Module:Glossary&amp;action=history"/>
	<updated>2026-04-27T19:27:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://marovi.ai/index.php?title=Module:Glossary&amp;diff=2174&amp;oldid=prev</id>
		<title>DeployBot: [deploy-bot] Deploy Glossary Lua module (v1.3.0)</title>
		<link rel="alternate" type="text/html" href="https://marovi.ai/index.php?title=Module:Glossary&amp;diff=2174&amp;oldid=prev"/>
		<updated>2026-04-26T23:37:19Z</updated>

		<summary type="html">&lt;p&gt;[deploy-bot] Deploy Glossary Lua module (v1.3.0)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local data = mw.loadData(&amp;quot;Module:Glossary/data&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local function normalize(term)&lt;br /&gt;
    if not term then return &amp;quot;&amp;quot; end&lt;br /&gt;
    return mw.ustring.lower(mw.text.trim(term))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function findEntry(term)&lt;br /&gt;
    local key = normalize(term)&lt;br /&gt;
    if data[key] then&lt;br /&gt;
        return data[key], key&lt;br /&gt;
    end&lt;br /&gt;
    for entryKey, entry in pairs(data) do&lt;br /&gt;
        if entry.aliases then&lt;br /&gt;
            for _, alias in ipairs(entry.aliases) do&lt;br /&gt;
                if normalize(alias) == key then&lt;br /&gt;
                    return entry, entryKey&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return nil, nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function detectLanguage(frame)&lt;br /&gt;
    local title = mw.title.getCurrentTitle()&lt;br /&gt;
    local subpage = title.subpageText&lt;br /&gt;
    if subpage == &amp;quot;es&amp;quot; or subpage == &amp;quot;zh&amp;quot; or subpage == &amp;quot;fr&amp;quot; or subpage == &amp;quot;pt&amp;quot; then&lt;br /&gt;
        return subpage&lt;br /&gt;
    end&lt;br /&gt;
    return &amp;quot;en&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getDefinition(entry, lang)&lt;br /&gt;
    if lang ~= &amp;quot;en&amp;quot; and entry[lang] then&lt;br /&gt;
        return entry[lang]&lt;br /&gt;
    end&lt;br /&gt;
    return entry.short&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.term(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local termKey = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local displayText = args[2] or termKey&lt;br /&gt;
&lt;br /&gt;
    local entry, _ = findEntry(termKey)&lt;br /&gt;
&lt;br /&gt;
    if not entry then&lt;br /&gt;
        return &amp;#039;&amp;lt;span class=&amp;quot;marovi-term&amp;quot;&amp;gt;&amp;#039; .. displayText .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local lang = detectLanguage(frame)&lt;br /&gt;
    local definition = getDefinition(entry, lang)&lt;br /&gt;
    local articleLink = entry.article or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local attrs = {&lt;br /&gt;
        &amp;#039;class=&amp;quot;marovi-term&amp;quot;&amp;#039;,&lt;br /&gt;
        &amp;#039;data-term=&amp;quot;&amp;#039; .. mw.text.nowiki(termKey) .. &amp;#039;&amp;quot;&amp;#039;,&lt;br /&gt;
        &amp;#039;data-definition=&amp;quot;&amp;#039; .. mw.text.nowiki(definition) .. &amp;#039;&amp;quot;&amp;#039;,&lt;br /&gt;
    }&lt;br /&gt;
    if articleLink ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(attrs, &amp;#039;data-article=&amp;quot;&amp;#039; .. mw.text.nowiki(articleLink) .. &amp;#039;&amp;quot;&amp;#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return &amp;#039;&amp;lt;span &amp;#039; .. table.concat(attrs, &amp;#039; &amp;#039;) .. &amp;#039;&amp;gt;&amp;#039; .. displayText .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.definition(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local termKey = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local lang = args[&amp;quot;lang&amp;quot;] or detectLanguage(frame)&lt;br /&gt;
&lt;br /&gt;
    local entry, _ = findEntry(termKey)&lt;br /&gt;
    if not entry then&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return getDefinition(entry, lang)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>DeployBot</name></author>
	</entry>
</feed>