X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=modules%2Fluci-base%2Fsrc%2Ftemplate_lualib.c;h=fbab2ccf6eba5cdfc10a6fea7b71407c6213c651;hb=62102f4f0e8a88ffbdf44517f4ff737049a3f3bf;hp=d5c8dd6b4c9f1f20c3da8eeebd45bf13a20ea6ae;hpb=4623a58394b1cc71ddf24865a2f0639ee2119470;p=project%2Fluci.git diff --git a/modules/luci-base/src/template_lualib.c b/modules/luci-base/src/template_lualib.c index d5c8dd6b4c..fbab2ccf6e 100644 --- a/modules/luci-base/src/template_lualib.c +++ b/modules/luci-base/src/template_lualib.c @@ -129,6 +129,24 @@ static int template_L_change_catalog(lua_State *L) { return 1; } +static void template_L_get_translations_cb(uint32_t key, const char *val, int len, void *priv) { + lua_State *L = priv; + char hex[9]; + + luaL_checktype(L, 1, LUA_TFUNCTION); + snprintf(hex, sizeof(hex), "%08x", key); + + lua_pushvalue(L, 1); + lua_pushstring(L, hex); + lua_pushlstring(L, val, len); + lua_call(L, 2, 0); +} + +static int template_L_get_translations(lua_State *L) { + lmo_iterate(template_L_get_translations_cb, L); + return 0; +} + static int template_L_translate(lua_State *L) { size_t len; char *tr; @@ -168,6 +186,7 @@ static const luaL_reg R[] = { { "load_catalog", template_L_load_catalog }, { "close_catalog", template_L_close_catalog }, { "change_catalog", template_L_change_catalog }, + { "get_translations", template_L_get_translations }, { "translate", template_L_translate }, { "hash", template_L_hash }, { NULL, NULL }