]> spindle.queued.net Git - midori/commitdiff
Implement localization via Gettext.
authorChristian Dywan <christian@twotoasts.de>
Sat, 22 Mar 2008 02:38:23 +0000 (03:38 +0100)
committerChristian Dywan <christian@twotoasts.de>
Sat, 22 Mar 2008 02:38:23 +0000 (03:38 +0100)
Based on the implementation of localization via Gettext
contributed by Enrico Tröger, a few adjustments were made
to allow Midori to be properly localized. Initially
German is fully supported.

26 files changed:
Makefile.am
autogen.sh
configure.in
katze/Makefile.am
katze/katze-throbber.c
katze/katze-xbel.c
midori.desktop [deleted file]
midori.desktop.in [new file with mode: 0644]
po/LINGUAS [new file with mode: 0644]
po/Makefile.in.in [new file with mode: 0644]
po/POTFILES.in [new file with mode: 0644]
po/POTFILES.skip [new file with mode: 0644]
po/de.po [new file with mode: 0644]
src/Makefile.am
src/conf.c
src/global.h
src/helpers.c
src/main.c
src/midori-browser.c
src/midori-panel.c
src/midori-trash.c
src/midori-websettings.c
src/midori-webview.c
src/prefs.c
src/sokoke.c
src/webSearch.c

index 954188622a258c8ff93ff0076a2f9f58d0cbb41e..3f505e2810bdc4a89bde078aac392784ccf77bc3 100644 (file)
@@ -1,8 +1,22 @@
 AUTOMAKE_OPTIONS = gnu
 
-SUBDIRS = katze src
+SUBDIRS = katze src po
 
 desktopdir = $(datadir)/applications
-desktop_DATA = midori.desktop
+desktop_in_files = midori.desktop
+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+@INTLTOOL_DESKTOP_RULE@
 
-EXTRA_DIST = HACKING TODO $(desktop_DATA)
+DISTCLEANFILES = \
+    midori.desktop \
+    intltool-extract \
+    intltool-merge \
+    intltool-update
+
+EXTRA_DIST = \
+    HACKING \
+    TODO \
+    midori.desktop.in \
+    intltool-extract.in \
+    intltool-merge.in \
+    intltool-update.in
index 739a102c6e20f06683bf98c74575b3167fa17d45..b17da47e073d59fbed90a32c7d32ac7aa1147666 100755 (executable)
@@ -1,7 +1,9 @@
 #!/bin/sh
 
+echo "no" | glib-gettextize --force --copy
+intltoolize --copy --force --automake
 libtoolize --copy --force
 aclocal
 autoheader
 autoconf
-automake --add-missing --copy
\ No newline at end of file
+automake --add-missing --copy
index dc257970c61a3266f97f265a1109d2f1608281f0..b495ffd4b1ca3b6e207556c37c6538b9e6b3b7be 100644 (file)
@@ -10,6 +10,7 @@ AM_PROG_LIBTOOL
 AC_PROG_CC
 AC_PROG_INSTALL
 AC_PROG_MAKE_SET
+AC_PROG_INTLTOOL
 
 # Checks for header files
 AC_HEADER_STDC
@@ -82,11 +83,26 @@ AC_SUBST(LIBXML_LIBS)
 LIBXML_VER=`pkg-config --modversion libxml-2.0`
 AC_DEFINE_UNQUOTED([LIBXML_VER], "$LIBXML_VER", [libXML2 version])
 
+# i18n
+GETTEXT_PACKAGE=midori
+AC_SUBST(GETTEXT_PACKAGE)
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package.])
+
+ALL_LINGUAS="`sed -e '/^#/d' $srcdir/po/LINGUAS`" # take all languages found in file po/LINGUAS
+
+AM_GLIB_GNU_GETTEXT
+# workaround for intltool bug (http://bugzilla.gnome.org/show_bug.cgi?id=490845)
+if test "x$MSGFMT" = "xno"; then
+    AC_MSG_ERROR([msgfmt not found. Please install the gettext package.])
+fi
+
+
 # Here we tell the configure script which files to *create*
 AC_CONFIG_FILES([
     Makefile       \
     katze/Makefile \
-    src/Makefile
+    src/Makefile   \
+    po/Makefile.in
 ])
 AC_OUTPUT
 
@@ -96,7 +112,6 @@ echo "    GTK+2        $GTK_VER"
 echo "    WebKit       $WEBKIT_VER"
 echo "    Libsexy      $LIBSEXY_VER"
 echo "    libXML2      $LIBXML_VER"
-echo "    GetText      N/A"
 echo
 echo "    Debugging    $enable_debug"
 echo
index fd22b389bba5dd8b4244d33f350749180e399293..ba058a4f85f1a165ec489c3ca12afefd9e097032 100644 (file)
@@ -6,7 +6,8 @@ noinst_LTLIBRARIES = \
     libkatze.la
 
 libkatze_la_LIBADD = \
-    $(GTK_LIBS)    \
+    $(GTK_LIBS)      \
+    $(INTLLIBS)      \
     $(LIBXML_LIBS)
 
 libkatze_la_SOURCES = \
index 0565f345fe94ecfd93726735a84fd1b4de34401d..069e6603ff56a63c7a5d43ae124a41aa3bf5d68e 100644 (file)
@@ -12,6 +12,7 @@
 #include "katze-throbber.h"
 
 #include <gtk/gtk.h>
+#include <glib/gi18n.h>
 
 G_DEFINE_TYPE (KatzeThrobber, katze_throbber, GTK_TYPE_MISC)
 
@@ -131,7 +132,7 @@ katze_throbber_class_init (KatzeThrobberClass* class)
                                      g_param_spec_int (
                                      "icon-size",
                                      "Icon size",
-                                     "Symbolic size to use for the animation",
+                                     _("Symbolic size to use for the animation"),
                                      0, G_MAXINT, GTK_ICON_SIZE_MENU,
                                      flags));
 
@@ -140,7 +141,7 @@ katze_throbber_class_init (KatzeThrobberClass* class)
                                      g_param_spec_string (
                                      "icon-name",
                                      "Icon Name",
-                                     "The name of an icon containing animation frames",
+                                     _("The name of an icon containing animation frames"),
                                      "process-working",
                                      flags));
 
@@ -149,7 +150,7 @@ katze_throbber_class_init (KatzeThrobberClass* class)
                                      g_param_spec_object (
                                      "pixbuf",
                                      "Pixbuf",
-                                     "A GdkPixbuf containing animation frames",
+                                     _("A GdkPixbuf containing animation frames"),
                                      GDK_TYPE_PIXBUF,
                                      flags));
 
@@ -158,7 +159,7 @@ katze_throbber_class_init (KatzeThrobberClass* class)
                                      g_param_spec_boolean (
                                      "animated",
                                      "Animated",
-                                     "Whether the throbber should be animated",
+                                     _("Whether the throbber should be animated"),
                                      FALSE,
                                      flags));
 
@@ -167,7 +168,7 @@ katze_throbber_class_init (KatzeThrobberClass* class)
                                      g_param_spec_string (
                                      "static-icon-name",
                                      "Static Icon Name",
-                                     "The name of an icon to be used as the static image",
+                                     _("The name of an icon to be used as the static image"),
                                      NULL,
                                      flags));
 
@@ -176,7 +177,7 @@ katze_throbber_class_init (KatzeThrobberClass* class)
                                      g_param_spec_object (
                                      "static-pixbuf",
                                      "Static Pixbuf",
-                                     "A GdkPixbuf to be used as the static image",
+                                     _("A GdkPixbuf to be used as the static image"),
                                      GDK_TYPE_PIXBUF,
                                      flags));
 
@@ -185,7 +186,7 @@ katze_throbber_class_init (KatzeThrobberClass* class)
                                      g_param_spec_string (
                                      "static-stock-id",
                                      "Static Stock ID",
-                                     "The stock ID of an icon to be used as the static image",
+                                     _("The stock ID of an icon to be used as the static image"),
                                      NULL,
                                      flags));
 
index d1ea42957e592539aead83d7e245f2d370b09bf7..f797de103effd5e98293c36e714071267f960c57 100644 (file)
@@ -24,6 +24,7 @@
 #include <string.h>
 #include <libxml/parser.h>
 #include <libxml/tree.h>
+#include <glib/gi18n.h>
 
 #include "katze-utils.h"
 
@@ -719,7 +720,7 @@ katze_xbel_folder_from_data (KatzeXbelItem* folder,
     {
         // No valid xml or broken encoding
         *error = g_error_new (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ,
-                              "Malformed document.");
+                              _("Malformed document."));
         return FALSE;
     }
     if (!katze_xbel_folder_from_xmlDocPtr (folder, doc))
@@ -727,7 +728,7 @@ katze_xbel_folder_from_data (KatzeXbelItem* folder,
         // Parsing failed
         xmlFreeDoc(doc);
         *error = g_error_new (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ,
-                              "Malformed document.");
+                              _("Malformed document."));
         return FALSE;
     }
     xmlFreeDoc(doc);
@@ -755,7 +756,7 @@ katze_xbel_folder_from_file (KatzeXbelItem* folder,
     {
         // File doesn't exist
         *error = g_error_new (G_FILE_ERROR, G_FILE_ERROR_NOENT,
-                              "File not found.");
+                              _("File not found."));
         return FALSE;
     }
     xmlDocPtr doc;
@@ -763,7 +764,7 @@ katze_xbel_folder_from_file (KatzeXbelItem* folder,
     {
         // No valid xml or broken encoding
         *error = g_error_new (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ,
-                              "Malformed document.");
+                              _("Malformed document."));
         return FALSE;
     }
     if (!katze_xbel_folder_from_xmlDocPtr (folder, doc))
@@ -771,7 +772,7 @@ katze_xbel_folder_from_file (KatzeXbelItem* folder,
         // Parsing failed
         xmlFreeDoc (doc);
         *error = g_error_new (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ,
-                             "Malformed document.");
+                             _("Malformed document."));
         return FALSE;
     }
     xmlFreeDoc (doc);
@@ -800,7 +801,7 @@ katze_xbel_folder_from_data_dirs (KatzeXbelItem* folder,
     // FIXME: Essentially unimplemented
 
     *error = g_error_new (KATZE_XBEL_ERROR, KATZE_XBEL_ERROR_READ,
-                          "Malformed document.");
+                          _("Malformed document."));
     return FALSE;
 }
 
@@ -948,7 +949,7 @@ katze_xbel_folder_to_file (KatzeXbelItem* folder,
     if(!(fp = fopen (file, "w")))
     {
         *error = g_error_new (G_FILE_ERROR, G_FILE_ERROR_ACCES,
-                              "Writing failed.");
+                              _("Writing failed."));
         return FALSE;
     }
     fputs (data, fp);
