diff --git a/ChangeLog b/ChangeLog index 3d86d3283a..f97e8b28ff 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Thu Sep 21 10:19:02 EDT 2006 Daniel Berrange + + * 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 * docs/*.html: re-generated documentation to pull in latest diff --git a/Makefile.am b/Makefile.am index c1e1265008..d25d514b30 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 \ diff --git a/autogen.sh b/autogen.sh index c467bc7c9f..d677a1a2a7 100755 --- a/autogen.sh +++ b/autogen.sh @@ -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 diff --git a/config.h.in b/config.h.in index e60df8a882..fac4097426 100644 --- a/config.h.in +++ b/config.h.in @@ -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 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 header file. */ #undef HAVE_INTTYPES_H diff --git a/configure.in b/configure.in index 217cd88c4d..1c9932bc28 100644 --- a/configure.in +++ b/configure.in @@ -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 \ diff --git a/libvirt.spec.in b/libvirt.spec.in index 93a7ac455c..08112434e2 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -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 index 0000000000..32692ab4b9 --- /dev/null +++ b/po/Makevars @@ -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 index 0000000000..50422fb80f --- /dev/null +++ b/po/POTFILES.in @@ -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 index 0000000000..10bd3f5ac1 --- /dev/null +++ b/po/en_GB.po @@ -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 , 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 \n" +"Language-Team: English \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 " +msgstr "" + +#: src/virsh.c:1763 +#, c-format +msgid "--%s " +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 hypervisor connection URI\n" +" -d | --debug 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 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 index 0000000000..2e9059630a --- /dev/null +++ b/po/libvirt.pot @@ -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 , 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 \n" +"Language-Team: LANGUAGE \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 " +msgstr "" + +#: src/virsh.c:1763 +#, c-format +msgid "--%s " +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 hypervisor connection URI\n" +" -d | --debug 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 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/proxy/Makefile.am b/proxy/Makefile.am index ec2730e651..5d2518edad 100644 --- a/proxy/Makefile.am +++ b/proxy/Makefile.am @@ -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 diff --git a/proxy/libvirt_proxy.c b/proxy/libvirt_proxy.c index 0cf70cc215..37f987b083 100644 --- a/proxy/libvirt_proxy.c +++ b/proxy/libvirt_proxy.c @@ -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); */ diff --git a/src/Makefile.am b/src/Makefile.am index 9544a61f22..c4ff604fe0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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@ diff --git a/src/conf.c b/src/conf.c index 2950c28f58..7d81f2dcbe 100644 --- a/src/conf.c +++ b/src/conf.c @@ -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; } diff --git a/src/hash.c b/src/hash.c index 4ffb7454db..cd3da8a8bf 100644 --- a/src/hash.c +++ b/src/hash.c @@ -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; diff --git a/src/internal.h b/src/internal.h index d15e373016..8d36224a3b 100644 --- a/src/internal.h +++ b/src/internal.h @@ -16,11 +16,16 @@ #include "libvirt/libvirt.h" #include "libvirt/virterror.h" #include "driver.h" +#include #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: * diff --git a/src/libvirt.c b/src/libvirt.c index 93e22bd1bd..bedd4346a5 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -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); diff --git a/src/proxy_internal.c b/src/proxy_internal.c index 15f21fcd3e..7d3d8471f9 100644 --- a/src/proxy_internal.c +++ b/src/proxy_internal.c @@ -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; diff --git a/src/sexpr.c b/src/sexpr.c index f3966da579..1eaa023104 100644 --- a/src/sexpr.c +++ b/src/sexpr.c @@ -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")); } } diff --git a/src/test.c b/src/test.c index 1ab03e4d47..31ba0a75b9 100644 --- a/src/test.c +++ b/src/test.c @@ -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); } diff --git a/src/virsh.c b/src/virsh.c index eebb91fcc1..0d05ab3fa3 100644 --- a/src/virsh.c +++ b/src/virsh.c @@ -230,9 +230,9 @@ static char *_vshStrdup(vshControl * ctl, const char *s, const char *filename, i */ static vshCmdInfo info_help[] = { {"syntax", "help []"}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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"); + vshError(ctl, FALSE, _("failed to get node information")); return FALSE; - } - vshPrint(ctl, "%-20s %s\n", "CPU model:", info.model); - vshPrint(ctl, "%-20s %d\n", "CPU(s):", info.cpus); - vshPrint(ctl, "%-20s %d MHz\n", "CPU frequency:", info.mhz); - vshPrint(ctl, "%-20s %d\n", "CPU socket(s):", info.sockets); - vshPrint(ctl, "%-20s %d\n", "Core(s) per socket:", info.cores); - vshPrint(ctl, "%-20s %d\n", "Thread(s) per core:", info.threads); - vshPrint(ctl, "%-20s %d\n", "NUMA cell(s):", info.nodes); - vshPrint(ctl, "%-20s %lu kB\n", "Memory size:", info.memory); - + } + vshPrint(ctl, "%-20s %s\n", _("CPU model:"), info.model); + vshPrint(ctl, "%-20s %d\n", _("CPU(s):"), info.cpus); + vshPrint(ctl, "%-20s %d MHz\n", _("CPU frequency:"), info.mhz); + vshPrint(ctl, "%-20s %d\n", _("CPU socket(s):"), info.sockets); + vshPrint(ctl, "%-20s %d\n", _("Core(s) per socket:"), info.cores); + vshPrint(ctl, "%-20s %d\n", _("Thread(s) per core:"), info.threads); + vshPrint(ctl, "%-20s %d\n", _("NUMA cell(s):"), info.nodes); + vshPrint(ctl, "%-20s %lu kB\n", _("Memory size:"), info.memory); + return TRUE; } @@ -1366,13 +1368,13 @@ cmdNodeinfo(vshControl * ctl, vshCmd * cmd ATTRIBUTE_UNUSED) */ static vshCmdInfo info_dumpxml[] = { {"syntax", "dumpxml "}, - {"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 "}, - {"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 "}, - {"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 "}, - {"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 ", opt->name); + snprintf(buf, sizeof(buf), _("--%s "), opt->name); else if (opt->type == VSH_OT_STRING) - snprintf(buf, sizeof(buf), "--%s ", opt->name); + snprintf(buf, sizeof(buf), _("--%s "), 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 optional argument currently unused (or used for tests only)\n" - " -d | --debug 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 hypervisor connection URI\n" + " -d | --debug 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 for details about the command)\n\n"); + _("\n (specify --help 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 { diff --git a/src/virterror.c b/src/virterror.c index 406a0da8de..f365b3d761 100644 --- a/src/virterror.c +++ b/src/virterror.c @@ -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); diff --git a/src/xen_internal.c b/src/xen_internal.c index 7f0898c1ef..83f2c351b4 100644 --- a/src/xen_internal.c +++ b/src/xen_internal.c @@ -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); } diff --git a/src/xend_internal.c b/src/xend_internal.c index 1c4908b2f4..015900a927 100644 --- a/src/xend_internal.c +++ b/src/xend_internal.c @@ -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, " %s\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, " %s\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, "\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, " %s\n", tmp); @@ -1540,7 +1540,7 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi virBufferAdd(&buf, " \n", 11); virBufferAdd(&buf, " \n", 14); } - + virBufferAdd(&buf, " \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; } diff --git a/src/xml.c b/src/xml.c index 9d79df6249..e4f7365382 100644 --- 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; } diff --git a/src/xmlrpc.c b/src/xmlrpc.c index e98e4e6631..795dc36394 100644 --- a/src/xmlrpc.c +++ b/src/xmlrpc.c @@ -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; } diff --git a/src/xs_internal.c b/src/xs_internal.c index 8f04f521bd..3f4f7d89b6 100644 --- a/src/xs_internal.c +++ b/src/xs_internal.c @@ -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; diff --git a/tests/Makefile.am b/tests/Makefile.am index 00d24a82ff..72c68ebee5 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -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@ \ diff --git a/tests/virshdata/dominfo-fc4.txt b/tests/virshdata/dominfo-fc4.txt index 97fbe3f149..a5776a9e3a 100644 --- a/tests/virshdata/dominfo-fc4.txt +++ b/tests/virshdata/dominfo-fc4.txt @@ -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 diff --git a/tests/virshdata/domstate-fc4.txt b/tests/virshdata/domstate-fc4.txt index 511622fad3..9c724a4dec 100644 --- a/tests/virshdata/domstate-fc4.txt +++ b/tests/virshdata/domstate-fc4.txt @@ -1,2 +1,2 @@ -running +running diff --git a/tests/virshdata/list-custom.txt b/tests/virshdata/list-custom.txt index eb1adb39d9..5e83b0a5fc 100644 --- a/tests/virshdata/list-custom.txt +++ b/tests/virshdata/list-custom.txt @@ -1,5 +1,5 @@ Id Name State ---------------------------------- - 0 fv0 running - 1 fc4 running + 0 fv0 running + 1 fc4 running diff --git a/tests/virshdata/list-default.txt b/tests/virshdata/list-default.txt index df496fe55c..4528a01962 100644 --- a/tests/virshdata/list-default.txt +++ b/tests/virshdata/list-default.txt @@ -1,4 +1,4 @@ Id Name State ---------------------------------- - 0 Domain-0 running + 0 Domain-0 running