Module:Msg

Revision as of 14:52, 31 August 2025 by Admin (talk | contribs) (Created page with "-- 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") -- fram...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

  1. Add new categories as separate submodules under Module:Msg/ (plural names: types, moves, items).
  2. Add keys following the format pokehero-<category>-<last word> in the respective submodule.
  3. 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