diff --git a/midori.desktop b/midori.desktop
deleted file mode 100644 (file)
index e8e6448..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-
-[Desktop Entry]
-Version=1.0
-Encoding=UTF-8
-Type=Application
-Name=Midori Web Browser
-GenericName=Web Browser
-Comment=Lightweight web browser
-Categories=GTK;Network;
-MimeType=text/html;text/xml;application/xhtml+xml;application/xml;
-Exec=midori %u
-Icon=web-browser
-Terminal=false
-StartupNotify=true
diff --git a/midori.desktop.in b/midori.desktop.in
new file mode 100644 (file)
index 0000000..a4bf004
--- /dev/null
@@ -0,0 +1,14 @@
+
+[Desktop Entry]
+Version=1.0
+Encoding=UTF-8
+Type=Application
+_Name=Midori Web Browser
+_GenericName=Web Browser
+_Comment=Lightweight web browser
+Categories=GTK;Network;
+MimeType=text/html;text/xml;application/xhtml+xml;application/xml;
+Exec=midori %u
+Icon=web-browser
+Terminal=false
+StartupNotify=true
diff --git a/po/LINGUAS b/po/LINGUAS
new file mode 100644 (file)
index 0000000..378dbde
--- /dev/null
@@ -0,0 +1,2 @@
+# set of available languages (in alphabetic order)
+de
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
new file mode 100644 (file)
index 0000000..6891e8f
--- /dev/null
@@ -0,0 +1,218 @@
+# Makefile for program source directory in GNU NLS utilities package.
+# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+# Copyright (C) 2004-2008 Rodney Dawes <dobey.pwns@gmail.com>
+#
+# This file may be copied and used freely without restrictions.  It may
+# be used in projects which are not available under a GNU Public License,
+# but which still want to provide support for the GNU gettext functionality.
+#
+# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
+#   instead of PACKAGE and to look for po2tbl in ./ not in intl/
+#
+# - Modified by jacob berkman <jacob@ximian.com> to install
+#   Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
+#
+# - Modified by Rodney Dawes <dobey.pwns@gmail.com> for use with intltool
+#
+# We have the following line for use by intltoolize:
+# INTLTOOL_MAKEFILE
+
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+PACKAGE = @PACKAGE@
+VERSION = @VERSION@
+
+SHELL = /bin/sh
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+top_builddir = @top_builddir@
+VPATH = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+datadir = @datadir@
+datarootdir = @datarootdir@
+libdir = @libdir@
+DATADIRNAME = @DATADIRNAME@
+itlocaledir = $(prefix)/$(DATADIRNAME)/locale
+subdir = po
+install_sh = @install_sh@
+# Automake >= 1.8 provides @mkdir_p@.
+# Until it can be supposed, use the safe fallback:
+mkdir_p = $(install_sh) -d
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+
+GMSGFMT = @GMSGFMT@
+MSGFMT = @MSGFMT@
+XGETTEXT = @XGETTEXT@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
+GENPOT   = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
+
+ALL_LINGUAS = @ALL_LINGUAS@
+
+PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; fi)
+
+USER_LINGUAS=$(shell if test -n "$(LINGUAS)"; then LLINGUAS="$(LINGUAS)"; ALINGUAS="$(ALL_LINGUAS)"; for lang in $$LLINGUAS; do if test -n "`grep ^$$lang$$ $(srcdir)/LINGUAS`" -o -n "`echo $$ALINGUAS|grep ' ?$$lang ?'`"; then printf "$$lang "; fi; done; fi)
+
+USE_LINGUAS=$(shell if test -n "$(USER_LINGUAS)"; then LLINGUAS="$(USER_LINGUAS)"; else if test -n "$(PO_LINGUAS)"; then LLINGUAS="$(PO_LINGUAS)"; else LLINGUAS="$(ALL_LINGUAS)"; fi; fi; for lang in $$LLINGUAS; do printf "$$lang "; done)
+
+POFILES=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.po "; done)
+
+DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(POFILES)
+EXTRA_DISTFILES = POTFILES.skip Makevars LINGUAS
+
+POTFILES = \
+# This comment gets stripped out
+
+CATALOGS=$(shell LINGUAS="$(USE_LINGUAS)"; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
+
+.SUFFIXES:
+.SUFFIXES: .po .pox .gmo .mo .msg .cat
+
+.po.pox:
+       $(MAKE) $(GETTEXT_PACKAGE).pot
+       $(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox
+
+.po.mo:
+       $(MSGFMT) -o $@ $<
+
+.po.gmo:
+       file=`echo $* | sed 's,.*/,,'`.gmo \
+         && rm -f $$file && $(GMSGFMT) -o $$file $<
+
+.po.cat:
+       sed -f ../intl/po2msg.sed < $< > $*.msg \
+         && rm -f $@ && gencat $@ $*.msg
+
+
+all: all-@USE_NLS@
+
+all-yes: $(CATALOGS)
+all-no:
+
+$(GETTEXT_PACKAGE).pot: $(POTFILES)
+       $(GENPOT)
+
+install: install-data
+install-data: install-data-@USE_NLS@
+install-data-no: all
+install-data-yes: all
+       $(mkdir_p) $(DESTDIR)$(itlocaledir)
+       linguas="$(USE_LINGUAS)"; \
+       for lang in $$linguas; do \
+         dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
+         $(mkdir_p) $$dir; \
+         if test -r $$lang.gmo; then \
+           $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+           echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \
+         else \
+           $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+           echo "installing $(srcdir)/$$lang.gmo as" \
+                "$$dir/$(GETTEXT_PACKAGE).mo"; \
+         fi; \
+         if test -r $$lang.gmo.m; then \
+           $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \
+           echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \
+         else \
+           if test -r $(srcdir)/$$lang.gmo.m ; then \
+             $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \
+               $$dir/$(GETTEXT_PACKAGE).mo.m; \
+             echo "installing $(srcdir)/$$lang.gmo.m as" \
+                  "$$dir/$(GETTEXT_PACKAGE).mo.m"; \
+           else \
+             true; \
+           fi; \
+         fi; \
+       done
+
+# Empty stubs to satisfy archaic automake needs
+dvi info tags TAGS ID:
+
+# Define this as empty until I found a useful application.
+install-exec installcheck:
+
+uninstall:
+       linguas="$(USE_LINGUAS)"; \
+       for lang in $$linguas; do \
+         rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
+         rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
+       done
+
+check: all $(GETTEXT_PACKAGE).pot
+       rm -f missing notexist
+       srcdir=$(srcdir) $(INTLTOOL_UPDATE) -m
+       if [ -r missing -o -r notexist ]; then \
+         exit 1; \
+       fi
+
+mostlyclean:
+       rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
+       rm -f .intltool-merge-cache
+
+clean: mostlyclean
+
+distclean: clean
+       rm -f Makefile Makefile.in POTFILES stamp-it
+       rm -f *.mo *.msg *.cat *.cat.m *.gmo
+
+maintainer-clean: distclean
+       @echo "This command is intended for maintainers to use;"
+       @echo "it deletes files that may require special tools to rebuild."
+       rm -f Makefile.in.in
+
+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
+dist distdir: $(DISTFILES)
+       dists="$(DISTFILES)"; \
+       extra_dists="$(EXTRA_DISTFILES)"; \
+       for file in $$extra_dists; do \
+         test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \
+       done; \
+       for file in $$dists; do \
+         test -f $$file || file="$(srcdir)/$$file"; \
+         ln $$file $(distdir) 2> /dev/null \
+           || cp -p $$file $(distdir); \
+       done
+
+update-po: Makefile
+       $(MAKE) $(GETTEXT_PACKAGE).pot
+       tmpdir=`pwd`; \
+       linguas="$(USE_LINGUAS)"; \
+       for lang in $$linguas; do \
+         echo "$$lang:"; \
+         result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
+         if $$result; then \
+           if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+             rm -f $$tmpdir/$$lang.new.po; \
+            else \
+             if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+               :; \
+             else \
+               echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+               rm -f $$tmpdir/$$lang.new.po; \
+               exit 1; \
+             fi; \
+           fi; \
+         else \
+           echo "msgmerge for $$lang.gmo failed!"; \
+           rm -f $$tmpdir/$$lang.new.po; \
+         fi; \
+       done
+
+Makefile POTFILES: stamp-it
+       @if test ! -f $@; then \
+         rm -f stamp-it; \
+         $(MAKE) stamp-it; \
+       fi
+
+stamp-it: Makefile.in.in $(top_builddir)/config.status POTFILES.in
+       cd $(top_builddir) \
+         && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \
+              $(SHELL) ./config.status
+
+# Tell versions [3.59,3.63) of GNU make not to export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644 (file)
index 0000000..c6203f0
--- /dev/null
@@ -0,0 +1,18 @@
+# List of source files containing translatable strings.
+
+midori.desktop.in
+src/conf.c
+src/helpers.c
+src/main.c
+src/midori-browser.c
+src/midori-panel.c
+src/midori-trash.c
+src/midori-websettings.c
+src/midori-webview.c
+src/prefs.c
+src/search.c
+src/sokoke.c
+src/webSearch.c
+katze/katze-throbber.c
+katze/katze-utils.c
+katze/katze-xbel.c
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
new file mode 100644 (file)
index 0000000..810789e
--- /dev/null
@@ -0,0 +1 @@
+# List of source files containing translatable strings but should be ignored.
diff --git a/po/de.po b/po/de.po
new file mode 100644 (file)
index 0000000..92ed118
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,956 @@
+# German translations for midori package.
+# Copyright (C) 2008 THE midori'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the midori package.
+# Enrico Tröger <enrico.troeger@uvena.de> 2008
+# Christian Dywan <christian@twotoasts.de> 2008
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: midori 0.0.17\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-03-22 03:05+0100\n"
+"PO-Revision-Date: 2008-03-20 13:21+0100\n"
+"Last-Translator: Christian Dywan <christian@twotoasts.de>\n"
+"Language-Team: German <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: ../midori.desktop.in.h:1
+msgid "Lightweight web browser"
+msgstr "Kleiner Navigator"
+
+#: ../midori.desktop.in.h:2
+msgid "Midori Web Browser"
+msgstr "Midori Navigator"
+
+#: ../midori.desktop.in.h:3
+msgid "Web Browser"
+msgstr "Navigator"
+
+#. FIXME: Should we have a more specific message?
+#: ../src/helpers.c:68 ../src/helpers.c:84
+msgid "Could not run external program."
+msgstr "Externes Programm konnte nicht gestartet werden"
+
+#: ../src/main.c:49
+msgid "Bookmark"
+msgstr "Lesezeichen"
+
+#: ../src/main.c:50
+msgid "New Bookmark"
+msgstr "Neues Lesezeichen"
+
+#: ../src/main.c:51
+msgid "_Form Fill"
+msgstr "_Formulare ausfĂ¼llen"
+
+#: ../src/main.c:52 ../src/prefs.c:369 ../src/prefs.c:374
+msgid "Homepage"
+msgstr "Startseite"
+
+#: ../src/main.c:53
+msgid "New _Tab"
+msgstr "Neuer _Reiter"
+
+#: ../src/main.c:54
+msgid "New _Window"
+msgstr "Neues _Fenster"
+
+#: ../src/main.c:59
+msgid "_Fullscreen"
+msgstr "_Vollbild"
+
+#: ../src/main.c:60
+msgid "_Leave Fullscreen"
+msgstr "Vollbild _verlassen"
+
+#: ../src/main.c:139 ../src/main.c:171
+msgid "midori"
+msgstr "midori"
+
+#: ../src/main.c:146
+msgid "Display program version"
+msgstr "Programmversion anzeigen"
+
+#: ../src/main.c:150
+msgid "[URL]"
+msgstr "[URL]"
+
+#: ../src/main.c:173
+msgid "Debugging"
+msgstr "Fehlerbehebung"
+
+#: ../src/main.c:174
+msgid "Please report comments, suggestions and bugs to:"
+msgstr "Kommentare, Vorschläge und Fehlerberichte senden an:"
+
+#: ../src/main.c:176
+msgid "Check for new versions at:"
+msgstr "Informieren Sie sich Ă¼ber neue Versionen unter:"
+
+#: ../src/main.c:193
+#, c-format
+msgid "The configuration couldn't be loaded. %s\n"
+msgstr "Die Konfiguration konnte nicht geladen werden. %s\n"
+
+#: ../src/main.c:219
+#, c-format
+msgid "The bookmarks couldn't be loaded. %s\n"
+msgstr "Die Lesezeichen konnten nicht geladen werden. %s\n"
+
+#: ../src/main.c:232
+#, c-format
+msgid "The session couldn't be loaded. %s\n"
+msgstr "Die Sitzung konnte nicht geladen werden. %s\n"
+
+#: ../src/main.c:244
+#, c-format
+msgid "The trash couldn't be loaded. %s\n"
+msgstr "Der Papierkorb konnte nicht geladen werden. %s\n"
+
+#: ../src/main.c:254
+msgid "The following errors occured:"
+msgstr "Folgende Fehler sind aufgetreten:"
+
+#: ../src/main.c:56
+msgid "Select _All"
+msgstr "A_lles markieren"
+
+#: ../src/midori-browser.c:185 ../src/midori-browser.c:1918
+#: ../src/midori-browser.c:1924
+msgid "Reload the current page"
+msgstr "Diese Seite neu laden"
+
+#: ../src/midori-browser.c:193 ../src/midori-browser.c:1921
+msgid "Stop loading the current page"
+msgstr "Laden dieser Seite abbrechen"
+
+#: ../src/midori-browser.c:258
+#, c-format
+msgid "%d%% loaded"
+msgstr "%d%% geladen"
+
+#: ../src/midori-browser.c:521 ../src/midori-webview.c:253
+msgid "The associated settings"
+msgstr "Die zugewiesenen Einstellungen"
+
+#: ../src/midori-browser.c:541 ../src/midori-webview.c:244
+msgid "The text that is displayed in the statusbar"
+msgstr "Der Text, der in der Statusleiste angezeigt wird"
+
+#: ../src/midori-browser.c:560
+msgid "The trash, collecting recently closed tabs and windows"
+msgstr "Der Papierkorb, Behältnis fĂ¼r kĂ¼rzlich geschlossene Reiter und Fenster"
+
+#: ../src/midori-browser.c:1051
+msgid "Open location"
+msgstr "Adresse Ă¶ffnen"
+
+#: ../src/midori-browser.c:1063 ../src/midori-browser.c:1109
+msgid "_Location:"
+msgstr "_Ort:"
+
+#. TODO: We should offer all of the search's features here
+#: ../src/midori-browser.c:1097
+msgid "Web search"
+msgstr "Netzsuche"
+
+#: ../src/midori-browser.c:1136
+msgid "New bookmark"
+msgstr "Neues Lesezeichen"
+
+#: ../src/midori-browser.c:1136
+msgid "Edit bookmark"
+msgstr "Lesezeichen bearbeiten"
+
+#: ../src/midori-browser.c:1153
+msgid "_Title:"
+msgstr "_Titel:"
+
+#: ../src/midori-browser.c:1169 ../src/webSearch.c:199
+msgid "_Description:"
+msgstr "_Beschreibung"
+
+#: ../src/midori-browser.c:1188 ../src/webSearch.c:213
+msgid "_URL:"
+msgstr "_URL:"
+
+#: ../src/midori-browser.c:1206
+msgid "_Folder:"
+msgstr "_Ordner:"
+
+#: ../src/midori-browser.c:1210
+msgid "Root"
+msgstr "Wurzel"
+
+#: ../src/midori-browser.c:1429
+msgid "<i>Separator</i>"
+msgstr "<i>Trennlinie</i>"
+
+#: ../src/midori-browser.c:1615
+msgid "A lightweight web browser."
+msgstr "Ein kleiner Navigator."
+
+#: ../src/midori-browser.c:1623
+msgid "translator-credits"
+msgstr ""
+"Enrico Tröger <enrico.troeger@uvena.de>\n"
+"Christian Dywan <christian@twotoasts.de>"
+
+#: ../src/midori-browser.c:1838
+msgid "_File"
+msgstr "_Datei"
+
+#: ../src/midori-browser.c:1841
+msgid "Open a new window"
+msgstr "Ein neues Fenster Ă¶ffnen"
+
+#: ../src/midori-browser.c:1844
+msgid "Open a new tab"
+msgstr "Einen neuen Reiter Ă¶ffnen"
+
+#: ../src/midori-browser.c:1847
+msgid "Open a file"
+msgstr "Eine Datei Ă¶ffnen"
+
+#: ../src/midori-browser.c:1850
+msgid "Save to a file"
+msgstr "In Datei speichern"
+
+#: ../src/midori-browser.c:1852
+msgid "_Close Tab"
+msgstr "Reiter sch_lieĂŸen"
+
+#: ../src/midori-browser.c:1853
+msgid "Close the current tab"
+msgstr "Den aktuellen Reiter schlieĂŸen"
+
+#: ../src/midori-browser.c:1855
+msgid "C_lose Window"
+msgstr "_Fenster schlieĂŸen"
+
+#: ../src/midori-browser.c:1856
+msgid "Close this window"
+msgstr "Dieses Fenster schlieĂŸen"
+
+#: ../src/midori-browser.c:1858
+msgid "Pa_ge Setup"
+msgstr "Seite _einrichten"
+
+#: ../src/midori-browser.c:1868
+msgid "Quit the application"
+msgstr "Programm beenden"
+
+#: ../src/midori-browser.c:1870
+msgid "_Edit"
+msgstr "_Bearbeiten"
+
+#: ../src/midori-browser.c:1873
+msgid "Undo the last modification"
+msgstr "Die letzte Ă„nderung wiederrufen"
+
+#: ../src/midori-browser.c:1876
+msgid "Redo the last modification"
+msgstr "Die letzte Ă„nderung wiederholen"
+
+#: ../src/midori-browser.c:1882 ../src/midori-browser.c:1885
+msgid "Copy the selected text"
+msgstr "MArkierten Text kopieren"
+
+#: ../src/midori-browser.c:1888
+msgid "Paste text from the clipboard"
+msgstr "Text aus der Zwischenablage einfĂ¼gen"
+
+#: ../src/midori-browser.c:1891
+msgid "Delete the selected text"
+msgstr "Marlkierten Text löschen"
+
+#: ../src/midori-browser.c:1894
+msgid "Select all text"
+msgstr "Gesamten Text auswählen"
+
+#: ../src/midori-browser.c:1902
+msgid "Find _Next"
+msgstr "_Nächstes"
+
+#: ../src/midori-browser.c:1905
+msgid "Find _Previous"
+msgstr "_Vorheriges"
+
+#: ../src/midori-browser.c:1908
+msgid "_Quick Find"
+msgstr "_Schnellsuche"
+
+#: ../src/midori-browser.c:1914
+msgid "_View"
+msgstr "_Ansicht"
+
+#: ../src/midori-browser.c:1915
+msgid "_Toolbars"
+msgstr "_Werkzeugleisten"
+
+#: ../src/midori-browser.c:1935
+msgid "View Source"
+msgstr "Quelltext anzeigen"
+
+#: ../src/midori-browser.c:1938
+msgid "View Selection Source"
+msgstr "Quelltext der Markierung anzeigen"
+
+#: ../src/midori-browser.c:1942
+msgid "Toggle fullscreen view"
+msgstr "Vollbildmodus ein-/ ausschalten"
+
+#: ../src/midori-browser.c:1944
+msgid "_Go"
+msgstr "_Gehe zu"
+
+#: ../src/midori-browser.c:1955
+msgid "Location..."
+msgstr "Ort..."
+
+#: ../src/midori-browser.c:1958
+msgid "Web Search..."
+msgstr "Netzsuche..."
+
+#: ../src/midori-browser.c:1961
+msgid "Open in Page_holder..."
+msgstr "In Seiten_halter Ă¶ffnen..."
+
+#: ../src/midori-browser.c:1964
+msgid "Closed Tabs and Windows"
+msgstr "Geschlossene Reiter und Fenster"
+
+#: ../src/midori-browser.c:1965
+msgid "Reopen a previously closed tab or window"
+msgstr "Reiter oder Fenster zurĂ¼ckholen"
+
+#: ../src/midori-browser.c:1967
+msgid "Empty Trash"
+msgstr "Papierkorb leeren"
+
+#: ../src/midori-browser.c:1970
+msgid "Undo Close Tab"
+msgstr "Reiter zurĂ¼ckholen"
+
+#: ../src/midori-browser.c:1973
+msgid "_Bookmarks"
+msgstr "_Lesezeichen"
+
+#: ../src/midori-browser.c:1978
+msgid "_Manage Bookmarks"
+msgstr "Lesezeichen _verwalten"
+
+#: ../src/midori-browser.c:1984
+msgid "Open in New _Tab"
+msgstr "In einem neuen _Reiter Ă¶ffnen"
+
+#: ../src/midori-browser.c:1987
+msgid "Open in New _Window"
+msgstr "In einem neuen _Fenster Ă¶ffnen"
+
+#: ../src/midori-browser.c:1996
+msgid "_Tools"
+msgstr "_Extras"
+
+#: ../src/midori-browser.c:1998
+msgid "_Manage Search Engines"
+msgstr "Suchmaschinen verwalten"
+
+#: ../src/midori-browser.c:1999
+msgid "Add, edit and remove search engines..."
+msgstr "Suchmaschinen hinzufĂ¼gen, bearbeiten und löschen..."
+
+#: ../src/midori-browser.c:2002
+msgid "_Window"
+msgstr "_Fenster"
+
+#: ../src/midori-browser.c:2004
+msgid "_Previous Tab"
+msgstr "_Vorheriger Reiter"
+
+#: ../src/midori-browser.c:2007
+msgid "_Next Tab"
+msgstr "_Nächster Reiter"
+
+#: ../src/midori-browser.c:2010
+msgid "Tab _Overview"
+msgstr "ReiterĂ¼ber_sicht"
+
+#. G_CALLBACK (_action_tab_overview_activate)
+#: ../src/midori-browser.c:2013
+msgid "_Help"
+msgstr "_Hilfe"
+
+#: ../src/midori-browser.c:2015
+msgid "_Contents"
+msgstr "_Inhalt"
+
+#: ../src/midori-browser.c:2025
+msgid "P_rivate Browsing"
+msgstr "_Privat navigieren"
+
+#: ../src/midori-browser.c:2029
+msgid "_Work Offline"
+msgstr "_Ohne Verbindung arbeiten"
+
+#: ../src/midori-browser.c:2034
+msgid "_Navigationbar"
+msgstr "Navigationsleiste"
+
+#: ../src/midori-browser.c:2038
+msgid "Side_panel"
+msgstr "Seitenleiste"
+
+#: ../src/midori-browser.c:2042
+msgid "_Bookmarkbar"
+msgstr "_Lesezeichenleiste"
+
+#: ../src/midori-browser.c:2046
+msgid "_Transferbar"
+msgstr "_Ăœbertragungsleiste"
+
+#: ../src/midori-browser.c:2050
+msgid "_Statusbar"
+msgstr "_Statusleiste"
+
+#: ../src/midori-browser.c:2520
+msgid "Bookmarks"
+msgstr "Lesezeichen"
+
+#. TODO: We need something like "use current website"
+#: ../src/midori-browser.c:2530 ../src/prefs.c:381
+msgid "Transfers"
+msgstr "Ăœbertragungen"
+
+#: ../src/midori-browser.c:2539
+msgid "Console"
+msgstr "Konsole"
+
+#: ../src/midori-browser.c:2548 ../src/prefs.c:669
+msgid "History"
+msgstr "Verlauf"
+
+#: ../src/midori-browser.c:2557
+msgid "Pageholder"
+msgstr "Seitenhalter"
+
+#: ../src/midori-browser.c:2579
+msgid "_Inline find:"
+msgstr "Inkrementelle suche:"
+
+#: ../src/midori-browser.c:2605
+msgid "Match Case"
+msgstr "GroĂŸ-/ Kleinschreibung beachten"
+
+#: ../src/midori-browser.c:2622
+msgid "Close Findbar"
+msgstr "Suchleiste schlieĂŸen"
+
+#: ../src/midori-panel.c:140
+msgid "Appearance of the shadow around each panel"
+msgstr "Erscheinungsbild des Schattens um jede Leiste"
+
+#: ../src/midori-panel.c:150
+msgid "Menu to hold panel items"
+msgstr "MenĂ¼ fĂ¼r Leistenelemente"
+
+#: ../src/midori-panel.c:159
+msgid "The index of the current page"
+msgstr "Der Index der aktiven Seite"
+
+#: ../src/midori-panel.c:203 ../src/midori-panel.c:204
+msgid "Close panel"
+msgstr "Leiste schlieĂŸen"
+
+#: ../src/midori-panel.c:368
+msgid "Untitled"
+msgstr "Unbenannt"
+
+#: ../src/midori-trash.c:97
+msgid "The maximum number of items"
+msgstr "Die maximale Anzahl an Elementen"
+
+#: ../src/midori-websettings.c:69
+msgid "The desired tab label size"
+msgstr "Die gewĂ¼nschte GrĂ¶ĂŸe der Reiterbeschriftung"
+
+#: ../src/midori-websettings.c:78
+msgid "Whether tabs have close buttons"
+msgstr "Ob Reiter SchlieĂŸenknöpfe haben"
+
+#: ../src/midori-websettings.c:87
+msgid "Load an URL from the selection via middle click"
+msgstr "Lade eine ausgewählte URL mit der mittleren Maustaste"
+
+#: ../src/midori-webview.c:217
+msgid "The icon of the currently loaded page"
+msgstr "Das Symbol der aktuellen Seite"
+
+#: ../src/midori-webview.c:226
+msgid "The URI of the currently loaded page"
+msgstr "Die URI der aktuellen Seite"
+
+#: ../src/midori-webview.c:235
+msgid "The title of the currently loaded page"
+msgstr "Der Titel der aktuellen Seite"
+
+#: ../src/midori-webview.c:472
+msgid "Open Link in New _Tab"
+msgstr "Verweis in einem neuen _Reiter Ă¶ffnen"
+
+#: ../src/midori-webview.c:495
+msgid "Open URL in New _Tab"
+msgstr "_URL in einem neuen Reiter Ă¶ffnen"
+
+#: ../src/prefs.c:299
+#, c-format
+msgid "%s Preferences"
+msgstr "%s Einstellungen"
+
+#. Page "General"
+#: ../src/prefs.c:363
+msgid "General"
+msgstr "Allgemein"
+
+#: ../src/prefs.c:364
+msgid "Startup"
+msgstr "Programmstart"
+
+#: ../src/prefs.c:366
+msgid "Load on startup"
+msgstr "Beim Programmstart Ă¶ffnen"
+
+#: ../src/prefs.c:369
+msgid "Blank page"
+msgstr "Leere Seite"
+
+#: ../src/prefs.c:369
+msgid "Last open pages"
+msgstr "Zuletzt geöffnete Seiten"
+
+#: ../src/prefs.c:383
+msgid "Download folder"
+msgstr "Dateispeicherordner"
+
+#: ../src/prefs.c:385
+msgid "Choose downloaded files folder"
+msgstr "Ordner fĂ¼r heruntergeladene Dateien auswählen"
+
+#: ../src/prefs.c:392
+msgid "Show a notification window for finished transfers"
+msgstr "Zeige ein Hinweisfenster fĂ¼r abgeschlossene Ăœbertragungen"
+
+#: ../src/prefs.c:395
+msgid "Languages"
+msgstr "Sprachen"
+
+#: ../src/prefs.c:397
+msgid "Preferred languages"
+msgstr "Bevorzugte Sprachen"
+
+#. Page "Appearance"
+#: ../src/prefs.c:409
+msgid "Appearance"
+msgstr "Anzeige"
+
+#: ../src/prefs.c:410
+msgid "Font settings"
+msgstr "Schrifteinstellungen"
+
+#: ../src/prefs.c:412
+msgid "Default _font"
+msgstr "Standard_schrift"
+
+#: ../src/prefs.c:419
+msgid "_Minimum font size"
+msgstr "_Minimale SchriftgrĂ¶ĂŸe"
+
+#: ../src/prefs.c:426
+msgid "_Advanced"
+msgstr "_Erweitert"
+
+#: ../src/prefs.c:430
+msgid "Default _encoding"
+msgstr "Standard_kodierung"
+
+#: ../src/prefs.c:433
+msgid "Chinese (BIG5)"
+msgstr "Traditionelles Chinesisch (Big5)"
+
+#: ../src/prefs.c:433
+msgid "Japanese (SHIFT_JIS)"
+msgstr "Japanisch (Shift_JIS)"
+
+#: ../src/prefs.c:433
+msgid "Russian (KOI8-R)"
+msgstr "Russisch (KOI8-R)"
+
+#: ../src/prefs.c:434
+msgid "Unicode (UTF-8)"
+msgstr "Unicode (UTF-8)"
+
+#: ../src/prefs.c:434
+msgid "Western (ISO-8859-1)"
+msgstr "Westlich (ISO-8859-1)"
+
+#: ../src/prefs.c:449
+msgid "Advanced settings"
+msgstr "Erweiterte Einstellungen"
+
+#: ../src/prefs.c:452
+msgid "Default colors"
+msgstr "Standardfarben"
+
+#: ../src/prefs.c:454
+msgid "Text color"
+msgstr "Textfarbe"
+
+#: ../src/prefs.c:458
+msgid "Background color"
+msgstr "Hintergrundfarbe"
+
+#: ../src/prefs.c:462
+msgid "Link color"
+msgstr "Verweisfarbe"
+
+#: ../src/prefs.c:466
+msgid "Visited link color"
+msgstr "Besuchte Verweisfarbe"
+
+#. Page "Behavior"
+#: ../src/prefs.c:472
+msgid "Behavior"
+msgstr "Verhalten"
+
+#: ../src/prefs.c:473
+msgid "Browsing"
+msgstr "Navigation"
+
+#: ../src/prefs.c:475
+msgid "Open _new pages in"
+msgstr "_Neue Seiten Ă¶ffnen in"
+
+#: ../src/prefs.c:478
+msgid "New tab"
+msgstr "Neuer Reiter"
+
+#: ../src/prefs.c:478
+msgid "New window"
+msgstr "Neues Fenster"
+
+#: ../src/prefs.c:478
+msgid "Current tab"
+msgstr "Aktuelle Reiter"
+
+#: ../src/prefs.c:483
+msgid "_Middle click opens selection"
+msgstr "_Mittelklick Ă¶ffnet Markierung"
+
+#: ../src/prefs.c:488
+msgid "Open tabs in the _background"
+msgstr "Reiter im _Hintergrund Ă¶ffnen"
+
+#: ../src/prefs.c:493
+msgid "Open popups in _tabs"
+msgstr "Aufklappfenster in _Reitern Ă¶ffnen"
+
+#: ../src/prefs.c:499
+msgid "Features"
+msgstr "Inhalte"
+
+#: ../src/prefs.c:501
+msgid "Load _images"
+msgstr "_Bilder laden"
+
+#: ../src/prefs.c:506
+msgid "_Shrink images to fit"
+msgstr "Bilder automatisch ver_kleinern"
+
+#: ../src/prefs.c:511
+msgid "Print _backgrounds"
+msgstr "HintergrĂ¼nde _drucken"
+
+#: ../src/prefs.c:516
+msgid "_Resizable textareas"
+msgstr "_VergrĂ¶ĂŸerbare Textfelder"
+
+#: ../src/prefs.c:521
+msgid "Enable _scripts"
+msgstr "_Skripte aktiveren"
+
+#: ../src/prefs.c:526
+msgid "Enable _plugins"
+msgstr "_Zusatzmodule aktivieren"
+
+#: ../src/prefs.c:531
+msgid "_User Stylesheet"
+msgstr "Be_nutzerstilvorlage"
+
+#: ../src/prefs.c:537
+msgid "Choose user stylesheet"
+msgstr "Stilvorlage auswählen"
+
+#. Page "Interface"
+#: ../src/prefs.c:546
+msgid "Interface"
+msgstr "Oberfläche"
+
+#: ../src/prefs.c:547
+msgid "Navigationbar"
+msgstr "Navigationsleiste"
+
+#: ../src/prefs.c:549
+msgid "_Toolbar style"
+msgstr "Werkzeugleistenstil"
+
+#: ../src/prefs.c:552
+msgid "Default"
+msgstr "Standard"
+
+#: ../src/prefs.c:552
+msgid "Icons"
+msgstr "Symbole"
+
+#: ../src/prefs.c:552
+msgid "Text"
+msgstr "Text"
+
+#: ../src/prefs.c:552
+msgid "Both"
+msgstr "Beides"
+
+#: ../src/prefs.c:552
+msgid "Both horizontal"
+msgstr "Beides horizontal"
+
+#: ../src/prefs.c:557
+msgid "Show small _icons"
+msgstr "Zeige _kleine Symbole"
+
+#: ../src/prefs.c:562
+msgid "Show Web_search"
+msgstr "Zeige Netz_suche"
+
+#: ../src/prefs.c:567
+msgid "Show _New Tab"
+msgstr "Zeige _Neuer Reiter"
+
+#: ../src/prefs.c:572
+msgid "Show _Trash"
+msgstr "Zeige _Papierkorb"
+
+#: ../src/prefs.c:577
+msgid "Miscellaneous"
+msgstr "Verschiedenes"
+
+#: ../src/prefs.c:579
+msgid "Close _buttons on tabs"
+msgstr "SchlieĂŸen_knöpfe auf Reitern"
+
+#: ../src/prefs.c:586
+msgid "Tab Si_ze"
+msgstr "Reiter_grĂ¶ĂŸe"
+
+#: ../src/prefs.c:593
+msgid "_Location search engine"
+msgstr "Adressfeldsuchmaschine"
+
+#. Page "Network"
+#: ../src/prefs.c:601
+msgid "Network"
+msgstr "Netzwerk"
+
+#: ../src/prefs.c:602
+msgid "Proxy Server"
+msgstr "Zwischenrechner"
+
+#: ../src/prefs.c:604
+msgid "_Custom proxy server"
+msgstr "_Benutzerdefinierter Zwischenrechner"
+
+#: ../src/prefs.c:608
+msgid "_Host/ Port"
+msgstr "_Leitrechner/ Anschluss"
+
+#: ../src/prefs.c:617
+msgid "Proxy requires authentication"
+msgstr "Zwischenrechner erfordert Authentifizierung"
+
+#: ../src/prefs.c:621
+msgid "Username"
+msgstr "Benutzername"
+
+#: ../src/prefs.c:625
+msgid "Password"
+msgstr "Kennwort"
+
+#: ../src/prefs.c:629
+msgid "Cache"
+msgstr "Zwischenspeicher"
+
+#: ../src/prefs.c:631
+msgid "Cache size"
+msgstr "ZwischenspeichergrĂ¶ĂŸe"
+
+#: ../src/prefs.c:637
+msgid "MB"
+msgstr "MB"
+
+#: ../src/prefs.c:638
+msgid "Clear cache"
+msgstr "Leere Zwischenspeicher"
+
+#. Page "Privacy"
+#: ../src/prefs.c:644
+msgid "Privacy"
+msgstr "Privatsphäre"
+
+#: ../src/prefs.c:645
+msgid "Cookies"
+msgstr "Kekse"
+
+#: ../src/prefs.c:647
+msgid "Accept cookies"
+msgstr "Kekse annehmen"
+
+#: ../src/prefs.c:650
+msgid "All cookies"
+msgstr "Alle Kekse"
+
+#: ../src/prefs.c:650
+msgid "Session cookies"
+msgstr "Sitzungskekse"
+
+#: ../src/prefs.c:650
+msgid "None"
+msgstr "Keine"
+
+#: ../src/prefs.c:655
+msgid "Allow cookies from the original website only"
+msgstr "Nur Kekse von der ursprĂ¼nglichen Internetseite annehmen"
+
+#: ../src/prefs.c:658
+msgid "Maximum cookie age"
+msgstr "Maximales Keksalter"
+
+#: ../src/prefs.c:664 ../src/prefs.c:679
+msgid "days"
+msgstr "Tage"
+
+#: ../src/prefs.c:665
+msgid "View cookies"
+msgstr "Kekse anzeigen"
+
+#: ../src/prefs.c:671
+msgid "Remember my visited pages"
+msgstr "Besuchte Seiten merken"
+
+#: ../src/prefs.c:682
+msgid "Remember my form inputs"
+msgstr "Eingegebene Formulare merken"
+
+#: ../src/prefs.c:686
+msgid "Remember my downloaded files"
+msgstr "Heruntergeladene Dateien merken"
+
+#. Page "Programs"
+#: ../src/prefs.c:691
+msgid "Programs"
+msgstr "Programme"
+
+#: ../src/prefs.c:692
+msgid "External programs"
+msgstr "Externe Programme"
+
+#: ../src/prefs.c:703
+msgid "Protocol"
+msgstr "Protokoll"
+
+#: ../src/prefs.c:706
+msgid "Command"
+msgstr "Befehl"
+
+#: ../src/sokoke.c:157
+msgid "Warning: You are using a superuser account!"
+msgstr "Warnung: Sie benutzen ein Administratorkonto!"
+
+#: ../src/sokoke.c:267 ../katze/katze-xbel.c:952
+#, c-format
+msgid "Writing failed."
+msgstr "Schreiben fehlgeschlagen."
+
+#: ../src/webSearch.c:82
+msgid "Empty"
+msgstr "Leer"
+
+#: ../src/webSearch.c:153
+msgid "Add search engine"
+msgstr "Suchmaschine hinzufĂ¼gen"
+
+#: ../src/webSearch.c:153
+msgid "Edit search engine"
+msgstr "Suchmaschine bearbeiten"
+
+#: ../src/webSearch.c:183
+msgid "_Name:"
+msgstr "_Name:"
+
+#: ../src/webSearch.c:227
+msgid "_Icon (name or file):"
+msgstr "_Symbol (Name oder Datei):"
+
+#: ../src/webSearch.c:241
+msgid "_Keyword:"
+msgstr "_SchlĂ¼sselwort:"
+
+#: ../src/webSearch.c:310
+msgid "Manage search engines"
+msgstr "Suchmaschinen verwalten"
+
+#: ../katze/katze-throbber.c:135
+msgid "Symbolic size to use for the animation"
+msgstr "GrĂ¶ĂŸenkonstante fĂ¼r die Animation"
+
+#: ../katze/katze-throbber.c:144
+msgid "The name of an icon containing animation frames"
+msgstr "Der Name eines Symbols, welches Animationsbilder enthält"
+
+#: ../katze/katze-throbber.c:153
+msgid "A GdkPixbuf containing animation frames"
+msgstr "Ein GdkPixbuf, welcher Animationsbilder enthält"
+
+#: ../katze/katze-throbber.c:162
+msgid "Whether the throbber should be animated"
+msgstr "Ob das Aktivitätssymbol animiert sein soll"
+
+#: ../katze/katze-throbber.c:171
+msgid "The name of an icon to be used as the static image"
+msgstr "Der Name eines Symbols, das als statisches Bild verwendet werden soll"
+
+#: ../katze/katze-throbber.c:180
+msgid "A GdkPixbuf to be used as the static image"
+msgstr "Ein GdkPixbuf, welcher als statisches Bild verwendet werden soll"
+
+#: ../katze/katze-throbber.c:189
+msgid "The stock ID of an icon to be used as the static image"
+msgstr ""
+"Die Inventarkennung eines Symbols, das als statisches Bild verwendet werden "
+"soll"
+
+#: ../katze/katze-xbel.c:723 ../katze/katze-xbel.c:731
+#: ../katze/katze-xbel.c:767 ../katze/katze-xbel.c:775
+#: ../katze/katze-xbel.c:804
+#, c-format
+msgid "Malformed document."
+msgstr "Fehlerhaftes Dokument"
+
+#: ../katze/katze-xbel.c:759
+#, c-format
+msgid "File not found."
+msgstr "Datei nicht gefunden."
+
+#~ msgid "Location Entry"
+#~ msgstr "Adresseingabefeld"
index 82951045f54549d4c71991bb29e2d7c66b956e40..04dccba109ae19eeeb853432f0f576239f995f17 100644 (file)
@@ -4,10 +4,13 @@ INCLUDES = \
     $(LIBSEXY_CFLAGS) \
     -I../katze
 
+AM_CFLAGS = -DMIDORI_LOCALEDIR=\""$(localedir)"\"
+
 LDADD = \
     $(GTK_LIBS)          \
     $(WEBKIT_LIBS)       \
     $(LIBSEXY_LIBS)      \
+    $(INTLLIBS)          \
     ../katze/libkatze.la
 
 bin_PROGRAMS = \
index 454d70cad6c699005a2e212bd026ba9c1ae29a1d..f8ba22bbc3c82b48b94ca8279157a9cb4f8f03b0 100644 (file)
@@ -50,7 +50,7 @@ gboolean config_from_file(CConfig* config, const gchar* filename, GError** error
     GET_INT(config->toolbarNavigation, "ToolbarNavigation", TRUE);
     GET_INT(config->toolbarBookmarks, "ToolbarBookmarks", FALSE);
     GET_INT(config->toolbarStatus, "ToolbarStatus", TRUE);
-    //GET_INT(config->toolbarDownloads, "ToolbarDownloads", FALSE);
+    //GET_INT(config->toolbarTransfer, "ToolbarTransfer", FALSE);
     GET_INT(config->toolbarStyle, "ToolbarStyle", CONFIG_TOOLBAR_DEFAULT);
     GET_INT(config->toolbarSmall, "ToolbarSmall", FALSE);
     GET_INT(config->toolbarWebSearch, "ToolbarWebSearch", TRUE);
@@ -133,7 +133,7 @@ gboolean config_to_file(CConfig* config, const gchar* filename, GError** error)
     g_key_file_set_string (keyFile, "browser", "LocationSearch", config->locationSearch);
     g_key_file_set_integer(keyFile, "browser", "ToolbarNavigation", config->toolbarNavigation);
     g_key_file_set_integer(keyFile, "browser", "ToolbarBookmarks", config->toolbarBookmarks);
-    //g_key_file_set_integer(keyFile, "browser", "ToolbarDownloads", config->toolbarDownloads);
+    //g_key_file_set_integer(keyFile, "browser", "ToolbarTransfers", config->toolbarTransfers);
     g_key_file_set_integer(keyFile, "browser", "ToolbarStatus", config->toolbarStatus);
     g_key_file_set_integer(keyFile, "browser", "ToolbarStyle", config->toolbarStyle);
     g_key_file_set_integer(keyFile, "browser", "ToolbarSmall", config->toolbarSmall);
index 971f265128ca0b109ce09c15ce5bf262a0f61ce9..497ca7f657672691e8139dd6ce5eba4d71e06939 100644 (file)
@@ -20,6 +20,8 @@
 #include <gtk/gtk.h>
 #include <webkit/webkit.h>
 
+#include <glib/gi18n.h>
+
 // FIXME: Remove these globals
 
 GList* searchEngines; // Items of type 'SearchEngine'
@@ -36,12 +38,7 @@ MidoriWebSettings* webSettings;
 
 #define STOCK_BOOKMARK           GTK_STOCK_FILE // "stock_bookmark" "bookmark-web"
 #define STOCK_FORM_FILL          GTK_STOCK_JUSTIFY_FILL // "insert-text" "form-fill"
-#define STOCK_LOCATION           GTK_STOCK_BOLD // "location-entry"
-#define STOCK_NEWSFEED           "gtk-index" // "newsfeed"
-#define STOCK_PLUGINS            GTK_STOCK_CONVERT // "plugin"
-#define STOCK_POPUPS_BLOCKED     "popup-hidden"
-#define STOCK_TAB_CLOSE          GTK_STOCK_CLOSE // "tab-close"
-#define STOCK_WINDOW_CLOSE       GTK_STOCK_CLOSE // "window-close"
+#define STOCK_NEWSFEED           GTK_STOCK_INDEX
 
 // We assume that these legacy icon names are usually present
 
index 489b8d7ed61827f5bb536d3876fb3b3f22663a03..c826f26f4b35e08de20541800a97ad6a48b058f3 100644 (file)
@@ -65,7 +65,7 @@ gboolean spawn_protocol_command(const gchar* protocol, const gchar* res)
     if(!g_shell_parse_argv(commandReady, NULL, &argv, &error))
     {
         // FIXME: Should we have a more specific message?
-        show_error("Could not run external program.", error->message, NULL);
+        show_error(_("Could not run external program."), error->message, NULL);
         g_error_free(error);
         g_free(commandReady); g_free(uriEscaped);
         return FALSE;
@@ -81,7 +81,7 @@ gboolean spawn_protocol_command(const gchar* protocol, const gchar* res)
     if(!success)
     {
         // FIXME: Should we have a more specific message?
-        show_error("Could not run external program.", error->message, NULL);
+        show_error(_("Could not run external program."), error->message, NULL);
         g_error_free(error);
     }
     g_free(commandReady);
index ff7f45ed7e790c1d1a1aceeab0d9229d607f7fd2..2ff07401d3500b894d7e32717e2b65aac5aeef9f 100644 (file)
 
 #include "config.h"
 
+#ifdef ENABLE_NLS
+# include <libintl.h>
+# if HAVE_LOCALE_H
+#  include <locale.h>
+# endif
+#endif
+
 // -- stock icons
 
 static void stock_items_init(void)
@@ -39,24 +46,18 @@ static void stock_items_init(void)
         { STOCK_THEME },
         { STOCK_USER_TRASH },
 
-        { STOCK_BOOKMARK,       "Bookmark", 0, 0, NULL },
-        { STOCK_BOOKMARK_NEW,   "New Bookmark", 0, 0, NULL },
-        { STOCK_FORM_FILL,      "_Form Fill", 0, 0, NULL },
-        { STOCK_HOMEPAGE,       "Homepage", 0, 0, NULL },
-        { STOCK_LOCATION,       "Location Entry", 0, 0, NULL },
-        { STOCK_NEWSFEED,       "Newsfeed", 0, 0, NULL },
-        { STOCK_PLUGINS,        "_Plugins", 0, 0, NULL },
-        { STOCK_POPUPS_BLOCKED, "Blocked Popups", 0, 0, NULL },
-        { STOCK_TAB_CLOSE,      "C_lose Tab", 0, 0, NULL },
-        { STOCK_TAB_NEW,        "New _Tab", 0, 0, NULL },
-        { STOCK_WINDOW_CLOSE,   "_Close Window", 0, 0, NULL },
-        { STOCK_WINDOW_NEW,     "New _Window", 0, 0, NULL },
+        { STOCK_BOOKMARK,       N_("Bookmark"), 0, 0, NULL },
+        { STOCK_BOOKMARK_NEW,   N_("New Bookmark"), 0, 0, NULL },
+        { STOCK_FORM_FILL,      N_("_Form Fill"), 0, 0, NULL },
+        { STOCK_HOMEPAGE,       N_("Homepage"), 0, 0, NULL },
+        { STOCK_TAB_NEW,        N_("New _Tab"), 0, 0, NULL },
+        { STOCK_WINDOW_NEW,     N_("New _Window"), 0, 0, NULL },
         #if !GTK_CHECK_VERSION(2, 10, 0)
-        { GTK_STOCK_SELECT_ALL, "Select _All", 0, 0, (gchar*)"gtk20" },
+        { GTK_STOCK_SELECT_ALL, N_("Select _All", 0, 0, NULL },
         #endif
         #if !GTK_CHECK_VERSION(2, 8, 0)
-        { GTK_STOCK_FULLSCREEN, "_Fullscreen", 0, 0, (gchar*)"gtk20" },
-        { GTK_STOCK_FULLSCREEN, "_Leave Fullscreen", 0, 0, (gchar*)"gtk20" },
+        { GTK_STOCK_FULLSCREEN, N_("_Fullscreen"), 0, 0, NULL },
+        { GTK_STOCK_FULLSCREEN, N_("_Leave Fullscreen"), 0, 0, NULL },
         #endif
     };
     GtkIconFactory* factory = gtk_icon_factory_new();
@@ -117,21 +118,36 @@ midori_browser_new_window_cb (MidoriBrowser* browser,
     midori_browser_append_uri (new_browser, uri);
 }
 
+static void
+locale_init (void)
+{
+#ifdef ENABLE_NLS
+
+#if HAVE_LOCALE_H
+    setlocale (LC_ALL, "");
+#endif
+
+    bindtextdomain (GETTEXT_PACKAGE, MIDORI_LOCALEDIR);
+    bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+    textdomain (GETTEXT_PACKAGE);
+#endif
+}
+
 int main(int argc, char** argv)
 {
-    g_set_application_name(PACKAGE_NAME);
+    locale_init();
+    g_set_application_name(_("midori"));
 
     // Parse cli options
     gint repeats = 2;
     gboolean version = FALSE;
     GOptionEntry entries[] =
     {
-     { "repeats", 'r', 0, G_OPTION_ARG_INT, &repeats, "An unused value", "N" },
-     { "version", 'v', 0, G_OPTION_ARG_NONE, &version, "Display program version", NULL }
+     { "version", 'v', 0, G_OPTION_ARG_NONE, &version, N_("Display program version"), NULL }
     };
 
     GError* error = NULL;
-    if(!gtk_init_with_args(&argc, &argv, "[URI]", entries, NULL/*GETTEXT_PACKAGE*/, &error))
+    if(!gtk_init_with_args(&argc, &argv, _("[URL]"), entries, GETTEXT_PACKAGE, &error))
     {
         g_error_free(error);
         return 1;
@@ -139,19 +155,26 @@ int main(int argc, char** argv)
 
     if(version)
     {
-        g_print(PACKAGE_STRING " - Copyright (c) 2007-2008 Christian Dywan\n\n"
-         "GTK+2:      " GTK_VER "\n"
-         "WebKit:     " WEBKIT_VER "\n"
-         "Libsexy:    " LIBSEXY_VER "\n"
-         "libXML2:    " LIBXML_VER "\n"
-         "GetText:    N/A\n"
-         "\n"
-         "Debugging:  " SOKOKE_DEBUG_ "\n"
-         "\n"
-         "Please report comments, suggestions and bugs to:\n"
-         "\t" PACKAGE_BUGREPORT "\n"
-         "Check for new versions at:\n"
-         "\thttp://software.twotoasts.de\n");
+        g_print(
+          "%s %s - Copyright (c) 2007-2008 Christian Dywan\n\n"
+          "GTK+2:  \t\t%s\n"
+          "WebKit: \t\t%s\n"
+          "Libsexy:\t\t%s\n"
+          "libXML2:\t\t%s\n"
+          "\n"
+          "%s:\t\t%s\n"
+          "\n"
+          "%s\n"
+          "\t%s\n"
+          "%s\n"
+          "\thttp://software.twotoasts.de\n",
+          _("midori"), PACKAGE_VERSION,
+          GTK_VER, WEBKIT_VER, LIBSEXY_VER, LIBXML_VER,
+          _("Debugging"), SOKOKE_DEBUG_,
+          _("Please report comments, suggestions and bugs to:"),
+          PACKAGE_BUGREPORT,
+          _("Check for new versions at:")
+        );
         return 0;
     }
 
@@ -167,7 +190,7 @@ int main(int argc, char** argv)
     {
         if(error->code != G_FILE_ERROR_NOENT)
             g_string_append_printf(errorMessages
-             , "Configuration was not loaded. %s\n", error->message);
+             , _("The configuration couldn't be loaded. %s\n"), error->message);
         g_error_free(error);
     }
     g_free(configFile);
@@ -182,7 +205,7 @@ int main(int argc, char** argv)
         // FIXME: We may have a "file empty" error, how do we recognize that?
         /*if(error->code != G_FILE_ERROR_NOENT)
             g_string_append_printf(errorMessages
-             , "Notice: No search engines loaded. %s\n", error->message);*/
+             , _("The search engines couldn't be loaded. %s\n"), error->message);*/
         g_error_free(error);
     }
     g_free(configFile);
@@ -193,7 +216,7 @@ int main(int argc, char** argv)
     {
         if(error->code != G_FILE_ERROR_NOENT)
             g_string_append_printf(errorMessages
-             , "Bookmarks couldn't be loaded. %s\n", error->message);
+             , _("The bookmarks couldn't be loaded. %s\n"), error->message);
         g_error_free(error);
     }
     g_free(configFile);
@@ -206,7 +229,7 @@ int main(int argc, char** argv)
         {
             if(error->code != G_FILE_ERROR_NOENT)
                 g_string_append_printf(errorMessages
-                 , "Session couldn't be loaded. %s\n", error->message);
+                 , _("The session couldn't be loaded. %s\n"), error->message);
             g_error_free(error);
         }
         g_free(configFile);
@@ -218,7 +241,7 @@ int main(int argc, char** argv)
     {
         if(error->code != G_FILE_ERROR_NOENT)
             g_string_append_printf(errorMessages
-             , "Tabtrash couldn't be loaded. %s\n", error->message);
+             , _("The trash couldn't be loaded. %s\n"), error->message);
         g_error_free(error);
     }
     g_free(configFile);
