Модуль:Песочница/D6194c-1cc/I18n

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Документация
require('strict')

local p = {}

local Localization = {
	__call = function(self, ...)
		if arg.n == 0 then
			return self
		end
		local v = self._
		for i = 1, arg.n do
			v = v[arg[i]]
			if not v then
				return arg[arg.n]
			end
		end
		return v
	end
}

function Localization:new(l10nPath)
	local langObj = mw.getContentLanguage()
	local langPath
	if not l10nPath then
		local frame = mw.getCurrentFrame()
		l10nPath = frame:getTitle() .. '/l10n'
	end
	langPath = l10nPath .. '/' .. langObj:getCode()

	local obj = {
		_ = mw.loadData(langPath),
	}
	setmetatable(obj, self)
	self.__index = obj._

	return obj
end

function p.load(l10nPath)
	return Localization:new(l10nPath)
end

return p