summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-12-17 12:36:14 +0000
committerLennart Poettering <lennart@poettering.net>2007-12-17 12:36:14 +0000
commitbb8bd5490a71bc77570653cf53be88edd37679e3 (patch)
treec844fce7acfadab8489b76f9f1b510a52911fdc6
parentb898298a5aacb4596646eccbcccdd8afd27e90a5 (diff)
add i18n support
git-svn-id: file:///home/lennart/svn/public/avahi/trunk@1593 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe
-rw-r--r--Makefile.am14
-rwxr-xr-xautogen.sh7
-rw-r--r--avahi-common/Makefile.am10
-rw-r--r--avahi-common/error.c133
-rw-r--r--avahi-common/i18n.c40
-rw-r--r--avahi-common/i18n.h55
-rw-r--r--avahi-ui/avahi-ui.c39
-rw-r--r--avahi-ui/bssh.c59
-rw-r--r--common/Makefile.am2
-rw-r--r--configure.ac13
-rw-r--r--po/POTFILES.in9
-rw-r--r--po/POTFILES.skip3
-rw-r--r--po/avahi.pot350
-rw-r--r--po/de.po353
14 files changed, 968 insertions, 119 deletions
diff --git a/Makefile.am b/Makefile.am
index a5a0ab0..f65e9e3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -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
diff --git a/autogen.sh b/autogen.sh
index f75ad60..78f26c9 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -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
diff --git a/avahi-common/Makefile.am b/avahi-common/Makefile.am
index cd21c11..e0aa56e 100644
--- a/avahi-common/Makefile.am
+++ b/avahi-common/Makefile.am
@@ -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
-
diff --git a/avahi-common/error.c b/avahi-common/error.c
index 92a2234..fb9bd38 100644
--- a/avahi-common/error.c
+++ b/avahi-common/error.c
@@ -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
@@ -24,73 +24,76 @@
#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
index 0000000..20f3b3a
--- /dev/null
+++ b/avahi-common/i18n.c
@@ -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
index 0000000..e246736
--- /dev/null
+++ b/avahi-common/i18n.h
@@ -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
diff --git a/avahi-ui/avahi-ui.c b/avahi-ui/avahi-ui.c
index 643c181..537ca5b 100644
--- a/avahi-ui/avahi-ui.c
+++ b/avahi-ui/avahi-ui.c
@@ -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);
diff --git a/avahi-ui/bssh.c b/avahi-ui/bssh.c
index 54c7dd9..d5bec12 100644
--- a/avahi-ui/bssh.c
+++ b/avahi-ui/bssh.c
@@ -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
@@ -34,27 +34,30 @@
#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;
}
diff --git a/common/Makefile.am b/common/Makefile.am
index e51c02a..ef89f76 100644
--- a/common/Makefile.am
+++ b/common/Makefile.am
@@ -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
diff --git a/configure.ac b/configure.ac
index 8ec3b5d..d5b0272 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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
index 0000000..618de8b
--- /dev/null
+++ b/po/POTFILES.in
@@ -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
index 0000000..8bedfdf
--- /dev/null
+++ b/po/POTFILES.skip
@@ -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
index 0000000..91405de
--- /dev/null
+++ b/po/avahi.pot
@@ -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
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"
+