]> git.sesse.net Git - vlc/commitdiff
Experimental lua gettext support.
authorAntoine Cellerier <dionoea@videolan.org>
Sun, 27 Dec 2009 22:01:45 +0000 (23:01 +0100)
committerAntoine Cellerier <dionoea@videolan.org>
Sun, 27 Dec 2009 22:01:45 +0000 (23:01 +0100)
modules/misc/lua/Modules.am
modules/misc/lua/intf.c
modules/misc/lua/libs.h
modules/misc/lua/libs/gettext.c [new file with mode: 0644]
share/lua/intf/rc.lua

index 0b6b38b3b2e330dcf2fd9fcc1c2cc4d32f3f6b2d..22aa829bd557a603a8ab2766d262ef075e2017b7 100644 (file)
@@ -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 \
index 538faf147578efb799502e567c7f6d9160cce98c..5d73547c774a6db2c65ffd888971b9c29b82d37d 100644 (file)
@@ -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 );
index 689025e6ffc3d5c0b66ebe4045cc453d65c415cc..7bd8701105467944a9b3b90915ddf69200e7b91b 100644 (file)
@@ -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 (file)
index 0000000..f51f830
--- /dev/null
@@ -0,0 +1,74 @@
+/*****************************************************************************
+ * gettext.c
+ *****************************************************************************
+ * Copyright (C) 2009 the VideoLAN team
+ * $Id$
+ *
+ * Authors: Antoine Cellerier <dionoea at videolan tod org>
+ *
+ * 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 <vlc_fixups.h>
+
+#include <lua.h>        /* Low level lua C API */
+#include <lauxlib.h>    /* Higher level C API */
+#include <lualib.h>     /* 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" );
+}
index c02d0a917252906c8a1e7c998e57cb014b446ad7..af78f4ce04efd35ab35cb24f2ca54268cbadf971 100644 (file)
@@ -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;
       }