@@ -228,7 +251,7 @@ int main(int argc, char** argv)
     {
         GtkWidget* dialog = gtk_message_dialog_new(NULL
          , 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_NONE
-         , "The following errors occured.");
+         , _("The following errors occured:"));
         gtk_window_set_skip_taskbar_hint(GTK_WINDOW(dialog), FALSE);
         gtk_window_set_title(GTK_WINDOW(dialog), g_get_application_name());
         // FIXME: Use custom program icon
@@ -255,7 +278,7 @@ int main(int argc, char** argv)
     }
     g_string_free(errorMessages, TRUE);
 
-    // TODO: Handle any number of separate uris from argv 
+    // TODO: Handle any number of separate uris from argv
     // Open as many tabs as we have uris, seperated by pipes
     gchar* uri = argc > 1 ? strtok(g_strdup(argv[1]), "|") : NULL;
     while(uri != NULL)
@@ -350,7 +373,7 @@ int main(int argc, char** argv)
     error = NULL;
     if(!search_engines_to_file(searchEngines, configFile, &error))
     {
-        g_warning("Search engines couldn't be saved. %s", error->message);
+        g_warning("The search engines couldn't be saved. %s", error->message);
         g_error_free(error);
     }
     search_engines_free(searchEngines);
@@ -359,7 +382,7 @@ int main(int argc, char** argv)
     error = NULL;
     if(!katze_xbel_folder_to_file(bookmarks, configFile, &error))
     {
-        g_warning("Bookmarks couldn't be saved. %s", error->message);
+        g_warning("The bookmarks couldn't be saved. %s", error->message);
         g_error_free(error);
     }
     katze_xbel_item_unref(bookmarks);
