From 09e69ec0b678fb3871c14753986510f1c51b203f Mon Sep 17 00:00:00 2001
From: Hugo Locurcio <hugo.locurcio@hugo.pro>
Date: Sun, 3 Mar 2019 20:11:18 +0100
Subject: [PATCH] Update intllib support to avoid using deprecated functions

---
 CHANGELOG.md |  4 ++++
 init.lua     | 11 ++++-------
 intllib.lua  | 44 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 52 insertions(+), 7 deletions(-)
 create mode 100644 intllib.lua

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 <http://unlicense.org>.
+
+-- 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
-- 
GitLab