Files
Gleb Mazovetskiy 17e6da40f8 Lua: Improve function/property handling
1. Follows advice from
   https://sol2.readthedocs.io/en/latest/functions.html to use
   `set_function` when binding functions.
2. Adds autocomplete support for userdata methods.
3. Simplifies property bindings and improves string handling.
2025-07-20 17:46:35 +02:00

32 lines
1.2 KiB
C++

#include "lua/modules/i18n.hpp"
#include <string_view>
#include <fmt/format.h>
#include <sol/sol.hpp>
#include "lua/metadoc.hpp"
#include "utils/language.h"
namespace devilution {
sol::table LuaI18nModule(sol::state_view &lua)
{
sol::table table = lua.create_table();
LuaSetDocFn(table, "language_code", "()",
"Returns the current language code", GetLanguageCode);
LuaSetDocFn(table, "translate", "(text: string)",
"Translates the given string", [](const char *key) { return LanguageTranslate(key); });
LuaSetDocFn(table, "plural_translate", "(singular: string, plural: string, count: integer)",
"Returns a singular or plural translation for the given keys and count", [](const char *singular, std::string_view plural, int count) {
return fmt::format(fmt::runtime(LanguagePluralTranslate(singular, plural, count)), count);
});
LuaSetDocFn(table, "particular_translate", "(context: string, text: string)",
"Returns the translation for the given context identifier and key.", LanguageParticularTranslate);
LuaSetDocFn(table, "is_small_font_tall", "()",
"Whether the language's small font is tall (16px)", IsSmallFontTall);
return table;
}
} // namespace devilution