@@ -368,7 +391,7 @@ int main(int argc, char** argv)
     error = NULL;
     if (!katze_xbel_folder_to_file (xbel_trash, configFile, &error))
     {
-        g_warning ("Tabtrash couldn't be saved. %s", error->message);
+        g_warning ("The trash couldn't be saved. %s", error->message);
         g_error_free (error);
     }
     katze_xbel_item_unref (xbel_trash);
@@ -379,7 +402,7 @@ int main(int argc, char** argv)
         error = NULL;
         if(!katze_xbel_folder_to_file(session, configFile, &error))
         {
-            g_warning("Session couldn't be saved. %s", error->message);
+            g_warning("The session couldn't be saved. %s", error->message);
             g_error_free(error);
         }
         g_free(configFile);
@@ -389,7 +412,7 @@ int main(int argc, char** argv)
     error = NULL;
     if(!config_to_file(config, configFile, &error))
     {
-        g_warning("Configuration couldn't be saved. %s", error->message);
+        g_warning("The configuration couldn't be saved. %s", error->message);
         g_error_free(error);
     }
     config_free(config);
index 71ca474920dd9241047dd592332508c58f3820d3..97d36e9586fc863d2670252ade3249ee38ff38d1 100644 (file)
@@ -182,7 +182,7 @@ _midori_browser_update_interface (MidoriBrowser* browser)
         gtk_widget_set_sensitive (priv->throbber, FALSE);
         g_object_set (action,
                       "stock-id", GTK_STOCK_REFRESH,
-                      "tooltip", "Reload the current page", NULL);
+                      "tooltip", _("Reload the current page"), NULL);
         gtk_widget_hide (priv->progressbar);
     }
     else
@@ -190,7 +190,7 @@ _midori_browser_update_interface (MidoriBrowser* browser)
         gtk_widget_set_sensitive (priv->throbber, TRUE);
         g_object_set (action,
                       "stock-id", GTK_STOCK_STOP,
-                      "tooltip", "Stop loading the current page", NULL);
+                      "tooltip", _("Stop loading the current page"), NULL);
         gtk_widget_show (priv->progressbar);
     }
     katze_throbber_set_animated (KATZE_THROBBER (priv->throbber), loading);
@@ -255,7 +255,7 @@ _midori_browser_update_progress (MidoriBrowser* browser,
     {
         gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (priv->progressbar),
                                        progress ? progress / 100.0 : 0);
-        gchar* message = g_strdup_printf ("%d%% loaded", progress);
+        gchar* message = g_strdup_printf (_("%d%% loaded"), progress);
         gtk_progress_bar_set_text (GTK_PROGRESS_BAR (priv->progressbar),
                                    message);
         g_free (message);
@@ -518,7 +518,7 @@ midori_browser_class_init (MidoriBrowserClass* class)
                                      g_param_spec_object (
                                      "settings",
                                      "Settings",
-                                     "The associated settings",
+                                     _("The associated settings"),
                                      MIDORI_TYPE_WEB_SETTINGS,
                                      G_PARAM_READWRITE));
 
@@ -538,7 +538,7 @@ midori_browser_class_init (MidoriBrowserClass* class)
                                      g_param_spec_string (
                                      "statusbar-text",
                                      "Statusbar Text",
-                                     "The text that is displayed in the statusbar",
+                                     _("The text that is displayed in the statusbar"),
                                      "",
                                      flags));
 
