From d59e200a42a3077abeee1a8a990de4faceafa7ca Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Sat, 29 Jan 2022 09:54:24 +0000 Subject: [PATCH] better translation support --- init.lua | 23 +++++++++++++++++++++-- intllib.lua | 45 --------------------------------------------- 2 files changed, 21 insertions(+), 47 deletions(-) delete mode 100644 intllib.lua diff --git a/init.lua b/init.lua index 94878de..fddbc59 100644 --- a/init.lua +++ b/init.lua @@ -29,8 +29,27 @@ end local statistics = dofile(farming.path .. "/statistics.lua") -- Intllib -local S = minetest.get_translator and minetest.get_translator("farming") or - dofile(farming.path .. "/intllib.lua") +local S +if minetest.get_translator ~= nil then + S = minetest.get_translator("farming") -- 5.x translation function +else + if minetest.get_modpath("intllib") then + dofile(minetest.get_modpath("intllib") .. "/init.lua") + if intllib.make_gettext_pair then + gettext, ngettext = intllib.make_gettext_pair() -- new gettext method + else + gettext = intllib.Getter() -- old text file method + end + S = gettext + else -- boilerplate function + S = function(str, ...) + local args = {...} + return str:gsub("@%d+", function(match) + return args[tonumber(match:sub(2))] + end) + end + end +end farming.intllib = S diff --git a/intllib.lua b/intllib.lua deleted file mode 100644 index 6669d72..0000000 --- a/intllib.lua +++ /dev/null @@ -1,45 +0,0 @@ - --- 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