diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ec2e51..68d6678 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +### Changed + +- Update intllib support to avoid using deprecated functions. + ### Added - Brazilian and Dutch translations. diff --git a/init.lua b/init.lua index 08bc0a6..e389778 100644 --- a/init.lua +++ b/init.lua @@ -10,15 +10,12 @@ Licensed under the zlib license. See LICENSE.md for more information. moreores = {} -local S -if minetest.get_modpath("intllib") then - S = intllib.Getter() -else - S = function(s) return s end -end - local modpath = minetest.get_modpath("moreores") +local S, NS = dofile(modpath .. "/intllib.lua") +moreores.S = S +moreores.NS = NS + dofile(modpath .. "/_config.txt") -- `mg` mapgen support diff --git a/intllib.lua b/intllib.lua new file mode 100644 index 0000000..c7af2c2 --- /dev/null +++ b/intllib.lua @@ -0,0 +1,44 @@ +-- Fallback functions for when `intllib` is not installed. +-- Code released under Unlicense . + +-- Get the latest version of this file at: +-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua + +local function format(str, ...) + local args = { ... } + local function repl(escape, open, num, close) + if escape == "" then + local replacement = tostring(args[tonumber(num)]) + if open == "" then + replacement = replacement..close + end + return replacement + else + return "@"..open..num..close + end + end + return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) +end + +local gettext, ngettext +if minetest.get_modpath("intllib") then + if intllib.make_gettext_pair then + -- New method using gettext. + gettext, ngettext = intllib.make_gettext_pair() + else + -- Old method using text files. + gettext = intllib.Getter() + end +end + +-- Fill in missing functions. + +gettext = gettext or function(msgid, ...) + return format(msgid, ...) +end + +ngettext = ngettext or function(msgid, msgid_plural, n, ...) + return format(n==1 and msgid or msgid_plural, ...) +end + +return gettext, ngettext