@@ -557,7 +557,7 @@ midori_browser_class_init (MidoriBrowserClass* class)
                                      g_param_spec_object (
                                      "trash",
                                      "Trash",
-                                     "The trash, collecting recently closed tabs and windows",
+                                     _("The trash, collecting recently closed tabs and windows"),
                                      MIDORI_TYPE_TRASH,
                                      G_PARAM_READWRITE));
 
@@ -583,7 +583,7 @@ _action_open_activate (GtkAction*     action,
                        MidoriBrowser* browser)
 {
     GtkWidget* dialog = gtk_file_chooser_dialog_new (
-        "Open file", GTK_WINDOW (browser),
+        ("Open file"), GTK_WINDOW (browser),
         GTK_FILE_CHOOSER_ACTION_OPEN,
         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
         GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
@@ -1048,7 +1048,7 @@ _action_location_activate (GtkAction*     action,
     {
         // TODO: We should offer all of the location's features here
         GtkWidget* dialog;
-        dialog = gtk_dialog_new_with_buttons ("Open location"
+        dialog = gtk_dialog_new_with_buttons (_("Open location")
             , GTK_WINDOW (browser)
             , GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR
             , GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL
@@ -1060,7 +1060,7 @@ _action_location_activate (GtkAction*     action,
             GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 5);
         GtkWidget* hbox = gtk_hbox_new (FALSE, 8);
         gtk_container_set_border_width (GTK_CONTAINER (hbox), 5);
-        GtkWidget* label = gtk_label_new_with_mnemonic ("_Location:");
+        GtkWidget* label = gtk_label_new_with_mnemonic (_("_Location:"));
         gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
         GtkWidget* entry = gtk_entry_new ();
         gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
@@ -1094,7 +1094,7 @@ _action_search_activate (GtkAction*     action,
     else
     {
         // TODO: We should offer all of the search's features here
-        GtkWidget* dialog = gtk_dialog_new_with_buttons ("Web search"
+        GtkWidget* dialog = gtk_dialog_new_with_buttons (_("Web search")
             , GTK_WINDOW (browser)
             , GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR
             , GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL
@@ -1106,7 +1106,7 @@ _action_search_activate (GtkAction*     action,
             GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 5);
         GtkWidget* hbox = gtk_hbox_new (FALSE, 8);
         gtk_container_set_border_width (GTK_CONTAINER (hbox), 5);
-        GtkWidget* label = gtk_label_new_with_mnemonic ("_Location:");
+        GtkWidget* label = gtk_label_new_with_mnemonic (_("_Location:"));
         gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
         GtkWidget* entry = gtk_entry_new ();
         gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
@@ -1133,7 +1133,7 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
 
     gboolean new_bookmark = !bookmark;
     GtkWidget* dialog = gtk_dialog_new_with_buttons (
-        new_bookmark ? "New bookmark" : "Edit bookmark",
+        new_bookmark ? _("New bookmark") : _("Edit bookmark"),
         GTK_WINDOW (browser),
         GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR,
         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
@@ -1150,7 +1150,7 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
 
     GtkWidget* hbox = gtk_hbox_new (FALSE, 8);
     gtk_container_set_border_width (GTK_CONTAINER (hbox), 5);
-    GtkWidget* label = gtk_label_new_with_mnemonic ("_Title:");
+    GtkWidget* label = gtk_label_new_with_mnemonic (_("_Title:"));
     gtk_size_group_add_widget (sizegroup, label);
     gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
     GtkWidget* entry_title = gtk_entry_new ();
@@ -1166,7 +1166,7 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
 
     hbox = gtk_hbox_new (FALSE, 8);
     gtk_container_set_border_width (GTK_CONTAINER (hbox), 5);
-    label = gtk_label_new_with_mnemonic ("_Description:");
+    label = gtk_label_new_with_mnemonic (_("_Description:"));
     gtk_size_group_add_widget (sizegroup, label);
     gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
     GtkWidget* entry_desc = gtk_entry_new ();
@@ -1185,7 +1185,7 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
     {
         hbox = gtk_hbox_new (FALSE, 8);
         gtk_container_set_border_width (GTK_CONTAINER (hbox), 5);
-        label = gtk_label_new_with_mnemonic ("_Uri:");
+        label = gtk_label_new_with_mnemonic (_("_URL:"));
         gtk_size_group_add_widget (sizegroup, label);
         gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
         entry_uri = gtk_entry_new ();
@@ -1203,11 +1203,11 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
     {
         hbox = gtk_hbox_new (FALSE, 8);
         gtk_container_set_border_width (GTK_CONTAINER (hbox), 5);
-        label = gtk_label_new_with_mnemonic ("_Folder:");
+        label = gtk_label_new_with_mnemonic (_("_Folder:"));
         gtk_size_group_add_widget (sizegroup, label);
         gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
         combo_folder = gtk_combo_box_new_text ();
-        gtk_combo_box_append_text (GTK_COMBO_BOX (combo_folder), "Root");
+        gtk_combo_box_append_text (GTK_COMBO_BOX (combo_folder), _("Root"));
         gtk_widget_set_sensitive (combo_folder, FALSE);
         gtk_box_pack_start (GTK_BOX (hbox), combo_folder, TRUE, TRUE, 0);
         gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
@@ -1426,7 +1426,7 @@ midori_browser_bookmarks_item_render_text_cb (GtkTreeViewColumn* column,
     }
 
     if (katze_xbel_item_is_separator (item))
-        g_object_set (renderer, "markup", "<i>Separator</i>", NULL);
+        g_object_set (renderer, "markup", _("<i>Separator</i>"), NULL);
     else
         g_object_set (renderer, "markup", NULL,
                       "text", katze_xbel_item_get_title(item), NULL);
@@ -1612,7 +1612,7 @@ _action_about_activate (GtkAction*     action,
         "logo-icon-name", gtk_window_get_icon_name (GTK_WINDOW (browser)),
         "name", PACKAGE_NAME,
         "version", PACKAGE_VERSION,
-        "comments", "A lightweight web browser.",
+        "comments", _("A lightweight web browser."),
         "copyright", "Copyright Â© 2007-2008 Christian Dywan",
         "website", "http://software.twotoasts.de",
         "authors", credits_authors,
@@ -1620,7 +1620,7 @@ _action_about_activate (GtkAction*     action,
         "artists", credits_artists,
         "license", license,
         "wrap-license", TRUE,
-        // "translator-credits", _("translator-credits"),
+        "translator-credits", _("translator-credits"),
         NULL);
 }
 
@@ -1835,27 +1835,27 @@ _action_bookmark_delete_activate (GtkAction* action,
 
 // FIXME: Fill in a good description for each 'hm?'
 static const GtkActionEntry entries[] = {
- { "File", NULL, "_File" },
+ { "File", NULL, N_("_File") },
  { "WindowNew", STOCK_WINDOW_NEW,
    NULL, "<Ctrl>n",
-   "Open a new window", G_CALLBACK (_action_window_new_activate) },
+   N_("Open a new window"), G_CALLBACK (_action_window_new_activate) },
  { "TabNew", STOCK_TAB_NEW,
    NULL, "<Ctrl>t",
-   "Open a new tab", G_CALLBACK (_action_tab_new_activate) },
+   N_("Open a new tab"), G_CALLBACK (_action_tab_new_activate) },
  { "Open", GTK_STOCK_OPEN,
    NULL, "<Ctrl>o",
-   "Open a file", G_CALLBACK (_action_open_activate) },
+   N_("Open a file"), G_CALLBACK (_action_open_activate) },
  { "SaveAs", GTK_STOCK_SAVE_AS,
    NULL, "<Ctrl>s",
-   "Save to a file", NULL/*G_CALLBACK (_action_saveas_activate)*/ },
- { "TabClose", STOCK_TAB_CLOSE,
-   NULL, "<Ctrl>w",
-   "Close the current tab", G_CALLBACK (_action_tab_close_activate) },
- { "WindowClose", STOCK_WINDOW_CLOSE,
-   NULL, "<Ctrl><Shift>w",
-   "Close this window", G_CALLBACK (_action_window_close_activate) },
+   N_("Save to a file"), NULL/*G_CALLBACK (_action_saveas_activate)*/ },
+ { "TabClose", NULL,
+   N_("_Close Tab"), "<Ctrl>w",
+   N_("Close the current tab"), G_CALLBACK (_action_tab_close_activate) },
+ { "WindowClose", NULL,
+   N_("C_lose Window"), "<Ctrl><Shift>w",
+   N_("Close this window"), G_CALLBACK (_action_window_close_activate) },
  { "PageSetup", GTK_STOCK_PROPERTIES,
-   "Pa_ge Setup", "",
+   N_("Pa_ge Setup"), "",
    "hm?", NULL/*G_CALLBACK (_action_page_setup_activate)*/ },
  { "PrintPreview", GTK_STOCK_PRINT_PREVIEW,
    NULL, "",
@@ -1865,33 +1865,33 @@ static const GtkActionEntry entries[] = {
    "hm?", NULL/*G_CALLBACK (_action_print_activate)*/ },
  { "Quit", GTK_STOCK_QUIT,
    NULL, "<Ctrl>q",
-   "Quit the application", G_CALLBACK (_action_quit_activate) },
+   N_("Quit the application"), G_CALLBACK (_action_quit_activate) },
 
- { "Edit", NULL, "_Edit", NULL, NULL, G_CALLBACK (_action_edit_activate) },
+ { "Edit", NULL, N_("_Edit"), NULL, NULL, G_CALLBACK (_action_edit_activate) },
  { "Undo", GTK_STOCK_UNDO,
    NULL, "<Ctrl>z",
-   "Undo the last modification", NULL/*G_CALLBACK (_action_undo_activate)*/ },
+   N_("Undo the last modification"), NULL/*G_CALLBACK (_action_undo_activate)*/ },
  { "Redo", GTK_STOCK_REDO,
    NULL, "<Ctrl><Shift>z",
-   "Redo the last modification", NULL/*G_CALLBACK (_action_redo_activate)*/ },
+   N_("Redo the last modification"), NULL/*G_CALLBACK (_action_redo_activate)*/ },
  { "Cut", GTK_STOCK_CUT,
    NULL, "<Ctrl>x",
    "Cut the selected text", G_CALLBACK (_action_cut_activate) },
  { "Copy", GTK_STOCK_COPY,
    NULL, "<Ctrl>c",
-   "Copy the selected text", G_CALLBACK (_action_copy_activate) },
+   N_("Copy the selected text"), G_CALLBACK (_action_copy_activate) },
  { "Copy_", GTK_STOCK_COPY,
    NULL, "<Ctrl>c",
-   "Copy the selected text", G_CALLBACK (_action_copy_activate) },
+   N_("Copy the selected text"), G_CALLBACK (_action_copy_activate) },
  { "Paste", GTK_STOCK_PASTE,
    NULL, "<Ctrl>v",
-   "Paste text from the clipboard", G_CALLBACK (_action_paste_activate) },
+   N_("Paste text from the clipboard"), G_CALLBACK (_action_paste_activate) },
  { "Delete", GTK_STOCK_DELETE,
    NULL, NULL,
-   "Delete the selected text", G_CALLBACK (_action_delete_activate) },
+   N_("Delete the selected text"), G_CALLBACK (_action_delete_activate) },
  { "SelectAll", GTK_STOCK_SELECT_ALL,
    NULL, "<Ctrl>a",
-   "Selected all text", G_CALLBACK (_action_select_all_activate) },
+   N_("Select all text"), G_CALLBACK (_action_select_all_activate) },
  { "FormFill", STOCK_FORM_FILL,
    NULL, "",
    "hm?", NULL/*G_CALLBACK (_action_form_fill_activate)*/ },
@@ -1899,29 +1899,29 @@ static const GtkActionEntry entries[] = {
    NULL, "<Ctrl>f",
    "hm?", G_CALLBACK (_action_find_activate) },
  { "FindNext", GTK_STOCK_GO_FORWARD,
-   "Find _Next", "<Ctrl>g",
+   N_("Find _Next"), "<Ctrl>g",
    "hm?", G_CALLBACK (_action_find_next_activate) },
  { "FindPrevious", GTK_STOCK_GO_BACK,
-   "Find _Previous", "<Ctrl><Shift>g",
+   N_("Find _Previous"), "<Ctrl><Shift>g",
    "hm?", G_CALLBACK (_action_find_previous_activate) },
  { "FindQuick", GTK_STOCK_FIND,
-   "_Quick Find", "period",
+   N_("_Quick Find"), "period",
    "hm?", NULL/*G_CALLBACK (_action_find_quick_activate)*/ },
  { "Preferences", GTK_STOCK_PREFERENCES,
    NULL, "<Ctrl><Alt>p",
    "hm?", G_CALLBACK (_action_preferences_activate) },
 
- { "View", NULL, "_View" },
- { "Toolbars", NULL, "_Toolbars" },
+ { "View", NULL, N_("_View") },
+ { "Toolbars", NULL, N_("_Toolbars") },
  { "Reload", GTK_STOCK_REFRESH,
    NULL, "<Ctrl>r",
-   "Reload the current page", G_CALLBACK (_action_reload_stop_activate) },
+   N_("Reload the current page"), G_CALLBACK (_action_reload_stop_activate) },
  { "Stop", GTK_STOCK_REFRESH,
    NULL, "<Ctrl>r",
-   "Stop loading the current page", G_CALLBACK (_action_reload_stop_activate) },
+   N_("Stop loading the current page"), G_CALLBACK (_action_reload_stop_activate) },
  { "ReloadStop", GTK_STOCK_STOP,
    NULL, "<Ctrl>r",
-   "Reload the current page", G_CALLBACK (_action_reload_stop_activate) },
+   N_("Reload the current page"), G_CALLBACK (_action_reload_stop_activate) },
  { "ZoomIn", GTK_STOCK_ZOOM_IN,
    NULL, "<Ctrl>plus",
    "hm?", NULL/*G_CALLBACK (_action_zoom_in_activate)*/ },
@@ -1932,16 +1932,16 @@ static const GtkActionEntry entries[] = {
    NULL, "<Ctrl>0",
    "hm?", NULL/*G_CALLBACK (_action_zoom_normal_activate)*/ },
  { "SourceView", NULL,
-   "View Source", "",
-   "hm?", /*G_CALLBACK (_action_source_view_activate)*/ },
+   N_("View Source"), "",
+    "hm?", /*G_CALLBACK (_action_source_view_activate)*/ },
  { "SelectionSourceView", NULL,
-   "View Selection Source", "",
-   "hm?", NULL/*G_CALLBACK (_action_selection_source_view_activate)*/ },
+    N_("View Selection Source"), "",
+    "hm?", NULL/*G_CALLBACK (_action_selection_source_view_activate)*/ },
  { "Fullscreen", GTK_STOCK_FULLSCREEN,
    NULL, "F11",
-   "Toggle fullscreen view", G_CALLBACK (_action_fullscreen_activate) },
+   N_("Toggle fullscreen view"), G_CALLBACK (_action_fullscreen_activate) },
 
- { "Go", NULL, "_Go" },
+ { "Go", NULL, N_("_Go") },
  { "Back", GTK_STOCK_GO_BACK,
    NULL, "<Alt>Left",
    "hm?", G_CALLBACK (_action_back_activate) },
@@ -1952,39 +1952,39 @@ static const GtkActionEntry entries[] = {
    NULL, "<Alt>Home",
    "hm?", G_CALLBACK (_action_home_activate) },
  { "Location", GTK_STOCK_JUMP_TO,
-   "Location...", "<Ctrl>l",
+   N_("Location..."), "<Ctrl>l",
    "hm?", G_CALLBACK (_action_location_activate) },
  { "Search", GTK_STOCK_FIND,
-   "Web Search...", "<Ctrl><Shift>f",
+   N_("Web Search..."), "<Ctrl><Shift>f",
    "hm?", G_CALLBACK (_action_search_activate) },
  { "OpenInPageholder", GTK_STOCK_JUMP_TO,
-   "Open in Page_holder...", "",
+   N_("Open in Page_holder..."), "",
    "hm?", G_CALLBACK (_action_open_in_panel_activate) },
  { "Trash", STOCK_USER_TRASH,
-   "Closed Tabs and Windows", "",
-   "Reopen a previously closed tab or window", NULL },
+   N_("Closed Tabs and Windows"), "",
+   N_("Reopen a previously closed tab or window"), NULL },
  { "TrashEmpty", GTK_STOCK_CLEAR,
-   "Empty Trash", "",
+   N_("Empty Trash"), "",
    "hm?", G_CALLBACK (_action_trash_empty_activate) },
  { "UndoTabClose", GTK_STOCK_UNDELETE,
-   "Undo Close Tab", "",
+   N_("Undo Close Tab"), "",
    "hm?", G_CALLBACK (_action_undo_tab_close_activate) },
 
