add i18n support
authorLennart Poettering <lennart@poettering.net>
Mon, 17 Dec 2007 12:36:14 +0000 (12:36 +0000)
committerLennart Poettering <lennart@poettering.net>
Mon, 17 Dec 2007 12:36:14 +0000 (12:36 +0000)
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@1593 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe

14 files changed:
Makefile.am
autogen.sh
avahi-common/Makefile.am
avahi-common/error.c
avahi-common/i18n.c [new file with mode: 0644]
avahi-common/i18n.h [new file with mode: 0644]
avahi-ui/avahi-ui.c
avahi-ui/bssh.c
common/Makefile.am
configure.ac
po/POTFILES.in [new file with mode: 0644]
po/POTFILES.skip [new file with mode: 0644]
po/avahi.pot [new file with mode: 0644]
po/de.po [new file with mode: 0644]

index a5a0ab0..f65e9e3 100644 (file)
@@ -50,7 +50,10 @@ EXTRA_DIST = \
        avahi-compat-libdns_sd.pc.in \
        avahi-compat-howl.pc.in \
        avahi-ui.pc.in \
-       doxygen_to_devhelp.xsl
+       doxygen_to_devhelp.xsl \
+       intltool-merge.in \
+        intltool-update.in \
+        intltool-extract.in
 
 SUBDIRS = \
        common \
@@ -75,7 +78,8 @@ SUBDIRS = \
        avahi-compat-howl \
        avahi-autoipd \
        avahi-ui \
-       avahi-ui-sharp
+       avahi-ui-sharp \
+       po
 
 DX_INPUT = \
        $(srcdir)/avahi-common/address.h \
@@ -307,3 +311,9 @@ dist-hook:
                chmod u+w ${distdir}/ChangeLog || true ; \
                svn2cl -o ${distdir}/ChangeLog ; \
        fi
+
+DISTCLEANFILES = \
+        intltool-extract \
+        intltool-merge \
+        intltool-update \
+       po/.intltool-merge-cache
index f75ad60..78f26c9 100755 (executable)
@@ -49,8 +49,15 @@ else
     rm -rf autom4te.cache
     rm -f config.cache
 
+    rm -f Makefile.am~ configure.ac~
+    # Evil, evil, evil, evil hack
+    sed 's/read dummy/\#/' `which gettextize` | sh -s -- --copy --force
+    test -f Makefile.am~ && mv Makefile.am~ Makefile.am
+    test -f configure.ac~ && mv configure.ac~ configure.ac
+
     test "x$LIBTOOLIZE" = "x" && LIBTOOLIZE=libtoolize
 
+    intltoolize --copy --force --automake
     "$LIBTOOLIZE" -c --force
     run_versioned aclocal "$VERSION" -I common
     run_versioned autoconf 2.59 -Wall
index cd21c11..e0aa56e 100644 (file)
@@ -1,7 +1,7 @@
 # $Id: Makefile.am 90 2005-05-23 16:15:12Z lennart $
 #
 # This file is part of avahi.
-# 
+#
 # avahi is free software; you can redistribute it and/or modify it
 # under the terms of the GNU Lesser General Public License as
 # published by the Free Software Foundation; either version 2 of the
@@ -53,7 +53,7 @@ noinst_PROGRAMS = \
 endif
 
 lib_LTLIBRARIES = \
-       libavahi-common.la 
+       libavahi-common.la
 
 libavahi_common_la_SOURCES = \
        malloc.c malloc.h \
@@ -67,9 +67,10 @@ libavahi_common_la_SOURCES = \
        thread-watch.c thread-watch.h \
        watch.h gccmacro.h \
        rlist.h rlist.c \
-       utf8.c utf8.h
+       utf8.c utf8.h \
+       i18n.c i18n.h
 
-libavahi_common_la_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) 
+libavahi_common_la_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -DAVAHI_LOCALEDIR=\"$(avahilocaledir)\"
 libavahi_common_la_LIBADD = $(AM_LDADD) $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
 libavahi_common_la_LDFLAGS = $(AM_LDFLAGS) -export-dynamic -version-info $(LIBAVAHI_COMMON_VERSION_INFO)
 
@@ -128,4 +129,3 @@ noinst_HEADERS = \
        dbus-watch-glue.h
 
 endif
