Zelda Wiki

Want to contribute to this wiki?
Sign up for an account, and get started!

Come join the Zelda Wiki community Discord server!

READ MORE

Zelda Wiki
(add(plural))
m (Protected "Module:I18n": Critical wiki page ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))
(2 intermediate revisions by the same user not shown)
Line 50: Line 50:
 
types = {
 
types = {
 
artwork = {"Artwork", "Artwork"},
 
artwork = {"Artwork", "Artwork"},
  +
icon = {"Icon", "Icons"},
 
map = {"Map", "Maps"},
 
map = {"Map", "Maps"},
 
model = {"Model", "Models"},
 
model = {"Model", "Models"},
  +
print = {"Printed Media", "Printed Media"},
 
screenshot = {"Screenshot", "Screenshots"},
 
screenshot = {"Screenshot", "Screenshots"},
 
sprite = {"Sprite", "Sprites"},
 
sprite = {"Sprite", "Sprites"},
render = {"Render", "Renders"}
+
symbol = {"Symbol", "Symbols"},
  +
render = {"Render", "Renders"},
 
}
 
}
 
}
 
}

Revision as of 18:32, 4 August 2020

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

local p = {}

local utilsString = require("Module:UtilsString")
local utilsTable = require("Module:UtilsTable")

local strings = {}

function p.loadStrings(tbl)
	strings = utilsTable.merge({}, strings, tbl)
end

function p.Message(frame)
	local count = frame.args[2]
	if count == "plural" then
		count = 2
	elseif count then
		count = tonumber(count)
	end
	return p.getString(frame.args[1], {
		count = count
	})
end

function p.getString(path, vars)
	local code = mw.getContentLanguage():getCode()
	local localeStrings = strings[code]
	local subkeys = utilsString.split(path, "%.")
	
	local result = localeStrings
	for _, subkey in ipairs(subkeys) do
		result = result[subkey]
	end
	if type(result) == "table" then
		if vars and vars.count and vars.count > 1 then
			result = result[2]
		else
			result = result[1]
		end
	end
	return utilsString.interpolate(result, vars)
end

function p.plural(path)
	return p.getString(path, {count = 2})
end

p.loadStrings({
	en = {
		files = {
			types = {
				artwork = {"Artwork", "Artwork"},
				icon = {"Icon", "Icons"},
				map = {"Map", "Maps"},
				model = {"Model", "Models"},
				print = {"Printed Media", "Printed Media"},
				screenshot = {"Screenshot", "Screenshots"},
				sprite = {"Sprite", "Sprites"},
				symbol = {"Symbol", "Symbols"},
				render = {"Render", "Renders"},
			}
		}
	}
})

return p