- { "Bookmarks", NULL, "_Bookmarks" },
+ { "Bookmarks", NULL, N_("_Bookmarks") },
  { "BookmarkNew", STOCK_BOOKMARK_NEW,
    NULL, "<Ctrl>d",
    "hm?", G_CALLBACK (_action_bookmark_new_activate) },
  { "BookmarksManage", NULL,
-   "_Manage Bookmarks", "<Ctrl>b",
+   N_("_Manage Bookmarks"), "<Ctrl>b",
    "hm?", NULL/*G_CALLBACK (_action_bookmarks_manage_activate)*/ },
  { "BookmarkOpen", GTK_STOCK_OPEN,
    NULL, "",
    "hm?", G_CALLBACK (_action_bookmark_open_activate) },
  { "BookmarkOpenTab", STOCK_TAB_NEW,
-   "Open in New _Tab", "",
+   N_("Open in New _Tab"), "",
    "hm?", G_CALLBACK (_action_bookmark_open_tab_activate) },
  { "BookmarkOpenWindow", STOCK_WINDOW_NEW,
-   "Open in New _Window", "",
+   N_("Open in New _Window"), "",
    "hm?", G_CALLBACK (_action_bookmark_open_window_activate) },
  { "BookmarkEdit", GTK_STOCK_EDIT,
    NULL, "",
@@ -1993,26 +1993,26 @@ static const GtkActionEntry entries[] = {
    NULL, "",
    "hm?", G_CALLBACK (_action_bookmark_delete_activate) },
 
- { "Tools", NULL, "_Tools" },
+ { "Tools", NULL, N_("_Tools") },
  { "ManageSearchEngines", GTK_STOCK_PROPERTIES,
-   "_Manage Search Engines", "<Ctrl><Alt>s",
-   "Add, edit and remove search engines...",
+   N_("_Manage Search Engines"), "<Ctrl><Alt>s",
+   N_("Add, edit and remove search engines..."),
    G_CALLBACK (_action_manage_search_engines_activate) },
 
- { "Window", NULL, "_Window" },
+ { "Window", NULL, N_("_Window") },
  { "TabPrevious", GTK_STOCK_GO_BACK,
-   "_Previous Tab", "<Ctrl>Page_Up",
+   N_("_Previous Tab"), "<Ctrl>Page_Up",
    "hm?", G_CALLBACK (_action_tab_previous_activate) },
  { "TabNext", GTK_STOCK_GO_FORWARD,
-   "_Next Tab", "<Ctrl>Page_Down",
+   N_("_Next Tab"), "<Ctrl>Page_Down",
    "hm?", G_CALLBACK (_action_tab_next_activate) },
  { "TabOverview", NULL,
-   "Tab _Overview", "",
+   N_("Tab _Overview"), "",
    "hm?", NULL/*G_CALLBACK (_action_tab_overview_activate)*/ },
 
- { "Help", NULL, "_Help" },
+ { "Help", NULL, N_("_Help") },
  { "HelpContents", GTK_STOCK_HELP,
-   "_Contents", "F1",
+   N_("_Contents"), "F1",
    "hm?", NULL/*G_CALLBACK (_action_help_contents_activate)*/ },
  { "About", GTK_STOCK_ABOUT,
    NULL, "",
@@ -2022,32 +2022,32 @@ static const GtkActionEntry entries[] = {
 
 static const GtkToggleActionEntry toggle_entries[] = {
  { "PrivateBrowsing", NULL,
-   "P_rivate Browsing", "",
+   N_("P_rivate Browsing"), "",
    "hm?", NULL/*G_CALLBACK (_action_private_browsing_activate)*/,
    FALSE },
  { "WorkOffline", GTK_STOCK_DISCONNECT,
-   "_Work Offline", "",
+   N_("_Work Offline"), "",
    "hm?", NULL/*G_CALLBACK (_action_work_offline_activate)*/,
    FALSE },
 
  { "Navigationbar", NULL,
-   "_Navigationbar", "",
+   N_("_Navigationbar"), "",
    "hm?", G_CALLBACK (_action_navigationbar_activate),
    FALSE },
  { "Panel", NULL,
-   "_Panel", "F9",
+   N_("Side_panel"), "F9",
    "hm?", G_CALLBACK (_action_panel_activate),
    FALSE },
  { "Bookmarkbar", NULL,
-   "_Bookmarkbar", "",
+   N_("_Bookmarkbar"), "",
    "hm?", G_CALLBACK (_action_bookmarkbar_activate),
    FALSE },
- { "Downloadbar", NULL,
-   "_Downloadbar", "",
-   "hm?", NULL/*G_CALLBACK (_action_downloadbar_activate)*/,
+ { "Transferbar", NULL,
+   N_("_Transferbar"), "",
+   "hm?", NULL/*G_CALLBACK (_action_transferbar_activate)*/,
    FALSE },
  { "Statusbar", NULL,
-   "_Statusbar", "",
+   N_("_Statusbar"), "",
    "hm?", G_CALLBACK (_action_statusbar_activate),
    FALSE },
  };
@@ -2135,7 +2135,7 @@ static const gchar* ui_markup =
     "<menu action='Toolbars'>"
      "<menuitem action='Navigationbar'/>"
      "<menuitem action='Bookmarkbar'/>"
-     "<menuitem action='Downloadbar'/>"
+     "<menuitem action='Transferbar'/>"
      "<menuitem action='Statusbar'/>"
     "</menu>"
     "<menuitem action='Panel'/>"
@@ -2255,6 +2255,7 @@ midori_browser_init (MidoriBrowser* browser)
 
     // Let us see some ui manager magic
     priv->action_group = gtk_action_group_new ("Browser");
+    gtk_action_group_set_translation_domain (priv->action_group, GETTEXT_PACKAGE);
     gtk_action_group_add_actions (priv->action_group,
                                   entries, entries_n, browser);
     gtk_action_group_add_toggle_actions (priv->action_group,
@@ -2290,7 +2291,7 @@ midori_browser_init (MidoriBrowser* browser)
         gtk_action_set_sensitive (action, toggle_entries[i].callback != NULL);
     }
 
-    //_action_set_active(browser, "Downloadbar", config->toolbarDownloads);
+    //_action_set_active(browser, "Transferbar", config->toolbarTransfers);
 
     // Create the menubar
     priv->menubar = gtk_ui_manager_get_widget (ui_manager, "/menubar");
@@ -2516,17 +2517,17 @@ midori_browser_init (MidoriBrowser* browser)
     priv->panel_bookmarks = treeview;
     gtk_widget_show_all (box);
     midori_panel_append_page (MIDORI_PANEL (priv->panel),
-                              box, "vcard", "Bookmarks");
+                              box, "vcard", _("Bookmarks"));
     action = _action_by_name (browser, "PanelBookmarks");
 
-    // Downloads
+    // Transfers
     priv->panel_pageholder = g_object_new (MIDORI_TYPE_WEB_VIEW,
                                            "uri", "about:blank",
                                            NULL);
     gtk_widget_show (priv->panel_pageholder);
     midori_panel_append_page (MIDORI_PANEL (priv->panel),
                               priv->panel_pageholder,
-                              "package", "Downloads");
+                              "package", _("Transfers"));
 
     // Console
     priv->panel_pageholder = g_object_new (MIDORI_TYPE_WEB_VIEW,
@@ -2535,7 +2536,7 @@ midori_browser_init (MidoriBrowser* browser)
     gtk_widget_show (priv->panel_pageholder);
     midori_panel_append_page (MIDORI_PANEL (priv->panel),
                               priv->panel_pageholder,
-                              "terminal", "Console");
+                              "terminal", _("Console"));
 
     // History
     priv->panel_pageholder = g_object_new (MIDORI_TYPE_WEB_VIEW,
@@ -2544,7 +2545,7 @@ midori_browser_init (MidoriBrowser* browser)
     gtk_widget_show (priv->panel_pageholder);
     midori_panel_append_page (MIDORI_PANEL (priv->panel),
                               priv->panel_pageholder,
-                              "document-open-recent", "History");
+                              "document-open-recent", _("History"));
 
     // Pageholder
     priv->panel_pageholder = g_object_new (MIDORI_TYPE_WEB_VIEW,
@@ -2553,7 +2554,7 @@ midori_browser_init (MidoriBrowser* browser)
     gtk_widget_show (priv->panel_pageholder);
     midori_panel_append_page (MIDORI_PANEL (priv->panel),
                               priv->panel_pageholder,
-                              GTK_STOCK_CONVERT, "Pageholder");
+                              GTK_STOCK_CONVERT, _("Pageholder"));
 
     midori_panel_set_current_page (MIDORI_PANEL (priv->panel),
                                    config->panelActive);
@@ -2575,7 +2576,7 @@ midori_browser_init (MidoriBrowser* browser)
     toolitem = gtk_tool_item_new ();
     gtk_container_set_border_width (GTK_CONTAINER (toolitem), 6);
     gtk_container_add (GTK_CONTAINER (toolitem),
-                       gtk_label_new_with_mnemonic ("_Inline find:"));
+                       gtk_label_new_with_mnemonic (_("_Inline find:")));
     gtk_toolbar_insert (GTK_TOOLBAR (priv->find), toolitem, -1);
     priv->find_text = sexy_icon_entry_new ();
     GtkWidget* icon = gtk_image_new_from_stock (GTK_STOCK_FIND,
@@ -2601,7 +2602,7 @@ midori_browser_init (MidoriBrowser* browser)
     gtk_toolbar_insert (GTK_TOOLBAR (priv->find), toolitem, -1);
     priv->find_case = gtk_toggle_tool_button_new_from_stock (
         GTK_STOCK_SPELL_CHECK);
-    gtk_tool_button_set_label (GTK_TOOL_BUTTON (priv->find_case), "Match Case");
+    gtk_tool_button_set_label (GTK_TOOL_BUTTON (priv->find_case), _("Match Case"));
     gtk_tool_item_set_is_important (GTK_TOOL_ITEM (priv->find_case), TRUE);
     gtk_toolbar_insert (GTK_TOOLBAR (priv->find), priv->find_case, -1);
     priv->find_highlight = gtk_toggle_tool_button_new_from_stock (
@@ -2618,7 +2619,7 @@ midori_browser_init (MidoriBrowser* browser)
     gtk_tool_item_set_expand (GTK_TOOL_ITEM (toolitem), TRUE);
     gtk_toolbar_insert (GTK_TOOLBAR (priv->find), toolitem, -1);
     toolitem = gtk_tool_button_new_from_stock (GTK_STOCK_CLOSE);
-    gtk_tool_button_set_label (GTK_TOOL_BUTTON (toolitem), "Close Findbar");
+    gtk_tool_button_set_label (GTK_TOOL_BUTTON (toolitem), _("Close Findbar"));
     g_signal_connect (toolitem, "clicked",
         G_CALLBACK (midori_browser_find_button_close_clicked_cb), browser);
     gtk_toolbar_insert (GTK_TOOLBAR (priv->find), toolitem, -1);
index 4ff42779cce5e713d1171fafbed4330b132579e2..d58ad323e40dd2385cc3d71f3b884313a8e1e34d 100644 (file)
@@ -12,6 +12,7 @@
 #include "midori-panel.h"
 
 #include "sokoke.h"
+#include <glib/gi18n.h>
 
 G_DEFINE_TYPE (MidoriPanel, midori_panel, GTK_TYPE_HBOX)
 
@@ -136,7 +137,7 @@ midori_panel_class_init (MidoriPanelClass* class)
                                      g_param_spec_enum (
                                      "shadow-type",
                                      "Shadow Type",
-                                     "Appearance of the shadow around each panel",
+                                     _("Appearance of the shadow around each panel"),
                                      GTK_TYPE_SHADOW_TYPE,
                                      GTK_SHADOW_NONE,
                                      flags));
@@ -146,7 +147,7 @@ midori_panel_class_init (MidoriPanelClass* class)
                                      g_param_spec_object (
                                      "menu",
                                      "Menu",
-                                     "Menu to hold panel items",
+                                     _("Menu to hold panel items"),
                                      GTK_TYPE_MENU,
                                      G_PARAM_READWRITE));
 
@@ -155,7 +156,7 @@ midori_panel_class_init (MidoriPanelClass* class)
                                      g_param_spec_int (
                                      "page",
                                      "Page",
-                                     "The index of the current page",
+                                     _("The index of the current page"),
                                      -1, G_MAXINT, -1,
                                      flags));
 
@@ -199,8 +200,8 @@ midori_panel_init (MidoriPanel* panel)
     gtk_container_set_border_width (GTK_CONTAINER (toolitem), 6);
     gtk_toolbar_insert (GTK_TOOLBAR (labelbar), toolitem, -1);
     toolitem = gtk_tool_button_new_from_stock (GTK_STOCK_CLOSE);
-    gtk_tool_button_set_label (GTK_TOOL_BUTTON (toolitem), "Close panel");
-    sokoke_tool_item_set_tooltip_text (GTK_TOOL_ITEM (toolitem), "Close panel");
+    gtk_tool_button_set_label (GTK_TOOL_BUTTON (toolitem), _("Close panel"));
+    sokoke_tool_item_set_tooltip_text (GTK_TOOL_ITEM (toolitem), _("Close panel"));
     g_signal_connect (toolitem, "clicked",
         G_CALLBACK (midori_panel_button_close_clicked_cb), panel);
     gtk_toolbar_insert (GTK_TOOLBAR (labelbar), toolitem, -1);
@@ -364,7 +365,7 @@ midori_panel_append_page (MidoriPanel* panel,
 
     guint n = midori_panel_page_num (panel, child);
 
-    const gchar* text = label ? label : "Untitled";
+    const gchar* text = label ? label : _("Untitled");
 
     GtkWidget* image;
     GtkToolItem* toolitem = gtk_radio_tool_button_new (priv->group);
index d3f8f6a677bfb568ea10e0da1e593fcf35a34122..26573fa219915f951a4cf0c92597f9f1a9e25da3 100644 (file)
@@ -12,6 +12,7 @@
 #include "midori-trash.h"
 
 #include "sokoke.h"
+#include <glib/gi18n.h>
 
 G_DEFINE_TYPE (MidoriTrash, midori_trash, G_TYPE_OBJECT)
 
@@ -93,7 +94,7 @@ midori_trash_class_init (MidoriTrashClass* class)
                                      g_param_spec_uint (
                                      "limit",
                                      "Limit",
-                                     "The maximum number of items",
+                                     _("The maximum number of items"),
                                      0, G_MAXUINT, 10,
                                      flags));
 
index 0fd34ebd2c318a9de686d6e6389551a8e3f434a4..d1a408c61df1173ed0b40c92987072e236ddc4b8 100644 (file)
@@ -12,6 +12,7 @@
 #include "midori-webview.h"
 
 #include "sokoke.h"
+#include <glib/gi18n.h>
 
 G_DEFINE_TYPE (MidoriWebSettings, midori_web_settings, WEBKIT_TYPE_WEB_SETTINGS)
 
@@ -65,7 +66,7 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
                                      g_param_spec_int (
                                      "tab-label-size",
                                      "Tab Label Size",
-                                     "The desired tab label size",
+                                     _("The desired tab label size"),
                                      0, G_MAXINT, 10,
                                      flags));
 
@@ -74,7 +75,7 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
                                      g_param_spec_boolean (
                                      "close-button",
                                      "Close Button",
-                                     "Whether the associated tab has a close button",
+                                     _("Whether tabs have close buttons"),
                                      FALSE,
                                      flags));
 
@@ -83,7 +84,7 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
                                      g_param_spec_boolean (
                                      "middle-click-goto",
                                      "Middle Click Goto",
-                                     "Load an uri from the selection via middle click",
+                                     _("Load an URL from the selection via middle click"),
                                      FALSE,
                                      flags));
 
index c61ad92c0540dec3086b37af080c828be8d8e5b5..2e1d299f051bff9f8f2eb55f3e29b208faafd23b 100644 (file)
@@ -214,7 +214,7 @@ midori_web_view_class_init (MidoriWebViewClass* class)
                                      g_param_spec_object (
                                      "icon",
                                      "Icon",
-                                     "The icon of the loaded page",
+                                     _("The icon of the currently loaded page"),
                                      GDK_TYPE_PIXBUF,
                                      G_PARAM_READWRITE));
 
@@ -223,7 +223,7 @@ midori_web_view_class_init (MidoriWebViewClass* class)
                                      g_param_spec_string (
                                      "uri",
                                      "Uri",
-                                     "The current uri of the loaded page",
+                                     _("The URI of the currently loaded page"),
                                      "about:blank",
                                      flags));
 
@@ -232,7 +232,7 @@ midori_web_view_class_init (MidoriWebViewClass* class)
                                      g_param_spec_string (
                                      "title",
                                      "Title",
-                                     "The current title of the loaded page",
+                                     _("The title of the currently loaded page"),
                                      NULL,
                                      flags));
 
@@ -241,7 +241,7 @@ midori_web_view_class_init (MidoriWebViewClass* class)
                                      g_param_spec_string (
                                      "statusbar-text",
                                      "Statusbar Text",
-                                     "The text that is displayed in the statusbar",
+                                     _("The text that is displayed in the statusbar"),
                                      "",
                                      flags));
 
@@ -250,7 +250,7 @@ midori_web_view_class_init (MidoriWebViewClass* class)
                                      g_param_spec_object (
                                      "settings",
                                      "Settings",
-                                     "The associated settings",
+                                     _("The associated settings"),
                                      MIDORI_TYPE_WEB_SETTINGS,
                                      G_PARAM_READWRITE));
 