-
index 92a2234..fb9bd38 100644 (file)
@@ -2,17 +2,17 @@
 
 /***
   This file is part of avahi.
+
   avahi is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as
   published by the Free Software Foundation; either version 2.1 of the
   License, or (at your option) any later version.
+
   avahi is distributed in the hope that it will be useful, but WITHOUT
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
   Public License for more details.
+
   You should have received a copy of the GNU Lesser General Public
   License along with avahi; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 #endif
 
 #include "error.h"
+#include "i18n.h"
 
 const char *avahi_strerror(int error) {
-    
+
     const char * const msg[- AVAHI_ERR_MAX] = {
-        "OK",
-        "Operation failed",
-        "Bad state",
-        "Invalid host name",
-        "Invalid domain name",
-        "No suitable network protocol available",
-        "Invalid DNS TTL",
-        "Resource record key is pattern",
-        "Local name collision",
-        "Invalid record",
-
-        "Invalid service name",
-        "Invalid service type",
-        "Invalid port number",
-        "Invalid record key",
-        "Invalid address",
-        "Timeout reached",
-        "Too many clients",
-        "Too many objects",
-        "Too many entries",
-        "OS Error",
-
-        "Access denied",
-        "Invalid operation",
-        "An unexpected D-Bus error occured",
-        "Daemon connection failed",
-        "Memory exhausted",
-        "The object passed in was not valid",
-        "Daemon not running",
-        "Invalid interface index",
-        "Invalid protocol specification",
-        "Invalid flags",
-
-        "Not found",
-        "Invalid configuration",
-        "Version mismatch",
-        "Invalid service subtype",
-        "Invalid packet",
-        "Invalid DNS return code",
-        "DNS failure: FORMERR",
-        "DNS failure: SERVFAIL",
-        "DNS failure: NXDOMAIN",
-        "DNS failure: NOTIMP",
-
-        "DNS failure: REFUSED",
-        "DNS failure: YXDOMAIN",
-        "DNS failure: YXRRSET",
-        "DNS failure: NXRRSET",
-        "DNS failure: NOTAUTH",
-        "DNS failure: NOTZONE",
-        "Invalid RDATA",
-        "Invalid DNS type",
-        "Invalid DNS class",
-        "Not supported",
-
-        "Not permitted",
-        "Invalid argument",
-       "Is empty",
-        "The requested operation is invalid because redundant"
+        N_("OK"),
+        N_("Operation failed"),
+        N_("Bad state"),
+        N_("Invalid host name"),
+        N_("Invalid domain name"),
+        N_("No suitable network protocol available"),
+        N_("Invalid DNS TTL"),
+        N_("Resource record key is pattern"),
+        N_("Local name collision"),
+        N_("Invalid record"),
+
+        N_("Invalid service name"),
+        N_("Invalid service type"),
+        N_("Invalid port number"),
+        N_("Invalid record key"),
+        N_("Invalid address"),
+        N_("Timeout reached"),
+        N_("Too many clients"),
+        N_("Too many objects"),
+        N_("Too many entries"),
+        N_("OS Error"),
+
+        N_("Access denied"),
+        N_("Invalid operation"),
+        N_("An unexpected D-Bus error occured"),
+        N_("Daemon connection failed"),
+        N_("Memory exhausted"),
+        N_("The object passed in was not valid"),
+        N_("Daemon not running"),
+        N_("Invalid interface index"),
+        N_("Invalid protocol specification"),
+        N_("Invalid flags"),
+
+        N_("Not found"),
+        N_("Invalid configuration"),
+        N_("Version mismatch"),
+        N_("Invalid service subtype"),
+        N_("Invalid packet"),
+        N_("Invalid DNS return code"),
+        N_("DNS failure: FORMERR"),
+        N_("DNS failure: SERVFAIL"),
+        N_("DNS failure: NXDOMAIN"),
+        N_("DNS failure: NOTIMP"),
+
+        N_("DNS failure: REFUSED"),
+        N_("DNS failure: YXDOMAIN"),
+        N_("DNS failure: YXRRSET"),
+        N_("DNS failure: NXRRSET"),
+        N_("DNS failure: NOTAUTH"),
+        N_("DNS failure: NOTZONE"),
+        N_("Invalid RDATA"),
+        N_("Invalid DNS type"),
+        N_("Invalid DNS class"),
+        N_("Not supported"),
+
+        N_("Not permitted"),
+        N_("Invalid argument"),
+        N_("Is empty"),
+        N_("The requested operation is invalid because redundant")
     };
 
+    avahi_init_i18n();
+
     if (-error < 0 || -error >= -AVAHI_ERR_MAX)
-        return "Invalid Error Code";
+        return _("Invalid Error Code");
 
-    return msg[-error];
+    return _(msg[-error]);
 }
diff --git a/avahi-common/i18n.c b/avahi-common/i18n.c
new file mode 100644 (file)
index 0000000..20f3b3a
--- /dev/null
@@ -0,0 +1,40 @@
+/* $Id$ */
+
+/***
+  This file is part of avahi.
+
+  avahi is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Lesser General Public License as
+  published by the Free Software Foundation; either version 2.1 of the
+  License, or (at your option) any later version.
+
+  avahi is distributed in the hope that it will be useful, but WITHOUT
+  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
+  Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with avahi; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+  USA.
+ ***/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "i18n.h"
+
+void avahi_init_i18n(void) {
+
+    /* Not really thread safe, but this doesn't matter much since
+     * bindtextdomain is supposed to be idempotent anyway. */
+
+    static int done = 0;
+
+    if (!done) {
+        bindtextdomain(GETTEXT_PACKAGE, AVAHI_LOCALEDIR);
+        bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
+        done = 1;
+    }
+}
diff --git a/avahi-common/i18n.h b/avahi-common/i18n.h
new file mode 100644 (file)
index 0000000..e246736
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef fooi18nhfoo
+#define fooi18nhfoo
+
+/* $Id$ */
+
+/***
+  This file is part of avahi.
+
+  avahi is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Lesser General Public License as
+  published by the Free Software Foundation; either version 2.1 of the
+  License, or (at your option) any later version.
+
+  avahi is distributed in the hope that it will be useful, but WITHOUT
+  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+  or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
+  Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with avahi; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+  USA.
+***/
+
+#if !defined(GETTEXT_PACKAGE)
+#error "Something is very wrong here, config.h needs to be included first"
+#endif
+
+#ifdef ENABLE_NLS
+
+#include <libintl.h>
+
+#define _(String) dgettext(GETTEXT_PACKAGE, String)
+#ifdef gettext_noop
+#define N_(String) gettext_noop(String)
+#else
+#define N_(String) (String)
+#endif
+
+#else /* NLS is disabled */
+
+#define _(String) (String)
+#define N_(String) (String)
+#define textdomain(String) (String)
+#define gettext(String) (String)
+#define dgettext(Domain,String) (String)
+#define dcgettext(Domain,String,Type) (String)
+#define bindtextdomain(Domain,Directory) (Domain)
+#define bind_textdomain_codeset(Domain,Codeset) (Codeset)
+
+#endif /* ENABLE_NLS */
+
+void avahi_init_i18n(void);
+
+#endif
index 643c181..537ca5b 100644 (file)
@@ -37,6 +37,7 @@
 #include <avahi-common/error.h>
 #include <avahi-common/address.h>
 #include <avahi-common/domain.h>
+#include <avahi-common/i18n.h>
 
 #include "avahi-ui.h"
 
