Module:Msg
Module:Msg
This Lua module provides a page-language-aware message lookup system for PokeHero wiki content.
Usage
Use the module in wikitext with:
{{#invoke:Msg|msg|<category>|<last word>|lang=<language>}}
category
– the category of messages: "types", "moves", "items", etc.last word
– the last part of the key. The module constructs the full key internally as:
pokehero-<category>-<last word>
lang
– optional. Overrides the page language (defaults to en).
Example
{{#invoke:Msg|msg|type|energy}}
This will display the translation for the page language. English is used as fallback if the page language is unavailable.
Fallback behavior
- If the category table does not exist → returns
<full key> (missing category table: <category>)
. - If the key does not exist in the table → returns
<full key> (missing key in category <category>)
. - If the translation for the page language does not exist → falls back to English; if English is missing, returns
<full key> (missing translations in category <category>)
.
Extending
- Add new categories as separate submodules under
Module:Msg/
(plural names:types
,moves
,items
). - Add keys following the format
pokehero-<category>-<last word>
in the respective submodule. - The main module automatically loads only the needed table for efficiency.
-- Module:Msg
local p = {}
-- Load the data from submodules
local data = {
types = mw.loadData("Module:Msg/types"),
moves = mw.loadData("Module:Msg/moves"),
items = mw.loadData("Module:Msg/items")
}
-- Helper to get page language
local function getPageLang()
return mw.getCurrentFrame():preprocess("{{PAGELANGUAGE}}")
end
-- Lookup function
-- frame.args[1] = key (e.g., "pokehero-type-energy")
-- frame.args[2] = category (optional, e.g., "types")
-- frame.args.lang = optional language override
function p.msg(frame)
local key = frame.args[1]
local category = frame.args[2] or "types"
local lang = frame.args.lang or getPageLang()
local catTable = data[category]
if catTable and catTable[key] then
if catTable[key][lang] then
return catTable[key][lang]
elseif catTable[key]["en"] then
return catTable[key]["en"]
end
end
return key -- fallback
end
return p