From 83db3d94dd94eb949b96a961f9a821d0b9c3bf00 Mon Sep 17 00:00:00 2001 From: Caleb Maclennan Date: Wed, 12 Jun 2024 14:17:37 +0300 Subject: [PATCH] chore(languages): Warn when setting a language that has not been loaded --- core/languages.lua | 6 +++--- core/settings.lua | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/core/languages.lua b/core/languages.lua index 40695683c..c2b262176 100644 --- a/core/languages.lua +++ b/core/languages.lua @@ -10,17 +10,17 @@ loadkit.register("ftl", function (file) return assert(fluent:add_messages(contents)) end) -local loadonce = {} +SILE.scratch.loaded_languages = {} SILE.languageSupport = { languages = {}, loadLanguage = function (language) language = language or SILE.settings:get("document.language") language = cldr.locales[language] and language or "und" - if loadonce[language] then + if SILE.scratch.loaded_languages[language] then return end - loadonce[language] = true + SILE.scratch.loaded_languages[language] = true local langresource = string.format("languages.%s", language) local gotlang, lang = pcall(require, langresource) if not gotlang then diff --git a/core/settings.lua b/core/settings.lua index 668340024..c5e8a45e0 100644 --- a/core/settings.lua +++ b/core/settings.lua @@ -20,6 +20,13 @@ function settings:_init () type = "string", default = "en", hook = function (language) + if SILE.scratch.loaded_languages and not SILE.scratch.loaded_languages[language] then + SU.warn(([[Setting document.language to '%s', but support for '%s' has not been loaded! + + Consider invoking \language[main=%s] which loads language support before + setting it or manually calling SILE.languageSupport.loadLanguage("%s"). + ]]):format(language, language, language, language)) + end fluent:set_locale(language) end, help = "Locale for localized language support",