From: Antoine Cellerier Date: Sun, 27 Dec 2009 22:01:45 +0000 (+0100) Subject: Experimental lua gettext support. X-Git-Tag: 1.1.0-ff~1687 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=16cb266cb6f46c62213d0a5723b21a11110267b9;p=vlc Experimental lua gettext support. --- diff --git a/modules/misc/lua/Modules.am b/modules/misc/lua/Modules.am index 0b6b38b3b2..22aa829bd5 100644 --- a/modules/misc/lua/Modules.am +++ b/modules/misc/lua/Modules.am @@ -7,6 +7,7 @@ SOURCES_lua = \ libs.h \ libs/acl.c \ libs/configuration.c \ + libs/gettext.c \ libs/httpd.c \ libs/input.c \ libs/input.h \ diff --git a/modules/misc/lua/intf.c b/modules/misc/lua/intf.c index 538faf1475..5d73547c77 100644 --- a/modules/misc/lua/intf.c +++ b/modules/misc/lua/intf.c @@ -211,6 +211,7 @@ int Open_LuaIntf( vlc_object_t *p_this ) luaopen_video( L ); luaopen_vlm( L ); luaopen_volume( L ); + luaopen_gettext( L ); /* clean up */ lua_pop( L, 1 ); diff --git a/modules/misc/lua/libs.h b/modules/misc/lua/libs.h index 689025e6ff..7bd8701105 100644 --- a/modules/misc/lua/libs.h +++ b/modules/misc/lua/libs.h @@ -42,5 +42,6 @@ void luaopen_variables( lua_State * ); void luaopen_video( lua_State * ); void luaopen_vlm( lua_State * ); void luaopen_volume( lua_State * ); +void luaopen_gettext( lua_State * ); #endif diff --git a/modules/misc/lua/libs/gettext.c b/modules/misc/lua/libs/gettext.c new file mode 100644 index 0000000000..f51f83050e --- /dev/null +++ b/modules/misc/lua/libs/gettext.c @@ -0,0 +1,74 @@ +/***************************************************************************** + * gettext.c + ***************************************************************************** + * Copyright (C) 2009 the VideoLAN team + * $Id$ + * + * Authors: Antoine Cellerier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + *****************************************************************************/ + +/***************************************************************************** + * Preamble + *****************************************************************************/ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include /* Low level lua C API */ +#include /* Higher level C API */ +#include /* Lua libs */ + +#include "../vlc.h" +#include "../libs.h" + +/***************************************************************************** + * Libvlc gettext support + *****************************************************************************/ +static int vlclua_gettext( lua_State *L ) +{ + lua_pushstring( L, _( luaL_checkstring( L, 1 ) ) ); + return 1; +} + +static int vlclua_gettext_noop( lua_State *L ) +{ + (void)L; + return 1; +} + +/***************************************************************************** + * + *****************************************************************************/ +static const luaL_Reg vlclua_gettext_reg[] = { + { "_", vlclua_gettext }, + { "N_", vlclua_gettext_noop }, + + { NULL, NULL } +}; + +void luaopen_gettext( lua_State *L ) +{ + lua_newtable( L ); + luaL_register( L, NULL, vlclua_gettext_reg ); + lua_setfield( L, -2, "gettext" ); +} diff --git a/share/lua/intf/rc.lua b/share/lua/intf/rc.lua index c02d0a9172..af78f4ce04 100644 --- a/share/lua/intf/rc.lua +++ b/share/lua/intf/rc.lua @@ -61,12 +61,15 @@ skip2 = function(foo) return skip(skip(foo)) end setarg = common.setarg strip = common.strip +_ = vlc.gettext._ +N_ = vlc.gettext.N_ + --[[ Setup default environement ]] env = { prompt = "> "; width = 70; autocompletion = 1; autoalias = 1; - welcome = "Remote control interface initialized. Type `help' for help."; + welcome = _("Remote control interface initialized. Type `help' for help."); flatplaylist = 0; }