@@ -469,7 +469,7 @@ webkit_web_view_populate_popup_cb (GtkWidget*     web_view,
     if (uri)
     {
         GtkWidget* menuitem = gtk_image_menu_item_new_with_mnemonic (
-            "Open Link in New _Tab");
+            _("Open Link in New _Tab"));
         GdkScreen* screen = gtk_widget_get_screen (web_view);
         GtkIconTheme* icon_theme = gtk_icon_theme_get_for_screen (screen);
         if (gtk_icon_theme_has_icon (icon_theme, STOCK_TAB_NEW))
@@ -492,7 +492,7 @@ webkit_web_view_populate_popup_cb (GtkWidget*     web_view,
         if (text && strchr (text, '.') && !strchr (text, ' '))
         {
             GtkWidget* menuitem = gtk_image_menu_item_new_with_mnemonic (
-                "Open URL in New _Tab");
+                _("Open URL in New _Tab"));
             GtkWidget* icon = gtk_image_new_from_stock (GTK_STOCK_JUMP_TO,
                                                         GTK_ICON_SIZE_MENU);
             gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menuitem), icon);
index e4cd08360f281b8106f054c1b9164451292cb4dd..ce5a9425bce19152e0c4cf9641f3a1f38f2caa00 100644 (file)
@@ -296,7 +296,7 @@ static void on_prefs_protocols_combobox_changed(GtkWidget* widget, CPrefs* prefs
 
 GtkWidget* prefs_preferences_dialog_new(MidoriBrowser* browser)
 {
-    gchar* dialogTitle = g_strdup_printf("%s Preferences", g_get_application_name());
+    gchar* dialogTitle = g_strdup_printf(_("%s Preferences"), g_get_application_name());
     GtkWidget* dialog = gtk_dialog_new_with_buttons(dialogTitle
         , GTK_WINDOW(browser)
         , GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR
@@ -360,41 +360,41 @@ GtkWidget* prefs_preferences_dialog_new(MidoriBrowser* browser)
      gtk_container_add(GTK_CONTAINER(align), __widget);\
      FILLED_ADD(align, __left, __right, __top, __bottom)
     // Page "General"
-    PAGE_NEW("General");
-    FRAME_NEW("Startup");
+    PAGE_NEW(_("General"));
+    FRAME_NEW(_("Startup"));
     TABLE_NEW(2, 2);
-    INDENTED_ADD(gtk_label_new("Load on startup"), 0, 1, 0, 1);
+    INDENTED_ADD(gtk_label_new(_("Load on startup")), 0, 1, 0, 1);
     combobox = gtk_combo_box_new_text();
     sokoke_combo_box_add_strings(GTK_COMBO_BOX(combobox)
-     , "Blank page", "Homepage", "Last open pages", NULL);
+     , _("Blank page"), _("Homepage"), _("Last open pages"), NULL);
     gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), config->startup);
     g_signal_connect(combobox, "changed"
      , G_CALLBACK(on_prefs_loadonstartup_changed), prefs);
     FILLED_ADD(combobox, 1, 2, 0, 1);
-    INDENTED_ADD(gtk_label_new("Homepage"), 0, 1, 1, 2);
+    INDENTED_ADD(gtk_label_new(_("Homepage")), 0, 1, 1, 2);
     entry = gtk_entry_new();
     gtk_entry_set_text(GTK_ENTRY(entry), config->homepage);
     g_signal_connect(entry, "focus-out-event"
     , G_CALLBACK(on_prefs_homepage_focus_out), prefs);
     FILLED_ADD(entry, 1, 2, 1, 2);
     // TODO: We need something like "use current website"
-    FRAME_NEW("Downloads");
+    FRAME_NEW(_("Transfers"));
     TABLE_NEW(1, 2);
-    INDENTED_ADD(gtk_label_new("Download folder"), 0, 1, 0, 1);
+    INDENTED_ADD(gtk_label_new(_("Download folder")), 0, 1, 0, 1);
     GtkWidget* filebutton = gtk_file_chooser_button_new(
-     "Choose download folder", GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
+     _("Choose downloaded files folder"), GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
     // FIXME: The default should probably be ~/Desktop
     gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(filebutton)
      , g_get_home_dir()); //...
     gtk_widget_set_sensitive(filebutton, FALSE); //...
     FILLED_ADD(filebutton, 1, 2, 0, 1);
     checkbutton = gtk_check_button_new_with_mnemonic
-     ("Show a notification window for finished downloads");
+     (_("Show a notification window for finished transfers"));
     gtk_widget_set_sensitive(checkbutton, FALSE); //...
     SPANNED_ADD(checkbutton, 0, 2, 1, 2);
-    FRAME_NEW("Languages");
+    FRAME_NEW(_("Languages"));
     TABLE_NEW(1, 2);
-    INDENTED_ADD(gtk_label_new("Preferred languages"), 0, 1, 0, 1);
+    INDENTED_ADD(gtk_label_new(_("Preferred languages")), 0, 1, 0, 1);
     entry = gtk_entry_new();
     // TODO: Make sth like get_browser_languages_default filtering encodings and C out
     // TODO: Provide a real ui with real language names (iso-codes)
@@ -406,32 +406,32 @@ GtkWidget* prefs_preferences_dialog_new(MidoriBrowser* browser)
     FILLED_ADD(entry, 1, 2, 0, 1);
 
     // Page "Appearance"
-    PAGE_NEW("Appearance");
-    FRAME_NEW("Font settings");
+    PAGE_NEW(_("Appearance"));
+    FRAME_NEW(_("Font settings"));
     TABLE_NEW(5, 2);
-    INDENTED_ADD(gtk_label_new_with_mnemonic("Default _font"), 0, 1, 0, 1);
+    INDENTED_ADD(gtk_label_new_with_mnemonic(_("Default _font")), 0, 1, 0, 1);
     gchar* defaultFont = g_strdup_printf("%s %d"
      , config->defaultFontFamily, config->defaultFontSize);
     button = gtk_font_button_new_with_font(defaultFont);
     g_free(defaultFont);
     g_signal_connect(button, "font-set", G_CALLBACK(on_prefs_defaultFont_changed), prefs);
     FILLED_ADD(button, 1, 2, 0, 1);
-    INDENTED_ADD(gtk_label_new_with_mnemonic("_Minimum font size"), 0, 1, 1, 2);
+    INDENTED_ADD(gtk_label_new_with_mnemonic(_("_Minimum font size")), 0, 1, 1, 2);
     hbox = gtk_hbox_new(FALSE, 4);
     spinbutton = gtk_spin_button_new_with_range(1, G_MAXINT, 1);
     gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbutton), config->minimumFontSize);
     g_signal_connect(spinbutton, "value-changed"
      , G_CALLBACK(on_prefs_minimumFontSize_changed), prefs);
     gtk_box_pack_start(GTK_BOX(hbox), spinbutton, FALSE, FALSE, 0);
-    button = gtk_button_new_with_mnemonic("_Advanced");
+    button = gtk_button_new_with_mnemonic(_("_Advanced"));
     gtk_widget_set_sensitive(button, FALSE); //...
     gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 4);
     FILLED_ADD(hbox, 1, 2, 1, 2);
-    INDENTED_ADD(gtk_label_new_with_mnemonic("Default _encoding"), 0, 1, 2, 3);
+    INDENTED_ADD(gtk_label_new_with_mnemonic(_("Default _encoding")), 0, 1, 2, 3);
     combobox = gtk_combo_box_new_text();
     sokoke_combo_box_add_strings(GTK_COMBO_BOX(combobox)
-     , "Chinese (BIG5)", "Japanese (SHIFT_JIS)", "Russian (KOI8-R)"
-     , "Unicode (UTF-8)", "Western (ISO-8859-1)", NULL);
+     , _("Chinese (BIG5)"), _("Japanese (SHIFT_JIS)"), _("Russian (KOI8-R)")
+     , _("Unicode (UTF-8)"), _("Western (ISO-8859-1)"), NULL);
     if(!strcmp(config->defaultEncoding, "BIG5"))
         gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), 0);
     else if(!strcmp(config->defaultEncoding, "SHIFT_JIS"))
@@ -446,95 +446,95 @@ GtkWidget* prefs_preferences_dialog_new(MidoriBrowser* browser)
     g_signal_connect(combobox, "changed"
      , G_CALLBACK(on_prefs_defaultEncoding_changed), prefs);
     FILLED_ADD(combobox, 1, 2, 2, 3);
-    button = gtk_button_new_with_label("Advanced settings");
+    button = gtk_button_new_with_label(_("Advanced settings"));
     gtk_widget_set_sensitive(button, FALSE); //...
     WIDGET_ADD(button, 1, 2, 2, 3);
-    FRAME_NEW("Default colors");
+    FRAME_NEW(_("Default colors"));
     TABLE_NEW(2, 4);
-    SEMI_INDENTED_ADD(gtk_label_new("Text color"), 0, 1, 0, 1);
+    SEMI_INDENTED_ADD(gtk_label_new(_("Text color")), 0, 1, 0, 1);
     colorbutton = gtk_color_button_new();
     gtk_widget_set_sensitive(colorbutton, FALSE); //...
     WIDGET_ADD(colorbutton, 1, 2, 0, 1);
-    SEMI_INDENTED_ADD(gtk_label_new("Background color"), 2, 3, 0, 1);
+    SEMI_INDENTED_ADD(gtk_label_new(_("Background color")), 2, 3, 0, 1);
     colorbutton = gtk_color_button_new();
     gtk_widget_set_sensitive(colorbutton, FALSE); //...
     WIDGET_ADD(colorbutton, 3, 4, 0, 1);
-    SEMI_INDENTED_ADD(gtk_label_new("Normal link color"), 0, 1, 1, 2);
+    SEMI_INDENTED_ADD(gtk_label_new(_("Link color")), 0, 1, 1, 2);
     colorbutton = gtk_color_button_new();
     gtk_widget_set_sensitive(colorbutton, FALSE); //...
     WIDGET_ADD(colorbutton, 1, 2, 1, 2);
-    SEMI_INDENTED_ADD(gtk_label_new("Visited link color"), 2, 3, 1, 2);
+    SEMI_INDENTED_ADD(gtk_label_new(_("Visited link color")), 2, 3, 1, 2);
     colorbutton = gtk_color_button_new();
     gtk_widget_set_sensitive(colorbutton, FALSE); //...
     WIDGET_ADD(colorbutton, 3, 4, 1, 2);
 
     // Page "Behavior"
-    PAGE_NEW("Behavior");
-    FRAME_NEW("Browsing");
+    PAGE_NEW(_("Behavior"));
+    FRAME_NEW(_("Browsing"));
     TABLE_NEW(3, 2);
-    INDENTED_ADD(gtk_label_new_with_mnemonic("Open _new pages in"), 0, 1, 0, 1);
+    INDENTED_ADD(gtk_label_new_with_mnemonic(_("Open _new pages in")), 0, 1, 0, 1);
     combobox = gtk_combo_box_new_text();
     sokoke_combo_box_add_strings(GTK_COMBO_BOX(combobox)
-     , "New tab", "New window", "Current tab", NULL);
+     , _("New tab"), _("New window"), _("Current tab"), NULL);
     gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), config->newPages);
     g_signal_connect(combobox, "changed", G_CALLBACK(on_prefs_newpages_changed), prefs);
     gtk_widget_set_sensitive(combobox, FALSE); //...
     FILLED_ADD(combobox, 1, 2, 0, 1);
-    checkbutton = gtk_check_button_new_with_mnemonic("_Middle click goto");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("_Middle click opens selection"));
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->middleClickGoto);
     g_signal_connect(checkbutton, "toggled"
      , G_CALLBACK(on_prefs_middleClickGoto_toggled), prefs);
     INDENTED_ADD(checkbutton, 0, 1, 1, 2);
-    checkbutton = gtk_check_button_new_with_mnemonic("Open tabs in the _background");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("Open tabs in the _background"));
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->openTabsInTheBackground);
     g_signal_connect(checkbutton, "toggled"
      , G_CALLBACK(on_prefs_openTabsInTheBackground_toggled), prefs);
     SPANNED_ADD(checkbutton, 1, 2, 1, 2);
-    checkbutton = gtk_check_button_new_with_mnemonic("Open popups in _tabs");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("Open popups in _tabs"));
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->openPopupsInTabs);
     g_signal_connect(checkbutton, "toggled"
      , G_CALLBACK(on_prefs_openPopupsInTabs_toggled), prefs);
     gtk_widget_set_sensitive(checkbutton, FALSE); //...
     SPANNED_ADD(checkbutton, 0, 2, 2, 3);
-    FRAME_NEW("Features");
+    FRAME_NEW(_("Features"));
     TABLE_NEW(4, 2);
-    checkbutton = gtk_check_button_new_with_mnemonic("Load _images");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("Load _images"));
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->autoLoadImages);
     g_signal_connect(checkbutton, "toggled"
      , G_CALLBACK(on_prefs_loadImagesAutomatically_toggled), prefs);
     INDENTED_ADD(checkbutton, 0, 1, 0, 1);
-    checkbutton = gtk_check_button_new_with_mnemonic("_Shrink images to fit");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("_Shrink images to fit"));
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->autoShrinkImages);
     g_signal_connect(checkbutton, "toggled"
      , G_CALLBACK(on_prefs_shrinkImagesToFit_toggled), prefs);
     SPANNED_ADD(checkbutton, 1, 2, 0, 1);
-    checkbutton = gtk_check_button_new_with_mnemonic("Print _backgrounds");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("Print _backgrounds"));
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->printBackgrounds);
     g_signal_connect(checkbutton, "toggled"
      , G_CALLBACK(on_prefs_printBackgrounds_toggled), prefs);
     INDENTED_ADD(checkbutton, 0, 1, 1, 2);
-    checkbutton = gtk_check_button_new_with_mnemonic("_Resizable textareas");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("_Resizable textareas"));
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->resizableTextAreas);
     g_signal_connect(checkbutton, "toggled"
      , G_CALLBACK(on_prefs_resizableTextAreas_toggled), prefs);
     SPANNED_ADD(checkbutton, 1, 2, 1, 2);
-    checkbutton = gtk_check_button_new_with_mnemonic("Enable _scripts");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("Enable _scripts"));
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->enableScripts);
     g_signal_connect(checkbutton, "toggled"
      , G_CALLBACK(on_prefs_enableJavaScript_toggled), prefs);
     INDENTED_ADD(checkbutton, 0, 1, 2, 3);
-    checkbutton = gtk_check_button_new_with_mnemonic("Enable _plugins");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("Enable _plugins"));
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->enablePlugins);
     g_signal_connect(checkbutton, "toggled"
      , G_CALLBACK(on_prefs_enablePlugins_toggled), prefs);
     SPANNED_ADD(checkbutton, 1, 2, 2, 3);
-    checkbutton = gtk_check_button_new_with_mnemonic("_User Stylesheet");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("_User Stylesheet"));
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->userStylesheet);
     g_signal_connect(checkbutton, "toggled"
      , G_CALLBACK(on_prefs_userStylesheet_toggled), prefs);
     INDENTED_ADD(checkbutton, 0, 1, 3, 4);
     filebutton = gtk_file_chooser_button_new(
-     "Choose user stylesheet", GTK_FILE_CHOOSER_ACTION_OPEN);
+     _("Choose user stylesheet"), GTK_FILE_CHOOSER_ACTION_OPEN);
     prefs->userStylesheetUri = filebutton;
     gtk_file_chooser_set_uri(GTK_FILE_CHOOSER(filebutton), config->userStylesheetUri);
     g_signal_connect(filebutton, "file-set"
@@ -543,54 +543,54 @@ GtkWidget* prefs_preferences_dialog_new(MidoriBrowser* browser)
     FILLED_ADD(filebutton, 1, 2, 3, 4);
 
     // Page "Interface"
-    PAGE_NEW("Interface");
-    FRAME_NEW("Navigationbar");
+    PAGE_NEW(_("Interface"));
+    FRAME_NEW(_("Navigationbar"));
     TABLE_NEW(3, 2);
-    INDENTED_ADD(gtk_label_new_with_mnemonic("_Toolbar style"), 0, 1, 0, 1);
+    INDENTED_ADD(gtk_label_new_with_mnemonic(_("_Toolbar style")), 0, 1, 0, 1);
     combobox = gtk_combo_box_new_text();
     sokoke_combo_box_add_strings(GTK_COMBO_BOX(combobox)
-     , "Default", "Icons", "Text", "Both", "Both horizontal", NULL);
+     , _("Default"), _("Icons"), _("Text"), _("Both"), _("Both horizontal"), NULL);
     gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), config->toolbarStyle);
     g_signal_connect(combobox, "changed"
      , G_CALLBACK(on_prefs_toolbarstyle_changed), prefs);
     FILLED_ADD(combobox, 1, 2, 0, 1);
-    checkbutton = gtk_check_button_new_with_mnemonic("Show small _icons");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("Show small _icons"));
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->toolbarSmall);
     g_signal_connect(checkbutton, "toggled"
      , G_CALLBACK(on_prefs_toolbarSmall_toggled), prefs);
     INDENTED_ADD(checkbutton, 0, 1, 1, 2);
