On Wed, Sep 20, 2006 at 07:48:11PM +0100, Daniel P. Berrange wrote: > Attached is an updated version of my previous patch to add gettext support > to libvirt. It should be pretty self-explanatory - basically wrapping all > strings with _(..) or gettext_noop(...) where appropriate. I also took > the opportunity to make some of the messages more consistent with each > other. Opps, used old skool diff format. Re-attaching as a unified diff this time... Dan. -- |=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=| |=- Perl modules: http://search.cpan.org/~danberr/ -=| |=- Projects: http://freshmeat.net/~danielpb/ -=| |=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|
Index: Makefile.am =================================================================== RCS file: /data/cvs/libvirt/Makefile.am,v retrieving revision 1.11 diff -u -r1.11 Makefile.am --- Makefile.am 28 Jun 2006 18:19:13 -0000 1.11 +++ Makefile.am 20 Sep 2006 19:55:46 -0000 @@ -1,6 +1,8 @@ ## Process this file with automake to produce Makefile.in -SUBDIRS = src include docs @PYTHON_SUBDIR@ tests proxy +SUBDIRS = src include docs @PYTHON_SUBDIR@ tests proxy po + +ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = libvirt.spec.in libvirt.spec COPYING.LIB \ libvirt.pc.in libvirt.pc TODO AUTHORS ChangeLog \ Index: autogen.sh =================================================================== RCS file: /data/cvs/libvirt/autogen.sh,v retrieving revision 1.4 diff -u -r1.4 autogen.sh --- autogen.sh 6 Jul 2006 09:29:34 -0000 1.4 +++ autogen.sh 20 Sep 2006 19:55:46 -0000 @@ -8,6 +8,14 @@ cd $srcdir DIE=0 +(autopoint --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "You must have autopoint installed to compile libvirt." + echo "Download the appropriate package for your distribution," + echo "or see http://www.gnu.org/software/gettext" + DIE=1 +} + (autoconf --version) < /dev/null > /dev/null 2>&1 || { echo echo "You must have autoconf installed to compile libvirt." @@ -46,6 +54,8 @@ echo "to pass any to it, please specify them on the $0 command line." fi +autopoint --force +#rm -rf m4 libtoolize --copy --force aclocal $ACLOCAL_FLAGS automake --add-missing Index: config.h.in =================================================================== RCS file: /data/cvs/libvirt/config.h.in,v retrieving revision 1.4 diff -u -r1.4 config.h.in --- config.h.in 10 Feb 2006 10:11:21 -0000 1.4 +++ config.h.in 20 Sep 2006 19:55:46 -0000 @@ -1,8 +1,30 @@ /* config.h.in. Generated from configure.in by autoheader. */ +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS + +/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the + CoreFoundation framework. */ +#undef HAVE_CFLOCALECOPYCURRENT + +/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in + the CoreFoundation framework. */ +#undef HAVE_CFPREFERENCESCOPYAPPVALUE + +/* Define if the GNU dcgettext() function is already present or preinstalled. + */ +#undef HAVE_DCGETTEXT + /* Define to 1 if you have the <dlfcn.h> header file. */ #undef HAVE_DLFCN_H +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define if you have the iconv() function. */ +#undef HAVE_ICONV + /* Define to 1 if you have the <inttypes.h> header file. */ #undef HAVE_INTTYPES_H Index: configure.in =================================================================== RCS file: /data/cvs/libvirt/configure.in,v retrieving revision 1.43 diff -u -r1.43 configure.in --- configure.in 12 Sep 2006 01:16:22 -0000 1.43 +++ configure.in 20 Sep 2006 19:55:46 -0000 @@ -246,6 +246,10 @@ AC_SUBST(PYTHON_INCLUDES) AC_SUBST(PYTHON_SITE_PACKAGES) +AM_GNU_GETTEXT_VERSION([0.14.1]) +AM_GNU_GETTEXT([external]) +ALL_LINGUAS=en_GB + # very annoying rm -f COPYING cp COPYING.LIB COPYING @@ -254,6 +258,7 @@ docs/examples/Makefile docs/devhelp/Makefile \ docs/examples/python/Makefile \ libvirt.pc libvirt.spec \ + po/Makefile.in \ include/libvirt/Makefile include/libvirt/libvirt.h \ python/Makefile python/tests/Makefile \ tests/Makefile proxy/Makefile \ Index: proxy/Makefile.am =================================================================== RCS file: /data/cvs/libvirt/proxy/Makefile.am,v retrieving revision 1.6 diff -u -r1.6 Makefile.am --- proxy/Makefile.am 9 Aug 2006 15:21:16 -0000 1.6 +++ proxy/Makefile.am 20 Sep 2006 19:55:50 -0000 @@ -2,8 +2,8 @@ INCLUDES = -I$(top_builddir)/include -I@top_srcdir@/include \ -I@top_srcdir@/proxy -I@top_srcdir@/src @LIBXML_CFLAGS@ \ - -DPROXY - + -DPROXY -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ + -DGETTEXT_PACKAGE=\"$(PACKAGE)\" libexec_PROGRAMS = libvirt_proxy Index: proxy/libvirt_proxy.c =================================================================== RCS file: /data/cvs/libvirt/proxy/libvirt_proxy.c,v retrieving revision 1.9 diff -u -r1.9 libvirt_proxy.c --- proxy/libvirt_proxy.c 5 Sep 2006 06:48:44 -0000 1.9 +++ proxy/libvirt_proxy.c 20 Sep 2006 19:55:51 -0000 @@ -715,6 +715,19 @@ int main(int argc, char **argv) { int i; + if (!setlocale(LC_ALL, "")) { + perror("setlocale"); + return -1; + } + if (!bindtextdomain(GETTEXT_PACKAGE, LOCALEBASEDIR)) { + perror("bindtextdomain"); + return -1; + } + if (!textdomain(GETTEXT_PACKAGE)) { + perror("textdomain"); + return -1; + } + for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-v")) { debug++; @@ -725,7 +738,8 @@ exit(1); } } - + + if (geteuid() != 0) { fprintf(stderr, "%s must be run as root or suid\n", argv[0]); /* exit(1); */ Index: src/Makefile.am =================================================================== RCS file: /data/cvs/libvirt/src/Makefile.am,v retrieving revision 1.27 diff -u -r1.27 Makefile.am --- src/Makefile.am 29 Aug 2006 22:27:07 -0000 1.27 +++ src/Makefile.am 20 Sep 2006 19:55:51 -0000 @@ -1,7 +1,8 @@ ## Process this file with automake to produce Makefile.in INCLUDES = -I$(top_builddir)/include -I@top_srcdir@/include @LIBXML_CFLAGS@ \ - -DBINDIR=\""$(libexecdir)"\" + -DBINDIR=\""$(libexecdir)"\" -DLOCALEBASEDIR=\""$(datadir)/locale"\" \ + -DGETTEXT_PACKAGE=\"$(PACKAGE)\" DEPS = libvirt.la LDADDS = @STATIC_BINARIES@ libvirt.la VIRSH_LIBS = @VIRSH_LIBS@ Index: src/conf.c =================================================================== RCS file: /data/cvs/libvirt/src/conf.c,v retrieving revision 1.3 diff -u -r1.3 conf.c --- src/conf.c 3 Sep 2006 17:46:32 -0000 1.3 +++ src/conf.c 20 Sep 2006 19:55:51 -0000 @@ -159,7 +159,7 @@ ret = (virConfPtr) malloc(sizeof(virConf)); if (ret == NULL) { - virConfError(NULL, VIR_ERR_NO_MEMORY, "Allocating configuration", 0); + virConfError(NULL, VIR_ERR_NO_MEMORY, _("allocating configuration"), 0); return(NULL); } memset(ret, 0, sizeof(virConf)); @@ -193,7 +193,7 @@ ret = (virConfEntryPtr) malloc(sizeof(virConfEntry)); if (ret == NULL) { - virConfError(NULL, VIR_ERR_NO_MEMORY, "Allocating configuration", 0); + virConfError(NULL, VIR_ERR_NO_MEMORY, _("allocating configuration"), 0); return(NULL); } memset(ret, 0, sizeof(virConfEntry)); @@ -328,7 +328,7 @@ NEXT; } if ((ctxt->cur >= ctxt->end) || (!IS_DIGIT(CUR))) { - virConfError(NULL, VIR_ERR_CONF_SYNTAX, "unterminated number", + virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("unterminated number"), ctxt->line); return(-1); } @@ -360,7 +360,7 @@ while ((ctxt->cur < ctxt->end) && (CUR != '\'') && (!IS_EOL(CUR))) NEXT; if (CUR != '\'') { - virConfError(NULL, VIR_ERR_CONF_SYNTAX, "unterminated string", + virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("unterminated string"), ctxt->line); return(NULL); } @@ -377,7 +377,7 @@ } if ((ctxt->cur[0] != '"') || (ctxt->cur[1] != '"') || (ctxt->cur[2] != '"')) { - virConfError(NULL, VIR_ERR_CONF_SYNTAX, "unterminated string", + virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("unterminated string"), ctxt->line); return(NULL); } @@ -389,7 +389,7 @@ while ((ctxt->cur < ctxt->end) && (CUR != '"') && (!IS_EOL(CUR))) NEXT; if (CUR != '"') { - virConfError(NULL, VIR_ERR_CONF_SYNTAX, "unterminated string", + virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("unterminated string"), ctxt->line); return(NULL); } @@ -417,7 +417,7 @@ SKIP_SPACES; if (ctxt->cur >= ctxt->end) { - virConfError(NULL, VIR_ERR_CONF_SYNTAX, "expecting a value", + virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("expecting a value"), ctxt->line); return(NULL); } @@ -437,7 +437,7 @@ while ((ctxt->cur < ctxt->end) && (CUR != ']')) { if (CUR != ',') { virConfError(NULL, VIR_ERR_CONF_SYNTAX, - "expecting a separator in list", ctxt->line); + _("expecting a separator in list"), ctxt->line); virConfFreeList(lst); return(NULL); } @@ -460,7 +460,7 @@ NEXT; } else { virConfError(NULL, VIR_ERR_CONF_SYNTAX, - "list is not closed with ] ", ctxt->line); + _("list is not closed with ] "), ctxt->line); virConfFreeList(lst); return(NULL); } @@ -470,13 +470,13 @@ } type = VIR_CONF_LONG; } else { - virConfError(NULL, VIR_ERR_CONF_SYNTAX, "expecting a value", + virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("expecting a value"), ctxt->line); return(NULL); } ret = (virConfValuePtr) malloc(sizeof(virConfValue)); if (ret == NULL) { - virConfError(NULL, VIR_ERR_NO_MEMORY, "Allocating configuration", 0); + virConfError(NULL, VIR_ERR_NO_MEMORY, _("allocating configuration"), 0); if (str != NULL) free(str); return(NULL); @@ -508,14 +508,14 @@ base = ctxt->cur; /* TODO: probably need encoding support and UTF-8 parsing ! */ if (!IS_CHAR(CUR)) { - virConfError(NULL, VIR_ERR_CONF_SYNTAX, "expecting a name", ctxt->line); + virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("expecting a name"), ctxt->line); return(NULL); } while ((ctxt->cur < ctxt->end) && ((IS_CHAR(CUR)) || (IS_DIGIT(CUR)) || (CUR == '_'))) NEXT; ret = strndup(base, ctxt->cur - base); if (ret == NULL) { - virConfError(NULL, VIR_ERR_NO_MEMORY, "Allocating configuration", + virConfError(NULL, VIR_ERR_NO_MEMORY, _("allocating configuration"), ctxt->line); return(NULL); } @@ -543,7 +543,7 @@ while ((ctxt->cur < ctxt->end) && (!IS_EOL(CUR))) NEXT; comm = strndup(base, ctxt->cur - base); if (comm == NULL) { - virConfError(NULL, VIR_ERR_NO_MEMORY, "Allocating configuration", + virConfError(NULL, VIR_ERR_NO_MEMORY, _("allocating configuration"), ctxt->line); return(-1); } @@ -571,7 +571,7 @@ NEXT; SKIP_BLANKS; } else { - virConfError(NULL, VIR_ERR_CONF_SYNTAX, "expecting a separator", + virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("expecting a separator"), ctxt->line); return(-1); } @@ -603,7 +603,7 @@ return(-1); SKIP_SPACES; if (CUR != '=') { - virConfError(NULL, VIR_ERR_CONF_SYNTAX, "expecting an assignment", + virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("expecting an assignment"), ctxt->line); return(-1); } @@ -621,7 +621,7 @@ while ((ctxt->cur < ctxt->end) && (!IS_EOL(CUR))) NEXT; comm = strndup(base, ctxt->cur - base); if (comm == NULL) { - virConfError(NULL, VIR_ERR_NO_MEMORY, "Allocating configuration", + virConfError(NULL, VIR_ERR_NO_MEMORY, _("allocating configuration"), ctxt->line); free(name); virConfFreeValue(value); @@ -816,7 +816,7 @@ fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR ); if (fd < 0) { - virConfError(NULL, VIR_ERR_WRITE_FAILED, "failed to open file", 0); + virConfError(NULL, VIR_ERR_WRITE_FAILED, _("failed to open file"), 0); ret = -1; goto error; } @@ -824,7 +824,7 @@ ret = write(fd, buf->content, buf->use); close(fd); if (ret != (int) buf->use) { - virConfError(NULL, VIR_ERR_WRITE_FAILED, "failed to save content", 0); + virConfError(NULL, VIR_ERR_WRITE_FAILED, _("failed to save content"), 0); ret = -1; goto error; } Index: src/hash.c =================================================================== RCS file: /data/cvs/libvirt/src/hash.c,v retrieving revision 1.9 diff -u -r1.9 hash.c --- src/hash.c 29 May 2006 18:03:27 -0000 1.9 +++ src/hash.c 20 Sep 2006 19:55:51 -0000 @@ -528,7 +528,7 @@ ret = (virConnectPtr) malloc(sizeof(virConnect)); if (ret == NULL) { - virHashError(NULL, VIR_ERR_NO_MEMORY, "Allocating connection"); + virHashError(NULL, VIR_ERR_NO_MEMORY, _("allocating connection")); goto failed; } memset(ret, 0, sizeof(virConnect)); @@ -625,13 +625,13 @@ */ ret = (virDomainPtr) malloc(sizeof(virDomain)); if (ret == NULL) { - virHashError(conn, VIR_ERR_NO_MEMORY, "Allocating domain"); + virHashError(conn, VIR_ERR_NO_MEMORY, _("allocating domain")); goto error; } memset(ret, 0, sizeof(virDomain)); ret->name = strdup(name); if (ret->name == NULL) { - virHashError(conn, VIR_ERR_NO_MEMORY, "Allocating domain"); + virHashError(conn, VIR_ERR_NO_MEMORY, _("allocating domain")); goto error; } ret->magic = VIR_DOMAIN_MAGIC; @@ -642,7 +642,7 @@ if (virHashAddEntry(conn->domains, name, ret) < 0) { virHashError(conn, VIR_ERR_INTERNAL_ERROR, - "Failed to add domain to connectio hash table"); + _("failed to add domain to connection hash table")); goto error; } conn->uses++; @@ -694,7 +694,7 @@ if (virHashRemoveEntry(conn->domains, domain->name, NULL) < 0) { virHashError(conn, VIR_ERR_INTERNAL_ERROR, - "domain missing from connection hash table"); + _("domain missing from connection hash table")); goto done; } domain->magic = -1; Index: src/internal.h =================================================================== RCS file: /data/cvs/libvirt/src/internal.h,v retrieving revision 1.23 diff -u -r1.23 internal.h --- src/internal.h 28 Jun 2006 18:19:13 -0000 1.23 +++ src/internal.h 20 Sep 2006 19:55:53 -0000 @@ -16,11 +16,16 @@ #include "libvirt/libvirt.h" #include "libvirt/virterror.h" #include "driver.h" +#include <libintl.h> #ifdef __cplusplus extern "C" { #endif +#define _(str) dgettext(GETTEXT_PACKAGE, (str)) +#define _N(str) dgettext(GETTEXT_PACKAGE, (str)) +#define gettext_noop(str) (str) + /** * ATTRIBUTE_UNUSED: * Index: src/libvirt.c =================================================================== RCS file: /data/cvs/libvirt/src/libvirt.c,v retrieving revision 1.45 diff -u -r1.45 libvirt.c --- src/libvirt.c 30 Aug 2006 14:21:03 -0000 1.45 +++ src/libvirt.c 20 Sep 2006 19:55:53 -0000 @@ -60,10 +60,13 @@ return(0); initialized = 1; + if (!bindtextdomain(GETTEXT_PACKAGE, LOCALEBASEDIR)) + return (-1); + /* * should not be needed but... */ - for (i = 0;i < MAX_DRIVERS;i++) + for (i = 0;i < MAX_DRIVERS;i++) virDriverTab[i] = NULL; /* @@ -140,7 +143,8 @@ int i; if (!initialized) - virInitialize(); + if (virInitialize() < 0) + return -1; if (driver == NULL) { virLibConnError(NULL, VIR_ERR_INVALID_ARG, __FUNCTION__); @@ -182,7 +186,8 @@ int i; if (!initialized) - virInitialize(); + if (virInitialize() < 0) + return -1; if (libVer == NULL) return (-1); @@ -223,7 +228,8 @@ virConnectPtr ret = NULL; if (!initialized) - virInitialize(); + if (virInitialize() < 0) + return NULL; if (name == NULL) { name = "Xen"; @@ -234,7 +240,7 @@ ret = virGetConnect(); if (ret == NULL) { - virLibConnError(NULL, VIR_ERR_NO_MEMORY, "Allocating connection"); + virLibConnError(NULL, VIR_ERR_NO_MEMORY, _("allocating connection")); goto failed; } @@ -290,14 +296,15 @@ virConnectPtr ret = NULL; if (!initialized) - virInitialize(); + if (virInitialize() < 0) + return NULL; if (name == NULL) name = "Xen"; ret = virGetConnect(); if (ret == NULL) { - virLibConnError(NULL, VIR_ERR_NO_MEMORY, "Allocating connection"); + virLibConnError(NULL, VIR_ERR_NO_MEMORY, _("allocating connection")); goto failed; } @@ -313,7 +320,7 @@ if (ret->nb_drivers == 0) { if (name == NULL) virLibConnError(NULL, VIR_ERR_NO_CONNECT, - "could not connect to Xen Daemon nor Xen Store"); + _("Xen Daemon or Xen Store")); else /* we failed to find an adequate driver */ virLibConnError(NULL, VIR_ERR_NO_SUPPORT, name); Index: src/proxy_internal.c =================================================================== RCS file: /data/cvs/libvirt/src/proxy_internal.c,v retrieving revision 1.10 diff -u -r1.10 proxy_internal.c --- src/proxy_internal.c 30 Aug 2006 14:21:03 -0000 1.10 +++ src/proxy_internal.c 20 Sep 2006 19:55:54 -0000 @@ -190,7 +190,7 @@ setsid(); if (fork() == 0) { execl(proxyPath, proxyPath, NULL); - fprintf(stderr, "failed to exec %s\n", proxyPath); + fprintf(stderr, _("failed to exec %s\n"), proxyPath); } /* * calling exit() generate troubles for termination handlers @@ -284,7 +284,7 @@ ret = close(fd); if (ret != 0) - fprintf(stderr, "Failed to close socket %d\n", fd); + fprintf(stderr, _("Failed to close socket %d\n"), fd); else if (debug > 0) fprintf(stderr, "Closed socket %d\n", fd); return(ret); @@ -317,7 +317,7 @@ goto retry; } if (!quiet) - fprintf(stderr, "Failed to read socket %d\n", fd); + fprintf(stderr, _("Failed to read socket %d\n"), fd); return(-1); } @@ -351,7 +351,7 @@ fd, len); goto retry; } - fprintf(stderr, "Failed to write to socket %d\n", fd); + fprintf(stderr, _("Failed to write to socket %d\n"), fd); return(-1); } if (debug) @@ -413,7 +413,7 @@ return(-1); if (ret != sizeof(virProxyPacket)) { fprintf(stderr, - "Communication error with proxy: got %d bytes of %d\n", + _("Communication error with proxy: got %d bytes of %d\n"), ret, (int) sizeof(virProxyPacket)); xenProxyClose(conn); return(-1); @@ -421,7 +421,7 @@ res = request; if (res->len != sizeof(virProxyPacket)) { fprintf(stderr, - "Communication error with proxy: expected %d bytes got %d\n", + _("Communication error with proxy: expected %d bytes got %d\n"), (int) sizeof(virProxyPacket), res->len); xenProxyClose(conn); return(-1); @@ -434,7 +434,7 @@ return(-1); if (ret != sizeof(virProxyPacket)) { fprintf(stderr, - "Communication error with proxy: got %d bytes of %d\n", + _("Communication error with proxy: got %d bytes of %d\n"), ret, (int) sizeof(virProxyPacket)); xenProxyClose(conn); return(-1); @@ -443,7 +443,7 @@ if ((res->len < sizeof(virProxyPacket)) || (res->len > sizeof(virProxyFullPacket))) { fprintf(stderr, - "Communication error with proxy: got %d bytes packet\n", + _("Communication error with proxy: got %d bytes packet\n"), res->len); xenProxyClose(conn); return(-1); @@ -454,7 +454,7 @@ res->len - ret, quiet); if (ret != (int) (res->len - sizeof(virProxyPacket))) { fprintf(stderr, - "Communication error with proxy: got %d bytes of %d\n", + _("Communication error with proxy: got %d bytes of %d\n"), ret, (int) sizeof(virProxyPacket)); xenProxyClose(conn); return(-1); @@ -467,13 +467,13 @@ if ((res == NULL) || (res->version != PROXY_PROTO_VERSION) || (res->len < sizeof(virProxyPacket))) { fprintf(stderr, - "Communication error with proxy: malformed packet\n"); + _("Communication error with proxy: malformed packet\n")); xenProxyClose(conn); return(-1); } if (res->serial != serial) { TODO /* Asynchronous communication */ - fprintf(stderr, "gor asynchronous packet number %d\n", res->serial); + fprintf(stderr, _("got asynchronous packet number %d\n"), res->serial); goto retry; } return(0); @@ -787,7 +787,7 @@ res = virGetDomain(conn, name, uuid); if (res == NULL) - virProxyError(conn, VIR_ERR_NO_MEMORY, "Allocating domain"); + virProxyError(conn, VIR_ERR_NO_MEMORY, _("allocating domain")); else res->handle = id; @@ -834,7 +834,7 @@ res = virGetDomain(conn, name, uuid); if (res == NULL) - virProxyError(conn, VIR_ERR_NO_MEMORY, "Allocating domain"); + virProxyError(conn, VIR_ERR_NO_MEMORY, _("allocating domain")); else res->handle = req.data.arg; @@ -885,7 +885,7 @@ res = virGetDomain(conn, name, (const unsigned char *)&req.extra.str[0]); if (res == NULL) - virProxyError(conn, VIR_ERR_NO_MEMORY, "Allocating domain"); + virProxyError(conn, VIR_ERR_NO_MEMORY, _("allocating domain")); else res->handle = req.data.arg; Index: src/sexpr.c =================================================================== RCS file: /data/cvs/libvirt/src/sexpr.c,v retrieving revision 1.4 diff -u -r1.4 sexpr.c --- src/sexpr.c 26 Aug 2006 15:30:44 -0000 1.4 +++ src/sexpr.c 20 Sep 2006 19:55:54 -0000 @@ -56,7 +56,7 @@ ret = (struct sexpr *) malloc(sizeof(*ret)); if (ret == NULL) { - virSexprError(VIR_ERR_NO_MEMORY, "failed to allocate a node"); + virSexprError(VIR_ERR_NO_MEMORY, _("failed to allocate a node")); return (NULL); } ret->kind = SEXPR_NIL; @@ -349,7 +349,7 @@ ret->value = strndup(start, ptr - start); if (ret->value == NULL) { virSexprError(VIR_ERR_NO_MEMORY, - "failed to copy a string"); + _("failed to copy a string")); } if (*ptr == '\'') @@ -364,7 +364,7 @@ ret->value = strndup(start, ptr - start); if (ret->value == NULL) { virSexprError(VIR_ERR_NO_MEMORY, - "failed to copy a string"); + _("failed to copy a string")); } } Index: src/test.c =================================================================== RCS file: /data/cvs/libvirt/src/test.c,v retrieving revision 1.9 diff -u -r1.9 test.c --- src/test.c 30 Aug 2006 14:21:03 -0000 1.9 +++ src/test.c 20 Sep 2006 19:55:55 -0000 @@ -197,26 +197,26 @@ virDomainRestart onCrash = VIR_DOMAIN_RENAME_RESTART; if (gettimeofday(&tv, NULL) < 0) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "cannot get timeofday"); + testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, _("getting time of day")); return -1; } root = xmlDocGetRootElement(xml); if ((root == NULL) || (!xmlStrEqual(root->name, BAD_CAST "domain"))) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed root element"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain")); goto error; } ctxt = xmlXPathNewContext(xml); if (ctxt == NULL) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "cannot create xpath context"); + testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, _("creating xpath context")); goto error; } obj = xmlXPathEval(BAD_CAST "string(/domain/name[1])", ctxt); if ((obj == NULL) || (obj->type != XPATH_STRING) || (obj->stringval == NULL) || (obj->stringval[0] == 0)) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "missing name element on domain"); + testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, _("domain name")); goto error; } name = strdup((const char *)obj->stringval); @@ -225,12 +225,12 @@ obj = xmlXPathEval(BAD_CAST "string(/domain/uuid[1])", ctxt); if ((obj == NULL) || (obj->type != XPATH_STRING) || (obj->stringval == NULL) || (obj->stringval[0] == 0)) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "missing uuid element on domain"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain uuid")); goto error; } dst_uuid = (char *) &rawuuid[0]; if (!(virParseUUID((char **)&dst_uuid, (const char *)obj->stringval))) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed uuid data in domain"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain uuid")); goto error; } xmlXPathFreeObject(obj); @@ -238,12 +238,12 @@ obj = xmlXPathEval(BAD_CAST "string(/domain/memory[1])", ctxt); if ((obj == NULL) || (obj->type != XPATH_STRING) || (obj->stringval == NULL) || (obj->stringval[0] == 0)) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "missing memory element on domain"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain memory")); goto error; } memory = strtoll((const char*)obj->stringval, &conv, 10); if (conv == (const char*)obj->stringval) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed memory value for domain"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain memory")); goto error; } xmlXPathFreeObject(obj); @@ -255,7 +255,7 @@ } else { nrVirtCpu = strtoll((const char*)obj->stringval, &conv, 10); if (conv == (const char*)obj->stringval) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed vcpus value for domain"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain vcpus")); goto error; } } @@ -266,7 +266,7 @@ if ((obj != NULL) && (obj->type == XPATH_STRING) && (obj->stringval != NULL) && (obj->stringval[0] != 0)) { if (!(onReboot = testRestartStringToFlag((const char *)obj->stringval))) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed on_reboot value for domain"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain reboot behaviour")); goto error; } } @@ -277,7 +277,7 @@ if ((obj != NULL) && (obj->type == XPATH_STRING) && (obj->stringval != NULL) && (obj->stringval[0] != 0)) { if (!(onReboot = testRestartStringToFlag((const char *)obj->stringval))) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed on_poweroff value for domain"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain poweroff behaviour")); goto error; } } @@ -288,7 +288,7 @@ if ((obj != NULL) && (obj->type == XPATH_STRING) && (obj->stringval != NULL) && (obj->stringval[0] != 0)) { if (!(onReboot = testRestartStringToFlag((const char *)obj->stringval))) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed on_crash value for domain"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain crash behaviour")); goto error; } } @@ -331,7 +331,7 @@ if (!(xml = xmlReadDoc(BAD_CAST doc, "domain.xml", NULL, XML_PARSE_NOENT | XML_PARSE_NONET | XML_PARSE_NOERROR | XML_PARSE_NOWARNING))) { - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot parse domain definition"); + testError(NULL, NULL, VIR_ERR_XML_ERROR, _("domain")); return -1; } @@ -349,14 +349,14 @@ xmlDocPtr xml; if ((fd = open(file, O_RDONLY)) < 0) { - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot load domain definition"); + testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("load domain definition file")); return -1; } if (!(xml = xmlReadFd(fd, file, NULL, XML_PARSE_NOENT | XML_PARSE_NONET | XML_PARSE_NOERROR | XML_PARSE_NOWARNING))) { - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot parse domain definition"); + testError(NULL, NULL, VIR_ERR_XML_ERROR, _("domain")); close(fd); return -1; } @@ -376,7 +376,7 @@ struct timeval tv; if (gettimeofday(&tv, NULL) < 0) { - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot get timeofday"); + testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("getting time of day")); return -1; } @@ -431,14 +431,14 @@ virNodeInfoPtr nodeInfo; if ((fd = open(file, O_RDONLY)) < 0) { - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot load host definition"); + testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("loading host definition file")); return -1; } if (!(xml = xmlReadFd(fd, file, NULL, XML_PARSE_NOENT | XML_PARSE_NONET | XML_PARSE_NOERROR | XML_PARSE_NOWARNING))) { - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot parse host definition"); + testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("host")); goto error; } close(fd); @@ -446,13 +446,13 @@ root = xmlDocGetRootElement(xml); if ((root == NULL) || (!xmlStrEqual(root->name, BAD_CAST "node"))) { - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "malformed root element"); + testError(NULL, NULL, VIR_ERR_XML_ERROR, _("node")); goto error; } ctxt = xmlXPathNewContext(xml); if (ctxt == NULL) { - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot create xpath context"); + testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("creating xpath context")); goto error; } @@ -468,7 +468,7 @@ char *conv = NULL; nodeInfo->nodes = strtol((const char*)obj->stringval, &conv, 10); if (conv == (const char*)obj->stringval) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed nodes value for node cpu"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("node cpu numa nodes")); goto error; } xmlXPathFreeObject(obj); @@ -480,7 +480,7 @@ char *conv = NULL; nodeInfo->sockets = strtol((const char*)obj->stringval, &conv, 10); if (conv == (const char*)obj->stringval) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed sockets value for node cpu"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("node cpu sockets")); goto error; } xmlXPathFreeObject(obj); @@ -492,7 +492,7 @@ char *conv = NULL; nodeInfo->cores = strtol((const char*)obj->stringval, &conv, 10); if (conv == (const char*)obj->stringval) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed cores value for node cpu"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("node cpu cores")); goto error; } xmlXPathFreeObject(obj); @@ -504,7 +504,7 @@ char *conv = NULL; nodeInfo->threads = strtol((const char*)obj->stringval, &conv, 10); if (conv == (const char*)obj->stringval) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed threads value for node cpu"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("node cpu threads")); goto error; } xmlXPathFreeObject(obj); @@ -516,7 +516,7 @@ char *conv = NULL; unsigned int active = strtol((const char*)obj->stringval, &conv, 10); if (conv == (const char*)obj->stringval) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed active value for node cpu"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("node active cpu")); goto error; } if (active < nodeInfo->cpus) { @@ -530,7 +530,7 @@ char *conv = NULL; nodeInfo->mhz = strtol((const char*)obj->stringval, &conv, 10); if (conv == (const char*)obj->stringval) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed threads value for node cpu"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("node cpu mhz")); goto error; } xmlXPathFreeObject(obj); @@ -549,7 +549,7 @@ char *conv = NULL; nodeInfo->memory = strtol((const char*)obj->stringval, &conv, 10); if (conv == (const char*)obj->stringval) { - testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed memory value for node"); + testError(conn, NULL, VIR_ERR_XML_ERROR, _("node memory")); goto error; } xmlXPathFreeObject(obj); @@ -558,7 +558,7 @@ obj = xmlXPathEval(BAD_CAST "/node/domain", ctxt); if ((obj == NULL) || (obj->type != XPATH_NODESET) || (obj->nodesetval == NULL)) { - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot extract domain list"); + testError(NULL, NULL, VIR_ERR_XML_ERROR, _("node domain list")); goto error; } @@ -567,7 +567,7 @@ char *absFile = testBuildFilename(file, (const char *)domFile); free(domFile); if (!absFile) { - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot resolve filename"); + testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("resolving domain filename")); goto error; } if (testLoadDomainFromFile(conn, i, absFile) != 0) { @@ -605,7 +605,7 @@ if (node == NULL) { node = calloc(1, sizeof(testNode)); if (!node) { - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot allocate memory"); + testError(NULL, NULL, VIR_ERR_NO_MEMORY, _("allocating node")); return -1; } } @@ -645,7 +645,7 @@ if ((connid = getNextConnection()) < 0) { - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "too many connections"); + testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("too many connections")); return -1; } @@ -722,7 +722,7 @@ return NULL; dom = virGetDomain(conn, con->domains[i].name, con->domains[i].uuid); if (dom == NULL) { - testError(conn, NULL, VIR_ERR_NO_MEMORY, "allocating domain"); + testError(conn, NULL, VIR_ERR_NO_MEMORY, _("allocating domain")); return NULL; } con->numDomains++; @@ -730,7 +730,7 @@ } } - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "too many domains"); + testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("too many domains")); return (NULL); } @@ -747,7 +747,7 @@ dom = virGetDomain(conn, con->domains[id].name, con->domains[id].uuid); if (dom == NULL) { - testError(conn, NULL, VIR_ERR_NO_MEMORY, "Allocating domain"); + testError(conn, NULL, VIR_ERR_NO_MEMORY, _("allocating domain")); return(NULL); } dom->handle = id; @@ -770,7 +770,7 @@ if (id >= 0) { dom = virGetDomain(conn, con->domains[id].name, con->domains[id].uuid); if (dom == NULL) { - testError(conn, NULL, VIR_ERR_NO_MEMORY, "Allocating domain"); + testError(conn, NULL, VIR_ERR_NO_MEMORY, _("allocating domain")); return(NULL); } dom->handle = id; @@ -794,7 +794,7 @@ if (id >= 0) { dom = virGetDomain(conn, con->domains[id].name, con->domains[id].uuid); if (dom == NULL) { - testError(conn, NULL, VIR_ERR_NO_MEMORY, "Allocating domain"); + testError(conn, NULL, VIR_ERR_NO_MEMORY, _("allocating domain")); return(NULL); } dom->handle = id; @@ -892,7 +892,7 @@ con = &node->connections[domain->conn->handle]; if (gettimeofday(&tv, NULL) < 0) { - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot get timeofday"); + testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("getting time of day")); return (-1); } @@ -920,7 +920,7 @@ con = &node->connections[domain->conn->handle]; if (gettimeofday(&tv, NULL) < 0) { - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot get timeofday"); + testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("getting time of day")); return (-1); } @@ -947,7 +947,7 @@ con = &node->connections[domain->conn->handle]; if (gettimeofday(&tv, NULL) < 0) { - testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot get timeofday"); + testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("getting time of day")); return (-1); } @@ -1038,7 +1038,7 @@ con = &node->connections[domain->conn->handle]; if (memory > con->domains[domain->handle].info.maxMem) { - testError(domain->conn, domain, VIR_ERR_INVALID_ARG, "memory over maximum limit"); + testError(domain->conn, domain, VIR_ERR_INVALID_ARG, __FUNCTION__); return (-1); } @@ -1064,7 +1064,7 @@ /* We allow more cpus in guest than host */ if (nrCpus > 32) { - testError(domain->conn, domain, VIR_ERR_INVALID_ARG, "too many virtual cpus"); + testError(domain->conn, domain, VIR_ERR_INVALID_ARG, __FUNCTION__); return (-1); } Index: src/virsh.c =================================================================== RCS file: /data/cvs/libvirt/src/virsh.c,v retrieving revision 1.38 diff -u -r1.38 virsh.c --- src/virsh.c 3 Sep 2006 17:34:04 -0000 1.38 +++ src/virsh.c 20 Sep 2006 19:55:55 -0000 @@ -230,9 +230,9 @@ */ static vshCmdInfo info_help[] = { {"syntax", "help [<command>]"}, - {"help", "print help"}, - {"desc", "Prints global help or command specific help."}, - {"version", "Prints version information."}, + {"help", gettext_noop("print help")}, + {"desc", gettext_noop("Prints global help or command specific help.")}, + {NULL, NULL} }; @@ -249,10 +249,10 @@ if (!cmdname) { vshCmdDef *def; - vshPrint(ctl, "Commands:\n\n"); + vshPrint(ctl, _("Commands:\n\n")); for (def = commands; def->name; def++) vshPrint(ctl, " %-15s %s\n", def->name, - vshCmddefGetInfo(def, "help")); + _N(vshCmddefGetInfo(def, "help"))); return TRUE; } return vshCmddefHelp(ctl, cmdname, FALSE); @@ -263,15 +263,15 @@ */ static vshCmdInfo info_connect[] = { {"syntax", "connect [name] [--readonly]"}, - {"help", "(re)connect to hypervisor"}, + {"help", gettext_noop("(re)connect to hypervisor")}, {"desc", - "Connect to local hypervisor. This is build-in command after shell start up."}, + gettext_noop("Connect to local hypervisor. This is built-in command after shell start up.")}, {NULL, NULL} }; static vshCmdOptDef opts_connect[] = { - {"name", VSH_OT_DATA, 0, "optional argument currently unused (or used for tests only)"}, - {"readonly", VSH_OT_BOOL, 0, "read-only connection"}, + {"name", VSH_OT_DATA, 0, gettext_noop("hypervisor connection URI")}, + {"readonly", VSH_OT_BOOL, 0, gettext_noop("read-only connection")}, {NULL, 0, 0, NULL} }; @@ -283,7 +283,7 @@ if (ctl->conn) { if (virConnectClose(ctl->conn) != 0) { vshError(ctl, FALSE, - "failed to disconnect from the hypervisor"); + _("Failed to disconnect from the hypervisor")); return FALSE; } ctl->conn = NULL; @@ -299,7 +299,7 @@ ctl->conn = virConnectOpenReadOnly(ctl->name); if (!ctl->conn) - vshError(ctl, FALSE, "failed to connect to the hypervisor"); + vshError(ctl, FALSE, _("Failed to connect to the hypervisor")); return ctl->conn ? TRUE : FALSE; } @@ -309,14 +309,14 @@ */ static vshCmdInfo info_list[] = { {"syntax", "list"}, - {"help", "list domains"}, - {"desc", "Returns list of domains."}, + {"help", gettext_noop("list domains")}, + {"desc", gettext_noop("Returns list of domains.")}, {NULL, NULL} }; static vshCmdOptDef opts_list[] = { - {"inactive", VSH_OT_BOOL, 0, "list inactive domains"}, - {"all", VSH_OT_BOOL, 0, "list inactive & active domains"}, + {"inactive", VSH_OT_BOOL, 0, gettext_noop("list inactive domains")}, + {"all", VSH_OT_BOOL, 0, gettext_noop("list inactive & active domains")}, {NULL, 0, 0, NULL} }; @@ -354,14 +354,14 @@ if (active) { maxid = virConnectNumOfDomains(ctl->conn); if (maxid < 0) { - vshError(ctl, FALSE, "failed to list active domains."); + vshError(ctl, FALSE, _("Failed to list active domains")); return FALSE; } if (maxid) { ids = vshMalloc(ctl, sizeof(int) * maxid); if ((maxid = virConnectListDomains(ctl->conn, &ids[0], maxid)) < 0) { - vshError(ctl, FALSE, "failed to list active domains."); + vshError(ctl, FALSE, _("Failed to list active domains")); free(ids); return FALSE; } @@ -372,7 +372,7 @@ if (inactive) { maxname = virConnectNumOfDefinedDomains(ctl->conn); if (maxname < 0) { - vshError(ctl, FALSE, "failed to list inactive domains."); + vshError(ctl, FALSE, _("Failed to list inactive domains")); if (ids) free(ids); return FALSE; @@ -381,7 +381,7 @@ names = vshMalloc(ctl, sizeof(char *) * maxname); if ((maxname = virConnectListDefinedDomains(ctl->conn, names, maxname)) < 0) { - vshError(ctl, FALSE, "failed to list inactive domains."); + vshError(ctl, FALSE, _("Failed to list inactive domains")); if (ids) free(ids); free(names); @@ -391,7 +391,7 @@ qsort(&names[0], maxname, sizeof(char*), domnamesorter); } } - vshPrintExtra(ctl, "%3s %-20s %s\n", "Id", "Name", "State"); + vshPrintExtra(ctl, "%3s %-20s %s\n", _("Id"), _("Name"), _("State")); vshPrintExtra(ctl, "----------------------------------\n"); for (i = 0; i < maxid; i++) { @@ -408,7 +408,7 @@ virDomainGetID(dom), virDomainGetName(dom), ret < - 0 ? "no state" : vshDomainStateToString(info.state)); + 0 ? _("no state") : _N(vshDomainStateToString(info.state))); virDomainFree(dom); } for (i = 0; i < maxname; i++) { @@ -436,6 +436,7 @@ ret < 0 ? "no state" : vshDomainStateToString(info.state)); } + virDomainFree(dom); } if (ids) @@ -450,13 +451,13 @@ */ static vshCmdInfo info_domstate[] = { {"syntax", "domstate <domain>"}, - {"help", "domain state"}, - {"desc", "Returns state about a running domain."}, + {"help", gettext_noop("domain state")}, + {"desc", gettext_noop("Returns state about a running domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_domstate[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name, id or uuid"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")}, {NULL, 0, 0, NULL} }; @@ -475,7 +476,7 @@ if (virDomainGetInfo(dom, &info) == 0) vshPrint(ctl, "%s\n", - vshDomainStateToString(info.state)); + _N(vshDomainStateToString(info.state))); else ret = FALSE; @@ -488,13 +489,13 @@ */ static vshCmdInfo info_suspend[] = { {"syntax", "suspend <domain>"}, - {"help", "suspend a domain"}, - {"desc", "Suspend a running domain."}, + {"help", gettext_noop("suspend a domain")}, + {"desc", gettext_noop("Suspend a running domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_suspend[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name, id or uuid"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")}, {NULL, 0, 0, NULL} }; @@ -512,9 +513,9 @@ return FALSE; if (virDomainSuspend(dom) == 0) { - vshPrint(ctl, "Domain %s suspended\n", name); + vshPrint(ctl, _("Domain %s suspended\n"), name); } else { - vshError(ctl, FALSE, "Failed to suspend domain\n"); + vshError(ctl, FALSE, _("Failed to suspend domain %s"), name); ret = FALSE; } @@ -527,13 +528,13 @@ */ static vshCmdInfo info_create[] = { {"syntax", "create a domain from an XML <file>"}, - {"help", "create a domain from an XML file"}, - {"desc", "Create a domain."}, + {"help", gettext_noop("create a domain from an XML file")}, + {"desc", gettext_noop("Create a domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_create[] = { - {"file", VSH_OT_DATA, VSH_OFLAG_REQ, "file conatining an XML domain description"}, + {"file", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("file conatining an XML domain description")}, {NULL, 0, 0, NULL} }; @@ -556,22 +557,22 @@ fd = open(from, O_RDONLY); if (fd < 0) { - vshError(ctl, FALSE, "Failed to read description file %s\n", from); + vshError(ctl, FALSE, _("Failed to read description file %s"), from); return(FALSE); } l = read(fd, &buffer[0], sizeof(buffer)); if ((l <= 0) || (l >= (int) sizeof(buffer))) { - vshError(ctl, FALSE, "Failed to read description file %s\n", from); + vshError(ctl, FALSE, _("Failed to read description file %s"), from); close(fd); return(FALSE); } buffer[l] = 0; dom = virDomainCreateLinux(ctl->conn, &buffer[0], 0); if (dom != NULL) { - vshPrint(ctl, "Domain %s created from %s\n", + vshPrint(ctl, _("Domain %s created from %s\n"), virDomainGetName(dom), from); } else { - vshError(ctl, FALSE, "Failed to create domain\n"); + vshError(ctl, FALSE, _("Failed to create domain from %s"), from); ret = FALSE; } return ret; @@ -582,13 +583,13 @@ */ static vshCmdInfo info_define[] = { {"syntax", "define a domain from an XML <file>"}, - {"help", "define (but don't start) a domain from an XML file"}, - {"desc", "Define a domain."}, + {"help", gettext_noop("define (but don't start) a domain from an XML file")}, + {"desc", gettext_noop("Define a domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_define[] = { - {"file", VSH_OT_DATA, VSH_OFLAG_REQ, "file conatining an XML domain description"}, + {"file", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("file conatining an XML domain description")}, {NULL, 0, 0, NULL} }; @@ -611,22 +612,22 @@ fd = open(from, O_RDONLY); if (fd < 0) { - vshError(ctl, FALSE, "Failed to read description file %s\n", from); + vshError(ctl, FALSE, _("Failed to read description file %s"), from); return(FALSE); } l = read(fd, &buffer[0], sizeof(buffer)); if ((l <= 0) || (l >= (int) sizeof(buffer))) { - vshError(ctl, FALSE, "Failed to read description file %s\n", from); + vshError(ctl, FALSE, _("Failed to read description file %s"), from); close(fd); return(FALSE); } buffer[l] = 0; dom = virDomainDefineXML(ctl->conn, &buffer[0]); if (dom != NULL) { - vshPrint(ctl, "Domain %s defined from %s\n", + vshPrint(ctl, _("Domain %s defined from %s\n"), virDomainGetName(dom), from); } else { - vshError(ctl, FALSE, "Failed to define domain\n"); + vshError(ctl, FALSE, _("Failed to define domain from %s"), from); ret = FALSE; } return ret; @@ -637,13 +638,13 @@ */ static vshCmdInfo info_undefine[] = { {"syntax", "undefine <domain>"}, - {"help", "Undefine an inactive domain"}, - {"desc", "Undefine the configuration for an inactive domain"}, + {"help", gettext_noop("undefine an inactive domain")}, + {"desc", gettext_noop("Undefine the configuration for an inactive domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_undefine[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name, or uuid"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name or uuid")}, {NULL, 0, 0, NULL} }; @@ -661,9 +662,9 @@ return FALSE; if (virDomainUndefine(dom) == 0) { - vshPrint(ctl, "Domain %s has been undefined\n", name); + vshPrint(ctl, _("Domain %s has been undefined\n"), name); } else { - vshError(ctl, FALSE, "Failed to undefine domain\n"); + vshError(ctl, FALSE, _("Failed to undefine domain %s"), name); ret = FALSE; } @@ -676,13 +677,13 @@ */ static vshCmdInfo info_start[] = { {"syntax", "start a domain "}, - {"help", "start a (previously defined) inactive domain"}, - {"desc", "Start a domain."}, + {"help", gettext_noop("start a (previously defined) inactive domain")}, + {"desc", gettext_noop("Start a domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_start[] = { - {"name", VSH_OT_DATA, VSH_OFLAG_REQ, "name of the inactive domain" }, + {"name", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("name of the inactive domain")}, {NULL, 0, 0, NULL} }; @@ -706,15 +707,15 @@ return FALSE; if (virDomainGetID(dom) != (unsigned int)-1) { - vshError(ctl, FALSE, "Domain is already active\n"); + vshError(ctl, FALSE, _("Domain is already active")); return FALSE; } if (virDomainCreate(dom) == 0) { - vshPrint(ctl, "Domain %s started\n", + vshPrint(ctl, _("Domain %s started\n"), name); } else { - vshError(ctl, FALSE, "Failed to start domain\n"); + vshError(ctl, FALSE, _("Failed to start domain %s"), name); ret = FALSE; } return ret; @@ -725,14 +726,14 @@ */ static vshCmdInfo info_save[] = { {"syntax", "save <domain> <file>"}, - {"help", "save a domain state to a file"}, - {"desc", "Save a running domain."}, + {"help", gettext_noop("save a domain state to a file")}, + {"desc", gettext_noop("Save a running domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_save[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name, id or uuid"}, - {"file", VSH_OT_DATA, VSH_OFLAG_REQ, "where to save the data"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")}, + {"file", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("where to save the data")}, {NULL, 0, 0, NULL} }; @@ -754,9 +755,9 @@ return FALSE; if (virDomainSave(dom, to) == 0) { - vshPrint(ctl, "Domain %s saved\n", name); + vshPrint(ctl, _("Domain %s saved to %s\n"), name, to); } else { - vshError(ctl, FALSE, "Failed to save domain\n"); + vshError(ctl, FALSE, _("Failed to save domain %s to %s"), name, to); ret = FALSE; } @@ -769,13 +770,13 @@ */ static vshCmdInfo info_restore[] = { {"syntax", "restore a domain from <file>"}, - {"help", "restore a domain from a saved state in a file"}, - {"desc", "Restore a domain."}, + {"help", gettext_noop("restore a domain from a saved state in a file")}, + {"desc", gettext_noop("Restore a domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_restore[] = { - {"file", VSH_OT_DATA, VSH_OFLAG_REQ, "the state to restore"}, + {"file", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("the state to restore")}, {NULL, 0, 0, NULL} }; @@ -794,9 +795,9 @@ return FALSE; if (virDomainRestore(ctl->conn, from) == 0) { - vshPrint(ctl, "Domain restored from %s\n", from); + vshPrint(ctl, _("Domain restored from %s\n"), from); } else { - vshError(ctl, FALSE, "Failed to restore domain\n"); + vshError(ctl, FALSE, _("Failed to restore domain from %s"), from); ret = FALSE; } return ret; @@ -807,13 +808,13 @@ */ static vshCmdInfo info_resume[] = { {"syntax", "resume <domain>"}, - {"help", "resume a domain"}, - {"desc", "Resume a previously suspended domain."}, + {"help", gettext_noop("resume a domain")}, + {"desc", gettext_noop("Resume a previously suspended domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_resume[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name, id or uuid"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")}, {NULL, 0, 0, NULL} }; @@ -831,9 +832,9 @@ return FALSE; if (virDomainResume(dom) == 0) { - vshPrint(ctl, "Domain %s resumed\n", name); + vshPrint(ctl, _("Domain %s resumed\n"), name); } else { - vshError(ctl, FALSE, "Failed to resume domain\n"); + vshError(ctl, FALSE, _("Failed to resume domain %s"), name); ret = FALSE; } @@ -846,13 +847,13 @@ */ static vshCmdInfo info_shutdown[] = { {"syntax", "shutdown <domain>"}, - {"help", "gracefully shutdown a domain"}, - {"desc", "Run shutdown in the targetted domain"}, + {"help", gettext_noop("gracefully shutdown a domain")}, + {"desc", gettext_noop("Run shutdown in the target domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_shutdown[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name, id or uuid"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")}, {NULL, 0, 0, NULL} }; @@ -870,9 +871,9 @@ return FALSE; if (virDomainShutdown(dom) == 0) { - vshPrint(ctl, "Domain %s is being shutdown\n", name); + vshPrint(ctl, _("Domain %s is being shutdown\n"), name); } else { - vshError(ctl, FALSE, "Failed to shutdown domain\n"); + vshError(ctl, FALSE, _("Failed to shutdown domain %s"), name); ret = FALSE; } @@ -885,13 +886,13 @@ */ static vshCmdInfo info_reboot[] = { {"syntax", "reboot <domain>"}, - {"help", "reboot a domain"}, - {"desc", "Run a reboot command in the targetted domain"}, + {"help", gettext_noop("reboot a domain")}, + {"desc", gettext_noop("Run a reboot command in the target domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_reboot[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name, id or uuid"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")}, {NULL, 0, 0, NULL} }; @@ -909,9 +910,9 @@ return FALSE; if (virDomainReboot(dom, 0) == 0) { - vshPrint(ctl, "Domain %s is being rebooted\n", name); + vshPrint(ctl, _("Domain %s is being rebooted\n"), name); } else { - vshError(ctl, FALSE, "Failed to reboot domain\n"); + vshError(ctl, FALSE, _("Failed to reboot domain %s"), name); ret = FALSE; } @@ -924,13 +925,13 @@ */ static vshCmdInfo info_destroy[] = { {"syntax", "destroy <domain>"}, - {"help", "destroy a domain"}, - {"desc", "Destroy a given domain."}, + {"help", gettext_noop("destroy a domain")}, + {"desc", gettext_noop("Destroy a given domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_destroy[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name, id or uuid"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")}, {NULL, 0, 0, NULL} }; @@ -948,9 +949,9 @@ return FALSE; if (virDomainDestroy(dom) == 0) { - vshPrint(ctl, "Domain %s destroyed\n", name); + vshPrint(ctl, _("Domain %s destroyed\n"), name); } else { - vshError(ctl, FALSE, "Failed to destroy domain\n"); + vshError(ctl, FALSE, _("Failed to destroy domain %s"), name); ret = FALSE; virDomainFree(dom); } @@ -963,13 +964,13 @@ */ static vshCmdInfo info_dominfo[] = { {"syntax", "dominfo <domain>"}, - {"help", "domain information"}, - {"desc", "Returns basic information about the domain."}, + {"help", gettext_noop("domain information")}, + {"desc", gettext_noop("Returns basic information about the domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_dominfo[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name, id or uuid"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")}, {NULL, 0, 0, NULL} }; @@ -990,35 +991,36 @@ id = virDomainGetID(dom); if (id == ((unsigned int)-1)) - vshPrint(ctl, "%-15s %s\n", "Id:", "-"); + vshPrint(ctl, "%-15s %s\n", _("Id:"), "-"); else - vshPrint(ctl, "%-15s %d\n", "Id:", id); - vshPrint(ctl, "%-15s %s\n", "Name:", virDomainGetName(dom)); + vshPrint(ctl, "%-15s %d\n", _("Id:"), id); + vshPrint(ctl, "%-15s %s\n", _("Name:"), virDomainGetName(dom)); + if (virDomainGetUUIDString(dom, &uuid[0])==0) - vshPrint(ctl, "%-15s %s\n", "UUID:", uuid); + vshPrint(ctl, "%-15s %s\n", _("UUID:"), uuid); if ((str = virDomainGetOSType(dom))) { - vshPrint(ctl, "%-15s %s\n", "OS Type:", str); + vshPrint(ctl, "%-15s %s\n", _("OS Type:"), str); free(str); } if (virDomainGetInfo(dom, &info) == 0) { - vshPrint(ctl, "%-15s %s\n", "State:", - vshDomainStateToString(info.state)); + vshPrint(ctl, "%-15s %s\n", _("State:"), + _N(vshDomainStateToString(info.state))); - vshPrint(ctl, "%-15s %d\n", "CPU(s):", info.nrVirtCpu); + vshPrint(ctl, "%-15s %d\n", _("CPU(s):"), info.nrVirtCpu); if (info.cpuTime != 0) { double cpuUsed = info.cpuTime; cpuUsed /= 1000000000.0; - vshPrint(ctl, "%-15s %.1lfs\n", "CPU time:", cpuUsed); + vshPrint(ctl, "%-15s %.1lfs\n", _("CPU time:"), cpuUsed); } - vshPrint(ctl, "%-15s %lu kB\n", "Max memory:", + vshPrint(ctl, "%-15s %lu kB\n", _("Max memory:"), info.maxMem); - vshPrint(ctl, "%-15s %lu kB\n", "Used memory:", + vshPrint(ctl, "%-15s %lu kB\n", _("Used memory:"), info.memory); } else { @@ -1034,13 +1036,13 @@ */ static vshCmdInfo info_vcpuinfo[] = { {"syntax", "vcpuinfo <domain>"}, - {"help", "domain vcpu information"}, - {"desc", "Returns basic information about the domain virtual CPUs."}, + {"help", gettext_noop("domain vcpu information")}, + {"desc", gettext_noop("Returns basic information about the domain virtual CPUs.")}, {NULL, NULL} }; static vshCmdOptDef opts_vcpuinfo[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name, id or uuid"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")}, {NULL, 0, 0, NULL} }; @@ -1082,18 +1084,18 @@ int n; for (n = 0 ; n < ncpus ; n++) { unsigned int m; - vshPrint(ctl, "%-15s %d\n", "VCPU:", n); - vshPrint(ctl, "%-15s %d\n", "CPU:", cpuinfo[n].cpu); - vshPrint(ctl, "%-15s %s\n", "State:", - vshDomainVcpuStateToString(cpuinfo[n].state)); + vshPrint(ctl, "%-15s %d\n", _("VCPU:"), n); + vshPrint(ctl, "%-15s %d\n", _("CPU:"), cpuinfo[n].cpu); + vshPrint(ctl, "%-15s %s\n", _("State:"), + _N(vshDomainVcpuStateToString(cpuinfo[n].state))); if (cpuinfo[n].cpuTime != 0) { double cpuUsed = cpuinfo[n].cpuTime; cpuUsed /= 1000000000.0; - vshPrint(ctl, "%-15s %.1lfs\n", "CPU time:", cpuUsed); + vshPrint(ctl, "%-15s %.1lfs\n", _("CPU time:"), cpuUsed); } - vshPrint(ctl, "%-15s ", "CPU Affinity:"); + vshPrint(ctl, "%-15s ", _("CPU Affinity:")); for (m = 0 ; m < VIR_NODEINFO_MAXCPUS(nodeinfo) ; m++) { vshPrint(ctl, "%c", VIR_CPU_USABLE(cpumap, cpumaplen, n, m) ? 'y' : '-'); } @@ -1117,15 +1119,15 @@ */ static vshCmdInfo info_vcpupin[] = { {"syntax", "vcpupin <domain>"}, - {"help", "control domain vcpu affinity"}, - {"desc", "Pin domain VCPUs to host physical CPUs"}, + {"help", gettext_noop("control domain vcpu affinity")}, + {"desc", gettext_noop("Pin domain VCPUs to host physical CPUs.")}, {NULL, NULL} }; static vshCmdOptDef opts_vcpupin[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name, id or uuid"}, - {"vcpu", VSH_OT_DATA, VSH_OFLAG_REQ, "vcpu number"}, - {"cpulist", VSH_OT_DATA, VSH_OFLAG_REQ, "host cpu number(s) (comma separated)"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")}, + {"vcpu", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("vcpu number")}, + {"cpulist", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("host cpu number(s) (comma separated)")}, {NULL, 0, 0, NULL} }; @@ -1203,14 +1205,14 @@ */ static vshCmdInfo info_setvcpus[] = { {"syntax", "setvcpus <domain> <count>"}, - {"help", "change number of virtual CPUs"}, - {"desc", "Change the number of virtual CPUs active in the guest domain"}, + {"help", gettext_noop("change number of virtual CPUs")}, + {"desc", gettext_noop("Change the number of virtual CPUs active in the guest domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_setvcpus[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name, id or uuid"}, - {"count", VSH_OT_DATA, VSH_OFLAG_REQ, "number of virtual CPUs"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")}, + {"count", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("number of virtual CPUs")}, {NULL, 0, 0, NULL} }; @@ -1246,14 +1248,14 @@ */ static vshCmdInfo info_setmem[] = { {"syntax", "setmem <domain> <bytes>"}, - {"help", "change memory allocation"}, - {"desc", "Change the current memory allocation in the guest domain"}, + {"help", gettext_noop("change memory allocation")}, + {"desc", gettext_noop("Change the current memory allocation in the guest domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_setmem[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name, id or uuid"}, - {"bytes", VSH_OT_DATA, VSH_OFLAG_REQ, "number of bytes of memory"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")}, + {"bytes", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("number of bytes of memory")}, {NULL, 0, 0, NULL} }; @@ -1289,14 +1291,14 @@ */ static vshCmdInfo info_setmaxmem[] = { {"syntax", "setmaxmem <domain> <bytes>"}, - {"help", "change maximum memory limit"}, - {"desc", "Change the maximum memory allocation limit in the guest domain"}, + {"help", gettext_noop("change maximum memory limit")}, + {"desc", gettext_noop("Change the maximum memory allocation limit in the guest domain.")}, {NULL, NULL} }; static vshCmdOptDef opts_setmaxmem[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name, id or uuid"}, - {"bytes", VSH_OT_DATA, VSH_OFLAG_REQ, "maxmimum memory limit in bytes"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")}, + {"bytes", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("maxmimum memory limit in bytes")}, {NULL, 0, 0, NULL} }; @@ -1332,8 +1334,8 @@ */ static vshCmdInfo info_nodeinfo[] = { {"syntax", "nodeinfo"}, - {"help", "node information"}, - {"desc", "Returns basic information about the node."}, + {"help", gettext_noop("node information")}, + {"desc", gettext_noop("Returns basic information about the node.")}, {NULL, NULL} }; @@ -1341,23 +1343,23 @@ cmdNodeinfo(vshControl * ctl, vshCmd * cmd ATTRIBUTE_UNUSED) { virNodeInfo info; - + if (!vshConnectionUsability(ctl, ctl->conn, TRUE)) return FALSE; if (virNodeGetInfo(ctl->conn, &info) < 0) { - vshError(ctl, FALSE, "failed to get node information"); + vshError(ctl, FALSE, _("failed to get node information")); return FALSE; - } - vshPrint(ctl, "%-20s %s\n", "CPU model:", info.model); - vshPrint(ctl, "%-20s %d\n", "CPU(s):", info.cpus); - vshPrint(ctl, "%-20s %d MHz\n", "CPU frequency:", info.mhz); - vshPrint(ctl, "%-20s %d\n", "CPU socket(s):", info.sockets); - vshPrint(ctl, "%-20s %d\n", "Core(s) per socket:", info.cores); - vshPrint(ctl, "%-20s %d\n", "Thread(s) per core:", info.threads); - vshPrint(ctl, "%-20s %d\n", "NUMA cell(s):", info.nodes); - vshPrint(ctl, "%-20s %lu kB\n", "Memory size:", info.memory); - + } + vshPrint(ctl, "%-20s %s\n", _("CPU model:"), info.model); + vshPrint(ctl, "%-20s %d\n", _("CPU(s):"), info.cpus); + vshPrint(ctl, "%-20s %d MHz\n", _("CPU frequency:"), info.mhz); + vshPrint(ctl, "%-20s %d\n", _("CPU socket(s):"), info.sockets); + vshPrint(ctl, "%-20s %d\n", _("Core(s) per socket:"), info.cores); + vshPrint(ctl, "%-20s %d\n", _("Thread(s) per core:"), info.threads); + vshPrint(ctl, "%-20s %d\n", _("NUMA cell(s):"), info.nodes); + vshPrint(ctl, "%-20s %lu kB\n", _("Memory size:"), info.memory); + return TRUE; } @@ -1366,13 +1368,13 @@ */ static vshCmdInfo info_dumpxml[] = { {"syntax", "dumpxml <name>"}, - {"help", "domain information in XML"}, - {"desc", "Ouput the domain information as an XML dump to stdout"}, + {"help", gettext_noop("domain information in XML")}, + {"desc", gettext_noop("Ouput the domain information as an XML dump to stdout.")}, {NULL, NULL} }; static vshCmdOptDef opts_dumpxml[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name, id, uuid"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name, id or uuid")}, {NULL, 0, 0, NULL} }; @@ -1406,12 +1408,12 @@ */ static vshCmdInfo info_domname[] = { {"syntax", "domname <domain>"}, - {"help", "convert a domain Id or UUID to domain name"}, + {"help", gettext_noop("convert a domain id or UUID to domain name")}, {NULL, NULL} }; static vshCmdOptDef opts_domname[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain id or uuid"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain id or uuid")}, {NULL, 0, 0, NULL} }; @@ -1436,12 +1438,12 @@ */ static vshCmdInfo info_domid[] = { {"syntax", "domid <domain>"}, - {"help", "convert a domain name or UUID to domain Id"}, + {"help", gettext_noop("convert a domain name or UUID to domain id")}, {NULL, NULL} }; static vshCmdOptDef opts_domid[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain name or uuid"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain name or uuid")}, {NULL, 0, 0, NULL} }; @@ -1471,12 +1473,12 @@ */ static vshCmdInfo info_domuuid[] = { {"syntax", "domuuid <domain>"}, - {"help", "convert a domain name or id to domain UUID"}, + {"help", gettext_noop("convert a domain name or id to domain UUID")}, {NULL, NULL} }; static vshCmdOptDef opts_domuuid[] = { - {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, "domain id or name"}, + {"domain", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("domain id or name")}, {NULL, 0, 0, NULL} }; @@ -1488,15 +1490,15 @@ if (!vshConnectionUsability(ctl, ctl->conn, TRUE)) return FALSE; - if (!(dom = vshCommandOptDomainBy(ctl, cmd, "domain", NULL, + if (!(dom = vshCommandOptDomainBy(ctl, cmd, "domain", NULL, VSH_DOMBYNAME|VSH_DOMBYID))) return FALSE; - + if (virDomainGetUUIDString(dom, uuid) != -1) vshPrint(ctl, "%s\n", uuid); else - vshError(ctl, FALSE, "failed to get domain UUID"); - + vshError(ctl, FALSE, _("failed to get domain UUID")); + return TRUE; } @@ -1506,8 +1508,8 @@ */ static vshCmdInfo info_version[] = { {"syntax", "version"}, - {"help", "show versions"}, - {"desc", "Display the version information available"}, + {"help", gettext_noop("show version")}, + {"desc", gettext_noop("Display the system version information.")}, {NULL, NULL} }; @@ -1530,7 +1532,7 @@ hvType = virConnectGetType(ctl->conn); if (hvType == NULL) { - vshError(ctl, FALSE, "failed to get hypervisor type\n"); + vshError(ctl, FALSE, _("failed to get hypervisor type")); return FALSE; } @@ -1539,43 +1541,43 @@ includeVersion %= 1000000; minor = includeVersion / 1000; rel = includeVersion % 1000; - vshPrint(ctl, "Compiled against library: libvir %d.%d.%d\n", + vshPrint(ctl, _("Compiled against library: libvir %d.%d.%d\n"), major, minor, rel); ret = virGetVersion(&libVersion, hvType, &apiVersion); if (ret < 0) { - vshError(ctl, FALSE, "failed to get the library version"); + vshError(ctl, FALSE, _("failed to get the library version")); return FALSE; } major = libVersion / 1000000; libVersion %= 1000000; minor = libVersion / 1000; rel = libVersion % 1000; - vshPrint(ctl, "Using library: libvir %d.%d.%d\n", + vshPrint(ctl, _("Using library: libvir %d.%d.%d\n"), major, minor, rel); major = apiVersion / 1000000; apiVersion %= 1000000; minor = apiVersion / 1000; rel = apiVersion % 1000; - vshPrint(ctl, "Using API: %s %d.%d.%d\n", hvType, + vshPrint(ctl, _("Using API: %s %d.%d.%d\n"), hvType, major, minor, rel); ret = virConnectGetVersion(ctl->conn, &hvVersion); if (ret < 0) { - vshError(ctl, FALSE, "failed to get the hypervisor version"); + vshError(ctl, FALSE, _("failed to get the hypervisor version")); return FALSE; } if (hvVersion == 0) { vshPrint(ctl, - "cannot extract running %s hypervisor version\n", hvType); + _("Cannot extract running %s hypervisor version\n"), hvType); } else { major = hvVersion / 1000000; hvVersion %= 1000000; minor = hvVersion / 1000; rel = hvVersion % 1000; - vshPrint(ctl, "Running hypervisor: %s %d.%d.%d\n", + vshPrint(ctl, _("Running hypervisor: %s %d.%d.%d\n"), hvType, major, minor, rel); } return TRUE; @@ -1586,7 +1588,7 @@ */ static vshCmdInfo info_quit[] = { {"syntax", "quit"}, - {"help", "quit this interactive terminal"}, + {"help", gettext_noop("quit this interactive terminal")}, {NULL, NULL} }; @@ -1698,8 +1700,8 @@ if (!ok) { vshError(ctl, FALSE, d->type == VSH_OT_DATA ? - "command '%s' requires <%s> option" : - "command '%s' requires --%s option", + _("command '%s' requires <%s> option") : + _("command '%s' requires --%s option"), def->name, d->name); err = 1; } @@ -1726,39 +1728,39 @@ vshCmdDef *def = vshCmddefSearch(cmdname); if (!def) { - vshError(ctl, FALSE, "command '%s' doesn't exist", cmdname); + vshError(ctl, FALSE, _("command '%s' doesn't exist"), cmdname); return FALSE; } else { vshCmdOptDef *opt; - const char *desc = vshCmddefGetInfo(def, "desc"); - const char *help = vshCmddefGetInfo(def, "help"); + const char *desc = _N(vshCmddefGetInfo(def, "desc")); + const char *help = _N(vshCmddefGetInfo(def, "help")); const char *syntax = vshCmddefGetInfo(def, "syntax"); - fputs(" NAME\n", stdout); + fputs(_(" NAME\n"), stdout); fprintf(stdout, " %s - %s\n", def->name, help); if (syntax) { - fputs("\n SYNOPSIS\n", stdout); + fputs(("\n SYNOPSIS\n"), stdout); if (!withprog) fprintf(stdout, " %s\n", syntax); else fprintf(stdout, " %s %s\n", progname, syntax); } if (desc) { - fputs("\n DESCRIPTION\n", stdout); + fputs(_("\n DESCRIPTION\n"), stdout); fprintf(stdout, " %s\n", desc); } if (def->opts) { - fputs("\n OPTIONS\n", stdout); + fputs(_("\n OPTIONS\n"), stdout); for (opt = def->opts; opt->name; opt++) { char buf[256]; if (opt->type == VSH_OT_BOOL) snprintf(buf, sizeof(buf), "--%s", opt->name); else if (opt->type == VSH_OT_INT) - snprintf(buf, sizeof(buf), "--%s <number>", opt->name); + snprintf(buf, sizeof(buf), _("--%s <number>"), opt->name); else if (opt->type == VSH_OT_STRING) - snprintf(buf, sizeof(buf), "--%s <string>", opt->name); + snprintf(buf, sizeof(buf), _("--%s <string>"), opt->name); else if (opt->type == VSH_OT_DATA) snprintf(buf, sizeof(buf), "<%s>", opt->name); @@ -1871,7 +1873,7 @@ int id; if (!(n = vshCommandOptString(cmd, optname, NULL))) { - vshError(ctl, FALSE, "undefined domain name or id"); + vshError(ctl, FALSE, _("undefined domain name or id")); return NULL; } @@ -1904,7 +1906,7 @@ } if (!dom) - vshError(ctl, FALSE, "failed to get domain '%s'", n); + vshError(ctl, FALSE, _("failed to get domain '%s'"), n); return dom; } @@ -1932,7 +1934,7 @@ return ret; if (ctl->timing) - vshPrint(ctl, "\n(Time: %.3f ms)\n\n", + vshPrint(ctl, _("\n(Time: %.3f ms)\n\n"), DIFF_MSEC(&after, &before)); else vshPrintExtra(ctl, "\n"); @@ -2006,7 +2008,7 @@ sz++; } if (quote) { - vshError(ctl, FALSE, "missing \""); + vshError(ctl, FALSE, _("missing \"")); return VSH_TK_ERROR; } if (tkstr == NULL || *tkstr == '\0' || p == NULL) @@ -2067,19 +2069,19 @@ /* first token must be command name */ if (tk != VSH_TK_DATA) { vshError(ctl, FALSE, - "unexpected token (command name): '%s'", + _("unexpected token (command name): '%s'"), tkdata); goto syntaxError; } if (!(cmd = vshCmddefSearch(tkdata))) { - vshError(ctl, FALSE, "unknown command: '%s'", tkdata); + vshError(ctl, FALSE, _("unknown command: '%s'"), tkdata); goto syntaxError; /* ... or ignore this command only? */ } free(tkdata); } else if (tk == VSH_TK_OPTION) { if (!(opt = vshCmddefGetOption(cmd, tkdata))) { vshError(ctl, FALSE, - "command '%s' doesn't support option --%s", + _("command '%s' doesn't support option --%s"), cmd->name, tkdata); goto syntaxError; } @@ -2094,16 +2096,16 @@ goto syntaxError; if (tk != VSH_TK_DATA) { vshError(ctl, FALSE, - "expected syntax: --%s <%s>", + _("expected syntax: --%s <%s>"), opt->name, opt->type == - VSH_OT_INT ? "number" : "string"); + VSH_OT_INT ? _("number") : _("string")); goto syntaxError; } } } else if (tk == VSH_TK_DATA) { if (!(opt = vshCmddefGetData(cmd, data_ct++))) { - vshError(ctl, FALSE, "unexpected data '%s'", tkdata); + vshError(ctl, FALSE, _("unexpected data '%s'"), tkdata); goto syntaxError; } } @@ -2125,7 +2127,7 @@ vshDebug(ctl, 4, "%s: %s(%s): %s\n", cmd->name, opt->name, - tk == VSH_TK_OPTION ? "OPTION" : "DATA", + tk == VSH_TK_OPTION ? _("OPTION") : _("DATA"), arg->data); } if (!str) @@ -2173,19 +2175,19 @@ { switch (state) { case VIR_DOMAIN_RUNNING: - return "running "; + return gettext_noop("running"); case VIR_DOMAIN_BLOCKED: - return "blocked "; + return gettext_noop("blocked"); case VIR_DOMAIN_PAUSED: - return "paused "; + return gettext_noop("paused"); case VIR_DOMAIN_SHUTDOWN: - return "in shutdown"; + return gettext_noop("in shutdown"); case VIR_DOMAIN_SHUTOFF: - return "shut off"; + return gettext_noop("shut off"); case VIR_DOMAIN_CRASHED: - return "crashed"; + return gettext_noop("crashed"); default: - return "no state"; /* = dom0 state */ + return gettext_noop("no state"); /* = dom0 state */ } return NULL; } @@ -2195,13 +2197,13 @@ { switch (state) { case VIR_VCPU_OFFLINE: - return "offline"; + return gettext_noop("offline"); case VIR_VCPU_BLOCKED: - return "blocked"; + return gettext_noop("blocked"); case VIR_VCPU_RUNNING: - return "running"; + return gettext_noop("running"); default: - return "no state"; + return gettext_noop("no state"); } return NULL; } @@ -2214,7 +2216,7 @@ */ if (!conn) { if (showerror) - vshError(ctl, FALSE, "no valid connection."); + vshError(ctl, FALSE, _("no valid connection")); return FALSE; } return TRUE; @@ -2253,9 +2255,9 @@ va_list ap; if (doexit) - fprintf(stderr, "%s: error: ", progname); + fprintf(stderr, _("%s: error: "), progname); else - fputs("error: ", stderr); + fputs(_("error: "), stderr); va_start(ap, format); vfprintf(stderr, format, ap); @@ -2277,8 +2279,8 @@ if ((x = malloc(size))) return x; - vshError(ctl, TRUE, "%s: %d: failed to allocate %d bytes\n", - filename, line, (int) size); + vshError(ctl, TRUE, _("%s: %d: failed to allocate %d bytes"), + filename, line, (int) size); return NULL; } @@ -2289,8 +2291,8 @@ if ((x = calloc(nmemb, size))) return x; - vshError(ctl, TRUE, "%s: %d: failed to allocate %d bytes\n", - filename, line, (int) (size*nmemb)); + vshError(ctl, TRUE, _("%s: %d: failed to allocate %d bytes"), + filename, line, (int) (size*nmemb)); return NULL; } @@ -2301,8 +2303,8 @@ if ((x = strdup(s))) return x; - vshError(ctl, TRUE, "%s: %d: failed to allocate %d bytes\n", - filename, line, strlen(s)); + vshError(ctl, TRUE, _("%s: %d: failed to allocate %d bytes"), + filename, line, strlen(s)); return NULL; } @@ -2329,7 +2331,7 @@ ctl->conn = virConnectOpenReadOnly(ctl->name); if (!ctl->conn) - vshError(ctl, TRUE, "failed to connect to the hypervisor"); + vshError(ctl, TRUE, _("failed to connect to the hypervisor")); return TRUE; } @@ -2474,23 +2476,23 @@ /* global help */ if (!cmdname) { - fprintf(stdout, "\n%s [options] [commands]\n\n" - " options:\n" - " -c | --connect <name> optional argument currently unused (or used for tests only)\n" - " -d | --debug <num> debug level [0-5]\n" - " -h | --help this help\n" - " -q | --quiet quiet mode\n" - " -t | --timing print timing information\n" - " -v | --version program version\n\n" - " commands (non interactive mode):\n", progname); + fprintf(stdout, _("\n%s [options] [commands]\n\n" + " options:\n" + " -c | --connect <uri> hypervisor connection URI\n" + " -d | --debug <num> debug level [0-5]\n" + " -h | --help this help\n" + " -q | --quiet quiet mode\n" + " -t | --timing print timing information\n" + " -v | --version program version\n\n" + " commands (non interactive mode):\n"), progname); for (cmd = commands; cmd->name; cmd++) fprintf(stdout, - " %-15s %s\n", cmd->name, vshCmddefGetInfo(cmd, - "help")); + " %-15s %s\n", cmd->name, _N(vshCmddefGetInfo(cmd, + "help"))); fprintf(stdout, - "\n (specify --help <command> for details about the command)\n\n"); + _("\n (specify --help <command> for details about the command)\n\n")); return; } if (!vshCmddefHelp(ctl, cmdname, TRUE)) @@ -2576,7 +2578,7 @@ exit(EXIT_SUCCESS); default: vshError(ctl, TRUE, - "unsupported option '-%c'. See --help.", arg); + _("unsupported option '-%c'. See --help."), arg); break; } } @@ -2620,6 +2622,19 @@ char *defaultConn; int ret = TRUE; + if (!setlocale(LC_ALL, "")) { + perror("setlocale"); + return -1; + } + if (!bindtextdomain(GETTEXT_PACKAGE, LOCALEBASEDIR)) { + perror("bindtextdomain"); + return -1; + } + if (!textdomain(GETTEXT_PACKAGE)) { + perror("textdomain"); + return -1; + } + if (!(progname = strrchr(argv[0], '/'))) progname = argv[0]; else @@ -2644,11 +2659,11 @@ /* interactive mode */ if (!ctl->quiet) { vshPrint(ctl, - "Welcome to %s, the virtualization interactive terminal.\n\n", + _("Welcome to %s, the virtualization interactive terminal.\n\n"), progname); vshPrint(ctl, - "Type: 'help' for help with commands\n" - " 'quit' to quit\n\n"); + _("Type: 'help' for help with commands\n" + " 'quit' to quit\n\n")); } vshReadlineInit(); do { Index: src/virterror.c =================================================================== RCS file: /data/cvs/libvirt/src/virterror.c,v retrieving revision 1.17 diff -u -r1.17 virterror.c --- src/virterror.c 29 Aug 2006 22:27:07 -0000 1.17 +++ src/virterror.c 20 Sep 2006 19:55:56 -0000 @@ -240,10 +240,10 @@ lvl = ""; break; case VIR_ERR_WARNING: - lvl = "warning"; + lvl = _("warning"); break; case VIR_ERR_ERROR: - lvl = "error"; + lvl = _("error"); break; } switch (err->domain) { @@ -325,7 +325,7 @@ * formats the message */ if (msg == NULL) { - str = strdup("No error message provided"); + str = strdup(_("No error message provided")); } else { VIR_GET_VAR_STR(msg, str); } @@ -379,195 +379,195 @@ return (NULL); case VIR_ERR_INTERNAL_ERROR: if (info != NULL) - errmsg = "internal error %s"; + errmsg = _("internal error %s"); else - errmsg = "internal error"; + errmsg = _("internal error"); break; case VIR_ERR_NO_MEMORY: - errmsg = "out of memory"; + errmsg = _("out of memory"); break; case VIR_ERR_NO_SUPPORT: if (info != NULL) - errmsg = "no support for hypervisor"; + errmsg = _("no support for hypervisor"); else - errmsg = "no support for hypervisor %s"; + errmsg = _("no support for hypervisor %s"); break; case VIR_ERR_NO_CONNECT: if (info == NULL) - errmsg = "could not connect to hypervisor"; + errmsg = _("could not connect to hypervisor"); else - errmsg = "could not connect to %s"; + errmsg = _("could not connect to %s"); break; case VIR_ERR_INVALID_CONN: if (info == NULL) - errmsg = "invalid connection pointer in"; + errmsg = _("invalid connection pointer in"); else - errmsg = "invalid connection pointer in %s"; + errmsg = _("invalid connection pointer in %s"); break; case VIR_ERR_INVALID_DOMAIN: if (info == NULL) - errmsg = "invalid domain pointer in"; + errmsg = _("invalid domain pointer in"); else - errmsg = "invalid domain pointer in %s"; + errmsg = _("invalid domain pointer in %s"); break; case VIR_ERR_INVALID_ARG: if (info == NULL) - errmsg = "invalid argument in"; + errmsg = _("invalid argument in"); else - errmsg = "invalid argument in %s"; + errmsg = _("invalid argument in %s"); break; case VIR_ERR_OPERATION_FAILED: if (info != NULL) - errmsg = "operation failed: %s"; + errmsg = _("operation failed: %s"); else - errmsg = "operation failed"; + errmsg = _("operation failed"); break; case VIR_ERR_GET_FAILED: if (info != NULL) - errmsg = "GET operation failed: %s"; + errmsg = _("GET operation failed: %s"); else - errmsg = "GET operation failed"; + errmsg = _("GET operation failed"); break; case VIR_ERR_POST_FAILED: if (info != NULL) - errmsg = "POST operation failed: %s"; + errmsg = _("POST operation failed: %s"); else - errmsg = "POST operation failed"; + errmsg = _("POST operation failed"); break; case VIR_ERR_HTTP_ERROR: - errmsg = "got unknown HTTP error code %d"; + errmsg = _("got unknown HTTP error code %d"); break; case VIR_ERR_UNKNOWN_HOST: if (info != NULL) - errmsg = "unknown host %s"; + errmsg = _("unknown host %s"); else - errmsg = "unknown host"; + errmsg = _("unknown host"); break; case VIR_ERR_SEXPR_SERIAL: if (info != NULL) - errmsg = "failed to serialize S-Expr: %s"; + errmsg = _("failed to serialize S-Expr: %s"); else - errmsg = "failed to serialize S-Expr"; + errmsg = _("failed to serialize S-Expr"); break; case VIR_ERR_NO_XEN: if (info == NULL) - errmsg = "could not use Xen hypervisor entry"; + errmsg = _("could not use Xen hypervisor entry"); else - errmsg = "could not use Xen hypervisor entry %s"; + errmsg = _("could not use Xen hypervisor entry %s"); break; case VIR_ERR_NO_XENSTORE: if (info == NULL) - errmsg = "could not connect to Xen Store"; + errmsg = _("could not connect to Xen Store"); else - errmsg = "could not connect to Xen Store %s"; + errmsg = _("could not connect to Xen Store %s"); break; case VIR_ERR_XEN_CALL: - errmsg = "failed Xen syscall %s %d"; + errmsg = _("failed Xen syscall %s %d"); break; case VIR_ERR_OS_TYPE: if (info == NULL) - errmsg = "unknown OS type"; + errmsg = _("unknown OS type"); else - errmsg = "unknown OS type %s"; + errmsg = _("unknown OS type %s"); break; case VIR_ERR_NO_KERNEL: - errmsg = "missing kernel information"; + errmsg = _("missing kernel information"); break; case VIR_ERR_NO_ROOT: if (info == NULL) - errmsg = "missing root device information"; + errmsg = _("missing root device information"); else - errmsg = "missing root device information in %s"; + errmsg = _("missing root device information in %s"); break; case VIR_ERR_NO_SOURCE: if (info == NULL) - errmsg = "missing source information for device"; + errmsg = _("missing source information for device"); else - errmsg = "missing source information for device %s"; + errmsg = _("missing source information for device %s"); break; case VIR_ERR_NO_TARGET: if (info == NULL) - errmsg = "missing target information for device"; + errmsg = _("missing target information for device"); else - errmsg = "missing target information for device %s"; + errmsg = _("missing target information for device %s"); break; case VIR_ERR_NO_NAME: if (info == NULL) - errmsg = "missing domain name information"; + errmsg = _("missing domain name information"); else - errmsg = "missing domain name information in %s"; + errmsg = _("missing domain name information in %s"); break; case VIR_ERR_NO_OS: if (info == NULL) - errmsg = "missing operating system information"; + errmsg = _("missing operating system information"); else - errmsg = "missing operating system information for %s"; + errmsg = _("missing operating system information for %s"); break; case VIR_ERR_NO_DEVICE: if (info == NULL) - errmsg = "missing devices information"; + errmsg = _("missing devices information"); else - errmsg = "missing devices information for %s"; + errmsg = _("missing devices information for %s"); break; case VIR_ERR_DRIVER_FULL: if (info == NULL) - errmsg = "too many drivers registered"; + errmsg = _("too many drivers registered"); else - errmsg = "too many drivers registered in %s"; + errmsg = _("too many drivers registered in %s"); break; case VIR_ERR_CALL_FAILED: if (info == NULL) - errmsg = "library call failed, possibly not supported"; + errmsg = _("library call failed, possibly not supported"); else - errmsg = "library call %s failed, possibly not supported"; + errmsg = _("library call %s failed, possibly not supported"); break; case VIR_ERR_XML_ERROR: if (info == NULL) - errmsg = "XML description not well formed or invalid"; + errmsg = _("XML description not well formed or invalid"); else - errmsg = "XML description for %s is not well formed or invalid"; + errmsg = _("XML description for %s is not well formed or invalid"); break; case VIR_ERR_DOM_EXIST: if (info == NULL) - errmsg = "this domain exists already"; + errmsg = _("this domain exists already"); else - errmsg = "domain %s exists already"; + errmsg = _("domain %s exists already"); break; case VIR_ERR_OPERATION_DENIED: if (info == NULL) - errmsg = "operation forbidden for read only access"; + errmsg = _("operation forbidden for read only access"); else - errmsg = "operation %s forbidden for read only access"; + errmsg = _("operation %s forbidden for read only access"); break; case VIR_ERR_OPEN_FAILED: if (info == NULL) - errmsg = "failed to open configuration file for reading"; + errmsg = _("failed to open configuration file for reading"); else - errmsg = "failed to open %s for reading"; + errmsg = _("failed to open %s for reading"); break; case VIR_ERR_READ_FAILED: if (info == NULL) - errmsg = "failed to read configuration file"; + errmsg = _("failed to read configuration file"); else - errmsg = "failed to read configuration file %s"; + errmsg = _("failed to read configuration file %s"); break; case VIR_ERR_PARSE_FAILED: if (info == NULL) - errmsg = "failed to parse configuration file"; + errmsg = _("failed to parse configuration file"); else - errmsg = "failed to parse configuration file %s"; + errmsg = _("failed to parse configuration file %s"); break; case VIR_ERR_CONF_SYNTAX: if (info == NULL) - errmsg = "configuration file syntax error"; + errmsg = _("configuration file syntax error"); else - errmsg = "configuration file syntax error: %s"; + errmsg = _("configuration file syntax error: %s"); break; case VIR_ERR_WRITE_FAILED: if (info == NULL) - errmsg = "failed to write configuration file"; + errmsg = _("failed to write configuration file"); else - errmsg = "failed to write configuration file: %s"; + errmsg = _("failed to write configuration file: %s"); break; } return (errmsg); Index: src/xen_internal.c =================================================================== RCS file: /data/cvs/libvirt/src/xen_internal.c,v retrieving revision 1.40 diff -u -r1.40 xen_internal.c --- src/xen_internal.c 19 Sep 2006 15:55:57 -0000 1.40 +++ src/xen_internal.c 20 Sep 2006 19:55:57 -0000 @@ -1238,7 +1238,7 @@ retry: dominfos = malloc(maxids * sizeof(xen_v0_getdomaininfo)); if (dominfos == NULL) { - virXenError(VIR_ERR_NO_MEMORY, "failed to allocate %d domain info", + virXenError(VIR_ERR_NO_MEMORY, _("allocating %d domain info"), maxids); return(-1); } @@ -1285,7 +1285,7 @@ dominfos = malloc(maxids * sizeof(xen_v0_getdomaininfo)); if (dominfos == NULL) { - virXenError(VIR_ERR_NO_MEMORY, "failed to allocate %d domain info", + virXenError(VIR_ERR_NO_MEMORY, "allocating %d domain info", maxids); return(-1); } Index: src/xend_internal.c =================================================================== RCS file: /data/cvs/libvirt/src/xend_internal.c,v retrieving revision 1.62 diff -u -r1.62 xend_internal.c --- src/xend_internal.c 14 Sep 2006 15:34:50 -0000 1.62 +++ src/xend_internal.c 20 Sep 2006 19:55:58 -0000 @@ -261,10 +261,10 @@ if (len == -1) { if (do_read) virXendError(NULL, VIR_ERR_INTERNAL_ERROR, - "faid to read from Xen Daemon"); + _("failed to read from Xen Daemon")); else virXendError(NULL, VIR_ERR_INTERNAL_ERROR, - "faid to read from Xen Daemon"); + _("failed to read from Xen Daemon")); return (-1); } @@ -1053,7 +1053,7 @@ if (ptr == NULL) { /* this should be caught at the interface but ... */ virXendError(xend, VIR_ERR_INTERNAL_ERROR, - "Failed to urlencode the create S-Expr"); + _("failed to urlencode the create S-Expr")); return (-1); } @@ -1094,20 +1094,20 @@ value = sexpr_node(root, "domain/domid"); if (value == NULL) { virXendError(xend, VIR_ERR_INTERNAL_ERROR, - "domain information incomplete, missing domid"); + _("domain information incomplete, missing domid")); goto error; } ret = strtol(value, NULL, 0); if ((ret == 0) && (value[0] != '0')) { virXendError(xend, VIR_ERR_INTERNAL_ERROR, - "domain information incorrect domid not numberic"); + _("domain information incorrect domid not numeric")); ret = -1; } else if (uuid != NULL) { char **ptr = (char **) &uuid; if (sexpr_uuid(ptr, root, "domain/uuid") == NULL) { virXendError(xend, VIR_ERR_INTERNAL_ERROR, - "domain information incomplete, missing uuid"); + _("domain information incomplete, missing uuid")); } } @@ -1147,7 +1147,7 @@ name = sexpr_node(root, "domain/name"); if (name == NULL) { virXendError(xend, VIR_ERR_INTERNAL_ERROR, - "domain information incomplete, missing name"); + _("domain information incomplete, missing name")); goto error; } if (domname) @@ -1156,7 +1156,7 @@ dst_uuid = (char *)&uuid[0]; if (sexpr_uuid(&dst_uuid, root, "domain/uuid") == NULL) { virXendError(xend, VIR_ERR_INTERNAL_ERROR, - "domain information incomplete, missing uuid"); + _("domain information incomplete, missing uuid")); goto error; } @@ -1405,7 +1405,7 @@ tmp = sexpr_node(node, "domain/image/hvm/kernel"); if (tmp == NULL) { virXendError(NULL, VIR_ERR_INTERNAL_ERROR, - "domain information incomplete, missing kernel"); + _("domain information incomplete, missing kernel")); return(-1); } virBufferVSprintf(buf, " <loader>%s</loader>\n", tmp); @@ -1430,7 +1430,7 @@ tmp = sexpr_node(node, "domain/image/linux/kernel"); if (tmp == NULL) { virXendError(NULL, VIR_ERR_INTERNAL_ERROR, - "domain information incomplete, missing kernel"); + _("domain information incomplete, missing kernel")); return(-1); } virBufferVSprintf(buf, " <kernel>%s</kernel>\n", tmp); @@ -1484,11 +1484,11 @@ domid = sexpr_int(root, "domain/domid"); virBufferVSprintf(&buf, "<domain type='xen' id='%d'>\n", domid); - + tmp = sexpr_node(root, "domain/name"); if (tmp == NULL) { virXendError(NULL, VIR_ERR_INTERNAL_ERROR, - "domain information incomplete, missing name"); + _("domain information incomplete, missing name")); goto error; } virBufferVSprintf(&buf, " <name>%s</name>\n", tmp); @@ -1540,7 +1540,7 @@ virBufferAdd(&buf, " <pae/>\n", 11); virBufferAdd(&buf, " </features>\n", 14); } - + virBufferAdd(&buf, " <devices>\n", 12); /* in case of HVM we have devices emulation */ @@ -1561,9 +1561,10 @@ if (dst == NULL) { virXendError(NULL, VIR_ERR_INTERNAL_ERROR, - "domain information incomplete, vbd has no dev"); + _("domain information incomplete, vbd has no dev")); goto error; } + if (!strncmp(dst, "ioemu:", 6)) dst += 6; /* New style disk config from Xen >= 3.0.3 */ @@ -1597,9 +1598,10 @@ if (dst == NULL) { virXendError(NULL, VIR_ERR_INTERNAL_ERROR, - "domain information incomplete, vbd has no dev"); + _("domain information incomplete, vbd has no dev")); goto error; } + if (!strncmp(dst, "ioemu:", 6)) dst += 6; /* New style cdrom config from Xen >= 3.0.3 */ @@ -1859,7 +1861,7 @@ ret = virGetDomain(conn, name, (const unsigned char *) &uuid[0]); if (ret == NULL) { - virXendError(conn, VIR_ERR_NO_MEMORY, "Allocating domain"); + virXendError(conn, VIR_ERR_NO_MEMORY, _("allocating domain")); return(NULL); } ret->handle = sexpr_int(root, "domain/domid"); @@ -1870,7 +1872,7 @@ error: virXendError(conn, VIR_ERR_INTERNAL_ERROR, - "failed to parse Xend domain information"); + _("failed to parse Xend domain information")); if (ret != NULL) virFreeDomain(conn, ret); return(NULL); @@ -1949,7 +1951,7 @@ ret = xenDaemonOpen_unix(conn, uri->path); if (ret < 0) goto failed; - + ret = xenDaemonGetVersion(conn, &version); if (ret < 0) goto failed; @@ -2558,7 +2560,7 @@ ret = virGetDomain(conn, name, uuid); if (ret == NULL) { - virXendError(conn, VIR_ERR_NO_MEMORY, "Allocating domain"); + virXendError(conn, VIR_ERR_NO_MEMORY, _("allocating domain")); goto error; } ret->handle = id; @@ -2766,7 +2768,7 @@ ret = virGetDomain(conn, name, uuid); if (ret == NULL) { - virXendError(conn, VIR_ERR_NO_MEMORY, "Allocating domain"); + virXendError(conn, VIR_ERR_NO_MEMORY, _("allocating domain")); goto error; } ret->handle = id; @@ -2829,13 +2831,13 @@ ret = xenDaemonDomainCreateLinux(conn, sexpr); free(sexpr); if (ret != 0) { - fprintf(stderr, "Failed to create domain %s\n", name); + fprintf(stderr, _("Failed to create domain %s\n"), name); goto error; } ret = xend_wait_for_devices(conn, name); if (ret != 0) { - fprintf(stderr, "Failed to get devices for domain %s\n", name); + fprintf(stderr, _("Failed to get devices for domain %s\n"), name); goto error; } @@ -2846,7 +2848,7 @@ ret = xenDaemonDomainResume(dom); if (ret != 0) { - fprintf(stderr, "Failed to resume new domain %s\n", name); + fprintf(stderr, _("Failed to resume new domain %s\n"), name); xenDaemonDomainDestroy(dom); goto error; } Index: src/xml.c =================================================================== RCS file: /data/cvs/libvirt/src/xml.c,v retrieving revision 1.40 diff -u -r1.40 xml.c --- src/xml.c 14 Sep 2006 15:34:50 -0000 1.40 +++ src/xml.c 20 Sep 2006 19:55:59 -0000 @@ -61,7 +61,7 @@ newbuf = (char *) realloc(buf->content, size); if (newbuf == NULL) { - virXMLError(VIR_ERR_NO_MEMORY, "growing buffer", size); + virXMLError(VIR_ERR_NO_MEMORY, _("growing buffer"), size); return (-1); } buf->content = newbuf; @@ -113,11 +113,11 @@ virBufferPtr buf; if (!(buf = malloc(sizeof(*buf)))) { - virXMLError(VIR_ERR_NO_MEMORY, "allocate new buffer", sizeof(*buf)); + virXMLError(VIR_ERR_NO_MEMORY, _("allocate new buffer"), sizeof(*buf)); return NULL; } if (size && (buf->content = malloc(size))==NULL) { - virXMLError(VIR_ERR_NO_MEMORY, "allocate buffer content", size); + virXMLError(VIR_ERR_NO_MEMORY, _("allocate buffer content"), size); free(buf); return NULL; } Index: src/xmlrpc.c =================================================================== RCS file: /data/cvs/libvirt/src/xmlrpc.c,v retrieving revision 1.4 diff -u -r1.4 xmlrpc.c --- src/xmlrpc.c 10 May 2006 14:48:20 -0000 1.4 +++ src/xmlrpc.c 20 Sep 2006 19:55:59 -0000 @@ -60,8 +60,8 @@ if (node->type == XML_TEXT_NODE) { char *x = strdup((const char *)node->content); if (!x) - xmlRpcError(VIR_ERR_NO_MEMORY, "copying node content", - strlen((const char *)node->content)); + xmlRpcError(VIR_ERR_NO_MEMORY, _("copying node content"), + strlen((const char *)node->content)); return x; } return NULL; @@ -154,14 +154,14 @@ if (!ret) return NULL; - + for (cur = xmlFirstElement(node); cur; cur = xmlNextElement(cur)) n_elements += 1; ret->value.array.elements = malloc(n_elements * sizeof(xmlRpcValue)); if (!ret->value.array.elements) { - xmlRpcError(VIR_ERR_NO_MEMORY, "allocate value array", - n_elements * sizeof(xmlRpcValue)); + xmlRpcError(VIR_ERR_NO_MEMORY, _("allocate value array"), + n_elements * sizeof(xmlRpcValue)); free(ret); return NULL; } @@ -193,7 +193,7 @@ } else if (xmlStrEqual(cur->name, BAD_CAST "value")) { ret->value = xmlRpcValueUnmarshal(cur); } else { - xmlRpcError(VIR_ERR_XML_ERROR, "unexpected dict node", 0); + xmlRpcError(VIR_ERR_XML_ERROR, _("unexpected dict node"), 0); if (ret->name) free(ret->name); if (ret->value) @@ -265,7 +265,7 @@ } else if (xmlStrEqual(node->name, BAD_CAST "nil")) { ret = xmlRpcValueNew(XML_RPC_NIL); } else { - xmlRpcError(VIR_ERR_XML_ERROR, "unexpected value node", 0); + xmlRpcError(VIR_ERR_XML_ERROR, _("unexpected value node"), 0); } return ret; @@ -426,22 +426,22 @@ &contentType, NULL, strlen(request)); - + if (cxt == NULL) { - xmlRpcError(VIR_ERR_POST_FAILED, "send request", 0); + xmlRpcError(VIR_ERR_POST_FAILED, _("send request"), 0); goto error; } if (contentType && strcmp(contentType, "text/xml") != 0) { errno = EINVAL; - xmlRpcError(VIR_ERR_POST_FAILED, "unexpected mime type", 0); + xmlRpcError(VIR_ERR_POST_FAILED, _("unexpected mime type"), 0); goto error; } len = xmlNanoHTTPContentLength(cxt); response = malloc(len + 1); if (response == NULL) { - xmlRpcError(VIR_ERR_NO_MEMORY, "allocate response", len); + xmlRpcError(VIR_ERR_NO_MEMORY, _("allocate response"), len); goto error; } ret = xmlNanoHTTPRead(cxt, response, len); @@ -449,7 +449,7 @@ errno = EINVAL; free(response); response = NULL; - xmlRpcError(VIR_ERR_POST_FAILED, "read response", 0); + xmlRpcError(VIR_ERR_POST_FAILED, _("read response"), 0); } response[len] = 0; @@ -481,7 +481,7 @@ size += strlen(value->value.array.elements[i]->value.string) + 1; if (!(ptr = malloc(size))) { - xmlRpcError(VIR_ERR_NO_MEMORY, "allocate string array", size); + xmlRpcError(VIR_ERR_NO_MEMORY, _("allocate string array"), size); return NULL; } ret = (char **)ptr; @@ -511,7 +511,7 @@ *argc = strlen(fmt); if (!(argv = malloc(sizeof(*argv) * *argc))) { - xmlRpcError(VIR_ERR_NO_MEMORY, "read response", sizeof(*argv) * *argc); + xmlRpcError(VIR_ERR_NO_MEMORY, _("read response"), sizeof(*argv) * *argc); return NULL; } i = 0; @@ -603,7 +603,7 @@ if (xml == NULL) { errno = EINVAL; - xmlRpcError(VIR_ERR_XML_ERROR, "parse server response failed", 0); + xmlRpcError(VIR_ERR_XML_ERROR, _("parse server response failed"), 0); return -1; } @@ -667,7 +667,7 @@ ret->uri = strdup(uri); ret->faultMessage = NULL; } else - xmlRpcError(VIR_ERR_NO_MEMORY, "allocate new context", sizeof(*ret)); + xmlRpcError(VIR_ERR_NO_MEMORY, _("allocate new context"), sizeof(*ret)); return ret; } Index: src/xs_internal.c =================================================================== RCS file: /data/cvs/libvirt/src/xs_internal.c,v retrieving revision 1.18 diff -u -r1.18 xs_internal.c --- src/xs_internal.c 2 Sep 2006 21:23:14 -0000 1.18 +++ src/xs_internal.c 20 Sep 2006 19:55:59 -0000 @@ -315,7 +315,7 @@ if (conn->xshandle == NULL) { if (!(flags & VIR_DRV_OPEN_QUIET)) virXenStoreError(conn, VIR_ERR_NO_XEN, - "failed to connect to Xen Store"); + _("failed to connect to Xen Store")); return (-1); } return (0); @@ -589,7 +589,7 @@ ret = virGetDomain(conn, name, NULL); if (ret == NULL) { - virXenStoreError(conn, VIR_ERR_NO_MEMORY, "Allocating domain"); + virXenStoreError(conn, VIR_ERR_NO_MEMORY, _("allocating domain")); if (path != NULL) free(path); goto done; Index: tests/Makefile.am =================================================================== RCS file: /data/cvs/libvirt/tests/Makefile.am,v retrieving revision 1.8 diff -u -r1.8 Makefile.am --- tests/Makefile.am 12 Sep 2006 01:16:22 -0000 1.8 +++ tests/Makefile.am 20 Sep 2006 19:55:59 -0000 @@ -10,8 +10,8 @@ -I$(top_srcdir)/include \ -I$(top_srcdir)/src \ @LIBXML_CFLAGS@ \ - -D_XOPEN_SOURCE=600 -D_POSIX_C_SOURCE=199506L - + -D_XOPEN_SOURCE=600 -D_POSIX_C_SOURCE=199506L \ + -DGETTEXT_PACKAGE=\"$(PACKAGE)\" LDADDS = \ @STATIC_BINARIES@ \ @LIBXML_LIBS@ \ Index: tests/virshdata/dominfo-fc4.txt =================================================================== RCS file: /data/cvs/libvirt/tests/virshdata/dominfo-fc4.txt,v retrieving revision 1.1 diff -u -r1.1 dominfo-fc4.txt --- tests/virshdata/dominfo-fc4.txt 24 Aug 2006 21:46:28 -0000 1.1 +++ tests/virshdata/dominfo-fc4.txt 20 Sep 2006 19:55:59 -0000 @@ -2,7 +2,7 @@ Name: fc4 UUID: ef861801-45b9-11cb-88e3-afbfe5370493 OS Type: linux -State: running +State: running CPU(s): 1 Max memory: 131072 kB Used memory: 131072 kB Index: tests/virshdata/domstate-fc4.txt =================================================================== RCS file: /data/cvs/libvirt/tests/virshdata/domstate-fc4.txt,v retrieving revision 1.1 diff -u -r1.1 domstate-fc4.txt --- tests/virshdata/domstate-fc4.txt 24 Aug 2006 21:46:28 -0000 1.1 +++ tests/virshdata/domstate-fc4.txt 20 Sep 2006 19:55:59 -0000 @@ -1,2 +1,2 @@ -running +running Index: tests/virshdata/list-custom.txt =================================================================== RCS file: /data/cvs/libvirt/tests/virshdata/list-custom.txt,v retrieving revision 1.1 diff -u -r1.1 list-custom.txt --- tests/virshdata/list-custom.txt 24 Aug 2006 21:46:28 -0000 1.1 +++ tests/virshdata/list-custom.txt 20 Sep 2006 19:55:59 -0000 @@ -1,5 +1,5 @@ Id Name State ---------------------------------- - 0 fv0 running - 1 fc4 running + 0 fv0 running + 1 fc4 running Index: tests/virshdata/list-default.txt =================================================================== RCS file: /data/cvs/libvirt/tests/virshdata/list-default.txt,v retrieving revision 1.1 diff -u -r1.1 list-default.txt --- tests/virshdata/list-default.txt 24 Aug 2006 21:46:28 -0000 1.1 +++ tests/virshdata/list-default.txt 20 Sep 2006 19:55:59 -0000 @@ -1,4 +1,4 @@ Id Name State ---------------------------------- - 0 Domain-0 running + 0 Domain-0 running