@@ -172,6 +173,8 @@ G_DEFINE_TYPE(AuiServiceDialog, aui_service_dialog, GTK_TYPE_DIALOG)
 static void aui_service_dialog_class_init(AuiServiceDialogClass *klass) {
     GObjectClass *object_class;
 
+    avahi_init_i18n();
+
     object_class = (GObjectClass*) klass;
 
     object_class->finalize = aui_service_dialog_finalize;
@@ -320,7 +323,7 @@ static void client_callback(AvahiClient *c, AvahiClientState state, void *userda
                                               GTK_DIALOG_DESTROY_WITH_PARENT,
                                               GTK_MESSAGE_ERROR,
                                               GTK_BUTTONS_CLOSE,
-                                              "Avahi client failure: %s",
+                                              _("Avahi client failure: %s"),
                                               avahi_strerror(avahi_client_errno(c)));
         gtk_dialog_run(GTK_DIALOG(m));
         gtk_widget_destroy(m);
@@ -382,7 +385,7 @@ static void resolve_callback(
                                                   GTK_DIALOG_DESTROY_WITH_PARENT,
                                                   GTK_MESSAGE_ERROR,
                                                   GTK_BUTTONS_CLOSE,
-                                                  "Avahi resolver failure: %s",
+                                                  _("Avahi resolver failure: %s"),
                                                   avahi_strerror(avahi_client_errno(d->priv->client)));
             gtk_dialog_run(GTK_DIALOG(m));
             gtk_widget_destroy(m);
@@ -512,8 +515,8 @@ static void browse_callback(
                                                   GTK_DIALOG_DESTROY_WITH_PARENT,
                                                   GTK_MESSAGE_ERROR,
                                                   GTK_BUTTONS_CLOSE,
-                                                  "Browsing for service type %s in domain %s failed: %s",
-                                                  type, domain ? domain : "n/a",
+                                                  _("Browsing for service type %s in domain %s failed: %s"),
+                                                  type, domain ? domain : _("n/a"),
                                                   avahi_strerror(avahi_client_errno(d->priv->client)));
             gtk_dialog_run(GTK_DIALOG(m));
             gtk_widget_destroy(m);
@@ -643,7 +646,7 @@ static void domain_browse_callback(
                                                   GTK_DIALOG_DESTROY_WITH_PARENT,
                                                   GTK_MESSAGE_ERROR,
                                                   GTK_BUTTONS_CLOSE,
-                                                  "Avahi domain browser failure: %s",
+                                                  _("Avahi domain browser failure: %s"),
                                                   avahi_strerror(avahi_client_errno(d->priv->client)));
             gtk_dialog_run(GTK_DIALOG(m));
             gtk_widget_destroy(m);
@@ -678,7 +681,7 @@ static const gchar *get_domain_name(AuiServiceDialog *d) {
                                               GTK_DIALOG_DESTROY_WITH_PARENT,
                                               GTK_MESSAGE_ERROR,
                                               GTK_BUTTONS_CLOSE,
-                                              "Failed to read Avahi domain : %s",
+                                              _("Failed to read Avahi domain : %s"),
                                               avahi_strerror(avahi_client_errno(d->priv->client)));
         gtk_dialog_run(GTK_DIALOG(m));
         gtk_widget_destroy(m);
@@ -711,7 +714,7 @@ static gboolean start_callback(gpointer data) {
                                                   GTK_DIALOG_DESTROY_WITH_PARENT,
                                                   GTK_MESSAGE_ERROR,
                                                   GTK_BUTTONS_CLOSE,
-                                                  "Failed to connect to Avahi server: %s",
+                                                  _("Failed to connect to Avahi server: %s"),
                                                   avahi_strerror(error));
             gtk_dialog_run(GTK_DIALOG(m));
             gtk_widget_destroy(m);
@@ -729,9 +732,9 @@ static gboolean start_callback(gpointer data) {
     g_assert(domain);
 
     if (avahi_domain_equal(domain, "local."))
-        gtk_label_set_markup(GTK_LABEL(d->priv->domain_label), "Browsing for services on <b>local network</b>:");
+        gtk_label_set_markup(GTK_LABEL(d->priv->domain_label), _("Browsing for services on <b>local network</b>:"));
     else {
-        gchar *t = g_strdup_printf("Browsing for services in domain <b>%s</b>:", domain);
+        gchar *t = g_strdup_printf(_("Browsing for services in domain <b>%s</b>:"), domain);
         gtk_label_set_markup(GTK_LABEL(d->priv->domain_label), t);
         g_free(t);
     }
@@ -767,7 +770,7 @@ static gboolean start_callback(gpointer data) {
                                                   GTK_DIALOG_DESTROY_WITH_PARENT,
                                                   GTK_MESSAGE_ERROR,
                                                   GTK_BUTTONS_CLOSE,
-                                                  "Failed to create browser for %s: %s",
+                                                  _("Failed to create browser for %s: %s"),
                                                   *st,
                                                   avahi_strerror(avahi_client_errno(d->priv->client)));
             gtk_dialog_run(GTK_DIALOG(m));
@@ -897,7 +900,7 @@ static void response_callback(GtkDialog *dialog, gint response, gpointer user_da
                                                   GTK_DIALOG_DESTROY_WITH_PARENT,
                                                   GTK_MESSAGE_ERROR,
                                                   GTK_BUTTONS_CLOSE,
-                                                  "Failed to create resolver for %s of type %s in domain %s: %s",
+                                                  _("Failed to create resolver for %s of type %s in domain %s: %s"),
                                                   name, type, d->priv->domain,
                                                   avahi_strerror(avahi_client_errno(d->priv->client)));
             gtk_dialog_run(GTK_DIALOG(m));
@@ -972,7 +975,7 @@ static void domain_button_clicked(GtkButton *button G_GNUC_UNUSED, gpointer user
                                               GTK_DIALOG_DESTROY_WITH_PARENT,
                                               GTK_MESSAGE_ERROR,
                                               GTK_BUTTONS_CLOSE,
-                                              "Failed to create domain browser: %s",
+                                              _("Failed to create domain browser: %s"),
                                               avahi_strerror(avahi_client_errno(p->client)));
         gtk_dialog_run(GTK_DIALOG(m));
         gtk_widget_destroy(m);
@@ -983,7 +986,7 @@ static void domain_button_clicked(GtkButton *button G_GNUC_UNUSED, gpointer user
 
     p->domain_dialog = gtk_dialog_new();
     gtk_container_set_border_width(GTK_CONTAINER(p->domain_dialog), 5);
-    gtk_window_set_title(GTK_WINDOW(p->domain_dialog), "Change domain");
+    gtk_window_set_title(GTK_WINDOW(p->domain_dialog), _("Change domain"));
     gtk_dialog_set_has_separator(GTK_DIALOG(p->domain_dialog), FALSE);
 
     vbox = gtk_vbox_new(FALSE, 8);
@@ -1015,7 +1018,7 @@ static void domain_button_clicked(GtkButton *button G_GNUC_UNUSED, gpointer user
     g_signal_connect(selection, "changed", G_CALLBACK(domain_selection_changed_callback), d);
 
     renderer = gtk_cell_renderer_text_new();
-    column = gtk_tree_view_column_new_with_attributes("Service Name", renderer, "text", DOMAIN_COLUMN_NAME, NULL);
+    column = gtk_tree_view_column_new_with_attributes(_("Service Name"), renderer, "text", DOMAIN_COLUMN_NAME, NULL);
     gtk_tree_view_column_set_expand(column, TRUE);
     gtk_tree_view_append_column(GTK_TREE_VIEW(p->domain_tree_view), column);
 
@@ -1023,7 +1026,7 @@ static void domain_button_clicked(GtkButton *button G_GNUC_UNUSED, gpointer user
     gtk_container_add(GTK_CONTAINER(scrolled_window), p->domain_tree_view);
 
     p->domain_progress_bar = gtk_progress_bar_new();
-    gtk_progress_bar_set_text(GTK_PROGRESS_BAR(p->domain_progress_bar), "Browsing ...");
+    gtk_progress_bar_set_text(GTK_PROGRESS_BAR(p->domain_progress_bar), _("Browsing ..."));
     gtk_progress_bar_set_pulse_step(GTK_PROGRESS_BAR(p->domain_progress_bar), 0.1);
     gtk_box_pack_end(GTK_BOX(vbox2), p->domain_progress_bar, FALSE, FALSE, 0);
 
@@ -1112,7 +1115,7 @@ static void aui_service_dialog_init(AuiServiceDialog *d) {
     gtk_container_set_border_width(GTK_CONTAINER(vbox), 8);
     gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->vbox), vbox, TRUE, TRUE, 0);
 
-    p->domain_label = gtk_label_new("Initializing...");
+    p->domain_label = gtk_label_new(_("Initializing..."));
     gtk_label_set_ellipsize(GTK_LABEL(p->domain_label), TRUE);
     gtk_misc_set_alignment(GTK_MISC(p->domain_label), 0, 0.5);
     gtk_box_pack_start(GTK_BOX(vbox), p->domain_label, FALSE, FALSE, 0);
@@ -1154,11 +1157,11 @@ static void aui_service_dialog_init(AuiServiceDialog *d) {
     gtk_container_add(GTK_CONTAINER(scrolled_window), p->service_tree_view);
 
     p->service_progress_bar = gtk_progress_bar_new();
-    gtk_progress_bar_set_text(GTK_PROGRESS_BAR(p->service_progress_bar), "Browsing ...");
+    gtk_progress_bar_set_text(GTK_PROGRESS_BAR(p->service_progress_bar), _("Browsing ..."));
     gtk_progress_bar_set_pulse_step(GTK_PROGRESS_BAR(p->service_progress_bar), 0.1);
     gtk_box_pack_end(GTK_BOX(vbox2), p->service_progress_bar, FALSE, FALSE, 0);
 
-    p->domain_button = gtk_button_new_with_mnemonic("_Domain...");
+    p->domain_button = gtk_button_new_with_mnemonic(_("_Domain..."));
     gtk_button_set_image(GTK_BUTTON(p->domain_button), gtk_image_new_from_stock(GTK_STOCK_NETWORK, GTK_ICON_SIZE_BUTTON));
     g_signal_connect(p->domain_button, "clicked", G_CALLBACK(domain_button_clicked), d);
     gtk_box_pack_start(GTK_BOX(GTK_DIALOG(d)->action_area), p->domain_button, FALSE, TRUE, 0);
index 54c7dd9..d5bec12 100644 (file)
@@ -2,17 +2,17 @@
 
 /***
   This file is part of avahi.
+
   avahi is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as
   published by the Free Software Foundation; either version 2.1 of the
   License, or (at your option) any later version.
+
   avahi is distributed in the hope that it will be useful, but WITHOUT
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
   Public License for more details.
+
   You should have received a copy of the GNU Lesser General Public
   License along with avahi; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 #include <avahi-common/strlst.h>
 #include <avahi-common/malloc.h>
 #include <avahi-common/domain.h>
+#include <avahi-common/i18n.h>
 
 #include "avahi-ui.h"
 
 int main(int argc, char*argv[]) {
     GtkWidget *d;
 
+    avahi_init_i18n();
+
     gtk_init(&argc, &argv);
 
     if (g_str_has_suffix(argv[0], "bshell")) {
-        d = aui_service_dialog_new("Choose Shell Server", NULL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_CONNECT, GTK_RESPONSE_ACCEPT, NULL);
+        d = aui_service_dialog_new(_("Choose Shell Server"), NULL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_CONNECT, GTK_RESPONSE_ACCEPT, NULL);
         aui_service_dialog_set_browse_service_types(AUI_SERVICE_DIALOG(d), "_rfb._tcp", "_ssh._tcp", NULL);
-        aui_service_dialog_set_service_type_name(AUI_SERVICE_DIALOG(d), "_rfb._tcp", "Desktop");
-        aui_service_dialog_set_service_type_name(AUI_SERVICE_DIALOG(d), "_ssh._tcp", "Terminal");
+        aui_service_dialog_set_service_type_name(AUI_SERVICE_DIALOG(d), "_rfb._tcp", _("Desktop"));
+        aui_service_dialog_set_service_type_name(AUI_SERVICE_DIALOG(d), "_ssh._tcp", _("Terminal"));
     } else if (g_str_has_suffix(argv[0], "bvnc")) {
-        d = aui_service_dialog_new("Choose VNC server", NULL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_CONNECT, GTK_RESPONSE_ACCEPT, NULL);
+        d = aui_service_dialog_new(_("Choose VNC server"), NULL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_CONNECT, GTK_RESPONSE_ACCEPT, NULL);
         aui_service_dialog_set_browse_service_types(AUI_SERVICE_DIALOG(d), "_rfb._tcp", NULL);
     } else {
-        d = aui_service_dialog_new("Choose SSH server", NULL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_CONNECT, GTK_RESPONSE_ACCEPT, NULL);
+        d = aui_service_dialog_new(_("Choose SSH server"), NULL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_CONNECT, GTK_RESPONSE_ACCEPT, NULL);
         aui_service_dialog_set_browse_service_types(AUI_SERVICE_DIALOG(d), "_ssh._tcp", NULL);
     }
-        
+
     aui_service_dialog_set_resolve_service(AUI_SERVICE_DIALOG(d), TRUE);
     aui_service_dialog_set_resolve_host_name(AUI_SERVICE_DIALOG(d), !avahi_nss_support());
 
@@ -67,37 +70,37 @@ int main(int argc, char*argv[]) {
 
         t = g_strdup(aui_service_dialog_get_service_type(AUI_SERVICE_DIALOG(d)));
         n = g_strdup(aui_service_dialog_get_service_name(AUI_SERVICE_DIALOG(d)));
-        
+
         if (avahi_nss_support())
             h = g_strdup(aui_service_dialog_get_host_name(AUI_SERVICE_DIALOG(d)));
         else
             h = g_strdup(avahi_address_snprint(a, sizeof(a), aui_service_dialog_get_address(AUI_SERVICE_DIALOG(d))));
 
-        g_print("Connecting to '%s' ...\n", n);
-        
+        g_print(_("Connecting to '%s' ...\n"), n);
+
         if (avahi_domain_equal(t, "_rfb._tcp")) {
             char p[AVAHI_DOMAIN_NAME_MAX+16];
             snprintf(p, sizeof(p), "%s:%u", h, aui_service_dialog_get_port(AUI_SERVICE_DIALOG(d))-5900);
 
             gtk_widget_destroy(d);
-            
+
             g_print("xvncviewer %s\n", p);
-            execlp("xvncviewer", "xvncviewer", p, NULL); 
-            
+            execlp("xvncviewer", "xvncviewer", p, NULL);
+
         } else {
             char p[16];
-            
+
             snprintf(p, sizeof(p), "%u", aui_service_dialog_get_port(AUI_SERVICE_DIALOG(d)));
-            
+
             for (txt = aui_service_dialog_get_txt_data(AUI_SERVICE_DIALOG(d)); txt; txt = txt->next) {
                 char *key, *value;
-                
+
                 if (avahi_string_list_get_pair((AvahiStringList*) txt, &key, &value, NULL) < 0)
                     break;
-                
+
                 if (strcmp(key, "u") == 0)
                     u = g_strdup(value);
-                
+
                 avahi_free(key);
                 avahi_free(value);
             }
@@ -110,35 +113,35 @@ int main(int argc, char*argv[]) {
                 if (isatty(0) || !getenv("DISPLAY"))
                     execlp("ssh", "ssh", "-p", p, "-l", u, h, NULL);
                 else {
-                    execlp("x-terminal-emulator", "x-terminal-emulator", "-T", n, "-e", "ssh", "-p", p, "-l", u, h, NULL); 
+                    execlp("x-terminal-emulator", "x-terminal-emulator", "-T", n, "-e", "ssh", "-p", p, "-l", u, h, NULL);
                     execlp("gnome-terminal", "gnome-terminal", "-t", n, "-x", "ssh", "-p", p, "-l", u, h, NULL);
                     execlp("xterm", "xterm", "-T", n, "-e", "ssh", "-p", p, "-l", u, h, NULL);
                 }
             } else {
                 g_print("ssh -p %s %s\n", p, h);
-                
+
                 if (isatty(0) || !getenv("DISPLAY"))
-                    execlp("ssh", "ssh", "-p", p, h, NULL); 
+                    execlp("ssh", "ssh", "-p", p, h, NULL);
                 else {
-                    execlp("x-terminal-emulator", "x-terminal-emulator", "-T", n, "-e", "ssh", "-p", p, h, NULL); 
+                    execlp("x-terminal-emulator", "x-terminal-emulator", "-T", n, "-e", "ssh", "-p", p, h, NULL);
                     execlp("gnome-terminal", "gnome-terminal", "-t", n, "-x", "ssh", "-p", p, h, NULL);
                     execlp("xterm", "xterm", "-T", n, "-e", "ssh", "-p", p, h, NULL);
                 }
             }
         }
 
-        g_warning("execlp() failed: %s\n", strerror(errno));
+        g_warning(_("execlp() failed: %s\n"), strerror(errno));
 
         g_free(h);
         g_free(u);
         g_free(t);
         g_free(n);
-        
+
     } else {
         gtk_widget_destroy(d);
 
-        g_print("Canceled.\n");
+        g_print(_("Canceled.\n"));
     }
-    
+
     return 1;
 }
index e51c02a..ef89f76 100644 (file)
@@ -17,7 +17,7 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 # USA.
 
-EXTRA_DIST = \
+EXTRA_DIST = gettext.m4 iconv.m4 lib-ld.m4 lib-link.m4 lib-prefix.m4 nls.m4 po.m4 progtest.m4 \
     doxygen.m4 \
        doxygen.mk \
        python.m4
index 8ec3b5d..d5b0272 100644 (file)
@@ -396,6 +396,18 @@ if test "x$have_kqueue" = "xyes" ; then
     AC_DEFINE([HAVE_KQUEUE], 1, [Enable BSD kqueue() usage])
 fi
 
+AM_GNU_GETTEXT([external])
+
+IT_PROG_INTLTOOL([0.35.0])
+GETTEXT_PACKAGE=avahi
+AC_SUBST([GETTEXT_PACKAGE])
+AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],["$GETTEXT_PACKAGE"],[Gettext package])
+AM_GLIB_GNU_GETTEXT
+
+avahilocaledir='${prefix}/${DATADIRNAME}/locale'
+AC_SUBST(avahilocaledir)
+
+
 # Check for pkg-config manually first, as if its not installed the
 # PKG_PROG_PKG_CONFIG macro won't be defined.
 AC_CHECK_PROG(have_pkg_config, pkg-config, yes, no)
@@ -1066,6 +1078,7 @@ avahi-compat-howl/Makefile
 avahi-compat-howl/samples/Makefile
 avahi-autoipd/Makefile
 avahi-ui/Makefile
+po/Makefile.in
 ])
 AC_OUTPUT
 
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644 (file)
index 0000000..618de8b
--- /dev/null
@@ -0,0 +1,9 @@
+# List of source files which contain translatable strings.
+avahi-common/error.c
+avahi-ui/avahi-ui.c
+avahi-ui/bssh.c
+avahi-utils/avahi-browse.c
+avahi-utils/avahi-publish.c
+avahi-utils/avahi-resolve.c
+avahi-utils/avahi-set-host-name.c
+
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
new file mode 100644 (file)
index 0000000..8bedfdf
--- /dev/null
@@ -0,0 +1,3 @@
+avahi-discover-standalone/avahi-discover.glade
+tests/c-plus-plus-test-gen.py
+
diff --git a/po/avahi.pot b/po/avahi.pot
new file mode 100644 (file)
index 0000000..91405de
--- /dev/null
@@ -0,0 +1,350 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-12-17 13:17+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../avahi-common/error.c:32
+msgid "OK"
+msgstr ""
+
+#: ../avahi-common/error.c:33
+msgid "Operation failed"
+msgstr ""
+
+#: ../avahi-common/error.c:34
+msgid "Bad state"
+msgstr ""
+
+#: ../avahi-common/error.c:35
+msgid "Invalid host name"
+msgstr ""
+
+#: ../avahi-common/error.c:36
+msgid "Invalid domain name"
+msgstr ""
+
+#: ../avahi-common/error.c:37
+msgid "No suitable network protocol available"
+msgstr ""
+
+#: ../avahi-common/error.c:38
+msgid "Invalid DNS TTL"
+msgstr ""
+
+#: ../avahi-common/error.c:39
+msgid "Resource record key is pattern"
+msgstr ""
+
+#: ../avahi-common/error.c:40
+msgid "Local name collision"
+msgstr ""
+
+#: ../avahi-common/error.c:41
+msgid "Invalid record"
+msgstr ""
+
+#: ../avahi-common/error.c:43
+msgid "Invalid service name"
+msgstr ""
+
+#: ../avahi-common/error.c:44
+msgid "Invalid service type"
+msgstr ""
+
+#: ../avahi-common/error.c:45
+msgid "Invalid port number"
+msgstr ""
+
+#: ../avahi-common/error.c:46
+msgid "Invalid record key"
+msgstr ""
+
+#: ../avahi-common/error.c:47
+msgid "Invalid address"
+msgstr ""
+
+#: ../avahi-common/error.c:48
+msgid "Timeout reached"
+msgstr ""
+
+#: ../avahi-common/error.c:49
+msgid "Too many clients"
+msgstr ""
+
+#: ../avahi-common/error.c:50
+msgid "Too many objects"
+msgstr ""
+
+#: ../avahi-common/error.c:51
+msgid "Too many entries"
+msgstr ""
+
+#: ../avahi-common/error.c:52
+msgid "OS Error"
+msgstr ""
+
+#: ../avahi-common/error.c:54
+msgid "Access denied"
+msgstr ""
+
+#: ../avahi-common/error.c:55
+msgid "Invalid operation"
+msgstr ""
+
+#: ../avahi-common/error.c:56
+msgid "An unexpected D-Bus error occured"
+msgstr ""
+
+#: ../avahi-common/error.c:57
+msgid "Daemon connection failed"
+msgstr ""
+
+#: ../avahi-common/error.c:58
+msgid "Memory exhausted"
+msgstr ""
+
+#: ../avahi-common/error.c:59
+msgid "The object passed in was not valid"
+msgstr ""
+
+#: ../avahi-common/error.c:60
+msgid "Daemon not running"
+msgstr ""
+
+#: ../avahi-common/error.c:61
+msgid "Invalid interface index"
+msgstr ""
+
+#: ../avahi-common/error.c:62
+msgid "Invalid protocol specification"
+msgstr ""
+
+#: ../avahi-common/error.c:63
+msgid "Invalid flags"
+msgstr ""
+
+#: ../avahi-common/error.c:65
+msgid "Not found"
+msgstr ""
+
+#: ../avahi-common/error.c:66
+msgid "Invalid configuration"
+msgstr ""
+
+#: ../avahi-common/error.c:67
+msgid "Version mismatch"
+msgstr ""
+
+#: ../avahi-common/error.c:68
+msgid "Invalid service subtype"
+msgstr ""
+
+#: ../avahi-common/error.c:69
+msgid "Invalid packet"
+msgstr ""
+
+#: ../avahi-common/error.c:70
+msgid "Invalid DNS return code"
+msgstr ""
+
+#: ../avahi-common/error.c:71
+msgid "DNS failure: FORMERR"
+msgstr ""
+
+#: ../avahi-common/error.c:72
+msgid "DNS failure: SERVFAIL"
+msgstr ""
+
+#: ../avahi-common/error.c:73
+msgid "DNS failure: NXDOMAIN"
+msgstr ""
+
+#: ../avahi-common/error.c:74
+msgid "DNS failure: NOTIMP"
+msgstr ""
+
+#: ../avahi-common/error.c:76
+msgid "DNS failure: REFUSED"
+msgstr ""
+
+#: ../avahi-common/error.c:77
+msgid "DNS failure: YXDOMAIN"
+msgstr ""
+
+#: ../avahi-common/error.c:78
+msgid "DNS failure: YXRRSET"
+msgstr ""
+
+#: ../avahi-common/error.c:79
+msgid "DNS failure: NXRRSET"
+msgstr ""
+
+#: ../avahi-common/error.c:80
+msgid "DNS failure: NOTAUTH"
+msgstr ""
+
+#: ../avahi-common/error.c:81
+msgid "DNS failure: NOTZONE"
+msgstr ""
+
+#: ../avahi-common/error.c:82
+msgid "Invalid RDATA"
+msgstr ""
+
+#: ../avahi-common/error.c:83
+msgid "Invalid DNS type"
+msgstr ""
+
+#: ../avahi-common/error.c:84
+msgid "Invalid DNS class"
+msgstr ""
+
+#: ../avahi-common/error.c:85
+msgid "Not supported"
+msgstr ""
+
+#: ../avahi-common/error.c:87
+msgid "Not permitted"
+msgstr ""
+
+#: ../avahi-common/error.c:88
+msgid "Invalid argument"
+msgstr ""
+
+#: ../avahi-common/error.c:89
+msgid "Is empty"
+msgstr ""
+
+#: ../avahi-common/error.c:90
+msgid "The requested operation is invalid because redundant"
+msgstr ""
+
+#: ../avahi-common/error.c:96
+msgid "Invalid Error Code"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:326
+#, c-format
+msgid "Avahi client failure: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:388
+#, c-format
+msgid "Avahi resolver failure: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:518
+#, c-format
+msgid "Browsing for service type %s in domain %s failed: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:519
+msgid "n/a"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:649
+#, c-format
+msgid "Avahi domain browser failure: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:684
+#, c-format
+msgid "Failed to read Avahi domain : %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:717
+#, c-format
+msgid "Failed to connect to Avahi server: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:735
+msgid "Browsing for services on <b>local network</b>:"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:737
+#, c-format
+msgid "Browsing for services in domain <b>%s</b>:"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:773
+#, c-format
+msgid "Failed to create browser for %s: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:903
+#, c-format
+msgid "Failed to create resolver for %s of type %s in domain %s: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:978
+#, c-format
+msgid "Failed to create domain browser: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:989
+msgid "Change domain"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:1021
+msgid "Service Name"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:1029 ../avahi-ui/avahi-ui.c:1160
+msgid "Browsing ..."
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:1118
+msgid "Initializing..."
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:1164
+msgid "_Domain..."
+msgstr ""
+
+#: ../avahi-ui/bssh.c:49
+msgid "Choose Shell Server"
+msgstr ""
+
+#: ../avahi-ui/bssh.c:51
+msgid "Desktop"
+msgstr ""
+
+#: ../avahi-ui/bssh.c:52
+msgid "Terminal"
+msgstr ""
+
+#: ../avahi-ui/bssh.c:54
+msgid "Choose VNC server"
+msgstr ""
+
+#: ../avahi-ui/bssh.c:57
+msgid "Choose SSH server"
+msgstr ""
+
+#: ../avahi-ui/bssh.c:79
+#, c-format
+msgid "Connecting to '%s' ...\n"
+msgstr ""
+
+#: ../avahi-ui/bssh.c:133
+#, c-format
+msgid "execlp() failed: %s\n"
+msgstr ""
+
+#: ../avahi-ui/bssh.c:143
+#, c-format
+msgid "Canceled.\n"
+msgstr ""
diff --git a/po/de.po b/po/de.po
new file mode 100644 (file)
index 0000000..960819b
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,353 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Avahi\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-12-17 13:17+0100\n"
+"PO-Revision-Date: 2007-12-17 13:26+0100\n"
+"Last-Translator: \n"
+"Language-Team: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: de\n"
+"X-Poedit-Country: DE\n"
+
+#: ../avahi-common/error.c:32
+msgid "OK"
+msgstr "OK"
+
+#: ../avahi-common/error.c:33
+msgid "Operation failed"
+msgstr "Operation fehlgeschlagen"
+
+#: ../avahi-common/error.c:34
+msgid "Bad state"
+msgstr "Ungültiger Zustand"
+
+#: ../avahi-common/error.c:35
+msgid "Invalid host name"
+msgstr "Ungültiger Maschinenname"
+
+#: ../avahi-common/error.c:36
+msgid "Invalid domain name"
+msgstr "Ungültiger Domänenname"
+
+#: ../avahi-common/error.c:37
+msgid "No suitable network protocol available"
+msgstr "Kein passendes Netzwerkprotokoll verfügbar"
+
+#: ../avahi-common/error.c:38
+msgid "Invalid DNS TTL"
+msgstr "Ungültige DNS TTL"
+
+#: ../avahi-common/error.c:39
+msgid "Resource record key is pattern"
+msgstr "Datensatzschlüssel ist Muster"
+
+#: ../avahi-common/error.c:40
+msgid "Local name collision"
+msgstr "Lokale Namenskollision"
+
+#: ../avahi-common/error.c:41
+msgid "Invalid record"
+msgstr "Ungültiger Datensatz"
+
+#: ../avahi-common/error.c:43
+msgid "Invalid service name"
+msgstr "Ungültiger Dienstename"
+
+#: ../avahi-common/error.c:44
+msgid "Invalid service type"
+msgstr "Ungültiger Dienstetyp"
+
+#: ../avahi-common/error.c:45
+msgid "Invalid port number"
+msgstr "Ungültige Port-Nummer"
+
+#: ../avahi-common/error.c:46
+msgid "Invalid record key"
+msgstr "Ungültiger Datensatzschlüssel"
+
+#: ../avahi-common/error.c:47
+msgid "Invalid address"
+msgstr "Ungültige Adresse"
+
+#: ../avahi-common/error.c:48
+msgid "Timeout reached"
+msgstr "Zeit abgelaufen"
+
+#: ../avahi-common/error.c:49
+msgid "Too many clients"
+msgstr "Zu viele Clients"
+
+#: ../avahi-common/error.c:50
+msgid "Too many objects"
+msgstr "Zu viele Objekte"
+
+#: ../avahi-common/error.c:51
+msgid "Too many entries"
+msgstr "Zu viele Einträge"
+
+#: ../avahi-common/error.c:52
+msgid "OS Error"
+msgstr "Betriebssystemfehler"
+
+#: ../avahi-common/error.c:54
+msgid "Access denied"
+msgstr "Zugriff abgelehnt"
+
+#: ../avahi-common/error.c:55
+msgid "Invalid operation"
+msgstr "Ungültige Operation"
+
+#: ../avahi-common/error.c:56
+msgid "An unexpected D-Bus error occured"
+msgstr "Ein unerwarteter D-Bus-Fehler ist aufgetreten"
+
+#: ../avahi-common/error.c:57
+msgid "Daemon connection failed"
+msgstr "Verbindung zum Daemon fehlgeschlagen"
+
+#: ../avahi-common/error.c:58
+msgid "Memory exhausted"
+msgstr "Ungültiges Argument"
+
+#: ../avahi-common/error.c:59
+msgid "The object passed in was not valid"
+msgstr "Das übergebene Objekt ist nicht gültig"
+
+#: ../avahi-common/error.c:60
+msgid "Daemon not running"
+msgstr "Daemon läuft nicht"
+
+#: ../avahi-common/error.c:61
+msgid "Invalid interface index"
+msgstr "Ungültiger Schnittstellenindex"
+
+#: ../avahi-common/error.c:62
+msgid "Invalid protocol specification"
+msgstr "Ungültige Protokollspezifikation"
+
+#: ../avahi-common/error.c:63
+msgid "Invalid flags"
+msgstr "Ungültige Flags"
+
+#: ../avahi-common/error.c:65
+msgid "Not found"
+msgstr "Nicht gefunden"
+
+#: ../avahi-common/error.c:66
+msgid "Invalid configuration"
+msgstr "Ungültige Konfiguration"
+
+#: ../avahi-common/error.c:67
+msgid "Version mismatch"
+msgstr "Unpassende Version"
+
+#: ../avahi-common/error.c:68
+msgid "Invalid service subtype"
+msgstr "Ungültiger Dienstesubtyp"
+
+#: ../avahi-common/error.c:69
+msgid "Invalid packet"
+msgstr "Ungültiges Paket"
+
+#: ../avahi-common/error.c:70
+msgid "Invalid DNS return code"
+msgstr "Ungültiger DNS Rückgabewert"
+
+#: ../avahi-common/error.c:71
+msgid "DNS failure: FORMERR"
+msgstr "DNS-Fehler: FORMERR"
+
+#: ../avahi-common/error.c:72
+msgid "DNS failure: SERVFAIL"
+msgstr "DNS-Fehler: SERVFAIL"
+
+#: ../avahi-common/error.c:73
+msgid "DNS failure: NXDOMAIN"
+msgstr ""
+
+#: ../avahi-common/error.c:74
+msgid "DNS failure: NOTIMP"
+msgstr ""
+
+#: ../avahi-common/error.c:76
+msgid "DNS failure: REFUSED"
+msgstr ""
+
+#: ../avahi-common/error.c:77
+msgid "DNS failure: YXDOMAIN"
+msgstr ""
+
+#: ../avahi-common/error.c:78
+msgid "DNS failure: YXRRSET"
+msgstr ""
+
+#: ../avahi-common/error.c:79
+msgid "DNS failure: NXRRSET"
+msgstr ""
+
+#: ../avahi-common/error.c:80
+msgid "DNS failure: NOTAUTH"
+msgstr ""
+
+#: ../avahi-common/error.c:81
+msgid "DNS failure: NOTZONE"
+msgstr ""
+
+#: ../avahi-common/error.c:82
+msgid "Invalid RDATA"
+msgstr ""
+
+#: ../avahi-common/error.c:83
+msgid "Invalid DNS type"
+msgstr ""
+
+#: ../avahi-common/error.c:84
+msgid "Invalid DNS class"
+msgstr ""
+
+#: ../avahi-common/error.c:85
+msgid "Not supported"
+msgstr ""
+
+#: ../avahi-common/error.c:87
+msgid "Not permitted"
+msgstr ""
+
+#: ../avahi-common/error.c:88
+msgid "Invalid argument"
+msgstr "Ungültiges Argument"
+
+#: ../avahi-common/error.c:89
+msgid "Is empty"
+msgstr "Leer"
+
+#: ../avahi-common/error.c:90
+msgid "The requested operation is invalid because redundant"
+msgstr ""
+
+#: ../avahi-common/error.c:96
+msgid "Invalid Error Code"
+msgstr "Ungültiger Fehlercode"
+
+#: ../avahi-ui/avahi-ui.c:326
+#, c-format
+msgid "Avahi client failure: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:388
+#, c-format
+msgid "Avahi resolver failure: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:518
+#, c-format
+msgid "Browsing for service type %s in domain %s failed: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:519
+msgid "n/a"
+msgstr "n/a"
+
+#: ../avahi-ui/avahi-ui.c:649
+#, c-format
+msgid "Avahi domain browser failure: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:684
+#, c-format
+msgid "Failed to read Avahi domain : %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:717
+#, c-format
+msgid "Failed to connect to Avahi server: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:735
+msgid "Browsing for services on <b>local network</b>:"
+msgstr "Durchsuche <b>lokales Netzwerk</b> nach Diensten:"
+
+#: ../avahi-ui/avahi-ui.c:737
+#, c-format
+msgid "Browsing for services in domain <b>%s</b>:"
+msgstr "Durchsuche Domäne <b>%s</b> nach Diensten:"
+
+#: ../avahi-ui/avahi-ui.c:773
+#, c-format
+msgid "Failed to create browser for %s: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:903
+#, c-format
+msgid "Failed to create resolver for %s of type %s in domain %s: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:978
+#, c-format
+msgid "Failed to create domain browser: %s"
+msgstr ""
+
+#: ../avahi-ui/avahi-ui.c:989
+msgid "Change domain"
+msgstr "Domäne Ändern"
+
+#: ../avahi-ui/avahi-ui.c:1021
+msgid "Service Name"
+msgstr "Dienstename"
+
+#: ../avahi-ui/avahi-ui.c:1029
+#: ../avahi-ui/avahi-ui.c:1160
+msgid "Browsing ..."
+msgstr "Durchsuchen..."
+
+#: ../avahi-ui/avahi-ui.c:1118
+msgid "Initializing..."
+msgstr "Initialisieren..."
+
+#: ../avahi-ui/avahi-ui.c:1164
+msgid "_Domain..."
+msgstr "_Domäne..."
+
+#: ../avahi-ui/bssh.c:49
+msgid "Choose Shell Server"
+msgstr "Shell-Dienst Auswählen"
+
+#: ../avahi-ui/bssh.c:51
+msgid "Desktop"
+msgstr "Arbeitsplatz"
+
+#: ../avahi-ui/bssh.c:52
+msgid "Terminal"
+msgstr "Terminal"
+
+#: ../avahi-ui/bssh.c:54
+msgid "Choose VNC server"
+msgstr "VNC-Dienst Auswählen"
+
+#: ../avahi-ui/bssh.c:57
+msgid "Choose SSH server"
+msgstr "SSH-Dienst Auswählen"
+
+#: ../avahi-ui/bssh.c:79
+#, c-format
+msgid "Connecting to '%s' ...\n"
+msgstr "Verbinde zu '%s' ...\n"
+
+#: ../avahi-ui/bssh.c:133
+#, c-format
+msgid "execlp() failed: %s\n"
+msgstr "execlp() fehlgeschlagen: %s\n"
+
+#: ../avahi-ui/bssh.c:143
+#, c-format
+msgid "Canceled.\n"
+msgstr "Abgebrochen.\n"
+