-    checkbutton = gtk_check_button_new_with_mnemonic("Show web_search");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("Show Web_search"));
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->toolbarWebSearch);
     g_signal_connect(checkbutton, "toggled"
      , G_CALLBACK(on_prefs_toolbarWebSearch_toggled), prefs);
     SPANNED_ADD(checkbutton, 1, 2, 1, 2);
-    checkbutton = gtk_check_button_new_with_mnemonic("Show _New Tab Button");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("Show _New Tab"));
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->toolbarNewTab);
     g_signal_connect(checkbutton, "toggled"
      , G_CALLBACK(on_prefs_toolbarNewTab_toggled), prefs);
     INDENTED_ADD(checkbutton, 0, 1, 2, 3);
-    checkbutton = gtk_check_button_new_with_mnemonic("Show _closed tabs button");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("Show _Trash"));
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->toolbarClosedTabs);
     g_signal_connect(checkbutton, "toggled"
      , G_CALLBACK(on_prefs_toolbarClosedTabs_toggled), prefs);
     SPANNED_ADD(checkbutton, 1, 2, 2, 3);
-    FRAME_NEW("Miscellaneous");
+    FRAME_NEW(_("Miscellaneous"));
     TABLE_NEW(2, 2);
-    checkbutton = gtk_check_button_new_with_mnemonic("Close _buttons on tabs");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("Close _buttons on tabs"));
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton), config->tabClose);
     g_signal_connect(checkbutton, "toggled"
      , G_CALLBACK(on_prefs_tabClose_toggled), prefs);
     INDENTED_ADD(checkbutton, 0, 1, 0, 1);
     hbox = gtk_hbox_new(FALSE, 4);
     gtk_box_pack_start(GTK_BOX(hbox)
-     , gtk_label_new_with_mnemonic("Tab Si_ze"), FALSE, FALSE, 4);
+     , gtk_label_new_with_mnemonic(_("Tab Si_ze")), FALSE, FALSE, 4);
     spinbutton = gtk_spin_button_new_with_range(0, 36, 1);
     gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbutton), config->tabSize);
     g_signal_connect(spinbutton, "changed"
      , G_CALLBACK(on_prefs_tabSize_changed), prefs);
     gtk_box_pack_start(GTK_BOX(hbox), spinbutton, FALSE, FALSE, 0);
     FILLED_ADD(hbox, 1, 2, 0, 1);
-    INDENTED_ADD(gtk_label_new_with_mnemonic("_Location search engine"), 0, 1, 1, 2);
+    INDENTED_ADD(gtk_label_new_with_mnemonic(_("_Location search engine")), 0, 1, 1, 2);
     entry = gtk_entry_new();
     gtk_entry_set_text(GTK_ENTRY(entry), config->locationSearch);
     g_signal_connect(entry, "focus-out-event"
@@ -598,14 +598,14 @@ GtkWidget* prefs_preferences_dialog_new(MidoriBrowser* browser)
     FILLED_ADD(entry, 1, 2, 1, 2);
 
     // Page "Network"
-    PAGE_NEW("Network");
-    FRAME_NEW("Proxy Server");
+    PAGE_NEW(_("Network"));
+    FRAME_NEW(_("Proxy Server"));
     TABLE_NEW(5, 2);
-    checkbutton = gtk_check_button_new_with_mnemonic("_Custom proxy server");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("_Custom proxy server"));
     gtk_widget_set_sensitive(checkbutton, FALSE); //...
     SPANNED_ADD(checkbutton, 0, 2, 0, 1);
     hbox = gtk_hbox_new(FALSE, 4);
-    INDENTED_ADD(gtk_label_new_with_mnemonic("_Host/ Port"), 0, 1, 1, 2);
+    INDENTED_ADD(gtk_label_new_with_mnemonic(_("_Host/ Port")), 0, 1, 1, 2);
     entry = gtk_entry_new();
     gtk_widget_set_sensitive(entry, FALSE); //...
     gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0);
@@ -614,61 +614,61 @@ GtkWidget* prefs_preferences_dialog_new(MidoriBrowser* browser)
     gtk_box_pack_start(GTK_BOX(hbox), spinbutton, FALSE, FALSE, 0);
     FILLED_ADD(hbox, 1, 2, 1, 2);
     checkbutton = gtk_check_button_new_with_mnemonic
-     ("Proxy requires authentication");
+     (_("Proxy requires authentication"));
     gtk_widget_set_sensitive(checkbutton, FALSE); //...
     // TODO: The proxy user and pass need to be indented further
     SPANNED_ADD(checkbutton, 0, 2, 2, 3);
-    INDENTED_ADD(gtk_label_new("Username"), 0, 1, 3, 4);
+    INDENTED_ADD(gtk_label_new(_("Username")), 0, 1, 3, 4);
     entry = gtk_entry_new();
     gtk_widget_set_sensitive(entry, FALSE); //...
     FILLED_ADD(entry, 1, 2, 3, 4);
-    INDENTED_ADD(gtk_label_new("Password"), 0, 1, 4, 5);
+    INDENTED_ADD(gtk_label_new(_("Password")), 0, 1, 4, 5);
     entry = gtk_entry_new();
     gtk_widget_set_sensitive(entry, FALSE); //...
     FILLED_ADD(entry, 1, 2, 4, 5);
-    FRAME_NEW("Cache");
+    FRAME_NEW(_("Cache"));
     TABLE_NEW(1, 2);
-    INDENTED_ADD(gtk_label_new("Cache size"), 0, 1, 0, 1);
+    INDENTED_ADD(gtk_label_new(_("Cache size")), 0, 1, 0, 1);
     hbox = gtk_hbox_new(FALSE, 4);
     spinbutton = gtk_spin_button_new_with_range(0, 10000, 10);
     gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbutton), 100/*config->iCacheSize*/);
     gtk_widget_set_sensitive(spinbutton, FALSE); //...
     gtk_box_pack_start(GTK_BOX(hbox), spinbutton, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new("MB"), FALSE, FALSE, 0);
-    button = gtk_button_new_with_label("Clear cache");
+    gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new(_("MB")), FALSE, FALSE, 0);
+    button = gtk_button_new_with_label(_("Clear cache"));
     gtk_widget_set_sensitive(button, FALSE); //...
     gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 4);
     FILLED_ADD(hbox, 1, 2, 0, 1);
 
     // Page "Privacy"
-    PAGE_NEW("Privacy");
-    FRAME_NEW("Cookies");
+    PAGE_NEW(_("Privacy"));
+    FRAME_NEW(_("Cookies"));
     TABLE_NEW(3, 2);
-    INDENTED_ADD(gtk_label_new("Accept cookies"), 0, 1, 0, 1);
+    INDENTED_ADD(gtk_label_new(_("Accept cookies")), 0, 1, 0, 1);
     combobox = gtk_combo_box_new_text();
     sokoke_combo_box_add_strings(GTK_COMBO_BOX(combobox)
-     , "All cookies", "Session cookies", "None", NULL);
+     , _("All cookies"), _("Session cookies"), _("None"), NULL);
     gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), 0); //...
     gtk_widget_set_sensitive(combobox, FALSE); //...
     FILLED_ADD(combobox, 1, 2, 0, 1);
     checkbutton = gtk_check_button_new_with_mnemonic
-     ("Allow cookies from the original website only");
+     (_("Allow cookies from the original website only"));
     gtk_widget_set_sensitive(checkbutton, FALSE); //...
     SPANNED_ADD(checkbutton, 0, 2, 1, 2);
-    INDENTED_ADD(gtk_label_new("Maximum cookie age"), 0, 1, 2, 3);
+    INDENTED_ADD(gtk_label_new(_("Maximum cookie age")), 0, 1, 2, 3);
     hbox = gtk_hbox_new(FALSE, 4);
     spinbutton = gtk_spin_button_new_with_range(0, 360, 1);
     gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbutton), 30/*config->iCookieAgeMax*/);
     gtk_widget_set_sensitive(spinbutton, FALSE); //...
     gtk_box_pack_start(GTK_BOX(hbox), spinbutton, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new("days"), FALSE, FALSE, 0);
-    button = gtk_button_new_with_label("View cookies");
+    gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new(_("days")), FALSE, FALSE, 0);
+    button = gtk_button_new_with_label(_("View cookies"));
     gtk_widget_set_sensitive(button, FALSE); //...
     gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 4);
     FILLED_ADD(hbox, 1, 2, 2, 3);
-    FRAME_NEW("History");
+    FRAME_NEW(_("History"));
     TABLE_NEW(3, 2);
-    checkbutton = gtk_check_button_new_with_mnemonic("Remember my visited pages");
+    checkbutton = gtk_check_button_new_with_mnemonic(_("Remember my visited pages"));
     gtk_widget_set_sensitive(checkbutton, FALSE); //...
     SPANNED_ADD(checkbutton, 0, 1, 0, 1);
     hbox = gtk_hbox_new(FALSE, 4);
@@ -676,20 +676,20 @@ GtkWidget* prefs_preferences_dialog_new(MidoriBrowser* browser)
     gtk_spin_button_set_value(GTK_SPIN_BUTTON(spinbutton), 30/*config->iHistoryAgeMax*/);
     gtk_widget_set_sensitive(spinbutton, FALSE); //...
     gtk_box_pack_start(GTK_BOX(hbox), spinbutton, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new("days"), FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(hbox), gtk_label_new(_("days")), FALSE, FALSE, 0);
     SPANNED_ADD(hbox, 1, 2, 0, 1);
     checkbutton = gtk_check_button_new_with_mnemonic
-     ("Remember my form inputs");
+     (_("Remember my form inputs"));
     gtk_widget_set_sensitive(checkbutton, FALSE); //...
     SPANNED_ADD(checkbutton, 0, 2, 1, 2);
     checkbutton = gtk_check_button_new_with_mnemonic
-     ("Remember my downloaded files");
+     (_("Remember my downloaded files"));
     gtk_widget_set_sensitive(checkbutton, FALSE); //...
     SPANNED_ADD(checkbutton, 0, 2, 2, 3);
 
     // Page "Programs"
-    PAGE_NEW("Programs");
-    FRAME_NEW("External programs");
+    PAGE_NEW(_("Programs"));
+    FRAME_NEW(_("External programs"));
     TABLE_NEW(3, 2);
     GtkWidget* treeview; GtkTreeViewColumn* column;
     GtkCellRenderer* renderer_text; GtkCellRenderer* renderer_pixbuf;
@@ -700,10 +700,10 @@ GtkWidget* prefs_preferences_dialog_new(MidoriBrowser* browser)
     renderer_text = gtk_cell_renderer_text_new();
     renderer_pixbuf = gtk_cell_renderer_pixbuf_new();
     column = gtk_tree_view_column_new_with_attributes(
-     "Protocol", renderer_text, "text", PROTOCOLS_COL_NAME, NULL);
+     _("Protocol"), renderer_text, "text", PROTOCOLS_COL_NAME, NULL);
     gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
     column = gtk_tree_view_column_new();
-    gtk_tree_view_column_set_title(column, "Command");
+    gtk_tree_view_column_set_title(column, _("Command"));
     gtk_tree_view_column_pack_start(column, renderer_pixbuf, FALSE);
     gtk_tree_view_column_set_cell_data_func(column, renderer_pixbuf
      , (GtkTreeCellDataFunc)on_prefs_protocols_render_icon, prefs, NULL);
index 8bcca67f695ca96c7ff0cee2b83edfd8b14d1233..7f681996a908e5dcdb893412fefb029b53173dd1 100644 (file)
@@ -18,6 +18,7 @@
     #include <unistd.h>
 #endif
 #include <gdk/gdkkeysyms.h>
+#include <glib/gi18n.h>
 
 void sokoke_combo_box_add_strings(GtkComboBox* combobox
  , const gchar* labelFirst, ...)
@@ -153,7 +154,7 @@ gpointer sokoke_superuser_warning_new(void)
         GtkWidget* hbox = gtk_event_box_new();
         gtk_widget_modify_bg(hbox, GTK_STATE_NORMAL
          , &hbox->style->bg[GTK_STATE_SELECTED]);
-        GtkWidget* label = gtk_label_new("Warning: You are using the superuser account!");
+        GtkWidget* label = gtk_label_new(_("Warning: You are using a superuser account!"));
         gtk_misc_set_padding(GTK_MISC(label), 0, 2);
         gtk_widget_modify_fg(GTK_WIDGET(label), GTK_STATE_NORMAL
          , &GTK_WIDGET(label)->style->fg[GTK_STATE_SELECTED]);
@@ -263,7 +264,7 @@ gboolean sokoke_key_file_save_to_file(GKeyFile* keyFile
     if(!(fp = fopen(filename, "w")))
     {
         *error = g_error_new(G_FILE_ERROR, G_FILE_ERROR_ACCES
-         , "Writing failed.");
+         , _("Writing failed."));
         return FALSE;
     }
     fputs(data, fp);
index a7a4d6ae976132825d9a9a150f8b0ccd60e8b074..1f4d4f48b0f06e0131d710c923c8e366c1c70fac 100644 (file)
@@ -18,6 +18,7 @@
 
 #include <string.h>
 #include <gdk/gdkkeysyms.h>
+#include <glib/gi18n.h>
 
 void update_searchEngine(guint index, GtkWidget* search)
 {
@@ -78,7 +79,7 @@ void on_webSearch_icon_released(GtkWidget* widget, SexyIconEntryPosition* pos
     }
     else
     {
-        menuitem = gtk_image_menu_item_new_with_label("Empty");
+        menuitem = gtk_image_menu_item_new_with_label(_("Empty"));
         gtk_widget_set_sensitive(menuitem, FALSE);
         gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
         gtk_widget_show(menuitem);
@@ -149,7 +150,7 @@ const gchar* STR_NON_NULL(const gchar* string)
 static void webSearch_editEngine_dialog_new(gboolean newEngine, CWebSearch* webSearch)
 {
     GtkWidget* dialog = gtk_dialog_new_with_buttons(
-        newEngine ? "Add search engine" : "Edit search engine"
+        newEngine ? _("Add search engine") : _("Edit search engine")
         , GTK_WINDOW(webSearch->window)
         , GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR
         , GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL
@@ -179,7 +180,7 @@ static void webSearch_editEngine_dialog_new(gboolean newEngine, CWebSearch* webS
 
     GtkWidget* hbox = gtk_hbox_new(FALSE, 8);
     gtk_container_set_border_width(GTK_CONTAINER(hbox), 5);
-    GtkWidget* label = gtk_label_new_with_mnemonic("_Name:");
+    GtkWidget* label = gtk_label_new_with_mnemonic(_("_Name:"));
     gtk_size_group_add_widget(sizegroup, label);
     gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
     GtkWidget* entry_shortName = gtk_entry_new();
@@ -195,7 +196,7 @@ static void webSearch_editEngine_dialog_new(gboolean newEngine, CWebSearch* webS
     
     hbox = gtk_hbox_new(FALSE, 8);
     gtk_container_set_border_width(GTK_CONTAINER(hbox), 5);
-    label = gtk_label_new_with_mnemonic("_Description:");
+    label = gtk_label_new_with_mnemonic(_("_Description:"));
     gtk_size_group_add_widget(sizegroup, label);
     gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
     GtkWidget* entry_description = gtk_entry_new();
@@ -209,7 +210,7 @@ static void webSearch_editEngine_dialog_new(gboolean newEngine, CWebSearch* webS
     
     hbox = gtk_hbox_new(FALSE, 8);
     gtk_container_set_border_width(GTK_CONTAINER(hbox), 5);
-    label = gtk_label_new_with_mnemonic("_Url:");
+    label = gtk_label_new_with_mnemonic(_("_URL:"));
     gtk_size_group_add_widget(sizegroup, label);
     gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
     GtkWidget* entry_url = gtk_entry_new();
@@ -223,7 +224,7 @@ static void webSearch_editEngine_dialog_new(gboolean newEngine, CWebSearch* webS
     
     hbox = gtk_hbox_new(FALSE, 8);
     gtk_container_set_border_width(GTK_CONTAINER(hbox), 5);
-    label = gtk_label_new_with_mnemonic("_Icon (name or file):");
+    label = gtk_label_new_with_mnemonic(_("_Icon (name or file):"));
     gtk_size_group_add_widget(sizegroup, label);
     gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
     GtkWidget* entry_icon = gtk_entry_new();
@@ -237,7 +238,7 @@ static void webSearch_editEngine_dialog_new(gboolean newEngine, CWebSearch* webS
     
     hbox = gtk_hbox_new(FALSE, 8);
     gtk_container_set_border_width(GTK_CONTAINER(hbox), 5);
-    label = gtk_label_new_with_mnemonic("_Keyword:");
+    label = gtk_label_new_with_mnemonic(_("_Keyword:"));
     gtk_size_group_add_widget(sizegroup, label);
     gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
     GtkWidget* entry_keyword = gtk_entry_new();
@@ -306,7 +307,7 @@ static void on_webSearch_remove(GtkWidget* widget, CWebSearch* webSearch)
 
 GtkWidget* webSearch_manageSearchEngines_dialog_new(MidoriBrowser* browser)
 {
-    const gchar* dialogTitle = "Manage search engines";
+    const gchar* dialogTitle = _("Manage search engines");
     GtkWidget* dialog = gtk_dialog_new_with_buttons(dialogTitle
         , GTK_WINDOW(browser)
         , GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR