]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
Added support for i18n translation with gettext
authorDaniel P. Berrange <berrange@redhat.com>
Thu, 21 Sep 2006 15:24:37 +0000 (15:24 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Thu, 21 Sep 2006 15:24:37 +0000 (15:24 +0000)
32 files changed:
ChangeLog
Makefile.am
autogen.sh
config.h.in
configure.in
libvirt.spec.in
po/Makevars [new file with mode: 0644]
po/POTFILES.in [new file with mode: 0644]
po/en_GB.po [new file with mode: 0644]
po/libvirt.pot [new file with mode: 0644]
proxy/Makefile.am
proxy/libvirt_proxy.c
src/Makefile.am
src/conf.c
src/hash.c
src/internal.h
src/libvirt.c
src/proxy_internal.c
src/sexpr.c
src/test.c
src/virsh.c
src/virterror.c
src/xen_internal.c
src/xend_internal.c
src/xml.c
src/xmlrpc.c
src/xs_internal.c
tests/Makefile.am
tests/virshdata/dominfo-fc4.txt
tests/virshdata/domstate-fc4.txt
tests/virshdata/list-custom.txt
tests/virshdata/list-default.txt

index 3d86d3283a65519949228277ae7cd4c768d3725a..f97e8b28ff3d6f32a364230a2dd477af1ce3a167 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+Thu Sep 21 10:19:02 EDT 2006 Daniel Berrange <berrange@redhat.com>
+
+       * Makefile.am: Added po directory
+       * autogen.sh: Call autopoint to install the gettext infrastructure
+       * src/*.c, proxy/*.c: Pass all strings through gettext for translation.
+       Set up the text domains in libvirt, proxy & virsh at startup.
+       * libvirt.spec.in: Include compiled .po files in distro
+       * tests/virshdata/*.txt: Tweak expected data to take account of
+       some text changes.
+
 Thu Sep 21 10:19:02 EDT 2006 Daniel Berrange <berrange@redhat.com>
 
        * docs/*.html: re-generated documentation to pull in latest
index c1e1265008ca0d1f79870555b1f2cf682879033f..d25d514b3052d8dd6b3c5868f1759492f15c5328 100644 (file)
@@ -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 c467bc7c9ff88d5b36533cf6e65889f6af0bf776..d677a1a2a7b19af0968b7662deeec8650e46bc6b 100755 (executable)
@@ -8,6 +8,14 @@ THEDIR=`pwd`
 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 @@ if test -z "$*"; then
         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 e60df8a8820306e0f893f0472c9a0845e3119a4e..fac409742680aeb5bd3bd2759380155a5a246468 100644 (file)
@@ -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 217cd88c4d93009a09ef7782ee77720d1ebb8771..1c9932bc286ba5c7fdcbfee7dadb0389c1fb3354 100644 (file)
@@ -246,6 +246,10 @@ AC_SUBST(PYTHON_VERSION)
 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 @@ AC_OUTPUT(Makefile src/Makefile include/Makefile docs/Makefile \
           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 93a7ac455c67609ddbda9dad6dd023212da76817..08112434e200ab4d24ac51a4cc4dd8237c7e06e7 100644 (file)
@@ -1,3 +1,5 @@
+# -*- rpm-spec -*-
+
 Summary: Library providing an API to use the Xen virtualization
 Name: libvirt
 Version: @VERSION@
@@ -6,7 +8,7 @@ License: LGPL
 Group: Development/Libraries
 Source: libvirt-%{version}.tar.gz
 BuildRoot: %{_tmppath}/%{name}-%{version}-root
-URL: http://libvir.org/
+URL: http://libvirt.org/
 BuildRequires: python python-devel
 Requires: xen
 Requires: libxml2
@@ -16,6 +18,7 @@ BuildRequires: xen-devel
 BuildRequires: libxml2-devel
 BuildRequires: readline-devel
 BuildRequires: ncurses-devel
+BuildRequires: gettext
 Obsoletes: libvir
 ExclusiveArch: i386 x86_64 ia64
 
@@ -61,6 +64,7 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
 rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
 rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.la
 rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.a
+%find_lang %{name}
 
 %clean
 rm -fr %{buildroot}
@@ -71,7 +75,7 @@ rm -fr %{buildroot}
 %postun
 /sbin/ldconfig
 
-%files
+%files -f %{name}.lang
 %defattr(-, root, root)
 
 %doc AUTHORS ChangeLog NEWS README COPYING.LIB TODO
diff --git a/po/Makevars b/po/Makevars
new file mode 100644 (file)
index 0000000..32692ab
--- /dev/null
@@ -0,0 +1,41 @@
+# Makefile variables for PO directory in any package using GNU gettext.
+
+# Usually the message domain is the same as the package name.
+DOMAIN = $(PACKAGE)
+
+# These two variables depend on the location of this directory.
+subdir = po
+top_builddir = ..
+
+# These options get passed to xgettext.
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+
+# This is the copyright holder that gets inserted into the header of the
+# $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
+# package.  (Note that the msgstr strings, extracted from the package's
+# sources, belong to the copyright holder of the package.)  Translators are
+# expected to transfer the copyright for their translations to this person
+# or entity, or to disclaim their copyright.  The empty string stands for
+# the public domain; in this case the translators are expected to disclaim
+# their copyright.
+COPYRIGHT_HOLDER = Free Software Foundation, Inc.
+
+# This is the email address or URL to which the translators shall report
+# bugs in the untranslated strings:
+# - Strings which are not entire sentences, see the maintainer guidelines
+#   in the GNU gettext documentation, section 'Preparing Strings'.
+# - Strings which use unclear terms or require additional context to be
+#   understood.
+# - Strings which make invalid assumptions about notation of date, time or
+#   money.
+# - Pluralisation problems.
+# - Incorrect English spelling.
+# - Incorrect formatting.
+# It can be your email address, or a mailing list address where translators
+# can write to without being subscribed, or the URL of a web page through
+# which the translators can contact you.
+MSGID_BUGS_ADDRESS =
+
+# This is the list of locale categories, beyond LC_MESSAGES, for which the
+# message catalogs shall be used.  It is usually empty.
+EXTRA_LOCALE_CATEGORIES =
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644 (file)
index 0000000..50422fb
--- /dev/null
@@ -0,0 +1,13 @@
+src/libvirt.c
+src/virterror.c
+src/xmlrpc.c
+src/hash.c
+src/test.c
+src/xml.c
+src/sexpr.c
+src/xend_internal.c
+src/virsh.c
+src/conf.c
+src/xs_internal.c
+src/proxy_internal.c
+src/xen_internal.c
diff --git a/po/en_GB.po b/po/en_GB.po
new file mode 100644 (file)
index 0000000..10bd3f5
--- /dev/null
@@ -0,0 +1,1413 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the libvirt package.
+# Daniel Berrange <berrange@redhat.com>, 2006.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: libvirt\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-20 10:20-0400\n"
+"PO-Revision-Date: 2006-09-20 10:20-0400\n"
+"Last-Translator: Daniel Berrange <berrange@redhat.com>\n"
+"Language-Team: English <en@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/libvirt.c:243 src/libvirt.c:307 src/hash.c:531
+msgid "allocating connection"
+msgstr ""
+
+#: src/libvirt.c:323
+msgid "Xen Daemon or Xen Store"
+msgstr ""
+
+#: src/virterror.c:243
+msgid "warning"
+msgstr ""
+
+#: src/virterror.c:246
+msgid "error"
+msgstr ""
+
+#: src/virterror.c:328
+msgid "No error message provided"
+msgstr ""
+
+#: src/virterror.c:382
+#, c-format
+msgid "internal error %s"
+msgstr ""
+
+#: src/virterror.c:384
+msgid "internal error"
+msgstr ""
+
+#: src/virterror.c:387
+msgid "out of memory"
+msgstr ""
+
+#: src/virterror.c:391
+msgid "no support for hypervisor"
+msgstr ""
+
+#: src/virterror.c:393
+#, c-format
+msgid "no support for hypervisor %s"
+msgstr ""
+
+#: src/virterror.c:397
+msgid "could not connect to hypervisor"
+msgstr ""
+
+#: src/virterror.c:399
+#, c-format
+msgid "could not connect to %s"
+msgstr ""
+
+#: src/virterror.c:403
+msgid "invalid connection pointer in"
+msgstr ""
+
+#: src/virterror.c:405
+#, c-format
+msgid "invalid connection pointer in %s"
+msgstr ""
+
+#: src/virterror.c:409
+msgid "invalid domain pointer in"
+msgstr ""
+
+#: src/virterror.c:411
+#, c-format
+msgid "invalid domain pointer in %s"
+msgstr ""
+
+#: src/virterror.c:415
+msgid "invalid argument in"
+msgstr ""
+
+#: src/virterror.c:417
+#, c-format
+msgid "invalid argument in %s"
+msgstr ""
+
+#: src/virterror.c:421
+#, c-format
+msgid "operation failed: %s"
+msgstr ""
+
+#: src/virterror.c:423
+msgid "operation failed"
+msgstr ""
+
+#: src/virterror.c:427
+#, c-format
+msgid "GET operation failed: %s"
+msgstr ""
+
+#: src/virterror.c:429
+msgid "GET operation failed"
+msgstr ""
+
+#: src/virterror.c:433
+#, c-format
+msgid "POST operation failed: %s"
+msgstr ""
+
+#: src/virterror.c:435
+msgid "POST operation failed"
+msgstr ""
+
+#: src/virterror.c:438
+#, c-format
+msgid "got unknown HTTP error code %d"
+msgstr ""
+
+#: src/virterror.c:442
+#, c-format
+msgid "unknown host %s"
+msgstr ""
+
+#: src/virterror.c:444
+msgid "unknown host"
+msgstr ""
+
+#: src/virterror.c:448
+#, c-format
+msgid "failed to serialize S-Expr: %s"
+msgstr ""
+
+#: src/virterror.c:450
+msgid "failed to serialize S-Expr"
+msgstr ""
+
+#: src/virterror.c:454
+msgid "could not use Xen hypervisor entry"
+msgstr ""
+
+#: src/virterror.c:456
+#, c-format
+msgid "could not use Xen hypervisor entry %s"
+msgstr ""
+
+#: src/virterror.c:460
+msgid "could not connect to Xen Store"
+msgstr ""
+
+#: src/virterror.c:462
+#, c-format
+msgid "could not connect to Xen Store %s"
+msgstr ""
+
+#: src/virterror.c:465
+#, c-format
+msgid "failed Xen syscall %s %d"
+msgstr ""
+
+#: src/virterror.c:469
+msgid "unknown OS type"
+msgstr ""
+
+#: src/virterror.c:471
+#, c-format
+msgid "unknown OS type %s"
+msgstr ""
+
+#: src/virterror.c:474
+msgid "missing kernel information"
+msgstr ""
+
+#: src/virterror.c:478
+msgid "missing root device information"
+msgstr ""
+
+#: src/virterror.c:480
+#, c-format
+msgid "missing root device information in %s"
+msgstr ""
+
+#: src/virterror.c:484
+msgid "missing source information for device"
+msgstr ""
+
+#: src/virterror.c:486
+#, c-format
+msgid "missing source information for device %s"
+msgstr ""
+
+#: src/virterror.c:490
+msgid "missing target information for device"
+msgstr ""
+
+#: src/virterror.c:492
+#, c-format
+msgid "missing target information for device %s"
+msgstr ""
+
+#: src/virterror.c:496
+msgid "missing domain name information"
+msgstr ""
+
+#: src/virterror.c:498
+#, c-format
+msgid "missing domain name information in %s"
+msgstr ""
+
+#: src/virterror.c:502
+msgid "missing operating system information"
+msgstr ""
+
+#: src/virterror.c:504
+#, c-format
+msgid "missing operating system information for %s"
+msgstr ""
+
+#: src/virterror.c:508
+msgid "missing devices information"
+msgstr ""
+
+#: src/virterror.c:510
+#, c-format
+msgid "missing devices information for %s"
+msgstr ""
+
+#: src/virterror.c:514
+msgid "too many drivers registered"
+msgstr ""
+
+#: src/virterror.c:516
+#, c-format
+msgid "too many drivers registered in %s"
+msgstr ""
+
+#: src/virterror.c:520
+msgid "library call failed, possibly not supported"
+msgstr ""
+
+#: src/virterror.c:522
+#, c-format
+msgid "library call %s failed, possibly not supported"
+msgstr ""
+
+#: src/virterror.c:526
+msgid "XML description not well formed or invalid"
+msgstr ""
+
+#: src/virterror.c:528
+#, c-format
+msgid "XML description for %s is not well formed or invalid"
+msgstr ""
+
+#: src/virterror.c:532
+msgid "this domain exists already"
+msgstr ""
+
+#: src/virterror.c:534
+#, c-format
+msgid "domain %s exists already"
+msgstr ""
+
+#: src/virterror.c:538
+msgid "operation forbidden for read only access"
+msgstr ""
+
+#: src/virterror.c:540
+#, c-format
+msgid "operation %s forbidden for read only access"
+msgstr ""
+
+#: src/virterror.c:544
+msgid "failed to open configuration file for reading"
+msgstr ""
+
+#: src/virterror.c:546
+#, c-format
+msgid "failed to open %s for reading"
+msgstr ""
+
+#: src/virterror.c:550
+msgid "failed to read configuration file"
+msgstr ""
+
+#: src/virterror.c:552
+#, c-format
+msgid "failed to read configuration file %s"
+msgstr ""
+
+#: src/virterror.c:556
+msgid "failed to parse configuration file"
+msgstr ""
+
+#: src/virterror.c:558
+#, c-format
+msgid "failed to parse configuration file %s"
+msgstr ""
+
+#: src/virterror.c:562
+msgid "configuration file syntax error"
+msgstr ""
+
+#: src/virterror.c:564
+#, c-format
+msgid "configuration file syntax error: %s"
+msgstr ""
+
+#: src/virterror.c:568
+msgid "failed to write configuration file"
+msgstr ""
+
+#: src/virterror.c:570
+#, c-format
+msgid "failed to write configuration file: %s"
+msgstr ""
+
+#: src/xmlrpc.c:63
+msgid "copying node content"
+msgstr ""
+
+#: src/xmlrpc.c:163
+msgid "allocate value array"
+msgstr ""
+
+#: src/xmlrpc.c:196
+msgid "unexpected dict node"
+msgstr ""
+
+#: src/xmlrpc.c:268
+msgid "unexpected value node"
+msgstr ""
+
+#: src/xmlrpc.c:431
+msgid "send request"
+msgstr ""
+
+#: src/xmlrpc.c:437
+msgid "unexpected mime type"
+msgstr ""
+
+#: src/xmlrpc.c:444
+msgid "allocate response"
+msgstr ""
+
+#: src/xmlrpc.c:452 src/xmlrpc.c:514
+msgid "read response"
+msgstr ""
+
+#: src/xmlrpc.c:484
+msgid "allocate string array"
+msgstr ""
+
+#: src/xmlrpc.c:606
+msgid "parse server response failed"
+msgstr ""
+
+#: src/xmlrpc.c:670
+msgid "allocate new context"
+msgstr ""
+
+#: src/hash.c:628 src/hash.c:634 src/test.c:725 src/test.c:750 src/test.c:773
+#: src/test.c:797 src/xend_internal.c:1864 src/xend_internal.c:2563
+#: src/xend_internal.c:2771 src/xs_internal.c:592 src/proxy_internal.c:790
+#: src/proxy_internal.c:837 src/proxy_internal.c:888
+msgid "allocating domain"
+msgstr ""
+
+#: src/hash.c:645
+msgid "failed to add domain to connection hash table"
+msgstr ""
+
+#: src/hash.c:697
+msgid "domain missing from connection hash table"
+msgstr ""
+
+#: src/test.c:200 src/test.c:379 src/test.c:895 src/test.c:923 src/test.c:950
+msgid "getting time of day"
+msgstr ""
+
+#: src/test.c:206 src/test.c:334 src/test.c:359
+msgid "domain"
+msgstr ""
+
+#: src/test.c:212 src/test.c:455
+msgid "creating xpath context"
+msgstr ""
+
+#: src/test.c:219
+msgid "domain name"
+msgstr ""
+
+#: src/test.c:228 src/test.c:233
+msgid "domain uuid"
+msgstr ""
+
+#: src/test.c:241 src/test.c:246
+msgid "domain memory"
+msgstr ""
+
+#: src/test.c:258
+msgid "domain vcpus"
+msgstr ""
+
+#: src/test.c:269
+msgid "domain reboot behaviour"
+msgstr ""
+
+#: src/test.c:280
+msgid "domain poweroff behaviour"
+msgstr ""
+
+#: src/test.c:291
+msgid "domain crash behaviour"
+msgstr ""
+
+#: src/test.c:352
+msgid "load domain definition file"
+msgstr ""
+
+#: src/test.c:434
+msgid "loading host definition file"
+msgstr ""
+
+#: src/test.c:441
+msgid "host"
+msgstr ""
+
+#: src/test.c:449
+msgid "node"
+msgstr ""
+
+#: src/test.c:471
+msgid "node cpu numa nodes"
+msgstr ""
+
+#: src/test.c:483
+msgid "node cpu sockets"
+msgstr ""
+
+#: src/test.c:495
+msgid "node cpu cores"
+msgstr ""
+
+#: src/test.c:507
+msgid "node cpu threads"
+msgstr ""
+
+#: src/test.c:519
+msgid "node active cpu"
+msgstr ""
+
+#: src/test.c:533
+msgid "node cpu mhz"
+msgstr ""
+
+#: src/test.c:552
+msgid "node memory"
+msgstr ""
+
+#: src/test.c:561
+msgid "node domain list"
+msgstr ""
+
+#: src/test.c:570
+msgid "resolving domain filename"
+msgstr ""
+
+#: src/test.c:608
+msgid "allocating node"
+msgstr ""
+
+#: src/test.c:648
+msgid "too many connections"
+msgstr ""
+
+#: src/test.c:733
+msgid "too many domains"
+msgstr ""
+
+#: src/xml.c:64
+msgid "growing buffer"
+msgstr ""
+
+#: src/xml.c:116
+msgid "allocate new buffer"
+msgstr ""
+
+#: src/xml.c:120
+msgid "allocate buffer content"
+msgstr ""
+
+#: src/sexpr.c:59
+msgid "failed to allocate a node"
+msgstr ""
+
+#: src/sexpr.c:352 src/sexpr.c:367
+msgid "failed to copy a string"
+msgstr ""
+
+#: src/xend_internal.c:264 src/xend_internal.c:267
+msgid "failed to read from Xen Daemon"
+msgstr ""
+
+#: src/xend_internal.c:1056
+msgid "failed to urlencode the create S-Expr"
+msgstr ""
+
+#: src/xend_internal.c:1097
+msgid "domain information incomplete, missing domid"
+msgstr ""
+
+#: src/xend_internal.c:1103
+msgid "domain information incorrect domid not numeric"
+msgstr ""
+
+#: src/xend_internal.c:1110 src/xend_internal.c:1159
+msgid "domain information incomplete, missing uuid"
+msgstr ""
+
+#: src/xend_internal.c:1150 src/xend_internal.c:1491
+msgid "domain information incomplete, missing name"
+msgstr ""
+
+#: src/xend_internal.c:1408 src/xend_internal.c:1433
+msgid "domain information incomplete, missing kernel"
+msgstr ""
+
+#: src/xend_internal.c:1564 src/xend_internal.c:1601
+msgid "domain information incomplete, vbd has no dev"
+msgstr ""
+
+#: src/xend_internal.c:1875
+msgid "failed to parse Xend domain information"
+msgstr ""
+
+#: src/xend_internal.c:2834
+#, c-format
+msgid "Failed to create domain %s\n"
+msgstr ""
+
+#: src/xend_internal.c:2840
+#, c-format
+msgid "Failed to get devices for domain %s\n"
+msgstr ""
+
+#: src/xend_internal.c:2851
+#, c-format
+msgid "Failed to resume new domain %s\n"
+msgstr ""
+
+#: src/virsh.c:233
+msgid "print help"
+msgstr ""
+
+#: src/virsh.c:234
+msgid "Prints global help or command specific help."
+msgstr ""
+
+#: src/virsh.c:252
+msgid ""
+"Commands:\n"
+"\n"
+msgstr ""
+
+#: src/virsh.c:266
+msgid "(re)connect to hypervisor"
+msgstr ""
+
+#: src/virsh.c:268
+msgid ""
+"Connect to local hypervisor. This is built-in command after shell start up."
+msgstr ""
+
+#: src/virsh.c:273
+msgid "hypervisor connection URI"
+msgstr ""
+
+#: src/virsh.c:274
+msgid "read-only connection"
+msgstr ""
+
+#: src/virsh.c:286
+msgid "Failed to disconnect from the hypervisor"
+msgstr ""
+
+#: src/virsh.c:302
+msgid "Failed to connect to the hypervisor"
+msgstr ""
+
+#: src/virsh.c:312
+msgid "list domains"
+msgstr ""
+
+#: src/virsh.c:313
+msgid "Returns list of domains."
+msgstr ""
+
+#: src/virsh.c:318
+msgid "list inactive domains"
+msgstr ""
+
+#: src/virsh.c:319
+msgid "list inactive & active domains"
+msgstr ""
+
+#: src/virsh.c:357 src/virsh.c:364
+msgid "Failed to list active domains"
+msgstr ""
+
+#: src/virsh.c:375 src/virsh.c:384
+msgid "Failed to list inactive domains"
+msgstr ""
+
+#: src/virsh.c:394
+msgid "Id"
+msgstr ""
+
+#: src/virsh.c:394
+msgid "Name"
+msgstr ""
+
+#: src/virsh.c:394
+msgid "State"
+msgstr ""
+
+#: src/virsh.c:411 src/virsh.c:2190 src/virsh.c:2206
+msgid "no state"
+msgstr ""
+
+#: src/virsh.c:454
+msgid "domain state"
+msgstr ""
+
+#: src/virsh.c:455
+msgid "Returns state about a running domain."
+msgstr ""
+
+#: src/virsh.c:460 src/virsh.c:498 src/virsh.c:735 src/virsh.c:817
+#: src/virsh.c:856 src/virsh.c:895 src/virsh.c:934 src/virsh.c:973
+#: src/virsh.c:1045 src/virsh.c:1128 src/virsh.c:1214 src/virsh.c:1257
+#: src/virsh.c:1300 src/virsh.c:1377
+msgid "domain name, id or uuid"
+msgstr ""
+
+#: src/virsh.c:492
+msgid "suspend a domain"
+msgstr ""
+
+#: src/virsh.c:493
+msgid "Suspend a running domain."
+msgstr ""
+
+#: src/virsh.c:516
+#, c-format
+msgid "Domain %s suspended\n"
+msgstr ""
+
+#: src/virsh.c:518
+#, c-format
+msgid "Failed to suspend domain %s"
+msgstr ""
+
+#: src/virsh.c:531
+msgid "create a domain from an XML file"
+msgstr ""
+
+#: src/virsh.c:532
+msgid "Create a domain."
+msgstr ""
+
+#: src/virsh.c:537 src/virsh.c:592
+msgid "file conatining an XML domain description"
+msgstr ""
+
+#: src/virsh.c:560 src/virsh.c:565 src/virsh.c:615 src/virsh.c:620
+#, c-format
+msgid "Failed to read description file %s"
+msgstr ""
+
+#: src/virsh.c:572
+#, c-format
+msgid "Domain %s created from %s\n"
+msgstr ""
+
+#: src/virsh.c:575
+#, c-format
+msgid "Failed to create domain from %s"
+msgstr ""
+
+#: src/virsh.c:586
+msgid "define (but don't start) a domain from an XML file"
+msgstr ""
+
+#: src/virsh.c:587
+msgid "Define a domain."
+msgstr ""
+
+#: src/virsh.c:627
+#, c-format
+msgid "Domain %s defined from %s\n"
+msgstr ""
+
+#: src/virsh.c:630
+#, c-format
+msgid "Failed to define domain from %s"
+msgstr ""
+
+#: src/virsh.c:641
+msgid "undefine an inactive domain"
+msgstr ""
+
+#: src/virsh.c:642
+msgid "Undefine the configuration for an inactive domain."
+msgstr ""
+
+#: src/virsh.c:647 src/virsh.c:1446
+msgid "domain name or uuid"
+msgstr ""
+
+#: src/virsh.c:665
+#, c-format
+msgid "Domain %s has been undefined\n"
+msgstr ""
+
+#: src/virsh.c:667
+#, c-format
+msgid "Failed to undefine domain %s"
+msgstr ""
+
+#: src/virsh.c:680
+msgid "start a (previously defined) inactive domain"
+msgstr ""
+
+#: src/virsh.c:681
+msgid "Start a domain."
+msgstr ""
+
+#: src/virsh.c:686
+msgid "name of the inactive domain"
+msgstr ""
+
+#: src/virsh.c:710
+msgid "Domain is already active"
+msgstr ""
+
+#: src/virsh.c:715
+#, c-format
+msgid "Domain %s started\n"
+msgstr ""
+
+#: src/virsh.c:718
+#, c-format
+msgid "Failed to start domain %s"
+msgstr ""
+
+#: src/virsh.c:729
+msgid "save a domain state to a file"
+msgstr ""
+
+#: src/virsh.c:730
+msgid "Save a running domain."
+msgstr ""
+
+#: src/virsh.c:736
+msgid "where to save the data"
+msgstr ""
+
+#: src/virsh.c:758
+#, c-format
+msgid "Domain %s saved to %s\n"
+msgstr ""
+
+#: src/virsh.c:760
+#, c-format
+msgid "Failed to save domain %s to %s"
+msgstr ""
+
+#: src/virsh.c:773
+msgid "restore a domain from a saved state in a file"
+msgstr ""
+
+#: src/virsh.c:774
+msgid "Restore a domain."
+msgstr ""
+
+#: src/virsh.c:779
+msgid "the state to restore"
+msgstr ""
+
+#: src/virsh.c:798
+#, c-format
+msgid "Domain restored from %s\n"
+msgstr ""
+
+#: src/virsh.c:800
+#, c-format
+msgid "Failed to restore domain from %s"
+msgstr ""
+
+#: src/virsh.c:811
+msgid "resume a domain"
+msgstr ""
+
+#: src/virsh.c:812
+msgid "Resume a previously suspended domain."
+msgstr ""
+
+#: src/virsh.c:835
+#, c-format
+msgid "Domain %s resumed\n"
+msgstr ""
+
+#: src/virsh.c:837
+#, c-format
+msgid "Failed to resume domain %s"
+msgstr ""
+
+#: src/virsh.c:850
+msgid "gracefully shutdown a domain"
+msgstr ""
+
+#: src/virsh.c:851
+msgid "Run shutdown in the target domain."
+msgstr ""
+
+#: src/virsh.c:874
+#, c-format
+msgid "Domain %s is being shutdown\n"
+msgstr ""
+
+#: src/virsh.c:876
+#, c-format
+msgid "Failed to shutdown domain %s"
+msgstr ""
+
+#: src/virsh.c:889
+msgid "reboot a domain"
+msgstr ""
+
+#: src/virsh.c:890
+msgid "Run a reboot command in the target domain."
+msgstr ""
+
+#: src/virsh.c:913
+#, c-format
+msgid "Domain %s is being rebooted\n"
+msgstr ""
+
+#: src/virsh.c:915
+#, c-format
+msgid "Failed to reboot domain %s"
+msgstr ""
+
+#: src/virsh.c:928
+msgid "destroy a domain"
+msgstr ""
+
+#: src/virsh.c:929
+msgid "Destroy a given domain."
+msgstr ""
+
+#: src/virsh.c:952
+#, c-format
+msgid "Domain %s destroyed\n"
+msgstr ""
+
+#: src/virsh.c:954
+#, c-format
+msgid "Failed to destroy domain %s"
+msgstr ""
+
+#: src/virsh.c:967
+msgid "domain information"
+msgstr ""
+
+#: src/virsh.c:968
+msgid "Returns basic information about the domain."
+msgstr ""
+
+#: src/virsh.c:994 src/virsh.c:996
+msgid "Id:"
+msgstr ""
+
+#: src/virsh.c:997
+msgid "Name:"
+msgstr ""
+
+#: src/virsh.c:1000
+msgid "UUID:"
+msgstr ""
+
+#: src/virsh.c:1003
+msgid "OS Type:"
+msgstr ""
+
+#: src/virsh.c:1008 src/virsh.c:1089
+msgid "State:"
+msgstr ""
+
+#: src/virsh.c:1011 src/virsh.c:1355
+msgid "CPU(s):"
+msgstr ""
+
+#: src/virsh.c:1018 src/virsh.c:1096
+msgid "CPU time:"
+msgstr ""
+
+#: src/virsh.c:1021
+msgid "Max memory:"
+msgstr ""
+
+#: src/virsh.c:1023
+msgid "Used memory:"
+msgstr ""
+
+#: src/virsh.c:1039
+msgid "domain vcpu information"
+msgstr ""
+
+#: src/virsh.c:1040
+msgid "Returns basic information about the domain virtual CPUs."
+msgstr ""
+
+#: src/virsh.c:1087
+msgid "VCPU:"
+msgstr ""
+
+#: src/virsh.c:1088
+msgid "CPU:"
+msgstr ""
+
+#: src/virsh.c:1098
+msgid "CPU Affinity:"
+msgstr ""
+
+#: src/virsh.c:1122
+msgid "control domain vcpu affinity"
+msgstr ""
+
+#: src/virsh.c:1123
+msgid "Pin domain VCPUs to host physical CPUs."
+msgstr ""
+
+#: src/virsh.c:1129
+msgid "vcpu number"
+msgstr ""
+
+#: src/virsh.c:1130
+msgid "host cpu number(s) (comma separated)"
+msgstr ""
+
+#: src/virsh.c:1208
+msgid "change number of virtual CPUs"
+msgstr ""
+
+#: src/virsh.c:1209
+msgid "Change the number of virtual CPUs active in the guest domain."
+msgstr ""
+
+#: src/virsh.c:1215
+msgid "number of virtual CPUs"
+msgstr ""
+
+#: src/virsh.c:1251
+msgid "change memory allocation"
+msgstr ""
+
+#: src/virsh.c:1252
+msgid "Change the current memory allocation in the guest domain."
+msgstr ""
+
+#: src/virsh.c:1258
+msgid "number of bytes of memory"
+msgstr ""
+
+#: src/virsh.c:1294
+msgid "change maximum memory limit"
+msgstr ""
+
+#: src/virsh.c:1295
+msgid "Change the maximum memory allocation limit in the guest domain."
+msgstr ""
+
+#: src/virsh.c:1301
+msgid "maxmimum memory limit in bytes"
+msgstr ""
+
+#: src/virsh.c:1337
+msgid "node information"
+msgstr ""
+
+#: src/virsh.c:1338
+msgid "Returns basic information about the node."
+msgstr ""
+
+#: src/virsh.c:1351
+msgid "failed to get node information"
+msgstr ""
+
+#: src/virsh.c:1354
+msgid "CPU model:"
+msgstr ""
+
+#: src/virsh.c:1356
+msgid "CPU frequency:"
+msgstr ""
+
+#: src/virsh.c:1357
+msgid "CPU socket(s):"
+msgstr ""
+
+#: src/virsh.c:1358
+msgid "Core(s) per socket:"
+msgstr ""
+
+#: src/virsh.c:1359
+msgid "Thread(s) per core:"
+msgstr ""
+
+#: src/virsh.c:1360
+msgid "NUMA cell(s):"
+msgstr ""
+
+#: src/virsh.c:1361
+msgid "Memory size:"
+msgstr ""
+
+#: src/virsh.c:1371
+msgid "domain information in XML"
+msgstr ""
+
+#: src/virsh.c:1372
+msgid "Ouput the domain information as an XML dump to stdout."
+msgstr ""
+
+#: src/virsh.c:1411
+msgid "convert a domain id or UUID to domain name"
+msgstr ""
+
+#: src/virsh.c:1416
+msgid "domain id or uuid"
+msgstr ""
+
+#: src/virsh.c:1441
+msgid "convert a domain name or UUID to domain id"
+msgstr ""
+
+#: src/virsh.c:1476
+msgid "convert a domain name or id to domain UUID"
+msgstr ""
+
+#: src/virsh.c:1481
+msgid "domain id or name"
+msgstr ""
+
+#: src/virsh.c:1500
+msgid "failed to get domain UUID"
+msgstr ""
+
+#: src/virsh.c:1511
+msgid "show version"
+msgstr ""
+
+#: src/virsh.c:1512
+msgid "Display the system version information."
+msgstr ""
+
+#: src/virsh.c:1535
+msgid "failed to get hypervisor type"
+msgstr ""
+
+#: src/virsh.c:1544
+#, c-format
+msgid "Compiled against library: libvir %d.%d.%d\n"
+msgstr ""
+
+#: src/virsh.c:1549
+msgid "failed to get the library version"
+msgstr ""
+
+#: src/virsh.c:1556
+#, c-format
+msgid "Using library: libvir %d.%d.%d\n"
+msgstr ""
+
+#: src/virsh.c:1563
+#, c-format
+msgid "Using API: %s %d.%d.%d\n"
+msgstr ""
+
+#: src/virsh.c:1568
+msgid "failed to get the hypervisor version"
+msgstr ""
+
+#: src/virsh.c:1573
+#, c-format
+msgid "Cannot extract running %s hypervisor version\n"
+msgstr ""
+
+#: src/virsh.c:1580
+#, c-format
+msgid "Running hypervisor: %s %d.%d.%d\n"
+msgstr ""
+
+#: src/virsh.c:1591
+msgid "quit this interactive terminal"
+msgstr ""
+
+#: src/virsh.c:1703
+#, c-format
+msgid "command '%s' requires <%s> option"
+msgstr ""
+
+#: src/virsh.c:1704
+#, c-format
+msgid "command '%s' requires --%s option"
+msgstr ""
+
+#: src/virsh.c:1731
+#, c-format
+msgid "command '%s' doesn't exist"
+msgstr ""
+
+#: src/virsh.c:1739
+msgid "  NAME\n"
+msgstr ""
+
+#: src/virsh.c:1750
+msgid ""
+"\n"
+"  DESCRIPTION\n"
+msgstr ""
+
+#: src/virsh.c:1754
+msgid ""
+"\n"
+"  OPTIONS\n"
+msgstr ""
+
+#: src/virsh.c:1761
+#, c-format
+msgid "--%s <number>"
+msgstr ""
+
+#: src/virsh.c:1763
+#, c-format
+msgid "--%s <string>"
+msgstr ""
+
+#: src/virsh.c:1876
+msgid "undefined domain name or id"
+msgstr ""
+
+#: src/virsh.c:1909
+#, c-format
+msgid "failed to get domain '%s'"
+msgstr ""
+
+#: src/virsh.c:1937
+#, c-format
+msgid ""
+"\n"
+"(Time: %.3f ms)\n"
+"\n"
+msgstr ""
+
+#: src/virsh.c:2011
+msgid "missing \""
+msgstr ""
+
+#: src/virsh.c:2072
+#, c-format
+msgid "unexpected token (command name): '%s'"
+msgstr ""
+
+#: src/virsh.c:2077
+#, c-format
+msgid "unknown command: '%s'"
+msgstr ""
+
+#: src/virsh.c:2084
+#, c-format
+msgid "command '%s' doesn't support option --%s"
+msgstr ""
+
+#: src/virsh.c:2099
+#, c-format
+msgid "expected syntax: --%s <%s>"
+msgstr ""
+
+#: src/virsh.c:2102
+msgid "number"
+msgstr ""
+
+#: src/virsh.c:2102
+msgid "string"
+msgstr ""
+
+#: src/virsh.c:2108
+#, c-format
+msgid "unexpected data '%s'"
+msgstr ""
+
+#: src/virsh.c:2130
+msgid "OPTION"
+msgstr ""
+
+#: src/virsh.c:2130
+msgid "DATA"
+msgstr ""
+
+#: src/virsh.c:2178 src/virsh.c:2204
+msgid "running"
+msgstr ""
+
+#: src/virsh.c:2180 src/virsh.c:2202
+msgid "blocked"
+msgstr ""
+
+#: src/virsh.c:2182
+msgid "paused"
+msgstr ""
+
+#: src/virsh.c:2184
+msgid "in shutdown"
+msgstr ""
+
+#: src/virsh.c:2186
+msgid "shut off"
+msgstr ""
+
+#: src/virsh.c:2188
+msgid "crashed"
+msgstr ""
+
+#: src/virsh.c:2200
+msgid "offline"
+msgstr ""
+
+#: src/virsh.c:2219
+msgid "no valid connection"
+msgstr ""
+
+#: src/virsh.c:2258
+#, c-format
+msgid "%s: error: "
+msgstr ""
+
+#: src/virsh.c:2260
+msgid "error: "
+msgstr ""
+
+#: src/virsh.c:2282 src/virsh.c:2294 src/virsh.c:2306
+#, c-format
+msgid "%s: %d: failed to allocate %d bytes"
+msgstr ""
+
+#: src/virsh.c:2334
+msgid "failed to connect to the hypervisor"
+msgstr ""
+
+#: src/virsh.c:2479
+#, c-format
+msgid ""
+"\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"
+msgstr ""
+
+#: src/virsh.c:2495
+#, c-format
+msgid ""
+"\n"
+"  (specify --help <command> for details about the command)\n"
+"\n"
+msgstr ""
+
+#: src/virsh.c:2581
+#, c-format
+msgid "unsupported option '-%c'. See --help."
+msgstr ""
+
+#: src/virsh.c:2662
+#, c-format
+msgid ""
+"Welcome to %s, the virtualization interactive terminal.\n"
+"\n"
+msgstr ""
+
+#: src/virsh.c:2665
+msgid ""
+"Type:  'help' for help with commands\n"
+"       'quit' to quit\n"
+"\n"
+msgstr ""
+
+#: src/conf.c:162 src/conf.c:196 src/conf.c:479 src/conf.c:518 src/conf.c:546
+#: src/conf.c:624
+msgid "allocating configuration"
+msgstr ""
+
+#: src/conf.c:331
+msgid "unterminated number"
+msgstr ""
+
+#: src/conf.c:363 src/conf.c:380 src/conf.c:392
+msgid "unterminated string"
+msgstr ""
+
+#: src/conf.c:420 src/conf.c:473
+msgid "expecting a value"
+msgstr ""
+
+#: src/conf.c:440
+msgid "expecting a separator in list"
+msgstr ""
+
+#: src/conf.c:463
+msgid "list is not closed with ] "
+msgstr ""
+
+#: src/conf.c:511
+msgid "expecting a name"
+msgstr ""
+
+#: src/conf.c:574
+msgid "expecting a separator"
+msgstr ""
+
+#: src/conf.c:606
+msgid "expecting an assignment"
+msgstr ""
+
+#: src/conf.c:819
+msgid "failed to open file"
+msgstr ""
+
+#: src/conf.c:827
+msgid "failed to save content"
+msgstr ""
+
+#: src/xs_internal.c:318
+msgid "failed to connect to Xen Store"
+msgstr ""
+
+#: src/proxy_internal.c:193
+#, c-format
+msgid "failed to exec %s\n"
+msgstr ""
+
+#: src/proxy_internal.c:287
+#, c-format
+msgid "Failed to close socket %d\n"
+msgstr ""
+
+#: src/proxy_internal.c:320
+#, c-format
+msgid "Failed to read socket %d\n"
+msgstr ""
+
+#: src/proxy_internal.c:354
+#, c-format
+msgid "Failed to write to socket %d\n"
+msgstr ""
+
+#: src/proxy_internal.c:416 src/proxy_internal.c:437 src/proxy_internal.c:457
+#, c-format
+msgid "Communication error with proxy: got %d bytes of %d\n"
+msgstr ""
+
+#: src/proxy_internal.c:424
+#, c-format
+msgid "Communication error with proxy: expected %d bytes got %d\n"
+msgstr ""
+
+#: src/proxy_internal.c:446
+#, c-format
+msgid "Communication error with proxy: got %d bytes packet\n"
+msgstr ""
+
+#: src/proxy_internal.c:470
+#, c-format
+msgid "Communication error with proxy: malformed packet\n"
+msgstr ""
+
+#: src/proxy_internal.c:476
+#, c-format
+msgid "got asynchronous packet number %d\n"
+msgstr ""
+
+#: src/xen_internal.c:1241
+#, c-format
+msgid "allocating %d domain info"
+msgstr ""
diff --git a/po/libvirt.pot b/po/libvirt.pot
new file mode 100644 (file)
index 0000000..2e90596
--- /dev/null
@@ -0,0 +1,1413 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-09-20 10:20-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: src/libvirt.c:243 src/libvirt.c:307 src/hash.c:531
+msgid "allocating connection"
+msgstr ""
+
+#: src/libvirt.c:323
+msgid "Xen Daemon or Xen Store"
+msgstr ""
+
+#: src/virterror.c:243
+msgid "warning"
+msgstr ""
+
+#: src/virterror.c:246
+msgid "error"
+msgstr ""
+
+#: src/virterror.c:328
+msgid "No error message provided"
+msgstr ""
+
+#: src/virterror.c:382
+#, c-format
+msgid "internal error %s"
+msgstr ""
+
+#: src/virterror.c:384
+msgid "internal error"
+msgstr ""
+
+#: src/virterror.c:387
+msgid "out of memory"
+msgstr ""
+
+#: src/virterror.c:391
+msgid "no support for hypervisor"
+msgstr ""
+
+#: src/virterror.c:393
+#, c-format
+msgid "no support for hypervisor %s"
+msgstr ""
+
+#: src/virterror.c:397
+msgid "could not connect to hypervisor"
+msgstr ""
+
+#: src/virterror.c:399
+#, c-format
+msgid "could not connect to %s"
+msgstr ""
+
+#: src/virterror.c:403
+msgid "invalid connection pointer in"
+msgstr ""
+
+#: src/virterror.c:405
+#, c-format
+msgid "invalid connection pointer in %s"
+msgstr ""
+
+#: src/virterror.c:409
+msgid "invalid domain pointer in"
+msgstr ""
+
+#: src/virterror.c:411
+#, c-format
+msgid "invalid domain pointer in %s"
+msgstr ""
+
+#: src/virterror.c:415
+msgid "invalid argument in"
+msgstr ""
+
+#: src/virterror.c:417
+#, c-format
+msgid "invalid argument in %s"
+msgstr ""
+
+#: src/virterror.c:421
+#, c-format
+msgid "operation failed: %s"
+msgstr ""
+
+#: src/virterror.c:423
+msgid "operation failed"
+msgstr ""
+
+#: src/virterror.c:427
+#, c-format
+msgid "GET operation failed: %s"
+msgstr ""
+
+#: src/virterror.c:429
+msgid "GET operation failed"
+msgstr ""
+
+#: src/virterror.c:433
+#, c-format
+msgid "POST operation failed: %s"
+msgstr ""
+
+#: src/virterror.c:435
+msgid "POST operation failed"
+msgstr ""
+
+#: src/virterror.c:438
+#, c-format
+msgid "got unknown HTTP error code %d"
+msgstr ""
+
+#: src/virterror.c:442
+#, c-format
+msgid "unknown host %s"
+msgstr ""
+
+#: src/virterror.c:444
+msgid "unknown host"
+msgstr ""
+
+#: src/virterror.c:448
+#, c-format
+msgid "failed to serialize S-Expr: %s"
+msgstr ""
+
+#: src/virterror.c:450
+msgid "failed to serialize S-Expr"
+msgstr ""
+
+#: src/virterror.c:454
+msgid "could not use Xen hypervisor entry"
+msgstr ""
+
+#: src/virterror.c:456
+#, c-format
+msgid "could not use Xen hypervisor entry %s"
+msgstr ""
+
+#: src/virterror.c:460
+msgid "could not connect to Xen Store"
+msgstr ""
+
+#: src/virterror.c:462
+#, c-format
+msgid "could not connect to Xen Store %s"
+msgstr ""
+
+#: src/virterror.c:465
+#, c-format
+msgid "failed Xen syscall %s %d"
+msgstr ""
+
+#: src/virterror.c:469
+msgid "unknown OS type"
+msgstr ""
+
+#: src/virterror.c:471
+#, c-format
+msgid "unknown OS type %s"
+msgstr ""
+
+#: src/virterror.c:474
+msgid "missing kernel information"
+msgstr ""
+
+#: src/virterror.c:478
+msgid "missing root device information"
+msgstr ""
+
+#: src/virterror.c:480
+#, c-format
+msgid "missing root device information in %s"
+msgstr ""
+
+#: src/virterror.c:484
+msgid "missing source information for device"
+msgstr ""
+
+#: src/virterror.c:486
+#, c-format
+msgid "missing source information for device %s"
+msgstr ""
+
+#: src/virterror.c:490
+msgid "missing target information for device"
+msgstr ""
+
+#: src/virterror.c:492
+#, c-format
+msgid "missing target information for device %s"
+msgstr ""
+
+#: src/virterror.c:496
+msgid "missing domain name information"
+msgstr ""
+
+#: src/virterror.c:498
+#, c-format
+msgid "missing domain name information in %s"
+msgstr ""
+
+#: src/virterror.c:502
+msgid "missing operating system information"
+msgstr ""
+
+#: src/virterror.c:504
+#, c-format
+msgid "missing operating system information for %s"
+msgstr ""
+
+#: src/virterror.c:508
+msgid "missing devices information"
+msgstr ""
+
+#: src/virterror.c:510
+#, c-format
+msgid "missing devices information for %s"
+msgstr ""
+
+#: src/virterror.c:514
+msgid "too many drivers registered"
+msgstr ""
+
+#: src/virterror.c:516
+#, c-format
+msgid "too many drivers registered in %s"
+msgstr ""
+
+#: src/virterror.c:520
+msgid "library call failed, possibly not supported"
+msgstr ""
+
+#: src/virterror.c:522
+#, c-format
+msgid "library call %s failed, possibly not supported"
+msgstr ""
+
+#: src/virterror.c:526
+msgid "XML description not well formed or invalid"
+msgstr ""
+
+#: src/virterror.c:528
+#, c-format
+msgid "XML description for %s is not well formed or invalid"
+msgstr ""
+
+#: src/virterror.c:532
+msgid "this domain exists already"
+msgstr ""
+
+#: src/virterror.c:534
+#, c-format
+msgid "domain %s exists already"
+msgstr ""
+
+#: src/virterror.c:538
+msgid "operation forbidden for read only access"
+msgstr ""
+
+#: src/virterror.c:540
+#, c-format
+msgid "operation %s forbidden for read only access"
+msgstr ""
+
+#: src/virterror.c:544
+msgid "failed to open configuration file for reading"
+msgstr ""
+
+#: src/virterror.c:546
+#, c-format
+msgid "failed to open %s for reading"
+msgstr ""
+
+#: src/virterror.c:550
+msgid "failed to read configuration file"
+msgstr ""
+
+#: src/virterror.c:552
+#, c-format
+msgid "failed to read configuration file %s"
+msgstr ""
+
+#: src/virterror.c:556
+msgid "failed to parse configuration file"
+msgstr ""
+
+#: src/virterror.c:558
+#, c-format
+msgid "failed to parse configuration file %s"
+msgstr ""
+
+#: src/virterror.c:562
+msgid "configuration file syntax error"
+msgstr ""
+
+#: src/virterror.c:564
+#, c-format
+msgid "configuration file syntax error: %s"
+msgstr ""
+
+#: src/virterror.c:568
+msgid "failed to write configuration file"
+msgstr ""
+
+#: src/virterror.c:570
+#, c-format
+msgid "failed to write configuration file: %s"
+msgstr ""
+
+#: src/xmlrpc.c:63
+msgid "copying node content"
+msgstr ""
+
+#: src/xmlrpc.c:163
+msgid "allocate value array"
+msgstr ""
+
+#: src/xmlrpc.c:196
+msgid "unexpected dict node"
+msgstr ""
+
+#: src/xmlrpc.c:268
+msgid "unexpected value node"
+msgstr ""
+
+#: src/xmlrpc.c:431
+msgid "send request"
+msgstr ""
+
+#: src/xmlrpc.c:437
+msgid "unexpected mime type"
+msgstr ""
+
+#: src/xmlrpc.c:444
+msgid "allocate response"
+msgstr ""
+
+#: src/xmlrpc.c:452 src/xmlrpc.c:514
+msgid "read response"
+msgstr ""
+
+#: src/xmlrpc.c:484
+msgid "allocate string array"
+msgstr ""
+
+#: src/xmlrpc.c:606
+msgid "parse server response failed"
+msgstr ""
+
+#: src/xmlrpc.c:670
+msgid "allocate new context"
+msgstr ""
+
+#: src/hash.c:628 src/hash.c:634 src/test.c:725 src/test.c:750 src/test.c:773
+#: src/test.c:797 src/xend_internal.c:1864 src/xend_internal.c:2563
+#: src/xend_internal.c:2771 src/xs_internal.c:592 src/proxy_internal.c:790
+#: src/proxy_internal.c:837 src/proxy_internal.c:888
+msgid "allocating domain"
+msgstr ""
+
+#: src/hash.c:645
+msgid "failed to add domain to connection hash table"
+msgstr ""
+
+#: src/hash.c:697
+msgid "domain missing from connection hash table"
+msgstr ""
+
+#: src/test.c:200 src/test.c:379 src/test.c:895 src/test.c:923 src/test.c:950
+msgid "getting time of day"
+msgstr ""
+
+#: src/test.c:206 src/test.c:334 src/test.c:359
+msgid "domain"
+msgstr ""
+
+#: src/test.c:212 src/test.c:455
+msgid "creating xpath context"
+msgstr ""
+
+#: src/test.c:219
+msgid "domain name"
+msgstr ""
+
+#: src/test.c:228 src/test.c:233
+msgid "domain uuid"
+msgstr ""
+
+#: src/test.c:241 src/test.c:246
+msgid "domain memory"
+msgstr ""
+
+#: src/test.c:258
+msgid "domain vcpus"
+msgstr ""
+
+#: src/test.c:269
+msgid "domain reboot behaviour"
+msgstr ""
+
+#: src/test.c:280
+msgid "domain poweroff behaviour"
+msgstr ""
+
+#: src/test.c:291
+msgid "domain crash behaviour"
+msgstr ""
+
+#: src/test.c:352
+msgid "load domain definition file"
+msgstr ""
+
+#: src/test.c:434
+msgid "loading host definition file"
+msgstr ""
+
+#: src/test.c:441
+msgid "host"
+msgstr ""
+
+#: src/test.c:449
+msgid "node"
+msgstr ""
+
+#: src/test.c:471
+msgid "node cpu numa nodes"
+msgstr ""
+
+#: src/test.c:483
+msgid "node cpu sockets"
+msgstr ""
+
+#: src/test.c:495
+msgid "node cpu cores"
+msgstr ""
+
+#: src/test.c:507
+msgid "node cpu threads"
+msgstr ""
+
+#: src/test.c:519
+msgid "node active cpu"
+msgstr ""
+
+#: src/test.c:533
+msgid "node cpu mhz"
+msgstr ""
+
+#: src/test.c:552
+msgid "node memory"
+msgstr ""
+
+#: src/test.c:561
+msgid "node domain list"
+msgstr ""
+
+#: src/test.c:570
+msgid "resolving domain filename"
+msgstr ""
+
+#: src/test.c:608
+msgid "allocating node"
+msgstr ""
+
+#: src/test.c:648
+msgid "too many connections"
+msgstr ""
+
+#: src/test.c:733
+msgid "too many domains"
+msgstr ""
+
+#: src/xml.c:64
+msgid "growing buffer"
+msgstr ""
+
+#: src/xml.c:116
+msgid "allocate new buffer"
+msgstr ""
+
+#: src/xml.c:120
+msgid "allocate buffer content"
+msgstr ""
+
+#: src/sexpr.c:59
+msgid "failed to allocate a node"
+msgstr ""
+
+#: src/sexpr.c:352 src/sexpr.c:367
+msgid "failed to copy a string"
+msgstr ""
+
+#: src/xend_internal.c:264 src/xend_internal.c:267
+msgid "failed to read from Xen Daemon"
+msgstr ""
+
+#: src/xend_internal.c:1056
+msgid "failed to urlencode the create S-Expr"
+msgstr ""
+
+#: src/xend_internal.c:1097
+msgid "domain information incomplete, missing domid"
+msgstr ""
+
+#: src/xend_internal.c:1103
+msgid "domain information incorrect domid not numeric"
+msgstr ""
+
+#: src/xend_internal.c:1110 src/xend_internal.c:1159
+msgid "domain information incomplete, missing uuid"
+msgstr ""
+
+#: src/xend_internal.c:1150 src/xend_internal.c:1491
+msgid "domain information incomplete, missing name"
+msgstr ""
+
+#: src/xend_internal.c:1408 src/xend_internal.c:1433
+msgid "domain information incomplete, missing kernel"
+msgstr ""
+
+#: src/xend_internal.c:1564 src/xend_internal.c:1601
+msgid "domain information incomplete, vbd has no dev"
+msgstr ""
+
+#: src/xend_internal.c:1875
+msgid "failed to parse Xend domain information"
+msgstr ""
+
+#: src/xend_internal.c:2834
+#, c-format
+msgid "Failed to create domain %s\n"
+msgstr ""
+
+#: src/xend_internal.c:2840
+#, c-format
+msgid "Failed to get devices for domain %s\n"
+msgstr ""
+
+#: src/xend_internal.c:2851
+#, c-format
+msgid "Failed to resume new domain %s\n"
+msgstr ""
+
+#: src/virsh.c:233
+msgid "print help"
+msgstr ""
+
+#: src/virsh.c:234
+msgid "Prints global help or command specific help."
+msgstr ""
+
+#: src/virsh.c:252
+msgid ""
+"Commands:\n"
+"\n"
+msgstr ""
+
+#: src/virsh.c:266
+msgid "(re)connect to hypervisor"
+msgstr ""
+
+#: src/virsh.c:268
+msgid ""
+"Connect to local hypervisor. This is built-in command after shell start up."
+msgstr ""
+
+#: src/virsh.c:273
+msgid "hypervisor connection URI"
+msgstr ""
+
+#: src/virsh.c:274
+msgid "read-only connection"
+msgstr ""
+
+#: src/virsh.c:286
+msgid "Failed to disconnect from the hypervisor"
+msgstr ""
+
+#: src/virsh.c:302
+msgid "Failed to connect to the hypervisor"
+msgstr ""
+
+#: src/virsh.c:312
+msgid "list domains"
+msgstr ""
+
+#: src/virsh.c:313
+msgid "Returns list of domains."
+msgstr ""
+
+#: src/virsh.c:318
+msgid "list inactive domains"
+msgstr ""
+
+#: src/virsh.c:319
+msgid "list inactive & active domains"
+msgstr ""
+
+#: src/virsh.c:357 src/virsh.c:364
+msgid "Failed to list active domains"
+msgstr ""
+
+#: src/virsh.c:375 src/virsh.c:384
+msgid "Failed to list inactive domains"
+msgstr ""
+
+#: src/virsh.c:394
+msgid "Id"
+msgstr ""
+
+#: src/virsh.c:394
+msgid "Name"
+msgstr ""
+
+#: src/virsh.c:394
+msgid "State"
+msgstr ""
+
+#: src/virsh.c:411 src/virsh.c:2190 src/virsh.c:2206
+msgid "no state"
+msgstr ""
+
+#: src/virsh.c:454
+msgid "domain state"
+msgstr ""
+
+#: src/virsh.c:455
+msgid "Returns state about a running domain."
+msgstr ""
+
+#: src/virsh.c:460 src/virsh.c:498 src/virsh.c:735 src/virsh.c:817
+#: src/virsh.c:856 src/virsh.c:895 src/virsh.c:934 src/virsh.c:973
+#: src/virsh.c:1045 src/virsh.c:1128 src/virsh.c:1214 src/virsh.c:1257
+#: src/virsh.c:1300 src/virsh.c:1377
+msgid "domain name, id or uuid"
+msgstr ""
+
+#: src/virsh.c:492
+msgid "suspend a domain"
+msgstr ""
+
+#: src/virsh.c:493
+msgid "Suspend a running domain."
+msgstr ""
+
+#: src/virsh.c:516
+#, c-format
+msgid "Domain %s suspended\n"
+msgstr ""
+
+#: src/virsh.c:518
+#, c-format
+msgid "Failed to suspend domain %s"
+msgstr ""
+
+#: src/virsh.c:531
+msgid "create a domain from an XML file"
+msgstr ""
+
+#: src/virsh.c:532
+msgid "Create a domain."
+msgstr ""
+
+#: src/virsh.c:537 src/virsh.c:592
+msgid "file conatining an XML domain description"
+msgstr ""
+
+#: src/virsh.c:560 src/virsh.c:565 src/virsh.c:615 src/virsh.c:620
+#, c-format
+msgid "Failed to read description file %s"
+msgstr ""
+
+#: src/virsh.c:572
+#, c-format
+msgid "Domain %s created from %s\n"
+msgstr ""
+
+#: src/virsh.c:575
+#, c-format
+msgid "Failed to create domain from %s"
+msgstr ""
+
+#: src/virsh.c:586
+msgid "define (but don't start) a domain from an XML file"
+msgstr ""
+
+#: src/virsh.c:587
+msgid "Define a domain."
+msgstr ""
+
+#: src/virsh.c:627
+#, c-format
+msgid "Domain %s defined from %s\n"
+msgstr ""
+
+#: src/virsh.c:630
+#, c-format
+msgid "Failed to define domain from %s"
+msgstr ""
+
+#: src/virsh.c:641
+msgid "undefine an inactive domain"
+msgstr ""
+
+#: src/virsh.c:642
+msgid "Undefine the configuration for an inactive domain."
+msgstr ""
+
+#: src/virsh.c:647 src/virsh.c:1446
+msgid "domain name or uuid"
+msgstr ""
+
+#: src/virsh.c:665
+#, c-format
+msgid "Domain %s has been undefined\n"
+msgstr ""
+
+#: src/virsh.c:667
+#, c-format
+msgid "Failed to undefine domain %s"
+msgstr ""
+
+#: src/virsh.c:680
+msgid "start a (previously defined) inactive domain"
+msgstr ""
+
+#: src/virsh.c:681
+msgid "Start a domain."
+msgstr ""
+
+#: src/virsh.c:686
+msgid "name of the inactive domain"
+msgstr ""
+
+#: src/virsh.c:710
+msgid "Domain is already active"
+msgstr ""
+
+#: src/virsh.c:715
+#, c-format
+msgid "Domain %s started\n"
+msgstr ""
+
+#: src/virsh.c:718
+#, c-format
+msgid "Failed to start domain %s"
+msgstr ""
+
+#: src/virsh.c:729
+msgid "save a domain state to a file"
+msgstr ""
+
+#: src/virsh.c:730
+msgid "Save a running domain."
+msgstr ""
+
+#: src/virsh.c:736
+msgid "where to save the data"
+msgstr ""
+
+#: src/virsh.c:758
+#, c-format
+msgid "Domain %s saved to %s\n"
+msgstr ""
+
+#: src/virsh.c:760
+#, c-format
+msgid "Failed to save domain %s to %s"
+msgstr ""
+
+#: src/virsh.c:773
+msgid "restore a domain from a saved state in a file"
+msgstr ""
+
+#: src/virsh.c:774
+msgid "Restore a domain."
+msgstr ""
+
+#: src/virsh.c:779
+msgid "the state to restore"
+msgstr ""
+
+#: src/virsh.c:798
+#, c-format
+msgid "Domain restored from %s\n"
+msgstr ""
+
+#: src/virsh.c:800
+#, c-format
+msgid "Failed to restore domain from %s"
+msgstr ""
+
+#: src/virsh.c:811
+msgid "resume a domain"
+msgstr ""
+
+#: src/virsh.c:812
+msgid "Resume a previously suspended domain."
+msgstr ""
+
+#: src/virsh.c:835
+#, c-format
+msgid "Domain %s resumed\n"
+msgstr ""
+
+#: src/virsh.c:837
+#, c-format
+msgid "Failed to resume domain %s"
+msgstr ""
+
+#: src/virsh.c:850
+msgid "gracefully shutdown a domain"
+msgstr ""
+
+#: src/virsh.c:851
+msgid "Run shutdown in the target domain."
+msgstr ""
+
+#: src/virsh.c:874
+#, c-format
+msgid "Domain %s is being shutdown\n"
+msgstr ""
+
+#: src/virsh.c:876
+#, c-format
+msgid "Failed to shutdown domain %s"
+msgstr ""
+
+#: src/virsh.c:889
+msgid "reboot a domain"
+msgstr ""
+
+#: src/virsh.c:890
+msgid "Run a reboot command in the target domain."
+msgstr ""
+
+#: src/virsh.c:913
+#, c-format
+msgid "Domain %s is being rebooted\n"
+msgstr ""
+
+#: src/virsh.c:915
+#, c-format
+msgid "Failed to reboot domain %s"
+msgstr ""
+
+#: src/virsh.c:928
+msgid "destroy a domain"
+msgstr ""
+
+#: src/virsh.c:929
+msgid "Destroy a given domain."
+msgstr ""
+
+#: src/virsh.c:952
+#, c-format
+msgid "Domain %s destroyed\n"
+msgstr ""
+
+#: src/virsh.c:954
+#, c-format
+msgid "Failed to destroy domain %s"
+msgstr ""
+
+#: src/virsh.c:967
+msgid "domain information"
+msgstr ""
+
+#: src/virsh.c:968
+msgid "Returns basic information about the domain."
+msgstr ""
+
+#: src/virsh.c:994 src/virsh.c:996
+msgid "Id:"
+msgstr ""
+
+#: src/virsh.c:997
+msgid "Name:"
+msgstr ""
+
+#: src/virsh.c:1000
+msgid "UUID:"
+msgstr ""
+
+#: src/virsh.c:1003
+msgid "OS Type:"
+msgstr ""
+
+#: src/virsh.c:1008 src/virsh.c:1089
+msgid "State:"
+msgstr ""
+
+#: src/virsh.c:1011 src/virsh.c:1355
+msgid "CPU(s):"
+msgstr ""
+
+#: src/virsh.c:1018 src/virsh.c:1096
+msgid "CPU time:"
+msgstr ""
+
+#: src/virsh.c:1021
+msgid "Max memory:"
+msgstr ""
+
+#: src/virsh.c:1023
+msgid "Used memory:"
+msgstr ""
+
+#: src/virsh.c:1039
+msgid "domain vcpu information"
+msgstr ""
+
+#: src/virsh.c:1040
+msgid "Returns basic information about the domain virtual CPUs."
+msgstr ""
+
+#: src/virsh.c:1087
+msgid "VCPU:"
+msgstr ""
+
+#: src/virsh.c:1088
+msgid "CPU:"
+msgstr ""
+
+#: src/virsh.c:1098
+msgid "CPU Affinity:"
+msgstr ""
+
+#: src/virsh.c:1122
+msgid "control domain vcpu affinity"
+msgstr ""
+
+#: src/virsh.c:1123
+msgid "Pin domain VCPUs to host physical CPUs."
+msgstr ""
+
+#: src/virsh.c:1129
+msgid "vcpu number"
+msgstr ""
+
+#: src/virsh.c:1130
+msgid "host cpu number(s) (comma separated)"
+msgstr ""
+
+#: src/virsh.c:1208
+msgid "change number of virtual CPUs"
+msgstr ""
+
+#: src/virsh.c:1209
+msgid "Change the number of virtual CPUs active in the guest domain."
+msgstr ""
+
+#: src/virsh.c:1215
+msgid "number of virtual CPUs"
+msgstr ""
+
+#: src/virsh.c:1251
+msgid "change memory allocation"
+msgstr ""
+
+#: src/virsh.c:1252
+msgid "Change the current memory allocation in the guest domain."
+msgstr ""
+
+#: src/virsh.c:1258
+msgid "number of bytes of memory"
+msgstr ""
+
+#: src/virsh.c:1294
+msgid "change maximum memory limit"
+msgstr ""
+
+#: src/virsh.c:1295
+msgid "Change the maximum memory allocation limit in the guest domain."
+msgstr ""
+
+#: src/virsh.c:1301
+msgid "maxmimum memory limit in bytes"
+msgstr ""
+
+#: src/virsh.c:1337
+msgid "node information"
+msgstr ""
+
+#: src/virsh.c:1338
+msgid "Returns basic information about the node."
+msgstr ""
+
+#: src/virsh.c:1351
+msgid "failed to get node information"
+msgstr ""
+
+#: src/virsh.c:1354
+msgid "CPU model:"
+msgstr ""
+
+#: src/virsh.c:1356
+msgid "CPU frequency:"
+msgstr ""
+
+#: src/virsh.c:1357
+msgid "CPU socket(s):"
+msgstr ""
+
+#: src/virsh.c:1358
+msgid "Core(s) per socket:"
+msgstr ""
+
+#: src/virsh.c:1359
+msgid "Thread(s) per core:"
+msgstr ""
+
+#: src/virsh.c:1360
+msgid "NUMA cell(s):"
+msgstr ""
+
+#: src/virsh.c:1361
+msgid "Memory size:"
+msgstr ""
+
+#: src/virsh.c:1371
+msgid "domain information in XML"
+msgstr ""
+
+#: src/virsh.c:1372
+msgid "Ouput the domain information as an XML dump to stdout."
+msgstr ""
+
+#: src/virsh.c:1411
+msgid "convert a domain id or UUID to domain name"
+msgstr ""
+
+#: src/virsh.c:1416
+msgid "domain id or uuid"
+msgstr ""
+
+#: src/virsh.c:1441
+msgid "convert a domain name or UUID to domain id"
+msgstr ""
+
+#: src/virsh.c:1476
+msgid "convert a domain name or id to domain UUID"
+msgstr ""
+
+#: src/virsh.c:1481
+msgid "domain id or name"
+msgstr ""
+
+#: src/virsh.c:1500
+msgid "failed to get domain UUID"
+msgstr ""
+
+#: src/virsh.c:1511
+msgid "show version"
+msgstr ""
+
+#: src/virsh.c:1512
+msgid "Display the system version information."
+msgstr ""
+
+#: src/virsh.c:1535
+msgid "failed to get hypervisor type"
+msgstr ""
+
+#: src/virsh.c:1544
+#, c-format
+msgid "Compiled against library: libvir %d.%d.%d\n"
+msgstr ""
+
+#: src/virsh.c:1549
+msgid "failed to get the library version"
+msgstr ""
+
+#: src/virsh.c:1556
+#, c-format
+msgid "Using library: libvir %d.%d.%d\n"
+msgstr ""
+
+#: src/virsh.c:1563
+#, c-format
+msgid "Using API: %s %d.%d.%d\n"
+msgstr ""
+
+#: src/virsh.c:1568
+msgid "failed to get the hypervisor version"
+msgstr ""
+
+#: src/virsh.c:1573
+#, c-format
+msgid "Cannot extract running %s hypervisor version\n"
+msgstr ""
+
+#: src/virsh.c:1580
+#, c-format
+msgid "Running hypervisor: %s %d.%d.%d\n"
+msgstr ""
+
+#: src/virsh.c:1591
+msgid "quit this interactive terminal"
+msgstr ""
+
+#: src/virsh.c:1703
+#, c-format
+msgid "command '%s' requires <%s> option"
+msgstr ""
+
+#: src/virsh.c:1704
+#, c-format
+msgid "command '%s' requires --%s option"
+msgstr ""
+
+#: src/virsh.c:1731
+#, c-format
+msgid "command '%s' doesn't exist"
+msgstr ""
+
+#: src/virsh.c:1739
+msgid "  NAME\n"
+msgstr ""
+
+#: src/virsh.c:1750
+msgid ""
+"\n"
+"  DESCRIPTION\n"
+msgstr ""
+
+#: src/virsh.c:1754
+msgid ""
+"\n"
+"  OPTIONS\n"
+msgstr ""
+
+#: src/virsh.c:1761
+#, c-format
+msgid "--%s <number>"
+msgstr ""
+
+#: src/virsh.c:1763
+#, c-format
+msgid "--%s <string>"
+msgstr ""
+
+#: src/virsh.c:1876
+msgid "undefined domain name or id"
+msgstr ""
+
+#: src/virsh.c:1909
+#, c-format
+msgid "failed to get domain '%s'"
+msgstr ""
+
+#: src/virsh.c:1937
+#, c-format
+msgid ""
+"\n"
+"(Time: %.3f ms)\n"
+"\n"
+msgstr ""
+
+#: src/virsh.c:2011
+msgid "missing \""
+msgstr ""
+
+#: src/virsh.c:2072
+#, c-format
+msgid "unexpected token (command name): '%s'"
+msgstr ""
+
+#: src/virsh.c:2077
+#, c-format
+msgid "unknown command: '%s'"
+msgstr ""
+
+#: src/virsh.c:2084
+#, c-format
+msgid "command '%s' doesn't support option --%s"
+msgstr ""
+
+#: src/virsh.c:2099
+#, c-format
+msgid "expected syntax: --%s <%s>"
+msgstr ""
+
+#: src/virsh.c:2102
+msgid "number"
+msgstr ""
+
+#: src/virsh.c:2102
+msgid "string"
+msgstr ""
+
+#: src/virsh.c:2108
+#, c-format
+msgid "unexpected data '%s'"
+msgstr ""
+
+#: src/virsh.c:2130
+msgid "OPTION"
+msgstr ""
+
+#: src/virsh.c:2130
+msgid "DATA"
+msgstr ""
+
+#: src/virsh.c:2178 src/virsh.c:2204
+msgid "running"
+msgstr ""
+
+#: src/virsh.c:2180 src/virsh.c:2202
+msgid "blocked"
+msgstr ""
+
+#: src/virsh.c:2182
+msgid "paused"
+msgstr ""
+
+#: src/virsh.c:2184
+msgid "in shutdown"
+msgstr ""
+
+#: src/virsh.c:2186
+msgid "shut off"
+msgstr ""
+
+#: src/virsh.c:2188
+msgid "crashed"
+msgstr ""
+
+#: src/virsh.c:2200
+msgid "offline"
+msgstr ""
+
+#: src/virsh.c:2219
+msgid "no valid connection"
+msgstr ""
+
+#: src/virsh.c:2258
+#, c-format
+msgid "%s: error: "
+msgstr ""
+
+#: src/virsh.c:2260
+msgid "error: "
+msgstr ""
+
+#: src/virsh.c:2282 src/virsh.c:2294 src/virsh.c:2306
+#, c-format
+msgid "%s: %d: failed to allocate %d bytes"
+msgstr ""
+
+#: src/virsh.c:2334
+msgid "failed to connect to the hypervisor"
+msgstr ""
+
+#: src/virsh.c:2479
+#, c-format
+msgid ""
+"\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"
+msgstr ""
+
+#: src/virsh.c:2495
+#, c-format
+msgid ""
+"\n"
+"  (specify --help <command> for details about the command)\n"
+"\n"
+msgstr ""
+
+#: src/virsh.c:2581
+#, c-format
+msgid "unsupported option '-%c'. See --help."
+msgstr ""
+
+#: src/virsh.c:2662
+#, c-format
+msgid ""
+"Welcome to %s, the virtualization interactive terminal.\n"
+"\n"
+msgstr ""
+
+#: src/virsh.c:2665
+msgid ""
+"Type:  'help' for help with commands\n"
+"       'quit' to quit\n"
+"\n"
+msgstr ""
+
+#: src/conf.c:162 src/conf.c:196 src/conf.c:479 src/conf.c:518 src/conf.c:546
+#: src/conf.c:624
+msgid "allocating configuration"
+msgstr ""
+
+#: src/conf.c:331
+msgid "unterminated number"
+msgstr ""
+
+#: src/conf.c:363 src/conf.c:380 src/conf.c:392
+msgid "unterminated string"
+msgstr ""
+
+#: src/conf.c:420 src/conf.c:473
+msgid "expecting a value"
+msgstr ""
+
+#: src/conf.c:440
+msgid "expecting a separator in list"
+msgstr ""
+
+#: src/conf.c:463
+msgid "list is not closed with ] "
+msgstr ""
+
+#: src/conf.c:511
+msgid "expecting a name"
+msgstr ""
+
+#: src/conf.c:574
+msgid "expecting a separator"
+msgstr ""
+
+#: src/conf.c:606
+msgid "expecting an assignment"
+msgstr ""
+
+#: src/conf.c:819
+msgid "failed to open file"
+msgstr ""
+
+#: src/conf.c:827
+msgid "failed to save content"
+msgstr ""
+
+#: src/xs_internal.c:318
+msgid "failed to connect to Xen Store"
+msgstr ""
+
+#: src/proxy_internal.c:193
+#, c-format
+msgid "failed to exec %s\n"
+msgstr ""
+
+#: src/proxy_internal.c:287
+#, c-format
+msgid "Failed to close socket %d\n"
+msgstr ""
+
+#: src/proxy_internal.c:320
+#, c-format
+msgid "Failed to read socket %d\n"
+msgstr ""
+
+#: src/proxy_internal.c:354
+#, c-format
+msgid "Failed to write to socket %d\n"
+msgstr ""
+
+#: src/proxy_internal.c:416 src/proxy_internal.c:437 src/proxy_internal.c:457
+#, c-format
+msgid "Communication error with proxy: got %d bytes of %d\n"
+msgstr ""
+
+#: src/proxy_internal.c:424
+#, c-format
+msgid "Communication error with proxy: expected %d bytes got %d\n"
+msgstr ""
+
+#: src/proxy_internal.c:446
+#, c-format
+msgid "Communication error with proxy: got %d bytes packet\n"
+msgstr ""
+
+#: src/proxy_internal.c:470
+#, c-format
+msgid "Communication error with proxy: malformed packet\n"
+msgstr ""
+
+#: src/proxy_internal.c:476
+#, c-format
+msgid "got asynchronous packet number %d\n"
+msgstr ""
+
+#: src/xen_internal.c:1241
+#, c-format
+msgid "allocating %d domain info"
+msgstr ""
index ec2730e65198b09106a87d969bcb3781a88bfaed..5d2518edade7be7f572c7c758cfe672339f3faa6 100644 (file)
@@ -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 0cf70cc2157e41f4017bd570012da2b4df78876d..37f987b083cd8f8e7af458e745832060512cb57d 100644 (file)
@@ -715,6 +715,19 @@ usage(const char *progname) {
 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 @@ int main(int argc, char **argv) {
             exit(1);
         }
     }
-    
+
+
     if (geteuid() != 0) {
         fprintf(stderr, "%s must be run as root or suid\n", argv[0]);
        /* exit(1); */
index 9544a61f22cf3ecc56caae5686ccdb28c803421f..c4ff604fe0fae1db0e02c1ef62205a85a39f6aa3 100644 (file)
@@ -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 2950c28f58e26892e6a10e29daa6d267dfae2977..7d81f2dcbe11c27fe6a2fea631c7de4e2463bf1e 100644 (file)
@@ -159,7 +159,7 @@ virConfCreate(const char *filename)
 
     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 @@ virConfAddEntry(virConfPtr conf, char *name, virConfValuePtr value, char *comm)
     
     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 @@ virConfParseLong(virConfParserCtxtPtr ctxt, long *val)
         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 @@ virConfParseString(virConfParserCtxtPtr ctxt)
        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 @@ virConfParseString(virConfParserCtxtPtr ctxt)
        }
        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 @@ virConfParseString(virConfParserCtxtPtr ctxt)
        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 @@ virConfParseValue(virConfParserCtxtPtr ctxt)
 
     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 @@ virConfParseValue(virConfParserCtxtPtr ctxt)
        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 @@ virConfParseValue(virConfParserCtxtPtr ctxt)
            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 @@ virConfParseValue(virConfParserCtxtPtr ctxt)
        }
         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 @@ virConfParseName(virConfParserCtxtPtr ctxt)
     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 @@ virConfParseComment(virConfParserCtxtPtr ctxt)
     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 @@ virConfParseSeparator(virConfParserCtxtPtr ctxt)
        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 @@ virConfParseStatement(virConfParserCtxtPtr ctxt)
         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 @@ virConfParseStatement(virConfParserCtxtPtr ctxt)
        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 @@ virConfWriteFile(const char *filename, virConfPtr conf)
     
     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 @@ virConfWriteFile(const char *filename, virConfPtr conf)
     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 4ffb7454db8d7435458a1186a3ba51f787485686..cd3da8a8bfdad2aa1c835380c915e0297ff3b7b1 100644 (file)
@@ -528,7 +528,7 @@ virGetConnect(void) {
 
     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 @@ virGetDomain(virConnectPtr conn, const char *name, const unsigned char *uuid) {
      */
     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 @@ virGetDomain(virConnectPtr conn, const char *name, const unsigned char *uuid) {
 
     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 @@ virFreeDomain(virConnectPtr conn, virDomainPtr domain) {
 
     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 d15e373016d797326c8c1b37150898d48e6d45b0..8d36224a3bcccdd361556e6ddb8587a1a0639dc7 100644 (file)
 #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 93e22bd1bd60698207740ca74142687deed3fe94..bedd4346a5ed97e183f967ee654e1c2c978602e4 100644 (file)
@@ -60,10 +60,13 @@ virInitialize(void)
         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 @@ virRegisterDriver(virDriverPtr driver)
     int i;
 
     if (!initialized)
-        virInitialize();
+        if (virInitialize() < 0)
+           return -1;
 
     if (driver == NULL) {
         virLibConnError(NULL, VIR_ERR_INVALID_ARG, __FUNCTION__);
@@ -182,7 +186,8 @@ virGetVersion(unsigned long *libVer, const char *type,
     int i;
 
     if (!initialized)
-        virInitialize();
+        if (virInitialize() < 0)
+           return -1;
 
     if (libVer == NULL)
         return (-1);
@@ -223,7 +228,8 @@ virConnectOpen(const char *name)
     virConnectPtr ret = NULL;
 
     if (!initialized)
-        virInitialize();
+        if (virInitialize() < 0)
+           return NULL;
 
     if (name == NULL) {
         name = "Xen";
@@ -234,7 +240,7 @@ virConnectOpen(const char *name)
 
     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 @@ virConnectOpenReadOnly(const char *name)
     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 @@ virConnectOpenReadOnly(const char *name)
     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 15f21fcd3eb7491ee10db15c1afb5e77e537cfd2..7d3d8471f9a9a1f815d13c4effaf2d23c2bbbc14 100644 (file)
@@ -190,7 +190,7 @@ virProxyForkServer(void)
         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 @@ virProxyCloseClientSocket(int fd) {
 
     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 @@ retry:
            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 @@ retry:
                        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 @@ retry:
            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 @@ retry:
        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 @@ retry:
            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 @@ retry:
        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 @@ retry:
                                            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 @@ retry:
     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 @@ xenProxyLookupByID(virConnectPtr conn, int id)
     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 @@ xenProxyLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
     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 @@ xenProxyDomainLookupByName(virConnectPtr conn, const char *name)
     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 f3966da57968f8990b8f9434c81bcbed68f16bf0..1eaa02310470b4f0cad9235b1fe4e65edbf43155 100644 (file)
@@ -56,7 +56,7 @@ sexpr_new(void)
 
     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 @@ _string2sexpr(const char *buffer, size_t * end)
             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 @@ _string2sexpr(const char *buffer, size_t * end)
             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 1ab03e4d47bd17d29ba205361c10cbd73c55eae5..31ba0a75b9630db39b3aabd978c04f87df01e594 100644 (file)
@@ -197,26 +197,26 @@ static int testLoadDomain(virConnectPtr conn,
   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 @@ static int testLoadDomain(virConnectPtr conn,
   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 @@ static int testLoadDomain(virConnectPtr conn,
   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 @@ static int testLoadDomain(virConnectPtr conn,
   } 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 @@ static int testLoadDomain(virConnectPtr conn,
   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 @@ static int testLoadDomain(virConnectPtr conn,
   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 @@ static int testLoadDomain(virConnectPtr conn,
   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 @@ static int testLoadDomainFromDoc(virConnectPtr conn,
   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 @@ static int testLoadDomainFromFile(virConnectPtr conn,
   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 @@ static int testOpenDefault(virConnectPtr conn,
   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 @@ static int testOpenFromFile(virConnectPtr conn,
   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 @@ static int testOpenFromFile(virConnectPtr conn,
 
   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 @@ static int testOpenFromFile(virConnectPtr conn,
     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 @@ static int testOpenFromFile(virConnectPtr conn,
     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 @@ static int testOpenFromFile(virConnectPtr conn,
     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 @@ static int testOpenFromFile(virConnectPtr conn,
     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 @@ static int testOpenFromFile(virConnectPtr conn,
     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 @@ static int testOpenFromFile(virConnectPtr conn,
     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 @@ static int testOpenFromFile(virConnectPtr conn,
     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 @@ static int testOpenFromFile(virConnectPtr conn,
   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 @@ static int testOpenFromFile(virConnectPtr conn,
     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 @@ static int getNextConnection(void) {
   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 @@ int testOpen(virConnectPtr conn,
 
 
   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 @@ testDomainCreateLinux(virConnectPtr conn, const char *xmlDesc,
        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 @@ testDomainCreateLinux(virConnectPtr conn, const char *xmlDesc,
     }
   }
   
-  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 @@ virDomainPtr testLookupDomainByID(virConnectPtr conn,
 
   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 @@ virDomainPtr testLookupDomainByUUID(virConnectPtr conn,
   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 @@ virDomainPtr testLookupDomainByName(virConnectPtr conn,
   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 @@ int testShutdownDomain (virDomainPtr domain)
   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 @@ int testRebootDomain (virDomainPtr domain, virDomainRestart action)
   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 @@ int testGetDomainInfo (virDomainPtr domain,
   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 @@ int testSetMemory (virDomainPtr domain,
   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 @@ int testSetVcpus(virDomainPtr domain,
 
   /* 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 eebb91fcc1ba1d94d8c308aa26c6678914e32d9e..0d05ab3fa3d54e886925bd5df6c256d16f7211d6 100644 (file)
@@ -230,9 +230,9 @@ static char *_vshStrdup(vshControl * ctl, const char *s, const char *filename, i
  */
 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 @@ cmdHelp(vshControl * ctl, vshCmd * cmd)
     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 @@ cmdHelp(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdConnect(vshControl * ctl, vshCmd * cmd)
     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 @@ cmdConnect(vshControl * ctl, vshCmd * cmd)
         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 @@ cmdConnect(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdList(vshControl * ctl, vshCmd * cmd ATTRIBUTE_UNUSED)
     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 @@ cmdList(vshControl * ctl, vshCmd * cmd ATTRIBUTE_UNUSED)
     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 @@ cmdList(vshControl * ctl, vshCmd * cmd ATTRIBUTE_UNUSED)
         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 @@ cmdList(vshControl * ctl, vshCmd * cmd ATTRIBUTE_UNUSED)
        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 @@ cmdList(vshControl * ctl, vshCmd * cmd ATTRIBUTE_UNUSED)
                  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 @@ cmdList(vshControl * ctl, vshCmd * cmd ATTRIBUTE_UNUSED)
                   ret <
                   0 ? "no state" : vshDomainStateToString(info.state));
        }
+
         virDomainFree(dom);
     }
     if (ids)
@@ -450,13 +451,13 @@ cmdList(vshControl * ctl, vshCmd * cmd ATTRIBUTE_UNUSED)
  */
 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 @@ cmdDomstate(vshControl * ctl, vshCmd * cmd)
 
     if (virDomainGetInfo(dom, &info) == 0)
         vshPrint(ctl, "%s\n",
-                 vshDomainStateToString(info.state));
+                 _N(vshDomainStateToString(info.state)));
     else
         ret = FALSE;
 
@@ -488,13 +489,13 @@ cmdDomstate(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdSuspend(vshControl * ctl, vshCmd * cmd)
         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 @@ cmdSuspend(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdCreate(vshControl * ctl, vshCmd * cmd)
 
     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 @@ cmdCreate(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdDefine(vshControl * ctl, vshCmd * cmd)
 
     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 @@ cmdDefine(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdUndefine(vshControl * ctl, vshCmd * cmd)
         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 @@ cmdUndefine(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdStart(vshControl * ctl, vshCmd * cmd)
         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 @@ cmdStart(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdSave(vshControl * ctl, vshCmd * cmd)
         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 @@ cmdSave(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdRestore(vshControl * ctl, vshCmd * cmd)
         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 @@ cmdRestore(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdResume(vshControl * ctl, vshCmd * cmd)
         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 @@ cmdResume(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdShutdown(vshControl * ctl, vshCmd * cmd)
         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 @@ cmdShutdown(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdReboot(vshControl * ctl, vshCmd * cmd)
         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 @@ cmdReboot(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdDestroy(vshControl * ctl, vshCmd * cmd)
         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 @@ cmdDestroy(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdDominfo(vshControl * ctl, vshCmd * cmd)
 
     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 @@ cmdDominfo(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdVcpuinfo(vshControl * ctl, vshCmd * cmd)
         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 @@ cmdVcpuinfo(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdVcpupin(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdSetvcpus(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdSetmem(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdSetmaxmem(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ static int
 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");
-        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);
-        
+        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);
+
     return TRUE;
 }
 
@@ -1366,13 +1368,13 @@ cmdNodeinfo(vshControl * ctl, vshCmd * cmd ATTRIBUTE_UNUSED)
  */
 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 @@ cmdDumpXML(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdDomname(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdDomid(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdDomuuid(vshControl * ctl, vshCmd * cmd)
 
     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 @@ cmdDomuuid(vshControl * ctl, vshCmd * cmd)
  */
 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 @@ cmdVersion(vshControl * ctl, vshCmd * cmd ATTRIBUTE_UNUSED)
 
     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 @@ cmdVersion(vshControl * ctl, vshCmd * cmd ATTRIBUTE_UNUSED)
     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 @@ cmdVersion(vshControl * ctl, vshCmd * cmd ATTRIBUTE_UNUSED)
  */
 static vshCmdInfo info_quit[] = {
     {"syntax", "quit"},
-    {"help", "quit this interactive terminal"},
+    {"help", gettext_noop("quit this interactive terminal")},
     {NULL, NULL}
 };
 
@@ -1698,8 +1700,8 @@ vshCommandCheckOpts(vshControl * ctl, vshCmd * cmd)
             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 @@ vshCmddefHelp(vshControl * ctl, const char *cmdname, int withprog)
     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 @@ vshCommandOptDomainBy(vshControl * ctl, vshCmd * cmd, const char *optname,
     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 @@ vshCommandOptDomainBy(vshControl * ctl, vshCmd * cmd, const char *optname,
     }
 
     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 @@ vshCommandRun(vshControl * ctl, vshCmd * cmd)
             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 @@ vshCommandGetToken(vshControl * ctl, char *str, char **end, char **res)
         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 @@ vshCommandParse(vshControl * ctl, char *cmdstr)
                 /* 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 @@ vshCommandParse(vshControl * ctl, char *cmdstr)
                         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 @@ vshCommandParse(vshControl * ctl, char *cmdstr)
                 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 @@ vshDomainStateToString(int state)
 {
     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 @@ vshDomainVcpuStateToString(int state)
 {
     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 @@ vshConnectionUsability(vshControl * ctl, virConnectPtr conn, int showerror)
      */
     if (!conn) {
         if (showerror)
-            vshError(ctl, FALSE, "no valid connection.");
+            vshError(ctl, FALSE, _("no valid connection"));
         return FALSE;
     }
     return TRUE;
@@ -2253,9 +2255,9 @@ vshError(vshControl * ctl, int doexit, const char *format, ...)
     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 @@ _vshMalloc(vshControl * ctl, size_t size, const char *filename, int line)
 
     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 @@ _vshCalloc(vshControl * ctl, size_t nmemb, size_t size, const char *filename, in
 
     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 @@ _vshStrdup(vshControl * ctl, const char *s, const char *filename, int line)
 
     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 @@ vshInit(vshControl * ctl)
         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 @@ vshUsage(vshControl * ctl, const char *cmdname)
 
     /* 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 @@ vshParseArgv(vshControl * ctl, int argc, char **argv)
                 exit(EXIT_SUCCESS);
             default:
                 vshError(ctl, TRUE,
-                  "unsupported option '-%c'. See --help.", arg);
+                        _("unsupported option '-%c'. See --help."), arg);
                 break;
         }
     }
@@ -2620,6 +2622,19 @@ main(int argc, char **argv)
     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 @@ main(int argc, char **argv)
         /* 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 406a0da8de6e2671eddd58b79425bee9b4a07315..f365b3d76152d257acad0ab64786333daac52c25 100644 (file)
@@ -240,10 +240,10 @@ virDefaultErrorFunc(virErrorPtr err)
             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 @@ __virRaiseError(virConnectPtr conn, virDomainPtr dom,
      * 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 @@ __virErrorMsg(virErrorNumber error, const char *info)
             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 7f0898c1ef45d451abc285598f3456a5bce5aa18..83f2c351b406f953572c3e02c50768213cd08e81 100644 (file)
@@ -1238,7 +1238,7 @@ xenHypervisorNumOfDomains(virConnectPtr conn)
 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 @@ xenHypervisorListDomains(virConnectPtr conn, int *ids, int maxids)
 
     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 1c4908b2f4ce939f6b84d21684f226854e4623e2..015900a92759e3c382dfe8a730162589e05746b1 100644 (file)
@@ -261,10 +261,10 @@ wr_sync(int fd, void *buffer, size_t size, int do_read)
         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 @@ xenDaemonDomainCreateLinux(virConnectPtr xend, const char *sexpr)
     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 @@ xenDaemonDomainLookupByName_ids(virConnectPtr xend, const char *domname,
     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 @@ xenDaemonDomainLookupByID(virConnectPtr xend,
     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 @@ xenDaemonDomainLookupByID(virConnectPtr xend,
     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 @@ xend_parse_sexp_desc_os(struct sexpr *node, virBufferPtr buf, int hvm)
         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 @@ xend_parse_sexp_desc_os(struct sexpr *node, virBufferPtr buf, int hvm)
         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 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi
 
     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 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi
             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 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi
 
                 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 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi
 
                 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 @@ sexpr_to_domain(virConnectPtr conn, struct sexpr *root)
 
     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 @@ sexpr_to_domain(virConnectPtr conn, struct sexpr *root)
 
 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 @@ try_http:
            ret = xenDaemonOpen_unix(conn, uri->path);
            if (ret < 0)
                goto failed;
-               
+
            ret = xenDaemonGetVersion(conn, &version);
            if (ret < 0)
                goto failed;
@@ -2555,7 +2557,7 @@ xenDaemonLookupByID(virConnectPtr conn, int id) {
 
     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;
@@ -2763,7 +2765,7 @@ xenDaemonLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
 
     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;
@@ -2826,13 +2828,13 @@ xenDaemonCreateLinux(virConnectPtr conn, const char *xmlDesc,
     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;
     }
 
@@ -2843,7 +2845,7 @@ xenDaemonCreateLinux(virConnectPtr conn, const char *xmlDesc,
 
     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 9d79df6249dca1cc909908dc6c4d656672f7d6fb..e4f7365382cc16761e35c448c627c9ae2f8d8852 100644 (file)
--- a/src/xml.c
+++ b/src/xml.c
@@ -61,7 +61,7 @@ virBufferGrow(virBufferPtr buf, unsigned int len)
 
     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 @@ virBufferNew(unsigned int size)
     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 e98e4e6631d978ac69d51edd6f2695e073741b19..795dc3639491d962a7edd19f450604f303685913 100644 (file)
@@ -60,8 +60,8 @@ static char *xmlGetText(xmlNodePtr node)
        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 @@ static xmlRpcValuePtr xmlRpcValueUnmarshalArray(xmlNodePtr node)
 
     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 @@ static xmlRpcValueDictElementPtr xmlRpcValueUnmarshalDictElement(xmlNodePtr node
        } 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 @@ xmlRpcValuePtr xmlRpcValueUnmarshal(xmlNodePtr node)
     } 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 @@ static char *xmlRpcCallRaw(const char *url, const char *request)
                                &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 @@ static char *xmlRpcCallRaw(const char *url, const char *request)
                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 @@ static char **xmlRpcStringArray(xmlRpcValuePtr value)
            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 @@ xmlRpcArgvNew(const char *fmt, va_list ap, int *argc)
     
     *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 @@ int xmlRpcCall(xmlRpcContextPtr context, const char *method,
 
     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 @@ xmlRpcContextPtr xmlRpcContextNew(const char *uri)
        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 8f04f521bd4e53f7f0ef6bee87be22b62b70a284..3f4f7d89b6e7f85786169bffb8fc802ed544cf09 100644 (file)
@@ -315,7 +315,7 @@ xenStoreOpen(virConnectPtr conn, const char *name, int flags)
     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 @@ xenStoreDomainLookupByName(virConnectPtr conn, const char *name)
 
     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 00d24a82ff3d36afc5df3a9862c3b34588120399..72c68ebee5f47f0c8531ae156759d7e217a9883a 100644 (file)
@@ -10,8 +10,8 @@ INCLUDES = \
        -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 97fbe3f14931996674b72b8ad0b34f2426cc03f6..a5776a9e3aa4e71abc501b6947cb39998dbe50c9 100644 (file)
@@ -2,7 +2,7 @@ Id:             1
 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 511622fad3158ef7ef954ccbc022dd9d89cba3af..9c724a4dec5b5c9d4a866648bb66c770a09b4fc6 100644 (file)
@@ -1,2 +1,2 @@
-running 
+running
 
index eb1adb39d9086ee1720d27feef4e4faa254836d9..5e83b0a5fcda2ae5c535179d55c7ba97d0d8bbd7 100644 (file)
@@ -1,5 +1,5 @@
  Id Name                 State
 ----------------------------------
-  0 fv0                  running 
-  1 fc4                  running 
+  0 fv0                  running
+  1 fc4                  running
 
index df496fe55c165a3cacfe3cae66636b5892ee37a3..4528a01962c7d8cae7ba1693dd01caa8ecde05ac 100644 (file)
@@ -1,4 +1,4 @@
  Id Name                 State
 ----------------------------------
-  0 Domain-0             running 
+  0 Domain-0             running